cosmopolitan/third_party/awk/awkgram.tab.c
Justine Tunney 3d2d04b25e
Make cli commands yoinkable into cosmo shell
This lets our system() and popen() commands function sort of like
BusyBox and ToyBox. By default the Cosmopolitan Shell is lightweight.
But if you use STATIC_YOINK then you can pull the individual commands
you want into the linkage, and they'll be included in a single binary.
For example the demo binary embeds `tr` and `sed` and ends up ~140kb.
2022-10-14 16:37:29 -07:00

3377 lines
154 KiB
C

// clang-format off
#include "libc/mem/mem.h"
#include "libc/str/str.h"
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYLEX yylex()
#define YYEMPTY -1
#define yyclearin (yychar=(YYEMPTY))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING() (yyerrflag!=0)
#define YYPREFIX "yy"
#line 26 "awkgram.y"
#include "third_party/awk/awk.h"
void checkdup(Node *list, Cell *item);
int yywrap(void) { return(1); }
Node *beginloc = 0;
Node *endloc = 0;
bool infunc = false; /* = true if in arglist or body of func */
int inloop = 0; /* >= 1 if in while, for, do; can't be bool, since loops can next */
char *curfname = 0; /* current function name */
Node *arglist = 0; /* list of args for current function */
#line 41 "awkgram.y"
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
Node *p;
Cell *cp;
int i;
char *s;
} YYSTYPE;
#endif /* YYSTYPE_DEFINED */
#line 37 "awkgram.tab.c"
#define FIRSTTOKEN 257
#define PROGRAM 258
#define PASTAT 259
#define PASTAT2 260
#define XBEGIN 261
#define XEND 262
#define NL 263
#define ARRAY 264
#define MATCH 265
#define NOTMATCH 266
#define MATCHOP 267
#define FINAL 268
#define DOT 269
#define ALL 270
#define CCL 271
#define NCCL 272
#define CHAR 273
#define OR 274
#define STAR 275
#define QUEST 276
#define PLUS 277
#define EMPTYRE 278
#define ZERO 279
#define AND 280
#define BOR 281
#define APPEND 282
#define EQ 283
#define GE 284
#define GT 285
#define LE 286
#define LT 287
#define NE 288
#define IN 289
#define ARG 290
#define BLTIN 291
#define BREAK 292
#define CLOSE 293
#define CONTINUE 294
#define DELETE 295
#define DO 296
#define EXIT 297
#define FOR 298
#define FUNC 299
#define SUB 300
#define GSUB 301
#define IF 302
#define INDEX 303
#define LSUBSTR 304
#define MATCHFCN 305
#define NEXT 306
#define NEXTFILE 307
#define ADD 308
#define MINUS 309
#define MULT 310
#define DIVIDE 311
#define MOD 312
#define ASSIGN 313
#define ASGNOP 314
#define ADDEQ 315
#define SUBEQ 316
#define MULTEQ 317
#define DIVEQ 318
#define MODEQ 319
#define POWEQ 320
#define PRINT 321
#define PRINTF 322
#define SPRINTF 323
#define ELSE 324
#define INTEST 325
#define CONDEXPR 326
#define POSTINCR 327
#define PREINCR 328
#define POSTDECR 329
#define PREDECR 330
#define VAR 331
#define IVAR 332
#define VARNF 333
#define CALL 334
#define NUMBER 335
#define STRING 336
#define REGEXPR 337
#define GETLINE 338
#define RETURN 339
#define SPLIT 340
#define SUBSTR 341
#define WHILE 342
#define CAT 343
#define NOT 344
#define UMINUS 345
#define UPLUS 346
#define POWER 347
#define DECR 348
#define INCR 349
#define INDIRECT 350
#define LASTTOKEN 351
#define YYERRCODE 256
const short yylhs[] =
{ -1,
0, 0, 36, 36, 37, 37, 33, 33, 26, 26,
24, 24, 41, 22, 42, 22, 43, 22, 20, 20,
23, 30, 30, 34, 34, 35, 35, 29, 29, 15,
15, 1, 1, 10, 11, 11, 11, 11, 11, 11,
11, 44, 11, 12, 12, 6, 6, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 4, 4, 5,
5, 7, 7, 7, 39, 39, 28, 28, 28, 28,
31, 31, 9, 9, 45, 13, 32, 32, 14, 14,
14, 14, 14, 14, 14, 14, 27, 27, 16, 16,
46, 47, 16, 16, 16, 16, 16, 16, 16, 16,
16, 16, 16, 16, 48, 16, 16, 17, 17, 38,
38, 40, 40, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
8, 8, 8, 8, 8, 18, 18, 18, 18, 21,
21, 21, 19, 19, 19, 25,
};
const short yylen[] =
{ 2,
1, 1, 1, 2, 1, 2, 1, 2, 1, 2,
1, 2, 0, 12, 0, 10, 0, 8, 1, 1,
4, 1, 2, 1, 2, 0, 1, 0, 1, 0,
1, 1, 3, 1, 1, 4, 4, 7, 3, 4,
4, 0, 9, 1, 3, 1, 3, 3, 5, 3,
3, 3, 3, 3, 5, 2, 1, 1, 3, 5,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 5, 4, 3, 2, 1, 1, 3, 3, 1,
3, 0, 1, 3, 1, 1, 1, 1, 2, 2,
1, 2, 1, 2, 0, 4, 1, 2, 4, 4,
4, 2, 5, 2, 1, 1, 1, 2, 2, 2,
0, 0, 9, 3, 2, 1, 4, 2, 3, 2,
2, 3, 2, 2, 0, 3, 2, 1, 2, 1,
1, 1, 2, 4, 3, 3, 3, 3, 3, 3,
2, 2, 2, 3, 4, 1, 3, 4, 2, 2,
2, 2, 2, 4, 3, 2, 1, 6, 6, 3,
6, 6, 1, 8, 8, 6, 4, 1, 6, 6,
8, 8, 8, 6, 1, 1, 4, 1, 2, 0,
1, 3, 1, 1, 1, 4,
};
const short yydefred[] =
{ 0,
2, 87, 88, 0, 1, 0, 0, 89, 90, 0,
0, 22, 0, 95, 184, 0, 0, 0, 130, 131,
0, 0, 0, 183, 178, 185, 0, 163, 132, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
76, 0, 44, 0, 93, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
19, 20, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 94, 150, 151, 179, 0, 0,
3, 5, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 152, 153, 0, 106, 23, 0, 0,
0, 0, 9, 0, 0, 0, 0, 0, 85, 86,
0, 0, 0, 0, 128, 0, 116, 0, 125, 0,
0, 0, 0, 133, 0, 0, 7, 160, 0, 0,
0, 0, 144, 0, 0, 0, 0, 0, 0, 0,
147, 0, 0, 0, 0, 0, 0, 0, 69, 0,
0, 0, 0, 0, 0, 71, 0, 4, 0, 6,
0, 0, 0, 0, 0, 0, 0, 0, 24, 0,
0, 0, 45, 0, 0, 127, 0, 109, 0, 110,
0, 0, 115, 0, 0, 120, 121, 0, 123, 0,
124, 39, 129, 0, 0, 10, 0, 0, 0, 0,
0, 0, 0, 57, 0, 0, 0, 40, 41, 8,
0, 0, 0, 96, 145, 0, 181, 0, 0, 0,
167, 148, 0, 0, 0, 73, 0, 0, 25, 0,
36, 177, 108, 0, 114, 31, 0, 0, 0, 122,
0, 11, 0, 126, 112, 91, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 72, 0, 97, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
117, 0, 92, 0, 0, 0, 52, 54, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 98, 0,
182, 158, 159, 162, 161, 166, 0, 174, 0, 0,
103, 0, 0, 0, 0, 0, 0, 0, 170, 0,
169, 0, 0, 0, 0, 0, 38, 0, 0, 0,
0, 55, 0, 0, 0, 0, 0, 164, 165, 173,
0, 0, 0, 0, 172, 171, 43, 0, 0, 18,
0, 0, 0, 113, 16, 0, 0, 14,
};
const short yydgoto[] =
{ 4,
5, 123, 210, 54, 211, 145, 212, 40, 41, 42,
43, 44, 45, 124, 247, 125, 126, 46, 47, 63,
228, 127, 128, 253, 129, 130, 188, 6, 7, 131,
257, 275, 226, 189, 181, 92, 93, 49, 132, 50,
367, 362, 353, 310, 55, 207, 292, 205,
};
const short yysindex[] =
{ -55,
0, 0, 0, 0, 0, -39, 8470, 0, 0, -66,
-66, 0, 5698, 0, 0, 32, 1365, -255, 0, 0,
43, 53, 64, 0, 0, 0, 89, 0, 0, 56,
90, 107, 1365, 1365, 9050, -114, -114, 1365, 7895, -37,
0, -13, 0, -29, 0, -264, 40, 5023, 108, -184,
5023, 5023, 1864, 46, -179, 368, 5698, 1365, -37, -230,
0, 0, 120, 5698, 5698, 5698, 3071, 1365, -117, 5698,
5698, -176, -176, -176, 0, 0, 0, 0, -151, 5698,
0, 0, 5698, 5698, 5698, 5698, 5698, 5698, -178, 5698,
-37, 8646, 8734, 866, 1365, 1365, 1365, 1365, 1365, -74,
5023, 8470, 5698, 0, 0, 5698, 0, 0, -74, -24,
-24, -178, 0, 8566, 165, 172, -24, -24, 0, 0,
8566, 205, 7895, -24, 0, 5157, 0, 6011, 0, -2,
5023, 9074, 5698, 0, 5352, 5425, 0, 0, 8801, -19,
8801, 203, 0, 7895, 96, 7035, -64, 7107, 7107, 100,
0, 102, -37, 1365, 7107, 7107, -114, 9202, 0, 9202,
9202, 9202, 9202, 9202, 9202, 0, 7182, 0, 8331, 0,
8240, 1365, -176, -35, -35, -176, -176, -176, 0, 3,
5698, 5486, 0, 7895, -23, 0, -74, 0, 3, 0,
180, 6709, 0, 1771, 5698, 0, 0, 6709, 0, 5698,
0, 0, 0, -52, 6011, 0, 6011, 5547, 5698, 8542,
233, -108, -37, 0, -252, 7107, 233, 0, 0, 0,
7895, -178, 7895, 0, 0, 8801, 0, 118, 8801, 8801,
0, 0, -37, -210, 8801, 0, 5698, -37, 0, -66,
0, 0, 0, 5698, 0, 0, 236, -80, 7289, 0,
7289, 0, 5621, 0, 0, 0, 44, 134, 9126, -178,
9126, -37, 8877, 8959, 8983, 1365, 1365, 1365, 9126, 8801,
8801, 0, 7895, 0, 50, -223, 7374, 256, 7461, 281,
138, 6781, 7895, 5023, 8, -5, -178, 50, 50, 0,
0, -17, 0, 38, 5698, 9202, 0, 0, 8407, 4219,
271, 8542, -37, -37, -37, 8542, 6853, 6963, 0, -66,
0, 0, 0, 0, 0, 0, 8801, 0, 8801, 5815,
0, -74, 5698, 282, 291, -178, 142, 9126, 0, 36,
0, 36, 5023, 7556, 297, 7641, 0, 1771, 7727, 50,
5698, 0, 38, 8542, 303, 314, 5889, 0, 0, 0,
282, -74, 6011, 7823, 0, 0, 0, 50, 1771, 0,
-24, 6011, 282, 0, 0, 50, 6011, 0,};
const short yyrindex[] =
{ 3301,
0, 0, 0, 0, 0, 3353, 356, 0, 0, 0,
0, 0, 0, 0, 0, 91, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 3620,
0, 0, 0, 0, 0, 0, 0, 0, 67, 2889,
0, 3155, 0, 3301, 0, 1993, 1, 0, 0, 185,
0, 0, 0, 0, 0, 0, 0, 0, 2349, 1682,
0, 0, 0, 0, 0, 0, 0, 0, 500, 0,
0, 590, 684, 999, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2983, 0, 0, 0, 0, 0, 0, 0, 0, 9150,
0, 362, 0, 0, 0, 0, 0, 0, 4816, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -32, 0, 0, 0, 0, 0, 0, 6084,
0, 239, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 22, 0, 0, 162, 0, 0, 0,
0, 0, 2443, 0, 0, 0, 3690, 1047, 0, 1546,
2490, 3723, 3774, 3784, 3817, 0, 0, 0, 4547, 0,
856, 0, 1089, 2083, 2177, 1183, 1498, 1588, 0, 4099,
0, 0, 0, 58, 0, 0, 4816, 0, 4928, 0,
-22, 0, 0, 305, 0, 0, 0, 0, 0, 0,
0, 0, 0, 5950, 0, 0, 0, 0, 0, 1011,
306, 6, 8077, 0, 4755, 0, 7981, 0, 0, 0,
163, 0, 169, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2533, 0, 0, 0, 0, 2799, 0, 3249,
0, 0, 0, 0, 0, 0, 0, 4662, 0, 0,
0, 0, 0, 0, 0, 0, 5084, 0, 0, 0,
0, 8153, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 34, 0, 247, 0, 0, 7981, 0, 7981,
0, 0, 98, 0, 0, 9150, 0, 6157, 6218, 0,
0, 0, 0, 403, 0, 216, 0, 0, 0, 179,
635, 1034, 10, 30, 33, 539, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 6620, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 7981, 0, 0, 342, 0, 6279,
0, 0, 0, 768, 0, 0, 0, 0, 0, 0,
0, 6620, 0, 0, 0, 0, 0, 6352, 342, 0,
0, 0, 0, 0, 0, 6425, 0, 0,};
const short yygindex[] =
{ 0,
0, 4594, 391, -175, 0, -11, 0, 4313, -10, 204,
293, 0, -65, -166, -277, 1227, -28, 4033, 891, 0,
0, 0, 0, 0, 0, 0, -85, 0, 349, 7,
0, -163, 429, -87, -106, -133, -104, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
};
#define YYTABLESIZE 9552
const short yytable[] =
{ 98,
176, 98, 186, 3, 97, 95, 97, 96, 105, 94,
106, 94, 180, 48, 159, 266, 51, 52, 104, 9,
137, 180, 135, 136, 75, 190, 105, 246, 193, 3,
100, 196, 197, 258, 187, 199, 104, 176, 201, 220,
176, 176, 176, 176, 176, 176, 102, 176, 101, 103,
99, 137, 220, 322, 150, 152, 12, 59, 176, 176,
351, 269, 46, 176, 102, 46, 34, 217, 99, 242,
100, 56, 182, 101, 47, 61, 263, 47, 62, 15,
243, 363, 64, 104, 105, 288, 140, 289, 100, 137,
146, 101, 65, 176, 185, 104, 105, 60, 59, 180,
321, 59, 208, 66, 59, 264, 245, 311, 48, 12,
34, 15, 250, 34, 46, 59, 59, 104, 105, 327,
24, 214, 26, 176, 176, 34, 47, 146, 67, 70,
106, 146, 146, 146, 146, 146, 225, 146, 60, 137,
231, 60, 232, 137, 60, 137, 71, 133, 146, 146,
59, 134, 24, 146, 26, 60, 60, 142, 274, 147,
340, 137, 263, 278, 280, 263, 263, 263, 263, 154,
99, 246, 263, 267, 294, 15, 268, 137, 316, 323,
59, 137, 343, 146, 168, 137, 157, 358, 179, 34,
60, 264, 246, 297, 264, 264, 264, 264, 180, 366,
1, 264, 180, 78, 194, 180, 78, 2, 287, 79,
263, 195, 79, 146, 146, 338, 24, 25, 26, 51,
60, 168, 51, 8, 168, 168, 168, 168, 168, 168,
105, 168, 285, 2, 180, 38, 51, 51, 179, 264,
104, 51, 168, 168, 200, 359, 284, 168, 214, 224,
214, 335, 214, 214, 214, 320, 53, 179, 214, 53,
206, 176, 176, 176, 180, 239, 227, 176, 102, 222,
244, 252, 99, 53, 53, 364, 137, 168, 53, 82,
176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
176, 176, 100, 176, 286, 101, 313, 82, 220, 176,
176, 176, 51, 176, 347, 176, 293, 168, 168, 99,
57, 99, 309, 33, 176, 34, 333, 214, 59, 59,
59, 315, 274, 176, 325, 15, 326, 34, 34, 34,
341, 176, 176, 176, 176, 176, 176, 349, 176, 53,
176, 176, 68, 355, 176, 15, 83, 176, 176, 176,
176, 146, 146, 146, 356, 32, 59, 146, 60, 60,
60, 33, 82, 30, 83, 34, 24, 25, 26, 42,
146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
146, 146, 30, 146, 240, 38, 24, 25, 26, 146,
146, 146, 102, 146, 183, 146, 60, 0, 0, 0,
0, 0, 0, 0, 146, 38, 0, 13, 143, 0,
33, 0, 34, 146, 14, 0, 0, 0, 0, 0,
0, 146, 146, 146, 146, 146, 146, 0, 146, 83,
146, 146, 0, 0, 146, 0, 0, 146, 146, 146,
146, 51, 0, 84, 0, 168, 168, 168, 0, 0,
0, 168, 0, 0, 0, 0, 0, 0, 51, 51,
51, 84, 0, 51, 168, 168, 168, 168, 168, 168,
168, 168, 168, 168, 168, 168, 0, 168, 53, 0,
0, 139, 141, 168, 168, 168, 0, 168, 0, 168,
0, 0, 0, 0, 0, 53, 53, 53, 168, 156,
53, 82, 0, 0, 0, 0, 0, 168, 0, 0,
0, 0, 0, 0, 0, 168, 168, 168, 168, 168,
82, 0, 168, 82, 168, 168, 84, 0, 168, 0,
0, 168, 168, 168, 168, 0, 156, 259, 0, 156,
156, 156, 156, 156, 156, 0, 156, 0, 0, 0,
81, 0, 0, 53, 0, 0, 0, 156, 156, 260,
15, 16, 156, 17, 0, 0, 0, 0, 83, 0,
19, 20, 0, 21, 0, 22, 229, 230, 0, 48,
0, 0, 48, 234, 235, 0, 0, 83, 0, 142,
83, 0, 156, 23, 0, 0, 48, 48, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 0, 58, 0, 0, 0, 36, 37,
38, 0, 156, 156, 0, 0, 142, 0, 0, 142,
142, 142, 142, 142, 142, 0, 142, 0, 0, 265,
0, 0, 0, 0, 270, 271, 0, 142, 142, 296,
0, 299, 142, 300, 301, 302, 276, 15, 16, 306,
17, 0, 48, 0, 0, 84, 0, 19, 20, 0,
21, 0, 22, 0, 0, 50, 0, 0, 50, 0,
0, 0, 142, 141, 84, 0, 141, 84, 0, 0,
23, 0, 50, 50, 0, 0, 0, 50, 24, 25,
26, 27, 28, 29, 0, 30, 0, 31, 32, 317,
319, 35, 142, 142, 0, 36, 37, 38, 344, 0,
141, 0, 0, 141, 141, 141, 141, 141, 141, 0,
141, 0, 0, 0, 0, 330, 332, 0, 0, 0,
0, 141, 141, 0, 0, 0, 141, 0, 0, 0,
0, 0, 0, 0, 0, 141, 0, 0, 50, 0,
156, 156, 156, 0, 0, 0, 156, 0, 0, 0,
0, 0, 0, 0, 0, 0, 141, 0, 0, 156,
156, 156, 156, 156, 156, 156, 0, 156, 156, 156,
156, 0, 156, 0, 0, 0, 0, 0, 156, 156,
156, 48, 156, 0, 156, 0, 141, 141, 49, 0,
0, 49, 0, 156, 0, 0, 0, 0, 0, 0,
48, 0, 156, 48, 0, 49, 49, 0, 0, 0,
156, 156, 156, 156, 156, 156, 0, 156, 0, 156,
156, 0, 0, 156, 0, 0, 156, 156, 156, 156,
142, 142, 142, 0, 0, 61, 142, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 142,
142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
142, 0, 142, 0, 0, 0, 0, 0, 142, 142,
142, 49, 142, 0, 142, 0, 61, 50, 0, 61,
0, 0, 61, 142, 0, 57, 0, 0, 33, 0,
34, 0, 142, 61, 61, 50, 50, 0, 61, 50,
142, 142, 142, 142, 142, 142, 0, 142, 0, 142,
142, 0, 0, 142, 0, 0, 0, 142, 142, 142,
0, 0, 0, 0, 141, 141, 141, 0, 61, 0,
141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 141, 141, 141, 141, 141, 141, 141,
141, 141, 141, 141, 141, 0, 141, 0, 61, 166,
0, 0, 141, 141, 141, 0, 141, 0, 141, 0,
0, 0, 0, 0, 0, 0, 0, 141, 143, 0,
0, 0, 191, 0, 0, 0, 141, 0, 0, 0,
0, 0, 0, 0, 141, 141, 141, 141, 141, 141,
0, 141, 0, 141, 141, 0, 0, 141, 0, 0,
49, 141, 141, 141, 0, 143, 0, 0, 143, 143,
143, 143, 143, 143, 0, 143, 70, 0, 0, 49,
0, 80, 49, 0, 80, 0, 143, 143, 0, 0,
0, 143, 0, 0, 0, 0, 0, 0, 0, 80,
0, 0, 0, 0, 81, 0, 0, 81, 0, 0,
0, 0, 0, 0, 248, 0, 0, 70, 138, 0,
70, 143, 81, 70, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 70, 70, 0, 0, 0, 70,
0, 0, 272, 0, 0, 0, 61, 61, 61, 0,
0, 143, 143, 0, 281, 138, 0, 0, 138, 138,
138, 138, 138, 138, 80, 138, 61, 0, 0, 70,
0, 0, 0, 0, 0, 0, 138, 138, 0, 0,
298, 138, 0, 0, 61, 15, 16, 81, 17, 0,
0, 0, 0, 0, 0, 19, 20, 0, 21, 70,
22, 0, 0, 0, 0, 0, 0, 324, 0, 172,
0, 138, 137, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 58,
0, 138, 138, 36, 37, 38, 342, 0, 0, 137,
0, 0, 137, 137, 137, 137, 137, 137, 0, 137,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
137, 137, 0, 0, 0, 137, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 143,
143, 143, 0, 0, 0, 143, 0, 0, 0, 0,
0, 0, 0, 80, 0, 137, 0, 0, 143, 143,
143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
0, 143, 80, 0, 0, 80, 81, 143, 143, 143,
0, 143, 0, 143, 0, 137, 137, 70, 70, 70,
0, 0, 143, 0, 0, 81, 0, 0, 81, 0,
0, 143, 0, 0, 0, 0, 70, 70, 0, 143,
143, 143, 143, 143, 143, 0, 143, 0, 143, 143,
0, 0, 143, 0, 0, 70, 143, 143, 143, 138,
138, 138, 203, 0, 204, 138, 0, 0, 0, 0,
0, 203, 203, 0, 0, 0, 0, 0, 138, 138,
138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
0, 138, 0, 0, 70, 0, 0, 138, 138, 138,
0, 138, 0, 138, 0, 0, 0, 0, 0, 0,
0, 0, 138, 0, 57, 0, 0, 33, 203, 34,
0, 138, 0, 0, 0, 0, 0, 0, 0, 138,
138, 138, 138, 138, 138, 0, 138, 0, 138, 138,
0, 254, 138, 255, 203, 0, 138, 138, 138, 0,
0, 0, 0, 137, 137, 137, 0, 0, 0, 137,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 137, 137, 137, 137, 137, 137, 137, 137,
137, 137, 137, 137, 0, 137, 0, 0, 0, 291,
0, 137, 137, 137, 0, 137, 0, 137, 0, 0,
0, 0, 0, 0, 0, 0, 137, 139, 0, 0,
0, 0, 0, 0, 0, 137, 0, 0, 0, 0,
0, 0, 0, 137, 137, 137, 137, 137, 137, 0,
137, 0, 137, 137, 0, 0, 137, 0, 0, 0,
137, 137, 137, 0, 139, 0, 0, 139, 139, 139,
139, 139, 139, 0, 139, 63, 203, 0, 0, 0,
0, 0, 0, 0, 0, 139, 139, 0, 0, 0,
139, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 203, 0, 0, 0, 0, 0, 360,
0, 0, 0, 0, 0, 0, 63, 140, 365, 63,
139, 0, 63, 368, 0, 0, 0, 0, 0, 0,
0, 0, 0, 63, 63, 0, 0, 0, 63, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
139, 139, 0, 0, 140, 0, 0, 140, 140, 140,
140, 140, 140, 0, 140, 0, 0, 0, 63, 0,
0, 0, 0, 0, 0, 140, 140, 0, 0, 0,
140, 0, 0, 0, 15, 16, 0, 17, 0, 0,
0, 0, 0, 0, 19, 20, 0, 21, 63, 22,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
140, 175, 0, 0, 0, 0, 0, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 0, 31, 32, 0, 0, 58, 0,
140, 140, 36, 37, 38, 0, 0, 0, 175, 0,
0, 175, 175, 175, 175, 175, 175, 0, 175, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 175,
175, 0, 0, 0, 175, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 139, 139,
139, 0, 0, 0, 139, 0, 0, 0, 0, 0,
0, 0, 0, 0, 175, 0, 0, 139, 139, 139,
139, 139, 139, 139, 139, 139, 139, 139, 139, 0,
139, 0, 0, 0, 0, 0, 139, 139, 139, 0,
139, 0, 139, 0, 175, 175, 63, 63, 63, 0,
13, 139, 0, 33, 0, 34, 0, 14, 0, 0,
139, 0, 0, 0, 0, 63, 63, 0, 139, 139,
139, 139, 139, 139, 0, 139, 0, 139, 139, 0,
0, 139, 0, 0, 63, 139, 139, 139, 140, 140,
140, 0, 0, 0, 140, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 140, 140, 140,
140, 140, 140, 140, 140, 140, 140, 140, 140, 0,
140, 0, 0, 63, 0, 0, 140, 140, 140, 0,
140, 0, 140, 0, 0, 0, 0, 0, 0, 0,
0, 140, 0, 57, 138, 0, 33, 137, 34, 0,
140, 0, 0, 0, 0, 0, 0, 0, 140, 140,
140, 140, 140, 140, 0, 140, 90, 140, 140, 0,
0, 140, 0, 0, 0, 140, 140, 140, 0, 0,
0, 0, 175, 175, 175, 0, 0, 0, 175, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 175, 175, 175, 175, 175, 175, 175, 175, 175,
175, 175, 175, 0, 175, 0, 0, 0, 0, 0,
175, 175, 175, 0, 175, 0, 175, 79, 0, 0,
0, 0, 175, 0, 0, 175, 0, 0, 0, 0,
0, 0, 0, 0, 175, 0, 0, 0, 0, 0,
0, 0, 175, 175, 175, 175, 175, 175, 0, 175,
0, 175, 175, 0, 0, 175, 107, 0, 175, 175,
0, 175, 175, 175, 175, 175, 175, 175, 0, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
175, 175, 0, 0, 0, 175, 0, 0, 0, 0,
15, 16, 0, 17, 0, 112, 0, 0, 0, 0,
19, 20, 0, 21, 0, 22, 0, 0, 0, 0,
0, 0, 135, 0, 0, 175, 0, 0, 0, 0,
0, 119, 120, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 0, 35, 175, 175, 0, 36, 37,
38, 0, 135, 135, 0, 135, 135, 135, 0, 0,
80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
135, 135, 0, 81, 82, 135, 83, 84, 85, 86,
87, 88, 89, 15, 16, 0, 17, 0, 0, 0,
0, 0, 0, 19, 20, 0, 21, 0, 22, 0,
0, 0, 0, 0, 0, 135, 136, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
0, 0, 0, 0, 24, 25, 26, 27, 28, 29,
0, 30, 0, 31, 32, 135, 135, 58, 0, 0,
0, 36, 37, 38, 0, 0, 136, 136, 0, 136,
136, 136, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 136, 136, 0, 0, 0, 136,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 175, 175, 175, 0, 0, 0, 175,
0, 0, 0, 0, 0, 0, 0, 0, 0, 136,
0, 0, 175, 175, 0, 175, 175, 175, 175, 175,
175, 175, 175, 175, 0, 175, 0, 0, 0, 0,
0, 175, 175, 175, 0, 175, 0, 175, 0, 136,
136, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 175, 0, 0, 0, 0,
0, 0, 0, 175, 175, 175, 175, 175, 175, 0,
175, 0, 175, 175, 0, 0, 175, 0, 0, 175,
0, 0, 175, 135, 135, 135, 0, 0, 149, 135,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 135, 135, 135, 135, 135, 135, 135, 135,
135, 135, 135, 135, 0, 135, 0, 0, 0, 0,
0, 135, 135, 135, 0, 135, 0, 135, 149, 149,
0, 0, 149, 0, 0, 0, 135, 0, 0, 0,
0, 0, 0, 0, 0, 135, 149, 149, 0, 0,
0, 149, 0, 135, 135, 135, 135, 135, 135, 0,
135, 0, 135, 135, 0, 0, 135, 0, 0, 0,
135, 135, 135, 0, 0, 0, 0, 136, 136, 136,
0, 149, 155, 136, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 136, 136, 136, 136,
136, 136, 136, 136, 136, 136, 136, 136, 0, 136,
0, 149, 149, 0, 0, 136, 136, 136, 0, 136,
0, 136, 155, 155, 0, 0, 155, 0, 0, 64,
136, 0, 0, 0, 0, 0, 0, 0, 0, 136,
155, 155, 0, 0, 0, 155, 0, 136, 136, 136,
136, 136, 136, 0, 136, 0, 136, 136, 0, 0,
136, 0, 0, 0, 136, 136, 136, 0, 0, 0,
64, 0, 154, 64, 0, 155, 64, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 64, 64, 0,
0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 155, 155, 0, 0, 0,
0, 0, 154, 154, 0, 0, 154, 0, 0, 0,
0, 0, 64, 0, 0, 0, 0, 0, 0, 0,
154, 154, 0, 0, 0, 154, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 149,
149, 149, 64, 0, 0, 149, 0, 0, 0, 0,
0, 0, 0, 0, 0, 154, 0, 0, 149, 149,
149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
0, 149, 0, 0, 0, 0, 0, 149, 149, 149,
0, 149, 0, 149, 0, 154, 154, 0, 0, 0,
0, 0, 149, 0, 0, 0, 0, 0, 0, 0,
0, 149, 0, 0, 0, 0, 0, 0, 0, 149,
149, 149, 149, 149, 149, 0, 149, 0, 149, 149,
0, 0, 149, 0, 0, 0, 149, 149, 149, 0,
0, 0, 0, 155, 155, 155, 0, 0, 0, 155,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 155, 155, 155, 155, 155, 155, 155, 155,
155, 155, 155, 155, 0, 155, 0, 0, 0, 0,
0, 155, 155, 155, 0, 155, 0, 155, 0, 0,
64, 64, 64, 0, 0, 0, 155, 0, 0, 0,
0, 0, 0, 0, 0, 155, 0, 0, 0, 64,
64, 0, 0, 155, 155, 155, 155, 155, 155, 0,
155, 0, 155, 155, 0, 0, 155, 0, 64, 0,
155, 155, 155, 154, 154, 154, 0, 0, 134, 154,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 154, 154, 154, 154, 154, 154, 154, 154,
154, 154, 154, 154, 0, 154, 0, 64, 0, 0,
0, 154, 154, 154, 0, 154, 0, 154, 134, 134,
0, 0, 134, 0, 0, 0, 154, 0, 0, 0,
0, 0, 0, 0, 0, 154, 134, 134, 0, 0,
0, 134, 0, 154, 154, 154, 154, 154, 154, 0,
154, 0, 154, 154, 0, 0, 154, 0, 0, 0,
154, 154, 154, 0, 0, 0, 0, 0, 77, 0,
0, 134, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 134, 134, 0, 0, 0, 0, 0, 77, 77,
0, 0, 77, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 77, 77, 0, 0,
0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 77, 75, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 77, 77, 0, 0, 0, 0, 0, 0, 0,
0, 0, 75, 75, 0, 0, 75, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
75, 75, 0, 0, 0, 75, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 134,
134, 134, 0, 0, 0, 134, 0, 0, 0, 0,
0, 0, 0, 0, 0, 75, 0, 0, 134, 134,
134, 134, 134, 134, 134, 134, 134, 134, 134, 134,
0, 134, 0, 0, 0, 0, 0, 134, 134, 134,
0, 134, 0, 134, 0, 75, 75, 0, 0, 0,
13, 151, 134, 33, 0, 34, 0, 14, 0, 0,
0, 134, 0, 0, 0, 0, 0, 0, 0, 134,
134, 134, 134, 134, 134, 0, 134, 0, 134, 134,
0, 0, 134, 0, 0, 0, 134, 134, 134, 77,
77, 77, 0, 0, 35, 77, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 77, 77,
0, 77, 77, 77, 77, 77, 77, 77, 77, 77,
0, 77, 0, 0, 0, 0, 0, 77, 77, 77,
0, 77, 0, 77, 35, 0, 0, 35, 0, 35,
0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
0, 77, 0, 35, 0, 0, 0, 0, 0, 77,
77, 77, 77, 77, 77, 0, 77, 0, 77, 77,
0, 0, 77, 0, 0, 0, 77, 77, 77, 0,
0, 0, 0, 75, 75, 75, 0, 0, 37, 75,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 75, 75, 0, 75, 75, 75, 75, 75,
75, 75, 75, 75, 0, 75, 0, 0, 0, 0,
0, 75, 75, 75, 0, 75, 0, 75, 37, 0,
0, 37, 0, 37, 0, 37, 0, 0, 0, 0,
28, 0, 0, 0, 0, 75, 0, 37, 0, 0,
0, 0, 0, 75, 75, 75, 75, 75, 75, 0,
75, 0, 75, 75, 0, 0, 75, 0, 0, 0,
75, 75, 75, 0, 0, 0, 0, 0, 0, 0,
28, 0, 0, 28, 0, 28, 0, 28, 0, 0,
0, 0, 29, 0, 0, 0, 0, 0, 0, 0,
15, 16, 0, 17, 0, 0, 0, 0, 0, 0,
19, 20, 0, 21, 0, 22, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 29, 23, 0, 29, 0, 29, 0, 29,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 0, 35, 35, 35, 35, 36, 37,
38, 0, 0, 28, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 35, 35, 0, 35, 0, 0,
0, 0, 0, 35, 35, 35, 0, 35, 0, 35,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 29, 0, 35, 0, 0,
0, 0, 0, 0, 0, 35, 35, 35, 35, 35,
35, 0, 35, 0, 35, 35, 0, 0, 35, 0,
0, 0, 35, 35, 35, 0, 0, 0, 0, 37,
37, 37, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 37, 37,
0, 37, 0, 0, 0, 0, 0, 37, 37, 37,
0, 37, 0, 37, 0, 0, 0, 0, 0, 0,
0, 28, 28, 0, 0, 0, 0, 0, 0, 0,
0, 37, 0, 0, 0, 0, 0, 0, 0, 37,
37, 37, 37, 37, 37, 0, 37, 0, 37, 37,
28, 28, 37, 28, 0, 0, 37, 37, 37, 28,
28, 28, 0, 28, 0, 28, 0, 0, 0, 0,
0, 0, 0, 29, 29, 0, 0, 0, 0, 157,
0, 0, 0, 28, 0, 0, 0, 0, 0, 0,
0, 28, 28, 28, 28, 28, 28, 0, 28, 0,
28, 28, 29, 29, 28, 29, 0, 0, 28, 28,
28, 29, 29, 29, 0, 29, 157, 29, 0, 157,
157, 157, 157, 157, 157, 0, 157, 0, 0, 0,
0, 0, 0, 0, 0, 29, 0, 157, 157, 0,
0, 0, 157, 29, 29, 29, 29, 29, 29, 74,
29, 0, 29, 29, 0, 0, 29, 0, 0, 0,
29, 29, 29, 0, 0, 0, 0, 0, 0, 0,
0, 0, 157, 0, 0, 0, 0, 0, 0, 0,
0, 0, 65, 0, 0, 0, 0, 0, 0, 74,
74, 0, 74, 74, 74, 0, 74, 0, 0, 0,
0, 0, 157, 157, 0, 0, 0, 74, 74, 0,
0, 0, 74, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 65, 0, 0, 65, 0, 0, 65,
0, 0, 0, 66, 0, 0, 0, 0, 0, 0,
65, 65, 74, 67, 0, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 74, 74, 66, 65, 68, 66, 0, 0,
66, 0, 0, 0, 67, 0, 0, 67, 0, 0,
67, 66, 66, 0, 0, 0, 66, 0, 0, 0,
0, 67, 67, 0, 0, 65, 67, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 68, 0, 0,
68, 0, 0, 68, 0, 0, 66, 0, 0, 0,
0, 0, 0, 0, 68, 68, 67, 0, 0, 68,
157, 157, 157, 0, 0, 0, 157, 0, 0, 0,
0, 0, 0, 0, 0, 0, 66, 0, 0, 157,
157, 157, 157, 157, 157, 157, 67, 157, 157, 68,
157, 0, 157, 0, 0, 0, 0, 0, 157, 157,
157, 0, 157, 0, 157, 0, 0, 0, 0, 0,
0, 0, 0, 157, 0, 0, 0, 0, 0, 68,
0, 0, 157, 0, 0, 0, 0, 0, 0, 0,
74, 74, 74, 157, 157, 157, 74, 157, 0, 157,
157, 0, 0, 157, 0, 0, 157, 157, 157, 74,
74, 0, 74, 74, 74, 74, 74, 74, 74, 0,
74, 0, 74, 65, 65, 65, 0, 0, 74, 74,
74, 0, 74, 0, 74, 0, 0, 0, 0, 0,
0, 0, 65, 65, 0, 0, 0, 0, 0, 0,
0, 0, 74, 0, 0, 0, 0, 0, 0, 0,
0, 65, 0, 74, 74, 74, 0, 74, 0, 74,
74, 0, 0, 74, 66, 66, 66, 74, 74, 0,
0, 0, 0, 0, 67, 67, 67, 0, 0, 60,
0, 0, 0, 66, 66, 0, 0, 0, 0, 0,
65, 0, 69, 67, 67, 60, 60, 60, 76, 77,
60, 60, 66, 0, 0, 0, 0, 68, 68, 68,
0, 0, 67, 0, 0, 60, 0, 0, 0, 0,
60, 0, 0, 0, 0, 0, 68, 68, 0, 0,
60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 66, 0, 0, 0, 68, 0, 0, 0, 0,
0, 67, 0, 0, 0, 0, 60, 60, 60, 60,
60, 60, 0, 0, 0, 0, 0, 0, 27, 27,
0, 27, 0, 27, 0, 27, 0, 0, 0, 0,
0, 0, 0, 0, 68, 60, 0, 27, 0, 0,
0, 0, 0, 0, 215, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 60, 0, 60, 0,
60, 60, 0, 0, 0, 0, 60, 60, 60, 236,
60, 0, 60, 60, 60, 60, 60, 60, 0, 60,
0, 60, 0, 60, 60, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
0, 27, 0, 27, 60, 0, 0, 0, 0, 0,
60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 60, 0, 0, 0, 0, 0, 60, 0,
0, 0, 0, 60, 0, 60, 0, 0, 57, 0,
0, 33, 0, 34, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 60, 0, 60, 0, 0, 0, 0, 0, 0,
0, 215, 0, 215, 0, 215, 215, 215, 60, 60,
60, 215, 0, 0, 0, 60, 0, 0, 0, 60,
0, 60, 0, 0, 60, 60, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 60, 59,
0, 60, 60, 60, 60, 0, 0, 0, 60, 60,
60, 0, 0, 0, 0, 72, 73, 74, 0, 0,
78, 91, 0, 0, 27, 0, 0, 0, 0, 0,
215, 0, 345, 0, 346, 91, 60, 0, 60, 0,
74, 60, 0, 0, 0, 0, 60, 0, 0, 0,
153, 0, 0, 0, 0, 0, 60, 0, 27, 27,
27, 27, 27, 27, 27, 27, 27, 0, 27, 27,
27, 27, 0, 27, 27, 27, 173, 174, 175, 176,
177, 178, 0, 0, 0, 0, 0, 0, 0, 27,
27, 27, 27, 0, 0, 0, 0, 0, 0, 27,
27, 27, 27, 27, 27, 91, 27, 27, 27, 27,
27, 0, 27, 0, 213, 0, 27, 27, 27, 0,
0, 0, 0, 0, 0, 0, 91, 0, 91, 0,
91, 91, 0, 0, 0, 0, 233, 91, 91, 0,
91, 0, 91, 91, 91, 91, 91, 91, 0, 91,
0, 91, 0, 91, 238, 259, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 91, 0, 0, 0,
0, 0, 0, 0, 91, 0, 0, 260, 15, 16,
91, 17, 0, 0, 0, 0, 0, 0, 19, 20,
0, 21, 262, 22, 0, 0, 0, 0, 91, 0,
0, 0, 0, 91, 0, 91, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 62, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
0, 91, 58, 91, 0, 0, 36, 37, 38, 0,
0, 213, 0, 213, 0, 213, 213, 213, 303, 304,
305, 213, 0, 0, 0, 91, 0, 62, 0, 91,
62, 91, 0, 62, 91, 91, 0, 0, 0, 0,
39, 0, 0, 0, 62, 62, 53, 0, 262, 62,
0, 262, 262, 262, 262, 0, 0, 0, 262, 91,
91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 62,
213, 0, 0, 0, 0, 0, 91, 0, 91, 144,
146, 91, 0, 0, 0, 0, 262, 148, 149, 144,
144, 0, 0, 155, 156, 0, 91, 0, 0, 62,
0, 0, 0, 158, 0, 0, 160, 161, 162, 163,
164, 165, 0, 167, 0, 169, 171, 0, 0, 0,
0, 0, 0, 0, 0, 39, 184, 0, 176, 144,
0, 176, 0, 176, 176, 0, 176, 192, 176, 0,
0, 0, 0, 0, 198, 0, 0, 0, 0, 0,
176, 0, 0, 0, 176, 0, 216, 0, 0, 0,
0, 0, 221, 0, 223, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 39, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 176, 0, 0, 249, 0,
0, 175, 0, 251, 175, 175, 175, 175, 175, 175,
0, 175, 53, 0, 0, 0, 0, 62, 62, 62,
0, 0, 175, 175, 0, 0, 0, 175, 0, 273,
0, 0, 277, 279, 0, 0, 62, 62, 282, 0,
283, 0, 0, 0, 0, 0, 0, 144, 0, 0,
0, 0, 0, 0, 0, 62, 0, 0, 0, 0,
0, 0, 0, 0, 0, 26, 0, 0, 26, 0,
26, 0, 26, 307, 308, 0, 0, 0, 0, 0,
0, 0, 0, 0, 26, 0, 0, 0, 175, 0,
0, 0, 0, 0, 0, 0, 0, 0, 53, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
334, 0, 336, 0, 0, 0, 339, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 176, 0,
0, 0, 0, 0, 354, 0, 0, 0, 26, 0,
26, 176, 176, 0, 176, 176, 176, 176, 176, 176,
0, 176, 176, 0, 176, 0, 0, 0, 0, 0,
0, 176, 176, 0, 176, 0, 176, 107, 0, 0,
107, 0, 107, 0, 107, 176, 0, 0, 0, 0,
0, 0, 0, 0, 176, 0, 107, 0, 0, 0,
0, 0, 176, 176, 176, 176, 176, 176, 0, 176,
0, 176, 176, 0, 0, 176, 0, 0, 176, 176,
176, 176, 0, 0, 0, 0, 0, 175, 0, 0,
0, 175, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 175, 175, 175, 0, 0, 175,
0, 0, 0, 175, 175, 175, 0, 175, 0, 0,
107, 0, 107, 0, 175, 175, 0, 175, 0, 175,
0, 0, 13, 0, 0, 33, 0, 34, 0, 14,
0, 26, 0, 0, 0, 0, 0, 175, 0, 0,
0, 109, 0, 0, 0, 175, 175, 175, 175, 175,
175, 0, 175, 0, 175, 175, 0, 0, 175, 0,
0, 175, 0, 0, 175, 26, 26, 26, 26, 26,
26, 26, 26, 26, 0, 26, 26, 26, 26, 0,
26, 26, 26, 119, 0, 0, 119, 0, 119, 0,
119, 0, 0, 0, 0, 0, 26, 26, 26, 26,
0, 0, 119, 0, 0, 12, 26, 26, 26, 26,
26, 26, 0, 26, 26, 26, 26, 26, 0, 26,
0, 0, 0, 26, 26, 26, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 107, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 0, 0, 33,
0, 34, 0, 14, 0, 0, 119, 0, 119, 0,
0, 0, 0, 0, 0, 109, 0, 107, 107, 107,
107, 107, 107, 107, 107, 107, 0, 107, 107, 107,
107, 0, 107, 107, 107, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 107, 107,
107, 107, 0, 0, 0, 0, 0, 0, 107, 107,
107, 107, 107, 107, 0, 107, 107, 107, 107, 107,
0, 107, 0, 0, 0, 107, 107, 107, 107, 12,
0, 202, 0, 0, 0, 108, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 15, 16, 110, 17, 111, 112, 113, 114,
115, 0, 19, 20, 116, 21, 0, 22, 117, 118,
0, 0, 0, 0, 0, 0, 0, 0, 0, 119,
0, 0, 0, 119, 120, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 121, 31, 32, 122, 0, 35, 0, 0, 0,
36, 37, 38, 119, 119, 119, 119, 119, 119, 119,
119, 119, 0, 119, 119, 119, 119, 0, 119, 119,
119, 13, 0, 0, 33, 0, 34, 0, 14, 0,
0, 0, 0, 0, 119, 119, 119, 119, 0, 0,
109, 0, 107, 0, 119, 119, 119, 119, 119, 119,
0, 119, 119, 119, 119, 119, 0, 119, 0, 0,
0, 119, 119, 119, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 15, 16, 110, 17,
111, 112, 113, 114, 115, 0, 19, 20, 116, 21,
0, 22, 117, 118, 13, 0, 0, 33, 0, 34,
0, 14, 0, 0, 12, 0, 218, 119, 120, 23,
0, 0, 0, 109, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 121, 31, 32, 122, 0,
35, 0, 0, 0, 36, 37, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 13, 0, 0, 33, 0,
34, 0, 14, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 109, 0, 0, 12, 0, 219,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 0, 0, 33,
0, 34, 0, 14, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 109, 0, 107, 12, 0,
241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 15, 16, 110, 17, 111, 112, 113, 114, 115,
0, 19, 20, 116, 21, 0, 22, 117, 118, 0,
13, 0, 0, 33, 0, 34, 0, 14, 0, 12,
0, 256, 119, 120, 23, 0, 0, 0, 0, 109,
107, 0, 24, 25, 26, 27, 28, 29, 0, 30,
121, 31, 32, 122, 0, 35, 0, 0, 0, 36,
37, 38, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 15, 16, 110, 17, 111, 112,
113, 114, 115, 0, 19, 20, 116, 21, 0, 22,
117, 118, 0, 0, 0, 0, 0, 13, 0, 0,
33, 107, 34, 12, 14, 119, 120, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 121, 31, 32, 122, 0, 35, 0,
0, 0, 36, 37, 38, 15, 16, 110, 17, 111,
112, 113, 114, 115, 0, 19, 20, 116, 21, 0,
22, 117, 118, 0, 0, 0, 0, 0, 0, 0,
0, 0, 107, 0, 0, 0, 119, 120, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 121, 31, 32, 122, 0, 35,
0, 0, 0, 36, 37, 38, 15, 16, 110, 17,
111, 112, 113, 114, 115, 0, 19, 20, 116, 21,
0, 22, 117, 118, 13, 0, 0, 33, 0, 34,
0, 14, 0, 0, 0, 0, 0, 119, 120, 23,
0, 0, 0, 109, 0, 0, 107, 24, 25, 26,
27, 28, 29, 290, 30, 121, 31, 32, 122, 0,
35, 0, 0, 0, 36, 37, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
15, 16, 110, 17, 111, 112, 113, 114, 115, 0,
19, 20, 116, 21, 0, 22, 117, 118, 13, 0,
0, 33, 0, 34, 0, 14, 0, 12, 0, 337,
0, 119, 120, 23, 0, 0, 0, 109, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 121,
31, 32, 122, 0, 35, 0, 0, 0, 36, 37,
38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 15, 16, 118,
17, 0, 118, 0, 118, 0, 118, 19, 20, 0,
21, 0, 22, 0, 0, 0, 0, 0, 118, 0,
0, 12, 0, 357, 0, 0, 0, 0, 0, 0,
23, 0, 0, 0, 0, 0, 0, 0, 24, 25,
26, 27, 28, 29, 0, 30, 0, 31, 32, 0,
0, 35, 0, 0, 0, 36, 37, 38, 0, 0,
13, 0, 0, 33, 0, 34, 0, 14, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 109,
107, 0, 118, 0, 118, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 15, 16, 110, 17, 111, 112,
113, 114, 115, 0, 19, 20, 116, 21, 0, 22,
117, 118, 0, 111, 0, 0, 111, 0, 111, 0,
111, 0, 0, 12, 0, 119, 120, 23, 0, 0,
0, 0, 111, 0, 107, 24, 25, 26, 27, 28,
29, 0, 30, 121, 31, 32, 122, 0, 35, 0,
0, 0, 36, 37, 38, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 15, 16,
110, 17, 111, 112, 113, 114, 115, 0, 19, 20,
116, 21, 0, 22, 117, 118, 21, 0, 0, 21,
0, 21, 0, 21, 0, 118, 111, 0, 0, 119,
120, 23, 0, 0, 0, 21, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 121, 31, 32,
122, 0, 35, 0, 0, 0, 36, 37, 38, 118,
118, 118, 118, 118, 118, 118, 118, 118, 0, 118,
118, 118, 118, 0, 118, 118, 118, 186, 0, 0,
186, 0, 186, 0, 186, 0, 107, 0, 0, 0,
118, 118, 118, 0, 0, 0, 186, 0, 0, 21,
118, 118, 118, 118, 118, 118, 0, 118, 118, 118,
118, 118, 0, 118, 0, 0, 0, 118, 118, 118,
15, 16, 110, 17, 111, 112, 113, 114, 115, 0,
19, 20, 116, 21, 0, 22, 117, 118, 17, 0,
0, 17, 0, 17, 0, 17, 0, 0, 0, 0,
0, 119, 120, 23, 0, 0, 0, 17, 0, 111,
186, 24, 25, 26, 27, 28, 29, 0, 30, 121,
31, 32, 122, 0, 35, 0, 0, 0, 36, 37,
38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 111, 111, 111, 111, 111, 111, 111,
111, 111, 0, 111, 111, 111, 111, 0, 111, 111,
111, 15, 0, 0, 15, 0, 15, 0, 15, 0,
0, 17, 0, 0, 111, 111, 111, 0, 0, 0,
15, 0, 21, 0, 111, 111, 111, 111, 111, 111,
0, 111, 111, 111, 111, 111, 0, 111, 0, 0,
0, 111, 111, 111, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 21, 21, 21, 21,
21, 21, 21, 21, 21, 0, 21, 21, 21, 21,
0, 21, 21, 21, 13, 0, 0, 13, 0, 13,
0, 13, 0, 186, 15, 0, 0, 21, 21, 21,
0, 0, 0, 13, 0, 0, 0, 21, 21, 21,
21, 21, 21, 0, 21, 21, 21, 21, 21, 0,
21, 0, 0, 0, 21, 21, 21, 186, 186, 186,
186, 186, 186, 186, 186, 186, 0, 186, 186, 186,
186, 0, 186, 186, 186, 0, 0, 0, 0, 0,
0, 0, 0, 0, 17, 0, 0, 0, 186, 186,
186, 0, 0, 0, 0, 0, 0, 13, 186, 186,
186, 186, 186, 186, 0, 186, 186, 186, 186, 186,
0, 186, 0, 0, 0, 186, 186, 186, 17, 17,
17, 17, 17, 17, 17, 17, 17, 0, 17, 17,
17, 17, 0, 17, 17, 17, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 17,
17, 17, 0, 0, 0, 0, 0, 15, 0, 17,
17, 17, 17, 17, 17, 0, 17, 17, 17, 17,
17, 0, 17, 0, 0, 0, 17, 17, 17, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 15, 15, 15, 15, 15, 15, 15, 15, 15,
0, 15, 15, 15, 15, 0, 15, 15, 15, 26,
26, 0, 26, 0, 26, 0, 26, 0, 0, 0,
0, 0, 15, 15, 15, 0, 0, 0, 0, 0,
13, 0, 15, 15, 15, 15, 15, 15, 0, 15,
15, 15, 15, 15, 0, 15, 0, 0, 0, 15,
15, 15, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 13, 13, 13, 13, 13, 13,
13, 13, 13, 0, 13, 13, 13, 13, 0, 13,
13, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 13, 13, 13, 57, 0,
0, 33, 0, 34, 0, 13, 13, 13, 13, 13,
13, 0, 13, 13, 13, 13, 13, 187, 13, 0,
0, 90, 13, 13, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57, 318, 0, 33, 137, 34, 0, 0, 0, 0,
0, 0, 79, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 90, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 57, 329, 0, 33, 137, 34, 0, 0,
0, 0, 0, 0, 79, 0, 0, 0, 0, 26,
26, 0, 26, 0, 26, 90, 0, 0, 0, 26,
26, 0, 26, 0, 26, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
26, 26, 26, 0, 0, 0, 0, 0, 0, 0,
26, 26, 26, 26, 26, 26, 0, 26, 0, 26,
26, 0, 0, 26, 0, 0, 0, 26, 26, 26,
0, 179, 0, 0, 0, 80, 79, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 81, 82,
0, 83, 84, 85, 86, 87, 88, 89, 15, 16,
0, 17, 57, 331, 0, 33, 137, 34, 19, 20,
0, 21, 0, 22, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 90, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 0, 24,
25, 26, 27, 28, 29, 0, 30, 80, 31, 32,
0, 0, 58, 0, 0, 0, 36, 37, 38, 0,
81, 82, 0, 83, 84, 85, 86, 87, 88, 89,
15, 16, 0, 17, 57, 138, 0, 33, 0, 34,
19, 20, 0, 21, 0, 22, 79, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 90, 0, 0,
0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 80,
31, 32, 0, 0, 58, 0, 0, 0, 36, 37,
38, 0, 81, 82, 0, 83, 84, 85, 86, 87,
88, 89, 15, 16, 0, 17, 57, 0, 0, 33,
137, 34, 19, 20, 0, 21, 0, 22, 79, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 90,
0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 0, 31, 32, 0, 0, 58, 0, 0, 0,
36, 37, 38, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 57, 0, 0, 33, 0, 34, 0, 0, 80,
79, 0, 0, 0, 0, 0, 0, 0, 0, 237,
0, 0, 81, 82, 90, 83, 84, 85, 86, 87,
88, 89, 15, 16, 0, 17, 0, 0, 0, 0,
0, 0, 19, 20, 0, 21, 0, 22, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 80, 31, 32, 0, 79, 58, 0, 0, 0,
36, 37, 38, 0, 81, 82, 0, 83, 84, 85,
86, 87, 88, 89, 15, 16, 0, 17, 57, 274,
0, 33, 0, 34, 19, 20, 0, 21, 0, 22,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 90, 0, 0, 0, 0, 0, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 80, 31, 32, 0, 0, 58, 0,
0, 0, 36, 37, 38, 0, 81, 82, 0, 83,
84, 85, 86, 87, 88, 89, 15, 16, 0, 17,
0, 0, 0, 0, 0, 0, 19, 20, 0, 21,
0, 22, 79, 57, 312, 0, 33, 0, 34, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
0, 0, 0, 0, 0, 0, 90, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 80, 0,
58, 0, 0, 0, 36, 37, 38, 0, 0, 0,
0, 81, 82, 0, 83, 84, 85, 86, 87, 88,
89, 15, 16, 0, 17, 0, 0, 0, 0, 0,
0, 19, 20, 0, 21, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
57, 314, 0, 33, 23, 34, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 30,
0, 31, 32, 90, 0, 58, 0, 0, 0, 36,
37, 38, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 81, 82,
0, 83, 84, 85, 86, 87, 88, 89, 15, 16,
0, 17, 0, 0, 79, 0, 0, 0, 19, 20,
0, 21, 0, 22, 0, 57, 348, 0, 33, 0,
34, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 23, 0, 0, 0, 0, 0, 0, 90, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
0, 0, 58, 0, 0, 0, 36, 37, 38, 0,
80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 81, 82, 0, 83, 84, 85, 86,
87, 88, 89, 15, 16, 0, 17, 0, 0, 0,
0, 0, 0, 19, 20, 0, 21, 0, 22, 79,
57, 350, 0, 33, 0, 34, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
0, 0, 0, 90, 24, 25, 26, 27, 28, 29,
0, 30, 0, 31, 32, 0, 0, 58, 0, 0,
0, 36, 37, 38, 0, 0, 0, 80, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81, 82, 0, 83, 84, 85, 86, 87, 88, 89,
15, 16, 0, 17, 0, 0, 0, 0, 0, 0,
19, 20, 0, 21, 79, 22, 57, 0, 0, 33,
0, 34, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 0, 352, 0, 0, 0, 90,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 0, 58, 0, 0, 0, 36, 37,
38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 80, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 81, 82, 0, 83, 84,
85, 86, 87, 88, 89, 15, 16, 0, 17, 0,
79, 0, 0, 0, 0, 19, 20, 0, 21, 0,
22, 0, 57, 361, 0, 33, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 90, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 58,
0, 0, 0, 36, 37, 38, 0, 80, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
81, 82, 0, 83, 84, 85, 86, 87, 88, 89,
15, 16, 0, 17, 57, 0, 0, 33, 0, 34,
19, 20, 0, 21, 0, 22, 79, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 90, 0, 0,
0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 0, 58, 0, 0, 0, 36, 37,
38, 0, 0, 80, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 81, 82, 0, 83,
84, 85, 86, 87, 88, 89, 15, 16, 79, 17,
93, 0, 0, 93, 0, 93, 19, 20, 0, 21,
0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 93, 0, 0, 0, 0, 0, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 0, 0,
58, 0, 0, 0, 36, 37, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 81, 82, 93, 83, 84, 85, 86, 87,
88, 89, 15, 16, 0, 17, 58, 58, 0, 0,
58, 0, 19, 20, 0, 21, 0, 22, 0, 0,
0, 0, 0, 0, 58, 58, 0, 0, 0, 58,
0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 80, 31, 32, 0, 0, 58, 0, 0, 0,
36, 37, 38, 0, 81, 82, 0, 83, 84, 85,
86, 87, 88, 89, 15, 16, 0, 17, 0, 0,
0, 0, 56, 56, 19, 20, 56, 21, 0, 22,
58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
56, 56, 0, 0, 0, 56, 0, 23, 0, 0,
0, 0, 0, 0, 0, 24, 25, 26, 27, 28,
29, 0, 30, 0, 31, 32, 0, 0, 58, 0,
0, 0, 36, 37, 38, 0, 0, 93, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93, 93, 0, 93, 93, 93, 93, 93, 93, 93,
93, 93, 0, 93, 0, 0, 56, 0, 0, 57,
93, 93, 33, 93, 34, 93, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 93, 0, 0, 0, 0, 0, 0,
0, 93, 93, 93, 93, 93, 93, 0, 93, 0,
93, 93, 0, 0, 93, 0, 0, 0, 93, 93,
93, 0, 0, 0, 0, 0, 0, 0, 0, 58,
0, 0, 0, 58, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 58, 58, 58, 0,
0, 58, 0, 79, 0, 58, 58, 58, 0, 58,
57, 0, 0, 33, 0, 34, 58, 58, 0, 58,
0, 58, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 58,
0, 0, 0, 0, 0, 0, 0, 58, 58, 58,
58, 58, 58, 0, 58, 56, 58, 58, 0, 56,
58, 0, 0, 0, 58, 58, 58, 0, 0, 0,
0, 0, 56, 56, 56, 0, 0, 56, 0, 0,
0, 56, 56, 56, 0, 56, 57, 0, 0, 33,
0, 34, 56, 56, 79, 56, 0, 56, 0, 0,
0, 0, 0, 0, 328, 0, 0, 0, 0, 261,
0, 0, 0, 0, 0, 56, 0, 0, 0, 0,
0, 0, 0, 56, 56, 56, 56, 56, 56, 0,
56, 0, 56, 56, 0, 0, 56, 0, 0, 0,
56, 56, 56, 0, 0, 0, 80, 0, 0, 13,
0, 0, 33, 0, 34, 0, 14, 0, 0, 81,
0, 0, 83, 84, 85, 86, 87, 88, 89, 15,
16, 0, 17, 0, 0, 0, 0, 0, 0, 19,
20, 0, 21, 0, 22, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 0, 31,
32, 57, 0, 58, 33, 0, 34, 36, 37, 38,
0, 0, 12, 0, 0, 0, 0, 80, 0, 0,
0, 0, 0, 0, 261, 13, 0, 0, 33, 0,
34, 0, 14, 83, 84, 85, 86, 87, 88, 89,
15, 16, 0, 17, 187, 0, 0, 0, 0, 0,
19, 20, 0, 21, 0, 22, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 0,
31, 32, 0, 259, 58, 0, 0, 0, 36, 37,
38, 0, 0, 0, 0, 13, 81, 82, 33, 0,
34, 0, 14, 0, 0, 260, 15, 16, 0, 17,
0, 0, 0, 0, 0, 0, 19, 20, 0, 21,
0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 23,
10, 11, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 0, 0,
58, 0, 0, 0, 36, 37, 38, 0, 0, 15,
16, 0, 17, 0, 0, 0, 0, 0, 18, 19,
20, 0, 21, 13, 22, 0, 33, 0, 34, 0,
14, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 23, 0, 0, 0, 0, 0, 0, 0,
24, 25, 26, 27, 28, 29, 0, 30, 259, 31,
32, 0, 0, 35, 0, 0, 0, 36, 37, 38,
0, 81, 82, 0, 0, 0, 0, 0, 179, 0,
260, 15, 16, 0, 17, 0, 0, 0, 0, 0,
13, 19, 20, 33, 21, 34, 22, 14, 0, 0,
0, 0, 0, 0, 0, 15, 16, 0, 17, 0,
0, 0, 0, 0, 23, 19, 20, 0, 21, 0,
22, 0, 24, 25, 26, 27, 28, 29, 0, 30,
0, 31, 32, 0, 0, 58, 0, 0, 23, 36,
37, 38, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 168, 35,
0, 0, 0, 36, 37, 38, 295, 0, 0, 33,
0, 34, 0, 14, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 15, 16, 0, 17, 0,
0, 0, 0, 0, 0, 19, 20, 0, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
0, 0, 0, 0, 0, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 35,
0, 0, 0, 36, 37, 38, 170, 0, 295, 0,
0, 33, 0, 34, 0, 14, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 295, 15, 16, 33, 17, 34, 0, 14,
0, 0, 0, 19, 20, 0, 21, 0, 22, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
0, 0, 0, 220, 24, 25, 26, 27, 28, 29,
0, 30, 0, 31, 32, 0, 0, 35, 0, 0,
0, 36, 37, 38, 0, 0, 0, 0, 0, 57,
15, 16, 33, 17, 34, 0, 14, 0, 0, 0,
19, 20, 0, 21, 0, 22, 0, 0, 0, 0,
0, 0, 0, 209, 0, 0, 33, 0, 34, 0,
14, 0, 0, 23, 0, 0, 0, 0, 0, 0,
0, 24, 25, 26, 27, 28, 29, 0, 30, 168,
31, 32, 0, 0, 35, 0, 0, 0, 36, 37,
38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 295, 15, 16, 33, 17,
34, 0, 14, 0, 0, 0, 19, 20, 0, 21,
0, 22, 0, 0, 0, 0, 0, 0, 0, 26,
0, 0, 26, 0, 26, 0, 26, 0, 0, 23,
0, 0, 0, 0, 0, 0, 0, 24, 25, 26,
27, 28, 29, 0, 30, 0, 31, 32, 0, 0,
35, 170, 0, 0, 36, 37, 38, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 57, 0, 0, 33, 220, 34, 0, 15, 16,
0, 17, 0, 0, 0, 0, 0, 0, 19, 20,
0, 21, 0, 22, 0, 0, 0, 0, 0, 0,
0, 0, 15, 16, 0, 17, 0, 0, 0, 0,
0, 23, 19, 20, 0, 21, 0, 22, 0, 24,
25, 26, 27, 28, 29, 0, 30, 0, 31, 32,
0, 0, 35, 0, 0, 23, 36, 37, 38, 0,
0, 0, 0, 24, 25, 26, 27, 28, 29, 0,
30, 0, 31, 32, 0, 0, 35, 0, 0, 0,
36, 37, 38, 0, 0, 0, 0, 0, 0, 15,
16, 0, 17, 0, 0, 0, 0, 0, 0, 19,
20, 0, 21, 0, 22, 0, 0, 0, 0, 0,
0, 0, 0, 15, 16, 0, 17, 0, 0, 0,
0, 0, 23, 19, 20, 0, 21, 0, 22, 0,
24, 25, 26, 27, 28, 29, 0, 30, 0, 31,
32, 0, 0, 35, 0, 0, 23, 36, 37, 38,
0, 0, 0, 0, 24, 25, 26, 27, 28, 29,
0, 30, 0, 31, 32, 15, 16, 35, 17, 0,
0, 36, 37, 38, 0, 19, 20, 0, 21, 0,
22, 0, 0, 0, 0, 0, 0, 0, 0, 26,
26, 0, 26, 0, 0, 0, 0, 0, 23, 26,
26, 0, 26, 0, 26, 0, 24, 25, 26, 27,
28, 29, 0, 30, 0, 31, 32, 0, 0, 35,
0, 0, 26, 36, 37, 38, 0, 0, 0, 0,
26, 26, 26, 26, 26, 26, 0, 26, 0, 26,
26, 15, 16, 26, 17, 0, 0, 26, 26, 26,
0, 19, 20, 0, 21, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
0, 0, 24, 25, 26, 27, 28, 29, 0, 0,
0, 31, 32, 0, 0, 58, 0, 0, 0, 36,
37, 38,
};
const short yycheck[] =
{ 37,
0, 37, 109, 59, 42, 43, 42, 45, 41, 47,
91, 47, 100, 7, 80, 124, 10, 11, 41, 59,
44, 109, 51, 52, 35, 111, 59, 194, 114, 59,
44, 117, 118, 209, 59, 121, 59, 37, 124, 263,
40, 41, 42, 43, 44, 45, 41, 47, 42, 314,
41, 44, 263, 59, 66, 67, 123, 0, 58, 59,
338, 314, 41, 63, 59, 44, 0, 133, 59, 93,
41, 40, 101, 41, 41, 331, 210, 44, 334, 290,
187, 359, 40, 348, 349, 249, 41, 251, 59, 44,
0, 59, 40, 93, 106, 348, 349, 0, 41, 187,
93, 44, 131, 40, 47, 210, 192, 331, 102, 123,
44, 290, 198, 47, 93, 58, 59, 348, 349, 295,
331, 132, 333, 123, 124, 59, 93, 37, 40, 40,
91, 41, 42, 43, 44, 45, 41, 47, 41, 44,
41, 44, 41, 44, 47, 44, 40, 40, 58, 59,
93, 336, 331, 63, 333, 58, 59, 337, 41, 40,
324, 44, 296, 229, 230, 299, 300, 301, 302, 287,
347, 338, 306, 282, 41, 290, 285, 44, 41, 286,
123, 44, 41, 93, 0, 44, 338, 351, 263, 123,
93, 296, 359, 259, 299, 300, 301, 302, 286, 363,
256, 306, 41, 41, 40, 44, 44, 263, 289, 41,
344, 40, 44, 123, 124, 322, 331, 332, 333, 41,
123, 37, 44, 263, 40, 41, 42, 43, 44, 45,
263, 47, 244, 263, 322, 350, 58, 59, 263, 344,
263, 63, 58, 59, 40, 352, 240, 63, 259, 47,
261, 317, 263, 264, 265, 284, 41, 263, 269, 44,
263, 261, 262, 263, 352, 263, 331, 267, 263, 289,
91, 324, 263, 58, 59, 361, 44, 93, 63, 41,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 263, 293, 59, 263, 41, 59, 263, 299,
300, 301, 124, 303, 333, 305, 263, 123, 124, 347,
40, 347, 263, 43, 314, 45, 310, 328, 261, 262,
263, 41, 41, 323, 342, 290, 289, 261, 262, 263,
40, 331, 332, 333, 334, 335, 336, 41, 338, 124,
340, 341, 287, 41, 344, 290, 41, 347, 348, 349,
350, 261, 262, 263, 41, 0, 299, 267, 261, 262,
263, 0, 124, 59, 59, 299, 331, 332, 333, 123,
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 41, 293, 181, 350, 331, 332, 333, 299,
300, 301, 44, 303, 102, 305, 299, -1, -1, -1,
-1, -1, -1, -1, 314, 350, -1, 40, 41, -1,
43, -1, 45, 323, 47, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, 124,
340, 341, -1, -1, 344, -1, -1, 347, 348, 349,
350, 263, -1, 41, -1, 261, 262, 263, -1, -1,
-1, 267, -1, -1, -1, -1, -1, -1, 280, 281,
282, 59, -1, 285, 280, 281, 282, 283, 284, 285,
286, 287, 288, 289, 290, 291, -1, 293, 263, -1,
-1, 53, 54, 299, 300, 301, -1, 303, -1, 305,
-1, -1, -1, -1, -1, 280, 281, 282, 314, 0,
285, 263, -1, -1, -1, -1, -1, 323, -1, -1,
-1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
282, -1, 338, 285, 340, 341, 124, -1, 344, -1,
-1, 347, 348, 349, 350, -1, 37, 267, -1, 40,
41, 42, 43, 44, 45, -1, 47, -1, -1, -1,
280, -1, -1, 338, -1, -1, -1, 58, 59, 289,
290, 291, 63, 293, -1, -1, -1, -1, 263, -1,
300, 301, -1, 303, -1, 305, 148, 149, -1, 41,
-1, -1, 44, 155, 156, -1, -1, 282, -1, 0,
285, -1, 93, 323, -1, -1, 58, 59, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, -1, 344, -1, -1, -1, 348, 349,
350, -1, 123, 124, -1, -1, 37, -1, -1, 40,
41, 42, 43, 44, 45, -1, 47, -1, -1, 211,
-1, -1, -1, -1, 216, 217, -1, 58, 59, 259,
-1, 261, 63, 263, 264, 265, 228, 290, 291, 269,
293, -1, 124, -1, -1, 263, -1, 300, 301, -1,
303, -1, 305, -1, -1, 41, -1, -1, 44, -1,
-1, -1, 93, 0, 282, -1, 258, 285, -1, -1,
323, -1, 58, 59, -1, -1, -1, 63, 331, 332,
333, 334, 335, 336, -1, 338, -1, 340, 341, 281,
282, 344, 123, 124, -1, 348, 349, 350, 328, -1,
37, -1, -1, 40, 41, 42, 43, 44, 45, -1,
47, -1, -1, -1, -1, 307, 308, -1, -1, -1,
-1, 58, 59, -1, -1, -1, 63, -1, -1, -1,
-1, -1, -1, -1, -1, 327, -1, -1, 124, -1,
261, 262, 263, -1, -1, -1, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 93, -1, -1, 280,
281, 282, 283, 284, 285, 286, -1, 288, 289, 290,
291, -1, 293, -1, -1, -1, -1, -1, 299, 300,
301, 263, 303, -1, 305, -1, 123, 124, 41, -1,
-1, 44, -1, 314, -1, -1, -1, -1, -1, -1,
282, -1, 323, 285, -1, 58, 59, -1, -1, -1,
331, 332, 333, 334, 335, 336, -1, 338, -1, 340,
341, -1, -1, 344, -1, -1, 347, 348, 349, 350,
261, 262, 263, -1, -1, 0, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 280,
281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
291, -1, 293, -1, -1, -1, -1, -1, 299, 300,
301, 124, 303, -1, 305, -1, 41, 263, -1, 44,
-1, -1, 47, 314, -1, 40, -1, -1, 43, -1,
45, -1, 323, 58, 59, 281, 282, -1, 63, 285,
331, 332, 333, 334, 335, 336, -1, 338, -1, 340,
341, -1, -1, 344, -1, -1, -1, 348, 349, 350,
-1, -1, -1, -1, 261, 262, 263, -1, 93, -1,
267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 280, 281, 282, 283, 284, 285, 286,
287, 288, 289, 290, 291, -1, 293, -1, 123, 89,
-1, -1, 299, 300, 301, -1, 303, -1, 305, -1,
-1, -1, -1, -1, -1, -1, -1, 314, 0, -1,
-1, -1, 112, -1, -1, -1, 323, -1, -1, -1,
-1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
-1, 338, -1, 340, 341, -1, -1, 344, -1, -1,
263, 348, 349, 350, -1, 37, -1, -1, 40, 41,
42, 43, 44, 45, -1, 47, 0, -1, -1, 282,
-1, 41, 285, -1, 44, -1, 58, 59, -1, -1,
-1, 63, -1, -1, -1, -1, -1, -1, -1, 59,
-1, -1, -1, -1, 41, -1, -1, 44, -1, -1,
-1, -1, -1, -1, 194, -1, -1, 41, 0, -1,
44, 93, 59, 47, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
-1, -1, 222, -1, -1, -1, 261, 262, 263, -1,
-1, 123, 124, -1, 234, 37, -1, -1, 40, 41,
42, 43, 44, 45, 124, 47, 281, -1, -1, 93,
-1, -1, -1, -1, -1, -1, 58, 59, -1, -1,
260, 63, -1, -1, 299, 290, 291, 124, 293, -1,
-1, -1, -1, -1, -1, 300, 301, -1, 303, 123,
305, -1, -1, -1, -1, -1, -1, 287, -1, 314,
-1, 93, 0, -1, -1, -1, -1, -1, 323, -1,
-1, -1, -1, -1, -1, -1, 331, 332, 333, 334,
335, 336, -1, 338, -1, 340, 341, -1, -1, 344,
-1, 123, 124, 348, 349, 350, 326, -1, -1, 37,
-1, -1, 40, 41, 42, 43, 44, 45, -1, 47,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 261,
262, 263, -1, -1, -1, 267, -1, -1, -1, -1,
-1, -1, -1, 263, -1, 93, -1, -1, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, 282, -1, -1, 285, 263, 299, 300, 301,
-1, 303, -1, 305, -1, 123, 124, 261, 262, 263,
-1, -1, 314, -1, -1, 282, -1, -1, 285, -1,
-1, 323, -1, -1, -1, -1, 280, 281, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, -1, 344, -1, -1, 299, 348, 349, 350, 261,
262, 263, 126, -1, 128, 267, -1, -1, -1, -1,
-1, 135, 136, -1, -1, -1, -1, -1, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, -1, -1, 338, -1, -1, 299, 300, 301,
-1, 303, -1, 305, -1, -1, -1, -1, -1, -1,
-1, -1, 314, -1, 40, -1, -1, 43, 182, 45,
-1, 323, -1, -1, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, 205, 344, 207, 208, -1, 348, 349, 350, -1,
-1, -1, -1, 261, 262, 263, -1, -1, -1, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, -1, -1, 253,
-1, 299, 300, 301, -1, 303, -1, 305, -1, -1,
-1, -1, -1, -1, -1, -1, 314, 0, -1, -1,
-1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, 37, -1, -1, 40, 41, 42,
43, 44, 45, -1, 47, 0, 320, -1, -1, -1,
-1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 347, -1, -1, -1, -1, -1, 353,
-1, -1, -1, -1, -1, -1, 41, 0, 362, 44,
93, -1, 47, 367, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 58, 59, -1, -1, -1, 63, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
123, 124, -1, -1, 37, -1, -1, 40, 41, 42,
43, 44, 45, -1, 47, -1, -1, -1, 93, -1,
-1, -1, -1, -1, -1, 58, 59, -1, -1, -1,
63, -1, -1, -1, 290, 291, -1, 293, -1, -1,
-1, -1, -1, -1, 300, 301, -1, 303, 123, 305,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
93, 0, -1, -1, -1, -1, -1, 323, -1, -1,
-1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
336, -1, 338, -1, 340, 341, -1, -1, 344, -1,
123, 124, 348, 349, 350, -1, -1, -1, 37, -1,
-1, 40, 41, 42, 43, 44, 45, -1, 47, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
59, -1, -1, -1, 63, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 261, 262,
263, -1, -1, -1, 267, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 93, -1, -1, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, 290, 291, -1,
293, -1, -1, -1, -1, -1, 299, 300, 301, -1,
303, -1, 305, -1, 123, 124, 261, 262, 263, -1,
40, 314, -1, 43, -1, 45, -1, 47, -1, -1,
323, -1, -1, -1, -1, 280, 281, -1, 331, 332,
333, 334, 335, 336, -1, 338, -1, 340, 341, -1,
-1, 344, -1, -1, 299, 348, 349, 350, 261, 262,
263, -1, -1, -1, 267, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 280, 281, 282,
283, 284, 285, 286, 287, 288, 289, 290, 291, -1,
293, -1, -1, 338, -1, -1, 299, 300, 301, -1,
303, -1, 305, -1, -1, -1, -1, -1, -1, -1,
-1, 314, -1, 40, 41, -1, 43, 44, 45, -1,
323, -1, -1, -1, -1, -1, -1, -1, 331, 332,
333, 334, 335, 336, -1, 338, 63, 340, 341, -1,
-1, 344, -1, -1, -1, 348, 349, 350, -1, -1,
-1, -1, 261, 262, 263, -1, -1, -1, 267, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 280, 281, 282, 283, 284, 285, 286, 287, 288,
289, 290, 291, -1, 293, -1, -1, -1, -1, -1,
299, 300, 301, -1, 303, -1, 305, 124, -1, -1,
-1, -1, 0, -1, -1, 314, -1, -1, -1, -1,
-1, -1, -1, -1, 323, -1, -1, -1, -1, -1,
-1, -1, 331, 332, 333, 334, 335, 336, -1, 338,
-1, 340, 341, -1, -1, 344, 256, -1, 347, 37,
-1, 350, 40, 41, 42, 43, 44, 45, -1, 47,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
290, 291, -1, 293, -1, 295, -1, -1, -1, -1,
300, 301, -1, 303, -1, 305, -1, -1, -1, -1,
-1, -1, 0, -1, -1, 93, -1, -1, -1, -1,
-1, 321, 322, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, -1, 344, 123, 124, -1, 348, 349,
350, -1, 40, 41, -1, 43, 44, 45, -1, -1,
267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, 280, 281, 63, 283, 284, 285, 286,
287, 288, 289, 290, 291, -1, 293, -1, -1, -1,
-1, -1, -1, 300, 301, -1, 303, -1, 305, -1,
-1, -1, -1, -1, -1, 93, 0, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 323, -1, -1, -1,
-1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
-1, 338, -1, 340, 341, 123, 124, 344, -1, -1,
-1, 348, 349, 350, -1, -1, 40, 41, -1, 43,
44, 45, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 261, 262, 263, -1, -1, -1, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
-1, -1, 280, 281, -1, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, -1, -1, -1,
-1, 299, 300, 301, -1, 303, -1, 305, -1, 123,
124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, 347,
-1, -1, 350, 261, 262, 263, -1, -1, 0, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, -1, -1, -1,
-1, 299, 300, 301, -1, 303, -1, 305, 40, 41,
-1, -1, 44, -1, -1, -1, 314, -1, -1, -1,
-1, -1, -1, -1, -1, 323, 58, 59, -1, -1,
-1, 63, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, -1, 261, 262, 263,
-1, 93, 0, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 290, 291, -1, 293,
-1, 123, 124, -1, -1, 299, 300, 301, -1, 303,
-1, 305, 40, 41, -1, -1, 44, -1, -1, 0,
314, -1, -1, -1, -1, -1, -1, -1, -1, 323,
58, 59, -1, -1, -1, 63, -1, 331, 332, 333,
334, 335, 336, -1, 338, -1, 340, 341, -1, -1,
344, -1, -1, -1, 348, 349, 350, -1, -1, -1,
41, -1, 0, 44, -1, 93, 47, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 58, 59, -1,
-1, -1, 63, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 123, 124, -1, -1, -1,
-1, -1, 40, 41, -1, -1, 44, -1, -1, -1,
-1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 261,
262, 263, 123, -1, -1, 267, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 93, -1, -1, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, -1, -1, -1, -1, -1, 299, 300, 301,
-1, 303, -1, 305, -1, 123, 124, -1, -1, -1,
-1, -1, 314, -1, -1, -1, -1, -1, -1, -1,
-1, 323, -1, -1, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, -1, 344, -1, -1, -1, 348, 349, 350, -1,
-1, -1, -1, 261, 262, 263, -1, -1, -1, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, -1, -1, -1,
-1, 299, 300, 301, -1, 303, -1, 305, -1, -1,
261, 262, 263, -1, -1, -1, 314, -1, -1, -1,
-1, -1, -1, -1, -1, 323, -1, -1, -1, 280,
281, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, 299, -1,
348, 349, 350, 261, 262, 263, -1, -1, 0, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, 338, -1, -1,
-1, 299, 300, 301, -1, 303, -1, 305, 40, 41,
-1, -1, 44, -1, -1, -1, 314, -1, -1, -1,
-1, -1, -1, -1, -1, 323, 58, 59, -1, -1,
-1, 63, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, -1, -1, 0, -1,
-1, 93, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 123, 124, -1, -1, -1, -1, -1, 40, 41,
-1, -1, 44, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 58, 59, -1, -1,
-1, 63, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 93, 0, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 123, 124, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 40, 41, -1, -1, 44, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 261,
262, 263, -1, -1, -1, 267, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 93, -1, -1, 280, 281,
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, -1, -1, -1, -1, -1, 299, 300, 301,
-1, 303, -1, 305, -1, 123, 124, -1, -1, -1,
40, 41, 314, 43, -1, 45, -1, 47, -1, -1,
-1, 323, -1, -1, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, -1, 344, -1, -1, -1, 348, 349, 350, 261,
262, 263, -1, -1, 0, 267, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 280, 281,
-1, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, -1, -1, -1, -1, -1, 299, 300, 301,
-1, 303, -1, 305, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 323, -1, 59, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, -1, 344, -1, -1, -1, 348, 349, 350, -1,
-1, -1, -1, 261, 262, 263, -1, -1, 0, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, 281, -1, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, -1, -1, -1,
-1, 299, 300, 301, -1, 303, -1, 305, 40, -1,
-1, 43, -1, 45, -1, 47, -1, -1, -1, -1,
0, -1, -1, -1, -1, 323, -1, 59, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, -1, -1, -1, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
290, 291, -1, 293, -1, -1, -1, -1, -1, -1,
300, 301, -1, 303, -1, 305, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 40, 323, -1, 43, -1, 45, -1, 47,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, -1, 344, 261, 262, 263, 348, 349,
350, -1, -1, 123, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 290, 291, -1, 293, -1, -1,
-1, -1, -1, 299, 300, 301, -1, 303, -1, 305,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 123, -1, 323, -1, -1,
-1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
336, -1, 338, -1, 340, 341, -1, -1, 344, -1,
-1, -1, 348, 349, 350, -1, -1, -1, -1, 261,
262, 263, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 290, 291,
-1, 293, -1, -1, -1, -1, -1, 299, 300, 301,
-1, 303, -1, 305, -1, -1, -1, -1, -1, -1,
-1, 261, 262, -1, -1, -1, -1, -1, -1, -1,
-1, 323, -1, -1, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
290, 291, 344, 293, -1, -1, 348, 349, 350, 299,
300, 301, -1, 303, -1, 305, -1, -1, -1, -1,
-1, -1, -1, 261, 262, -1, -1, -1, -1, 0,
-1, -1, -1, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, 290, 291, 344, 293, -1, -1, 348, 349,
350, 299, 300, 301, -1, 303, 37, 305, -1, 40,
41, 42, 43, 44, 45, -1, 47, -1, -1, -1,
-1, -1, -1, -1, -1, 323, -1, 58, 59, -1,
-1, -1, 63, 331, 332, 333, 334, 335, 336, 0,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 0, -1, -1, -1, -1, -1, -1, 40,
41, -1, 43, 44, 45, -1, 47, -1, -1, -1,
-1, -1, 123, 124, -1, -1, -1, 58, 59, -1,
-1, -1, 63, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 41, -1, -1, 44, -1, -1, 47,
-1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
58, 59, 93, 0, -1, 63, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 123, 124, 41, 93, 0, 44, -1, -1,
47, -1, -1, -1, 41, -1, -1, 44, -1, -1,
47, 58, 59, -1, -1, -1, 63, -1, -1, -1,
-1, 58, 59, -1, -1, 123, 63, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 41, -1, -1,
44, -1, -1, 47, -1, -1, 93, -1, -1, -1,
-1, -1, -1, -1, 58, 59, 93, -1, -1, 63,
261, 262, 263, -1, -1, -1, 267, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 123, -1, -1, 280,
281, 282, 283, 284, 285, 286, 123, 288, 289, 93,
291, -1, 293, -1, -1, -1, -1, -1, 299, 300,
301, -1, 303, -1, 305, -1, -1, -1, -1, -1,
-1, -1, -1, 314, -1, -1, -1, -1, -1, 123,
-1, -1, 323, -1, -1, -1, -1, -1, -1, -1,
261, 262, 263, 334, 335, 336, 267, 338, -1, 340,
341, -1, -1, 344, -1, -1, 347, 348, 349, 280,
281, -1, 283, 284, 285, 286, 287, 288, 289, -1,
291, -1, 293, 261, 262, 263, -1, -1, 299, 300,
301, -1, 303, -1, 305, -1, -1, -1, -1, -1,
-1, -1, 280, 281, -1, -1, -1, -1, -1, -1,
-1, -1, 323, -1, -1, -1, -1, -1, -1, -1,
-1, 299, -1, 334, 335, 336, -1, 338, -1, 340,
341, -1, -1, 344, 261, 262, 263, 348, 349, -1,
-1, -1, -1, -1, 261, 262, 263, -1, -1, 17,
-1, -1, -1, 280, 281, -1, -1, -1, -1, -1,
338, -1, 30, 280, 281, 33, 34, 35, 36, 37,
38, 39, 299, -1, -1, -1, -1, 261, 262, 263,
-1, -1, 299, -1, -1, 53, -1, -1, -1, -1,
58, -1, -1, -1, -1, -1, 280, 281, -1, -1,
68, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 338, -1, -1, -1, 299, -1, -1, -1, -1,
-1, 338, -1, -1, -1, -1, 94, 95, 96, 97,
98, 99, -1, -1, -1, -1, -1, -1, 40, 41,
-1, 43, -1, 45, -1, 47, -1, -1, -1, -1,
-1, -1, -1, -1, 338, 123, -1, 59, -1, -1,
-1, -1, -1, -1, 132, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 144, -1, 146, -1,
148, 149, -1, -1, -1, -1, 154, 155, 156, 157,
158, -1, 160, 161, 162, 163, 164, 165, -1, 167,
-1, 169, -1, 171, 172, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 184, -1, -1, -1,
-1, 123, -1, 125, 192, -1, -1, -1, -1, -1,
198, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 210, -1, -1, -1, -1, -1, 216, -1,
-1, -1, -1, 221, -1, 223, -1, -1, 40, -1,
-1, 43, -1, 45, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 249, -1, 251, -1, -1, -1, -1, -1, -1,
-1, 259, -1, 261, -1, 263, 264, 265, 266, 267,
268, 269, -1, -1, -1, 273, -1, -1, -1, 277,
-1, 279, -1, -1, 282, 283, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 296, 17,
-1, 299, 300, 301, 302, -1, -1, -1, 306, 307,
308, -1, -1, -1, -1, 33, 34, 35, -1, -1,
38, 39, -1, -1, 256, -1, -1, -1, -1, -1,
328, -1, 330, -1, 332, 53, 334, -1, 336, -1,
58, 339, -1, -1, -1, -1, 344, -1, -1, -1,
68, -1, -1, -1, -1, -1, 354, -1, 290, 291,
292, 293, 294, 295, 296, 297, 298, -1, 300, 301,
302, 303, -1, 305, 306, 307, 94, 95, 96, 97,
98, 99, -1, -1, -1, -1, -1, -1, -1, 321,
322, 323, 324, -1, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, 123, 338, 339, 340, 341,
342, -1, 344, -1, 132, -1, 348, 349, 350, -1,
-1, -1, -1, -1, -1, -1, 144, -1, 146, -1,
148, 149, -1, -1, -1, -1, 154, 155, 156, -1,
158, -1, 160, 161, 162, 163, 164, 165, -1, 167,
-1, 169, -1, 171, 172, 267, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 184, -1, -1, -1,
-1, -1, -1, -1, 192, -1, -1, 289, 290, 291,
198, 293, -1, -1, -1, -1, -1, -1, 300, 301,
-1, 303, 210, 305, -1, -1, -1, -1, 216, -1,
-1, -1, -1, 221, -1, 223, -1, -1, -1, -1,
-1, 323, -1, -1, -1, -1, 0, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, 249, 344, 251, -1, -1, 348, 349, 350, -1,
-1, 259, -1, 261, -1, 263, 264, 265, 266, 267,
268, 269, -1, -1, -1, 273, -1, 41, -1, 277,
44, 279, -1, 47, 282, 283, -1, -1, -1, -1,
7, -1, -1, -1, 58, 59, 13, -1, 296, 63,
-1, 299, 300, 301, 302, -1, -1, -1, 306, 307,
308, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 93,
328, -1, -1, -1, -1, -1, 334, -1, 336, 56,
57, 339, -1, -1, -1, -1, 344, 64, 65, 66,
67, -1, -1, 70, 71, -1, 354, -1, -1, 123,
-1, -1, -1, 80, -1, -1, 83, 84, 85, 86,
87, 88, -1, 90, -1, 92, 93, -1, -1, -1,
-1, -1, -1, -1, -1, 102, 103, -1, 37, 106,
-1, 40, -1, 42, 43, -1, 45, 114, 47, -1,
-1, -1, -1, -1, 121, -1, -1, -1, -1, -1,
59, -1, -1, -1, 63, -1, 133, -1, -1, -1,
-1, -1, 139, -1, 141, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 181, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 124, -1, -1, 195, -1,
-1, 37, -1, 200, 40, 41, 42, 43, 44, 45,
-1, 47, 209, -1, -1, -1, -1, 261, 262, 263,
-1, -1, 58, 59, -1, -1, -1, 63, -1, 226,
-1, -1, 229, 230, -1, -1, 280, 281, 235, -1,
237, -1, -1, -1, -1, -1, -1, 244, -1, -1,
-1, -1, -1, -1, -1, 299, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 40, -1, -1, 43, -1,
45, -1, 47, 270, 271, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 59, -1, -1, -1, 124, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 295, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
317, -1, 319, -1, -1, -1, 323, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 267, -1,
-1, -1, -1, -1, 341, -1, -1, -1, 123, -1,
125, 280, 281, -1, 283, 284, 285, 286, 287, 288,
-1, 290, 291, -1, 293, -1, -1, -1, -1, -1,
-1, 300, 301, -1, 303, -1, 305, 40, -1, -1,
43, -1, 45, -1, 47, 314, -1, -1, -1, -1,
-1, -1, -1, -1, 323, -1, 59, -1, -1, -1,
-1, -1, 331, 332, 333, 334, 335, 336, -1, 338,
-1, 340, 341, -1, -1, 344, -1, -1, 347, 348,
349, 350, -1, -1, -1, -1, -1, 263, -1, -1,
-1, 267, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 280, 281, 282, -1, -1, 285,
-1, -1, -1, 289, 290, 291, -1, 293, -1, -1,
123, -1, 125, -1, 300, 301, -1, 303, -1, 305,
-1, -1, 40, -1, -1, 43, -1, 45, -1, 47,
-1, 256, -1, -1, -1, -1, -1, 323, -1, -1,
-1, 59, -1, -1, -1, 331, 332, 333, 334, 335,
336, -1, 338, -1, 340, 341, -1, -1, 344, -1,
-1, 347, -1, -1, 350, 290, 291, 292, 293, 294,
295, 296, 297, 298, -1, 300, 301, 302, 303, -1,
305, 306, 307, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, 321, 322, 323, 324,
-1, -1, 59, -1, -1, 123, 331, 332, 333, 334,
335, 336, -1, 338, 339, 340, 341, 342, -1, 344,
-1, -1, -1, 348, 349, 350, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 256, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 40, -1, -1, 43,
-1, 45, -1, 47, -1, -1, 123, -1, 125, -1,
-1, -1, -1, -1, -1, 59, -1, 290, 291, 292,
293, 294, 295, 296, 297, 298, -1, 300, 301, 302,
303, -1, 305, 306, 307, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 321, 322,
323, 324, -1, -1, -1, -1, -1, -1, 331, 332,
333, 334, 335, 336, -1, 338, 339, 340, 341, 342,
-1, 344, -1, -1, -1, 348, 349, 350, 256, 123,
-1, 125, -1, -1, -1, 263, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 290, 291, 292, 293, 294, 295, 296, 297,
298, -1, 300, 301, 302, 303, -1, 305, 306, 307,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 256,
-1, -1, -1, 321, 322, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, 339, 340, 341, 342, -1, 344, -1, -1, -1,
348, 349, 350, 290, 291, 292, 293, 294, 295, 296,
297, 298, -1, 300, 301, 302, 303, -1, 305, 306,
307, 40, -1, -1, 43, -1, 45, -1, 47, -1,
-1, -1, -1, -1, 321, 322, 323, 324, -1, -1,
59, -1, 256, -1, 331, 332, 333, 334, 335, 336,
-1, 338, 339, 340, 341, 342, -1, 344, -1, -1,
-1, 348, 349, 350, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 290, 291, 292, 293,
294, 295, 296, 297, 298, -1, 300, 301, 302, 303,
-1, 305, 306, 307, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, 123, -1, 125, 321, 322, 323,
-1, -1, -1, 59, -1, -1, -1, 331, 332, 333,
334, 335, 336, -1, 338, 339, 340, 341, 342, -1,
344, -1, -1, -1, 348, 349, 350, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 40, -1, -1, 43, -1,
45, -1, 47, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 59, -1, -1, 123, -1, 125,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 40, -1, -1, 43,
-1, 45, -1, 47, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 59, -1, 256, 123, -1,
125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 290, 291, 292, 293, 294, 295, 296, 297, 298,
-1, 300, 301, 302, 303, -1, 305, 306, 307, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, 123,
-1, 125, 321, 322, 323, -1, -1, -1, -1, 59,
256, -1, 331, 332, 333, 334, 335, 336, -1, 338,
339, 340, 341, 342, -1, 344, -1, -1, -1, 348,
349, 350, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 290, 291, 292, 293, 294, 295,
296, 297, 298, -1, 300, 301, 302, 303, -1, 305,
306, 307, -1, -1, -1, -1, -1, 40, -1, -1,
43, 256, 45, 123, 47, 321, 322, 323, -1, -1,
-1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
336, -1, 338, 339, 340, 341, 342, -1, 344, -1,
-1, -1, 348, 349, 350, 290, 291, 292, 293, 294,
295, 296, 297, 298, -1, 300, 301, 302, 303, -1,
305, 306, 307, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 256, -1, -1, -1, 321, 322, 323, -1,
-1, -1, -1, -1, -1, -1, 331, 332, 333, 334,
335, 336, -1, 338, 339, 340, 341, 342, -1, 344,
-1, -1, -1, 348, 349, 350, 290, 291, 292, 293,
294, 295, 296, 297, 298, -1, 300, 301, 302, 303,
-1, 305, 306, 307, 40, -1, -1, 43, -1, 45,
-1, 47, -1, -1, -1, -1, -1, 321, 322, 323,
-1, -1, -1, 59, -1, -1, 256, 331, 332, 333,
334, 335, 336, 263, 338, 339, 340, 341, 342, -1,
344, -1, -1, -1, 348, 349, 350, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
290, 291, 292, 293, 294, 295, 296, 297, 298, -1,
300, 301, 302, 303, -1, 305, 306, 307, 40, -1,
-1, 43, -1, 45, -1, 47, -1, 123, -1, 125,
-1, 321, 322, 323, -1, -1, -1, 59, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, 339,
340, 341, 342, -1, 344, -1, -1, -1, 348, 349,
350, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 290, 291, 40,
293, -1, 43, -1, 45, -1, 47, 300, 301, -1,
303, -1, 305, -1, -1, -1, -1, -1, 59, -1,
-1, 123, -1, 125, -1, -1, -1, -1, -1, -1,
323, -1, -1, -1, -1, -1, -1, -1, 331, 332,
333, 334, 335, 336, -1, 338, -1, 340, 341, -1,
-1, 344, -1, -1, -1, 348, 349, 350, -1, -1,
40, -1, -1, 43, -1, 45, -1, 47, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 59,
256, -1, 123, -1, 125, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 290, 291, 292, 293, 294, 295,
296, 297, 298, -1, 300, 301, 302, 303, -1, 305,
306, 307, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, 123, -1, 321, 322, 323, -1, -1,
-1, -1, 59, -1, 256, 331, 332, 333, 334, 335,
336, -1, 338, 339, 340, 341, 342, -1, 344, -1,
-1, -1, 348, 349, 350, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 290, 291,
292, 293, 294, 295, 296, 297, 298, -1, 300, 301,
302, 303, -1, 305, 306, 307, 40, -1, -1, 43,
-1, 45, -1, 47, -1, 256, 123, -1, -1, 321,
322, 323, -1, -1, -1, 59, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, 339, 340, 341,
342, -1, 344, -1, -1, -1, 348, 349, 350, 290,
291, 292, 293, 294, 295, 296, 297, 298, -1, 300,
301, 302, 303, -1, 305, 306, 307, 40, -1, -1,
43, -1, 45, -1, 47, -1, 256, -1, -1, -1,
321, 322, 323, -1, -1, -1, 59, -1, -1, 123,
331, 332, 333, 334, 335, 336, -1, 338, 339, 340,
341, 342, -1, 344, -1, -1, -1, 348, 349, 350,
290, 291, 292, 293, 294, 295, 296, 297, 298, -1,
300, 301, 302, 303, -1, 305, 306, 307, 40, -1,
-1, 43, -1, 45, -1, 47, -1, -1, -1, -1,
-1, 321, 322, 323, -1, -1, -1, 59, -1, 256,
123, 331, 332, 333, 334, 335, 336, -1, 338, 339,
340, 341, 342, -1, 344, -1, -1, -1, 348, 349,
350, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 290, 291, 292, 293, 294, 295, 296,
297, 298, -1, 300, 301, 302, 303, -1, 305, 306,
307, 40, -1, -1, 43, -1, 45, -1, 47, -1,
-1, 123, -1, -1, 321, 322, 323, -1, -1, -1,
59, -1, 256, -1, 331, 332, 333, 334, 335, 336,
-1, 338, 339, 340, 341, 342, -1, 344, -1, -1,
-1, 348, 349, 350, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 290, 291, 292, 293,
294, 295, 296, 297, 298, -1, 300, 301, 302, 303,
-1, 305, 306, 307, 40, -1, -1, 43, -1, 45,
-1, 47, -1, 256, 123, -1, -1, 321, 322, 323,
-1, -1, -1, 59, -1, -1, -1, 331, 332, 333,
334, 335, 336, -1, 338, 339, 340, 341, 342, -1,
344, -1, -1, -1, 348, 349, 350, 290, 291, 292,
293, 294, 295, 296, 297, 298, -1, 300, 301, 302,
303, -1, 305, 306, 307, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 256, -1, -1, -1, 321, 322,
323, -1, -1, -1, -1, -1, -1, 123, 331, 332,
333, 334, 335, 336, -1, 338, 339, 340, 341, 342,
-1, 344, -1, -1, -1, 348, 349, 350, 290, 291,
292, 293, 294, 295, 296, 297, 298, -1, 300, 301,
302, 303, -1, 305, 306, 307, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 321,
322, 323, -1, -1, -1, -1, -1, 256, -1, 331,
332, 333, 334, 335, 336, -1, 338, 339, 340, 341,
342, -1, 344, -1, -1, -1, 348, 349, 350, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 290, 291, 292, 293, 294, 295, 296, 297, 298,
-1, 300, 301, 302, 303, -1, 305, 306, 307, 40,
41, -1, 43, -1, 45, -1, 47, -1, -1, -1,
-1, -1, 321, 322, 323, -1, -1, -1, -1, -1,
256, -1, 331, 332, 333, 334, 335, 336, -1, 338,
339, 340, 341, 342, -1, 344, -1, -1, -1, 348,
349, 350, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 290, 291, 292, 293, 294, 295,
296, 297, 298, -1, 300, 301, 302, 303, -1, 305,
306, 307, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 321, 322, 323, 40, -1,
-1, 43, -1, 45, -1, 331, 332, 333, 334, 335,
336, -1, 338, 339, 340, 341, 342, 59, 344, -1,
-1, 63, 348, 349, 350, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
40, 41, -1, 43, 44, 45, -1, -1, -1, -1,
-1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 63, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 256, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 40, 41, -1, 43, 44, 45, -1, -1,
-1, -1, -1, -1, 124, -1, -1, -1, -1, 290,
291, -1, 293, -1, 295, 63, -1, -1, -1, 300,
301, -1, 303, -1, 305, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
321, 322, 323, -1, -1, -1, -1, -1, -1, -1,
331, 332, 333, 334, 335, 336, -1, 338, -1, 340,
341, -1, -1, 344, -1, -1, -1, 348, 349, 350,
-1, 263, -1, -1, -1, 267, 124, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 280, 281,
-1, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, 40, 41, -1, 43, 44, 45, 300, 301,
-1, 303, -1, 305, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 63, -1, -1, -1, -1,
-1, 323, -1, -1, -1, -1, -1, -1, -1, 331,
332, 333, 334, 335, 336, -1, 338, 267, 340, 341,
-1, -1, 344, -1, -1, -1, 348, 349, 350, -1,
280, 281, -1, 283, 284, 285, 286, 287, 288, 289,
290, 291, -1, 293, 40, 41, -1, 43, -1, 45,
300, 301, -1, 303, -1, 305, 124, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 63, -1, -1,
-1, -1, -1, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, 267,
340, 341, -1, -1, 344, -1, -1, -1, 348, 349,
350, -1, 280, 281, -1, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, 40, -1, -1, 43,
44, 45, 300, 301, -1, 303, -1, 305, 124, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 63,
-1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 40, -1, -1, 43, -1, 45, -1, -1, 267,
124, -1, -1, -1, -1, -1, -1, -1, -1, 58,
-1, -1, 280, 281, 63, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, -1, -1, -1, -1,
-1, -1, 300, 301, -1, 303, -1, 305, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, 267, 340, 341, -1, 124, 344, -1, -1, -1,
348, 349, 350, -1, 280, 281, -1, 283, 284, 285,
286, 287, 288, 289, 290, 291, -1, 293, 40, 41,
-1, 43, -1, 45, 300, 301, -1, 303, -1, 305,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 63, -1, -1, -1, -1, -1, 323, -1, -1,
-1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
336, -1, 338, 267, 340, 341, -1, -1, 344, -1,
-1, -1, 348, 349, 350, -1, 280, 281, -1, 283,
284, 285, 286, 287, 288, 289, 290, 291, -1, 293,
-1, -1, -1, -1, -1, -1, 300, 301, -1, 303,
-1, 305, 124, 40, 41, -1, 43, -1, 45, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 323,
-1, -1, -1, -1, -1, -1, 63, 331, 332, 333,
334, 335, 336, -1, 338, -1, 340, 341, 267, -1,
344, -1, -1, -1, 348, 349, 350, -1, -1, -1,
-1, 280, 281, -1, 283, 284, 285, 286, 287, 288,
289, 290, 291, -1, 293, -1, -1, -1, -1, -1,
-1, 300, 301, -1, 303, -1, 305, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 124, -1, -1,
40, 41, -1, 43, 323, 45, -1, -1, -1, -1,
-1, -1, 331, 332, 333, 334, 335, 336, -1, 338,
-1, 340, 341, 63, -1, 344, -1, -1, -1, 348,
349, 350, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 267, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 280, 281,
-1, 283, 284, 285, 286, 287, 288, 289, 290, 291,
-1, 293, -1, -1, 124, -1, -1, -1, 300, 301,
-1, 303, -1, 305, -1, 40, 41, -1, 43, -1,
45, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 323, -1, -1, -1, -1, -1, -1, 63, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, -1, 344, -1, -1, -1, 348, 349, 350, -1,
267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 280, 281, -1, 283, 284, 285, 286,
287, 288, 289, 290, 291, -1, 293, -1, -1, -1,
-1, -1, -1, 300, 301, -1, 303, -1, 305, 124,
40, 41, -1, 43, -1, 45, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 323, -1, -1, -1,
-1, -1, -1, 63, 331, 332, 333, 334, 335, 336,
-1, 338, -1, 340, 341, -1, -1, 344, -1, -1,
-1, 348, 349, 350, -1, -1, -1, 267, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
280, 281, -1, 283, 284, 285, 286, 287, 288, 289,
290, 291, -1, 293, -1, -1, -1, -1, -1, -1,
300, 301, -1, 303, 124, 305, 40, -1, -1, 43,
-1, 45, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 323, -1, 59, -1, -1, -1, 63,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, -1, 344, -1, -1, -1, 348, 349,
350, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 267, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 280, 281, -1, 283, 284,
285, 286, 287, 288, 289, 290, 291, -1, 293, -1,
124, -1, -1, -1, -1, 300, 301, -1, 303, -1,
305, -1, 40, 41, -1, 43, -1, 45, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 323, -1,
-1, -1, -1, -1, -1, 63, 331, 332, 333, 334,
335, 336, -1, 338, -1, 340, 341, -1, -1, 344,
-1, -1, -1, 348, 349, 350, -1, 267, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
280, 281, -1, 283, 284, 285, 286, 287, 288, 289,
290, 291, -1, 293, 40, -1, -1, 43, -1, 45,
300, 301, -1, 303, -1, 305, 124, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 63, -1, -1,
-1, -1, -1, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, -1, 344, -1, -1, -1, 348, 349,
350, -1, -1, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 280, 281, -1, 283,
284, 285, 286, 287, 288, 289, 290, 291, 124, 293,
40, -1, -1, 43, -1, 45, 300, 301, -1, 303,
-1, 305, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 63, -1, -1, -1, -1, -1, 323,
-1, -1, -1, -1, -1, -1, -1, 331, 332, 333,
334, 335, 336, -1, 338, -1, 340, 341, -1, -1,
344, -1, -1, -1, 348, 349, 350, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 267,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 280, 281, 124, 283, 284, 285, 286, 287,
288, 289, 290, 291, -1, 293, 40, 41, -1, -1,
44, -1, 300, 301, -1, 303, -1, 305, -1, -1,
-1, -1, -1, -1, 58, 59, -1, -1, -1, 63,
-1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, 267, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, 280, 281, -1, 283, 284, 285,
286, 287, 288, 289, 290, 291, -1, 293, -1, -1,
-1, -1, 40, 41, 300, 301, 44, 303, -1, 305,
124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, 323, -1, -1,
-1, -1, -1, -1, -1, 331, 332, 333, 334, 335,
336, -1, 338, -1, 340, 341, -1, -1, 344, -1,
-1, -1, 348, 349, 350, -1, -1, 267, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
280, 281, -1, 283, 284, 285, 286, 287, 288, 289,
290, 291, -1, 293, -1, -1, 124, -1, -1, 40,
300, 301, 43, 303, 45, 305, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, -1, 344, -1, -1, -1, 348, 349,
350, -1, -1, -1, -1, -1, -1, -1, -1, 263,
-1, -1, -1, 267, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 280, 281, 282, -1,
-1, 285, -1, 124, -1, 289, 290, 291, -1, 293,
40, -1, -1, 43, -1, 45, 300, 301, -1, 303,
-1, 305, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 323,
-1, -1, -1, -1, -1, -1, -1, 331, 332, 333,
334, 335, 336, -1, 338, 263, 340, 341, -1, 267,
344, -1, -1, -1, 348, 349, 350, -1, -1, -1,
-1, -1, 280, 281, 282, -1, -1, 285, -1, -1,
-1, 289, 290, 291, -1, 293, 40, -1, -1, 43,
-1, 45, 300, 301, 124, 303, -1, 305, -1, -1,
-1, -1, -1, -1, 58, -1, -1, -1, -1, 63,
-1, -1, -1, -1, -1, 323, -1, -1, -1, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, 267, -1, -1, 40,
-1, -1, 43, -1, 45, -1, 47, -1, -1, 280,
-1, -1, 283, 284, 285, 286, 287, 288, 289, 290,
291, -1, 293, -1, -1, -1, -1, -1, -1, 300,
301, -1, 303, -1, 305, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 323, -1, -1, -1, -1, -1, -1, -1,
331, 332, 333, 334, 335, 336, -1, 338, -1, 340,
341, 40, -1, 344, 43, -1, 45, 348, 349, 350,
-1, -1, 123, -1, -1, -1, -1, 267, -1, -1,
-1, -1, -1, -1, 63, 40, -1, -1, 43, -1,
45, -1, 47, 283, 284, 285, 286, 287, 288, 289,
290, 291, -1, 293, 59, -1, -1, -1, -1, -1,
300, 301, -1, 303, -1, 305, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, -1,
340, 341, -1, 267, 344, -1, -1, -1, 348, 349,
350, -1, -1, -1, -1, 40, 280, 281, 43, -1,
45, -1, 47, -1, -1, 289, 290, 291, -1, 293,
-1, -1, -1, -1, -1, -1, 300, 301, -1, 303,
-1, 305, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 323,
261, 262, -1, -1, -1, -1, -1, 331, 332, 333,
334, 335, 336, -1, 338, -1, 340, 341, -1, -1,
344, -1, -1, -1, 348, 349, 350, -1, -1, 290,
291, -1, 293, -1, -1, -1, -1, -1, 299, 300,
301, -1, 303, 40, 305, -1, 43, -1, 45, -1,
47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 323, -1, -1, -1, -1, -1, -1, -1,
331, 332, 333, 334, 335, 336, -1, 338, 267, 340,
341, -1, -1, 344, -1, -1, -1, 348, 349, 350,
-1, 280, 281, -1, -1, -1, -1, -1, 263, -1,
289, 290, 291, -1, 293, -1, -1, -1, -1, -1,
40, 300, 301, 43, 303, 45, 305, 47, -1, -1,
-1, -1, -1, -1, -1, 290, 291, -1, 293, -1,
-1, -1, -1, -1, 323, 300, 301, -1, 303, -1,
305, -1, 331, 332, 333, 334, 335, 336, -1, 338,
-1, 340, 341, -1, -1, 344, -1, -1, 323, 348,
349, 350, -1, -1, -1, -1, 331, 332, 333, 334,
335, 336, -1, 338, -1, 340, 341, -1, 263, 344,
-1, -1, -1, 348, 349, 350, 40, -1, -1, 43,
-1, 45, -1, 47, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 290, 291, -1, 293, -1,
-1, -1, -1, -1, -1, 300, 301, -1, 303, -1,
305, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 323, -1,
-1, -1, -1, -1, -1, -1, 331, 332, 333, 334,
335, 336, -1, 338, -1, 340, 341, -1, -1, 344,
-1, -1, -1, 348, 349, 350, 263, -1, 40, -1,
-1, 43, -1, 45, -1, 47, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 40, 290, 291, 43, 293, 45, -1, 47,
-1, -1, -1, 300, 301, -1, 303, -1, 305, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 323, -1, -1, -1,
-1, -1, -1, 263, 331, 332, 333, 334, 335, 336,
-1, 338, -1, 340, 341, -1, -1, 344, -1, -1,
-1, 348, 349, 350, -1, -1, -1, -1, -1, 40,
290, 291, 43, 293, 45, -1, 47, -1, -1, -1,
300, 301, -1, 303, -1, 305, -1, -1, -1, -1,
-1, -1, -1, 40, -1, -1, 43, -1, 45, -1,
47, -1, -1, 323, -1, -1, -1, -1, -1, -1,
-1, 331, 332, 333, 334, 335, 336, -1, 338, 263,
340, 341, -1, -1, 344, -1, -1, -1, 348, 349,
350, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 40, 290, 291, 43, 293,
45, -1, 47, -1, -1, -1, 300, 301, -1, 303,
-1, 305, -1, -1, -1, -1, -1, -1, -1, 40,
-1, -1, 43, -1, 45, -1, 47, -1, -1, 323,
-1, -1, -1, -1, -1, -1, -1, 331, 332, 333,
334, 335, 336, -1, 338, -1, 340, 341, -1, -1,
344, 263, -1, -1, 348, 349, 350, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 40, -1, -1, 43, 263, 45, -1, 290, 291,
-1, 293, -1, -1, -1, -1, -1, -1, 300, 301,
-1, 303, -1, 305, -1, -1, -1, -1, -1, -1,
-1, -1, 290, 291, -1, 293, -1, -1, -1, -1,
-1, 323, 300, 301, -1, 303, -1, 305, -1, 331,
332, 333, 334, 335, 336, -1, 338, -1, 340, 341,
-1, -1, 344, -1, -1, 323, 348, 349, 350, -1,
-1, -1, -1, 331, 332, 333, 334, 335, 336, -1,
338, -1, 340, 341, -1, -1, 344, -1, -1, -1,
348, 349, 350, -1, -1, -1, -1, -1, -1, 290,
291, -1, 293, -1, -1, -1, -1, -1, -1, 300,
301, -1, 303, -1, 305, -1, -1, -1, -1, -1,
-1, -1, -1, 290, 291, -1, 293, -1, -1, -1,
-1, -1, 323, 300, 301, -1, 303, -1, 305, -1,
331, 332, 333, 334, 335, 336, -1, 338, -1, 340,
341, -1, -1, 344, -1, -1, 323, 348, 349, 350,
-1, -1, -1, -1, 331, 332, 333, 334, 335, 336,
-1, 338, -1, 340, 341, 290, 291, 344, 293, -1,
-1, 348, 349, 350, -1, 300, 301, -1, 303, -1,
305, -1, -1, -1, -1, -1, -1, -1, -1, 290,
291, -1, 293, -1, -1, -1, -1, -1, 323, 300,
301, -1, 303, -1, 305, -1, 331, 332, 333, 334,
335, 336, -1, 338, -1, 340, 341, -1, -1, 344,
-1, -1, 323, 348, 349, 350, -1, -1, -1, -1,
331, 332, 333, 334, 335, 336, -1, 338, -1, 340,
341, 290, 291, 344, 293, -1, -1, 348, 349, 350,
-1, 300, 301, -1, 303, -1, 305, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 323, -1, -1, -1, -1, -1,
-1, -1, 331, 332, 333, 334, 335, 336, -1, -1,
-1, 340, 341, -1, -1, 344, -1, -1, -1, 348,
349, 350,
};
#define YYFINAL 4
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 351
#if YYDEBUG
const char * const yyname[] =
{
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
"':'","';'",0,0,0,"'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
"'['",0,"']'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",
"'|'","'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FIRSTTOKEN","PROGRAM","PASTAT","PASTAT2",
"XBEGIN","XEND","NL","ARRAY","MATCH","NOTMATCH","MATCHOP","FINAL","DOT","ALL",
"CCL","NCCL","CHAR","OR","STAR","QUEST","PLUS","EMPTYRE","ZERO","AND","BOR",
"APPEND","EQ","GE","GT","LE","LT","NE","IN","ARG","BLTIN","BREAK","CLOSE",
"CONTINUE","DELETE","DO","EXIT","FOR","FUNC","SUB","GSUB","IF","INDEX",
"LSUBSTR","MATCHFCN","NEXT","NEXTFILE","ADD","MINUS","MULT","DIVIDE","MOD",
"ASSIGN","ASGNOP","ADDEQ","SUBEQ","MULTEQ","DIVEQ","MODEQ","POWEQ","PRINT",
"PRINTF","SPRINTF","ELSE","INTEST","CONDEXPR","POSTINCR","PREINCR","POSTDECR",
"PREDECR","VAR","IVAR","VARNF","CALL","NUMBER","STRING","REGEXPR","GETLINE",
"RETURN","SPLIT","SUBSTR","WHILE","CAT","NOT","UMINUS","UPLUS","POWER","DECR",
"INCR","INDIRECT","LASTTOKEN",
};
const char * const yyrule[] =
{"$accept : program",
"program : pas",
"program : error",
"and : AND",
"and : and NL",
"bor : BOR",
"bor : bor NL",
"comma : ','",
"comma : comma NL",
"do : DO",
"do : do NL",
"else : ELSE",
"else : else NL",
"$$1 :",
"for : FOR '(' opt_simple_stmt ';' opt_nl pattern ';' opt_nl opt_simple_stmt rparen $$1 stmt",
"$$2 :",
"for : FOR '(' opt_simple_stmt ';' ';' opt_nl opt_simple_stmt rparen $$2 stmt",
"$$3 :",
"for : FOR '(' varname IN varname rparen $$3 stmt",
"funcname : VAR",
"funcname : CALL",
"if : IF '(' pattern rparen",
"lbrace : '{'",
"lbrace : lbrace NL",
"nl : NL",
"nl : nl NL",
"opt_nl :",
"opt_nl : nl",
"opt_pst :",
"opt_pst : pst",
"opt_simple_stmt :",
"opt_simple_stmt : simple_stmt",
"pas : opt_pst",
"pas : opt_pst pa_stats opt_pst",
"pa_pat : pattern",
"pa_stat : pa_pat",
"pa_stat : pa_pat lbrace stmtlist '}'",
"pa_stat : pa_pat ',' opt_nl pa_pat",
"pa_stat : pa_pat ',' opt_nl pa_pat lbrace stmtlist '}'",
"pa_stat : lbrace stmtlist '}'",
"pa_stat : XBEGIN lbrace stmtlist '}'",
"pa_stat : XEND lbrace stmtlist '}'",
"$$4 :",
"pa_stat : FUNC funcname '(' varlist rparen $$4 lbrace stmtlist '}'",
"pa_stats : pa_stat",
"pa_stats : pa_stats opt_pst pa_stat",
"patlist : pattern",
"patlist : patlist comma pattern",
"ppattern : var ASGNOP ppattern",
"ppattern : ppattern '?' ppattern ':' ppattern",
"ppattern : ppattern bor ppattern",
"ppattern : ppattern and ppattern",
"ppattern : ppattern MATCHOP reg_expr",
"ppattern : ppattern MATCHOP ppattern",
"ppattern : ppattern IN varname",
"ppattern : '(' plist ')' IN varname",
"ppattern : ppattern term",
"ppattern : re",
"ppattern : term",
"pattern : var ASGNOP pattern",
"pattern : pattern '?' pattern ':' pattern",
"pattern : pattern bor pattern",
"pattern : pattern and pattern",
"pattern : pattern EQ pattern",
"pattern : pattern GE pattern",
"pattern : pattern GT pattern",
"pattern : pattern LE pattern",
"pattern : pattern LT pattern",
"pattern : pattern NE pattern",
"pattern : pattern MATCHOP reg_expr",
"pattern : pattern MATCHOP pattern",
"pattern : pattern IN varname",
"pattern : '(' plist ')' IN varname",
"pattern : pattern '|' GETLINE var",
"pattern : pattern '|' GETLINE",
"pattern : pattern term",
"pattern : re",
"pattern : term",
"plist : pattern comma pattern",
"plist : plist comma pattern",
"pplist : ppattern",
"pplist : pplist comma ppattern",
"prarg :",
"prarg : pplist",
"prarg : '(' plist ')'",
"print : PRINT",
"print : PRINTF",
"pst : NL",
"pst : ';'",
"pst : pst NL",
"pst : pst ';'",
"rbrace : '}'",
"rbrace : rbrace NL",
"re : reg_expr",
"re : NOT re",
"$$5 :",
"reg_expr : '/' $$5 REGEXPR '/'",
"rparen : ')'",
"rparen : rparen NL",
"simple_stmt : print prarg '|' term",
"simple_stmt : print prarg APPEND term",
"simple_stmt : print prarg GT term",
"simple_stmt : print prarg",
"simple_stmt : DELETE varname '[' patlist ']'",
"simple_stmt : DELETE varname",
"simple_stmt : pattern",
"simple_stmt : error",
"st : nl",
"st : ';' opt_nl",
"stmt : BREAK st",
"stmt : CONTINUE st",
"$$6 :",
"$$7 :",
"stmt : do $$6 stmt $$7 WHILE '(' pattern ')' st",
"stmt : EXIT pattern st",
"stmt : EXIT st",
"stmt : for",
"stmt : if stmt else stmt",
"stmt : if stmt",
"stmt : lbrace stmtlist rbrace",
"stmt : NEXT st",
"stmt : NEXTFILE st",
"stmt : RETURN pattern st",
"stmt : RETURN st",
"stmt : simple_stmt st",
"$$8 :",
"stmt : while $$8 stmt",
"stmt : ';' opt_nl",
"stmtlist : stmt",
"stmtlist : stmtlist stmt",
"subop : SUB",
"subop : GSUB",
"string : STRING",
"string : string STRING",
"term : term '/' ASGNOP term",
"term : term '+' term",
"term : term '-' term",
"term : term '*' term",
"term : term '/' term",
"term : term '%' term",
"term : term POWER term",
"term : '-' term",
"term : '+' term",
"term : NOT term",
"term : BLTIN '(' ')'",
"term : BLTIN '(' patlist ')'",
"term : BLTIN",
"term : CALL '(' ')'",
"term : CALL '(' patlist ')'",
"term : CLOSE term",
"term : DECR var",
"term : INCR var",
"term : var DECR",
"term : var INCR",
"term : GETLINE var LT term",
"term : GETLINE LT term",
"term : GETLINE var",
"term : GETLINE",
"term : INDEX '(' pattern comma pattern ')'",
"term : INDEX '(' pattern comma reg_expr ')'",
"term : '(' pattern ')'",
"term : MATCHFCN '(' pattern comma reg_expr ')'",
"term : MATCHFCN '(' pattern comma pattern ')'",
"term : NUMBER",
"term : SPLIT '(' pattern comma varname comma pattern ')'",
"term : SPLIT '(' pattern comma varname comma reg_expr ')'",
"term : SPLIT '(' pattern comma varname ')'",
"term : SPRINTF '(' patlist ')'",
"term : string",
"term : subop '(' reg_expr comma pattern ')'",
"term : subop '(' pattern comma pattern ')'",
"term : subop '(' reg_expr comma pattern comma var ')'",
"term : subop '(' pattern comma pattern comma var ')'",
"term : SUBSTR '(' pattern comma pattern comma pattern ')'",
"term : SUBSTR '(' pattern comma pattern ')'",
"term : var",
"var : varname",
"var : varname '[' patlist ']'",
"var : IVAR",
"var : INDIRECT term",
"varlist :",
"varlist : VAR",
"varlist : varlist comma VAR",
"varname : VAR",
"varname : ARG",
"varname : VARNF",
"while : WHILE '(' pattern rparen",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
/* LINTUSED */
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short *yyss;
short *yysslim;
YYSTYPE *yyvs;
unsigned int yystacksize;
int yyparse(void);
#line 452 "awkgram.y"
void setfname(Cell *p)
{
if (isarr(p))
SYNTAX("%s is an array, not a function", p->nval);
else if (isfcn(p))
SYNTAX("you can't define function %s more than once", p->nval);
curfname = p->nval;
}
int constnode(Node *p)
{
return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
}
char *strnode(Node *p)
{
return ((Cell *)(p->narg[0]))->sval;
}
Node *notnull(Node *n)
{
switch (n->nobj) {
case LE: case LT: case EQ: case NE: case GT: case GE:
case BOR: case AND: case NOT:
return n;
default:
return op2(NE, n, nullnode);
}
}
void checkdup(Node *vl, Cell *cp) /* check if name already in list */
{
char *s = cp->nval;
for ( ; vl; vl = vl->nnext) {
if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
SYNTAX("duplicate argument %s", s);
break;
}
}
}
#line 2508 "awkgram.tab.c"
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
static int yygrowstack(void)
{
unsigned int newsize;
long sslen;
short *newss;
YYSTYPE *newvs;
if ((newsize = yystacksize) == 0)
newsize = YYINITSTACKSIZE;
else if (newsize >= YYMAXDEPTH)
return -1;
else if ((newsize *= 2) > YYMAXDEPTH)
newsize = YYMAXDEPTH;
sslen = yyssp - yyss;
#ifdef SIZE_MAX
#define YY_SIZE_MAX SIZE_MAX
#else
#define YY_SIZE_MAX 0xffffffffU
#endif
if (newsize && YY_SIZE_MAX / newsize < sizeof *newss)
goto bail;
newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) :
(short *)malloc(newsize * sizeof *newss); /* overflow check above */
if (newss == NULL)
goto bail;
yyss = newss;
yyssp = newss + sslen;
if (newsize && YY_SIZE_MAX / newsize < sizeof *newvs)
goto bail;
newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) :
(YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */
if (newvs == NULL)
goto bail;
yyvs = newvs;
yyvsp = newvs + sslen;
yystacksize = newsize;
yysslim = yyss + newsize - 1;
return 0;
bail:
if (yyss)
free(yyss);
if (yyvs)
free(yyvs);
yyss = yyssp = NULL;
yyvs = yyvsp = NULL;
yystacksize = 0;
return -1;
}
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse(void)
{
int yym, yyn, yystate;
#if YYDEBUG
const char *yys;
if ((yys = getenv("YYDEBUG")))
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif /* YYDEBUG */
yynerrs = 0;
yyerrflag = 0;
yychar = (-1);
if (yyss == NULL && yygrowstack()) goto yyoverflow;
yyssp = yyss;
yyvsp = yyvs;
*yyssp = yystate = 0;
yyloop:
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
yychar = (-1);
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
#if defined(__GNUC__)
goto yynewerror;
#endif
yynewerror:
yyerror("syntax error");
#if defined(__GNUC__)
goto yyerrlab;
#endif
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate = yytable[yyn];
*++yyvsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yyssp);
#endif
if (yyssp <= yyss) goto yyabort;
--yyssp;
--yyvsp;
}
}
}
else
{
if (yychar == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yychar, yys);
}
#endif
yychar = (-1);
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
if (yym)
yyval = yyvsp[1-yym];
else
memset(&yyval, 0, sizeof yyval);
switch (yyn)
{
case 1:
#line 99 "awkgram.y"
{ if (errorflag==0)
winner = (Node *)stat3(PROGRAM, beginloc, yyvsp[0].p, endloc); }
break;
case 2:
#line 101 "awkgram.y"
{ yyclearin; bracecheck(); SYNTAX("bailing out"); }
break;
case 13:
#line 125 "awkgram.y"
{inloop++;}
break;
case 14:
#line 126 "awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yyvsp[-9].p, notnull(yyvsp[-6].p), yyvsp[-3].p, yyvsp[0].p); }
break;
case 15:
#line 127 "awkgram.y"
{inloop++;}
break;
case 16:
#line 128 "awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yyvsp[-7].p, NIL, yyvsp[-3].p, yyvsp[0].p); }
break;
case 17:
#line 129 "awkgram.y"
{inloop++;}
break;
case 18:
#line 130 "awkgram.y"
{ --inloop; yyval.p = stat3(IN, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[0].p); }
break;
case 19:
#line 134 "awkgram.y"
{ setfname(yyvsp[0].cp); }
break;
case 20:
#line 135 "awkgram.y"
{ setfname(yyvsp[0].cp); }
break;
case 21:
#line 139 "awkgram.y"
{ yyval.p = notnull(yyvsp[-1].p); }
break;
case 26:
#line 151 "awkgram.y"
{ yyval.i = 0; }
break;
case 28:
#line 156 "awkgram.y"
{ yyval.i = 0; }
break;
case 30:
#line 162 "awkgram.y"
{ yyval.p = 0; }
break;
case 32:
#line 167 "awkgram.y"
{ yyval.p = 0; }
break;
case 33:
#line 168 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 34:
#line 172 "awkgram.y"
{ yyval.p = notnull(yyvsp[0].p); }
break;
case 35:
#line 176 "awkgram.y"
{ yyval.p = stat2(PASTAT, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); }
break;
case 36:
#line 177 "awkgram.y"
{ yyval.p = stat2(PASTAT, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 37:
#line 178 "awkgram.y"
{ yyval.p = pa2stat(yyvsp[-3].p, yyvsp[0].p, stat2(PRINT, rectonode(), NIL)); }
break;
case 38:
#line 179 "awkgram.y"
{ yyval.p = pa2stat(yyvsp[-6].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 39:
#line 180 "awkgram.y"
{ yyval.p = stat2(PASTAT, NIL, yyvsp[-1].p); }
break;
case 40:
#line 182 "awkgram.y"
{ beginloc = linkum(beginloc, yyvsp[-1].p); yyval.p = 0; }
break;
case 41:
#line 184 "awkgram.y"
{ endloc = linkum(endloc, yyvsp[-1].p); yyval.p = 0; }
break;
case 42:
#line 185 "awkgram.y"
{infunc = true;}
break;
case 43:
#line 186 "awkgram.y"
{ infunc = false; curfname=0; defn((Cell *)yyvsp[-7].p, yyvsp[-5].p, yyvsp[-1].p); yyval.p = 0; }
break;
case 45:
#line 191 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 47:
#line 196 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 48:
#line 200 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 49:
#line 202 "awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); }
break;
case 50:
#line 204 "awkgram.y"
{ yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 51:
#line 206 "awkgram.y"
{ yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 52:
#line 207 "awkgram.y"
{ yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 53:
#line 209 "awkgram.y"
{ if (constnode(yyvsp[0].p))
yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(strnode(yyvsp[0].p), 0));
else
yyval.p = op3(yyvsp[-1].i, (Node *)1, yyvsp[-2].p, yyvsp[0].p); }
break;
case 54:
#line 213 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); }
break;
case 55:
#line 214 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); }
break;
case 56:
#line 215 "awkgram.y"
{ yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); }
break;
case 59:
#line 221 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 60:
#line 223 "awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yyvsp[-4].p), yyvsp[-2].p, yyvsp[0].p); }
break;
case 61:
#line 225 "awkgram.y"
{ yyval.p = op2(BOR, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 62:
#line 227 "awkgram.y"
{ yyval.p = op2(AND, notnull(yyvsp[-2].p), notnull(yyvsp[0].p)); }
break;
case 63:
#line 228 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 64:
#line 229 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 65:
#line 230 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 66:
#line 231 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 67:
#line 232 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 68:
#line 233 "awkgram.y"
{ yyval.p = op2(yyvsp[-1].i, yyvsp[-2].p, yyvsp[0].p); }
break;
case 69:
#line 234 "awkgram.y"
{ yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 70:
#line 236 "awkgram.y"
{ if (constnode(yyvsp[0].p))
yyval.p = op3(yyvsp[-1].i, NIL, yyvsp[-2].p, (Node*)makedfa(strnode(yyvsp[0].p), 0));
else
yyval.p = op3(yyvsp[-1].i, (Node *)1, yyvsp[-2].p, yyvsp[0].p); }
break;
case 71:
#line 240 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-2].p, makearr(yyvsp[0].p)); }
break;
case 72:
#line 241 "awkgram.y"
{ yyval.p = op2(INTEST, yyvsp[-3].p, makearr(yyvsp[0].p)); }
break;
case 73:
#line 242 "awkgram.y"
{
if (safe) SYNTAX("cmd | getline is unsafe");
else yyval.p = op3(GETLINE, yyvsp[0].p, itonp(yyvsp[-2].i), yyvsp[-3].p); }
break;
case 74:
#line 245 "awkgram.y"
{
if (safe) SYNTAX("cmd | getline is unsafe");
else yyval.p = op3(GETLINE, (Node*)0, itonp(yyvsp[-1].i), yyvsp[-2].p); }
break;
case 75:
#line 248 "awkgram.y"
{ yyval.p = op2(CAT, yyvsp[-1].p, yyvsp[0].p); }
break;
case 78:
#line 254 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 79:
#line 255 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 81:
#line 260 "awkgram.y"
{ yyval.p = linkum(yyvsp[-2].p, yyvsp[0].p); }
break;
case 82:
#line 264 "awkgram.y"
{ yyval.p = rectonode(); }
break;
case 84:
#line 266 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 93:
#line 283 "awkgram.y"
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yyvsp[0].s, 0)); }
break;
case 94:
#line 284 "awkgram.y"
{ yyval.p = op1(NOT, notnull(yyvsp[0].p)); }
break;
case 95:
#line 288 "awkgram.y"
{startreg();}
break;
case 96:
#line 288 "awkgram.y"
{ yyval.s = yyvsp[-1].s; }
break;
case 99:
#line 296 "awkgram.y"
{
if (safe) SYNTAX("print | is unsafe");
else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 100:
#line 299 "awkgram.y"
{
if (safe) SYNTAX("print >> is unsafe");
else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 101:
#line 302 "awkgram.y"
{
if (safe) SYNTAX("print > is unsafe");
else yyval.p = stat3(yyvsp[-3].i, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 102:
#line 305 "awkgram.y"
{ yyval.p = stat3(yyvsp[-1].i, yyvsp[0].p, NIL, NIL); }
break;
case 103:
#line 306 "awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yyvsp[-3].p), yyvsp[-1].p); }
break;
case 104:
#line 307 "awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yyvsp[0].p), 0); }
break;
case 105:
#line 308 "awkgram.y"
{ yyval.p = exptostat(yyvsp[0].p); }
break;
case 106:
#line 309 "awkgram.y"
{ yyclearin; SYNTAX("illegal statement"); }
break;
case 109:
#line 318 "awkgram.y"
{ if (!inloop) SYNTAX("break illegal outside of loops");
yyval.p = stat1(BREAK, NIL); }
break;
case 110:
#line 320 "awkgram.y"
{ if (!inloop) SYNTAX("continue illegal outside of loops");
yyval.p = stat1(CONTINUE, NIL); }
break;
case 111:
#line 322 "awkgram.y"
{inloop++;}
break;
case 112:
#line 322 "awkgram.y"
{--inloop;}
break;
case 113:
#line 323 "awkgram.y"
{ yyval.p = stat2(DO, yyvsp[-6].p, notnull(yyvsp[-2].p)); }
break;
case 114:
#line 324 "awkgram.y"
{ yyval.p = stat1(EXIT, yyvsp[-1].p); }
break;
case 115:
#line 325 "awkgram.y"
{ yyval.p = stat1(EXIT, NIL); }
break;
case 117:
#line 327 "awkgram.y"
{ yyval.p = stat3(IF, yyvsp[-3].p, yyvsp[-2].p, yyvsp[0].p); }
break;
case 118:
#line 328 "awkgram.y"
{ yyval.p = stat3(IF, yyvsp[-1].p, yyvsp[0].p, NIL); }
break;
case 119:
#line 329 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 120:
#line 330 "awkgram.y"
{ if (infunc)
SYNTAX("next is illegal inside a function");
yyval.p = stat1(NEXT, NIL); }
break;
case 121:
#line 333 "awkgram.y"
{ if (infunc)
SYNTAX("nextfile is illegal inside a function");
yyval.p = stat1(NEXTFILE, NIL); }
break;
case 122:
#line 336 "awkgram.y"
{ yyval.p = stat1(RETURN, yyvsp[-1].p); }
break;
case 123:
#line 337 "awkgram.y"
{ yyval.p = stat1(RETURN, NIL); }
break;
case 125:
#line 339 "awkgram.y"
{inloop++;}
break;
case 126:
#line 339 "awkgram.y"
{ --inloop; yyval.p = stat2(WHILE, yyvsp[-2].p, yyvsp[0].p); }
break;
case 127:
#line 340 "awkgram.y"
{ yyval.p = 0; }
break;
case 129:
#line 345 "awkgram.y"
{ yyval.p = linkum(yyvsp[-1].p, yyvsp[0].p); }
break;
case 133:
#line 354 "awkgram.y"
{ yyval.cp = catstr(yyvsp[-1].cp, yyvsp[0].cp); }
break;
case 134:
#line 358 "awkgram.y"
{ yyval.p = op2(DIVEQ, yyvsp[-3].p, yyvsp[0].p); }
break;
case 135:
#line 359 "awkgram.y"
{ yyval.p = op2(ADD, yyvsp[-2].p, yyvsp[0].p); }
break;
case 136:
#line 360 "awkgram.y"
{ yyval.p = op2(MINUS, yyvsp[-2].p, yyvsp[0].p); }
break;
case 137:
#line 361 "awkgram.y"
{ yyval.p = op2(MULT, yyvsp[-2].p, yyvsp[0].p); }
break;
case 138:
#line 362 "awkgram.y"
{ yyval.p = op2(DIVIDE, yyvsp[-2].p, yyvsp[0].p); }
break;
case 139:
#line 363 "awkgram.y"
{ yyval.p = op2(MOD, yyvsp[-2].p, yyvsp[0].p); }
break;
case 140:
#line 364 "awkgram.y"
{ yyval.p = op2(POWER, yyvsp[-2].p, yyvsp[0].p); }
break;
case 141:
#line 365 "awkgram.y"
{ yyval.p = op1(UMINUS, yyvsp[0].p); }
break;
case 142:
#line 366 "awkgram.y"
{ yyval.p = op1(UPLUS, yyvsp[0].p); }
break;
case 143:
#line 367 "awkgram.y"
{ yyval.p = op1(NOT, notnull(yyvsp[0].p)); }
break;
case 144:
#line 368 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[-2].i), rectonode()); }
break;
case 145:
#line 369 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[-3].i), yyvsp[-1].p); }
break;
case 146:
#line 370 "awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yyvsp[0].i), rectonode()); }
break;
case 147:
#line 371 "awkgram.y"
{ yyval.p = op2(CALL, celltonode(yyvsp[-2].cp,CVAR), NIL); }
break;
case 148:
#line 372 "awkgram.y"
{ yyval.p = op2(CALL, celltonode(yyvsp[-3].cp,CVAR), yyvsp[-1].p); }
break;
case 149:
#line 373 "awkgram.y"
{ yyval.p = op1(CLOSE, yyvsp[0].p); }
break;
case 150:
#line 374 "awkgram.y"
{ yyval.p = op1(PREDECR, yyvsp[0].p); }
break;
case 151:
#line 375 "awkgram.y"
{ yyval.p = op1(PREINCR, yyvsp[0].p); }
break;
case 152:
#line 376 "awkgram.y"
{ yyval.p = op1(POSTDECR, yyvsp[-1].p); }
break;
case 153:
#line 377 "awkgram.y"
{ yyval.p = op1(POSTINCR, yyvsp[-1].p); }
break;
case 154:
#line 378 "awkgram.y"
{ yyval.p = op3(GETLINE, yyvsp[-2].p, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 155:
#line 379 "awkgram.y"
{ yyval.p = op3(GETLINE, NIL, itonp(yyvsp[-1].i), yyvsp[0].p); }
break;
case 156:
#line 380 "awkgram.y"
{ yyval.p = op3(GETLINE, yyvsp[0].p, NIL, NIL); }
break;
case 157:
#line 381 "awkgram.y"
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); }
break;
case 158:
#line 383 "awkgram.y"
{ yyval.p = op2(INDEX, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 159:
#line 385 "awkgram.y"
{ SYNTAX("index() doesn't permit regular expressions");
yyval.p = op2(INDEX, yyvsp[-3].p, (Node*)yyvsp[-1].s); }
break;
case 160:
#line 387 "awkgram.y"
{ yyval.p = yyvsp[-1].p; }
break;
case 161:
#line 389 "awkgram.y"
{ yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(yyvsp[-1].s, 1)); }
break;
case 162:
#line 391 "awkgram.y"
{ if (constnode(yyvsp[-1].p))
yyval.p = op3(MATCHFCN, NIL, yyvsp[-3].p, (Node*)makedfa(strnode(yyvsp[-1].p), 1));
else
yyval.p = op3(MATCHFCN, (Node *)1, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 163:
#line 395 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CCON); }
break;
case 164:
#line 397 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), yyvsp[-1].p, (Node*)STRING); }
break;
case 165:
#line 399 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-5].p, makearr(yyvsp[-3].p), (Node*)makedfa(yyvsp[-1].s, 1), (Node *)REGEXPR); }
break;
case 166:
#line 401 "awkgram.y"
{ yyval.p = op4(SPLIT, yyvsp[-3].p, makearr(yyvsp[-1].p), NIL, (Node*)STRING); }
break;
case 167:
#line 402 "awkgram.y"
{ yyval.p = op1(yyvsp[-3].i, yyvsp[-1].p); }
break;
case 168:
#line 403 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CCON); }
break;
case 169:
#line 405 "awkgram.y"
{ yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(yyvsp[-3].s, 1), yyvsp[-1].p, rectonode()); }
break;
case 170:
#line 407 "awkgram.y"
{ if (constnode(yyvsp[-3].p))
yyval.p = op4(yyvsp[-5].i, NIL, (Node*)makedfa(strnode(yyvsp[-3].p), 1), yyvsp[-1].p, rectonode());
else
yyval.p = op4(yyvsp[-5].i, (Node *)1, yyvsp[-3].p, yyvsp[-1].p, rectonode()); }
break;
case 171:
#line 412 "awkgram.y"
{ yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(yyvsp[-5].s, 1), yyvsp[-3].p, yyvsp[-1].p); }
break;
case 172:
#line 414 "awkgram.y"
{ if (constnode(yyvsp[-5].p))
yyval.p = op4(yyvsp[-7].i, NIL, (Node*)makedfa(strnode(yyvsp[-5].p), 1), yyvsp[-3].p, yyvsp[-1].p);
else
yyval.p = op4(yyvsp[-7].i, (Node *)1, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 173:
#line 419 "awkgram.y"
{ yyval.p = op3(SUBSTR, yyvsp[-5].p, yyvsp[-3].p, yyvsp[-1].p); }
break;
case 174:
#line 421 "awkgram.y"
{ yyval.p = op3(SUBSTR, yyvsp[-3].p, yyvsp[-1].p, NIL); }
break;
case 177:
#line 427 "awkgram.y"
{ yyval.p = op2(ARRAY, makearr(yyvsp[-3].p), yyvsp[-1].p); }
break;
case 178:
#line 428 "awkgram.y"
{ yyval.p = op1(INDIRECT, celltonode(yyvsp[0].cp, CVAR)); }
break;
case 179:
#line 429 "awkgram.y"
{ yyval.p = op1(INDIRECT, yyvsp[0].p); }
break;
case 180:
#line 433 "awkgram.y"
{ arglist = yyval.p = 0; }
break;
case 181:
#line 434 "awkgram.y"
{ arglist = yyval.p = celltonode(yyvsp[0].cp,CVAR); }
break;
case 182:
#line 435 "awkgram.y"
{
checkdup(yyvsp[-2].p, yyvsp[0].cp);
arglist = yyval.p = linkum(yyvsp[-2].p,celltonode(yyvsp[0].cp,CVAR)); }
break;
case 183:
#line 441 "awkgram.y"
{ yyval.p = celltonode(yyvsp[0].cp, CVAR); }
break;
case 184:
#line 442 "awkgram.y"
{ yyval.p = op1(ARG, itonp(yyvsp[0].i)); }
break;
case 185:
#line 443 "awkgram.y"
{ yyval.p = op1(VARNF, (Node *) yyvsp[0].cp); }
break;
case 186:
#line 448 "awkgram.y"
{ yyval.p = notnull(yyvsp[-1].p); }
break;
#line 3301 "awkgram.tab.c"
}
yyssp -= yym;
yystate = *yyssp;
yyvsp -= yym;
yym = yylhs[yyn];
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yyssp = YYFINAL;
*++yyvsp = yyval;
if (yychar < 0)
{
if ((yychar = yylex()) < 0) yychar = 0;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yychar, yys);
}
#endif
}
if (yychar == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
if (yyssp >= yysslim && yygrowstack())
{
goto yyoverflow;
}
*++yyssp = yystate;
*++yyvsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
if (yyss)
free(yyss);
if (yyvs)
free(yyvs);
yyss = yyssp = NULL;
yyvs = yyvsp = NULL;
yystacksize = 0;
return (1);
yyaccept:
if (yyss)
free(yyss);
if (yyvs)
free(yyvs);
yyss = yyssp = NULL;
yyvs = yyvsp = NULL;
yystacksize = 0;
return (0);
}