Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision fc4a0fa1644cfe82d2b775fe96dcfda5a4565501)
+++ src/Parser/parser.cc	(revision fc4a0fa1644cfe82d2b775fe96dcfda5a4565501)
@@ -0,0 +1,9433 @@
+/* A Bison parser, made by GNU Bison 2.5.  */
+
+/* Bison implementation for Yacc-like parsers in C
+   
+      Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
+   
+   This program is free software: you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation, either version 3 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* As a special exception, you may create a larger work that contains
+   part or all of the Bison parser skeleton and distribute that work
+   under terms of your choice, so long as that work isn't itself a
+   parser generator using the skeleton or a modified version thereof
+   as a parser skeleton.  Alternatively, if you modify or redistribute
+   the parser skeleton itself, you may (at your option) remove this
+   special exception, which will cause the skeleton and the resulting
+   Bison output files to be licensed under the GNU General Public
+   License without this special exception.
+   
+   This special exception was added by the Free Software Foundation in
+   version 2.2 of Bison.  */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+   simplifying the original so-called "semantic" parser.  */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+   infringing on user name space.  This should be done even for local
+   variables, as they might otherwise be expanded by user macros.
+   There are some unavoidable exceptions within include files to
+   define necessary library symbols; they are noted "INFRINGES ON
+   USER NAME SPACE" below.  */
+
+/* Identify Bison output.  */
+#define YYBISON 1
+
+/* Bison version.  */
+#define YYBISON_VERSION "2.5"
+
+/* Skeleton name.  */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers.  */
+#define YYPURE 0
+
+/* Push parsers.  */
+#define YYPUSH 0
+
+/* Pull parsers.  */
+#define YYPULL 1
+
+/* Using locations.  */
+#define YYLSP_NEEDED 0
+
+
+
+/* Copy the first part of user declarations.  */
+
+/* Line 268 of yacc.c  */
+#line 42 "parser.yy"
+
+#define YYDEBUG_LEXER_TEXT (yylval)						// lexer loads this up each time
+#define YYDEBUG 1										// get the pretty debugging code to compile
+
+#undef __GNUC_MINOR__
+
+#include <cstdio>
+#include <stack>
+#include "lex.h"
+#include "parser.h"
+#include "ParseNode.h"
+#include "TypedefTable.h"
+#include "TypeData.h"
+#include "LinkageSpec.h"
+
+extern DeclarationNode * parseTree;
+extern LinkageSpec::Spec linkage;
+extern TypedefTable typedefTable;
+
+std::stack< LinkageSpec::Spec > linkageStack;
+
+void appendStr( std::string *to, std::string *from ) {
+	// "abc" "def" "ghi" => "abcdefghi", remove new text from quotes and insert before last quote in old string.
+	to->insert( to->length() - 1, from->substr( 1, from->length() - 2 ) );
+} // appendStr
+
+
+/* Line 268 of yacc.c  */
+#line 99 "Parser/parser.cc"
+
+/* Enabling traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 1
+#endif
+
+/* Enabling verbose error messages.  */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table.  */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+
+/* Tokens.  */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+   /* Put the tokens into the symbol table, so that GDB and other debuggers
+      know about them.  */
+   enum yytokentype {
+     TYPEDEF = 258,
+     AUTO = 259,
+     EXTERN = 260,
+     REGISTER = 261,
+     STATIC = 262,
+     INLINE = 263,
+     FORTRAN = 264,
+     CONST = 265,
+     VOLATILE = 266,
+     RESTRICT = 267,
+     FORALL = 268,
+     LVALUE = 269,
+     VOID = 270,
+     CHAR = 271,
+     SHORT = 272,
+     INT = 273,
+     LONG = 274,
+     FLOAT = 275,
+     DOUBLE = 276,
+     SIGNED = 277,
+     UNSIGNED = 278,
+     VALIST = 279,
+     BOOL = 280,
+     COMPLEX = 281,
+     IMAGINARY = 282,
+     TYPEOF = 283,
+     LABEL = 284,
+     ENUM = 285,
+     STRUCT = 286,
+     UNION = 287,
+     OTYPE = 288,
+     FTYPE = 289,
+     DTYPE = 290,
+     TRAIT = 291,
+     SIZEOF = 292,
+     OFFSETOF = 293,
+     ATTRIBUTE = 294,
+     EXTENSION = 295,
+     IF = 296,
+     ELSE = 297,
+     SWITCH = 298,
+     CASE = 299,
+     DEFAULT = 300,
+     DO = 301,
+     WHILE = 302,
+     FOR = 303,
+     BREAK = 304,
+     CONTINUE = 305,
+     GOTO = 306,
+     RETURN = 307,
+     CHOOSE = 308,
+     DISABLE = 309,
+     ENABLE = 310,
+     FALLTHRU = 311,
+     TRY = 312,
+     CATCH = 313,
+     CATCHRESUME = 314,
+     FINALLY = 315,
+     THROW = 316,
+     THROWRESUME = 317,
+     AT = 318,
+     ASM = 319,
+     ALIGNAS = 320,
+     ALIGNOF = 321,
+     ATOMIC = 322,
+     GENERIC = 323,
+     NORETURN = 324,
+     STATICASSERT = 325,
+     THREADLOCAL = 326,
+     IDENTIFIER = 327,
+     QUOTED_IDENTIFIER = 328,
+     TYPEDEFname = 329,
+     TYPEGENname = 330,
+     ATTR_IDENTIFIER = 331,
+     ATTR_TYPEDEFname = 332,
+     ATTR_TYPEGENname = 333,
+     INTEGERconstant = 334,
+     FLOATINGconstant = 335,
+     CHARACTERconstant = 336,
+     STRINGliteral = 337,
+     ZERO = 338,
+     ONE = 339,
+     ARROW = 340,
+     ICR = 341,
+     DECR = 342,
+     LS = 343,
+     RS = 344,
+     LE = 345,
+     GE = 346,
+     EQ = 347,
+     NE = 348,
+     ANDAND = 349,
+     OROR = 350,
+     ELLIPSIS = 351,
+     MULTassign = 352,
+     DIVassign = 353,
+     MODassign = 354,
+     PLUSassign = 355,
+     MINUSassign = 356,
+     LSassign = 357,
+     RSassign = 358,
+     ANDassign = 359,
+     ERassign = 360,
+     ORassign = 361,
+     ATassign = 362,
+     THEN = 363
+   };
+#endif
+/* Tokens.  */
+#define TYPEDEF 258
+#define AUTO 259
+#define EXTERN 260
+#define REGISTER 261
+#define STATIC 262
+#define INLINE 263
+#define FORTRAN 264
+#define CONST 265
+#define VOLATILE 266
+#define RESTRICT 267
+#define FORALL 268
+#define LVALUE 269
+#define VOID 270
+#define CHAR 271
+#define SHORT 272
+#define INT 273
+#define LONG 274
+#define FLOAT 275
+#define DOUBLE 276
+#define SIGNED 277
+#define UNSIGNED 278
+#define VALIST 279
+#define BOOL 280
+#define COMPLEX 281
+#define IMAGINARY 282
+#define TYPEOF 283
+#define LABEL 284
+#define ENUM 285
+#define STRUCT 286
+#define UNION 287
+#define OTYPE 288
+#define FTYPE 289
+#define DTYPE 290
+#define TRAIT 291
+#define SIZEOF 292
+#define OFFSETOF 293
+#define ATTRIBUTE 294
+#define EXTENSION 295
+#define IF 296
+#define ELSE 297
+#define SWITCH 298
+#define CASE 299
+#define DEFAULT 300
+#define DO 301
+#define WHILE 302
+#define FOR 303
+#define BREAK 304
+#define CONTINUE 305
+#define GOTO 306
+#define RETURN 307
+#define CHOOSE 308
+#define DISABLE 309
+#define ENABLE 310
+#define FALLTHRU 311
+#define TRY 312
+#define CATCH 313
+#define CATCHRESUME 314
+#define FINALLY 315
+#define THROW 316
+#define THROWRESUME 317
+#define AT 318
+#define ASM 319
+#define ALIGNAS 320
+#define ALIGNOF 321
+#define ATOMIC 322
+#define GENERIC 323
+#define NORETURN 324
+#define STATICASSERT 325
+#define THREADLOCAL 326
+#define IDENTIFIER 327
+#define QUOTED_IDENTIFIER 328
+#define TYPEDEFname 329
+#define TYPEGENname 330
+#define ATTR_IDENTIFIER 331
+#define ATTR_TYPEDEFname 332
+#define ATTR_TYPEGENname 333
+#define INTEGERconstant 334
+#define FLOATINGconstant 335
+#define CHARACTERconstant 336
+#define STRINGliteral 337
+#define ZERO 338
+#define ONE 339
+#define ARROW 340
+#define ICR 341
+#define DECR 342
+#define LS 343
+#define RS 344
+#define LE 345
+#define GE 346
+#define EQ 347
+#define NE 348
+#define ANDAND 349
+#define OROR 350
+#define ELLIPSIS 351
+#define MULTassign 352
+#define DIVassign 353
+#define MODassign 354
+#define PLUSassign 355
+#define MINUSassign 356
+#define LSassign 357
+#define RSassign 358
+#define ANDassign 359
+#define ERassign 360
+#define ORassign 361
+#define ATassign 362
+#define THEN 363
+
+
+
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+{
+
+/* Line 293 of yacc.c  */
+#line 115 "parser.yy"
+
+	Token tok;
+	ParseNode *pn;
+	ExpressionNode *en;
+	DeclarationNode *decl;
+	DeclarationNode::Aggregate aggKey;
+	DeclarationNode::TypeClass tclass;
+	StatementNode *sn;
+	ConstantExpr *constant;
+	ForCtl *fctl;
+	LabelNode *label;
+	InitializerNode *in;
+	OperKinds op;
+	std::string *str;
+	bool flag;
+
+
+
+/* Line 293 of yacc.c  */
+#line 370 "Parser/parser.cc"
+} YYSTYPE;
+# define YYSTYPE_IS_TRIVIAL 1
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+#endif
+
+
+/* Copy the second part of user declarations.  */
+
+
+/* Line 343 of yacc.c  */
+#line 382 "Parser/parser.cc"
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+#  define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+#  define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYSIZE_T size_t
+# else
+#  define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if defined YYENABLE_NLS && YYENABLE_NLS
+#  if ENABLE_NLS
+#   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#  endif
+# endif
+# ifndef YY_
+#  define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions.  */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int yyi)
+#else
+static int
+YYID (yyi)
+    int yyi;
+#endif
+{
+  return yyi;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols.  */
+
+# ifdef YYSTACK_USE_ALLOCA
+#  if YYSTACK_USE_ALLOCA
+#   ifdef __GNUC__
+#    define YYSTACK_ALLOC __builtin_alloca
+#   elif defined __BUILTIN_VA_ARG_INCR
+#    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+#   elif defined _AIX
+#    define YYSTACK_ALLOC __alloca
+#   elif defined _MSC_VER
+#    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+#    define alloca _alloca
+#   else
+#    define YYSTACK_ALLOC alloca
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+#     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#     ifndef EXIT_SUCCESS
+#      define EXIT_SUCCESS 0
+#     endif
+#    endif
+#   endif
+#  endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+   /* Pacify GCC's `empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+    /* The OS might guarantee only one guard page at the bottom of the stack,
+       and a page size can be as small as 4096 bytes.  So we cannot safely
+       invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
+       to allow for a few compiler-allocated temporary stack slots.  */
+#   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+#  endif
+# else
+#  define YYSTACK_ALLOC YYMALLOC
+#  define YYSTACK_FREE YYFREE
+#  ifndef YYSTACK_ALLOC_MAXIMUM
+#   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+#  endif
+#  if (defined __cplusplus && ! defined EXIT_SUCCESS \
+       && ! ((defined YYMALLOC || defined malloc) \
+	     && (defined YYFREE || defined free)))
+#   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+#   ifndef EXIT_SUCCESS
+#    define EXIT_SUCCESS 0
+#   endif
+#  endif
+#  ifndef YYMALLOC
+#   define YYMALLOC malloc
+#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+#  ifndef YYFREE
+#   define YYFREE free
+#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+#   endif
+#  endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+     && (! defined __cplusplus \
+	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member.  */
+union yyalloc
+{
+  yytype_int16 yyss_alloc;
+  YYSTYPE yyvs_alloc;
+};
+
+/* The size of the maximum gap between one aligned stack and the next.  */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+   N elements.  */
+# define YYSTACK_BYTES(N) \
+     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+      + YYSTACK_GAP_MAXIMUM)
+
+# define YYCOPY_NEEDED 1
+
+/* Relocate STACK from its old location to the new one.  The
+   local variables YYSIZE and YYSTACKSIZE give the old and new number of
+   elements in the stack, and YYPTR gives the new location of the
+   stack.  Advance YYPTR to a properly aligned location for the next
+   stack.  */
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
+    do									\
+      {									\
+	YYSIZE_T yynewbytes;						\
+	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
+	Stack = &yyptr->Stack_alloc;					\
+	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+	yyptr += yynewbytes / sizeof (*yyptr);				\
+      }									\
+    while (YYID (0))
+
+#endif
+
+#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
+/* Copy COUNT objects from FROM to TO.  The source and destination do
+   not overlap.  */
+# ifndef YYCOPY
+#  if defined __GNUC__ && 1 < __GNUC__
+#   define YYCOPY(To, From, Count) \
+      __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+#  else
+#   define YYCOPY(To, From, Count)		\
+      do					\
+	{					\
+	  YYSIZE_T yyi;				\
+	  for (yyi = 0; yyi < (Count); yyi++)	\
+	    (To)[yyi] = (From)[yyi];		\
+	}					\
+      while (YYID (0))
+#  endif
+# endif
+#endif /* !YYCOPY_NEEDED */
+
+/* YYFINAL -- State number of the termination state.  */
+#define YYFINAL  250
+/* YYLAST -- Last index in YYTABLE.  */
+#define YYLAST   10863
+
+/* YYNTOKENS -- Number of terminals.  */
+#define YYNTOKENS  133
+/* YYNNTS -- Number of nonterminals.  */
+#define YYNNTS  241
+/* YYNRULES -- Number of rules.  */
+#define YYNRULES  751
+/* YYNRULES -- Number of states.  */
+#define YYNSTATES  1555
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+#define YYUNDEFTOK  2
+#define YYMAXUTOK   363
+
+#define YYTRANSLATE(YYX)						\
+  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+static const yytype_uint8 yytranslate[] =
+{
+       0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   121,     2,     2,     2,   124,   118,     2,
+     109,   110,   117,   119,   116,   120,   113,   123,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,   130,   132,
+     125,   131,   126,   129,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,   111,     2,   112,   127,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,   114,   128,   115,   122,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
+      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
+      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,   108
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+   YYRHS.  */
+static const yytype_uint16 yyprhs[] =
+{
+       0,     0,     3,     4,     5,     7,     9,    11,    13,    15,
+      17,    19,    21,    23,    25,    27,    29,    31,    33,    36,
+      38,    40,    44,    48,    50,    57,    62,    66,    74,    78,
+      86,    89,    92,   100,   105,   107,   111,   112,   114,   116,
+     120,   122,   126,   134,   138,   146,   148,   150,   152,   155,
+     158,   161,   164,   167,   170,   175,   178,   183,   190,   192,
+     197,   202,   204,   206,   208,   210,   212,   214,   216,   221,
+     226,   228,   232,   236,   240,   242,   246,   250,   252,   256,
+     260,   262,   266,   270,   274,   278,   280,   284,   288,   290,
+     294,   296,   300,   302,   306,   308,   312,   314,   318,   320,
+     326,   331,   337,   339,   341,   345,   348,   349,   351,   353,
+     355,   357,   359,   361,   363,   365,   367,   369,   371,   373,
+     375,   378,   384,   391,   399,   401,   405,   407,   411,   412,
+     414,   416,   418,   420,   422,   424,   426,   428,   430,   437,
+     442,   445,   453,   455,   459,   461,   464,   466,   469,   471,
+     474,   477,   483,   491,   497,   507,   513,   523,   525,   529,
+     531,   533,   537,   541,   544,   546,   549,   552,   553,   555,
+     558,   562,   563,   565,   568,   572,   576,   581,   582,   584,
+     586,   589,   595,   603,   610,   617,   622,   626,   631,   634,
+     638,   641,   645,   649,   653,   657,   663,   667,   671,   676,
+     678,   684,   691,   697,   704,   714,   725,   735,   746,   749,
+     751,   754,   757,   760,   762,   769,   778,   789,   802,   817,
+     818,   820,   821,   823,   825,   829,   834,   842,   843,   845,
+     849,   851,   855,   857,   859,   861,   865,   867,   869,   871,
+     875,   876,   878,   882,   887,   889,   893,   895,   897,   901,
+     905,   909,   913,   917,   920,   924,   931,   935,   939,   944,
+     946,   949,   952,   956,   962,   971,   979,   987,   993,  1003,
+    1006,  1009,  1015,  1019,  1025,  1030,  1034,  1039,  1044,  1052,
+    1056,  1060,  1064,  1068,  1073,  1080,  1082,  1084,  1086,  1088,
+    1090,  1092,  1094,  1096,  1097,  1099,  1101,  1104,  1106,  1108,
+    1110,  1112,  1114,  1116,  1118,  1119,  1125,  1127,  1130,  1134,
+    1136,  1139,  1141,  1143,  1145,  1147,  1149,  1151,  1153,  1155,
+    1157,  1159,  1161,  1163,  1165,  1167,  1169,  1171,  1173,  1175,
+    1177,  1179,  1181,  1183,  1186,  1189,  1193,  1197,  1199,  1203,
+    1205,  1208,  1211,  1214,  1219,  1224,  1229,  1234,  1236,  1239,
+    1242,  1246,  1248,  1251,  1254,  1256,  1259,  1262,  1266,  1268,
+    1271,  1274,  1276,  1278,  1283,  1286,  1287,  1294,  1302,  1305,
+    1308,  1311,  1312,  1315,  1318,  1322,  1325,  1329,  1331,  1334,
+    1338,  1341,  1344,  1349,  1350,  1352,  1355,  1358,  1360,  1361,
+    1363,  1366,  1369,  1375,  1378,  1379,  1387,  1390,  1395,  1396,
+    1399,  1400,  1402,  1404,  1406,  1412,  1418,  1424,  1426,  1432,
+    1438,  1448,  1450,  1456,  1457,  1459,  1461,  1467,  1469,  1471,
+    1477,  1483,  1485,  1489,  1493,  1498,  1500,  1502,  1504,  1506,
+    1509,  1511,  1515,  1519,  1521,  1524,  1526,  1530,  1532,  1534,
+    1536,  1538,  1540,  1542,  1544,  1546,  1548,  1550,  1552,  1555,
+    1557,  1559,  1561,  1564,  1565,  1568,  1571,  1573,  1578,  1579,
+    1581,  1584,  1588,  1593,  1596,  1599,  1601,  1604,  1607,  1613,
+    1619,  1627,  1634,  1636,  1639,  1642,  1646,  1648,  1651,  1654,
+    1659,  1662,  1667,  1668,  1673,  1676,  1678,  1680,  1682,  1683,
+    1686,  1692,  1698,  1712,  1714,  1716,  1720,  1724,  1727,  1731,
+    1735,  1738,  1743,  1745,  1752,  1762,  1763,  1775,  1777,  1781,
+    1785,  1789,  1791,  1793,  1799,  1802,  1808,  1809,  1811,  1813,
+    1817,  1818,  1820,  1822,  1824,  1826,  1827,  1834,  1837,  1839,
+    1842,  1847,  1850,  1854,  1858,  1862,  1867,  1873,  1879,  1885,
+    1892,  1894,  1896,  1898,  1902,  1903,  1909,  1910,  1912,  1914,
+    1917,  1924,  1926,  1930,  1931,  1933,  1938,  1940,  1942,  1944,
+    1946,  1949,  1951,  1954,  1957,  1959,  1963,  1966,  1970,  1974,
+    1977,  1982,  1987,  1991,  2000,  2004,  2007,  2009,  2012,  2019,
+    2028,  2032,  2035,  2039,  2043,  2048,  2053,  2057,  2059,  2061,
+    2063,  2068,  2075,  2079,  2082,  2086,  2090,  2095,  2100,  2104,
+    2107,  2109,  2112,  2115,  2117,  2121,  2124,  2128,  2132,  2135,
+    2140,  2145,  2149,  2156,  2165,  2169,  2172,  2174,  2177,  2180,
+    2183,  2187,  2191,  2194,  2199,  2204,  2208,  2215,  2224,  2228,
+    2231,  2233,  2236,  2239,  2241,  2243,  2246,  2250,  2254,  2257,
+    2262,  2269,  2278,  2280,  2283,  2286,  2288,  2291,  2294,  2298,
+    2302,  2304,  2309,  2314,  2318,  2324,  2333,  2337,  2340,  2344,
+    2346,  2352,  2358,  2365,  2372,  2374,  2377,  2380,  2382,  2385,
+    2388,  2392,  2396,  2398,  2403,  2408,  2412,  2418,  2427,  2431,
+    2433,  2436,  2438,  2441,  2448,  2454,  2461,  2469,  2477,  2479,
+    2482,  2485,  2487,  2490,  2493,  2497,  2501,  2503,  2508,  2513,
+    2517,  2526,  2530,  2532,  2534,  2537,  2539,  2541,  2544,  2548,
+    2551,  2555,  2558,  2562,  2566,  2569,  2574,  2578,  2581,  2585,
+    2588,  2593,  2597,  2600,  2607,  2614,  2621,  2629,  2631,  2634,
+    2636,  2638,  2640,  2643,  2647,  2650,  2654,  2657,  2661,  2665,
+    2670,  2673,  2677,  2682,  2685,  2691,  2697,  2704,  2711,  2712,
+    2714,  2715
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
+static const yytype_int16 yyrhs[] =
+{
+     302,     0,    -1,    -1,    -1,    79,    -1,    80,    -1,    81,
+      -1,    72,    -1,    76,    -1,   140,    -1,    72,    -1,    76,
+      -1,    72,    -1,   140,    -1,    83,    -1,    84,    -1,   142,
+      -1,    82,    -1,   142,    82,    -1,    72,    -1,   140,    -1,
+     109,   170,   110,    -1,   109,   174,   110,    -1,   143,    -1,
+     144,   111,   134,   165,   135,   112,    -1,   144,   109,   145,
+     110,    -1,   144,   113,   139,    -1,   144,   113,   111,   134,
+     147,   135,   112,    -1,   144,    85,   139,    -1,   144,    85,
+     111,   134,   147,   135,   112,    -1,   144,    86,    -1,   144,
+      87,    -1,   109,   275,   110,   114,   279,   372,   115,    -1,
+     144,   114,   145,   115,    -1,   146,    -1,   145,   116,   146,
+      -1,    -1,   165,    -1,   148,    -1,   147,   116,   148,    -1,
+     139,    -1,   139,   113,   148,    -1,   139,   113,   111,   134,
+     147,   135,   112,    -1,   139,    85,   148,    -1,   139,    85,
+     111,   134,   147,   135,   112,    -1,   144,    -1,   136,    -1,
+     141,    -1,    40,   152,    -1,   150,   152,    -1,   151,   152,
+      -1,    86,   149,    -1,    87,   149,    -1,    37,   149,    -1,
+      37,   109,   275,   110,    -1,    66,   149,    -1,    66,   109,
+     275,   110,    -1,    38,   109,   275,   116,   139,   110,    -1,
+      76,    -1,    76,   109,   146,   110,    -1,    76,   109,   276,
+     110,    -1,   117,    -1,   118,    -1,   119,    -1,   120,    -1,
+     121,    -1,   122,    -1,   149,    -1,   109,   275,   110,   152,
+      -1,   109,   275,   110,   168,    -1,   152,    -1,   153,   117,
+     152,    -1,   153,   123,   152,    -1,   153,   124,   152,    -1,
+     153,    -1,   154,   119,   153,    -1,   154,   120,   153,    -1,
+     154,    -1,   155,    88,   154,    -1,   155,    89,   154,    -1,
+     155,    -1,   156,   125,   155,    -1,   156,   126,   155,    -1,
+     156,    90,   155,    -1,   156,    91,   155,    -1,   156,    -1,
+     157,    92,   156,    -1,   157,    93,   156,    -1,   157,    -1,
+     158,   118,   157,    -1,   158,    -1,   159,   127,   158,    -1,
+     159,    -1,   160,   128,   159,    -1,   160,    -1,   161,    94,
+     160,    -1,   161,    -1,   162,    95,   161,    -1,   162,    -1,
+     162,   129,   170,   130,   163,    -1,   162,   129,   130,   163,
+      -1,   162,   129,   170,   130,   168,    -1,   163,    -1,   163,
+      -1,   149,   167,   165,    -1,   168,   373,    -1,    -1,   165,
+      -1,   131,    -1,   107,    -1,    97,    -1,    98,    -1,    99,
+      -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,   104,
+      -1,   105,    -1,   106,    -1,   111,   112,    -1,   111,   134,
+     165,   135,   112,    -1,   111,   134,   116,   169,   135,   112,
+      -1,   111,   134,   165,   116,   169,   135,   112,    -1,   166,
+      -1,   169,   116,   166,    -1,   165,    -1,   170,   116,   165,
+      -1,    -1,   170,    -1,   173,    -1,   174,    -1,   178,    -1,
+     179,    -1,   191,    -1,   193,    -1,   194,    -1,   199,    -1,
+     127,   144,   114,   145,   115,   132,    -1,    72,   130,   312,
+     172,    -1,   114,   115,    -1,   114,   134,   134,   210,   175,
+     135,   115,    -1,   176,    -1,   175,   134,   176,    -1,   213,
+      -1,    40,   213,    -1,   308,    -1,   172,   135,    -1,   172,
+      -1,   177,   172,    -1,   171,   132,    -1,    41,   109,   170,
+     110,   172,    -1,    41,   109,   170,   110,   172,    42,   172,
+      -1,    43,   109,   170,   110,   184,    -1,    43,   109,   170,
+     110,   114,   134,   206,   185,   115,    -1,    53,   109,   170,
+     110,   184,    -1,    53,   109,   170,   110,   114,   134,   206,
+     187,   115,    -1,   164,    -1,   164,    96,   164,    -1,   310,
+      -1,   180,    -1,   181,   116,   180,    -1,    44,   181,   130,
+      -1,    45,   130,    -1,   182,    -1,   183,   182,    -1,   183,
+     172,    -1,    -1,   186,    -1,   183,   177,    -1,   186,   183,
+     177,    -1,    -1,   188,    -1,   183,   190,    -1,   183,   177,
+     189,    -1,   188,   183,   190,    -1,   188,   183,   177,   189,
+      -1,    -1,   190,    -1,    56,    -1,    56,   132,    -1,    47,
+     109,   170,   110,   172,    -1,    46,   172,    47,   109,   170,
+     110,   132,    -1,    48,   109,   134,   192,   110,   172,    -1,
+     171,   135,   132,   171,   132,   171,    -1,   213,   171,   132,
+     171,    -1,    51,    72,   132,    -1,    51,   117,   170,   132,
+      -1,    50,   132,    -1,    50,    72,   132,    -1,    49,   132,
+      -1,    49,    72,   132,    -1,    52,   171,   132,    -1,    61,
+     166,   132,    -1,    62,   166,   132,    -1,    62,   166,    63,
+     165,   132,    -1,    57,   174,   195,    -1,    57,   174,   197,
+      -1,    57,   174,   195,   197,    -1,   196,    -1,    58,   109,
+      96,   110,   174,    -1,   196,    58,   109,    96,   110,   174,
+      -1,    59,   109,    96,   110,   174,    -1,   196,    59,   109,
+      96,   110,   174,    -1,    58,   109,   134,   134,   198,   135,
+     110,   174,   135,    -1,   196,    58,   109,   134,   134,   198,
+     135,   110,   174,   135,    -1,    59,   109,   134,   134,   198,
+     135,   110,   174,   135,    -1,   196,    59,   109,   134,   134,
+     198,   135,   110,   174,   135,    -1,    60,   174,    -1,   226,
+      -1,   226,   309,    -1,   226,   357,    -1,   366,   139,    -1,
+     366,    -1,    64,   200,   109,   141,   110,   132,    -1,    64,
+     200,   109,   141,   130,   201,   110,   132,    -1,    64,   200,
+     109,   141,   130,   201,   130,   201,   110,   132,    -1,    64,
+     200,   109,   141,   130,   201,   130,   201,   130,   204,   110,
+     132,    -1,    64,   200,    51,   109,   141,   130,   130,   201,
+     130,   204,   130,   205,   110,   132,    -1,    -1,    11,    -1,
+      -1,   202,    -1,   203,    -1,   202,   116,   203,    -1,   141,
+     109,   164,   110,    -1,   111,   164,   112,   141,   109,   164,
+     110,    -1,    -1,   141,    -1,   204,   116,   141,    -1,   139,
+      -1,   205,   116,   139,    -1,   135,    -1,   207,    -1,   213,
+      -1,   207,   134,   213,    -1,   135,    -1,   209,    -1,   223,
+      -1,   209,   134,   223,    -1,    -1,   211,    -1,    29,   212,
+     132,    -1,   211,    29,   212,   132,    -1,   274,    -1,   212,
+     116,   274,    -1,   214,    -1,   223,    -1,   215,   135,   132,
+      -1,   220,   135,   132,    -1,   217,   135,   132,    -1,   293,
+     135,   132,    -1,   296,   135,   132,    -1,   216,   277,    -1,
+     232,   216,   277,    -1,   215,   135,   116,   134,   272,   277,
+      -1,   367,   272,   311,    -1,   370,   272,   311,    -1,   228,
+     370,   272,   311,    -1,   218,    -1,   228,   218,    -1,   232,
+     218,    -1,   232,   228,   218,    -1,   217,   135,   116,   134,
+     272,    -1,   111,   112,   272,   109,   134,   260,   135,   110,
+      -1,   370,   272,   109,   134,   260,   135,   110,    -1,   219,
+     272,   109,   134,   260,   135,   110,    -1,   111,   134,   262,
+     135,   112,    -1,   111,   134,   262,   135,   116,   134,   263,
+     135,   112,    -1,     3,   216,    -1,     3,   218,    -1,   220,
+     135,   116,   134,   139,    -1,     3,   226,   309,    -1,   221,
+     135,   116,   134,   309,    -1,   228,     3,   226,   309,    -1,
+     226,     3,   309,    -1,   226,     3,   228,   309,    -1,     3,
+     139,   131,   165,    -1,   222,   135,   116,   134,   139,   131,
+     165,    -1,   224,   135,   132,    -1,   221,   135,   132,    -1,
+     222,   135,   132,    -1,   240,   135,   132,    -1,   225,   309,
+     311,   277,    -1,   224,   116,   312,   309,   311,   277,    -1,
+     236,    -1,   240,    -1,   242,    -1,   283,    -1,   237,    -1,
+     241,    -1,   243,    -1,   284,    -1,    -1,   228,    -1,   229,
+      -1,   228,   229,    -1,   230,    -1,   314,    -1,    10,    -1,
+      12,    -1,    11,    -1,    14,    -1,    67,    -1,    -1,    13,
+     109,   231,   286,   110,    -1,   233,    -1,   228,   233,    -1,
+     232,   228,   233,    -1,   234,    -1,   233,   234,    -1,     5,
+      -1,     7,    -1,     4,    -1,     6,    -1,     8,    -1,     9,
+      -1,    69,    -1,    71,    -1,    16,    -1,    21,    -1,    20,
+      -1,    18,    -1,    19,    -1,    17,    -1,    22,    -1,    23,
+      -1,    15,    -1,    25,    -1,    26,    -1,    27,    -1,    24,
+      -1,   237,    -1,   232,   237,    -1,   236,   234,    -1,   236,
+     234,   228,    -1,   236,   234,   237,    -1,   238,    -1,   227,
+     239,   227,    -1,   235,    -1,   228,   235,    -1,   238,   229,
+      -1,   238,   235,    -1,    28,   109,   276,   110,    -1,    28,
+     109,   170,   110,    -1,    78,   109,   276,   110,    -1,    78,
+     109,   170,   110,    -1,   241,    -1,   232,   241,    -1,   240,
+     234,    -1,   240,   234,   228,    -1,   244,    -1,   228,   244,
+      -1,   241,   229,    -1,   243,    -1,   232,   243,    -1,   242,
+     234,    -1,   242,   234,   228,    -1,    74,    -1,   228,    74,
+      -1,   243,   229,    -1,   245,    -1,   256,    -1,   247,   114,
+     248,   115,    -1,   247,   274,    -1,    -1,   247,   274,   246,
+     114,   248,   115,    -1,   247,   109,   292,   110,   114,   248,
+     115,    -1,   247,   285,    -1,    31,   312,    -1,    32,   312,
+      -1,    -1,   248,   249,    -1,   250,   132,    -1,    40,   250,
+     132,    -1,   251,   132,    -1,    40,   251,   132,    -1,   366,
+      -1,   366,   274,    -1,   250,   116,   274,    -1,   250,   116,
+      -1,   226,   252,    -1,   251,   116,   312,   252,    -1,    -1,
+     254,    -1,   318,   253,    -1,   331,   253,    -1,   357,    -1,
+      -1,   254,    -1,   130,   164,    -1,    30,   312,    -1,   255,
+     114,   258,   372,   115,    -1,   255,   274,    -1,    -1,   255,
+     274,   257,   114,   258,   372,   115,    -1,   274,   259,    -1,
+     258,   116,   274,   259,    -1,    -1,   131,   164,    -1,    -1,
+     261,    -1,   263,    -1,   262,    -1,   262,   135,   116,   134,
+     263,    -1,   263,   135,   116,   134,    96,    -1,   262,   135,
+     116,   134,    96,    -1,   267,    -1,   263,   135,   116,   134,
+     267,    -1,   262,   135,   116,   134,   267,    -1,   262,   135,
+     116,   134,   263,   135,   116,   134,   267,    -1,   268,    -1,
+     263,   135,   116,   134,   268,    -1,    -1,   265,    -1,   266,
+      -1,   266,   135,   116,   134,    96,    -1,   270,    -1,   269,
+      -1,   266,   135,   116,   134,   270,    -1,   266,   135,   116,
+     134,   269,    -1,   269,    -1,   362,   272,   373,    -1,   370,
+     272,   373,    -1,   228,   370,   272,   373,    -1,   218,    -1,
+     270,    -1,   362,    -1,   370,    -1,   228,   370,    -1,   371,
+      -1,   225,   336,   373,    -1,   225,   340,   373,    -1,   225,
+      -1,   225,   351,    -1,   139,    -1,   271,   116,   139,    -1,
+     137,    -1,    74,    -1,    75,    -1,   138,    -1,    74,    -1,
+      75,    -1,   139,    -1,    74,    -1,    75,    -1,   366,    -1,
+     226,    -1,   226,   357,    -1,   366,    -1,   371,    -1,   226,
+      -1,   226,   345,    -1,    -1,   131,   278,    -1,   107,   278,
+      -1,   165,    -1,   114,   279,   372,   115,    -1,    -1,   278,
+      -1,   280,   278,    -1,   279,   116,   278,    -1,   279,   116,
+     280,   278,    -1,   281,   130,    -1,   274,   130,    -1,   282,
+      -1,   281,   282,    -1,   113,   274,    -1,   111,   134,   165,
+     135,   112,    -1,   111,   134,   310,   135,   112,    -1,   111,
+     134,   164,    96,   164,   135,   112,    -1,   113,   111,   134,
+     147,   135,   112,    -1,   284,    -1,   232,   284,    -1,   283,
+     234,    -1,   283,   234,   228,    -1,   285,    -1,   228,   285,
+      -1,   284,   229,    -1,    75,   109,   292,   110,    -1,   287,
+     373,    -1,   286,   116,   287,   373,    -1,    -1,   289,   274,
+     288,   290,    -1,   226,   336,    -1,    33,    -1,    35,    -1,
+      34,    -1,    -1,   290,   291,    -1,   128,   274,   109,   292,
+     110,    -1,   128,   114,   134,   298,   115,    -1,   128,   109,
+     134,   286,   135,   110,   114,   134,   298,   115,   109,   292,
+     110,    -1,   276,    -1,   165,    -1,   292,   116,   276,    -1,
+     292,   116,   165,    -1,    33,   294,    -1,   233,    33,   294,
+      -1,   293,   116,   294,    -1,   295,   290,    -1,   295,   290,
+     131,   276,    -1,   274,    -1,   273,   109,   134,   286,   135,
+     110,    -1,    36,   274,   109,   134,   286,   135,   110,   114,
+     115,    -1,    -1,    36,   274,   109,   134,   286,   135,   110,
+     114,   297,   298,   115,    -1,   299,    -1,   298,   134,   299,
+      -1,   300,   135,   132,    -1,   301,   135,   132,    -1,   216,
+      -1,   218,    -1,   300,   135,   116,   134,   272,    -1,   226,
+     309,    -1,   301,   135,   116,   134,   309,    -1,    -1,   303,
+      -1,   305,    -1,   303,   134,   305,    -1,    -1,   303,    -1,
+     213,    -1,   307,    -1,   199,    -1,    -1,     5,    82,   306,
+     114,   304,   115,    -1,    40,   305,    -1,   308,    -1,   323,
+     174,    -1,   327,   134,   208,   174,    -1,   217,   174,    -1,
+     225,   323,   174,    -1,   228,   323,   174,    -1,   232,   323,
+     174,    -1,   232,   228,   323,   174,    -1,   225,   327,   134,
+     208,   174,    -1,   228,   327,   134,   208,   174,    -1,   232,
+     327,   134,   208,   174,    -1,   232,   228,   327,   134,   208,
+     174,    -1,   318,    -1,   331,    -1,   323,    -1,   164,   122,
+     164,    -1,    -1,    64,   109,   142,   110,   312,    -1,    -1,
+     313,    -1,   314,    -1,   313,   314,    -1,    39,   109,   109,
+     315,   110,   110,    -1,   316,    -1,   315,   116,   316,    -1,
+      -1,   317,    -1,   317,   109,   171,   110,    -1,   272,    -1,
+     234,    -1,   235,    -1,   229,    -1,   319,   312,    -1,   320,
+      -1,   321,   312,    -1,   322,   312,    -1,   137,    -1,   109,
+     319,   110,    -1,   150,   318,    -1,   150,   228,   318,    -1,
+     109,   320,   110,    -1,   319,   349,    -1,   109,   320,   110,
+     349,    -1,   109,   321,   110,   350,    -1,   109,   321,   110,
+      -1,   109,   320,   110,   109,   134,   264,   135,   110,    -1,
+     109,   322,   110,    -1,   324,   312,    -1,   325,    -1,   326,
+     312,    -1,   319,   109,   134,   264,   135,   110,    -1,   109,
+     325,   110,   109,   134,   264,   135,   110,    -1,   109,   324,
+     110,    -1,   150,   323,    -1,   150,   228,   323,    -1,   109,
+     325,   110,    -1,   109,   325,   110,   349,    -1,   109,   326,
+     110,   350,    -1,   109,   326,   110,    -1,   328,    -1,   329,
+      -1,   330,    -1,   319,   109,   271,   110,    -1,   109,   329,
+     110,   109,   271,   110,    -1,   109,   328,   110,    -1,   150,
+     327,    -1,   150,   228,   327,    -1,   109,   329,   110,    -1,
+     109,   329,   110,   349,    -1,   109,   330,   110,   350,    -1,
+     109,   330,   110,    -1,   332,   312,    -1,   333,    -1,   334,
+     312,    -1,   335,   312,    -1,   341,    -1,   109,   332,   110,
+      -1,   150,   331,    -1,   150,   228,   331,    -1,   109,   333,
+     110,    -1,   332,   349,    -1,   109,   333,   110,   349,    -1,
+     109,   334,   110,   350,    -1,   109,   334,   110,    -1,   332,
+     109,   134,   264,   135,   110,    -1,   109,   333,   110,   109,
+     134,   264,   135,   110,    -1,   109,   335,   110,    -1,   319,
+     312,    -1,   337,    -1,   338,   312,    -1,   339,   312,    -1,
+     150,   336,    -1,   150,   228,   336,    -1,   109,   337,   110,
+      -1,   319,   355,    -1,   109,   337,   110,   349,    -1,   109,
+     338,   110,   350,    -1,   109,   338,   110,    -1,   319,   109,
+     134,   264,   135,   110,    -1,   109,   337,   110,   109,   134,
+     264,   135,   110,    -1,   109,   339,   110,    -1,   341,   312,
+      -1,   342,    -1,   343,   312,    -1,   344,   312,    -1,    74,
+      -1,    75,    -1,   150,   340,    -1,   150,   228,   340,    -1,
+     109,   342,   110,    -1,   341,   355,    -1,   109,   342,   110,
+     355,    -1,   341,   109,   134,   264,   135,   110,    -1,   109,
+     342,   110,   109,   134,   264,   135,   110,    -1,   346,    -1,
+     347,   312,    -1,   348,   312,    -1,   150,    -1,   150,   228,
+      -1,   150,   345,    -1,   150,   228,   345,    -1,   109,   346,
+     110,    -1,   349,    -1,   109,   346,   110,   349,    -1,   109,
+     347,   110,   350,    -1,   109,   347,   110,    -1,   109,   134,
+     264,   135,   110,    -1,   109,   346,   110,   109,   134,   264,
+     135,   110,    -1,   109,   348,   110,    -1,   111,   112,    -1,
+     111,   112,   350,    -1,   350,    -1,   111,   134,   165,   135,
+     112,    -1,   111,   134,   117,   135,   112,    -1,   350,   111,
+     134,   165,   135,   112,    -1,   350,   111,   134,   117,   135,
+     112,    -1,   352,    -1,   353,   312,    -1,   354,   312,    -1,
+     150,    -1,   150,   228,    -1,   150,   351,    -1,   150,   228,
+     351,    -1,   109,   352,   110,    -1,   355,    -1,   109,   352,
+     110,   355,    -1,   109,   353,   110,   350,    -1,   109,   353,
+     110,    -1,   109,   134,   264,   135,   110,    -1,   109,   352,
+     110,   109,   134,   264,   135,   110,    -1,   109,   354,   110,
+      -1,   356,    -1,   356,   350,    -1,   350,    -1,   111,   112,
+      -1,   111,   134,   228,   117,   135,   112,    -1,   111,   134,
+     228,   135,   112,    -1,   111,   134,   228,   165,   135,   112,
+      -1,   111,   134,     7,   227,   165,   135,   112,    -1,   111,
+     134,   228,     7,   165,   135,   112,    -1,   358,    -1,   359,
+     312,    -1,   360,   312,    -1,   150,    -1,   150,   228,    -1,
+     150,   357,    -1,   150,   228,   357,    -1,   109,   358,   110,
+      -1,   349,    -1,   109,   358,   110,   349,    -1,   109,   359,
+     110,   350,    -1,   109,   359,   110,    -1,   109,   358,   110,
+     109,   134,   264,   135,   110,    -1,   109,   360,   110,    -1,
+     362,    -1,   370,    -1,   228,   370,    -1,   363,    -1,   364,
+      -1,   150,   226,    -1,   228,   150,   226,    -1,   150,   371,
+      -1,   228,   150,   371,    -1,   150,   361,    -1,   228,   150,
+     361,    -1,   111,   112,   226,    -1,   365,   226,    -1,   111,
+     112,   350,   226,    -1,   365,   350,   226,    -1,   350,   226,
+      -1,   111,   112,   363,    -1,   365,   363,    -1,   111,   112,
+     350,   363,    -1,   365,   350,   363,    -1,   350,   363,    -1,
+     111,   134,   228,   117,   135,   112,    -1,   111,   134,   228,
+     165,   135,   112,    -1,   111,   134,   232,   165,   135,   112,
+      -1,   111,   134,   232,   228,   165,   135,   112,    -1,   370,
+      -1,   228,   370,    -1,   367,    -1,   368,    -1,   369,    -1,
+     150,   226,    -1,   228,   150,   226,    -1,   150,   371,    -1,
+     228,   150,   371,    -1,   150,   366,    -1,   228,   150,   366,
+      -1,   111,   112,   226,    -1,   111,   112,   350,   226,    -1,
+     350,   226,    -1,   111,   112,   368,    -1,   111,   112,   350,
+     368,    -1,   350,   368,    -1,   111,   134,   263,   135,   112,
+      -1,   111,   112,   109,   260,   110,    -1,   370,   109,   134,
+     260,   135,   110,    -1,   219,   109,   134,   260,   135,   110,
+      -1,    -1,   116,    -1,    -1,   131,   165,    -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+static const yytype_uint16 yyrline[] =
+{
+       0,   300,   300,   304,   311,   312,   313,   317,   318,   319,
+     323,   324,   328,   329,   333,   334,   338,   342,   343,   354,
+     356,   358,   360,   365,   366,   372,   376,   378,   379,   381,
+     382,   384,   386,   388,   397,   398,   404,   405,   409,   410,
+     414,   418,   420,   422,   424,   429,   432,   434,   436,   441,
+     454,   456,   458,   460,   462,   464,   466,   468,   470,   472,
+     474,   481,   482,   488,   489,   490,   491,   495,   496,   498,
+     503,   504,   506,   508,   513,   514,   516,   521,   522,   524,
+     529,   530,   532,   534,   536,   541,   542,   544,   549,   550,
+     555,   556,   561,   562,   567,   568,   573,   574,   579,   580,
+     583,   585,   590,   595,   596,   598,   604,   605,   609,   610,
+     611,   612,   613,   614,   615,   616,   617,   618,   619,   620,
+     626,   628,   630,   632,   637,   638,   643,   644,   650,   651,
+     657,   658,   659,   660,   661,   662,   663,   664,   665,   675,
+     682,   684,   694,   695,   700,   702,   708,   710,   714,   715,
+     720,   725,   728,   730,   732,   742,   744,   755,   756,   758,
+     762,   764,   768,   769,   774,   775,   779,   784,   785,   789,
+     791,   797,   798,   802,   804,   806,   808,   814,   815,   819,
+     821,   826,   828,   830,   835,   837,   842,   844,   848,   851,
+     855,   858,   862,   864,   866,   868,   873,   875,   877,   882,
+     884,   886,   888,   890,   895,   897,   899,   901,   906,   918,
+     919,   924,   926,   931,   935,   937,   939,   941,   943,   949,
+     950,   956,   957,   961,   962,   967,   969,   975,   976,   978,
+     983,   988,   998,  1000,  1004,  1005,  1010,  1012,  1016,  1017,
+    1021,  1023,  1027,  1028,  1032,  1033,  1037,  1038,  1053,  1054,
+    1055,  1056,  1057,  1061,  1066,  1073,  1083,  1088,  1093,  1101,
+    1106,  1111,  1116,  1121,  1129,  1151,  1156,  1163,  1165,  1172,
+    1177,  1182,  1193,  1198,  1203,  1208,  1213,  1222,  1227,  1235,
+    1236,  1237,  1238,  1244,  1249,  1257,  1258,  1259,  1260,  1264,
+    1265,  1266,  1267,  1272,  1273,  1282,  1283,  1288,  1289,  1294,
+    1296,  1298,  1300,  1302,  1305,  1304,  1316,  1317,  1319,  1329,
+    1330,  1335,  1337,  1339,  1341,  1343,  1346,  1348,  1351,  1356,
+    1358,  1360,  1362,  1364,  1366,  1368,  1370,  1372,  1374,  1376,
+    1378,  1380,  1386,  1387,  1389,  1391,  1393,  1398,  1399,  1405,
+    1406,  1408,  1410,  1415,  1417,  1419,  1421,  1426,  1427,  1429,
+    1431,  1436,  1437,  1439,  1444,  1445,  1447,  1449,  1454,  1456,
+    1458,  1463,  1464,  1468,  1470,  1476,  1475,  1479,  1481,  1486,
+    1488,  1494,  1495,  1500,  1501,  1503,  1504,  1513,  1514,  1516,
+    1518,  1523,  1525,  1531,  1532,  1534,  1537,  1540,  1545,  1546,
+    1551,  1556,  1560,  1562,  1568,  1567,  1574,  1576,  1582,  1583,
+    1591,  1592,  1596,  1597,  1598,  1600,  1602,  1609,  1610,  1612,
+    1614,  1619,  1620,  1626,  1627,  1631,  1632,  1637,  1638,  1639,
+    1641,  1649,  1650,  1652,  1655,  1657,  1661,  1662,  1663,  1665,
+    1667,  1671,  1676,  1684,  1685,  1694,  1696,  1701,  1702,  1703,
+    1707,  1708,  1709,  1713,  1714,  1715,  1719,  1720,  1721,  1726,
+    1727,  1728,  1729,  1735,  1736,  1738,  1743,  1744,  1749,  1750,
+    1751,  1752,  1753,  1768,  1769,  1774,  1775,  1781,  1783,  1786,
+    1788,  1790,  1813,  1814,  1816,  1818,  1823,  1824,  1826,  1831,
+    1836,  1837,  1843,  1842,  1846,  1850,  1852,  1854,  1860,  1861,
+    1866,  1871,  1873,  1878,  1880,  1881,  1883,  1888,  1890,  1892,
+    1897,  1899,  1904,  1909,  1917,  1923,  1922,  1936,  1937,  1942,
+    1943,  1947,  1952,  1957,  1965,  1970,  1981,  1982,  1987,  1988,
+    1994,  1995,  1999,  2000,  2001,  2004,  2003,  2014,  2023,  2029,
+    2035,  2044,  2050,  2056,  2062,  2068,  2076,  2082,  2090,  2096,
+    2105,  2106,  2107,  2111,  2115,  2117,  2122,  2123,  2127,  2128,
+    2133,  2139,  2140,  2143,  2145,  2146,  2150,  2151,  2152,  2153,
+    2187,  2189,  2190,  2192,  2197,  2202,  2207,  2209,  2211,  2216,
+    2218,  2220,  2222,  2227,  2229,  2238,  2240,  2241,  2246,  2248,
+    2250,  2255,  2257,  2259,  2264,  2266,  2268,  2277,  2278,  2279,
+    2283,  2285,  2287,  2292,  2294,  2296,  2301,  2303,  2305,  2320,
+    2322,  2323,  2325,  2330,  2331,  2336,  2338,  2340,  2345,  2347,
+    2349,  2351,  2356,  2358,  2360,  2370,  2372,  2373,  2375,  2380,
+    2382,  2384,  2389,  2391,  2393,  2395,  2400,  2402,  2404,  2435,
+    2437,  2438,  2440,  2445,  2450,  2458,  2460,  2462,  2467,  2469,
+    2474,  2476,  2490,  2491,  2493,  2498,  2500,  2502,  2504,  2506,
+    2511,  2512,  2514,  2516,  2521,  2523,  2525,  2531,  2533,  2535,
+    2539,  2541,  2543,  2545,  2559,  2560,  2562,  2567,  2569,  2571,
+    2573,  2575,  2580,  2581,  2583,  2585,  2590,  2592,  2594,  2600,
+    2601,  2603,  2612,  2615,  2617,  2620,  2622,  2624,  2637,  2638,
+    2640,  2645,  2647,  2649,  2651,  2653,  2658,  2659,  2661,  2663,
+    2668,  2670,  2678,  2679,  2680,  2685,  2686,  2690,  2692,  2694,
+    2696,  2698,  2700,  2707,  2709,  2711,  2713,  2715,  2717,  2719,
+    2721,  2723,  2725,  2730,  2732,  2734,  2739,  2765,  2766,  2768,
+    2772,  2773,  2777,  2779,  2781,  2783,  2785,  2787,  2794,  2796,
+    2798,  2800,  2802,  2804,  2809,  2814,  2816,  2818,  2836,  2838,
+    2843,  2844
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+   First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
+static const char *const yytname[] =
+{
+  "$end", "error", "$undefined", "TYPEDEF", "AUTO", "EXTERN", "REGISTER",
+  "STATIC", "INLINE", "FORTRAN", "CONST", "VOLATILE", "RESTRICT", "FORALL",
+  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
+  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
+  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
+  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
+  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
+  "RETURN", "CHOOSE", "DISABLE", "ENABLE", "FALLTHRU", "TRY", "CATCH",
+  "CATCHRESUME", "FINALLY", "THROW", "THROWRESUME", "AT", "ASM", "ALIGNAS",
+  "ALIGNOF", "ATOMIC", "GENERIC", "NORETURN", "STATICASSERT",
+  "THREADLOCAL", "IDENTIFIER", "QUOTED_IDENTIFIER", "TYPEDEFname",
+  "TYPEGENname", "ATTR_IDENTIFIER", "ATTR_TYPEDEFname", "ATTR_TYPEGENname",
+  "INTEGERconstant", "FLOATINGconstant", "CHARACTERconstant",
+  "STRINGliteral", "ZERO", "ONE", "ARROW", "ICR", "DECR", "LS", "RS", "LE",
+  "GE", "EQ", "NE", "ANDAND", "OROR", "ELLIPSIS", "MULTassign",
+  "DIVassign", "MODassign", "PLUSassign", "MINUSassign", "LSassign",
+  "RSassign", "ANDassign", "ERassign", "ORassign", "ATassign", "THEN",
+  "'('", "')'", "'['", "']'", "'.'", "'{'", "'}'", "','", "'*'", "'&'",
+  "'+'", "'-'", "'!'", "'~'", "'/'", "'%'", "'<'", "'>'", "'^'", "'|'",
+  "'?'", "':'", "'='", "';'", "$accept", "push", "pop", "constant",
+  "identifier", "no_01_identifier", "no_attr_identifier", "zero_one",
+  "string_literal", "string_literal_list", "primary_expression",
+  "postfix_expression", "argument_expression_list", "argument_expression",
+  "field_list", "field", "unary_expression", "ptrref_operator",
+  "unary_operator", "cast_expression", "multiplicative_expression",
+  "additive_expression", "shift_expression", "relational_expression",
+  "equality_expression", "AND_expression", "exclusive_OR_expression",
+  "inclusive_OR_expression", "logical_AND_expression",
+  "logical_OR_expression", "conditional_expression", "constant_expression",
+  "assignment_expression", "assignment_expression_opt",
+  "assignment_operator", "tuple", "tuple_expression_list",
+  "comma_expression", "comma_expression_opt", "statement",
+  "labeled_statement", "compound_statement", "block_item_list",
+  "block_item", "statement_list", "expression_statement",
+  "selection_statement", "case_value", "case_value_list", "case_label",
+  "case_label_list", "case_clause", "switch_clause_list_opt",
+  "switch_clause_list", "choose_clause_list_opt", "choose_clause_list",
+  "fall_through_opt", "fall_through", "iteration_statement",
+  "for_control_expression", "jump_statement", "exception_statement",
+  "handler_list", "handler_clause", "finally_clause",
+  "exception_declaration", "asm_statement", "asm_volatile_opt",
+  "asm_operands_opt", "asm_operands_list", "asm_operand",
+  "asm_clobbers_list_opt", "label_list", "declaration_list_opt",
+  "declaration_list", "old_declaration_list_opt", "old_declaration_list",
+  "local_label_declaration_opt", "local_label_declaration_list",
+  "local_label_list", "declaration", "new_declaration",
+  "new_variable_declaration", "new_variable_specifier",
+  "new_function_declaration", "new_function_specifier",
+  "new_function_return", "new_typedef_declaration", "typedef_declaration",
+  "typedef_expression", "old_declaration", "declaring_list",
+  "declaration_specifier", "type_specifier", "type_qualifier_list_opt",
+  "type_qualifier_list", "type_qualifier", "type_qualifier_name", "$@1",
+  "declaration_qualifier_list", "storage_class_list", "storage_class",
+  "basic_type_name", "basic_declaration_specifier", "basic_type_specifier",
+  "direct_type_name", "indirect_type_name", "sue_declaration_specifier",
+  "sue_type_specifier", "typedef_declaration_specifier",
+  "typedef_type_specifier", "elaborated_type_name", "aggregate_name",
+  "$@2", "aggregate_key", "field_declaration_list", "field_declaration",
+  "new_field_declaring_list", "field_declaring_list", "field_declarator",
+  "bit_subrange_size_opt", "bit_subrange_size", "enum_key", "enum_name",
+  "$@3", "enumerator_list", "enumerator_value_opt",
+  "new_parameter_type_list_opt", "new_parameter_type_list",
+  "new_parameter_list", "new_abstract_parameter_list",
+  "parameter_type_list_opt", "parameter_type_list", "parameter_list",
+  "new_parameter_declaration", "new_abstract_parameter_declaration",
+  "parameter_declaration", "abstract_parameter_declaration",
+  "identifier_list", "identifier_or_type_name",
+  "no_01_identifier_or_type_name", "no_attr_identifier_or_type_name",
+  "type_name_no_function", "type_name", "initializer_opt", "initializer",
+  "initializer_list", "designation", "designator_list", "designator",
+  "typegen_declaration_specifier", "typegen_type_specifier",
+  "typegen_name", "type_parameter_list", "type_parameter", "$@4",
+  "type_class", "assertion_list_opt", "assertion", "type_name_list",
+  "type_declaring_list", "type_declarator", "type_declarator_name",
+  "trait_specifier", "$@5", "trait_declaration_list", "trait_declaration",
+  "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
+  "external_definition_list", "external_definition_list_opt",
+  "external_definition", "$@6", "external_function_definition",
+  "function_definition", "declarator", "subrange", "asm_name_opt",
+  "attribute_list_opt", "attribute_list", "attribute",
+  "attribute_parameter_list", "attrib", "any_word", "variable_declarator",
+  "paren_identifier", "variable_ptr", "variable_array",
+  "variable_function", "function_declarator", "function_no_ptr",
+  "function_ptr", "function_array", "old_function_declarator",
+  "old_function_no_ptr", "old_function_ptr", "old_function_array",
+  "variable_type_redeclarator", "paren_type", "type_ptr", "type_array",
+  "type_function", "identifier_parameter_declarator",
+  "identifier_parameter_ptr", "identifier_parameter_array",
+  "identifier_parameter_function", "type_parameter_redeclarator",
+  "typedef", "type_parameter_ptr", "type_parameter_array",
+  "type_parameter_function", "abstract_declarator", "abstract_ptr",
+  "abstract_array", "abstract_function", "array_dimension",
+  "multi_array_dimension", "abstract_parameter_declarator",
+  "abstract_parameter_ptr", "abstract_parameter_array",
+  "abstract_parameter_function", "array_parameter_dimension",
+  "array_parameter_1st_dimension", "variable_abstract_declarator",
+  "variable_abstract_ptr", "variable_abstract_array",
+  "variable_abstract_function",
+  "new_identifier_parameter_declarator_tuple",
+  "new_identifier_parameter_declarator_no_tuple",
+  "new_identifier_parameter_ptr", "new_identifier_parameter_array",
+  "new_array_parameter_1st_dimension", "new_abstract_declarator_tuple",
+  "new_abstract_declarator_no_tuple", "new_abstract_ptr",
+  "new_abstract_array", "new_abstract_tuple", "new_abstract_function",
+  "comma_opt", "assignment_opt", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+   token YYLEX-NUM.  */
+static const yytype_uint16 yytoknum[] =
+{
+       0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
+     265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
+     275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
+     285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
+     315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
+     325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
+     335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
+     355,   356,   357,   358,   359,   360,   361,   362,   363,    40,
+      41,    91,    93,    46,   123,   125,    44,    42,    38,    43,
+      45,    33,   126,    47,    37,    60,    62,    94,   124,    63,
+      58,    61,    59
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint16 yyr1[] =
+{
+       0,   133,   134,   135,   136,   136,   136,   137,   137,   137,
+     138,   138,   139,   139,   140,   140,   141,   142,   142,   143,
+     143,   143,   143,   144,   144,   144,   144,   144,   144,   144,
+     144,   144,   144,   144,   145,   145,   146,   146,   147,   147,
+     148,   148,   148,   148,   148,   149,   149,   149,   149,   149,
+     149,   149,   149,   149,   149,   149,   149,   149,   149,   149,
+     149,   150,   150,   151,   151,   151,   151,   152,   152,   152,
+     153,   153,   153,   153,   154,   154,   154,   155,   155,   155,
+     156,   156,   156,   156,   156,   157,   157,   157,   158,   158,
+     159,   159,   160,   160,   161,   161,   162,   162,   163,   163,
+     163,   163,   164,   165,   165,   165,   166,   166,   167,   167,
+     167,   167,   167,   167,   167,   167,   167,   167,   167,   167,
+     168,   168,   168,   168,   169,   169,   170,   170,   171,   171,
+     172,   172,   172,   172,   172,   172,   172,   172,   172,   173,
+     174,   174,   175,   175,   176,   176,   176,   176,   177,   177,
+     178,   179,   179,   179,   179,   179,   179,   180,   180,   180,
+     181,   181,   182,   182,   183,   183,   184,   185,   185,   186,
+     186,   187,   187,   188,   188,   188,   188,   189,   189,   190,
+     190,   191,   191,   191,   192,   192,   193,   193,   193,   193,
+     193,   193,   193,   193,   193,   193,   194,   194,   194,   195,
+     195,   195,   195,   195,   196,   196,   196,   196,   197,   198,
+     198,   198,   198,   198,   199,   199,   199,   199,   199,   200,
+     200,   201,   201,   202,   202,   203,   203,   204,   204,   204,
+     205,   205,   206,   206,   207,   207,   208,   208,   209,   209,
+     210,   210,   211,   211,   212,   212,   213,   213,   214,   214,
+     214,   214,   214,   215,   215,   215,   216,   216,   216,   217,
+     217,   217,   217,   217,   218,   218,   218,   219,   219,   220,
+     220,   220,   221,   221,   221,   221,   221,   222,   222,   223,
+     223,   223,   223,   224,   224,   225,   225,   225,   225,   226,
+     226,   226,   226,   227,   227,   228,   228,   229,   229,   230,
+     230,   230,   230,   230,   231,   230,   232,   232,   232,   233,
+     233,   234,   234,   234,   234,   234,   234,   234,   234,   235,
+     235,   235,   235,   235,   235,   235,   235,   235,   235,   235,
+     235,   235,   236,   236,   236,   236,   236,   237,   237,   238,
+     238,   238,   238,   239,   239,   239,   239,   240,   240,   240,
+     240,   241,   241,   241,   242,   242,   242,   242,   243,   243,
+     243,   244,   244,   245,   245,   246,   245,   245,   245,   247,
+     247,   248,   248,   249,   249,   249,   249,   250,   250,   250,
+     250,   251,   251,   252,   252,   252,   252,   252,   253,   253,
+     254,   255,   256,   256,   257,   256,   258,   258,   259,   259,
+     260,   260,   261,   261,   261,   261,   261,   262,   262,   262,
+     262,   263,   263,   264,   264,   265,   265,   266,   266,   266,
+     266,   267,   267,   267,   267,   267,   268,   268,   268,   268,
+     268,   269,   269,   270,   270,   271,   271,   272,   272,   272,
+     273,   273,   273,   274,   274,   274,   275,   275,   275,   276,
+     276,   276,   276,   277,   277,   277,   278,   278,   279,   279,
+     279,   279,   279,   280,   280,   281,   281,   282,   282,   282,
+     282,   282,   283,   283,   283,   283,   284,   284,   284,   285,
+     286,   286,   288,   287,   287,   289,   289,   289,   290,   290,
+     291,   291,   291,   292,   292,   292,   292,   293,   293,   293,
+     294,   294,   295,   295,   296,   297,   296,   298,   298,   299,
+     299,   300,   300,   300,   301,   301,   302,   302,   303,   303,
+     304,   304,   305,   305,   305,   306,   305,   305,   307,   307,
+     307,   308,   308,   308,   308,   308,   308,   308,   308,   308,
+     309,   309,   309,   310,   311,   311,   312,   312,   313,   313,
+     314,   315,   315,   316,   316,   316,   317,   317,   317,   317,
+     318,   318,   318,   318,   319,   319,   320,   320,   320,   321,
+     321,   321,   321,   322,   322,   323,   323,   323,   324,   324,
+     324,   325,   325,   325,   326,   326,   326,   327,   327,   327,
+     328,   328,   328,   329,   329,   329,   330,   330,   330,   331,
+     331,   331,   331,   332,   332,   333,   333,   333,   334,   334,
+     334,   334,   335,   335,   335,   336,   336,   336,   336,   337,
+     337,   337,   338,   338,   338,   338,   339,   339,   339,   340,
+     340,   340,   340,   341,   341,   342,   342,   342,   343,   343,
+     344,   344,   345,   345,   345,   346,   346,   346,   346,   346,
+     347,   347,   347,   347,   348,   348,   348,   349,   349,   349,
+     350,   350,   350,   350,   351,   351,   351,   352,   352,   352,
+     352,   352,   353,   353,   353,   353,   354,   354,   354,   355,
+     355,   355,   356,   356,   356,   356,   356,   356,   357,   357,
+     357,   358,   358,   358,   358,   358,   359,   359,   359,   359,
+     360,   360,   361,   361,   361,   362,   362,   363,   363,   363,
+     363,   363,   363,   364,   364,   364,   364,   364,   364,   364,
+     364,   364,   364,   365,   365,   365,   365,   366,   366,   366,
+     367,   367,   368,   368,   368,   368,   368,   368,   369,   369,
+     369,   369,   369,   369,   370,   371,   371,   371,   372,   372,
+     373,   373
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     0,     0,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
+       1,     3,     3,     1,     6,     4,     3,     7,     3,     7,
+       2,     2,     7,     4,     1,     3,     0,     1,     1,     3,
+       1,     3,     7,     3,     7,     1,     1,     1,     2,     2,
+       2,     2,     2,     2,     4,     2,     4,     6,     1,     4,
+       4,     1,     1,     1,     1,     1,     1,     1,     4,     4,
+       1,     3,     3,     3,     1,     3,     3,     1,     3,     3,
+       1,     3,     3,     3,     3,     1,     3,     3,     1,     3,
+       1,     3,     1,     3,     1,     3,     1,     3,     1,     5,
+       4,     5,     1,     1,     3,     2,     0,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       2,     5,     6,     7,     1,     3,     1,     3,     0,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     6,     4,
+       2,     7,     1,     3,     1,     2,     1,     2,     1,     2,
+       2,     5,     7,     5,     9,     5,     9,     1,     3,     1,
+       1,     3,     3,     2,     1,     2,     2,     0,     1,     2,
+       3,     0,     1,     2,     3,     3,     4,     0,     1,     1,
+       2,     5,     7,     6,     6,     4,     3,     4,     2,     3,
+       2,     3,     3,     3,     3,     5,     3,     3,     4,     1,
+       5,     6,     5,     6,     9,    10,     9,    10,     2,     1,
+       2,     2,     2,     1,     6,     8,    10,    12,    14,     0,
+       1,     0,     1,     1,     3,     4,     7,     0,     1,     3,
+       1,     3,     1,     1,     1,     3,     1,     1,     1,     3,
+       0,     1,     3,     4,     1,     3,     1,     1,     3,     3,
+       3,     3,     3,     2,     3,     6,     3,     3,     4,     1,
+       2,     2,     3,     5,     8,     7,     7,     5,     9,     2,
+       2,     5,     3,     5,     4,     3,     4,     4,     7,     3,
+       3,     3,     3,     4,     6,     1,     1,     1,     1,     1,
+       1,     1,     1,     0,     1,     1,     2,     1,     1,     1,
+       1,     1,     1,     1,     0,     5,     1,     2,     3,     1,
+       2,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     2,     3,     3,     1,     3,     1,
+       2,     2,     2,     4,     4,     4,     4,     1,     2,     2,
+       3,     1,     2,     2,     1,     2,     2,     3,     1,     2,
+       2,     1,     1,     4,     2,     0,     6,     7,     2,     2,
+       2,     0,     2,     2,     3,     2,     3,     1,     2,     3,
+       2,     2,     4,     0,     1,     2,     2,     1,     0,     1,
+       2,     2,     5,     2,     0,     7,     2,     4,     0,     2,
+       0,     1,     1,     1,     5,     5,     5,     1,     5,     5,
+       9,     1,     5,     0,     1,     1,     5,     1,     1,     5,
+       5,     1,     3,     3,     4,     1,     1,     1,     1,     2,
+       1,     3,     3,     1,     2,     1,     3,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     2,     1,
+       1,     1,     2,     0,     2,     2,     1,     4,     0,     1,
+       2,     3,     4,     2,     2,     1,     2,     2,     5,     5,
+       7,     6,     1,     2,     2,     3,     1,     2,     2,     4,
+       2,     4,     0,     4,     2,     1,     1,     1,     0,     2,
+       5,     5,    13,     1,     1,     3,     3,     2,     3,     3,
+       2,     4,     1,     6,     9,     0,    11,     1,     3,     3,
+       3,     1,     1,     5,     2,     5,     0,     1,     1,     3,
+       0,     1,     1,     1,     1,     0,     6,     2,     1,     2,
+       4,     2,     3,     3,     3,     4,     5,     5,     5,     6,
+       1,     1,     1,     3,     0,     5,     0,     1,     1,     2,
+       6,     1,     3,     0,     1,     4,     1,     1,     1,     1,
+       2,     1,     2,     2,     1,     3,     2,     3,     3,     2,
+       4,     4,     3,     8,     3,     2,     1,     2,     6,     8,
+       3,     2,     3,     3,     4,     4,     3,     1,     1,     1,
+       4,     6,     3,     2,     3,     3,     4,     4,     3,     2,
+       1,     2,     2,     1,     3,     2,     3,     3,     2,     4,
+       4,     3,     6,     8,     3,     2,     1,     2,     2,     2,
+       3,     3,     2,     4,     4,     3,     6,     8,     3,     2,
+       1,     2,     2,     1,     1,     2,     3,     3,     2,     4,
+       6,     8,     1,     2,     2,     1,     2,     2,     3,     3,
+       1,     4,     4,     3,     5,     8,     3,     2,     3,     1,
+       5,     5,     6,     6,     1,     2,     2,     1,     2,     2,
+       3,     3,     1,     4,     4,     3,     5,     8,     3,     1,
+       2,     1,     2,     6,     5,     6,     7,     7,     1,     2,
+       2,     1,     2,     2,     3,     3,     1,     4,     4,     3,
+       8,     3,     1,     1,     2,     1,     1,     2,     3,     2,
+       3,     2,     3,     3,     2,     4,     3,     2,     3,     2,
+       4,     3,     2,     6,     6,     6,     7,     1,     2,     1,
+       1,     1,     2,     3,     2,     3,     2,     3,     3,     4,
+       2,     3,     4,     2,     5,     5,     6,     6,     0,     1,
+       0,     2
+};
+
+/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
+   Performed when YYTABLE doesn't specify something else to do.  Zero
+   means the default is an error.  */
+static const yytype_uint16 yydefact[] =
+{
+     293,   293,   313,   311,   314,   312,   315,   316,   299,   301,
+     300,     0,   302,   327,   319,   324,   322,   323,   321,   320,
+     325,   326,   331,   328,   329,   330,   546,   546,   546,     0,
+       0,     0,   293,   219,   303,   317,   318,     7,   358,     0,
+       8,    14,    15,     0,     2,    61,    62,   564,     9,   293,
+     524,   522,   246,     3,   453,     3,   259,     0,     3,     3,
+       3,   247,     3,     0,     0,     0,   294,   295,   297,   293,
+     306,   309,   339,   285,   332,   337,   286,   347,   287,   354,
+     351,   361,     0,     0,   362,   288,   472,   476,     3,     3,
+       0,     2,   518,   523,   528,   298,     0,     0,   546,   576,
+     546,     2,   587,   588,   589,   293,     0,   730,   731,     0,
+      12,     0,    13,   293,   269,   270,     0,   294,   289,   290,
+     291,   292,   525,   304,   391,   547,   548,   369,   370,    12,
+     444,   445,    11,   440,   443,     0,   502,   497,   488,   444,
+     445,     0,     0,   527,   220,     0,   293,     0,     0,     0,
+       0,     0,     0,     0,     0,   293,   293,     2,     0,   732,
+     294,   581,   593,   736,   729,   727,   734,     0,     0,     0,
+     253,     2,     0,   531,   438,   439,   437,     0,     0,     0,
+       0,   546,     0,   633,   634,     0,     0,   544,   540,   546,
+     561,   546,   546,   542,     2,   541,   546,   600,   546,   546,
+     603,     0,     0,     0,   293,   293,   311,   359,     2,   293,
+     260,   296,   307,   340,   352,   477,     0,     2,     0,   453,
+     261,   294,   333,   348,   355,   473,     0,     2,     0,   310,
+     334,   341,   342,     0,   349,   353,   356,   360,   445,   293,
+     371,   364,   368,     0,   393,   474,   478,     0,     0,     0,
+       1,   293,     2,   529,   575,   577,   293,     2,   740,   294,
+     743,   544,   544,     0,   294,     0,     0,   272,   546,   542,
+       2,   293,     0,     0,   293,   549,     2,   500,     2,   553,
+       0,     0,     0,     0,     0,     0,    19,    58,     4,     5,
+       6,    17,     0,     0,   293,     2,    63,    64,    65,    66,
+      46,    20,    47,    16,    23,    45,    67,   293,     0,    70,
+      74,    77,    80,    85,    88,    90,    92,    94,    96,    98,
+     103,   494,   750,   451,   493,     0,   449,   450,     0,   565,
+     580,   583,   586,   592,   595,   598,   358,     0,     2,   738,
+       0,   293,   741,     2,    61,   293,     3,   425,     0,   433,
+     294,   293,   306,   332,   286,   347,   354,     3,     3,   407,
+     411,   421,   426,   472,   293,   427,   705,   706,   293,   428,
+     430,   293,     2,   582,   594,   728,     2,     2,   248,     2,
+     458,     0,   456,   455,   454,   140,     2,     2,   250,     2,
+       2,   249,     2,   280,     2,   281,     0,   279,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   566,   605,     0,
+     453,     2,   560,   569,   659,   562,   563,   532,   293,     2,
+     599,   608,   601,   602,     0,   275,   293,   293,   338,   294,
+       0,   294,     0,   293,   733,   737,   735,   533,   293,   544,
+     254,   262,   308,     0,     2,   534,   293,   498,   335,   336,
+     282,   350,   357,     0,   293,     0,   748,   398,     0,   475,
+     499,   251,   252,   519,   293,   435,     0,   293,   236,     0,
+       2,   238,     0,   294,     0,   256,     2,   257,   277,     0,
+       0,     2,   293,   544,   293,   485,   487,   486,     0,     0,
+     750,     0,   293,     0,   293,   489,   293,   559,   557,   558,
+     556,     0,   551,   554,     0,     0,   293,    53,   293,    67,
+      48,   293,    55,   293,   293,    51,    52,     2,   126,     0,
+       0,   447,     0,   446,   727,   120,   293,    18,     0,    30,
+      31,    36,     2,     0,    36,   110,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   109,   108,     0,    49,    50,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     105,     2,   645,   452,   642,   546,   546,   650,   479,   293,
+       2,   584,   585,     0,   596,   597,     0,     2,   739,   742,
+     120,   293,     0,     2,   707,   294,   711,   702,   703,   709,
+       0,     2,     2,   667,   546,   750,   616,   546,   546,   750,
+     546,   630,   546,   546,   681,   434,   664,   546,   546,   672,
+     679,   293,   429,   294,     0,     0,   293,   717,   294,   722,
+     750,   714,   293,   719,   750,   293,   293,   293,     0,   120,
+       0,    19,     2,     0,    20,     0,   459,   748,     0,     0,
+     465,   240,     0,   293,     0,     0,     0,   544,   568,   572,
+     574,   604,   607,   611,   614,   567,   606,     0,   283,   657,
+       0,   293,   276,     0,     0,     0,     0,   274,     2,     0,
+     258,   535,   293,     0,     0,   293,     2,   363,   383,   372,
+       0,     0,   377,   371,   749,     0,     0,   396,     0,   294,
+       3,   414,     3,   418,   417,   590,     0,   530,   293,    61,
+       3,   293,   433,   294,     3,   427,   428,     2,     0,     0,
+       0,   484,   305,   293,   480,   482,     3,     2,     2,     0,
+     501,     3,     0,   553,   128,     0,     0,   221,     0,     0,
+       0,     0,    37,     0,     0,   120,   293,    21,     0,    22,
+       0,   691,   696,   448,   688,   546,   546,     0,   106,     3,
+       2,    28,     0,    34,     0,     2,    26,     0,   104,    71,
+      72,    73,    75,    76,    78,    79,    83,    84,    81,    82,
+      86,    87,    89,    91,    93,    95,    97,     0,     0,   751,
+     293,     0,     0,     0,   646,   647,   643,   644,   496,   495,
+     293,     0,   293,   713,   293,   718,   294,   293,   661,   293,
+     293,   704,   660,     2,   293,     0,     0,     0,     0,     0,
+       0,     0,     0,   682,     0,   668,   619,   635,   669,     2,
+     615,   622,   431,   617,   618,   432,     2,   629,   638,   631,
+     632,   665,   666,   680,   708,   712,   710,   750,   267,     2,
+     744,     2,   422,   716,   721,   423,     0,   401,     3,     3,
+       3,     3,   453,     3,     0,     2,   467,   464,   749,     0,
+     460,     2,   463,   466,     0,   293,   241,   263,     3,   271,
+     273,     0,   453,     2,   570,   571,     2,   609,   610,     0,
+     658,   536,     3,   344,   343,   346,   345,   293,   537,     0,
+     538,   371,     0,     0,   293,   293,     0,     0,   691,   381,
+     384,   388,   546,   388,   387,   380,   373,   546,   375,   378,
+     293,   398,   392,   102,   399,   748,     0,     0,   436,   239,
+       0,     0,     3,     2,   667,   429,     0,   526,     0,   750,
+     488,     0,   293,   293,   293,     0,   550,   552,   129,     0,
+       0,   214,     0,     0,     0,   222,   223,    54,     0,    56,
+      59,    60,     0,     2,   127,     0,     0,     0,   692,   693,
+     689,   690,   458,    68,    69,   107,   124,     3,   106,     0,
+       0,    25,    36,     3,     0,    33,   100,     0,     3,   649,
+     653,   656,   648,     3,   591,     3,   715,   720,     2,    61,
+     293,     3,     3,   294,     0,     3,   621,   625,   628,   637,
+     671,   675,   678,   293,     3,   620,   636,   670,   293,   293,
+     424,   293,   293,   745,     0,     0,     0,     0,   255,     0,
+     102,     0,     3,     3,     0,   461,     0,   457,     0,     0,
+     244,   293,     0,     0,   128,     0,     0,     0,     0,     0,
+     128,     0,     0,   106,   106,    19,     2,     0,     0,     3,
+     130,   131,     2,   142,   132,   133,   134,   135,   136,   137,
+     144,   146,     0,     0,     0,   284,   293,   293,   546,     0,
+     539,   293,   374,   376,     0,   390,   692,   385,   389,   386,
+     379,   383,   366,   397,     0,   578,     2,   663,   662,     0,
+     668,     2,   481,   483,   503,     3,   511,   512,     0,     2,
+     507,     3,     3,     0,     0,   555,   221,     0,     0,     0,
+     221,     0,     0,   120,   695,   699,   701,   694,   748,   106,
+       0,     3,   660,    40,     3,    38,    35,     0,     3,    99,
+     101,     0,     2,   651,   652,     0,     0,   293,     0,     0,
+       0,     3,   637,     0,     2,   623,   624,     2,   639,     2,
+     673,   674,     0,     0,    61,     0,     3,     3,     3,     3,
+     409,   408,   412,     2,     2,   747,   746,   121,     0,     0,
+       0,     0,     3,   462,     3,     0,   242,   145,     3,   294,
+     293,     0,     0,     0,     0,     2,     0,   190,     0,   188,
+       0,     0,     0,     0,     0,     0,     0,   546,   120,     0,
+     150,   147,   293,     0,     0,   266,   278,     3,     3,   545,
+     612,   367,   382,   395,   293,   265,   293,     0,   514,   491,
+     293,     0,     0,   490,   505,     0,     0,     0,   215,     0,
+     224,    57,     2,   697,   698,     0,   125,   122,     0,     0,
+       0,     0,     0,    24,     0,   654,   293,   579,   264,   723,
+     724,   725,     0,   676,   293,   293,   293,     3,     3,     0,
+     684,     0,     0,     0,     0,   293,   293,     3,   543,   121,
+     469,     0,     0,   245,   294,     0,     0,     0,     0,   293,
+     191,   189,   186,     0,   192,     0,     0,     0,     0,   196,
+     199,   197,   193,     0,   194,   128,    36,   143,   141,   243,
+       0,     0,   416,   420,   419,     0,   508,     2,   509,     2,
+     510,   504,   293,   227,     0,   225,     0,   227,   293,    32,
+     123,     2,    43,     2,    41,    39,    29,    27,     3,   726,
+       3,     3,     3,     0,     0,   683,   685,   626,   640,   268,
+       2,   406,     3,   405,     0,   471,   468,   128,     0,     0,
+     128,     3,     0,   128,   187,     0,     2,     2,   208,   198,
+       0,     0,     0,   139,     0,   573,   613,     2,     0,     0,
+       2,   228,     0,     0,   216,     0,     3,     0,     0,     0,
+       0,     0,     0,   686,   687,   293,     0,   470,   151,     0,
+       0,     2,   164,   128,   153,     0,   181,     0,   128,     0,
+       2,   155,     0,     2,     0,     2,     2,     2,   195,    33,
+     293,   513,   515,   506,     0,     0,     0,     0,     0,     3,
+       3,   655,   627,   641,   677,   410,   128,   157,   160,     0,
+     159,   163,     3,   166,   165,     0,   128,   183,   128,     3,
+       0,   293,     0,   293,     0,     2,     0,     2,   138,     2,
+     229,   230,     0,   226,   217,   700,     0,     0,   152,     0,
+       0,   162,   232,   167,     2,   234,   182,     0,   185,   171,
+     200,     3,   209,   213,   202,     3,     0,   293,     0,   293,
+       0,     0,     0,    44,    42,   158,   161,   128,     0,   168,
+     293,   128,   128,     0,   172,     0,     0,   691,   210,   211,
+     212,     0,   201,     3,   203,     3,   293,   218,   231,   148,
+     169,   154,   128,   235,   184,   179,   177,   173,   156,   128,
+       0,   692,     0,     0,     0,     0,   149,   170,   180,   174,
+     178,   177,   175,     3,     3,     0,     0,   492,   176,   204,
+     206,     3,     3,   205,   207
+};
+
+/* YYDEFGOTO[NTERM-NUM].  */
+static const yytype_int16 yydefgoto[] =
+{
+      -1,   814,   468,   300,    47,   133,   134,   301,   302,   303,
+     304,   305,   762,   763,  1134,  1135,   306,   381,   308,   309,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,  1031,   518,   976,   547,   322,   977,   948,  1058,  1519,
+    1060,  1061,  1062,  1063,  1520,  1064,  1065,  1438,  1439,  1402,
+    1403,  1404,  1498,  1499,  1503,  1504,  1539,  1540,  1066,  1362,
+    1067,  1068,  1299,  1300,  1301,  1481,  1069,   145,   954,   955,
+     956,  1382,  1462,  1473,  1474,   469,   470,   875,   876,  1039,
+      51,    52,    53,    54,    55,   347,   158,    58,    59,    60,
+      61,    62,   349,    64,    65,   264,    67,    68,   274,   351,
+     352,    71,    72,    73,   118,    75,   204,   354,   119,    78,
+     120,    80,    81,   455,    82,   454,   689,   690,   691,   909,
+    1087,   910,    83,    84,   458,   456,   697,   856,   857,   858,
+     859,   700,   701,   702,   359,   360,   361,   362,   466,   340,
+     135,   136,   522,   324,   170,   646,   647,   648,   649,   650,
+      85,   121,    87,   489,   490,   940,   491,   277,   495,   325,
+      88,   137,   138,    89,  1322,  1109,  1110,  1111,  1112,    90,
+      91,   718,    92,   273,    93,    94,   187,  1033,   680,   412,
+     125,    95,   501,   502,   503,   188,   268,   190,   191,   192,
+     269,    98,    99,   100,   101,   102,   103,   104,   195,   196,
+     197,   198,   199,   826,   606,   607,   608,   609,   200,   611,
+     612,   613,   573,   574,   575,   576,   752,   105,   615,   616,
+     617,   618,   619,   620,   969,   754,   755,   756,   596,   365,
+     366,   367,   368,   326,   164,   107,   108,   109,   370,   695,
+     570
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+   STATE-NUM.  */
+#define YYPACT_NINF -1323
+static const yytype_int16 yypact[] =
+{
+    7329,  8828, -1323,    37, -1323, -1323, -1323, -1323, -1323, -1323,
+   -1323,   109, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323,    85,    85,    85,   873,
+     733,   178,  7561,   370, -1323, -1323, -1323, -1323, -1323,   191,
+   -1323, -1323, -1323,   614,   225, -1323, -1323, -1323, -1323,  4615,
+   -1323, -1323, -1323, -1323,   229,   285, -1323,   934, -1323, -1323,
+   -1323, -1323,   435,  1196,   579,   110,  7677, -1323, -1323,  4858,
+    1038, -1323, -1323,   580,   596,  6761,  1021,   875,   580,  1103,
+   -1323, -1323,  1317,   308, -1323,   580,  1224, -1323,   495, -1323,
+     616,   623, -1323, -1323, -1323, -1323,   547,   285,    85, -1323,
+      85, -1323, -1323, -1323, -1323,  9174,   934, -1323, -1323,   934,
+   -1323,   551, -1323,  9403, -1323, -1323,  1899,  9436, -1323,   844,
+     844,   844, -1323, -1323, -1323,    85, -1323, -1323, -1323,   584,
+     608,   632, -1323, -1323, -1323,   646, -1323, -1323, -1323, -1323,
+   -1323,   664,   687, -1323, -1323,   -28,  8797,  2908,   117,   701,
+     717,   726,   771,   786,   799,  8715,  6849,   731,   757, -1323,
+    5600, -1323, -1323, -1323, -1323,   804, -1323,   223,  5225,  5225,
+   -1323,   802,   365, -1323, -1323, -1323, -1323,   816,   443,   480,
+     534,    85,   827, -1323, -1323,  1196,  4341,   868, -1323,    50,
+   -1323,    85,    85,   285, -1323, -1323,    61, -1323,    85,    85,
+   -1323,  4647,   857,   864,   844,  6523, -1323, -1323,   869,  4615,
+   -1323, -1323,   580, -1323, -1323, -1323,   285, -1323,   934,   229,
+   -1323,  7868, -1323,   844,   844,   844,   285, -1323,   873, -1323,
+    5676, -1323, -1323,   852,   844, -1323,   844, -1323,   191,  8797,
+   -1323,   884, -1323,   733,   890,   844, -1323,   873,   888,   892,
+   -1323,  7561,   631, -1323, -1323, -1323,  9256, -1323, -1323,  9621,
+   -1323,   868,   151, 10214,  9436,  1899,  4647, -1323,    88, -1323,
+   -1323,  9403,   934,   891,  7708, -1323, -1323,   347, -1323, 10561,
+     922,   956, 10347,   945, 10366, 10423, -1323,   954, -1323, -1323,
+   -1323, -1323, 10442, 10442,  8571,   952, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323,   988, -1323,   966,  1946,  8910, 10366, -1323,
+     756,   338,   485,   411,   635,   955,   947,   957,   984,   237,
+   -1323, -1323,   962,   647, -1323,   302, -1323, -1323,  2908, -1323,
+   -1323,   235,   985, -1323,   312,   985,   989,   191, -1323, -1323,
+     990,  9174, -1323,   999,  1006,  9023, -1323, -1323,  1335,  2030,
+    8286,  6523,   580, -1323,   580,   844,   844, -1323, -1323, -1323,
+   -1323, -1323, -1323,   844,  9174,   934, -1323, -1323,  9474,  1575,
+   -1323,  8017, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,
+    5958, 10366, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323,  1899, -1323,   973,   991,
+     992,  1012,   978,  1017,  1018,  1020,  4341, -1323, -1323,  1029,
+     229,  1031, -1323, -1323,  1033, -1323, -1323, -1323,  9256, -1323,
+   -1323, -1323, -1323, -1323,  4647, -1323,  8797,  8797, -1323,   844,
+    1899,  6642,   934,  8359, -1323, -1323, -1323, -1323,  9256,   151,
+   -1323, -1323,   580,   285, -1323, -1323,  9256, -1323,  5770, -1323,
+   -1323,   844,   844,   337,  8204,  1032,  1036,  1023,  1042,   844,
+   -1323, -1323, -1323, -1323,  9660, -1323,   367,  6404, -1323,   285,
+    1044, -1323,  1899, 10643, 10271, -1323, -1323, -1323, -1323,  1015,
+    4647, -1323,  8432,   868,  7445, -1323, -1323, -1323,   843,   436,
+     962,   733,  7708,  1341,  9403, -1323,  7708, -1323, -1323, -1323,
+   -1323,   508, -1323,  1051,   956,   248,  8571, -1323,  9512, -1323,
+   -1323,  8571, -1323,  8684,  8571, -1323, -1323,  1049, -1323,   606,
+    1057,   682,  1059, -1323, -1323,  3527,  6492, -1323,   362, -1323,
+   -1323, 10214, -1323,   368, 10214, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10214, -1323, -1323,
+   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,
+   10366, 10366, 10366, 10366, 10366, 10366, 10366, 10366,  3593, 10214,
+   -1323,   647,  1677, -1323, -1323,    85,    85, -1323, -1323,  8797,
+   -1323, -1323,  1033,   631, -1323,  1033, 10290, -1323, -1323, -1323,
+    5046,  6492,  1060,  1063, -1323,  9436, -1323, -1323,   804, -1323,
+    1067,   750,  1068,  2627,   125,   962, -1323,    85,    85,   962,
+     132, -1323,    85,    85,  1033, -1323, -1323,    85,    85, -1323,
+     985,  9545,   934, 10788,   532,   656,  9545, -1323,  9621, -1323,
+     962, -1323,  9174, -1323,   238,  7983,  7983,  7983,   934, -1323,
+    5791,  1047,  1008,   493,  1058,  1061, -1323,  1076,  5225,   528,
+   -1323,  1165,   934,  7983,   631,  1899,   631,   868,   430,   985,
+   -1323, -1323,   536,   985, -1323, -1323, -1323,   956, -1323,   985,
+     285,  9660, -1323,   619,  1086,   633,  1088, -1323,  1087,   285,
+   -1323, -1323,  9256,   285,  1089,  9512,  1092, -1323,  1065, -1323,
+     538,   552,   733, -1323,   733,  1085, 10366, -1323,   733, 10788,
+   -1323, -1323,  1096, -1323, -1323, -1323,   631, -1323, 10716,  1006,
+   -1323,  7983,   703,  8286, -1323, -1323,   804,  1095,  1098,   843,
+    5016, -1323, -1323,  7708, -1323, -1323,  1091, -1323, -1323,  1102,
+   -1323,  1091,  1104, 10561, 10214,  1090,  1093,    94,  1109,  1107,
+    1111,  1114, -1323,  1118,  1129,  9365,  6611, -1323, 10214, -1323,
+     682,  1717, -1323, -1323, -1323,    85,    85, 10157, 10214,  1125,
+   -1323, -1323,   653, -1323, 10214, -1323, -1323,   736, -1323, -1323,
+   -1323, -1323,   756,   756,   338,   338,   485,   485,   485,   485,
+     411,   411,   635,   955,   947,   957,   984, 10366,   260, -1323,
+    9660,  1132,  1136,  1137,  1677, -1323, -1323, -1323, -1323, -1323,
+    9660,   708,  7983, -1323,  9174, -1323,  6968,  9136, -1323,  8017,
+    6849, -1323, -1323,   750,  9660,  1022,  1140,  1141,  1142,  1143,
+    1146,  1149,  1154, -1323,  3715,  2627, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323,  1033, -1323, -1323, -1323,   962, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323,  1155, -1323,  1157,  1159,
+   -1323, -1323,   229,  1125,  5791, -1323, -1323, -1323,  5958,  1158,
+   -1323, -1323, -1323, -1323,   733,  6174,  1248, -1323, -1323, -1323,
+   -1323,  1151,   229, -1323, -1323,  1033, -1323, -1323,  1033,    84,
+    1033, -1323, -1323, -1323, -1323, -1323, -1323,  9327, -1323,   285,
+   -1323, -1323,   559,   562,  9474,  7087,  2137, 10366,  3114, -1323,
+   -1323,  1156,    51,  1156, -1323,   733, -1323,    85, -1323, -1323,
+    8941,  1023, -1323, -1323, -1323,  1036,  1175,  1171, -1323, -1323,
+    1178,  1181, -1323,   703,  1901, -1323,   672, -1323,  5016,   962,
+   -1323,  1184,  7708,  9583,  8797,  1185, -1323, -1323,  1180,  1187,
+    1170, -1323, 10366,  1197,   326,  1194, -1323,  1202,   631,  1202,
+   -1323, -1323,  1202,  1199, -1323,  1208,  1210,  1211,  1717, -1323,
+   -1323, -1323,  5958, -1323, -1323, -1323, -1323,  1209, 10214,  1212,
+     631, -1323, 10214, -1323,   631, -1323, -1323, 10214, -1323,   558,
+     985, -1323, -1323, -1323, -1323, -1323, -1323, -1323,  1008,  1006,
+    9023, -1323, -1323,  7206,  1218, -1323,   674,   985, -1323,   813,
+     861,   985, -1323,   844,  4029, -1323, -1323, -1323,  9660,  9660,
+   -1323,  8359,  8359, -1323,  1215,  1216,  1225,  1230, -1323,  1232,
+     685,    82,  1125, -1323,   631, -1323,  5225, -1323, 10214,   564,
+   -1323,  6373,  1236,  1240, 10100,  1242,  1243,    70,    79,    96,
+   10214,  1244,   285, 10214, 10214,  1227,  1249,   522,  1222, -1323,
+   -1323, -1323,  1250, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323,   733,  1254, 10214, -1323,  9660,  9660,    85,  1257,
+   -1323,  9054, -1323, -1323,   752, -1323,  3114, -1323, -1323, -1323,
+   -1323,  1065, -1323, -1323,  1255, -1323, -1323, -1323, -1323,  1258,
+    1901, -1323, -1323,  1245, -1323,  1091, -1323, -1323,  1899,  1260,
+   -1323, -1323, -1323,   713,  1264, -1323,    94,  1269, 10366,  1252,
+      94,    94,  1262,  3527,   879,   985, -1323, -1323,  1076, 10214,
+    1273,  1209,   358,   204,  1270, -1323, -1323,  1275,  1270, -1323,
+   -1323,  1278, -1323, -1323,  1033,  1280,  1284,  6730,  1285,  1290,
+    1291, -1323, -1323,  1286, -1323, -1323,  1033, -1323, -1323, -1323,
+   -1323,  1033, 10214, 10214,  1006,  1294, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, 10366, 10366,
+    1300,  1302,  1270, -1323, -1323,   733, -1323, -1323, -1323,  5213,
+    9583, 10214, 10214,  1374, 10214, -1323,  1295, -1323,  1296, -1323,
+    1297, 10214,  1301, 10214,  1105,  1304,    12,    85,  9289,  1625,
+   -1323, -1323,  6174,  1322,   573, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323,  9920, -1323,  8432,  1330, -1323, -1323,
+    9583,   576,   602, -1323,  1331,  1315,   956,  1337, -1323,   329,
+   -1323, -1323, -1323, -1323,  1033,  1339, -1323, -1323,  1320,   486,
+     509,   631,  1340, -1323,  1344, -1323,  9660, -1323, -1323, -1323,
+   -1323, -1323,  1347, -1323,  9660,  9660,  9660, -1323, -1323,  1348,
+   -1323,  1351,  1354,  1355,   716,  8056,  8171, -1323, -1323,   529,
+   -1323,  1357,  1362, -1323,  8505,   721,   730,  1358,   761,  3837,
+   -1323, -1323, -1323,   605, -1323,   766,  1366,  1367,   285,  1419,
+     834, -1323, -1323, 10214, -1323, 10100, 10214, -1323, -1323, -1323,
+    1370,  1375, -1323, -1323, -1323,  1372, -1323, -1323, -1323, -1323,
+   -1323, -1323,  9583,   956,  1379, -1323,  1352,   956,  9660, -1323,
+   -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323, -1323,  1378,  1382, -1323, -1323, -1323, -1323, -1323,
+   -1323, -1323,  1387, -1323,  1386, -1323, -1323, 10100,   289, 10214,
+   10100, -1323,  1389, 10214, -1323,   318,  1405,  1406, -1323, -1323,
+    1399,  1400,  1380, -1323,   821, -1323, -1323, -1323,   934,  1899,
+    1396, -1323,   402, 10366, -1323,   785, -1323,   631,   631,  1407,
+    1408,  1413,  1415, -1323, -1323,  8359,  1414, -1323,  1490, 10366,
+    1385, -1323, -1323, 10012, -1323,   800, -1323,  1402, 10100,  1403,
+   -1323, -1323,  1426, -1323,  1427, -1323,  1445,  1446, -1323,  1411,
+    9583, -1323, -1323, -1323,   956,   631,  1434,  1417,  1435,  1270,
+    1270, -1323, -1323, -1323, -1323, -1323, 10100,   107, -1323,   433,
+   -1323, -1323,  7793, -1323, -1323,  1418, 10214, -1323, 10214,  7793,
+     285,  9512,   285,  9512,  1436, -1323,  1442, -1323, -1323,  1440,
+   -1323, -1323,   825, -1323, -1323, -1323,  1444,  1449, -1323, 10366,
+   10366, -1323, -1323,   909,   211, -1323, -1323,  1425, -1323,   909,
+   -1323, -1323,  2166,   631, -1323, -1323,   285,  9512,   285,  9512,
+    1453,  1431,   631, -1323, -1323, -1323, -1323, 10012,  1443,   909,
+    6091, 10214,  9924,  1452,   909,  1454,  2166,  3344, -1323, -1323,
+   -1323,  1458, -1323, -1323, -1323, -1323,  8797, -1323, -1323, -1323,
+    9791, -1323, 10012, -1323, -1323,  1438,  9703, -1323, -1323,  9924,
+     285,  3344,   285,  1464,  1466,   853, -1323,  9791, -1323, -1323,
+   -1323,  9703, -1323, -1323, -1323,   285,   285, -1323, -1323, -1323,
+   -1323, -1323, -1323, -1323, -1323
+};
+
+/* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+   -1323,  4572,  3263, -1323,   197, -1323,   601,   950,  -251,   910,
+   -1323,   521,  -520,  -467,  -853,   -64,  3183,     0, -1323,  -150,
+     423,   446,   477,   450,  1016,  1025,  1019,  1026,  1028, -1323,
+    -622,  -408,  5012,  -745, -1323,  -735,   604,   472,  -656,   413,
+   -1323,  1279, -1323,   374, -1058, -1323, -1323,   126, -1323,  -823,
+   -1106,   222, -1323, -1323, -1323, -1323,    58, -1209, -1323, -1323,
+   -1323, -1323, -1323, -1323,   301, -1149,    35, -1323,  -933, -1323,
+     482,   274, -1323,   159, -1323,  -303, -1323, -1323, -1323,   535,
+    -827, -1323, -1323,    15, -1007,    71,    28, -1323, -1323, -1323,
+     -21, -1323,   357,  1253,  -198,  1636,  4113, -1323, -1323,    80,
+      54,   422,  1473, -1323,  1886, -1323, -1323,   192,  2183, -1323,
+    2495,   898, -1323, -1323, -1323,  -638, -1323,   924,   925,   524,
+     699,    83, -1323, -1323, -1323,   915,   695,  -339, -1323,  -106,
+      34,  1281, -1323, -1323,  -847,  -986,  1046,  1127,  1039,     5,
+   -1323,  1536,   481,  -165,  -210,  -124,   651,   758, -1323,   979,
+   -1323,  2789,  1548,  -413,   904, -1323, -1323,   689, -1323,  -235,
+   -1323,   158, -1323, -1323, -1323, -1257,   401, -1323, -1323, -1323,
+    1148, -1323,    21, -1323, -1323,  -858,  -105, -1322,  -129,  2267,
+   -1323,  2391, -1323,   906, -1323,  -184,    59,  -180,  -173,  -170,
+       7,   -40,   -35,   -33,    60,    -6,    25,    93,  -168,  -164,
+    -158,  -147,  -144,  -292,  -471,  -462,  -452,  -551,  -302,  -537,
+   -1323, -1323,  -511,  1069,  1072,  1074,  2608,  4844,  -578,  -514,
+    -502,  -495,  -500, -1323,  -508,  -724,  -717,  -708,  -590,  -305,
+    -195, -1323, -1323,   246,    19,    36, -1323,  3865,   104,  -623,
+    -397
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
+   positive, shift that token.  If negative, reduce the rule which
+   number is the opposite.  If YYTABLE_NINF, syntax error.  */
+#define YYTABLE_NINF -522
+static const yytype_int16 yytable[] =
+{
+      49,   113,   407,   149,   453,   399,   428,    97,   150,   440,
+     151,   267,   400,   753,   767,   401,   114,  1071,   408,   106,
+     106,   402,   974,   280,   869,   828,   965,   403,    57,    57,
+     505,   845,    49,   966,  1188,    50,  1172,   152,   404,    97,
+     597,   405,   967,   147,   383,   384,   741,   610,  1070,    49,
+     357,   106,   827,   143,    70,   920,   161,   605,   410,    96,
+      57,   795,   177,   186,   819,  1380,   209,    50,   153,    49,
+     193,    56,   115,   216,   923,  1303,   226,  1440,   949,   726,
+      69,   281,   407,   731,   219,   399,    70,   820,   106,    31,
+      31,    96,   400,   724,    57,   401,   425,    57,   408,   821,
+      31,   402,   148,    56,   831,   113,   822,   403,    96,   162,
+     838,   261,    69,   113,   262,   670,   266,   271,   404,   122,
+     212,   405,   189,   194,    31,    96,   217,    31,    96,   227,
+     816,  1138,   475,   477,   510,   679,   154,   210,   202,   817,
+     220,   260,  1196,   683,  1304,   149,   307,   147,  1440,   818,
+     150,  1198,   151,   166,   161,   113,   345,   548,   549,   252,
+     209,   411,   411,  1459,    31,   986,   527,   373,  1200,   629,
+     419,    31,   411,   633,  1170,  1171,   291,   715,  1178,   152,
+     914,  1182,   965,  1235,   348,   186,   186,  1239,   203,   966,
+     358,   342,    76,   161,  1078,   548,   721,   481,   967,   411,
+     668,   266,  1197,  1469,  1179,   952,    96,   162,   832,    49,
+     153,  1199,   835,  1201,  1187,   409,   161,   166,   123,    96,
+     374,   209,   665,   439,    76,   149,   252,   329,   443,  1179,
+     150,   548,   151,   852,   829,   471,   602,   855,   666,   307,
+    1172,   836,  1030,   602,   398,   189,   162,  1017,   816,    57,
+     327,    49,  1140,   735,   176,  -233,  -233,   817,    97,   271,
+     476,   674,   676,  1081,   271,   266,   266,   818,    96,   162,
+     106,   113,   463,   161,  1016,   442,  1004,   483,   154,    57,
+      96,   444,  1188,   992,   500,   923,    50,   142,   924,  1249,
+    1172,   657,   441,  1527,   307,   163,   665,   860,   861,   820,
+     146,   610,  1094,   176,  1485,    70,   176,   307,  1205,  1206,
+      96,   821,   666,   436,   878,   831,   597,  1250,   822,   672,
+    1542,   597,    56,   572,   479,   677,  -233,   357,   147,   730,
+     923,    69,   567,  1399,  1400,   373,   168,   155,  1513,   377,
+    1515,   113,   816,   327,   580,   345,   411,   476,   743,   603,
+     621,   817,   176,   177,  1071,   378,   828,    63,   736,   163,
+     169,   818,  1399,  1400,   626,  1139,   568,  1497,   626,   569,
+     630,   113,   932,  1502,   634,   436,   748,   589,   737,   899,
+     110,   144,   139,   140,  1246,  1070,   447,    96,   374,    63,
+     987,    41,    42,  1522,  1202,   805,   266,   471,  1529,   171,
+     769,   770,   771,  1401,   212,   460,   186,   342,   604,  1172,
+     845,   166,   578,   373,   799,   176,  1030,   471,   579,   820,
+     357,   583,   243,   411,   266,   471,   307,   307,  1170,  1171,
+     266,   821,  1410,   626,   110,  1188,  1119,   854,   822,  1326,
+     110,   715,  1188,    76,  1526,    41,    42,   684,    76,   599,
+    1020,    41,    42,   579,   113,   435,  1120,   553,   554,  1327,
+    1127,   348,  1363,   995,  1537,   189,   374,   358,  -121,   176,
+    -121,  1541,   266,   760,  -121,   493,   176,   705,   494,   765,
+     266,   387,   626,   706,    49,   357,   953,   373,   720,  -121,
+    -121,    97,   229,  1188,   113,   230,   923,   388,   234,  1085,
+     236,   557,   558,   106,   911,  1245,   307,   245,   113,  1158,
+    1160,   307,    57,   307,   307,  1136,   714,   435,  1424,    50,
+     913,   751,  1017,   610,   870,   113,   345,   212,   882,  1105,
+     327,   327,  1425,  1015,  1429,  1430,   559,   560,    70,   883,
+     523,   411,  1102,    96,  1117,   176,   722,   604,  1435,  1470,
+     880,   181,   723,   163,   348,    56,   923,   923,   110,   390,
+     358,   342,   176,  1471,    69,   110,   176,   139,   140,    41,
+      42,   572,   572,   555,   556,   391,    41,    42,  1127,   307,
+    1444,   110,   201,   914,     2,   206,     4,     5,     6,     7,
+     626,   345,    41,    42,   286,   621,   392,  1331,   327,  -289,
+     715,   603,   111,   603,   865,    41,    42,   973,    63,   997,
+      76,   247,   393,   472,   805,  1475,   250,   327,   732,   348,
+    1333,   626,  1475,  -517,   733,   358,   626,   847,   621,   176,
+      76,   514,   626,  1361,   229,   626,   626,   626,    76,   871,
+    -468,   643,  -468,   862,   848,   886,  1015,   411,   849,    35,
+     394,    36,  1028,   626,   915,   266,   252,   877,   872,  -468,
+     815,   471,   604,   348,   348,   348,   395,  1142,   917,   411,
+     916,   807,  1075,  1523,  1444,   915,    76,   442,   917,  1444,
+    1185,   348,   263,   327,   918,   113,    37,   929,   908,  1185,
+      40,  1082,  1317,   -10,  1083,   597,  1186,    41,    42,  1444,
+     692,   498,   805,   110,   357,  1309,  1444,  1409,  1318,  1113,
+    1237,   626,   934,   621,    41,    42,   747,  -441,  1319,   720,
+     720,   748,   748,    43,   407,   846,   399,   561,   562,   893,
+     599,    45,    46,   400,  1320,   748,   401,  1364,   500,   348,
+     408,  -442,   402,   895,  1035,   113,   345,   912,   403,   748,
+     751,   751,   523,   212,   523,   276,   571,   523,   411,   404,
+     523,   923,   405,   981,    45,    46,   519,   212,   850,   982,
+    1277,  1278,   851,   278,   229,   472,   234,   923,   815,   604,
+     714,   342,   965,  1154,   850,   411,  1374,   176,  1101,   966,
+    1477,   750,  1478,   411,   572,   472,   279,  -103,   967,    45,
+      46,  -103,   626,   472,   626,   110,  1000,   139,   140,   626,
+     345,   330,   933,   603,   602,  1162,    41,    42,   994,   176,
+      45,    46,    37,  1233,   706,   603,    40,   331,  1349,   579,
+     348,  1357,  1350,    41,    42,   176,   332,   748,   348,   712,
+    1358,    63,   715,   371,   358,  1524,   748,   923,   923,   176,
+     548,   985,   982,   465,     8,     9,    10,    11,    12,   813,
+     212,   602,   329,   411,   229,   953,   372,    45,    46,   953,
+     953,  1360,   815,   550,    76,   307,  1365,   748,  -290,   551,
+     552,   333,   748,    31,   604,     8,     9,    10,    11,    12,
+     807,   510,  1370,  1371,   106,  1427,   334,   626,   673,   675,
+      76,  1424,   665,    57,   113,   345,   908,   911,   908,   335,
+    1445,    34,  1183,   376,    31,    37,   748,   385,   666,    40,
+     113,   715,  1157,   913,   602,   389,    41,    42,   805,    70,
+     176,   692,   409,   934,   934,  1491,  1419,   982,   720,   714,
+     342,  1492,    34,   113,   307,   129,    56,   130,   131,   132,
+      48,   112,   719,  1399,  1400,    69,    41,    42,  1106,   397,
+      45,    46,   106,  1547,   214,  1084,   426,   912,   751,   579,
+    1159,    57,   602,   427,  1509,  1426,   772,   773,   519,   112,
+     112,   432,    48,   519,   450,  1324,   519,   738,  1242,   739,
+     411,  1437,   740,    48,  1088,   744,  1088,   604,  -365,    48,
+     345,   774,   775,  1228,  -394,   484,    37,    48,   174,   175,
+      40,   780,   781,    48,  1107,   214,    48,    41,    42,    48,
+     461,   626,   626,  1127,   462,     2,   206,     4,     5,     6,
+       7,   504,   112,   112,   776,   777,   778,   779,   291,   472,
+     788,   307,     2,   206,     4,     5,     6,     7,   327,   348,
+     348,   528,   529,   530,   508,  1169,    48,   442,   214,    48,
+     106,  1495,  1437,   513,   525,   472,    48,    76,   111,    57,
+     527,   228,  1381,   563,   564,   531,  1381,   532,   566,   533,
+     534,   113,   252,   329,   411,   565,   908,   419,   661,   411,
+      35,   908,    36,   569,   176,    70,   338,    48,  -438,   587,
+     934,   658,   659,   712,   846,    48,  -291,    35,   266,    36,
+      48,   590,    56,     8,     9,    10,    11,    12,    -3,   214,
+     639,  1190,   660,   626,   481,   329,   411,   662,   663,   761,
+     664,   829,   329,   602,   766,    48,    48,    37,   667,   183,
+     184,    40,    31,   669,   257,   912,   693,   345,    41,    42,
+     912,    48,   694,    -3,   696,   498,   698,   214,  -237,    48,
+     734,   745,   214,  1296,  1297,  1298,   692,   749,    48,   757,
+      34,    48,   808,  1460,   906,   809,   411,   -12,   112,   812,
+     823,   714,    45,    46,   465,  1332,  1334,  1335,   -13,   271,
+     113,   867,   868,   112,   874,   907,   894,   112,   896,   897,
+     922,    48,   112,   901,   904,   219,  -415,   723,   113,   106,
+    -521,   944,   307,   937,   946,    48,    48,    57,    57,   957,
+     950,   959,    48,   958,   960,   951,   626,  -292,   961,    48,
+     113,   106,    63,    76,     8,     9,    10,    11,    12,   962,
+      57,   978,   989,   212,   342,  1106,   990,   991,   214,   106,
+    1006,  1007,  1008,  1009,   116,   879,  1010,   881,    57,  1011,
+     210,   220,   712,    31,  1012,  1023,    70,  -403,    37,  -402,
+     183,   184,    40,  1037,  1422,   626,   626,  1072,    48,    41,
+      42,  1535,  1074,    56,   271,  1095,   907,  1096,  1059,   307,
+    1097,    34,    69,  1098,  1104,  1114,   748,  1115,    48,    48,
+    1116,  1107,   159,   348,   348,   185,  1118,   928,   106,  1352,
+    1121,  1123,    57,    45,    46,    48,   972,    57,  1124,    48,
+    1125,  1126,   113,   407,  1132,  1129,   399,   692,  1152,   214,
+     644,  1173,  1174,   400,   173,  1175,   401,  1106,   442,   408,
+    1176,   106,   402,    70,  1177,  1191,    48,   665,   403,  1192,
+      57,  1194,  1195,  1203,  1210,   441,    48,  1207,   258,   404,
+      56,  1208,   405,   666,  1215,    -3,   159,  1220,  1225,  1190,
+    1223,   214,  1241,   493,    48,  1229,   253,  1508,  1234,   266,
+      48,  1236,    48,  1421,  1238,  1247,  1251,  1253,  1255,   110,
+    1257,   139,   238,  1107,  1258,   626,  1263,  1259,   472,   323,
+      41,    42,  1260,  1261,    76,   176,  1270,    37,   339,   174,
+     175,    40,  1279,   110,  1280,   139,   140,   112,    41,    42,
+     113,  1287,    48,   348,    41,    42,   239,  1290,  1291,  1292,
+      48,   240,  1330,  1294,    48,  1106,  1302,  1308,    48,   106,
+    1315,   112,   113,   112,   372,  1323,  1321,  1325,    57,   113,
+     727,   113,  1336,   113,  1329,   728,  1337,  1193,   430,  1339,
+    1345,   106,   434,  1346,  1347,  1348,   149,  1359,   106,  1355,
+      57,   150,   417,   151,  1356,  1366,  1367,    57,   112,  1298,
+    1375,    76,  1507,   112,  1384,  1376,  1377,   113,  1383,   113,
+    1393,  1107,   323,   214,  1394,   437,    70,  -404,  1397,  1408,
+     113,  1412,  1414,    70,   712,   445,  1507,  1507,  1416,  1417,
+     703,  1423,  1418,    56,   161,  1441,   307,  1431,  1432,   106,
+      56,   214,  1190,  1433,   434,  1434,   214,   488,    57,  1190,
+    1350,  1507,  1436,   112,  1446,  1448,  1450,  1452,   373,   213,
+      48,  1454,  1456,  1458,  1463,  1465,  1486,   521,   232,  1464,
+    1476,    48,  1488,    48,    70,  1490,  1493,  1501,  1521,  1122,
+     159,  1494,  1516,  1517,  1530,   479,   141,  1528,  1532,    63,
+    1538,    56,    48,   520,  1545,   176,  1546,   889,  1209,   782,
+    1190,  1133,  1131,   712,   784,  1133,  1307,  1411,    48,   783,
+     213,   704,   785,   112,   588,   786,  1496,   214,   594,  1548,
+    1369,  1385,    48,  1240,   112,    48,   112,  1214,  1479,   902,
+     903,   214,  1089,   925,   215,  1222,  1093,   627,   241,   244,
+     327,   631,   801,  1128,   339,  1059,  1036,   939,   873,  1103,
+     242,  1316,   717,   213,    76,  1133,    66,   117,    48,   947,
+     791,    76,   112,   792,   112,   793,   472,    37,   112,   174,
+     175,    40,     0,     0,     0,     0,   112,     0,    41,    42,
+       0,     0,     0,  1285,  1286,   215,  1288,     0,    66,    48,
+      48,     0,     0,  1293,     0,  1295,     0,     0,     0,   323,
+     323,     0,     0,    48,   376,   160,     0,     8,     9,    10,
+      11,    12,    76,     0,   213,     0,     0,  1483,     0,  1483,
+       0,     0,     0,     0,   214,   221,     0,   688,   215,     0,
+     528,   529,   530,     0,     0,     0,    31,   703,  1373,     0,
+     116,     0,   681,     0,     0,     0,     0,     8,     9,    10,
+      11,    12,   213,  1483,   531,  1483,   532,   213,   533,  1306,
+       0,   259,     0,     0,    34,   488,     0,   323,   707,   488,
+       0,     0,   499,     0,     0,     0,    31,     0,     0,   521,
+       0,   521,     0,    48,   521,     0,   323,   521,     0,   215,
+    1398,     0,     0,  1406,     0,    48,     0,     0,   339,   457,
+       0,     0,     0,   328,    34,   520,   571,     0,   411,     0,
+     520,   259,   350,   520,    45,    46,     0,     0,   704,   472,
+       0,     0,     0,     0,     0,     0,   472,   215,     0,     0,
+       0,     0,   215,     0,     0,     0,  1443,     0,   644,     0,
+       0,  1447,   406,   213,   112,     0,   750,     0,   411,     0,
+       0,  1405,   323,     0,    45,    46,   703,   424,     0,     0,
+     429,   431,     0,   803,     0,   160,   703,    48,     0,  1468,
+    1133,  1133,  1133,     0,     0,     0,    48,   472,    48,     0,
+     703,     0,     0,     0,     0,   112,   448,     0,     0,     0,
+     451,     0,   452,     0,   844,     0,     0,     0,     0,   594,
+       0,   459,     0,     0,     0,   853,    74,    66,    48,     0,
+       0,     0,   473,     0,     0,     0,     0,     0,   215,     0,
+       0,   214,   480,     0,   213,     0,     0,     0,   112,     0,
+     431,     8,     9,    10,    11,    12,   645,   704,    74,     0,
+       0,   213,   644,     0,     0,     0,     0,   704,     0,     0,
+     112,     0,     0,  1536,   112,     0,     0,     0,   688,  1536,
+      31,   704,     0,     0,     0,     0,   213,     0,     0,   891,
+    1536,     0,   892,     0,  1536,   222,     0,     0,   898,     0,
+       0,     0,   900,     0,     0,     0,     0,     0,    34,     0,
+       0,    37,     0,   183,   184,    40,   488,   259,     0,   215,
+       0,   595,    41,    42,   112,     0,     0,   623,  1133,  1133,
+       0,     0,     0,     0,     0,     0,     0,     0,   339,     0,
+     628,     0,     0,     0,   628,     0,     0,   259,   265,     0,
+     933,     0,   602,     0,     0,     0,    45,    46,    45,    46,
+       0,   215,   112,     0,     0,     0,  1461,   725,     0,   729,
+       0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
+       0,    48,   353,   535,   536,   537,   538,   539,   540,   541,
+     542,   543,   544,   545,   473,     0,     0,   996,    48,     0,
+       0,     0,   803,     0,   703,   703,     0,     0,   213,   350,
+       0,   988,     0,     0,   473,     0,     0,   546,     0,     0,
+       0,   993,   473,     0,  1510,     0,     0,   214,     0,     0,
+       0,     0,     0,  1518,     0,  1005,   213,     0,     0,     0,
+     699,   213,    37,   431,   183,   184,    40,     0,     0,     0,
+       0,     0,     0,    41,    42,     0,   449,     0,   713,     0,
+      66,     0,   703,   703,     0,     0,     0,     0,   431,     0,
+       0,     0,   431,     0,     0,   112,     0,    74,     0,   601,
+       0,   602,    74,   215,     0,   704,   704,    45,    46,     0,
+     803,     0,     0,     0,     0,     0,     0,   339,    48,     0,
+       0,   259,   350,     0,     0,     0,     0,     0,     0,     0,
+       0,   215,   213,   688,     0,     0,   215,     0,  1080,   866,
+       0,     0,   214,    77,     0,     0,   213,     0,     0,     0,
+       0,     0,     0,     0,     0,   488,  1108,   323,     0,   112,
+     112,   112,     0,   704,   704,     0,   499,     0,   794,    37,
+       0,   183,   184,    40,     0,    77,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,     0,   628,   806,   919,     0,
+     921,     0,     0,     0,   457,     0,     0,   222,    37,   825,
+     183,   184,    40,     0,     0,     0,   906,   215,   411,    41,
+      42,     0,   223,   844,    45,    46,     0,   595,     0,     0,
+       0,   215,   595,     0,     0,     0,     0,     0,   628,     0,
+    1313,   350,   350,   350,     0,  1506,     0,   411,     0,   213,
+       0,     0,     0,    45,    46,     0,     0,     0,     0,   350,
+       0,     0,     0,   124,   127,   128,     0,     0,     0,  1167,
+    1168,     0,   703,     0,    74,     0,     0,   699,     0,     0,
+     703,   703,   703,     0,     0,     0,     0,     0,   473,   353,
+       0,     0,     0,     0,    74,     0,     0,     0,    48,    48,
+       0,  1204,    74,     0,   688,     0,     0,   112,   112,   355,
+       0,     0,     0,     0,   473,     0,     0,   350,     0,     0,
+     353,  1314,     0,     0,   215,     0,   938,  1217,  1218,   431,
+       0,     0,     0,     0,     0,   254,     0,   255,   353,     0,
+      74,     0,     0,     0,   703,   112,   803,     0,     0,     0,
+       0,   259,   713,   704,     0,     0,     0,   968,     0,     0,
+       0,   704,   704,   704,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   645,     0,     0,     0,     0,     0,
+    1040,     0,   353,     0,     0,     0,     0,   126,   126,   126,
+       0,     0,     0,     0,     0,     0,   699,     0,     0,     0,
+       0,     0,    48,   112,    77,     0,   699,     0,   350,    77,
+     628,     0,   112,  1003,     0,   628,   806,     0,   396,     0,
+     699,  1090,     0,     0,     0,   704,    48,    48,   415,   416,
+    1014,   339,     0,   420,     0,   422,   423,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   213,   353,     0,     0,
+       0,    48,     0,  1108,     0,     0,     0,     0,     0,   126,
+       0,   126,     0,     0,     0,    79,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   645,     0,
+       0,    66,     0,     0,     0,     0,   275,     0,     0,     0,
+       0,   353,   353,   353,     0,     0,     0,    79,     0,     0,
+       0,     0,     0,   628,   223,     0,     0,  1338,     0,   353,
+     259,   713,     0,     0,  1086,  1340,  1341,  1342,     0,     0,
+       0,   215,     0,     0,     0,     0,     0,   353,     0,     0,
+       0,     0,     0,     0,   224,     0,     0,     0,    74,     0,
+    1100,     0,   126,     0,     0,  1108,     0,  1368,   431,   117,
+     126,     0,   126,   126,     0,     0,     0,   126,     0,   126,
+     126,     0,     0,     0,    74,     0,     0,   353,     0,     0,
+       0,    77,     0,     0,     0,     0,     0,     0,  1040,  1386,
+       0,     0,     0,     0,     0,     0,   355,     0,     0,     0,
+       0,    77,     0,     0,     0,     0,     0,     0,     0,    77,
+       0,     0,   353,     0,     0,     0,   595,     8,     9,    10,
+      11,    12,     0,     0,     0,     0,     0,   355,     0,   429,
+       0,   356,     0,     0,   699,   699,     0,   350,   350,   126,
+       0,     0,   213,     0,     0,   355,    31,    77,     0,     0,
+       0,     0,     0,  1108,     0,     0,   353,  1189,     0,     0,
+       0,     0,     0,     0,     0,     0,   353,     0,   353,     0,
+       0,     0,     0,   222,    34,     0,   353,     0,     0,    37,
+     353,   183,   184,    40,  1482,     0,  1482,     0,     0,   355,
+      41,    42,   699,   699,     0,     0,     0,     0,     0,     0,
+       0,  1283,     0,     0,     0,     0,     0,     0,     0,  1480,
+       0,  1484,     0,     0,     0,     0,   601,   215,   602,     0,
+    1482,     0,  1482,     0,    45,    46,    79,     0,     0,     0,
+       0,    79,     0,     0,     0,     0,     0,   213,     0,   628,
+       0,    74,     0,     0,     0,  1512,     0,  1514,     0,   323,
+       0,     0,     0,     0,   355,     0,     0,     0,     0,     0,
+       0,     0,     0,   713,     0,     0,     0,     0,     0,    86,
+       0,   353,     0,     0,     0,     0,     0,   413,     0,     0,
+       0,     0,     0,     0,   421,     0,     0,     0,     0,  1543,
+       0,  1544,     0,     0,     0,     0,     0,     0,   355,   355,
+     355,    86,     0,     0,  1551,  1552,  1284,     0,     0,     0,
+       0,     0,   215,     0,     0,     0,   355,     0,     0,     0,
+       0,     0,   796,   797,   259,     0,   224,     0,    66,     0,
+       0,     0,     0,     0,   355,     0,     0,     0,   225,     0,
+     699,     0,   713,     0,     0,    77,   117,     0,     0,     0,
+       0,   830,     0,     0,   833,   834,   413,   837,     0,   839,
+     840,     0,     0,     0,   841,   842,     0,     0,     0,     0,
+       0,    77,   699,     0,   355,     0,     0,     0,     0,     0,
+     699,   699,   699,     0,   353,   353,     0,   353,   353,     0,
+       0,   350,   350,    79,     0,     0,     0,     0,     8,     9,
+      10,    11,    12,     0,     0,  1189,     0,    74,   356,   355,
+       0,   577,     0,    79,     0,     0,     0,     0,     0,   581,
+       0,    79,   584,     0,     0,   363,     0,    31,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   117,   356,
+       0,     0,   353,   353,   699,     0,   126,   126,     0,     0,
+       0,     0,     0,   355,     0,    34,     0,   356,     0,    79,
+      37,     0,     0,   355,    40,   355,     0,     0,     0,     0,
+     223,    41,    42,   355,     0,   126,     0,   355,   126,   126,
+       0,   126,     0,   126,   126,     0,   413,     0,   126,   126,
+     421,     0,     0,     0,     0,     0,     0,    43,     0,     0,
+       0,   356,   970,   971,     0,    45,    46,     0,     0,     0,
+       0,   350,     0,   353,     0,     0,     0,     0,     0,     0,
+      86,     0,     0,     0,     0,    86,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   117,     0,    77,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   222,     0,  1189,     0,
+       0,     0,     0,     0,     0,  1189,   356,   413,   355,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    74,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     353,     0,   353,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     8,     9,    10,    11,    12,     0,
+     356,   356,   356,     0,     0,     0,  1189,     0,     0,     0,
+     225,     0,   353,  1531,     0,     0,   126,   126,   356,     0,
+     353,   353,   353,    31,     0,     0,     0,     0,     0,     0,
+       0,   353,   353,     0,     0,     0,   356,     0,     0,     0,
+       0,     0,     0,     0,     0,    74,     0,    79,     0,   577,
+     577,    34,     0,     0,  1091,     0,    37,     0,   183,   184,
+      40,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,   355,   355,    79,   355,   355,   356,    86,     0,     0,
+       0,     0,     0,     0,   353,     0,     0,     0,     0,     0,
+       0,     0,   363,   906,    77,   411,     0,    86,     0,     0,
+       0,    45,    46,     0,     0,    86,     0,     0,     0,     0,
+       0,   356,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   363,     0,     0,     0,     0,     0,   355,
+     355,     0,     0,     0,     0,     0,   884,     0,     0,     0,
+     887,   363,     0,    86,     0,     0,     0,     0,     0,     0,
+       0,   353,     0,     0,     0,   356,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   356,     0,   356,     0,     0,
+       0,     0,   224,   126,     0,   356,     0,     0,   126,   356,
+       0,     0,     0,     0,     0,   363,   167,     0,   172,     0,
+       0,   178,   179,   180,     0,   182,     0,     0,    74,     0,
+     355,     0,     0,     0,     0,    74,     0,     0,     0,   233,
+       0,     0,     0,     0,     0,  1219,     0,     0,     0,     0,
+       0,   248,   249,     0,     8,     9,    10,    11,    12,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      79,     0,     0,   223,     0,     0,     0,     0,     0,     0,
+     363,     0,     0,    31,     0,     0,    74,     0,     0,     0,
+       0,     0,     0,     0,     0,    77,     0,     0,     0,     0,
+     356,     0,   577,     0,     0,     0,     0,   355,     0,   355,
+       0,    34,     0,     0,     0,     0,    37,     0,   183,   184,
+      40,     0,     0,     0,   363,   363,   363,    41,    42,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   355,
+       0,     0,   363,     0,     0,     0,     0,   355,   355,   355,
+       0,     0,     0,  1506,     0,   411,     0,     0,   355,   355,
+     363,    45,    46,     0,     0,   507,     0,   509,   512,   126,
+       0,    86,    77,     0,  1305,   515,   516,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     509,   509,     0,     0,     0,     0,     0,    86,     0,     0,
+     363,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   355,     0,   356,   356,     0,   356,   356,     0,     0,
+     413,     0,     0,     0,     0,     0,     0,     0,   509,     0,
+       0,     0,     0,     0,     0,   363,    79,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,  -293,     0,    26,    27,    28,
+       0,     0,     0,     0,   509,     0,    31,     0,     0,     0,
+       0,   356,   356,     0,     0,     0,     0,     0,   355,   363,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   363,
+       0,   363,     0,     0,    34,     0,   225,  1143,   126,   363,
+       0,    38,    39,   363,     0,  -293,     0,   592,     0,   600,
+       0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
+     624,   625,     0,     0,     0,    77,     0,     0,     0,     0,
+     282,   283,    77,   284,     0,     0,   635,     0,   338,     0,
+       0,     0,   356,     0,    45,    46,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   285,
+       0,     0,     0,     0,    86,   286,     0,     0,     0,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,    77,     0,   224,     0,     0,     0,     0,
+       0,     0,   413,     0,   363,     0,     0,     0,     0,     0,
+       0,     0,   294,     0,   379,     0,     0,    79,     0,     0,
+      45,    46,   296,   297,   298,   299,     0,     0,     0,   356,
+       0,   356,  1013,   787,     0,     8,     9,    10,    11,    12,
+       0,     0,  1243,   509,   509,   509,   509,   509,   509,   509,
+     509,   509,   509,   509,   509,   509,   509,   509,   509,   509,
+     509,   356,   282,   283,    31,   284,     0,     0,     0,   356,
+     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
+     356,   356,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   285,    34,     0,    79,     0,     0,   286,     0,     0,
+       0,   287,     0,     0,   288,   289,   290,   291,    41,    42,
+       0,   292,   293,     0,     0,     0,     0,   363,   363,     0,
+     363,   363,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   356,   294,     0,   379,     0,     0,     0,
+      86,     0,   344,    46,   296,   297,   298,   299,     0,     0,
+       1,     2,   206,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,   363,   363,    26,    27,    28,
+      29,     0,     0,    30,   282,   283,    31,   284,     0,   509,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     356,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
+       0,    38,    39,   287,   165,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
+       0,   218,     0,     0,     0,     0,   363,    79,     0,     0,
+     509,     0,     0,     0,    79,     0,   294,     0,  1056,     0,
+       0,     0,     0,     0,    45,    46,   296,   297,   298,   299,
+       0,     0,     0,   926,     0,   927,     0,     0,     0,  -128,
+     509,     0,   930,   931,     0,     0,     0,   936,   165,   225,
+       0,     0,   272,     0,     0,     0,     0,     0,     0,   941,
+       0,     0,     0,     0,   945,    79,     0,     0,     0,     0,
+       0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   165,     0,   363,     0,   363,     0,     0,     0,     0,
+       0,   369,   979,     0,     0,   375,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,  1163,     0,     0,     8,
+       9,    10,    11,    12,     0,   363,     0,     0,     0,     0,
+       0,     0,     0,   363,   363,   363,     0,     0,     0,     0,
+       0,     0,     0,     0,   363,   363,   282,   283,    31,   284,
+       0,     0,     0,     0,   165,     0,     0,     0,    86,     0,
+       0,     0,     0,     0,     0,     0,   218,     0,     0,     0,
+     509,     0,     0,     0,     0,   285,    34,     0,     0,     0,
+       0,   286,     0,     0,   165,   287,     0,     0,   288,   289,
+     290,   291,    41,    42,     0,   292,   293,   363,     0,     0,
+       0,  1024,  1025,  1026,  1027,     0,  1029,     0,     0,   375,
+       0,     0,     0,     0,     0,   509,   165,     0,   294,     0,
+     379,  1073,     0,     0,     0,     0,  1164,    46,   296,   297,
+     298,   299,     0,     0,     0,  1079,     0,     0,     0,   524,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     509,     0,   165,     0,     0,     0,     0,     0,     0,   211,
+       0,     0,     0,   509,   363,     0,     0,     0,   231,     0,
+     235,     0,   237,     0,     0,  1099,     0,     0,     0,   246,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     598,     0,     0,     0,     0,   622,     0,     0,     0,     0,
+       0,     0,     0,     0,   509,     0,     0,     0,     0,     0,
+     211,    86,   235,   237,   246,     0,     0,     0,    86,     0,
+    1130,     0,     0,     0,     0,     0,  1137,     0,     0,     0,
+       0,  1141,     0,     0,     0,     0,  1145,     0,  1146,     0,
+       0,     0,  1148,     0,  1149,  1150,     0,     0,  1153,     0,
+       0,     0,     0,   211,     0,     0,     0,  1165,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    86,
+       0,   165,   165,     0,     0,  1180,  1181,     0,   369,     0,
+       0,   509,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   524,
+       0,     0,  1211,     0,     0,  1213,     0,     0,     0,     0,
+       0,     0,     0,     0,   211,     0,   235,   237,   246,     0,
+       0,     0,     0,     0,     0,     0,     0,   716,     0,     0,
+       0,     8,     9,    10,    11,    12,     0,     0,     0,   165,
+       0,   509,   509,     0,     0,     0,     0,     0,  1227,     0,
+       0,   524,   211,   524,  1231,  1232,   524,   211,   165,   524,
+      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   369,   497,     0,  1248,     0,     0,  1252,     0,     0,
+       0,  1254,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     0,    37,  1262,   183,   184,    40,     0,     0,
+       0,     0,     0,     0,    41,    42,     0,  1269,     0,  1271,
+    1272,  1273,  1274,     0,     0,     0,     0,     0,     0,     0,
+       0,   211,     0,     0,   165,  1281,     0,  1282,     0,     0,
+     185,   172,     0,     0,     0,     0,   369,     0,    45,    46,
+     811,     0,     0,   211,     0,     0,     0,     0,   235,   237,
+       0,     0,     0,     0,     0,     0,   246,     0,     0,     0,
+    1310,  1311,     0,     0,     0,     0,   598,     0,     0,     0,
+       0,   598,     0,     0,     0,     0,     0,     0,     0,     0,
+     369,   369,   369,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   369,   211,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    1343,  1344,     0,     0,     0,     0,     0,   211,     0,     0,
+    1354,     0,   211,     0,   211,     0,     0,     0,     0,     0,
+     524,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   211,     0,     0,   211,   211,   509,     0,     0,     0,
+       0,     0,   211,     0,     0,     0,   369,     0,   935,     0,
+       0,     0,   509,     0,     0,     0,   211,     0,     0,     0,
+       0,     0,     0,   211,     0,     0,     0,     0,     0,     0,
+       0,  1389,     0,  1390,  1391,  1392,     0,     0,     0,     0,
+       0,   716,     0,     0,     0,  1396,   156,     0,     0,     0,
+       0,     0,     0,     0,  1407,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,  1428,
+       0,     0,   509,   509,    31,     0,     0,     8,     9,    10,
+      11,    12,     0,   251,     0,     0,     0,   369,     0,     0,
+       0,   622,     0,   256,     0,   369,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,    31,    37,     0,    38,
+      39,    40,  1466,  1467,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,     0,     0,  1472,     0,     0,   211,     0,
+       0,     0,  1472,     0,    34,     0,     0,     0,     0,    37,
+       0,   183,   184,    40,    43,     0,   157,     0,     0,   156,
+      41,    42,    45,    46,     0,     0,   211,     0,     0,     0,
+       0,   211,     0,   386,  1505,     0,     0,     0,  1511,     0,
+       0,     0,     0,     0,     0,     0,   265,     0,     0,     0,
+       0,     0,     0,     0,    45,    46,   418,     0,     0,     0,
+     716,     0,     0,     0,     0,     0,  1533,     0,  1534,     0,
+     433,     0,     0,     0,     0,   524,     0,     0,     0,   438,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   446,
+       0,     0,     0,     0,     0,     0,  1549,  1550,     0,   165,
+       0,     0,   211,     0,  1553,  1554,     0,     0,     0,     0,
+       0,     0,     0,     0,   464,     0,   211,     0,     0,   474,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   482,     0,     0,     0,   497,     0,   492,     0,
+     496,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   598,     0,   526,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,   369,   369,    26,    27,
+      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   211,     0,     0,
+     586,     0,     0,     0,     0,   591,     0,     0,     0,   211,
+       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
+      37,     0,    38,    39,    40,     0,     0,     0,   211,     0,
+       0,    41,    42,     0,   636,     0,   524,     0,   637,   638,
+       0,   640,     0,     0,     0,     0,     0,     0,   651,   652,
+       0,   653,   654,     0,   655,     0,   656,    43,     0,    44,
+       0,     0,     0,     0,     0,    45,    46,     0,     0,     0,
+       0,     0,     0,   586,     0,     0,     0,     0,     0,     0,
+       0,   671,     0,     0,     0,     0,     0,     0,     0,   341,
+     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   716,     0,     0,     0,   682,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     8,     9,    10,    11,
+      12,     0,     0,   414,     0,     0,     0,     0,     0,     0,
+     414,     0,   708,     0,     0,     0,     0,     0,   711,     0,
+       0,   211,     0,   464,   218,    31,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,  -293,     0,    26,    27,    28,     0,
+       0,   211,     0,    34,     0,    31,     0,     0,    37,   746,
+       0,   716,    40,     0,     0,     0,     0,     0,     0,    41,
+      42,     0,     0,     0,   764,     0,     0,     0,     0,     0,
+       0,     0,   414,    34,     0,     0,   211,     0,    37,     0,
+     336,   337,    40,     0,  -293,   719,     0,   211,     0,    41,
+      42,     0,     0,    45,    46,     0,     0,     0,     0,     0,
+     369,   369,     0,   790,     0,     0,     0,     0,     0,   218,
+       0,     0,   800,     0,     0,   635,     0,   338,   321,   802,
+       0,     0,     0,    45,    46,   810,     0,   414,   346,     0,
+       0,     0,     0,     0,   824,   414,   582,     0,   414,   585,
+     382,   382,     0,     0,     0,     0,     0,     0,     0,   364,
+       0,     0,     0,   614,     0,     0,     0,     0,     0,   211,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   632,   211,   864,   341,   205,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,   414,    26,    27,    28,   414,     0,     0,     0,
+     810,   321,    31,     0,     0,     0,     0,     0,   905,     0,
+     369,     0,   282,   283,     0,   284,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   478,     0,   364,     0,     0,
+      34,     0,    35,     0,    36,     0,     0,   207,    39,   251,
+       0,   285,     0,     0,     0,     0,     0,   286,     0,   942,
+     943,   287,   211,     0,   288,   289,   290,   291,    41,    42,
+       0,   292,   293,     0,     0,     0,   524,     0,   524,     0,
+       0,     0,     0,   414,   208,     0,   364,     0,     0,     0,
+      45,    46,   980,     0,   294,     0,   379,   984,     0,   380,
+       0,     0,    45,    46,   296,   297,   298,   299,     0,     0,
+       0,     0,   524,     0,   524,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   414,     0,     0,     0,   341,
+     364,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   165,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   382,     0,     0,     0,     0,   211,     0,     0,
+       0,  1018,     0,     0,     0,     0,     0,     0,  1019,     0,
+       0,     0,     0,     0,     0,   414,   414,     0,     0,     0,
+       0,  1021,     0,  1022,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   804,   364,     0,  1034,     0,     0,
+       0,     0,     0,  1038,     0,   614,     0,   614,   614,     0,
+       0,     0,     0,     0,   614,  1076,     0,     0,  1077,     0,
+       0,     0,     0,     0,   843,   364,     0,     0,     0,     0,
+     364,     0,     0,     0,     0,     0,     0,     0,     0,   364,
+     364,   364,     0,     0,     0,     0,   710,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   364,     0,     0,
+       0,     0,   414,   885,     0,     0,   414,   888,     0,     0,
+       0,     0,     0,   890,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   742,     0,     0,     0,     0,
+       0,     0,   414,     0,     0,   591,     0,     0,   759,     0,
+       0,     0,     0,   742,     0,     0,   742,     0,     0,     0,
+       0,     0,     0,     0,     0,   364,   614,     0,     0,   768,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    1147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   789,     0,     0,     0,     0,     0,     0,     0,   341,
+     364,   798,     0,     0,   414,   414,     0,     0,   346,     0,
+       0,     0,     0,   759,     0,     0,     0,     0,     0,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,   526,     0,
+      26,    27,    28,     0,  1212,     0,     0,     0,   414,    31,
+       0,     0,     0,     0,   211,     0,   364,     0,     0,     0,
+       0,     0,   863,   804,   364,     0,     0,   614,     0,   614,
+     382,     0,     0,     0,     0,     0,     0,    34,  1224,   614,
+       0,     0,    37,  1226,   207,    39,    40,     0,     0,     0,
+       0,  1230,     0,    41,    42,     0,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,  -293,     0,     0,     0,     0,    43,
+       0,   270,     0,     0,  1256,    31,     0,    45,    46,     0,
+       0,     0,     0,     0,     0,     0,  1264,     0,     0,  1265,
+       0,  1266,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   804,     0,    34,     0,  1275,  1276,     0,   341,   364,
+     414,     0,   414,     0,  -293,     0,   414,     0,   759,     0,
+     964,     0,     0,     0,     0,     0,     0,  1289,     0,     0,
+     975,     0,     0,     0,     0,     0,   983,   614,   614,     0,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,  -294,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
+       0,     0,   414,     0,  1328,     0,     0,     0,  1001,  1002,
+       0,     0,   346,     0,     0,     0,     0,     0,   282,   283,
+       0,   284,     0,   414,  1144,     0,   346,    34,     0,     0,
+       0,     0,     0,     0,   364,     0,     0,     0,  -294,     0,
+     414,  1156,     0,   614,   614,  1161,     0,   285,     0,     0,
+       0,     0,     0,   286,     0,   364,   364,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,  1032,   292,   293,     0,
+     382,     0,     0,     0,     0,     0,     0,     0,     0,  1378,
+       0,  1379,     0,     0,     0,     0,     0,     0,     0,     0,
+     294,     0,   379,  1387,     0,  1388,     0,   758,    45,    46,
+     296,   297,   298,   299,     0,     0,     0,   346,     0,     0,
+       0,     0,  1395,     0,     0,     0,     0,     0,   414,     0,
+     414,     0,     0,     0,     0,   414,     0,     0,  1413,  1415,
+       0,     0,     0,     0,   614,     0,     0,     0,     0,  1420,
+       0,     0,  1230,     0,     0,     0,   321,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   804,   414,  1244,
+       0,     0,     0,  1442,     0,     0,     0,     0,     0,     0,
+       0,     0,  1449,     0,   382,  1451,     0,  1453,  1455,  1457,
+     975,   364,     0,     0,   742,   282,   283,     0,   284,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,  1151,     0,     0,     0,     0,
+       0,     0,     0,     0,   285,     0,  1166,  1487,     0,  1489,
+     641,  1230,   139,   140,   287,     0,     0,   288,   289,   290,
+     291,    41,    42,     0,   292,   293,  1500,     0,   382,     0,
+    1184,     0,   341,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   975,   975,   294,     0,   642,
+     364,   643,   380,     0,     0,    45,    46,   296,   297,   298,
+     299,     0,     0,     0,     0,     0,  1216,     0,     0,     0,
+       0,     0,     0,     0,     1,     2,   206,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,   364,
+     364,    26,    27,    28,    29,     0,     0,    30,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   975,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,   863,
+      35,     0,    36,     0,     0,    38,    39,     0,     0,     0,
+       0,     0,     0,     0,  1267,  1268,     0,     1,     2,   206,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    44,     0,    26,    27,    28,    29,    45,    46,
+      30,   282,   283,    31,  1041,  1042,     0,  1043,     0,     0,
+    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
+       0,  1052,     0,     0,     0,  1053,  1054,     0,    33,   364,
+     285,    34,     0,    35,     0,    36,  1055,     0,    38,    39,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   294,     0,  1056,     0,     0,   171,     0,
+       0,    45,    46,   296,   297,   298,   299,     0,     0,     0,
+       0,  1057,     0,     0,     0,     0,  -128,     0,     0,     0,
+       0,     0,     0,     0,     0,  1372,     0,     0,   742,     0,
+       0,     0,     0,     0,     0,     0,   414,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     414,   414,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   414,     1,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,    29,     0,     0,    30,
+     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
+      34,     0,    35,    31,    36,   286,     0,    38,    39,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,   110,     0,    38,    39,
+       0,     0,   294,     0,    44,     0,     0,    41,    42,     0,
+      45,    46,   296,   297,   298,   299,     2,   206,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,   321,   282,
+     283,    31,   284,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,     0,     0,   285,    34,
+       0,    35,    31,    36,   286,     0,    38,    39,   287,     0,
+       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      34,     0,     0,     0,     0,     0,     0,    38,    39,     0,
+       0,   294,     0,   343,     0,     0,     0,     0,   758,   344,
+      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
+      31,   284,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,   285,    34,     0,
+      35,    31,    36,   286,     0,    38,    39,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
+       0,     0,     0,     0,     0,     0,   207,    39,     0,     0,
+     294,     0,   963,     0,     0,     0,     0,   758,   344,    46,
+     296,   297,   298,   299,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
+      26,    27,    28,     0,     0,     0,     0,   282,   283,    31,
+     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,     0,     0,     0,     0,     0,   285,    34,     0,    35,
+      31,    36,   286,     0,    38,    39,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
+       0,   963,     0,     0,     0,     0,   758,    45,    46,   296,
+     297,   298,   299,     2,   206,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
+      27,    28,     0,     0,     0,     0,   282,   283,    31,   284,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   285,    34,     0,    35,     0,
+      36,   286,     0,    38,    39,   287,     0,     0,   288,   289,
+     290,   291,    41,    42,     0,   292,   293,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   294,     0,
+     343,     0,     0,     0,     0,     0,   344,    46,   296,   297,
+     298,   299,     2,   206,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,     0,     0,   282,   283,    31,   284,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   285,    34,     0,    35,     0,    36,
+     286,     0,   207,    39,   287,     0,     0,   288,   289,   290,
+     291,    41,    42,     0,   292,   293,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   294,     0,   998,
+       0,     0,     0,     0,     0,   999,    46,   296,   297,   298,
+     299,     2,   206,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
+       0,     0,     0,     0,   282,   283,    31,   284,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   285,    34,     0,    35,     0,    36,   286,
+       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   294,     0,   963,     0,
+       0,     0,     0,     0,   344,    46,   296,   297,   298,   299,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
+       0,     0,     0,   282,   283,    31,   284,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   285,    34,     0,    35,     0,    36,   286,     0,
+     207,    39,   287,     0,     0,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   294,     0,   379,     0,     0,
+       0,     0,     0,    45,    46,   296,   297,   298,   299,  -516,
+       0,     0,     1,     2,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
+      27,    28,    29,     0,     0,    30,     0,     0,    31,    32,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    33,     0,     0,    34,     0,    35,     0,
+      36,    37,     0,    38,    39,    40,     0,     0,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    43,     0,
+      44,     0,     0,     0,     0,     0,    45,    46,     1,     2,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,    29,     0,
+       0,    30,     0,     0,    31,    32,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    33,
+       0,     0,    34,     0,    35,     0,    36,    37,     0,    38,
+      39,    40,     0,     0,     0,     0,     0,     0,    41,    42,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    43,     0,    44,     0,     0,     0,
+    -520,     0,    45,    46,     1,     2,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,    29,     0,     0,    30,     0,     0,
+      31,    32,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    33,     0,     0,    34,     0,
+      35,     0,    36,    37,     0,    38,    39,    40,     0,     0,
+       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      43,     0,    44,     0,     0,     0,     0,     0,    45,    46,
+     205,     2,   206,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
+       0,     0,     0,     0,     0,     0,    31,     0,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,   485,   486,   487,    34,     0,    35,    31,    36,    37,
+       0,   207,    39,    40,     0,     0,     0,     0,     0,     0,
+      41,    42,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
+       0,     0,    38,    39,     0,     0,    43,     0,   208,     0,
+       0,     0,     0,     0,    45,    46,     1,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,  -293,     0,    26,    27,    28,    29,     0,     0,    30,
+       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      34,     0,    35,     0,    36,     0,     0,    38,    39,     0,
+       0,  -293,     2,   206,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,     0,    44,     0,     0,    31,     0,     0,
+      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
+      37,     0,   207,    39,    40,     0,     0,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    43,     0,   208,
+       0,     0,     0,     0,     0,    45,    46,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
+       0,     0,    31,     0,     0,     0,     0,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,     0,    26,    27,    28,
+      34,     0,    35,     0,    36,     0,    31,    38,    39,     0,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    34,     0,    26,    27,    28,     0,
+       0,    38,    39,  -400,   678,    31,     0,     0,     0,     0,
+      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    34,     0,    35,   635,    36,   338,     0,
+      38,    39,     0,     0,    45,    46,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,  1351,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   678,     0,     0,
+       0,     0,     0,    45,    46,     2,   206,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,    34,     0,
+      35,     0,    36,    31,   685,    38,    39,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,  1353,     0,     0,
+       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
+       0,     0,   678,     0,     0,     0,     0,     0,    45,    46,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,   686,    26,    27,    28,   687,
+       0,    45,    46,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
+     207,    39,     0,     2,   206,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,     0,     0,    26,
+      27,    28,     0,     0,     0,     0,     0,   270,    31,     0,
+       0,     0,     0,    45,    46,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    34,     0,    35,     0,
+      36,     0,     0,    38,    39,     0,     2,   206,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,     0,    26,    27,    28,     0,     0,     0,     0,     0,
+     678,    31,     0,     0,     0,     0,    45,    46,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
+       0,    35,     0,    36,     0,     0,    38,    39,     0,     2,
+     206,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
+       0,     0,     0,   593,    31,     0,     0,     0,     0,    45,
+      46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,    35,     0,    36,     0,     0,   207,
+      39,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,     0,     0,   282,   283,
+      31,   284,     0,     0,     0,     0,   208,     0,     0,     0,
+       0,     0,    45,    46,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   285,    34,     0,
+       0,     0,     0,   286,     0,    38,    39,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     294,     0,   517,     0,     0,   171,     0,     0,    45,    46,
+     296,   297,   298,   299,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,     0,
+       0,   282,   283,    31,   284,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,     0,
+     285,    34,     0,     0,    31,     0,   286,     0,    38,    39,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    34,     0,     0,     0,     0,    37,     0,   336,
+     337,    40,     0,   294,   -36,   295,     0,     0,    41,    42,
+       0,    45,    46,   296,   297,   298,   299,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,   338,    26,    27,    28,
+       0,     0,    45,    46,   282,   283,    31,   284,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,   285,    34,     0,     0,    31,     0,   286,
+       0,    38,    39,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,     0,     0,     0,
+     110,     0,    38,    39,     0,     0,   294,     0,   295,     0,
+       0,    41,    42,     0,    45,    46,   296,   297,   298,   299,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,    44,
+      26,    27,    28,     0,     0,    45,    46,   282,   283,    31,
+     284,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,    26,    27,    28,     0,     0,   285,    34,     0,     0,
+      31,   685,   286,     0,    38,    39,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+       0,     0,     0,     0,     0,    38,    39,     0,     0,   294,
+       0,   157,     0,     0,     0,     0,     0,    45,    46,   296,
+     297,   298,   299,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,   686,    26,    27,    28,  1092,     0,    45,    46,
+     282,   283,    31,   284,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,     0,    26,    27,    28,     0,     0,   285,
+      34,     0,     0,    31,   685,   286,     0,    38,    39,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,     0,     0,     0,    38,    39,
+       0,     0,   294,     0,   593,     0,     0,     0,     0,     0,
+      45,    46,   296,   297,   298,   299,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,   686,    26,    27,    28,  1221,
+       0,    45,    46,   282,   283,    31,   284,     0,     0,     0,
+       0,     0,     0,     0,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,   285,    34,    26,    27,    28,     0,   286,     0,
+      38,    39,   287,    31,     0,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    34,     0,     0,     0,   294,     0,   379,    38,    39,
+       0,     0,     0,    45,    46,   296,   297,   298,   299,   467,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,   257,    26,    27,    28,     0,
+       0,    45,    46,     0,     0,    31,     0,     0,     0,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,  -293,     0,    26,
+      27,    28,     0,    34,     0,    35,     0,    36,    31,     0,
+      38,    39,     0,     0,     0,     0,     0,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,     0,    34,    26,    27,    28,
+       0,    37,     0,   336,   337,    40,    31,  -293,     0,     0,
+      -3,     0,    41,    42,     0,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,  -293,    34,    26,    27,    28,     0,    37,
+     338,   336,   337,    40,    31,     0,    45,    46,     0,     0,
+      41,    42,     0,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,    34,    26,    27,    28,   635,     0,   338,    38,
+      39,     0,    31,  -293,    45,    46,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
+      34,     0,     0,     0,     0,    31,   338,    38,    39,     0,
+       0,     0,    45,    46,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,     0,    34,    26,    27,    28,     0,     0,     0,
+     207,    39,     0,    31,   157,     0,     0,     0,     0,     0,
+      45,    46,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+       0,    34,    26,    27,    28,     0,     0,   270,    38,    39,
+       0,    31,     0,    45,    46,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,     0,     0,    26,    27,    28,     0,    34,
+       0,     0,     0,     0,    31,   338,    38,    39,     0,     0,
+       0,    45,    46,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,    34,    26,    27,    28,     0,     0,     0,    38,
+      39,     0,    31,   686,     0,     0,     0,     0,     0,    45,
+      46,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+      34,    26,    27,    28,     0,     0,   593,    38,    39,     0,
+      31,     0,    45,    46,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    34,     0,
+      26,    27,    28,     0,    44,   207,    39,     0,     0,    31,
+      45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
+       0,    36,     0,     0,    38,    39,     0,     0,    45,    46,
+     282,   283,     0,   284,  1042,     0,  1043,     0,     0,  1044,
+    1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,  1525,
+    1052,     0,     0,     0,  1053,  1054,     0,    33,     0,   285,
+    -413,     0,     0,     0,     0,  1055,     0,     0,     0,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,     0,   292,
+     293,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   294,     0,   379,     0,     0,   171,     0,     0,
+      45,    46,   296,   297,   298,   299,     0,     0,   282,   283,
+    1057,   284,  1042,     0,  1043,  -128,     0,  1044,  1045,  1046,
+    1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,
+       0,     0,  1053,  1054,     0,    33,     0,   285,     0,     0,
+       0,     0,     0,  1055,     0,     0,     0,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,     0,   292,   293,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     294,     0,   379,     0,     0,   171,     0,     0,    45,    46,
+     296,   297,   298,   299,     0,     0,     0,     0,  1057,     0,
+       0,     0,     0,  -128,     2,   206,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,     0,     0,
+      26,    27,    28,     0,     0,     0,     0,     0,     0,    31,
+       0,   282,   283,     0,   284,  1042,     0,  1043,  1399,  1400,
+    1044,  1045,  1046,  1047,  1048,  1049,  1050,  1051,     0,     0,
+    1525,  1052,     0,     0,     0,  1053,  1054,    34,    33,    35,
+     285,    36,     0,     0,    38,    39,  1055,     0,     0,     0,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,  1312,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   294,     0,   379,     0,     0,   171,     0,
+       0,    45,    46,   296,   297,   298,   299,     0,     0,   282,
+     283,  1057,   284,  1042,     0,  1043,  1399,  1400,  1044,  1045,
+    1046,  1047,  1048,  1049,  1050,  1051,     0,     0,     0,  1052,
+       0,     0,     0,  1053,  1054,     0,    33,     0,   285,     0,
+       0,     0,     0,     0,  1055,     0,     0,     0,   287,     0,
+       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   294,     0,   379,     0,     0,   171,     0,     0,    45,
+      46,   296,   297,   298,   299,     0,     0,   282,   283,  1057,
+     284,  1042,     0,  1043,     0,     0,  1044,  1045,  1046,  1047,
+    1048,  1049,  1050,  1051,     0,     0,     0,  1052,     0,     0,
+       0,  1053,  1054,     0,    33,     0,   285,     0,     0,     0,
+       0,     0,  1055,     0,     0,     0,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+       0,     0,     0,     0,   282,   283,     0,   284,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   294,
+       0,   379,     0,     0,   171,     0,     0,    45,    46,   296,
+     297,   298,   299,   285,     0,     0,     0,  1057,     0,   286,
+       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,     0,   292,   293,     0,     0,     0,     0,     0,
+       0,   282,   283,     0,   284,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   294,     0,   379,     0,
+       0,   972,     0,     0,    45,    46,   296,   297,   298,   299,
+     285,     0,     0,     0,     0,     0,   286,     0,     0,     0,
+     287,     0,     0,   288,   289,   290,   291,    41,    42,     0,
+     292,   293,     0,     0,     0,     0,     0,     0,   282,   283,
+       0,   284,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   294,     0,   379,     0,   282,   283,     0,
+     284,    45,    46,   296,   297,   298,   299,   285,     0,     0,
+       0,     0,     0,   286,     0,     0,     0,   287,     0,     0,
+     288,   289,   290,   291,    41,    42,   285,   292,   293,     0,
+       0,     0,   286,     0,     0,     0,   287,     0,     0,   288,
+     289,   290,   291,    41,    42,     0,   292,   293,     0,     0,
+     294,     0,   379,     0,   282,   283,     0,   284,   709,    46,
+     296,   297,   298,   299,     0,     0,     0,     0,     0,   294,
+       0,   379,     0,   282,   283,     0,   284,   344,    46,   296,
+     297,   298,   299,   285,     0,     0,     0,     0,     0,   286,
+       0,     0,     0,   287,     0,     0,   288,   289,   290,   291,
+      41,    42,   285,   292,   293,     0,     0,     0,   286,     0,
+       0,     0,   287,     0,     0,   288,   289,   290,   291,    41,
+      42,     0,   292,   293,     0,     0,   506,     0,     0,     0,
+     282,   283,     0,   284,    45,    46,   296,   297,   298,   299,
+       0,     0,     0,     0,     0,   294,     0,     0,     0,   282,
+     283,     0,   284,    45,    46,   296,   297,   298,   299,   285,
+       0,     0,     0,     0,     0,   286,     0,     0,     0,   287,
+       0,     0,   288,   289,   290,   291,    41,    42,   285,   292,
+     293,     0,     0,     0,   286,     0,     0,     0,   287,     0,
+       0,   288,   289,   290,   291,    41,    42,     0,   292,   293,
+       0,     0,   511,     0,     0,     0,     0,     0,     0,     0,
+      45,    46,   296,   297,   298,   299,     0,     0,     0,     0,
+       0,   514,     0,     0,     0,     0,     0,     0,     0,    45,
+      46,   296,   297,   298,   299,     2,   206,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+      35,     0,    36,    37,     0,   174,   175,    40,     0,     0,
+       0,     0,     0,     0,    41,    42,   205,     2,   206,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,     0,     0,    26,    27,    28,     0,     0,     0,     0,
+       0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      34,     0,    35,     0,    36,     0,     0,   207,    39,   467,
+       2,   206,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,     0,     0,    26,    27,    28,     0,
+       0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    34,     0,    35,     0,    36,     0,     0,
+      38,    39,     2,   206,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,     0,     0,    26,    27,
+      28,     0,     0,     0,     0,     0,     0,    31,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,    35,     0,    36,
+       0,     0,   207,    39
+};
+
+#define yypact_value_is_default(yystate) \
+  ((yystate) == (-1323))
+
+#define yytable_value_is_error(yytable_value) \
+  YYID (0)
+
+static const yytype_int16 yycheck[] =
+{
+       0,     1,   186,    43,   239,   185,   204,     0,    43,   219,
+      43,   116,   185,   521,   534,   185,     1,   875,   186,     0,
+       1,   185,   757,    51,   647,   603,   750,   185,     0,     1,
+     281,   621,    32,   750,  1041,     0,  1022,    43,   185,    32,
+     345,   185,   750,    43,   168,   169,   513,   349,   875,    49,
+     156,    32,   603,    32,     0,   693,    49,   349,   187,     0,
+      32,   572,    57,    63,   601,  1322,    66,    32,    43,    69,
+      63,     0,     1,    66,   696,    63,    69,  1399,   734,   492,
+       0,   109,   266,   496,    69,   265,    32,   601,    69,    39,
+      39,    32,   265,   490,    66,   265,   201,    69,   266,   601,
+      39,   265,    43,    32,   604,   105,   601,   265,    49,    49,
+     610,   106,    32,   113,   109,   418,   116,   117,   265,    82,
+      66,   265,    63,    63,    39,    66,    66,    39,    69,    69,
+     601,   984,   261,   262,   284,   438,    43,    66,    28,   601,
+      69,   105,    72,   446,   132,   185,   146,   147,  1470,   601,
+     185,    72,   185,    49,   147,   155,   156,   307,   308,   109,
+     160,   111,   111,  1420,    39,   787,    82,   160,    72,   364,
+     109,    39,   111,   368,  1021,  1022,    82,   482,    96,   185,
+     688,  1034,   906,  1116,   156,   185,   186,  1120,    78,   906,
+     156,   155,     0,   186,   110,   345,   488,   109,   906,   111,
+     410,   201,   132,    96,   122,   111,   147,   147,   605,   209,
+     185,   132,   609,   117,  1041,    64,   209,   113,   109,   160,
+     160,   221,   406,   218,    32,   265,   109,   110,   221,   122,
+     265,   381,   265,   630,   109,   256,   111,   634,   406,   239,
+    1226,   109,   864,   111,   185,   186,   186,   825,   719,   221,
+     146,   251,   987,   504,    57,    44,    45,   719,   251,   259,
+     109,   426,   427,   901,   264,   265,   266,   719,   209,   209,
+     251,   271,   251,   266,   825,   221,   813,   272,   185,   251,
+     221,   221,  1289,   794,   279,   907,   251,   109,   696,    85,
+    1276,   396,   221,  1502,   294,    49,   480,   636,   637,   813,
+     109,   603,   925,   106,  1453,   251,   109,   307,  1053,  1054,
+     251,   813,   480,   209,   653,   815,   621,   113,   813,   424,
+    1529,   626,   251,   323,   265,   430,   115,   433,   328,   494,
+     952,   251,    95,    44,    45,   328,   107,   112,  1487,   116,
+    1489,   341,   813,   239,   109,   345,   111,   109,   513,   349,
+     350,   813,   155,   348,  1212,   132,   934,     0,   110,   113,
+     131,   813,    44,    45,   364,   987,   129,  1473,   368,   131,
+     365,   371,   711,  1479,   369,   271,   116,   341,   130,   682,
+      72,    11,    74,    75,  1129,  1212,   228,   328,   328,    32,
+     130,    83,    84,  1499,  1050,   590,   396,   418,  1504,   114,
+     550,   551,   552,   114,   350,   247,   406,   371,   349,  1395,
+    1000,   307,   110,   406,   579,   218,  1038,   438,   116,   933,
+     526,   109,   114,   111,   424,   446,   426,   427,  1275,  1276,
+     430,   933,   114,   433,    72,  1442,   110,   632,   933,   110,
+      72,   746,  1449,   251,  1502,    83,    84,   110,   256,   345,
+     847,    83,    84,   116,   454,   209,   130,   119,   120,   130,
+     968,   433,  1289,   802,  1522,   406,   406,   433,   110,   272,
+     112,  1529,   472,   111,   116,   128,   279,   110,   131,   111,
+     480,   116,   482,   116,   484,   591,   737,   480,   488,   131,
+     132,   484,    70,  1500,   494,    73,  1118,   132,    76,   907,
+      78,    90,    91,   484,   688,  1128,   506,    85,   508,  1009,
+    1010,   511,   484,   513,   514,   982,   482,   271,   116,   484,
+     688,   521,  1100,   825,   648,   525,   526,   473,   657,   942,
+     426,   427,   130,   825,  1387,  1388,   125,   126,   484,   109,
+     294,   111,   939,   484,   952,   348,   110,   488,  1395,   116,
+     655,   116,   116,   307,   526,   484,  1178,  1179,    72,   116,
+     526,   525,   365,   130,   484,    72,   369,    74,    75,    83,
+      84,   571,   572,    88,    89,   132,    83,    84,  1086,   579,
+    1403,    72,     3,  1091,     4,     5,     6,     7,     8,     9,
+     590,   591,    83,    84,    72,   595,   116,   111,   494,     3,
+     905,   601,     1,   603,   111,    83,    84,   757,   251,   804,
+     418,   116,   132,   256,   809,  1442,     0,   513,   110,   591,
+     111,   621,  1449,     0,   116,   591,   626,   622,   628,   432,
+     438,   109,   632,  1289,   212,   635,   636,   637,   446,   111,
+     111,   113,   113,   638,   112,   109,   938,   111,   116,    69,
+     116,    71,   862,   653,   116,   655,   109,   652,   130,   130,
+     601,   682,   603,   635,   636,   637,   132,   109,   116,   111,
+     132,   591,   882,  1500,  1497,   116,   484,   623,   116,  1502,
+     116,   653,   131,   579,   132,   685,    72,   708,   688,   116,
+      76,   132,   116,   109,   132,  1000,   132,    83,    84,  1522,
+     454,   279,   897,    72,   810,   132,  1529,  1363,   132,   944,
+    1118,   711,   712,   713,    83,    84,   110,   109,   116,   719,
+     720,   116,   116,   109,   908,   621,   906,    92,    93,   110,
+     626,   117,   118,   906,   132,   116,   906,   132,   733,   711,
+     908,   109,   906,   110,   868,   745,   746,   688,   906,   116,
+     750,   751,   506,   699,   508,   109,   109,   511,   111,   906,
+     514,  1383,   906,   110,   117,   118,   294,   713,   112,   116,
+    1178,  1179,   116,   109,   352,   418,   354,  1399,   719,   720,
+     746,   745,  1506,   109,   112,   111,  1306,   590,   116,  1506,
+    1446,   109,  1448,   111,   794,   438,   109,   112,  1506,   117,
+     118,   116,   802,   446,   804,    72,   806,    74,    75,   809,
+     810,   110,   109,   813,   111,  1013,    83,    84,   110,   622,
+     117,   118,    72,   110,   116,   825,    76,   110,   112,   116,
+     802,   110,   116,    83,    84,   638,   110,   116,   810,   482,
+     110,   484,  1147,   112,   810,  1501,   116,  1469,  1470,   652,
+    1000,   115,   116,   252,    10,    11,    12,    13,    14,   109,
+     806,   111,   110,   111,   442,  1116,   109,   117,   118,  1120,
+    1121,   110,   813,   117,   682,   875,   110,   116,     3,   123,
+     124,   110,   116,    39,   825,    10,    11,    12,    13,    14,
+     810,  1041,    58,    59,   875,   110,   110,   897,   426,   427,
+     708,   116,  1086,   875,   904,   905,   906,  1091,   908,   110,
+     110,    67,  1036,   109,    39,    72,   116,   115,  1086,    76,
+     920,  1226,   109,  1091,   111,   109,    83,    84,  1123,   875,
+     733,   685,    64,   933,   934,   110,   115,   116,   938,   905,
+     904,   116,    67,   943,   944,    72,   875,    74,    75,    76,
+       0,     1,   109,    44,    45,   875,    83,    84,   943,   132,
+     117,   118,   943,   110,    66,   906,   109,   908,   968,   116,
+     109,   943,   111,   109,  1482,  1383,   553,   554,   506,    29,
+      30,   112,    32,   511,   132,  1236,   514,   506,   109,   508,
+     111,  1399,   511,    43,   911,   514,   913,   938,   114,    49,
+    1000,   555,   556,  1108,   114,   114,    72,    57,    74,    75,
+      76,   561,   562,    63,   943,   117,    66,    83,    84,    69,
+     132,  1021,  1022,  1531,   132,     4,     5,     6,     7,     8,
+       9,   109,    82,    83,   557,   558,   559,   560,    82,   682,
+     568,  1041,     4,     5,     6,     7,     8,     9,   944,  1021,
+    1022,    85,    86,    87,   109,  1021,   106,  1003,   160,   109,
+    1041,  1469,  1470,   109,   112,   708,   116,   875,   467,  1041,
+      82,    33,  1323,   118,   127,   109,  1327,   111,    94,   113,
+     114,  1081,   109,   110,   111,   128,  1086,   109,   110,   111,
+      69,  1091,    71,   131,   897,  1041,   111,   147,   109,   109,
+    1100,   110,   110,   746,  1000,   155,     3,    69,  1108,    71,
+     160,   112,  1041,    10,    11,    12,    13,    14,   112,   221,
+     112,  1041,   110,  1123,   109,   110,   111,   110,   110,   528,
+     110,   109,   110,   111,   533,   185,   186,    72,   109,    74,
+      75,    76,    39,   112,   111,  1086,   114,  1147,    83,    84,
+    1091,   201,   116,   132,   131,   733,   114,   259,   114,   209,
+     109,   112,   264,    58,    59,    60,   920,   110,   218,   110,
+      67,   221,   112,  1424,   109,   112,   111,   130,   228,   112,
+     112,  1147,   117,   118,   583,  1249,  1250,  1251,   130,  1189,
+    1190,   130,   116,   243,    29,   130,   110,   247,   110,   112,
+     115,   251,   252,   114,   112,  1190,   110,   116,  1208,  1190,
+     115,   109,  1212,   115,   110,   265,   266,  1189,  1190,   110,
+     130,   110,   272,   116,   110,   132,  1226,     3,   110,   279,
+    1230,  1212,   875,  1041,    10,    11,    12,    13,    14,   110,
+    1212,   116,   110,  1189,  1208,  1230,   110,   110,   350,  1230,
+     110,   110,   110,   110,     1,   654,   110,   656,  1230,   110,
+    1189,  1190,   905,    39,   110,   110,  1212,   110,    72,   110,
+      74,    75,    76,   115,  1379,  1275,  1276,    29,   328,    83,
+      84,  1516,   131,  1212,  1284,   110,   130,   116,   875,  1289,
+     112,    67,  1212,   112,   110,   110,   116,   110,   348,   349,
+     130,  1230,    49,  1275,  1276,   109,   109,   706,  1289,  1275,
+     116,   112,  1284,   117,   118,   365,   114,  1289,   110,   369,
+     110,   110,  1322,  1507,   112,   116,  1506,  1081,   110,   431,
+     380,   116,   116,  1506,    55,   110,  1506,  1322,  1284,  1507,
+     110,  1322,  1506,  1289,   112,   109,   396,  1531,  1506,   109,
+    1322,   109,   109,   109,   132,  1284,   406,   130,   105,  1506,
+    1289,   112,  1506,  1531,   110,   115,   113,   110,   110,  1289,
+     115,   473,   110,   128,   424,   115,    97,  1482,   114,  1379,
+     430,   112,   432,  1378,   132,   112,   116,   112,   110,    72,
+     110,    74,    75,  1322,   110,  1395,   110,   112,  1041,   146,
+      83,    84,   112,   112,  1212,  1208,   112,    72,   155,    74,
+      75,    76,   112,    72,   112,    74,    75,   467,    83,    84,
+    1420,    47,   472,  1395,    83,    84,   109,   132,   132,   132,
+     480,   114,   112,   132,   484,  1420,   132,   115,   488,  1420,
+     110,   491,  1442,   493,   109,   130,   115,   110,  1420,  1449,
+     109,  1451,   112,  1453,   115,   114,   112,  1044,   205,   112,
+     112,  1442,   209,   112,   110,   110,  1506,   109,  1449,   112,
+    1442,  1506,   193,  1506,   112,   109,   109,  1449,   528,    60,
+     110,  1289,  1482,   533,   132,   110,   114,  1487,   109,  1489,
+     112,  1420,   239,   595,   112,   216,  1442,   110,   112,   110,
+    1500,    96,    96,  1449,  1147,   226,  1506,  1507,   109,   109,
+     464,   115,   132,  1442,  1507,   130,  1516,   110,   110,  1500,
+    1449,   623,  1442,   110,   271,   110,   628,   274,  1500,  1449,
+     116,  1531,    42,   583,   132,   132,   110,   110,  1531,    66,
+     590,    96,    96,   132,   110,   110,   110,   294,    75,   132,
+     132,   601,   110,   603,  1500,   115,   112,   132,   115,   958,
+     307,   112,   109,   132,   110,  1506,    30,   115,   110,  1212,
+     132,  1500,   622,   294,   110,  1378,   110,   667,  1057,   563,
+    1500,   980,   978,  1226,   565,   984,  1212,  1365,   638,   564,
+     117,   464,   566,   643,   341,   567,  1470,   699,   345,  1541,
+    1299,  1327,   652,  1121,   654,   655,   656,  1072,  1449,   685,
+     685,   713,   913,   698,    66,  1091,   921,   364,    82,    83,
+    1516,   368,   583,   972,   371,  1212,   868,   723,   649,   940,
+      82,  1230,   484,   160,  1442,  1034,     0,     1,   688,   733,
+     571,  1449,   692,   571,   694,   571,  1289,    72,   698,    74,
+      75,    76,    -1,    -1,    -1,    -1,   706,    -1,    83,    84,
+      -1,    -1,    -1,  1191,  1192,   117,  1194,    -1,    32,   719,
+     720,    -1,    -1,  1201,    -1,  1203,    -1,    -1,    -1,   426,
+     427,    -1,    -1,   733,   109,    49,    -1,    10,    11,    12,
+      13,    14,  1500,    -1,   221,    -1,    -1,  1451,    -1,  1453,
+      -1,    -1,    -1,    -1,   806,    69,    -1,   454,   160,    -1,
+      85,    86,    87,    -1,    -1,    -1,    39,   671,  1305,    -1,
+     467,    -1,   443,    -1,    -1,    -1,    -1,    10,    11,    12,
+      13,    14,   259,  1487,   109,  1489,   111,   264,   113,   114,
+      -1,   105,    -1,    -1,    67,   492,    -1,   494,   469,   496,
+      -1,    -1,   279,    -1,    -1,    -1,    39,    -1,    -1,   506,
+      -1,   508,    -1,   813,   511,    -1,   513,   514,    -1,   221,
+    1357,    -1,    -1,  1360,    -1,   825,    -1,    -1,   525,   243,
+      -1,    -1,    -1,   147,    67,   506,   109,    -1,   111,    -1,
+     511,   155,   156,   514,   117,   118,    -1,    -1,   671,  1442,
+      -1,    -1,    -1,    -1,    -1,    -1,  1449,   259,    -1,    -1,
+      -1,    -1,   264,    -1,    -1,    -1,  1403,    -1,   868,    -1,
+      -1,  1408,   186,   350,   874,    -1,   109,    -1,   111,    -1,
+      -1,  1359,   579,    -1,   117,   118,   790,   201,    -1,    -1,
+     204,   205,    -1,   590,    -1,   209,   800,   897,    -1,  1436,
+    1249,  1250,  1251,    -1,    -1,    -1,   906,  1500,   908,    -1,
+     814,    -1,    -1,    -1,    -1,   915,   230,    -1,    -1,    -1,
+     234,    -1,   236,    -1,   621,    -1,    -1,    -1,    -1,   626,
+      -1,   245,    -1,    -1,    -1,   632,     0,   251,   938,    -1,
+      -1,    -1,   256,    -1,    -1,    -1,    -1,    -1,   350,    -1,
+      -1,  1003,   266,    -1,   431,    -1,    -1,    -1,   958,    -1,
+     274,    10,    11,    12,    13,    14,   380,   790,    32,    -1,
+      -1,   448,   972,    -1,    -1,    -1,    -1,   800,    -1,    -1,
+     980,    -1,    -1,  1520,   984,    -1,    -1,    -1,   685,  1526,
+      39,   814,    -1,    -1,    -1,    -1,   473,    -1,    -1,   670,
+    1537,    -1,   671,    -1,  1541,    69,    -1,    -1,   679,    -1,
+      -1,    -1,   683,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    72,    -1,    74,    75,    76,   723,   341,    -1,   431,
+      -1,   345,    83,    84,  1034,    -1,    -1,   351,  1387,  1388,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,    -1,
+     364,    -1,    -1,    -1,   368,    -1,    -1,   371,   109,    -1,
+     109,    -1,   111,    -1,    -1,    -1,   117,   118,   117,   118,
+      -1,   473,  1072,    -1,    -1,    -1,  1425,   491,    -1,   493,
+      -1,    -1,    -1,    -1,    -1,    -1,  1086,    -1,    -1,    -1,
+      -1,  1091,   156,    97,    98,    99,   100,   101,   102,   103,
+     104,   105,   106,   107,   418,    -1,    -1,   804,  1108,    -1,
+      -1,    -1,   809,    -1,  1018,  1019,    -1,    -1,   595,   433,
+      -1,   790,    -1,    -1,   438,    -1,    -1,   131,    -1,    -1,
+      -1,   800,   446,    -1,  1483,    -1,    -1,  1189,    -1,    -1,
+      -1,    -1,    -1,  1492,    -1,   814,   623,    -1,    -1,    -1,
+     464,   628,    72,   467,    74,    75,    76,    -1,    -1,    -1,
+      -1,    -1,    -1,    83,    84,    -1,   230,    -1,   482,    -1,
+     484,    -1,  1076,  1077,    -1,    -1,    -1,    -1,   492,    -1,
+      -1,    -1,   496,    -1,    -1,  1185,    -1,   251,    -1,   109,
+      -1,   111,   256,   595,    -1,  1018,  1019,   117,   118,    -1,
+     897,    -1,    -1,    -1,    -1,    -1,    -1,   904,  1208,    -1,
+      -1,   525,   526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   623,   699,   920,    -1,    -1,   628,    -1,   899,   643,
+      -1,    -1,  1284,     0,    -1,    -1,   713,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   942,   943,   944,    -1,  1249,
+    1250,  1251,    -1,  1076,  1077,    -1,   733,    -1,   572,    72,
+      -1,    74,    75,    76,    -1,    32,    -1,    -1,    -1,    -1,
+      83,    84,    -1,    -1,    -1,    -1,   590,   591,   692,    -1,
+     694,    -1,    -1,    -1,   698,    -1,    -1,   351,    72,   603,
+      74,    75,    76,    -1,    -1,    -1,   109,   699,   111,    83,
+      84,    -1,    69,  1000,   117,   118,    -1,   621,    -1,    -1,
+      -1,   713,   626,    -1,    -1,    -1,    -1,    -1,   632,    -1,
+    1224,   635,   636,   637,    -1,   109,    -1,   111,    -1,   806,
+      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,   653,
+      -1,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,  1018,
+    1019,    -1,  1256,    -1,   418,    -1,    -1,   671,    -1,    -1,
+    1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,   682,   433,
+      -1,    -1,    -1,    -1,   438,    -1,    -1,    -1,  1378,  1379,
+      -1,  1052,   446,    -1,  1081,    -1,    -1,  1387,  1388,   156,
+      -1,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
+     464,  1224,    -1,    -1,   806,    -1,   720,  1076,  1077,   723,
+      -1,    -1,    -1,    -1,    -1,    98,    -1,   100,   482,    -1,
+     484,    -1,    -1,    -1,  1328,  1425,  1123,    -1,    -1,    -1,
+      -1,   745,   746,  1256,    -1,    -1,    -1,   751,    -1,    -1,
+      -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   868,    -1,    -1,    -1,    -1,    -1,
+     874,    -1,   526,    -1,    -1,    -1,    -1,    26,    27,    28,
+      -1,    -1,    -1,    -1,    -1,    -1,   790,    -1,    -1,    -1,
+      -1,    -1,  1482,  1483,   251,    -1,   800,    -1,   802,   256,
+     804,    -1,  1492,   807,    -1,   809,   810,    -1,   181,    -1,
+     814,   915,    -1,    -1,    -1,  1328,  1506,  1507,   191,   192,
+     824,  1208,    -1,   196,    -1,   198,   199,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1003,   591,    -1,    -1,
+      -1,  1531,    -1,  1230,    -1,    -1,    -1,    -1,    -1,    98,
+      -1,   100,    -1,    -1,    -1,     0,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   972,    -1,
+      -1,   875,    -1,    -1,    -1,    -1,   125,    -1,    -1,    -1,
+      -1,   635,   636,   637,    -1,    -1,    -1,    32,    -1,    -1,
+      -1,    -1,    -1,   897,   351,    -1,    -1,  1256,    -1,   653,
+     904,   905,    -1,    -1,   908,  1264,  1265,  1266,    -1,    -1,
+      -1,  1003,    -1,    -1,    -1,    -1,    -1,   671,    -1,    -1,
+      -1,    -1,    -1,    -1,    69,    -1,    -1,    -1,   682,    -1,
+     934,    -1,   181,    -1,    -1,  1322,    -1,  1298,   942,   943,
+     189,    -1,   191,   192,    -1,    -1,    -1,   196,    -1,   198,
+     199,    -1,    -1,    -1,   708,    -1,    -1,   711,    -1,    -1,
+      -1,   418,    -1,    -1,    -1,    -1,    -1,    -1,  1072,  1328,
+      -1,    -1,    -1,    -1,    -1,    -1,   433,    -1,    -1,    -1,
+      -1,   438,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   446,
+      -1,    -1,   746,    -1,    -1,    -1,  1000,    10,    11,    12,
+      13,    14,    -1,    -1,    -1,    -1,    -1,   464,    -1,  1013,
+      -1,   156,    -1,    -1,  1018,  1019,    -1,  1021,  1022,   268,
+      -1,    -1,  1189,    -1,    -1,   482,    39,   484,    -1,    -1,
+      -1,    -1,    -1,  1420,    -1,    -1,   790,  1041,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,
+      -1,    -1,    -1,   807,    67,    -1,   810,    -1,    -1,    72,
+     814,    74,    75,    76,  1451,    -1,  1453,    -1,    -1,   526,
+      83,    84,  1076,  1077,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1185,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1450,
+      -1,  1452,    -1,    -1,    -1,    -1,   109,  1189,   111,    -1,
+    1487,    -1,  1489,    -1,   117,   118,   251,    -1,    -1,    -1,
+      -1,   256,    -1,    -1,    -1,    -1,    -1,  1284,    -1,  1123,
+      -1,   875,    -1,    -1,    -1,  1486,    -1,  1488,    -1,  1516,
+      -1,    -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1147,    -1,    -1,    -1,    -1,    -1,     0,
+      -1,   905,    -1,    -1,    -1,    -1,    -1,   189,    -1,    -1,
+      -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,  1530,
+      -1,  1532,    -1,    -1,    -1,    -1,    -1,    -1,   635,   636,
+     637,    32,    -1,    -1,  1545,  1546,  1190,    -1,    -1,    -1,
+      -1,    -1,  1284,    -1,    -1,    -1,   653,    -1,    -1,    -1,
+      -1,    -1,   575,   576,  1208,    -1,   351,    -1,  1212,    -1,
+      -1,    -1,    -1,    -1,   671,    -1,    -1,    -1,    69,    -1,
+    1224,    -1,  1226,    -1,    -1,   682,  1230,    -1,    -1,    -1,
+      -1,   604,    -1,    -1,   607,   608,   268,   610,    -1,   612,
+     613,    -1,    -1,    -1,   617,   618,    -1,    -1,    -1,    -1,
+      -1,   708,  1256,    -1,   711,    -1,    -1,    -1,    -1,    -1,
+    1264,  1265,  1266,    -1,  1018,  1019,    -1,  1021,  1022,    -1,
+      -1,  1275,  1276,   418,    -1,    -1,    -1,    -1,    10,    11,
+      12,    13,    14,    -1,    -1,  1289,    -1,  1041,   433,   746,
+      -1,   323,    -1,   438,    -1,    -1,    -1,    -1,    -1,   331,
+      -1,   446,   334,    -1,    -1,   156,    -1,    39,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1322,   464,
+      -1,    -1,  1076,  1077,  1328,    -1,   575,   576,    -1,    -1,
+      -1,    -1,    -1,   790,    -1,    67,    -1,   482,    -1,   484,
+      72,    -1,    -1,   800,    76,   802,    -1,    -1,    -1,    -1,
+     807,    83,    84,   810,    -1,   604,    -1,   814,   607,   608,
+      -1,   610,    -1,   612,   613,    -1,   398,    -1,   617,   618,
+     402,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,
+      -1,   526,   755,   756,    -1,   117,   118,    -1,    -1,    -1,
+      -1,  1395,    -1,  1147,    -1,    -1,    -1,    -1,    -1,    -1,
+     251,    -1,    -1,    -1,    -1,   256,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1420,    -1,   875,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1190,    -1,  1442,    -1,
+      -1,    -1,    -1,    -1,    -1,  1449,   591,   479,   905,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1212,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1224,    -1,  1226,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    -1,
+     635,   636,   637,    -1,    -1,    -1,  1500,    -1,    -1,    -1,
+     351,    -1,  1256,  1507,    -1,    -1,   755,   756,   653,    -1,
+    1264,  1265,  1266,    39,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1275,  1276,    -1,    -1,    -1,   671,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1289,    -1,   682,    -1,   571,
+     572,    67,    -1,    -1,   917,    -1,    72,    -1,    74,    75,
+      76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,    -1,
+      -1,  1018,  1019,   708,  1021,  1022,   711,   418,    -1,    -1,
+      -1,    -1,    -1,    -1,  1328,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   433,   109,  1041,   111,    -1,   438,    -1,    -1,
+      -1,   117,   118,    -1,    -1,   446,    -1,    -1,    -1,    -1,
+      -1,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   464,    -1,    -1,    -1,    -1,    -1,  1076,
+    1077,    -1,    -1,    -1,    -1,    -1,   658,    -1,    -1,    -1,
+     662,   482,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1395,    -1,    -1,    -1,   790,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   800,    -1,   802,    -1,    -1,
+      -1,    -1,   807,   912,    -1,   810,    -1,    -1,   917,   814,
+      -1,    -1,    -1,    -1,    -1,   526,    53,    -1,    55,    -1,
+      -1,    58,    59,    60,    -1,    62,    -1,    -1,  1442,    -1,
+    1147,    -1,    -1,    -1,    -1,  1449,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,  1078,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    10,    11,    12,    13,    14,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     875,    -1,    -1,  1190,    -1,    -1,    -1,    -1,    -1,    -1,
+     591,    -1,    -1,    39,    -1,    -1,  1500,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1212,    -1,    -1,    -1,    -1,
+     905,    -1,   794,    -1,    -1,    -1,    -1,  1224,    -1,  1226,
+      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
+      76,    -1,    -1,    -1,   635,   636,   637,    83,    84,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1256,
+      -1,    -1,   653,    -1,    -1,    -1,    -1,  1264,  1265,  1266,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,  1275,  1276,
+     671,   117,   118,    -1,    -1,   282,    -1,   284,   285,  1078,
+      -1,   682,  1289,    -1,  1207,   292,   293,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     307,   308,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
+     711,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1328,    -1,  1018,  1019,    -1,  1021,  1022,    -1,    -1,
+     912,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,    -1,
+      -1,    -1,    -1,    -1,    -1,   746,  1041,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    28,    -1,    30,    31,    32,
+      -1,    -1,    -1,    -1,   381,    -1,    39,    -1,    -1,    -1,
+      -1,  1076,  1077,    -1,    -1,    -1,    -1,    -1,  1395,   790,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   800,
+      -1,   802,    -1,    -1,    67,    -1,   807,   989,  1207,   810,
+      -1,    74,    75,   814,    -1,    78,    -1,   344,    -1,   346,
+      -1,    -1,    -1,    -1,  1006,    -1,    -1,    -1,    -1,    -1,
+     357,   358,    -1,    -1,    -1,  1442,    -1,    -1,    -1,    -1,
+      37,    38,  1449,    40,    -1,    -1,   109,    -1,   111,    -1,
+      -1,    -1,  1147,    -1,   117,   118,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,
+      -1,    -1,    -1,    -1,   875,    72,    -1,    -1,    -1,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,  1500,    -1,  1190,    -1,    -1,    -1,    -1,
+      -1,    -1,  1084,    -1,   905,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,   111,    -1,    -1,  1212,    -1,    -1,
+     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,  1224,
+      -1,  1226,     7,   130,    -1,    10,    11,    12,    13,    14,
+      -1,    -1,  1124,   550,   551,   552,   553,   554,   555,   556,
+     557,   558,   559,   560,   561,   562,   563,   564,   565,   566,
+     567,  1256,    37,    38,    39,    40,    -1,    -1,    -1,  1264,
+    1265,  1266,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1275,  1276,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    66,    67,    -1,  1289,    -1,    -1,    72,    -1,    -1,
+      -1,    76,    -1,    -1,    79,    80,    81,    82,    83,    84,
+      -1,    86,    87,    -1,    -1,    -1,    -1,  1018,  1019,    -1,
+    1021,  1022,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1328,   109,    -1,   111,    -1,    -1,    -1,
+    1041,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,  1076,  1077,    30,    31,    32,
+      33,    -1,    -1,    36,    37,    38,    39,    40,    -1,   696,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1395,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
+      -1,    74,    75,    76,    49,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    66,    -1,    -1,    -1,    -1,  1147,  1442,    -1,    -1,
+     757,    -1,    -1,    -1,  1449,    -1,   109,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
+      -1,    -1,    -1,   700,    -1,   702,    -1,    -1,    -1,   132,
+     787,    -1,   709,   710,    -1,    -1,    -1,   714,   113,  1190,
+      -1,    -1,   117,    -1,    -1,    -1,    -1,    -1,    -1,   726,
+      -1,    -1,    -1,    -1,   731,  1500,    -1,    -1,    -1,    -1,
+      -1,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   146,    -1,  1224,    -1,  1226,    -1,    -1,    -1,    -1,
+      -1,   156,   759,    -1,    -1,   160,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     7,    -1,    -1,    10,
+      11,    12,    13,    14,    -1,  1256,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,  1264,  1265,  1266,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1275,  1276,    37,    38,    39,    40,
+      -1,    -1,    -1,    -1,   209,    -1,    -1,    -1,  1289,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   221,    -1,    -1,    -1,
+     907,    -1,    -1,    -1,    -1,    66,    67,    -1,    -1,    -1,
+      -1,    72,    -1,    -1,   239,    76,    -1,    -1,    79,    80,
+      81,    82,    83,    84,    -1,    86,    87,  1328,    -1,    -1,
+      -1,   858,   859,   860,   861,    -1,   863,    -1,    -1,   264,
+      -1,    -1,    -1,    -1,    -1,   952,   271,    -1,   109,    -1,
+     111,   878,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
+     121,   122,    -1,    -1,    -1,   892,    -1,    -1,    -1,   294,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     987,    -1,   307,    -1,    -1,    -1,    -1,    -1,    -1,    66,
+      -1,    -1,    -1,  1000,  1395,    -1,    -1,    -1,    75,    -1,
+      77,    -1,    79,    -1,    -1,   932,    -1,    -1,    -1,    86,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     345,    -1,    -1,    -1,    -1,   350,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1041,    -1,    -1,    -1,    -1,    -1,
+     117,  1442,   119,   120,   121,    -1,    -1,    -1,  1449,    -1,
+     977,    -1,    -1,    -1,    -1,    -1,   983,    -1,    -1,    -1,
+      -1,   988,    -1,    -1,    -1,    -1,   993,    -1,   995,    -1,
+      -1,    -1,   999,    -1,  1001,  1002,    -1,    -1,  1005,    -1,
+      -1,    -1,    -1,   160,    -1,    -1,    -1,  1014,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1500,
+      -1,   426,   427,    -1,    -1,  1032,  1033,    -1,   433,    -1,
+      -1,  1118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   454,
+      -1,    -1,  1059,    -1,    -1,  1062,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   221,    -1,   223,   224,   225,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   482,    -1,    -1,
+      -1,    10,    11,    12,    13,    14,    -1,    -1,    -1,   494,
+      -1,  1178,  1179,    -1,    -1,    -1,    -1,    -1,  1105,    -1,
+      -1,   506,   259,   508,  1111,  1112,   511,   264,   513,   514,
+      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   526,   279,    -1,  1131,    -1,    -1,  1134,    -1,    -1,
+      -1,  1138,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    72,  1151,    74,    75,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    83,    84,    -1,  1164,    -1,  1166,
+    1167,  1168,  1169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   328,    -1,    -1,   579,  1182,    -1,  1184,    -1,    -1,
+     109,  1188,    -1,    -1,    -1,    -1,   591,    -1,   117,   118,
+     595,    -1,    -1,   350,    -1,    -1,    -1,    -1,   355,   356,
+      -1,    -1,    -1,    -1,    -1,    -1,   363,    -1,    -1,    -1,
+    1217,  1218,    -1,    -1,    -1,    -1,   621,    -1,    -1,    -1,
+      -1,   626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     635,   636,   637,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,   406,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1267,  1268,    -1,    -1,    -1,    -1,    -1,   424,    -1,    -1,
+    1277,    -1,   429,    -1,   431,    -1,    -1,    -1,    -1,    -1,
+     685,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   448,    -1,    -1,   451,   452,  1383,    -1,    -1,    -1,
+      -1,    -1,   459,    -1,    -1,    -1,   711,    -1,   713,    -1,
+      -1,    -1,  1399,    -1,    -1,    -1,   473,    -1,    -1,    -1,
+      -1,    -1,    -1,   480,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1338,    -1,  1340,  1341,  1342,    -1,    -1,    -1,    -1,
+      -1,   746,    -1,    -1,    -1,  1352,    44,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1361,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,  1386,
+      -1,    -1,  1469,  1470,    39,    -1,    -1,    10,    11,    12,
+      13,    14,    -1,    91,    -1,    -1,    -1,   802,    -1,    -1,
+      -1,   806,    -1,   101,    -1,   810,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    -1,    -1,    39,    72,    -1,    74,
+      75,    76,  1429,  1430,    -1,    -1,    -1,    -1,    83,    84,
+      -1,    -1,    -1,    -1,    -1,  1442,    -1,    -1,   595,    -1,
+      -1,    -1,  1449,    -1,    67,    -1,    -1,    -1,    -1,    72,
+      -1,    74,    75,    76,   109,    -1,   111,    -1,    -1,   157,
+      83,    84,   117,   118,    -1,    -1,   623,    -1,    -1,    -1,
+      -1,   628,    -1,   171,  1481,    -1,    -1,    -1,  1485,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   117,   118,   194,    -1,    -1,    -1,
+     905,    -1,    -1,    -1,    -1,    -1,  1513,    -1,  1515,    -1,
+     208,    -1,    -1,    -1,    -1,   920,    -1,    -1,    -1,   217,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   227,
+      -1,    -1,    -1,    -1,    -1,    -1,  1543,  1544,    -1,   944,
+      -1,    -1,   699,    -1,  1551,  1552,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   252,    -1,   713,    -1,    -1,   257,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   270,    -1,    -1,    -1,   733,    -1,   276,    -1,
+     278,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1000,    -1,   295,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,  1021,  1022,    30,    31,
+      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   794,    -1,    -1,
+     338,    -1,    -1,    -1,    -1,   343,    -1,    -1,    -1,   806,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      72,    -1,    74,    75,    76,    -1,    -1,    -1,   825,    -1,
+      -1,    83,    84,    -1,   372,    -1,  1081,    -1,   376,   377,
+      -1,   379,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
+      -1,   389,   390,    -1,   392,    -1,   394,   109,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,    -1,
+      -1,    -1,    -1,   411,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   419,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   155,
+     156,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1147,    -1,    -1,    -1,   444,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,    13,
+      14,    -1,    -1,   189,    -1,    -1,    -1,    -1,    -1,    -1,
+     196,    -1,   470,    -1,    -1,    -1,    -1,    -1,   476,    -1,
+      -1,   938,    -1,   481,  1189,    39,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    -1,    30,    31,    32,    -1,
+      -1,   968,    -1,    67,    -1,    39,    -1,    -1,    72,   517,
+      -1,  1226,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,
+      84,    -1,    -1,    -1,   532,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   268,    67,    -1,    -1,  1003,    -1,    72,    -1,
+      74,    75,    76,    -1,    78,   109,    -1,  1014,    -1,    83,
+      84,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
+    1275,  1276,    -1,   571,    -1,    -1,    -1,    -1,    -1,  1284,
+      -1,    -1,   580,    -1,    -1,   109,    -1,   111,   146,   587,
+      -1,    -1,    -1,   117,   118,   593,    -1,   323,   156,    -1,
+      -1,    -1,    -1,    -1,   602,   331,   332,    -1,   334,   335,
+     168,   169,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   345,
+      -1,    -1,    -1,   349,    -1,    -1,    -1,    -1,    -1,  1086,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   368,  1100,   642,   371,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,   398,    30,    31,    32,   402,    -1,    -1,    -1,
+     678,   239,    39,    -1,    -1,    -1,    -1,    -1,   686,    -1,
+    1395,    -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   263,    -1,   433,    -1,    -1,
+      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,   717,
+      -1,    66,    -1,    -1,    -1,    -1,    -1,    72,    -1,   727,
+     728,    76,  1189,    -1,    79,    80,    81,    82,    83,    84,
+      -1,    86,    87,    -1,    -1,    -1,  1451,    -1,  1453,    -1,
+      -1,    -1,    -1,   479,   111,    -1,   482,    -1,    -1,    -1,
+     117,   118,   760,    -1,   109,    -1,   111,   765,    -1,   114,
+      -1,    -1,   117,   118,   119,   120,   121,   122,    -1,    -1,
+      -1,    -1,  1487,    -1,  1489,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   521,    -1,    -1,    -1,   525,
+     526,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1516,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   380,    -1,    -1,    -1,    -1,  1284,    -1,    -1,
+      -1,   829,    -1,    -1,    -1,    -1,    -1,    -1,   836,    -1,
+      -1,    -1,    -1,    -1,    -1,   571,   572,    -1,    -1,    -1,
+      -1,   849,    -1,   851,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   590,   591,    -1,   865,    -1,    -1,
+      -1,    -1,    -1,   871,    -1,   601,    -1,   603,   604,    -1,
+      -1,    -1,    -1,    -1,   610,   883,    -1,    -1,   886,    -1,
+      -1,    -1,    -1,    -1,   620,   621,    -1,    -1,    -1,    -1,
+     626,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   635,
+     636,   637,    -1,    -1,    -1,    -1,   474,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   653,    -1,    -1,
+      -1,    -1,   658,   659,    -1,    -1,   662,   663,    -1,    -1,
+      -1,    -1,    -1,   669,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   513,    -1,    -1,    -1,    -1,
+      -1,    -1,   688,    -1,    -1,   963,    -1,    -1,   526,    -1,
+      -1,    -1,    -1,   531,    -1,    -1,   534,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   711,   712,    -1,    -1,   547,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     998,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   569,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   745,
+     746,   579,    -1,    -1,   750,   751,    -1,    -1,   586,    -1,
+      -1,    -1,    -1,   591,    -1,    -1,    -1,    -1,    -1,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,  1056,    -1,
+      30,    31,    32,    -1,  1062,    -1,    -1,    -1,   794,    39,
+      -1,    -1,    -1,    -1,  1531,    -1,   802,    -1,    -1,    -1,
+      -1,    -1,   640,   809,   810,    -1,    -1,   813,    -1,   815,
+     648,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1096,   825,
+      -1,    -1,    72,  1101,    74,    75,    76,    -1,    -1,    -1,
+      -1,  1109,    -1,    83,    84,    -1,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    -1,  1142,    39,    -1,   117,   118,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1154,    -1,    -1,  1157,
+      -1,  1159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   897,    -1,    67,    -1,  1173,  1174,    -1,   904,   905,
+     906,    -1,   908,    -1,    78,    -1,   912,    -1,   746,    -1,
+     748,    -1,    -1,    -1,    -1,    -1,    -1,  1195,    -1,    -1,
+     758,    -1,    -1,    -1,    -1,    -1,   764,   933,   934,    -1,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,   968,    -1,  1242,    -1,    -1,    -1,   806,   807,
+      -1,    -1,   810,    -1,    -1,    -1,    -1,    -1,    37,    38,
+      -1,    40,    -1,   989,   990,    -1,   824,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,  1000,    -1,    -1,    -1,    78,    -1,
+    1006,  1007,    -1,  1009,  1010,  1011,    -1,    66,    -1,    -1,
+      -1,    -1,    -1,    72,    -1,  1021,  1022,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,   864,    86,    87,    -1,
+     868,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1317,
+      -1,  1319,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   111,  1331,    -1,  1333,    -1,   116,   117,   118,
+     119,   120,   121,   122,    -1,    -1,    -1,   905,    -1,    -1,
+      -1,    -1,  1350,    -1,    -1,    -1,    -1,    -1,  1084,    -1,
+    1086,    -1,    -1,    -1,    -1,  1091,    -1,    -1,  1366,  1367,
+      -1,    -1,    -1,    -1,  1100,    -1,    -1,    -1,    -1,  1377,
+      -1,    -1,  1380,    -1,    -1,    -1,   944,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,  1123,  1124,  1125,
+      -1,    -1,    -1,  1401,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,  1410,    -1,   972,  1413,    -1,  1415,  1416,  1417,
+     978,  1147,    -1,    -1,   982,    37,    38,    -1,    40,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1003,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    -1,  1014,  1455,    -1,  1457,
+      72,  1459,    74,    75,    76,    -1,    -1,    79,    80,    81,
+      82,    83,    84,    -1,    86,    87,  1474,    -1,  1036,    -1,
+    1038,    -1,  1208,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1053,  1054,   109,    -1,   111,
+    1226,   113,   114,    -1,    -1,   117,   118,   119,   120,   121,
+     122,    -1,    -1,    -1,    -1,    -1,  1074,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,  1275,
+    1276,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
+      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,  1129,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,  1147,
+      69,    -1,    71,    -1,    -1,    74,    75,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,  1162,  1163,    -1,     3,     4,     5,
+       6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,   111,    -1,    30,    31,    32,    33,   117,   118,
+      36,    37,    38,    39,    40,    41,    -1,    43,    -1,    -1,
+      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
+      -1,    57,    -1,    -1,    -1,    61,    62,    -1,    64,  1395,
+      66,    67,    -1,    69,    -1,    71,    72,    -1,    74,    75,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
+      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    -1,
+      -1,   127,    -1,    -1,    -1,    -1,   132,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1303,    -1,    -1,  1306,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,  1482,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    1506,  1507,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,  1531,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    33,    -1,    -1,    36,
+      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
+      67,    -1,    69,    39,    71,    72,    -1,    74,    75,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,    75,
+      -1,    -1,   109,    -1,   111,    -1,    -1,    83,    84,    -1,
+     117,   118,   119,   120,   121,   122,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,  1516,    37,
+      38,    39,    40,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,
+      -1,    69,    39,    71,    72,    -1,    74,    75,    76,    -1,
+      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,
+      -1,   109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,
+     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
+      39,    40,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,
+      69,    39,    71,    72,    -1,    74,    75,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      -1,    -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,
+     109,    -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,
+     119,   120,   121,   122,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,
+      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,
+      39,    71,    72,    -1,    74,    75,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    -1,    -1,    -1,   116,   117,   118,   119,
+     120,   121,   122,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
+      31,    32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,
+      71,    72,    -1,    74,    75,    76,    -1,    -1,    79,    80,
+      81,    82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
+     121,   122,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,
+      72,    -1,    74,    75,    76,    -1,    -1,    79,    80,    81,
+      82,    83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,
+     122,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
+      -1,    -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,
+      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,   117,   118,   119,   120,   121,   122,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
+      -1,    -1,    -1,    37,    38,    39,    40,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    66,    67,    -1,    69,    -1,    71,    72,    -1,
+      74,    75,    76,    -1,    -1,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,
+      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     0,
+      -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
+      31,    32,    33,    -1,    -1,    36,    -1,    -1,    39,    40,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    64,    -1,    -1,    67,    -1,    69,    -1,
+      71,    72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,
+     111,    -1,    -1,    -1,    -1,    -1,   117,   118,     3,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    33,    -1,
+      -1,    36,    -1,    -1,    39,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    64,
+      -1,    -1,    67,    -1,    69,    -1,    71,    72,    -1,    74,
+      75,    76,    -1,    -1,    -1,    -1,    -1,    -1,    83,    84,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,   111,    -1,    -1,    -1,
+     115,    -1,   117,   118,     3,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    33,    -1,    -1,    36,    -1,    -1,
+      39,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    64,    -1,    -1,    67,    -1,
+      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    83,    84,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
+       3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
+      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    33,    34,    35,    67,    -1,    69,    39,    71,    72,
+      -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,    -1,
+      83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
+      -1,    -1,    -1,    -1,   117,   118,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    28,    -1,    30,    31,    32,    33,    -1,    -1,    36,
+      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,
+      -1,    78,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    -1,   111,    -1,    -1,    39,    -1,    -1,
+     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
+      72,    -1,    74,    75,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    83,    84,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
+      -1,    -1,    -1,    -1,    -1,   117,   118,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    39,    -1,    -1,    -1,    -1,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    -1,    30,    31,    32,
+      67,    -1,    69,    -1,    71,    -1,    39,    74,    75,    -1,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    67,    -1,    30,    31,    32,    -1,
+      -1,    74,    75,   110,   111,    39,    -1,    -1,    -1,    -1,
+     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    69,   109,    71,   111,    -1,
+      74,    75,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
+      -1,    -1,    -1,   117,   118,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,
+      39,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    67,    -1,
+      69,    -1,    71,    39,    40,    74,    75,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    96,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
+      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
+      74,    75,    -1,     4,     5,     6,     7,     8,     9,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    -1,    -1,    30,
+      31,    32,    -1,    -1,    -1,    -1,    -1,   111,    39,    -1,
+      -1,    -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,
+      71,    -1,    -1,    74,    75,    -1,     4,     5,     6,     7,
+       8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    -1,
+     111,    39,    -1,    -1,    -1,    -1,   117,   118,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,
+      -1,    69,    -1,    71,    -1,    -1,    74,    75,    -1,     4,
+       5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
+      -1,    -1,    -1,   111,    39,    -1,    -1,    -1,    -1,   117,
+     118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,    74,
+      75,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,    38,
+      39,    40,    -1,    -1,    -1,    -1,   111,    -1,    -1,    -1,
+      -1,    -1,   117,   118,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    66,    67,    -1,
+      -1,    -1,    -1,    72,    -1,    74,    75,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
+     119,   120,   121,   122,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,
+      -1,    37,    38,    39,    40,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,
+      66,    67,    -1,    -1,    39,    -1,    72,    -1,    74,    75,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    67,    -1,    -1,    -1,    -1,    72,    -1,    74,
+      75,    76,    -1,   109,   110,   111,    -1,    -1,    83,    84,
+      -1,   117,   118,   119,   120,   121,   122,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,   111,    30,    31,    32,
+      -1,    -1,   117,   118,    37,    38,    39,    40,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    66,    67,    -1,    -1,    39,    -1,    72,
+      -1,    74,    75,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    -1,    -1,    -1,
+      72,    -1,    74,    75,    -1,    -1,   109,    -1,   111,    -1,
+      -1,    83,    84,    -1,   117,   118,   119,   120,   121,   122,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,   111,
+      30,    31,    32,    -1,    -1,   117,   118,    37,    38,    39,
+      40,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    30,    31,    32,    -1,    -1,    66,    67,    -1,    -1,
+      39,    40,    72,    -1,    74,    75,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      -1,    -1,    -1,    -1,    -1,    74,    75,    -1,    -1,   109,
+      -1,   111,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,
+     120,   121,   122,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,   111,    30,    31,    32,   115,    -1,   117,   118,
+      37,    38,    39,    40,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    -1,    30,    31,    32,    -1,    -1,    66,
+      67,    -1,    -1,    39,    40,    72,    -1,    74,    75,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    75,
+      -1,    -1,   109,    -1,   111,    -1,    -1,    -1,    -1,    -1,
+     117,   118,   119,   120,   121,   122,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,   111,    30,    31,    32,   115,
+      -1,   117,   118,    37,    38,    39,    40,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    66,    67,    30,    31,    32,    -1,    72,    -1,
+      74,    75,    76,    39,    -1,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    67,    -1,    -1,    -1,   109,    -1,   111,    74,    75,
+      -1,    -1,    -1,   117,   118,   119,   120,   121,   122,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,   111,    30,    31,    32,    -1,
+      -1,   117,   118,    -1,    -1,    39,    -1,    -1,    -1,    10,
+      11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    26,    27,    28,    -1,    30,
+      31,    32,    -1,    67,    -1,    69,    -1,    71,    39,    -1,
+      74,    75,    -1,    -1,    -1,    -1,    -1,    10,    11,    12,
+      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    26,    27,    -1,    67,    30,    31,    32,
+      -1,    72,    -1,    74,    75,    76,    39,    78,    -1,    -1,
+     114,    -1,    83,    84,    -1,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    28,    67,    30,    31,    32,    -1,    72,
+     111,    74,    75,    76,    39,    -1,   117,   118,    -1,    -1,
+      83,    84,    -1,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    67,    30,    31,    32,   109,    -1,   111,    74,
+      75,    -1,    39,    78,   117,   118,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
+      67,    -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,
+      -1,    -1,   117,   118,    10,    11,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+      26,    27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,
+      74,    75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,
+     117,   118,    10,    11,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
+      -1,    67,    30,    31,    32,    -1,    -1,   111,    74,    75,
+      -1,    39,    -1,   117,   118,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    27,    -1,    -1,    30,    31,    32,    -1,    67,
+      -1,    -1,    -1,    -1,    39,   111,    74,    75,    -1,    -1,
+      -1,   117,   118,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    67,    30,    31,    32,    -1,    -1,    -1,    74,
+      75,    -1,    39,   111,    -1,    -1,    -1,    -1,    -1,   117,
+     118,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      67,    30,    31,    32,    -1,    -1,   111,    74,    75,    -1,
+      39,    -1,   117,   118,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    67,    -1,
+      30,    31,    32,    -1,   111,    74,    75,    -1,    -1,    39,
+     117,   118,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,    69,
+      -1,    71,    -1,    -1,    74,    75,    -1,    -1,   117,   118,
+      37,    38,    -1,    40,    41,    -1,    43,    -1,    -1,    46,
+      47,    48,    49,    50,    51,    52,    53,    -1,    -1,    56,
+      57,    -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,
+     110,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    -1,    86,
+      87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,
+     117,   118,   119,   120,   121,   122,    -1,    -1,    37,    38,
+     127,    40,    41,    -1,    43,   132,    -1,    46,    47,    48,
+      49,    50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,
+      -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,
+      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,    -1,    86,    87,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,
+     119,   120,   121,   122,    -1,    -1,    -1,    -1,   127,    -1,
+      -1,    -1,    -1,   132,     4,     5,     6,     7,     8,     9,
+      10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    -1,    -1,
+      30,    31,    32,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    37,    38,    -1,    40,    41,    -1,    43,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    -1,    -1,
+      56,    57,    -1,    -1,    -1,    61,    62,    67,    64,    69,
+      66,    71,    -1,    -1,    74,    75,    72,    -1,    -1,    -1,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    96,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    -1,   114,    -1,
+      -1,   117,   118,   119,   120,   121,   122,    -1,    -1,    37,
+      38,   127,    40,    41,    -1,    43,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    -1,    -1,    -1,    57,
+      -1,    -1,    -1,    61,    62,    -1,    64,    -1,    66,    -1,
+      -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   109,    -1,   111,    -1,    -1,   114,    -1,    -1,   117,
+     118,   119,   120,   121,   122,    -1,    -1,    37,    38,   127,
+      40,    41,    -1,    43,    -1,    -1,    46,    47,    48,    49,
+      50,    51,    52,    53,    -1,    -1,    -1,    57,    -1,    -1,
+      -1,    61,    62,    -1,    64,    -1,    66,    -1,    -1,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+      -1,    -1,    -1,    -1,    37,    38,    -1,    40,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    -1,   114,    -1,    -1,   117,   118,   119,
+     120,   121,   122,    66,    -1,    -1,    -1,   127,    -1,    72,
+      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
+      -1,    37,    38,    -1,    40,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,    -1,
+      -1,   114,    -1,    -1,   117,   118,   119,   120,   121,   122,
+      66,    -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,
+      76,    -1,    -1,    79,    80,    81,    82,    83,    84,    -1,
+      86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
+      -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   109,    -1,   111,    -1,    37,    38,    -1,
+      40,   117,   118,   119,   120,   121,   122,    66,    -1,    -1,
+      -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,
+      79,    80,    81,    82,    83,    84,    66,    86,    87,    -1,
+      -1,    -1,    72,    -1,    -1,    -1,    76,    -1,    -1,    79,
+      80,    81,    82,    83,    84,    -1,    86,    87,    -1,    -1,
+     109,    -1,   111,    -1,    37,    38,    -1,    40,   117,   118,
+     119,   120,   121,   122,    -1,    -1,    -1,    -1,    -1,   109,
+      -1,   111,    -1,    37,    38,    -1,    40,   117,   118,   119,
+     120,   121,   122,    66,    -1,    -1,    -1,    -1,    -1,    72,
+      -1,    -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,
+      83,    84,    66,    86,    87,    -1,    -1,    -1,    72,    -1,
+      -1,    -1,    76,    -1,    -1,    79,    80,    81,    82,    83,
+      84,    -1,    86,    87,    -1,    -1,   109,    -1,    -1,    -1,
+      37,    38,    -1,    40,   117,   118,   119,   120,   121,   122,
+      -1,    -1,    -1,    -1,    -1,   109,    -1,    -1,    -1,    37,
+      38,    -1,    40,   117,   118,   119,   120,   121,   122,    66,
+      -1,    -1,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,
+      -1,    -1,    79,    80,    81,    82,    83,    84,    66,    86,
+      87,    -1,    -1,    -1,    72,    -1,    -1,    -1,    76,    -1,
+      -1,    79,    80,    81,    82,    83,    84,    -1,    86,    87,
+      -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     117,   118,   119,   120,   121,   122,    -1,    -1,    -1,    -1,
+      -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,
+     118,   119,   120,   121,   122,     4,     5,     6,     7,     8,
+       9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    67,    -1,
+      69,    -1,    71,    72,    -1,    74,    75,    76,    -1,    -1,
+      -1,    -1,    -1,    -1,    83,    84,     3,     4,     5,     6,
+       7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
+      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      27,    -1,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,
+      -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      67,    -1,    69,    -1,    71,    -1,    -1,    74,    75,     3,
+       4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    -1,    -1,    30,    31,    32,    -1,
+      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    67,    -1,    69,    -1,    71,    -1,    -1,
+      74,    75,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    -1,    -1,    30,    31,
+      32,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    67,    -1,    69,    -1,    71,
+      -1,    -1,    74,    75
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+   symbol of state STATE-NUM.  */
+static const yytype_uint16 yystos[] =
+{
+       0,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,    30,    31,    32,    33,
+      36,    39,    40,    64,    67,    69,    71,    72,    74,    75,
+      76,    83,    84,   109,   111,   117,   118,   137,   140,   150,
+     199,   213,   214,   215,   216,   217,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   232,
+     233,   234,   235,   236,   237,   238,   240,   241,   242,   243,
+     244,   245,   247,   255,   256,   283,   284,   285,   293,   296,
+     302,   303,   305,   307,   308,   314,   319,   323,   324,   325,
+     326,   327,   328,   329,   330,   350,   367,   368,   369,   370,
+      72,   139,   140,   150,   216,   218,   226,   228,   237,   241,
+     243,   284,    82,   109,   312,   313,   314,   312,   312,    72,
+      74,    75,    76,   138,   139,   273,   274,   294,   295,    74,
+      75,   274,   109,   305,    11,   200,   109,   150,   319,   324,
+     325,   326,   328,   329,   330,   112,   134,   111,   219,   226,
+     228,   323,   327,   366,   367,   370,   371,   135,   107,   131,
+     277,   114,   135,   174,    74,    75,   137,   272,   135,   135,
+     135,   116,   135,    74,    75,   109,   150,   309,   318,   319,
+     320,   321,   322,   323,   327,   331,   332,   333,   334,   335,
+     341,     3,    28,    78,   239,     3,     5,    74,   111,   150,
+     218,   229,   233,   235,   244,   285,   323,   327,   370,   216,
+     218,   228,   237,   241,   243,   284,   323,   327,    33,   234,
+     234,   229,   235,   135,   234,   229,   234,   229,    75,   109,
+     114,   274,   285,   114,   274,   234,   229,   116,   135,   135,
+       0,   134,   109,   174,   312,   312,   134,   111,   226,   228,
+     368,   272,   272,   131,   228,   109,   150,   309,   319,   323,
+     111,   150,   370,   306,   231,   314,   109,   290,   109,   109,
+      51,   109,    37,    38,    40,    66,    72,    76,    79,    80,
+      81,    82,    86,    87,   109,   111,   119,   120,   121,   122,
+     136,   140,   141,   142,   143,   144,   149,   150,   151,   152,
+     153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
+     163,   165,   168,   226,   276,   292,   366,   371,   228,   110,
+     110,   110,   110,   110,   110,   110,    74,    75,   111,   226,
+     272,   350,   368,   111,   117,   150,   165,   218,   219,   225,
+     228,   232,   233,   237,   240,   241,   243,   262,   263,   267,
+     268,   269,   270,   284,   350,   362,   363,   364,   365,   370,
+     371,   112,   109,   323,   327,   370,   109,   116,   132,   111,
+     114,   150,   165,   278,   278,   115,   134,   116,   132,   109,
+     116,   132,   116,   132,   116,   132,   312,   132,   319,   320,
+     321,   322,   332,   333,   334,   335,   228,   318,   331,    64,
+     311,   111,   312,   349,   350,   312,   312,   174,   134,   109,
+     312,   349,   312,   312,   228,   309,   109,   109,   227,   228,
+     226,   228,   112,   134,   226,   366,   371,   174,   134,   272,
+     277,   218,   233,   323,   327,   174,   134,   294,   228,   237,
+     132,   228,   228,   292,   248,   246,   258,   274,   257,   228,
+     294,   132,   132,   305,   134,   139,   271,     3,   135,   208,
+     209,   223,   225,   228,   134,   311,   109,   311,   165,   319,
+     228,   109,   134,   272,   114,    33,    34,    35,   226,   286,
+     287,   289,   134,   128,   131,   291,   134,   229,   234,   235,
+     272,   315,   316,   317,   109,   141,   109,   149,   109,   149,
+     152,   109,   149,   109,   109,   149,   149,   111,   165,   170,
+     174,   226,   275,   366,   370,   112,   134,    82,    85,    86,
+      87,   109,   111,   113,   114,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,   131,   167,   152,   152,
+     117,   123,   124,   119,   120,    88,    89,    90,    91,   125,
+     126,    92,    93,   118,   127,   128,    94,    95,   129,   131,
+     373,   109,   150,   345,   346,   347,   348,   349,   110,   116,
+     109,   349,   350,   109,   349,   350,   134,   109,   226,   368,
+     112,   134,   135,   111,   226,   228,   361,   362,   370,   371,
+     135,   109,   111,   150,   319,   336,   337,   338,   339,   340,
+     341,   342,   343,   344,   350,   351,   352,   353,   354,   355,
+     356,   150,   370,   228,   135,   135,   150,   226,   228,   363,
+     272,   226,   350,   363,   272,   109,   134,   134,   134,   112,
+     134,    72,   111,   113,   140,   274,   278,   279,   280,   281,
+     282,   134,   134,   134,   134,   134,   134,   309,   110,   110,
+     110,   110,   110,   110,   110,   318,   331,   109,   277,   112,
+     208,   134,   309,   170,   276,   170,   276,   309,   111,   208,
+     311,   174,   134,   208,   110,    40,   111,   115,   226,   249,
+     250,   251,   366,   114,   116,   372,   131,   259,   114,   228,
+     264,   265,   266,   269,   270,   110,   116,   174,   134,   117,
+     165,   134,   225,   228,   263,   362,   370,   303,   304,   109,
+     150,   336,   110,   116,   373,   274,   286,   109,   114,   274,
+     276,   286,   110,   116,   109,   141,   110,   130,   275,   275,
+     275,   146,   165,   276,   275,   112,   134,   110,   116,   110,
+     109,   150,   349,   357,   358,   359,   360,   110,   116,   165,
+     111,   139,   145,   146,   134,   111,   139,   145,   165,   152,
+     152,   152,   153,   153,   154,   154,   155,   155,   155,   155,
+     156,   156,   157,   158,   159,   160,   161,   130,   170,   165,
+     134,   346,   347,   348,   228,   345,   312,   312,   165,   276,
+     134,   271,   134,   226,   350,   363,   228,   232,   112,   112,
+     134,   370,   112,   109,   134,   319,   337,   338,   339,   342,
+     352,   353,   354,   112,   134,   228,   336,   340,   351,   109,
+     312,   355,   373,   312,   312,   373,   109,   312,   355,   312,
+     312,   312,   312,   350,   226,   361,   371,   272,   112,   116,
+     112,   116,   373,   226,   363,   373,   260,   261,   262,   263,
+     260,   260,   272,   165,   134,   111,   274,   130,   116,   372,
+     278,   111,   130,   282,    29,   210,   211,   272,   260,   139,
+     309,   139,   311,   109,   349,   350,   109,   349,   350,   142,
+     350,   174,   264,   110,   110,   110,   110,   112,   174,   208,
+     174,   114,   250,   251,   112,   134,   109,   130,   150,   252,
+     254,   318,   319,   331,   357,   116,   132,   116,   132,   274,
+     248,   274,   115,   163,   164,   258,   135,   135,   139,   223,
+     135,   135,   260,   109,   150,   370,   135,   115,   228,   287,
+     288,   135,   134,   134,   109,   135,   110,   316,   170,   171,
+     130,   132,   111,   141,   201,   202,   203,   110,   116,   110,
+     110,   110,   110,   111,   165,   358,   359,   360,   228,   357,
+     312,   312,   114,   152,   168,   165,   166,   169,   116,   135,
+     134,   110,   116,   165,   134,   115,   163,   130,   264,   110,
+     110,   110,   345,   264,   110,   260,   226,   363,   111,   117,
+     150,   165,   165,   228,   342,   264,   110,   110,   110,   110,
+     110,   110,   110,     7,   228,   336,   340,   351,   134,   134,
+     373,   134,   134,   110,   135,   135,   135,   135,   277,   135,
+     163,   164,   165,   310,   134,   278,   280,   115,   134,   212,
+     274,    40,    41,    43,    46,    47,    48,    49,    50,    51,
+      52,    53,    57,    61,    62,    72,   111,   127,   171,   172,
+     173,   174,   175,   176,   178,   179,   191,   193,   194,   199,
+     213,   308,    29,   135,   131,   277,   134,   134,   110,   135,
+     174,   248,   132,   132,   319,   164,   228,   253,   254,   253,
+     274,   312,   115,   259,   372,   110,   116,   112,   112,   135,
+     228,   116,   373,   290,   110,   286,   216,   218,   226,   298,
+     299,   300,   301,   292,   110,   110,   130,   164,   109,   110,
+     130,   116,   139,   112,   110,   110,   110,   357,   279,   116,
+     135,   169,   112,   139,   147,   148,   146,   135,   147,   163,
+     168,   135,   109,   349,   350,   135,   135,   134,   135,   135,
+     135,   165,   110,   135,   109,   349,   350,   109,   355,   109,
+     355,   350,   227,     7,   117,   135,   165,   264,   264,   263,
+     267,   267,   268,   116,   116,   110,   110,   112,    96,   122,
+     135,   135,   147,   278,   165,   116,   132,   213,   217,   228,
+     232,   109,   109,   172,   109,   109,    72,   132,    72,   132,
+      72,   117,   171,   109,   174,   166,   166,   130,   112,   144,
+     132,   135,   134,   135,   212,   110,   165,   264,   264,   312,
+     110,   115,   252,   115,   134,   110,   134,   135,   309,   115,
+     134,   135,   135,   110,   114,   201,   112,   164,   132,   201,
+     203,   110,   109,   349,   350,   372,   166,   112,   135,    85,
+     113,   116,   135,   112,   135,   110,   134,   110,   110,   112,
+     112,   112,   135,   110,   134,   134,   134,   165,   165,   135,
+     112,   135,   135,   135,   135,   134,   134,   164,   164,   112,
+     112,   135,   135,   274,   228,   170,   170,    47,   170,   134,
+     132,   132,   132,   170,   132,   170,    58,    59,    60,   195,
+     196,   197,   132,    63,   132,   312,   114,   176,   115,   132,
+     135,   135,    96,   269,   270,   110,   299,   116,   132,   116,
+     132,   115,   297,   130,   141,   110,   110,   130,   134,   115,
+     112,   111,   148,   111,   148,   148,   112,   112,   264,   112,
+     264,   264,   264,   135,   135,   112,   112,   110,   110,   112,
+     116,    96,   263,    96,   135,   112,   112,   110,   110,   109,
+     110,   171,   192,   213,   132,   110,   109,   109,   174,   197,
+      58,    59,   165,   172,   145,   110,   110,   114,   134,   134,
+     298,   141,   204,   109,   132,   204,   264,   134,   134,   135,
+     135,   135,   135,   112,   112,   134,   135,   112,   172,    44,
+      45,   114,   182,   183,   184,   170,   172,   135,   110,   171,
+     114,   184,    96,   134,    96,   134,   109,   109,   132,   115,
+     134,   272,   309,   115,   116,   130,   164,   110,   135,   147,
+     147,   110,   110,   110,   110,   267,    42,   164,   180,   181,
+     310,   130,   134,   172,   182,   110,   132,   172,   132,   134,
+     110,   134,   110,   134,    96,   134,    96,   134,   132,   298,
+     141,   139,   205,   110,   132,   110,   135,   135,   172,    96,
+     116,   130,   135,   206,   207,   213,   132,   171,   171,   206,
+     174,   198,   226,   366,   174,   198,   110,   134,   110,   134,
+     115,   110,   116,   112,   112,   164,   180,   183,   185,   186,
+     134,   132,   183,   187,   188,   135,   109,   150,   309,   357,
+     139,   135,   174,   198,   174,   198,   109,   132,   139,   172,
+     177,   115,   183,   213,   171,    56,   177,   190,   115,   183,
+     110,   228,   110,   135,   135,   292,   172,   177,   132,   189,
+     190,   177,   190,   174,   174,   110,   110,   110,   189,   135,
+     135,   174,   174,   135,   135
+};
+
+#define yyerrok		(yyerrstatus = 0)
+#define yyclearin	(yychar = YYEMPTY)
+#define YYEMPTY		(-2)
+#define YYEOF		0
+
+#define YYACCEPT	goto yyacceptlab
+#define YYABORT		goto yyabortlab
+#define YYERROR		goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror.  This remains here temporarily
+   to ease the transition to the new meaning of YYERROR, for GCC.
+   Once GCC version 2 has supplanted version 1, this can go.  However,
+   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
+   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
+   discussed.  */
+
+#define YYFAIL		goto yyerrlab
+#if defined YYFAIL
+  /* This is here to suppress warnings from the GCC cpp's
+     -Wunused-macros.  Normally we don't worry about that warning, but
+     some users do, and we want to make it easy for users to remove
+     YYFAIL uses, which will produce warnings from Bison 2.5.  */
+#endif
+
+#define YYRECOVERING()  (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value)					\
+do								\
+  if (yychar == YYEMPTY && yylen == 1)				\
+    {								\
+      yychar = (Token);						\
+      yylval = (Value);						\
+      YYPOPSTACK (1);						\
+      goto yybackup;						\
+    }								\
+  else								\
+    {								\
+      yyerror (YY_("syntax error: cannot back up")); \
+      YYERROR;							\
+    }								\
+while (YYID (0))
+
+
+#define YYTERROR	1
+#define YYERRCODE	256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+   If N is 0, then set CURRENT to the empty location which ends
+   the previous symbol: RHS[0] (always defined).  */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N)				\
+    do									\
+      if (YYID (N))                                                    \
+	{								\
+	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
+	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
+	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
+	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
+	}								\
+      else								\
+	{								\
+	  (Current).first_line   = (Current).last_line   =		\
+	    YYRHSLOC (Rhs, 0).last_line;				\
+	  (Current).first_column = (Current).last_column =		\
+	    YYRHSLOC (Rhs, 0).last_column;				\
+	}								\
+    while (YYID (0))
+#endif
+
+
+/* This macro is provided for backward compatibility. */
+
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments.  */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested.  */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+#  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+#  define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args)			\
+do {						\
+  if (yydebug)					\
+    YYFPRINTF Args;				\
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
+do {									  \
+  if (yydebug)								  \
+    {									  \
+      YYFPRINTF (stderr, "%s ", Title);					  \
+      yy_symbol_print (stderr,						  \
+		  Type, Value); \
+      YYFPRINTF (stderr, "\n");						  \
+    }									  \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (!yyvaluep)
+    return;
+# ifdef YYPRINT
+  if (yytype < YYNTOKENS)
+    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+  YYUSE (yyoutput);
+# endif
+  switch (yytype)
+    {
+      default:
+	break;
+    }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT.  |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+    FILE *yyoutput;
+    int yytype;
+    YYSTYPE const * const yyvaluep;
+#endif
+{
+  if (yytype < YYNTOKENS)
+    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+  else
+    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+  YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included).                                                   |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+#else
+static void
+yy_stack_print (yybottom, yytop)
+    yytype_int16 *yybottom;
+    yytype_int16 *yytop;
+#endif
+{
+  YYFPRINTF (stderr, "Stack now");
+  for (; yybottom <= yytop; yybottom++)
+    {
+      int yybot = *yybottom;
+      YYFPRINTF (stderr, " %d", yybot);
+    }
+  YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top)				\
+do {								\
+  if (yydebug)							\
+    yy_stack_print ((Bottom), (Top));				\
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced.  |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+    YYSTYPE *yyvsp;
+    int yyrule;
+#endif
+{
+  int yynrhs = yyr2[yyrule];
+  int yyi;
+  unsigned long int yylno = yyrline[yyrule];
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+	     yyrule - 1, yylno);
+  /* The symbols being reduced.  */
+  for (yyi = 0; yyi < yynrhs; yyi++)
+    {
+      YYFPRINTF (stderr, "   $%d = ", yyi + 1);
+      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+		       &(yyvsp[(yyi + 1) - (yynrhs)])
+		       		       );
+      YYFPRINTF (stderr, "\n");
+    }
+}
+
+# define YY_REDUCE_PRINT(Rule)		\
+do {					\
+  if (yydebug)				\
+    yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace.  It is left uninitialized so that
+   multiple parsers can coexist.  */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks.  */
+#ifndef	YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+   if the built-in stack extension method is used).
+
+   Do not make this value too large; the results are undefined if
+   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+   evaluated with infinite-precision integer arithmetic.  */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+#  if defined __GLIBC__ && defined _STRING_H
+#   define yystrlen strlen
+#  else
+/* Return the length of YYSTR.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+    const char *yystr;
+#endif
+{
+  YYSIZE_T yylen;
+  for (yylen = 0; yystr[yylen]; yylen++)
+    continue;
+  return yylen;
+}
+#  endif
+# endif
+
+# ifndef yystpcpy
+#  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+#   define yystpcpy stpcpy
+#  else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+   YYDEST.  */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+    char *yydest;
+    const char *yysrc;
+#endif
+{
+  char *yyd = yydest;
+  const char *yys = yysrc;
+
+  while ((*yyd++ = *yys++) != '\0')
+    continue;
+
+  return yyd - 1;
+}
+#  endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+   quotes and backslashes, so that it's suitable for yyerror.  The
+   heuristic is that double-quoting is unnecessary unless the string
+   contains an apostrophe, a comma, or backslash (other than
+   backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
+   null, do not copy; instead, return the length of what the result
+   would have been.  */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+  if (*yystr == '"')
+    {
+      YYSIZE_T yyn = 0;
+      char const *yyp = yystr;
+
+      for (;;)
+	switch (*++yyp)
+	  {
+	  case '\'':
+	  case ',':
+	    goto do_not_strip_quotes;
+
+	  case '\\':
+	    if (*++yyp != '\\')
+	      goto do_not_strip_quotes;
+	    /* Fall through.  */
+	  default:
+	    if (yyres)
+	      yyres[yyn] = *yyp;
+	    yyn++;
+	    break;
+
+	  case '"':
+	    if (yyres)
+	      yyres[yyn] = '\0';
+	    return yyn;
+	  }
+    do_not_strip_quotes: ;
+    }
+
+  if (! yyres)
+    return yystrlen (yystr);
+
+  return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
+{
+  YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  YYSIZE_T yysize1;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = 0;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int yycount = 0;
+
+  /* There are many possibilities here to consider:
+     - Assume YYFAIL is not used.  It's too flawed to consider.  See
+       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
+       for details.  YYERROR is fine as it does not invoke this
+       function.
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
+    {
+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          int yyxbegin = yyn < 0 ? -yyn : 0;
+          /* Stay within bounds of both yycheck and yytname.  */
+          int yychecklim = YYLAST - yyn + 1;
+          int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+          int yyx;
+
+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+                && !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+                if (! (yysize <= yysize1
+                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  return 2;
+                yysize = yysize1;
+              }
+        }
+    }
+
+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+    }
+
+  yysize1 = yysize + yystrlen (yyformat);
+  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    return 2;
+  yysize = yysize1;
+
+  if (*yymsg_alloc < yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize <= *yymsg_alloc
+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
+
+  /* Avoid sprintf, as that infringes on the user's name space.
+     Don't have undefined behavior even if the translation
+     produced a string with the wrong number of "%s"s.  */
+  {
+    char *yyp = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyformat += 2;
+        }
+      else
+        {
+          yyp++;
+          yyformat++;
+        }
+  }
+  return 0;
+}
+#endif /* YYERROR_VERBOSE */
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol.  |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+    const char *yymsg;
+    int yytype;
+    YYSTYPE *yyvaluep;
+#endif
+{
+  YYUSE (yyvaluep);
+
+  if (!yymsg)
+    yymsg = "Deleting";
+  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+  switch (yytype)
+    {
+
+      default:
+	break;
+    }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes.  */
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+/* The lookahead symbol.  */
+int yychar;
+
+/* The semantic value of the lookahead symbol.  */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far.  */
+int yynerrs;
+
+
+/*----------.
+| yyparse.  |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+    void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+    int yystate;
+    /* Number of tokens to shift before error messages enabled.  */
+    int yyerrstatus;
+
+    /* The stacks and their tools:
+       `yyss': related to states.
+       `yyvs': related to semantic values.
+
+       Refer to the stacks thru separate pointers, to allow yyoverflow
+       to reallocate them elsewhere.  */
+
+    /* The state stack.  */
+    yytype_int16 yyssa[YYINITDEPTH];
+    yytype_int16 *yyss;
+    yytype_int16 *yyssp;
+
+    /* The semantic value stack.  */
+    YYSTYPE yyvsa[YYINITDEPTH];
+    YYSTYPE *yyvs;
+    YYSTYPE *yyvsp;
+
+    YYSIZE_T yystacksize;
+
+  int yyn;
+  int yyresult;
+  /* Lookahead token as an internal (translated) token number.  */
+  int yytoken;
+  /* The variables used to return semantic value and location from the
+     action routines.  */
+  YYSTYPE yyval;
+
+#if YYERROR_VERBOSE
+  /* Buffer for error messages, and its allocated size.  */
+  char yymsgbuf[128];
+  char *yymsg = yymsgbuf;
+  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
+
+  /* The number of symbols on the RHS of the reduced rule.
+     Keep to zero when no symbol should be popped.  */
+  int yylen = 0;
+
+  yytoken = 0;
+  yyss = yyssa;
+  yyvs = yyvsa;
+  yystacksize = YYINITDEPTH;
+
+  YYDPRINTF ((stderr, "Starting parse\n"));
+
+  yystate = 0;
+  yyerrstatus = 0;
+  yynerrs = 0;
+  yychar = YYEMPTY; /* Cause a token to be read.  */
+
+  /* Initialize stack pointers.
+     Waste one element of value and location stack
+     so that they stay on the same level as the state stack.
+     The wasted elements are never initialized.  */
+  yyssp = yyss;
+  yyvsp = yyvs;
+
+  goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate.  |
+`------------------------------------------------------------*/
+ yynewstate:
+  /* In all cases, when you get here, the value and location stacks
+     have just been pushed.  So pushing a state here evens the stacks.  */
+  yyssp++;
+
+ yysetstate:
+  *yyssp = yystate;
+
+  if (yyss + yystacksize - 1 <= yyssp)
+    {
+      /* Get the current used size of the three stacks, in elements.  */
+      YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+      {
+	/* Give user a chance to reallocate the stack.  Use copies of
+	   these so that the &'s don't force the real ones into
+	   memory.  */
+	YYSTYPE *yyvs1 = yyvs;
+	yytype_int16 *yyss1 = yyss;
+
+	/* Each stack pointer address is followed by the size of the
+	   data in use in that stack, in bytes.  This used to be a
+	   conditional around just the two extra args, but that might
+	   be undefined if yyoverflow is a macro.  */
+	yyoverflow (YY_("memory exhausted"),
+		    &yyss1, yysize * sizeof (*yyssp),
+		    &yyvs1, yysize * sizeof (*yyvsp),
+		    &yystacksize);
+
+	yyss = yyss1;
+	yyvs = yyvs1;
+      }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+      goto yyexhaustedlab;
+# else
+      /* Extend the stack our own way.  */
+      if (YYMAXDEPTH <= yystacksize)
+	goto yyexhaustedlab;
+      yystacksize *= 2;
+      if (YYMAXDEPTH < yystacksize)
+	yystacksize = YYMAXDEPTH;
+
+      {
+	yytype_int16 *yyss1 = yyss;
+	union yyalloc *yyptr =
+	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+	if (! yyptr)
+	  goto yyexhaustedlab;
+	YYSTACK_RELOCATE (yyss_alloc, yyss);
+	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+#  undef YYSTACK_RELOCATE
+	if (yyss1 != yyssa)
+	  YYSTACK_FREE (yyss1);
+      }
+# endif
+#endif /* no yyoverflow */
+
+      yyssp = yyss + yysize - 1;
+      yyvsp = yyvs + yysize - 1;
+
+      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+		  (unsigned long int) yystacksize));
+
+      if (yyss + yystacksize - 1 <= yyssp)
+	YYABORT;
+    }
+
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+  if (yystate == YYFINAL)
+    YYACCEPT;
+
+  goto yybackup;
+
+/*-----------.
+| yybackup.  |
+`-----------*/
+yybackup:
+
+  /* Do appropriate processing given the current state.  Read a
+     lookahead token if we need one and don't already have one.  */
+
+  /* First try to decide what to do without reference to lookahead token.  */
+  yyn = yypact[yystate];
+  if (yypact_value_is_default (yyn))
+    goto yydefault;
+
+  /* Not known => get a lookahead token if don't already have one.  */
+
+  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
+  if (yychar == YYEMPTY)
+    {
+      YYDPRINTF ((stderr, "Reading a token: "));
+      yychar = YYLEX;
+    }
+
+  if (yychar <= YYEOF)
+    {
+      yychar = yytoken = YYEOF;
+      YYDPRINTF ((stderr, "Now at end of input.\n"));
+    }
+  else
+    {
+      yytoken = YYTRANSLATE (yychar);
+      YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+    }
+
+  /* If the proper action on seeing token YYTOKEN is to reduce or to
+     detect an error, take that action.  */
+  yyn += yytoken;
+  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+    goto yydefault;
+  yyn = yytable[yyn];
+  if (yyn <= 0)
+    {
+      if (yytable_value_is_error (yyn))
+        goto yyerrlab;
+      yyn = -yyn;
+      goto yyreduce;
+    }
+
+  /* Count tokens shifted since error; after three, turn off error
+     status.  */
+  if (yyerrstatus)
+    yyerrstatus--;
+
+  /* Shift the lookahead token.  */
+  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
+
+  yystate = yyn;
+  *++yyvsp = yylval;
+
+  goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state.  |
+`-----------------------------------------------------------*/
+yydefault:
+  yyn = yydefact[yystate];
+  if (yyn == 0)
+    goto yyerrlab;
+  goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction.  |
+`-----------------------------*/
+yyreduce:
+  /* yyn is the number of a rule to reduce with.  */
+  yylen = yyr2[yyn];
+
+  /* If YYLEN is nonzero, implement the default value of the action:
+     `$$ = $1'.
+
+     Otherwise, the following line sets YYVAL to garbage.
+     This behavior is undocumented and Bison
+     users should not rely upon it.  Assigning to YYVAL
+     unconditionally makes the parser a bit smaller, and it avoids a
+     GCC warning that YYVAL may be used uninitialized.  */
+  yyval = yyvsp[1-yylen];
+
+
+  YY_REDUCE_PRINT (yyn);
+  switch (yyn)
+    {
+        case 2:
+
+/* Line 1806 of yacc.c  */
+#line 300 "parser.yy"
+    { typedefTable.enterScope(); }
+    break;
+
+  case 3:
+
+/* Line 1806 of yacc.c  */
+#line 304 "parser.yy"
+    { typedefTable.leaveScope(); }
+    break;
+
+  case 4:
+
+/* Line 1806 of yacc.c  */
+#line 311 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantInteger( *(yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 5:
+
+/* Line 1806 of yacc.c  */
+#line 312 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantFloat( *(yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 6:
+
+/* Line 1806 of yacc.c  */
+#line 313 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_constantChar( *(yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 16:
+
+/* Line 1806 of yacc.c  */
+#line 338 "parser.yy"
+    { (yyval.constant) = build_constantStr( *(yyvsp[(1) - (1)].str) ); }
+    break;
+
+  case 17:
+
+/* Line 1806 of yacc.c  */
+#line 342 "parser.yy"
+    { (yyval.str) = (yyvsp[(1) - (1)].tok); }
+    break;
+
+  case 18:
+
+/* Line 1806 of yacc.c  */
+#line 344 "parser.yy"
+    {
+			appendStr( (yyvsp[(1) - (2)].str), (yyvsp[(2) - (2)].tok) );						// append 2nd juxtaposed string to 1st
+			delete (yyvsp[(2) - (2)].tok);									// allocated by lexer
+			(yyval.str) = (yyvsp[(1) - (2)].str);									// conversion from tok to str
+		}
+    break;
+
+  case 19:
+
+/* Line 1806 of yacc.c  */
+#line 355 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 20:
+
+/* Line 1806 of yacc.c  */
+#line 357 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 21:
+
+/* Line 1806 of yacc.c  */
+#line 359 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (3)].en); }
+    break;
+
+  case 22:
+
+/* Line 1806 of yacc.c  */
+#line 361 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_valexpr( (yyvsp[(2) - (3)].sn) ) ); }
+    break;
+
+  case 24:
+
+/* Line 1806 of yacc.c  */
+#line 371 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Index, (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en) ) ); }
+    break;
+
+  case 25:
+
+/* Line 1806 of yacc.c  */
+#line 373 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_func( (yyvsp[(1) - (4)].en), (yyvsp[(3) - (4)].en) ) ); }
+    break;
+
+  case 26:
+
+/* Line 1806 of yacc.c  */
+#line 377 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
+    break;
+
+  case 28:
+
+/* Line 1806 of yacc.c  */
+#line 380 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(1) - (3)].en), build_varref( (yyvsp[(3) - (3)].tok) ) ) ); }
+    break;
+
+  case 30:
+
+/* Line 1806 of yacc.c  */
+#line 383 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::IncrPost, (yyvsp[(1) - (2)].en) ) ); }
+    break;
+
+  case 31:
+
+/* Line 1806 of yacc.c  */
+#line 385 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::DecrPost, (yyvsp[(1) - (2)].en) ) ); }
+    break;
+
+  case 32:
+
+/* Line 1806 of yacc.c  */
+#line 387 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_compoundLiteral( (yyvsp[(2) - (7)].decl), new InitializerNode( (yyvsp[(5) - (7)].in), true ) ) ); }
+    break;
+
+  case 33:
+
+/* Line 1806 of yacc.c  */
+#line 389 "parser.yy"
+    {
+			Token fn;
+			fn.str = new std::string( "?{}" ); // location undefined - use location of '{'?
+			(yyval.en) = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(1) - (4)].en) )->set_last( (yyvsp[(3) - (4)].en) ) ) ) );
+		}
+    break;
+
+  case 35:
+
+/* Line 1806 of yacc.c  */
+#line 399 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
+    break;
+
+  case 36:
+
+/* Line 1806 of yacc.c  */
+#line 404 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 39:
+
+/* Line 1806 of yacc.c  */
+#line 410 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 40:
+
+/* Line 1806 of yacc.c  */
+#line 415 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (1)].tok) ) ); }
+    break;
+
+  case 41:
+
+/* Line 1806 of yacc.c  */
+#line 419 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
+    break;
+
+  case 42:
+
+/* Line 1806 of yacc.c  */
+#line 421 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_fieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
+    break;
+
+  case 43:
+
+/* Line 1806 of yacc.c  */
+#line 423 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(3) - (3)].en), build_varref( (yyvsp[(1) - (3)].tok) ) ) ); }
+    break;
+
+  case 44:
+
+/* Line 1806 of yacc.c  */
+#line 425 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_pfieldSel( (yyvsp[(5) - (7)].en), build_varref( (yyvsp[(1) - (7)].tok) ) ) ); }
+    break;
+
+  case 46:
+
+/* Line 1806 of yacc.c  */
+#line 433 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+    break;
+
+  case 47:
+
+/* Line 1806 of yacc.c  */
+#line 435 "parser.yy"
+    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
+    break;
+
+  case 48:
+
+/* Line 1806 of yacc.c  */
+#line 437 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en)->set_extension( true ); }
+    break;
+
+  case 49:
+
+/* Line 1806 of yacc.c  */
+#line 442 "parser.yy"
+    {
+			switch ( (yyvsp[(1) - (2)].op) ) {
+			  case OperKinds::AddressOf:
+				(yyval.en) = new ExpressionNode( build_addressOf( (yyvsp[(2) - (2)].en) ) );
+				break;
+			  case OperKinds::PointTo:
+				(yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) );
+				break;
+			  default:
+				assert( false );
+			}
+		}
+    break;
+
+  case 50:
+
+/* Line 1806 of yacc.c  */
+#line 455 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_val( (yyvsp[(1) - (2)].op), (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 51:
+
+/* Line 1806 of yacc.c  */
+#line 457 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Incr, (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 52:
+
+/* Line 1806 of yacc.c  */
+#line 459 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_unary_ptr( OperKinds::Decr, (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 53:
+
+/* Line 1806 of yacc.c  */
+#line 461 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_sizeOfexpr( (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 54:
+
+/* Line 1806 of yacc.c  */
+#line 463 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_sizeOftype( (yyvsp[(3) - (4)].decl) ) ); }
+    break;
+
+  case 55:
+
+/* Line 1806 of yacc.c  */
+#line 465 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_alignOfexpr( (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 56:
+
+/* Line 1806 of yacc.c  */
+#line 467 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_alignOftype( (yyvsp[(3) - (4)].decl) ) ); }
+    break;
+
+  case 57:
+
+/* Line 1806 of yacc.c  */
+#line 469 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_offsetOf( (yyvsp[(3) - (6)].decl), build_varref( (yyvsp[(5) - (6)].tok) ) ) ); }
+    break;
+
+  case 58:
+
+/* Line 1806 of yacc.c  */
+#line 471 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (1)].tok) ), nullptr ) ); }
+    break;
+
+  case 59:
+
+/* Line 1806 of yacc.c  */
+#line 473 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrexpr( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].en) ) ); }
+    break;
+
+  case 60:
+
+/* Line 1806 of yacc.c  */
+#line 475 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_attrtype( build_varref( (yyvsp[(1) - (4)].tok) ), (yyvsp[(3) - (4)].decl) ) ); }
+    break;
+
+  case 61:
+
+/* Line 1806 of yacc.c  */
+#line 481 "parser.yy"
+    { (yyval.op) = OperKinds::PointTo; }
+    break;
+
+  case 62:
+
+/* Line 1806 of yacc.c  */
+#line 482 "parser.yy"
+    { (yyval.op) = OperKinds::AddressOf; }
+    break;
+
+  case 63:
+
+/* Line 1806 of yacc.c  */
+#line 488 "parser.yy"
+    { (yyval.op) = OperKinds::UnPlus; }
+    break;
+
+  case 64:
+
+/* Line 1806 of yacc.c  */
+#line 489 "parser.yy"
+    { (yyval.op) = OperKinds::UnMinus; }
+    break;
+
+  case 65:
+
+/* Line 1806 of yacc.c  */
+#line 490 "parser.yy"
+    { (yyval.op) = OperKinds::Neg; }
+    break;
+
+  case 66:
+
+/* Line 1806 of yacc.c  */
+#line 491 "parser.yy"
+    { (yyval.op) = OperKinds::BitNeg; }
+    break;
+
+  case 68:
+
+/* Line 1806 of yacc.c  */
+#line 497 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
+    break;
+
+  case 69:
+
+/* Line 1806 of yacc.c  */
+#line 499 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cast( (yyvsp[(2) - (4)].decl), (yyvsp[(4) - (4)].en) ) ); }
+    break;
+
+  case 71:
+
+/* Line 1806 of yacc.c  */
+#line 505 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mul, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 72:
+
+/* Line 1806 of yacc.c  */
+#line 507 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Div, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 73:
+
+/* Line 1806 of yacc.c  */
+#line 509 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Mod, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 75:
+
+/* Line 1806 of yacc.c  */
+#line 515 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Plus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 76:
+
+/* Line 1806 of yacc.c  */
+#line 517 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Minus, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 78:
+
+/* Line 1806 of yacc.c  */
+#line 523 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 79:
+
+/* Line 1806 of yacc.c  */
+#line 525 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::RShift, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 81:
+
+/* Line 1806 of yacc.c  */
+#line 531 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 82:
+
+/* Line 1806 of yacc.c  */
+#line 533 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 83:
+
+/* Line 1806 of yacc.c  */
+#line 535 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::LEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 84:
+
+/* Line 1806 of yacc.c  */
+#line 537 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::GEThan, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 86:
+
+/* Line 1806 of yacc.c  */
+#line 543 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Eq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 87:
+
+/* Line 1806 of yacc.c  */
+#line 545 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Neq, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 89:
+
+/* Line 1806 of yacc.c  */
+#line 551 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitAnd, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 91:
+
+/* Line 1806 of yacc.c  */
+#line 557 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::Xor, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 93:
+
+/* Line 1806 of yacc.c  */
+#line 563 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_val( OperKinds::BitOr, (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 95:
+
+/* Line 1806 of yacc.c  */
+#line 569 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), true ) ); }
+    break;
+
+  case 97:
+
+/* Line 1806 of yacc.c  */
+#line 575 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_and_or( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en), false ) ); }
+    break;
+
+  case 99:
+
+/* Line 1806 of yacc.c  */
+#line 581 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
+    break;
+
+  case 100:
+
+/* Line 1806 of yacc.c  */
+#line 584 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (4)].en), (yyvsp[(1) - (4)].en), (yyvsp[(4) - (4)].en) ) ); }
+    break;
+
+  case 101:
+
+/* Line 1806 of yacc.c  */
+#line 586 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_cond( (yyvsp[(1) - (5)].en), (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].en) ) ); }
+    break;
+
+  case 104:
+
+/* Line 1806 of yacc.c  */
+#line 597 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_binary_ptr( (yyvsp[(2) - (3)].op), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 105:
+
+/* Line 1806 of yacc.c  */
+#line 599 "parser.yy"
+    { (yyval.en) = ( (yyvsp[(2) - (2)].en) == 0 ) ? (yyvsp[(1) - (2)].en) : new ExpressionNode( build_binary_ptr( OperKinds::Assign, (yyvsp[(1) - (2)].en), (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 106:
+
+/* Line 1806 of yacc.c  */
+#line 604 "parser.yy"
+    { (yyval.en) = nullptr; }
+    break;
+
+  case 108:
+
+/* Line 1806 of yacc.c  */
+#line 609 "parser.yy"
+    { (yyval.op) = OperKinds::Assign; }
+    break;
+
+  case 109:
+
+/* Line 1806 of yacc.c  */
+#line 610 "parser.yy"
+    { (yyval.op) = OperKinds::AtAssn; }
+    break;
+
+  case 110:
+
+/* Line 1806 of yacc.c  */
+#line 611 "parser.yy"
+    { (yyval.op) = OperKinds::MulAssn; }
+    break;
+
+  case 111:
+
+/* Line 1806 of yacc.c  */
+#line 612 "parser.yy"
+    { (yyval.op) = OperKinds::DivAssn; }
+    break;
+
+  case 112:
+
+/* Line 1806 of yacc.c  */
+#line 613 "parser.yy"
+    { (yyval.op) = OperKinds::ModAssn; }
+    break;
+
+  case 113:
+
+/* Line 1806 of yacc.c  */
+#line 614 "parser.yy"
+    { (yyval.op) = OperKinds::PlusAssn; }
+    break;
+
+  case 114:
+
+/* Line 1806 of yacc.c  */
+#line 615 "parser.yy"
+    { (yyval.op) = OperKinds::MinusAssn; }
+    break;
+
+  case 115:
+
+/* Line 1806 of yacc.c  */
+#line 616 "parser.yy"
+    { (yyval.op) = OperKinds::LSAssn; }
+    break;
+
+  case 116:
+
+/* Line 1806 of yacc.c  */
+#line 617 "parser.yy"
+    { (yyval.op) = OperKinds::RSAssn; }
+    break;
+
+  case 117:
+
+/* Line 1806 of yacc.c  */
+#line 618 "parser.yy"
+    { (yyval.op) = OperKinds::AndAssn; }
+    break;
+
+  case 118:
+
+/* Line 1806 of yacc.c  */
+#line 619 "parser.yy"
+    { (yyval.op) = OperKinds::ERAssn; }
+    break;
+
+  case 119:
+
+/* Line 1806 of yacc.c  */
+#line 620 "parser.yy"
+    { (yyval.op) = OperKinds::OrAssn; }
+    break;
+
+  case 120:
+
+/* Line 1806 of yacc.c  */
+#line 627 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple() ); }
+    break;
+
+  case 121:
+
+/* Line 1806 of yacc.c  */
+#line 629 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (yyvsp[(3) - (5)].en) ) ); }
+    break;
+
+  case 122:
+
+/* Line 1806 of yacc.c  */
+#line 631 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(new ExpressionNode( nullptr ) )->set_last( (yyvsp[(4) - (6)].en) ) ) ); }
+    break;
+
+  case 123:
+
+/* Line 1806 of yacc.c  */
+#line 633 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_tuple( (ExpressionNode *)(yyvsp[(3) - (7)].en)->set_last( (yyvsp[(5) - (7)].en) ) ) ); }
+    break;
+
+  case 125:
+
+/* Line 1806 of yacc.c  */
+#line 639 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 127:
+
+/* Line 1806 of yacc.c  */
+#line 645 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_comma( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 128:
+
+/* Line 1806 of yacc.c  */
+#line 650 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 132:
+
+/* Line 1806 of yacc.c  */
+#line 659 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (1)].sn); }
+    break;
+
+  case 138:
+
+/* Line 1806 of yacc.c  */
+#line 666 "parser.yy"
+    {
+			Token fn;
+			fn.str = new std::string( "^?{}" ); // location undefined
+			(yyval.sn) = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( (yyvsp[(2) - (6)].en) )->set_last( (yyvsp[(4) - (6)].en) ) ) ) ) );
+		}
+    break;
+
+  case 139:
+
+/* Line 1806 of yacc.c  */
+#line 676 "parser.yy"
+    {
+			(yyval.sn) = (yyvsp[(4) - (4)].sn)->add_label( (yyvsp[(1) - (4)].tok) );
+		}
+    break;
+
+  case 140:
+
+/* Line 1806 of yacc.c  */
+#line 683 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_compound( (StatementNode *)0 ) ); }
+    break;
+
+  case 141:
+
+/* Line 1806 of yacc.c  */
+#line 690 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_compound( (yyvsp[(5) - (7)].sn) ) ); }
+    break;
+
+  case 143:
+
+/* Line 1806 of yacc.c  */
+#line 696 "parser.yy"
+    { if ( (yyvsp[(1) - (3)].sn) != 0 ) { (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ); (yyval.sn) = (yyvsp[(1) - (3)].sn); } }
+    break;
+
+  case 144:
+
+/* Line 1806 of yacc.c  */
+#line 701 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
+    break;
+
+  case 145:
+
+/* Line 1806 of yacc.c  */
+#line 703 "parser.yy"
+    {	// mark all fields in list
+			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+				iter->set_extension( true );
+			(yyval.sn) = new StatementNode( (yyvsp[(2) - (2)].decl) );
+		}
+    break;
+
+  case 146:
+
+/* Line 1806 of yacc.c  */
+#line 709 "parser.yy"
+    { (yyval.sn) = new StatementNode( (yyvsp[(1) - (1)].decl) ); }
+    break;
+
+  case 149:
+
+/* Line 1806 of yacc.c  */
+#line 716 "parser.yy"
+    { if ( (yyvsp[(1) - (2)].sn) != 0 ) { (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) ); (yyval.sn) = (yyvsp[(1) - (2)].sn); } }
+    break;
+
+  case 150:
+
+/* Line 1806 of yacc.c  */
+#line 721 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_expr( (yyvsp[(1) - (2)].en) ) ); }
+    break;
+
+  case 151:
+
+/* Line 1806 of yacc.c  */
+#line 727 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn), nullptr ) ); }
+    break;
+
+  case 152:
+
+/* Line 1806 of yacc.c  */
+#line 729 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_if( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].sn), (yyvsp[(7) - (7)].sn) ) ); }
+    break;
+
+  case 153:
+
+/* Line 1806 of yacc.c  */
+#line 731 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
+    break;
+
+  case 154:
+
+/* Line 1806 of yacc.c  */
+#line 733 "parser.yy"
+    {
+			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
+			// The semantics of the declaration list is changed to include associated initialization, which is performed
+			// *before* the transfer to the appropriate case clause by hoisting the declarations into a compound
+			// statement around the switch.  Statements after the initial declaration list can never be executed, and
+			// therefore, are removed from the grammar even though C allows it. The change also applies to choose
+			// statement.
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+		}
+    break;
+
+  case 155:
+
+/* Line 1806 of yacc.c  */
+#line 743 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_switch( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
+    break;
+
+  case 156:
+
+/* Line 1806 of yacc.c  */
+#line 745 "parser.yy"
+    {
+			StatementNode *sw = new StatementNode( build_switch( (yyvsp[(3) - (9)].en), (yyvsp[(8) - (9)].sn) ) );
+			(yyval.sn) = (yyvsp[(7) - (9)].decl) != 0 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( (yyvsp[(7) - (9)].decl) ))->set_last( sw )) ) ) : sw;
+		}
+    break;
+
+  case 157:
+
+/* Line 1806 of yacc.c  */
+#line 755 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+    break;
+
+  case 158:
+
+/* Line 1806 of yacc.c  */
+#line 757 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 160:
+
+/* Line 1806 of yacc.c  */
+#line 762 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_case( (yyvsp[(1) - (1)].en) ) ); }
+    break;
+
+  case 161:
+
+/* Line 1806 of yacc.c  */
+#line 764 "parser.yy"
+    { (yyval.sn) = (StatementNode *)((yyvsp[(1) - (3)].sn)->set_last( new StatementNode( build_case( (yyvsp[(3) - (3)].en) ) ) ) ); }
+    break;
+
+  case 162:
+
+/* Line 1806 of yacc.c  */
+#line 768 "parser.yy"
+    { (yyval.sn) = (yyvsp[(2) - (3)].sn); }
+    break;
+
+  case 163:
+
+/* Line 1806 of yacc.c  */
+#line 769 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_default() ); }
+    break;
+
+  case 165:
+
+/* Line 1806 of yacc.c  */
+#line 775 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (2)].sn)->set_last( (yyvsp[(2) - (2)].sn) )); }
+    break;
+
+  case 166:
+
+/* Line 1806 of yacc.c  */
+#line 779 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
+    break;
+
+  case 167:
+
+/* Line 1806 of yacc.c  */
+#line 784 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 169:
+
+/* Line 1806 of yacc.c  */
+#line 790 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(2) - (2)].sn) ) ) ); }
+    break;
+
+  case 170:
+
+/* Line 1806 of yacc.c  */
+#line 792 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( new StatementNode( build_compound( (yyvsp[(3) - (3)].sn) ) ) ) ) ); }
+    break;
+
+  case 171:
+
+/* Line 1806 of yacc.c  */
+#line 797 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 173:
+
+/* Line 1806 of yacc.c  */
+#line 803 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (2)].sn)->append_last_case( (yyvsp[(2) - (2)].sn) ); }
+    break;
+
+  case 174:
+
+/* Line 1806 of yacc.c  */
+#line 805 "parser.yy"
+    { (yyval.sn) = (yyvsp[(1) - (3)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(2) - (3)].sn)->set_last( (yyvsp[(3) - (3)].sn) ) ) ) ); }
+    break;
+
+  case 175:
+
+/* Line 1806 of yacc.c  */
+#line 807 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (3)].sn)->set_last( (yyvsp[(2) - (3)].sn)->append_last_case( (yyvsp[(3) - (3)].sn) ))); }
+    break;
+
+  case 176:
+
+/* Line 1806 of yacc.c  */
+#line 809 "parser.yy"
+    { (yyval.sn) = (StatementNode *)( (yyvsp[(1) - (4)].sn)->set_last( (yyvsp[(2) - (4)].sn)->append_last_case( new StatementNode( build_compound( (StatementNode *)(yyvsp[(3) - (4)].sn)->set_last( (yyvsp[(4) - (4)].sn) ) ) ) ) ) ); }
+    break;
+
+  case 177:
+
+/* Line 1806 of yacc.c  */
+#line 814 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
+    break;
+
+  case 179:
+
+/* Line 1806 of yacc.c  */
+#line 820 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 180:
+
+/* Line 1806 of yacc.c  */
+#line 822 "parser.yy"
+    { (yyval.sn) = 0; }
+    break;
+
+  case 181:
+
+/* Line 1806 of yacc.c  */
+#line 827 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(3) - (5)].en), (yyvsp[(5) - (5)].sn) ) ); }
+    break;
+
+  case 182:
+
+/* Line 1806 of yacc.c  */
+#line 829 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_while( (yyvsp[(5) - (7)].en), (yyvsp[(2) - (7)].sn), true ) ); }
+    break;
+
+  case 183:
+
+/* Line 1806 of yacc.c  */
+#line 831 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_for( (yyvsp[(4) - (6)].fctl), (yyvsp[(6) - (6)].sn) ) ); }
+    break;
+
+  case 184:
+
+/* Line 1806 of yacc.c  */
+#line 836 "parser.yy"
+    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (6)].en), (yyvsp[(4) - (6)].en), (yyvsp[(6) - (6)].en) ); }
+    break;
+
+  case 185:
+
+/* Line 1806 of yacc.c  */
+#line 838 "parser.yy"
+    { (yyval.fctl) = new ForCtl( (yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en) ); }
+    break;
+
+  case 186:
+
+/* Line 1806 of yacc.c  */
+#line 843 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Goto ) ); }
+    break;
+
+  case 187:
+
+/* Line 1806 of yacc.c  */
+#line 847 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_computedgoto( (yyvsp[(3) - (4)].en) ) ); }
+    break;
+
+  case 188:
+
+/* Line 1806 of yacc.c  */
+#line 850 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Continue ) ); }
+    break;
+
+  case 189:
+
+/* Line 1806 of yacc.c  */
+#line 854 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Continue ) ); }
+    break;
+
+  case 190:
+
+/* Line 1806 of yacc.c  */
+#line 857 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( BranchStmt::Break ) ); }
+    break;
+
+  case 191:
+
+/* Line 1806 of yacc.c  */
+#line 861 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_branch( (yyvsp[(2) - (3)].tok), BranchStmt::Break ) ); }
+    break;
+
+  case 192:
+
+/* Line 1806 of yacc.c  */
+#line 863 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_return( (yyvsp[(2) - (3)].en) ) ); }
+    break;
+
+  case 193:
+
+/* Line 1806 of yacc.c  */
+#line 865 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
+    break;
+
+  case 194:
+
+/* Line 1806 of yacc.c  */
+#line 867 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (3)].en) ) ); }
+    break;
+
+  case 195:
+
+/* Line 1806 of yacc.c  */
+#line 869 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_throw( (yyvsp[(2) - (5)].en) ) ); }
+    break;
+
+  case 196:
+
+/* Line 1806 of yacc.c  */
+#line 874 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), (yyvsp[(3) - (3)].sn), 0 ) ); }
+    break;
+
+  case 197:
+
+/* Line 1806 of yacc.c  */
+#line 876 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (3)].sn), 0, (yyvsp[(3) - (3)].sn) ) ); }
+    break;
+
+  case 198:
+
+/* Line 1806 of yacc.c  */
+#line 878 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_try( (yyvsp[(2) - (4)].sn), (yyvsp[(3) - (4)].sn), (yyvsp[(4) - (4)].sn) ) ); }
+    break;
+
+  case 200:
+
+/* Line 1806 of yacc.c  */
+#line 885 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
+    break;
+
+  case 201:
+
+/* Line 1806 of yacc.c  */
+#line 887 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
+    break;
+
+  case 202:
+
+/* Line 1806 of yacc.c  */
+#line 889 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( 0, (yyvsp[(5) - (5)].sn), true ) ); }
+    break;
+
+  case 203:
+
+/* Line 1806 of yacc.c  */
+#line 891 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (6)].sn)->set_last( new StatementNode( build_catch( 0, (yyvsp[(6) - (6)].sn), true ) ) ); }
+    break;
+
+  case 204:
+
+/* Line 1806 of yacc.c  */
+#line 896 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
+    break;
+
+  case 205:
+
+/* Line 1806 of yacc.c  */
+#line 898 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
+    break;
+
+  case 206:
+
+/* Line 1806 of yacc.c  */
+#line 900 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_catch( (yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn) ) ); }
+    break;
+
+  case 207:
+
+/* Line 1806 of yacc.c  */
+#line 902 "parser.yy"
+    { (yyval.sn) = (StatementNode *)(yyvsp[(1) - (10)].sn)->set_last( new StatementNode( build_catch( (yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn) ) ) ); }
+    break;
+
+  case 208:
+
+/* Line 1806 of yacc.c  */
+#line 907 "parser.yy"
+    {
+			(yyval.sn) = new StatementNode( build_finally( (yyvsp[(2) - (2)].sn) ) );
+		}
+    break;
+
+  case 210:
+
+/* Line 1806 of yacc.c  */
+#line 920 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 211:
+
+/* Line 1806 of yacc.c  */
+#line 925 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 212:
+
+/* Line 1806 of yacc.c  */
+#line 927 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) );
+		}
+    break;
+
+  case 214:
+
+/* Line 1806 of yacc.c  */
+#line 936 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (6)].flag), (yyvsp[(4) - (6)].constant), 0 ) ); }
+    break;
+
+  case 215:
+
+/* Line 1806 of yacc.c  */
+#line 938 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (8)].flag), (yyvsp[(4) - (8)].constant), (yyvsp[(6) - (8)].en) ) ); }
+    break;
+
+  case 216:
+
+/* Line 1806 of yacc.c  */
+#line 940 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (10)].flag), (yyvsp[(4) - (10)].constant), (yyvsp[(6) - (10)].en), (yyvsp[(8) - (10)].en) ) ); }
+    break;
+
+  case 217:
+
+/* Line 1806 of yacc.c  */
+#line 942 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (12)].flag), (yyvsp[(4) - (12)].constant), (yyvsp[(6) - (12)].en), (yyvsp[(8) - (12)].en), (yyvsp[(10) - (12)].en) ) ); }
+    break;
+
+  case 218:
+
+/* Line 1806 of yacc.c  */
+#line 944 "parser.yy"
+    { (yyval.sn) = new StatementNode( build_asmstmt( (yyvsp[(2) - (14)].flag), (yyvsp[(5) - (14)].constant), 0, (yyvsp[(8) - (14)].en), (yyvsp[(10) - (14)].en), (yyvsp[(12) - (14)].label) ) ); }
+    break;
+
+  case 219:
+
+/* Line 1806 of yacc.c  */
+#line 949 "parser.yy"
+    { (yyval.flag) = false; }
+    break;
+
+  case 220:
+
+/* Line 1806 of yacc.c  */
+#line 951 "parser.yy"
+    { (yyval.flag) = true; }
+    break;
+
+  case 221:
+
+/* Line 1806 of yacc.c  */
+#line 956 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 224:
+
+/* Line 1806 of yacc.c  */
+#line 963 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) ); }
+    break;
+
+  case 225:
+
+/* Line 1806 of yacc.c  */
+#line 968 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_asmexpr( 0, (yyvsp[(1) - (4)].constant), (yyvsp[(3) - (4)].en) ) ); }
+    break;
+
+  case 226:
+
+/* Line 1806 of yacc.c  */
+#line 970 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_asmexpr( (yyvsp[(2) - (7)].en), (yyvsp[(4) - (7)].constant), (yyvsp[(6) - (7)].en) ) ); }
+    break;
+
+  case 227:
+
+/* Line 1806 of yacc.c  */
+#line 975 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 228:
+
+/* Line 1806 of yacc.c  */
+#line 977 "parser.yy"
+    { (yyval.en) = new ExpressionNode( (yyvsp[(1) - (1)].constant) ); }
+    break;
+
+  case 229:
+
+/* Line 1806 of yacc.c  */
+#line 979 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)(yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( (yyvsp[(3) - (3)].constant) ) ); }
+    break;
+
+  case 230:
+
+/* Line 1806 of yacc.c  */
+#line 984 "parser.yy"
+    {
+			(yyval.label) = new LabelNode(); (yyval.label)->labels.push_back( *(yyvsp[(1) - (1)].tok) );
+			delete (yyvsp[(1) - (1)].tok);									// allocated by lexer
+		}
+    break;
+
+  case 231:
+
+/* Line 1806 of yacc.c  */
+#line 989 "parser.yy"
+    {
+			(yyval.label) = (yyvsp[(1) - (3)].label); (yyvsp[(1) - (3)].label)->labels.push_back( *(yyvsp[(3) - (3)].tok) );
+			delete (yyvsp[(3) - (3)].tok);									// allocated by lexer
+		}
+    break;
+
+  case 232:
+
+/* Line 1806 of yacc.c  */
+#line 999 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 235:
+
+/* Line 1806 of yacc.c  */
+#line 1006 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 236:
+
+/* Line 1806 of yacc.c  */
+#line 1011 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 239:
+
+/* Line 1806 of yacc.c  */
+#line 1018 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 244:
+
+/* Line 1806 of yacc.c  */
+#line 1032 "parser.yy"
+    {}
+    break;
+
+  case 245:
+
+/* Line 1806 of yacc.c  */
+#line 1033 "parser.yy"
+    {}
+    break;
+
+  case 253:
+
+/* Line 1806 of yacc.c  */
+#line 1062 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addInitializer( (yyvsp[(2) - (2)].in) );
+		}
+    break;
+
+  case 254:
+
+/* Line 1806 of yacc.c  */
+#line 1069 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addInitializer( (yyvsp[(3) - (3)].in) );;
+		}
+    break;
+
+  case 255:
+
+/* Line 1806 of yacc.c  */
+#line 1074 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneType( (yyvsp[(5) - (6)].tok) )->addInitializer( (yyvsp[(6) - (6)].in) ) );
+		}
+    break;
+
+  case 256:
+
+/* Line 1806 of yacc.c  */
+#line 1084 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+		}
+    break;
+
+  case 257:
+
+/* Line 1806 of yacc.c  */
+#line 1089 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
+			(yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) );
+		}
+    break;
+
+  case 258:
+
+/* Line 1806 of yacc.c  */
+#line 1094 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
+			(yyval.decl) = (yyvsp[(2) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addName( (yyvsp[(3) - (4)].tok) );
+		}
+    break;
+
+  case 259:
+
+/* Line 1806 of yacc.c  */
+#line 1102 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
+  case 260:
+
+/* Line 1806 of yacc.c  */
+#line 1107 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 261:
+
+/* Line 1806 of yacc.c  */
+#line 1112 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 262:
+
+/* Line 1806 of yacc.c  */
+#line 1117 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(2) - (3)].decl) );
+		}
+    break;
+
+  case 263:
+
+/* Line 1806 of yacc.c  */
+#line 1122 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+		}
+    break;
+
+  case 264:
+
+/* Line 1806 of yacc.c  */
+#line 1130 "parser.yy"
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(3) - (8)].tok), DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (8)].decl), 0, true );
+		}
+    break;
+
+  case 265:
+
+/* Line 1806 of yacc.c  */
+#line 1153 "parser.yy"
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
+		}
+    break;
+
+  case 266:
+
+/* Line 1806 of yacc.c  */
+#line 1157 "parser.yy"
+    {
+			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
+		}
+    break;
+
+  case 267:
+
+/* Line 1806 of yacc.c  */
+#line 1164 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
+    break;
+
+  case 268:
+
+/* Line 1806 of yacc.c  */
+#line 1168 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
+    break;
+
+  case 269:
+
+/* Line 1806 of yacc.c  */
+#line 1173 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+		}
+    break;
+
+  case 270:
+
+/* Line 1806 of yacc.c  */
+#line 1178 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addTypedef();
+		}
+    break;
+
+  case 271:
+
+/* Line 1806 of yacc.c  */
+#line 1183 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+		}
+    break;
+
+  case 272:
+
+/* Line 1806 of yacc.c  */
+#line 1194 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(2) - (3)].decl) )->addTypedef();
+		}
+    break;
+
+  case 273:
+
+/* Line 1806 of yacc.c  */
+#line 1199 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) )->addTypedef() );
+		}
+    break;
+
+  case 274:
+
+/* Line 1806 of yacc.c  */
+#line 1204 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addType( (yyvsp[(3) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef();
+		}
+    break;
+
+  case 275:
+
+/* Line 1806 of yacc.c  */
+#line 1209 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(3) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addTypedef();
+		}
+    break;
+
+  case 276:
+
+/* Line 1806 of yacc.c  */
+#line 1214 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::TD );
+			(yyval.decl) = (yyvsp[(4) - (4)].decl)->addQualifiers( (yyvsp[(1) - (4)].decl) )->addTypedef()->addType( (yyvsp[(1) - (4)].decl) );
+		}
+    break;
+
+  case 277:
+
+/* Line 1806 of yacc.c  */
+#line 1223 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (4)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
+		}
+    break;
+
+  case 278:
+
+/* Line 1806 of yacc.c  */
+#line 1228 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (7)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newName( 0 ); // XXX
+		}
+    break;
+
+  case 283:
+
+/* Line 1806 of yacc.c  */
+#line 1245 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = ( (yyvsp[(2) - (4)].decl)->addType( (yyvsp[(1) - (4)].decl) ))->addInitializer( (yyvsp[(4) - (4)].in) );
+		}
+    break;
+
+  case 284:
+
+/* Line 1806 of yacc.c  */
+#line 1250 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (6)].decl)->appendList( (yyvsp[(1) - (6)].decl)->cloneBaseType( (yyvsp[(4) - (6)].decl)->addInitializer( (yyvsp[(6) - (6)].in) ) ) );
+		}
+    break;
+
+  case 293:
+
+/* Line 1806 of yacc.c  */
+#line 1272 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 296:
+
+/* Line 1806 of yacc.c  */
+#line 1284 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 299:
+
+/* Line 1806 of yacc.c  */
+#line 1295 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
+    break;
+
+  case 300:
+
+/* Line 1806 of yacc.c  */
+#line 1297 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
+    break;
+
+  case 301:
+
+/* Line 1806 of yacc.c  */
+#line 1299 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
+    break;
+
+  case 302:
+
+/* Line 1806 of yacc.c  */
+#line 1301 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
+    break;
+
+  case 303:
+
+/* Line 1806 of yacc.c  */
+#line 1303 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
+    break;
+
+  case 304:
+
+/* Line 1806 of yacc.c  */
+#line 1305 "parser.yy"
+    {
+			typedefTable.enterScope();
+		}
+    break;
+
+  case 305:
+
+/* Line 1806 of yacc.c  */
+#line 1309 "parser.yy"
+    {
+			typedefTable.leaveScope();
+			(yyval.decl) = DeclarationNode::newForall( (yyvsp[(4) - (5)].decl) );
+		}
+    break;
+
+  case 307:
+
+/* Line 1806 of yacc.c  */
+#line 1318 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 308:
+
+/* Line 1806 of yacc.c  */
+#line 1320 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 310:
+
+/* Line 1806 of yacc.c  */
+#line 1331 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 311:
+
+/* Line 1806 of yacc.c  */
+#line 1336 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
+    break;
+
+  case 312:
+
+/* Line 1806 of yacc.c  */
+#line 1338 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
+    break;
+
+  case 313:
+
+/* Line 1806 of yacc.c  */
+#line 1340 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
+    break;
+
+  case 314:
+
+/* Line 1806 of yacc.c  */
+#line 1342 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
+    break;
+
+  case 315:
+
+/* Line 1806 of yacc.c  */
+#line 1345 "parser.yy"
+    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isInline = true; }
+    break;
+
+  case 316:
+
+/* Line 1806 of yacc.c  */
+#line 1347 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
+    break;
+
+  case 317:
+
+/* Line 1806 of yacc.c  */
+#line 1350 "parser.yy"
+    { (yyval.decl) = new DeclarationNode; (yyval.decl)->isNoreturn = true; }
+    break;
+
+  case 318:
+
+/* Line 1806 of yacc.c  */
+#line 1352 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Threadlocal ); }
+    break;
+
+  case 319:
+
+/* Line 1806 of yacc.c  */
+#line 1357 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
+    break;
+
+  case 320:
+
+/* Line 1806 of yacc.c  */
+#line 1359 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
+    break;
+
+  case 321:
+
+/* Line 1806 of yacc.c  */
+#line 1361 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
+    break;
+
+  case 322:
+
+/* Line 1806 of yacc.c  */
+#line 1363 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
+    break;
+
+  case 323:
+
+/* Line 1806 of yacc.c  */
+#line 1365 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Long ); }
+    break;
+
+  case 324:
+
+/* Line 1806 of yacc.c  */
+#line 1367 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newLength( DeclarationNode::Short ); }
+    break;
+
+  case 325:
+
+/* Line 1806 of yacc.c  */
+#line 1369 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Signed ); }
+    break;
+
+  case 326:
+
+/* Line 1806 of yacc.c  */
+#line 1371 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newSignedNess( DeclarationNode::Unsigned ); }
+    break;
+
+  case 327:
+
+/* Line 1806 of yacc.c  */
+#line 1373 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
+    break;
+
+  case 328:
+
+/* Line 1806 of yacc.c  */
+#line 1375 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
+    break;
+
+  case 329:
+
+/* Line 1806 of yacc.c  */
+#line 1377 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Complex ); }
+    break;
+
+  case 330:
+
+/* Line 1806 of yacc.c  */
+#line 1379 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newComplexType( DeclarationNode::Imaginary ); }
+    break;
+
+  case 331:
+
+/* Line 1806 of yacc.c  */
+#line 1381 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBuiltinType( DeclarationNode::Valist ); }
+    break;
+
+  case 333:
+
+/* Line 1806 of yacc.c  */
+#line 1388 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 334:
+
+/* Line 1806 of yacc.c  */
+#line 1390 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 335:
+
+/* Line 1806 of yacc.c  */
+#line 1392 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 336:
+
+/* Line 1806 of yacc.c  */
+#line 1394 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 338:
+
+/* Line 1806 of yacc.c  */
+#line 1400 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 340:
+
+/* Line 1806 of yacc.c  */
+#line 1407 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 341:
+
+/* Line 1806 of yacc.c  */
+#line 1409 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 342:
+
+/* Line 1806 of yacc.c  */
+#line 1411 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 343:
+
+/* Line 1806 of yacc.c  */
+#line 1416 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
+    break;
+
+  case 344:
+
+/* Line 1806 of yacc.c  */
+#line 1418 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 345:
+
+/* Line 1806 of yacc.c  */
+#line 1420 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 346:
+
+/* Line 1806 of yacc.c  */
+#line 1422 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 348:
+
+/* Line 1806 of yacc.c  */
+#line 1428 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 349:
+
+/* Line 1806 of yacc.c  */
+#line 1430 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 350:
+
+/* Line 1806 of yacc.c  */
+#line 1432 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 352:
+
+/* Line 1806 of yacc.c  */
+#line 1438 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 353:
+
+/* Line 1806 of yacc.c  */
+#line 1440 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 355:
+
+/* Line 1806 of yacc.c  */
+#line 1446 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 356:
+
+/* Line 1806 of yacc.c  */
+#line 1448 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 357:
+
+/* Line 1806 of yacc.c  */
+#line 1450 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 358:
+
+/* Line 1806 of yacc.c  */
+#line 1455 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 359:
+
+/* Line 1806 of yacc.c  */
+#line 1457 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 360:
+
+/* Line 1806 of yacc.c  */
+#line 1459 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 363:
+
+/* Line 1806 of yacc.c  */
+#line 1469 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, (yyvsp[(3) - (4)].decl), true ); }
+    break;
+
+  case 364:
+
+/* Line 1806 of yacc.c  */
+#line 1471 "parser.yy"
+    {
+			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
+			(yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, false );
+		}
+    break;
+
+  case 365:
+
+/* Line 1806 of yacc.c  */
+#line 1476 "parser.yy"
+    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
+    break;
+
+  case 366:
+
+/* Line 1806 of yacc.c  */
+#line 1478 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (6)].aggKey), (yyvsp[(2) - (6)].tok), 0, (yyvsp[(5) - (6)].decl), true ); }
+    break;
+
+  case 367:
+
+/* Line 1806 of yacc.c  */
+#line 1480 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), 0, (yyvsp[(3) - (7)].en), (yyvsp[(6) - (7)].decl), false ); }
+    break;
+
+  case 368:
+
+/* Line 1806 of yacc.c  */
+#line 1482 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 369:
+
+/* Line 1806 of yacc.c  */
+#line 1487 "parser.yy"
+    { (yyval.aggKey) = DeclarationNode::Struct; }
+    break;
+
+  case 370:
+
+/* Line 1806 of yacc.c  */
+#line 1489 "parser.yy"
+    { (yyval.aggKey) = DeclarationNode::Union; }
+    break;
+
+  case 371:
+
+/* Line 1806 of yacc.c  */
+#line 1494 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 372:
+
+/* Line 1806 of yacc.c  */
+#line 1496 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 374:
+
+/* Line 1806 of yacc.c  */
+#line 1502 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl)->set_extension( true ); }
+    break;
+
+  case 376:
+
+/* Line 1806 of yacc.c  */
+#line 1505 "parser.yy"
+    {	// mark all fields in list
+			for ( DeclarationNode *iter = (yyvsp[(2) - (3)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+				iter->set_extension( true );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl);
+		}
+    break;
+
+  case 378:
+
+/* Line 1806 of yacc.c  */
+#line 1515 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
+    break;
+
+  case 379:
+
+/* Line 1806 of yacc.c  */
+#line 1517 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
+    break;
+
+  case 380:
+
+/* Line 1806 of yacc.c  */
+#line 1519 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
+    break;
+
+  case 381:
+
+/* Line 1806 of yacc.c  */
+#line 1524 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 382:
+
+/* Line 1806 of yacc.c  */
+#line 1526 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
+    break;
+
+  case 383:
+
+/* Line 1806 of yacc.c  */
+#line 1531 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
+    break;
+
+  case 384:
+
+/* Line 1806 of yacc.c  */
+#line 1533 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
+    break;
+
+  case 385:
+
+/* Line 1806 of yacc.c  */
+#line 1536 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 386:
+
+/* Line 1806 of yacc.c  */
+#line 1539 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 388:
+
+/* Line 1806 of yacc.c  */
+#line 1545 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 389:
+
+/* Line 1806 of yacc.c  */
+#line 1547 "parser.yy"
+    { (yyval.en) = (yyvsp[(1) - (1)].en); }
+    break;
+
+  case 390:
+
+/* Line 1806 of yacc.c  */
+#line 1552 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+  case 392:
+
+/* Line 1806 of yacc.c  */
+#line 1561 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
+    break;
+
+  case 393:
+
+/* Line 1806 of yacc.c  */
+#line 1563 "parser.yy"
+    {
+			typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) );
+			(yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 );
+		}
+    break;
+
+  case 394:
+
+/* Line 1806 of yacc.c  */
+#line 1568 "parser.yy"
+    { typedefTable.makeTypedef( *(yyvsp[(2) - (2)].tok) ); }
+    break;
+
+  case 395:
+
+/* Line 1806 of yacc.c  */
+#line 1570 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (7)].tok), (yyvsp[(5) - (7)].decl) ); }
+    break;
+
+  case 396:
+
+/* Line 1806 of yacc.c  */
+#line 1575 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
+    break;
+
+  case 397:
+
+/* Line 1806 of yacc.c  */
+#line 1577 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
+    break;
+
+  case 398:
+
+/* Line 1806 of yacc.c  */
+#line 1582 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 399:
+
+/* Line 1806 of yacc.c  */
+#line 1584 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+  case 400:
+
+/* Line 1806 of yacc.c  */
+#line 1591 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 404:
+
+/* Line 1806 of yacc.c  */
+#line 1599 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 405:
+
+/* Line 1806 of yacc.c  */
+#line 1601 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 406:
+
+/* Line 1806 of yacc.c  */
+#line 1603 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 408:
+
+/* Line 1806 of yacc.c  */
+#line 1611 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 409:
+
+/* Line 1806 of yacc.c  */
+#line 1613 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 410:
+
+/* Line 1806 of yacc.c  */
+#line 1615 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
+    break;
+
+  case 412:
+
+/* Line 1806 of yacc.c  */
+#line 1621 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 413:
+
+/* Line 1806 of yacc.c  */
+#line 1626 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 416:
+
+/* Line 1806 of yacc.c  */
+#line 1633 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
+    break;
+
+  case 419:
+
+/* Line 1806 of yacc.c  */
+#line 1640 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 420:
+
+/* Line 1806 of yacc.c  */
+#line 1642 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
+    break;
+
+  case 422:
+
+/* Line 1806 of yacc.c  */
+#line 1651 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 423:
+
+/* Line 1806 of yacc.c  */
+#line 1654 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
+    break;
+
+  case 424:
+
+/* Line 1806 of yacc.c  */
+#line 1656 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
+    break;
+
+  case 429:
+
+/* Line 1806 of yacc.c  */
+#line 1666 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 431:
+
+/* Line 1806 of yacc.c  */
+#line 1672 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+		}
+    break;
+
+  case 432:
+
+/* Line 1806 of yacc.c  */
+#line 1677 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addType( (yyvsp[(1) - (3)].decl) )->addInitializer( new InitializerNode( (yyvsp[(3) - (3)].en) ) );
+		}
+    break;
+
+  case 434:
+
+/* Line 1806 of yacc.c  */
+#line 1686 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 435:
+
+/* Line 1806 of yacc.c  */
+#line 1695 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
+    break;
+
+  case 436:
+
+/* Line 1806 of yacc.c  */
+#line 1697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
+    break;
+
+  case 448:
+
+/* Line 1806 of yacc.c  */
+#line 1722 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 452:
+
+/* Line 1806 of yacc.c  */
+#line 1730 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 453:
+
+/* Line 1806 of yacc.c  */
+#line 1735 "parser.yy"
+    { (yyval.in) = 0; }
+    break;
+
+  case 454:
+
+/* Line 1806 of yacc.c  */
+#line 1737 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in); }
+    break;
+
+  case 455:
+
+/* Line 1806 of yacc.c  */
+#line 1739 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_maybeConstructed( false ); }
+    break;
+
+  case 456:
+
+/* Line 1806 of yacc.c  */
+#line 1743 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(1) - (1)].en) ); }
+    break;
+
+  case 457:
+
+/* Line 1806 of yacc.c  */
+#line 1744 "parser.yy"
+    { (yyval.in) = new InitializerNode( (yyvsp[(2) - (4)].in), true ); }
+    break;
+
+  case 458:
+
+/* Line 1806 of yacc.c  */
+#line 1749 "parser.yy"
+    { (yyval.in) = 0; }
+    break;
+
+  case 460:
+
+/* Line 1806 of yacc.c  */
+#line 1751 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
+    break;
+
+  case 461:
+
+/* Line 1806 of yacc.c  */
+#line 1752 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_last( (yyvsp[(3) - (3)].in) ) ); }
+    break;
+
+  case 462:
+
+/* Line 1806 of yacc.c  */
+#line 1754 "parser.yy"
+    { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_last( (yyvsp[(4) - (4)].in)->set_designators( (yyvsp[(3) - (4)].en) ) ) ); }
+    break;
+
+  case 464:
+
+/* Line 1806 of yacc.c  */
+#line 1770 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(1) - (2)].tok) ) ); }
+    break;
+
+  case 466:
+
+/* Line 1806 of yacc.c  */
+#line 1776 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (2)].en)->set_last( (yyvsp[(2) - (2)].en) ) ); }
+    break;
+
+  case 467:
+
+/* Line 1806 of yacc.c  */
+#line 1782 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_varref( (yyvsp[(2) - (2)].tok) ) ); }
+    break;
+
+  case 468:
+
+/* Line 1806 of yacc.c  */
+#line 1785 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
+    break;
+
+  case 469:
+
+/* Line 1806 of yacc.c  */
+#line 1787 "parser.yy"
+    { (yyval.en) = (yyvsp[(3) - (5)].en); }
+    break;
+
+  case 470:
+
+/* Line 1806 of yacc.c  */
+#line 1789 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en) ) ); }
+    break;
+
+  case 471:
+
+/* Line 1806 of yacc.c  */
+#line 1791 "parser.yy"
+    { (yyval.en) = (yyvsp[(4) - (6)].en); }
+    break;
+
+  case 473:
+
+/* Line 1806 of yacc.c  */
+#line 1815 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 474:
+
+/* Line 1806 of yacc.c  */
+#line 1817 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 475:
+
+/* Line 1806 of yacc.c  */
+#line 1819 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 477:
+
+/* Line 1806 of yacc.c  */
+#line 1825 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 478:
+
+/* Line 1806 of yacc.c  */
+#line 1827 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 479:
+
+/* Line 1806 of yacc.c  */
+#line 1832 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
+    break;
+
+  case 481:
+
+/* Line 1806 of yacc.c  */
+#line 1838 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 482:
+
+/* Line 1806 of yacc.c  */
+#line 1843 "parser.yy"
+    { typedefTable.addToEnclosingScope( *(yyvsp[(2) - (2)].tok), TypedefTable::TD ); }
+    break;
+
+  case 483:
+
+/* Line 1806 of yacc.c  */
+#line 1845 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 485:
+
+/* Line 1806 of yacc.c  */
+#line 1851 "parser.yy"
+    { (yyval.tclass) = DeclarationNode::Otype; }
+    break;
+
+  case 486:
+
+/* Line 1806 of yacc.c  */
+#line 1853 "parser.yy"
+    { (yyval.tclass) = DeclarationNode::Ftype; }
+    break;
+
+  case 487:
+
+/* Line 1806 of yacc.c  */
+#line 1855 "parser.yy"
+    { (yyval.tclass) = DeclarationNode::Dtype; }
+    break;
+
+  case 488:
+
+/* Line 1806 of yacc.c  */
+#line 1860 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 489:
+
+/* Line 1806 of yacc.c  */
+#line 1862 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl) != 0 ? (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ) : (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 490:
+
+/* Line 1806 of yacc.c  */
+#line 1867 "parser.yy"
+    {
+			typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
+			(yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
+		}
+    break;
+
+  case 491:
+
+/* Line 1806 of yacc.c  */
+#line 1872 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
+    break;
+
+  case 492:
+
+/* Line 1806 of yacc.c  */
+#line 1874 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 493:
+
+/* Line 1806 of yacc.c  */
+#line 1879 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_typevalue( (yyvsp[(1) - (1)].decl) ) ); }
+    break;
+
+  case 495:
+
+/* Line 1806 of yacc.c  */
+#line 1882 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( new ExpressionNode( build_typevalue( (yyvsp[(3) - (3)].decl) ) ) ) ); }
+    break;
+
+  case 496:
+
+/* Line 1806 of yacc.c  */
+#line 1884 "parser.yy"
+    { (yyval.en) = (ExpressionNode *)( (yyvsp[(1) - (3)].en)->set_last( (yyvsp[(3) - (3)].en) )); }
+    break;
+
+  case 497:
+
+/* Line 1806 of yacc.c  */
+#line 1889 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
+    break;
+
+  case 498:
+
+/* Line 1806 of yacc.c  */
+#line 1891 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 499:
+
+/* Line 1806 of yacc.c  */
+#line 1893 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 500:
+
+/* Line 1806 of yacc.c  */
+#line 1898 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 501:
+
+/* Line 1806 of yacc.c  */
+#line 1900 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 502:
+
+/* Line 1806 of yacc.c  */
+#line 1905 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (1)].tok), TypedefTable::TD );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (1)].tok), 0 );
+		}
+    break;
+
+  case 503:
+
+/* Line 1806 of yacc.c  */
+#line 1910 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(1) - (6)].tok), TypedefTable::TG );
+			(yyval.decl) = DeclarationNode::newTypeDecl( (yyvsp[(1) - (6)].tok), (yyvsp[(4) - (6)].decl) );
+		}
+    break;
+
+  case 504:
+
+/* Line 1806 of yacc.c  */
+#line 1918 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
+		}
+    break;
+
+  case 505:
+
+/* Line 1806 of yacc.c  */
+#line 1923 "parser.yy"
+    {
+			typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
+			typedefTable.enterScope();
+		}
+    break;
+
+  case 506:
+
+/* Line 1806 of yacc.c  */
+#line 1928 "parser.yy"
+    {
+			typedefTable.leaveTrait();
+			typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
+			(yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
+		}
+    break;
+
+  case 508:
+
+/* Line 1806 of yacc.c  */
+#line 1938 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 511:
+
+/* Line 1806 of yacc.c  */
+#line 1948 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
+  case 512:
+
+/* Line 1806 of yacc.c  */
+#line 1953 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (1)].decl);
+		}
+    break;
+
+  case 513:
+
+/* Line 1806 of yacc.c  */
+#line 1958 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneType( (yyvsp[(5) - (5)].tok) ) );
+		}
+    break;
+
+  case 514:
+
+/* Line 1806 of yacc.c  */
+#line 1966 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) );
+		}
+    break;
+
+  case 515:
+
+/* Line 1806 of yacc.c  */
+#line 1971 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope2( TypedefTable::ID );
+			(yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(1) - (5)].decl)->cloneBaseType( (yyvsp[(5) - (5)].decl) ) );
+		}
+    break;
+
+  case 516:
+
+/* Line 1806 of yacc.c  */
+#line 1981 "parser.yy"
+    {}
+    break;
+
+  case 517:
+
+/* Line 1806 of yacc.c  */
+#line 1983 "parser.yy"
+    { parseTree = parseTree != nullptr ? parseTree->appendList( (yyvsp[(1) - (1)].decl) ) : (yyvsp[(1) - (1)].decl);	}
+    break;
+
+  case 519:
+
+/* Line 1806 of yacc.c  */
+#line 1989 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (3)].decl) != nullptr ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
+    break;
+
+  case 520:
+
+/* Line 1806 of yacc.c  */
+#line 1994 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 524:
+
+/* Line 1806 of yacc.c  */
+#line 2002 "parser.yy"
+    {}
+    break;
+
+  case 525:
+
+/* Line 1806 of yacc.c  */
+#line 2004 "parser.yy"
+    {
+			linkageStack.push( linkage );				// handle nested extern "C"/"Cforall"
+			linkage = LinkageSpec::fromString( *(yyvsp[(2) - (2)].tok) );
+		}
+    break;
+
+  case 526:
+
+/* Line 1806 of yacc.c  */
+#line 2009 "parser.yy"
+    {
+			linkage = linkageStack.top();
+			linkageStack.pop();
+			(yyval.decl) = (yyvsp[(5) - (6)].decl);
+		}
+    break;
+
+  case 527:
+
+/* Line 1806 of yacc.c  */
+#line 2015 "parser.yy"
+    {	// mark all fields in list
+			for ( DeclarationNode *iter = (yyvsp[(2) - (2)].decl); iter != nullptr; iter = (DeclarationNode *)iter->get_next() )
+				iter->set_extension( true );
+			(yyval.decl) = (yyvsp[(2) - (2)].decl);
+		}
+    break;
+
+  case 529:
+
+/* Line 1806 of yacc.c  */
+#line 2030 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
+		}
+    break;
+
+  case 530:
+
+/* Line 1806 of yacc.c  */
+#line 2036 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(1) - (4)].decl)->addOldDeclList( (yyvsp[(3) - (4)].decl) )->addFunctionBody( (yyvsp[(4) - (4)].sn) );
+		}
+    break;
+
+  case 531:
+
+/* Line 1806 of yacc.c  */
+#line 2045 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(1) - (2)].decl)->addFunctionBody( (yyvsp[(2) - (2)].sn) );
+		}
+    break;
+
+  case 532:
+
+/* Line 1806 of yacc.c  */
+#line 2051 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addType( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 533:
+
+/* Line 1806 of yacc.c  */
+#line 2057 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 534:
+
+/* Line 1806 of yacc.c  */
+#line 2063 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (3)].decl)->addFunctionBody( (yyvsp[(3) - (3)].sn) )->addQualifiers( (yyvsp[(1) - (3)].decl) );
+		}
+    break;
+
+  case 535:
+
+/* Line 1806 of yacc.c  */
+#line 2069 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(3) - (4)].decl)->addFunctionBody( (yyvsp[(4) - (4)].sn) )->addQualifiers( (yyvsp[(2) - (4)].decl) )->addQualifiers( (yyvsp[(1) - (4)].decl) );
+		}
+    break;
+
+  case 536:
+
+/* Line 1806 of yacc.c  */
+#line 2077 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addType( (yyvsp[(1) - (5)].decl) );
+		}
+    break;
+
+  case 537:
+
+/* Line 1806 of yacc.c  */
+#line 2083 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
+		}
+    break;
+
+  case 538:
+
+/* Line 1806 of yacc.c  */
+#line 2091 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(2) - (5)].decl)->addOldDeclList( (yyvsp[(4) - (5)].decl) )->addFunctionBody( (yyvsp[(5) - (5)].sn) )->addQualifiers( (yyvsp[(1) - (5)].decl) );
+		}
+    break;
+
+  case 539:
+
+/* Line 1806 of yacc.c  */
+#line 2097 "parser.yy"
+    {
+			typedefTable.addToEnclosingScope( TypedefTable::ID );
+			typedefTable.leaveScope();
+			(yyval.decl) = (yyvsp[(3) - (6)].decl)->addOldDeclList( (yyvsp[(5) - (6)].decl) )->addFunctionBody( (yyvsp[(6) - (6)].sn) )->addQualifiers( (yyvsp[(2) - (6)].decl) )->addQualifiers( (yyvsp[(1) - (6)].decl) );
+		}
+    break;
+
+  case 543:
+
+/* Line 1806 of yacc.c  */
+#line 2112 "parser.yy"
+    { (yyval.en) = new ExpressionNode( build_range( (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en) ) ); }
+    break;
+
+  case 545:
+
+/* Line 1806 of yacc.c  */
+#line 2117 "parser.yy"
+    { delete (yyvsp[(3) - (5)].str); }
+    break;
+
+  case 546:
+
+/* Line 1806 of yacc.c  */
+#line 2122 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 549:
+
+/* Line 1806 of yacc.c  */
+#line 2129 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 550:
+
+/* Line 1806 of yacc.c  */
+#line 2135 "parser.yy"
+    { (yyval.decl) = 0; }
+    break;
+
+  case 555:
+
+/* Line 1806 of yacc.c  */
+#line 2146 "parser.yy"
+    { delete (yyvsp[(3) - (4)].en); }
+    break;
+
+  case 556:
+
+/* Line 1806 of yacc.c  */
+#line 2150 "parser.yy"
+    { delete (yyvsp[(1) - (1)].tok); }
+    break;
+
+  case 557:
+
+/* Line 1806 of yacc.c  */
+#line 2151 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
+    break;
+
+  case 558:
+
+/* Line 1806 of yacc.c  */
+#line 2152 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
+    break;
+
+  case 559:
+
+/* Line 1806 of yacc.c  */
+#line 2153 "parser.yy"
+    { delete (yyvsp[(1) - (1)].decl); }
+    break;
+
+  case 560:
+
+/* Line 1806 of yacc.c  */
+#line 2188 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 562:
+
+/* Line 1806 of yacc.c  */
+#line 2191 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 563:
+
+/* Line 1806 of yacc.c  */
+#line 2193 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 564:
+
+/* Line 1806 of yacc.c  */
+#line 2198 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
+  case 565:
+
+/* Line 1806 of yacc.c  */
+#line 2203 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 566:
+
+/* Line 1806 of yacc.c  */
+#line 2208 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 567:
+
+/* Line 1806 of yacc.c  */
+#line 2210 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 568:
+
+/* Line 1806 of yacc.c  */
+#line 2212 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 569:
+
+/* Line 1806 of yacc.c  */
+#line 2217 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 570:
+
+/* Line 1806 of yacc.c  */
+#line 2219 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 571:
+
+/* Line 1806 of yacc.c  */
+#line 2221 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 572:
+
+/* Line 1806 of yacc.c  */
+#line 2223 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 573:
+
+/* Line 1806 of yacc.c  */
+#line 2228 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 574:
+
+/* Line 1806 of yacc.c  */
+#line 2230 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 575:
+
+/* Line 1806 of yacc.c  */
+#line 2239 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 577:
+
+/* Line 1806 of yacc.c  */
+#line 2242 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 578:
+
+/* Line 1806 of yacc.c  */
+#line 2247 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 579:
+
+/* Line 1806 of yacc.c  */
+#line 2249 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 580:
+
+/* Line 1806 of yacc.c  */
+#line 2251 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 581:
+
+/* Line 1806 of yacc.c  */
+#line 2256 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 582:
+
+/* Line 1806 of yacc.c  */
+#line 2258 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 583:
+
+/* Line 1806 of yacc.c  */
+#line 2260 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 584:
+
+/* Line 1806 of yacc.c  */
+#line 2265 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 585:
+
+/* Line 1806 of yacc.c  */
+#line 2267 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 586:
+
+/* Line 1806 of yacc.c  */
+#line 2269 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 590:
+
+/* Line 1806 of yacc.c  */
+#line 2284 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
+    break;
+
+  case 591:
+
+/* Line 1806 of yacc.c  */
+#line 2286 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
+    break;
+
+  case 592:
+
+/* Line 1806 of yacc.c  */
+#line 2288 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 593:
+
+/* Line 1806 of yacc.c  */
+#line 2293 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 594:
+
+/* Line 1806 of yacc.c  */
+#line 2295 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 595:
+
+/* Line 1806 of yacc.c  */
+#line 2297 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 596:
+
+/* Line 1806 of yacc.c  */
+#line 2302 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 597:
+
+/* Line 1806 of yacc.c  */
+#line 2304 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 598:
+
+/* Line 1806 of yacc.c  */
+#line 2306 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 599:
+
+/* Line 1806 of yacc.c  */
+#line 2321 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 601:
+
+/* Line 1806 of yacc.c  */
+#line 2324 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 602:
+
+/* Line 1806 of yacc.c  */
+#line 2326 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 604:
+
+/* Line 1806 of yacc.c  */
+#line 2332 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 605:
+
+/* Line 1806 of yacc.c  */
+#line 2337 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 606:
+
+/* Line 1806 of yacc.c  */
+#line 2339 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 607:
+
+/* Line 1806 of yacc.c  */
+#line 2341 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 608:
+
+/* Line 1806 of yacc.c  */
+#line 2346 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 609:
+
+/* Line 1806 of yacc.c  */
+#line 2348 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 610:
+
+/* Line 1806 of yacc.c  */
+#line 2350 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 611:
+
+/* Line 1806 of yacc.c  */
+#line 2352 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 612:
+
+/* Line 1806 of yacc.c  */
+#line 2357 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 613:
+
+/* Line 1806 of yacc.c  */
+#line 2359 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 614:
+
+/* Line 1806 of yacc.c  */
+#line 2361 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 615:
+
+/* Line 1806 of yacc.c  */
+#line 2371 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 617:
+
+/* Line 1806 of yacc.c  */
+#line 2374 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 618:
+
+/* Line 1806 of yacc.c  */
+#line 2376 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 619:
+
+/* Line 1806 of yacc.c  */
+#line 2381 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 620:
+
+/* Line 1806 of yacc.c  */
+#line 2383 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 621:
+
+/* Line 1806 of yacc.c  */
+#line 2385 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 622:
+
+/* Line 1806 of yacc.c  */
+#line 2390 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 623:
+
+/* Line 1806 of yacc.c  */
+#line 2392 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 624:
+
+/* Line 1806 of yacc.c  */
+#line 2394 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 625:
+
+/* Line 1806 of yacc.c  */
+#line 2396 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 626:
+
+/* Line 1806 of yacc.c  */
+#line 2401 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 627:
+
+/* Line 1806 of yacc.c  */
+#line 2403 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 628:
+
+/* Line 1806 of yacc.c  */
+#line 2405 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 629:
+
+/* Line 1806 of yacc.c  */
+#line 2436 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 631:
+
+/* Line 1806 of yacc.c  */
+#line 2439 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 632:
+
+/* Line 1806 of yacc.c  */
+#line 2441 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 633:
+
+/* Line 1806 of yacc.c  */
+#line 2446 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
+  case 634:
+
+/* Line 1806 of yacc.c  */
+#line 2451 "parser.yy"
+    {
+			typedefTable.setNextIdentifier( *(yyvsp[(1) - (1)].tok) );
+			(yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) );
+		}
+    break;
+
+  case 635:
+
+/* Line 1806 of yacc.c  */
+#line 2459 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 636:
+
+/* Line 1806 of yacc.c  */
+#line 2461 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 637:
+
+/* Line 1806 of yacc.c  */
+#line 2463 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 638:
+
+/* Line 1806 of yacc.c  */
+#line 2468 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 639:
+
+/* Line 1806 of yacc.c  */
+#line 2470 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 640:
+
+/* Line 1806 of yacc.c  */
+#line 2475 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
+    break;
+
+  case 641:
+
+/* Line 1806 of yacc.c  */
+#line 2477 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 643:
+
+/* Line 1806 of yacc.c  */
+#line 2492 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 644:
+
+/* Line 1806 of yacc.c  */
+#line 2494 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 645:
+
+/* Line 1806 of yacc.c  */
+#line 2499 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 646:
+
+/* Line 1806 of yacc.c  */
+#line 2501 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 647:
+
+/* Line 1806 of yacc.c  */
+#line 2503 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 648:
+
+/* Line 1806 of yacc.c  */
+#line 2505 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 649:
+
+/* Line 1806 of yacc.c  */
+#line 2507 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 651:
+
+/* Line 1806 of yacc.c  */
+#line 2513 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 652:
+
+/* Line 1806 of yacc.c  */
+#line 2515 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 653:
+
+/* Line 1806 of yacc.c  */
+#line 2517 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 654:
+
+/* Line 1806 of yacc.c  */
+#line 2522 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 655:
+
+/* Line 1806 of yacc.c  */
+#line 2524 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 656:
+
+/* Line 1806 of yacc.c  */
+#line 2526 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 657:
+
+/* Line 1806 of yacc.c  */
+#line 2532 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
+    break;
+
+  case 658:
+
+/* Line 1806 of yacc.c  */
+#line 2534 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(3) - (3)].decl) ); }
+    break;
+
+  case 660:
+
+/* Line 1806 of yacc.c  */
+#line 2540 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
+    break;
+
+  case 661:
+
+/* Line 1806 of yacc.c  */
+#line 2542 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
+    break;
+
+  case 662:
+
+/* Line 1806 of yacc.c  */
+#line 2544 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
+    break;
+
+  case 663:
+
+/* Line 1806 of yacc.c  */
+#line 2546 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
+    break;
+
+  case 665:
+
+/* Line 1806 of yacc.c  */
+#line 2561 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 666:
+
+/* Line 1806 of yacc.c  */
+#line 2563 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 667:
+
+/* Line 1806 of yacc.c  */
+#line 2568 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 668:
+
+/* Line 1806 of yacc.c  */
+#line 2570 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 669:
+
+/* Line 1806 of yacc.c  */
+#line 2572 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 670:
+
+/* Line 1806 of yacc.c  */
+#line 2574 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 671:
+
+/* Line 1806 of yacc.c  */
+#line 2576 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 673:
+
+/* Line 1806 of yacc.c  */
+#line 2582 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 674:
+
+/* Line 1806 of yacc.c  */
+#line 2584 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 675:
+
+/* Line 1806 of yacc.c  */
+#line 2586 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 676:
+
+/* Line 1806 of yacc.c  */
+#line 2591 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
+    break;
+
+  case 677:
+
+/* Line 1806 of yacc.c  */
+#line 2593 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 678:
+
+/* Line 1806 of yacc.c  */
+#line 2595 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 680:
+
+/* Line 1806 of yacc.c  */
+#line 2602 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 682:
+
+/* Line 1806 of yacc.c  */
+#line 2613 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
+    break;
+
+  case 683:
+
+/* Line 1806 of yacc.c  */
+#line 2616 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+    break;
+
+  case 684:
+
+/* Line 1806 of yacc.c  */
+#line 2618 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
+    break;
+
+  case 685:
+
+/* Line 1806 of yacc.c  */
+#line 2621 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+    break;
+
+  case 686:
+
+/* Line 1806 of yacc.c  */
+#line 2623 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
+    break;
+
+  case 687:
+
+/* Line 1806 of yacc.c  */
+#line 2625 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
+    break;
+
+  case 689:
+
+/* Line 1806 of yacc.c  */
+#line 2639 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 690:
+
+/* Line 1806 of yacc.c  */
+#line 2641 "parser.yy"
+    { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 691:
+
+/* Line 1806 of yacc.c  */
+#line 2646 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
+    break;
+
+  case 692:
+
+/* Line 1806 of yacc.c  */
+#line 2648 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
+    break;
+
+  case 693:
+
+/* Line 1806 of yacc.c  */
+#line 2650 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 694:
+
+/* Line 1806 of yacc.c  */
+#line 2652 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
+    break;
+
+  case 695:
+
+/* Line 1806 of yacc.c  */
+#line 2654 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 697:
+
+/* Line 1806 of yacc.c  */
+#line 2660 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 698:
+
+/* Line 1806 of yacc.c  */
+#line 2662 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
+    break;
+
+  case 699:
+
+/* Line 1806 of yacc.c  */
+#line 2664 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 700:
+
+/* Line 1806 of yacc.c  */
+#line 2669 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
+    break;
+
+  case 701:
+
+/* Line 1806 of yacc.c  */
+#line 2671 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
+    break;
+
+  case 704:
+
+/* Line 1806 of yacc.c  */
+#line 2681 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 707:
+
+/* Line 1806 of yacc.c  */
+#line 2691 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 708:
+
+/* Line 1806 of yacc.c  */
+#line 2693 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 709:
+
+/* Line 1806 of yacc.c  */
+#line 2695 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 710:
+
+/* Line 1806 of yacc.c  */
+#line 2697 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 711:
+
+/* Line 1806 of yacc.c  */
+#line 2699 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 712:
+
+/* Line 1806 of yacc.c  */
+#line 2701 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 713:
+
+/* Line 1806 of yacc.c  */
+#line 2708 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 714:
+
+/* Line 1806 of yacc.c  */
+#line 2710 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 715:
+
+/* Line 1806 of yacc.c  */
+#line 2712 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 716:
+
+/* Line 1806 of yacc.c  */
+#line 2714 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 717:
+
+/* Line 1806 of yacc.c  */
+#line 2716 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 718:
+
+/* Line 1806 of yacc.c  */
+#line 2718 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 719:
+
+/* Line 1806 of yacc.c  */
+#line 2720 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 720:
+
+/* Line 1806 of yacc.c  */
+#line 2722 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 721:
+
+/* Line 1806 of yacc.c  */
+#line 2724 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
+    break;
+
+  case 722:
+
+/* Line 1806 of yacc.c  */
+#line 2726 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 723:
+
+/* Line 1806 of yacc.c  */
+#line 2731 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
+    break;
+
+  case 724:
+
+/* Line 1806 of yacc.c  */
+#line 2733 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
+    break;
+
+  case 725:
+
+/* Line 1806 of yacc.c  */
+#line 2738 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
+    break;
+
+  case 726:
+
+/* Line 1806 of yacc.c  */
+#line 2740 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
+    break;
+
+  case 728:
+
+/* Line 1806 of yacc.c  */
+#line 2767 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 732:
+
+/* Line 1806 of yacc.c  */
+#line 2778 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 733:
+
+/* Line 1806 of yacc.c  */
+#line 2780 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 734:
+
+/* Line 1806 of yacc.c  */
+#line 2782 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 735:
+
+/* Line 1806 of yacc.c  */
+#line 2784 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 736:
+
+/* Line 1806 of yacc.c  */
+#line 2786 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
+    break;
+
+  case 737:
+
+/* Line 1806 of yacc.c  */
+#line 2788 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
+    break;
+
+  case 738:
+
+/* Line 1806 of yacc.c  */
+#line 2795 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 739:
+
+/* Line 1806 of yacc.c  */
+#line 2797 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 740:
+
+/* Line 1806 of yacc.c  */
+#line 2799 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 741:
+
+/* Line 1806 of yacc.c  */
+#line 2801 "parser.yy"
+    { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 742:
+
+/* Line 1806 of yacc.c  */
+#line 2803 "parser.yy"
+    { (yyval.decl) = (yyvsp[(4) - (4)].decl)->addNewArray( (yyvsp[(3) - (4)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
+    break;
+
+  case 743:
+
+/* Line 1806 of yacc.c  */
+#line 2805 "parser.yy"
+    { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
+    break;
+
+  case 744:
+
+/* Line 1806 of yacc.c  */
+#line 2810 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
+    break;
+
+  case 745:
+
+/* Line 1806 of yacc.c  */
+#line 2815 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(4) - (5)].decl), 0 ); }
+    break;
+
+  case 746:
+
+/* Line 1806 of yacc.c  */
+#line 2817 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
+    break;
+
+  case 747:
+
+/* Line 1806 of yacc.c  */
+#line 2819 "parser.yy"
+    { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
+    break;
+
+  case 750:
+
+/* Line 1806 of yacc.c  */
+#line 2843 "parser.yy"
+    { (yyval.en) = 0; }
+    break;
+
+  case 751:
+
+/* Line 1806 of yacc.c  */
+#line 2845 "parser.yy"
+    { (yyval.en) = (yyvsp[(2) - (2)].en); }
+    break;
+
+
+
+/* Line 1806 of yacc.c  */
+#line 9184 "Parser/parser.cc"
+      default: break;
+    }
+  /* User semantic actions sometimes alter yychar, and that requires
+     that yytoken be updated with the new translation.  We take the
+     approach of translating immediately before every use of yytoken.
+     One alternative is translating here after every semantic action,
+     but that translation would be missed if the semantic action invokes
+     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
+     if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
+     incorrect destructor might then be invoked immediately.  In the
+     case of YYERROR or YYBACKUP, subsequent parser actions might lead
+     to an incorrect destructor call or verbose syntax error message
+     before the lookahead is translated.  */
+  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+
+  *++yyvsp = yyval;
+
+  /* Now `shift' the result of the reduction.  Determine what state
+     that goes to, based on the state we popped back to and the rule
+     number reduced by.  */
+
+  yyn = yyr1[yyn];
+
+  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+    yystate = yytable[yystate];
+  else
+    yystate = yydefgoto[yyn - YYNTOKENS];
+
+  goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+  /* Make sure we have latest lookahead translation.  See comments at
+     user semantic actions for why this is necessary.  */
+  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
+
+  /* If not already recovering from an error, report this error.  */
+  if (!yyerrstatus)
+    {
+      ++yynerrs;
+#if ! YYERROR_VERBOSE
+      yyerror (YY_("syntax error"));
+#else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+                                        yyssp, yytoken)
+      {
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
+      }
+# undef YYSYNTAX_ERROR
+#endif
+    }
+
+
+
+  if (yyerrstatus == 3)
+    {
+      /* If just tried and failed to reuse lookahead token after an
+	 error, discard it.  */
+
+      if (yychar <= YYEOF)
+	{
+	  /* Return failure if at end of input.  */
+	  if (yychar == YYEOF)
+	    YYABORT;
+	}
+      else
+	{
+	  yydestruct ("Error: discarding",
+		      yytoken, &yylval);
+	  yychar = YYEMPTY;
+	}
+    }
+
+  /* Else will try to reuse lookahead token after shifting the error
+     token.  */
+  goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR.  |
+`---------------------------------------------------*/
+yyerrorlab:
+
+  /* Pacify compilers like GCC when the user code never invokes
+     YYERROR and the label yyerrorlab therefore never appears in user
+     code.  */
+  if (/*CONSTCOND*/ 0)
+     goto yyerrorlab;
+
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYERROR.  */
+  YYPOPSTACK (yylen);
+  yylen = 0;
+  YY_STACK_PRINT (yyss, yyssp);
+  yystate = *yyssp;
+  goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR.  |
+`-------------------------------------------------------------*/
+yyerrlab1:
+  yyerrstatus = 3;	/* Each real token shifted decrements this.  */
+
+  for (;;)
+    {
+      yyn = yypact[yystate];
+      if (!yypact_value_is_default (yyn))
+	{
+	  yyn += YYTERROR;
+	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+	    {
+	      yyn = yytable[yyn];
+	      if (0 < yyn)
+		break;
+	    }
+	}
+
+      /* Pop the current state because it cannot handle the error token.  */
+      if (yyssp == yyss)
+	YYABORT;
+
+
+      yydestruct ("Error: popping",
+		  yystos[yystate], yyvsp);
+      YYPOPSTACK (1);
+      yystate = *yyssp;
+      YY_STACK_PRINT (yyss, yyssp);
+    }
+
+  *++yyvsp = yylval;
+
+
+  /* Shift the error token.  */
+  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+  yystate = yyn;
+  goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here.  |
+`-------------------------------------*/
+yyacceptlab:
+  yyresult = 0;
+  goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here.  |
+`-----------------------------------*/
+yyabortlab:
+  yyresult = 1;
+  goto yyreturn;
+
+#if !defined(yyoverflow) || YYERROR_VERBOSE
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here.  |
+`-------------------------------------------------*/
+yyexhaustedlab:
+  yyerror (YY_("memory exhausted"));
+  yyresult = 2;
+  /* Fall through.  */
+#endif
+
+yyreturn:
+  if (yychar != YYEMPTY)
+    {
+      /* Make sure we have latest lookahead translation.  See comments at
+         user semantic actions for why this is necessary.  */
+      yytoken = YYTRANSLATE (yychar);
+      yydestruct ("Cleanup: discarding lookahead",
+                  yytoken, &yylval);
+    }
+  /* Do not reclaim the symbols of the rule which action triggered
+     this YYABORT or YYACCEPT.  */
+  YYPOPSTACK (yylen);
+  YY_STACK_PRINT (yyss, yyssp);
+  while (yyssp != yyss)
+    {
+      yydestruct ("Cleanup: popping",
+		  yystos[*yyssp], yyvsp);
+      YYPOPSTACK (1);
+    }
+#ifndef yyoverflow
+  if (yyss != yyssa)
+    YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+  if (yymsg != yymsgbuf)
+    YYSTACK_FREE (yymsg);
+#endif
+  /* Make sure YYID is used.  */
+  return YYID (yyresult);
+}
+
+
+
+/* Line 2067 of yacc.c  */
+#line 2848 "parser.yy"
+
+// ----end of grammar----
+
+extern char *yytext;
+
+void yyerror( const char * ) {
+	std::cout << "Error ";
+	if ( yyfilename ) {
+		std::cout << "in file " << yyfilename << " ";
+	} // if
+	std::cout << "at line " << yylineno << " reading token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << "\"" << std::endl;
+}
+
+// Local Variables: //
+// mode: c++ //
+// tab-width: 4 //
+// compile-command: "make install" //
+// End: //
+
