1/* A Bison parser, made by GNU Bison 2.3.  */
2
3/* Skeleton implementation for Bison's Yacc-like parsers in C
4
5   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
6   Free Software Foundation, Inc.
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2, or (at your option)
11   any later version.
12
13   This program is distributed in the hope that it will be useful,
14   but WITHOUT ANY WARRANTY; without even the implied warranty of
15   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16   GNU General Public License for more details.
17
18   You should have received a copy of the GNU General Public License
19   along with this program; if not, write to the Free Software
20   Foundation, Inc., 51 Franklin Street, Fifth Floor,
21   Boston, MA 02110-1301, USA.  */
22
23/* As a special exception, you may create a larger work that contains
24   part or all of the Bison parser skeleton and distribute that work
25   under terms of your choice, so long as that work isn't itself a
26   parser generator using the skeleton or a modified version thereof
27   as a parser skeleton.  Alternatively, if you modify or redistribute
28   the parser skeleton itself, you may (at your option) remove this
29   special exception, which will cause the skeleton and the resulting
30   Bison output files to be licensed under the GNU General Public
31   License without this special exception.
32
33   This special exception was added by the Free Software Foundation in
34   version 2.2 of Bison.  */
35
36/* C LALR(1) parser skeleton written by Richard Stallman, by
37   simplifying the original so-called "semantic" parser.  */
38
39/* All symbols defined below should begin with yy or YY, to avoid
40   infringing on user name space.  This should be done even for local
41   variables, as they might otherwise be expanded by user macros.
42   There are some unavoidable exceptions within include files to
43   define necessary library symbols; they are noted "INFRINGES ON
44   USER NAME SPACE" below.  */
45
46/* Identify Bison output.  */
47#define YYBISON 1
48
49/* Bison version.  */
50#define YYBISON_VERSION "2.3"
51
52/* Skeleton name.  */
53#define YYSKELETON_NAME "yacc.c"
54
55/* Pure parsers.  */
56#define YYPURE 0
57
58/* Using locations.  */
59#define YYLSP_NEEDED 0
60
61
62
63/* Tokens.  */
64#ifndef YYTOKENTYPE
65# define YYTOKENTYPE
66   /* Put the tokens into the symbol table, so that GDB and other debuggers
67      know about them.  */
68   enum yytokentype {
69     FIRSTTOKEN = 258,
70     PROGRAM = 259,
71     PASTAT = 260,
72     PASTAT2 = 261,
73     XBEGIN = 262,
74     XEND = 263,
75     NL = 264,
76     ARRAY = 265,
77     MATCH = 266,
78     NOTMATCH = 267,
79     MATCHOP = 268,
80     FINAL = 269,
81     DOT = 270,
82     ALL = 271,
83     CCL = 272,
84     NCCL = 273,
85     CHAR = 274,
86     OR = 275,
87     STAR = 276,
88     QUEST = 277,
89     PLUS = 278,
90     EMPTYRE = 279,
91     IGNORE_PRIOR_ATOM = 280,
92     AND = 281,
93     BOR = 282,
94     APPEND = 283,
95     EQ = 284,
96     GE = 285,
97     GT = 286,
98     LE = 287,
99     LT = 288,
100     NE = 289,
101     IN = 290,
102     ARG = 291,
103     BLTIN = 292,
104     BREAK = 293,
105     CLOSE = 294,
106     CONTINUE = 295,
107     DELETE = 296,
108     DO = 297,
109     EXIT = 298,
110     FOR = 299,
111     FUNC = 300,
112     SUB = 301,
113     GSUB = 302,
114     IF = 303,
115     INDEX = 304,
116     LSUBSTR = 305,
117     MATCHFCN = 306,
118     NEXT = 307,
119     NEXTFILE = 308,
120     ADD = 309,
121     MINUS = 310,
122     MULT = 311,
123     DIVIDE = 312,
124     MOD = 313,
125     ASSIGN = 314,
126     ASGNOP = 315,
127     ADDEQ = 316,
128     SUBEQ = 317,
129     MULTEQ = 318,
130     DIVEQ = 319,
131     MODEQ = 320,
132     POWEQ = 321,
133     PRINT = 322,
134     PRINTF = 323,
135     SPRINTF = 324,
136     ELSE = 325,
137     INTEST = 326,
138     CONDEXPR = 327,
139     POSTINCR = 328,
140     PREINCR = 329,
141     POSTDECR = 330,
142     PREDECR = 331,
143     VAR = 332,
144     IVAR = 333,
145     VARNF = 334,
146     CALL = 335,
147     NUMBER = 336,
148     STRING = 337,
149     REGEXPR = 338,
150     GETLINE = 339,
151     SUBSTR = 340,
152     SPLIT = 341,
153     RETURN = 342,
154     WHILE = 343,
155     CAT = 344,
156     UMINUS = 345,
157     NOT = 346,
158     POWER = 347,
159     INCR = 348,
160     DECR = 349,
161     INDIRECT = 350,
162     LASTTOKEN = 351
163   };
164#endif
165/* Tokens.  */
166#define FIRSTTOKEN 258
167#define PROGRAM 259
168#define PASTAT 260
169#define PASTAT2 261
170#define XBEGIN 262
171#define XEND 263
172#define NL 264
173#define ARRAY 265
174#define MATCH 266
175#define NOTMATCH 267
176#define MATCHOP 268
177#define FINAL 269
178#define DOT 270
179#define ALL 271
180#define CCL 272
181#define NCCL 273
182#define CHAR 274
183#define OR 275
184#define STAR 276
185#define QUEST 277
186#define PLUS 278
187#define EMPTYRE 279
188#define IGNORE_PRIOR_ATOM 280
189#define AND 281
190#define BOR 282
191#define APPEND 283
192#define EQ 284
193#define GE 285
194#define GT 286
195#define LE 287
196#define LT 288
197#define NE 289
198#define IN 290
199#define ARG 291
200#define BLTIN 292
201#define BREAK 293
202#define CLOSE 294
203#define CONTINUE 295
204#define DELETE 296
205#define DO 297
206#define EXIT 298
207#define FOR 299
208#define FUNC 300
209#define SUB 301
210#define GSUB 302
211#define IF 303
212#define INDEX 304
213#define LSUBSTR 305
214#define MATCHFCN 306
215#define NEXT 307
216#define NEXTFILE 308
217#define ADD 309
218#define MINUS 310
219#define MULT 311
220#define DIVIDE 312
221#define MOD 313
222#define ASSIGN 314
223#define ASGNOP 315
224#define ADDEQ 316
225#define SUBEQ 317
226#define MULTEQ 318
227#define DIVEQ 319
228#define MODEQ 320
229#define POWEQ 321
230#define PRINT 322
231#define PRINTF 323
232#define SPRINTF 324
233#define ELSE 325
234#define INTEST 326
235#define CONDEXPR 327
236#define POSTINCR 328
237#define PREINCR 329
238#define POSTDECR 330
239#define PREDECR 331
240#define VAR 332
241#define IVAR 333
242#define VARNF 334
243#define CALL 335
244#define NUMBER 336
245#define STRING 337
246#define REGEXPR 338
247#define GETLINE 339
248#define SUBSTR 340
249#define SPLIT 341
250#define RETURN 342
251#define WHILE 343
252#define CAT 344
253#define UMINUS 345
254#define NOT 346
255#define POWER 347
256#define INCR 348
257#define DECR 349
258#define INDIRECT 350
259#define LASTTOKEN 351
260
261
262
263
264/* Copy the first part of user declarations.  */
265#line 25 "awkgram.y"
266
267#include <stdio.h>
268#include <string.h>
269#include "awk.h"
270
271void checkdup(Node *list, Cell *item);
272int yywrap(void) { return(1); }
273
274Node	*beginloc = 0;
275Node	*endloc = 0;
276int	infunc	= 0;	/* = 1 if in arglist or body of func */
277int	inloop	= 0;	/* = 1 if in while, for, do */
278char	*curfname = 0;	/* current function name */
279Node	*arglist = 0;	/* list of args for current function */
280
281
282/* Enabling traces.  */
283#ifndef YYDEBUG
284# define YYDEBUG 0
285#endif
286
287/* Enabling verbose error messages.  */
288#ifdef YYERROR_VERBOSE
289# undef YYERROR_VERBOSE
290# define YYERROR_VERBOSE 1
291#else
292# define YYERROR_VERBOSE 0
293#endif
294
295/* Enabling the token table.  */
296#ifndef YYTOKEN_TABLE
297# define YYTOKEN_TABLE 0
298#endif
299
300#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
301typedef union YYSTYPE
302#line 41 "awkgram.y"
303{
304	Node	*p;
305	Cell	*cp;
306	int	i;
307	char	*s;
308}
309/* Line 193 of yacc.c.  */
310#line 311 "y.tab.c"
311	YYSTYPE;
312# define yystype YYSTYPE /* obsolescent; will be withdrawn */
313# define YYSTYPE_IS_DECLARED 1
314# define YYSTYPE_IS_TRIVIAL 1
315#endif
316
317
318
319/* Copy the second part of user declarations.  */
320
321
322/* Line 216 of yacc.c.  */
323#line 324 "y.tab.c"
324
325#ifdef short
326# undef short
327#endif
328
329#ifdef YYTYPE_UINT8
330typedef YYTYPE_UINT8 yytype_uint8;
331#else
332typedef unsigned char yytype_uint8;
333#endif
334
335#ifdef YYTYPE_INT8
336typedef YYTYPE_INT8 yytype_int8;
337#elif (defined __STDC__ || defined __C99__FUNC__ \
338     || defined __cplusplus || defined _MSC_VER)
339typedef signed char yytype_int8;
340#else
341typedef short int yytype_int8;
342#endif
343
344#ifdef YYTYPE_UINT16
345typedef YYTYPE_UINT16 yytype_uint16;
346#else
347typedef unsigned short int yytype_uint16;
348#endif
349
350#ifdef YYTYPE_INT16
351typedef YYTYPE_INT16 yytype_int16;
352#else
353typedef short int yytype_int16;
354#endif
355
356#ifndef YYSIZE_T
357# ifdef __SIZE_TYPE__
358#  define YYSIZE_T __SIZE_TYPE__
359# elif defined size_t
360#  define YYSIZE_T size_t
361# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
362     || defined __cplusplus || defined _MSC_VER)
363#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
364#  define YYSIZE_T size_t
365# else
366#  define YYSIZE_T unsigned int
367# endif
368#endif
369
370#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
371
372#ifndef YY_
373# if defined YYENABLE_NLS && YYENABLE_NLS
374#  if ENABLE_NLS
375#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
376#   define YY_(msgid) dgettext ("bison-runtime", msgid)
377#  endif
378# endif
379# ifndef YY_
380#  define YY_(msgid) msgid
381# endif
382#endif
383
384/* Suppress unused-variable warnings by "using" E.  */
385#if ! defined lint || defined __GNUC__
386# define YYUSE(e) ((void) (e))
387#else
388# define YYUSE(e) /* empty */
389#endif
390
391/* Identity function, used to suppress warnings about constant conditions.  */
392#ifndef lint
393# define YYID(n) (n)
394#else
395#if (defined __STDC__ || defined __C99__FUNC__ \
396     || defined __cplusplus || defined _MSC_VER)
397static int
398YYID (int i)
399#else
400static int
401YYID (i)
402    int i;
403#endif
404{
405  return i;
406}
407#endif
408
409#if ! defined yyoverflow || YYERROR_VERBOSE
410
411/* The parser invokes alloca or malloc; define the necessary symbols.  */
412
413# ifdef YYSTACK_USE_ALLOCA
414#  if YYSTACK_USE_ALLOCA
415#   ifdef __GNUC__
416#    define YYSTACK_ALLOC __builtin_alloca
417#   elif defined __BUILTIN_VA_ARG_INCR
418#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
419#   elif defined _AIX
420#    define YYSTACK_ALLOC __alloca
421#   elif defined _MSC_VER
422#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
423#    define alloca _alloca
424#   else
425#    define YYSTACK_ALLOC alloca
426#    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
427     || defined __cplusplus || defined _MSC_VER)
428#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
429#     ifndef _STDLIB_H
430#      define _STDLIB_H 1
431#     endif
432#    endif
433#   endif
434#  endif
435# endif
436
437# ifdef YYSTACK_ALLOC
438   /* Pacify GCC's `empty if-body' warning.  */
439#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
440#  ifndef YYSTACK_ALLOC_MAXIMUM
441    /* The OS might guarantee only one guard page at the bottom of the stack,
442       and a page size can be as small as 4096 bytes.  So we cannot safely
443       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
444       to allow for a few compiler-allocated temporary stack slots.  */
445#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
446#  endif
447# else
448#  define YYSTACK_ALLOC YYMALLOC
449#  define YYSTACK_FREE YYFREE
450#  ifndef YYSTACK_ALLOC_MAXIMUM
451#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
452#  endif
453#  if (defined __cplusplus && ! defined _STDLIB_H \
454       && ! ((defined YYMALLOC || defined malloc) \
455	     && (defined YYFREE || defined free)))
456#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
457#   ifndef _STDLIB_H
458#    define _STDLIB_H 1
459#   endif
460#  endif
461#  ifndef YYMALLOC
462#   define YYMALLOC malloc
463#   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
464     || defined __cplusplus || defined _MSC_VER)
465void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
466#   endif
467#  endif
468#  ifndef YYFREE
469#   define YYFREE free
470#   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
471     || defined __cplusplus || defined _MSC_VER)
472void free (void *); /* INFRINGES ON USER NAME SPACE */
473#   endif
474#  endif
475# endif
476#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
477
478
479#if (! defined yyoverflow \
480     && (! defined __cplusplus \
481	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
482
483/* A type that is properly aligned for any stack member.  */
484union yyalloc
485{
486  yytype_int16 yyss;
487  YYSTYPE yyvs;
488  };
489
490/* The size of the maximum gap between one aligned stack and the next.  */
491# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
492
493/* The size of an array large to enough to hold all stacks, each with
494   N elements.  */
495# define YYSTACK_BYTES(N) \
496     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
497      + YYSTACK_GAP_MAXIMUM)
498
499/* Copy COUNT objects from FROM to TO.  The source and destination do
500   not overlap.  */
501# ifndef YYCOPY
502#  if defined __GNUC__ && 1 < __GNUC__
503#   define YYCOPY(To, From, Count) \
504      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
505#  else
506#   define YYCOPY(To, From, Count)		\
507      do					\
508	{					\
509	  YYSIZE_T yyi;				\
510	  for (yyi = 0; yyi < (Count); yyi++)	\
511	    (To)[yyi] = (From)[yyi];		\
512	}					\
513      while (YYID (0))
514#  endif
515# endif
516
517/* Relocate STACK from its old location to the new one.  The
518   local variables YYSIZE and YYSTACKSIZE give the old and new number of
519   elements in the stack, and YYPTR gives the new location of the
520   stack.  Advance YYPTR to a properly aligned location for the next
521   stack.  */
522# define YYSTACK_RELOCATE(Stack)					\
523    do									\
524      {									\
525	YYSIZE_T yynewbytes;						\
526	YYCOPY (&yyptr->Stack, Stack, yysize);				\
527	Stack = &yyptr->Stack;						\
528	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
529	yyptr += yynewbytes / sizeof (*yyptr);				\
530      }									\
531    while (YYID (0))
532
533#endif
534
535/* YYFINAL -- State number of the termination state.  */
536#define YYFINAL  8
537/* YYLAST -- Last index in YYTABLE.  */
538#define YYLAST   4656
539
540/* YYNTOKENS -- Number of terminals.  */
541#define YYNTOKENS  113
542/* YYNNTS -- Number of nonterminals.  */
543#define YYNNTS  49
544/* YYNRULES -- Number of rules.  */
545#define YYNRULES  186
546/* YYNRULES -- Number of states.  */
547#define YYNSTATES  369
548
549/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
550#define YYUNDEFTOK  2
551#define YYMAXUTOK   351
552
553#define YYTRANSLATE(YYX)						\
554  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
555
556/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
557static const yytype_uint8 yytranslate[] =
558{
559       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
560       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
561       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
562       2,     2,     2,     2,     2,     2,     2,   105,     2,     2,
563      12,    16,   104,   102,     9,   103,     2,    15,     2,     2,
564       2,     2,     2,     2,     2,     2,     2,     2,    95,    14,
565       2,     2,     2,    94,     2,     2,     2,     2,     2,     2,
566       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
567       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
568       2,    18,     2,    19,     2,     2,     2,     2,     2,     2,
569       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
570       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
571       2,     2,     2,    11,    13,    17,     2,     2,     2,     2,
572       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
573       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
574       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
575       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
576       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
577       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
578       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
579       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
580       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
581       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
582       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
583       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
584       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
585       5,     6,     7,     8,    10,    20,    21,    22,    23,    24,
586      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
587      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
588      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
589      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
590      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
591      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
592      85,    86,    87,    88,    89,    90,    91,    92,    93,    96,
593      97,    98,    99,   100,   101,   106,   107,   108,   109,   110,
594     111,   112
595};
596
597#if YYDEBUG
598/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
599   YYRHS.  */
600static const yytype_uint16 yyprhs[] =
601{
602       0,     0,     3,     5,     7,     9,    12,    14,    17,    19,
603      22,    24,    27,    29,    32,    33,    46,    47,    58,    59,
604      68,    70,    72,    77,    79,    82,    84,    87,    88,    90,
605      91,    93,    94,    96,    98,   102,   104,   106,   111,   115,
606     122,   126,   131,   136,   137,   147,   149,   153,   155,   159,
607     163,   169,   173,   177,   181,   185,   189,   195,   198,   200,
608     202,   206,   212,   216,   220,   224,   228,   232,   236,   240,
609     244,   248,   252,   256,   262,   267,   271,   274,   276,   278,
610     282,   286,   288,   292,   293,   295,   299,   301,   303,   305,
611     307,   310,   313,   315,   318,   320,   323,   324,   329,   331,
612     334,   339,   344,   349,   352,   358,   361,   363,   365,   367,
613     370,   373,   376,   377,   378,   388,   392,   395,   397,   402,
614     405,   409,   412,   415,   419,   422,   425,   426,   430,   433,
615     435,   438,   440,   442,   447,   451,   455,   459,   463,   467,
616     471,   475,   478,   481,   484,   488,   493,   495,   499,   504,
617     507,   510,   513,   516,   519,   524,   528,   531,   533,   540,
618     547,   551,   558,   565,   567,   576,   585,   592,   597,   599,
619     606,   613,   622,   631,   640,   647,   649,   651,   656,   658,
620     661,   662,   664,   668,   670,   672,   674
621};
622
623/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
624static const yytype_int16 yyrhs[] =
625{
626     114,     0,    -1,   131,    -1,     1,    -1,    36,    -1,   115,
627      10,    -1,    37,    -1,   116,    10,    -1,     9,    -1,   117,
628      10,    -1,    52,    -1,   118,    10,    -1,    80,    -1,   119,
629      10,    -1,    -1,    54,    12,   130,    14,   128,   138,    14,
630     128,   130,   148,   121,   151,    -1,    -1,    54,    12,   130,
631      14,    14,   128,   130,   148,   122,   151,    -1,    -1,    54,
632      12,   160,    45,   160,   148,   123,   151,    -1,    87,    -1,
633      90,    -1,    58,    12,   138,   148,    -1,    11,    -1,   126,
634      10,    -1,    10,    -1,   127,    10,    -1,    -1,   127,    -1,
635      -1,   143,    -1,    -1,   149,    -1,   129,    -1,   129,   135,
636     129,    -1,   138,    -1,   132,    -1,   132,   126,   155,    17,
637      -1,   132,     9,   132,    -1,   132,     9,   132,   126,   155,
638      17,    -1,   126,   155,    17,    -1,     7,   126,   155,    17,
639      -1,     8,   126,   155,    17,    -1,    -1,    55,   124,    12,
640     159,   148,   134,   126,   155,    17,    -1,   133,    -1,   135,
641     129,   133,    -1,   138,    -1,   136,   117,   138,    -1,   158,
642      70,   137,    -1,   137,    94,   137,    95,   137,    -1,   137,
643     116,   137,    -1,   137,   115,   137,    -1,   137,    23,   146,
644      -1,   137,    23,   137,    -1,   137,    45,   160,    -1,    12,
645     139,    16,    45,   160,    -1,   137,   157,    -1,   145,    -1,
646     157,    -1,   158,    70,   138,    -1,   138,    94,   138,    95,
647     138,    -1,   138,   116,   138,    -1,   138,   115,   138,    -1,
648     138,    39,   138,    -1,   138,    40,   138,    -1,   138,    41,
649     138,    -1,   138,    42,   138,    -1,   138,    43,   138,    -1,
650     138,    44,   138,    -1,   138,    23,   146,    -1,   138,    23,
651     138,    -1,   138,    45,   160,    -1,    12,   139,    16,    45,
652     160,    -1,   138,    13,    96,   158,    -1,   138,    13,    96,
653      -1,   138,   157,    -1,   145,    -1,   157,    -1,   138,   117,
654     138,    -1,   139,   117,   138,    -1,   137,    -1,   140,   117,
655     137,    -1,    -1,   140,    -1,    12,   139,    16,    -1,    77,
656      -1,    78,    -1,    10,    -1,    14,    -1,   143,    10,    -1,
657     143,    14,    -1,    17,    -1,   144,    10,    -1,   146,    -1,
658     107,   145,    -1,    -1,    15,   147,    93,    15,    -1,    16,
659      -1,   148,    10,    -1,   142,   141,    13,   157,    -1,   142,
660     141,    38,   157,    -1,   142,   141,    41,   157,    -1,   142,
661     141,    -1,    51,   160,    18,   136,    19,    -1,    51,   160,
662      -1,   138,    -1,     1,    -1,   127,    -1,    14,   128,    -1,
663      48,   150,    -1,    50,   150,    -1,    -1,    -1,   118,   152,
664     151,   153,   100,    12,   138,    16,   150,    -1,    53,   138,
665     150,    -1,    53,   150,    -1,   120,    -1,   125,   151,   119,
666     151,    -1,   125,   151,    -1,   126,   155,   144,    -1,    62,
667     150,    -1,    63,   150,    -1,    99,   138,   150,    -1,    99,
668     150,    -1,   149,   150,    -1,    -1,   161,   154,   151,    -1,
669      14,   128,    -1,   151,    -1,   155,   151,    -1,    56,    -1,
670      57,    -1,   157,    15,    70,   157,    -1,   157,   102,   157,
671      -1,   157,   103,   157,    -1,   157,   104,   157,    -1,   157,
672      15,   157,    -1,   145,    15,   157,    -1,   157,   105,   157,
673      -1,   157,   108,   157,    -1,   103,   157,    -1,   102,   157,
674      -1,   107,   157,    -1,    47,    12,    16,    -1,    47,    12,
675     136,    16,    -1,    47,    -1,    90,    12,    16,    -1,    90,
676      12,   136,    16,    -1,    49,   157,    -1,   110,   158,    -1,
677     109,   158,    -1,   158,   110,    -1,   158,   109,    -1,    96,
678     158,    43,   157,    -1,    96,    43,   157,    -1,    96,   158,
679      -1,    96,    -1,    59,    12,   138,   117,   138,    16,    -1,
680      59,    12,   138,   117,   146,    16,    -1,    12,   138,    16,
681      -1,    61,    12,   138,   117,   146,    16,    -1,    61,    12,
682     138,   117,   138,    16,    -1,    91,    -1,    98,    12,   138,
683     117,   160,   117,   138,    16,    -1,    98,    12,   138,   117,
684     160,   117,   146,    16,    -1,    98,    12,   138,   117,   160,
685      16,    -1,    79,    12,   136,    16,    -1,    92,    -1,   156,
686      12,   146,   117,   138,    16,    -1,   156,    12,   138,   117,
687     138,    16,    -1,   156,    12,   146,   117,   138,   117,   158,
688      16,    -1,   156,    12,   138,   117,   138,   117,   158,    16,
689      -1,    97,    12,   138,   117,   138,   117,   138,    16,    -1,
690      97,    12,   138,   117,   138,    16,    -1,   158,    -1,   160,
691      -1,   160,    18,   136,    19,    -1,    88,    -1,   111,   157,
692      -1,    -1,    87,    -1,   159,   117,    87,    -1,    87,    -1,
693      46,    -1,    89,    -1,   100,    12,   138,   148,    -1
694};
695
696/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
697static const yytype_uint16 yyrline[] =
698{
699       0,    98,    98,   100,   104,   104,   108,   108,   112,   112,
700     116,   116,   120,   120,   124,   124,   126,   126,   128,   128,
701     133,   134,   138,   142,   142,   146,   146,   150,   151,   155,
702     156,   161,   162,   166,   167,   171,   175,   176,   177,   178,
703     179,   180,   182,   184,   184,   189,   190,   194,   195,   199,
704     200,   202,   204,   206,   207,   212,   213,   214,   215,   216,
705     220,   221,   223,   225,   227,   228,   229,   230,   231,   232,
706     233,   234,   239,   240,   241,   244,   247,   248,   249,   253,
707     254,   258,   259,   263,   264,   265,   269,   269,   273,   273,
708     273,   273,   277,   277,   281,   283,   287,   287,   291,   291,
709     295,   298,   301,   304,   305,   306,   307,   308,   312,   313,
710     317,   319,   321,   321,   321,   323,   324,   325,   326,   327,
711     328,   329,   332,   335,   336,   337,   338,   338,   339,   343,
712     344,   348,   348,   352,   353,   354,   355,   356,   357,   358,
713     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
714     369,   370,   371,   372,   373,   374,   375,   376,   377,   379,
715     382,   383,   385,   390,   391,   393,   395,   397,   398,   399,
716     401,   406,   408,   413,   415,   417,   421,   422,   423,   424,
717     428,   429,   430,   436,   437,   438,   443
718};
719#endif
720
721#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
722/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
723   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
724static const char *const yytname[] =
725{
726  "$end", "error", "$undefined", "FIRSTTOKEN", "PROGRAM", "PASTAT",
727  "PASTAT2", "XBEGIN", "XEND", "','", "NL", "'{'", "'('", "'|'", "';'",
728  "'/'", "')'", "'}'", "'['", "']'", "ARRAY", "MATCH", "NOTMATCH",
729  "MATCHOP", "FINAL", "DOT", "ALL", "CCL", "NCCL", "CHAR", "OR", "STAR",
730  "QUEST", "PLUS", "EMPTYRE", "IGNORE_PRIOR_ATOM", "AND", "BOR", "APPEND",
731  "EQ", "GE", "GT", "LE", "LT", "NE", "IN", "ARG", "BLTIN", "BREAK",
732  "CLOSE", "CONTINUE", "DELETE", "DO", "EXIT", "FOR", "FUNC", "SUB",
733  "GSUB", "IF", "INDEX", "LSUBSTR", "MATCHFCN", "NEXT", "NEXTFILE", "ADD",
734  "MINUS", "MULT", "DIVIDE", "MOD", "ASSIGN", "ASGNOP", "ADDEQ", "SUBEQ",
735  "MULTEQ", "DIVEQ", "MODEQ", "POWEQ", "PRINT", "PRINTF", "SPRINTF",
736  "ELSE", "INTEST", "CONDEXPR", "POSTINCR", "PREINCR", "POSTDECR",
737  "PREDECR", "VAR", "IVAR", "VARNF", "CALL", "NUMBER", "STRING", "REGEXPR",
738  "'?'", "':'", "GETLINE", "SUBSTR", "SPLIT", "RETURN", "WHILE", "CAT",
739  "'+'", "'-'", "'*'", "'%'", "UMINUS", "NOT", "POWER", "INCR", "DECR",
740  "INDIRECT", "LASTTOKEN", "$accept", "program", "and", "bor", "comma",
741  "do", "else", "for", "@1", "@2", "@3", "funcname", "if", "lbrace", "nl",
742  "opt_nl", "opt_pst", "opt_simple_stmt", "pas", "pa_pat", "pa_stat", "@4",
743  "pa_stats", "patlist", "ppattern", "pattern", "plist", "pplist", "prarg",
744  "print", "pst", "rbrace", "re", "reg_expr", "@5", "rparen",
745  "simple_stmt", "st", "stmt", "@6", "@7", "@8", "stmtlist", "subop",
746  "term", "var", "varlist", "varname", "while", 0
747};
748#endif
749
750# ifdef YYPRINT
751/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
752   token YYLEX-NUM.  */
753static const yytype_uint16 yytoknum[] =
754{
755       0,   256,   257,   258,   259,   260,   261,   262,   263,    44,
756     264,   123,    40,   124,    59,    47,    41,   125,    91,    93,
757     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
758     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
759     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
760     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
761     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
762     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
763     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
764     335,   336,   337,   338,    63,    58,   339,   340,   341,   342,
765     343,   344,    43,    45,    42,    37,   345,   346,   347,   348,
766     349,   350,   351
767};
768# endif
769
770/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
771static const yytype_uint8 yyr1[] =
772{
773       0,   113,   114,   114,   115,   115,   116,   116,   117,   117,
774     118,   118,   119,   119,   121,   120,   122,   120,   123,   120,
775     124,   124,   125,   126,   126,   127,   127,   128,   128,   129,
776     129,   130,   130,   131,   131,   132,   133,   133,   133,   133,
777     133,   133,   133,   134,   133,   135,   135,   136,   136,   137,
778     137,   137,   137,   137,   137,   137,   137,   137,   137,   137,
779     138,   138,   138,   138,   138,   138,   138,   138,   138,   138,
780     138,   138,   138,   138,   138,   138,   138,   138,   138,   139,
781     139,   140,   140,   141,   141,   141,   142,   142,   143,   143,
782     143,   143,   144,   144,   145,   145,   147,   146,   148,   148,
783     149,   149,   149,   149,   149,   149,   149,   149,   150,   150,
784     151,   151,   152,   153,   151,   151,   151,   151,   151,   151,
785     151,   151,   151,   151,   151,   151,   154,   151,   151,   155,
786     155,   156,   156,   157,   157,   157,   157,   157,   157,   157,
787     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
788     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
789     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
790     157,   157,   157,   157,   157,   157,   158,   158,   158,   158,
791     159,   159,   159,   160,   160,   160,   161
792};
793
794/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
795static const yytype_uint8 yyr2[] =
796{
797       0,     2,     1,     1,     1,     2,     1,     2,     1,     2,
798       1,     2,     1,     2,     0,    12,     0,    10,     0,     8,
799       1,     1,     4,     1,     2,     1,     2,     0,     1,     0,
800       1,     0,     1,     1,     3,     1,     1,     4,     3,     6,
801       3,     4,     4,     0,     9,     1,     3,     1,     3,     3,
802       5,     3,     3,     3,     3,     3,     5,     2,     1,     1,
803       3,     5,     3,     3,     3,     3,     3,     3,     3,     3,
804       3,     3,     3,     5,     4,     3,     2,     1,     1,     3,
805       3,     1,     3,     0,     1,     3,     1,     1,     1,     1,
806       2,     2,     1,     2,     1,     2,     0,     4,     1,     2,
807       4,     4,     4,     2,     5,     2,     1,     1,     1,     2,
808       2,     2,     0,     0,     9,     3,     2,     1,     4,     2,
809       3,     2,     2,     3,     2,     2,     0,     3,     2,     1,
810       2,     1,     1,     4,     3,     3,     3,     3,     3,     3,
811       3,     2,     2,     2,     3,     4,     1,     3,     4,     2,
812       2,     2,     2,     2,     4,     3,     2,     1,     6,     6,
813       3,     6,     6,     1,     8,     8,     6,     4,     1,     6,
814       6,     8,     8,     8,     6,     1,     1,     4,     1,     2,
815       0,     1,     3,     1,     1,     1,     4
816};
817
818/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
819   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
820   means the default is an error.  */
821static const yytype_uint8 yydefact[] =
822{
823       0,     3,    88,    89,     0,    33,     2,    30,     1,     0,
824       0,    23,     0,    96,   184,   146,     0,     0,   131,   132,
825       0,     0,     0,   183,   178,   185,     0,   163,   168,   157,
826       0,     0,     0,     0,     0,     0,     0,     0,     0,    36,
827      45,    29,    35,    77,    94,     0,    78,   175,   176,    90,
828      91,     0,     0,     0,     0,     0,     0,     0,     0,   149,
829     175,    20,    21,     0,     0,     0,     0,     0,     0,   156,
830       0,     0,   142,   141,    95,   143,   151,   150,   179,   107,
831      24,    27,     0,     0,     0,    10,     0,     0,     0,     0,
832       0,    86,    87,     0,     0,   112,   117,     0,     0,   106,
833      83,     0,   129,     0,   126,     0,     0,    34,     0,     0,
834       4,     6,     0,     0,     0,     0,     0,     0,     0,     0,
835       0,     0,    76,     0,     0,     0,     0,     0,     0,     0,
836       0,     0,   153,   152,     0,     0,     0,     8,   160,     0,
837       0,     0,     0,   144,     0,    47,     0,   180,     0,     0,
838       0,   147,     0,   155,     0,     0,     0,    25,    28,   128,
839      27,   108,   110,   111,   105,     0,   116,     0,     0,   121,
840     122,     0,   124,     0,    11,     0,   119,     0,     0,    81,
841      84,   103,    58,    59,   175,   125,    40,   130,     0,    38,
842       0,    46,    75,    71,    70,    64,    65,    66,    67,    68,
843      69,    72,     0,     5,    63,     7,    62,   138,     0,    94,
844       0,   137,   134,   135,   136,   139,   140,    60,     0,    41,
845      42,     9,    79,     0,    80,    97,   145,     0,   181,     0,
846       0,     0,   167,   148,   154,     0,     0,    26,   109,     0,
847     115,     0,    32,   176,     0,   123,     0,   113,    12,     0,
848      92,   120,     0,     0,     0,     0,     0,     0,    57,     0,
849       0,     0,     0,     0,   127,     0,    37,    74,     0,     0,
850       0,   133,   177,    73,    48,    98,     0,    43,     0,    94,
851       0,    94,     0,     0,     0,    27,     0,    22,   186,     0,
852      13,   118,    93,    85,     0,    54,    53,    55,     0,    52,
853      51,    82,   100,   101,   102,    49,     0,    61,     0,     0,
854     182,    99,     0,   158,   159,   162,   161,   174,     0,   166,
855       0,   104,    27,     0,     0,     0,     0,     0,     0,    39,
856     170,     0,   169,     0,     0,     0,     0,    94,     0,     0,
857      18,     0,    56,     0,    50,     0,     0,     0,   173,   164,
858     165,     0,    27,     0,     0,   172,   171,    44,    16,     0,
859      19,     0,     0,     0,   114,    17,    14,     0,    15
860};
861
862/* YYDEFGOTO[NTERM-NUM].  */
863static const yytype_int16 yydefgoto[] =
864{
865      -1,     4,   120,   121,   227,    95,   249,    96,   367,   362,
866     353,    63,    97,    98,   161,   159,     5,   241,     6,    39,
867      40,   312,    41,   144,   179,    99,    54,   180,   181,   100,
868       7,   251,    43,    44,    55,   277,   101,   162,   102,   175,
869     289,   188,   103,    45,    46,    47,   229,    48,   104
870};
871
872/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
873   STATE-NUM.  */
874#define YYPACT_NINF -311
875static const yytype_int16 yypact[] =
876{
877     744,  -311,  -311,  -311,    24,  1630,  -311,   109,  -311,    22,
878      22,  -311,  4427,  -311,  -311,    29,  4452,   -14,  -311,  -311,
879      53,    70,    75,  -311,  -311,  -311,    96,  -311,  -311,   164,
880     108,   110,  4452,  4452,  4452,    15,    15,  4452,   847,    81,
881    -311,   144,  3646,   116,  -311,   113,    -9,   -38,   118,  -311,
882    -311,   847,   847,  1733,     6,    41,  3807,  4427,   116,    -9,
883      -4,  -311,  -311,   133,  4427,  4427,  4427,  4250,  4452,   103,
884    4427,  4427,    40,    40,  -311,    40,  -311,  -311,  -311,  -311,
885    -311,   149,   146,   146,   -34,  -311,  2306,   158,   161,   146,
886     146,  -311,  -311,  2306,   163,   168,  -311,  1469,   847,  3646,
887    4520,   146,  -311,   916,  -311,  4427,   847,  1630,    89,  4427,
888    -311,  -311,  4427,  4427,  4427,  4427,  4427,  4427,   -34,  4427,
889    2365,  2424,    -9,  4452,  4427,  4309,  4452,  4452,  4452,  4452,
890    4452,  4427,  -311,  -311,  4427,   985,  1054,  -311,  -311,  2483,
891     150,  2483,   184,  -311,    47,  3646,  2760,   117,  2145,  2145,
892      59,  -311,    61,    -9,  4452,  2145,  2145,  -311,   190,  -311,
893     149,   190,  -311,  -311,   185,  2247,  -311,  1537,  4427,  -311,
894    -311,  2247,  -311,  4427,  -311,  1469,   125,  1123,  4427,  4073,
895     203,    10,   116,    -9,   -30,  -311,  -311,  -311,  1469,    22,
896    1192,  -311,    15,  3925,  -311,  3925,  3925,  3925,  3925,  3925,
897    3925,  -311,  2853,  -311,  3832,  -311,  3739,    40,  2145,   203,
898    4452,    40,    -7,    -7,    40,    40,    40,  3646,    25,  -311,
899    -311,  -311,  3646,   -34,  3646,  -311,  -311,  2483,  -311,    69,
900    2483,  2483,  -311,  -311,    -9,  2483,    28,  -311,  -311,  4427,
901    -311,   206,  -311,    17,  2953,  -311,  2953,  -311,  -311,  1262,
902    -311,   214,    72,  4545,   -34,  4545,  2542,  2601,    -9,  2660,
903    4452,  4452,  4452,  4545,  -311,   847,  -311,  -311,  4427,  2483,
904    2483,    -9,  -311,  -311,  3646,  -311,     4,   215,  3053,   210,
905    3153,   211,  1836,   128,    38,   177,   -34,   215,   215,   129,
906    -311,  -311,  -311,   186,  4427,  4368,  -311,  -311,  3984,  4191,
907    4132,  4073,    -9,    -9,    -9,  4073,  1331,  3646,  1939,  2042,
908    -311,  -311,    22,  -311,  -311,  -311,  -311,  -311,  2483,  -311,
909    2483,  -311,   149,  4427,   216,   221,   -34,   155,  4545,  -311,
910    -311,    54,  -311,    54,   847,  3253,  3353,   219,  1605,  3453,
911     215,  4427,  -311,   186,  4073,   220,   222,  1400,  -311,  -311,
912    -311,   216,   149,  1469,  3553,  -311,  -311,  -311,   215,  1605,
913    -311,   146,  1469,   216,  -311,  -311,   215,  1469,  -311
914};
915
916/* YYPGOTO[NTERM-NUM].  */
917static const yytype_int16 yypgoto[] =
918{
919    -311,  -311,  -148,   152,    13,  -311,  -311,  -311,  -311,  -311,
920    -311,  -311,  -311,    20,   -74,  -150,   213,  -310,  -311,   154,
921     148,  -311,  -311,   -65,    14,   550,  -173,  -311,  -311,  -311,
922    -311,  -311,   181,   -64,  -311,  -235,  -140,   -47,   395,  -311,
923    -311,  -311,   -48,  -311,   378,   -16,  -311,   132,  -311
924};
925
926/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
927   positive, shift that token.  If negative, reduce the rule which
928   number is the opposite.  If zero, do what YYDEFACT says.
929   If YYTABLE_NINF, syntax error.  */
930#define YYTABLE_NINF -32
931static const yytype_int16 yytable[] =
932{
933      60,   150,   152,   135,   136,   252,   125,   158,   125,   287,
934     238,   288,    14,    69,   221,   137,    60,    60,    60,    76,
935      77,    60,   140,   260,     8,    38,    60,   242,   351,    51,
936      52,   256,   131,    11,   137,   134,   163,    60,   221,   166,
937     263,    56,   169,   170,   272,   194,   172,   137,   261,   363,
938     177,   262,    60,    23,   185,    25,   137,   321,   190,   106,
939     209,    14,   286,   226,   221,    64,   139,   141,   137,   218,
940     137,   132,   133,    61,    14,   232,    62,   233,   137,   132,
941     133,   137,    65,    60,   184,   275,   158,    66,   293,   340,
942     105,   310,    11,   126,   127,   128,   129,   128,   129,   130,
943      14,   130,    23,    24,    25,   132,   133,    60,    67,    60,
944      60,    60,    60,    60,    60,    23,   358,    25,   240,    49,
945      70,   327,    71,    50,   245,   124,    37,    38,   366,    60,
946      60,   123,    60,    60,   142,   323,   134,   137,    60,    60,
947      60,    23,    24,    25,   319,   147,   154,   256,   130,    60,
948     256,   256,   256,   256,     2,    60,   157,   256,     3,   157,
949     160,   230,   231,    60,   137,    37,   279,   281,   235,   236,
950     167,   343,   338,   168,   284,   173,   267,    60,   174,    60,
951      60,    60,    60,    60,    60,   192,    60,   157,    60,   296,
952      60,   322,    60,   259,    60,   223,   256,    58,   242,   225,
953     237,    60,   359,   239,   228,   248,    60,    68,    60,   265,
954      14,   158,   137,    58,    58,    74,   164,   306,    58,   242,
955     285,   269,   270,    58,   292,   311,   314,   316,    60,   325,
956      60,   326,   275,   341,    58,   350,   355,   184,   356,   184,
957     184,   184,   276,   184,    60,    60,    60,   184,   158,    58,
958     201,    23,    24,    25,   107,   191,   337,     0,    60,   189,
959       0,     0,    60,     0,    60,   141,    60,   295,     0,   298,
960     299,   300,     0,   301,     0,    37,     0,   305,   158,    60,
961      58,   182,    60,    60,    60,    60,   347,     0,     0,    60,
962       0,    60,    60,    60,     0,   318,   320,     0,     0,   243,
963       0,     0,     0,     0,    58,     0,    58,    58,    58,    58,
964      58,    58,   184,     0,   364,   345,     0,   346,     0,    60,
965      60,   331,   333,    60,     0,     0,    58,    58,    60,    58,
966      58,   257,   334,     0,     0,    58,    58,    58,    60,     0,
967     141,     0,   344,     0,     0,     0,    58,     0,     0,     0,
968       0,     0,    58,     0,     0,   273,     0,     0,     0,     0,
969      58,     0,     0,     0,     0,     0,     0,     0,   283,     0,
970       0,     0,     0,     0,    58,     0,    58,    58,    58,    58,
971      58,    58,     0,    58,     0,    58,   297,    58,     0,    58,
972       0,    58,     0,     0,    59,     0,     0,     0,    58,     0,
973       0,     0,     0,    58,     0,    58,     0,     0,     0,     0,
974      72,    73,    75,     0,     0,    78,     0,     0,   324,     0,
975     122,     0,     0,     0,     0,    58,     0,    58,     0,     0,
976       0,   122,     0,     0,   182,     0,   182,   182,   182,     0,
977     182,    58,    58,    58,   182,     0,   153,   257,     0,     0,
978     257,   257,   257,   257,     0,    58,     0,   257,   342,    58,
979       0,    58,     0,    58,     0,     0,     0,     0,     0,     0,
980       0,     0,     0,     0,     0,     0,    58,   122,   183,    58,
981      58,    58,    58,     0,     0,     0,    58,     0,    58,    58,
982      58,     0,   176,     0,     0,     0,   257,     0,   187,     0,
983       0,   207,     0,   211,   212,   213,   214,   215,   216,   182,
984       0,     0,     0,     0,     0,     0,    58,    58,     0,     0,
985      58,     0,     0,   122,   122,    58,   122,   122,     0,     0,
986     187,   187,   234,   122,   122,    58,     0,     0,     0,     0,
987       0,     0,     0,   122,     0,     0,     0,     0,     0,   122,
988       0,     0,     0,     0,     0,    42,     0,   258,     0,     0,
989       0,     0,    53,     0,     0,     0,     0,     0,     0,     0,
990     247,   122,   187,   122,   122,   122,   122,   122,   122,     0,
991     122,     0,   122,   264,   122,   187,   122,     0,   271,     0,
992       0,     0,     0,     0,     0,   122,     0,     0,     0,     0,
993     122,     0,   122,     0,     0,     0,   145,   146,     0,     0,
994       0,     0,     0,     0,   148,   149,   145,   145,     0,     0,
995     155,   156,   122,     0,   122,     0,     0,     0,     0,     0,
996       0,   183,     0,   183,   183,   183,   165,   183,   302,   303,
997     304,   183,     0,   171,   291,     0,     0,     0,     0,     0,
998       0,     0,   122,     0,     0,    42,   122,    42,   122,   193,
999     122,     0,   195,   196,   197,   198,   199,   200,     0,   202,
1000     204,   206,     0,   258,   208,     0,   258,   258,   258,   258,
1001       0,   217,     0,   258,   145,   122,   122,   122,     0,   222,
1002       0,   224,     0,     0,     0,     0,     0,     0,     0,     0,
1003       0,   187,     0,     0,     0,     0,   183,     0,     0,     0,
1004       0,     0,     0,   122,   122,     0,     0,   122,   244,     0,
1005       0,     0,   258,   246,     0,     0,     0,     0,    53,     0,
1006       0,     0,   122,     0,     0,     0,     0,     0,     0,     0,
1007       0,     0,   187,     0,   -29,     1,     0,     0,   360,     0,
1008       0,   -29,   -29,     0,     2,   -29,   -29,   365,     3,   -29,
1009       0,     0,   368,     0,     0,     0,     0,     0,     0,     0,
1010       0,     0,     0,     0,     0,     0,     0,   274,     0,     0,
1011     278,   280,     0,     0,     0,   282,     0,     0,     0,   145,
1012     -29,   -29,     0,   -29,     0,     0,     0,     0,     0,   -29,
1013     -29,   -29,     0,   -29,     0,   -29,     0,     0,     0,     0,
1014       0,     0,     0,     0,     0,     0,     0,     0,   307,   308,
1015     309,     0,     0,   -29,     0,     0,     0,     0,     0,     0,
1016       0,   -29,   -29,   -29,   -29,   -29,   -29,     0,     0,     0,
1017     -29,   -29,   -29,     0,    53,     0,   -29,   -29,    79,     0,
1018       0,   -29,     0,   -29,   -29,   -29,     0,    80,    11,    12,
1019       0,    81,    13,     0,     0,     0,     0,     0,   335,     0,
1020     336,     0,     0,   339,     0,     0,     0,     0,     0,     0,
1021       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1022       0,   354,     0,    14,    15,    82,    16,    83,    84,    85,
1023      86,    87,     0,    18,    19,    88,    20,     0,    21,    89,
1024      90,     0,     0,     0,     0,     0,     0,    79,     0,     0,
1025       0,     0,     0,     0,    91,    92,    22,    11,    12,     0,
1026      81,    13,     0,   186,    23,    24,    25,    26,    27,    28,
1027       0,     0,     0,    29,    30,    31,    93,    94,     0,    32,
1028      33,     0,     0,     0,    34,     0,    35,    36,    37,     0,
1029       0,     0,    14,    15,    82,    16,    83,    84,    85,    86,
1030      87,     0,    18,    19,    88,    20,     0,    21,    89,    90,
1031       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
1032       0,     0,     0,    91,    92,    22,    11,    12,     0,    81,
1033      13,     0,   219,    23,    24,    25,    26,    27,    28,     0,
1034       0,     0,    29,    30,    31,    93,    94,     0,    32,    33,
1035       0,     0,     0,    34,     0,    35,    36,    37,     0,     0,
1036       0,    14,    15,    82,    16,    83,    84,    85,    86,    87,
1037       0,    18,    19,    88,    20,     0,    21,    89,    90,     0,
1038       0,     0,     0,     0,     0,    79,     0,     0,     0,     0,
1039       0,     0,    91,    92,    22,    11,    12,     0,    81,    13,
1040       0,   220,    23,    24,    25,    26,    27,    28,     0,     0,
1041       0,    29,    30,    31,    93,    94,     0,    32,    33,     0,
1042       0,     0,    34,     0,    35,    36,    37,     0,     0,     0,
1043      14,    15,    82,    16,    83,    84,    85,    86,    87,     0,
1044      18,    19,    88,    20,     0,    21,    89,    90,     0,     0,
1045       0,     0,     0,     0,    79,     0,     0,     0,     0,     0,
1046       0,    91,    92,    22,    11,    12,     0,    81,    13,     0,
1047     250,    23,    24,    25,    26,    27,    28,     0,     0,     0,
1048      29,    30,    31,    93,    94,     0,    32,    33,     0,     0,
1049       0,    34,     0,    35,    36,    37,     0,     0,     0,    14,
1050      15,    82,    16,    83,    84,    85,    86,    87,     0,    18,
1051      19,    88,    20,     0,    21,    89,    90,     0,     0,     0,
1052       0,     0,     0,    79,     0,     0,     0,     0,     0,     0,
1053      91,    92,    22,    11,    12,     0,    81,    13,     0,   266,
1054      23,    24,    25,    26,    27,    28,     0,     0,     0,    29,
1055      30,    31,    93,    94,     0,    32,    33,     0,     0,     0,
1056      34,     0,    35,    36,    37,     0,     0,     0,    14,    15,
1057      82,    16,    83,    84,    85,    86,    87,     0,    18,    19,
1058      88,    20,     0,    21,    89,    90,     0,     0,     0,     0,
1059       0,     0,     0,    79,     0,     0,     0,     0,     0,    91,
1060      92,    22,   290,    11,    12,     0,    81,    13,     0,    23,
1061      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1062      31,    93,    94,     0,    32,    33,     0,     0,     0,    34,
1063       0,    35,    36,    37,     0,     0,     0,     0,    14,    15,
1064      82,    16,    83,    84,    85,    86,    87,     0,    18,    19,
1065      88,    20,     0,    21,    89,    90,     0,     0,     0,     0,
1066       0,     0,    79,     0,     0,     0,     0,     0,     0,    91,
1067      92,    22,    11,    12,     0,    81,    13,     0,   329,    23,
1068      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1069      31,    93,    94,     0,    32,    33,     0,     0,     0,    34,
1070       0,    35,    36,    37,     0,     0,     0,    14,    15,    82,
1071      16,    83,    84,    85,    86,    87,     0,    18,    19,    88,
1072      20,     0,    21,    89,    90,     0,     0,     0,     0,     0,
1073       0,    79,     0,     0,     0,     0,     0,     0,    91,    92,
1074      22,    11,    12,     0,    81,    13,     0,   357,    23,    24,
1075      25,    26,    27,    28,     0,     0,     0,    29,    30,    31,
1076      93,    94,     0,    32,    33,     0,     0,     0,    34,     0,
1077      35,    36,    37,     0,     0,     0,    14,    15,    82,    16,
1078      83,    84,    85,    86,    87,     0,    18,    19,    88,    20,
1079       0,    21,    89,    90,     0,     0,     0,     0,     0,     0,
1080      79,     0,     0,     0,     0,     0,     0,    91,    92,    22,
1081      11,    12,     0,    81,    13,     0,     0,    23,    24,    25,
1082      26,    27,    28,     0,     0,     0,    29,    30,    31,    93,
1083      94,     0,    32,    33,     0,     0,     0,    34,     0,    35,
1084      36,    37,     0,     0,     0,    14,    15,    82,    16,    83,
1085      84,    85,    86,    87,     0,    18,    19,    88,    20,     0,
1086      21,    89,    90,     0,     0,     0,     0,     0,    79,     0,
1087       0,     0,     0,     0,     0,     0,    91,    92,    22,    12,
1088       0,   -31,    13,     0,     0,     0,    23,    24,    25,    26,
1089      27,    28,     0,     0,     0,    29,    30,    31,    93,    94,
1090       0,    32,    33,     0,     0,     0,    34,     0,    35,    36,
1091      37,     0,     0,    14,    15,     0,    16,     0,    84,     0,
1092       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1093       0,     0,     0,     0,     0,     0,    79,     0,     0,     0,
1094       0,     0,     0,     0,    91,    92,    22,    12,     0,     0,
1095      13,   -31,     0,     0,    23,    24,    25,    26,    27,    28,
1096       0,     0,     0,    29,    30,    31,     0,     9,    10,    32,
1097      33,    11,    12,     0,    34,    13,    35,    36,    37,     0,
1098       0,    14,    15,     0,    16,     0,    84,     0,     0,     0,
1099       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1100       0,     0,     0,     0,     0,     0,    14,    15,     0,    16,
1101       0,     0,    91,    92,    22,    17,    18,    19,     0,    20,
1102       0,    21,    23,    24,    25,    26,    27,    28,     0,     0,
1103       0,    29,    30,    31,     0,     0,     0,    32,    33,    22,
1104       0,     0,    34,     0,    35,    36,    37,    23,    24,    25,
1105      26,    27,    28,     0,     0,     0,    29,    30,    31,     0,
1106       0,     0,    32,    33,     0,     0,     0,    34,     0,    35,
1107      36,    37,   137,     0,     0,    57,   108,     0,    13,   138,
1108       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1109       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1110     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1111      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1112      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1113       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1114       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1115      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1116      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1117      34,     0,    35,    36,    37,   137,     0,     0,    57,   108,
1118       0,    13,   317,     0,     0,     0,     0,     0,     0,   109,
1119       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1120       0,     0,   110,   111,     0,   112,   113,   114,   115,   116,
1121     117,   118,    14,    15,     0,    16,     0,     0,     0,     0,
1122       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
1123       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1124       0,     0,     0,     0,     0,    22,     0,     0,     0,     0,
1125       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1126     119,     0,    29,    30,    31,     0,     0,     0,    32,    33,
1127       0,     0,     0,    34,     0,    35,    36,    37,   137,     0,
1128       0,    57,   108,     0,    13,   330,     0,     0,     0,     0,
1129       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
1130       0,     0,     0,     0,     0,   110,   111,     0,   112,   113,
1131     114,   115,   116,   117,   118,    14,    15,     0,    16,     0,
1132       0,     0,     0,     0,     0,    18,    19,     0,    20,     0,
1133      21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1134       0,     0,     0,     0,     0,     0,     0,     0,    22,     0,
1135       0,     0,     0,     0,     0,     0,    23,    24,    25,    26,
1136      27,    28,     0,   119,     0,    29,    30,    31,     0,     0,
1137       0,    32,    33,     0,     0,     0,    34,     0,    35,    36,
1138      37,   137,     0,     0,    57,   108,     0,    13,   332,     0,
1139       0,     0,     0,     0,     0,   109,     0,     0,     0,     0,
1140       0,     0,     0,     0,     0,     0,     0,     0,   110,   111,
1141       0,   112,   113,   114,   115,   116,   117,   118,    14,    15,
1142       0,    16,     0,     0,     0,     0,     0,     0,    18,    19,
1143       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1144       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1145       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1146      24,    25,    26,    27,    28,     0,   119,     0,    29,    30,
1147      31,     0,     0,     0,    32,    33,     0,     0,     0,    34,
1148       0,    35,    36,    37,   137,     0,     0,    57,   108,     0,
1149      13,     0,     0,     0,     0,     0,     0,     0,   109,     0,
1150       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1151       0,   110,   111,     0,   112,   113,   114,   115,   116,   117,
1152     118,    14,    15,     0,    16,     0,     0,     0,     0,     0,
1153       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1154       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1155       0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
1156       0,     0,    23,    24,    25,    26,    27,    28,     0,   119,
1157       0,    29,    30,    31,     0,     0,     0,    32,    33,     0,
1158       0,     0,    34,     0,    35,    36,    37,   157,     0,    57,
1159     108,   160,    13,     0,     0,     0,     0,     0,     0,     0,
1160     109,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1161       0,     0,     0,   110,   111,     0,   112,   113,   114,   115,
1162     116,   117,   118,    14,    15,     0,    16,     0,     0,     0,
1163       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1164       0,     0,     0,     0,     0,     0,   157,     0,    12,     0,
1165     160,    13,     0,     0,     0,     0,    22,     0,     0,     0,
1166       0,     0,     0,     0,    23,    24,    25,    26,    27,    28,
1167       0,   119,     0,    29,    30,    31,     0,     0,     0,    32,
1168      33,     0,    14,    15,    34,    16,    35,    36,    37,     0,
1169       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
1170       0,     0,     0,     0,     0,   203,     0,    12,     0,     0,
1171      13,     0,     0,     0,     0,    22,     0,     0,     0,     0,
1172       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1173       0,     0,    29,    30,    31,     0,     0,     0,    32,    33,
1174       0,    14,    15,    34,    16,    35,    36,    37,     0,     0,
1175       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1176       0,     0,     0,     0,   205,     0,    12,     0,     0,    13,
1177       0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
1178       0,     0,    23,    24,    25,    26,    27,    28,     0,     0,
1179       0,    29,    30,    31,     0,     0,     0,    32,    33,     0,
1180      14,    15,    34,    16,    35,    36,    37,     0,     0,     0,
1181      18,    19,     0,    20,     0,    21,     0,     0,     0,     0,
1182       0,     0,     0,   221,     0,    12,     0,     0,    13,     0,
1183       0,     0,     0,    22,     0,     0,     0,     0,     0,     0,
1184       0,    23,    24,    25,    26,    27,    28,     0,     0,     0,
1185      29,    30,    31,     0,     0,     0,    32,    33,     0,    14,
1186      15,    34,    16,    35,    36,    37,     0,     0,     0,    18,
1187      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1188       0,     0,   203,     0,   294,     0,     0,    13,     0,     0,
1189       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1190      23,    24,    25,    26,    27,    28,     0,     0,     0,    29,
1191      30,    31,     0,     0,     0,    32,    33,     0,    14,    15,
1192      34,    16,    35,    36,    37,     0,     0,     0,    18,    19,
1193       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1194       0,   205,     0,   294,     0,     0,    13,     0,     0,     0,
1195       0,    22,     0,     0,     0,     0,     0,     0,     0,    23,
1196      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1197      31,     0,     0,     0,    32,    33,     0,    14,    15,    34,
1198      16,    35,    36,    37,     0,     0,     0,    18,    19,     0,
1199      20,     0,    21,     0,     0,     0,     0,     0,     0,     0,
1200     221,     0,   294,     0,     0,    13,     0,     0,     0,     0,
1201      22,     0,     0,     0,     0,     0,     0,     0,    23,    24,
1202      25,    26,    27,    28,     0,     0,     0,    29,    30,    31,
1203       0,     0,     0,    32,    33,     0,    14,    15,    34,    16,
1204      35,    36,    37,     0,     0,     0,    18,    19,     0,    20,
1205       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1206       0,     0,     0,     0,     0,     0,     0,     0,     0,    22,
1207       0,     0,     0,     0,     0,     0,     0,    23,    24,    25,
1208      26,    27,    28,     0,     0,     0,    29,    30,    31,     0,
1209       0,     0,    32,    33,     0,     0,     0,    34,     0,    35,
1210      36,    37,    57,   108,     0,    13,   138,     0,     0,     0,
1211       0,     0,     0,   109,     0,     0,     0,     0,     0,     0,
1212       0,     0,     0,     0,     0,     0,   110,   111,     0,   112,
1213     113,   114,   115,   116,   117,   118,    14,    15,     0,    16,
1214       0,     0,     0,     0,     0,     0,    18,    19,     0,    20,
1215       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1216       0,     0,     0,     0,     0,     0,     0,     0,     0,    22,
1217       0,     0,     0,     0,     0,     0,     0,    23,    24,    25,
1218      26,    27,    28,     0,   119,     0,    29,    30,    31,     0,
1219       0,     0,    32,    33,     0,    57,   108,    34,    13,    35,
1220      36,    37,     0,     0,     0,     0,   109,     0,     0,     0,
1221       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1222     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1223      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1224      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1225       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1226       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1227      23,    24,    25,    26,    27,    28,     0,   119,   268,    29,
1228      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1229      34,     0,    35,    36,    37,    57,   108,     0,    13,   275,
1230       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1231       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1232     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1233      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1234      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1235       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1236       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1237      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1238      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1239      34,     0,    35,    36,    37,    57,   108,     0,    13,   313,
1240       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1241       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1242     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1243      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1244      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1245       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1246       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1247      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1248      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1249      34,     0,    35,    36,    37,    57,   108,     0,    13,   315,
1250       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1251       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1252     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1253      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1254      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1255       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1256       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1257      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1258      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1259      34,     0,    35,    36,    37,    57,   108,     0,    13,   348,
1260       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1261       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1262     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1263      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1264      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1265       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1266       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1267      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1268      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1269      34,     0,    35,    36,    37,    57,   108,     0,    13,   349,
1270       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1271       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1272     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1273      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1274      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1275       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1276       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1277      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1278      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1279      34,     0,    35,    36,    37,    57,   108,   352,    13,     0,
1280       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1281       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1282     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1283      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1284      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1285       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1286       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1287      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1288      30,    31,     0,     0,     0,    32,    33,     0,     0,     0,
1289      34,     0,    35,    36,    37,    57,   108,     0,    13,   361,
1290       0,     0,     0,     0,     0,     0,   109,     0,     0,     0,
1291       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1292     111,     0,   112,   113,   114,   115,   116,   117,   118,    14,
1293      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1294      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1295       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1296       0,     0,    22,     0,     0,     0,     0,     0,     0,     0,
1297      23,    24,    25,    26,    27,    28,     0,   119,     0,    29,
1298      30,    31,     0,     0,     0,    32,    33,     0,    57,   108,
1299      34,    13,    35,    36,    37,     0,     0,     0,     0,   109,
1300       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1301       0,     0,   110,   111,     0,   112,   113,   114,   115,   116,
1302     117,   118,    14,    15,     0,    16,     0,     0,     0,     0,
1303       0,     0,    18,    19,     0,    20,     0,    21,     0,     0,
1304       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1305       0,     0,     0,     0,     0,    22,     0,     0,     0,     0,
1306       0,     0,     0,    23,    24,    25,    26,    27,    28,     0,
1307     119,     0,    29,    30,    31,     0,     0,     0,    32,    33,
1308       0,    57,   108,    34,    13,    35,    36,    37,     0,     0,
1309       0,     0,   109,     0,     0,     0,     0,     0,     0,     0,
1310       0,     0,     0,     0,     0,   110,     0,     0,   112,   113,
1311     114,   115,   116,   117,   118,    14,    15,     0,    16,     0,
1312       0,     0,     0,     0,     0,    18,    19,     0,    20,     0,
1313      21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1314       0,     0,     0,     0,     0,     0,     0,     0,    22,    12,
1315       0,     0,    13,   143,     0,     0,    23,    24,    25,    26,
1316      27,    28,     0,     0,     0,    29,    30,    31,     0,     0,
1317       0,    32,    33,     0,    57,   108,    34,    13,    35,    36,
1318      37,     0,     0,    14,    15,   109,    16,     0,     0,     0,
1319       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1320       0,   112,   113,   114,   115,   116,   117,   118,    14,    15,
1321       0,    16,     0,     0,     0,     0,    22,     0,    18,    19,
1322       0,    20,     0,    21,    23,    24,    25,    26,    27,    28,
1323       0,     0,     0,    29,    30,    31,     0,     0,     0,    32,
1324      33,    22,     0,     0,    34,     0,    35,    36,    37,    23,
1325      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1326      31,     0,     0,     0,    32,    33,     0,    57,   -32,    34,
1327      13,    35,    36,    37,     0,     0,     0,     0,   -32,     0,
1328       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1329       0,     0,     0,     0,   -32,   -32,   -32,   -32,   -32,   -32,
1330     -32,    14,    15,     0,    16,     0,     0,     0,     0,     0,
1331       0,    18,    19,     0,    20,     0,    21,     0,     0,     0,
1332       0,     0,     0,     0,     0,     0,    57,     0,     0,    13,
1333       0,     0,     0,     0,    22,     0,     0,   253,     0,     0,
1334       0,     0,    23,    24,    25,    26,    27,    28,     0,     0,
1335     110,   111,    30,    31,     0,     0,     0,    32,    33,   254,
1336      14,    15,    34,    16,    35,    36,    37,     0,     0,     0,
1337      18,    19,     0,    20,     0,    21,     0,     0,     0,     0,
1338       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1339       0,     0,     0,    22,     0,     0,     0,     0,     0,     0,
1340       0,    23,    24,    25,    26,    27,    28,     0,   255,   328,
1341      29,    30,    31,     0,     0,    57,    32,    33,    13,     0,
1342       0,    34,     0,    35,    36,    37,   253,     0,     0,     0,
1343       0,     0,     0,     0,     0,     0,     0,     0,     0,   110,
1344     111,     0,     0,     0,     0,     0,     0,     0,   254,    14,
1345      15,     0,    16,     0,     0,     0,     0,     0,     0,    18,
1346      19,     0,    20,     0,    21,     0,     0,     0,     0,     0,
1347       0,     0,     0,     0,    57,     0,     0,    13,     0,     0,
1348       0,     0,    22,     0,     0,   253,     0,     0,     0,     0,
1349      23,    24,    25,    26,    27,    28,     0,   255,   110,    29,
1350      30,    31,     0,     0,     0,    32,    33,   254,    14,    15,
1351      34,    16,    35,    36,    37,     0,     0,     0,    18,    19,
1352       0,    20,     0,    21,     0,     0,     0,     0,     0,     0,
1353       0,     0,     0,    57,     0,     0,    13,     0,     0,     0,
1354       0,    22,     0,     0,   253,     0,     0,     0,     0,    23,
1355      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1356      31,     0,     0,     0,    32,    33,   254,    14,    15,    34,
1357      16,    35,    36,    37,     0,     0,     0,    18,    19,     0,
1358      20,     0,    21,     0,     0,     0,     0,     0,     0,     0,
1359       0,     0,    12,     0,     0,    13,   151,     0,     0,     0,
1360      22,     0,     0,     0,     0,     0,     0,     0,    23,    24,
1361      25,    26,    27,    28,     0,     0,     0,    29,    30,    31,
1362       0,     0,     0,    32,    33,     0,    14,    15,    34,    16,
1363      35,    36,    37,     0,     0,     0,    18,    19,     0,    20,
1364       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1365       0,    57,     0,     0,    13,     0,     0,     0,     0,    22,
1366       0,     0,     0,     0,     0,     0,     0,    23,    24,    25,
1367      26,    27,    28,     0,     0,     0,    29,    30,    31,     0,
1368       0,     0,    32,    33,     0,    14,    15,    34,    16,    35,
1369      36,    37,     0,     0,     0,    18,    19,     0,    20,     0,
1370      21,     0,     0,     0,     0,     0,     0,     0,     0,   210,
1371      57,     0,     0,    13,     0,     0,     0,     0,    22,     0,
1372       0,   -32,     0,     0,     0,     0,    23,    24,    25,    26,
1373      27,    28,     0,     0,     0,    29,    30,    31,     0,     0,
1374       0,    32,    33,   -32,    14,    15,    34,    16,    35,    36,
1375      37,     0,     0,     0,    18,    19,     0,    20,     0,    21,
1376       0,     0,     0,     0,     0,     0,     0,     0,     0,    12,
1377       0,     0,    13,     0,     0,     0,     0,    22,     0,     0,
1378       0,     0,     0,     0,     0,    23,    24,    25,    26,    27,
1379      28,     0,     0,     0,    57,    30,    31,    13,     0,     0,
1380      32,    33,     0,    14,    15,    34,    16,    35,    36,    37,
1381       0,     0,     0,    18,    19,     0,    20,     0,    21,     0,
1382       0,     0,     0,     0,     0,     0,     0,     0,    14,    15,
1383       0,    16,     0,     0,     0,     0,    22,     0,    18,    19,
1384       0,    20,     0,    21,    23,    24,    25,    26,    27,    28,
1385       0,     0,     0,    29,    30,    31,     0,     0,     0,    32,
1386      33,    22,   178,     0,    34,    13,    35,    36,    37,    23,
1387      24,    25,    26,    27,    28,     0,     0,     0,    29,    30,
1388      31,     0,     0,     0,    32,    33,     0,   294,     0,    34,
1389      13,    35,    36,    37,     0,     0,    14,    15,     0,    16,
1390       0,     0,     0,     0,     0,     0,    18,    19,     0,    20,
1391       0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
1392       0,    14,    15,     0,    16,     0,     0,     0,     0,    22,
1393       0,    18,    19,     0,    20,     0,    21,    23,    24,    25,
1394      26,    27,    28,     0,     0,     0,    29,    30,    31,     0,
1395       0,     0,    32,    33,    22,     0,     0,    34,     0,    35,
1396      36,    37,    23,    24,    25,    26,    27,    28,     0,     0,
1397       0,    29,    30,    31,     0,     0,     0,    32,    33,     0,
1398       0,     0,    34,     0,    35,    36,    37
1399};
1400
1401static const yytype_int16 yycheck[] =
1402{
1403      16,    66,    67,    51,    52,   178,    15,    81,    15,   244,
1404     160,   246,    46,    29,    10,     9,    32,    33,    34,    35,
1405      36,    37,    16,    13,     0,     5,    42,   167,   338,     9,
1406      10,   179,    70,    11,     9,    18,    83,    53,    10,    86,
1407      70,    12,    89,    90,    19,   109,    93,     9,    38,   359,
1408      98,    41,    68,    87,   101,    89,     9,    19,   106,    39,
1409     124,    46,    45,    16,    10,    12,    53,    54,     9,   134,
1410       9,   109,   110,    87,    46,    16,    90,    16,     9,   109,
1411     110,     9,    12,    99,   100,    16,   160,    12,    16,   324,
1412       9,    87,    11,   102,   103,   104,   105,   104,   105,   108,
1413      46,   108,    87,    88,    89,   109,   110,   123,    12,   125,
1414     126,   127,   128,   129,   130,    87,   351,    89,   165,    10,
1415      12,   294,    12,    14,   171,    12,   111,   107,   363,   145,
1416     146,    15,   148,   149,    93,   285,    18,     9,   154,   155,
1417     156,    87,    88,    89,    16,    12,    43,   295,   108,   165,
1418     298,   299,   300,   301,    10,   171,    10,   305,    14,    10,
1419      14,   148,   149,   179,     9,   111,   230,   231,   155,   156,
1420      12,    16,   322,    12,   239,    12,   192,   193,    10,   195,
1421     196,   197,   198,   199,   200,    96,   202,    10,   204,   253,
1422     206,    14,   208,   180,   210,    45,   344,    16,   338,    15,
1423      10,   217,   352,    18,    87,    80,   222,    43,   224,   189,
1424      46,   285,     9,    32,    33,    34,    84,   265,    37,   359,
1425      14,   208,   209,    42,    10,    10,    16,    16,   244,   100,
1426     246,    45,    16,    12,    53,    16,    16,   253,    16,   255,
1427     256,   257,   229,   259,   260,   261,   262,   263,   322,    68,
1428     118,    87,    88,    89,    41,   107,   320,    -1,   274,   105,
1429      -1,    -1,   278,    -1,   280,   252,   282,   253,    -1,   255,
1430     256,   257,    -1,   259,    -1,   111,    -1,   263,   352,   295,
1431      99,   100,   298,   299,   300,   301,   334,    -1,    -1,   305,
1432      -1,   307,   308,   309,    -1,   282,   283,    -1,    -1,   167,
1433      -1,    -1,    -1,    -1,   123,    -1,   125,   126,   127,   128,
1434     129,   130,   328,    -1,   361,   331,    -1,   333,    -1,   335,
1435     336,   308,   309,   339,    -1,    -1,   145,   146,   344,   148,
1436     149,   179,   312,    -1,    -1,   154,   155,   156,   354,    -1,
1437     327,    -1,   328,    -1,    -1,    -1,   165,    -1,    -1,    -1,
1438      -1,    -1,   171,    -1,    -1,   223,    -1,    -1,    -1,    -1,
1439     179,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   236,    -1,
1440      -1,    -1,    -1,    -1,   193,    -1,   195,   196,   197,   198,
1441     199,   200,    -1,   202,    -1,   204,   254,   206,    -1,   208,
1442      -1,   210,    -1,    -1,    16,    -1,    -1,    -1,   217,    -1,
1443      -1,    -1,    -1,   222,    -1,   224,    -1,    -1,    -1,    -1,
1444      32,    33,    34,    -1,    -1,    37,    -1,    -1,   286,    -1,
1445      42,    -1,    -1,    -1,    -1,   244,    -1,   246,    -1,    -1,
1446      -1,    53,    -1,    -1,   253,    -1,   255,   256,   257,    -1,
1447     259,   260,   261,   262,   263,    -1,    68,   295,    -1,    -1,
1448     298,   299,   300,   301,    -1,   274,    -1,   305,   326,   278,
1449      -1,   280,    -1,   282,    -1,    -1,    -1,    -1,    -1,    -1,
1450      -1,    -1,    -1,    -1,    -1,    -1,   295,    99,   100,   298,
1451     299,   300,   301,    -1,    -1,    -1,   305,    -1,   307,   308,
1452     309,    -1,    97,    -1,    -1,    -1,   344,    -1,   103,    -1,
1453      -1,   123,    -1,   125,   126,   127,   128,   129,   130,   328,
1454      -1,    -1,    -1,    -1,    -1,    -1,   335,   336,    -1,    -1,
1455     339,    -1,    -1,   145,   146,   344,   148,   149,    -1,    -1,
1456     135,   136,   154,   155,   156,   354,    -1,    -1,    -1,    -1,
1457      -1,    -1,    -1,   165,    -1,    -1,    -1,    -1,    -1,   171,
1458      -1,    -1,    -1,    -1,    -1,     5,    -1,   179,    -1,    -1,
1459      -1,    -1,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1460     175,   193,   177,   195,   196,   197,   198,   199,   200,    -1,
1461     202,    -1,   204,   188,   206,   190,   208,    -1,   210,    -1,
1462      -1,    -1,    -1,    -1,    -1,   217,    -1,    -1,    -1,    -1,
1463     222,    -1,   224,    -1,    -1,    -1,    56,    57,    -1,    -1,
1464      -1,    -1,    -1,    -1,    64,    65,    66,    67,    -1,    -1,
1465      70,    71,   244,    -1,   246,    -1,    -1,    -1,    -1,    -1,
1466      -1,   253,    -1,   255,   256,   257,    86,   259,   260,   261,
1467     262,   263,    -1,    93,   249,    -1,    -1,    -1,    -1,    -1,
1468      -1,    -1,   274,    -1,    -1,   105,   278,   107,   280,   109,
1469     282,    -1,   112,   113,   114,   115,   116,   117,    -1,   119,
1470     120,   121,    -1,   295,   124,    -1,   298,   299,   300,   301,
1471      -1,   131,    -1,   305,   134,   307,   308,   309,    -1,   139,
1472      -1,   141,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1473      -1,   306,    -1,    -1,    -1,    -1,   328,    -1,    -1,    -1,
1474      -1,    -1,    -1,   335,   336,    -1,    -1,   339,   168,    -1,
1475      -1,    -1,   344,   173,    -1,    -1,    -1,    -1,   178,    -1,
1476      -1,    -1,   354,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1477      -1,    -1,   347,    -1,     0,     1,    -1,    -1,   353,    -1,
1478      -1,     7,     8,    -1,    10,    11,    12,   362,    14,    15,
1479      -1,    -1,   367,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1480      -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,    -1,    -1,
1481     230,   231,    -1,    -1,    -1,   235,    -1,    -1,    -1,   239,
1482      46,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,
1483      56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,
1484      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   268,   269,
1485     270,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
1486      -1,    87,    88,    89,    90,    91,    92,    -1,    -1,    -1,
1487      96,    97,    98,    -1,   294,    -1,   102,   103,     1,    -1,
1488      -1,   107,    -1,   109,   110,   111,    -1,    10,    11,    12,
1489      -1,    14,    15,    -1,    -1,    -1,    -1,    -1,   318,    -1,
1490     320,    -1,    -1,   323,    -1,    -1,    -1,    -1,    -1,    -1,
1491      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1492      -1,   341,    -1,    46,    47,    48,    49,    50,    51,    52,
1493      53,    54,    -1,    56,    57,    58,    59,    -1,    61,    62,
1494      63,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,
1495      -1,    -1,    -1,    -1,    77,    78,    79,    11,    12,    -1,
1496      14,    15,    -1,    17,    87,    88,    89,    90,    91,    92,
1497      -1,    -1,    -1,    96,    97,    98,    99,   100,    -1,   102,
1498     103,    -1,    -1,    -1,   107,    -1,   109,   110,   111,    -1,
1499      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
1500      54,    -1,    56,    57,    58,    59,    -1,    61,    62,    63,
1501      -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
1502      -1,    -1,    -1,    77,    78,    79,    11,    12,    -1,    14,
1503      15,    -1,    17,    87,    88,    89,    90,    91,    92,    -1,
1504      -1,    -1,    96,    97,    98,    99,   100,    -1,   102,   103,
1505      -1,    -1,    -1,   107,    -1,   109,   110,   111,    -1,    -1,
1506      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
1507      -1,    56,    57,    58,    59,    -1,    61,    62,    63,    -1,
1508      -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,
1509      -1,    -1,    77,    78,    79,    11,    12,    -1,    14,    15,
1510      -1,    17,    87,    88,    89,    90,    91,    92,    -1,    -1,
1511      -1,    96,    97,    98,    99,   100,    -1,   102,   103,    -1,
1512      -1,    -1,   107,    -1,   109,   110,   111,    -1,    -1,    -1,
1513      46,    47,    48,    49,    50,    51,    52,    53,    54,    -1,
1514      56,    57,    58,    59,    -1,    61,    62,    63,    -1,    -1,
1515      -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,
1516      -1,    77,    78,    79,    11,    12,    -1,    14,    15,    -1,
1517      17,    87,    88,    89,    90,    91,    92,    -1,    -1,    -1,
1518      96,    97,    98,    99,   100,    -1,   102,   103,    -1,    -1,
1519      -1,   107,    -1,   109,   110,   111,    -1,    -1,    -1,    46,
1520      47,    48,    49,    50,    51,    52,    53,    54,    -1,    56,
1521      57,    58,    59,    -1,    61,    62,    63,    -1,    -1,    -1,
1522      -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,
1523      77,    78,    79,    11,    12,    -1,    14,    15,    -1,    17,
1524      87,    88,    89,    90,    91,    92,    -1,    -1,    -1,    96,
1525      97,    98,    99,   100,    -1,   102,   103,    -1,    -1,    -1,
1526     107,    -1,   109,   110,   111,    -1,    -1,    -1,    46,    47,
1527      48,    49,    50,    51,    52,    53,    54,    -1,    56,    57,
1528      58,    59,    -1,    61,    62,    63,    -1,    -1,    -1,    -1,
1529      -1,    -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    77,
1530      78,    79,    10,    11,    12,    -1,    14,    15,    -1,    87,
1531      88,    89,    90,    91,    92,    -1,    -1,    -1,    96,    97,
1532      98,    99,   100,    -1,   102,   103,    -1,    -1,    -1,   107,
1533      -1,   109,   110,   111,    -1,    -1,    -1,    -1,    46,    47,
1534      48,    49,    50,    51,    52,    53,    54,    -1,    56,    57,
1535      58,    59,    -1,    61,    62,    63,    -1,    -1,    -1,    -1,
1536      -1,    -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    77,
1537      78,    79,    11,    12,    -1,    14,    15,    -1,    17,    87,
1538      88,    89,    90,    91,    92,    -1,    -1,    -1,    96,    97,
1539      98,    99,   100,    -1,   102,   103,    -1,    -1,    -1,   107,
1540      -1,   109,   110,   111,    -1,    -1,    -1,    46,    47,    48,
1541      49,    50,    51,    52,    53,    54,    -1,    56,    57,    58,
1542      59,    -1,    61,    62,    63,    -1,    -1,    -1,    -1,    -1,
1543      -1,     1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78,
1544      79,    11,    12,    -1,    14,    15,    -1,    17,    87,    88,
1545      89,    90,    91,    92,    -1,    -1,    -1,    96,    97,    98,
1546      99,   100,    -1,   102,   103,    -1,    -1,    -1,   107,    -1,
1547     109,   110,   111,    -1,    -1,    -1,    46,    47,    48,    49,
1548      50,    51,    52,    53,    54,    -1,    56,    57,    58,    59,
1549      -1,    61,    62,    63,    -1,    -1,    -1,    -1,    -1,    -1,
1550       1,    -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    79,
1551      11,    12,    -1,    14,    15,    -1,    -1,    87,    88,    89,
1552      90,    91,    92,    -1,    -1,    -1,    96,    97,    98,    99,
1553     100,    -1,   102,   103,    -1,    -1,    -1,   107,    -1,   109,
1554     110,   111,    -1,    -1,    -1,    46,    47,    48,    49,    50,
1555      51,    52,    53,    54,    -1,    56,    57,    58,    59,    -1,
1556      61,    62,    63,    -1,    -1,    -1,    -1,    -1,     1,    -1,
1557      -1,    -1,    -1,    -1,    -1,    -1,    77,    78,    79,    12,
1558      -1,    14,    15,    -1,    -1,    -1,    87,    88,    89,    90,
1559      91,    92,    -1,    -1,    -1,    96,    97,    98,    99,   100,
1560      -1,   102,   103,    -1,    -1,    -1,   107,    -1,   109,   110,
1561     111,    -1,    -1,    46,    47,    -1,    49,    -1,    51,    -1,
1562      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,
1563      -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,    -1,    -1,
1564      -1,    -1,    -1,    -1,    77,    78,    79,    12,    -1,    -1,
1565      15,    16,    -1,    -1,    87,    88,    89,    90,    91,    92,
1566      -1,    -1,    -1,    96,    97,    98,    -1,     7,     8,   102,
1567     103,    11,    12,    -1,   107,    15,   109,   110,   111,    -1,
1568      -1,    46,    47,    -1,    49,    -1,    51,    -1,    -1,    -1,
1569      -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,
1570      -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    -1,    49,
1571      -1,    -1,    77,    78,    79,    55,    56,    57,    -1,    59,
1572      -1,    61,    87,    88,    89,    90,    91,    92,    -1,    -1,
1573      -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,    79,
1574      -1,    -1,   107,    -1,   109,   110,   111,    87,    88,    89,
1575      90,    91,    92,    -1,    -1,    -1,    96,    97,    98,    -1,
1576      -1,    -1,   102,   103,    -1,    -1,    -1,   107,    -1,   109,
1577     110,   111,     9,    -1,    -1,    12,    13,    -1,    15,    16,
1578      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1579      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1580      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1581      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1582      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1583      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1584      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1585      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1586      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1587     107,    -1,   109,   110,   111,     9,    -1,    -1,    12,    13,
1588      -1,    15,    16,    -1,    -1,    -1,    -1,    -1,    -1,    23,
1589      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1590      -1,    -1,    36,    37,    -1,    39,    40,    41,    42,    43,
1591      44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,
1592      -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,
1593      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1594      -1,    -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,
1595      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    -1,
1596      94,    -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,
1597      -1,    -1,    -1,   107,    -1,   109,   110,   111,     9,    -1,
1598      -1,    12,    13,    -1,    15,    16,    -1,    -1,    -1,    -1,
1599      -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1600      -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    39,    40,
1601      41,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
1602      -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
1603      61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1604      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    -1,
1605      -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
1606      91,    92,    -1,    94,    -1,    96,    97,    98,    -1,    -1,
1607      -1,   102,   103,    -1,    -1,    -1,   107,    -1,   109,   110,
1608     111,     9,    -1,    -1,    12,    13,    -1,    15,    16,    -1,
1609      -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,
1610      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,    37,
1611      -1,    39,    40,    41,    42,    43,    44,    45,    46,    47,
1612      -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,    57,
1613      -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
1614      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1615      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
1616      88,    89,    90,    91,    92,    -1,    94,    -1,    96,    97,
1617      98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,   107,
1618      -1,   109,   110,   111,     9,    -1,    -1,    12,    13,    -1,
1619      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,
1620      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1621      -1,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
1622      45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,
1623      -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,
1624      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1625      -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,
1626      -1,    -1,    87,    88,    89,    90,    91,    92,    -1,    94,
1627      -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,    -1,
1628      -1,    -1,   107,    -1,   109,   110,   111,    10,    -1,    12,
1629      13,    14,    15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1630      23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1631      -1,    -1,    -1,    36,    37,    -1,    39,    40,    41,    42,
1632      43,    44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,
1633      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,
1634      -1,    -1,    -1,    -1,    -1,    -1,    10,    -1,    12,    -1,
1635      14,    15,    -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,
1636      -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,    92,
1637      -1,    94,    -1,    96,    97,    98,    -1,    -1,    -1,   102,
1638     103,    -1,    46,    47,   107,    49,   109,   110,   111,    -1,
1639      -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,
1640      -1,    -1,    -1,    -1,    -1,    10,    -1,    12,    -1,    -1,
1641      15,    -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,
1642      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    -1,
1643      -1,    -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,
1644      -1,    46,    47,   107,    49,   109,   110,   111,    -1,    -1,
1645      -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,
1646      -1,    -1,    -1,    -1,    10,    -1,    12,    -1,    -1,    15,
1647      -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,
1648      -1,    -1,    87,    88,    89,    90,    91,    92,    -1,    -1,
1649      -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,    -1,
1650      46,    47,   107,    49,   109,   110,   111,    -1,    -1,    -1,
1651      56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,
1652      -1,    -1,    -1,    10,    -1,    12,    -1,    -1,    15,    -1,
1653      -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
1654      -1,    87,    88,    89,    90,    91,    92,    -1,    -1,    -1,
1655      96,    97,    98,    -1,    -1,    -1,   102,   103,    -1,    46,
1656      47,   107,    49,   109,   110,   111,    -1,    -1,    -1,    56,
1657      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1658      -1,    -1,    10,    -1,    12,    -1,    -1,    15,    -1,    -1,
1659      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1660      87,    88,    89,    90,    91,    92,    -1,    -1,    -1,    96,
1661      97,    98,    -1,    -1,    -1,   102,   103,    -1,    46,    47,
1662     107,    49,   109,   110,   111,    -1,    -1,    -1,    56,    57,
1663      -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
1664      -1,    10,    -1,    12,    -1,    -1,    15,    -1,    -1,    -1,
1665      -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,
1666      88,    89,    90,    91,    92,    -1,    -1,    -1,    96,    97,
1667      98,    -1,    -1,    -1,   102,   103,    -1,    46,    47,   107,
1668      49,   109,   110,   111,    -1,    -1,    -1,    56,    57,    -1,
1669      59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1670      10,    -1,    12,    -1,    -1,    15,    -1,    -1,    -1,    -1,
1671      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
1672      89,    90,    91,    92,    -1,    -1,    -1,    96,    97,    98,
1673      -1,    -1,    -1,   102,   103,    -1,    46,    47,   107,    49,
1674     109,   110,   111,    -1,    -1,    -1,    56,    57,    -1,    59,
1675      -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1676      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
1677      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
1678      90,    91,    92,    -1,    -1,    -1,    96,    97,    98,    -1,
1679      -1,    -1,   102,   103,    -1,    -1,    -1,   107,    -1,   109,
1680     110,   111,    12,    13,    -1,    15,    16,    -1,    -1,    -1,
1681      -1,    -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,
1682      -1,    -1,    -1,    -1,    -1,    -1,    36,    37,    -1,    39,
1683      40,    41,    42,    43,    44,    45,    46,    47,    -1,    49,
1684      -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,
1685      -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1686      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
1687      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
1688      90,    91,    92,    -1,    94,    -1,    96,    97,    98,    -1,
1689      -1,    -1,   102,   103,    -1,    12,    13,   107,    15,   109,
1690     110,   111,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1691      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1692      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1693      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1694      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1695      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1696      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1697      87,    88,    89,    90,    91,    92,    -1,    94,    95,    96,
1698      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1699     107,    -1,   109,   110,   111,    12,    13,    -1,    15,    16,
1700      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1701      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1702      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1703      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1704      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1705      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1706      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1707      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1708      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1709     107,    -1,   109,   110,   111,    12,    13,    -1,    15,    16,
1710      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1711      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1712      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1713      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1714      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1715      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1716      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1717      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1718      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1719     107,    -1,   109,   110,   111,    12,    13,    -1,    15,    16,
1720      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1721      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1722      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1723      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1724      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1725      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1726      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1727      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1728      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1729     107,    -1,   109,   110,   111,    12,    13,    -1,    15,    16,
1730      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1731      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1732      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1733      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1734      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1735      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1736      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1737      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1738      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1739     107,    -1,   109,   110,   111,    12,    13,    -1,    15,    16,
1740      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1741      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1742      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1743      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1744      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1745      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1746      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1747      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1748      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1749     107,    -1,   109,   110,   111,    12,    13,    14,    15,    -1,
1750      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1751      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1752      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1753      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1754      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1755      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1756      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1757      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1758      97,    98,    -1,    -1,    -1,   102,   103,    -1,    -1,    -1,
1759     107,    -1,   109,   110,   111,    12,    13,    -1,    15,    16,
1760      -1,    -1,    -1,    -1,    -1,    -1,    23,    -1,    -1,    -1,
1761      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1762      37,    -1,    39,    40,    41,    42,    43,    44,    45,    46,
1763      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1764      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1765      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1766      -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1767      87,    88,    89,    90,    91,    92,    -1,    94,    -1,    96,
1768      97,    98,    -1,    -1,    -1,   102,   103,    -1,    12,    13,
1769     107,    15,   109,   110,   111,    -1,    -1,    -1,    -1,    23,
1770      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1771      -1,    -1,    36,    37,    -1,    39,    40,    41,    42,    43,
1772      44,    45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,
1773      -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,
1774      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1775      -1,    -1,    -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,
1776      -1,    -1,    -1,    87,    88,    89,    90,    91,    92,    -1,
1777      94,    -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,
1778      -1,    12,    13,   107,    15,   109,   110,   111,    -1,    -1,
1779      -1,    -1,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1780      -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,    39,    40,
1781      41,    42,    43,    44,    45,    46,    47,    -1,    49,    -1,
1782      -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
1783      61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1784      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    12,
1785      -1,    -1,    15,    16,    -1,    -1,    87,    88,    89,    90,
1786      91,    92,    -1,    -1,    -1,    96,    97,    98,    -1,    -1,
1787      -1,   102,   103,    -1,    12,    13,   107,    15,   109,   110,
1788     111,    -1,    -1,    46,    47,    23,    49,    -1,    -1,    -1,
1789      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,
1790      -1,    39,    40,    41,    42,    43,    44,    45,    46,    47,
1791      -1,    49,    -1,    -1,    -1,    -1,    79,    -1,    56,    57,
1792      -1,    59,    -1,    61,    87,    88,    89,    90,    91,    92,
1793      -1,    -1,    -1,    96,    97,    98,    -1,    -1,    -1,   102,
1794     103,    79,    -1,    -1,   107,    -1,   109,   110,   111,    87,
1795      88,    89,    90,    91,    92,    -1,    -1,    -1,    96,    97,
1796      98,    -1,    -1,    -1,   102,   103,    -1,    12,    13,   107,
1797      15,   109,   110,   111,    -1,    -1,    -1,    -1,    23,    -1,
1798      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1799      -1,    -1,    -1,    -1,    39,    40,    41,    42,    43,    44,
1800      45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,
1801      -1,    56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,
1802      -1,    -1,    -1,    -1,    -1,    -1,    12,    -1,    -1,    15,
1803      -1,    -1,    -1,    -1,    79,    -1,    -1,    23,    -1,    -1,
1804      -1,    -1,    87,    88,    89,    90,    91,    92,    -1,    -1,
1805      36,    37,    97,    98,    -1,    -1,    -1,   102,   103,    45,
1806      46,    47,   107,    49,   109,   110,   111,    -1,    -1,    -1,
1807      56,    57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,
1808      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1809      -1,    -1,    -1,    79,    -1,    -1,    -1,    -1,    -1,    -1,
1810      -1,    87,    88,    89,    90,    91,    92,    -1,    94,    95,
1811      96,    97,    98,    -1,    -1,    12,   102,   103,    15,    -1,
1812      -1,   107,    -1,   109,   110,   111,    23,    -1,    -1,    -1,
1813      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    36,
1814      37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    45,    46,
1815      47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    -1,    56,
1816      57,    -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,
1817      -1,    -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    -1,
1818      -1,    -1,    79,    -1,    -1,    23,    -1,    -1,    -1,    -1,
1819      87,    88,    89,    90,    91,    92,    -1,    94,    36,    96,
1820      97,    98,    -1,    -1,    -1,   102,   103,    45,    46,    47,
1821     107,    49,   109,   110,   111,    -1,    -1,    -1,    56,    57,
1822      -1,    59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
1823      -1,    -1,    -1,    12,    -1,    -1,    15,    -1,    -1,    -1,
1824      -1,    79,    -1,    -1,    23,    -1,    -1,    -1,    -1,    87,
1825      88,    89,    90,    91,    92,    -1,    -1,    -1,    96,    97,
1826      98,    -1,    -1,    -1,   102,   103,    45,    46,    47,   107,
1827      49,   109,   110,   111,    -1,    -1,    -1,    56,    57,    -1,
1828      59,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1829      -1,    -1,    12,    -1,    -1,    15,    16,    -1,    -1,    -1,
1830      79,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,
1831      89,    90,    91,    92,    -1,    -1,    -1,    96,    97,    98,
1832      -1,    -1,    -1,   102,   103,    -1,    46,    47,   107,    49,
1833     109,   110,   111,    -1,    -1,    -1,    56,    57,    -1,    59,
1834      -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1835      -1,    12,    -1,    -1,    15,    -1,    -1,    -1,    -1,    79,
1836      -1,    -1,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
1837      90,    91,    92,    -1,    -1,    -1,    96,    97,    98,    -1,
1838      -1,    -1,   102,   103,    -1,    46,    47,   107,    49,   109,
1839     110,   111,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,
1840      61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    70,
1841      12,    -1,    -1,    15,    -1,    -1,    -1,    -1,    79,    -1,
1842      -1,    23,    -1,    -1,    -1,    -1,    87,    88,    89,    90,
1843      91,    92,    -1,    -1,    -1,    96,    97,    98,    -1,    -1,
1844      -1,   102,   103,    45,    46,    47,   107,    49,   109,   110,
1845     111,    -1,    -1,    -1,    56,    57,    -1,    59,    -1,    61,
1846      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    12,
1847      -1,    -1,    15,    -1,    -1,    -1,    -1,    79,    -1,    -1,
1848      -1,    -1,    -1,    -1,    -1,    87,    88,    89,    90,    91,
1849      92,    -1,    -1,    -1,    12,    97,    98,    15,    -1,    -1,
1850     102,   103,    -1,    46,    47,   107,    49,   109,   110,   111,
1851      -1,    -1,    -1,    56,    57,    -1,    59,    -1,    61,    -1,
1852      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
1853      -1,    49,    -1,    -1,    -1,    -1,    79,    -1,    56,    57,
1854      -1,    59,    -1,    61,    87,    88,    89,    90,    91,    92,
1855      -1,    -1,    -1,    96,    97,    98,    -1,    -1,    -1,   102,
1856     103,    79,    12,    -1,   107,    15,   109,   110,   111,    87,
1857      88,    89,    90,    91,    92,    -1,    -1,    -1,    96,    97,
1858      98,    -1,    -1,    -1,   102,   103,    -1,    12,    -1,   107,
1859      15,   109,   110,   111,    -1,    -1,    46,    47,    -1,    49,
1860      -1,    -1,    -1,    -1,    -1,    -1,    56,    57,    -1,    59,
1861      -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1862      -1,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,    79,
1863      -1,    56,    57,    -1,    59,    -1,    61,    87,    88,    89,
1864      90,    91,    92,    -1,    -1,    -1,    96,    97,    98,    -1,
1865      -1,    -1,   102,   103,    79,    -1,    -1,   107,    -1,   109,
1866     110,   111,    87,    88,    89,    90,    91,    92,    -1,    -1,
1867      -1,    96,    97,    98,    -1,    -1,    -1,   102,   103,    -1,
1868      -1,    -1,   107,    -1,   109,   110,   111
1869};
1870
1871/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1872   symbol of state STATE-NUM.  */
1873static const yytype_uint8 yystos[] =
1874{
1875       0,     1,    10,    14,   114,   129,   131,   143,     0,     7,
1876       8,    11,    12,    15,    46,    47,    49,    55,    56,    57,
1877      59,    61,    79,    87,    88,    89,    90,    91,    92,    96,
1878      97,    98,   102,   103,   107,   109,   110,   111,   126,   132,
1879     133,   135,   138,   145,   146,   156,   157,   158,   160,    10,
1880      14,   126,   126,   138,   139,   147,    12,    12,   145,   157,
1881     158,    87,    90,   124,    12,    12,    12,    12,    43,   158,
1882      12,    12,   157,   157,   145,   157,   158,   158,   157,     1,
1883      10,    14,    48,    50,    51,    52,    53,    54,    58,    62,
1884      63,    77,    78,    99,   100,   118,   120,   125,   126,   138,
1885     142,   149,   151,   155,   161,     9,   126,   129,    13,    23,
1886      36,    37,    39,    40,    41,    42,    43,    44,    45,    94,
1887     115,   116,   157,    15,    12,    15,   102,   103,   104,   105,
1888     108,    70,   109,   110,    18,   155,   155,     9,    16,   117,
1889      16,   117,    93,    16,   136,   138,   138,    12,   138,   138,
1890     136,    16,   136,   157,    43,   138,   138,    10,   127,   128,
1891      14,   127,   150,   150,   160,   138,   150,    12,    12,   150,
1892     150,   138,   150,    12,    10,   152,   151,   155,    12,   137,
1893     140,   141,   145,   157,   158,   150,    17,   151,   154,   132,
1894     155,   133,    96,   138,   146,   138,   138,   138,   138,   138,
1895     138,   160,   138,    10,   138,    10,   138,   157,   138,   146,
1896      70,   157,   157,   157,   157,   157,   157,   138,   136,    17,
1897      17,    10,   138,    45,   138,    15,    16,   117,    87,   159,
1898     117,   117,    16,    16,   157,   117,   117,    10,   128,    18,
1899     150,   130,   149,   160,   138,   150,   138,   151,    80,   119,
1900      17,   144,   139,    23,    45,    94,   115,   116,   157,   117,
1901      13,    38,    41,    70,   151,   126,    17,   158,    95,   117,
1902     117,   157,    19,   160,   138,    16,   117,   148,   138,   146,
1903     138,   146,   138,   160,   136,    14,    45,   148,   148,   153,
1904      10,   151,    10,    16,    12,   137,   146,   160,   137,   137,
1905     137,   137,   157,   157,   157,   137,   155,   138,   138,   138,
1906      87,    10,   134,    16,    16,    16,    16,    16,   117,    16,
1907     117,    19,    14,   128,   160,   100,    45,   139,    95,    17,
1908      16,   117,    16,   117,   126,   138,   138,   146,   128,   138,
1909     148,    12,   160,    16,   137,   158,   158,   155,    16,    16,
1910      16,   130,    14,   123,   138,    16,    16,    17,   148,   128,
1911     151,    16,   122,   130,   150,   151,   148,   121,   151
1912};
1913
1914#define yyerrok		(yyerrstatus = 0)
1915#define yyclearin	(yychar = YYEMPTY)
1916#define YYEMPTY		(-2)
1917#define YYEOF		0
1918
1919#define YYACCEPT	goto yyacceptlab
1920#define YYABORT		goto yyabortlab
1921#define YYERROR		goto yyerrorlab
1922
1923
1924/* Like YYERROR except do call yyerror.  This remains here temporarily
1925   to ease the transition to the new meaning of YYERROR, for GCC.
1926   Once GCC version 2 has supplanted version 1, this can go.  */
1927
1928#define YYFAIL		goto yyerrlab
1929
1930#define YYRECOVERING()  (!!yyerrstatus)
1931
1932#define YYBACKUP(Token, Value)					\
1933do								\
1934  if (yychar == YYEMPTY && yylen == 1)				\
1935    {								\
1936      yychar = (Token);						\
1937      yylval = (Value);						\
1938      yytoken = YYTRANSLATE (yychar);				\
1939      YYPOPSTACK (1);						\
1940      goto yybackup;						\
1941    }								\
1942  else								\
1943    {								\
1944      yyerror (YY_("syntax error: cannot back up")); \
1945      YYERROR;							\
1946    }								\
1947while (YYID (0))
1948
1949
1950#define YYTERROR	1
1951#define YYERRCODE	256
1952
1953
1954/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1955   If N is 0, then set CURRENT to the empty location which ends
1956   the previous symbol: RHS[0] (always defined).  */
1957
1958#define YYRHSLOC(Rhs, K) ((Rhs)[K])
1959#ifndef YYLLOC_DEFAULT
1960# define YYLLOC_DEFAULT(Current, Rhs, N)				\
1961    do									\
1962      if (YYID (N))                                                    \
1963	{								\
1964	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
1965	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
1966	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
1967	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
1968	}								\
1969      else								\
1970	{								\
1971	  (Current).first_line   = (Current).last_line   =		\
1972	    YYRHSLOC (Rhs, 0).last_line;				\
1973	  (Current).first_column = (Current).last_column =		\
1974	    YYRHSLOC (Rhs, 0).last_column;				\
1975	}								\
1976    while (YYID (0))
1977#endif
1978
1979
1980/* YY_LOCATION_PRINT -- Print the location on the stream.
1981   This macro was not mandated originally: define only if we know
1982   we won't break user code: when these are the locations we know.  */
1983
1984#ifndef YY_LOCATION_PRINT
1985# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
1986#  define YY_LOCATION_PRINT(File, Loc)			\
1987     fprintf (File, "%d.%d-%d.%d",			\
1988	      (Loc).first_line, (Loc).first_column,	\
1989	      (Loc).last_line,  (Loc).last_column)
1990# else
1991#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1992# endif
1993#endif
1994
1995
1996/* YYLEX -- calling `yylex' with the right arguments.  */
1997
1998#ifdef YYLEX_PARAM
1999# define YYLEX yylex (YYLEX_PARAM)
2000#else
2001# define YYLEX yylex ()
2002#endif
2003
2004/* Enable debugging if requested.  */
2005#if YYDEBUG
2006
2007# ifndef YYFPRINTF
2008#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2009#  define YYFPRINTF fprintf
2010# endif
2011
2012# define YYDPRINTF(Args)			\
2013do {						\
2014  if (yydebug)					\
2015    YYFPRINTF Args;				\
2016} while (YYID (0))
2017
2018# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
2019do {									  \
2020  if (yydebug)								  \
2021    {									  \
2022      YYFPRINTF (stderr, "%s ", Title);					  \
2023      yy_symbol_print (stderr,						  \
2024		  Type, Value); \
2025      YYFPRINTF (stderr, "\n");						  \
2026    }									  \
2027} while (YYID (0))
2028
2029
2030/*--------------------------------.
2031| Print this symbol on YYOUTPUT.  |
2032`--------------------------------*/
2033
2034/*ARGSUSED*/
2035#if (defined __STDC__ || defined __C99__FUNC__ \
2036     || defined __cplusplus || defined _MSC_VER)
2037static void
2038yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2039#else
2040static void
2041yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2042    FILE *yyoutput;
2043    int yytype;
2044    YYSTYPE const * const yyvaluep;
2045#endif
2046{
2047  if (!yyvaluep)
2048    return;
2049# ifdef YYPRINT
2050  if (yytype < YYNTOKENS)
2051    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2052# else
2053  YYUSE (yyoutput);
2054# endif
2055  switch (yytype)
2056    {
2057      default:
2058	break;
2059    }
2060}
2061
2062
2063/*--------------------------------.
2064| Print this symbol on YYOUTPUT.  |
2065`--------------------------------*/
2066
2067#if (defined __STDC__ || defined __C99__FUNC__ \
2068     || defined __cplusplus || defined _MSC_VER)
2069static void
2070yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2071#else
2072static void
2073yy_symbol_print (yyoutput, yytype, yyvaluep)
2074    FILE *yyoutput;
2075    int yytype;
2076    YYSTYPE const * const yyvaluep;
2077#endif
2078{
2079  if (yytype < YYNTOKENS)
2080    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2081  else
2082    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2083
2084  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2085  YYFPRINTF (yyoutput, ")");
2086}
2087
2088/*------------------------------------------------------------------.
2089| yy_stack_print -- Print the state stack from its BOTTOM up to its |
2090| TOP (included).                                                   |
2091`------------------------------------------------------------------*/
2092
2093#if (defined __STDC__ || defined __C99__FUNC__ \
2094     || defined __cplusplus || defined _MSC_VER)
2095static void
2096yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
2097#else
2098static void
2099yy_stack_print (bottom, top)
2100    yytype_int16 *bottom;
2101    yytype_int16 *top;
2102#endif
2103{
2104  YYFPRINTF (stderr, "Stack now");
2105  for (; bottom <= top; ++bottom)
2106    YYFPRINTF (stderr, " %d", *bottom);
2107  YYFPRINTF (stderr, "\n");
2108}
2109
2110# define YY_STACK_PRINT(Bottom, Top)				\
2111do {								\
2112  if (yydebug)							\
2113    yy_stack_print ((Bottom), (Top));				\
2114} while (YYID (0))
2115
2116
2117/*------------------------------------------------.
2118| Report that the YYRULE is going to be reduced.  |
2119`------------------------------------------------*/
2120
2121#if (defined __STDC__ || defined __C99__FUNC__ \
2122     || defined __cplusplus || defined _MSC_VER)
2123static void
2124yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2125#else
2126static void
2127yy_reduce_print (yyvsp, yyrule)
2128    YYSTYPE *yyvsp;
2129    int yyrule;
2130#endif
2131{
2132  int yynrhs = yyr2[yyrule];
2133  int yyi;
2134  unsigned long int yylno = yyrline[yyrule];
2135  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2136	     yyrule - 1, yylno);
2137  /* The symbols being reduced.  */
2138  for (yyi = 0; yyi < yynrhs; yyi++)
2139    {
2140      fprintf (stderr, "   $%d = ", yyi + 1);
2141      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2142		       &(yyvsp[(yyi + 1) - (yynrhs)])
2143		       		       );
2144      fprintf (stderr, "\n");
2145    }
2146}
2147
2148# define YY_REDUCE_PRINT(Rule)		\
2149do {					\
2150  if (yydebug)				\
2151    yy_reduce_print (yyvsp, Rule); \
2152} while (YYID (0))
2153
2154/* Nonzero means print parse trace.  It is left uninitialized so that
2155   multiple parsers can coexist.  */
2156int yydebug;
2157#else /* !YYDEBUG */
2158# define YYDPRINTF(Args)
2159# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2160# define YY_STACK_PRINT(Bottom, Top)
2161# define YY_REDUCE_PRINT(Rule)
2162#endif /* !YYDEBUG */
2163
2164
2165/* YYINITDEPTH -- initial size of the parser's stacks.  */
2166#ifndef	YYINITDEPTH
2167# define YYINITDEPTH 200
2168#endif
2169
2170/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2171   if the built-in stack extension method is used).
2172
2173   Do not make this value too large; the results are undefined if
2174   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2175   evaluated with infinite-precision integer arithmetic.  */
2176
2177#ifndef YYMAXDEPTH
2178# define YYMAXDEPTH 10000
2179#endif
2180
2181
2182
2183#if YYERROR_VERBOSE
2184
2185# ifndef yystrlen
2186#  if defined __GLIBC__ && defined _STRING_H
2187#   define yystrlen strlen
2188#  else
2189/* Return the length of YYSTR.  */
2190#if (defined __STDC__ || defined __C99__FUNC__ \
2191     || defined __cplusplus || defined _MSC_VER)
2192static YYSIZE_T
2193yystrlen (const char *yystr)
2194#else
2195static YYSIZE_T
2196yystrlen (yystr)
2197    const char *yystr;
2198#endif
2199{
2200  YYSIZE_T yylen;
2201  for (yylen = 0; yystr[yylen]; yylen++)
2202    continue;
2203  return yylen;
2204}
2205#  endif
2206# endif
2207
2208# ifndef yystpcpy
2209#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2210#   define yystpcpy stpcpy
2211#  else
2212/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2213   YYDEST.  */
2214#if (defined __STDC__ || defined __C99__FUNC__ \
2215     || defined __cplusplus || defined _MSC_VER)
2216static char *
2217yystpcpy (char *yydest, const char *yysrc)
2218#else
2219static char *
2220yystpcpy (yydest, yysrc)
2221    char *yydest;
2222    const char *yysrc;
2223#endif
2224{
2225  char *yyd = yydest;
2226  const char *yys = yysrc;
2227
2228  while ((*yyd++ = *yys++) != '\0')
2229    continue;
2230
2231  return yyd - 1;
2232}
2233#  endif
2234# endif
2235
2236# ifndef yytnamerr
2237/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2238   quotes and backslashes, so that it's suitable for yyerror.  The
2239   heuristic is that double-quoting is unnecessary unless the string
2240   contains an apostrophe, a comma, or backslash (other than
2241   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2242   null, do not copy; instead, return the length of what the result
2243   would have been.  */
2244static YYSIZE_T
2245yytnamerr (char *yyres, const char *yystr)
2246{
2247  if (*yystr == '"')
2248    {
2249      YYSIZE_T yyn = 0;
2250      char const *yyp = yystr;
2251
2252      for (;;)
2253	switch (*++yyp)
2254	  {
2255	  case '\'':
2256	  case ',':
2257	    goto do_not_strip_quotes;
2258
2259	  case '\\':
2260	    if (*++yyp != '\\')
2261	      goto do_not_strip_quotes;
2262	    /* Fall through.  */
2263	  default:
2264	    if (yyres)
2265	      yyres[yyn] = *yyp;
2266	    yyn++;
2267	    break;
2268
2269	  case '"':
2270	    if (yyres)
2271	      yyres[yyn] = '\0';
2272	    return yyn;
2273	  }
2274    do_not_strip_quotes: ;
2275    }
2276
2277  if (! yyres)
2278    return yystrlen (yystr);
2279
2280  return yystpcpy (yyres, yystr) - yyres;
2281}
2282# endif
2283
2284/* Copy into YYRESULT an error message about the unexpected token
2285   YYCHAR while in state YYSTATE.  Return the number of bytes copied,
2286   including the terminating null byte.  If YYRESULT is null, do not
2287   copy anything; just return the number of bytes that would be
2288   copied.  As a special case, return 0 if an ordinary "syntax error"
2289   message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
2290   size calculation.  */
2291static YYSIZE_T
2292yysyntax_error (char *yyresult, int yystate, int yychar)
2293{
2294  int yyn = yypact[yystate];
2295
2296  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
2297    return 0;
2298  else
2299    {
2300      int yytype = YYTRANSLATE (yychar);
2301      YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2302      YYSIZE_T yysize = yysize0;
2303      YYSIZE_T yysize1;
2304      int yysize_overflow = 0;
2305      enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2306      char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2307      int yyx;
2308
2309# if 0
2310      /* This is so xgettext sees the translatable formats that are
2311	 constructed on the fly.  */
2312      YY_("syntax error, unexpected %s");
2313      YY_("syntax error, unexpected %s, expecting %s");
2314      YY_("syntax error, unexpected %s, expecting %s or %s");
2315      YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2316      YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2317# endif
2318      char *yyfmt;
2319      char const *yyf;
2320      static char const yyunexpected[] = "syntax error, unexpected %s";
2321      static char const yyexpecting[] = ", expecting %s";
2322      static char const yyor[] = " or %s";
2323      char yyformat[sizeof yyunexpected
2324		    + sizeof yyexpecting - 1
2325		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2326		       * (sizeof yyor - 1))];
2327      char const *yyprefix = yyexpecting;
2328
2329      /* Start YYX at -YYN if negative to avoid negative indexes in
2330	 YYCHECK.  */
2331      int yyxbegin = yyn < 0 ? -yyn : 0;
2332
2333      /* Stay within bounds of both yycheck and yytname.  */
2334      int yychecklim = YYLAST - yyn + 1;
2335      int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2336      int yycount = 1;
2337
2338      yyarg[0] = yytname[yytype];
2339      yyfmt = yystpcpy (yyformat, yyunexpected);
2340
2341      for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2342	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2343	  {
2344	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2345	      {
2346		yycount = 1;
2347		yysize = yysize0;
2348		yyformat[sizeof yyunexpected - 1] = '\0';
2349		break;
2350	      }
2351	    yyarg[yycount++] = yytname[yyx];
2352	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2353	    yysize_overflow |= (yysize1 < yysize);
2354	    yysize = yysize1;
2355	    yyfmt = yystpcpy (yyfmt, yyprefix);
2356	    yyprefix = yyor;
2357	  }
2358
2359      yyf = YY_(yyformat);
2360      yysize1 = yysize + yystrlen (yyf);
2361      yysize_overflow |= (yysize1 < yysize);
2362      yysize = yysize1;
2363
2364      if (yysize_overflow)
2365	return YYSIZE_MAXIMUM;
2366
2367      if (yyresult)
2368	{
2369	  /* Avoid sprintf, as that infringes on the user's name space.
2370	     Don't have undefined behavior even if the translation
2371	     produced a string with the wrong number of "%s"s.  */
2372	  char *yyp = yyresult;
2373	  int yyi = 0;
2374	  while ((*yyp = *yyf) != '\0')
2375	    {
2376	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2377		{
2378		  yyp += yytnamerr (yyp, yyarg[yyi++]);
2379		  yyf += 2;
2380		}
2381	      else
2382		{
2383		  yyp++;
2384		  yyf++;
2385		}
2386	    }
2387	}
2388      return yysize;
2389    }
2390}
2391#endif /* YYERROR_VERBOSE */
2392
2393
2394/*-----------------------------------------------.
2395| Release the memory associated to this symbol.  |
2396`-----------------------------------------------*/
2397
2398/*ARGSUSED*/
2399#if (defined __STDC__ || defined __C99__FUNC__ \
2400     || defined __cplusplus || defined _MSC_VER)
2401static void
2402yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2403#else
2404static void
2405yydestruct (yymsg, yytype, yyvaluep)
2406    const char *yymsg;
2407    int yytype;
2408    YYSTYPE *yyvaluep;
2409#endif
2410{
2411  YYUSE (yyvaluep);
2412
2413  if (!yymsg)
2414    yymsg = "Deleting";
2415  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2416
2417  switch (yytype)
2418    {
2419
2420      default:
2421	break;
2422    }
2423}
2424
2425
2426/* Prevent warnings from -Wmissing-prototypes.  */
2427
2428#ifdef YYPARSE_PARAM
2429#if defined __STDC__ || defined __cplusplus
2430int yyparse (void *YYPARSE_PARAM);
2431#else
2432int yyparse ();
2433#endif
2434#else /* ! YYPARSE_PARAM */
2435#if defined __STDC__ || defined __cplusplus
2436int yyparse (void);
2437#else
2438int yyparse ();
2439#endif
2440#endif /* ! YYPARSE_PARAM */
2441
2442
2443
2444/* The look-ahead symbol.  */
2445int yychar;
2446
2447/* The semantic value of the look-ahead symbol.  */
2448YYSTYPE yylval;
2449
2450/* Number of syntax errors so far.  */
2451int yynerrs;
2452
2453
2454
2455/*----------.
2456| yyparse.  |
2457`----------*/
2458
2459#ifdef YYPARSE_PARAM
2460#if (defined __STDC__ || defined __C99__FUNC__ \
2461     || defined __cplusplus || defined _MSC_VER)
2462int
2463yyparse (void *YYPARSE_PARAM)
2464#else
2465int
2466yyparse (YYPARSE_PARAM)
2467    void *YYPARSE_PARAM;
2468#endif
2469#else /* ! YYPARSE_PARAM */
2470#if (defined __STDC__ || defined __C99__FUNC__ \
2471     || defined __cplusplus || defined _MSC_VER)
2472int
2473yyparse (void)
2474#else
2475int
2476yyparse ()
2477
2478#endif
2479#endif
2480{
2481
2482  int yystate;
2483  int yyn;
2484  int yyresult;
2485  /* Number of tokens to shift before error messages enabled.  */
2486  int yyerrstatus;
2487  /* Look-ahead token as an internal (translated) token number.  */
2488  int yytoken = 0;
2489#if YYERROR_VERBOSE
2490  /* Buffer for error messages, and its allocated size.  */
2491  char yymsgbuf[128];
2492  char *yymsg = yymsgbuf;
2493  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2494#endif
2495
2496  /* Three stacks and their tools:
2497     `yyss': related to states,
2498     `yyvs': related to semantic values,
2499     `yyls': related to locations.
2500
2501     Refer to the stacks thru separate pointers, to allow yyoverflow
2502     to reallocate them elsewhere.  */
2503
2504  /* The state stack.  */
2505  yytype_int16 yyssa[YYINITDEPTH];
2506  yytype_int16 *yyss = yyssa;
2507  yytype_int16 *yyssp;
2508
2509  /* The semantic value stack.  */
2510  YYSTYPE yyvsa[YYINITDEPTH];
2511  YYSTYPE *yyvs = yyvsa;
2512  YYSTYPE *yyvsp;
2513
2514
2515
2516#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
2517
2518  YYSIZE_T yystacksize = YYINITDEPTH;
2519
2520  /* The variables used to return semantic value and location from the
2521     action routines.  */
2522  YYSTYPE yyval;
2523
2524
2525  /* The number of symbols on the RHS of the reduced rule.
2526     Keep to zero when no symbol should be popped.  */
2527  int yylen = 0;
2528
2529  YYDPRINTF ((stderr, "Starting parse\n"));
2530
2531  yystate = 0;
2532  yyerrstatus = 0;
2533  yynerrs = 0;
2534  yychar = YYEMPTY;		/* Cause a token to be read.  */
2535
2536  /* Initialize stack pointers.
2537     Waste one element of value and location stack
2538     so that they stay on the same level as the state stack.
2539     The wasted elements are never initialized.  */
2540
2541  yyssp = yyss;
2542  yyvsp = yyvs;
2543
2544  goto yysetstate;
2545
2546/*------------------------------------------------------------.
2547| yynewstate -- Push a new state, which is found in yystate.  |
2548`------------------------------------------------------------*/
2549 yynewstate:
2550  /* In all cases, when you get here, the value and location stacks
2551     have just been pushed.  So pushing a state here evens the stacks.  */
2552  yyssp++;
2553
2554 yysetstate:
2555  *yyssp = yystate;
2556
2557  if (yyss + yystacksize - 1 <= yyssp)
2558    {
2559      /* Get the current used size of the three stacks, in elements.  */
2560      YYSIZE_T yysize = yyssp - yyss + 1;
2561
2562#ifdef yyoverflow
2563      {
2564	/* Give user a chance to reallocate the stack.  Use copies of
2565	   these so that the &'s don't force the real ones into
2566	   memory.  */
2567	YYSTYPE *yyvs1 = yyvs;
2568	yytype_int16 *yyss1 = yyss;
2569
2570
2571	/* Each stack pointer address is followed by the size of the
2572	   data in use in that stack, in bytes.  This used to be a
2573	   conditional around just the two extra args, but that might
2574	   be undefined if yyoverflow is a macro.  */
2575	yyoverflow (YY_("memory exhausted"),
2576		    &yyss1, yysize * sizeof (*yyssp),
2577		    &yyvs1, yysize * sizeof (*yyvsp),
2578
2579		    &yystacksize);
2580
2581	yyss = yyss1;
2582	yyvs = yyvs1;
2583      }
2584#else /* no yyoverflow */
2585# ifndef YYSTACK_RELOCATE
2586      goto yyexhaustedlab;
2587# else
2588      /* Extend the stack our own way.  */
2589      if (YYMAXDEPTH <= yystacksize)
2590	goto yyexhaustedlab;
2591      yystacksize *= 2;
2592      if (YYMAXDEPTH < yystacksize)
2593	yystacksize = YYMAXDEPTH;
2594
2595      {
2596	yytype_int16 *yyss1 = yyss;
2597	union yyalloc *yyptr =
2598	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2599	if (! yyptr)
2600	  goto yyexhaustedlab;
2601	YYSTACK_RELOCATE (yyss);
2602	YYSTACK_RELOCATE (yyvs);
2603
2604#  undef YYSTACK_RELOCATE
2605	if (yyss1 != yyssa)
2606	  YYSTACK_FREE (yyss1);
2607      }
2608# endif
2609#endif /* no yyoverflow */
2610
2611      yyssp = yyss + yysize - 1;
2612      yyvsp = yyvs + yysize - 1;
2613
2614
2615      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2616		  (unsigned long int) yystacksize));
2617
2618      if (yyss + yystacksize - 1 <= yyssp)
2619	YYABORT;
2620    }
2621
2622  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2623
2624  goto yybackup;
2625
2626/*-----------.
2627| yybackup.  |
2628`-----------*/
2629yybackup:
2630
2631  /* Do appropriate processing given the current state.  Read a
2632     look-ahead token if we need one and don't already have one.  */
2633
2634  /* First try to decide what to do without reference to look-ahead token.  */
2635  yyn = yypact[yystate];
2636  if (yyn == YYPACT_NINF)
2637    goto yydefault;
2638
2639  /* Not known => get a look-ahead token if don't already have one.  */
2640
2641  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */
2642  if (yychar == YYEMPTY)
2643    {
2644      YYDPRINTF ((stderr, "Reading a token: "));
2645      yychar = YYLEX;
2646    }
2647
2648  if (yychar <= YYEOF)
2649    {
2650      yychar = yytoken = YYEOF;
2651      YYDPRINTF ((stderr, "Now at end of input.\n"));
2652    }
2653  else
2654    {
2655      yytoken = YYTRANSLATE (yychar);
2656      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2657    }
2658
2659  /* If the proper action on seeing token YYTOKEN is to reduce or to
2660     detect an error, take that action.  */
2661  yyn += yytoken;
2662  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2663    goto yydefault;
2664  yyn = yytable[yyn];
2665  if (yyn <= 0)
2666    {
2667      if (yyn == 0 || yyn == YYTABLE_NINF)
2668	goto yyerrlab;
2669      yyn = -yyn;
2670      goto yyreduce;
2671    }
2672
2673  if (yyn == YYFINAL)
2674    YYACCEPT;
2675
2676  /* Count tokens shifted since error; after three, turn off error
2677     status.  */
2678  if (yyerrstatus)
2679    yyerrstatus--;
2680
2681  /* Shift the look-ahead token.  */
2682  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2683
2684  /* Discard the shifted token unless it is eof.  */
2685  if (yychar != YYEOF)
2686    yychar = YYEMPTY;
2687
2688  yystate = yyn;
2689  *++yyvsp = yylval;
2690
2691  goto yynewstate;
2692
2693
2694/*-----------------------------------------------------------.
2695| yydefault -- do the default action for the current state.  |
2696`-----------------------------------------------------------*/
2697yydefault:
2698  yyn = yydefact[yystate];
2699  if (yyn == 0)
2700    goto yyerrlab;
2701  goto yyreduce;
2702
2703
2704/*-----------------------------.
2705| yyreduce -- Do a reduction.  |
2706`-----------------------------*/
2707yyreduce:
2708  /* yyn is the number of a rule to reduce with.  */
2709  yylen = yyr2[yyn];
2710
2711  /* If YYLEN is nonzero, implement the default value of the action:
2712     `$$ = $1'.
2713
2714     Otherwise, the following line sets YYVAL to garbage.
2715     This behavior is undocumented and Bison
2716     users should not rely upon it.  Assigning to YYVAL
2717     unconditionally makes the parser a bit smaller, and it avoids a
2718     GCC warning that YYVAL may be used uninitialized.  */
2719  yyval = yyvsp[1-yylen];
2720
2721
2722  YY_REDUCE_PRINT (yyn);
2723  switch (yyn)
2724    {
2725        case 2:
2726#line 98 "awkgram.y"
2727    { if (errorflag==0)
2728			winner = (Node *)stat3(PROGRAM, beginloc, (yyvsp[(1) - (1)].p), endloc); }
2729    break;
2730
2731  case 3:
2732#line 100 "awkgram.y"
2733    { yyclearin; bracecheck(); SYNTAX("bailing out"); }
2734    break;
2735
2736  case 14:
2737#line 124 "awkgram.y"
2738    {inloop++;}
2739    break;
2740
2741  case 15:
2742#line 125 "awkgram.y"
2743    { --inloop; (yyval.p) = stat4(FOR, (yyvsp[(3) - (12)].p), notnull((yyvsp[(6) - (12)].p)), (yyvsp[(9) - (12)].p), (yyvsp[(12) - (12)].p)); }
2744    break;
2745
2746  case 16:
2747#line 126 "awkgram.y"
2748    {inloop++;}
2749    break;
2750
2751  case 17:
2752#line 127 "awkgram.y"
2753    { --inloop; (yyval.p) = stat4(FOR, (yyvsp[(3) - (10)].p), NIL, (yyvsp[(7) - (10)].p), (yyvsp[(10) - (10)].p)); }
2754    break;
2755
2756  case 18:
2757#line 128 "awkgram.y"
2758    {inloop++;}
2759    break;
2760
2761  case 19:
2762#line 129 "awkgram.y"
2763    { --inloop; (yyval.p) = stat3(IN, (yyvsp[(3) - (8)].p), makearr((yyvsp[(5) - (8)].p)), (yyvsp[(8) - (8)].p)); }
2764    break;
2765
2766  case 20:
2767#line 133 "awkgram.y"
2768    { setfname((yyvsp[(1) - (1)].cp)); }
2769    break;
2770
2771  case 21:
2772#line 134 "awkgram.y"
2773    { setfname((yyvsp[(1) - (1)].cp)); }
2774    break;
2775
2776  case 22:
2777#line 138 "awkgram.y"
2778    { (yyval.p) = notnull((yyvsp[(3) - (4)].p)); }
2779    break;
2780
2781  case 27:
2782#line 150 "awkgram.y"
2783    { (yyval.i) = 0; }
2784    break;
2785
2786  case 29:
2787#line 155 "awkgram.y"
2788    { (yyval.i) = 0; }
2789    break;
2790
2791  case 31:
2792#line 161 "awkgram.y"
2793    { (yyval.p) = 0; }
2794    break;
2795
2796  case 33:
2797#line 166 "awkgram.y"
2798    { (yyval.p) = 0; }
2799    break;
2800
2801  case 34:
2802#line 167 "awkgram.y"
2803    { (yyval.p) = (yyvsp[(2) - (3)].p); }
2804    break;
2805
2806  case 35:
2807#line 171 "awkgram.y"
2808    { (yyval.p) = notnull((yyvsp[(1) - (1)].p)); }
2809    break;
2810
2811  case 36:
2812#line 175 "awkgram.y"
2813    { (yyval.p) = stat2(PASTAT, (yyvsp[(1) - (1)].p), stat2(PRINT, rectonode(), NIL)); }
2814    break;
2815
2816  case 37:
2817#line 176 "awkgram.y"
2818    { (yyval.p) = stat2(PASTAT, (yyvsp[(1) - (4)].p), (yyvsp[(3) - (4)].p)); }
2819    break;
2820
2821  case 38:
2822#line 177 "awkgram.y"
2823    { (yyval.p) = pa2stat((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p), stat2(PRINT, rectonode(), NIL)); }
2824    break;
2825
2826  case 39:
2827#line 178 "awkgram.y"
2828    { (yyval.p) = pa2stat((yyvsp[(1) - (6)].p), (yyvsp[(3) - (6)].p), (yyvsp[(5) - (6)].p)); }
2829    break;
2830
2831  case 40:
2832#line 179 "awkgram.y"
2833    { (yyval.p) = stat2(PASTAT, NIL, (yyvsp[(2) - (3)].p)); }
2834    break;
2835
2836  case 41:
2837#line 181 "awkgram.y"
2838    { beginloc = linkum(beginloc, (yyvsp[(3) - (4)].p)); (yyval.p) = 0; }
2839    break;
2840
2841  case 42:
2842#line 183 "awkgram.y"
2843    { endloc = linkum(endloc, (yyvsp[(3) - (4)].p)); (yyval.p) = 0; }
2844    break;
2845
2846  case 43:
2847#line 184 "awkgram.y"
2848    {infunc++;}
2849    break;
2850
2851  case 44:
2852#line 185 "awkgram.y"
2853    { infunc--; curfname=0; defn((Cell *)(yyvsp[(2) - (9)].p), (yyvsp[(4) - (9)].p), (yyvsp[(8) - (9)].p)); (yyval.p) = 0; }
2854    break;
2855
2856  case 46:
2857#line 190 "awkgram.y"
2858    { (yyval.p) = linkum((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2859    break;
2860
2861  case 48:
2862#line 195 "awkgram.y"
2863    { (yyval.p) = linkum((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2864    break;
2865
2866  case 49:
2867#line 199 "awkgram.y"
2868    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2869    break;
2870
2871  case 50:
2872#line 201 "awkgram.y"
2873    { (yyval.p) = op3(CONDEXPR, notnull((yyvsp[(1) - (5)].p)), (yyvsp[(3) - (5)].p), (yyvsp[(5) - (5)].p)); }
2874    break;
2875
2876  case 51:
2877#line 203 "awkgram.y"
2878    { (yyval.p) = op2(BOR, notnull((yyvsp[(1) - (3)].p)), notnull((yyvsp[(3) - (3)].p))); }
2879    break;
2880
2881  case 52:
2882#line 205 "awkgram.y"
2883    { (yyval.p) = op2(AND, notnull((yyvsp[(1) - (3)].p)), notnull((yyvsp[(3) - (3)].p))); }
2884    break;
2885
2886  case 53:
2887#line 206 "awkgram.y"
2888    { (yyval.p) = op3((yyvsp[(2) - (3)].i), NIL, (yyvsp[(1) - (3)].p), (Node*)makedfa((yyvsp[(3) - (3)].s), 0)); }
2889    break;
2890
2891  case 54:
2892#line 208 "awkgram.y"
2893    { if (constnode((yyvsp[(3) - (3)].p)))
2894			(yyval.p) = op3((yyvsp[(2) - (3)].i), NIL, (yyvsp[(1) - (3)].p), (Node*)makedfa(strnode((yyvsp[(3) - (3)].p)), 0));
2895		  else
2896			(yyval.p) = op3((yyvsp[(2) - (3)].i), (Node *)1, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2897    break;
2898
2899  case 55:
2900#line 212 "awkgram.y"
2901    { (yyval.p) = op2(INTEST, (yyvsp[(1) - (3)].p), makearr((yyvsp[(3) - (3)].p))); }
2902    break;
2903
2904  case 56:
2905#line 213 "awkgram.y"
2906    { (yyval.p) = op2(INTEST, (yyvsp[(2) - (5)].p), makearr((yyvsp[(5) - (5)].p))); }
2907    break;
2908
2909  case 57:
2910#line 214 "awkgram.y"
2911    { (yyval.p) = op2(CAT, (yyvsp[(1) - (2)].p), (yyvsp[(2) - (2)].p)); }
2912    break;
2913
2914  case 60:
2915#line 220 "awkgram.y"
2916    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2917    break;
2918
2919  case 61:
2920#line 222 "awkgram.y"
2921    { (yyval.p) = op3(CONDEXPR, notnull((yyvsp[(1) - (5)].p)), (yyvsp[(3) - (5)].p), (yyvsp[(5) - (5)].p)); }
2922    break;
2923
2924  case 62:
2925#line 224 "awkgram.y"
2926    { (yyval.p) = op2(BOR, notnull((yyvsp[(1) - (3)].p)), notnull((yyvsp[(3) - (3)].p))); }
2927    break;
2928
2929  case 63:
2930#line 226 "awkgram.y"
2931    { (yyval.p) = op2(AND, notnull((yyvsp[(1) - (3)].p)), notnull((yyvsp[(3) - (3)].p))); }
2932    break;
2933
2934  case 64:
2935#line 227 "awkgram.y"
2936    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2937    break;
2938
2939  case 65:
2940#line 228 "awkgram.y"
2941    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2942    break;
2943
2944  case 66:
2945#line 229 "awkgram.y"
2946    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2947    break;
2948
2949  case 67:
2950#line 230 "awkgram.y"
2951    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2952    break;
2953
2954  case 68:
2955#line 231 "awkgram.y"
2956    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2957    break;
2958
2959  case 69:
2960#line 232 "awkgram.y"
2961    { (yyval.p) = op2((yyvsp[(2) - (3)].i), (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2962    break;
2963
2964  case 70:
2965#line 233 "awkgram.y"
2966    { (yyval.p) = op3((yyvsp[(2) - (3)].i), NIL, (yyvsp[(1) - (3)].p), (Node*)makedfa((yyvsp[(3) - (3)].s), 0)); }
2967    break;
2968
2969  case 71:
2970#line 235 "awkgram.y"
2971    { if (constnode((yyvsp[(3) - (3)].p)))
2972			(yyval.p) = op3((yyvsp[(2) - (3)].i), NIL, (yyvsp[(1) - (3)].p), (Node*)makedfa(strnode((yyvsp[(3) - (3)].p)), 0));
2973		  else
2974			(yyval.p) = op3((yyvsp[(2) - (3)].i), (Node *)1, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
2975    break;
2976
2977  case 72:
2978#line 239 "awkgram.y"
2979    { (yyval.p) = op2(INTEST, (yyvsp[(1) - (3)].p), makearr((yyvsp[(3) - (3)].p))); }
2980    break;
2981
2982  case 73:
2983#line 240 "awkgram.y"
2984    { (yyval.p) = op2(INTEST, (yyvsp[(2) - (5)].p), makearr((yyvsp[(5) - (5)].p))); }
2985    break;
2986
2987  case 74:
2988#line 241 "awkgram.y"
2989    {
2990			if (safe) SYNTAX("cmd | getline is unsafe");
2991			else (yyval.p) = op3(GETLINE, (yyvsp[(4) - (4)].p), itonp((yyvsp[(2) - (4)].i)), (yyvsp[(1) - (4)].p)); }
2992    break;
2993
2994  case 75:
2995#line 244 "awkgram.y"
2996    {
2997			if (safe) SYNTAX("cmd | getline is unsafe");
2998			else (yyval.p) = op3(GETLINE, (Node*)0, itonp((yyvsp[(2) - (3)].i)), (yyvsp[(1) - (3)].p)); }
2999    break;
3000
3001  case 76:
3002#line 247 "awkgram.y"
3003    { (yyval.p) = op2(CAT, (yyvsp[(1) - (2)].p), (yyvsp[(2) - (2)].p)); }
3004    break;
3005
3006  case 79:
3007#line 253 "awkgram.y"
3008    { (yyval.p) = linkum((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3009    break;
3010
3011  case 80:
3012#line 254 "awkgram.y"
3013    { (yyval.p) = linkum((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3014    break;
3015
3016  case 82:
3017#line 259 "awkgram.y"
3018    { (yyval.p) = linkum((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3019    break;
3020
3021  case 83:
3022#line 263 "awkgram.y"
3023    { (yyval.p) = rectonode(); }
3024    break;
3025
3026  case 85:
3027#line 265 "awkgram.y"
3028    { (yyval.p) = (yyvsp[(2) - (3)].p); }
3029    break;
3030
3031  case 94:
3032#line 282 "awkgram.y"
3033    { (yyval.p) = op3(MATCH, NIL, rectonode(), (Node*)makedfa((yyvsp[(1) - (1)].s), 0)); }
3034    break;
3035
3036  case 95:
3037#line 283 "awkgram.y"
3038    { (yyval.p) = op1(NOT, notnull((yyvsp[(2) - (2)].p))); }
3039    break;
3040
3041  case 96:
3042#line 287 "awkgram.y"
3043    {startreg();}
3044    break;
3045
3046  case 97:
3047#line 287 "awkgram.y"
3048    { (yyval.s) = (yyvsp[(3) - (4)].s); }
3049    break;
3050
3051  case 100:
3052#line 295 "awkgram.y"
3053    {
3054			if (safe) SYNTAX("print | is unsafe");
3055			else (yyval.p) = stat3((yyvsp[(1) - (4)].i), (yyvsp[(2) - (4)].p), itonp((yyvsp[(3) - (4)].i)), (yyvsp[(4) - (4)].p)); }
3056    break;
3057
3058  case 101:
3059#line 298 "awkgram.y"
3060    {
3061			if (safe) SYNTAX("print >> is unsafe");
3062			else (yyval.p) = stat3((yyvsp[(1) - (4)].i), (yyvsp[(2) - (4)].p), itonp((yyvsp[(3) - (4)].i)), (yyvsp[(4) - (4)].p)); }
3063    break;
3064
3065  case 102:
3066#line 301 "awkgram.y"
3067    {
3068			if (safe) SYNTAX("print > is unsafe");
3069			else (yyval.p) = stat3((yyvsp[(1) - (4)].i), (yyvsp[(2) - (4)].p), itonp((yyvsp[(3) - (4)].i)), (yyvsp[(4) - (4)].p)); }
3070    break;
3071
3072  case 103:
3073#line 304 "awkgram.y"
3074    { (yyval.p) = stat3((yyvsp[(1) - (2)].i), (yyvsp[(2) - (2)].p), NIL, NIL); }
3075    break;
3076
3077  case 104:
3078#line 305 "awkgram.y"
3079    { (yyval.p) = stat2(DELETE, makearr((yyvsp[(2) - (5)].p)), (yyvsp[(4) - (5)].p)); }
3080    break;
3081
3082  case 105:
3083#line 306 "awkgram.y"
3084    { (yyval.p) = stat2(DELETE, makearr((yyvsp[(2) - (2)].p)), 0); }
3085    break;
3086
3087  case 106:
3088#line 307 "awkgram.y"
3089    { (yyval.p) = exptostat((yyvsp[(1) - (1)].p)); }
3090    break;
3091
3092  case 107:
3093#line 308 "awkgram.y"
3094    { yyclearin; SYNTAX("illegal statement"); }
3095    break;
3096
3097  case 110:
3098#line 317 "awkgram.y"
3099    { if (!inloop) SYNTAX("break illegal outside of loops");
3100				  (yyval.p) = stat1(BREAK, NIL); }
3101    break;
3102
3103  case 111:
3104#line 319 "awkgram.y"
3105    {  if (!inloop) SYNTAX("continue illegal outside of loops");
3106				  (yyval.p) = stat1(CONTINUE, NIL); }
3107    break;
3108
3109  case 112:
3110#line 321 "awkgram.y"
3111    {inloop++;}
3112    break;
3113
3114  case 113:
3115#line 321 "awkgram.y"
3116    {--inloop;}
3117    break;
3118
3119  case 114:
3120#line 322 "awkgram.y"
3121    { (yyval.p) = stat2(DO, (yyvsp[(3) - (9)].p), notnull((yyvsp[(7) - (9)].p))); }
3122    break;
3123
3124  case 115:
3125#line 323 "awkgram.y"
3126    { (yyval.p) = stat1(EXIT, (yyvsp[(2) - (3)].p)); }
3127    break;
3128
3129  case 116:
3130#line 324 "awkgram.y"
3131    { (yyval.p) = stat1(EXIT, NIL); }
3132    break;
3133
3134  case 118:
3135#line 326 "awkgram.y"
3136    { (yyval.p) = stat3(IF, (yyvsp[(1) - (4)].p), (yyvsp[(2) - (4)].p), (yyvsp[(4) - (4)].p)); }
3137    break;
3138
3139  case 119:
3140#line 327 "awkgram.y"
3141    { (yyval.p) = stat3(IF, (yyvsp[(1) - (2)].p), (yyvsp[(2) - (2)].p), NIL); }
3142    break;
3143
3144  case 120:
3145#line 328 "awkgram.y"
3146    { (yyval.p) = (yyvsp[(2) - (3)].p); }
3147    break;
3148
3149  case 121:
3150#line 329 "awkgram.y"
3151    { if (infunc)
3152				SYNTAX("next is illegal inside a function");
3153			  (yyval.p) = stat1(NEXT, NIL); }
3154    break;
3155
3156  case 122:
3157#line 332 "awkgram.y"
3158    { if (infunc)
3159				SYNTAX("nextfile is illegal inside a function");
3160			  (yyval.p) = stat1(NEXTFILE, NIL); }
3161    break;
3162
3163  case 123:
3164#line 335 "awkgram.y"
3165    { (yyval.p) = stat1(RETURN, (yyvsp[(2) - (3)].p)); }
3166    break;
3167
3168  case 124:
3169#line 336 "awkgram.y"
3170    { (yyval.p) = stat1(RETURN, NIL); }
3171    break;
3172
3173  case 126:
3174#line 338 "awkgram.y"
3175    {inloop++;}
3176    break;
3177
3178  case 127:
3179#line 338 "awkgram.y"
3180    { --inloop; (yyval.p) = stat2(WHILE, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3181    break;
3182
3183  case 128:
3184#line 339 "awkgram.y"
3185    { (yyval.p) = 0; }
3186    break;
3187
3188  case 130:
3189#line 344 "awkgram.y"
3190    { (yyval.p) = linkum((yyvsp[(1) - (2)].p), (yyvsp[(2) - (2)].p)); }
3191    break;
3192
3193  case 133:
3194#line 352 "awkgram.y"
3195    { (yyval.p) = op2(DIVEQ, (yyvsp[(1) - (4)].p), (yyvsp[(4) - (4)].p)); }
3196    break;
3197
3198  case 134:
3199#line 353 "awkgram.y"
3200    { (yyval.p) = op2(ADD, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3201    break;
3202
3203  case 135:
3204#line 354 "awkgram.y"
3205    { (yyval.p) = op2(MINUS, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3206    break;
3207
3208  case 136:
3209#line 355 "awkgram.y"
3210    { (yyval.p) = op2(MULT, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3211    break;
3212
3213  case 137:
3214#line 356 "awkgram.y"
3215    { (yyval.p) = op2(DIVIDE, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3216    break;
3217
3218  case 138:
3219#line 357 "awkgram.y"
3220    { (yyval.p) = op2(DIVIDE, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3221    break;
3222
3223  case 139:
3224#line 358 "awkgram.y"
3225    { (yyval.p) = op2(MOD, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3226    break;
3227
3228  case 140:
3229#line 359 "awkgram.y"
3230    { (yyval.p) = op2(POWER, (yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].p)); }
3231    break;
3232
3233  case 141:
3234#line 360 "awkgram.y"
3235    { (yyval.p) = op1(UMINUS, (yyvsp[(2) - (2)].p)); }
3236    break;
3237
3238  case 142:
3239#line 361 "awkgram.y"
3240    { (yyval.p) = (yyvsp[(2) - (2)].p); }
3241    break;
3242
3243  case 143:
3244#line 362 "awkgram.y"
3245    { (yyval.p) = op1(NOT, notnull((yyvsp[(2) - (2)].p))); }
3246    break;
3247
3248  case 144:
3249#line 363 "awkgram.y"
3250    { (yyval.p) = op2(BLTIN, itonp((yyvsp[(1) - (3)].i)), rectonode()); }
3251    break;
3252
3253  case 145:
3254#line 364 "awkgram.y"
3255    { (yyval.p) = op2(BLTIN, itonp((yyvsp[(1) - (4)].i)), (yyvsp[(3) - (4)].p)); }
3256    break;
3257
3258  case 146:
3259#line 365 "awkgram.y"
3260    { (yyval.p) = op2(BLTIN, itonp((yyvsp[(1) - (1)].i)), rectonode()); }
3261    break;
3262
3263  case 147:
3264#line 366 "awkgram.y"
3265    { (yyval.p) = op2(CALL, celltonode((yyvsp[(1) - (3)].cp),CVAR), NIL); }
3266    break;
3267
3268  case 148:
3269#line 367 "awkgram.y"
3270    { (yyval.p) = op2(CALL, celltonode((yyvsp[(1) - (4)].cp),CVAR), (yyvsp[(3) - (4)].p)); }
3271    break;
3272
3273  case 149:
3274#line 368 "awkgram.y"
3275    { (yyval.p) = op1(CLOSE, (yyvsp[(2) - (2)].p)); }
3276    break;
3277
3278  case 150:
3279#line 369 "awkgram.y"
3280    { (yyval.p) = op1(PREDECR, (yyvsp[(2) - (2)].p)); }
3281    break;
3282
3283  case 151:
3284#line 370 "awkgram.y"
3285    { (yyval.p) = op1(PREINCR, (yyvsp[(2) - (2)].p)); }
3286    break;
3287
3288  case 152:
3289#line 371 "awkgram.y"
3290    { (yyval.p) = op1(POSTDECR, (yyvsp[(1) - (2)].p)); }
3291    break;
3292
3293  case 153:
3294#line 372 "awkgram.y"
3295    { (yyval.p) = op1(POSTINCR, (yyvsp[(1) - (2)].p)); }
3296    break;
3297
3298  case 154:
3299#line 373 "awkgram.y"
3300    { (yyval.p) = op3(GETLINE, (yyvsp[(2) - (4)].p), itonp((yyvsp[(3) - (4)].i)), (yyvsp[(4) - (4)].p)); }
3301    break;
3302
3303  case 155:
3304#line 374 "awkgram.y"
3305    { (yyval.p) = op3(GETLINE, NIL, itonp((yyvsp[(2) - (3)].i)), (yyvsp[(3) - (3)].p)); }
3306    break;
3307
3308  case 156:
3309#line 375 "awkgram.y"
3310    { (yyval.p) = op3(GETLINE, (yyvsp[(2) - (2)].p), NIL, NIL); }
3311    break;
3312
3313  case 157:
3314#line 376 "awkgram.y"
3315    { (yyval.p) = op3(GETLINE, NIL, NIL, NIL); }
3316    break;
3317
3318  case 158:
3319#line 378 "awkgram.y"
3320    { (yyval.p) = op2(INDEX, (yyvsp[(3) - (6)].p), (yyvsp[(5) - (6)].p)); }
3321    break;
3322
3323  case 159:
3324#line 380 "awkgram.y"
3325    { SYNTAX("index() doesn't permit regular expressions");
3326		  (yyval.p) = op2(INDEX, (yyvsp[(3) - (6)].p), (Node*)(yyvsp[(5) - (6)].s)); }
3327    break;
3328
3329  case 160:
3330#line 382 "awkgram.y"
3331    { (yyval.p) = (yyvsp[(2) - (3)].p); }
3332    break;
3333
3334  case 161:
3335#line 384 "awkgram.y"
3336    { (yyval.p) = op3(MATCHFCN, NIL, (yyvsp[(3) - (6)].p), (Node*)makedfa((yyvsp[(5) - (6)].s), 1)); }
3337    break;
3338
3339  case 162:
3340#line 386 "awkgram.y"
3341    { if (constnode((yyvsp[(5) - (6)].p)))
3342			(yyval.p) = op3(MATCHFCN, NIL, (yyvsp[(3) - (6)].p), (Node*)makedfa(strnode((yyvsp[(5) - (6)].p)), 1));
3343		  else
3344			(yyval.p) = op3(MATCHFCN, (Node *)1, (yyvsp[(3) - (6)].p), (yyvsp[(5) - (6)].p)); }
3345    break;
3346
3347  case 163:
3348#line 390 "awkgram.y"
3349    { (yyval.p) = celltonode((yyvsp[(1) - (1)].cp), CCON); }
3350    break;
3351
3352  case 164:
3353#line 392 "awkgram.y"
3354    { (yyval.p) = op4(SPLIT, (yyvsp[(3) - (8)].p), makearr((yyvsp[(5) - (8)].p)), (yyvsp[(7) - (8)].p), (Node*)STRING); }
3355    break;
3356
3357  case 165:
3358#line 394 "awkgram.y"
3359    { (yyval.p) = op4(SPLIT, (yyvsp[(3) - (8)].p), makearr((yyvsp[(5) - (8)].p)), (Node*)makedfa((yyvsp[(7) - (8)].s), 1), (Node *)REGEXPR); }
3360    break;
3361
3362  case 166:
3363#line 396 "awkgram.y"
3364    { (yyval.p) = op4(SPLIT, (yyvsp[(3) - (6)].p), makearr((yyvsp[(5) - (6)].p)), NIL, (Node*)STRING); }
3365    break;
3366
3367  case 167:
3368#line 397 "awkgram.y"
3369    { (yyval.p) = op1((yyvsp[(1) - (4)].i), (yyvsp[(3) - (4)].p)); }
3370    break;
3371
3372  case 168:
3373#line 398 "awkgram.y"
3374    { (yyval.p) = celltonode((yyvsp[(1) - (1)].cp), CCON); }
3375    break;
3376
3377  case 169:
3378#line 400 "awkgram.y"
3379    { (yyval.p) = op4((yyvsp[(1) - (6)].i), NIL, (Node*)makedfa((yyvsp[(3) - (6)].s), 1), (yyvsp[(5) - (6)].p), rectonode()); }
3380    break;
3381
3382  case 170:
3383#line 402 "awkgram.y"
3384    { if (constnode((yyvsp[(3) - (6)].p)))
3385			(yyval.p) = op4((yyvsp[(1) - (6)].i), NIL, (Node*)makedfa(strnode((yyvsp[(3) - (6)].p)), 1), (yyvsp[(5) - (6)].p), rectonode());
3386		  else
3387			(yyval.p) = op4((yyvsp[(1) - (6)].i), (Node *)1, (yyvsp[(3) - (6)].p), (yyvsp[(5) - (6)].p), rectonode()); }
3388    break;
3389
3390  case 171:
3391#line 407 "awkgram.y"
3392    { (yyval.p) = op4((yyvsp[(1) - (8)].i), NIL, (Node*)makedfa((yyvsp[(3) - (8)].s), 1), (yyvsp[(5) - (8)].p), (yyvsp[(7) - (8)].p)); }
3393    break;
3394
3395  case 172:
3396#line 409 "awkgram.y"
3397    { if (constnode((yyvsp[(3) - (8)].p)))
3398			(yyval.p) = op4((yyvsp[(1) - (8)].i), NIL, (Node*)makedfa(strnode((yyvsp[(3) - (8)].p)), 1), (yyvsp[(5) - (8)].p), (yyvsp[(7) - (8)].p));
3399		  else
3400			(yyval.p) = op4((yyvsp[(1) - (8)].i), (Node *)1, (yyvsp[(3) - (8)].p), (yyvsp[(5) - (8)].p), (yyvsp[(7) - (8)].p)); }
3401    break;
3402
3403  case 173:
3404#line 414 "awkgram.y"
3405    { (yyval.p) = op3(SUBSTR, (yyvsp[(3) - (8)].p), (yyvsp[(5) - (8)].p), (yyvsp[(7) - (8)].p)); }
3406    break;
3407
3408  case 174:
3409#line 416 "awkgram.y"
3410    { (yyval.p) = op3(SUBSTR, (yyvsp[(3) - (6)].p), (yyvsp[(5) - (6)].p), NIL); }
3411    break;
3412
3413  case 177:
3414#line 422 "awkgram.y"
3415    { (yyval.p) = op2(ARRAY, makearr((yyvsp[(1) - (4)].p)), (yyvsp[(3) - (4)].p)); }
3416    break;
3417
3418  case 178:
3419#line 423 "awkgram.y"
3420    { (yyval.p) = op1(INDIRECT, celltonode((yyvsp[(1) - (1)].cp), CVAR)); }
3421    break;
3422
3423  case 179:
3424#line 424 "awkgram.y"
3425    { (yyval.p) = op1(INDIRECT, (yyvsp[(2) - (2)].p)); }
3426    break;
3427
3428  case 180:
3429#line 428 "awkgram.y"
3430    { arglist = (yyval.p) = 0; }
3431    break;
3432
3433  case 181:
3434#line 429 "awkgram.y"
3435    { arglist = (yyval.p) = celltonode((yyvsp[(1) - (1)].cp),CVAR); }
3436    break;
3437
3438  case 182:
3439#line 430 "awkgram.y"
3440    {
3441			checkdup((yyvsp[(1) - (3)].p), (yyvsp[(3) - (3)].cp));
3442			arglist = (yyval.p) = linkum((yyvsp[(1) - (3)].p),celltonode((yyvsp[(3) - (3)].cp),CVAR)); }
3443    break;
3444
3445  case 183:
3446#line 436 "awkgram.y"
3447    { (yyval.p) = celltonode((yyvsp[(1) - (1)].cp), CVAR); }
3448    break;
3449
3450  case 184:
3451#line 437 "awkgram.y"
3452    { (yyval.p) = op1(ARG, itonp((yyvsp[(1) - (1)].i))); }
3453    break;
3454
3455  case 185:
3456#line 438 "awkgram.y"
3457    { (yyval.p) = op1(VARNF, (Node *) (yyvsp[(1) - (1)].cp)); }
3458    break;
3459
3460  case 186:
3461#line 443 "awkgram.y"
3462    { (yyval.p) = notnull((yyvsp[(3) - (4)].p)); }
3463    break;
3464
3465
3466/* Line 1267 of yacc.c.  */
3467#line 3468 "y.tab.c"
3468      default: break;
3469    }
3470  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
3471
3472  YYPOPSTACK (yylen);
3473  yylen = 0;
3474  YY_STACK_PRINT (yyss, yyssp);
3475
3476  *++yyvsp = yyval;
3477
3478
3479  /* Now `shift' the result of the reduction.  Determine what state
3480     that goes to, based on the state we popped back to and the rule
3481     number reduced by.  */
3482
3483  yyn = yyr1[yyn];
3484
3485  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
3486  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3487    yystate = yytable[yystate];
3488  else
3489    yystate = yydefgoto[yyn - YYNTOKENS];
3490
3491  goto yynewstate;
3492
3493
3494/*------------------------------------.
3495| yyerrlab -- here on detecting error |
3496`------------------------------------*/
3497yyerrlab:
3498  /* If not already recovering from an error, report this error.  */
3499  if (!yyerrstatus)
3500    {
3501      ++yynerrs;
3502#if ! YYERROR_VERBOSE
3503      yyerror (YY_("syntax error"));
3504#else
3505      {
3506	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
3507	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
3508	  {
3509	    YYSIZE_T yyalloc = 2 * yysize;
3510	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
3511	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
3512	    if (yymsg != yymsgbuf)
3513	      YYSTACK_FREE (yymsg);
3514	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
3515	    if (yymsg)
3516	      yymsg_alloc = yyalloc;
3517	    else
3518	      {
3519		yymsg = yymsgbuf;
3520		yymsg_alloc = sizeof yymsgbuf;
3521	      }
3522	  }
3523
3524	if (0 < yysize && yysize <= yymsg_alloc)
3525	  {
3526	    (void) yysyntax_error (yymsg, yystate, yychar);
3527	    yyerror (yymsg);
3528	  }
3529	else
3530	  {
3531	    yyerror (YY_("syntax error"));
3532	    if (yysize != 0)
3533	      goto yyexhaustedlab;
3534	  }
3535      }
3536#endif
3537    }
3538
3539
3540
3541  if (yyerrstatus == 3)
3542    {
3543      /* If just tried and failed to reuse look-ahead token after an
3544	 error, discard it.  */
3545
3546      if (yychar <= YYEOF)
3547	{
3548	  /* Return failure if at end of input.  */
3549	  if (yychar == YYEOF)
3550	    YYABORT;
3551	}
3552      else
3553	{
3554	  yydestruct ("Error: discarding",
3555		      yytoken, &yylval);
3556	  yychar = YYEMPTY;
3557	}
3558    }
3559
3560  /* Else will try to reuse look-ahead token after shifting the error
3561     token.  */
3562  goto yyerrlab1;
3563
3564
3565/*---------------------------------------------------.
3566| yyerrorlab -- error raised explicitly by YYERROR.  |
3567`---------------------------------------------------*/
3568yyerrorlab:
3569
3570  /* Pacify compilers like GCC when the user code never invokes
3571     YYERROR and the label yyerrorlab therefore never appears in user
3572     code.  */
3573  if (/*CONSTCOND*/ 0)
3574     goto yyerrorlab;
3575
3576  /* Do not reclaim the symbols of the rule which action triggered
3577     this YYERROR.  */
3578  YYPOPSTACK (yylen);
3579  yylen = 0;
3580  YY_STACK_PRINT (yyss, yyssp);
3581  yystate = *yyssp;
3582  goto yyerrlab1;
3583
3584
3585/*-------------------------------------------------------------.
3586| yyerrlab1 -- common code for both syntax error and YYERROR.  |
3587`-------------------------------------------------------------*/
3588yyerrlab1:
3589  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
3590
3591  for (;;)
3592    {
3593      yyn = yypact[yystate];
3594      if (yyn != YYPACT_NINF)
3595	{
3596	  yyn += YYTERROR;
3597	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
3598	    {
3599	      yyn = yytable[yyn];
3600	      if (0 < yyn)
3601		break;
3602	    }
3603	}
3604
3605      /* Pop the current state because it cannot handle the error token.  */
3606      if (yyssp == yyss)
3607	YYABORT;
3608
3609
3610      yydestruct ("Error: popping",
3611		  yystos[yystate], yyvsp);
3612      YYPOPSTACK (1);
3613      yystate = *yyssp;
3614      YY_STACK_PRINT (yyss, yyssp);
3615    }
3616
3617  if (yyn == YYFINAL)
3618    YYACCEPT;
3619
3620  *++yyvsp = yylval;
3621
3622
3623  /* Shift the error token.  */
3624  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
3625
3626  yystate = yyn;
3627  goto yynewstate;
3628
3629
3630/*-------------------------------------.
3631| yyacceptlab -- YYACCEPT comes here.  |
3632`-------------------------------------*/
3633yyacceptlab:
3634  yyresult = 0;
3635  goto yyreturn;
3636
3637/*-----------------------------------.
3638| yyabortlab -- YYABORT comes here.  |
3639`-----------------------------------*/
3640yyabortlab:
3641  yyresult = 1;
3642  goto yyreturn;
3643
3644#ifndef yyoverflow
3645/*-------------------------------------------------.
3646| yyexhaustedlab -- memory exhaustion comes here.  |
3647`-------------------------------------------------*/
3648yyexhaustedlab:
3649  yyerror (YY_("memory exhausted"));
3650  yyresult = 2;
3651  /* Fall through.  */
3652#endif
3653
3654yyreturn:
3655  if (yychar != YYEOF && yychar != YYEMPTY)
3656     yydestruct ("Cleanup: discarding lookahead",
3657		 yytoken, &yylval);
3658  /* Do not reclaim the symbols of the rule which action triggered
3659     this YYABORT or YYACCEPT.  */
3660  YYPOPSTACK (yylen);
3661  YY_STACK_PRINT (yyss, yyssp);
3662  while (yyssp != yyss)
3663    {
3664      yydestruct ("Cleanup: popping",
3665		  yystos[*yyssp], yyvsp);
3666      YYPOPSTACK (1);
3667    }
3668#ifndef yyoverflow
3669  if (yyss != yyssa)
3670    YYSTACK_FREE (yyss);
3671#endif
3672#if YYERROR_VERBOSE
3673  if (yymsg != yymsgbuf)
3674    YYSTACK_FREE (yymsg);
3675#endif
3676  /* Make sure YYID is used.  */
3677  return YYID (yyresult);
3678}
3679
3680
3681#line 446 "awkgram.y"
3682
3683
3684void setfname(Cell *p)
3685{
3686	if (isarr(p))
3687		SYNTAX("%s is an array, not a function", p->nval);
3688	else if (isfcn(p))
3689		SYNTAX("you can't define function %s more than once", p->nval);
3690	curfname = p->nval;
3691}
3692
3693int constnode(Node *p)
3694{
3695	return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
3696}
3697
3698char *strnode(Node *p)
3699{
3700	return ((Cell *)(p->narg[0]))->sval;
3701}
3702
3703Node *notnull(Node *n)
3704{
3705	switch (n->nobj) {
3706	case LE: case LT: case EQ: case NE: case GT: case GE:
3707	case BOR: case AND: case NOT:
3708		return n;
3709	default:
3710		return op2(NE, n, nullnode);
3711	}
3712}
3713
3714void checkdup(Node *vl, Cell *cp)	/* check if name already in list */
3715{
3716	char *s = cp->nval;
3717	for ( ; vl; vl = vl->nnext) {
3718		if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
3719			SYNTAX("duplicate argument %s", s);
3720			break;
3721		}
3722	}
3723}
3724
3725