]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
semantics.c: New file, containing routines to perform the semantic phase of parsing.
authorMark Mitchell <mmitchell@usa.net>
Wed, 18 Mar 1998 10:52:04 +0000 (10:52 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 18 Mar 1998 10:52:04 +0000 (10:52 +0000)
* semantics.c: New file, containing routines to perform the
semantic phase of parsing.
* parse.y: Use it.
* pt.c (tsubst_expr): Likewise.
* cp-tree.h: Declare the various functions in semantics.c.
Provide macros to access _STMT tree nodes.
* cp-tree.def: Add ASM_STMT tree node.
* Makefile.in, Make-lang.in: Add dependencies on and for
semantics.c.

From-SVN: r18658

gcc/cp/ChangeLog
gcc/cp/Make-lang.in
gcc/cp/Makefile.in
gcc/cp/cp-tree.def
gcc/cp/cp-tree.h
gcc/cp/parse.c
gcc/cp/parse.y
gcc/cp/pt.c
gcc/cp/semantics.c [new file with mode: 0644]

index 216ced7007bd7ceccafdfbade79f01746ea3b2cf..723c5a2f365034696bcc9be5817d6ab963bee743 100644 (file)
@@ -1,3 +1,15 @@
+Wed Mar 18 10:09:51 1998  Mark Mitchell  <mmitchell@usa.net>
+
+       * semantics.c: New file, containing routines to perform the
+       semantic phase of parsing.
+       * parse.y: Use it.
+       * pt.c (tsubst_expr): Likewise.
+       * cp-tree.h: Declare the various functions in semantics.c.
+       Provide macros to access _STMT tree nodes.
+       * cp-tree.def: Add ASM_STMT tree node.
+       * Makefile.in, Make-lang.in: Add dependencies on and for
+       semantics.c.
+       
 Wed Mar 18 00:24:10 1998  Jason Merrill  <jason@yorick.cygnus.com>
 
        * pt.c (push_template_decl): Only check primary templates.
index 6ed167830c8478cb6aeb2fe916ff40475fb93da9..67fca2e315cd5d3a0db8c03308f53bdab63e4f0f 100644 (file)
@@ -122,7 +122,7 @@ CXX_SRCS = $(srcdir)/cp/call.c $(srcdir)/cp/decl2.c \
  $(srcdir)/cp/search.c $(srcdir)/cp/typeck.c $(srcdir)/cp/decl.c \
  $(srcdir)/cp/error.c $(srcdir)/cp/friend.c $(srcdir)/cp/init.c \
  $(srcdir)/cp/parse.y $(srcdir)/cp/sig.c $(srcdir)/cp/typeck2.c \
- $(srcdir)/cp/repo.c
+ $(srcdir)/cp/repo.c $(srcdir)/cp/semantics.c
 
 cc1plus: $(P) $(CXX_SRCS) $(LIBDEPS) stamp-objlist c-common.o c-pragma.o \
        $(srcdir)/cp/cp-tree.h $(srcdir)/cp/cp-tree.def
index 2ad0858d7b856ee5846bba9be32583be0b9d012c..f677dfe7b1e5e205894e829fc5f241c6e08144ef 100644 (file)
@@ -166,7 +166,7 @@ INCLUDES = -I. -I.. -I$(srcdir) -I$(srcdir)/.. -I$(srcdir)/../config
 
 CXX_OBJS = call.o decl.o errfn.o expr.o pt.o sig.o typeck2.o \
  class.o decl2.o error.o lex.o parse.o ptree.o rtti.o spew.o typeck.o cvt.o \
- except.o friend.o init.o method.o search.o tree.o xref.o repo.o
+ except.o friend.o init.o method.o search.o semantics.o tree.o xref.o repo.o
 
 # Language-independent object files.
 OBJS = `cat ../stamp-objlist` ../c-common.o ../c-pragma.o
@@ -259,6 +259,8 @@ error.o : error.c $(CONFIG_H) $(CXX_TREE_H)
 errfn.o : errfn.c $(CONFIG_H) $(CXX_TREE_H)
 sig.o : sig.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h
 repo.o : repo.c $(CONFIG_H) $(CXX_TREE_H)
+semantics.o: semantics.c $(CONFIG_H) $(CXX_TREE_H) lex.h $(srcdir)/../except.h
+
 #\f
 # These exist for maintenance purposes.
 
index 1f39768a91dd25d60fa9e634181fa59021467a72..98217c3892f84d20c661147e3573bd899bc382e6 100644 (file)
@@ -200,6 +200,7 @@ DEFTREECODE (BREAK_STMT, "break_stmt", 'e', 0)
 DEFTREECODE (CONTINUE_STMT, "continue_stmt", 'e', 0)
 DEFTREECODE (SWITCH_STMT, "switch_stmt", 'e', 2)
 DEFTREECODE (GOTO_STMT, "goto_stmt", 'e', 1)
+DEFTREECODE (ASM_STMT, "asm_stmt", 'e', 5)
 
 DEFTREECODE (CTOR_INITIALIZER, "ctor_initializer", 'e', 2)
 DEFTREECODE (CASE_LABEL, "case_label", 'e', 2)
index 0e9f9d844ef130f60140dc02d3a4b02c586cdd9d..0c4cfcd78f8ded51caa1287530dc2a2cd508cd92 100644 (file)
@@ -1524,6 +1524,37 @@ extern int flag_new_for_scope;
 #define builtin_function(NAME, TYPE, CODE, LIBNAME) \
   define_function (NAME, TYPE, CODE, (void (*) PROTO((tree)))pushdecl, LIBNAME)
 
+/* These macros provide convenient access to the various _STMT nodes
+   created when parsing template declarations.  */
+#define IF_COND(NODE)           TREE_OPERAND (NODE, 0)
+#define THEN_CLAUSE(NODE)       TREE_OPERAND (NODE, 1)
+#define ELSE_CLAUSE(NODE)       TREE_OPERAND (NODE, 2)
+#define WHILE_COND(NODE)        TREE_OPERAND (NODE, 0)
+#define WHILE_BODY(NODE)        TREE_OPERAND (NODE, 1)
+#define DO_COND(NODE)           TREE_OPERAND (NODE, 0)
+#define DO_BODY(NODE)           TREE_OPERAND (NODE, 1)
+#define RETURN_EXPR(NODE)       TREE_OPERAND (NODE, 0)
+#define EXPR_STMT_EXPR(NODE)    TREE_OPERAND (NODE, 0)
+#define FOR_INIT_STMT(NODE)     TREE_OPERAND (NODE, 0)
+#define FOR_COND(NODE)          TREE_OPERAND (NODE, 1)
+#define FOR_EXPR(NODE)          TREE_OPERAND (NODE, 2)
+#define FOR_BODY(NODE)          TREE_OPERAND (NODE, 3)
+#define SWITCH_COND(NODE)       TREE_OPERAND (NODE, 0)
+#define SWITCH_BODY(NODE)       TREE_OPERAND (NODE, 1)
+#define CASE_LOW(NODE)          TREE_OPERAND (NODE, 0)
+#define CASE_HIGH(NODE)         TREE_OPERAND (NODE, 1)
+#define GOTO_DESTINATION(NODE)  TREE_OPERAND (NODE, 0)
+#define TRY_STMTS(NODE)         TREE_OPERAND (NODE, 0)
+#define TRY_HANDLERS(NODE)      TREE_OPERAND (NODE, 1)
+#define HANDLER_PARMS(NODE)     TREE_OPERAND (NODE, 0)
+#define HANDLER_BODY(NODE)      TREE_OPERAND (NODE, 1)
+#define COMPOUND_BODY(NODE)     TREE_OPERAND (NODE, 0)
+#define ASM_CV_QUAL(NODE)       TREE_OPERAND (NODE, 0)
+#define ASM_STRING(NODE)        TREE_OPERAND (NODE, 1)
+#define ASM_OUTPUTS(NODE)       TREE_OPERAND (NODE, 2)
+#define ASM_INPUTS(NODE)        TREE_OPERAND (NODE, 3)
+#define ASM_CLOBBERS(NODE)      TREE_OPERAND (NODE, 4)
+
 /* An enumeration of the kind of tags that C++ accepts.  */
 enum tag_types { record_type, class_type, union_type, enum_type,
                   signature_type };
@@ -2511,6 +2542,42 @@ extern tree current_scope                        PROTO((void));
 extern tree lookup_conversions                 PROTO((tree));
 extern tree get_template_base                  PROTO((tree, tree));
 
+/* in semantics.c */
+extern void finish_expr_stmt                    PROTO((tree));
+extern tree begin_if_stmt                       PROTO((void));
+extern void finish_if_stmt_cond                 PROTO((tree, tree));
+extern tree finish_then_clause                  PROTO((tree));
+extern void begin_else_clause                   PROTO((void));
+extern void finish_else_clause                  PROTO((tree));
+extern void finish_if_stmt                      PROTO((void));
+extern tree begin_while_stmt                    PROTO((void));
+extern void finish_while_stmt_cond              PROTO((tree, tree));
+extern void finish_while_stmt                   PROTO((tree));
+extern tree begin_do_stmt                       PROTO((void));
+extern void finish_do_body                      PROTO((tree));
+extern void finish_do_stmt                      PROTO((tree, tree));
+extern void finish_return_stmt                  PROTO((tree));
+extern tree begin_for_stmt                      PROTO((void));
+extern void finish_for_init_stmt                PROTO((tree));
+extern void finish_for_cond                     PROTO((tree, tree));
+extern void finish_for_expression               PROTO((tree, tree));
+extern void finish_for_stmt                     PROTO((tree, tree));
+extern void finish_break_stmt                   PROTO((void));
+extern void finish_continue_stmt                PROTO((void));
+extern void begin_switch_stmt                   PROTO((void));
+extern tree finish_switch_cond                  PROTO((tree));
+extern void finish_switch_stmt                  PROTO((tree, tree));
+extern void finish_case_label                   PROTO((tree, tree));
+extern void finish_goto_stmt                    PROTO((tree));
+extern tree begin_try_block                     PROTO((void));
+extern void finish_try_block                    PROTO((tree));
+extern void finish_handler_sequence             PROTO((tree));
+extern tree begin_handler                       PROTO((void));
+extern void finish_handler_parms                PROTO((tree));
+extern void finish_handler                      PROTO((tree));
+extern tree begin_compound_stmt                 PROTO((int));
+extern tree finish_compound_stmt                PROTO((int, tree));
+extern void finish_asm_stmt                     PROTO((tree, tree, tree, tree, tree));
 /* in sig.c */
 extern tree build_signature_pointer_type       PROTO((tree, int, int));
 extern tree build_signature_reference_type     PROTO((tree, int, int));
index 231e427d7cb7b08fce15e5ee5045c06cb737e381..d42efe2a9913779ed15f479a7254a5ae34fe3592 100644 (file)
@@ -217,11 +217,11 @@ parse_decl(declarator, specs_attrs, attributes, initialized, decl)
 
 
 
-#define        YYFINAL         1565
+#define        YYFINAL         1549
 #define        YYFLAG          -32768
 #define        YYNTBASE        114
 
-#define YYTRANSLATE(x) ((unsigned)(x) <= 344 ? yytranslate[x] : 390)
+#define YYTRANSLATE(x) ((unsigned)(x) <= 344 ? yytranslate[x] : 386)
 
 static const char yytranslate[] = {     0,
      2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -330,24 +330,24 @@ static const short yyprhs[] = {     0,
   2112,  2117,  2121,  2124,  2127,  2129,  2133,  2136,  2139,  2141,
   2144,  2148,  2150,  2154,  2156,  2163,  2168,  2173,  2177,  2183,
   2187,  2191,  2195,  2198,  2200,  2202,  2205,  2208,  2211,  2212,
-  2213,  2214,  2216,  2218,  2221,  2225,  2227,  2230,  2231,  2237,
-  2238,  2239,  2246,  2248,  2249,  2254,  2256,  2258,  2260,  2263,
-  2264,  2265,  2272,  2274,  2275,  2276,  2284,  2285,  2286,  2294,
-  2295,  2296,  2297,  2298,  2313,  2314,  2315,  2325,  2326,  2332,
-  2333,  2341,  2342,  2347,  2350,  2353,  2356,  2360,  2367,  2376,
-  2387,  2400,  2405,  2409,  2412,  2415,  2417,  2419,  2420,  2421,
-  2428,  2429,  2430,  2436,  2438,  2441,  2442,  2443,  2444,  2453,
-  2455,  2457,  2461,  2465,  2468,  2471,  2474,  2477,  2480,  2482,
-  2485,  2486,  2488,  2489,  2491,  2493,  2494,  2496,  2498,  2502,
-  2507,  2509,  2513,  2514,  2516,  2518,  2520,  2523,  2526,  2529,
-  2531,  2533,  2536,  2539,  2542,  2545,  2546,  2550,  2552,  2554,
-  2556,  2559,  2562,  2565,  2570,  2573,  2576,  2579,  2582,  2585,
-  2588,  2590,  2593,  2595,  2598,  2600,  2602,  2603,  2604,  2606,
-  2607,  2612,  2615,  2617,  2619,  2623,  2624,  2628,  2632,  2636,
-  2638,  2641,  2644,  2647,  2650,  2653,  2656,  2659,  2662,  2665,
-  2668,  2671,  2674,  2677,  2680,  2683,  2686,  2689,  2692,  2695,
-  2698,  2701,  2704,  2707,  2711,  2714,  2717,  2720,  2723,  2727,
-  2730,  2733,  2738,  2743,  2747
+  2214,  2216,  2219,  2223,  2225,  2228,  2229,  2233,  2234,  2235,
+  2241,  2243,  2244,  2247,  2249,  2251,  2253,  2256,  2257,  2262,
+  2264,  2265,  2266,  2272,  2273,  2274,  2282,  2283,  2284,  2285,
+  2286,  2299,  2300,  2301,  2309,  2310,  2316,  2317,  2325,  2326,
+  2331,  2334,  2337,  2340,  2344,  2351,  2360,  2371,  2384,  2389,
+  2393,  2396,  2399,  2401,  2403,  2404,  2405,  2412,  2413,  2414,
+  2420,  2422,  2425,  2426,  2427,  2433,  2435,  2437,  2441,  2445,
+  2448,  2451,  2454,  2457,  2460,  2462,  2465,  2466,  2468,  2469,
+  2471,  2473,  2474,  2476,  2478,  2482,  2487,  2489,  2493,  2494,
+  2496,  2498,  2500,  2503,  2506,  2509,  2511,  2513,  2516,  2519,
+  2522,  2525,  2526,  2530,  2532,  2534,  2536,  2539,  2542,  2545,
+  2550,  2553,  2556,  2559,  2562,  2565,  2568,  2570,  2573,  2575,
+  2578,  2580,  2582,  2583,  2584,  2586,  2587,  2592,  2595,  2597,
+  2599,  2603,  2604,  2608,  2612,  2616,  2618,  2621,  2624,  2627,
+  2630,  2633,  2636,  2639,  2642,  2645,  2648,  2651,  2654,  2657,
+  2660,  2663,  2666,  2669,  2672,  2675,  2678,  2681,  2684,  2687,
+  2691,  2694,  2697,  2700,  2703,  2707,  2710,  2713,  2718,  2723,
+  2727
 };
 
 static const short yyrhs[] = {    -1,
@@ -365,25 +365,25 @@ static const short yyrhs[] = {    -1,
      0,     0,    49,    75,   131,   132,    76,     0,    49,    75,
     76,     0,   136,     0,   132,    60,   136,     0,   157,     0,
      0,   257,   133,     0,    46,   133,     0,   130,   257,   133,
-     0,   134,     0,   134,    65,   214,     0,   381,     0,   381,
+     0,   134,     0,   134,    65,   214,     0,   377,     0,   377,
     65,   194,     0,   135,     0,   135,    65,   176,     0,   130,
    124,     0,   130,     1,     0,   225,    61,     0,   218,   224,
     61,     0,   215,   223,    61,     0,   218,    61,     0,   160,
     61,     0,   215,    61,     0,     1,    61,     0,     1,   111,
      0,    61,     0,   209,     0,   153,     0,     0,   152,     0,
-   152,    61,     0,     0,   109,     0,   148,   140,   139,   326,
-     0,   148,   140,   351,     0,   148,   140,     1,     0,     0,
-   305,     5,    94,   144,   372,   110,   287,   384,     0,   305,
-     5,    48,   287,   384,     0,     0,   314,   305,     5,    94,
-   145,   372,   110,   287,   384,     0,   314,   305,     5,    48,
-   287,   384,     0,     0,   305,   172,    94,   146,   372,   110,
-   287,   384,     0,   305,   172,    48,   287,   384,     0,     0,
-   314,   305,   172,    94,   147,   372,   110,   287,   384,     0,
-   314,   305,   172,    48,   287,   384,     0,   215,   212,     0,
+   152,    61,     0,     0,   109,     0,   148,   140,   139,   324,
+     0,   148,   140,   348,     0,   148,   140,     1,     0,     0,
+   305,     5,    94,   144,   368,   110,   287,   380,     0,   305,
+     5,    48,   287,   380,     0,     0,   314,   305,     5,    94,
+   145,   368,   110,   287,   380,     0,   314,   305,     5,    48,
+   287,   380,     0,     0,   305,   172,    94,   146,   368,   110,
+   287,   380,     0,   305,   172,    48,   287,   380,     0,     0,
+   314,   305,   172,    94,   147,   368,   110,   287,   380,     0,
+   314,   305,   172,    48,   287,   380,     0,   215,   212,     0,
    218,   297,     0,   297,     0,   218,   143,     0,   143,     0,
-     5,    94,   372,   110,   287,   384,     0,     5,    48,   287,
-   384,     0,   172,    94,   372,   110,   287,   384,     0,   172,
-    48,   287,   384,     0,   218,   149,     0,   149,     0,   215,
+     5,    94,   368,   110,   287,   380,     0,     5,    48,   287,
+   380,     0,   172,    94,   368,   110,   287,   380,     0,   172,
+    48,   287,   380,     0,   218,   149,     0,   149,     0,   215,
    212,     0,   218,   297,     0,   297,     0,   218,   143,     0,
    143,     0,    25,     3,     0,   151,   242,     0,   151,    94,
    188,   110,     0,   151,    48,     0,    63,   154,   155,     0,
@@ -406,10 +406,10 @@ static const short yyrhs[] = {    -1,
      0,   194,     0,    80,     0,    79,     0,    87,     0,    88,
      0,   112,     0,   187,     0,   194,     0,    48,     0,    94,
    178,   110,     0,    48,     0,    94,   182,   110,     0,     0,
-   182,     0,     1,     0,     0,   362,   212,   226,   235,    65,
-   183,   243,     0,   178,     0,   111,     0,   323,   319,   111,
-     0,   323,   319,     1,   111,     0,   323,     1,   111,     0,
-     0,    59,   186,   184,     0,   335,     0,   194,    60,   194,
+   182,     0,     1,     0,     0,   358,   212,   226,   235,    65,
+   183,   243,     0,   178,     0,   111,     0,   321,   319,   111,
+     0,   321,   319,     1,   111,     0,   321,     1,   111,     0,
+     0,    59,   186,   184,     0,   333,     0,   194,    60,   194,
      0,   194,    60,     1,     0,   187,    60,   194,     0,   187,
     60,     1,     0,   194,     0,   187,     0,   203,     0,   120,
    193,     0,    81,   193,     0,    71,   193,     0,    89,   193,
@@ -433,19 +433,19 @@ static const short yyrhs[] = {    -1,
    194,    76,   194,     0,   194,    73,   194,     0,   194,    72,
    194,     0,   194,    71,   194,     0,   194,    69,   194,     0,
    194,    70,   194,     0,   194,    68,   194,     0,   194,    67,
-   194,     0,   194,    66,   367,    63,   194,     0,   194,    65,
+   194,     0,   194,    66,   363,    63,   194,     0,   194,    65,
    194,     0,   194,    64,   194,     0,    62,     0,    62,   194,
-     0,    89,   382,   157,     0,   197,     0,   389,     0,     3,
+     0,    89,   378,   157,     0,   197,     0,   385,     0,     3,
      0,    57,     0,    58,     0,     0,     6,    75,   196,   174,
-   173,     0,   389,    75,   196,   174,   173,     0,    49,   157,
+   173,     0,   385,    75,   196,   174,   173,     0,    49,   157,
     75,   174,   173,     0,    49,     6,    75,   174,   173,     0,
-    49,   389,    75,   174,   173,     0,   195,     0,     4,     0,
+    49,   385,    75,   174,   173,     0,   195,     0,     4,     0,
      5,     0,   195,     0,    81,   200,     0,    71,   200,     0,
     94,   200,   110,     0,     3,    75,   174,   173,     0,    58,
     75,   175,   173,     0,   299,     0,   195,     0,   201,     0,
     94,   200,   110,     0,   195,     0,    10,     0,   207,     0,
    208,     0,    94,   178,   110,     0,    94,   200,   110,     0,
-    94,     1,   110,     0,     0,    94,   204,   327,   110,     0,
+    94,     1,   110,     0,     0,    94,   204,   325,   110,     0,
    203,    94,   188,   110,     0,   203,    48,     0,   203,    95,
    178,   113,     0,   203,    87,     0,   203,    88,     0,    41,
      0,     9,    94,   188,   110,     0,   303,     0,    51,    75,
@@ -453,7 +453,7 @@ static const short yyrhs[] = {    -1,
     94,   178,   110,     0,    53,    75,   214,    76,    94,   178,
    110,     0,    54,    75,   214,    76,    94,   178,   110,     0,
     50,    94,   178,   110,     0,    50,    94,   214,   110,     0,
-   314,     3,     0,   314,   389,     0,   302,     0,   302,    94,
+   314,     3,     0,   314,   385,     0,   302,     0,   302,    94,
    188,   110,     0,   302,    48,     0,   210,   198,     0,   210,
    198,    94,   188,   110,     0,   210,   198,    48,     0,   210,
    199,     0,   210,   302,     0,   210,   199,    94,   188,   110,
@@ -493,8 +493,8 @@ static const short yyrhs[] = {    -1,
    244,   111,     0,    59,   244,    60,   111,     0,     1,     0,
    243,     0,   244,    60,   243,     0,    95,   194,   113,   243,
      0,   157,    63,   243,     0,   244,    60,   157,    63,   243,
-     0,    99,     0,   245,   140,   139,   326,     0,   245,   140,
-   351,     0,   245,   140,     1,     0,     0,   247,   246,   141,
+     0,    99,     0,   245,   140,   139,   324,     0,   245,   140,
+   348,     0,   245,   140,     1,     0,     0,   247,   246,   141,
      0,   104,   194,   109,     0,   104,     1,   109,     0,     0,
    249,   248,     0,   249,     1,     0,     0,    14,   157,    59,
    251,   284,   256,   111,     0,    14,   157,    59,   111,     0,
@@ -508,11 +508,11 @@ static const short yyrhs[] = {    -1,
    257,   314,   157,     0,   257,   171,     0,   257,   305,   171,
      0,     0,   258,     0,   259,   261,   265,     0,   260,   265,
      0,   257,    59,     0,   263,     0,   262,     0,     0,    63,
-   382,     0,    63,   382,   266,     0,   267,     0,   266,    60,
-   382,   267,     0,   268,     0,   269,   382,   268,     0,   307,
+   378,     0,    63,   378,   266,     0,   267,     0,   266,    60,
+   378,   267,     0,   268,     0,   269,   378,   268,     0,   307,
      0,   293,     0,    31,    94,   178,   110,     0,    31,    94,
-   214,   110,     0,    38,   382,     0,     7,   382,     0,   269,
-    38,   382,     0,   269,     7,   382,     0,    59,     0,     0,
+   214,   110,     0,    38,   378,     0,     7,   378,     0,   269,
+    38,   378,     0,   269,     7,   378,     0,    59,     0,     0,
    271,     0,   271,   273,     0,   272,    38,    63,   273,     0,
    272,    38,    63,     0,   274,     0,   273,   274,     0,   275,
     61,     0,   275,   111,     0,   150,    63,     0,   150,    96,
@@ -530,21 +530,21 @@ static const short yyrhs[] = {    -1,
     63,   194,   235,     0,   297,   226,   235,   242,     0,     3,
     63,   194,   235,     0,    63,   194,   235,     0,   285,     0,
    284,    60,   285,     0,   157,     0,   157,    65,   194,     0,
-   362,   315,     0,   362,     0,    94,   214,   110,    95,   178,
+   358,   315,     0,   358,     0,    94,   214,   110,    95,   178,
    113,     0,     0,   287,     9,     0,     9,     0,   288,     9,
      0,     0,   289,   178,     0,   289,    94,   188,   110,     0,
-   289,    94,   372,   110,     0,   289,    48,     0,   289,    94,
+   289,    94,   368,   110,     0,   289,    48,     0,   289,    94,
      1,   110,     0,    81,   288,   292,     0,    71,   288,   292,
      0,    81,   292,     0,    71,   292,     0,   313,   287,   292,
      0,   296,     0,   304,     0,   314,   304,     0,   293,     0,
    295,     0,   314,   295,     0,   305,   304,     0,   296,   291,
-   287,   384,     0,   296,    95,   290,   113,     0,   296,    95,
+   287,   380,     0,   296,    95,   290,   113,     0,   296,    95,
    113,     0,    94,   292,   110,     0,   305,   304,     0,   304,
      0,    81,   288,   297,     0,    71,   288,   297,     0,    81,
    297,     0,    71,   297,     0,   313,   287,   297,     0,   202,
      0,    81,   288,   297,     0,    71,   288,   297,     0,    81,
    298,     0,    71,   298,     0,   313,   287,   297,     0,   299,
-     0,   202,   291,   287,   384,     0,    94,   298,   110,     0,
+     0,   202,   291,   287,   380,     0,    94,   298,   110,     0,
    202,    95,   290,   113,     0,   202,    95,   113,     0,   301,
      0,   305,   201,     0,   305,   199,     0,   305,   198,     0,
    305,   195,     0,   305,   198,     0,   301,     0,   314,   301,
@@ -566,66 +566,64 @@ static const short yyrhs[] = {    -1,
     81,   317,     0,    81,   288,     0,    81,     0,    71,   288,
    317,     0,    71,   317,     0,    71,   288,     0,    71,     0,
    313,   287,     0,   313,   287,   317,     0,   318,     0,    94,
-   317,   110,     0,    91,     0,   318,    94,   372,   110,   287,
-   384,     0,   318,    48,   287,   384,     0,   318,    95,   290,
-   113,     0,   318,    95,   113,     0,    94,   373,   110,   287,
-   384,     0,   192,   287,   384,     0,   213,   287,   384,     0,
-    95,   290,   113,     0,    95,   113,     0,   334,     0,   320,
-     0,   319,   334,     0,   319,   320,     0,     1,    61,     0,
-     0,     0,     0,   324,     0,   325,     0,   324,   325,     0,
-    34,   241,    61,     0,   327,     0,     1,   327,     0,     0,
-    59,   328,   321,   184,   322,     0,     0,     0,    15,   330,
-   321,   180,   331,   332,     0,   327,     0,     0,   321,   333,
-   335,   322,     0,   327,     0,   335,     0,   211,     0,   178,
-    61,     0,     0,     0,   329,    16,   336,   332,   337,   322,
-     0,   329,     0,     0,     0,    17,   338,   321,   180,   339,
-   185,   322,     0,     0,     0,    18,   340,   332,    17,   341,
-   179,    61,     0,     0,     0,     0,     0,    19,   342,    94,
-   365,   343,   321,   181,    61,   344,   367,   110,   345,   185,
-   322,     0,     0,     0,    20,   321,    94,   182,   110,   346,
-   332,   347,   322,     0,     0,    21,   194,    63,   348,   334,
-     0,     0,    21,   194,    12,   194,    63,   349,   334,     0,
-     0,    22,    63,   350,   334,     0,    23,    61,     0,    24,
-    61,     0,    25,    61,     0,    25,   178,    61,     0,   121,
-   366,    94,   208,   110,    61,     0,   121,   366,    94,   208,
-    63,   368,   110,    61,     0,   121,   366,    94,   208,    63,
-   368,    63,   368,   110,    61,     0,   121,   366,    94,   208,
-    63,   368,    63,   368,    63,   371,   110,    61,     0,    26,
-    81,   178,    61,     0,    26,   157,    61,     0,   364,   334,
-     0,   364,   111,     0,    61,     0,   354,     0,     0,     0,
-    96,   352,   139,   327,   353,   357,     0,     0,     0,    96,
-   355,   327,   356,   357,     0,   358,     0,   357,   358,     0,
-     0,     0,     0,    97,   359,   321,   363,   360,   327,   361,
-   322,     0,   219,     0,   288,     0,    94,    12,   110,     0,
-    94,   381,   110,     0,     3,    63,     0,    57,    63,     0,
-     4,    63,     0,     5,    63,     0,   367,    61,     0,   211,
+   317,   110,     0,    91,     0,   318,    94,   368,   110,   287,
+   380,     0,   318,    48,   287,   380,     0,   318,    95,   290,
+   113,     0,   318,    95,   113,     0,    94,   369,   110,   287,
+   380,     0,   192,   287,   380,     0,   213,   287,   380,     0,
+    95,   290,   113,     0,    95,   113,     0,   332,     0,   320,
+     0,   319,   332,     0,   319,   320,     0,     1,    61,     0,
+     0,   322,     0,   323,     0,   322,   323,     0,    34,   241,
+    61,     0,   325,     0,     1,   325,     0,     0,    59,   326,
+   184,     0,     0,     0,    15,   328,   180,   329,   330,     0,
+   325,     0,     0,   331,   333,     0,   325,     0,   333,     0,
+   211,     0,   178,    61,     0,     0,   327,    16,   334,   330,
+     0,   327,     0,     0,     0,    17,   335,   180,   336,   185,
+     0,     0,     0,    18,   337,   330,    17,   338,   179,    61,
+     0,     0,     0,     0,     0,    19,   339,    94,   361,   340,
+   181,    61,   341,   363,   110,   342,   185,     0,     0,     0,
+    20,   343,    94,   182,   110,   344,   330,     0,     0,    21,
+   194,    63,   345,   332,     0,     0,    21,   194,    12,   194,
+    63,   346,   332,     0,     0,    22,    63,   347,   332,     0,
+    23,    61,     0,    24,    61,     0,    25,    61,     0,    25,
+   178,    61,     0,   121,   362,    94,   208,   110,    61,     0,
+   121,   362,    94,   208,    63,   364,   110,    61,     0,   121,
+   362,    94,   208,    63,   364,    63,   364,   110,    61,     0,
+   121,   362,    94,   208,    63,   364,    63,   364,    63,   367,
+   110,    61,     0,    26,    81,   178,    61,     0,    26,   157,
+    61,     0,   360,   332,     0,   360,   111,     0,    61,     0,
+   351,     0,     0,     0,    96,   349,   139,   325,   350,   354,
+     0,     0,     0,    96,   352,   325,   353,   354,     0,   355,
+     0,   354,   355,     0,     0,     0,    97,   356,   359,   357,
+   325,     0,   219,     0,   288,     0,    94,    12,   110,     0,
+    94,   377,   110,     0,     3,    63,     0,    57,    63,     0,
+     4,    63,     0,     5,    63,     0,   363,    61,     0,   211,
      0,    59,   184,     0,     0,     9,     0,     0,   178,     0,
-     1,     0,     0,   369,     0,   370,     0,   369,    60,   370,
-     0,    11,    94,   178,   110,     0,    11,     0,   371,    60,
-    11,     0,     0,   373,     0,   214,     0,   377,     0,   378,
-    12,     0,   377,    12,     0,   214,    12,     0,    12,     0,
-    98,     0,   377,    98,     0,   214,    98,     0,   377,    63,
-     0,   214,    63,     0,     0,    65,   375,   376,     0,   103,
-     0,   243,     0,   379,     0,   381,   374,     0,   378,   380,
-     0,   378,   383,     0,   378,   383,    65,   243,     0,   377,
+     1,     0,     0,   365,     0,   366,     0,   365,    60,   366,
+     0,    11,    94,   178,   110,     0,    11,     0,   367,    60,
+    11,     0,     0,   369,     0,   214,     0,   373,     0,   374,
+    12,     0,   373,    12,     0,   214,    12,     0,    12,     0,
+    98,     0,   373,    98,     0,   214,    98,     0,   373,    63,
+     0,   214,    63,     0,     0,    65,   371,   372,     0,   103,
+     0,   243,     0,   375,     0,   377,   370,     0,   374,   376,
+     0,   374,   379,     0,   374,   379,    65,   243,     0,   373,
     60,     0,   214,    60,     0,   216,   212,     0,   219,   212,
      0,   221,   212,     0,   216,   317,     0,   216,     0,   218,
-   297,     0,   381,     0,   381,   374,     0,   379,     0,   214,
-     0,     0,     0,   297,     0,     0,    62,    94,   386,   110,
-     0,    62,    48,     0,   214,     0,   385,     0,   386,    60,
-   385,     0,     0,    81,   287,   387,     0,    71,   287,   387,
-     0,   313,   287,   387,     0,    42,     0,   388,    81,     0,
-   388,    82,     0,   388,    83,     0,   388,    79,     0,   388,
-    80,     0,   388,    71,     0,   388,    69,     0,   388,    70,
-     0,   388,    89,     0,   388,    60,     0,   388,    74,     0,
-   388,    75,     0,   388,    76,     0,   388,    73,     0,   388,
-    64,     0,   388,    65,     0,   388,    77,     0,   388,    78,
-     0,   388,    87,     0,   388,    88,     0,   388,    68,     0,
-   388,    67,     0,   388,   112,     0,   388,    66,    63,     0,
-   388,    72,     0,   388,    92,     0,   388,    84,     0,   388,
-    48,     0,   388,    95,   113,     0,   388,    40,     0,   388,
-    39,     0,   388,    40,    95,   113,     0,   388,    39,    95,
-   113,     0,   388,   362,   387,     0,   388,     1,     0
+   297,     0,   377,     0,   377,   370,     0,   375,     0,   214,
+     0,     0,     0,   297,     0,     0,    62,    94,   382,   110,
+     0,    62,    48,     0,   214,     0,   381,     0,   382,    60,
+   381,     0,     0,    81,   287,   383,     0,    71,   287,   383,
+     0,   313,   287,   383,     0,    42,     0,   384,    81,     0,
+   384,    82,     0,   384,    83,     0,   384,    79,     0,   384,
+    80,     0,   384,    71,     0,   384,    69,     0,   384,    70,
+     0,   384,    89,     0,   384,    60,     0,   384,    74,     0,
+   384,    75,     0,   384,    76,     0,   384,    73,     0,   384,
+    64,     0,   384,    65,     0,   384,    77,     0,   384,    78,
+     0,   384,    87,     0,   384,    88,     0,   384,    68,     0,
+   384,    67,     0,   384,   112,     0,   384,    66,    63,     0,
+   384,    72,     0,   384,    92,     0,   384,    84,     0,   384,
+    48,     0,   384,    95,   113,     0,   384,    40,     0,   384,
+    39,     0,   384,    40,    95,   113,     0,   384,    39,    95,
+   113,     0,   384,   358,   383,     0,   384,     1,     0
 };
 
 #endif
@@ -650,73 +648,73 @@ static const short yyrline[] = { 0,
    926,   933,   939,   942,   951,   953,   961,   964,   967,   970,
    974,   977,   980,   983,   985,   987,   989,   993,   996,   999,
   1004,  1008,  1013,  1017,  1020,  1022,  1026,  1046,  1053,  1056,
-  1058,  1059,  1060,  1063,  1074,  1083,  1087,  1091,  1094,  1096,
-  1100,  1103,  1106,  1110,  1113,  1115,  1117,  1119,  1126,  1139,
-  1141,  1143,  1145,  1151,  1154,  1157,  1160,  1163,  1167,  1170,
-  1173,  1177,  1179,  1183,  1187,  1189,  1193,  1196,  1203,  1206,
-  1208,  1216,  1229,  1235,  1242,  1244,  1246,  1259,  1262,  1264,
-  1266,  1268,  1270,  1272,  1274,  1276,  1278,  1280,  1282,  1284,
-  1286,  1288,  1290,  1292,  1294,  1296,  1298,  1300,  1302,  1306,
-  1308,  1310,  1327,  1330,  1331,  1332,  1333,  1334,  1337,  1340,
-  1343,  1347,  1350,  1352,  1357,  1359,  1360,  1363,  1365,  1367,
-  1369,  1373,  1376,  1380,  1382,  1383,  1384,  1388,  1396,  1397,
-  1398,  1406,  1414,  1422,  1424,  1436,  1466,  1473,  1480,  1482,
-  1491,  1496,  1519,  1563,  1564,  1568,  1572,  1576,  1580,  1582,
-  1586,  1588,  1596,  1598,  1603,  1609,  1613,  1618,  1623,  1625,
-  1630,  1645,  1660,  1671,  1683,  1691,  1700,  1744,  1747,  1751,
-  1754,  1758,  1761,  1766,  1768,  1772,  1785,  1788,  1795,  1802,
-  1807,  1809,  1814,  1816,  1823,  1825,  1829,  1833,  1839,  1843,
-  1846,  1849,  1852,  1862,  1864,  1867,  1871,  1874,  1877,  1880,
-  1883,  1889,  1895,  1897,  1902,  1904,  1913,  1916,  1918,  1921,
-  1927,  1929,  1939,  1943,  1946,  1949,  1954,  1957,  1965,  1967,
-  1969,  1971,  1974,  1977,  1992,  2011,  2014,  2016,  2019,  2021,
-  2024,  2026,  2029,  2031,  2034,  2037,  2041,  2047,  2048,  2060,
-  2067,  2070,  2076,  2080,  2085,  2091,  2092,  2100,  2103,  2107,
-  2110,  2114,  2119,  2122,  2126,  2129,  2131,  2133,  2135,  2142,
-  2144,  2145,  2146,  2150,  2153,  2157,  2160,  2166,  2168,  2171,
-  2174,  2177,  2183,  2186,  2189,  2191,  2193,  2197,  2203,  2211,
-  2213,  2217,  2219,  2224,  2227,  2230,  2232,  2234,  2238,  2242,
-  2247,  2251,  2254,  2259,  2263,  2266,  2269,  2273,  2308,  2314,
-  2323,  2343,  2345,  2348,  2350,  2355,  2357,  2359,  2361,  2363,
-  2367,  2372,  2377,  2383,  2388,  2393,  2395,  2399,  2404,  2407,
-  2414,  2442,  2448,  2450,  2453,  2456,  2458,  2462,  2464,  2468,
-  2494,  2523,  2526,  2527,  2548,  2571,  2573,  2577,  2588,  2602,
-  2691,  2698,  2701,  2709,  2720,  2729,  2733,  2748,  2751,  2756,
-  2758,  2760,  2762,  2764,  2766,  2769,  2771,  2779,  2785,  2787,
-  2790,  2793,  2795,  2806,  2811,  2814,  2819,  2822,  2823,  2834,
-  2837,  2838,  2849,  2851,  2854,  2856,  2859,  2866,  2874,  2881,
-  2887,  2893,  2901,  2905,  2910,  2914,  2917,  2926,  2928,  2932,
-  2935,  2940,  2944,  2949,  2959,  2962,  2966,  2970,  2978,  2983,
-  2989,  2992,  2994,  2996,  3002,  3005,  3007,  3009,  3011,  3015,
-  3018,  3036,  3046,  3048,  3049,  3053,  3058,  3061,  3063,  3065,
-  3067,  3071,  3077,  3080,  3082,  3084,  3086,  3090,  3093,  3096,
-  3098,  3100,  3102,  3106,  3109,  3112,  3114,  3116,  3118,  3125,
-  3136,  3140,  3145,  3149,  3154,  3156,  3160,  3163,  3165,  3169,
-  3171,  3172,  3175,  3177,  3179,  3185,  3200,  3206,  3212,  3226,
-  3228,  3232,  3246,  3248,  3250,  3254,  3260,  3273,  3275,  3279,
-  3290,  3296,  3298,  3299,  3300,  3308,  3313,  3322,  3323,  3327,
-  3330,  3336,  3342,  3345,  3347,  3349,  3351,  3355,  3359,  3363,
-  3366,  3371,  3374,  3376,  3378,  3380,  3382,  3384,  3386,  3388,
-  3392,  3396,  3400,  3404,  3405,  3407,  3409,  3411,  3413,  3415,
-  3417,  3419,  3421,  3429,  3431,  3432,  3433,  3436,  3444,  3449,
-  3456,  3458,  3463,  3465,  3468,  3482,  3485,  3488,  3497,  3509,
-  3520,  3540,  3550,  3553,  3561,  3573,  3576,  3579,  3582,  3598,
-  3601,  3612,  3613,  3617,  3632,  3660,  3672,  3686,  3700,  3713,
-  3732,  3750,  3778,  3786,  3807,  3825,  3838,  3839,  3842,  3842,
-  3845,  3845,  3848,  3848,  3854,  3860,  3863,  3868,  3875,  3884,
-  3893,  3902,  3910,  3923,  3925,  3929,  3931,  3934,  3941,  3944,
-  3952,  3968,  3979,  3991,  3993,  3996,  4006,  4016,  4027,  4029,
-  4031,  4034,  4051,  4057,  4065,  4067,  4069,  4073,  4076,  4077,
-  4085,  4089,  4093,  4096,  4097,  4103,  4106,  4109,  4111,  4115,
-  4120,  4123,  4133,  4138,  4139,  4147,  4153,  4158,  4162,  4167,
-  4171,  4175,  4179,  4184,  4195,  4209,  4213,  4216,  4218,  4222,
-  4226,  4229,  4232,  4234,  4238,  4240,  4247,  4254,  4257,  4260,
-  4264,  4268,  4274,  4278,  4283,  4285,  4288,  4293,  4299,  4310,
-  4313,  4315,  4319,  4324,  4326,  4333,  4336,  4338,  4340,  4346,
-  4351,  4354,  4356,  4358,  4360,  4362,  4364,  4366,  4368,  4370,
-  4372,  4374,  4376,  4378,  4380,  4382,  4384,  4386,  4388,  4390,
-  4392,  4394,  4396,  4398,  4400,  4402,  4404,  4406,  4408,  4410,
-  4412,  4414,  4416,  4419,  4421
+  1058,  1059,  1060,  1063,  1067,  1068,  1072,  1076,  1079,  1081,
+  1085,  1088,  1091,  1095,  1098,  1100,  1102,  1104,  1111,  1124,
+  1126,  1128,  1130,  1136,  1139,  1142,  1145,  1148,  1152,  1155,
+  1158,  1162,  1164,  1168,  1172,  1174,  1178,  1181,  1188,  1191,
+  1193,  1201,  1214,  1220,  1227,  1229,  1231,  1244,  1247,  1249,
+  1251,  1253,  1255,  1257,  1259,  1261,  1263,  1265,  1267,  1269,
+  1271,  1273,  1275,  1277,  1279,  1281,  1283,  1285,  1287,  1291,
+  1293,  1295,  1312,  1315,  1316,  1317,  1318,  1319,  1322,  1325,
+  1328,  1332,  1335,  1337,  1342,  1344,  1345,  1348,  1350,  1352,
+  1354,  1358,  1361,  1365,  1367,  1368,  1369,  1373,  1381,  1382,
+  1383,  1391,  1399,  1407,  1409,  1421,  1451,  1458,  1465,  1467,
+  1476,  1481,  1504,  1548,  1549,  1553,  1557,  1561,  1565,  1567,
+  1571,  1573,  1581,  1583,  1588,  1594,  1598,  1603,  1608,  1610,
+  1615,  1630,  1645,  1656,  1668,  1676,  1685,  1729,  1732,  1736,
+  1739,  1743,  1746,  1751,  1753,  1757,  1770,  1773,  1780,  1787,
+  1792,  1794,  1799,  1801,  1808,  1810,  1814,  1818,  1824,  1828,
+  1831,  1834,  1837,  1847,  1849,  1852,  1856,  1859,  1862,  1865,
+  1868,  1874,  1880,  1882,  1887,  1889,  1898,  1901,  1903,  1906,
+  1912,  1914,  1924,  1928,  1931,  1934,  1939,  1942,  1950,  1952,
+  1954,  1956,  1959,  1962,  1977,  1996,  1999,  2001,  2004,  2006,
+  2009,  2011,  2014,  2016,  2019,  2022,  2026,  2032,  2033,  2045,
+  2052,  2055,  2061,  2065,  2070,  2076,  2077,  2085,  2088,  2092,
+  2095,  2099,  2104,  2107,  2111,  2114,  2116,  2118,  2120,  2127,
+  2129,  2130,  2131,  2135,  2138,  2142,  2145,  2151,  2153,  2156,
+  2159,  2162,  2168,  2171,  2174,  2176,  2178,  2182,  2188,  2196,
+  2198,  2202,  2204,  2209,  2212,  2215,  2217,  2219,  2223,  2227,
+  2232,  2236,  2239,  2244,  2248,  2251,  2254,  2258,  2293,  2299,
+  2308,  2328,  2330,  2333,  2335,  2340,  2342,  2344,  2346,  2348,
+  2352,  2357,  2362,  2368,  2373,  2378,  2380,  2384,  2389,  2392,
+  2399,  2427,  2433,  2435,  2438,  2441,  2443,  2447,  2449,  2453,
+  2479,  2508,  2511,  2512,  2533,  2556,  2558,  2562,  2573,  2587,
+  2676,  2683,  2686,  2694,  2705,  2714,  2718,  2733,  2736,  2741,
+  2743,  2745,  2747,  2749,  2751,  2754,  2756,  2764,  2770,  2772,
+  2775,  2778,  2780,  2791,  2796,  2799,  2804,  2807,  2808,  2819,
+  2822,  2823,  2834,  2836,  2839,  2841,  2844,  2851,  2859,  2866,
+  2872,  2878,  2886,  2890,  2895,  2899,  2902,  2911,  2913,  2917,
+  2920,  2925,  2929,  2934,  2944,  2947,  2951,  2955,  2963,  2968,
+  2974,  2977,  2979,  2981,  2987,  2990,  2992,  2994,  2996,  3000,
+  3003,  3021,  3031,  3033,  3034,  3038,  3043,  3046,  3048,  3050,
+  3052,  3056,  3062,  3065,  3067,  3069,  3071,  3075,  3078,  3081,
+  3083,  3085,  3087,  3091,  3094,  3097,  3099,  3101,  3103,  3110,
+  3121,  3125,  3130,  3134,  3139,  3141,  3145,  3148,  3150,  3154,
+  3156,  3157,  3160,  3162,  3164,  3170,  3185,  3191,  3197,  3211,
+  3213,  3217,  3231,  3233,  3235,  3239,  3245,  3258,  3260,  3264,
+  3275,  3281,  3283,  3284,  3285,  3293,  3298,  3307,  3308,  3312,
+  3315,  3321,  3327,  3330,  3332,  3334,  3336,  3340,  3344,  3348,
+  3351,  3356,  3359,  3361,  3363,  3365,  3367,  3369,  3371,  3373,
+  3377,  3381,  3385,  3389,  3390,  3392,  3394,  3396,  3398,  3400,
+  3402,  3404,  3406,  3414,  3416,  3417,  3418,  3421,  3427,  3429,
+  3434,  3436,  3439,  3453,  3456,  3459,  3463,  3466,  3473,  3475,
+  3478,  3480,  3482,  3485,  3488,  3491,  3494,  3496,  3499,  3503,
+  3505,  3511,  3513,  3514,  3516,  3521,  3523,  3525,  3527,  3529,
+  3532,  3533,  3535,  3538,  3539,  3542,  3542,  3545,  3545,  3548,
+  3548,  3550,  3552,  3554,  3556,  3562,  3568,  3571,  3574,  3580,
+  3582,  3584,  3588,  3590,  3593,  3600,  3603,  3611,  3615,  3617,
+  3620,  3622,  3625,  3629,  3631,  3634,  3636,  3639,  3656,  3662,
+  3670,  3672,  3674,  3678,  3681,  3682,  3690,  3694,  3698,  3701,
+  3702,  3708,  3711,  3714,  3716,  3720,  3725,  3728,  3738,  3743,
+  3744,  3752,  3758,  3763,  3767,  3772,  3776,  3780,  3784,  3789,
+  3800,  3814,  3818,  3821,  3823,  3827,  3831,  3834,  3837,  3839,
+  3843,  3845,  3852,  3859,  3862,  3865,  3869,  3873,  3879,  3883,
+  3888,  3890,  3893,  3898,  3904,  3915,  3918,  3920,  3924,  3929,
+  3931,  3938,  3941,  3943,  3945,  3951,  3956,  3959,  3961,  3963,
+  3965,  3967,  3969,  3971,  3973,  3975,  3977,  3979,  3981,  3983,
+  3985,  3987,  3989,  3991,  3993,  3995,  3997,  3999,  4001,  4003,
+  4005,  4007,  4009,  4011,  4013,  4015,  4017,  4019,  4021,  4024,
+  4026
 };
 #endif
 
@@ -776,17 +774,16 @@ static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER"
 "functional_cast","type_name","nested_name_specifier","nested_name_specifier_1",
 "typename_sub","typename_sub0","typename_sub1","typename_sub2","explicit_template_type",
 "complex_type_name","ptr_to_mem","global_scope","new_declarator","direct_new_declarator",
-"absdcl","direct_abstract_declarator","stmts","errstmt",".pushlevel",".poplevel",
-"maybe_label_decls","label_decls","label_decl","compstmt_or_error","compstmt",
-"@28","simple_if","@29","@30","implicitly_scoped_stmt","@31","stmt","simple_stmt",
-"@32","@33","@34","@35","@36","@37","@38","@39","@40","@41","@42","@43","@44",
-"@45","@46","function_try_block","@47","@48","try_block","@49","@50","handler_seq",
-"handler","@51","@52","@53","type_specifier_seq","handler_args","label_colon",
-"for.init.statement","maybe_cv_qualifier","xexpr","asm_operands","nonnull_asm_operands",
-"asm_operand","asm_clobbers","parmlist","complex_parmlist","defarg","@54","defarg1",
-"parms","parms_comma","named_parm","full_parm","parm","see_typename","bad_parm",
-"exception_specification_opt","ansi_raise_identifier","ansi_raise_identifiers",
-"conversion_declarator","operator","operator_name", NULL
+"absdcl","direct_abstract_declarator","stmts","errstmt","maybe_label_decls",
+"label_decls","label_decl","compstmt_or_error","compstmt","@28","simple_if",
+"@29","@30","implicitly_scoped_stmt","@31","stmt","simple_stmt","@32","@33",
+"@34","@35","@36","@37","@38","@39","@40","@41","@42","@43","@44","@45","function_try_block",
+"@46","@47","try_block","@48","@49","handler_seq","handler","@50","@51","type_specifier_seq",
+"handler_args","label_colon","for.init.statement","maybe_cv_qualifier","xexpr",
+"asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
+"complex_parmlist","defarg","@52","defarg1","parms","parms_comma","named_parm",
+"full_parm","parm","see_typename","bad_parm","exception_specification_opt","ansi_raise_identifier",
+"ansi_raise_identifiers","conversion_declarator","operator","operator_name", NULL
 };
 #endif
 
@@ -857,25 +854,25 @@ static const short yyr1[] = {     0,
    313,   314,   315,   315,   315,   315,   315,   315,   315,   316,
    316,   317,   317,   317,   317,   317,   317,   317,   317,   317,
    317,   317,   318,   318,   318,   318,   318,   318,   318,   318,
-   318,   318,   318,   319,   319,   319,   319,   320,   321,   322,
-   323,   323,   324,   324,   325,   326,   326,   328,   327,   330,
-   331,   329,   332,   333,   332,   334,   334,   335,   335,   336,
-   337,   335,   335,   338,   339,   335,   340,   341,   335,   342,
-   343,   344,   345,   335,   346,   347,   335,   348,   335,   349,
-   335,   350,   335,   335,   335,   335,   335,   335,   335,   335,
-   335,   335,   335,   335,   335,   335,   335,   352,   353,   351,
-   355,   356,   354,   357,   357,   359,   360,   361,   358,   362,
-   362,   363,   363,   364,   364,   364,   364,   365,   365,   365,
-   366,   366,   367,   367,   367,   368,   368,   369,   369,   370,
-   371,   371,   372,   372,   372,   373,   373,   373,   373,   373,
-   373,   373,   373,   373,   373,   375,   374,   376,   376,   377,
-   377,   377,   377,   377,   378,   378,   379,   379,   379,   379,
-   379,   379,   380,   380,   381,   381,   382,   383,   383,   384,
-   384,   384,   385,   386,   386,   387,   387,   387,   387,   388,
-   389,   389,   389,   389,   389,   389,   389,   389,   389,   389,
-   389,   389,   389,   389,   389,   389,   389,   389,   389,   389,
-   389,   389,   389,   389,   389,   389,   389,   389,   389,   389,
-   389,   389,   389,   389,   389
+   318,   318,   318,   319,   319,   319,   319,   320,   321,   321,
+   322,   322,   323,   324,   324,   326,   325,   328,   329,   327,
+   330,   331,   330,   332,   332,   333,   333,   334,   333,   333,
+   335,   336,   333,   337,   338,   333,   339,   340,   341,   342,
+   333,   343,   344,   333,   345,   333,   346,   333,   347,   333,
+   333,   333,   333,   333,   333,   333,   333,   333,   333,   333,
+   333,   333,   333,   333,   349,   350,   348,   352,   353,   351,
+   354,   354,   356,   357,   355,   358,   358,   359,   359,   360,
+   360,   360,   360,   361,   361,   361,   362,   362,   363,   363,
+   363,   364,   364,   365,   365,   366,   367,   367,   368,   368,
+   368,   369,   369,   369,   369,   369,   369,   369,   369,   369,
+   369,   371,   370,   372,   372,   373,   373,   373,   373,   373,
+   374,   374,   375,   375,   375,   375,   375,   375,   376,   376,
+   377,   377,   378,   379,   379,   380,   380,   380,   381,   382,
+   382,   383,   383,   383,   383,   384,   385,   385,   385,   385,
+   385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
+   385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
+   385,   385,   385,   385,   385,   385,   385,   385,   385,   385,
+   385
 };
 
 static const short yyr2[] = {     0,
@@ -945,32 +942,32 @@ static const short yyr2[] = {     0,
      3,     1,     3,     2,     3,     2,     2,     3,     1,     3,
      4,     3,     2,     2,     1,     3,     2,     2,     1,     2,
      3,     1,     3,     1,     6,     4,     4,     3,     5,     3,
-     3,     3,     2,     1,     1,     2,     2,     2,     0,     0,
-     0,     1,     1,     2,     3,     1,     2,     0,     5,     0,
-     0,     6,     1,     0,     4,     1,     1,     1,     2,     0,
-     0,     6,     1,     0,     0,     7,     0,     0,     7,     0,
-     0,     0,     0,    14,     0,     0,     9,     0,     5,     0,
-     7,     0,     4,     2,     2,     2,     3,     6,     8,    10,
-    12,     4,     3,     2,     2,     1,     1,     0,     0,     6,
-     0,     0,     5,     1,     2,     0,     0,     0,     8,     1,
-     1,     3,     3,     2,     2,     2,     2,     2,     1,     2,
-     0,     1,     0,     1,     1,     0,     1,     1,     3,     4,
-     1,     3,     0,     1,     1,     1,     2,     2,     2,     1,
-     1,     2,     2,     2,     2,     0,     3,     1,     1,     1,
-     2,     2,     2,     4,     2,     2,     2,     2,     2,     2,
-     1,     2,     1,     2,     1,     1,     0,     0,     1,     0,
-     4,     2,     1,     1,     3,     0,     3,     3,     3,     1,
+     3,     3,     2,     1,     1,     2,     2,     2,     0,     1,
+     1,     2,     3,     1,     2,     0,     3,     0,     0,     5,
+     1,     0,     2,     1,     1,     1,     2,     0,     4,     1,
+     0,     0,     5,     0,     0,     7,     0,     0,     0,     0,
+    12,     0,     0,     7,     0,     5,     0,     7,     0,     4,
+     2,     2,     2,     3,     6,     8,    10,    12,     4,     3,
+     2,     2,     1,     1,     0,     0,     6,     0,     0,     5,
+     1,     2,     0,     0,     5,     1,     1,     3,     3,     2,
+     2,     2,     2,     2,     1,     2,     0,     1,     0,     1,
+     1,     0,     1,     1,     3,     4,     1,     3,     0,     1,
+     1,     1,     2,     2,     2,     1,     1,     2,     2,     2,
+     2,     0,     3,     1,     1,     1,     2,     2,     2,     4,
+     2,     2,     2,     2,     2,     2,     1,     2,     1,     2,
+     1,     1,     0,     0,     1,     0,     4,     2,     1,     1,
+     3,     0,     3,     3,     3,     1,     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,     3,     2,     2,     2,     2,     3,     2,
-     2,     4,     4,     3,     2
+     2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+     2,     2,     2,     2,     3,     2,     2,     4,     4,     3,
+     2
 };
 
 static const short yydefact[] = {     3,
     13,    13,     5,     0,     4,     0,   256,   600,   601,     0,
    358,   370,   547,     0,    11,    12,     0,     0,     0,    10,
-   456,   810,     0,     0,     0,   149,   632,   257,   258,    65,
-     0,     0,   797,     0,    37,     0,     0,    14,     0,     8,
+   456,   806,     0,     0,     0,   149,   632,   257,   258,    65,
+     0,     0,   793,     0,    37,     0,     0,    14,     0,     8,
      0,    17,    16,    71,    92,    68,     0,   602,   153,   275,
    254,   276,   578,     0,   345,     0,   344,   363,     0,   383,
    362,   400,   369,     0,   469,   468,   475,   474,   473,   451,
@@ -989,12 +986,12 @@ static const short yydefact[] = {     3,
     60,    91,   346,     0,   381,   361,    89,   352,   376,   377,
    347,   365,   367,   356,   378,     0,    57,   401,   457,   458,
    459,   460,   472,   131,   130,   132,   461,   462,   466,     0,
-     0,   475,   797,   471,   490,   491,   548,   364,     0,   395,
+     0,   475,   793,   471,   490,   491,   548,   364,     0,   395,
    601,     0,   630,   153,   593,   594,   590,   566,   604,     0,
-   565,   562,     0,   845,   841,   840,   838,   820,   825,   826,
-     0,   832,   831,   817,   818,   816,   835,   824,   821,   822,
-   823,   827,   828,   814,   815,   811,   812,   813,   837,   829,
-   830,   819,   836,     0,   833,   740,   363,   741,   806,   259,
+   565,   562,     0,   841,   837,   836,   834,   816,   821,   822,
+     0,   828,   827,   813,   814,   812,   831,   820,   817,   818,
+   819,   823,   824,   810,   811,   807,   808,   809,   833,   825,
+   826,   815,   832,     0,   829,   736,   363,   737,   802,   259,
    256,   547,   279,   324,     0,     0,     0,     0,   320,   318,
    292,   322,   323,     0,     0,     0,     0,     0,   258,   251,
      0,     0,   164,   163,     0,   165,   166,     0,     0,   167,
@@ -1008,15 +1005,15 @@ static const short yydefact[] = {     3,
    591,    32,    31,    41,     0,   358,   139,     0,     0,   363,
    137,     0,     0,   574,     0,   573,   253,   270,     0,   582,
    269,     0,   581,     0,   277,   586,     0,     0,    13,     0,
-   149,     9,     9,     0,   397,   399,   104,    75,   109,   728,
+   149,     9,     9,     0,   397,   399,   104,    75,   109,   725,
      0,    67,    66,    74,   107,     0,     0,   105,    70,   588,
-     0,     0,   553,     0,   800,     0,   558,     0,   557,     0,
+     0,     0,   553,     0,   796,     0,   558,     0,   557,     0,
      0,     0,     0,   545,   398,     0,    59,   549,   545,   571,
      0,   349,   350,     0,    58,   398,   354,   353,   355,   348,
    368,   385,   384,   463,   467,   465,     0,   470,   476,     0,
      0,   366,   398,   545,    76,     0,     0,     0,     0,   545,
-    82,   546,   577,   601,   631,   153,     0,     0,   834,   839,
-   365,   545,   545,     0,   545,   844,   157,     0,     0,     0,
+    82,   546,   577,   601,   631,   153,     0,     0,   830,   835,
+   365,   545,   545,     0,   545,   840,   157,     0,     0,     0,
    200,     0,     0,   202,   215,   216,     0,     0,     0,     0,
      0,   252,   199,   196,   195,   197,     0,     0,     0,     0,
      0,   278,     0,     0,     0,   194,   155,   156,   272,     0,
@@ -1024,1241 +1021,1246 @@ static const short yydefact[] = {     3,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,   288,   290,   291,   328,
    327,     0,     0,     0,     0,     0,   204,   543,     0,   212,
-   325,   317,     0,     0,   797,   306,   309,   310,     0,     0,
+   325,   317,     0,     0,   793,   306,   309,   310,     0,     0,
    337,   649,   645,   654,     0,   549,   545,   545,   545,   339,
    652,     0,   599,   341,     0,     0,   340,   305,     0,   301,
    319,   321,   596,     0,   302,   152,   154,     0,   147,     0,
    363,   145,   540,   454,   538,   441,     0,     0,   372,     0,
      0,   373,   374,   375,   411,   412,   413,   410,     0,   403,
    406,     0,     3,     0,   615,   157,   618,    28,    36,    35,
-    45,     0,     0,     0,    49,    53,    42,   796,   791,     0,
-   342,   363,    45,   343,   795,    51,   150,   135,   133,   150,
+    45,     0,     0,     0,    49,    53,    42,   792,   787,     0,
+   342,   363,    45,   343,   791,    51,   150,   135,   133,   150,
    151,   273,   580,   579,   277,   583,     0,    19,    21,    71,
-     0,   110,   326,     0,   678,    73,   676,   422,     0,   418,
-   417,   192,     0,   191,   550,   587,     0,   770,   771,     0,
-   765,   363,     0,   764,   766,   798,   780,     0,     0,   585,
+     0,   110,   326,     0,   676,    73,   674,   422,     0,   418,
+   417,   192,     0,   191,   550,   587,     0,   766,   767,     0,
+   761,   363,     0,   760,   762,   794,   776,     0,     0,   585,
    556,   555,     0,     0,   570,     0,   393,   392,   380,   569,
-     0,   800,   559,   351,   382,   394,   398,   464,   600,   601,
-   797,     0,   797,   602,   477,   478,   480,   797,   483,   482,
+     0,   796,   559,   351,   382,   394,   398,   464,   600,   601,
+   793,     0,   793,   602,   477,   478,   480,   793,   483,   482,
      0,   513,   601,     0,   504,     0,     0,   516,     0,   103,
     98,     0,   153,   517,   520,     0,   496,     0,   101,     0,
-   398,   396,   800,   763,   157,   157,   605,   157,   800,   763,
-   545,    79,   545,    85,   843,   842,   806,   806,   806,     0,
+   398,   396,   796,   759,   157,   157,   605,   157,   796,   759,
+   545,    79,   545,    85,   839,   838,   802,   802,   802,     0,
      0,     0,     0,   599,     0,     0,     0,     0,   363,     0,
      0,     0,   284,     0,   282,   283,     0,   223,   160,   256,
    600,   601,   257,   258,     0,     0,   423,   452,     0,   250,
-   249,   755,   754,     0,   247,   246,   244,   245,   243,   242,
+   249,   751,   750,     0,   247,   246,   244,   245,   243,   242,
    241,   238,   239,   240,   236,   237,   231,   232,   233,   234,
    235,   229,   230,     0,     0,     0,     0,     0,     0,   206,
    220,     0,     0,   205,   545,   545,     0,   545,   542,   639,
      0,     0,     0,     0,     0,   308,     0,   312,     0,   314,
-     0,   648,   647,   644,   643,   796,     0,     0,   663,     0,
-     0,   800,   338,   800,   650,   545,   763,   549,   649,   645,
+     0,   648,   647,   644,   643,   792,     0,     0,   663,     0,
+     0,   796,   338,   796,   650,   545,   759,   549,   649,   645,
      0,     0,   545,     0,     0,     0,     0,     0,   260,   150,
    143,   141,   150,     0,   455,     0,   454,   190,   189,   188,
    187,   405,     0,     0,    25,     0,    26,   619,     0,    47,
-    44,    45,     0,    40,     0,     0,   649,   645,     0,   787,
-   545,   790,   792,     0,   788,   789,    46,   461,     0,   140,
+    44,    45,     0,    40,     0,     0,   649,   645,     0,   783,
+   545,   786,   788,     0,   784,   785,    46,   461,     0,   140,
    150,   150,   138,    18,    20,   386,   127,   115,   128,   129,
-     0,   108,   111,     0,     0,     0,     0,   677,   669,   419,
-     0,   106,   554,   551,   769,   786,   775,   773,     0,   552,
-   768,   785,   774,   772,   767,   799,   782,   793,   783,   776,
-   781,   802,     0,   390,   568,   567,   389,   487,     0,   486,
-   797,   797,   797,     0,   545,   763,   512,   505,   517,   506,
-   398,   398,   502,   503,   500,   501,   545,   763,   256,   600,
+     0,   108,   111,     0,     0,     0,     0,   675,   669,   419,
+     0,   106,   554,   551,   765,   782,   771,   769,     0,   552,
+   764,   781,   770,   768,   763,   795,   778,   789,   779,   772,
+   777,   798,     0,   390,   568,   567,   389,   487,     0,   486,
+   793,   793,   793,     0,   545,   759,   512,   505,   517,   506,
+   398,   398,   502,   503,   500,   501,   545,   759,   256,   600,
      0,   385,    99,   508,   518,   523,   524,   385,   385,     0,
      0,   385,    97,   509,   521,   385,   497,   498,   499,   398,
-     0,   448,    78,     0,     0,     0,     0,    84,     0,   800,
-   763,   800,   763,   808,   807,   809,   261,   293,   201,   203,
+     0,   448,    78,     0,     0,     0,     0,    84,     0,   796,
+   759,   796,   759,   804,   803,   805,   261,   293,   201,   203,
    299,   300,     0,     0,     0,     0,   283,   286,     0,     0,
      0,     0,   224,     0,   287,   289,   218,   217,   208,     0,
    207,   222,     0,     0,   636,   634,     0,   637,   549,   213,
      0,     0,   157,   315,     0,     0,     0,   646,   642,   653,
-   545,   662,   660,   661,   651,   800,     0,   658,     0,   597,
+   545,   662,   660,   661,   651,   796,     0,   658,     0,   597,
    598,     0,   304,   148,   150,   150,   146,   541,   539,   443,
      0,   404,   402,   256,     0,    23,   626,    48,    43,    50,
     54,   648,   644,   649,   645,     0,   561,     0,   545,   650,
     52,   136,   134,     0,   113,     0,   117,     0,   119,     0,
-   121,     0,   729,   671,     0,   420,   649,   645,     0,   278,
-     0,   595,   794,     0,     0,   803,   804,     0,     0,   387,
-     0,     0,     0,   489,   488,   481,   800,     0,   507,   416,
-   416,   800,     0,     0,     0,   398,   398,     0,   398,   398,
-     0,   398,     0,   416,     0,   436,   545,   263,   262,   264,
-   545,    81,     0,    87,     0,     0,     0,     0,     0,     0,
-   426,     0,   424,   227,   248,     0,   209,   210,   219,   221,
-   635,   633,   640,   638,     0,   214,     0,     0,   307,   311,
-   313,   800,   656,   545,   657,   144,   142,   440,     0,   407,
-   409,   648,   644,   566,   650,   114,   112,     0,     0,     0,
-     0,     0,   180,   670,     0,   672,   673,   421,     0,   598,
-   784,   778,   779,   777,     0,   801,   391,     0,   484,   485,
-   479,    94,   545,   511,   515,    96,   545,   398,   398,   532,
-   416,   256,   600,     0,   519,   525,   526,   385,   385,   416,
-   416,     0,   416,   522,   510,     0,   800,   800,   545,   545,
-     0,     0,     0,     0,   425,     0,     0,   211,   641,   316,
-   262,   659,   800,     0,   116,   118,   120,   736,   730,   734,
-   414,     0,   679,     0,   256,   600,   601,   680,   694,   697,
-   700,   669,     0,     0,     0,     0,     0,     0,   257,   726,
-   731,     0,   751,     0,   688,     0,     0,   363,     0,   665,
-   686,   693,   664,   687,   727,     0,   674,   283,   805,   388,
-   800,   800,   531,   528,   530,     0,     0,   398,   398,   398,
-   527,   529,   514,   438,     0,   437,   432,    77,    83,   800,
-   800,   295,   296,   297,   298,   427,   544,   655,   408,   669,
-   735,     0,   675,   668,   183,   744,   746,   747,   669,   669,
-   669,     0,     0,     0,   712,   714,   715,   716,     0,     0,
-     0,   745,     0,   334,   752,     0,   689,   332,   385,     0,
-   333,     0,   385,     0,     0,     0,   181,   667,   666,   690,
-   725,   724,    93,    95,   398,   398,   537,   416,   416,     0,
-     0,   450,    80,    86,     0,   415,     0,     0,   684,   683,
-     0,     0,     0,     0,   708,     0,   717,     0,   723,   732,
-     0,   330,   331,     0,     0,     0,   329,   182,   669,   536,
-   534,   533,   535,   435,   434,   428,    68,    71,     0,   737,
-   172,     0,   681,   695,     0,   698,   671,   749,   701,     0,
-   179,     0,   363,     0,     0,     0,   713,   722,     0,     0,
-   691,     0,   433,     0,     0,     0,     0,   669,     0,   670,
-     0,   750,   669,   748,   705,   385,   710,   709,   733,   756,
-     0,   670,   431,     0,   430,   742,   743,   738,   173,   682,
-   184,   670,   186,   685,   170,     0,     0,     0,   669,   398,
-     0,     0,     0,   757,   758,   718,   692,   429,   670,   671,
-   696,     0,   699,   176,     0,   175,   706,     0,   711,     0,
-   756,     0,     0,   739,   185,   171,   702,   670,   177,     0,
-     0,   719,   759,     0,   707,     0,   760,     0,     0,     0,
-   178,   761,     0,   720,   703,     0,     0,     0,   762,   721,
-   670,   704,     0,     0,     0
+   121,     0,   726,     0,   180,   677,     0,   670,   671,     0,
+   420,   649,   645,     0,   278,     0,   595,   790,     0,     0,
+   799,   800,     0,     0,   387,     0,     0,     0,   489,   488,
+   481,   796,     0,   507,   416,   416,   796,     0,     0,     0,
+   398,   398,     0,   398,   398,     0,   398,     0,   416,     0,
+   436,   545,   263,   262,   264,   545,    81,     0,    87,     0,
+     0,     0,     0,     0,     0,   426,     0,   424,   227,   248,
+     0,   209,   210,   219,   221,   635,   633,   640,   638,     0,
+   214,     0,     0,   307,   311,   313,   796,   656,   545,   657,
+   144,   142,   440,     0,   407,   409,   648,   644,   566,   650,
+   114,   112,     0,     0,     0,     0,   414,     0,     0,   256,
+   600,   601,   678,   691,   694,   697,   702,     0,     0,     0,
+     0,     0,     0,   257,   723,   728,     0,   747,     0,   686,
+     0,     0,   363,     0,   665,   684,   690,   664,   685,   724,
+     0,   672,   421,     0,   598,   780,   774,   775,   773,     0,
+   797,   391,     0,   484,   485,   479,    94,   545,   511,   515,
+    96,   545,   398,   398,   532,   416,   256,   600,     0,   519,
+   525,   526,   385,   385,   416,   416,     0,   416,   522,   510,
+     0,   796,   796,   545,   545,     0,     0,     0,     0,   425,
+     0,     0,   211,   641,   316,   262,   659,   796,     0,   116,
+   118,   120,   733,   727,   731,     0,   673,   668,   183,   740,
+   742,   743,     0,     0,   682,     0,     0,     0,   709,   711,
+   712,   713,     0,     0,     0,   741,     0,   334,   748,     0,
+   687,   332,   385,     0,   333,     0,   385,     0,     0,     0,
+   181,   667,   666,   688,   722,   721,   283,   801,   388,   796,
+   796,   531,   528,   530,     0,     0,   398,   398,   398,   527,
+   529,   514,   438,     0,   437,   432,    77,    83,   796,   796,
+   295,   296,   297,   298,   427,   544,   655,   408,     0,   732,
+   415,   172,     0,   679,   692,   681,     0,     0,     0,     0,
+     0,   705,     0,   714,     0,   720,   729,     0,   330,   331,
+     0,     0,     0,   329,   182,   682,    93,    95,   398,   398,
+   537,   416,   416,     0,     0,   450,    80,    86,     0,   734,
+   179,     0,   363,     0,   682,     0,   695,   683,   669,   745,
+   698,     0,     0,     0,     0,   710,   719,     0,     0,   689,
+   536,   534,   533,   535,   435,   434,   428,    68,    71,     0,
+     0,     0,   173,   385,   680,   184,   693,   186,     0,   746,
+     0,   744,   703,   707,   706,   730,   752,     0,     0,   433,
+   738,   739,   735,   398,   669,   170,     0,     0,   176,     0,
+   175,   682,     0,     0,     0,   753,   754,   715,   431,     0,
+   430,     0,   185,     0,   696,   699,   704,   708,     0,   752,
+     0,     0,   429,   177,   171,     0,     0,     0,   716,   755,
+     0,     0,   756,     0,     0,   178,   700,   757,     0,   717,
+     0,     0,     0,   701,   758,   718,     0,     0,     0
 };
 
-static const short yydefgoto[] = {  1563,
+static const short yydefgoto[] = {  1547,
    409,     2,   410,   160,   669,   311,   165,     3,     4,    38,
    633,   353,   738,   375,    40,   739,   385,   644,   900,   645,
    646,   647,    42,    43,   421,   168,   164,    44,   740,   754,
   1021,   760,  1023,    46,   741,   742,   169,   170,   422,   672,
    932,   933,   613,   934,   218,    47,   922,   921,   660,   657,
   1086,  1085,   883,   880,   135,   920,    48,    49,   529,   312,
-   313,   314,   315,  1314,  1507,  1453,  1525,  1462,  1546,  1224,
-  1502,  1520,   347,   872,   316,   566,   834,   317,   318,   348,
+   313,   314,   315,  1249,  1498,  1404,  1500,  1442,  1531,  1126,
+  1477,  1495,   347,   872,   316,   566,   834,   317,   318,   348,
    320,   338,    51,   236,   377,   398,    52,    53,   321,   524,
-   322,   323,   324,   325,   423,   326,  1315,   462,   588,   327,
-  1316,    55,   201,   650,   328,   202,   502,   203,   181,   194,
-    59,   445,   463,  1238,   707,  1139,   182,   195,    60,   473,
-   708,    61,    62,   629,   630,   631,  1292,   428,   797,   798,
-  1447,  1448,  1412,  1346,  1266,    63,   617,   341,  1166,  1347,
+   322,   323,   324,   325,   423,   326,  1250,   462,   588,   327,
+  1251,    55,   201,   650,   328,   202,   502,   203,   181,   194,
+    59,   445,   463,  1273,   707,  1144,   182,   195,    60,   473,
+   708,    61,    62,   629,   630,   631,  1228,   428,   797,   798,
+  1468,  1469,  1436,  1385,  1301,    63,   617,   341,  1171,  1386,
   1042,   886,    64,    65,    66,    67,   222,    68,    69,    70,
    224,   725,   726,   727,   728,   226,   470,   471,   746,   747,
-   748,   994,  1004,   995,  1255,   996,   997,  1256,  1257,   614,
+   748,   994,  1004,   995,  1290,   996,   997,  1291,  1292,   614,
    615,   567,   862,   330,   431,   432,   175,   183,    72,    73,
     74,   184,   185,   152,    76,   131,   331,   332,   333,    78,
    334,    80,   730,   122,   123,   124,   478,   104,    81,   335,
-   839,   840,   857,   591,  1319,  1320,  1419,  1293,  1225,  1226,
-  1227,   676,  1321,   939,  1322,  1369,  1478,  1421,  1455,  1323,
-  1324,  1439,  1492,  1370,  1479,  1371,  1481,  1372,  1483,  1544,
-  1558,  1509,  1538,  1466,  1511,  1426,   424,   673,  1221,  1325,
-  1383,  1469,  1289,  1290,  1360,  1476,  1519,  1464,  1450,  1326,
-  1459,  1386,   804,  1513,  1514,  1515,  1553,   693,   694,   961,
-  1135,  1234,   695,   696,   697,   957,   698,   145,   959,   700,
-  1137,  1138,   496,    83,    84
+   839,   840,   857,   591,  1254,  1255,  1127,  1128,  1129,   676,
+  1256,   939,  1257,  1333,  1445,  1407,  1408,  1258,  1259,  1426,
+  1334,  1446,  1335,  1479,  1336,  1481,  1526,  1541,  1337,  1502,
+  1455,  1503,  1413,   424,   673,  1226,  1260,  1347,  1458,  1324,
+  1325,  1399,  1472,  1444,  1440,  1261,  1451,  1350,   804,  1505,
+  1506,  1507,  1539,   693,   694,   961,  1140,  1269,   695,   696,
+   697,   957,   698,   145,   959,   700,  1142,  1143,   496,    83,
+    84
 };
 
-static const short yypact[] = {   109,
-   204,-32768,-32768,  4917,-32768,     8,   136,   270,   313,   171,
-    90,-32768,-32768,   946,-32768,-32768,   178,   244,   307,-32768,
--32768,-32768,  1197,  1670,   886,   186,-32768,   287,   340,-32768,
-  2156,  2156,-32768,  4499,-32768,  4917,   361,-32768,   401,   273,
-  5377,-32768,-32768,   372,  1033,   473,   474,   430,-32768,-32768,
--32768,-32768,   383,  2257,-32768,  5640,-32768,  2061,   756,-32768,
-   506,-32768,-32768,  1650,-32768,-32768,   493,-32768,-32768,   511,
10422,-32768,-32768,-32768,  2002,-32768,-32768,-32768,  1085,-32768,
--32768,   528,  6174,   514,-32768,-32768,  9049,-32768,  9049,-32768,
-  9049,-32768,-32768,-32768,   270,   313,   287,   539,   486,   559,
-   430,-32768,   564,-32768,   528,  9049,  9049,   526,-32768,-32768,
--32768,-32768,-32768,   569,   572,   362,   381,   520,   587,   589,
--32768,-32768,  1434,-32768,  1263,   270,   313,  1284,   287,   539,
--32768,   386,   509,   573, 10185,  9049,-32768,  9049,  2580,-32768,
-  1951,   804,  2580,-32768,  1825,  2806,  2806,  4499,   542,   555,
-   574,   585,   596,-32768,-32768,   673,-32768,   607,-32768,  4996,
-     8,-32768,-32768,-32768,   628,   506,   724,    98,   452,   668,
--32768,-32768,   621,    64,-32768,-32768,  2952,  2952,  4817,  2002,
-   811,-32768,-32768,   454,-32768,-32768,  2007,-32768,-32768,-32768,
--32768,-32768,  2061,   837,-32768,   506,  2002,-32768,-32768,-32768,
-  2271,  2061,-32768,   506,-32768,  5425,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   430,  1715,
-  1841,   493,-32768,-32768,-32768,-32768,-32768,   701,   528,-32768,
-   583,  1193,-32768,   124,-32768,-32768,-32768,-32768,-32768,  3051,
--32768,-32768,   295,-32768,   648,   670,-32768,-32768,-32768,-32768,
-   708,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+static const short yypact[] = {   125,
+   130,-32768,-32768,  3240,-32768,   195,    72,   188,   284,   151,
+   102,-32768,-32768,  1117,-32768,-32768,   136,   176,   198,-32768,
+-32768,-32768,  1085,  1187,  1489,   256,-32768,   304,   367,-32768,
+  2407,  2407,-32768,  4859,-32768,  3240,   294,-32768,   352,    91,
+  5970,-32768,-32768,   208,  1265,   379,   356,   372,-32768,-32768,
+-32768,-32768,   330,  2553,-32768, 10199,-32768,  1350,   498,-32768,
+   423,-32768,-32768,  1046,-32768,-32768,   399,-32768,-32768,   417,
 4154,-32768,-32768,-32768,   784,-32768,-32768,-32768,   849,-32768,
+-32768,   508,  5609,   408,-32768,-32768,  9052,-32768,  9052,-32768,
+  9052,-32768,-32768,-32768,   188,   284,   304,   445,   453,   492,
+   372,-32768,  1409,-32768,   508,  9052,  9052,   480,-32768,-32768,
+-32768,-32768,-32768,    64,   528,   368,   383,   478,   538,   553,
+-32768,-32768,   564,-32768,   572,   188,   284,  1112,   304,   445,
+-32768,   855,   467,   509, 10350,  9052,-32768,  9052,  2926,-32768,
+  1285,   543,  2926,-32768,  1090,  3033,  3033,  4859,   524,   547,
+   517,   552,   555,-32768,-32768,   627,-32768,   556,-32768, 10084,
+   195,-32768,-32768,-32768,   582,   423,   691,   145,   179,   624,
+-32768,-32768,   592,   250,-32768,-32768,  3416,  3416,  4989,   784,
+   591,-32768,-32768,   387,-32768,-32768,  2806,-32768,-32768,-32768,
+-32768,-32768,  1350,   641,-32768,   423,   784,-32768,-32768,-32768,
+  1578,  1350,-32768,   423,-32768,  5186,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   372,   988,
+  1434,   399,-32768,-32768,-32768,-32768,-32768,   682,   508,-32768,
+   497,   963,-32768,   271,-32768,-32768,-32768,-32768,-32768,  3988,
+-32768,-32768,   590,-32768,   617,   620,-32768,-32768,-32768,-32768,
+   658,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,   660,-32768,-32768,   701, 10422,  1378,-32768,
--32768,   688,-32768,-32768,  9664,  9751,  9838,  9838,-32768,-32768,
--32768,-32768,-32768,   705,   753,   760,   765,   767,   539,  9136,
-  1825,  9838,-32768,-32768,  9838,-32768,-32768,  9838,  7162,-32768,
-  9838,   283,   771,-32768,  9838,-32768,  9223,-32768, 10565,-32768,
-  1130,  3264,  9310,-32768,   835,  1022,-32768,  3394,  2475,  4721,
--32768,   222,-32768,  1366,  1927,   283,   283,  9049, 10185,-32768,
-  1825,   757,  1825,-32768,-32768,   754,   813, 10498,   774,   783,
-   785,  2546,   607,-32768,  1284,-32768,-32768,-32768,-32768,-32768,
--32768,   572,   362,   381,  1825,   520,   587,   802,   589,-32768,
-   853,-32768,   270,   313,   861,-32768,-32768,-32768,   509,-32768,
--32768,-32768,-32768,-32768,  5555,-32768,-32768,  5425, 10377,  2261,
--32768,   283,   351,-32768,   636,-32768,-32768,-32768,  2580,-32768,
--32768,  2580,-32768,   814,-32768,-32768,  3051,    57,   819,   841,
--32768,-32768,-32768,   673,-32768,   506,-32768,-32768,-32768,-32768,
-   110,-32768,-32768,-32768,-32768,  7254,  9136,-32768,-32768,-32768,
-  9136,   816,-32768,  6490,    81,  4046,-32768,  4046,-32768,  4273,
-  4273,  4817,   832,-32768,   506,  5425,-32768,   840,-32768,-32768,
-  4492,  2271,  2061,  5425,-32768,   506,-32768,-32768,   506,  2271,
--32768,   831,-32768,-32768,   430,-32768,  1715,-32768,  2813,  1848,
-    40,   701,   506,-32768,-32768,   880,   887,   913,   900,-32768,
--32768,-32768,-32768,   891,-32768,   225,   866,   868,-32768,-32768,
-   701,-32768,-32768,   899,-32768,-32768,  9049,  9136,   688,  7162,
--32768,   255,  7162,-32768,-32768,-32768,  9049, 10435, 10435, 10435,
- 10435, 10543,-32768,-32768,-32768,-32768,   876,  9925,  9925,  7162,
-   883,   542,   885,   924,   889,-32768,-32768,-32768,-32768,  9049,
--32768,  6787,  7162,-32768,  9136,  9136,  7346,  9136,  9136,  9136,
-  9136,  9136,  9136,  9136,  9136,  9136,  9136,  9136,  9136,  9136,
-  9136,  9136,  9136,  9136,  9136,  9136,-32768,-32768,-32768,-32768,
--32768,  9136,  9136,  9136,  9049,  5432,   517,   479,  7985,-32768,
--32768,-32768,   945,  1193,   994,   299,   324,   377,  2676,   804,
--32768,   535,   535,-32768,  2137,   895,   915,   964,-32768,-32768,
-   460,  8492,   818,-32768,   993,   528,-32768,-32768,  9136,-32768,
--32768,-32768,-32768,   365,-32768,-32768,-32768,   283,-32768,  5425,
-  2340,-32768,   948,   954,-32768,-32768,  1825,   802,-32768,  7714,
-  7806,-32768,-32768,-32768,-32768,-32768,-32768,-32768,   165,-32768,
-   921,   907,   607,   959,   966,  9049,-32768,-32768,-32768,-32768,
-  1695,   186,   985,   393,   968,   969,-32768,-32768,  1732, 10230,
-  1732,  1944,  1650,  2700,-32768,   975,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,   914,-32768,   970,-32768,-32768,   372,
-    63,   366,   982,   924,-32768,-32768,-32768,-32768,  6692, 10543,
--32768,   813,   942, 10498,-32768,-32768,   944,-32768,-32768,   947,
-   150,  3044,   952,-32768,   231,  5742,   990,  1002,   398,-32768,
--32768,-32768,  4046,  4046,-32768,  4492,-32768,  1007,-32768,-32768,
-   965,    81,-32768,  2271,-32768,-32768,   506,-32768,   362,   381,
--32768,   988,-32768,   589,  1024,-32768,-32768,   329,-32768,-32768,
-  1870,-32768,   916,   798,-32768,  9136,  3324,-32768,  3324,   237,
-   237,   349,   417,  2870, 10081,  3662,-32768,   173,   237,  1023,
-   506,-32768,    81,  1270,  9049,  9049,-32768,  9049,    81,  1270,
--32768,-32768,-32768,-32768,-32768,-32768,  1155,  1155,  1155,   283,
-   986,   999,  9403,   964,  1003,  1005,  1016,  1009, 10249,  1019,
-  1028,  1054,-32768,  1030,-32768,-32768,  1034,-32768,-32768,  1029,
-   588,   605,    67,   424,  9136,  1049,-32768,  1089,  1041, 10543,
- 10543,-32768,-32768,  1090,  3900,  5768,  8010, 10580,  6337,  4076,
-  4577,  2749,  2749,  2749,  2029,  2029,  1036,  1036,   826,   826,
-   826,-32768,-32768,  1044,  1050,  1046,  1052,  1057, 10435,   517,
--32768,  7254,  9136,-32768,-32768,-32768,  9136,-32768,-32768,  1073,
-  9838,  1056,  1083,  1101,  1129,-32768,  9136,-32768,  9136,-32768,
-  9136,  1777,-32768,  1777,-32768,   143,  1069,  1070,-32768,  1071,
- 10435,    81,-32768,    81,  5209,-32768,  1270,  1074,  8684,  8684,
-  5976,  1078,  9223,  1080,  2074,  1927,  1124,  1082,-32768,-32768,
--32768,-32768,-32768,  9136,  1825,  1098,   954,-32768, 10543,-32768,
- 10543,  2546,  1084,  9490,-32768,  1100,-32768,-32768,   283,-32768,
--32768,  2457,  5555,-32768, 10435,  9049,  3567,  3567,  3831,-32768,
--32768,-32768,-32768,  2007,-32768,-32768,-32768,   758,  9136,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   572,-32768,   520,   587,
-  9136,  1159,-32768,   447,   449,   482,   924,-32768,-32768,-32768,
-   117,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  8588,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,  1002,  1150,-32768,
--32768,-32768, 10435,-32768,-32768,-32768,  1167,-32768,  9049,-32768,
--32768,-32768,-32768,  1631,-32768,  1270, 10543,-32768,  1552,-32768,
-   506,   506,-32768,-32768,-32768,-32768,-32768,  1270,   599,   669,
-  9136,   831,-32768,  1160,-32768,-32768,-32768,   258,   423,  1085,
-   804,   773,   237,  1174,-32768,   823,-32768,-32768,-32768,   506,
-  4400,-32768,-32768,  1132,   283,   283,   283,-32768,  1134,    81,
-  1270,    81,  1270,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,  1145,  1146,  1151,  1153,   914,-32768, 10430,  7254,
-  6882,  1137,-32768,  9136,-32768,-32768,-32768,-32768,   285,  1147,
--32768,-32768,  1149,    89,   650,   650,  1148,   650,-32768,-32768,
-  9838,  1252,  9049,-32768,  1152,  1173,  1182,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,    81,  1187,-32768,  1157,-32768,
--32768,  2718,-32768,-32768,-32768,-32768,-32768, 10543,-32768,-32768,
-  1189,-32768,-32768,   196,  1188,-32768,-32768,-32768,-32768,-32768,
--32768,  4037,  4037,  4192,  4192,  3831,-32768,  2007,-32768,  5450,
- 10565,-32768,-32768,  1194,-32768,   366,-32768,  9136,-32768,  9136,
--32768,  9136,-32768,    76,  6974,-32768,  8777,  8777,  6394,   144,
-  1195,   157,-32768,  7254,  7066,-32768,-32768,   217,  7254,-32768,
-  1196,  1199,  2813,-32768,-32768,-32768,    81,  1201,-32768,  1198,
-  1198,    81,  1204,  9136,  9136,  5261,   506,  3167,   506,   506,
-  1347,   506,  3827,  1198,  5118,-32768,-32768,-32768,  1268,-32768,
--32768,-32768,  1214,-32768,  1219,  9136,  9136,  9136,  9136,  7254,
--32768,  1269,-32768,-32768, 10543,  9136,-32768,   285,-32768,-32768,
--32768,-32768,-32768,-32768,  1218,-32768,  1286,   283,-32768,-32768,
--32768,    81,-32768,-32768,-32768,-32768,-32768,-32768,  9136,-32768,
--32768,  4037,  4037,-32768,  5450,-32768,-32768,  1225,  1228,  1236,
-  1251,  1825,-32768,-32768,  6284,  1315,-32768,-32768,  1243,  1143,
--32768,-32768,-32768,-32768, 10435,-32768,-32768,  7254,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,-32768,  5261,  5261,-32768,
-  1198,   603,   711,  9136,-32768,-32768,-32768,   831,   831,  1198,
-  1198,   891,  1198,-32768,-32768,  5855,    81,    81,-32768,-32768,
-  1244,  1247,  1249,  1250,-32768,  7254,  1248,-32768,-32768,-32768,
--32768,-32768,    81,  1256,-32768,-32768,-32768,-32768,  1251,-32768,
--32768,   854,-32768,   220,  1299,   713,   714,-32768,-32768,-32768,
--32768,-32768,  9136,  1304,  1313,  1314,  8870,   632,   608,-32768,
--32768,  8962,  1369,  1318,-32768,  4638, 10126,  3733,  6106,-32768,
--32768,  1364,-32768,-32768,-32768,  8096,-32768,   202,-32768,-32768,
-    81,    81,-32768,-32768,-32768,  9136,  9136,  5261,   506,   506,
--32768,-32768,-32768,-32768,  7898,-32768,-32768,-32768,-32768,    81,
-    81,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  1825,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   924,  1287,  1292, 10282,-32768,-32768,-32768,-32768,  1326,  9136,
-  1329,-32768,   924,-32768,-32768,  1297,-32768,-32768,   831,   857,
--32768,   873,   831,  9577,   877,   247,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  5261,  5261,-32768,  1198,  1198,  1288,
- 10452,  1301,-32768,-32768,  1307,-32768,   523,   523,-32768,-32768,
-  1381,  6600,  9049,  9136,-32768,  8206,-32768,  1342,-32768,-32768,
-   673,-32768,-32768, 10012, 10012,  7438,-32768,-32768,   924,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,   473,   372, 10364,-32768,
--32768,  9049,-32768,-32768,  8398,-32768,    76,-32768,-32768,  1346,
--32768,  1302,   806,  5425, 10521,  8206,-32768,-32768,  1251,    61,
--32768,   199,-32768,  1306,  1310,   924,  1311,   924,  8302,-32768,
-   525,-32768,-32768,-32768,-32768,   831,-32768,-32768,  1251,  1398,
-  1350,-32768,-32768,   110,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,  9136,  1365,  7530,   924,   506,
-  8206,  1331,   139,  1367,-32768,-32768,-32768,-32768,-32768,    76,
--32768,  1319,-32768,-32768,  1370,-32768,-32768,  1389,-32768,  9136,
-  1398,  1373,  1398,-32768,-32768,-32768,-32768,-32768,-32768,  1320,
-   197,-32768,-32768,  7622,-32768,  7254,-32768,  1445,  1397,  1351,
--32768,-32768,   268,-32768,-32768,  1449,  1402,  8302,-32768,-32768,
--32768,-32768,  1464,  1466,-32768
+-32768,-32768,-32768,   616,-32768,-32768,   682,  4154,  1158,-32768,
+-32768,   646,-32768,-32768,  9667,  9754,  9841,  9841,-32768,-32768,
+-32768,-32768,-32768,   668,   701,   711,   721,   732,   445,  9139,
+  1090,  9841,-32768,-32768,  9841,-32768,-32768,  9841,  7165,-32768,
+  9841,   223,   683,-32768,  9841,-32768,  9226,-32768, 10446,-32768,
+  1514,  1785,  9313,-32768,   799,  2426,-32768,   953,  3686,  4007,
+-32768,   307,-32768,  1524,  1858,   223,   223,  9052, 10350,-32768,
+  1090,   703,  1090,-32768,-32768,   708,   768, 10596,   724,   733,
+   738,   945,   556,-32768,  1112,-32768,-32768,-32768,-32768,-32768,
+-32768,   528,   368,   383,  1090,   478,   538,   793,   553,-32768,
+   776,-32768,   188,   284,   814,-32768,-32768,-32768,   467,-32768,
+-32768,-32768,-32768,-32768,  4967,-32768,-32768,  5186,  5373,  1679,
+-32768,   223,   809,-32768,   775,-32768,-32768,-32768,  2926,-32768,
+-32768,  2926,-32768,   760,-32768,-32768,  3988,    87,   761,   777,
+-32768,-32768,-32768,   627,-32768,   423,-32768,-32768,-32768,-32768,
+   148,-32768,-32768,-32768,-32768,  7257,  9139,-32768,-32768,-32768,
+  9139,   779,-32768,  6493,   100,  4306,-32768,  4306,-32768,  4584,
+  4584,  4989,   790,-32768,   423,  5186,-32768,   783,-32768,-32768,
+  4619,  1578,  1350,  5186,-32768,   423,-32768,-32768,   423,  1578,
+-32768,   811,-32768,-32768,   372,-32768,   988,-32768,  1220,  1675,
+    57,   682,   423,-32768,-32768,   836,   852,   876,   858,-32768,
+-32768,-32768,-32768,   532,-32768,   338,   821,   826,-32768,-32768,
+   682,-32768,-32768,   822,-32768,-32768,  9052,  9139,   646,  7165,
+-32768,   437,  7165,-32768,-32768,-32768,  9052,  5977,  5977,  5977,
+  5977, 10641,-32768,-32768,-32768,-32768,   832,  9928,  9928,  7165,
+   851,   524,   863,   887,   867,-32768,-32768,-32768,-32768,  9052,
+-32768,  6790,  7165,-32768,  9139,  9139,  7349,  9139,  9139,  9139,
+  9139,  9139,  9139,  9139,  9139,  9139,  9139,  9139,  9139,  9139,
+  9139,  9139,  9139,  9139,  9139,  9139,-32768,-32768,-32768,-32768,
+-32768,  9139,  9139,  9139,  9052,  2857,   366,   440,  7988,-32768,
+-32768,-32768,   880,   963,   972,   444,   523,   530,  2780,   543,
+-32768,  1687,  1687,-32768,  4837,   868,   877,   948,-32768,-32768,
+   502,  8495,   725,-32768,   860,   508,-32768,-32768,  9139,-32768,
+-32768,-32768,-32768,   249,-32768,-32768,-32768,   223,-32768,  5186,
+  1998,-32768,   933,   939,-32768,-32768,  1090,   793,-32768,  7717,
+  7809,-32768,-32768,-32768,-32768,-32768,-32768,-32768,    79,-32768,
+   906,   895,   556,   951,   961,  9052,-32768,-32768,-32768,-32768,
+  1386,   256,   990,   206,   970,   971,-32768,-32768,  2152, 10406,
+  2152,  4432,  1046, 10143,-32768,   973,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,   929,-32768,   979,-32768,-32768,   208,
+    89,   460,   993,   887,-32768,-32768,-32768,-32768,  6695, 10641,
+-32768,   768,   947, 10596,-32768,-32768,   952,-32768,-32768,   967,
+   160,  5318,   969,-32768,   169,  5796,   996,  1015,   561,-32768,
+-32768,-32768,  4306,  4306,-32768,  4619,-32768,  1016,-32768,-32768,
+   995,   100,-32768,  1578,-32768,-32768,   423,-32768,   368,   383,
+-32768,   964,-32768,   553,  1022,-32768,-32768,   120,-32768,-32768,
+  1492,-32768,   589,   669,-32768,  9139,  5517,-32768,  5517,   335,
+   335,   217,   585,  2595, 10244,  2284,-32768,   225,   335,  1043,
+   423,-32768,   100,  2575,  9052,  9052,-32768,  9052,   100,  2575,
+-32768,-32768,-32768,-32768,-32768,-32768,   649,   649,   649,   223,
+   975,  1000,  9406,   948,  1004,  1014,  1019,  1059,  4066,  1060,
+  1074,  1079,-32768,  1058,-32768,-32768,  1068,-32768,-32768,  1118,
+   787,   900,    65,   431,  9139,  1120,-32768,  1124,  1070, 10641,
+ 10641,-32768,-32768,  1123,  5412,  5667,  3513,  5693,  4244,  3542,
+  3712,  1983,  1983,  1983,  1691,  1691,  1237,  1237,   756,   756,
+   756,-32768,-32768,  1084,  1082,  1086,  1095,  1097,  5977,   366,
+-32768,  7257,  9139,-32768,-32768,-32768,  9139,-32768,-32768,  1105,
+  9841,  1099,  1119,  1136,  1166,-32768,  9139,-32768,  9139,-32768,
+  9139,  2683,-32768,  2683,-32768,   140,  1109,  1110,-32768,  1113,
+  5977,   100,-32768,   100,  4679,-32768,  2575,  1125,  8687,  8687,
+  6301,  1121,  9226,  1122,  3050,  1858,   984,  1130,-32768,-32768,
+-32768,-32768,-32768,  9139,  1090,  1138,   939,-32768, 10641,-32768,
+ 10641,   945,  1137,  9493,-32768,  1141,-32768,-32768,   223,-32768,
+-32768,  1364,  4967,-32768,  5977,  9052,  2037,  2037,  3864,-32768,
+-32768,-32768,-32768,  2806,-32768,-32768,-32768,    61,  9139,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,   528,-32768,   478,   538,
+  9139,  1170,-32768,   587,   601,   622,   887,-32768,    71,-32768,
+    55,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  8591,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1015,  1168,-32768,
+-32768,-32768,  5977,-32768,-32768,-32768,  1190,-32768,  9052,-32768,
+-32768,-32768,-32768,  1345,-32768,  2575, 10641,-32768,  1904,-32768,
+   423,   423,-32768,-32768,-32768,-32768,-32768,  2575,   232,   915,
+  9139,   811,-32768,  1196,-32768,-32768,-32768,   343,   391,   849,
+   543,   686,   335,  1199,-32768,   901,-32768,-32768,-32768,   423,
+  4219,-32768,-32768,  1154,   223,   223,   223,-32768,  1157,   100,
+  2575,   100,  2575,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,  1175,  1176,  1177,  1179,   929,-32768, 10528,  7257,
+  6885,  1163,-32768,  9139,-32768,-32768,-32768,-32768,   825,  1172,
+-32768,-32768,  1173,    66,   285,   285,  1167,   285,-32768,-32768,
+  9841,  1268,  9052,-32768,  1185,  1186,  1188,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,   100,  1191,-32768,  1192,-32768,
+-32768,  3120,-32768,-32768,-32768,-32768,-32768, 10641,-32768,-32768,
+  1189,-32768,-32768,   227,  1197,-32768,-32768,-32768,-32768,-32768,
+-32768,  2938,  2938,  3140,  3140,  3864,-32768,  2806,-32768,  3487,
+ 10446,-32768,-32768,  1200,-32768,   460,-32768,  9139,-32768,  9139,
+-32768,  9139,-32768,  1090,-32768,-32768,  6207,  1275,-32768,  6977,
+-32768,  8780,  8780,  6397,   183,  1205,   254,-32768,  7257,  7069,
+-32768,-32768,   240,  7257,-32768,  1214,  1218,  1220,-32768,-32768,
+-32768,   100,  1219,-32768,  1266,  1266,   100,  1222,  9139,  9139,
+ 10506,   423,  3309,   423,   423,  1160,   423,  4478,  1266,  5125,
+-32768,-32768,-32768,  1278,-32768,-32768,-32768,  1225,-32768,  1226,
+  9139,  9139,  9139,  9139,  7257,-32768,  1276,-32768,-32768, 10641,
+  9139,-32768,   825,-32768,-32768,-32768,-32768,-32768,-32768,  1228,
+-32768,  1290,   223,-32768,-32768,-32768,   100,-32768,-32768,-32768,
+-32768,-32768,-32768,  9139,-32768,-32768,  2938,  2938,-32768,  3487,
+-32768,-32768,  1234,  1236,  1244,  1250,-32768,   786,   242,  1297,
+  1021,  1023,-32768,-32768,-32768,-32768,-32768,  9139,  1300,  1304,
+  1309,  8873,   257,   415,-32768,-32768,  8965,  1366,  1316,-32768,
+  4706, 10305, 10451,  6095,-32768,-32768,  1362,-32768,-32768,-32768,
+  8099,-32768,-32768,  1273,  1916,-32768,-32768,-32768,-32768,  5977,
+-32768,-32768,  7257,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768, 10506, 10506,-32768,  1266,   695,  1083,  9139,-32768,
+-32768,-32768,   811,   811,  1266,  1266,   532,  1266,-32768,-32768,
+  5854,   100,   100,-32768,-32768,  1282,  1284,  1298,  1308,-32768,
+  7257,  1310,-32768,-32768,-32768,-32768,-32768,   100,  1314,-32768,
+-32768,-32768,-32768,  1250,-32768,  1090,-32768,-32768,-32768,-32768,
+-32768,-32768,   629,   629,   887,  1292,  1294, 10484,-32768,-32768,
+-32768,-32768,  1334,  9139,  1369,-32768,   887,-32768,-32768,  1338,
+-32768,-32768,   811,   823,-32768,   861,   811,  9580,   864,   266,
+-32768,-32768,-32768,-32768,-32768,-32768,   339,-32768,-32768,   100,
+   100,-32768,-32768,-32768,  9139,  9139, 10506,   423,   423,-32768,
+-32768,-32768,-32768,  7901,-32768,-32768,-32768,-32768,   100,   100,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  1339,-32768,
+-32768,-32768,  9052,-32768,-32768,-32768,  1435,  8401,  6603,  9052,
+  9139,-32768,  8209,-32768,  1394,-32768,-32768,   627,-32768,-32768,
+ 10015, 10015,  7441,-32768,-32768,   887,-32768,-32768, 10506, 10506,
+-32768,  1266,  1266,  1347, 10550,  1358,-32768,-32768,  5257,-32768,
+-32768,  1349,   443,  5186,   887,  8305,-32768,-32768,    71,-32768,
+-32768,  1402,  1359, 10619,  8209,-32768,-32768,  1250,    78,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,   379,   208,  1360,
+  1361,   887,-32768,   811,-32768,-32768,-32768,-32768,   638,-32768,
+  7533,-32768,-32768,-32768,-32768,  1250,  1457,  1411,   156,-32768,
+-32768,-32768,-32768,   423,    71,-32768,  9139,  1413,-32768,  1414,
+-32768,   887,  8209,  1382,    53,  1418,-32768,-32768,-32768,   148,
+-32768,  1415,-32768,  1371,-32768,-32768,-32768,-32768,  9139,  1457,
+  1421,  1457,-32768,-32768,-32768,  7625,  1373,   158,-32768,-32768,
+  7257,  1377,-32768,  1479,  1439,-32768,-32768,-32768,   301,-32768,
+  8305,  1490,  1442,-32768,-32768,-32768,  1508,  1509,-32768
 };
 
 static const short yypgoto[] = {-32768,
-  1468,-32768,  -332,-32768,  1058,    21,    39,  1467,-32768,   487,
--32768,-32768,   100,  1122,-32768,    20,-32768,-32768,  -614,-32768,
--32768,   577,-32768,  1325,  -662,    41,  -664,  1333,    77,-32768,
--32768,-32768,-32768,-32768,   741,-32768,-32768,-32768,-32768,-32768,
--32768,   379,   166,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1403,  -612,  5224,   -64,  -211,   151,
-  1360,  -496,-32768,   216,-32768,    83,-32768, -1370,-32768, -1373,
-   -59,-32768,  1406,  1203,  -266,-32768,  -786,  2298,   -79,  3469,
-  3080,  1222,-32768,   -69,   -36,   167,   -65,   665,-32768,-32768,
--32768,  -312,-32768,  -155,-32768,-32768, -1270,   -47,  -326,  1916,
-     0,   718,  -129,    24,    87,  -183,    -4,   -11,  -738,   189,
--32768,   -29,   133,-32768,  -259,-32768,-32768,-32768,-32768,-32768,
-   -21,  1092,    31,-32768,   616,-32768,-32768, -1044,  -260,   833,
--32768,-32768,-32768,-32768,-32768,   -53,-32768,-32768,-32768,-32768,
--32768,   624,  -350,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-  1293,-32768,   371,   543,-32768,-32768,-32768,-32768,   505,  -708,
--32768,-32768,-32768,-32768,-32768,-32768,   775,-32768,   356,   904,
-   637,   958,  3095,    18,    47,  -436,  1341,  1472,  -452,-32768,
-    16,-32768,  4578,   -58,   691,   -75,  3473,  1205,-32768,  4658,
-  1537,   281,   -16,  -107,-32768,  1404,   -83,-32768,  4082,  2328,
-  -354,-32768,  3978,-32768,-32768,   211,  -906, -1375,-32768,-32768,
-   308,    44,  -395,-32768,-32768,-32768,-32768, -1324,-32768, -1233,
- -1384,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,    68,-32768,-32768,-32768,
--32768,-32768,    74, -1234,-32768,-32768,-32768,   -56,-32768,-32768,
--32768,-32768, -1356,     2,-32768,    13,-32768,  -646,  -515,   591,
--32768,-32768,-32768,-32768,  -383,-32768,  -376,  -176,-32768,   869,
-   312,-32768,    25,-32768,  -219
+  1511,-32768,  -303,-32768,  1101,    18,    -1,  1515,-32768,   192,
+-32768,-32768,   519,  1161,-32768,     5,-32768,-32768,  -623,-32768,
+-32768,   615,-32768,  1363,  -668,    83,  -664,  1392,    30,-32768,
+-32768,-32768,-32768,-32768,   774,-32768,-32768,-32768,-32768,-32768,
+-32768,   404,   661,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  1440,  -611,  5315,    32,  -317,    44,
+  1416,  -503,-32768,   103,-32768,   222,-32768, -1302,-32768,  -756,
+    17,-32768,  1320,  1586,  -262,-32768,  -794,  1774,  -110,  1098,
+  3500,  1281,-32768,   -87,   -55,  1580,   -77,    27,-32768,-32768,
+-32768,  -319,-32768,  -155,-32768,-32768, -1156,   -47,  -316,  2413,
+    58,  -240,  -120,    52,    76,  -181,    -4,  -144,  -610,   312,
+-32768,    68,    73,-32768,  -337,-32768,-32768,-32768,-32768,-32768,
+   374,  1115,    20,-32768,   673,-32768,-32768, -1049,  -422,   890,
+-32768,-32768,-32768,-32768,-32768,   -32,-32768,-32768,-32768,-32768,
+-32768,   685,  -360,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+  1348,-32768,   426,   602,-32768,-32768,-32768,-32768,   566,  -686,
+-32768,-32768,-32768,-32768,-32768,-32768,   833,-32768,   412,   966,
+   704,  1024,  3968,     7,    51,  -431,  1407,  3322,  -438,-32768,
+    19,-32768,  3079,  -118,   247,   -59,  3948,  1271,-32768,  4653,
+  1794,  1660,   -16,  -115,-32768,  1471,   -81,-32768,  4369,  2696,
+  -290,-32768,  2504,-32768,-32768,   344,-32768,-32768,   471,    93,
+  -353,-32768,-32768,-32768,-32768, -1262,-32768, -1191, -1324,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,-32768,   115,-32768,-32768,-32768,-32768,-32768,   153,
+ -1232,-32768,-32768,   -65,-32768,-32768,-32768,-32768, -1312,    92,
+-32768,    94,-32768,  -616,  -520,   660,-32768,-32768,-32768,-32768,
+  -371,-32768,  -364,  -179,-32768,   681,   349,-32768,  -394,-32768,
+  -217
 };
 
 
-#define        YYLAST          10665
+#define        YYLAST          10726
 
 
 static const short yytable[] = {    58,
-   408,   655,   593,    54,   205,   925,   180,   121,   656,   453,
-   937,   711,   479,   237,   234,   166,   729,   372,   501,   504,
-   632,    71,   602,    41,    36,   677,   279,    56,   978,   102,
-   980,    58,  1124,   789,   653,    54,    58,  1007,   917,   371,
-    54,  1384,    37,  1051,   472,   230,   469,   923,   139,   143,
-   534,   193,   378,    71,  1361,    41,    36,   383,    71,    56,
-    41,    36,   380,   452,    56,  1460,   228,   571,    85,   858,
-  1480,   571,   460,   571,    37,   237,   858,   750,   277,    37,
-    45,  1477,   329,  1482,   329,  1399,   329,   400,   403,   482,
-    57,   208,  1402,   491,  1503,   381,   382,   241,   418,   174,
-   278,   329,   329,    39,  1504,  1244,  1245,  1014,    -1,  1222,
-   674,   433,    45,  1019,  1471,   605,  1517,    45,    86,  1265,
-   344,   237,    57,  1490,   606,   607,  1521,    57,   787,  -125,
-   390,   329,   192,   329,   388,    39,   581,  1526,    93,   205,
-    39,   136,   699,  1534,   415,   491,  1535,   205,   205,   860,
-   751,  1458,    71,  1500,   945,    58,  -326,   434,   389,    54,
-   419,   945,  1545,   399,   402,   681,   667,   456,   675,   276,
-  1491,   480,   926,  1503,   205,   774,  1125,    71,   486,   100,
-   661,   662,   773,    56,  1527,  1562,  1223,  1550,   114,   458,
-   461,  -275,  1467,   420,   436,   438,   716,   174,  1190,  1493,
-   150,  1531,   946,    -2,  -589,   947,  1335,   505,   506,   946,
-    87,   387,   947,   752,  -796,  1341,  1342,   481,  1343,   935,
-  1077,    57,   514,   205,   892,   515,   208,  1126,   516,   217,
-   174,   526,  1488,  1008,   208,   531,    45,  -275,  -275,   336,
-   948,   337,   951,   570,   241,    92,    57,   948,  1532,  -277,
-  -589,  -589,   788,  -268,  1361,  1209,   576,  -326,   671,  1548,
-   134,   419,  1187,    15,    16,   568,  -589,  1084,  -385,   598,
-  1087,   106,   763,   228,   893,   205,  1235,  1529,   938,   378,
-  1364,   635,  -335,  1009,    15,    16,   392,  1098,   368,   577,
-   952,   602,   902,   953,   420,  -277,  -277,  -385,     8,   484,
-   896,  -385,   581,   640,   329,  1210,  1549,  1364,  1112,  1113,
-   397,  -271,   655,   401,   404,   599,  -335,   277,   764,   958,
-  -335,   346,   350,   714,    88,   228,  1236,  1556,   954,  1148,
-  1365,   158,   831,   329,   611,   972,   205,   107,   610,   278,
-   658,  1153,   639,   343,    89,   150,   846,  -385,   773,   832,
-   241,   129,   130,  -335,   479,   858,    71,  1438,   527,   239,
-   528,   136,   389,  1442,  1443,   593,   973,    90,   927,   719,
-   720,   848,   159,   983,  1173,   485,  1175,  1557,   833,  1186,
-   652,   400,   403,   239,   193,   464,   466,    91,   281,   373,
-   374,    10,   847,   858,   137,  1373,   879,   477,   205,   205,
-   108,  1278,   654,   289,   643,   743,   205,   984,   276,  1101,
-   530,   985,   239,   928,   138,   609,   357,   849,   205,    27,
-    27,   239,   929,   930,   850,    57,   527,    22,   528,   692,
-  -549,  1079,   717,   858,   232,   358,    89,   205,   514,   515,
-   458,   461,    28,   299,   986,   962,   208,  -336,   458,    15,
-    16,   654,   903,  1415,   156,    91,  1007,   703,   704,   931,
-   461,   157,  1417,  1418,   987,    58,   513,   239,   904,   744,
-   851,   651,  1206,  1207,    33,   523,  -549,   173,   137,   461,
-   163,  -336,   126,   127,   172,  -336,  -126,    71,   608,   208,
-   737,   963,   329,   745,  1117,   329,  1119,   167,   329,   425,
-   239,  -549,   329,   779,   779,   779,   779,   866,   618,   568,
-   988,   281,   373,   374,    10,   329,   426,   628,  -336,   655,
-   651,   729,   155,   239,   521,   329,   656,   162,   329,  1121,
-   618,     8,     9,    27,   171,   129,   130,    19,   126,   127,
-  1118,  1123,  1120,    13,   968,   427,   970,  -549,   448,   835,
-    22,   974,   653,   867,   868,   223,    57,   205,  1027,   836,
-   329,   277,   881,   602,   831,    28,   299,     8,     9,   225,
-  1451,  1052,  1505,   837,   359,  1122,  1508,  1390,   709,  1395,
-   652,   832,   581,   278,   129,   130,   715,   692,   280,    27,
-   858,   129,   130,   137,   136,   491,   340,    33,   205,   852,
-   854,   910,   654,   915,   916,   582,   534,   401,   404,   654,
-   833,   241,   343,   858,   239,   583,  1452,   342,  1506,   352,
-   129,   130,  1195,   372,   121,   584,   356,   354,   585,   586,
-   474,   329,   718,   355,    94,   109,   110,    90,   205,   126,
-   127,   360,    88,   361,   916,   193,   685,   770,   384,   228,
-  -123,  -268,   276,   126,   127,   936,   605,    91,   482,    90,
-   205,  1154,    89,   935,   405,  1336,   523,  -124,   173,   523,
-  1382,   651,   743,    87,   743,   239,   475,    87,   651,    91,
-   743,   743,   136,   284,   343,   401,   784,  1097,   111,   112,
-   729,   652,   129,   130,   406,   967,   993,   796,   151,   523,
-  1191,  1192,   458,  1194,    27,  -584,   129,   130,   199,   200,
-   981,   982,  1380,   654,    14,   521,   485,    -7,   521,  1010,
-   835,   414,   776,    88,   153,   205,   417,   774,   429,  1012,
-   836,  1155,    58,   430,    58,   521,   744,    21,   979,   844,
-   193,    58,   487,    89,   837,   744,    24,   239,   521,   652,
-   329,   329,   803,   329,    71,   652,    71,   737,   874,   737,
-   745,  1060,   745,    71,   488,    88,   737,    88,    90,   745,
-   489,   654,   490,  1337,   239,  1367,  1368,   654,   825,  1181,
-  1183,   498,   651,  1473,   842,    89,   899,    89,    91,   514,
-   515,  1024,  1025,  1026,  1143,  1144,  1145,  -102,   507,    15,
-    16,   126,   127,  1168,  1169,  1170,   901,   126,   127,  1494,
-   151,   151,   151,   199,   200,   206,   207,   -44,   918,    14,
-   992,  1002,   -44,    57,   779,    57,  -545,   508,  1054,  -545,
-   530,  -102,    57,   -44,   509,  -102,   153,   153,   153,   510,
-   651,   511,    21,   151,   796,   571,   651,  -100,   237,    15,
-    16,    24,    27,   581,   129,   130,   779,    15,    16,   239,
-   129,   130,   652,   619,  1183,   863,   692,   616,  -102,   153,
-   446,   447,   620,  1231,  1233,   239,   636,  -545,  1237,  -545,
-  -545,  -100,  -545,   622,   654,  -100,   852,   854,   654,   126,
-   127,   241,   623,  -545,   624,  -545,   454,   455,   652,   773,
-   779,   329,   126,   127,   652,  1015,  1016,   637,  1017,   555,
-   556,  -545,  -545,  1362,  1363,  -545,   446,  1432,  -100,  1275,
-   654,   638,   643,   665,  1102,  1103,   654,  -545,   686,    -6,
-   128,   993,   454,  1433,   237,   234,   446,  1437,   761,   874,
-    27,   705,   129,   130,   692,    90,   743,   343,    94,    95,
-    96,   668,   710,   651,   755,   129,   130,   651,   779,  1150,
-  1151,   756,  1157,   975,   329,    91,   654,   757,  1159,  1160,
-    90,   652,  1157,  1162,   758,  1420,  1160,  1330,   765,   233,
-   766,  1196,   675,   652,   762,   783,  1281,  1430,  1164,   651,
-    91,   774,   785,   654,   786,   651,     8,     9,   788,   843,
-    27,   845,    97,    98,    99,   654,    58,   859,   861,   976,
-   744,   863,   884,   885,   894,  1356,   652,   895,   652,   897,
-   898,    21,   572,  -271,   281,   373,   374,    10,    71,   573,
-   924,   737,   905,   906,   745,   651,   401,   784,   654,   919,
-   654,   343,   237,  1420,   419,   400,   403,   514,   515,   129,
-   130,   942,  1057,   943,  -795,   992,   944,   628,   329,    15,
-    16,   950,   651,    22,  -385,   655,   960,   901,   400,   403,
-   574,   964,  1475,   233,   651,   150,    27,   965,    28,   299,
-  1498,   969,  1420,   971,  1033,  1011,   521,     7,     8,   231,
-    10,  -122,  -385,  -385,  1034,  1028,   486,    57,   677,   936,
-   743,   652,   649,  1035,   151,   151,   151,   651,  1029,   651,
-   575,  1040,  1030,  1420,  1031,  1131,   552,   553,   554,   555,
-   556,  1212,  1213,   654,   692,  1032,    22,     8,     9,  1036,
-   153,   153,   153,   232,  1250,  1251,   774,  1260,  1261,  1037,
-  1263,    28,    29,  1038,  1212,  1213,   654,   196,  1041,   204,
-  1043,   649,  1044,  1045,  -277,   239,  1047,   239,   126,   127,
-    58,  1048,  1046,   482,   744,   233,  1049,  1059,  1061,  -277,
-  -277,  1062,   343,    33,  -277,  1063,  1064,   557,  1070,  1071,
-   129,   130,    71,  1072,  1141,   737,  1078,  1080,   745,  1081,
-  -277,  1083,   651,  1093,   239,    94,   109,   110,   476,    94,
-   109,   110,  -277,  -277,   485,  -277,  1182,  -277,  1090,    27,
-  1096,   129,   130,  1198,  1134,   651,   558,   559,  1116,  1158,
-  1318,   560,   561,   562,   563,   492,  1333,  1334,  1339,  1340,
-   779,  1140,   526,  1163,    22,   493,  -277,  -277,  1176,  1177,
-  -277,  1167,    71,  1171,  1178,  1312,  1179,  1184,  1317,   111,
-   112,    57,  -277,   111,   112,   113,  1188,   416,  1189,  1197,
-  1193,  1199,   426,  1313,   205,   115,   116,   117,  1389,  1205,
-  1389,   401,   404,     8,     9,  1470,   386,    12,    13,   491,
-   239,   688,  1200,    14,   204,  1551,   281,   373,   374,    10,
-  1182,  1201,   459,   204,   401,  1229,  1204,  1211,    17,  1208,
-    18,    19,   649,  1216,  1230,  1239,    21,  1318,  1240,   649,
-  1243,    57,   193,  1247,  1318,    24,  1407,  1408,  1409,   118,
-   119,  1318,  -626,  1269,    27,    22,   129,   130,  1270,    71,
-  1279,  1276,  1312,  1280,  1285,  1317,    71,  1286,    27,  1312,
-    28,   299,  1317,    71,   521,  1287,  1312,  1288,  1222,  1317,
-   126,  1262,  1328,  1352,   514,   515,  1353,  1313,  1354,  1355,
-  1357,  1366,   239,   456,  1313,  1359,  1375,   689,   281,     8,
-     9,    10,    33,  1376,  1377,   400,   403,  1385,  1387,  1400,
-  1422,   126,   127,  1440,  1441,  1423,  1427,  1291,   239,  1429,
-  1431,  1271,  1272,  1273,  1274,   343,  1444,  1456,    57,  1446,
-  1449,  1277,  1468,   129,   130,    57,  1484,    22,  1512,   205,
-  1516,  1485,    57,   649,   232,  1496,  1486,  1318,  1463,  1497,
-  1499,  1318,    28,   299,  1530,  1523,  1533,   485,  1536,  1547,
-  1537,   329,    27,  1542,   129,   130,   362,   363,   364,    71,
-   278,   239,  1312,    71,   652,  1317,  1312,  1463,   492,  1317,
-  1318,   703,   704,  1539,    33,  1552,  1510,  1554,   493,  1559,
-  1555,  1318,  1560,  1564,  1313,  1565,   654,     1,     5,   278,
-   670,   649,    71,  1381,  1318,  1312,   634,   649,  1317,  1099,
-   196,   204,   365,    71,   412,  1003,  1312,  1472,  1528,  1317,
-   366,   367,   413,  1313,  1217,   339,    71,   393,  1561,  1312,
-  1454,   497,  1317,  1463,  1313,  1392,  1318,  1092,    57,   276,
-  1091,   941,    57,  1241,   468,  1165,  1146,  1313,  1264,  1005,
-   887,  1089,  1379,   830,   449,   278,   370,  1416,    71,  1398,
-   578,  1312,  1541,  1327,  1317,   651,   416,  1518,   276,  1495,
-    79,    57,  1489,   459,   204,  1543,  1329,   416,  1133,  1313,
-   103,   459,    57,  1318,   989,   990,     9,    10,     0,     0,
-  1131,   132,     0,     0,   416,    57,     0,   141,   141,     0,
-   141,     0,    79,   151,     0,    71,     0,    79,  1312,     0,
-   966,  1317,     0,     0,   649,     0,     0,     0,   649,     0,
-   187,     0,    79,    22,   276,  1428,  1313,    57,     0,   153,
-   220,   401,  1229,     0,     0,     0,    27,   103,    28,    29,
-     0,     0,  1149,   151,   991,     0,     0,     0,   243,   103,
-   649,  1013,   177,     0,     0,     0,   649,  1018,     0,   683,
-     0,     0,   178,   115,   719,   720,   690,   803,  1461,   153,
-    33,   103,     0,     0,    57,   179,     0,     0,   437,   439,
-   443,   521,    94,    95,    96,     0,   209,   210,   211,     0,
-     0,   722,     0,     0,   132,     0,   649,  1461,     0,   132,
-     0,    79,   115,   116,   117,   141,     0,     0,   395,   141,
-     0,     0,   141,   141,   141,    27,   212,   118,   119,     0,
-     0,     0,     0,   649,     0,     0,    79,   362,   363,   364,
-   771,     0,   204,     0,    27,   649,    97,    98,   213,     0,
-     0,     0,     0,   187,   187,   187,     0,    94,    95,    96,
-     0,  1522,     0,  1461,    27,     0,   118,   119,     0,     0,
-  1073,     0,  1074,     0,     7,     8,     9,    10,   649,     0,
-   649,   196,   187,   204,     0,  1540,     0,     0,     0,    27,
-     0,   366,   367,     0,   214,   215,   216,   467,     0,   803,
-     0,     0,     0,   343,   824,   103,   826,   827,   151,   151,
-   151,    97,    98,    22,     0,     0,   141,     0,     0,   581,
-   126,   127,     0,   204,     0,   227,    27,     0,    28,    29,
-     0,   151,   151,   151,   153,   153,   153,     0,     0,     0,
-     0,   878,   907,     0,     0,   459,     0,     0,   416,     0,
-     0,     0,   908,     0,   103,   494,     0,   153,   153,   153,
-    33,     0,   584,   649,   581,   909,   586,    94,   109,   110,
-     0,    27,   682,   129,   130,     0,   196,     0,     0,   682,
-     0,     0,   416,    94,    95,    96,   649,   582,   732,     0,
-     7,     8,   733,    10,   386,    12,    13,   583,   103,     0,
-     0,    14,   579,     0,   494,   494,   595,   584,     0,     0,
-   585,   586,   115,   719,   720,    79,    17,     0,    18,    19,
-    20,   111,   112,     0,    21,  -492,     0,     0,  1172,    22,
-  1174,   132,     0,    24,   734,     0,   642,    97,    98,     0,
-     0,     0,    27,   682,    28,    29,     0,   701,   735,   702,
-   736,   437,   439,   443,     0,   132,     0,     0,    31,     0,
-     0,   103,   713,     0,   187,   103,   118,   119,    32,   600,
-     8,     9,     0,     0,     0,   141,    33,     0,   141,     0,
-     0,    34,     0,   141,  1203,     0,     7,     8,     9,    10,
-   198,   199,   200,     7,   126,   127,    10,    14,  -492,     0,
-     0,     0,     0,     0,     0,   289,   601,   682,    22,   682,
-   682,     0,   187,     0,   187,    19,   187,   187,   187,     0,
-    21,    27,   187,   129,   130,    22,     0,   187,     0,    24,
-   187,   581,    22,     0,     0,     0,     0,   682,    27,   232,
-    28,    29,     0,     0,   682,     0,    79,    28,    29,     7,
-     8,     9,    10,     0,   907,  1242,     0,     0,     0,     0,
-  1246,   349,   351,     0,   908,     0,     0,     0,    15,    16,
-     0,   233,    33,  -385,   584,  1053,     0,   909,   586,    33,
-     0,     0,     0,     0,   103,   103,   103,   103,    22,  1065,
-     0,  1066,     0,  1067,     0,   232,     0,     0,   151,     0,
-     0,  -385,  -385,    28,    29,     0,  -385,   198,   199,   200,
-  1282,     0,   416,   416,    14,     0,   281,     8,     9,    10,
-     0,     0,     0,     0,   153,     0,     0,   233,     0,     0,
-     0,     0,    19,     0,     0,    33,  1095,    21,   151,   151,
-   151,   416,   103,     0,   494,     0,    24,   550,   551,   552,
-   553,   554,   555,   556,     0,    22,   579,     0,   494,   494,
-     0,   595,   232,     0,   153,   153,   153,     0,   875,     0,
-    28,   299,   877,  1114,     0,  1348,  1349,     0,     0,     0,
-     8,     9,     0,   386,    12,    13,   187,     0,   688,     0,
-    14,  1358,     0,     0,   233,     0,     0,     0,     7,   126,
-   127,    10,    33,     0,    13,    17,   649,    18,    19,     0,
-     0,     0,     0,    21,   701,   702,     0,   713,   682,     0,
-     0,     0,    24,     0,   581,   187,   914,   187,   187,   220,
-   595,    27,     0,   129,   130,     0,     0,    22,     0,  1403,
-  1404,     0,     0,     0,     0,     0,     0,   582,     0,     0,
-    27,     0,    28,    29,     0,   998,     0,   583,  1413,  1414,
-     0,     0,     0,     0,   525,     0,    31,   584,   187,     0,
-   585,   586,   914,     0,   689,     0,    32,     0,   682,   187,
-   187,     0,   187,     0,    33,     0,     0,   416,   416,    34,
-   416,   416,   682,   416,   682,     0,   682,     0,     0,     7,
-     8,     9,    10,     0,     0,     0,     0,   198,   199,   200,
-   132,     0,     0,    79,    14,    79,     0,   457,   199,   200,
-  1000,    79,    79,     0,    14,     0,     0,     0,     0,     0,
-   103,     0,    19,     0,     0,     0,   103,    21,    22,   682,
-   648,     0,    19,   494,   494,   494,    24,    21,     0,     0,
-     0,    27,     0,    28,    29,   494,    24,   176,     0,     0,
-  1218,   659,  1219,     0,  1220,     0,     0,   177,     0,     0,
-     0,    82,     0,     0,     0,     0,   682,   178,     0,   416,
-   416,   105,     0,     0,     0,    33,   198,   199,   200,   691,
-   179,   125,   133,    14,   682,     0,     0,     0,   142,   142,
-     0,   142,     0,    82,     0,   103,     0,     0,    82,     0,
-     0,    19,     0,     0,     0,     0,    21,     0,   437,   439,
-   443,   142,     0,    82,     0,    24,     0,     0,   494,     0,
-   494,   221,     0,     0,     0,     0,     0,   103,   229,     0,
-   882,   494,     0,   103,     0,   875,   875,   875,   196,   204,
-   229,  1284,  1082,     0,     0,   772,     0,     0,   775,     0,
-   443,     0,   777,   778,   780,   781,   782,     0,     0,   416,
-   416,   416,     0,     0,     0,   525,     0,     0,     0,   103,
-     0,   103,     0,   187,   187,  1108,     0,     0,   799,     0,
-   998,     0,     0,     0,     0,   379,     0,     0,     0,    94,
-   109,   110,    82,   209,   210,   211,   142,     0,     0,     0,
-   142,     0,     0,   142,   142,   142,     0,     0,   126,   127,
-   828,     0,   199,   200,     0,  1108,     0,    82,    14,     0,
-     0,     0,     0,   212,     0,     0,   416,   416,     0,   103,
-   856,     0,     0,     0,   142,   142,   142,   856,     0,     0,
-     0,    21,   103,   111,   112,  1000,     0,     0,     0,     0,
-    24,     0,   581,   682,   103,   682,     0,   682,     0,    27,
-     0,   129,   130,   142,     0,     0,     0,  1161,     0,     0,
-     0,     0,     0,     0,     0,   582,     0,    79,    94,   109,
-   110,     0,   625,   626,   627,   583,     0,   103,     0,   103,
-     0,     0,     0,     0,     0,   584,     0,   142,   592,   586,
-     0,     0,     0,   701,   702,   437,   439,   443,     0,     0,
-     0,   713,     7,   126,   127,    10,     0,     0,   227,     0,
-     0,   494,   494,     0,   494,     0,     0,     0,   437,   439,
-   443,   416,   111,   112,     0,   229,   142,     0,     0,     0,
-     0,   648,     0,     0,   682,     0,     0,     0,     0,     0,
-     0,    22,     0,     0,     0,   587,   587,   587,     0,  1258,
-     0,     0,     0,     0,    27,     0,    28,    29,   187,   187,
-   187,   187,  1108,     0,     0,     0,   187,     0,     0,   229,
-    31,     0,     0,   580,     0,   142,   142,   596,     0,     0,
-    32,     0,   604,  1108,  1108,  1108,    82,     0,    33,   691,
-     0,     0,     0,    34,     0,   691,     0,     0,   281,   126,
-   127,    10,   379,   701,   702,     0,   713,     0,     0,     0,
-     0,     0,     0,     0,   187,     0,     0,     0,     0,   141,
-     0,    79,  -357,     8,     9,  -357,  -357,    12,   227,     0,
-     0,     0,   229,    14,     0,   142,   229,    22,     0,     0,
-   281,     8,     9,    10,   232,     0,   142,     0,    17,   142,
-    18,  -357,    28,   299,   142,     0,    21,     0,     0,     0,
-     0,  -357,     0,     0,  1050,    24,     0,   581,   187,   187,
-     0,   187,     0,     0,    27,     0,   129,   130,     0,    22,
-     0,     0,     0,   142,    33,   142,   232,   142,   142,   142,
-   582,   103,     0,   142,    28,   299,   799,     0,   142,     0,
-   583,   142,   691,     0,     0,     0,   856,     0,  -357,     0,
-   584,     0,     0,   585,   586,     0,   731,    82,   485,   682,
-     0,     0,     0,     0,     0,     0,    33,     0,     7,   126,
-   127,    10,     0,     0,    13,   115,   719,   720,   648,   721,
-  1100,     0,     0,     0,   856,   548,   549,   550,   551,   552,
-   553,   554,   555,   556,     0,   229,   229,   229,   229,     0,
-     0,     0,     0,   722,     0,     0,     0,    22,     0,     0,
-   723,     0,   187,   914,   187,     0,     0,     0,     0,     0,
-    27,     0,    28,    29,   856,   443,     0,    27,     0,   118,
-   119,     0,   989,   990,     9,    10,   146,     0,  1136,   587,
-   587,     0,   587,     0,  1142,     0,   147,     0,     0,   873,
-     0,   691,     0,   229,    33,   142,     0,     0,     0,   148,
-     0,     0,     0,   691,     0,   437,   439,   443,     0,   142,
-   142,    22,   596,     0,     0,     0,     0,     0,     0,   876,
-     0,     0,     0,     0,    27,     0,    28,    29,     0,     0,
-  1108,   604,   991,     0,     0,     0,   691,   142,   691,     0,
-   177,     0,     0,     0,     0,     0,   587,     0,   587,   587,
-   178,   587,     0,     0,     7,     8,     9,    10,    33,     0,
-    13,     0,     0,   179,     0,     0,     0,     0,   125,     0,
-  1108,  1108,  1108,     0,     0,     0,   142,   596,   142,   142,
-   221,   596,     0,     0,     0,   103,     0,     0,     0,   587,
-     0,     0,     0,    22,     0,     0,     0,     0,     0,   731,
-   187,     0,     0,     0,     0,     0,    27,     0,    28,    29,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   142,
-     0,   856,   177,   596,     0,     0,     0,     0,     0,     0,
-   142,   142,   178,   142,     0,     0,     0,     0,     0,     0,
-    33,     0,     0,     0,   856,   179,     7,     8,     9,    10,
-   198,   199,   200,     7,   126,   127,    10,    14,     0,   482,
-     0,   133,     0,     0,    82,     0,    82,     0,     0,     0,
-     0,  1001,    82,    82,     0,    19,   587,     0,     0,     0,
-    21,   229,     0,    50,     0,    22,     0,   229,     0,    24,
-     0,   581,    22,     0,   142,   142,   142,     0,    27,     0,
-    28,    29,     0,     0,     0,    27,   142,    28,    29,     0,
-    50,    50,     0,   149,   907,    50,     0,     0,     0,     0,
-    50,    31,     0,     0,   908,     0,     0,     0,     0,     0,
-     0,    32,    33,    50,   584,    50,     0,   949,   586,    33,
-     0,     0,     0,     0,    34,     0,     0,     0,     0,   587,
-  1136,   587,     0,     0,     0,     0,   229,     0,   235,     0,
-     0,     0,   587,     0,     0,     0,   873,   873,   873,  1252,
-  1253,     9,    10,     0,     0,   240,     0,     0,     0,   142,
-     0,   142,     0,     0,     0,     0,     0,     0,   229,     0,
-     0,     0,   142,     0,   229,     0,   876,   876,   876,     0,
-     0,     0,     0,   604,   587,   587,   587,   376,    22,     0,
-     0,   376,   376,     0,    50,     0,     0,     0,    50,     0,
-   235,    27,    50,    28,    29,   149,   149,   149,     0,  1254,
-   229,     0,   229,     0,   142,   142,   596,   177,     0,    50,
-     0,     0,     0,     0,     0,     0,   873,   178,   407,     0,
-     0,     0,     0,     0,     0,    33,    50,    50,   149,     0,
-   179,     0,     0,     0,     0,     0,   235,     8,     9,   435,
-     0,    12,    13,     0,     0,     0,   876,    14,     0,     0,
-     0,     0,   451,     0,     0,    50,     0,     0,     0,     0,
-   229,     0,    17,     0,    18,     0,     0,     0,     0,     0,
-    21,   731,     0,   229,     0,     0,  1001,     0,     0,    24,
-     0,     0,     0,     0,     0,   229,     0,     0,    27,    50,
-   129,   130,   564,     0,   732,     0,     7,     8,   733,    10,
-   386,    12,    13,     0,     0,     0,     0,    14,    82,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   229,     0,
-   229,   525,    17,     0,    18,    19,    20,   565,     0,     0,
-    21,     0,     0,     0,   648,    22,     0,     0,     0,    24,
-   734,     0,   642,     0,     0,     0,     0,     0,    27,     0,
-    28,    29,   142,   142,   735,   142,   736,     0,   522,     0,
-     0,     0,     0,     0,    31,     0,     0,   126,   127,   587,
-   587,   587,   587,   587,    32,   376,     0,   587,     0,     0,
-     0,     0,    33,   235,     0,     0,     0,    34,    50,     0,
-     0,     0,     0,     0,   873,   873,   873,     0,     0,   142,
-   142,   142,   142,   596,   376,     0,     0,   142,     0,     0,
-     0,   581,     0,   731,     0,     0,     0,     0,    27,     0,
-   129,   130,     0,     0,   876,   876,   876,     0,   376,     0,
-     0,     0,     0,     0,   582,     0,     0,    50,     0,     0,
-   731,     0,     0,     0,   583,     0,    77,     0,    50,     0,
-     0,    50,     0,     0,   584,   142,    50,   585,   586,     0,
-   142,     0,    82,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,    77,    77,     0,    77,     0,    77,   587,
-   587,     0,   587,    77,     0,    50,     0,    50,     0,   149,
-   149,   149,     0,     0,     0,    50,    77,     0,    77,     0,
-    50,     0,     0,    50,     0,     0,     0,     0,   706,   142,
-   142,     0,   142,   712,     0,     0,     0,     0,     0,    50,
-     0,     0,     0,     0,     0,   319,     0,   319,     0,   319,
-     0,     0,   229,     0,     0,     0,     0,     0,   753,     7,
-     8,     9,    10,     0,   759,    13,     0,     0,     0,   522,
-     0,     0,   522,     0,     0,     0,   767,   768,     0,   769,
-     0,     0,     0,     0,     0,     0,     0,   522,   522,   522,
-     0,     0,     0,     0,   319,     0,   319,    77,    22,     0,
-     0,    77,   522,     0,   581,    77,     0,     0,    77,    77,
-    77,    27,     0,    28,    29,     0,     0,     0,     0,     0,
-     0,     0,    77,     0,     0,     0,     0,   907,     0,     0,
-     0,     0,     0,   142,   596,   142,     0,   908,     0,    77,
-    77,    77,     0,     0,     0,    33,     0,   584,   235,     0,
-   909,   586,   732,     0,     7,     8,   733,    10,   386,    12,
-    13,   522,     0,     0,     0,    14,     0,     0,    77,     0,
-     0,     0,   864,   865,     0,     0,     0,   864,     0,    50,
-    17,     0,    18,    19,    20,     0,     0,     0,    21,  -493,
-     0,     0,     0,    22,     0,     0,     0,    24,   734,     0,
-   642,     0,    77,     0,     0,     0,    27,     0,    28,    29,
-     0,   876,   735,     0,   736,     0,     0,     0,    50,    50,
-    50,    50,    31,     0,     0,     7,     8,     9,    10,   198,
-   199,   200,    32,     0,     0,     0,    14,     0,     0,     0,
-    33,     0,     0,     0,     0,    34,     0,     0,     0,     0,
-     0,   876,   876,   876,    19,     0,     0,     0,   512,    21,
-     0,    50,  -493,     0,    22,    50,   229,     0,    24,     0,
-   581,     0,    50,    50,     0,    50,     0,    27,     0,    28,
-    29,   142,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   177,     0,     0,   319,   603,     0,     0,
-     0,    77,     0,   178,     0,     0,    50,     0,    50,     0,
-     0,    33,     0,    50,    50,    50,  1394,     0,     0,  1252,
-   126,   127,    10,     7,     8,     9,    10,   386,    12,    13,
-     0,     0,   688,     0,    14,     0,     0,     0,     0,     0,
-     0,     0,   522,     0,     0,  1020,     0,  1022,     0,    17,
-    77,    18,    19,     0,     0,     0,     0,    21,    22,     0,
-     0,    77,    22,     0,    77,     0,    24,     0,   581,    77,
-     0,    27,     0,    28,    29,    27,     0,    28,    29,  1254,
-     0,     0,     0,     0,   680,   684,     0,    31,     0,     0,
-     0,  1104,   684,     0,     0,     0,     0,    32,    77,     0,
-    77,  1105,    77,    77,    77,    33,     0,     0,    77,    33,
-    34,   584,     0,    77,  1106,   586,    77,     0,   689,  1055,
-  1056,     0,  1058,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    77,     0,     0,     0,     0,     0,   522,   522,
-   522,     0,     0,     0,   235,     0,     0,     0,     0,     0,
-  1076,     0,     0,     0,     0,   319,   684,   539,   540,   541,
-   542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-   552,   553,   554,   555,   556,     0,    50,    50,   149,     0,
-     0,     0,     0,   235,     0,     0,     0,     0,   319,     0,
-   680,     0,     0,   800,   801,  1110,   805,   806,   807,   808,
-   809,   810,   811,   812,   813,   814,   815,   816,   817,   818,
-   819,   820,   821,   822,   823,     0,     0,     0,  1130,     0,
-   684,     0,   684,   684,     0,     0,     0,     0,     0,     7,
-     8,     9,    10,     0,     0,   227,     0,     0,     7,     8,
-     9,    10,   603,     0,   227,     0,     0,     0,    50,     0,
-   684,     0,     0,     0,     0,     0,     0,   684,     0,  1147,
-     0,     0,     0,     0,     0,     0,     0,     0,    22,   235,
-     0,  1152,    77,     0,   581,     0,     0,    22,   889,   891,
-    50,    27,     0,    28,    29,     0,     0,     0,     0,     0,
-    27,     0,    28,    29,   319,     0,     0,   907,     0,     0,
-     0,     0,     0,     0,     0,   154,   177,   908,     0,     0,
-     0,    77,    77,    77,    77,    33,   178,   584,     0,     0,
-   909,   586,     0,     0,    33,   188,     0,     0,     0,   179,
-     0,     0,     0,     0,     0,     0,     0,   680,   544,   545,
-   546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
-   556,   235,     0,     0,    77,  1202,     0,     0,    77,     0,
-     0,     0,     0,     0,     0,    77,    77,     0,    77,     0,
+   408,   237,    37,   681,   937,   925,   180,   121,    41,   372,
+    71,   453,   593,   655,   479,   602,   711,   279,   606,   607,
+   656,    36,   501,   504,   653,   205,   789,   400,   403,   917,
+   729,    58,   102,    45,    37,  1051,    58,   139,   143,    37,
+    41,   371,    71,   469,   380,    41,   472,    71,   923,   632,
+   978,   193,   980,    36,   534,    56,   458,   461,    36,  1007,
+   151,    54,  1363,   237,   858,    45,   228,   677,   378,  1366,
+    45,   858,   452,   383,   661,   662,   381,   382,   277,    57,
+   208,   460,   329,  1448,   329,   192,   329,    56,   571,   278,
+  1348,  1400,    56,    54,   750,   491,  1452,   571,    54,   571,
+   241,   329,   329,   174,  1124,  1279,  1280,  1453,   482,   237,
+   234,    57,   166,   581,  1130,  1520,    57,   605,   716,  1300,
+   -44,  1478,   354,   344,    -1,   -44,   972,  -125,   355,    -2,
+   390,   329,   336,   329,   337,   752,   -44,  1014,   892,   136,
+  1487,    71,   230,  1019,   649,   418,    87,   491,   674,   158,
+    93,   945,   399,   402,   860,    58,  1509,   973,   276,   773,
+   205,   699,  1521,  1460,   387,  1131,    71,   751,   205,   205,
+   787,   945,   151,   151,   151,  1195,   505,   506,  1501,   392,
+   951,  1125,  1475,   436,   438,   774,   389,  1488,   893,    45,
+   159,   514,   388,   649,   515,   205,   667,   516,   926,   946,
+   526,   174,   947,  -326,   531,   151,   675,   419,   346,   350,
+    57,    56,   570,  1532,  -326,   208,  1478,    54,   419,   946,
+  1534,  1456,   947,   208,  -792,    92,   425,   155,   952,   106,
+  -275,   953,   162,   935,   174,    57,  1374,   948,   576,  1517,
+   420,   983,    88,   426,   205,  1380,  1381,   241,  1382,   788,
+  1077,   420,  1450,  1400,  1192,    85,   568,   948,   671,    94,
+   109,   110,    89,  1485,   456,   903,   954,  1535,  1084,   107,
+   577,  1087,   427,   228,   486,   984,  -275,  -275,  1098,   985,
+   153,   904,   902,   635,   602,  1008,  1214,   289,   126,   127,
+   879,   108,  -268,   482,  1159,   378,   205,   433,   527,  1270,
+   528,  -589,  1328,    27,   329,    86,    87,   458,   461,  1112,
+  1113,  1518,   986,   111,   112,   458,   163,   277,   480,   640,
+   938,   400,   403,   639,   655,   228,  1328,   461,   278,   896,
+   134,   958,   714,   329,   611,  1009,  1215,  1344,    90,    27,
+   658,   129,   130,   434,   649,    71,   461,  -589,  -589,  1271,
+   858,   649,  1329,   241,   598,   835,   479,   205,    91,  1153,
+  1542,    15,    16,  -589,   481,   836,  -385,  -335,   609,    15,
+    16,  1158,  1024,  1025,  1026,   593,  1425,  -549,   136,   837,
+   652,   608,  1463,  1464,   193,   763,  -277,   156,   858,   643,
+   389,   654,   153,   153,   153,  -385,   610,   276,  1313,  -385,
+   599,  -335,  1101,   167,  1178,  -335,  1180,   514,   515,  1052,
+  1543,   521,   157,   831,    57,  -336,   171,    15,    16,   205,
+   205,   137,   357,  -549,   173,   153,   172,   205,   858,   692,
+   832,   764,  -277,  -277,  -549,   208,  1079,   358,  -335,   205,
+   654,   138,    89,   126,   127,  -385,   703,   704,  -271,  -336,
+   199,   200,  1027,  -336,    19,   649,    14,    91,   205,   833,
+   651,   223,   927,   719,   720,    58,   151,   151,   151,   281,
+   373,   374,    10,  1211,  1212,   225,    71,  1346,   208,    21,
+  -549,   448,   280,  1007,   581,   137,  -336,   737,    24,   136,
+   581,   846,   329,  -126,    27,   329,   129,   130,   329,   137,
+   568,   743,   329,   779,   779,   779,   779,   928,    22,   651,
+   835,     8,     9,   649,    27,   329,   929,   930,   709,   649,
+   836,   745,    39,    28,   299,   329,   715,   744,   329,   717,
+   773,   655,   359,   685,   837,   729,   773,   847,   656,   415,
+   770,   968,   653,   970,   474,    57,   126,   127,   974,   866,
+   342,    90,   136,   931,    39,    33,   602,   206,   207,    39,
+   329,   277,   881,   340,   129,   130,   362,   363,   364,   458,
+   848,    91,   278,   352,   115,   116,   117,   850,   205,   761,
+   652,  1097,   356,  1123,   384,   858,    90,   692,   852,   854,
+   475,   654,   360,     8,   484,   867,   868,   491,   654,   129,
+   130,   910,   521,   915,   916,   521,    91,   361,   962,   776,
+   534,   173,   365,   858,   241,   372,   849,  1186,  1188,   205,
+   366,   367,   521,   851,   121,   762,   649,  1200,   118,   119,
+   649,   329,   987,  -268,  1117,   521,   975,   284,   343,   803,
+  1354,   276,  1359,    90,   916,   193,   129,   130,  1119,   228,
+   446,   447,   126,   127,   963,   936,   405,   482,   605,   205,
+   651,   406,   649,    91,  -584,   825,    -7,   651,   649,  1121,
+   485,   842,   126,   127,   100,   414,  1402,   935,   988,   899,
+  1118,   205,   976,   114,   429,  1496,   153,   153,   153,   199,
+   200,   652,  1480,   417,  1120,    14,   993,  1173,  1174,  1175,
+   454,   455,   654,    27,   430,   129,   130,  1188,   649,   729,
+  -102,   487,    15,    16,   488,  1122,  1266,  1268,    21,   492,
+   489,  1272,  1403,    27,   217,   129,   130,    24,   490,   493,
+  1060,  1497,    58,  -545,    58,   649,  -545,   774,  1513,   498,
+   193,    58,   530,    71,  -102,    71,   205,   649,  -102,   652,
+   329,   329,    71,   329,   737,   652,   737,  1375,   514,   515,
+   654,   507,  1310,   737,  1196,  1197,   654,  1199,   743,    87,
+   743,   651,   863,   992,  1002,   508,   743,   743,   126,   127,
+   649,  -102,   649,   368,  -545,   509,  -545,  -545,   745,  -545,
+   745,  1148,  1149,  1150,   744,   510,   979,   745,  1015,  1016,
+  -545,  1017,  -545,   744,  1490,   397,   511,   981,   982,   571,
+    15,    16,    57,   616,    57,  -385,  1010,   619,  -545,  -545,
+  1510,    57,  -545,   343,   779,   126,   127,   620,  1054,   651,
+   637,   129,   130,   622,  -545,   651,   237,    15,    16,   555,
+   556,    88,   623,  -385,  -385,  1326,  1327,   624,  -385,  -123,
+  1369,     7,     8,   231,    10,   485,   779,   281,   373,   374,
+    10,    89,   652,     8,     9,   649,   692,   636,   530,   665,
+   343,    -6,   831,   654,   638,   852,   854,   654,   129,   130,
+   464,   466,   446,  1419,   527,  1316,   528,   668,  1395,   832,
+    22,   686,   477,   649,   241,   710,    22,   232,   652,   705,
+   779,   329,   233,   232,   652,    28,    29,   643,   343,   654,
+   755,    28,   299,  1102,  1103,   654,   129,   130,   833,  1191,
+   454,  1420,   237,   446,  1424,  -100,   756,    15,    16,   233,
+   757,   993,   758,   765,   843,   151,   774,    33,   766,  1057,
+   233,   783,   651,    33,   692,   675,   651,    94,   109,   110,
+  1201,   625,   626,   627,    90,   654,   126,   127,   779,  -100,
+   785,   513,  -124,  -100,   329,    94,   109,   110,   476,    88,
+   861,   652,   786,   521,    91,   151,   788,  1160,   651,   845,
+   859,  1406,   654,   652,   651,   400,   403,     8,     9,    89,
+    94,    95,    96,  1417,   654,   863,  -100,   884,   885,   894,
+   581,   111,   112,   618,    22,   895,    58,    27,   992,   129,
+   130,   897,   628,   400,   403,   898,   652,    71,   652,   111,
+   112,   514,   515,   582,   651,   618,    21,   654,   737,   654,
+   237,   234,   343,   583,   905,   906,   343,   919,  -271,   924,
+   129,   130,   743,   584,    97,    98,   585,   586,    94,    95,
+    96,   651,   209,   210,   211,   419,   942,   969,   329,  1162,
+  -791,   943,   745,   651,   485,  1164,  1165,   655,   744,  1162,
+  1167,  1146,  1406,  1165,  1471,    88,   944,    90,   950,   960,
+   964,   971,   212,  1331,  1028,  1332,    57,    94,   109,   110,
+   967,  1406,    94,   109,   110,    89,   651,    91,   651,   936,
+    27,   652,    97,    98,   213,  1011,  1203,   965,  1536,  1029,
+  1217,  1218,   654,  1030,   281,   373,   374,    10,  1493,    94,
+    95,    96,  1253,  1031,  1012,  1248,   774,   718,  1032,   692,
+   151,   151,   151,    71,  1033,  1034,   526,    88,  1217,  1218,
+   654,   111,   112,   113,  1247,  1376,   111,   112,  1406,  1035,
+   214,   215,   216,    22,  1036,   153,   677,    89,   151,   151,
+   151,   126,   127,   126,  1297,    58,    27,  1037,    28,   299,
+   196,    27,   204,    97,    98,    99,    71,  1038,  1252,  1043,
+  -122,   651,  1040,  1041,   319,  1044,   319,   737,   319,   115,
+   116,   117,   796,  1045,  1046,   153,  1047,   486,   649,  1059,
+    33,   743,    57,  1353,  1048,  1353,  1049,  1062,   343,   651,
+  1063,  1061,    27,  1064,   129,   130,   129,   130,  1070,  1071,
+   205,   745,   115,   719,   720,  1072,   721,   744,   492,  1116,
+  1080,  1081,  1139,   319,   844,   319,   521,  1078,   493,  1083,
+   485,    27,  1253,   118,   119,    57,  1093,   193,  1090,  1253,
+   722,  1096,  1248,    71,  1145,  1163,  1253,   723,  1168,  1248,
+    71,   491,  1459,  1172,  1247,   779,  1176,    71,  1181,  1182,
+  1183,  1247,  1184,  1189,    27,  1202,   118,   119,  1247,  1198,
+   416,  1193,  1194,  1306,  1307,  1308,  1309,     7,   126,   127,
+    10,    15,    16,  1312,  1204,  1205,  -385,  1206,  1252,  1213,
+  1209,   901,   400,   403,  1210,  1252,  1216,   204,  1124,  1221,
+   514,   515,  1252,   918,  1265,   459,   204,   552,   553,   554,
+   555,   556,    57,  1274,  -385,  -385,    22,  1275,  1278,    57,
+   426,  1282,  -626,   232,  1304,  1305,    57,  1315,  1311,   796,
+  1314,    28,    29,  1320,  1343,  1321,  1323,   115,   719,   720,
+   153,   153,   153,  1322,  1155,  1156,   198,   199,   200,  1330,
+  1378,  1379,  1339,    14,  1340,   233,    94,   109,   110,  1341,
+   209,   210,   211,    33,  1349,   722,  1351,  1364,   153,   153,
+   153,    19,  1367,  1169,   151,  1409,    21,  1410,   362,   363,
+   364,  1391,   966,  1392,  1414,    24,  1474,   512,  1443,    27,
+   212,   118,   119,  1253,  1253,  1443,  1248,  1393,  1253,   278,
+   205,  1248,     8,     9,    71,    71,   278,  1394,   329,    71,
+   111,   112,  1396,  1398,   456,  1247,  1247,   703,   704,  1416,
+  1247,  1418,  1439,  1013,   652,   319,    94,    95,    96,  1018,
+    27,  1253,   366,   367,  1248,   654,  1415,   151,   151,   151,
+  1253,  1447,    71,  1248,  1457,  1465,  1467,   343,  1473,  1252,
+  1252,    71,  1482,  1247,  1252,   129,   130,  1504,  1483,  1491,
+  1492,  1508,  1247,  1515,  1516,  1519,  1443,  1522,   276,  1524,
+  1525,  1529,  1533,    57,    57,   276,  1537,   278,    57,  1538,
+    97,    98,   126,   127,   115,   719,   720,  1252,  1253,  1540,
+  1545,  1248,  1546,   196,   204,  1441,  1252,  1548,  1549,    71,
+     1,   803,  1441,   670,   651,   634,     5,  1099,  1003,  1222,
+  1247,    57,   412,   680,   684,   521,   281,     8,     9,    10,
+    57,   684,   339,   128,  1285,  1286,  1253,  1295,  1296,  1248,
+  1298,  1494,  1073,    27,  1074,   129,   130,    71,   118,   119,
+  1489,   413,   628,   393,  1252,  1405,   276,  1544,  1247,   416,
+   497,   557,   901,  1356,  1092,    22,   459,   204,   941,   468,
+   416,  1091,   232,  1276,   459,  1151,  1170,  1005,    57,  1299,
+    28,   299,   887,  1441,   457,   199,   200,   416,  1089,   830,
+   449,    14,  1252,   370,   319,   684,   578,  1362,  1262,  1514,
+   558,   559,  1523,  1511,   153,   560,   561,   562,   563,    19,
+  1486,  1528,    33,   150,    21,  1530,    57,  1138,  1368,     0,
+     0,  1527,     0,    24,     0,     0,     0,   319,   803,   680,
+     0,     0,   800,   801,     0,   805,   806,   807,   808,   809,
+   810,   811,   812,   813,   814,   815,   816,   817,   818,   819,
+   820,   821,   822,   823,     0,     0,  1372,  1373,     0,   684,
+     0,   684,   684,     0,     0,     0,     0,   153,   153,   153,
+     0,     0,     0,     0,     0,   732,     0,     7,     8,   733,
+    10,   386,    12,    13,     0,   198,   199,   200,    14,   684,
+   126,   127,    14,     0,     0,    13,   684,     0,     0,     0,
+  1177,  1187,  1179,    17,     0,    18,    19,    20,     0,     0,
+    19,    21,  -492,     0,     0,    21,    22,   889,   891,     0,
+    24,   734,     0,   642,    24,   204,   401,   404,     0,    27,
+     0,    28,    29,   319,   581,   735,     0,   736,   239,   659,
+     0,    27,     0,   129,   130,    31,   682,     0,     0,     0,
+  1431,  1432,  1433,   682,     0,    32,  1208,   582,   150,     0,
+     0,     0,   239,    33,   196,     0,   204,   583,    34,   550,
+   551,   552,   553,   554,   555,   556,   680,   584,     0,     0,
+   585,   586,     0,     0,  1227,  -492,     0,     0,     8,     9,
+  1187,   239,    12,    13,     0,     0,     0,    79,    14,     0,
+   239,     0,  1461,  1462,     0,     0,   204,   103,     0,     0,
+     0,     0,     0,    17,     0,    18,     0,   682,   132,     0,
+     0,    21,     0,     0,   141,   141,     0,   141,   459,    79,
+    24,   416,  1277,   977,    79,     0,     0,  1281,     0,    27,
+     0,   129,   130,   564,     0,     0,   239,   187,     0,    79,
+     0,     0,   319,   319,     0,   319,     0,   220,     0,   196,
+   600,     8,     9,     0,   103,   416,     0,  1512,     0,     0,
+   684,     0,     0,     0,     0,   243,   103,     0,   565,   239,
+     0,   682,     0,   682,   682,     0,     0,  1317,   523,     0,
+     0,     0,  1039,     0,     0,     0,   289,   601,   103,    22,
+     0,     0,   239,  1345,     0,     0,   989,   990,     9,    10,
+     0,   682,    27,     0,   129,   130,     0,     0,   682,     0,
+     0,   132,     0,     0,     0,     0,   132,  -277,    79,   680,
+   684,     0,   141,     0,     0,   395,   141,     0,     0,   141,
+   141,   141,  -277,  -277,   684,    22,   684,  -277,   684,     0,
+     0,     0,     0,    79,     0,     0,     0,     0,    27,     0,
+    28,    29,     0,  -277,  1154,     0,   991,     0,     0,     0,
+   187,   187,   187,     0,   177,  -277,  -277,     0,  -277,     0,
+  -277,  1088,  1387,  1388,   178,     0,  1401,     0,     0,     0,
+     0,   684,    33,   239,     0,     0,     0,   179,  1397,   187,
+     0,     0,     0,   319,   198,   199,   200,     0,     0,  -277,
+  -277,    14,   683,  -277,   467,     0,  1111,     0,     0,   690,
+   401,   404,   103,     0,     0,  -277,     0,     0,   684,    19,
+     0,     0,     0,   141,    21,     0,     0,     0,     0,     7,
+     8,     9,    10,    24,     0,    13,   684,     0,     0,     0,
+  1427,  1428,     0,     0,   239,     0,     0,     0,   882,   548,
+   549,   550,   551,   552,   553,   554,   555,   556,     0,  1437,
+  1438,   103,   494,     0,     0,     0,     0,     0,    22,   523,
+     0,     0,   523,   771,   581,     0,     0,     0,  1161,     0,
+     0,    27,   682,    28,    29,   416,   416,     0,   401,   784,
+     0,   587,   587,   587,     0,     0,     0,   907,     0,     0,
+     0,     0,   523,     0,     0,   103,     0,   908,     0,   579,
+     0,   494,   494,   595,   416,    33,   239,   584,     0,     0,
+   909,   586,    79,     0,     0,     0,     0,   680,   680,     0,
+     0,  1190,     0,     0,     0,     0,     0,   824,   132,   826,
+   827,     0,   682,   239,     7,     8,     9,    10,     0,     0,
+   319,     0,     0,     0,     0,     0,   682,     0,   682,     0,
+   682,   874,   132,     0,     0,     0,     0,     0,   103,     0,
+     0,   187,   103,     0,   878,     0,     0,     0,     0,     0,
+     0,     0,   141,    22,     0,   141,     0,     0,     0,   581,
+   141,     0,     0,     0,     0,     0,    27,     0,    28,    29,
+     0,     0,     0,   682,     0,   684,     0,   684,     0,   684,
+     0,     0,   907,     0,     0,     0,     0,   680,     0,   187,
+     0,   187,   908,   187,   187,   187,   680,   680,   239,   187,
+    33,   680,   584,     0,   187,   909,   586,   187,     0,     0,
+   682,     0,     0,     0,   239,     0,  1283,  1284,     0,     0,
+     0,     0,     0,    79,     0,     0,     0,     0,   682,     0,
+     0,     0,     0,     0,     0,   416,   416,     0,   416,   416,
+     0,   416,   680,     0,   732,     0,     7,     8,   733,    10,
+   386,    12,    13,     0,     0,     0,     0,    14,     0,     0,
+     0,   103,   103,   103,   103,     0,     0,     0,     0,     0,
+     0,   684,    17,     0,    18,    19,    20,     0,     0,     0,
+    21,  -493,     0,     0,     0,    22,     0,     0,     0,    24,
+   734,     0,   642,     0,     0,  1338,     0,     0,    27,     0,
+    28,    29,     0,     0,   735,     0,   736,     0,     0,     0,
+     0,     0,   874,     0,    31,   587,   587,     0,   587,   103,
+     0,   494,     0,     0,    32,   873,   196,   204,     0,     0,
+   680,     0,    33,   579,     0,   494,   494,    34,   595,     0,
+     0,     0,     0,     0,     0,   875,  1377,     0,     0,   877,
+     0,     0,     0,     0,  -493,     0,     0,   416,   416,     0,
+     0,     0,     0,   187,     0,     0,     0,     0,   680,     7,
+   126,   127,    10,     0,     0,    13,     0,     0,  1053,     0,
+     0,     0,   587,     0,   587,   587,   572,   587,   281,   373,
+   374,    10,  1065,   573,  1066,     0,  1067,   682,     0,   682,
+     0,   682,   187,   914,   187,   187,   220,   595,    22,   401,
+   784,     0,     0,     0,     0,   684,     0,     0,     0,     0,
+     0,    27,     0,    28,    29,   587,     0,    22,     0,     0,
+     0,     0,  1429,  1430,   574,     0,     0,    31,     0,  1095,
+    27,  1435,    28,   299,     0,   187,     0,    32,   150,   914,
+     0,   416,   416,   416,     0,    33,   187,   187,     0,   187,
+    34,     0,     0,     0,     0,     0,     0,     0,  1454,     0,
+     0,     0,     0,     0,   575,     0,  1114,     0,   349,   351,
+     0,     0,     0,     0,     0,     0,     0,   132,  1136,     0,
+    79,     0,    79,   682,   239,     0,   239,  1000,    79,    79,
+     0,     0,     0,   416,   416,     0,     0,   103,     0,     0,
+     0,     0,   587,   103,     0,     7,     8,     9,    10,     0,
+   494,   494,   494,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   494,   239,     0,     0,     0,     0,     8,     9,
+     0,   386,    12,    13,     0,     0,   688,     0,    14,     0,
+     0,     0,     0,     0,    22,     0,     0,   989,   990,     9,
+    10,     0,     0,    17,     0,    18,    19,    27,   416,    28,
+    29,    21,     0,   176,     0,     0,     0,     0,     0,     0,
+    24,     0,   103,   177,     0,   587,     0,   587,   680,    27,
+     0,   129,   130,   178,     0,     0,    22,     0,   587,     0,
+     0,    33,   873,   873,   873,   494,   179,   494,     0,    27,
+     0,    28,    29,     0,   103,     0,     0,   991,   494,   239,
+   103,     0,   875,   875,   875,   177,     0,     0,     0,  1082,
+     0,     0,   689,     0,     0,   178,     0,   682,     0,     0,
+   587,   587,   587,    33,   401,   404,   126,   127,   179,     0,
+     0,   227,     0,     0,     0,     0,   103,     0,   103,    82,
+   187,   187,  1108,  1223,     0,  1224,     0,  1225,     0,   105,
+     0,     0,   401,  1264,     0,     0,     0,     0,     0,   125,
+   133,   525,   873,     0,     0,     0,   142,   142,     0,   142,
+   581,    82,     0,     0,     0,     0,    82,    27,     0,   129,
+   130,   239,  1108,     0,     0,     0,     0,     0,     0,   142,
+     0,    82,     0,   582,     0,     0,   103,     0,     0,   221,
+     0,     0,     0,   583,     0,     0,   229,   239,     0,   103,
+     0,     0,  1000,   584,     0,     0,   585,   586,   229,     0,
+     0,   103,   281,   126,   127,    10,     0,     0,     0,     0,
+     0,     0,     0,     0,  1166,     0,     0,   648,     0,  1319,
+     0,     0,     0,     0,    79,     0,     0,     0,     7,     8,
+     9,    10,     0,     0,   103,     0,   103,     0,     0,     0,
+     0,    22,     0,   379,     0,   239,     0,     0,   232,     0,
+    82,   590,   594,   597,   142,     0,    28,   299,   142,     0,
+     0,   142,   142,   142,     0,     0,   691,    22,   494,   494,
+     0,   494,     0,     0,   232,    82,     0,     0,     0,     0,
+     8,     9,    28,    29,    12,    13,     0,     0,    33,     0,
+    14,     0,   142,   142,   142,   587,   587,   587,   587,   587,
+     0,     0,     0,   587,     0,    17,   233,    18,     0,     0,
+     0,     0,     0,    21,    33,   187,   187,   187,   187,  1108,
+     0,   142,    24,   187,     0,   873,   873,   873,     0,     0,
+     0,    27,   772,   129,   130,   775,     0,     0,     0,   777,
+   778,   780,   781,   782,     0,  1108,  1108,  1108,     7,   126,
+   127,    10,   525,     0,   227,   142,     0,  1136,     0,     0,
+     7,     8,     9,    10,     0,   799,   227,     0,     0,     0,
+   829,     0,     0,     0,     0,     0,   187,     0,     0,     0,
+     0,   141,     0,    79,     0,     0,     0,    22,     0,     0,
+     0,     0,     0,   229,   142,     0,     0,   828,     0,    22,
+    27,     0,    28,    29,     0,   581,     0,     0,     0,     0,
+   587,   587,    27,   587,    28,    29,    31,   856,     0,     0,
+     0,   401,  1264,     0,   856,     0,    32,     0,   907,     0,
+   187,   187,     0,   187,    33,     0,     0,   229,   908,    34,
+     0,   580,     0,   142,   142,   596,    33,     0,   584,     0,
+   604,   909,   586,     0,    82,     7,   126,   127,    10,     0,
+     0,    13,     0,     0,   187,   914,   187,     0,     0,     0,
+   379,     0,   281,     8,     9,    10,     0,     0,     0,     0,
+     0,     0,     0,   103,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    22,     0,     0,     0,     0,     0,
+   229,     0,    75,   142,   229,   853,   855,    27,     0,    28,
+    29,    22,     0,     0,   142,     0,     0,   142,   232,     0,
+     0,     0,   142,   146,     0,     0,    28,   299,   648,   140,
+   144,     0,     0,   147,    75,     0,     0,     0,     0,    75,
+     0,    33,   281,     8,     9,    10,   148,     0,     0,     0,
+   233,   142,     0,   142,   197,   142,   142,   142,    33,     0,
+     0,   142,     7,     8,     9,    10,   142,     0,    13,   142,
+     0,  1108,   912,     0,   590,   594,     0,   597,     0,     0,
+     0,    22,     0,     0,   731,    82,   691,     0,   232,     0,
+     0,     0,   691,     0,     0,     0,    28,   299,     0,     0,
+     0,    22,     0,     0,     0,     0,     0,   581,     0,     0,
+     0,     0,     0,     0,    27,   594,    28,    29,     0,     0,
+   485,     0,     0,   229,   229,   229,   229,     0,    33,     0,
+  1104,     0,     0,   391,  1108,  1108,  1108,   394,     0,     0,
+  1105,   396,     0,     0,     0,     0,     0,     0,    33,     0,
+   584,     0,   103,  1106,   586,     0,     0,   187,    75,     0,
+     6,  1050,     7,     8,     9,    10,    11,    12,    13,     0,
+     0,     0,     0,    14,     0,   140,   144,     0,     0,     0,
+     0,   229,     0,   142,     0,     0,    15,    16,    17,     0,
+    18,    19,    20,   799,     0,     0,    21,   142,   142,   691,
+   596,    22,   594,   856,    23,    24,    25,   876,    26,     0,
+     0,     0,     0,     0,    27,     0,    28,    29,     0,   604,
+    30,     0,     0,     0,     0,   142,     0,     0,     0,     0,
+    31,  1287,  1288,     9,    10,   648,     0,  1100,   483,     0,
+    32,   856,     0,     0,     0,     0,     0,     0,    33,     0,
+     0,     0,     0,    34,     0,     0,   125,     0,     0,    35,
+     0,     0,     0,     0,   142,   596,   142,   142,   221,   596,
+    22,     0,     0,     0,     0,  1068,     0,  1069,     0,     0,
+     0,   856,     0,    27,     0,    28,    29,   731,  1075,     0,
+     0,  1289,   853,   855,     0,  1141,     0,     0,     0,   177,
+     0,  1147,     0,     0,     0,     0,     0,   142,   691,   178,
+     0,   596,     0,     0,     0,     0,     0,    33,   142,   142,
+   691,   142,   179,     0,     0,     0,     0,     0,     0,     0,
+   853,   855,     0,     0,     0,     0,     0,   612,     7,     8,
+     9,    10,     0,     0,    13,     0,     0,     0,     0,   133,
+     0,     0,    82,   691,    82,   691,     0,     0,     0,  1001,
+    82,    82,     0,     0,     0,     0,     0,     0,     0,   229,
+     0,     0,     0,     0,     0,   229,     0,    22,     0,     0,
+     0,     0,   142,   142,   142,     0,     0,     0,     0,     0,
+    27,     0,    28,    29,   142,     0,     0,   663,     0,     0,
+   664,     0,     0,     0,     0,   666,   177,     0,     0,     7,
+     8,     9,    10,     0,     0,   482,   178,     0,   437,   439,
+   443,     0,     0,    50,    33,     0,     0,     0,     0,   179,
+     0,     0,     0,     0,   394,     0,   396,     0,   856,     0,
+     0,     0,     0,     0,   229,     0,     0,     0,    22,   483,
+    50,    50,     0,   149,   581,    50,     0,     0,     0,     0,
+    50,    27,     0,    28,    29,     0,   856,   142,   749,   142,
+     0,     0,     0,    50,     0,    50,   229,   907,     0,     0,
+   142,     0,   229,     0,   876,   876,   876,   908,     0,     0,
+     0,   604,     0,     0,     0,    33,     0,   584,   235,     0,
+   909,   586,   541,   542,   543,   544,   545,   546,   547,   548,
+   549,   550,   551,   552,   553,   554,   555,   556,   229,     0,
+   229,     0,   142,   142,   596,  1068,  1069,   853,   855,     0,
+     0,     0,     0,  1075,   544,   545,   546,   547,   548,   549,
+   550,   551,   552,   553,   554,   555,   556,   376,     0,     0,
+     0,   376,   376,     0,    50,   853,   855,     0,    50,     0,
+   235,     0,    50,     0,   876,   149,   149,   149,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   229,    50,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   731,
+     0,   229,     0,     0,  1001,     0,    50,    50,   149,     0,
+     0,     0,  1141,   229,     0,     0,   235,     0,     0,   126,
+   127,     0,     0,   199,   200,     0,     0,     0,     0,    14,
+     0,     0,     0,     0,     0,    50,    82,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   229,     0,   229,     0,
+  1068,  1069,    21,  1075,     0,     0,     0,     0,   913,     0,
+     0,    24,     0,   581,     0,     0,     0,     0,     0,    50,
+    27,     0,   129,   130,     0,     0,     0,     0,     0,     0,
+   142,   142,     0,   142,     0,     0,   582,   701,     0,   702,
+     0,   437,   439,   443,     0,     0,   583,     0,     0,     0,
+     0,     0,   713,     0,   956,     0,   584,     0,     0,   592,
+   586,   663,   664,     0,   666,   545,   546,   547,   548,   549,
+   550,   551,   552,   553,   554,   555,   556,   142,   142,   142,
+   142,   596,     0,     0,     0,   142,     0,     0,   522,     0,
+     0,   731,     0,     0,     0,   749,     0,   749,     0,     0,
+     0,     0,   999,  1006,   749,   376,     0,   876,   876,   876,
+     0,     0,     0,   235,     0,   525,     0,     0,    50,     0,
+     0,     0,     0,   731,     0,     0,     0,     0,     0,     0,
+     0,   648,     0,     0,   376,     0,     0,     0,   142,     0,
+     0,     0,     0,   142,     0,    82,     7,     8,     9,    10,
+   386,    12,    13,     0,     0,   688,     0,    14,   376,     0,
+     0,     0,     0,     0,     0,     0,     0,    50,     0,     0,
+     0,     0,    17,     0,    18,    19,     0,     0,    50,     0,
+    21,    50,     0,     0,     0,    22,    50,     0,     0,    24,
+     0,   581,   142,   142,     0,   142,     0,     0,    27,     0,
+    28,    29,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,  1104,    50,     0,    50,     0,   149,
+   149,   149,     0,     0,  1105,    50,   142,   596,   142,     0,
+    50,    77,    33,    50,   584,     0,     0,  1106,   586,     0,
+     0,   689,     0,     0,     0,   229,     0,     0,     0,    50,
+     0,     0,     0,     0,     0,     0,     0,     0,    77,    77,
+     0,    77,     0,    77,     0,   140,   144,     0,    77,     0,
+     7,   126,   127,    10,     0,     0,   482,     0,     0,   522,
+     0,    77,   522,    77,     0,     0,     0,     0,     0,     0,
+     8,     9,     0,     0,    12,   227,     0,   522,   522,   522,
+    14,     0,     0,     0,   701,   702,     0,   713,     0,    22,
+     0,     0,   522,     0,     0,    17,     0,    18,     0,     0,
+     0,     0,    27,    21,    28,    29,     0,     0,   240,     0,
+     0,     0,    24,   876,   581,     0,     0,   999,    31,     0,
+     0,    27,     0,   129,   130,   998,     0,     0,    32,   126,
+   127,     0,     0,   199,   200,     0,    33,   582,   235,    14,
+     0,    34,    77,     0,     0,     0,    77,   583,     0,   749,
+    77,   522,     0,    77,    77,    77,     0,   584,     0,     0,
+   585,   586,    21,     0,     0,     0,     0,    77,     0,    50,
+     0,    24,     0,   581,     0,     0,   876,   876,   876,     0,
+    27,   407,   129,   130,    77,    77,    77,     0,     0,     0,
+     0,     0,     0,     0,   229,     0,   582,     0,     0,   142,
+     0,     0,   435,     0,     0,     0,   583,     0,    50,    50,
+    50,    50,     0,    77,     0,   451,   584,     8,     9,   585,
+   586,    12,   227,     0,     0,     0,     0,    14,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+   394,   396,    17,     0,    18,     0,     0,    77,   483,     0,
+    21,    50,     0,     0,     0,    50,     0,     0,     0,    24,
+     0,     0,    50,    50,     0,    50,     0,     0,    27,     0,
+   129,   130,     0,     0,     0,     0,     0,     0,     0,   732,
+     0,     7,     8,   733,    10,   386,    12,    13,   437,   439,
+   443,     0,    14,     0,     0,     0,    50,     0,    50,     0,
+     0,  1294,     0,    50,    50,    50,  1294,    17,   749,    18,
+    19,    20,     0,     0,     0,    21,  -495,     0,     0,     0,
+    22,     0,     0,     0,    24,   734,     0,   642,     0,     0,
+   443,     0,   522,    27,     0,    28,    29,     0,     0,   735,
+     0,   736,   603,     0,     0,     0,    77,     0,     0,    31,
+     0,     0,     0,     0,     0,   663,   664,     0,   666,    32,
+   998,     0,     0,     0,     0,     0,     0,    33,     7,     8,
+     9,    10,    34,     0,   227,   543,   544,   545,   546,   547,
+   548,   549,   550,   551,   552,   553,   554,   555,   556,  -495,
+  1357,     0,     0,     0,     0,    77,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    77,    22,     0,    77,
+     0,     0,     0,     0,    77,     0,     0,     0,     0,     0,
+    27,     0,    28,    29,     0,     0,     0,     0,   522,   522,
+   522,     0,     0,     0,   235,     0,   177,     0,     0,     0,
+     0,     0,     0,    77,     0,    77,   178,    77,    77,    77,
+     0,     0,     0,    77,    33,     0,     0,     0,    77,   179,
+     0,    77,   154,     0,     0,     0,    50,    50,   149,     0,
+     0,   706,     0,   235,     0,     0,   712,    77,     0,     0,
+     0,     0,   188,   701,   702,   437,   439,   443,     0,     0,
+     0,   713,     0,     0,     7,     8,     9,    10,   198,   199,
+   200,   753,     0,     0,     0,    14,     0,   759,  1135,     0,
+     0,     0,     0,   437,   439,   443,     0,     0,     0,   767,
+   768,     0,   769,    19,     0,     0,     0,     0,    21,     0,
+     0,     0,     0,    22,     0,     0,     0,    24,    50,   581,
+  1287,   126,   127,    10,  1293,     0,    27,     0,    28,    29,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   235,
+     0,     0,   907,     0,     0,     0,     0,     0,     0,     0,
+    50,     0,   908,     0,   154,   154,   154,     0,     0,    22,
+    33,     0,   584,     0,     0,   909,   586,   603,     0,     0,
+     0,     0,    27,     0,    28,    29,     0,     0,   701,   702,
+  1289,   713,     0,     0,     0,   188,   188,   444,    31,     0,
+     0,     0,     0,     0,     0,   864,   865,    77,    32,     0,
+   864,     0,     0,     0,     0,     0,    33,     0,     0,     0,
+     0,    34,     0,     0,   188,     0,     0,     0,     0,     0,
+     0,   235,     0,     0,     0,     0,     7,     8,     9,    10,
+     0,     0,    13,     0,     0,     0,    77,    77,    77,    77,
      0,    50,    50,   149,   149,   149,     0,   235,     0,    50,
-     0,     0,     0,     0,     7,     8,     9,    10,     0,     0,
-    13,     0,     0,  1215,   977,     0,  1130,  1130,  1130,    77,
-     0,    77,     0,     0,     0,     0,    77,    77,    77,     0,
-     0,     0,     0,   319,   319,     0,   319,   154,   154,   154,
-     0,     0,     0,    22,     0,     0,     0,    50,     0,   581,
-     0,   684,    50,     0,    50,     0,    27,     0,    28,    29,
-     0,     0,     0,     0,     0,     0,     0,     0,   188,   188,
-   444,  1267,  1104,  1039,     0,  1268,     0,     0,     0,     0,
-     0,     0,  1105,     0,     0,     7,     8,     9,    10,     0,
-    33,    13,   584,     0,     0,  1106,   586,   188,     0,     0,
-     0,    50,    50,     0,    50,     0,     0,     0,  1283,     0,
-   680,   684,     0,     0,     0,   590,   594,   597,     0,     0,
-     0,     0,     0,     0,    22,   684,     0,   684,     0,   684,
-     0,     0,     0,     0,     0,     0,     0,    27,     0,    28,
-    29,     0,     0,     0,     0,     0,     0,  1331,     0,     0,
-     0,  1332,     0,   440,     0,     0,     0,     0,   603,     0,
-     0,     0,  1088,   441,     0,     0,     0,     0,     0,     0,
-   495,    33,   684,  1350,  1351,     0,   442,     0,     0,     0,
-     0,     0,     0,     0,   319,     0,     0,     0,     0,    77,
-    77,    77,     0,     0,     0,     0,     0,  1111,     0,     0,
-     0,     0,     0,     0,     0,    50,    50,    50,     0,   684,
-   732,     0,     7,     8,   733,    10,   386,    12,    13,   589,
-   589,   589,     0,    14,     0,     0,     0,   684,     0,     0,
-     0,  1132,     0,     0,     0,     0,     0,     0,    17,     0,
-    18,    19,    20,     0,     0,     0,    21,  -495,     0,     0,
-     0,    22,     0,     0,     0,    24,   734,     0,   642,     0,
-     0,    77,     0,     0,    27,     0,    28,    29,     0,  1156,
-   735,     0,   736,     0,     0,     0,     0,     0,     0,   188,
-    31,     0,     0,  1130,     0,     0,     0,     0,     0,     0,
-    32,     0,     0,    77,     0,     0,     0,     0,    33,     0,
-     0,     0,     0,    34,     7,     8,     9,    10,     0,     0,
-   482,     7,   126,   127,    10,     0,     0,     0,   680,   680,
-  -495,     0,  1185,  1130,  1130,  1130,     0,   188,     0,   188,
-     0,   444,   444,   444,     0,     0,     0,   188,     0,     0,
-     0,   319,   188,    22,     0,   188,     0,     0,     0,     0,
-    22,     0,     0,    50,     0,     0,    27,     0,    28,    29,
-     0,     0,     0,    27,     0,    28,    29,     0,     0,   853,
-   855,     0,   177,     0,     0,     0,     0,     0,     0,   146,
-     0,     0,   178,     0,    77,    77,    77,    77,    77,   147,
-    33,    75,    77,     0,     0,   179,   684,    33,   684,     0,
-   684,     0,   148,   680,     0,     0,     0,     0,     0,  1132,
-  1132,  1132,   680,   680,     0,     0,     0,   680,   140,   144,
-     0,     0,     0,    75,     0,     0,     0,     0,    75,     0,
-     0,     0,  1248,  1249,     0,     0,   912,     0,   590,   594,
-    77,   597,     0,   197,     0,    77,     0,    77,     0,     0,
-     7,     8,     9,    10,     0,     0,     0,     0,   680,   838,
-   545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
-   555,   556,     0,   589,   589,     0,   589,     0,     0,   594,
-     0,     0,     0,   589,     0,     0,     0,   684,     0,    22,
-     0,     0,     0,     0,    77,    77,     0,    77,     0,     0,
-     0,   188,    27,     0,    28,    29,     0,     0,  1388,     0,
-     0,     0,     0,     0,     0,     0,   680,     0,   177,     0,
-     0,   186,   391,     0,     0,     0,   394,     0,   178,     0,
-   396,     0,  1338,     0,     8,     9,    33,     0,    12,   227,
-   911,   179,   911,   911,    14,   589,   238,    75,     0,   242,
-     0,     0,     0,     0,   680,     0,     0,     0,     0,    17,
-     0,    18,     0,     0,   140,   144,   594,    21,     0,     0,
-   238,     0,   345,     0,     0,     0,    24,     0,   581,     0,
-     0,  1374,     0,   911,     0,    27,     0,   129,   130,     0,
-     0,     0,     0,     0,   188,   188,     0,   188,    77,    77,
-    77,   582,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   583,     0,     0,  1405,  1406,     0,     0,     0,     0,
-     0,   584,     0,  1411,   585,   586,     0,   483,     0,     7,
-     8,     9,    10,     0,     0,   188,     0,     0,     0,  1068,
-     0,  1069,     0,     0,   186,   186,   186,     0,     0,     0,
-     0,     0,  1075,     0,   450,     0,   853,   855,   495,   495,
-   495,     0,     0,     0,     0,     0,     0,     0,    22,     0,
-   589,     0,   684,   186,     0,     0,  1132,     0,     0,     0,
-     0,    27,     0,    28,    29,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   853,   855,   242,   440,     0,     0,
-     0,     0,  1465,     0,     0,     0,     0,   441,     0,     0,
-   238,     0,     0,     0,     0,    33,  1132,  1132,  1132,     0,
-   442,     0,     0,     0,     0,     0,   612,     6,     0,     7,
-     8,     9,    10,    11,    12,    13,     0,     0,     0,     0,
-    14,     0,     0,   589,     0,   589,    77,     0,     0,     0,
-     0,     0,     0,    15,    16,    17,   589,    18,    19,    20,
-   589,   589,   589,    21,     0,     0,     0,     0,    22,     0,
-     0,    23,    24,    25,     0,    26,     0,     0,     0,     0,
-     0,    27,     0,    28,    29,     0,   663,    30,     0,   664,
-     0,     0,     0,     0,   666,     0,     0,    31,   911,   911,
-  1109,   238,   242,     0,     0,     0,     6,    32,     7,     8,
-     9,    10,    11,    12,    13,    33,     0,     0,     0,    14,
-    34,     0,     0,   394,   680,   396,    35,     0,     0,     0,
-     0,     0,     0,     0,    17,     0,    18,    19,   483,     0,
-  1109,     0,    21,     0,     0,     0,     0,    22,     0,     0,
-     0,    24,     0,     0,   411,   186,     0,   749,     0,     0,
-    27,     0,    28,    29,     0,     0,    30,     0,     0,     0,
-   188,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    32,     0,     0,  1068,
-  1069,   853,   855,     0,    33,     0,     0,  1075,     0,    34,
-     0,     0,     0,   186,     0,   186,     0,   186,   186,   186,
-     0,     0,     0,   186,   853,   855,     0,     0,   186,     0,
-     0,   186,     0,     0,     0,     0,     0,     0,   732,     0,
-     7,     8,   733,    10,   386,    12,    13,     0,     0,     0,
-     0,    14,     0,     0,     0,     0,   838,   838,     0,   838,
-     0,     0,     0,     0,     0,     0,    17,     0,    18,    19,
-    20,     0,     0,     0,    21,  -494,     0,     0,     0,    22,
-     0,     0,     0,    24,   734,     0,   642,     0,     0,     0,
-     0,     0,    27,     0,    28,    29,     0,     0,   735,     0,
-   736,     0,     0,   911,   911,  1109,  1109,  1109,    31,  1068,
-  1069,   911,  1075,     0,     0,     0,     0,     0,    32,     0,
-     0,     0,     0,     0,     0,     0,    33,     0,  1109,  1109,
-  1109,    34,   126,   127,     0,     0,     0,   482,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   913,  -494,     0,
-     0,     0,     0,     0,     0,     0,     0,   101,     0,   188,
-     0,     0,     0,     0,     0,     0,     0,   120,   101,     0,
-     0,     0,   238,   242,   101,   101,   581,   101,     0,     0,
-     0,     0,     0,    27,     0,   129,   130,   186,     0,     0,
-     0,     0,     0,   956,     0,     0,     0,     0,     0,   582,
-   663,   664,     0,   666,     0,     0,     0,   219,     0,   583,
-     0,     0,    19,   911,   911,     0,   911,     0,     0,   584,
-     0,     0,   585,   586,     0,     0,   186,     0,   186,   186,
-     0,     0,     0,     0,   749,     0,   749,     0,     0,     0,
-     0,   999,  1006,   749,   535,   536,   537,   538,   539,   540,
-   541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
-   551,   552,   553,   554,   555,   556,   369,     0,   120,   186,
-     0,   101,     0,     0,     0,   101,   101,     0,     0,     0,
-   186,   186,   101,   186,   101,   101,   101,     0,     0,   101,
-   101,   101,     0,     0,     0,     0,     0,   161,     0,     7,
-     8,     9,    10,    11,    12,    13,     0,     0,   242,     0,
-    14,     0,     0,     0,     0,     0,     0,   188,     0,   188,
-     0,   186,     0,    15,    16,    17,     0,    18,    19,    20,
-     0,     0,     0,    21,     0,     0,     0,     0,    22,     0,
-     0,    23,    24,    25,     0,    26,     0,     7,     8,     9,
-    10,    27,     0,    28,    29,     8,     9,    30,     0,    12,
-    13,     0,     0,   465,   101,    14,     0,    31,     0,     0,
-     0,     0,     7,     8,     9,    10,     0,    32,   482,     0,
-    17,     0,    18,   101,     0,    33,    22,     0,    21,     0,
-    34,     0,     0,     0,     0,   444,    35,    24,     0,    27,
-     0,    28,    29,     0,   140,   144,    27,     0,   129,   130,
-     0,    22,     0,     0,     0,   177,     0,   581,     0,     0,
-     0,     0,   101,     0,    27,   178,    28,    29,     0,     0,
-     0,     0,     0,    33,     0,   444,   444,   444,   179,     0,
-   907,     0,     0,     0,     0,   829,     0,     0,     0,     0,
-   908,     0,   238,   242,   238,     0,     0,     0,    33,     0,
-   584,     0,     0,   909,   586,   188,     0,     0,     0,   101,
-     0,   101,   101,     0,     0,     0,   999,     0,     8,     9,
-     0,   386,    12,    13,   186,   186,  1107,     0,    14,     0,
-     0,   238,     0,     0,     0,     0,     0,     0,   101,     0,
-     0,     0,     0,    17,     0,    18,    19,     0,   749,     0,
-     0,    21,     0,     0,     0,     0,     0,     0,     0,     0,
-   641,     0,   101,   642,     0,     0,  1107,     0,     0,    27,
-     0,   129,   130,     0,     0,     0,     0,     0,   101,     0,
-     0,     0,   101,     0,     0,   101,     0,     0,     0,     0,
-   101,     0,     0,     0,     0,     0,   186,     0,     0,     0,
-     0,     0,     7,     8,     9,    10,   189,    12,   190,     0,
-     0,     0,     0,    14,     0,     0,     0,   450,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    17,     0,
-    18,    19,     0,     0,     0,     0,    21,     0,     0,   394,
-   396,    22,     0,     0,     0,    24,     0,   483,     0,     0,
-   101,     0,   724,     0,    27,     0,    28,    29,     0,     0,
-   191,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    31,     0,     0,     0,     0,     0,     0,   101,     0,     0,
-    32,     0,     0,     0,     0,     0,     0,     0,    33,     0,
-     0,     0,     0,    34,     0,  1259,     0,     0,     0,   238,
-  1259,     0,   749,     0,     7,     8,     9,    10,   386,    12,
-    13,     0,     0,   955,     0,    14,     0,     0,     0,   186,
-   186,   186,   186,  1107,     0,  1214,     0,   186,     0,     0,
-    17,     0,    18,    19,     0,     0,     0,     0,    21,     0,
-     0,     0,     0,    22,  1107,  1107,  1107,    24,     0,   663,
-   664,   101,   666,     0,     0,     0,    27,     0,    28,    29,
-     0,     0,   101,   101,     0,   101,   101,     0,     0,     0,
-     0,     0,    31,     0,     0,   186,     0,     0,     0,     0,
-     0,     0,    32,     0,     0,     0,     0,     0,     0,     0,
-    33,     0,     0,     0,     0,    34,   540,   541,   542,   543,
-   544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-   554,   555,   556,     0,     0,  1344,     0,  -449,  -449,  -449,
-  -449,  -449,  -449,  -449,   120,     0,  -449,     0,  -449,   186,
-   186,     0,   186,     0,     0,     0,   219,     0,     0,  -449,
-     0,  -449,  -449,     0,     0,     0,  -449,     0,     0,     0,
-     0,  -449,     0,     0,  1393,   724,  -449,     0,     0,     0,
-  -449,     0,  -449,     0,     0,     0,     0,     0,     0,  -449,
-     0,  -449,  -449,  -449,  -449,  -449,     0,  -449,  -449,  -449,
-  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,
-  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,
-     0,  -449,  -449,  -449,     0,  -449,  -449,  -449,  -449,  -449,
-  -449,     0,  -449,  -449,   724,     0,     0,   101,  1345,     0,
-     0,     0,     0,  -449,  -449,  -449,     0,  -449,     0,     0,
-     0,     0,     0,   186,     0,   186,   517,     0,   281,     8,
-     9,    10,   386,    12,   282,   283,   284,   688,   285,    14,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     7,     8,     9,    10,    22,     0,   482,     0,     0,
+     0,  1135,  1135,  1135,     0,     0,     0,     0,    27,    77,
+    28,    29,     0,    77,     0,     0,     0,   495,     0,     0,
+    77,    77,     0,    77,   440,     0,     0,     0,     0,     0,
+    22,     0,    50,     0,   441,     0,     0,    50,     0,    50,
+     0,     0,    33,    27,     0,    28,    29,   442,     0,   443,
+     0,     0,   126,   127,    77,     0,    77,   482,     0,   177,
+     0,    77,    77,    77,     0,     0,   589,   589,   589,   178,
+     0,     0,     0,     0,     0,     0,   186,    33,     7,     8,
+     9,    10,   179,     0,     0,     0,    50,    50,     0,    50,
+     0,     0,     0,     0,     0,     0,   581,     0,  1020,     0,
+  1022,   238,     0,    27,   242,   129,   130,     0,     0,     0,
+     0,     0,   437,   439,   443,     0,     0,    22,     0,   582,
+    50,    50,    50,     0,     0,   238,   188,   345,     0,   583,
+    27,     0,    28,    29,     0,     0,  1352,     0,     0,   584,
+     0,     0,   585,   586,     0,     0,   177,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   178,     0,     0,     0,
+     0,     0,     0,     0,    33,     0,     0,     0,     0,   179,
+     0,     0,  1055,  1056,   188,  1058,   188,     0,   444,   444,
+   444,     0,     0,     0,   188,     0,     0,     0,     0,   188,
+     0,     0,   188,   603,     0,     0,     0,     0,     0,   186,
+   186,   186,     0,  1076,     0,     0,     0,     0,     0,   450,
+     8,     9,     0,   386,    12,    13,     0,     0,   688,     0,
+    14,     0,     0,     0,    77,    77,    77,  1135,   186,     0,
+     0,     7,   126,   127,    10,    17,     0,    18,    19,     0,
+     0,     0,     0,    21,     0,     0,     0,     0,  1110,     0,
+     0,   242,    24,     0,   581,     0,     0,     0,     0,     0,
+     0,    27,     0,   129,   130,   238,  1137,     0,     0,     0,
+    22,     0,     0,     0,     0,     0,     0,   582,     0,     0,
+     0,     0,     0,    27,     0,    28,    29,   583,     0,     0,
+  1135,  1135,  1135,     0,     0,     0,    77,   584,     0,   146,
+   585,   586,     0,     0,   689,     0,   838,     0,     0,   147,
+     0,     0,  1152,    50,     0,     0,     0,    33,     0,     0,
+   589,   589,   148,   589,  1157,     0,     0,     0,    77,     0,
+   589,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     8,     9,     0,   386,    12,    13,     0,     0,   188,     0,
+    14,     0,     0,     0,     0,     0,   238,   242,     0,     0,
+     0,     7,     8,     9,    10,    17,     0,    18,    19,     0,
+     0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
+     0,     0,   641,     0,     0,   642,     0,   911,     0,   911,
+   911,    27,   589,   129,   130,     0,     0,     0,     0,     0,
+    22,     0,     0,     0,     0,     0,     0,     0,  1207,     0,
+   186,     0,     0,    27,     0,    28,    29,     0,     0,    77,
+    77,    77,    77,    77,     0,     0,     0,    77,     0,   440,
+   911,     0,     0,     0,     0,     0,     0,     0,     0,   441,
+     0,   188,   188,     0,   188,     0,  1220,    33,     0,  1137,
+  1137,  1137,   442,     0,     0,     0,     0,     0,   186,     0,
+   186,     0,   186,   186,   186,     0,     0,     0,   186,     0,
+     0,     0,     0,   186,     0,     0,   186,     0,     0,     0,
+    77,     0,   188,     0,     0,    77,     0,    77,     0,     0,
+     0,     0,     0,     0,     0,   732,     0,     7,     8,   733,
+    10,   386,    12,    13,     0,   495,   495,   495,    14,  1302,
+     0,     0,     0,  1303,     0,     0,     0,   589,     0,     0,
+     0,     0,     0,    17,     0,    18,    19,    20,     0,     0,
+     0,    21,  -494,     0,    77,    77,    22,    77,     0,     0,
+    24,   734,     0,   642,     0,     0,  1318,     0,     0,    27,
+     0,    28,    29,     0,     0,   735,     0,   736,     7,     8,
+     9,    10,     0,     0,     0,    31,     0,     0,    77,    77,
+    77,     0,     0,     0,     0,    32,     0,     0,     0,     0,
+     0,     0,     0,    33,     0,     0,     0,     0,    34,     0,
+   589,     0,   589,     0,     0,     0,     0,    22,     0,     0,
+     0,     0,     0,   589,     0,  -494,     0,   589,   589,   589,
+    27,     0,    28,    29,     0,  1370,     0,   238,   242,  1371,
+     0,     0,     0,     0,     0,     0,   177,     0,     0,     0,
+     8,     9,   186,   386,    12,    13,   178,     0,  1470,     0,
+    14,  1389,  1390,     0,    33,   911,   911,  1109,     0,   179,
+     0,     0,     0,     0,     0,    17,     0,    18,    19,     0,
+     0,     0,     0,    21,     0,     0,     0,     0,     0,     0,
+     0,   186,    24,   186,   186,  1137,     0,     0,     0,     0,
+     0,    27,     0,   129,   130,     0,     0,  1109,     0,     0,
+     7,     8,     9,    10,   198,   199,   200,     0,   101,     0,
+     0,    14,     0,     0,     0,     0,     0,     0,   120,   101,
+     0,     0,     0,     0,   186,   101,   101,   188,   101,    19,
+     0,     0,     0,     0,    21,   186,   186,     0,   186,    22,
+     0,     0,     0,    24,     0,   581,     0,     0,  1137,  1137,
+  1137,     0,    27,     0,    28,    29,     8,     9,   219,   189,
+    12,   190,     0,   242,     0,     0,    14,     0,   907,     0,
+     0,    77,     0,     0,     0,     0,   186,     0,   908,     0,
+     0,    17,     0,    18,    19,     0,    33,     0,   584,    21,
+     0,   949,   586,     0,     0,     0,     0,     0,    24,     0,
+     0,     0,     0,   838,   838,     0,   838,    27,     0,   129,
+   130,     0,     0,     0,     0,     0,     0,   369,     0,   120,
+     0,     0,   101,     0,     0,     0,   101,   101,     0,     0,
+     0,     0,     0,   101,     0,   101,   101,   101,     0,     0,
    101,   101,   101,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   101,     0,    17,   286,    18,    19,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,   581,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,  -285,     0,     0,   300,     0,     0,
-     0,     0,     0,   301,     0,     0,   869,     0,     0,     0,
-     0,  1107,     0,     0,   303,   304,   870,     0,     0,     0,
-     0,     0,   306,   307,   308,     0,   584,     0,     0,   871,
-   586,     0,     0,   689,     0,   101,     0,   101,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   310,   101,     0,
-     0,  1107,  1107,  1107,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,  1396,     0,  1295,  1296,
-  1297,    10,   386,    12,   282,   283,   284,     0,   285,    14,
-  1298,   186,  1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,
-  1307,  1308,    15,    16,    17,   286,    18,    19,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,  1309,   299,   675,     0,  1310,   300,     0,     0,
-     0,     0,     0,   301,   244,     0,   302,     8,     9,     0,
-     0,    12,    13,     0,   303,   304,   305,    14,     0,     0,
-     0,     0,   306,   307,   308,     0,     0,   724,     0,   309,
-     0,  1311,    17,     0,    18,     0,     0,     0,     0,     0,
-    21,     0,   245,   246,     0,     0,  1397,   310,     0,    24,
-     0,   247,     0,     0,   101,     0,     0,     0,    27,     0,
-   129,   130,     0,   248,     0,     0,     0,   249,   250,   251,
-   252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
-   262,   263,   264,   265,   266,   267,   268,   269,     0,     0,
-   270,   271,   272,     0,     0,   273,     0,     0,   274,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   101,   101,
-     0,   101,     0,     0,  1294,   275,  1295,  1296,  1297,    10,
-   386,    12,   282,   283,   284,     0,   285,    14,  1298,     0,
-  1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,  1307,  1308,
-    15,    16,    17,   286,    18,    19,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,     0,     0,   294,   295,   296,   297,   298,    27,   724,
-  1309,   299,   675,     0,  1310,   300,     0,     0,     0,     0,
-     0,   301,     0,     0,   302,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,   305,     0,   724,     0,     0,     0,
-   306,   307,   308,     0,     0,     0,     0,   309,     0,  1311,
-     0,     0,     0,     0,   101,     0,   101,     0,     0,     0,
-     0,     0,     0,     0,   517,   310,     7,     8,     9,    10,
-   386,    12,   282,   283,   284,   688,   285,    14,   543,   544,
+   911,   911,  1109,  1109,  1109,     0,     0,     0,   911,   539,
+   540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
+   550,   551,   552,   553,   554,   555,   556,     0,     0,     0,
+  1109,  1109,  1109,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   732,     0,     7,
+     8,   733,    10,   386,    12,    13,     0,   238,   242,   238,
+    14,   188,     0,     0,   465,   101,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    17,     0,    18,    19,    20,
+     0,     0,     0,    21,   101,     0,     0,     0,    22,   186,
+   186,  1107,    24,   734,     0,   642,   238,     0,     0,     0,
+     0,    27,     0,    28,    29,     0,     0,   735,     0,   736,
+     0,     0,     0,     0,     0,   911,   911,    31,   911,     0,
+     0,     0,     0,   101,     0,     0,     0,    32,     0,     0,
+     0,  1107,     0,     0,     0,    33,     0,     0,     0,   244,
+    34,     0,     8,     9,     0,     0,    12,    13,     0,   188,
+     0,   188,    14,     0,     0,     0,     0,     0,     0,     0,
+     0,   186,     0,     0,     0,     0,     0,    17,     0,    18,
+   101,     0,   101,   101,     0,    21,     0,   245,   246,     0,
+     0,     0,   450,     0,    24,     0,   247,     0,     0,     0,
+     0,     0,     0,    27,     0,   129,   130,     0,   248,   101,
+     0,     0,   249,   250,   251,   252,   253,   254,   255,   256,
+   257,   258,   259,   260,   261,   262,   263,   264,   265,   266,
+   267,   268,   269,   101,     0,   270,   271,   272,     0,     0,
+   273,     0,     0,   274,     0,     0,     0,     0,     0,   101,
+     0,     0,     0,   101,     0,     0,   101,     0,     0,     0,
+   275,   101,     0,     0,     0,     0,   444,     0,     0,     0,
+     0,     0,     0,     0,   238,   540,   541,   542,   543,   544,
    545,   546,   547,   548,   549,   550,   551,   552,   553,   554,
-   555,   556,    17,   286,    18,    19,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,   581,     0,   294,   295,   296,   297,   298,    27,     0,
-    28,    29,  -285,     0,     0,   300,     0,     0,     0,     0,
-     0,   301,     0,     0,  1127,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,  1128,     0,     0,     0,     0,     0,
-   306,   307,   308,     0,   584,     0,     0,  1129,   586,     0,
-   687,   689,   281,     8,     9,    10,   386,    12,   282,   283,
-   284,   688,   285,    14,     0,   310,     0,     0,     0,     0,
+   555,   556,     0,     0,   186,   186,   186,   186,  1107,     0,
+  1219,     0,   186,   542,   543,   544,   545,   546,   547,   548,
+   549,   550,   551,   552,   553,   554,   555,   556,     0,     0,
+     0,   101,     0,   724,  1107,  1107,  1107,     0,     0,   444,
+   444,   444,     0,     0,     0,     0,     0,     0,     7,     8,
+     9,    10,   386,    12,    13,     0,     0,   955,   101,    14,
+     0,     0,   188,     0,     0,   186,     0,     0,     0,     0,
+     0,     0,     0,     0,    17,     0,    18,    19,     0,     0,
+     0,     0,    21,     0,     0,     0,     0,    22,     0,     0,
+     0,    24,     0,     0,     0,     0,     0,     0,     0,     0,
+    27,     0,    28,    29,  1383,     0,  -449,  -449,  -449,  -449,
+  -449,  -449,  -449,     0,     0,  -449,    31,  -449,     0,   186,
+   186,     0,   186,     0,     0,     0,    32,     0,  -449,     0,
+  -449,  -449,   101,     0,    33,  -449,     0,     0,     0,    34,
+  -449,     0,     0,   101,   101,  -449,   101,   101,     0,  -449,
+     0,  -449,     0,   186,     0,   186,     0,     0,  -449,     0,
+  -449,  -449,  -449,  -449,  -449,     0,  -449,  -449,  -449,  -449,
+  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,
+  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,  -449,     0,
+  -449,  -449,  -449,     0,  -449,  -449,  -449,  -449,  -449,  -449,
+     0,  -449,  -449,     0,     0,   120,     0,  1384,     0,     0,
+     0,     0,  -449,  -449,  -449,     0,  -449,   219,     0,     0,
+   161,     0,     7,     8,     9,    10,    11,    12,    13,     0,
+     8,     9,     0,    14,    12,    13,   724,     0,     0,     0,
+    14,     0,     0,     0,     0,     0,    15,    16,    17,     0,
+    18,    19,    20,     0,     0,    17,    21,    18,     0,     0,
+  1107,    22,     0,    21,    23,    24,    25,     0,    26,     0,
+     0,     0,    24,     0,    27,     0,    28,    29,     0,     0,
+    30,    27,     0,   129,   130,     0,     0,     0,     0,     0,
+    31,     0,     0,     0,     0,   724,     0,     0,   101,     0,
+    32,     0,     0,     0,     0,     0,     0,     0,    33,     0,
+     0,     0,     0,    34,     0,     0,     0,     0,     0,    35,
+     0,     0,     0,  1107,  1107,  1107,     0,     0,     0,     0,
+     0,   101,   101,   101,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   101,     0,  1360,   186,  1230,  1231,  1232,
+    10,   386,    12,   282,   283,   284,     0,   285,    14,  1233,
+     0,  1234,  1235,  1236,  1237,  1238,  1239,  1240,  1241,  1242,
+  1243,    15,    16,    17,   286,    18,    19,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
+     0,  1244,   299,   675,     0,  1245,   300,     0,     0,     0,
+     0,     0,   301,     0,     0,   302,   101,     0,   101,     0,
+     0,     0,     0,   303,   304,   305,     0,     0,     0,   101,
+     0,   306,   307,   308,     0,     0,     0,     0,   309,     0,
+  1246,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,  1361,   310,  1229,     0,  1230,
+  1231,  1232,    10,   386,    12,   282,   283,   284,     0,   285,
+    14,  1233,     0,  1234,  1235,  1236,  1237,  1238,  1239,  1240,
+  1241,  1242,  1243,    15,    16,    17,   286,    18,    19,    20,
+     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
+   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
+   298,    27,     0,  1244,   299,   675,     0,  1245,   300,     0,
+     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
+     0,     0,     0,     0,     0,   303,   304,   305,   724,     0,
+     0,     0,     0,   306,   307,   308,     0,     0,     0,     0,
+   309,   517,  1246,   281,     8,     9,    10,   386,    12,   282,
+   283,   284,   688,   285,    14,   101,     0,     0,   310,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    17,
+   286,    18,    19,    20,     0,   287,   288,    21,     0,   289,
+   290,   291,    22,   292,   293,     0,    24,     0,   581,     0,
+   294,   295,   296,   297,   298,    27,     0,    28,   299,  -285,
+     0,     0,   300,     0,     0,     0,     0,     0,   301,   101,
+   101,   869,   101,     0,     0,     0,     0,     0,     0,   303,
+   304,   870,     0,     0,     0,     0,     0,   306,   307,   308,
+     0,   584,     0,     0,   871,   586,     0,   517,   689,     7,
+     8,     9,    10,   386,    12,   282,   283,   284,   688,   285,
+    14,     0,   310,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    17,   286,    18,    19,    20,
+   724,   287,   288,    21,     0,   289,   290,   291,    22,   292,
+   293,     0,    24,     0,   581,     0,   294,   295,   296,   297,
+   298,    27,     0,    28,    29,  -285,     0,     0,   300,     0,
+     0,     0,   724,     0,   301,     0,     0,  1132,     0,     0,
+     0,     0,     0,     0,     0,   303,   304,  1133,     0,     0,
+   101,     0,   101,   306,   307,   308,     0,   584,     0,     0,
+  1134,   586,     0,   687,   689,   281,     8,     9,    10,   386,
+    12,   282,   283,   284,   688,   285,    14,     0,   310,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    17,   286,    18,    19,    20,     0,   287,   288,    21,
+     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
+     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
+   299,     0,     0,     0,   300,     0,     0,     0,     0,     0,
+   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
+     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
+   307,   308,     0,     0,     0,     0,   309,     0,     0,     0,
+   689,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,  -759,   802,   310,   281,     8,     9,    10,   386,
+    12,   282,   283,   284,     0,   285,    14,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    17,   286,    18,    19,    20,     0,   287,   288,    21,
+     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
+     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
+   299,  1449,     0,  -749,   300,     0,     0,     0,     0,     0,
+   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
+     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
+   307,   308,     0,     0,     0,   678,   309,   790,   791,   792,
+    10,     0,    12,   499,   283,   284,     0,   285,    14,     0,
+     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
+     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
+     0,   793,   794,   679,     0,     0,   300,     0,     0,     0,
+     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
+     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
+     0,   306,   307,   308,     0,     0,     0,     0,   309,   795,
+   678,     0,   790,   791,   792,    10,     0,    12,   499,   283,
+   284,     0,   285,    14,     0,   940,   310,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,    17,   286,
-    18,    19,    20,     0,   287,   288,    21,     0,   289,   290,
+    18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
    291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,   299,     0,     0,
+   295,   296,   297,   298,    27,     0,   793,   794,   679,     0,
      0,   300,     0,     0,     0,     0,     0,   301,     0,     0,
    302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
    305,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-     0,     0,     0,   309,     0,     0,     0,   689,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,  -763,
-   802,   310,   281,     8,     9,    10,   386,    12,   282,   283,
-   284,     0,   285,    14,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    17,   286,
-    18,    19,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,   299,  1457,     0,
-  -753,   300,     0,     0,     0,     0,     0,   301,     0,     0,
-   302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-   305,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-     0,     0,   678,   309,   790,   791,   792,    10,     0,    12,
-   499,   283,   284,     0,   285,    14,     0,     0,     0,     0,
+     0,     0,     0,   309,   795,   678,     0,   790,   791,   792,
+    10,     0,    12,   499,   283,   284,     0,   285,    14,     0,
      0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
-    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,   793,   794,
-   679,     0,     0,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   302,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   305,     0,     0,     0,     0,     0,   306,   307,
-   308,     0,     0,     0,     0,   309,   795,   678,     0,   790,
+     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
+     0,   793,   794,   679,     0,     0,   300,     0,     0,     0,
+     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
+     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
+     0,   306,   307,   308,     0,     0,     0,   678,   309,   790,
    791,   792,    10,     0,    12,   499,   283,   284,     0,   285,
-    14,     0,   940,   310,     0,     0,     0,     0,     0,     0,
+    14,     0,     0,     0,     0,  -453,   310,     0,     0,     0,
      0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
      0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
    293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
    298,    27,     0,   793,   794,   679,     0,     0,   300,     0,
      0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
      0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
-     0,     0,     0,   306,   307,   308,     0,     0,     0,     0,
-   309,   795,   678,     0,   790,   791,   792,    10,     0,    12,
-   499,   283,   284,     0,   285,    14,     0,     0,   310,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,   793,   794,
-   679,     0,     0,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   302,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   305,     0,     0,     0,     0,     0,   306,   307,
-   308,     0,     0,     0,   678,   309,   790,   791,   792,    10,
-     0,    12,   499,   283,   284,     0,   285,    14,     0,     0,
-     0,     0,  -453,   310,     0,     0,     0,     0,     0,     0,
-     0,     0,    17,   286,    18,     0,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,     0,     0,   294,   295,   296,   297,   298,    27,     0,
-   793,   794,   679,     0,     0,   300,     0,     0,     0,     0,
-     0,   301,     0,     0,   302,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,   305,     0,     0,     0,     0,     0,
-   306,   307,   308,     0,     0,     0,   678,   309,   281,     8,
-     9,    10,     0,    12,   499,   283,   284,     0,   285,    14,
-     0,     0,     0,     0,  1228,   310,     0,     0,     0,     0,
-     0,     0,     0,     0,    17,   286,    18,     0,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,   679,     0,     0,   300,     0,     0,
-     0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,     0,     0,     0,     0,   309,
-     0,     0,   517,     0,   281,     8,     9,    10,  1232,    12,
-   282,   283,   284,     0,   285,    14,     0,   310,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,    28,   299,
-  -285,     0,     0,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   518,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   519,     0,     0,     0,     0,     0,   306,   307,
-   308,     0,     0,     0,   678,   520,   281,     8,     9,    10,
-     0,    12,   499,   283,   284,     0,   285,    14,     0,     0,
-     0,     0,     0,   310,     0,     0,     0,     0,     0,     0,
-     0,     0,    17,   286,    18,     0,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,     0,     0,   294,   295,   296,   297,   298,    27,     0,
-    28,   299,   679,     0,     0,   300,     0,     0,     0,     0,
-     0,   301,     0,     0,   302,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,   305,     0,     0,     0,     0,     0,
-   306,   307,   308,     0,     0,     0,   802,   309,   281,     8,
-     9,    10,     0,    12,   499,   283,   284,     0,   285,    14,
-     0,     0,     0,     0,     0,   310,     0,     0,     0,     0,
-     0,     0,     0,     0,    17,   286,    18,     0,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,     0,     0,     0,   300,  -753,     0,
-     0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,     0,     0,     0,   517,   309,
-     7,     8,     9,    10,     0,    12,   282,   283,   284,     0,
-   285,    14,     0,     0,     0,     0,     0,   310,     0,     0,
-     0,     0,     0,     0,     0,     0,    17,   286,    18,     0,
-    20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
-   292,   293,     0,    24,     0,     0,     0,   294,   295,   296,
-   297,   298,    27,     0,    28,    29,  -285,     0,     0,   300,
-     0,     0,     0,     0,     0,   301,     0,     0,  1434,     0,
-     0,     0,     0,     0,     0,     0,   303,   304,  1435,     0,
-     0,     0,     0,     0,   306,   307,   308,     0,     0,     0,
-  1524,  1436,   281,     8,     9,    10,     0,    12,   282,   283,
-   284,     0,   285,    14,     0,     0,     0,     0,     0,   310,
-     0,     0,     0,     0,     0,     0,     0,     0,    17,   286,
-    18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,   299,     0,     0,
-  -174,   300,     0,     0,     0,     0,     0,   301,     0,     0,
-   302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-   305,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-     0,     0,   802,   309,   281,     8,     9,    10,     0,    12,
-   499,   283,   284,     0,   285,    14,     0,     0,     0,     0,
-     0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
-    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,    28,   299,
-     0,     0,     0,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   302,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   305,     0,     0,     0,     0,     0,   306,   307,
-   308,     0,     0,     0,   888,   309,   281,     8,     9,    10,
-     0,    12,   499,   283,   284,     0,   285,    14,     0,     0,
-     0,  -753,     0,   310,     0,     0,     0,     0,     0,     0,
-     0,     0,    17,   286,    18,     0,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,     0,     0,   294,   295,   296,   297,   298,    27,     0,
-    28,   299,     0,     0,     0,   300,     0,     0,     0,     0,
-     0,   301,     0,     0,   302,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,   305,     0,     0,     0,     0,     0,
-   306,   307,   308,     0,     0,     0,   890,   309,   281,     8,
-     9,    10,     0,    12,   499,   283,   284,     0,   285,    14,
-     0,     0,     0,     0,     0,   310,     0,     0,     0,     0,
-     0,     0,     0,     0,    17,   286,    18,     0,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,     0,     0,     0,   300,     0,     0,
-     0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,     0,     0,     0,  1410,   309,
-   281,     8,     9,    10,     0,    12,   499,   283,   284,     0,
-   285,    14,     0,     0,     0,     0,     0,   310,     0,     0,
-     0,     0,     0,     0,     0,     0,    17,   286,    18,     0,
-    20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
-   292,   293,     0,    24,     0,     0,     0,   294,   295,   296,
-   297,   298,    27,     0,    28,   299,     0,     0,     0,   300,
-     0,     0,     0,     0,     0,   301,     0,     0,   302,     0,
-     0,     0,     0,     0,     0,     0,   303,   304,   305,     0,
-     0,     0,     0,     0,   306,   307,   308,   281,     8,     9,
-    10,   309,    12,   499,   283,   284,     0,   285,    14,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   310,
+     0,     0,     0,   306,   307,   308,     0,     0,     0,   678,
+   309,   281,     8,     9,    10,     0,    12,   499,   283,   284,
+     0,   285,    14,     0,     0,     0,     0,  1263,   310,     0,
+     0,     0,     0,     0,     0,     0,     0,    17,   286,    18,
+     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
+    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
+   296,   297,   298,    27,     0,    28,   299,   679,     0,     0,
+   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
+     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
+     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
+     0,     0,   309,     0,     0,   517,     0,   281,     8,     9,
+    10,  1267,    12,   282,   283,   284,     0,   285,    14,     0,
+   310,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
+     0,    28,   299,  -285,     0,     0,   300,     0,     0,     0,
+     0,     0,   301,     0,     0,   518,     0,     0,     0,     0,
+     0,     0,     0,   303,   304,   519,     0,     0,     0,     0,
+     0,   306,   307,   308,     0,     0,     0,   678,   520,   281,
+     8,     9,    10,     0,    12,   499,   283,   284,     0,   285,
+    14,     0,     0,     0,     0,     0,   310,     0,     0,     0,
+     0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
+     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
+   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
+   298,    27,     0,    28,   299,   679,     0,     0,   300,     0,
+     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
+     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
+     0,     0,     0,   306,   307,   308,     0,     0,     0,   802,
+   309,   281,     8,     9,    10,     0,    12,   499,   283,   284,
+     0,   285,    14,     0,     0,     0,     0,     0,   310,     0,
+     0,     0,     0,     0,     0,     0,     0,    17,   286,    18,
+     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
+    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
+   296,   297,   298,    27,     0,    28,   299,     0,     0,     0,
+   300,  -749,     0,     0,     0,     0,   301,     0,     0,   302,
+     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
+     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
+     0,   517,   309,     7,     8,     9,    10,     0,    12,   282,
+   283,   284,     0,   285,    14,     0,     0,     0,     0,     0,
+   310,     0,     0,     0,     0,     0,     0,     0,     0,    17,
+   286,    18,     0,    20,     0,   287,   288,    21,     0,   289,
+   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
+   294,   295,   296,   297,   298,    27,     0,    28,    29,  -285,
+     0,     0,   300,     0,     0,     0,     0,     0,   301,     0,
+     0,  1421,     0,     0,     0,     0,     0,     0,     0,   303,
+   304,  1422,     0,     0,     0,     0,     0,   306,   307,   308,
+     0,     0,     0,  1499,  1423,   281,     8,     9,    10,     0,
+    12,   282,   283,   284,     0,   285,    14,     0,     0,     0,
+     0,     0,   310,     0,     0,     0,     0,     0,     0,     0,
+     0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
+     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
+     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
+   299,     0,     0,  -174,   300,     0,     0,     0,     0,     0,
+   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
+     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
+   307,   308,     0,     0,     0,   802,   309,   281,     8,     9,
+    10,     0,    12,   499,   283,   284,     0,   285,    14,     0,
+     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
      0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
    288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
     24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
      0,    28,   299,     0,     0,     0,   300,     0,     0,     0,
      0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
      0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
-     0,   306,   307,   308,     0,     0,     0,     0,   309,   541,
-   542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-   552,   553,   554,   555,   556,     0,   310,   841,  1295,  1296,
-  1297,    10,   386,    12,   282,   283,   284,     0,   285,    14,
-  1298,     0,  1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,
-  1307,  1308,    15,    16,    17,   286,    18,    19,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,  1309,   299,   675,     0,  1310,   300,     0,     0,
-     0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,     0,     0,     0,     0,   309,
-     0,  1311,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,  1401,   310,  1295,  1296,
-  1297,    10,   386,    12,   282,   283,   284,     0,   285,    14,
-  1298,     0,  1299,  1300,  1301,  1302,  1303,  1304,  1305,  1306,
-  1307,  1308,    15,    16,    17,   286,    18,    19,    20,     0,
-   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
-     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,  1309,   299,   675,     0,  1310,   300,     0,     0,
-     0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
-     0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,     0,     0,     0,     0,   309,
-     0,  1311,     0,     0,  1295,  1296,  1297,    10,   386,    12,
-   282,   283,   284,     0,   285,    14,  1298,   310,  1299,  1300,
-  1301,  1302,  1303,  1304,  1305,  1306,  1307,  1308,    15,    16,
-    17,   286,    18,    19,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,  1309,   299,
-  1501,     0,  1310,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   302,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   305,     0,     0,     0,     0,     0,   306,   307,
-   308,     0,     0,     0,     0,   309,     0,  1311,     0,     0,
-  1295,  1296,  1297,    10,   386,    12,   282,   283,   284,     0,
-   285,    14,  1298,   310,  1299,  1300,  1301,  1302,  1303,  1304,
-  1305,  1306,  1307,  1308,    15,    16,    17,   286,    18,    19,
+     0,   306,   307,   308,     0,     0,     0,   888,   309,   281,
+     8,     9,    10,     0,    12,   499,   283,   284,     0,   285,
+    14,     0,     0,     0,  -749,     0,   310,     0,     0,     0,
+     0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
+     0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
+   293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
+   298,    27,     0,    28,   299,     0,     0,     0,   300,     0,
+     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
+     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
+     0,     0,     0,   306,   307,   308,     0,     0,     0,   890,
+   309,   281,     8,     9,    10,     0,    12,   499,   283,   284,
+     0,   285,    14,     0,     0,     0,     0,     0,   310,     0,
+     0,     0,     0,     0,     0,     0,     0,    17,   286,    18,
+     0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
+    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
+   296,   297,   298,    27,     0,    28,   299,     0,     0,     0,
+   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
+     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
+     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
+     0,  1434,   309,   281,     8,     9,    10,     0,    12,   499,
+   283,   284,     0,   285,    14,     0,     0,     0,     0,     0,
+   310,     0,     0,     0,     0,     0,     0,     0,     0,    17,
+   286,    18,     0,    20,     0,   287,   288,    21,     0,   289,
+   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
+   294,   295,   296,   297,   298,    27,     0,    28,   299,     0,
+     0,     0,   300,     0,     0,     0,     0,     0,   301,     0,
+     0,   302,     0,     0,     0,     0,     0,     0,     0,   303,
+   304,   305,     0,     0,     0,     0,     0,   306,   307,   308,
+   281,     8,     9,    10,   309,    12,   499,   283,   284,     0,
+   285,    14,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   310,     0,     0,     0,    17,   286,    18,     0,
     20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
    292,   293,     0,    24,     0,     0,     0,   294,   295,   296,
-   297,   298,    27,     0,  1309,   299,     0,     0,  1310,   300,
+   297,   298,    27,     0,    28,   299,     0,     0,     0,   300,
      0,     0,     0,     0,     0,   301,     0,     0,   302,     0,
      0,     0,     0,     0,     0,     0,   303,   304,   305,     0,
      0,     0,     0,     0,   306,   307,   308,     0,     0,     0,
-     0,   309,     0,  1311,   281,     8,     9,    10,   386,    12,
-   282,   283,   284,   688,   285,    14,     0,     0,     0,   310,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    17,   286,    18,    19,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,   581,
-     0,   294,   295,   296,   297,   298,    27,     0,    28,   299,
-     0,     0,     0,   300,     0,     0,     0,     0,     0,   301,
-     0,     0,   869,     0,     0,     0,     0,     0,     0,     0,
-   303,   304,   870,     0,     0,     0,     0,     0,   306,   307,
-   308,     0,   584,     0,     0,   871,   586,     0,     0,   689,
-     7,     8,     9,    10,   386,    12,   282,   283,   284,   688,
-   285,    14,     0,   310,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    17,   286,    18,    19,
-    20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
-   292,   293,     0,    24,     0,   581,     0,   294,   295,   296,
-   297,   298,    27,     0,    28,    29,     0,     0,     0,   300,
-     0,     0,     0,     0,     0,   301,     0,     0,  1127,     0,
-     0,     0,     0,     0,     0,     0,   303,   304,  1128,     0,
-     0,     0,     0,     0,   306,   307,   308,     0,   584,     0,
-     0,  1129,   586,     0,     0,   689,   281,     8,     9,    10,
-     0,    12,   282,   283,   284,     0,   285,    14,     0,   310,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    17,   286,    18,     0,    20,     0,   287,   288,
-    21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
-     0,   581,     0,   294,   295,   296,   297,   298,    27,     0,
-    28,   299,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,   301,     0,     0,   869,     0,     0,     0,     0,     0,
-     0,     0,   303,   304,   870,     0,     0,     0,     0,     0,
-   306,   307,   308,     0,   584,     0,     0,   871,   586,     7,
+     0,   309,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   310,
+   841,  1230,  1231,  1232,    10,   386,    12,   282,   283,   284,
+     0,   285,    14,  1233,     0,  1234,  1235,  1236,  1237,  1238,
+  1239,  1240,  1241,  1242,  1243,    15,    16,    17,   286,    18,
+    19,    20,     0,   287,   288,    21,     0,   289,   290,   291,
+    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
+   296,   297,   298,    27,     0,  1244,   299,   675,     0,  1245,
+   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
+     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
+     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
+     0,     0,   309,     0,  1246,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,  1365,
+   310,  1230,  1231,  1232,    10,   386,    12,   282,   283,   284,
+     0,   285,    14,  1233,     0,  1234,  1235,  1236,  1237,  1238,
+  1239,  1240,  1241,  1242,  1243,    15,    16,    17,   286,    18,
+    19,    20,     0,   287,   288,    21,     0,   289,   290,   291,
+    22,   292,   293,     0,    24,     0,     0,     0,   294,   295,
+   296,   297,   298,    27,     0,  1244,   299,   675,     0,  1245,
+   300,     0,     0,     0,     0,     0,   301,     0,     0,   302,
+     0,     0,     0,     0,     0,     0,     0,   303,   304,   305,
+     0,     0,     0,     0,     0,   306,   307,   308,     0,     0,
+     0,     0,   309,     0,  1246,     0,     0,  1230,  1231,  1232,
+    10,   386,    12,   282,   283,   284,     0,   285,    14,  1233,
+   310,  1234,  1235,  1236,  1237,  1238,  1239,  1240,  1241,  1242,
+  1243,    15,    16,    17,   286,    18,    19,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
+     0,  1244,   299,  1476,     0,  1245,   300,     0,     0,     0,
+     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
+     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
+     0,   306,   307,   308,     0,     0,     0,     0,   309,     0,
+  1246,     0,     0,  1230,  1231,  1232,    10,   386,    12,   282,
+   283,   284,     0,   285,    14,  1233,   310,  1234,  1235,  1236,
+  1237,  1238,  1239,  1240,  1241,  1242,  1243,    15,    16,    17,
+   286,    18,    19,    20,     0,   287,   288,    21,     0,   289,
+   290,   291,    22,   292,   293,     0,    24,     0,     0,     0,
+   294,   295,   296,   297,   298,    27,     0,  1244,   299,     0,
+     0,  1245,   300,     0,     0,     0,     0,     0,   301,     0,
+     0,   302,     0,     0,     0,     0,     0,     0,     0,   303,
+   304,   305,     0,     0,     0,     0,     0,   306,   307,   308,
+     0,     0,     0,     0,   309,     0,  1246,   281,     8,     9,
+    10,   386,    12,   282,   283,   284,   688,   285,    14,     0,
+     0,     0,   310,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    17,   286,    18,    19,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,   581,     0,   294,   295,   296,   297,   298,    27,
+     0,    28,   299,     0,     0,     0,   300,     0,     0,     0,
+     0,     0,   301,     0,     0,   869,     0,     0,     0,     0,
+     0,     0,     0,   303,   304,   870,     0,     0,     0,     0,
+     0,   306,   307,   308,     0,   584,     0,     0,   871,   586,
+     0,     0,   689,     7,     8,     9,    10,   386,    12,   282,
+   283,   284,   688,   285,    14,     0,   310,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    17,
+   286,    18,    19,    20,     0,   287,   288,    21,     0,   289,
+   290,   291,    22,   292,   293,     0,    24,     0,   581,     0,
+   294,   295,   296,   297,   298,    27,     0,    28,    29,     0,
+     0,     0,   300,     0,     0,     0,     0,     0,   301,     0,
+     0,  1132,     0,     0,     0,     0,     0,     0,     0,   303,
+   304,  1133,     0,     0,     0,     0,     0,   306,   307,   308,
+     0,   584,     0,     0,  1134,   586,     0,     0,   689,   281,
      8,     9,    10,     0,    12,   282,   283,   284,     0,   285,
-    14,     0,     0,     0,     0,   310,     0,     0,     0,     0,
+    14,     0,   310,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,    17,   286,    18,     0,    20,
      0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
    293,     0,    24,     0,   581,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,    29,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   301,     0,     0,  1127,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,  1128,     0,     0,
+   298,    27,     0,    28,   299,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   301,     0,     0,   869,     0,     0,
+     0,     0,     0,     0,     0,   303,   304,   870,     0,     0,
      0,     0,     0,   306,   307,   308,     0,   584,     0,     0,
-  1129,   586,   281,     8,     9,    10,     0,    12,   499,   283,
+   871,   586,     7,     8,     9,    10,     0,    12,   282,   283,
    284,     0,   285,    14,     0,     0,     0,     0,   310,     0,
      0,     0,     0,     0,     0,     0,     0,     0,    17,   286,
     18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,   299,     0,     0,
-  1378,   300,     0,     0,     0,     0,     0,   301,     0,     0,
-   302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-   305,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-     0,     0,     0,   309,   281,     8,     9,    10,   386,    12,
-   282,   283,   284,     0,   285,    14,     0,     0,     0,     0,
+   291,    22,   292,   293,     0,    24,     0,   581,     0,   294,
+   295,   296,   297,   298,    27,     0,    28,    29,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   301,     0,     0,
+  1132,     0,     0,     0,     0,     0,     0,     0,   303,   304,
+  1133,     0,     0,     0,     0,     0,   306,   307,   308,     0,
+   584,     0,     0,  1134,   586,   281,     8,     9,    10,     0,
+    12,   499,   283,   284,     0,   285,    14,     0,     0,     0,
      0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
-    17,   286,    18,    19,    20,     0,   287,   288,    21,     0,
+     0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
+     0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
+     0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
+   299,     0,     0,  1342,   300,     0,     0,     0,     0,     0,
+   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
+     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
+   307,   308,     0,     0,     0,     0,   309,   281,     8,     9,
+    10,   386,    12,   282,   283,   284,     0,   285,    14,     0,
+     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
+     0,     0,     0,    17,   286,    18,    19,    20,     0,   287,
+   288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
+    24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
+     0,    28,   299,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   301,     0,     0,   302,     0,     0,     0,     0,
+     0,     0,     0,   303,   304,   305,     0,     0,     0,     0,
+     0,   306,   307,   308,   281,     8,     9,    10,   309,    12,
+   282,   283,   284,     0,   285,    14,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   310,     0,     0,     0,
+    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
    289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
      0,   294,   295,   296,   297,   298,    27,     0,    28,   299,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   301,
+     0,     0,     0,   300,     0,     0,     0,     0,     0,   301,
      0,     0,   302,     0,     0,     0,     0,     0,     0,     0,
    303,   304,   305,     0,     0,     0,     0,     0,   306,   307,
-   308,   281,     8,     9,    10,   309,    12,   282,   283,   284,
+   308,   281,     8,     9,    10,   309,    12,   499,   283,   284,
      0,   285,    14,     0,     0,     0,     0,     0,     0,     0,
      0,     0,     0,   310,     0,     0,     0,    17,   286,    18,
      0,    20,     0,   287,   288,    21,     0,   289,   290,   291,
@@ -2272,55 +2274,55 @@ static const short yytable[] = {    58,
    310,     0,     0,     0,    17,   286,    18,     0,    20,     0,
    287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
      0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
-    27,     0,    28,   299,     0,     0,     0,   300,     0,     0,
+    27,     0,    28,   299,   532,     0,     0,     0,     0,     0,
      0,     0,     0,   301,     0,     0,   302,     0,     0,     0,
      0,     0,     0,     0,   303,   304,   305,     0,     0,     0,
-     0,     0,   306,   307,   308,   281,     8,     9,    10,   309,
+     0,     0,   306,   307,   308,   281,     8,     9,    10,   533,
     12,   499,   283,   284,     0,   285,    14,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,   310,     0,     0,
      0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
      0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
      0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
-   299,   532,     0,     0,     0,     0,     0,     0,     0,     0,
+   299,     0,     0,     0,     0,     0,     0,     0,     0,     0,
    301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
      0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
-   307,   308,   281,     8,     9,    10,   533,    12,   499,   283,
-   284,     0,   285,    14,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   310,     0,     0,     0,    17,   286,
-    18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
-   291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,   299,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   301,     0,     0,
-   302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-   305,     0,     0,     0,     0,     0,   306,   307,   308,     0,
-     0,     0,     0,   309,   569,   281,     8,     9,    10,     0,
+   307,   308,     0,     0,     0,     0,   309,   569,   281,     8,
+     9,    10,     0,    12,   499,   283,   284,     0,   285,    14,
+     0,     0,     0,     0,   310,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,    17,   286,    18,     0,    20,     0,
+   287,   288,    21,     0,   289,   290,   291,    22,   292,   293,
+     0,    24,     0,     0,     0,   294,   295,   296,   297,   298,
+    27,     0,    28,   299,     0,     0,     0,   300,     0,     0,
+     0,     0,     0,   301,     0,     0,   518,     0,     0,     0,
+     0,     0,     0,     0,   303,   304,   519,     0,     0,     0,
+     0,     0,   306,   307,   308,  1094,     8,     9,    10,   520,
     12,   499,   283,   284,     0,   285,    14,     0,     0,     0,
-     0,   310,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   310,     0,     0,
      0,    17,   286,    18,     0,    20,     0,   287,   288,    21,
      0,   289,   290,   291,    22,   292,   293,     0,    24,     0,
      0,     0,   294,   295,   296,   297,   298,    27,     0,    28,
    299,     0,     0,     0,   300,     0,     0,     0,     0,     0,
-   301,     0,     0,   518,     0,     0,     0,     0,     0,     0,
-     0,   303,   304,   519,     0,     0,     0,     0,     0,   306,
-   307,   308,  1094,     8,     9,    10,   520,    12,   499,   283,
+   301,     0,     0,   302,     0,     0,     0,     0,     0,     0,
+     0,   303,   304,   305,     0,     0,     0,     0,     0,   306,
+   307,   308,     7,     8,     9,    10,   309,    12,   499,   283,
    284,     0,   285,    14,     0,     0,     0,     0,     0,     0,
      0,     0,     0,     0,   310,     0,     0,     0,    17,   286,
     18,     0,    20,     0,   287,   288,    21,     0,   289,   290,
    291,    22,   292,   293,     0,    24,     0,     0,     0,   294,
-   295,   296,   297,   298,    27,     0,    28,   299,     0,     0,
+   295,   296,   297,   298,    27,     0,    28,    29,     0,     0,
      0,   300,     0,     0,     0,     0,     0,   301,     0,     0,
-   302,     0,     0,     0,     0,     0,     0,     0,   303,   304,
-   305,     0,     0,     0,     0,     0,   306,   307,   308,     7,
-     8,     9,    10,   309,    12,   499,   283,   284,     0,   285,
+  1421,     0,     0,     0,     0,     0,     0,     0,   303,   304,
+  1422,     0,     0,     0,     0,     0,   306,   307,   308,   281,
+     8,     9,    10,  1423,    12,   499,   283,   284,     0,   285,
     14,     0,     0,     0,     0,     0,     0,     0,     0,     0,
      0,   310,     0,     0,     0,    17,   286,    18,     0,    20,
      0,   287,   288,    21,     0,   289,   290,   291,    22,   292,
    293,     0,    24,     0,     0,     0,   294,   295,   296,   297,
-   298,    27,     0,    28,    29,     0,     0,     0,   300,     0,
-     0,     0,     0,     0,   301,     0,     0,  1434,     0,     0,
-     0,     0,     0,     0,     0,   303,   304,  1435,     0,     0,
+   298,    27,     0,    28,   299,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,   301,     0,     0,   302,     0,     0,
+     0,     0,     0,     0,     0,   303,   304,   305,     0,     0,
      0,     0,     0,   306,   307,   308,   281,     8,     9,    10,
-  1436,    12,   499,   283,   284,     0,   285,    14,     0,     0,
+   500,    12,   499,   283,   284,     0,   285,    14,     0,     0,
      0,     0,     0,     0,     0,     0,     0,     0,   310,     0,
      0,     0,    17,   286,    18,     0,    20,     0,   287,   288,
     21,     0,   289,   290,   291,    22,   292,   293,     0,    24,
@@ -2328,7 +2330,7 @@ static const short yytable[] = {    58,
     28,   299,     0,     0,     0,     0,     0,     0,     0,     0,
      0,   301,     0,     0,   302,     0,     0,     0,     0,     0,
      0,     0,   303,   304,   305,     0,     0,     0,     0,     0,
-   306,   307,   308,   281,     8,     9,    10,   500,    12,   499,
+   306,   307,   308,   281,     8,     9,    10,   503,    12,   499,
    283,   284,     0,   285,    14,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,   310,     0,     0,     0,    17,
    286,    18,     0,    20,     0,   287,   288,    21,     0,   289,
@@ -2337,972 +2339,960 @@ static const short yytable[] = {    58,
      0,     0,     0,     0,     0,     0,     0,     0,   301,     0,
      0,   302,     0,     0,     0,     0,     0,     0,     0,   303,
    304,   305,     0,     0,     0,     0,     0,   306,   307,   308,
-   281,     8,     9,    10,   503,    12,   499,   283,   284,     0,
+   281,     8,     9,    10,   309,    12,   499,   283,   284,     0,
    285,    14,     0,     0,     0,     0,     0,     0,     0,     0,
      0,     0,   310,     0,     0,     0,    17,   286,    18,     0,
     20,     0,   287,   288,    21,     0,   289,   290,   291,    22,
    292,   293,     0,    24,     0,     0,     0,   294,   295,   296,
    297,   298,    27,     0,    28,   299,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,   301,     0,     0,   302,     0,
-     0,     0,     0,     0,     0,     0,   303,   304,   305,     0,
-     0,     0,     0,     0,   306,   307,   308,   281,     8,     9,
-    10,   309,    12,   499,   283,   284,     0,   285,    14,     0,
+     0,     0,     0,     0,     0,   301,     0,     0,   518,     0,
+     0,     0,     0,     0,     0,     0,   303,   304,   519,     0,
+     0,     0,     0,     0,   306,   307,   308,     7,     8,     9,
+    10,   520,    12,   282,   283,   284,     0,   285,    14,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,   310,
      0,     0,     0,    17,   286,    18,     0,    20,     0,   287,
    288,    21,     0,   289,   290,   291,    22,   292,   293,     0,
     24,     0,     0,     0,   294,   295,   296,   297,   298,    27,
-     0,    28,   299,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   301,     0,     0,   518,     0,     0,     0,     0,
-     0,     0,     0,   303,   304,   519,     0,     0,     0,     0,
-     0,   306,   307,   308,     7,     8,     9,    10,   520,    12,
-   282,   283,   284,     0,   285,    14,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   310,     0,     0,     0,
-    17,   286,    18,     0,    20,     0,   287,   288,    21,     0,
-   289,   290,   291,    22,   292,   293,     0,    24,     0,     0,
-     0,   294,   295,   296,   297,   298,    27,     0,    28,    29,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   301,
-     0,     0,  1434,   989,     8,   733,    10,   189,    12,   190,
-   303,   304,  1435,     0,    14,     0,     0,     0,   306,   307,
-   308,     0,     0,     0,     0,  1436,     0,     0,     0,    17,
-     0,    18,    19,     0,     0,     0,     0,    21,     0,     0,
-     0,     0,    22,   310,     0,     0,    24,     0,     7,     8,
-     9,    10,   189,    12,   190,    27,     0,    28,    29,    14,
-     0,     0,     0,   991,     0,     0,     0,     0,     0,     0,
-     0,    31,     0,     0,    17,     0,    18,    19,     0,     0,
-     0,    32,    21,     0,     0,     0,     0,    22,     0,    33,
-     0,    24,     0,     0,    34,     0,     0,     0,     0,     0,
-    27,     0,    28,    29,     0,     0,  1391,     7,     8,     9,
-    10,   386,    12,    13,     0,     0,    31,     0,    14,     0,
-     0,     0,     0,     0,     0,     0,    32,     0,     0,     0,
-     0,     0,     0,    17,    33,    18,    19,     0,     0,    34,
+     0,    28,    29,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,   301,     0,     6,  1421,     7,     8,     9,    10,
+    11,    12,    13,   303,   304,  1422,     0,    14,     0,     0,
+     0,   306,   307,   308,     0,     0,     0,     0,  1423,     0,
+     0,     0,    17,     0,    18,    19,     0,     0,     0,     0,
+    21,     0,     0,     0,     0,    22,   310,     0,     0,    24,
+     0,     0,   411,     0,     0,     0,     0,     0,    27,     0,
+    28,    29,     0,     0,    30,  -357,     8,     9,  -357,  -357,
+    12,   227,     0,     0,    31,     0,    14,     0,     0,     0,
+     0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
+     0,    17,    33,    18,  -357,     0,     0,    34,     0,    21,
+     0,     0,     0,     0,  -357,     0,     0,     0,    24,     0,
+   581,     0,     0,     0,     0,     0,     0,    27,     0,   129,
+   130,     7,     8,     9,    10,   189,    12,   190,     0,     0,
+     0,     0,    14,   582,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   583,     0,     0,     0,    17,     0,    18,
+    19,  -357,     0,   584,     0,    21,   585,   586,     0,     0,
+    22,     0,     0,     0,    24,     0,   989,     8,   733,    10,
+   189,    12,   190,    27,     0,    28,    29,    14,     0,   191,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    31,
+     0,     0,    17,     0,    18,    19,     0,     0,     0,    32,
+    21,     0,     0,     0,     0,    22,     0,    33,     0,    24,
+     0,     0,    34,     0,     0,     0,     0,     0,    27,     0,
+    28,    29,     0,     0,     0,     0,   991,     7,     8,     9,
+    10,   189,    12,   190,    31,     0,     0,     0,    14,     0,
+     0,     0,     0,     0,    32,     0,     0,     0,     0,     0,
+     0,     0,    33,    17,     0,    18,    19,    34,     0,     0,
      0,    21,     0,     0,     0,     0,    22,     0,     0,     0,
-    24,     0,     7,     8,     9,    10,   189,    12,   190,    27,
-     0,    28,    29,    14,     0,     0,     0,     0,     0,     0,
-     0,     0,   126,   127,     0,    31,   199,   200,    17,     0,
-    18,    19,    14,     0,     0,    32,    21,     0,     0,     0,
+    24,     0,     7,     8,     9,    10,   386,    12,    13,    27,
+     0,    28,    29,    14,     0,  1355,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    31,     0,     0,    17,     0,
+    18,    19,     0,     0,     0,    32,    21,     0,     0,     0,
      0,    22,     0,    33,     0,    24,     0,     0,    34,     0,
-     0,     0,     0,     0,    27,    21,    28,    29,     0,     0,
-     0,     0,     0,  1424,    24,     0,   581,     0,     0,     0,
-    31,     0,     0,    27,     0,   129,   130,     0,     0,     0,
-    32,     0,     0,     0,     0,     0,     0,     0,    33,   582,
-     0,     0,     0,    34,     0,     0,     0,     0,     0,   583,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   584,
-     0,     0,   585,   586,  1425,   535,   536,   537,   538,   539,
-   540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
-   550,   551,   552,   553,   554,   555,   556,     8,     9,     0,
-   386,    12,    13,     0,     0,  1474,     0,    14,     0,     0,
-     8,     9,     0,   189,    12,   190,     0,     0,     0,     0,
-    14,     0,    17,     0,    18,    19,     0,     0,     0,     0,
-    21,     0,     0,     0,     0,    17,     0,    18,    19,    24,
-     0,     0,     0,    21,     0,     0,     0,     0,    27,     0,
-   129,   130,    24,     0,     0,     8,     9,     0,     0,    12,
-   227,    27,     0,   129,   130,    14,     0,     0,     8,     9,
-     0,     0,    12,    13,     0,     0,     0,     0,    14,     0,
-    17,     0,    18,     0,     0,     0,     0,     0,    21,     0,
-     0,     0,     0,    17,     0,    18,     0,    24,     0,     0,
-     0,    21,     0,     0,     0,     0,    27,     0,   129,   130,
-    24,     0,     0,     0,     0,     0,     0,     0,     0,    27,
-     0,   129,   130,   535,   536,   537,   538,   539,   540,   541,
-   542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-   552,   553,   554,   555,   556,   535,   536,   537,   538,   539,
-   540,   541,   542,   543,   544,   545,   546,   547,   548,   549,
-   550,   551,   552,   553,   554,   555,   556,     0,     0,     0,
-     0,     0,  1180,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   621,     0,     0,
-  1445,   535,   536,   537,   538,   539,   540,   541,   542,   543,
+     0,     0,     0,     0,    27,     0,    28,    29,     7,     8,
+     9,    10,   189,    12,   190,     0,     0,     0,     0,    14,
+    31,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+    32,     0,     0,     0,    17,     0,    18,    19,    33,     0,
+     0,     0,    21,    34,     0,     0,     0,    22,     0,     0,
+     0,    24,     0,     7,     8,     9,    10,   198,   199,   200,
+    27,     0,    28,    29,    14,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
+     0,     0,    19,     0,     0,     0,    32,    21,     0,     0,
+     0,     0,    22,     0,    33,  1411,    24,     0,   581,    34,
+     0,     0,     0,     0,     0,    27,     0,    28,    29,   535,
+   536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
+   546,   177,   548,   549,   550,   551,   552,   553,   554,   555,
+   556,   178,     0,     0,     0,     0,     0,    19,     0,    33,
+     0,     0,     0,     0,  1358,     0,  1412,   535,   536,   537,
+   538,   539,   540,   541,   542,   543,   544,   545,   546,   547,
+   548,   549,   550,   551,   552,   553,   554,   555,   556,   535,
+   536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
+   546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
+   556,   535,   536,   537,   538,   539,   540,   541,   542,   543,
    544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
-   554,   555,   556,  1487,   535,   536,   537,   538,   539,   540,
-   541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
-   551,   552,   553,   554,   555,   556,   535,   536,   537,   538,
-   539,   540,   541,   542,   543,   544,   545,   546,   547,   548,
-   549,   550,   551,   552,   553,   554,   555,   556,   535,   536,
-   537,   538,   539,   540,   541,   542,   543,   544,   545,   546,
-     0,   548,   549,   550,   551,   552,   553,   554,   555,   556,
+   554,   555,   556,   535,   536,   537,   538,   539,   540,   541,
    542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-   552,   553,   554,   555,   556
+   552,   553,   554,   555,   556,     0,     0,     0,     0,     0,
+  1185,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   621,     0,     0,  1466,   535,
+   536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
+   546,   547,   548,   549,   550,   551,   552,   553,   554,   555,
+   556,  1484,   535,   536,   537,   538,   539,   540,   541,   542,
+   543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+   553,   554,   555,   556,   535,   536,   537,   538,   539,   540,
+   541,   542,   543,   544,   545,   546,   547,   548,   549,   550,
+   551,   552,   553,   554,   555,   556
 };
 
 static const short yycheck[] = {     4,
-   156,   385,   329,     4,    58,   670,    54,    24,   385,   193,
-   673,   448,   232,    79,    79,    45,   469,   125,   285,   286,
-   353,     4,   335,     4,     4,   421,    83,     4,   737,    14,
-   739,    36,   939,   530,   385,    36,    41,   746,   653,   123,
-    41,  1312,     4,   830,   228,    75,   223,   660,    31,    32,
-   317,    56,   128,    36,  1289,    36,    36,   133,    41,    36,
-    41,    41,   132,   193,    41,  1422,    71,    11,    61,   585,
-  1455,    11,   202,    11,    36,   141,   592,    38,    83,    41,
-     4,  1452,    87,  1457,    89,  1319,    91,   146,   147,     9,
-     4,    61,  1326,   277,  1479,   132,   133,    82,     1,    53,
-    83,   106,   107,     4,  1480,  1150,  1151,   754,     0,    34,
-     1,    48,    36,   760,  1439,   335,  1492,    41,   111,  1164,
-   105,   187,    36,    63,   336,   337,  1502,    41,   524,    63,
-   135,   136,    56,   138,   135,    36,    48,  1508,    49,   193,
-    41,    75,    62,  1519,   166,   329,  1520,   201,   202,   586,
-   111,  1422,   135,  1478,    12,   160,    59,    94,   135,   160,
-    63,    12,  1538,   146,   147,   426,   110,   197,    59,    83,
-   110,    48,   110,  1558,   228,   502,    60,   160,   243,    14,
-   392,   393,    94,   160,  1509,  1561,   111,  1544,    23,   201,
-   202,    48,  1426,    96,   177,   178,   456,   151,   110,     1,
-    34,    63,    60,     0,    48,    63,  1251,   287,   288,    60,
-    75,   135,    63,   473,    65,  1260,  1261,    94,  1263,   672,
-   867,   135,   302,   277,    60,   305,   196,   111,   308,    64,
-   184,   311,  1466,    61,   204,   315,   160,    94,    95,    89,
-    98,    91,    12,   323,   229,    75,   160,    98,   110,    48,
-    94,    95,   110,   110,  1489,    60,   326,    59,   414,    63,
-    75,    63,  1049,    27,    28,   322,   110,   880,    32,    48,
-   883,    94,    48,   278,   110,   329,    60,  1511,   674,   355,
-    61,   365,    25,   111,    27,    28,   136,   902,   123,   326,
-    60,   604,   643,    63,    96,    94,    95,    61,     4,     5,
-   633,    65,    48,   379,   309,   110,   110,    61,   921,   922,
-   145,   110,   696,   147,   148,    94,    59,   322,    94,   696,
-    63,   106,   107,   453,    55,   330,   110,    60,    98,   976,
-   111,    59,    48,   338,   339,     7,   390,    94,   339,   322,
-   388,   988,   379,    49,    75,   179,    48,   111,    94,    65,
-   335,    57,    58,    96,   574,   871,   339,   111,    76,    79,
-    78,    75,   339,  1408,  1409,   692,    38,    55,     3,     4,
-     5,    48,   100,    25,  1021,    81,  1023,   110,    94,    95,
-   385,   440,   441,   103,   389,   220,   221,    75,     3,     4,
-     5,     6,    94,   909,    55,  1302,   608,   232,   452,   453,
-    94,  1188,   385,    39,   385,   470,   460,    59,   322,   906,
-    60,    63,   132,    48,    75,   339,    55,    94,   472,    55,
-    55,   141,    57,    58,    48,   339,    76,    42,    78,   434,
-    48,   868,   462,   949,    49,    55,    75,   491,   518,   519,
-   452,   453,    57,    58,    96,    48,   416,    25,   460,    27,
-    28,   434,    60,  1360,    94,    75,  1165,   440,   441,    94,
-   472,    61,  1369,  1370,    48,   470,   301,   187,    76,   470,
-    94,   385,  1085,  1086,    89,   309,    94,    95,    55,   491,
-   109,    59,     4,     5,    55,    63,    63,   470,   338,   459,
-   470,    94,   497,   470,    48,   500,    48,    25,   503,    48,
-   220,    48,   507,   508,   509,   510,   511,    48,   343,   566,
-    94,     3,     4,     5,     6,   520,    65,   352,    96,   903,
-   434,   974,    36,   243,   309,   530,   903,    41,   533,    48,
-   365,     4,     5,    55,    61,    57,    58,    32,     4,     5,
-    94,   937,    94,     9,   721,    94,   723,    94,    95,    71,
-    42,   728,   903,    94,    95,    63,   470,   611,   770,    81,
-   565,   566,   610,   876,    48,    57,    58,     4,     5,    59,
-    48,   832,    48,    95,    55,    94,  1483,  1316,   446,  1318,
-   585,    65,    48,   566,    57,    58,   454,   592,    75,    55,
-  1106,    57,    58,    55,    75,   779,   111,    89,   652,   582,
-   583,   649,   585,   651,   652,    71,   873,   441,   442,   592,
-    94,   596,    49,  1129,   334,    81,    94,    59,    94,    94,
-    57,    58,  1059,   731,   641,    91,    55,    59,    94,    95,
-    48,   636,   467,    65,     3,     4,     5,    55,   692,     4,
-     5,    55,    55,    55,   692,   650,   431,   497,    76,   654,
-    63,   110,   566,     4,     5,   672,   876,    75,     9,    55,
-   714,    63,    75,  1116,   110,    63,   500,    63,    95,   503,
-    63,   585,   737,    75,   739,   395,    94,    75,   592,    75,
-   745,   746,    75,    11,    49,   519,   520,   899,    57,    58,
-  1143,   696,    57,    58,   110,   717,   744,   532,    34,   533,
-  1055,  1056,   714,  1058,    55,   110,    57,    58,     8,     9,
-   740,   741,    81,   696,    14,   500,    81,   111,   503,   749,
-    71,    94,   507,    55,    34,   779,     3,  1054,    61,   751,
-    81,    63,   737,   113,   739,   520,   737,    37,   739,   574,
-   745,   746,    95,    75,    95,   746,    46,   467,   533,   754,
-   755,   756,   537,   758,   737,   760,   739,   737,   592,   739,
-   737,   841,   739,   746,    95,    55,   746,    55,    55,   746,
-    63,   754,   113,    63,   494,    63,    63,   760,   563,  1040,
-  1041,    94,   696,  1448,   569,    75,   636,    75,    75,   869,
-   870,   767,   768,   769,   971,   972,   973,    25,    94,    27,
-    28,     4,     5,  1015,  1016,  1017,   641,     4,     5,  1472,
-   146,   147,   148,     8,     9,    60,    61,    60,   653,    14,
-   744,   745,    65,   737,   829,   739,     9,    75,   833,    12,
-    60,    59,   746,    76,    75,    63,   146,   147,   148,    75,
-   754,    75,    37,   179,   679,    11,   760,    25,   914,    27,
-    28,    46,    55,    48,    57,    58,   861,    27,    28,   579,
-    57,    58,   867,   110,  1125,    48,   871,   111,    96,   179,
-    60,    61,    60,  1134,  1135,   595,    75,    60,  1139,    62,
-    63,    59,    65,   110,   867,    63,   869,   870,   871,     4,
-     5,   876,   110,    76,   110,    78,    60,    61,   903,    94,
-   905,   906,     4,     5,   909,   755,   756,    55,   758,    84,
-    85,    94,    95,    60,    61,    98,    60,    61,    96,  1180,
-   903,    61,   903,   110,   907,   908,   909,   110,   113,   111,
-    45,   979,    60,    61,  1000,  1000,    60,    61,    48,   773,
-    55,   110,    57,    58,   949,    55,  1011,    49,     3,     4,
-     5,   111,   113,   867,    75,    57,    58,   871,   963,   981,
-   982,    75,   992,    48,   969,    75,   949,    55,   998,   999,
-    55,   976,  1002,  1003,    75,  1371,  1006,  1238,   113,    81,
-   113,  1061,    59,   988,    94,   110,  1198,  1383,  1010,   903,
-    75,  1318,   110,   976,   110,   909,     4,     5,   110,    55,
-    55,     8,    57,    58,    59,   988,  1011,   113,    94,    94,
-  1011,    48,    65,    60,    94,  1276,  1021,   111,  1023,    61,
-    55,    37,     1,   110,     3,     4,     5,     6,  1011,     8,
-    61,  1011,    65,    65,  1011,   949,   870,   871,  1021,    65,
-  1023,    49,  1108,  1439,    63,  1104,  1105,  1127,  1128,    57,
-    58,   110,   837,   110,    65,   979,   110,   892,  1063,    27,
-    28,   110,   976,    42,    32,  1449,    65,   902,  1127,  1128,
-    49,    65,  1449,    81,   988,   909,    55,   113,    57,    58,
-  1476,    94,  1478,    60,    76,    63,   871,     3,     4,     5,
-     6,    63,    60,    61,    76,   110,  1161,  1011,  1494,  1116,
-  1165,  1106,   385,    76,   440,   441,   442,  1021,   110,  1023,
-    89,    63,   110,  1509,   110,   949,    81,    82,    83,    84,
-    85,  1104,  1105,  1106,  1129,   110,    42,     4,     5,    76,
-   440,   441,   442,    49,  1156,  1157,  1463,  1159,  1160,   110,
-  1162,    57,    58,   110,  1127,  1128,  1129,    56,    60,    58,
-   110,   434,    63,   110,    12,   875,   111,   877,     4,     5,
-  1165,   110,   113,     9,  1165,    81,   110,    95,   113,    27,
-    28,    89,    49,    89,    32,    75,    48,    48,   110,   110,
-    57,    58,  1165,   113,   969,  1165,   113,   110,  1165,   110,
-    48,   110,  1106,   110,   914,     3,     4,     5,     6,     3,
-     4,     5,    60,    61,    81,    63,  1041,    65,   111,    55,
-   111,    57,    58,  1063,    65,  1129,    87,    88,    60,    60,
-  1225,    92,    93,    94,    95,    71,  1248,  1249,  1258,  1259,
-  1235,    65,  1312,    60,    42,    81,    94,    95,    94,    94,
-    98,   110,  1225,   110,    94,  1225,    94,   111,  1225,    57,
-    58,  1165,   110,    57,    58,    59,   110,   166,   110,     8,
-   113,   110,    65,  1225,  1318,     3,     4,     5,  1316,   113,
-  1318,  1105,  1106,     4,     5,  1431,     7,     8,     9,  1463,
-  1000,    12,   110,    14,   193,  1546,     3,     4,     5,     6,
-  1125,   110,   201,   202,  1128,  1129,   110,   110,    29,   111,
-    31,    32,   585,   110,   110,   110,    37,  1312,   110,   592,
-   110,  1225,  1317,   110,  1319,    46,  1338,  1339,  1340,    57,
-    58,  1326,    55,   110,    55,    42,    57,    58,   110,  1312,
-   113,    63,  1312,    48,   110,  1312,  1319,   110,    55,  1319,
-    57,    58,  1319,  1326,  1129,   110,  1326,    97,    34,  1326,
-     4,     5,   110,   110,  1434,  1435,   110,  1319,   110,   110,
-   113,    63,  1082,  1393,  1326,   110,    63,    98,     3,     4,
-     5,     6,    89,    61,    61,  1434,  1435,     9,    61,    16,
-    94,     4,     5,  1405,  1406,    94,    61,  1222,  1108,    61,
-    94,  1176,  1177,  1178,  1179,    49,   109,    17,  1312,    99,
-    94,  1186,    61,    57,    58,  1319,    61,    42,    11,  1463,
-    61,   110,  1326,   696,    49,   110,  1464,  1422,  1423,   110,
-   110,  1426,    57,    58,    94,    61,    60,    81,   110,   110,
-    61,  1436,    55,    61,    57,    58,     3,     4,     5,  1422,
-  1423,  1161,  1422,  1426,  1449,  1422,  1426,  1452,    71,  1426,
-  1455,  1434,  1435,    65,    89,    11,  1486,    61,    81,    11,
-   110,  1466,    61,     0,  1426,     0,  1449,     0,     2,  1452,
-   413,   754,  1455,  1308,  1479,  1455,   355,   760,  1455,   903,
-   389,   390,    49,  1466,   160,   745,  1466,  1447,  1510,  1466,
-    57,    58,   160,  1455,  1116,    93,  1479,   138,  1558,  1479,
-  1418,   280,  1479,  1508,  1466,  1317,  1511,   892,  1422,  1423,
-   887,   679,  1426,  1143,   222,  1011,   974,  1479,  1163,   745,
-   617,   885,  1307,   566,   184,  1508,   123,  1362,  1511,  1319,
-   326,  1511,  1531,  1226,  1511,  1449,   445,  1494,  1452,  1472,
-     4,  1455,  1469,   452,   453,  1533,  1235,   456,   958,  1511,
-    14,   460,  1466,  1558,     3,     4,     5,     6,    -1,    -1,
-  1394,    25,    -1,    -1,   473,  1479,    -1,    31,    32,    -1,
-    34,    -1,    36,   909,    -1,  1558,    -1,    41,  1558,    -1,
-   712,  1558,    -1,    -1,   867,    -1,    -1,    -1,   871,    -1,
-    54,    -1,    56,    42,  1508,  1380,  1558,  1511,    -1,   909,
-    64,  1435,  1436,    -1,    -1,    -1,    55,    71,    57,    58,
-    -1,    -1,    61,   949,    63,    -1,    -1,    -1,    82,    83,
-   903,   753,    71,    -1,    -1,    -1,   909,   759,    -1,   427,
-    -1,    -1,    81,     3,     4,     5,   434,  1422,  1423,   949,
-    89,   105,    -1,    -1,  1558,    94,    -1,    -1,   177,   178,
-   179,  1436,     3,     4,     5,    -1,     7,     8,     9,    -1,
-    -1,    31,    -1,    -1,   128,    -1,   949,  1452,    -1,   133,
-    -1,   135,     3,     4,     5,   139,    -1,    -1,   142,   143,
-    -1,    -1,   146,   147,   148,    55,    37,    57,    58,    -1,
-    -1,    -1,    -1,   976,    -1,    -1,   160,     3,     4,     5,
-   498,    -1,   611,    -1,    55,   988,    57,    58,    59,    -1,
-    -1,    -1,    -1,   177,   178,   179,    -1,     3,     4,     5,
-    -1,  1506,    -1,  1508,    55,    -1,    57,    58,    -1,    -1,
-   862,    -1,   864,    -1,     3,     4,     5,     6,  1021,    -1,
-  1023,   650,   206,   652,    -1,  1530,    -1,    -1,    -1,    55,
-    -1,    57,    58,    -1,   105,   106,   107,   221,    -1,  1544,
-    -1,    -1,    -1,    49,   562,   229,   564,   565,  1104,  1105,
-  1106,    57,    58,    42,    -1,    -1,   240,    -1,    -1,    48,
-     4,     5,    -1,   692,    -1,     9,    55,    -1,    57,    58,
-    -1,  1127,  1128,  1129,  1104,  1105,  1106,    -1,    -1,    -1,
-    -1,   599,    71,    -1,    -1,   714,    -1,    -1,   717,    -1,
-    -1,    -1,    81,    -1,   278,   279,    -1,  1127,  1128,  1129,
-    89,    -1,    91,  1106,    48,    94,    95,     3,     4,     5,
-    -1,    55,   427,    57,    58,    -1,   745,    -1,    -1,   434,
-    -1,    -1,   751,     3,     4,     5,  1129,    71,     1,    -1,
-     3,     4,     5,     6,     7,     8,     9,    81,   322,    -1,
-    -1,    14,   326,    -1,   328,   329,   330,    91,    -1,    -1,
-    94,    95,     3,     4,     5,   339,    29,    -1,    31,    32,
-    33,    57,    58,    -1,    37,    38,    -1,    -1,  1020,    42,
-  1022,   355,    -1,    46,    47,    -1,    49,    57,    58,    -1,
-    -1,    -1,    55,   498,    57,    58,    -1,   436,    61,   438,
-    63,   440,   441,   442,    -1,   379,    -1,    -1,    71,    -1,
-    -1,   385,   451,    -1,   388,   389,    57,    58,    81,     3,
-     4,     5,    -1,    -1,    -1,   399,    89,    -1,   402,    -1,
-    -1,    94,    -1,   407,  1076,    -1,     3,     4,     5,     6,
-     7,     8,     9,     3,     4,     5,     6,    14,   111,    -1,
-    -1,    -1,    -1,    -1,    -1,    39,    40,   562,    42,   564,
-   565,    -1,   436,    -1,   438,    32,   440,   441,   442,    -1,
-    37,    55,   446,    57,    58,    42,    -1,   451,    -1,    46,
-   454,    48,    42,    -1,    -1,    -1,    -1,   592,    55,    49,
-    57,    58,    -1,    -1,   599,    -1,   470,    57,    58,     3,
-     4,     5,     6,    -1,    71,  1147,    -1,    -1,    -1,    -1,
-  1152,   106,   107,    -1,    81,    -1,    -1,    -1,    27,    28,
-    -1,    81,    89,    32,    91,   833,    -1,    94,    95,    89,
-    -1,    -1,    -1,    -1,   508,   509,   510,   511,    42,   847,
-    -1,   849,    -1,   851,    -1,    49,    -1,    -1,  1394,    -1,
-    -1,    60,    61,    57,    58,    -1,    65,     7,     8,     9,
-  1202,    -1,   981,   982,    14,    -1,     3,     4,     5,     6,
-    -1,    -1,    -1,    -1,  1394,    -1,    -1,    81,    -1,    -1,
-    -1,    -1,    32,    -1,    -1,    89,   894,    37,  1434,  1435,
-  1436,  1010,   566,    -1,   568,    -1,    46,    79,    80,    81,
-    82,    83,    84,    85,    -1,    42,   580,    -1,   582,   583,
-    -1,   585,    49,    -1,  1434,  1435,  1436,    -1,   592,    -1,
-    57,    58,   596,   931,    -1,  1267,  1268,    -1,    -1,    -1,
-     4,     5,    -1,     7,     8,     9,   610,    -1,    12,    -1,
-    14,  1283,    -1,    -1,    81,    -1,    -1,    -1,     3,     4,
-     5,     6,    89,    -1,     9,    29,  1449,    31,    32,    -1,
-    -1,    -1,    -1,    37,   703,   704,    -1,   706,   773,    -1,
-    -1,    -1,    46,    -1,    48,   649,   650,   651,   652,   653,
-   654,    55,    -1,    57,    58,    -1,    -1,    42,    -1,  1331,
-  1332,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-    55,    -1,    57,    58,    -1,   744,    -1,    81,  1350,  1351,
-    -1,    -1,    -1,    -1,   309,    -1,    71,    91,   692,    -1,
-    94,    95,   696,    -1,    98,    -1,    81,    -1,   833,   703,
-   704,    -1,   706,    -1,    89,    -1,    -1,  1156,  1157,    94,
-  1159,  1160,   847,  1162,   849,    -1,   851,    -1,    -1,     3,
-     4,     5,     6,    -1,    -1,    -1,    -1,     7,     8,     9,
-   734,    -1,    -1,   737,    14,   739,    -1,     7,     8,     9,
-   744,   745,   746,    -1,    14,    -1,    -1,    -1,    -1,    -1,
-   754,    -1,    32,    -1,    -1,    -1,   760,    37,    42,   894,
-   385,    -1,    32,   767,   768,   769,    46,    37,    -1,    -1,
-    -1,    55,    -1,    57,    58,   779,    46,    61,    -1,    -1,
-  1118,    61,  1120,    -1,  1122,    -1,    -1,    71,    -1,    -1,
-    -1,     4,    -1,    -1,    -1,    -1,   931,    81,    -1,  1248,
-  1249,    14,    -1,    -1,    -1,    89,     7,     8,     9,   434,
-    94,    24,    25,    14,   949,    -1,    -1,    -1,    31,    32,
-    -1,    34,    -1,    36,    -1,   829,    -1,    -1,    41,    -1,
-    -1,    32,    -1,    -1,    -1,    -1,    37,    -1,   907,   908,
-   909,    54,    -1,    56,    -1,    46,    -1,    -1,   852,    -1,
-   854,    64,    -1,    -1,    -1,    -1,    -1,   861,    71,    -1,
-    61,   865,    -1,   867,    -1,   869,   870,   871,  1317,  1318,
-    83,  1209,   876,    -1,    -1,   500,    -1,    -1,   503,    -1,
-   949,    -1,   507,   508,   509,   510,   511,    -1,    -1,  1338,
-  1339,  1340,    -1,    -1,    -1,   520,    -1,    -1,    -1,   903,
-    -1,   905,    -1,   907,   908,   909,    -1,    -1,   533,    -1,
-   979,    -1,    -1,    -1,    -1,   128,    -1,    -1,    -1,     3,
-     4,     5,   135,     7,     8,     9,   139,    -1,    -1,    -1,
-   143,    -1,    -1,   146,   147,   148,    -1,    -1,     4,     5,
-   565,    -1,     8,     9,    -1,   949,    -1,   160,    14,    -1,
-    -1,    -1,    -1,    37,    -1,    -1,  1405,  1406,    -1,   963,
-   585,    -1,    -1,    -1,   177,   178,   179,   592,    -1,    -1,
-    -1,    37,   976,    57,    58,   979,    -1,    -1,    -1,    -1,
-    46,    -1,    48,  1118,   988,  1120,    -1,  1122,    -1,    55,
-    -1,    57,    58,   206,    -1,    -1,    -1,  1001,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    71,    -1,  1011,     3,     4,
-     5,    -1,     7,     8,     9,    81,    -1,  1021,    -1,  1023,
-    -1,    -1,    -1,    -1,    -1,    91,    -1,   240,    94,    95,
-    -1,    -1,    -1,  1102,  1103,  1104,  1105,  1106,    -1,    -1,
-    -1,  1110,     3,     4,     5,     6,    -1,    -1,     9,    -1,
-    -1,  1055,  1056,    -1,  1058,    -1,    -1,    -1,  1127,  1128,
-  1129,  1510,    57,    58,    -1,   278,   279,    -1,    -1,    -1,
-    -1,   696,    -1,    -1,  1209,    -1,    -1,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,    -1,   328,   329,   330,    -1,  1158,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,  1102,  1103,
-  1104,  1105,  1106,    -1,    -1,    -1,  1110,    -1,    -1,   322,
-    71,    -1,    -1,   326,    -1,   328,   329,   330,    -1,    -1,
-    81,    -1,   335,  1127,  1128,  1129,   339,    -1,    89,   754,
-    -1,    -1,    -1,    94,    -1,   760,    -1,    -1,     3,     4,
-     5,     6,   355,  1212,  1213,    -1,  1215,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1158,    -1,    -1,    -1,    -1,  1163,
-    -1,  1165,     3,     4,     5,     6,     7,     8,     9,    -1,
-    -1,    -1,   385,    14,    -1,   388,   389,    42,    -1,    -1,
-     3,     4,     5,     6,    49,    -1,   399,    -1,    29,   402,
-    31,    32,    57,    58,   407,    -1,    37,    -1,    -1,    -1,
-    -1,    42,    -1,    -1,   829,    46,    -1,    48,  1212,  1213,
-    -1,  1215,    -1,    -1,    55,    -1,    57,    58,    -1,    42,
-    -1,    -1,    -1,   436,    89,   438,    49,   440,   441,   442,
-    71,  1235,    -1,   446,    57,    58,   861,    -1,   451,    -1,
-    81,   454,   867,    -1,    -1,    -1,   871,    -1,    89,    -1,
-    91,    -1,    -1,    94,    95,    -1,   469,   470,    81,  1394,
-    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,     3,     4,
-     5,     6,    -1,    -1,     9,     3,     4,     5,   903,     7,
-   905,    -1,    -1,    -1,   909,    77,    78,    79,    80,    81,
-    82,    83,    84,    85,    -1,   508,   509,   510,   511,    -1,
-    -1,    -1,    -1,    31,    -1,    -1,    -1,    42,    -1,    -1,
-    38,    -1,  1316,  1317,  1318,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,   949,  1394,    -1,    55,    -1,    57,
-    58,    -1,     3,     4,     5,     6,    71,    -1,   963,   582,
-   583,    -1,   585,    -1,   969,    -1,    81,    -1,    -1,   592,
-    -1,   976,    -1,   566,    89,   568,    -1,    -1,    -1,    94,
-    -1,    -1,    -1,   988,    -1,  1434,  1435,  1436,    -1,   582,
-   583,    42,   585,    -1,    -1,    -1,    -1,    -1,    -1,   592,
-    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,
-  1394,   604,    63,    -1,    -1,    -1,  1021,   610,  1023,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,   649,    -1,   651,   652,
-    81,   654,    -1,    -1,     3,     4,     5,     6,    89,    -1,
-     9,    -1,    -1,    94,    -1,    -1,    -1,    -1,   641,    -1,
-  1434,  1435,  1436,    -1,    -1,    -1,   649,   650,   651,   652,
-   653,   654,    -1,    -1,    -1,  1449,    -1,    -1,    -1,   692,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,   672,
-  1464,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   692,
-    -1,  1106,    71,   696,    -1,    -1,    -1,    -1,    -1,    -1,
-   703,   704,    81,   706,    -1,    -1,    -1,    -1,    -1,    -1,
-    89,    -1,    -1,    -1,  1129,    94,     3,     4,     5,     6,
-     7,     8,     9,     3,     4,     5,     6,    14,    -1,     9,
-    -1,   734,    -1,    -1,   737,    -1,   739,    -1,    -1,    -1,
-    -1,   744,   745,   746,    -1,    32,   779,    -1,    -1,    -1,
-    37,   754,    -1,     4,    -1,    42,    -1,   760,    -1,    46,
-    -1,    48,    42,    -1,   767,   768,   769,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    55,   779,    57,    58,    -1,
-    31,    32,    -1,    34,    71,    36,    -1,    -1,    -1,    -1,
-    41,    71,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
-    -1,    81,    89,    54,    91,    56,    -1,    94,    95,    89,
-    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,   852,
-  1235,   854,    -1,    -1,    -1,    -1,   829,    -1,    79,    -1,
-    -1,    -1,   865,    -1,    -1,    -1,   869,   870,   871,     3,
-     4,     5,     6,    -1,    -1,    81,    -1,    -1,    -1,   852,
-    -1,   854,    -1,    -1,    -1,    -1,    -1,    -1,   861,    -1,
-    -1,    -1,   865,    -1,   867,    -1,   869,   870,   871,    -1,
-    -1,    -1,    -1,   876,   907,   908,   909,   128,    42,    -1,
-    -1,   132,   133,    -1,   135,    -1,    -1,    -1,   139,    -1,
-   141,    55,   143,    57,    58,   146,   147,   148,    -1,    63,
-   903,    -1,   905,    -1,   907,   908,   909,    71,    -1,   160,
-    -1,    -1,    -1,    -1,    -1,    -1,   949,    81,   154,    -1,
-    -1,    -1,    -1,    -1,    -1,    89,   177,   178,   179,    -1,
-    94,    -1,    -1,    -1,    -1,    -1,   187,     4,     5,   175,
-    -1,     8,     9,    -1,    -1,    -1,   949,    14,    -1,    -1,
-    -1,    -1,   188,    -1,    -1,   206,    -1,    -1,    -1,    -1,
-   963,    -1,    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,
-    37,   974,    -1,   976,    -1,    -1,   979,    -1,    -1,    46,
-    -1,    -1,    -1,    -1,    -1,   988,    -1,    -1,    55,   240,
-    57,    58,    59,    -1,     1,    -1,     3,     4,     5,     6,
-     7,     8,     9,    -1,    -1,    -1,    -1,    14,  1011,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1021,    -1,
-  1023,  1436,    29,    -1,    31,    32,    33,    94,    -1,    -1,
-    37,    -1,    -1,    -1,  1449,    42,    -1,    -1,    -1,    46,
-    47,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,  1055,  1056,    61,  1058,    63,    -1,   309,    -1,
-    -1,    -1,    -1,    -1,    71,    -1,    -1,     4,     5,  1102,
-  1103,  1104,  1105,  1106,    81,   326,    -1,  1110,    -1,    -1,
-    -1,    -1,    89,   334,    -1,    -1,    -1,    94,   339,    -1,
-    -1,    -1,    -1,    -1,  1127,  1128,  1129,    -1,    -1,  1102,
-  1103,  1104,  1105,  1106,   355,    -1,    -1,  1110,    -1,    -1,
-    -1,    48,    -1,  1116,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,    -1,    -1,  1127,  1128,  1129,    -1,   379,    -1,
-    -1,    -1,    -1,    -1,    71,    -1,    -1,   388,    -1,    -1,
-  1143,    -1,    -1,    -1,    81,    -1,     4,    -1,   399,    -1,
-    -1,   402,    -1,    -1,    91,  1158,   407,    94,    95,    -1,
-  1163,    -1,  1165,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    31,    32,    -1,    34,    -1,    36,  1212,
-  1213,    -1,  1215,    41,    -1,   436,    -1,   438,    -1,   440,
-   441,   442,    -1,    -1,    -1,   446,    54,    -1,    56,    -1,
-   451,    -1,    -1,   454,    -1,    -1,    -1,    -1,   444,  1212,
-  1213,    -1,  1215,   449,    -1,    -1,    -1,    -1,    -1,   470,
-    -1,    -1,    -1,    -1,    -1,    87,    -1,    89,    -1,    91,
-    -1,    -1,  1235,    -1,    -1,    -1,    -1,    -1,   474,     3,
-     4,     5,     6,    -1,   480,     9,    -1,    -1,    -1,   500,
-    -1,    -1,   503,    -1,    -1,    -1,   492,   493,    -1,   495,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   518,   519,   520,
-    -1,    -1,    -1,    -1,   136,    -1,   138,   135,    42,    -1,
-    -1,   139,   533,    -1,    48,   143,    -1,    -1,   146,   147,
-   148,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   160,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,  1316,  1317,  1318,    -1,    81,    -1,   177,
-   178,   179,    -1,    -1,    -1,    89,    -1,    91,   579,    -1,
-    94,    95,     1,    -1,     3,     4,     5,     6,     7,     8,
-     9,   592,    -1,    -1,    -1,    14,    -1,    -1,   206,    -1,
-    -1,    -1,   588,   589,    -1,    -1,    -1,   593,    -1,   610,
-    29,    -1,    31,    32,    33,    -1,    -1,    -1,    37,    38,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    47,    -1,
-    49,    -1,   240,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,  1394,    61,    -1,    63,    -1,    -1,    -1,   649,   650,
-   651,   652,    71,    -1,    -1,     3,     4,     5,     6,     7,
-     8,     9,    81,    -1,    -1,    -1,    14,    -1,    -1,    -1,
-    89,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
-    -1,  1434,  1435,  1436,    32,    -1,    -1,    -1,   300,    37,
-    -1,   692,   111,    -1,    42,   696,  1449,    -1,    46,    -1,
-    48,    -1,   703,   704,    -1,   706,    -1,    55,    -1,    57,
-    58,  1464,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    71,    -1,    -1,   338,   335,    -1,    -1,
-    -1,   339,    -1,    81,    -1,    -1,   737,    -1,   739,    -1,
-    -1,    89,    -1,   744,   745,   746,    94,    -1,    -1,     3,
-     4,     5,     6,     3,     4,     5,     6,     7,     8,     9,
-    -1,    -1,    12,    -1,    14,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   773,    -1,    -1,   761,    -1,   763,    -1,    29,
-   388,    31,    32,    -1,    -1,    -1,    -1,    37,    42,    -1,
-    -1,   399,    42,    -1,   402,    -1,    46,    -1,    48,   407,
-    -1,    55,    -1,    57,    58,    55,    -1,    57,    58,    63,
-    -1,    -1,    -1,    -1,   426,   427,    -1,    71,    -1,    -1,
-    -1,    71,   434,    -1,    -1,    -1,    -1,    81,   436,    -1,
-   438,    81,   440,   441,   442,    89,    -1,    -1,   446,    89,
-    94,    91,    -1,   451,    94,    95,   454,    -1,    98,   835,
-   836,    -1,   838,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   470,    -1,    -1,    -1,    -1,    -1,   869,   870,
-   871,    -1,    -1,    -1,   875,    -1,    -1,    -1,    -1,    -1,
-   866,    -1,    -1,    -1,    -1,   497,   498,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,   907,   908,   909,    -1,
-    -1,    -1,    -1,   914,    -1,    -1,    -1,    -1,   530,    -1,
-   532,    -1,    -1,   535,   536,   911,   538,   539,   540,   541,
-   542,   543,   544,   545,   546,   547,   548,   549,   550,   551,
-   552,   553,   554,   555,   556,    -1,    -1,    -1,   949,    -1,
-   562,    -1,   564,   565,    -1,    -1,    -1,    -1,    -1,     3,
-     4,     5,     6,    -1,    -1,     9,    -1,    -1,     3,     4,
-     5,     6,   580,    -1,     9,    -1,    -1,    -1,   979,    -1,
-   592,    -1,    -1,    -1,    -1,    -1,    -1,   599,    -1,   975,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,  1000,
-    -1,   987,   610,    -1,    48,    -1,    -1,    42,   620,   621,
-  1011,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,   636,    -1,    -1,    71,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    34,    71,    81,    -1,    -1,
-    -1,   649,   650,   651,   652,    89,    81,    91,    -1,    -1,
-    94,    95,    -1,    -1,    89,    54,    -1,    -1,    -1,    94,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   679,    73,    74,
-    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
-    85,  1082,    -1,    -1,   692,  1071,    -1,    -1,   696,    -1,
-    -1,    -1,    -1,    -1,    -1,   703,   704,    -1,   706,    -1,
+   156,    79,     4,   426,   673,   670,    54,    24,     4,   125,
+     4,   193,   329,   385,   232,   335,   448,    83,   336,   337,
+   385,     4,   285,   286,   385,    58,   530,   146,   147,   653,
+   469,    36,    14,     4,    36,   830,    41,    31,    32,    41,
+    36,   123,    36,   223,   132,    41,   228,    41,   660,   353,
+   737,    56,   739,    36,   317,     4,   201,   202,    41,   746,
+    34,     4,  1254,   141,   585,    36,    71,   421,   128,  1261,
+    41,   592,   193,   133,   392,   393,   132,   133,    83,     4,
+    61,   202,    87,  1408,    89,    56,    91,    36,    11,    83,
+  1247,  1324,    41,    36,    38,   277,  1409,    11,    41,    11,
+    82,   106,   107,    53,    34,  1155,  1156,  1410,     9,   187,
+    79,    36,    45,    48,    60,    63,    41,   335,   456,  1169,
+    60,  1446,    59,   105,     0,    65,     7,    63,    65,     0,
+   135,   136,    89,   138,    91,   473,    76,   754,    60,    75,
+    63,   135,    75,   760,   385,     1,    75,   329,     1,    59,
+    49,    12,   146,   147,   586,   160,     1,    38,    83,    94,
+   193,    62,   110,  1426,   135,   111,   160,   111,   201,   202,
+   524,    12,   146,   147,   148,   110,   287,   288,  1481,   136,
+    12,   111,  1445,   177,   178,   502,   135,   110,   110,   160,
+   100,   302,   135,   434,   305,   228,   110,   308,   110,    60,
+   311,   151,    63,    59,   315,   179,    59,    63,   106,   107,
+   135,   160,   323,  1526,    59,   196,  1541,   160,    63,    60,
+    63,  1413,    63,   204,    65,    75,    48,    36,    60,    94,
+    48,    63,    41,   672,   184,   160,  1286,    98,   326,  1502,
+    96,    25,    55,    65,   277,  1295,  1296,   229,  1298,   110,
+   867,    96,  1409,  1486,  1049,    61,   322,    98,   414,     3,
+     4,     5,    75,  1455,   197,    60,    98,   110,   880,    94,
+   326,   883,    94,   278,   243,    59,    94,    95,   902,    63,
+    34,    76,   643,   365,   604,    61,    60,    39,     4,     5,
+   608,    94,   110,     9,    63,   355,   329,    48,    76,    60,
+    78,    48,    61,    55,   309,   111,    75,   452,   453,   921,
+   922,  1503,    96,    57,    58,   460,   109,   322,    48,   379,
+   674,   440,   441,   379,   696,   330,    61,   472,   322,   633,
+    75,   696,   453,   338,   339,   111,   110,    81,    55,    55,
+   388,    57,    58,    94,   585,   339,   491,    94,    95,   110,
+   871,   592,   111,   335,    48,    71,   574,   390,    75,   976,
+    60,    27,    28,   110,    94,    81,    32,    25,   339,    27,
+    28,   988,   767,   768,   769,   692,   111,    48,    75,    95,
+   385,   338,  1432,  1433,   389,    48,    48,    94,   909,   385,
+   339,   385,   146,   147,   148,    61,   339,   322,  1193,    65,
+    94,    59,   906,    25,  1021,    63,  1023,   518,   519,   832,
+   110,   309,    61,    48,   339,    25,    61,    27,    28,   452,
+   453,    55,    55,    94,    95,   179,    55,   460,   949,   434,
+    65,    94,    94,    95,    48,   416,   868,    55,    96,   472,
+   434,    75,    75,     4,     5,   111,   440,   441,   110,    59,
+     8,     9,   770,    63,    32,   696,    14,    75,   491,    94,
+   385,    63,     3,     4,     5,   470,   440,   441,   442,     3,
+     4,     5,     6,  1085,  1086,    59,   470,    63,   459,    37,
+    94,    95,    75,  1170,    48,    55,    96,   470,    46,    75,
+    48,    48,   497,    63,    55,   500,    57,    58,   503,    55,
+   566,   470,   507,   508,   509,   510,   511,    48,    42,   434,
+    71,     4,     5,   754,    55,   520,    57,    58,   446,   760,
+    81,   470,     4,    57,    58,   530,   454,   470,   533,   462,
+    94,   903,    55,   431,    95,   974,    94,    94,   903,   166,
+   497,   721,   903,   723,    48,   470,     4,     5,   728,    48,
+    59,    55,    75,    94,    36,    89,   876,    60,    61,    41,
+   565,   566,   610,   111,    57,    58,     3,     4,     5,   714,
+    48,    75,   566,    94,     3,     4,     5,    48,   611,    48,
+   585,   899,    55,   937,    76,  1106,    55,   592,   582,   583,
+    94,   585,    55,     4,     5,    94,    95,   779,   592,    57,
+    58,   649,   500,   651,   652,   503,    75,    55,    48,   507,
+   873,    95,    49,  1134,   596,   731,    94,  1040,  1041,   652,
+    57,    58,   520,    94,   641,    94,   867,  1059,    57,    58,
+   871,   636,    48,   110,    48,   533,    48,    11,    49,   537,
+  1251,   566,  1253,    55,   692,   650,    57,    58,    48,   654,
+    60,    61,     4,     5,    94,   672,   110,     9,   876,   692,
+   585,   110,   903,    75,   110,   563,   111,   592,   909,    48,
+    81,   569,     4,     5,    14,    94,    48,  1116,    94,   636,
+    94,   714,    94,    23,    61,    48,   440,   441,   442,     8,
+     9,   696,  1449,     3,    94,    14,   744,  1015,  1016,  1017,
+    60,    61,   696,    55,   113,    57,    58,  1130,   949,  1148,
+    25,    95,    27,    28,    95,    94,  1139,  1140,    37,    71,
+    63,  1144,    94,    55,    64,    57,    58,    46,   113,    81,
+   841,    94,   737,     9,   739,   976,    12,  1054,  1495,    94,
+   745,   746,    60,   737,    59,   739,   779,   988,    63,   754,
+   755,   756,   746,   758,   737,   760,   739,    63,   869,   870,
+   754,    94,  1185,   746,  1055,  1056,   760,  1058,   737,    75,
+   739,   696,    48,   744,   745,    75,   745,   746,     4,     5,
+  1021,    96,  1023,   123,    60,    75,    62,    63,   737,    65,
+   739,   971,   972,   973,   737,    75,   739,   746,   755,   756,
+    76,   758,    78,   746,  1469,   145,    75,   740,   741,    11,
+    27,    28,   737,   111,   739,    32,   749,   110,    94,    95,
+  1489,   746,    98,    49,   829,     4,     5,    60,   833,   754,
+    55,    57,    58,   110,   110,   760,   914,    27,    28,    84,
+    85,    55,   110,    60,    61,    60,    61,   110,    65,    63,
+  1273,     3,     4,     5,     6,    81,   861,     3,     4,     5,
+     6,    75,   867,     4,     5,  1106,   871,    75,    60,   110,
+    49,   111,    48,   867,    61,   869,   870,   871,    57,    58,
+   220,   221,    60,    61,    76,  1203,    78,   111,  1311,    65,
+    42,   113,   232,  1134,   876,   113,    42,    49,   903,   110,
+   905,   906,    81,    49,   909,    57,    58,   903,    49,   903,
+    75,    57,    58,   907,   908,   909,    57,    58,    94,    95,
+    60,    61,  1000,    60,    61,    25,    75,    27,    28,    81,
+    55,   979,    75,   113,    55,   909,  1253,    89,   113,   837,
+    81,   110,   867,    89,   949,    59,   871,     3,     4,     5,
+  1061,     7,     8,     9,    55,   949,     4,     5,   963,    59,
+   110,   301,    63,    63,   969,     3,     4,     5,     6,    55,
+    94,   976,   110,   871,    75,   949,   110,    63,   903,     8,
+   113,  1335,   976,   988,   909,  1104,  1105,     4,     5,    75,
+     3,     4,     5,  1347,   988,    48,    96,    65,    60,    94,
+    48,    57,    58,   343,    42,   111,  1011,    55,   979,    57,
+    58,    61,   352,  1132,  1133,    55,  1021,  1011,  1023,    57,
+    58,  1132,  1133,    71,   949,   365,    37,  1021,  1011,  1023,
+  1108,  1000,    49,    81,    65,    65,    49,    65,   110,    61,
+    57,    58,  1011,    91,    57,    58,    94,    95,     3,     4,
+     5,   976,     7,     8,     9,    63,   110,    94,  1063,   992,
+    65,   110,  1011,   988,    81,   998,   999,  1439,  1011,  1002,
+  1003,   969,  1426,  1006,  1439,    55,   110,    55,   110,    65,
+    65,    60,    37,    63,   110,    63,  1011,     3,     4,     5,
+   717,  1445,     3,     4,     5,    75,  1021,    75,  1023,  1116,
+    55,  1106,    57,    58,    59,    63,  1063,   113,  1531,   110,
+  1104,  1105,  1106,   110,     3,     4,     5,     6,  1472,     3,
+     4,     5,  1127,   110,   751,  1127,  1443,   467,   110,  1134,
+  1104,  1105,  1106,  1127,    76,    76,  1247,    55,  1132,  1133,
+  1134,    57,    58,    59,  1127,    63,    57,    58,  1502,    76,
+   105,   106,   107,    42,    76,   909,  1510,    75,  1132,  1133,
+  1134,     4,     5,     4,     5,  1170,    55,   110,    57,    58,
+    56,    55,    58,    57,    58,    59,  1170,   110,  1127,   110,
+    63,  1106,    63,    60,    87,    63,    89,  1170,    91,     3,
+     4,     5,   532,   110,   113,   949,   111,  1166,  1439,    95,
+    89,  1170,  1127,  1251,   110,  1253,   110,    89,    49,  1134,
+    75,   113,    55,    48,    57,    58,    57,    58,   110,   110,
+  1253,  1170,     3,     4,     5,   113,     7,  1170,    71,    60,
+   110,   110,    65,   136,   574,   138,  1134,   113,    81,   110,
+    81,    55,  1247,    57,    58,  1170,   110,  1252,   111,  1254,
+    31,   111,  1254,  1247,    65,    60,  1261,    38,    60,  1261,
+  1254,  1443,  1418,   110,  1247,  1270,   110,  1261,    94,    94,
+    94,  1254,    94,   111,    55,     8,    57,    58,  1261,   113,
+   166,   110,   110,  1181,  1182,  1183,  1184,     3,     4,     5,
+     6,    27,    28,  1191,   110,   110,    32,   110,  1247,   111,
+   110,   641,  1421,  1422,   113,  1254,   110,   193,    34,   110,
+  1421,  1422,  1261,   653,   110,   201,   202,    81,    82,    83,
+    84,    85,  1247,   110,    60,    61,    42,   110,   110,  1254,
+    65,   110,    55,    49,   110,   110,  1261,    48,    63,   679,
+   113,    57,    58,   110,  1242,   110,    97,     3,     4,     5,
+  1104,  1105,  1106,   110,   981,   982,     7,     8,     9,    63,
+  1293,  1294,    63,    14,    61,    81,     3,     4,     5,    61,
+     7,     8,     9,    89,     9,    31,    61,    16,  1132,  1133,
+  1134,    32,   110,  1010,  1358,    94,    37,    94,     3,     4,
+     5,   110,   712,   110,    61,    46,  1444,   300,  1403,    55,
+    37,    57,    58,  1408,  1409,  1410,  1408,   110,  1413,  1403,
+  1443,  1413,     4,     5,  1408,  1409,  1410,   110,  1423,  1413,
+    57,    58,   113,   110,  1357,  1408,  1409,  1421,  1422,    61,
+  1413,    94,    94,   753,  1439,   338,     3,     4,     5,   759,
+    55,  1446,    57,    58,  1446,  1439,  1344,  1421,  1422,  1423,
+  1455,    17,  1446,  1455,    61,   109,    99,    49,   110,  1408,
+  1409,  1455,    61,  1446,  1413,    57,    58,    11,   110,   110,
+   110,    61,  1455,    61,    61,    94,  1481,    60,  1403,    65,
+   110,    61,   110,  1408,  1409,  1410,   110,  1481,  1413,    11,
+    57,    58,     4,     5,     3,     4,     5,  1446,  1503,    61,
+    11,  1503,    61,   389,   390,  1403,  1455,     0,     0,  1503,
+     0,  1409,  1410,   413,  1439,   355,     2,   903,   745,  1116,
+  1503,  1446,   160,   426,   427,  1423,     3,     4,     5,     6,
+  1455,   434,    93,    45,  1161,  1162,  1541,  1164,  1165,  1541,
+  1167,  1474,   862,    55,   864,    57,    58,  1541,    57,    58,
+  1468,   160,   892,   138,  1503,  1334,  1481,  1541,  1541,   445,
+   280,    48,   902,  1252,   892,    42,   452,   453,   679,   222,
+   456,   887,    49,  1148,   460,   974,  1011,   745,  1503,  1168,
+    57,    58,   617,  1481,     7,     8,     9,   473,   885,   566,
+   184,    14,  1541,   123,   497,   498,   326,  1254,  1128,  1497,
+    87,    88,  1510,  1489,  1358,    92,    93,    94,    95,    32,
+  1458,  1520,    89,    34,    37,  1522,  1541,   958,  1270,    -1,
+    -1,  1519,    -1,    46,    -1,    -1,    -1,   530,  1526,   532,
+    -1,    -1,   535,   536,    -1,   538,   539,   540,   541,   542,
+   543,   544,   545,   546,   547,   548,   549,   550,   551,   552,
+   553,   554,   555,   556,    -1,    -1,  1283,  1284,    -1,   562,
+    -1,   564,   565,    -1,    -1,    -1,    -1,  1421,  1422,  1423,
+    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,     7,     8,     9,    14,   592,
+     4,     5,    14,    -1,    -1,     9,   599,    -1,    -1,    -1,
+  1020,  1041,  1022,    29,    -1,    31,    32,    33,    -1,    -1,
+    32,    37,    38,    -1,    -1,    37,    42,   620,   621,    -1,
+    46,    47,    -1,    49,    46,   611,   147,   148,    -1,    55,
+    -1,    57,    58,   636,    48,    61,    -1,    63,    79,    61,
+    -1,    55,    -1,    57,    58,    71,   427,    -1,    -1,    -1,
+  1377,  1378,  1379,   434,    -1,    81,  1076,    71,   179,    -1,
+    -1,    -1,   103,    89,   650,    -1,   652,    81,    94,    79,
+    80,    81,    82,    83,    84,    85,   679,    91,    -1,    -1,
+    94,    95,    -1,    -1,  1124,   111,    -1,    -1,     4,     5,
+  1130,   132,     8,     9,    -1,    -1,    -1,     4,    14,    -1,
+   141,    -1,  1429,  1430,    -1,    -1,   692,    14,    -1,    -1,
+    -1,    -1,    -1,    29,    -1,    31,    -1,   498,    25,    -1,
+    -1,    37,    -1,    -1,    31,    32,    -1,    34,   714,    36,
+    46,   717,  1152,   736,    41,    -1,    -1,  1157,    -1,    55,
+    -1,    57,    58,    59,    -1,    -1,   187,    54,    -1,    56,
+    -1,    -1,   755,   756,    -1,   758,    -1,    64,    -1,   745,
+     3,     4,     5,    -1,    71,   751,    -1,  1494,    -1,    -1,
+   773,    -1,    -1,    -1,    -1,    82,    83,    -1,    94,   220,
+    -1,   562,    -1,   564,   565,    -1,    -1,  1207,   309,    -1,
+    -1,    -1,   795,    -1,    -1,    -1,    39,    40,   105,    42,
+    -1,    -1,   243,  1243,    -1,    -1,     3,     4,     5,     6,
+    -1,   592,    55,    -1,    57,    58,    -1,    -1,   599,    -1,
+    -1,   128,    -1,    -1,    -1,    -1,   133,    12,   135,   832,
+   833,    -1,   139,    -1,    -1,   142,   143,    -1,    -1,   146,
+   147,   148,    27,    28,   847,    42,   849,    32,   851,    -1,
+    -1,    -1,    -1,   160,    -1,    -1,    -1,    -1,    55,    -1,
+    57,    58,    -1,    48,    61,    -1,    63,    -1,    -1,    -1,
+   177,   178,   179,    -1,    71,    60,    61,    -1,    63,    -1,
+    65,   884,  1302,  1303,    81,    -1,  1326,    -1,    -1,    -1,
+    -1,   894,    89,   334,    -1,    -1,    -1,    94,  1318,   206,
+    -1,    -1,    -1,   906,     7,     8,     9,    -1,    -1,    94,
+    95,    14,   427,    98,   221,    -1,   919,    -1,    -1,   434,
+   441,   442,   229,    -1,    -1,   110,    -1,    -1,   931,    32,
+    -1,    -1,    -1,   240,    37,    -1,    -1,    -1,    -1,     3,
+     4,     5,     6,    46,    -1,     9,   949,    -1,    -1,    -1,
+  1370,  1371,    -1,    -1,   395,    -1,    -1,    -1,    61,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,    -1,  1389,
+  1390,   278,   279,    -1,    -1,    -1,    -1,    -1,    42,   500,
+    -1,    -1,   503,   498,    48,    -1,    -1,    -1,   991,    -1,
+    -1,    55,   773,    57,    58,   981,   982,    -1,   519,   520,
+    -1,   328,   329,   330,    -1,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,   533,    -1,    -1,   322,    -1,    81,    -1,   326,
+    -1,   328,   329,   330,  1010,    89,   467,    91,    -1,    -1,
+    94,    95,   339,    -1,    -1,    -1,    -1,  1040,  1041,    -1,
+    -1,  1044,    -1,    -1,    -1,    -1,    -1,   562,   355,   564,
+   565,    -1,   833,   494,     3,     4,     5,     6,    -1,    -1,
+  1063,    -1,    -1,    -1,    -1,    -1,   847,    -1,   849,    -1,
+   851,   592,   379,    -1,    -1,    -1,    -1,    -1,   385,    -1,
+    -1,   388,   389,    -1,   599,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   399,    42,    -1,   402,    -1,    -1,    -1,    48,
+   407,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
+    -1,    -1,    -1,   894,    -1,  1118,    -1,  1120,    -1,  1122,
+    -1,    -1,    71,    -1,    -1,    -1,    -1,  1130,    -1,   436,
+    -1,   438,    81,   440,   441,   442,  1139,  1140,   579,   446,
+    89,  1144,    91,    -1,   451,    94,    95,   454,    -1,    -1,
+   931,    -1,    -1,    -1,   595,    -1,  1159,  1160,    -1,    -1,
+    -1,    -1,    -1,   470,    -1,    -1,    -1,    -1,   949,    -1,
+    -1,    -1,    -1,    -1,    -1,  1161,  1162,    -1,  1164,  1165,
+    -1,  1167,  1185,    -1,     1,    -1,     3,     4,     5,     6,
+     7,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,
+    -1,   508,   509,   510,   511,    -1,    -1,    -1,    -1,    -1,
+    -1,  1214,    29,    -1,    31,    32,    33,    -1,    -1,    -1,
+    37,    38,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,
+    47,    -1,    49,    -1,    -1,  1238,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    61,    -1,    63,    -1,    -1,    -1,
+    -1,    -1,   773,    -1,    71,   582,   583,    -1,   585,   566,
+    -1,   568,    -1,    -1,    81,   592,  1252,  1253,    -1,    -1,
+  1273,    -1,    89,   580,    -1,   582,   583,    94,   585,    -1,
+    -1,    -1,    -1,    -1,    -1,   592,  1289,    -1,    -1,   596,
+    -1,    -1,    -1,    -1,   111,    -1,    -1,  1283,  1284,    -1,
+    -1,    -1,    -1,   610,    -1,    -1,    -1,    -1,  1311,     3,
+     4,     5,     6,    -1,    -1,     9,    -1,    -1,   833,    -1,
+    -1,    -1,   649,    -1,   651,   652,     1,   654,     3,     4,
+     5,     6,   847,     8,   849,    -1,   851,  1118,    -1,  1120,
+    -1,  1122,   649,   650,   651,   652,   653,   654,    42,   870,
+   871,    -1,    -1,    -1,    -1,  1358,    -1,    -1,    -1,    -1,
+    -1,    55,    -1,    57,    58,   692,    -1,    42,    -1,    -1,
+    -1,    -1,  1375,  1376,    49,    -1,    -1,    71,    -1,   894,
+    55,  1384,    57,    58,    -1,   692,    -1,    81,   909,   696,
+    -1,  1377,  1378,  1379,    -1,    89,   703,   704,    -1,   706,
+    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1411,    -1,
+    -1,    -1,    -1,    -1,    89,    -1,   931,    -1,   106,   107,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   734,   949,    -1,
+   737,    -1,   739,  1214,   875,    -1,   877,   744,   745,   746,
+    -1,    -1,    -1,  1429,  1430,    -1,    -1,   754,    -1,    -1,
+    -1,    -1,   779,   760,    -1,     3,     4,     5,     6,    -1,
+   767,   768,   769,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   779,   914,    -1,    -1,    -1,    -1,     4,     5,
+    -1,     7,     8,     9,    -1,    -1,    12,    -1,    14,    -1,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,     3,     4,     5,
+     6,    -1,    -1,    29,    -1,    31,    32,    55,  1494,    57,
+    58,    37,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
+    46,    -1,   829,    71,    -1,   852,    -1,   854,  1531,    55,
+    -1,    57,    58,    81,    -1,    -1,    42,    -1,   865,    -1,
+    -1,    89,   869,   870,   871,   852,    94,   854,    -1,    55,
+    -1,    57,    58,    -1,   861,    -1,    -1,    63,   865,  1000,
+   867,    -1,   869,   870,   871,    71,    -1,    -1,    -1,   876,
+    -1,    -1,    98,    -1,    -1,    81,    -1,  1358,    -1,    -1,
+   907,   908,   909,    89,  1105,  1106,     4,     5,    94,    -1,
+    -1,     9,    -1,    -1,    -1,    -1,   903,    -1,   905,     4,
+   907,   908,   909,  1118,    -1,  1120,    -1,  1122,    -1,    14,
+    -1,    -1,  1133,  1134,    -1,    -1,    -1,    -1,    -1,    24,
+    25,   309,   949,    -1,    -1,    -1,    31,    32,    -1,    34,
+    48,    36,    -1,    -1,    -1,    -1,    41,    55,    -1,    57,
+    58,  1082,   949,    -1,    -1,    -1,    -1,    -1,    -1,    54,
+    -1,    56,    -1,    71,    -1,    -1,   963,    -1,    -1,    64,
+    -1,    -1,    -1,    81,    -1,    -1,    71,  1108,    -1,   976,
+    -1,    -1,   979,    91,    -1,    -1,    94,    95,    83,    -1,
+    -1,   988,     3,     4,     5,     6,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1001,    -1,    -1,   385,    -1,  1214,
+    -1,    -1,    -1,    -1,  1011,    -1,    -1,    -1,     3,     4,
+     5,     6,    -1,    -1,  1021,    -1,  1023,    -1,    -1,    -1,
+    -1,    42,    -1,   128,    -1,  1166,    -1,    -1,    49,    -1,
+   135,   328,   329,   330,   139,    -1,    57,    58,   143,    -1,
+    -1,   146,   147,   148,    -1,    -1,   434,    42,  1055,  1056,
+    -1,  1058,    -1,    -1,    49,   160,    -1,    -1,    -1,    -1,
+     4,     5,    57,    58,     8,     9,    -1,    -1,    89,    -1,
+    14,    -1,   177,   178,   179,  1102,  1103,  1104,  1105,  1106,
+    -1,    -1,    -1,  1110,    -1,    29,    81,    31,    -1,    -1,
+    -1,    -1,    -1,    37,    89,  1102,  1103,  1104,  1105,  1106,
+    -1,   206,    46,  1110,    -1,  1132,  1133,  1134,    -1,    -1,
+    -1,    55,   500,    57,    58,   503,    -1,    -1,    -1,   507,
+   508,   509,   510,   511,    -1,  1132,  1133,  1134,     3,     4,
+     5,     6,   520,    -1,     9,   240,    -1,  1358,    -1,    -1,
+     3,     4,     5,     6,    -1,   533,     9,    -1,    -1,    -1,
+    94,    -1,    -1,    -1,    -1,    -1,  1163,    -1,    -1,    -1,
+    -1,  1168,    -1,  1170,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    -1,    -1,   278,   279,    -1,    -1,   565,    -1,    42,
+    55,    -1,    57,    58,    -1,    48,    -1,    -1,    -1,    -1,
+  1217,  1218,    55,  1220,    57,    58,    71,   585,    -1,    -1,
+    -1,  1422,  1423,    -1,   592,    -1,    81,    -1,    71,    -1,
+  1217,  1218,    -1,  1220,    89,    -1,    -1,   322,    81,    94,
+    -1,   326,    -1,   328,   329,   330,    89,    -1,    91,    -1,
+   335,    94,    95,    -1,   339,     3,     4,     5,     6,    -1,
+    -1,     9,    -1,    -1,  1251,  1252,  1253,    -1,    -1,    -1,
+   355,    -1,     3,     4,     5,     6,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,  1270,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    -1,    -1,
+   385,    -1,     4,   388,   389,   582,   583,    55,    -1,    57,
+    58,    42,    -1,    -1,   399,    -1,    -1,   402,    49,    -1,
+    -1,    -1,   407,    71,    -1,    -1,    57,    58,   696,    31,
+    32,    -1,    -1,    81,    36,    -1,    -1,    -1,    -1,    41,
+    -1,    89,     3,     4,     5,     6,    94,    -1,    -1,    -1,
+    81,   436,    -1,   438,    56,   440,   441,   442,    89,    -1,
+    -1,   446,     3,     4,     5,     6,   451,    -1,     9,   454,
+    -1,  1358,   649,    -1,   651,   652,    -1,   654,    -1,    -1,
+    -1,    42,    -1,    -1,   469,   470,   754,    -1,    49,    -1,
+    -1,    -1,   760,    -1,    -1,    -1,    57,    58,    -1,    -1,
+    -1,    42,    -1,    -1,    -1,    -1,    -1,    48,    -1,    -1,
+    -1,    -1,    -1,    -1,    55,   692,    57,    58,    -1,    -1,
+    81,    -1,    -1,   508,   509,   510,   511,    -1,    89,    -1,
+    71,    -1,    -1,   135,  1421,  1422,  1423,   139,    -1,    -1,
+    81,   143,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
+    91,    -1,  1439,    94,    95,    -1,    -1,  1444,   160,    -1,
+     1,   829,     3,     4,     5,     6,     7,     8,     9,    -1,
+    -1,    -1,    -1,    14,    -1,   177,   178,    -1,    -1,    -1,
+    -1,   566,    -1,   568,    -1,    -1,    27,    28,    29,    -1,
+    31,    32,    33,   861,    -1,    -1,    37,   582,   583,   867,
+   585,    42,   779,   871,    45,    46,    47,   592,    49,    -1,
+    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,   604,
+    61,    -1,    -1,    -1,    -1,   610,    -1,    -1,    -1,    -1,
+    71,     3,     4,     5,     6,   903,    -1,   905,   240,    -1,
+    81,   909,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
+    -1,    -1,    -1,    94,    -1,    -1,   641,    -1,    -1,   100,
+    -1,    -1,    -1,    -1,   649,   650,   651,   652,   653,   654,
+    42,    -1,    -1,    -1,    -1,   852,    -1,   854,    -1,    -1,
+    -1,   949,    -1,    55,    -1,    57,    58,   672,   865,    -1,
+    -1,    63,   869,   870,    -1,   963,    -1,    -1,    -1,    71,
+    -1,   969,    -1,    -1,    -1,    -1,    -1,   692,   976,    81,
+    -1,   696,    -1,    -1,    -1,    -1,    -1,    89,   703,   704,
+   988,   706,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+   907,   908,    -1,    -1,    -1,    -1,    -1,   339,     3,     4,
+     5,     6,    -1,    -1,     9,    -1,    -1,    -1,    -1,   734,
+    -1,    -1,   737,  1021,   739,  1023,    -1,    -1,    -1,   744,
+   745,   746,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   754,
+    -1,    -1,    -1,    -1,    -1,   760,    -1,    42,    -1,    -1,
+    -1,    -1,   767,   768,   769,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,   779,    -1,    -1,   399,    -1,    -1,
+   402,    -1,    -1,    -1,    -1,   407,    71,    -1,    -1,     3,
+     4,     5,     6,    -1,    -1,     9,    81,    -1,   177,   178,
+   179,    -1,    -1,     4,    89,    -1,    -1,    -1,    -1,    94,
+    -1,    -1,    -1,    -1,   436,    -1,   438,    -1,  1106,    -1,
+    -1,    -1,    -1,    -1,   829,    -1,    -1,    -1,    42,   451,
+    31,    32,    -1,    34,    48,    36,    -1,    -1,    -1,    -1,
+    41,    55,    -1,    57,    58,    -1,  1134,   852,   470,   854,
+    -1,    -1,    -1,    54,    -1,    56,   861,    71,    -1,    -1,
+   865,    -1,   867,    -1,   869,   870,   871,    81,    -1,    -1,
+    -1,   876,    -1,    -1,    -1,    89,    -1,    91,    79,    -1,
+    94,    95,    70,    71,    72,    73,    74,    75,    76,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,   903,    -1,
+   905,    -1,   907,   908,   909,  1102,  1103,  1104,  1105,    -1,
+    -1,    -1,    -1,  1110,    73,    74,    75,    76,    77,    78,
+    79,    80,    81,    82,    83,    84,    85,   128,    -1,    -1,
+    -1,   132,   133,    -1,   135,  1132,  1133,    -1,   139,    -1,
+   141,    -1,   143,    -1,   949,   146,   147,   148,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   963,   160,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   974,
+    -1,   976,    -1,    -1,   979,    -1,   177,   178,   179,    -1,
+    -1,    -1,  1270,   988,    -1,    -1,   187,    -1,    -1,     4,
+     5,    -1,    -1,     8,     9,    -1,    -1,    -1,    -1,    14,
+    -1,    -1,    -1,    -1,    -1,   206,  1011,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,  1021,    -1,  1023,    -1,
+  1217,  1218,    37,  1220,    -1,    -1,    -1,    -1,   650,    -1,
+    -1,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,   240,
+    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+  1055,  1056,    -1,  1058,    -1,    -1,    71,   436,    -1,   438,
+    -1,   440,   441,   442,    -1,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,   451,    -1,   696,    -1,    91,    -1,    -1,    94,
+    95,   703,   704,    -1,   706,    74,    75,    76,    77,    78,
+    79,    80,    81,    82,    83,    84,    85,  1102,  1103,  1104,
+  1105,  1106,    -1,    -1,    -1,  1110,    -1,    -1,   309,    -1,
+    -1,  1116,    -1,    -1,    -1,   737,    -1,   739,    -1,    -1,
+    -1,    -1,   744,   745,   746,   326,    -1,  1132,  1133,  1134,
+    -1,    -1,    -1,   334,    -1,  1423,    -1,    -1,   339,    -1,
+    -1,    -1,    -1,  1148,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,  1439,    -1,    -1,   355,    -1,    -1,    -1,  1163,    -1,
+    -1,    -1,    -1,  1168,    -1,  1170,     3,     4,     5,     6,
+     7,     8,     9,    -1,    -1,    12,    -1,    14,   379,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   388,    -1,    -1,
+    -1,    -1,    29,    -1,    31,    32,    -1,    -1,   399,    -1,
+    37,   402,    -1,    -1,    -1,    42,   407,    -1,    -1,    46,
+    -1,    48,  1217,  1218,    -1,  1220,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    71,   436,    -1,   438,    -1,   440,
+   441,   442,    -1,    -1,    81,   446,  1251,  1252,  1253,    -1,
+   451,     4,    89,   454,    91,    -1,    -1,    94,    95,    -1,
+    -1,    98,    -1,    -1,    -1,  1270,    -1,    -1,    -1,   470,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    31,    32,
+    -1,    34,    -1,    36,    -1,   907,   908,    -1,    41,    -1,
+     3,     4,     5,     6,    -1,    -1,     9,    -1,    -1,   500,
+    -1,    54,   503,    56,    -1,    -1,    -1,    -1,    -1,    -1,
+     4,     5,    -1,    -1,     8,     9,    -1,   518,   519,   520,
+    14,    -1,    -1,    -1,   703,   704,    -1,   706,    -1,    42,
+    -1,    -1,   533,    -1,    -1,    29,    -1,    31,    -1,    -1,
+    -1,    -1,    55,    37,    57,    58,    -1,    -1,    81,    -1,
+    -1,    -1,    46,  1358,    48,    -1,    -1,   979,    71,    -1,
+    -1,    55,    -1,    57,    58,   744,    -1,    -1,    81,     4,
+     5,    -1,    -1,     8,     9,    -1,    89,    71,   579,    14,
+    -1,    94,   135,    -1,    -1,    -1,   139,    81,    -1,  1011,
+   143,   592,    -1,   146,   147,   148,    -1,    91,    -1,    -1,
+    94,    95,    37,    -1,    -1,    -1,    -1,   160,    -1,   610,
+    -1,    46,    -1,    48,    -1,    -1,  1421,  1422,  1423,    -1,
+    55,   154,    57,    58,   177,   178,   179,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1439,    -1,    71,    -1,    -1,  1444,
+    -1,    -1,   175,    -1,    -1,    -1,    81,    -1,   649,   650,
+   651,   652,    -1,   206,    -1,   188,    91,     4,     5,    94,
+    95,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+  1102,  1103,    29,    -1,    31,    -1,    -1,   240,  1110,    -1,
+    37,   692,    -1,    -1,    -1,   696,    -1,    -1,    -1,    46,
+    -1,    -1,   703,   704,    -1,   706,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,
+    -1,     3,     4,     5,     6,     7,     8,     9,   907,   908,
+   909,    -1,    14,    -1,    -1,    -1,   737,    -1,   739,    -1,
+    -1,  1163,    -1,   744,   745,   746,  1168,    29,  1170,    31,
+    32,    33,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,
+    42,    -1,    -1,    -1,    46,    47,    -1,    49,    -1,    -1,
+   949,    -1,   773,    55,    -1,    57,    58,    -1,    -1,    61,
+    -1,    63,   335,    -1,    -1,    -1,   339,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,  1217,  1218,    -1,  1220,    81,
+   979,    -1,    -1,    -1,    -1,    -1,    -1,    89,     3,     4,
+     5,     6,    94,    -1,     9,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,   111,
+  1252,    -1,    -1,    -1,    -1,   388,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   399,    42,    -1,   402,
+    -1,    -1,    -1,    -1,   407,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,    -1,    -1,    -1,    -1,   869,   870,
+   871,    -1,    -1,    -1,   875,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,   436,    -1,   438,    81,   440,   441,   442,
+    -1,    -1,    -1,   446,    89,    -1,    -1,    -1,   451,    94,
+    -1,   454,    34,    -1,    -1,    -1,   907,   908,   909,    -1,
+    -1,   444,    -1,   914,    -1,    -1,   449,   470,    -1,    -1,
+    -1,    -1,    54,  1102,  1103,  1104,  1105,  1106,    -1,    -1,
+    -1,  1110,    -1,    -1,     3,     4,     5,     6,     7,     8,
+     9,   474,    -1,    -1,    -1,    14,    -1,   480,   949,    -1,
+    -1,    -1,    -1,  1132,  1133,  1134,    -1,    -1,    -1,   492,
+   493,    -1,   495,    32,    -1,    -1,    -1,    -1,    37,    -1,
+    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,   979,    48,
+     3,     4,     5,     6,  1163,    -1,    55,    -1,    57,    58,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1000,
+    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+  1011,    -1,    81,    -1,   146,   147,   148,    -1,    -1,    42,
+    89,    -1,    91,    -1,    -1,    94,    95,   580,    -1,    -1,
+    -1,    -1,    55,    -1,    57,    58,    -1,    -1,  1217,  1218,
+    63,  1220,    -1,    -1,    -1,   177,   178,   179,    71,    -1,
+    -1,    -1,    -1,    -1,    -1,   588,   589,   610,    81,    -1,
+   593,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,
+    -1,    94,    -1,    -1,   206,    -1,    -1,    -1,    -1,    -1,
+    -1,  1082,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
+    -1,    -1,     9,    -1,    -1,    -1,   649,   650,   651,   652,
     -1,  1102,  1103,  1104,  1105,  1106,    -1,  1108,    -1,  1110,
-    -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,
-     9,    -1,    -1,  1109,   736,    -1,  1127,  1128,  1129,   737,
-    -1,   739,    -1,    -1,    -1,    -1,   744,   745,   746,    -1,
-    -1,    -1,    -1,   755,   756,    -1,   758,   146,   147,   148,
-    -1,    -1,    -1,    42,    -1,    -1,    -1,  1158,    -1,    48,
-    -1,   773,  1163,    -1,  1165,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   177,   178,
-   179,  1167,    71,   795,    -1,  1171,    -1,    -1,    -1,    -1,
-    -1,    -1,    81,    -1,    -1,     3,     4,     5,     6,    -1,
-    89,     9,    91,    -1,    -1,    94,    95,   206,    -1,    -1,
-    -1,  1212,  1213,    -1,  1215,    -1,    -1,    -1,  1204,    -1,
-   832,   833,    -1,    -1,    -1,   328,   329,   330,    -1,    -1,
-    -1,    -1,    -1,    -1,    42,   847,    -1,   849,    -1,   851,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,
-    58,    -1,    -1,    -1,    -1,    -1,    -1,  1243,    -1,    -1,
-    -1,  1247,    -1,    71,    -1,    -1,    -1,    -1,   876,    -1,
-    -1,    -1,   884,    81,    -1,    -1,    -1,    -1,    -1,    -1,
-   279,    89,   894,  1269,  1270,    -1,    94,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   906,    -1,    -1,    -1,    -1,   907,
-   908,   909,    -1,    -1,    -1,    -1,    -1,   919,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,  1316,  1317,  1318,    -1,   931,
-     1,    -1,     3,     4,     5,     6,     7,     8,     9,   328,
-   329,   330,    -1,    14,    -1,    -1,    -1,   949,    -1,    -1,
-    -1,   949,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    32,    33,    -1,    -1,    -1,    37,    38,    -1,    -1,
-    -1,    42,    -1,    -1,    -1,    46,    47,    -1,    49,    -1,
-    -1,   979,    -1,    -1,    55,    -1,    57,    58,    -1,   991,
-    61,    -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,   388,
-    71,    -1,    -1,  1394,    -1,    -1,    -1,    -1,    -1,    -1,
-    81,    -1,    -1,  1011,    -1,    -1,    -1,    -1,    89,    -1,
-    -1,    -1,    -1,    94,     3,     4,     5,     6,    -1,    -1,
-     9,     3,     4,     5,     6,    -1,    -1,    -1,  1040,  1041,
-   111,    -1,  1044,  1434,  1435,  1436,    -1,   436,    -1,   438,
-    -1,   440,   441,   442,    -1,    -1,    -1,   446,    -1,    -1,
-    -1,  1063,   451,    42,    -1,   454,    -1,    -1,    -1,    -1,
-    42,    -1,    -1,  1464,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,   582,
-   583,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-    -1,    -1,    81,    -1,  1102,  1103,  1104,  1105,  1106,    81,
-    89,     4,  1110,    -1,    -1,    94,  1118,    89,  1120,    -1,
-  1122,    -1,    94,  1125,    -1,    -1,    -1,    -1,    -1,  1127,
-  1128,  1129,  1134,  1135,    -1,    -1,    -1,  1139,    31,    32,
-    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    41,    -1,
-    -1,    -1,  1154,  1155,    -1,    -1,   649,    -1,   651,   652,
-  1158,   654,    -1,    56,    -1,  1163,    -1,  1165,    -1,    -1,
-     3,     4,     5,     6,    -1,    -1,    -1,    -1,  1180,   568,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,     3,     4,     5,     6,    42,    -1,     9,    -1,    -1,
+    -1,  1132,  1133,  1134,    -1,    -1,    -1,    -1,    55,   692,
+    57,    58,    -1,   696,    -1,    -1,    -1,   279,    -1,    -1,
+   703,   704,    -1,   706,    71,    -1,    -1,    -1,    -1,    -1,
+    42,    -1,  1163,    -1,    81,    -1,    -1,  1168,    -1,  1170,
+    -1,    -1,    89,    55,    -1,    57,    58,    94,    -1,  1358,
+    -1,    -1,     4,     5,   737,    -1,   739,     9,    -1,    71,
+    -1,   744,   745,   746,    -1,    -1,   328,   329,   330,    81,
+    -1,    -1,    -1,    -1,    -1,    -1,    54,    89,     3,     4,
+     5,     6,    94,    -1,    -1,    -1,  1217,  1218,    -1,  1220,
+    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,   761,    -1,
+   763,    79,    -1,    55,    82,    57,    58,    -1,    -1,    -1,
+    -1,    -1,  1421,  1422,  1423,    -1,    -1,    42,    -1,    71,
+  1251,  1252,  1253,    -1,    -1,   103,   388,   105,    -1,    81,
+    55,    -1,    57,    58,    -1,    -1,    61,    -1,    -1,    91,
+    -1,    -1,    94,    95,    -1,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    94,
+    -1,    -1,   835,   836,   436,   838,   438,    -1,   440,   441,
+   442,    -1,    -1,    -1,   446,    -1,    -1,    -1,    -1,   451,
+    -1,    -1,   454,   876,    -1,    -1,    -1,    -1,    -1,   177,
+   178,   179,    -1,   866,    -1,    -1,    -1,    -1,    -1,   187,
+     4,     5,    -1,     7,     8,     9,    -1,    -1,    12,    -1,
+    14,    -1,    -1,    -1,   907,   908,   909,  1358,   206,    -1,
+    -1,     3,     4,     5,     6,    29,    -1,    31,    32,    -1,
+    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,   911,    -1,
+    -1,   229,    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,
+    -1,    55,    -1,    57,    58,   243,   949,    -1,    -1,    -1,
+    42,    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    55,    -1,    57,    58,    81,    -1,    -1,
+  1421,  1422,  1423,    -1,    -1,    -1,   979,    91,    -1,    71,
+    94,    95,    -1,    -1,    98,    -1,   568,    -1,    -1,    81,
+    -1,    -1,   975,  1444,    -1,    -1,    -1,    89,    -1,    -1,
+   582,   583,    94,   585,   987,    -1,    -1,    -1,  1011,    -1,
+   592,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     4,     5,    -1,     7,     8,     9,    -1,    -1,   610,    -1,
+    14,    -1,    -1,    -1,    -1,    -1,   334,   335,    -1,    -1,
+    -1,     3,     4,     5,     6,    29,    -1,    31,    32,    -1,
+    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    46,    -1,    -1,    49,    -1,   649,    -1,   651,
+   652,    55,   654,    57,    58,    -1,    -1,    -1,    -1,    -1,
+    42,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1071,    -1,
+   388,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,  1102,
+  1103,  1104,  1105,  1106,    -1,    -1,    -1,  1110,    -1,    71,
+   692,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    81,
+    -1,   703,   704,    -1,   706,    -1,  1109,    89,    -1,  1132,
+  1133,  1134,    94,    -1,    -1,    -1,    -1,    -1,   436,    -1,
+   438,    -1,   440,   441,   442,    -1,    -1,    -1,   446,    -1,
+    -1,    -1,    -1,   451,    -1,    -1,   454,    -1,    -1,    -1,
+  1163,    -1,   744,    -1,    -1,  1168,    -1,  1170,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,   767,   768,   769,    14,  1172,
+    -1,    -1,    -1,  1176,    -1,    -1,    -1,   779,    -1,    -1,
+    -1,    -1,    -1,    29,    -1,    31,    32,    33,    -1,    -1,
+    -1,    37,    38,    -1,  1217,  1218,    42,  1220,    -1,    -1,
+    46,    47,    -1,    49,    -1,    -1,  1209,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    61,    -1,    63,     3,     4,
+     5,     6,    -1,    -1,    -1,    71,    -1,    -1,  1251,  1252,
+  1253,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,    94,    -1,
+   852,    -1,   854,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    -1,    -1,   865,    -1,   111,    -1,   869,   870,   871,
+    55,    -1,    57,    58,    -1,  1278,    -1,   595,   596,  1282,
+    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
+     4,     5,   610,     7,     8,     9,    81,    -1,    12,    -1,
+    14,  1304,  1305,    -1,    89,   907,   908,   909,    -1,    94,
+    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    -1,
+    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   649,    46,   651,   652,  1358,    -1,    -1,    -1,    -1,
+    -1,    55,    -1,    57,    58,    -1,    -1,   949,    -1,    -1,
+     3,     4,     5,     6,     7,     8,     9,    -1,    14,    -1,
+    -1,    14,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,
+    -1,    -1,    -1,    -1,   692,    31,    32,   979,    34,    32,
+    -1,    -1,    -1,    -1,    37,   703,   704,    -1,   706,    42,
+    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,  1421,  1422,
+  1423,    -1,    55,    -1,    57,    58,     4,     5,    64,     7,
+     8,     9,    -1,   731,    -1,    -1,    14,    -1,    71,    -1,
+    -1,  1444,    -1,    -1,    -1,    -1,   744,    -1,    81,    -1,
+    -1,    29,    -1,    31,    32,    -1,    89,    -1,    91,    37,
+    -1,    94,    95,    -1,    -1,    -1,    -1,    -1,    46,    -1,
+    -1,    -1,    -1,  1055,  1056,    -1,  1058,    55,    -1,    57,
+    58,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,   125,
+    -1,    -1,   128,    -1,    -1,    -1,   132,   133,    -1,    -1,
+    -1,    -1,    -1,   139,    -1,   141,   142,   143,    -1,    -1,
+   146,   147,   148,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+  1102,  1103,  1104,  1105,  1106,    -1,    -1,    -1,  1110,    68,
+    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
+    79,    80,    81,    82,    83,    84,    85,    -1,    -1,    -1,
+  1132,  1133,  1134,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,
+     4,     5,     6,     7,     8,     9,    -1,   875,   876,   877,
+    14,  1163,    -1,    -1,   220,   221,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    33,
+    -1,    -1,    -1,    37,   240,    -1,    -1,    -1,    42,   907,
+   908,   909,    46,    47,    -1,    49,   914,    -1,    -1,    -1,
+    -1,    55,    -1,    57,    58,    -1,    -1,    61,    -1,    63,
+    -1,    -1,    -1,    -1,    -1,  1217,  1218,    71,  1220,    -1,
+    -1,    -1,    -1,   279,    -1,    -1,    -1,    81,    -1,    -1,
+    -1,   949,    -1,    -1,    -1,    89,    -1,    -1,    -1,     1,
+    94,    -1,     4,     5,    -1,    -1,     8,     9,    -1,  1251,
+    -1,  1253,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,   979,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,
+   326,    -1,   328,   329,    -1,    37,    -1,    39,    40,    -1,
+    -1,    -1,  1000,    -1,    46,    -1,    48,    -1,    -1,    -1,
+    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    60,   355,
+    -1,    -1,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,   379,    -1,    87,    88,    89,    -1,    -1,
+    92,    -1,    -1,    95,    -1,    -1,    -1,    -1,    -1,   395,
+    -1,    -1,    -1,   399,    -1,    -1,   402,    -1,    -1,    -1,
+   112,   407,    -1,    -1,    -1,    -1,  1358,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,  1082,    69,    70,    71,    72,    73,
     74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    -1,   582,   583,    -1,   585,    -1,    -1,   692,
-    -1,    -1,    -1,   592,    -1,    -1,    -1,  1209,    -1,    42,
-    -1,    -1,    -1,    -1,  1212,  1213,    -1,  1215,    -1,    -1,
-    -1,   610,    55,    -1,    57,    58,    -1,    -1,    61,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,  1238,    -1,    71,    -1,
-    -1,    54,   135,    -1,    -1,    -1,   139,    -1,    81,    -1,
-   143,    -1,  1254,    -1,     4,     5,    89,    -1,     8,     9,
-   649,    94,   651,   652,    14,   654,    79,   160,    -1,    82,
-    -1,    -1,    -1,    -1,  1276,    -1,    -1,    -1,    -1,    29,
-    -1,    31,    -1,    -1,   177,   178,   779,    37,    -1,    -1,
-   103,    -1,   105,    -1,    -1,    -1,    46,    -1,    48,    -1,
-    -1,  1303,    -1,   692,    -1,    55,    -1,    57,    58,    -1,
-    -1,    -1,    -1,    -1,   703,   704,    -1,   706,  1316,  1317,
-  1318,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    81,    -1,    -1,  1336,  1337,    -1,    -1,    -1,    -1,
-    -1,    91,    -1,  1345,    94,    95,    -1,   240,    -1,     3,
-     4,     5,     6,    -1,    -1,   744,    -1,    -1,    -1,   852,
-    -1,   854,    -1,    -1,   177,   178,   179,    -1,    -1,    -1,
-    -1,    -1,   865,    -1,   187,    -1,   869,   870,   767,   768,
-   769,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    42,    -1,
-   779,    -1,  1394,   206,    -1,    -1,  1394,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   907,   908,   229,    71,    -1,    -1,
-    -1,    -1,  1424,    -1,    -1,    -1,    -1,    81,    -1,    -1,
-   243,    -1,    -1,    -1,    -1,    89,  1434,  1435,  1436,    -1,
-    94,    -1,    -1,    -1,    -1,    -1,   339,     1,    -1,     3,
-     4,     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,
-    14,    -1,    -1,   852,    -1,   854,  1464,    -1,    -1,    -1,
-    -1,    -1,    -1,    27,    28,    29,   865,    31,    32,    33,
-   869,   870,   871,    37,    -1,    -1,    -1,    -1,    42,    -1,
-    -1,    45,    46,    47,    -1,    49,    -1,    -1,    -1,    -1,
-    -1,    55,    -1,    57,    58,    -1,   399,    61,    -1,   402,
-    -1,    -1,    -1,    -1,   407,    -1,    -1,    71,   907,   908,
-   909,   334,   335,    -1,    -1,    -1,     1,    81,     3,     4,
-     5,     6,     7,     8,     9,    89,    -1,    -1,    -1,    14,
-    94,    -1,    -1,   436,  1546,   438,   100,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    29,    -1,    31,    32,   451,    -1,
-   949,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,
-    -1,    46,    -1,    -1,    49,   388,    -1,   470,    -1,    -1,
-    55,    -1,    57,    58,    -1,    -1,    61,    -1,    -1,    -1,
-   979,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,  1102,
-  1103,  1104,  1105,    -1,    89,    -1,    -1,  1110,    -1,    94,
-    -1,    -1,    -1,   436,    -1,   438,    -1,   440,   441,   442,
-    -1,    -1,    -1,   446,  1127,  1128,    -1,    -1,   451,    -1,
-    -1,   454,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
-     3,     4,     5,     6,     7,     8,     9,    -1,    -1,    -1,
-    -1,    14,    -1,    -1,    -1,    -1,  1055,  1056,    -1,  1058,
-    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,
-    33,    -1,    -1,    -1,    37,    38,    -1,    -1,    -1,    42,
-    -1,    -1,    -1,    46,    47,    -1,    49,    -1,    -1,    -1,
-    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    61,    -1,
-    63,    -1,    -1,  1102,  1103,  1104,  1105,  1106,    71,  1212,
-  1213,  1110,  1215,    -1,    -1,    -1,    -1,    -1,    81,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,  1127,  1128,
-  1129,    94,     4,     5,    -1,    -1,    -1,     9,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   650,   111,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    14,    -1,  1158,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,
-    -1,    -1,   595,   596,    31,    32,    48,    34,    -1,    -1,
-    -1,    -1,    -1,    55,    -1,    57,    58,   610,    -1,    -1,
-    -1,    -1,    -1,   696,    -1,    -1,    -1,    -1,    -1,    71,
-   703,   704,    -1,   706,    -1,    -1,    -1,    64,    -1,    81,
-    -1,    -1,    32,  1212,  1213,    -1,  1215,    -1,    -1,    91,
-    -1,    -1,    94,    95,    -1,    -1,   649,    -1,   651,   652,
-    -1,    -1,    -1,    -1,   737,    -1,   739,    -1,    -1,    -1,
-    -1,   744,   745,   746,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85,   123,    -1,   125,   692,
-    -1,   128,    -1,    -1,    -1,   132,   133,    -1,    -1,    -1,
-   703,   704,   139,   706,   141,   142,   143,    -1,    -1,   146,
-   147,   148,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,
-     4,     5,     6,     7,     8,     9,    -1,    -1,   731,    -1,
-    14,    -1,    -1,    -1,    -1,    -1,    -1,  1316,    -1,  1318,
-    -1,   744,    -1,    27,    28,    29,    -1,    31,    32,    33,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,
-    -1,    45,    46,    47,    -1,    49,    -1,     3,     4,     5,
-     6,    55,    -1,    57,    58,     4,     5,    61,    -1,     8,
-     9,    -1,    -1,   220,   221,    14,    -1,    71,    -1,    -1,
-    -1,    -1,     3,     4,     5,     6,    -1,    81,     9,    -1,
-    29,    -1,    31,   240,    -1,    89,    42,    -1,    37,    -1,
-    94,    -1,    -1,    -1,    -1,  1394,   100,    46,    -1,    55,
-    -1,    57,    58,    -1,   907,   908,    55,    -1,    57,    58,
-    -1,    42,    -1,    -1,    -1,    71,    -1,    48,    -1,    -1,
-    -1,    -1,   279,    -1,    55,    81,    57,    58,    -1,    -1,
-    -1,    -1,    -1,    89,    -1,  1434,  1435,  1436,    94,    -1,
-    71,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,
-    81,    -1,   875,   876,   877,    -1,    -1,    -1,    89,    -1,
-    91,    -1,    -1,    94,    95,  1464,    -1,    -1,    -1,   326,
-    -1,   328,   329,    -1,    -1,    -1,   979,    -1,     4,     5,
-    -1,     7,     8,     9,   907,   908,   909,    -1,    14,    -1,
-    -1,   914,    -1,    -1,    -1,    -1,    -1,    -1,   355,    -1,
-    -1,    -1,    -1,    29,    -1,    31,    32,    -1,  1011,    -1,
-    -1,    37,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    46,    -1,   379,    49,    -1,    -1,   949,    -1,    -1,    55,
-    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,   395,    -1,
-    -1,    -1,   399,    -1,    -1,   402,    -1,    -1,    -1,    -1,
-   407,    -1,    -1,    -1,    -1,    -1,   979,    -1,    -1,    -1,
-    -1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
-    -1,    -1,    -1,    14,    -1,    -1,    -1,  1000,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    -1,
-    31,    32,    -1,    -1,    -1,    -1,    37,    -1,    -1,  1102,
-  1103,    42,    -1,    -1,    -1,    46,    -1,  1110,    -1,    -1,
-   467,    -1,   469,    -1,    55,    -1,    57,    58,    -1,    -1,
-    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,   494,    -1,    -1,
-    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
-    -1,    -1,    -1,    94,    -1,  1158,    -1,    -1,    -1,  1082,
-  1163,    -1,  1165,    -1,     3,     4,     5,     6,     7,     8,
-     9,    -1,    -1,    12,    -1,    14,    -1,    -1,    -1,  1102,
-  1103,  1104,  1105,  1106,    -1,  1108,    -1,  1110,    -1,    -1,
-    29,    -1,    31,    32,    -1,    -1,    -1,    -1,    37,    -1,
-    -1,    -1,    -1,    42,  1127,  1128,  1129,    46,    -1,  1212,
-  1213,   568,  1215,    -1,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,   579,   580,    -1,   582,   583,    -1,    -1,    -1,
-    -1,    -1,    71,    -1,    -1,  1158,    -1,    -1,    -1,    -1,
-    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    89,    -1,    -1,    -1,    -1,    94,    69,    70,    71,    72,
-    73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    -1,    -1,     1,    -1,     3,     4,     5,
-     6,     7,     8,     9,   641,    -1,    12,    -1,    14,  1212,
-  1213,    -1,  1215,    -1,    -1,    -1,   653,    -1,    -1,    25,
-    -1,    27,    28,    -1,    -1,    -1,    32,    -1,    -1,    -1,
-    -1,    37,    -1,    -1,  1317,   672,    42,    -1,    -1,    -1,
-    46,    -1,    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,
-    -1,    57,    58,    59,    60,    61,    -1,    63,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-    -1,    87,    88,    89,    -1,    91,    92,    93,    94,    95,
-    96,    -1,    98,    99,   731,    -1,    -1,   734,   104,    -1,
-    -1,    -1,    -1,   109,   110,   111,    -1,   113,    -1,    -1,
-    -1,    -1,    -1,  1316,    -1,  1318,     1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
-   767,   768,   769,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,   779,    -1,    29,    30,    31,    32,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,  1394,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    91,    -1,    -1,    94,
-    95,    -1,    -1,    98,    -1,   852,    -1,   854,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,   865,    -1,
-    -1,  1434,  1435,  1436,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
-    15,  1464,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,
-    -1,    -1,    -1,    68,     1,    -1,    71,     4,     5,    -1,
-    -1,     8,     9,    -1,    79,    80,    81,    14,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,   974,    -1,    94,
-    -1,    96,    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,
-    37,    -1,    39,    40,    -1,    -1,   111,   112,    -1,    46,
-    -1,    48,    -1,    -1,  1001,    -1,    -1,    -1,    55,    -1,
-    57,    58,    -1,    60,    -1,    -1,    -1,    64,    65,    66,
+    84,    85,    -1,    -1,  1102,  1103,  1104,  1105,  1106,    -1,
+  1108,    -1,  1110,    71,    72,    73,    74,    75,    76,    77,
+    78,    79,    80,    81,    82,    83,    84,    85,    -1,    -1,
+    -1,   467,    -1,   469,  1132,  1133,  1134,    -1,    -1,  1421,
+  1422,  1423,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
+     5,     6,     7,     8,     9,    -1,    -1,    12,   494,    14,
+    -1,    -1,  1444,    -1,    -1,  1163,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    -1,    -1,
+    -1,    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    55,    -1,    57,    58,     1,    -1,     3,     4,     5,     6,
+     7,     8,     9,    -1,    -1,    12,    71,    14,    -1,  1217,
+  1218,    -1,  1220,    -1,    -1,    -1,    81,    -1,    25,    -1,
+    27,    28,   568,    -1,    89,    32,    -1,    -1,    -1,    94,
+    37,    -1,    -1,   579,   580,    42,   582,   583,    -1,    46,
+    -1,    48,    -1,  1251,    -1,  1253,    -1,    -1,    55,    -1,
+    57,    58,    59,    60,    61,    -1,    63,    64,    65,    66,
     67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-    77,    78,    79,    80,    81,    82,    83,    84,    -1,    -1,
-    87,    88,    89,    -1,    -1,    92,    -1,    -1,    95,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1055,  1056,
-    -1,  1058,    -1,    -1,     1,   112,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    -1,    13,    14,    15,    -1,
-    17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-    27,    28,    29,    30,    31,    32,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,  1116,
-    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,  1143,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,    96,
-    -1,    -1,    -1,    -1,  1161,    -1,  1163,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,     1,   112,     3,     4,     5,     6,
-     7,     8,     9,    10,    11,    12,    13,    14,    72,    73,
-    74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-    84,    85,    29,    30,    31,    32,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    48,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    91,    -1,    -1,    94,    95,    -1,
-     1,    98,     3,     4,     5,     6,     7,     8,     9,    10,
-    11,    12,    13,    14,    -1,   112,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,    -1,    94,    -1,    -1,    -1,    98,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
-     1,   112,     3,     4,     5,     6,     7,     8,     9,    10,
-    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    -1,
+    87,    88,    89,    -1,    91,    92,    93,    94,    95,    96,
+    -1,    98,    99,    -1,    -1,   641,    -1,   104,    -1,    -1,
+    -1,    -1,   109,   110,   111,    -1,   113,   653,    -1,    -1,
+     1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
+     4,     5,    -1,    14,     8,     9,   672,    -1,    -1,    -1,
+    14,    -1,    -1,    -1,    -1,    -1,    27,    28,    29,    -1,
+    31,    32,    33,    -1,    -1,    29,    37,    31,    -1,    -1,
+  1358,    42,    -1,    37,    45,    46,    47,    -1,    49,    -1,
+    -1,    -1,    46,    -1,    55,    -1,    57,    58,    -1,    -1,
+    61,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
+    71,    -1,    -1,    -1,    -1,   731,    -1,    -1,   734,    -1,
+    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
+    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,   100,
+    -1,    -1,    -1,  1421,  1422,  1423,    -1,    -1,    -1,    -1,
+    -1,   767,   768,   769,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,   779,    -1,     1,  1444,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+    -1,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,   852,    -1,   854,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,   865,
+    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,
+    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,   111,   112,     1,    -1,     3,
+     4,     5,     6,     7,     8,     9,    10,    11,    -1,    13,
+    14,    15,    -1,    17,    18,    19,    20,    21,    22,    23,
+    24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,
+    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    79,    80,    81,   974,    -1,
+    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,
+    94,     1,    96,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,    14,  1001,    -1,    -1,   112,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
+    30,    31,    32,    33,    -1,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,  1055,
+  1056,    71,  1058,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+    -1,    91,    -1,    -1,    94,    95,    -1,     1,    98,     3,
+     4,     5,     6,     7,     8,     9,    10,    11,    12,    13,
+    14,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    32,    33,
+  1116,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    44,    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
+    -1,    -1,  1148,    -1,    68,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
+  1166,    -1,  1168,    87,    88,    89,    -1,    91,    -1,    -1,
+    94,    95,    -1,     1,    98,     3,     4,     5,     6,     7,
+     8,     9,    10,    11,    12,    13,    14,    -1,   112,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    29,    30,    31,    32,    33,    -1,    35,    36,    37,
+    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
+    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
+    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
+    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
+    88,    89,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,
+    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   110,     1,   112,     3,     4,     5,     6,     7,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    29,    30,    31,    32,    33,    -1,    35,    36,    37,
+    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
+    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
+    58,    59,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,
+    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
+    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,
+     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
+    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    95,
+     1,    -1,     3,     4,     5,     6,    -1,     8,     9,    10,
+    11,    -1,    13,    14,    -1,   111,   112,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
-    31,    32,    33,    -1,    35,    36,    37,    -1,    39,    40,
+    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
     41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
     51,    52,    53,    54,    55,    -1,    57,    58,    59,    -1,
-    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
     71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
     81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,     1,    94,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    94,    95,     1,    -1,     3,     4,     5,
+     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
     -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,    -1,    94,    95,     1,    -1,     3,
+    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
+    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,   111,   112,    -1,    -1,    -1,    -1,    -1,    -1,
+    14,    -1,    -1,    -1,    -1,   111,   112,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
     -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
     44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
     54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
     -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
-    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,
-    94,    95,     1,    -1,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,   112,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,     6,
-    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
-    -1,    -1,   111,   112,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,
-     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
-    -1,    -1,    -1,    -1,   111,   112,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,
-    -1,    -1,     1,    -1,     3,     4,     5,     6,   103,     8,
-     9,    10,    11,    -1,    13,    14,    -1,   112,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,     6,
-    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
-    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,
-     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
-    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    -1,    -1,    -1,    62,    63,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,
-     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
-    13,    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,
-    33,    -1,    35,    36,    37,    -1,    39,    40,    41,    42,
-    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,
-    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
-    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
-     1,    94,     3,     4,     5,     6,    -1,     8,     9,    10,
-    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,   112,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
-    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,     1,    94,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
-    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,     6,
-    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
-    -1,   110,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,
-     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
-    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,
-     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
-    13,    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,
-    33,    -1,    35,    36,    37,    -1,    39,    40,    41,    42,
-    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,
-    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
-    -1,    -1,    -1,    -1,    87,    88,    89,     3,     4,     5,
-     6,    94,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
+    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,
+    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,   111,   112,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
+    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    -1,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+    -1,    -1,    94,    -1,    -1,     1,    -1,     3,     4,     5,
+     6,   103,     8,     9,    10,    11,    -1,    13,    14,    -1,
+   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    59,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
+    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,
+     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
+    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
+    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    59,    -1,    -1,    62,    -1,
+    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
+    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,
+    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
+    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
+    62,    63,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+    -1,     1,    94,     3,     4,     5,     6,    -1,     8,     9,
+    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
+   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
+    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    59,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+    -1,    -1,    -1,     1,    94,     3,     4,     5,     6,    -1,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
+    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
+    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
+    58,    -1,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,
+    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
+    88,    89,    -1,    -1,    -1,     1,    94,     3,     4,     5,
+     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,
     36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
     46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
     -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
     -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    -1,   112,   113,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
-    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,
-    -1,    96,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   111,   112,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
-    15,    -1,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    33,    -1,
-    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,
-    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
-    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,
-    -1,    96,    -1,    -1,     3,     4,     5,     6,     7,     8,
-     9,    10,    11,    -1,    13,    14,    15,   112,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
-    29,    30,    31,    32,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,    -1,    94,    -1,    96,    -1,    -1,
-     3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
-    13,    14,    15,   112,    17,    18,    19,    20,    21,    22,
-    23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
+    -1,    87,    88,    89,    -1,    -1,    -1,     1,    94,     3,
+     4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
+    14,    -1,    -1,    -1,   110,    -1,   112,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
+    -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
+    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,
+    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
+    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,     1,
+    94,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
+    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,   112,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,
+    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+    -1,     1,    94,     3,     4,     5,     6,    -1,     8,     9,
+    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,
+   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
+    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+     3,     4,     5,     6,    94,     8,     9,    10,    11,    -1,
+    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,   112,    -1,    -1,    -1,    29,    30,    31,    -1,
     33,    -1,    35,    36,    37,    -1,    39,    40,    41,    42,
     43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    -1,    -1,    61,    62,
-    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
-    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
-    -1,    94,    -1,    96,     3,     4,     5,     6,     7,     8,
-     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,   112,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    48,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
-    89,    -1,    91,    -1,    -1,    94,    95,    -1,    -1,    98,
-     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
-    13,    14,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,    31,    32,
-    33,    -1,    35,    36,    37,    -1,    39,    40,    41,    42,
-    43,    44,    -1,    46,    -1,    48,    -1,    50,    51,    52,
     53,    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,
     -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,
-    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    91,    -1,
-    -1,    94,    95,    -1,    -1,    98,     3,     4,     5,     6,
-    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,   112,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,
-    37,    -1,    39,    40,    41,    42,    43,    44,    -1,    46,
-    -1,    48,    -1,    50,    51,    52,    53,    54,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,
-    87,    88,    89,    -1,    91,    -1,    -1,    94,    95,     3,
+    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,    -1,
+    -1,    94,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,
+   113,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    -1,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+    32,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    61,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+    -1,    -1,    94,    -1,    96,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
+   112,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    -1,    13,    14,    15,    -1,    17,    18,    19,    20,    21,
+    22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
+    32,    33,    -1,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,
+    52,    53,    54,    55,    -1,    57,    58,    59,    -1,    61,
+    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,    71,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,    81,
+    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,    -1,
+    -1,    -1,    94,    -1,    96,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+   112,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    59,    -1,    61,    62,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
+    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,
+    96,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    -1,    13,    14,    15,   112,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+    30,    31,    32,    33,    -1,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
+    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+    -1,    -1,    -1,    -1,    94,    -1,    96,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    12,    13,    14,    -1,
+    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    48,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
+    -1,    87,    88,    89,    -1,    91,    -1,    -1,    94,    95,
+    -1,    -1,    98,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    12,    13,    14,    -1,   112,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,
+    30,    31,    32,    33,    -1,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,
+    50,    51,    52,    53,    54,    55,    -1,    57,    58,    -1,
+    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,
+    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,
+    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,
+    -1,    91,    -1,    -1,    94,    95,    -1,    -1,    98,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,
+    14,    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
     -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
     44,    -1,    46,    -1,    48,    -1,    50,    51,    52,    53,
@@ -3314,18 +3304,36 @@ static const short yycheck[] = {     4,
     11,    -1,    13,    14,    -1,    -1,    -1,    -1,   112,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    29,    30,
     31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
+    41,    42,    43,    44,    -1,    46,    -1,    48,    -1,    50,
     51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    61,    62,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
     71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
     81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,    -1,    94,     3,     4,     5,     6,     7,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
+    91,    -1,    -1,    94,    95,     3,     4,     5,     6,    -1,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
     -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    29,    30,    31,    32,    33,    -1,    35,    36,    37,    -1,
+    -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
+    -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
+    -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
+    58,    -1,    -1,    61,    62,    -1,    -1,    -1,    -1,    -1,
+    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
+    88,    89,    -1,    -1,    -1,    -1,    94,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    29,    30,    31,    32,    33,    -1,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
+    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
+    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
+    -1,    87,    88,    89,     3,     4,     5,     6,    94,     8,
+     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
+    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
     39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
     -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
+    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    68,
     -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,    88,
     89,     3,     4,     5,     6,    94,     8,     9,    10,    11,
@@ -3342,7 +3350,7 @@ static const short yycheck[] = {     4,
    112,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
     35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
     -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,
+    55,    -1,    57,    58,    59,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
     -1,    -1,    87,    88,    89,     3,     4,     5,     6,    94,
@@ -3351,21 +3359,21 @@ static const short yycheck[] = {     4,
     -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
     -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
     -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
-    58,    59,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    79,    80,    81,    -1,    -1,    -1,    -1,    -1,    87,
-    88,    89,     3,     4,     5,     6,    94,     8,     9,    10,
-    11,    -1,    13,    14,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    29,    30,
-    31,    -1,    33,    -1,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    -1,    46,    -1,    -1,    -1,    50,
-    51,    52,    53,    54,    55,    -1,    57,    58,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,    -1,    -1,
-    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    80,
-    81,    -1,    -1,    -1,    -1,    -1,    87,    88,    89,    -1,
-    -1,    -1,    -1,    94,    95,     3,     4,     5,     6,    -1,
+    88,    89,    -1,    -1,    -1,    -1,    94,    95,     3,     4,
+     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
+    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    29,    30,    31,    -1,    33,    -1,
+    35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
+    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,    54,
+    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,    -1,
+    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,
+    -1,    -1,    87,    88,    89,     3,     4,     5,     6,    94,
      8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-    -1,   112,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,
     -1,    29,    30,    31,    -1,    33,    -1,    35,    36,    37,
     -1,    39,    40,    41,    42,    43,    44,    -1,    46,    -1,
     -1,    -1,    50,    51,    52,    53,    54,    55,    -1,    57,
@@ -3386,7 +3394,7 @@ static const short yycheck[] = {     4,
     -1,   112,    -1,    -1,    -1,    29,    30,    31,    -1,    33,
     -1,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
     44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
-    54,    55,    -1,    57,    58,    -1,    -1,    -1,    62,    -1,
+    54,    55,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
     -1,    -1,    -1,    87,    88,    89,     3,     4,     5,     6,
@@ -3422,74 +3430,71 @@ static const short yycheck[] = {     4,
     36,    37,    -1,    39,    40,    41,    42,    43,    44,    -1,
     46,    -1,    -1,    -1,    50,    51,    52,    53,    54,    55,
     -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    79,    80,    81,    -1,    -1,    -1,    -1,
-    -1,    87,    88,    89,     3,     4,     5,     6,    94,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,   112,    -1,    -1,    -1,
-    29,    30,    31,    -1,    33,    -1,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    -1,
-    -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    68,
-    -1,    -1,    71,     3,     4,     5,     6,     7,     8,     9,
-    79,    80,    81,    -1,    14,    -1,    -1,    -1,    87,    88,
-    89,    -1,    -1,    -1,    -1,    94,    -1,    -1,    -1,    29,
-    -1,    31,    32,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-    -1,    -1,    42,   112,    -1,    -1,    46,    -1,     3,     4,
-     5,     6,     7,     8,     9,    55,    -1,    57,    58,    14,
-    -1,    -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    71,    -1,    -1,    29,    -1,    31,    32,    -1,    -1,
-    -1,    81,    37,    -1,    -1,    -1,    -1,    42,    -1,    89,
-    -1,    46,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,    -1,    -1,    61,     3,     4,     5,
-     6,     7,     8,     9,    -1,    -1,    71,    -1,    14,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,    -1,    29,    89,    31,    32,    -1,    -1,    94,
+    -1,    -1,    68,    -1,     1,    71,     3,     4,     5,     6,
+     7,     8,     9,    79,    80,    81,    -1,    14,    -1,    -1,
+    -1,    87,    88,    89,    -1,    -1,    -1,    -1,    94,    -1,
+    -1,    -1,    29,    -1,    31,    32,    -1,    -1,    -1,    -1,
+    37,    -1,    -1,    -1,    -1,    42,   112,    -1,    -1,    46,
+    -1,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    61,     3,     4,     5,     6,     7,
+     8,     9,    -1,    -1,    71,    -1,    14,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
+    -1,    29,    89,    31,    32,    -1,    -1,    94,    -1,    37,
+    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,
+    48,    -1,    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,
+    58,     3,     4,     5,     6,     7,     8,     9,    -1,    -1,
+    -1,    -1,    14,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    81,    -1,    -1,    -1,    29,    -1,    31,
+    32,    89,    -1,    91,    -1,    37,    94,    95,    -1,    -1,
+    42,    -1,    -1,    -1,    46,    -1,     3,     4,     5,     6,
+     7,     8,     9,    55,    -1,    57,    58,    14,    -1,    61,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,
+    -1,    -1,    29,    -1,    31,    32,    -1,    -1,    -1,    81,
+    37,    -1,    -1,    -1,    -1,    42,    -1,    89,    -1,    46,
+    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    -1,    -1,    63,     3,     4,     5,
+     6,     7,     8,     9,    71,    -1,    -1,    -1,    14,    -1,
+    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    89,    29,    -1,    31,    32,    94,    -1,    -1,
     -1,    37,    -1,    -1,    -1,    -1,    42,    -1,    -1,    -1,
     46,    -1,     3,     4,     5,     6,     7,     8,     9,    55,
-    -1,    57,    58,    14,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,     4,     5,    -1,    71,     8,     9,    29,    -1,
-    31,    32,    14,    -1,    -1,    81,    37,    -1,    -1,    -1,
+    -1,    57,    58,    14,    -1,    61,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    29,    -1,
+    31,    32,    -1,    -1,    -1,    81,    37,    -1,    -1,    -1,
     -1,    42,    -1,    89,    -1,    46,    -1,    -1,    94,    -1,
-    -1,    -1,    -1,    -1,    55,    37,    57,    58,    -1,    -1,
-    -1,    -1,    -1,    12,    46,    -1,    48,    -1,    -1,    -1,
-    71,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,    -1,
-    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    71,
-    -1,    -1,    -1,    94,    -1,    -1,    -1,    -1,    -1,    81,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    91,
-    -1,    -1,    94,    95,    63,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,     4,     5,    -1,
-     7,     8,     9,    -1,    -1,    12,    -1,    14,    -1,    -1,
-     4,     5,    -1,     7,     8,     9,    -1,    -1,    -1,    -1,
-    14,    -1,    29,    -1,    31,    32,    -1,    -1,    -1,    -1,
-    37,    -1,    -1,    -1,    -1,    29,    -1,    31,    32,    46,
-    -1,    -1,    -1,    37,    -1,    -1,    -1,    -1,    55,    -1,
-    57,    58,    46,    -1,    -1,     4,     5,    -1,    -1,     8,
-     9,    55,    -1,    57,    58,    14,    -1,    -1,     4,     5,
-    -1,    -1,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,
-    29,    -1,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,
-    -1,    -1,    -1,    29,    -1,    31,    -1,    46,    -1,    -1,
-    -1,    37,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
-    46,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
-    -1,    57,    58,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    64,    65,    66,    67,    68,
-    69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-    79,    80,    81,    82,    83,    84,    85,    -1,    -1,    -1,
-    -1,    -1,   113,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,
-   109,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+    -1,    -1,    -1,    -1,    55,    -1,    57,    58,     3,     4,
+     5,     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,
+    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    81,    -1,    -1,    -1,    29,    -1,    31,    32,    89,    -1,
+    -1,    -1,    37,    94,    -1,    -1,    -1,    42,    -1,    -1,
+    -1,    46,    -1,     3,     4,     5,     6,     7,     8,     9,
+    55,    -1,    57,    58,    14,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
+    -1,    -1,    32,    -1,    -1,    -1,    81,    37,    -1,    -1,
+    -1,    -1,    42,    -1,    89,    12,    46,    -1,    48,    94,
+    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    71,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    81,    -1,    -1,    -1,    -1,    -1,    32,    -1,    89,
+    -1,    -1,    -1,    -1,    94,    -1,    63,    64,    65,    66,
+    67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
+    77,    78,    79,    80,    81,    82,    83,    84,    85,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    64,    65,    66,    67,    68,    69,    70,    71,    72,
     73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-    83,    84,    85,    63,    64,    65,    66,    67,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85,    64,    65,    66,    67,
-    68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-    78,    79,    80,    81,    82,    83,    84,    85,    64,    65,
-    66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
-    -1,    77,    78,    79,    80,    81,    82,    83,    84,    85,
+    83,    84,    85,    64,    65,    66,    67,    68,    69,    70,
     71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85
+    81,    82,    83,    84,    85,    -1,    -1,    -1,    -1,    -1,
+   113,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    60,    -1,    -1,   109,    64,
+    65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
+    75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+    85,    63,    64,    65,    66,    67,    68,    69,    70,    71,
+    72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
+    82,    83,    84,    85,    64,    65,    66,    67,    68,    69,
+    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
+    80,    81,    82,    83,    84,    85
 };
 /* -*-C-*-  Note some compilers choke on comments on `#line' lines.  */
 #line 3 "/usr/lib/bison.simple"
@@ -4717,7 +4722,7 @@ case 170:
     break;}
 case 171:
 #line 1005 "parse.y"
-{ yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
+{ yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 172:
 #line 1010 "parse.y"
@@ -4727,7 +4732,7 @@ case 172:
     break;}
 case 173:
 #line 1014 "parse.y"
-{ yyval.ttype = condition_conversion (yyvsp[-1].ttype); ;
+{ yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 174:
 #line 1019 "parse.y"
@@ -4773,72 +4778,57 @@ case 178:
     break;}
 case 184:
 #line 1065 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (COMPOUND_STMT, NULL_TREE);
-                     COMPOUND_STMT_NO_SCOPE (yyval.ttype) = 1;
-                     add_tree (yyval.ttype);
-                   }
-               ;
+{ yyval.ttype = begin_compound_stmt (1); ;
     break;}
 case 185:
-#line 1074 "parse.y"
-{ 
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-1].ttype, 0) = TREE_CHAIN (yyvsp[-1].ttype);
-                     TREE_CHAIN (yyvsp[-1].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-1].ttype;
-                   }
-                 finish_stmt (); 
-               ;
+#line 1067 "parse.y"
+{ finish_compound_stmt (1, yyvsp[-1].ttype); ;
     break;}
 case 187:
-#line 1089 "parse.y"
+#line 1074 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 188:
-#line 1092 "parse.y"
+#line 1077 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
 case 189:
-#line 1095 "parse.y"
+#line 1080 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 190:
-#line 1097 "parse.y"
+#line 1082 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
 case 191:
-#line 1102 "parse.y"
+#line 1087 "parse.y"
 { yyval.ttype = build_expr_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 193:
-#line 1108 "parse.y"
+#line 1093 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 194:
-#line 1111 "parse.y"
+#line 1096 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
 case 195:
-#line 1114 "parse.y"
+#line 1099 "parse.y"
 { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
     break;}
 case 196:
-#line 1116 "parse.y"
+#line 1101 "parse.y"
 { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
 case 197:
-#line 1118 "parse.y"
+#line 1103 "parse.y"
 { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 198:
-#line 1120 "parse.y"
+#line 1105 "parse.y"
 { yyval.ttype = build_x_unary_op (yyvsp[-1].code, yyvsp[0].ttype);
                  if (yyvsp[-1].code == NEGATE_EXPR && TREE_CODE (yyvsp[0].ttype) == INTEGER_CST)
                    TREE_NEGATED_INT (yyval.ttype) = 1;
@@ -4846,7 +4836,7 @@ case 198:
                ;
     break;}
 case 199:
-#line 1127 "parse.y"
+#line 1112 "parse.y"
 { tree label = lookup_label (yyvsp[0].ttype);
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids `&&'");
@@ -4861,115 +4851,115 @@ case 199:
                ;
     break;}
 case 200:
-#line 1140 "parse.y"
+#line 1125 "parse.y"
 { yyval.ttype = expr_sizeof (yyvsp[0].ttype); ;
     break;}
 case 201:
-#line 1142 "parse.y"
+#line 1127 "parse.y"
 { yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t)); ;
     break;}
 case 202:
-#line 1144 "parse.y"
+#line 1129 "parse.y"
 { yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
     break;}
 case 203:
-#line 1146 "parse.y"
+#line 1131 "parse.y"
 { yyval.ttype = c_alignof (groktypename (yyvsp[-1].ftype.t)); 
                  check_for_new_type ("alignof", yyvsp[-1].ftype); ;
     break;}
 case 204:
-#line 1152 "parse.y"
+#line 1137 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-1].itype); 
                  check_for_new_type ("new", yyvsp[0].ftype); ;
     break;}
 case 205:
-#line 1155 "parse.y"
+#line 1140 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-2].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 206:
-#line 1158 "parse.y"
+#line 1143 "parse.y"
 { yyval.ttype = build_new (yyvsp[-1].ttype, yyvsp[0].ftype.t, NULL_TREE, yyvsp[-2].itype); 
                  check_for_new_type ("new", yyvsp[0].ftype); ;
     break;}
 case 207:
-#line 1161 "parse.y"
+#line 1146 "parse.y"
 { yyval.ttype = build_new (yyvsp[-2].ttype, yyvsp[-1].ftype.t, yyvsp[0].ttype, yyvsp[-3].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 208:
-#line 1164 "parse.y"
+#line 1149 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ftype.t),
                                  NULL_TREE, yyvsp[-3].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 209:
-#line 1168 "parse.y"
+#line 1153 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-4].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
 case 210:
-#line 1171 "parse.y"
+#line 1156 "parse.y"
 { yyval.ttype = build_new (yyvsp[-3].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-4].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 211:
-#line 1174 "parse.y"
+#line 1159 "parse.y"
 { yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
 case 212:
-#line 1178 "parse.y"
+#line 1163 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
     break;}
 case 213:
-#line 1180 "parse.y"
+#line 1165 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
 case 214:
-#line 1184 "parse.y"
+#line 1169 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
 case 215:
-#line 1188 "parse.y"
+#line 1173 "parse.y"
 { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ;
     break;}
 case 216:
-#line 1190 "parse.y"
+#line 1175 "parse.y"
 { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ;
     break;}
 case 217:
-#line 1195 "parse.y"
+#line 1180 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 218:
-#line 1197 "parse.y"
+#line 1182 "parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype; 
                  pedwarn ("old style placement syntax, use () instead");
                ;
     break;}
 case 219:
-#line 1205 "parse.y"
+#line 1190 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 220:
-#line 1207 "parse.y"
+#line 1192 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 221:
-#line 1209 "parse.y"
+#line 1194 "parse.y"
 {
                  cp_error ("`%T' is not a valid expression", yyvsp[-1].ftype.t);
                  yyval.ttype = error_mark_node;
                ;
     break;}
 case 222:
-#line 1217 "parse.y"
+#line 1202 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids initialization of new expression with `='");
@@ -4981,25 +4971,25 @@ case 222:
                ;
     break;}
 case 223:
-#line 1231 "parse.y"
+#line 1216 "parse.y"
 { yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
                  TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
                  yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", yyvsp[-1].ftype); ;
     break;}
 case 224:
-#line 1236 "parse.y"
+#line 1221 "parse.y"
 { yyvsp[-1].ftype.t = tree_cons (NULL_TREE, yyvsp[-1].ftype.t, void_list_node);
                  TREE_PARMLIST (yyvsp[-1].ftype.t) = 1;
                  yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-1].ftype.t, NULL_TREE, NULL_TREE);
                  check_for_new_type ("cast", yyvsp[-1].ftype); ;
     break;}
 case 226:
-#line 1245 "parse.y"
+#line 1230 "parse.y"
 { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 227:
-#line 1247 "parse.y"
+#line 1232 "parse.y"
 { 
                  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
                                        nreverse (yyvsp[-2].ttype)); 
@@ -5012,157 +5002,157 @@ case 227:
                ;
     break;}
 case 229:
-#line 1263 "parse.y"
+#line 1248 "parse.y"
 { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 230:
-#line 1265 "parse.y"
+#line 1250 "parse.y"
 { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 231:
-#line 1267 "parse.y"
+#line 1252 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 232:
-#line 1269 "parse.y"
+#line 1254 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 233:
-#line 1271 "parse.y"
+#line 1256 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 234:
-#line 1273 "parse.y"
+#line 1258 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 235:
-#line 1275 "parse.y"
+#line 1260 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 236:
-#line 1277 "parse.y"
+#line 1262 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 237:
-#line 1279 "parse.y"
+#line 1264 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 238:
-#line 1281 "parse.y"
+#line 1266 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 239:
-#line 1283 "parse.y"
+#line 1268 "parse.y"
 { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 240:
-#line 1285 "parse.y"
+#line 1270 "parse.y"
 { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 241:
-#line 1287 "parse.y"
+#line 1272 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 242:
-#line 1289 "parse.y"
+#line 1274 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 243:
-#line 1291 "parse.y"
+#line 1276 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 244:
-#line 1293 "parse.y"
+#line 1278 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 245:
-#line 1295 "parse.y"
+#line 1280 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 246:
-#line 1297 "parse.y"
+#line 1282 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 247:
-#line 1299 "parse.y"
+#line 1284 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 248:
-#line 1301 "parse.y"
+#line 1286 "parse.y"
 { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 249:
-#line 1303 "parse.y"
+#line 1288 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, NOP_EXPR, yyvsp[0].ttype);
                  if (yyval.ttype != error_mark_node)
                     C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
     break;}
 case 250:
-#line 1307 "parse.y"
+#line 1292 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
     break;}
 case 251:
-#line 1309 "parse.y"
+#line 1294 "parse.y"
 { yyval.ttype = build_throw (NULL_TREE); ;
     break;}
 case 252:
-#line 1311 "parse.y"
+#line 1296 "parse.y"
 { yyval.ttype = build_throw (yyvsp[0].ttype); ;
     break;}
 case 253:
-#line 1329 "parse.y"
+#line 1314 "parse.y"
 { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 259:
-#line 1338 "parse.y"
+#line 1323 "parse.y"
 { yyval.ttype = do_identifier (yyvsp[-1].ttype, 1); ;
     break;}
 case 260:
-#line 1342 "parse.y"
+#line 1327 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 261:
-#line 1344 "parse.y"
+#line 1329 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 262:
-#line 1349 "parse.y"
+#line 1334 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 263:
-#line 1351 "parse.y"
+#line 1336 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 264:
-#line 1354 "parse.y"
+#line 1339 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 269:
-#line 1366 "parse.y"
+#line 1351 "parse.y"
 { yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
     break;}
 case 270:
-#line 1368 "parse.y"
+#line 1353 "parse.y"
 { yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
 case 271:
-#line 1370 "parse.y"
+#line 1355 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 272:
-#line 1375 "parse.y"
+#line 1360 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 273:
-#line 1377 "parse.y"
+#line 1362 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 277:
-#line 1385 "parse.y"
+#line 1370 "parse.y"
 { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
     break;}
 case 278:
-#line 1390 "parse.y"
+#line 1375 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == BIT_NOT_EXPR)
                    yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyval.ttype, 0));
@@ -5171,7 +5161,7 @@ case 278:
                ;
     break;}
 case 281:
-#line 1399 "parse.y"
+#line 1384 "parse.y"
 {
                  if (processing_template_decl)
                    push_obstacks (&permanent_obstack, &permanent_obstack);
@@ -5181,7 +5171,7 @@ case 281:
                ;
     break;}
 case 282:
-#line 1407 "parse.y"
+#line 1392 "parse.y"
 { char class;
                  yyval.ttype = yyvsp[-1].ttype;
                  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
@@ -5191,7 +5181,7 @@ case 282:
                    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
     break;}
 case 283:
-#line 1415 "parse.y"
+#line 1400 "parse.y"
 { char class;
                  yyval.ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype);
                  class = TREE_CODE_CLASS (TREE_CODE (yyval.ttype));
@@ -5201,11 +5191,11 @@ case 283:
                    C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
     break;}
 case 284:
-#line 1423 "parse.y"
+#line 1408 "parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
 case 285:
-#line 1425 "parse.y"
+#line 1410 "parse.y"
 { if (current_function_decl == 0)
                    {
                      error ("braced-group within expression allowed only inside a function");
@@ -5219,7 +5209,7 @@ case 285:
                ;
     break;}
 case 286:
-#line 1437 "parse.y"
+#line 1422 "parse.y"
 { tree rtl_exp;
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids braced-groups within expressions");
@@ -5251,7 +5241,7 @@ case 286:
                ;
     break;}
 case 287:
-#line 1467 "parse.y"
+#line 1452 "parse.y"
 {
                   yyval.ttype = build_x_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype, current_class_ref); 
                   if (TREE_CODE (yyval.ttype) == CALL_EXPR
@@ -5260,7 +5250,7 @@ case 287:
                 ;
     break;}
 case 288:
-#line 1474 "parse.y"
+#line 1459 "parse.y"
 {
                  yyval.ttype = build_x_function_call (yyval.ttype, NULL_TREE, current_class_ref);
                  if (TREE_CODE (yyval.ttype) == CALL_EXPR
@@ -5269,11 +5259,11 @@ case 288:
                 ;
     break;}
 case 289:
-#line 1481 "parse.y"
+#line 1466 "parse.y"
 { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 290:
-#line 1483 "parse.y"
+#line 1468 "parse.y"
 { /* If we get an OFFSET_REF, turn it into what it really
                     means (e.g., a COMPONENT_REF).  This way if we've got,
                     say, a reference to a static member that's being operated
@@ -5284,13 +5274,13 @@ case 290:
                  yyval.ttype = build_x_unary_op (POSTINCREMENT_EXPR, yyval.ttype); ;
     break;}
 case 291:
-#line 1492 "parse.y"
+#line 1477 "parse.y"
 { if (TREE_CODE (yyval.ttype) == OFFSET_REF)
                    yyval.ttype = resolve_offset_ref (yyval.ttype);
                  yyval.ttype = build_x_unary_op (POSTDECREMENT_EXPR, yyval.ttype); ;
     break;}
 case 292:
-#line 1497 "parse.y"
+#line 1482 "parse.y"
 { if (current_class_ptr)
                    {
 #ifdef WARNING_ABOUT_CCD
@@ -5315,7 +5305,7 @@ case 292:
                ;
     break;}
 case 293:
-#line 1520 "parse.y"
+#line 1505 "parse.y"
 {
                  tree type = NULL_TREE;
                  tree id = yyval.ttype;
@@ -5361,45 +5351,45 @@ case 293:
                ;
     break;}
 case 295:
-#line 1565 "parse.y"
+#line 1550 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("dynamic_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_dynamic_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 296:
-#line 1569 "parse.y"
+#line 1554 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("static_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_static_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 297:
-#line 1573 "parse.y"
+#line 1558 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("reinterpret_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_reinterpret_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 298:
-#line 1577 "parse.y"
+#line 1562 "parse.y"
 { tree type = groktypename (yyvsp[-4].ftype.t);
                  check_for_new_type ("const_cast", yyvsp[-4].ftype);
                  yyval.ttype = build_const_cast (type, yyvsp[-1].ttype); ;
     break;}
 case 299:
-#line 1581 "parse.y"
+#line 1566 "parse.y"
 { yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ;
     break;}
 case 300:
-#line 1583 "parse.y"
+#line 1568 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
                  check_for_new_type ("typeid", yyvsp[-1].ftype);
                  yyval.ttype = get_typeid (TYPE_MAIN_VARIANT (type)); ;
     break;}
 case 301:
-#line 1587 "parse.y"
+#line 1572 "parse.y"
 { yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ;
     break;}
 case 302:
-#line 1589 "parse.y"
+#line 1574 "parse.y"
 {
                  got_scope = NULL_TREE;
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
@@ -5409,18 +5399,18 @@ case 302:
                ;
     break;}
 case 303:
-#line 1597 "parse.y"
+#line 1582 "parse.y"
 { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
     break;}
 case 304:
-#line 1599 "parse.y"
+#line 1584 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-3].ttype), yyvsp[-1].ttype, NULL_TREE);
                  else
                    yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), yyvsp[-1].ttype); ;
     break;}
 case 305:
-#line 1604 "parse.y"
+#line 1589 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (CALL_EXPR, copy_to_permanent (yyvsp[-1].ttype), 
                                       NULL_TREE, NULL_TREE);
@@ -5428,38 +5418,38 @@ case 305:
                    yyval.ttype = build_member_call (OP0 (yyval.ttype), OP1 (yyval.ttype), NULL_TREE); ;
     break;}
 case 306:
-#line 1610 "parse.y"
+#line 1595 "parse.y"
 { 
                  yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); 
                ;
     break;}
 case 307:
-#line 1614 "parse.y"
+#line 1599 "parse.y"
 {
                  yyval.ttype = build_method_call (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, 
                                          NULL_TREE, LOOKUP_NORMAL); 
                 ;
     break;}
 case 308:
-#line 1619 "parse.y"
+#line 1604 "parse.y"
 {
                  yyval.ttype = build_method_call (yyvsp[-2].ttype, yyvsp[-1].ttype, NULL_TREE,
                                          NULL_TREE, LOOKUP_NORMAL); 
                 ;
     break;}
 case 309:
-#line 1624 "parse.y"
+#line 1609 "parse.y"
 { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
     break;}
 case 310:
-#line 1626 "parse.y"
+#line 1611 "parse.y"
 { if (processing_template_decl)
                    yyval.ttype = build_min_nt (COMPONENT_REF, yyvsp[-1].ttype, copy_to_permanent (yyvsp[0].ttype));
                  else
                    yyval.ttype = build_object_ref (yyval.ttype, OP0 (yyvsp[0].ttype), OP1 (yyvsp[0].ttype)); ;
     break;}
 case 311:
-#line 1631 "parse.y"
+#line 1616 "parse.y"
 {
 #if 0
                  /* This is a future direction of this code, but because
@@ -5476,7 +5466,7 @@ case 311:
                ;
     break;}
 case 312:
-#line 1646 "parse.y"
+#line 1631 "parse.y"
 {
 #if 0
                  /* This is a future direction of this code, but because
@@ -5493,7 +5483,7 @@ case 312:
                ;
     break;}
 case 313:
-#line 1661 "parse.y"
+#line 1646 "parse.y"
 {
                  if (IS_SIGNATURE (OP0 (yyvsp[-3].ttype)))
                    {
@@ -5506,7 +5496,7 @@ case 313:
                ;
     break;}
 case 314:
-#line 1672 "parse.y"
+#line 1657 "parse.y"
 {
                  if (IS_SIGNATURE (OP0 (yyvsp[-1].ttype)))
                    {
@@ -5519,7 +5509,7 @@ case 314:
                ;
     break;}
 case 315:
-#line 1684 "parse.y"
+#line 1669 "parse.y"
 {
                  if (IDENTIFIER_GLOBAL_VALUE (yyvsp[-1].ttype)
                      && (TREE_CODE (TREE_TYPE (yyvsp[-3].ttype)) 
@@ -5529,7 +5519,7 @@ case 315:
                ;
     break;}
 case 316:
-#line 1692 "parse.y"
+#line 1677 "parse.y"
 {
                  if (yyvsp[-4].ttype != yyvsp[-1].ttype)
                    cp_error ("destructor specifier `%T::~%T()' must have matching names", yyvsp[-4].ttype, yyvsp[-1].ttype);
@@ -5540,41 +5530,41 @@ case 316:
                ;
     break;}
 case 317:
-#line 1701 "parse.y"
+#line 1686 "parse.y"
 {
                  yyval.ttype = error_mark_node;
                ;
     break;}
 case 318:
-#line 1746 "parse.y"
+#line 1731 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 319:
-#line 1748 "parse.y"
+#line 1733 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
 case 320:
-#line 1753 "parse.y"
+#line 1738 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 321:
-#line 1755 "parse.y"
+#line 1740 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
 case 322:
-#line 1760 "parse.y"
+#line 1745 "parse.y"
 { yyval.ttype = boolean_true_node; ;
     break;}
 case 323:
-#line 1762 "parse.y"
+#line 1747 "parse.y"
 { yyval.ttype = boolean_false_node; ;
     break;}
 case 325:
-#line 1769 "parse.y"
+#line 1754 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 326:
-#line 1774 "parse.y"
+#line 1759 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -5586,18 +5576,18 @@ case 326:
                ;
     break;}
 case 327:
-#line 1787 "parse.y"
+#line 1772 "parse.y"
 { got_object = TREE_TYPE (yyval.ttype); ;
     break;}
 case 328:
-#line 1789 "parse.y"
+#line 1774 "parse.y"
 {
                  yyval.ttype = build_x_arrow (yyval.ttype); 
                  got_object = TREE_TYPE (yyval.ttype);
                ;
     break;}
 case 329:
-#line 1797 "parse.y"
+#line 1782 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t)))
@@ -5605,138 +5595,138 @@ case 329:
                ;
     break;}
 case 330:
-#line 1803 "parse.y"
+#line 1788 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  note_list_got_semicolon (yyvsp[-2].ftype.t);
                ;
     break;}
 case 331:
-#line 1808 "parse.y"
+#line 1793 "parse.y"
 { resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 332:
-#line 1810 "parse.y"
+#line 1795 "parse.y"
 {
                  shadow_tag (yyvsp[-1].ftype.t);
                  note_list_got_semicolon (yyvsp[-1].ftype.t);
                ;
     break;}
 case 333:
-#line 1815 "parse.y"
+#line 1800 "parse.y"
 { warning ("empty declaration"); ;
     break;}
 case 334:
-#line 1817 "parse.y"
+#line 1802 "parse.y"
 { pedantic = yyvsp[-1].itype; ;
     break;}
 case 337:
-#line 1831 "parse.y"
+#line 1816 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (),
                                             NULL_TREE, NULL_TREE); ;
     break;}
 case 338:
-#line 1834 "parse.y"
+#line 1819 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE,
                                             NULL_TREE); ;
     break;}
 case 339:
-#line 1841 "parse.y"
+#line 1826 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 340:
-#line 1844 "parse.y"
+#line 1829 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 341:
-#line 1847 "parse.y"
+#line 1832 "parse.y"
 { yyval.ftype.t = build_decl_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 342:
-#line 1850 "parse.y"
+#line 1835 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
 case 343:
-#line 1853 "parse.y"
+#line 1838 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 346:
-#line 1869 "parse.y"
+#line 1854 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 347:
-#line 1872 "parse.y"
+#line 1857 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 348:
-#line 1875 "parse.y"
+#line 1860 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t, chainon (yyvsp[-1].ttype, yyvsp[0].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
 case 349:
-#line 1878 "parse.y"
+#line 1863 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 350:
-#line 1881 "parse.y"
+#line 1866 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ttype)); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 351:
-#line 1884 "parse.y"
+#line 1869 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-2].ftype.t,
                                         chainon (yyvsp[-1].ttype, chainon (yyvsp[0].ttype, yyvsp[-3].ttype))); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
 case 352:
-#line 1891 "parse.y"
+#line 1876 "parse.y"
 { if (extra_warnings)
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyval.ttype));
                  yyval.ttype = build_decl_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 353:
-#line 1896 "parse.y"
+#line 1881 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;
     break;}
 case 354:
-#line 1898 "parse.y"
+#line 1883 "parse.y"
 { if (extra_warnings)
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
                  yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 355:
-#line 1903 "parse.y"
+#line 1888 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 356:
-#line 1905 "parse.y"
+#line 1890 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 357:
-#line 1915 "parse.y"
+#line 1900 "parse.y"
 { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 358:
-#line 1917 "parse.y"
+#line 1902 "parse.y"
 { yyval.ttype = IDENTIFIER_AS_LIST (yyval.ttype); ;
     break;}
 case 359:
-#line 1919 "parse.y"
+#line 1904 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
                  TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 360:
-#line 1922 "parse.y"
+#line 1907 "parse.y"
 { if (extra_warnings && TREE_STATIC (yyval.ttype))
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
@@ -5744,61 +5734,61 @@ case 360:
                  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
     break;}
 case 361:
-#line 1928 "parse.y"
+#line 1913 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 362:
-#line 1930 "parse.y"
+#line 1915 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 363:
-#line 1941 "parse.y"
+#line 1926 "parse.y"
 { yyval.ftype.t = get_decl_list (yyvsp[0].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 364:
-#line 1944 "parse.y"
+#line 1929 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 365:
-#line 1947 "parse.y"
+#line 1932 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 366:
-#line 1950 "parse.y"
+#line 1935 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[-1].ftype.t, chainon (yyvsp[0].ttype, yyvsp[-2].ftype.t)); 
                  yyval.ftype.new_type_flag = yyvsp[-2].ftype.new_type_flag; ;
     break;}
 case 367:
-#line 1956 "parse.y"
+#line 1941 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
 case 368:
-#line 1958 "parse.y"
+#line 1943 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 370:
-#line 1968 "parse.y"
+#line 1953 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 371:
-#line 1970 "parse.y"
+#line 1955 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 372:
-#line 1972 "parse.y"
+#line 1957 "parse.y"
 { yyval.ftype.t = TREE_TYPE (yyvsp[-1].ttype);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 373:
-#line 1975 "parse.y"
+#line 1960 "parse.y"
 { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 374:
-#line 1978 "parse.y"
+#line 1963 "parse.y"
 { tree type = TREE_TYPE (yyvsp[-1].ttype);
 
                   yyval.ftype.new_type_flag = 0;
@@ -5815,7 +5805,7 @@ case 374:
                ;
     break;}
 case 375:
-#line 1993 "parse.y"
+#line 1978 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
 
                   yyval.ftype.new_type_flag = 0;
@@ -5832,188 +5822,188 @@ case 375:
                ;
     break;}
 case 376:
-#line 2013 "parse.y"
+#line 1998 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 377:
-#line 2015 "parse.y"
+#line 2000 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 385:
-#line 2036 "parse.y"
+#line 2021 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 386:
-#line 2038 "parse.y"
+#line 2023 "parse.y"
 { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 387:
-#line 2043 "parse.y"
+#line 2028 "parse.y"
 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1);
                  cplus_decl_attributes (yyval.ttype, yyvsp[-1].ttype, prefix_attributes); ;
     break;}
 case 388:
-#line 2047 "parse.y"
+#line 2032 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ;
     break;}
 case 389:
-#line 2049 "parse.y"
+#line 2034 "parse.y"
 { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes);
                  cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 390:
-#line 2062 "parse.y"
+#line 2047 "parse.y"
 { yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype, 
                                           yyvsp[-1].ttype, 1, &yyval.ttype); ;
     break;}
 case 391:
-#line 2067 "parse.y"
+#line 2052 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1,
                                  LOOKUP_ONLYCONVERTING);
                  yyval.itype = yyvsp[-2].itype; ;
     break;}
 case 392:
-#line 2071 "parse.y"
+#line 2056 "parse.y"
 { tree d;
                  yyval.itype = parse_decl (yyvsp[-2].ttype, yyvsp[-3].ttype, yyvsp[0].ttype, 0, &d);
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 393:
-#line 2078 "parse.y"
+#line 2063 "parse.y"
 { yyval.itype = yyvsp[0].itype; ;
     break;}
 case 394:
-#line 2082 "parse.y"
+#line 2067 "parse.y"
 { yyval.itype = yyvsp[0].itype; ;
     break;}
 case 395:
-#line 2087 "parse.y"
+#line 2072 "parse.y"
 { /* Set things up as initdcl0_innards expects.  */
              yyval.ttype = yyvsp[-1].ttype; 
               yyvsp[-1].ttype = NULL_TREE; ;
     break;}
 case 396:
-#line 2091 "parse.y"
+#line 2076 "parse.y"
 {;
     break;}
 case 397:
-#line 2093 "parse.y"
+#line 2078 "parse.y"
 { tree d;
                  parse_decl(yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype, 0, &d);
                  cp_finish_decl (d, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 398:
-#line 2102 "parse.y"
+#line 2087 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 399:
-#line 2104 "parse.y"
+#line 2089 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 400:
-#line 2109 "parse.y"
+#line 2094 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 401:
-#line 2111 "parse.y"
+#line 2096 "parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 402:
-#line 2116 "parse.y"
+#line 2101 "parse.y"
 { yyval.ttype = yyvsp[-2].ttype; ;
     break;}
 case 403:
-#line 2121 "parse.y"
+#line 2106 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 404:
-#line 2123 "parse.y"
+#line 2108 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 405:
-#line 2128 "parse.y"
+#line 2113 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 406:
-#line 2130 "parse.y"
+#line 2115 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 407:
-#line 2132 "parse.y"
+#line 2117 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
     break;}
 case 408:
-#line 2134 "parse.y"
+#line 2119 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
     break;}
 case 409:
-#line 2136 "parse.y"
+#line 2121 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 414:
-#line 2152 "parse.y"
+#line 2137 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 415:
-#line 2154 "parse.y"
+#line 2139 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 416:
-#line 2159 "parse.y"
+#line 2144 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 417:
-#line 2161 "parse.y"
+#line 2146 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 419:
-#line 2169 "parse.y"
+#line 2154 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 420:
-#line 2172 "parse.y"
+#line 2157 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 421:
-#line 2175 "parse.y"
+#line 2160 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 422:
-#line 2178 "parse.y"
+#line 2163 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 423:
-#line 2185 "parse.y"
+#line 2170 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 424:
-#line 2187 "parse.y"
+#line 2172 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 425:
-#line 2190 "parse.y"
+#line 2175 "parse.y"
 { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 426:
-#line 2192 "parse.y"
+#line 2177 "parse.y"
 { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 427:
-#line 2194 "parse.y"
+#line 2179 "parse.y"
 { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 428:
-#line 2199 "parse.y"
+#line 2184 "parse.y"
 { start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype),
                                  NULL_TREE, 1);
                  reinit_parse_for_function (); ;
     break;}
 case 429:
-#line 2205 "parse.y"
+#line 2190 "parse.y"
 {
                  int nested = (hack_decl_function_context
                                (current_function_decl) != NULL_TREE);
@@ -6022,82 +6012,82 @@ case 429:
                ;
     break;}
 case 430:
-#line 2212 "parse.y"
+#line 2197 "parse.y"
 { process_next_inline (yyvsp[-2].ttype); ;
     break;}
 case 431:
-#line 2214 "parse.y"
+#line 2199 "parse.y"
 { process_next_inline (yyvsp[-2].ttype); ;
     break;}
 case 434:
-#line 2226 "parse.y"
+#line 2211 "parse.y"
 { replace_defarg (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 435:
-#line 2228 "parse.y"
+#line 2213 "parse.y"
 { replace_defarg (yyvsp[-2].ttype, error_mark_node); ;
     break;}
 case 437:
-#line 2233 "parse.y"
+#line 2218 "parse.y"
 { do_pending_defargs (); ;
     break;}
 case 438:
-#line 2235 "parse.y"
+#line 2220 "parse.y"
 { do_pending_defargs (); ;
     break;}
 case 439:
-#line 2240 "parse.y"
+#line 2225 "parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (yyvsp[-1].ttype); ;
     break;}
 case 440:
-#line 2243 "parse.y"
+#line 2228 "parse.y"
 { yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
                  yyval.ftype.new_type_flag = 1;
                  resume_momentary ((int) yyvsp[-4].itype);
                  check_for_missing_semicolon (yyvsp[-3].ttype); ;
     break;}
 case 441:
-#line 2248 "parse.y"
+#line 2233 "parse.y"
 { yyval.ftype.t = finish_enum (start_enum (yyvsp[-2].ttype), NULL_TREE);
                  yyval.ftype.new_type_flag = 1;
                  check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
 case 442:
-#line 2252 "parse.y"
+#line 2237 "parse.y"
 { yyvsp[0].itype = suspend_momentary ();
                  yyval.ttype = start_enum (make_anon_name ()); ;
     break;}
 case 443:
-#line 2255 "parse.y"
+#line 2240 "parse.y"
 { yyval.ftype.t = finish_enum (yyvsp[-3].ttype, yyvsp[-2].ttype);
                  resume_momentary ((int) yyvsp[-5].itype);
                  check_for_missing_semicolon (yyvsp[-3].ttype);
                  yyval.ftype.new_type_flag = 1; ;
     break;}
 case 444:
-#line 2260 "parse.y"
+#line 2245 "parse.y"
 { yyval.ftype.t = finish_enum (start_enum (make_anon_name()), NULL_TREE);
                  yyval.ftype.new_type_flag = 1;
                  check_for_missing_semicolon (yyval.ftype.t); ;
     break;}
 case 445:
-#line 2264 "parse.y"
+#line 2249 "parse.y"
 { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 446:
-#line 2267 "parse.y"
+#line 2252 "parse.y"
 { yyval.ftype.t = xref_tag (enum_type_node, yyvsp[0].ttype, NULL_TREE, 1); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 447:
-#line 2270 "parse.y"
+#line 2255 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype;
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 448:
-#line 2275 "parse.y"
+#line 2260 "parse.y"
 {
                  int semi;
 
@@ -6132,7 +6122,7 @@ case 448:
                ;
     break;}
 case 449:
-#line 2308 "parse.y"
+#line 2293 "parse.y"
 {
                  if (pending_inlines 
                      && current_scope () == current_function_decl)
@@ -6140,7 +6130,7 @@ case 449:
                ;
     break;}
 case 450:
-#line 2314 "parse.y"
+#line 2299 "parse.y"
 { 
                  yyval.ftype.t = yyvsp[-3].ttype;
                  yyval.ftype.new_type_flag = 1; 
@@ -6152,7 +6142,7 @@ case 450:
                ;
     break;}
 case 451:
-#line 2324 "parse.y"
+#line 2309 "parse.y"
 {
                  yyval.ftype.new_type_flag = 0;
                  if (TYPE_BINFO (yyvsp[0].ttype) == NULL_TREE)
@@ -6172,73 +6162,73 @@ case 451:
                ;
     break;}
 case 455:
-#line 2351 "parse.y"
+#line 2336 "parse.y"
 { if (pedantic && !in_system_header)
                    pedwarn ("comma at end of enumerator list"); ;
     break;}
 case 457:
-#line 2358 "parse.y"
+#line 2343 "parse.y"
 { error ("storage class specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
 case 458:
-#line 2360 "parse.y"
+#line 2345 "parse.y"
 { error ("type specifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
 case 459:
-#line 2362 "parse.y"
+#line 2347 "parse.y"
 { error ("type qualifier `%s' not allowed after struct or class", IDENTIFIER_POINTER (yyvsp[0].ttype)); ;
     break;}
 case 460:
-#line 2364 "parse.y"
+#line 2349 "parse.y"
 { error ("no body nor ';' separates two class, struct or union declarations"); ;
     break;}
 case 461:
-#line 2369 "parse.y"
+#line 2354 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 462:
-#line 2374 "parse.y"
+#line 2359 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 463:
-#line 2379 "parse.y"
+#line 2364 "parse.y"
 {
                  current_aggr = yyvsp[-2].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 464:
-#line 2384 "parse.y"
+#line 2369 "parse.y"
 {
                  current_aggr = yyvsp[-3].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 465:
-#line 2389 "parse.y"
+#line 2374 "parse.y"
 {
                  current_aggr = yyvsp[-2].ttype;
                  yyval.ttype = handle_class_head (yyvsp[-2].ttype, NULL_TREE, yyvsp[0].ttype);
                ;
     break;}
 case 466:
-#line 2394 "parse.y"
+#line 2379 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 467:
-#line 2396 "parse.y"
+#line 2381 "parse.y"
 { current_aggr = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 468:
-#line 2401 "parse.y"
+#line 2386 "parse.y"
 { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 0); ;
     break;}
 case 469:
-#line 2406 "parse.y"
+#line 2391 "parse.y"
 { yyval.ttype = xref_tag (current_aggr, yyvsp[0].ttype, NULL_TREE, 1); ;
     break;}
 case 470:
-#line 2409 "parse.y"
+#line 2394 "parse.y"
 { 
                  yyval.ttype = yyvsp[-1].ttype;
                  if (yyvsp[0].ttype)
@@ -6246,7 +6236,7 @@ case 470:
                ;
     break;}
 case 471:
-#line 2415 "parse.y"
+#line 2400 "parse.y"
 { 
                  yyval.ttype = TREE_TYPE (yyvsp[-1].ttype);
                  if (TREE_INT_CST_LOW (current_aggr) == union_type 
@@ -6274,28 +6264,28 @@ case 471:
                ;
     break;}
 case 472:
-#line 2444 "parse.y"
+#line 2429 "parse.y"
 { yyval.ttype = xref_tag (yyval.ttype, make_anon_name (), NULL_TREE, 0);
                  yyungetc ('{', 1); ;
     break;}
 case 475:
-#line 2455 "parse.y"
+#line 2440 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 476:
-#line 2457 "parse.y"
+#line 2442 "parse.y"
 { yyungetc(':', 1); yyval.ttype = NULL_TREE; ;
     break;}
 case 477:
-#line 2459 "parse.y"
+#line 2444 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 479:
-#line 2465 "parse.y"
+#line 2450 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 480:
-#line 2470 "parse.y"
+#line 2455 "parse.y"
 {
                  tree type = TREE_TYPE (yyvsp[0].ttype);
                  if (! is_aggr_type (type, 1))
@@ -6322,7 +6312,7 @@ case 480:
                ;
     break;}
 case 481:
-#line 2495 "parse.y"
+#line 2480 "parse.y"
 {
                  tree type = TREE_TYPE (yyvsp[0].ttype);
                  if (current_aggr == signature_type_node)
@@ -6351,11 +6341,11 @@ case 481:
                ;
     break;}
 case 482:
-#line 2525 "parse.y"
+#line 2510 "parse.y"
 { yyval.ttype = TYPE_MAIN_DECL (yyvsp[0].ttype); ;
     break;}
 case 484:
-#line 2528 "parse.y"
+#line 2513 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    {
@@ -6378,7 +6368,7 @@ case 484:
                ;
     break;}
 case 485:
-#line 2549 "parse.y"
+#line 2534 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    {
@@ -6401,13 +6391,13 @@ case 485:
                ;
     break;}
 case 487:
-#line 2574 "parse.y"
+#line 2559 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    cp_error ("`%D' access", yyvsp[-1].ttype);
                  yyval.ttype = access_default_virtual_node; ;
     break;}
 case 488:
-#line 2578 "parse.y"
+#line 2563 "parse.y"
 {
                  if (yyvsp[-2].ttype != access_default_virtual_node)
                    error ("multiple access specifiers");
@@ -6420,7 +6410,7 @@ case 488:
                ;
     break;}
 case 489:
-#line 2589 "parse.y"
+#line 2574 "parse.y"
 { if (yyvsp[-1].ttype != ridpointers[(int)RID_VIRTUAL])
                    cp_error ("`%D' access", yyvsp[-1].ttype);
                  else if (yyval.ttype == access_public_node)
@@ -6434,7 +6424,7 @@ case 489:
                ;
     break;}
 case 490:
-#line 2604 "parse.y"
+#line 2589 "parse.y"
 { tree t = yyvsp[-1].ttype;
                  push_obstacks_nochange ();
                  end_temporary_allocation ();
@@ -6522,17 +6512,17 @@ case 490:
                ;
     break;}
 case 491:
-#line 2693 "parse.y"
+#line 2678 "parse.y"
 {
                    yyval.ttype = build_self_reference ();
                ;
     break;}
 case 492:
-#line 2700 "parse.y"
+#line 2685 "parse.y"
 { if (yyval.ttype) yyval.ttype = build_tree_list (access_public_node, yyval.ttype); ;
     break;}
 case 493:
-#line 2702 "parse.y"
+#line 2687 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    yyval.ttype = build_tree_list (access_public_node, yyvsp[0].ttype);
@@ -6542,7 +6532,7 @@ case 493:
                ;
     break;}
 case 494:
-#line 2710 "parse.y"
+#line 2695 "parse.y"
 {
                  tree visspec = yyvsp[-2].ttype;
 
@@ -6555,19 +6545,19 @@ case 494:
                ;
     break;}
 case 495:
-#line 2721 "parse.y"
+#line 2706 "parse.y"
 {
                  if (current_aggr == signature_type_node)
                    error ("access specifier not allowed in signature");
                ;
     break;}
 case 496:
-#line 2731 "parse.y"
+#line 2716 "parse.y"
 { if (yyval.ttype == void_type_node) yyval.ttype = NULL_TREE; 
                ;
     break;}
 case 497:
-#line 2734 "parse.y"
+#line 2719 "parse.y"
 { /* In pushdecl, we created a reverse list of names
                     in this binding level.  Make sure that the chain
                     of what we're trying to add isn't the item itself
@@ -6582,45 +6572,45 @@ case 497:
                ;
     break;}
 case 498:
-#line 2750 "parse.y"
+#line 2735 "parse.y"
 { ;
     break;}
 case 499:
-#line 2752 "parse.y"
+#line 2737 "parse.y"
 { error ("missing ';' before right brace");
                  yyungetc ('}', 0); ;
     break;}
 case 500:
-#line 2757 "parse.y"
+#line 2742 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 501:
-#line 2759 "parse.y"
+#line 2744 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 502:
-#line 2761 "parse.y"
+#line 2746 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 503:
-#line 2763 "parse.y"
+#line 2748 "parse.y"
 { yyval.ttype = finish_method (yyval.ttype); ;
     break;}
 case 504:
-#line 2765 "parse.y"
+#line 2750 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 505:
-#line 2767 "parse.y"
+#line 2752 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
 case 506:
-#line 2770 "parse.y"
+#line 2755 "parse.y"
 { yyval.ttype = finish_member_template_decl (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 507:
-#line 2772 "parse.y"
+#line 2757 "parse.y"
 {
                  shadow_tag (yyvsp[-1].ftype.t);
                  note_list_got_semicolon (yyvsp[-1].ftype.t);
@@ -6628,53 +6618,53 @@ case 507:
                ;
     break;}
 case 508:
-#line 2784 "parse.y"
+#line 2769 "parse.y"
 { yyval.ttype = grok_x_components (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 509:
-#line 2786 "parse.y"
+#line 2771 "parse.y"
 { yyval.ttype = grok_x_components (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 510:
-#line 2788 "parse.y"
+#line 2773 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
 case 511:
-#line 2791 "parse.y"
+#line 2776 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
 case 512:
-#line 2794 "parse.y"
+#line 2779 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 513:
-#line 2796 "parse.y"
+#line 2781 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 514:
-#line 2807 "parse.y"
+#line 2792 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-4].ttype, &specs, &attrs);
                  yyval.ttype = grokfield (yyvsp[-3].ttype, specs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, attrs)); ;
     break;}
 case 515:
-#line 2812 "parse.y"
+#line 2797 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, NULL_TREE, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, NULL_TREE)); ;
     break;}
 case 516:
-#line 2815 "parse.y"
+#line 2800 "parse.y"
 { yyval.ttype = do_class_using_decl (yyvsp[0].ttype); ;
     break;}
 case 517:
-#line 2821 "parse.y"
+#line 2806 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 519:
-#line 2824 "parse.y"
+#line 2809 "parse.y"
 {
                  /* In this context, void_type_node encodes
                     friends.  They have been recorded elsewhere.  */
@@ -6685,11 +6675,11 @@ case 519:
                ;
     break;}
 case 520:
-#line 2836 "parse.y"
+#line 2821 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 522:
-#line 2839 "parse.y"
+#line 2824 "parse.y"
 {
                  /* In this context, void_type_node encodes
                     friends.  They have been recorded elsewhere.  */
@@ -6700,7 +6690,7 @@ case 522:
                ;
     break;}
 case 527:
-#line 2861 "parse.y"
+#line 2846 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6708,7 +6698,7 @@ case 527:
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 528:
-#line 2867 "parse.y"
+#line 2852 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6716,7 +6706,7 @@ case 528:
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 529:
-#line 2876 "parse.y"
+#line 2861 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6724,7 +6714,7 @@ case 529:
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 530:
-#line 2882 "parse.y"
+#line 2867 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6732,7 +6722,7 @@ case 530:
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 531:
-#line 2888 "parse.y"
+#line 2873 "parse.y"
 { split_specs_attrs (yyvsp[-4].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-4].ttype = current_declspecs;
@@ -6740,7 +6730,7 @@ case 531:
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 532:
-#line 2894 "parse.y"
+#line 2879 "parse.y"
 { split_specs_attrs (yyvsp[-3].ttype, &current_declspecs,
                                     &prefix_attributes);
                  yyvsp[-3].ttype = current_declspecs;
@@ -6748,54 +6738,54 @@ case 532:
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 533:
-#line 2903 "parse.y"
+#line 2888 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 534:
-#line 2906 "parse.y"
+#line 2891 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 535:
-#line 2912 "parse.y"
+#line 2897 "parse.y"
 { yyval.ttype = grokfield (yyval.ttype, current_declspecs, yyvsp[0].ttype, yyvsp[-2].ttype,
                                  build_tree_list (yyvsp[-1].ttype, prefix_attributes)); ;
     break;}
 case 536:
-#line 2915 "parse.y"
+#line 2900 "parse.y"
 { yyval.ttype = grokbitfield (yyval.ttype, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 537:
-#line 2918 "parse.y"
+#line 2903 "parse.y"
 { yyval.ttype = grokbitfield (NULL_TREE, current_declspecs, yyvsp[-1].ttype);
                  cplus_decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
     break;}
 case 539:
-#line 2929 "parse.y"
+#line 2914 "parse.y"
 { TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype; yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 540:
-#line 2934 "parse.y"
+#line 2919 "parse.y"
 { yyval.ttype = build_enumerator (yyval.ttype, NULL_TREE); ;
     break;}
 case 541:
-#line 2936 "parse.y"
+#line 2921 "parse.y"
 { yyval.ttype = build_enumerator (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 542:
-#line 2942 "parse.y"
+#line 2927 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 543:
-#line 2945 "parse.y"
+#line 2930 "parse.y"
 { yyval.ftype.t = build_decl_list (yyvsp[0].ftype.t, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 544:
-#line 2950 "parse.y"
+#line 2935 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids array dimensions with parenthesized type in new");
@@ -6805,71 +6795,71 @@ case 544:
                ;
     break;}
 case 545:
-#line 2961 "parse.y"
+#line 2946 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 546:
-#line 2963 "parse.y"
+#line 2948 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 547:
-#line 2968 "parse.y"
+#line 2953 "parse.y"
 { yyval.ftype.t = IDENTIFIER_AS_LIST (yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 548:
-#line 2971 "parse.y"
+#line 2956 "parse.y"
 { yyval.ftype.t = decl_tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 549:
-#line 2980 "parse.y"
+#line 2965 "parse.y"
 { yyval.itype = suspend_momentary (); ;
     break;}
 case 550:
-#line 2985 "parse.y"
+#line 2970 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 551:
-#line 2991 "parse.y"
+#line 2976 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 552:
-#line 2993 "parse.y"
+#line 2978 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 553:
-#line 2995 "parse.y"
+#line 2980 "parse.y"
 { resume_momentary ((int) yyvsp[-1].itype); yyval.ttype = empty_parms (); ;
     break;}
 case 554:
-#line 2997 "parse.y"
+#line 2982 "parse.y"
 { resume_momentary ((int) yyvsp[-3].itype); yyval.ttype = NULL_TREE; ;
     break;}
 case 555:
-#line 3004 "parse.y"
+#line 2989 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 556:
-#line 3006 "parse.y"
+#line 2991 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 557:
-#line 3008 "parse.y"
+#line 2993 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 558:
-#line 3010 "parse.y"
+#line 2995 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 559:
-#line 3012 "parse.y"
+#line 2997 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 561:
-#line 3020 "parse.y"
+#line 3005 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    {
@@ -6888,7 +6878,7 @@ case 561:
                ;
     break;}
 case 562:
-#line 3037 "parse.y"
+#line 3022 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -6898,97 +6888,97 @@ case 562:
                ;
     break;}
 case 565:
-#line 3050 "parse.y"
+#line 3035 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 566:
-#line 3055 "parse.y"
+#line 3040 "parse.y"
 { yyval.ttype = get_type_decl (yyvsp[0].ttype); ;
     break;}
 case 567:
-#line 3060 "parse.y"
+#line 3045 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 568:
-#line 3062 "parse.y"
+#line 3047 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 569:
-#line 3064 "parse.y"
+#line 3049 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 570:
-#line 3066 "parse.y"
+#line 3051 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 571:
-#line 3068 "parse.y"
+#line 3053 "parse.y"
 { push_nested_class (yyvsp[-1].ttype, 3);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype);
                  TREE_COMPLEXITY (yyval.ttype) = current_class_depth; ;
     break;}
 case 573:
-#line 3079 "parse.y"
+#line 3064 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 574:
-#line 3081 "parse.y"
+#line 3066 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 575:
-#line 3083 "parse.y"
+#line 3068 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 576:
-#line 3085 "parse.y"
+#line 3070 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 577:
-#line 3087 "parse.y"
+#line 3072 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 579:
-#line 3095 "parse.y"
+#line 3080 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 580:
-#line 3097 "parse.y"
+#line 3082 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 581:
-#line 3099 "parse.y"
+#line 3084 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 582:
-#line 3101 "parse.y"
+#line 3086 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 583:
-#line 3103 "parse.y"
+#line 3088 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 585:
-#line 3111 "parse.y"
+#line 3096 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-2].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 586:
-#line 3113 "parse.y"
+#line 3098 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 587:
-#line 3115 "parse.y"
+#line 3100 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 588:
-#line 3117 "parse.y"
+#line 3102 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 589:
-#line 3119 "parse.y"
+#line 3104 "parse.y"
 { if (OP0 (yyval.ttype) != current_class_type)
                    {
                      push_nested_class (OP0 (yyval.ttype), 3);
@@ -6997,7 +6987,7 @@ case 589:
                ;
     break;}
 case 590:
-#line 3126 "parse.y"
+#line 3111 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype);
                  if (yyvsp[-1].ttype != current_class_type)
@@ -7008,51 +6998,51 @@ case 590:
                ;
     break;}
 case 591:
-#line 3138 "parse.y"
+#line 3123 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 592:
-#line 3141 "parse.y"
+#line 3126 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 593:
-#line 3147 "parse.y"
+#line 3132 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 594:
-#line 3150 "parse.y"
+#line 3135 "parse.y"
 { got_scope = NULL_TREE;
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 596:
-#line 3157 "parse.y"
+#line 3142 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 597:
-#line 3162 "parse.y"
+#line 3147 "parse.y"
 { yyval.ttype = build_functional_cast (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 598:
-#line 3164 "parse.y"
+#line 3149 "parse.y"
 { yyval.ttype = reparse_decl_as_expr (yyvsp[-3].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 599:
-#line 3166 "parse.y"
+#line 3151 "parse.y"
 { yyval.ttype = reparse_absdcl_as_expr (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 604:
-#line 3178 "parse.y"
+#line 3163 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 605:
-#line 3180 "parse.y"
+#line 3165 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 606:
-#line 3187 "parse.y"
+#line 3172 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    {
@@ -7068,7 +7058,7 @@ case 606:
                ;
     break;}
 case 607:
-#line 3201 "parse.y"
+#line 3186 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7076,7 +7066,7 @@ case 607:
                ;
     break;}
 case 608:
-#line 3207 "parse.y"
+#line 3192 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7084,15 +7074,15 @@ case 608:
                ;
     break;}
 case 609:
-#line 3213 "parse.y"
+#line 3198 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyvsp[-1].ttype)); ;
     break;}
 case 611:
-#line 3229 "parse.y"
+#line 3214 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 612:
-#line 3234 "parse.y"
+#line 3219 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7107,26 +7097,26 @@ case 612:
                ;
     break;}
 case 613:
-#line 3247 "parse.y"
+#line 3232 "parse.y"
 { yyval.ttype = TREE_TYPE (yyvsp[0].ttype); ;
     break;}
 case 614:
-#line 3249 "parse.y"
+#line 3234 "parse.y"
 { yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 615:
-#line 3251 "parse.y"
+#line 3236 "parse.y"
 { yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 616:
-#line 3256 "parse.y"
+#line 3241 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    cp_error ("`%T' is not a class or namespace", yyvsp[0].ttype);
                ;
     break;}
 case 617:
-#line 3261 "parse.y"
+#line 3246 "parse.y"
 {
                  if (TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype)) == 't')
                    yyval.ttype = make_typename_type (yyvsp[-1].ttype, yyvsp[0].ttype);
@@ -7141,15 +7131,15 @@ case 617:
                ;
     break;}
 case 618:
-#line 3274 "parse.y"
+#line 3259 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 619:
-#line 3276 "parse.y"
+#line 3261 "parse.y"
 { got_scope = yyval.ttype = make_typename_type (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 620:
-#line 3281 "parse.y"
+#line 3266 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyvsp[-1].ttype = lastiddecl;
@@ -7161,7 +7151,7 @@ case 620:
                ;
     break;}
 case 621:
-#line 3291 "parse.y"
+#line 3276 "parse.y"
 {
                  if (TREE_CODE (yyvsp[-1].ttype) != IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7169,11 +7159,11 @@ case 621:
                ;
     break;}
 case 622:
-#line 3297 "parse.y"
+#line 3282 "parse.y"
 { got_scope = yyval.ttype = complete_type (TREE_TYPE (yyval.ttype)); ;
     break;}
 case 625:
-#line 3301 "parse.y"
+#line 3286 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -7181,11 +7171,11 @@ case 625:
                ;
     break;}
 case 626:
-#line 3310 "parse.y"
+#line 3295 "parse.y"
 { yyval.ttype = build_min_nt (TEMPLATE_ID_EXPR, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 627:
-#line 3315 "parse.y"
+#line 3300 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
                    yyval.ttype = IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype);
@@ -7195,156 +7185,148 @@ case 627:
                ;
     break;}
 case 629:
-#line 3324 "parse.y"
+#line 3309 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 630:
-#line 3329 "parse.y"
+#line 3314 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
 case 631:
-#line 3331 "parse.y"
+#line 3316 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; got_scope = NULL_TREE; ;
     break;}
 case 632:
-#line 3338 "parse.y"
+#line 3323 "parse.y"
 { got_scope = void_type_node; ;
     break;}
 case 633:
-#line 3344 "parse.y"
+#line 3329 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 634:
-#line 3346 "parse.y"
+#line 3331 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 635:
-#line 3348 "parse.y"
+#line 3333 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 636:
-#line 3350 "parse.y"
+#line 3335 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 637:
-#line 3352 "parse.y"
+#line 3337 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
 case 638:
-#line 3356 "parse.y"
+#line 3341 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 640:
-#line 3365 "parse.y"
+#line 3350 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 641:
-#line 3367 "parse.y"
+#line 3352 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 642:
-#line 3373 "parse.y"
+#line 3358 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 643:
-#line 3375 "parse.y"
+#line 3360 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 644:
-#line 3377 "parse.y"
+#line 3362 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
 case 645:
-#line 3379 "parse.y"
+#line 3364 "parse.y"
 { yyval.ttype = make_pointer_declarator (NULL_TREE, NULL_TREE); ;
     break;}
 case 646:
-#line 3381 "parse.y"
+#line 3366 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
 case 647:
-#line 3383 "parse.y"
+#line 3368 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 648:
-#line 3385 "parse.y"
+#line 3370 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[0].ftype.t, NULL_TREE); ;
     break;}
 case 649:
-#line 3387 "parse.y"
+#line 3372 "parse.y"
 { yyval.ttype = make_reference_declarator (NULL_TREE, NULL_TREE); ;
     break;}
 case 650:
-#line 3389 "parse.y"
+#line 3374 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, arg);
                ;
     break;}
 case 651:
-#line 3393 "parse.y"
+#line 3378 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
 case 653:
-#line 3402 "parse.y"
+#line 3387 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 655:
-#line 3406 "parse.y"
+#line 3391 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 656:
-#line 3408 "parse.y"
+#line 3393 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 657:
-#line 3410 "parse.y"
+#line 3395 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 658:
-#line 3412 "parse.y"
+#line 3397 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, yyval.ttype, NULL_TREE); ;
     break;}
 case 659:
-#line 3414 "parse.y"
+#line 3399 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 660:
-#line 3416 "parse.y"
+#line 3401 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 661:
-#line 3418 "parse.y"
+#line 3403 "parse.y"
 { set_quals_and_spec (yyval.ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 662:
-#line 3420 "parse.y"
+#line 3405 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 663:
-#line 3422 "parse.y"
+#line 3407 "parse.y"
 { yyval.ttype = build_parse_node (ARRAY_REF, NULL_TREE, NULL_TREE); ;
     break;}
-case 669:
-#line 3446 "parse.y"
-{ do_pushlevel (); ;
-    break;}
 case 670:
-#line 3451 "parse.y"
-{ yyval.ttype = do_poplevel (); ;
-    break;}
-case 672:
-#line 3459 "parse.y"
+#line 3430 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids label declarations"); ;
     break;}
-case 675:
-#line 3470 "parse.y"
+case 673:
+#line 3441 "parse.y"
 { tree link;
                  for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
                    {
@@ -7354,534 +7336,220 @@ case 675:
                    }
                ;
     break;}
-case 676:
-#line 3484 "parse.y"
+case 674:
+#line 3455 "parse.y"
 {;
     break;}
+case 676:
+#line 3461 "parse.y"
+{ yyval.ttype = begin_compound_stmt (0); ;
+    break;}
+case 677:
+#line 3463 "parse.y"
+{ yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
+    break;}
 case 678:
-#line 3490 "parse.y"
+#line 3468 "parse.y"
 {
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (COMPOUND_STMT, NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
+                 yyval.ttype = begin_if_stmt ();
+                 cond_stmt_keyword = "if";
                ;
     break;}
 case 679:
-#line 3498 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-3].ttype, 0) = TREE_CHAIN (yyvsp[-3].ttype);
-                     TREE_CHAIN (yyvsp[-3].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-3].ttype;
-                   }
-                 yyval.ttype = yyvsp[0].ttype;
-               ;
+#line 3473 "parse.y"
+{ finish_if_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 680:
-#line 3511 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (IF_STMT, NULL_TREE, NULL_TREE,
-                                               NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-                  cond_stmt_keyword = "if";
-               ;
-    break;}
-case 681:
-#line 3521 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != yyvsp[-2].ttype)
-                       {
-                         TREE_OPERAND (yyvsp[-2].ttype, 0) = last_tree;
-                         TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
-                         last_tree = yyvsp[-2].ttype;
-                       }
-                     else
-                       TREE_OPERAND (yyvsp[-2].ttype, 0) = yyvsp[0].ttype;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_start_cond (yyvsp[0].ttype, 0);
-                   }
-               ;
+#line 3475 "parse.y"
+{ yyval.ttype = finish_then_clause (yyvsp[-3].ttype); ;
     break;}
 case 682:
-#line 3540 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-4].ttype, 1) = TREE_CHAIN (yyvsp[-4].ttype);
-                     TREE_CHAIN (yyvsp[-4].ttype) = NULL_TREE;
-                     yyval.ttype = last_tree = yyvsp[-4].ttype;
-                   }
-               ;
+#line 3480 "parse.y"
+{ yyval.ttype = begin_compound_stmt (0); ;
     break;}
 case 683:
-#line 3552 "parse.y"
-{ finish_stmt (); ;
+#line 3482 "parse.y"
+{ yyval.ttype = finish_compound_stmt (0, yyvsp[-1].ttype); ;
     break;}
 case 684:
-#line 3554 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (COMPOUND_STMT, NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-               ;
-    break;}
-case 685:
-#line 3562 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
-                     TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-2].ttype;
-                   }
-                 yyval.ttype = yyvsp[0].ttype;
-               ;
+#line 3487 "parse.y"
+{;
     break;}
 case 686:
-#line 3575 "parse.y"
+#line 3493 "parse.y"
 { finish_stmt (); ;
     break;}
+case 687:
+#line 3495 "parse.y"
+{ finish_expr_stmt (yyvsp[-1].ttype); ;
+    break;}
 case 688:
-#line 3581 "parse.y"
-{ finish_stmt (); ;
+#line 3497 "parse.y"
+{ begin_else_clause (); ;
     break;}
 case 689:
-#line 3583 "parse.y"
-{
-                 tree expr = yyvsp[-1].ttype;
-                 if (! processing_template_decl)
-                   {
-                     emit_line_note (input_filename, lineno);
-                     /* Do default conversion if safe and possibly important,
-                        in case within ({...}).  */
-                     if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
-                          && lvalue_p (expr))
-                         || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
-                       expr = default_conversion (expr);
-                   }
-                 cplus_expand_expr_stmt (expr);
-                 clear_momentary ();
-                 finish_stmt (); ;
+#line 3499 "parse.y"
+{ 
+                 finish_else_clause (yyvsp[-3].ttype); 
+                 finish_if_stmt ();
+               ;
     break;}
 case 690:
-#line 3599 "parse.y"
-{ if (! processing_template_decl) expand_start_else (); ;
+#line 3504 "parse.y"
+{ finish_if_stmt (); ;
     break;}
 case 691:
-#line 3601 "parse.y"
+#line 3506 "parse.y"
 {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-3].ttype, 2) = TREE_CHAIN (yyvsp[-3].ttype);
-                     TREE_CHAIN (yyvsp[-3].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-3].ttype;
-                   }
-                 else
-                   expand_end_cond ();
+                 yyval.ttype = begin_while_stmt ();
+                 cond_stmt_keyword = "while";
                ;
     break;}
 case 692:
-#line 3612 "parse.y"
-{ finish_stmt (); ;
+#line 3511 "parse.y"
+{ finish_while_stmt_cond (yyvsp[0].ttype, yyvsp[-1].ttype); ;
     break;}
 case 693:
-#line 3614 "parse.y"
-{ if (! processing_template_decl) expand_end_cond ();
-                 do_poplevel ();
-                 finish_stmt (); ;
+#line 3513 "parse.y"
+{ finish_while_stmt (yyvsp[-3].ttype); ;
     break;}
 case 694:
-#line 3618 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (WHILE_STMT, NULL_TREE, NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-                 else
-                   {
-                     emit_nop ();
-                     emit_line_note (input_filename, lineno);
-                     expand_start_loop (1); 
-                   }
-                 cond_stmt_keyword = "while";
-               ;
+#line 3515 "parse.y"
+{ yyval.ttype = begin_do_stmt (); ;
     break;}
 case 695:
-#line 3633 "parse.y"
+#line 3517 "parse.y"
 {
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != yyvsp[-2].ttype)
-                       {
-                         TREE_OPERAND (yyvsp[-2].ttype, 0) = last_tree;
-                         TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
-                         last_tree = yyvsp[-2].ttype;
-                       }
-                     else
-                       TREE_OPERAND (yyvsp[-2].ttype, 0) = yyvsp[0].ttype;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_exit_loop_if_false (0, yyvsp[0].ttype);
-                   }
-
-                 /* If the condition wasn't a declaration, clear out the
-                    block we made for it and start a new one here so the
-                    optimization in expand_end_loop will work.  */
-                 if (getdecls () == NULL_TREE)
-                   {
-                     do_poplevel ();
-                     do_pushlevel ();
-                   }
+                 finish_do_body (yyvsp[-2].ttype);
+                 cond_stmt_keyword = "do";
                ;
     break;}
 case 696:
-#line 3661 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-5].ttype, 1) = TREE_CHAIN (yyvsp[-5].ttype);
-                     TREE_CHAIN (yyvsp[-5].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-5].ttype;
-                   }
-                 else
-                   expand_end_loop ();
-                 finish_stmt ();
-               ;
+#line 3522 "parse.y"
+{ finish_do_stmt (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
     break;}
 case 697:
-#line 3673 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (DO_STMT, NULL_TREE, NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-                 else
-                   {
-                     emit_nop ();
-                     emit_line_note (input_filename, lineno);
-                     expand_start_loop_continue_elsewhere (1);
-                   }
-               ;
+#line 3524 "parse.y"
+{ yyval.ttype = begin_for_stmt (); ;
     break;}
 case 698:
-#line 3687 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
-                     TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-2].ttype;
-                   }
-                 else
-                   {
-                     expand_loop_continue_here ();
-                     cond_stmt_keyword = "do";
-                   }
-               ;
+#line 3526 "parse.y"
+{ finish_for_init_stmt (yyvsp[-2].ttype); ;
     break;}
 case 699:
-#line 3701 "parse.y"
-{
-                 if (processing_template_decl)
-                   TREE_OPERAND (yyvsp[-5].ttype, 1) = yyvsp[-1].ttype;
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_exit_loop_if_false (0, yyvsp[-1].ttype);
-                     expand_end_loop ();
-                   }
-                 clear_momentary ();
-                 finish_stmt ();
-               ;
+#line 3528 "parse.y"
+{ finish_for_cond (yyvsp[-1].ttype, yyvsp[-5].ttype); ;
     break;}
 case 700:
-#line 3714 "parse.y"
-{ if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE, 
-                                               NULL_TREE, NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-                  else
-                   emit_line_note (input_filename, lineno);
-                 if (flag_new_for_scope > 0)
-                   {
-                     /* Conditionalize .pushlevel */
-                     pushlevel (0);
-                     note_level_for_for ();
-                     clear_last_expr ();
-                     push_momentary ();
-                     expand_start_bindings (0);
-                   }
-               ;
+#line 3530 "parse.y"
+{ finish_for_expr (yyvsp[-1].ttype, yyvsp[-8].ttype); ;
     break;}
 case 701:
-#line 3733 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != yyvsp[-2].ttype)
-                       {
-                         TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
-                         TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
-                         last_tree = yyvsp[-2].ttype;
-                       }
-                   }
-                 else
-                   {
-                     emit_nop ();
-                     emit_line_note (input_filename, lineno);
-                     expand_start_loop_continue_elsewhere (1); 
-                   }
-               ;
+#line 3532 "parse.y"
+{ finish_for_stmt (yyvsp[-3].ttype, yyvsp[-10].ttype); ;
     break;}
 case 702:
-#line 3751 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != yyvsp[-6].ttype)
-                       {
-                         TREE_OPERAND (yyvsp[-6].ttype, 1) = last_tree;
-                         TREE_CHAIN (yyvsp[-6].ttype) = NULL_TREE;
-                         last_tree = yyvsp[-6].ttype;
-                       }
-                     else
-                       TREE_OPERAND (yyvsp[-6].ttype, 1) = yyvsp[-1].ttype;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     if (yyvsp[-1].ttype) expand_exit_loop_if_false (0, yyvsp[-1].ttype);
-                   }
-
-                 /* If the condition wasn't a declaration, clear out the
-                    block we made for it and start a new one here so the
-                    optimization in expand_end_loop will work.  */
-                 if (getdecls () == NULL_TREE)
-                   {
-                     do_poplevel ();
-                     do_pushlevel ();
-                   }
-               ;
+#line 3534 "parse.y"
+{ begin_switch_stmt (); ;
     break;}
 case 703:
-#line 3781 "parse.y"
-{
-                 if (processing_template_decl)
-                   TREE_OPERAND (yyvsp[-9].ttype, 2) = yyvsp[-1].ttype;
-                 push_momentary ();
-               ;
+#line 3536 "parse.y"
+{ yyval.ttype = finish_switch_cond (yyvsp[-1].ttype); ;
     break;}
 case 704:
-#line 3787 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-12].ttype, 3) = TREE_CHAIN (yyvsp[-12].ttype);
-                     TREE_CHAIN (yyvsp[-12].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-12].ttype;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_loop_continue_here ();
-                     if (yyvsp[-4].ttype) cplus_expand_expr_stmt (yyvsp[-4].ttype);
-                     expand_end_loop ();
-                   }
-                 pop_momentary ();
-                 if (flag_new_for_scope > 0)
-                   {
-                     do_poplevel ();
-                   }
-                 finish_stmt (); ;
+#line 3538 "parse.y"
+{ finish_switch_stmt (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 705:
-#line 3808 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (SWITCH_STMT, yyvsp[-1].ttype, NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     c_expand_start_case (yyvsp[-1].ttype);
-                   }
-                 push_switch ();
-                 /* Don't let the tree nodes for $4 be discarded by
-                    clear_momentary during the parsing of the next stmt.  */
-                 push_momentary ();
-               ;
-    break;}
-case 706:
-#line 3825 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-1].ttype, 1) = TREE_CHAIN (yyvsp[-1].ttype);
-                     TREE_CHAIN (yyvsp[-1].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-1].ttype;
-                   }
-                 else
-                   expand_end_case (yyvsp[-3].ttype);
-                 pop_momentary ();
-                 pop_switch (); 
-               ;
+#line 3540 "parse.y"
+{ finish_case_label (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
 case 707:
-#line 3838 "parse.y"
-{ finish_stmt (); ;
+#line 3543 "parse.y"
+{ finish_case_label (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
-case 708:
-#line 3840 "parse.y"
-{ do_case (yyvsp[-1].ttype, NULL_TREE); ;
+case 709:
+#line 3546 "parse.y"
+{ finish_case_label (NULL_TREE, NULL_TREE); ;
     break;}
-case 710:
-#line 3843 "parse.y"
-{ do_case (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
+case 711:
+#line 3549 "parse.y"
+{ finish_break_stmt (); ;
     break;}
 case 712:
-#line 3846 "parse.y"
-{ do_case (NULL_TREE, NULL_TREE); ;
+#line 3551 "parse.y"
+{ finish_continue_stmt (); ;
+    break;}
+case 713:
+#line 3553 "parse.y"
+{ finish_return_stmt (NULL_TREE); ;
     break;}
 case 714:
-#line 3849 "parse.y"
-{ emit_line_note (input_filename, lineno);
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (BREAK_STMT));
-                 else if ( ! expand_exit_something ())
-                   error ("break statement not within loop or switch"); ;
+#line 3555 "parse.y"
+{ finish_return_stmt (yyvsp[-1].ttype); ;
     break;}
 case 715:
-#line 3855 "parse.y"
-{ emit_line_note (input_filename, lineno);
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (CONTINUE_STMT));
-                 else if (! expand_continue_loop (0))
-                   error ("continue statement not within a loop"); ;
+#line 3557 "parse.y"
+{ 
+                 finish_asm_stmt (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
+                                  NULL_TREE); 
+               ;
     break;}
 case 716:
-#line 3861 "parse.y"
-{ emit_line_note (input_filename, lineno);
-                 c_expand_return (NULL_TREE); ;
+#line 3563 "parse.y"
+{ 
+                 finish_asm_stmt (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
+                                  NULL_TREE); 
+               ;
     break;}
 case 717:
-#line 3864 "parse.y"
-{ emit_line_note (input_filename, lineno);
-                 c_expand_return (yyvsp[-1].ttype);
-                 finish_stmt ();
-               ;
+#line 3569 "parse.y"
+{ finish_asm_stmt (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 718:
-#line 3869 "parse.y"
-{ if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
-                 emit_line_note (input_filename, lineno);
-                 expand_asm (yyvsp[-2].ttype);
-                 finish_stmt ();
-               ;
+#line 3573 "parse.y"
+{ finish_asm_stmt (yyvsp[-10].ttype, yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype); ;
     break;}
 case 719:
-#line 3876 "parse.y"
-{ if (TREE_CHAIN (yyvsp[-4].ttype)) yyvsp[-4].ttype = combine_strings (yyvsp[-4].ttype);
-                 emit_line_note (input_filename, lineno);
-                 c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
-                                        yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
-                                        input_filename, lineno);
-                 finish_stmt ();
+#line 3575 "parse.y"
+{ 
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids computed gotos");
+                 finish_goto_stmt (yyvsp[-1].ttype);
                ;
     break;}
 case 720:
-#line 3885 "parse.y"
-{ if (TREE_CHAIN (yyvsp[-6].ttype)) yyvsp[-6].ttype = combine_strings (yyvsp[-6].ttype);
-                 emit_line_note (input_filename, lineno);
-                 c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
-                                        yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
-                                        input_filename, lineno);
-                 finish_stmt ();
-               ;
+#line 3581 "parse.y"
+{ finish_goto_stmt (yyvsp[-1].ttype); ;
     break;}
 case 721:
-#line 3895 "parse.y"
-{ if (TREE_CHAIN (yyvsp[-8].ttype)) yyvsp[-8].ttype = combine_strings (yyvsp[-8].ttype);
-                 emit_line_note (input_filename, lineno);
-                 c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
-                                        yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
-                                        input_filename, lineno);
-                 finish_stmt ();
-               ;
-    break;}
-case 722:
-#line 3903 "parse.y"
-{
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
-                 else
-                   { emit_line_note (input_filename, lineno);
-                     expand_computed_goto (yyvsp[-1].ttype); }
-               ;
-    break;}
-case 723:
-#line 3911 "parse.y"
-{
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (GOTO_STMT, yyvsp[-1].ttype));
-                 else
-                   {
-                     tree decl;
-                     emit_line_note (input_filename, lineno);
-                     decl = lookup_label (yyvsp[-1].ttype);
-                     TREE_USED (decl) = 1;
-                     expand_goto (decl); 
-                   }
-               ;
-    break;}
-case 724:
-#line 3924 "parse.y"
+#line 3583 "parse.y"
 { finish_stmt (); ;
     break;}
-case 725:
-#line 3926 "parse.y"
+case 722:
+#line 3585 "parse.y"
 { error ("label must be followed by statement");
                  yyungetc ('}', 0);
                  finish_stmt (); ;
     break;}
-case 726:
-#line 3930 "parse.y"
+case 723:
+#line 3589 "parse.y"
 { finish_stmt (); ;
     break;}
-case 728:
-#line 3936 "parse.y"
+case 725:
+#line 3595 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
                  expand_start_early_try_stmts ();
                ;
     break;}
-case 729:
-#line 3942 "parse.y"
+case 726:
+#line 3601 "parse.y"
 { expand_start_all_catch (); ;
     break;}
-case 730:
-#line 3944 "parse.y"
+case 727:
+#line 3603 "parse.y"
 {
                  int nested = (hack_decl_function_context
                                (current_function_decl) != NULL_TREE);
@@ -7889,95 +7557,42 @@ case 730:
                  finish_function (lineno, (int)yyvsp[-3].itype, nested);
                ;
     break;}
-case 731:
-#line 3954 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (TRY_BLOCK, NULL_TREE,
-                                               NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_start_try_stmts ();
-                   }
-               ;
+case 728:
+#line 3613 "parse.y"
+{ yyval.ttype = begin_try_block (); ;
     break;}
-case 732:
-#line 3968 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-1].ttype, 0) = TREE_CHAIN (yyvsp[-1].ttype);
-                     TREE_CHAIN (yyvsp[-1].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-1].ttype;
-                   }
-                 else
-                   expand_start_all_catch ();
-               ;
+case 729:
+#line 3615 "parse.y"
+{ finish_try_block (yyvsp[-1].ttype); ;
+    break;}
+case 730:
+#line 3617 "parse.y"
+{ finish_handler_sequence (yyvsp[-3].ttype); ;
     break;}
 case 733:
-#line 3979 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-3].ttype, 1) = TREE_CHAIN (yyvsp[-3].ttype);
-                     TREE_CHAIN (yyvsp[-3].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-3].ttype;
-                   }
-                 else
-                   expand_end_all_catch ();
-               ;
+#line 3627 "parse.y"
+{ yyval.ttype = begin_handler(); ;
     break;}
-case 736:
-#line 3998 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     yyval.ttype = build_min_nt (HANDLER, NULL_TREE,
-                                               NULL_TREE);
-                     add_tree (yyval.ttype);
-                   }
-               ;
+case 734:
+#line 3629 "parse.y"
+{ finish_handler_parms (yyvsp[-1].ttype); ;
     break;}
-case 737:
-#line 4007 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-2].ttype, 0) = TREE_CHAIN (yyvsp[-2].ttype);
-                     TREE_CHAIN (yyvsp[-2].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-2].ttype;
-                   }
-               ;
+case 735:
+#line 3631 "parse.y"
+{ finish_handler (yyvsp[-3].ttype); ;
     break;}
 case 738:
-#line 4016 "parse.y"
-{
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND (yyvsp[-4].ttype, 1) = TREE_CHAIN (yyvsp[-4].ttype);
-                     TREE_CHAIN (yyvsp[-4].ttype) = NULL_TREE;
-                     last_tree = yyvsp[-4].ttype;
-                   }
-                 else
-                   expand_end_catch_block ();
-               ;
-    break;}
-case 742:
-#line 4036 "parse.y"
+#line 3641 "parse.y"
 { expand_start_catch_block (NULL_TREE, NULL_TREE); ;
     break;}
-case 743:
-#line 4052 "parse.y"
+case 739:
+#line 3657 "parse.y"
 { check_for_new_type ("inside exception declarations", yyvsp[-1].ftype);
                  expand_start_catch_block (TREE_PURPOSE (yyvsp[-1].ftype.t),
                                            TREE_VALUE (yyvsp[-1].ftype.t)); ;
     break;}
-case 744:
-#line 4059 "parse.y"
+case 740:
+#line 3664 "parse.y"
 { tree label;
                do_label:
                  label = define_label (input_filename, lineno, yyvsp[-1].ttype);
@@ -7985,130 +7600,130 @@ case 744:
                    expand_label (label);
                ;
     break;}
-case 745:
-#line 4066 "parse.y"
+case 741:
+#line 3671 "parse.y"
 { goto do_label; ;
     break;}
-case 746:
-#line 4068 "parse.y"
+case 742:
+#line 3673 "parse.y"
 { goto do_label; ;
     break;}
-case 747:
-#line 4070 "parse.y"
+case 743:
+#line 3675 "parse.y"
 { goto do_label; ;
     break;}
-case 748:
-#line 4075 "parse.y"
+case 744:
+#line 3680 "parse.y"
 { if (yyvsp[-1].ttype) cplus_expand_expr_stmt (yyvsp[-1].ttype); ;
     break;}
-case 750:
-#line 4078 "parse.y"
+case 746:
+#line 3683 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids compound statements inside for initializations");
                ;
     break;}
-case 751:
-#line 4087 "parse.y"
+case 747:
+#line 3692 "parse.y"
 { emit_line_note (input_filename, lineno);
                  yyval.ttype = NULL_TREE; ;
     break;}
-case 752:
-#line 4090 "parse.y"
+case 748:
+#line 3695 "parse.y"
 { emit_line_note (input_filename, lineno); ;
     break;}
-case 753:
-#line 4095 "parse.y"
+case 749:
+#line 3700 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 755:
-#line 4098 "parse.y"
+case 751:
+#line 3703 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 756:
-#line 4105 "parse.y"
+case 752:
+#line 3710 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 759:
-#line 4112 "parse.y"
+case 755:
+#line 3717 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
-case 760:
-#line 4117 "parse.y"
+case 756:
+#line 3722 "parse.y"
 { yyval.ttype = build_tree_list (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
-case 761:
-#line 4122 "parse.y"
+case 757:
+#line 3727 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
     break;}
-case 762:
-#line 4124 "parse.y"
+case 758:
+#line 3729 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
-case 763:
-#line 4135 "parse.y"
+case 759:
+#line 3740 "parse.y"
 {
                  yyval.ttype = empty_parms();
                ;
     break;}
-case 765:
-#line 4140 "parse.y"
+case 761:
+#line 3745 "parse.y"
 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ftype.t, void_list_node);
                  TREE_PARMLIST (yyval.ttype) = 1; 
                  check_for_new_type ("inside parameter list", yyvsp[0].ftype); ;
     break;}
-case 766:
-#line 4149 "parse.y"
+case 762:
+#line 3754 "parse.y"
 {
                  yyval.ttype = chainon (yyval.ttype, void_list_node);
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 767:
-#line 4154 "parse.y"
+case 763:
+#line 3759 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 768:
-#line 4159 "parse.y"
+case 764:
+#line 3764 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 769:
-#line 4163 "parse.y"
+case 765:
+#line 3768 "parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); 
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 770:
-#line 4168 "parse.y"
+case 766:
+#line 3773 "parse.y"
 {
                  yyval.ttype = NULL_TREE;
                ;
     break;}
-case 771:
-#line 4172 "parse.y"
+case 767:
+#line 3777 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 772:
-#line 4176 "parse.y"
+case 768:
+#line 3781 "parse.y"
 {
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 773:
-#line 4180 "parse.y"
+case 769:
+#line 3785 "parse.y"
 {
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t);
                  TREE_PARMLIST (yyval.ttype) = 1;
                ;
     break;}
-case 774:
-#line 4185 "parse.y"
+case 770:
+#line 3790 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -8120,8 +7735,8 @@ case 774:
                  yychar = ')';
                ;
     break;}
-case 775:
-#line 4196 "parse.y"
+case 771:
+#line 3801 "parse.y"
 {
                  /* This helps us recover from really nasty
                     parse errors, for example, a missing right
@@ -8133,99 +7748,99 @@ case 775:
                  yychar = ')';
                ;
     break;}
-case 776:
-#line 4211 "parse.y"
+case 772:
+#line 3816 "parse.y"
 { maybe_snarf_defarg (); ;
     break;}
-case 777:
-#line 4213 "parse.y"
+case 773:
+#line 3818 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
-case 780:
-#line 4224 "parse.y"
+case 776:
+#line 3829 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
-case 781:
-#line 4227 "parse.y"
+case 777:
+#line 3832 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t); ;
     break;}
-case 782:
-#line 4230 "parse.y"
+case 778:
+#line 3835 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[0].ftype);
                  yyval.ttype = chainon (yyval.ttype, yyvsp[0].ftype.t); ;
     break;}
-case 783:
-#line 4233 "parse.y"
+case 779:
+#line 3838 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
-case 784:
-#line 4235 "parse.y"
+case 780:
+#line 3840 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (yyvsp[0].ttype, yyvsp[-2].ttype)); ;
     break;}
-case 786:
-#line 4241 "parse.y"
+case 782:
+#line 3846 "parse.y"
 { check_for_new_type ("in a parameter list", yyvsp[-1].ftype);
                  yyval.ttype = build_tree_list (NULL_TREE, yyvsp[-1].ftype.t); ;
     break;}
-case 787:
-#line 4251 "parse.y"
+case 783:
+#line 3856 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); ;
     break;}
-case 788:
-#line 4255 "parse.y"
+case 784:
+#line 3860 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[-1].ftype.t, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 789:
-#line 4258 "parse.y"
+case 785:
+#line 3863 "parse.y"
 { yyval.ftype.t = build_tree_list (get_decl_list (yyvsp[-1].ftype.t), yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 790:
-#line 4261 "parse.y"
+case 786:
+#line 3866 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
-case 791:
-#line 4265 "parse.y"
+case 787:
+#line 3870 "parse.y"
 { tree specs = strip_attrs (yyvsp[0].ftype.t);
                  yyval.ftype.t = build_tree_list (specs, NULL_TREE); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
-case 792:
-#line 4269 "parse.y"
+case 788:
+#line 3874 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ttype);
                  yyval.ftype.t = build_tree_list (specs, yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = 0; ;
     break;}
-case 793:
-#line 4276 "parse.y"
+case 789:
+#line 3881 "parse.y"
 { yyval.ftype.t = build_tree_list (NULL_TREE, yyvsp[0].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag;  ;
     break;}
-case 794:
-#line 4279 "parse.y"
+case 790:
+#line 3884 "parse.y"
 { yyval.ftype.t = build_tree_list (yyvsp[0].ttype, yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag;  ;
     break;}
-case 797:
-#line 4290 "parse.y"
+case 793:
+#line 3895 "parse.y"
 { see_typename (); ;
     break;}
-case 798:
-#line 4295 "parse.y"
+case 794:
+#line 3900 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  yyval.ttype = build_tree_list (integer_type_node, NULL_TREE);
                ;
     break;}
-case 799:
-#line 4300 "parse.y"
+case 795:
+#line 3905 "parse.y"
 {
                  error ("type specifier omitted for parameter");
                  if (TREE_CODE (yyval.ttype) == SCOPE_REF
@@ -8235,189 +7850,189 @@ case 799:
                  yyval.ttype = build_tree_list (integer_type_node, yyval.ttype);
                ;
     break;}
-case 800:
-#line 4312 "parse.y"
+case 796:
+#line 3917 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 801:
-#line 4314 "parse.y"
+case 797:
+#line 3919 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
-case 802:
-#line 4316 "parse.y"
+case 798:
+#line 3921 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, NULL_TREE); ;
     break;}
-case 803:
-#line 4321 "parse.y"
+case 799:
+#line 3926 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, groktypename(yyvsp[0].ftype.t)); ;
     break;}
-case 805:
-#line 4327 "parse.y"
+case 801:
+#line 3932 "parse.y"
 {
                  TREE_CHAIN (yyvsp[0].ttype) = yyval.ttype;
                  yyval.ttype = yyvsp[0].ttype;
                ;
     break;}
-case 806:
-#line 4335 "parse.y"
+case 802:
+#line 3940 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
-case 807:
-#line 4337 "parse.y"
+case 803:
+#line 3942 "parse.y"
 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 808:
-#line 4339 "parse.y"
+case 804:
+#line 3944 "parse.y"
 { yyval.ttype = make_reference_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
-case 809:
-#line 4341 "parse.y"
+case 805:
+#line 3946 "parse.y"
 { tree arg = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype);
                  yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-2].ttype, arg);
                ;
     break;}
-case 810:
-#line 4348 "parse.y"
+case 806:
+#line 3953 "parse.y"
 { got_scope = NULL_TREE; ;
     break;}
-case 811:
-#line 4353 "parse.y"
+case 807:
+#line 3958 "parse.y"
 { yyval.ttype = ansi_opname[MULT_EXPR]; ;
     break;}
-case 812:
-#line 4355 "parse.y"
+case 808:
+#line 3960 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_DIV_EXPR]; ;
     break;}
-case 813:
-#line 4357 "parse.y"
+case 809:
+#line 3962 "parse.y"
 { yyval.ttype = ansi_opname[TRUNC_MOD_EXPR]; ;
     break;}
-case 814:
-#line 4359 "parse.y"
+case 810:
+#line 3964 "parse.y"
 { yyval.ttype = ansi_opname[PLUS_EXPR]; ;
     break;}
-case 815:
-#line 4361 "parse.y"
+case 811:
+#line 3966 "parse.y"
 { yyval.ttype = ansi_opname[MINUS_EXPR]; ;
     break;}
-case 816:
-#line 4363 "parse.y"
+case 812:
+#line 3968 "parse.y"
 { yyval.ttype = ansi_opname[BIT_AND_EXPR]; ;
     break;}
-case 817:
-#line 4365 "parse.y"
+case 813:
+#line 3970 "parse.y"
 { yyval.ttype = ansi_opname[BIT_IOR_EXPR]; ;
     break;}
-case 818:
-#line 4367 "parse.y"
+case 814:
+#line 3972 "parse.y"
 { yyval.ttype = ansi_opname[BIT_XOR_EXPR]; ;
     break;}
-case 819:
-#line 4369 "parse.y"
+case 815:
+#line 3974 "parse.y"
 { yyval.ttype = ansi_opname[BIT_NOT_EXPR]; ;
     break;}
-case 820:
-#line 4371 "parse.y"
+case 816:
+#line 3976 "parse.y"
 { yyval.ttype = ansi_opname[COMPOUND_EXPR]; ;
     break;}
-case 821:
-#line 4373 "parse.y"
+case 817:
+#line 3978 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 822:
-#line 4375 "parse.y"
+case 818:
+#line 3980 "parse.y"
 { yyval.ttype = ansi_opname[LT_EXPR]; ;
     break;}
-case 823:
-#line 4377 "parse.y"
+case 819:
+#line 3982 "parse.y"
 { yyval.ttype = ansi_opname[GT_EXPR]; ;
     break;}
-case 824:
-#line 4379 "parse.y"
+case 820:
+#line 3984 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 825:
-#line 4381 "parse.y"
+case 821:
+#line 3986 "parse.y"
 { yyval.ttype = ansi_assopname[yyvsp[0].code]; ;
     break;}
-case 826:
-#line 4383 "parse.y"
+case 822:
+#line 3988 "parse.y"
 { yyval.ttype = ansi_opname [MODIFY_EXPR]; ;
     break;}
-case 827:
-#line 4385 "parse.y"
+case 823:
+#line 3990 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 828:
-#line 4387 "parse.y"
+case 824:
+#line 3992 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 829:
-#line 4389 "parse.y"
+case 825:
+#line 3994 "parse.y"
 { yyval.ttype = ansi_opname[POSTINCREMENT_EXPR]; ;
     break;}
-case 830:
-#line 4391 "parse.y"
+case 826:
+#line 3996 "parse.y"
 { yyval.ttype = ansi_opname[PREDECREMENT_EXPR]; ;
     break;}
-case 831:
-#line 4393 "parse.y"
+case 827:
+#line 3998 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ANDIF_EXPR]; ;
     break;}
-case 832:
-#line 4395 "parse.y"
+case 828:
+#line 4000 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_ORIF_EXPR]; ;
     break;}
-case 833:
-#line 4397 "parse.y"
+case 829:
+#line 4002 "parse.y"
 { yyval.ttype = ansi_opname[TRUTH_NOT_EXPR]; ;
     break;}
-case 834:
-#line 4399 "parse.y"
+case 830:
+#line 4004 "parse.y"
 { yyval.ttype = ansi_opname[COND_EXPR]; ;
     break;}
-case 835:
-#line 4401 "parse.y"
+case 831:
+#line 4006 "parse.y"
 { yyval.ttype = ansi_opname[yyvsp[0].code]; ;
     break;}
-case 836:
-#line 4403 "parse.y"
+case 832:
+#line 4008 "parse.y"
 { yyval.ttype = ansi_opname[COMPONENT_REF]; ;
     break;}
-case 837:
-#line 4405 "parse.y"
+case 833:
+#line 4010 "parse.y"
 { yyval.ttype = ansi_opname[MEMBER_REF]; ;
     break;}
-case 838:
-#line 4407 "parse.y"
+case 834:
+#line 4012 "parse.y"
 { yyval.ttype = ansi_opname[CALL_EXPR]; ;
     break;}
-case 839:
-#line 4409 "parse.y"
+case 835:
+#line 4014 "parse.y"
 { yyval.ttype = ansi_opname[ARRAY_REF]; ;
     break;}
-case 840:
-#line 4411 "parse.y"
+case 836:
+#line 4016 "parse.y"
 { yyval.ttype = ansi_opname[NEW_EXPR]; ;
     break;}
-case 841:
-#line 4413 "parse.y"
+case 837:
+#line 4018 "parse.y"
 { yyval.ttype = ansi_opname[DELETE_EXPR]; ;
     break;}
-case 842:
-#line 4415 "parse.y"
+case 838:
+#line 4020 "parse.y"
 { yyval.ttype = ansi_opname[VEC_NEW_EXPR]; ;
     break;}
-case 843:
-#line 4417 "parse.y"
+case 839:
+#line 4022 "parse.y"
 { yyval.ttype = ansi_opname[VEC_DELETE_EXPR]; ;
     break;}
-case 844:
-#line 4420 "parse.y"
+case 840:
+#line 4025 "parse.y"
 { yyval.ttype = grokoptypename (yyvsp[-1].ftype.t, yyvsp[0].ttype); ;
     break;}
-case 845:
-#line 4422 "parse.y"
+case 841:
+#line 4027 "parse.y"
 { yyval.ttype = ansi_opname[ERROR_MARK]; ;
     break;}
 }
@@ -8618,7 +8233,7 @@ yyerrhandle:
   yystate = yyn;
   goto yynewstate;
 }
-#line 4425 "parse.y"
+#line 4030 "parse.y"
 
 
 #ifdef SPEW_DEBUG
index d159fcd95131687cfb4073a7a255537bddb10394..a9821fafc8ed9343b2770a3085f7a377792845dc 100644 (file)
@@ -263,7 +263,7 @@ empty_parms ()
 %type <ttype> complete_type_name notype_identifier nonnested_type
 %type <ttype> complex_type_name nested_name_specifier_1
 %type <ttype> new_initializer new_placement
-%type <ttype> using_decl .poplevel
+%type <ttype> using_decl
 %type <ttype> typename_sub typename_sub0 typename_sub1 typename_sub2
 %type <ttype> explicit_template_type
 /* in order to recognize aggr tags as defining and thus shadowing.  */
@@ -1002,7 +1002,7 @@ paren_expr_or_null:
                         cond_stmt_keyword);
                  $$ = integer_zero_node; }
        | '(' expr ')'
-               { $$ = condition_conversion ($2); }
+                { $$ = $2; }
        ;
 
 paren_cond_or_null:
@@ -1011,7 +1011,7 @@ paren_cond_or_null:
                         cond_stmt_keyword);
                  $$ = integer_zero_node; }
        | '(' condition ')'
-               { $$ = condition_conversion ($2); }
+                { $$ = $2; }
        ;
 
 xcond:
@@ -1062,24 +1062,9 @@ compstmtend:
 
 already_scoped_stmt:
          '{'
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (COMPOUND_STMT, NULL_TREE);
-                     COMPOUND_STMT_NO_SCOPE ($<ttype>$) = 1;
-                     add_tree ($<ttype>$);
-                   }
-               }
+                { $<ttype>$ = begin_compound_stmt (1); }
          compstmtend
-               { 
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 finish_stmt (); 
-               }
+                { finish_compound_stmt (1, $<ttype>2); }
        | simple_stmt
        ;
 
@@ -3437,20 +3422,6 @@ errstmt:
          error ';'
        ;
 
-/* build the LET_STMT node before parsing its contents,
-  so that any LET_STMTs within the context can have their display pointers
-  set up to point at this one.  */
-
-.pushlevel:
-         /* empty */
-               { do_pushlevel (); }
-       ;
-
-.poplevel:
-         /* empty */
-               { $$ = do_poplevel (); }
-       ;
-
 /* Read zero or more forward-declarations for labels
    that nested functions can jump to.  */
 maybe_label_decls:
@@ -3487,92 +3458,33 @@ compstmt_or_error:
 
 compstmt:
          '{'
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (COMPOUND_STMT, NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-               }
-         .pushlevel compstmtend .poplevel
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 $$ = $5;
-               }
+                { $<ttype>$ = begin_compound_stmt (0); }
+         compstmtend 
+                { $$ = finish_compound_stmt (0, $<ttype>2); }
        ;
 
 simple_if:
          IF
                {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (IF_STMT, NULL_TREE, NULL_TREE,
-                                               NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-                  cond_stmt_keyword = "if";
-               }
-         .pushlevel paren_cond_or_null
-               {
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != $<ttype>2)
-                       {
-                         TREE_OPERAND ($<ttype>2, 0) = last_tree;
-                         TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                         last_tree = $<ttype>2;
-                       }
-                     else
-                       TREE_OPERAND ($<ttype>2, 0) = $4;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_start_cond ($4, 0);
-                   }
-               }
-         implicitly_scoped_stmt
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 1) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     $<ttype>$ = last_tree = $<ttype>2;
-                   }
+                 $<ttype>$ = begin_if_stmt ();
+                 cond_stmt_keyword = "if";
                }
+            paren_cond_or_null
+                { finish_if_stmt_cond ($3, $<ttype>2); }
+           implicitly_scoped_stmt
+                { $<ttype>$ = finish_then_clause ($<ttype>2); }
        ;
 
 implicitly_scoped_stmt:
          compstmt
-               { finish_stmt (); }
-       | .pushlevel
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (COMPOUND_STMT, NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-               }
-         simple_stmt .poplevel
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 $$ = $4;
-               }
+       |       { $<ttype>$ = begin_compound_stmt (0); }
+         simple_stmt 
+                { $$ = finish_compound_stmt (0, $<ttype>1); }
        ;
 
 stmt:
          compstmt
-               { finish_stmt (); }
+                {}
        | simple_stmt
        ;
 
@@ -3580,346 +3492,93 @@ simple_stmt:
          decl
                { finish_stmt (); }
        | expr ';'
-               {
-                 tree expr = $1;
-                 if (! processing_template_decl)
-                   {
-                     emit_line_note (input_filename, lineno);
-                     /* Do default conversion if safe and possibly important,
-                        in case within ({...}).  */
-                     if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
-                          && lvalue_p (expr))
-                         || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
-                       expr = default_conversion (expr);
-                   }
-                 cplus_expand_expr_stmt (expr);
-                 clear_momentary ();
-                 finish_stmt (); }
+                { finish_expr_stmt ($1); }
        | simple_if ELSE
-               { if (! processing_template_decl) expand_start_else (); }
+                { begin_else_clause (); }
          implicitly_scoped_stmt
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>1, 2) = TREE_CHAIN ($<ttype>1);
-                     TREE_CHAIN ($<ttype>1) = NULL_TREE;
-                     last_tree = $<ttype>1;
-                   }
-                 else
-                   expand_end_cond ();
+                { 
+                 finish_else_clause ($<ttype>1); 
+                 finish_if_stmt ();
                }
-         .poplevel
-               { finish_stmt (); }
        | simple_if  %prec IF
-               { if (! processing_template_decl) expand_end_cond ();
-                 do_poplevel ();
-                 finish_stmt (); }
+                { finish_if_stmt (); }
        | WHILE
                {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (WHILE_STMT, NULL_TREE, NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-                 else
-                   {
-                     emit_nop ();
-                     emit_line_note (input_filename, lineno);
-                     expand_start_loop (1); 
-                   }
+                 $<ttype>$ = begin_while_stmt ();
                  cond_stmt_keyword = "while";
                }
-         .pushlevel paren_cond_or_null
-               {
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != $<ttype>2)
-                       {
-                         TREE_OPERAND ($<ttype>2, 0) = last_tree;
-                         TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                         last_tree = $<ttype>2;
-                       }
-                     else
-                       TREE_OPERAND ($<ttype>2, 0) = $4;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_exit_loop_if_false (0, $4);
-                   }
-
-                 /* If the condition wasn't a declaration, clear out the
-                    block we made for it and start a new one here so the
-                    optimization in expand_end_loop will work.  */
-                 if (getdecls () == NULL_TREE)
-                   {
-                     do_poplevel ();
-                     do_pushlevel ();
-                   }
-               }
-         already_scoped_stmt .poplevel
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 1) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 else
-                   expand_end_loop ();
-                 finish_stmt ();
-               }
+         paren_cond_or_null
+                { finish_while_stmt_cond ($3, $<ttype>2); }
+         already_scoped_stmt
+                { finish_while_stmt ($<ttype>2); }
        | DO
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (DO_STMT, NULL_TREE, NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-                 else
-                   {
-                     emit_nop ();
-                     emit_line_note (input_filename, lineno);
-                     expand_start_loop_continue_elsewhere (1);
-                   }
-               }
+                { $<ttype>$ = begin_do_stmt (); }
          implicitly_scoped_stmt WHILE
                {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 else
-                   {
-                     expand_loop_continue_here ();
-                     cond_stmt_keyword = "do";
-                   }
+                 finish_do_body ($<ttype>2);
+                 cond_stmt_keyword = "do";
                }
          paren_expr_or_null ';'
-               {
-                 if (processing_template_decl)
-                   TREE_OPERAND ($<ttype>2, 1) = $6;
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_exit_loop_if_false (0, $6);
-                     expand_end_loop ();
-                   }
-                 clear_momentary ();
-                 finish_stmt ();
-               }
+                { finish_do_stmt ($6, $<ttype>2); }
        | FOR
-               { if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE, 
-                                               NULL_TREE, NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-                  else
-                   emit_line_note (input_filename, lineno);
-                 if (flag_new_for_scope > 0)
-                   {
-                     /* Conditionalize .pushlevel */
-                     pushlevel (0);
-                     note_level_for_for ();
-                     clear_last_expr ();
-                     push_momentary ();
-                     expand_start_bindings (0);
-                   }
-               }
+                { $<ttype>$ = begin_for_stmt (); }
          '(' for.init.statement
-               {
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != $<ttype>2)
-                       {
-                         TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                         TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                         last_tree = $<ttype>2;
-                       }
-                   }
-                 else
-                   {
-                     emit_nop ();
-                     emit_line_note (input_filename, lineno);
-                     expand_start_loop_continue_elsewhere (1); 
-                   }
-               }
-         .pushlevel xcond ';'
-               {
-                 if (processing_template_decl)
-                   {
-                     if (last_tree != $<ttype>2)
-                       {
-                         TREE_OPERAND ($<ttype>2, 1) = last_tree;
-                         TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                         last_tree = $<ttype>2;
-                       }
-                     else
-                       TREE_OPERAND ($<ttype>2, 1) = $7;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     if ($7) expand_exit_loop_if_false (0, $7);
-                   }
-
-                 /* If the condition wasn't a declaration, clear out the
-                    block we made for it and start a new one here so the
-                    optimization in expand_end_loop will work.  */
-                 if (getdecls () == NULL_TREE)
-                   {
-                     do_poplevel ();
-                     do_pushlevel ();
-                   }
-               }
+                { finish_for_init_stmt ($<ttype>2); }
+         xcond ';'
+                { finish_for_cond ($6, $<ttype>2); }
          xexpr ')'
-               /* Don't let the tree nodes for $10 be discarded
-                  by clear_momentary during the parsing of the next stmt.  */
-               {
-                 if (processing_template_decl)
-                   TREE_OPERAND ($<ttype>2, 2) = $10;
-                 push_momentary ();
-               }
-         already_scoped_stmt .poplevel
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 3) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_loop_continue_here ();
-                     if ($10) cplus_expand_expr_stmt ($10);
-                     expand_end_loop ();
-                   }
-                 pop_momentary ();
-                 if (flag_new_for_scope > 0)
-                   {
-                     do_poplevel ();
-                   }
-                 finish_stmt (); }
-       | SWITCH .pushlevel '(' condition ')'
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (SWITCH_STMT, $4, NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     c_expand_start_case ($4);
-                   }
-                 push_switch ();
-                 /* Don't let the tree nodes for $4 be discarded by
-                    clear_momentary during the parsing of the next stmt.  */
-                 push_momentary ();
-               }
+                { finish_for_expr ($9, $<ttype>2); }
+         already_scoped_stmt
+                { finish_for_stmt ($9, $<ttype>2); }
+       | SWITCH 
+                { begin_switch_stmt (); }
+           '(' condition ')'
+                { $<ttype>$ = finish_switch_cond ($4); }
          implicitly_scoped_stmt
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>6, 1) = TREE_CHAIN ($<ttype>6);
-                     TREE_CHAIN ($<ttype>6) = NULL_TREE;
-                     last_tree = $<ttype>6;
-                   }
-                 else
-                   expand_end_case ($4);
-                 pop_momentary ();
-                 pop_switch (); 
-               }
-         .poplevel
-               { finish_stmt (); }
+                { finish_switch_stmt ($4, $<ttype>6); }
        | CASE expr_no_commas ':'
-               { do_case ($2, NULL_TREE); }
+                { finish_case_label ($2, NULL_TREE); }
          stmt
        | CASE expr_no_commas ELLIPSIS expr_no_commas ':'
-               { do_case ($2, $4); }
+                { finish_case_label ($2, $4); }
          stmt
        | DEFAULT ':'
-               { do_case (NULL_TREE, NULL_TREE); }
+               { finish_case_label (NULL_TREE, NULL_TREE); }
          stmt
        | BREAK ';'
-               { emit_line_note (input_filename, lineno);
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (BREAK_STMT));
-                 else if ( ! expand_exit_something ())
-                   error ("break statement not within loop or switch"); }
+                { finish_break_stmt (); }
        | CONTINUE ';'
-               { emit_line_note (input_filename, lineno);
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (CONTINUE_STMT));
-                 else if (! expand_continue_loop (0))
-                   error ("continue statement not within a loop"); }
+                { finish_continue_stmt (); }
        | RETURN ';'
-               { emit_line_note (input_filename, lineno);
-                 c_expand_return (NULL_TREE); }
+                { finish_return_stmt (NULL_TREE); }
        | RETURN expr ';'
-               { emit_line_note (input_filename, lineno);
-                 c_expand_return ($2);
-                 finish_stmt ();
-               }
+                { finish_return_stmt ($2); }
        | asm_keyword maybe_cv_qualifier '(' string ')' ';'
-               { if (TREE_CHAIN ($4)) $4 = combine_strings ($4);
-                 emit_line_note (input_filename, lineno);
-                 expand_asm ($4);
-                 finish_stmt ();
+               { 
+                 finish_asm_stmt ($2, $4, NULL_TREE, NULL_TREE,
+                                  NULL_TREE); 
                }
        /* This is the case with just output operands.  */
        | asm_keyword maybe_cv_qualifier '(' string ':' asm_operands ')' ';'
-               { if (TREE_CHAIN ($4)) $4 = combine_strings ($4);
-                 emit_line_note (input_filename, lineno);
-                 c_expand_asm_operands ($4, $6, NULL_TREE, NULL_TREE,
-                                        $2 == ridpointers[(int)RID_VOLATILE],
-                                        input_filename, lineno);
-                 finish_stmt ();
+               { 
+                 finish_asm_stmt ($2, $4, $6, NULL_TREE,
+                                  NULL_TREE); 
                }
        /* This is the case with input operands as well.  */
        | asm_keyword maybe_cv_qualifier '(' string ':' asm_operands ':' asm_operands ')' ';'
-               { if (TREE_CHAIN ($4)) $4 = combine_strings ($4);
-                 emit_line_note (input_filename, lineno);
-                 c_expand_asm_operands ($4, $6, $8, NULL_TREE,
-                                        $2 == ridpointers[(int)RID_VOLATILE],
-                                        input_filename, lineno);
-                 finish_stmt ();
-               }
+               { finish_asm_stmt ($2, $4, $6, $8, NULL_TREE); }
        /* This is the case with clobbered registers as well.  */
        | asm_keyword maybe_cv_qualifier '(' string ':' asm_operands ':'
          asm_operands ':' asm_clobbers ')' ';'
-               { if (TREE_CHAIN ($4)) $4 = combine_strings ($4);
-                 emit_line_note (input_filename, lineno);
-                 c_expand_asm_operands ($4, $6, $8, $10,
-                                        $2 == ridpointers[(int)RID_VOLATILE],
-                                        input_filename, lineno);
-                 finish_stmt ();
-               }
+               { finish_asm_stmt ($2, $4, $6, $8, $10); }
        | GOTO '*' expr ';'
-               {
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (GOTO_STMT, $3));
-                 else
-                   { emit_line_note (input_filename, lineno);
-                     expand_computed_goto ($3); }
+                { 
+                 if (pedantic)
+                   pedwarn ("ANSI C++ forbids computed gotos");
+                 finish_goto_stmt ($3);
                }
        | GOTO identifier ';'
-               {
-                 if (processing_template_decl)
-                   add_tree (build_min_nt (GOTO_STMT, $2));
-                 else
-                   {
-                     tree decl;
-                     emit_line_note (input_filename, lineno);
-                     decl = lookup_label ($2);
-                     TREE_USED (decl) = 1;
-                     expand_goto (decl); 
-                   }
-               }
+                { finish_goto_stmt ($2); }
        | label_colon stmt
                { finish_stmt (); }
        | label_colon '}'
@@ -3951,41 +3610,11 @@ function_try_block:
 
 try_block:
          TRY
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (TRY_BLOCK, NULL_TREE,
-                                               NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-                 else
-                   {
-                     emit_line_note (input_filename, lineno);
-                     expand_start_try_stmts ();
-                   }
-               }
+                { $<ttype>$ = begin_try_block (); }
          compstmt
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 else
-                   expand_start_all_catch ();
-               }
+                { finish_try_block ($<ttype>2); }
          handler_seq
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 1) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 else
-                   expand_end_all_catch ();
-               }
+                { finish_handler_sequence ($<ttype>2); }
        ;
 
 handler_seq:
@@ -3995,35 +3624,11 @@ handler_seq:
 
 handler:
          CATCH
-               {
-                 if (processing_template_decl)
-                   {
-                     $<ttype>$ = build_min_nt (HANDLER, NULL_TREE,
-                                               NULL_TREE);
-                     add_tree ($<ttype>$);
-                   }
-               }
-         .pushlevel handler_args
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 0) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-               }         
+                { $<ttype>$ = begin_handler(); }
+          handler_args
+                { finish_handler_parms ($<ttype>2); }
          compstmt
-               {
-                 if (processing_template_decl)
-                   {
-                     TREE_OPERAND ($<ttype>2, 1) = TREE_CHAIN ($<ttype>2);
-                     TREE_CHAIN ($<ttype>2) = NULL_TREE;
-                     last_tree = $<ttype>2;
-                   }
-                 else
-                   expand_end_catch_block ();
-               }         
-         .poplevel
+                { finish_handler ($<ttype>2); }
        ;
 
 type_specifier_seq:
index 13fd811c785a2a9c333bd090396fbd35c5583fa4..865893e720e7ce02d62c2daedfc7e7069cb58cb1 100644 (file)
@@ -4690,24 +4690,14 @@ tsubst_expr (t, args, in_decl)
     {
     case RETURN_STMT:
       lineno = TREE_COMPLEXITY (t);
-      emit_line_note (input_filename, lineno);
-      c_expand_return
-       (tsubst_expr (TREE_OPERAND (t, 0), args, in_decl));
-      finish_stmt ();
+      finish_return_stmt (tsubst_expr (RETURN_EXPR (t),
+                                      args, in_decl));
       break;
 
     case EXPR_STMT:
       lineno = TREE_COMPLEXITY (t);
-      emit_line_note (input_filename, lineno);
-      t = tsubst_expr (TREE_OPERAND (t, 0), args, in_decl);
-      /* Do default conversion if safe and possibly important,
-        in case within ({...}).  */
-      if ((TREE_CODE (TREE_TYPE (t)) == ARRAY_TYPE && lvalue_p (t))
-         || TREE_CODE (TREE_TYPE (t)) == FUNCTION_TYPE)
-       t = default_conversion (t);
-      cplus_expand_expr_stmt (t);
-      clear_momentary ();
-      finish_stmt ();
+      finish_expr_stmt (tsubst_expr (EXPR_STMT_EXPR (t),
+                                    args, in_decl));
       break;
 
     case DECL_STMT:
@@ -4731,184 +4721,117 @@ tsubst_expr (t, args, in_decl)
     case FOR_STMT:
       {
        tree tmp;
-       int init_scope = (flag_new_for_scope > 0 && TREE_OPERAND (t, 0)
-                         && TREE_CODE (TREE_OPERAND (t, 0)) == DECL_STMT);
-       int cond_scope = (TREE_OPERAND (t, 1)
-                         && TREE_CODE (TREE_OPERAND (t, 1)) == DECL_STMT);
-
        lineno = TREE_COMPLEXITY (t);
-       emit_line_note (input_filename, lineno);
-       if (init_scope)
-         do_pushlevel ();
-       for (tmp = TREE_OPERAND (t, 0); tmp; tmp = TREE_CHAIN (tmp))
-         tsubst_expr (tmp, args, in_decl);
-       emit_nop ();
-       emit_line_note (input_filename, lineno);
-       expand_start_loop_continue_elsewhere (1); 
-
-       if (cond_scope)
-         do_pushlevel ();
-       tmp = tsubst_expr (TREE_OPERAND (t, 1), args, in_decl);
-       emit_line_note (input_filename, lineno);
-       if (tmp)
-         expand_exit_loop_if_false (0, condition_conversion (tmp));
 
-       if (! cond_scope)
-         do_pushlevel ();
-       tsubst_expr (TREE_OPERAND (t, 3), args, in_decl);
-       do_poplevel ();
-
-       emit_line_note (input_filename, lineno);
-       expand_loop_continue_here ();
-       tmp = tsubst_expr (TREE_OPERAND (t, 2), args, in_decl);
-       if (tmp)
-         cplus_expand_expr_stmt (tmp);
-
-       expand_end_loop ();
-       if (init_scope)
-         do_poplevel ();
-       finish_stmt ();
+       begin_for_stmt ();
+       for (tmp = FOR_INIT_STMT (t); tmp; tmp = TREE_CHAIN (tmp))
+         tsubst_expr (tmp, args, in_decl);
+       finish_for_init_stmt (NULL_TREE);
+       finish_for_cond (tsubst_expr (FOR_COND (t), args,
+                                     in_decl),
+                        NULL_TREE);
+       tmp = tsubst_expr (FOR_EXPR (t), args, in_decl);
+       finish_for_expr (tmp, NULL_TREE);
+       tsubst_expr (FOR_BODY (t), args, in_decl);
+       finish_for_stmt (tmp, NULL_TREE);
       }
       break;
 
     case WHILE_STMT:
       {
-       tree cond;
-
        lineno = TREE_COMPLEXITY (t);
-       emit_nop ();
-       emit_line_note (input_filename, lineno);
-       expand_start_loop (1); 
-
-       cond = TREE_OPERAND (t, 0);
-       if (TREE_CODE (cond) == DECL_STMT)
-         do_pushlevel ();
-       cond = tsubst_expr (cond, args, in_decl);
-       emit_line_note (input_filename, lineno);
-       expand_exit_loop_if_false (0, condition_conversion (cond));
-
-       if (TREE_CODE (TREE_OPERAND (t, 0)) != DECL_STMT)
-         do_pushlevel ();
-       tsubst_expr (TREE_OPERAND (t, 1), args, in_decl);
-       do_poplevel ();
-
-       expand_end_loop ();
-       finish_stmt ();
+       begin_while_stmt ();
+       finish_while_stmt_cond (tsubst_expr (WHILE_COND (t),
+                                            args, in_decl),
+                               NULL_TREE);
+       tsubst_expr (WHILE_BODY (t), args, in_decl);
+       finish_while_stmt (NULL_TREE);
       }
       break;
 
     case DO_STMT:
       {
-       tree cond;
-
        lineno = TREE_COMPLEXITY (t);
-       emit_nop ();
-       emit_line_note (input_filename, lineno);
-       expand_start_loop_continue_elsewhere (1); 
-
-       tsubst_expr (TREE_OPERAND (t, 0), args, in_decl);
-       expand_loop_continue_here ();
-
-       cond = tsubst_expr (TREE_OPERAND (t, 1), args, in_decl);
-       emit_line_note (input_filename, lineno);
-       expand_exit_loop_if_false (0, condition_conversion (cond));
-       expand_end_loop ();
-
-       clear_momentary ();
-       finish_stmt ();
+       begin_do_stmt ();
+       tsubst_expr (DO_BODY (t), args, in_decl);
+       finish_do_body (NULL_TREE);
+       finish_do_stmt (tsubst_expr (DO_COND (t), args,
+                                    in_decl),
+                       NULL_TREE);
       }
       break;
 
     case IF_STMT:
       {
        tree tmp;
-       int cond_scope = (TREE_CODE (TREE_OPERAND (t, 0)) == DECL_STMT);
 
        lineno = TREE_COMPLEXITY (t);
-       if (cond_scope)
-         do_pushlevel ();
-       tmp = tsubst_expr (TREE_OPERAND (t, 0), args, in_decl);
-       emit_line_note (input_filename, lineno);
-       expand_start_cond (condition_conversion (tmp), 0);
-       
-       if (tmp = TREE_OPERAND (t, 1), tmp)
-         tsubst_expr (tmp, args, in_decl);
+       begin_if_stmt ();
+       finish_if_stmt_cond (tsubst_expr (IF_COND (t),
+                                         args, in_decl),
+                            NULL_TREE);
 
-       if (tmp = TREE_OPERAND (t, 2), tmp)
+       if (tmp = THEN_CLAUSE (t), tmp)
          {
-           expand_start_else ();
            tsubst_expr (tmp, args, in_decl);
+           finish_then_clause (NULL_TREE);
          }
 
-       expand_end_cond ();
-
-       if (cond_scope)
-         do_poplevel ();
+       if (tmp = ELSE_CLAUSE (t), tmp)
+         {
+           begin_else_clause ();
+           tsubst_expr (tmp, args, in_decl);
+           finish_else_clause (NULL_TREE);
+         }
 
-       finish_stmt ();
+       finish_if_stmt ();
       }
       break;
 
     case COMPOUND_STMT:
       {
-       tree substmt = TREE_OPERAND (t, 0);
+       tree substmt;
 
        lineno = TREE_COMPLEXITY (t);
-
-       if (COMPOUND_STMT_NO_SCOPE (t) == 0)
-         do_pushlevel ();
-
-       for (; substmt; substmt = TREE_CHAIN (substmt))
+       begin_compound_stmt (COMPOUND_STMT_NO_SCOPE (t));
+       for (substmt = COMPOUND_BODY (t); 
+            substmt != NULL_TREE;
+            substmt = TREE_CHAIN (substmt))
          tsubst_expr (substmt, args, in_decl);
-
-       if (COMPOUND_STMT_NO_SCOPE (t) == 0)
-         return do_poplevel ();
+       return finish_compound_stmt (COMPOUND_STMT_NO_SCOPE (t), 
+                                    NULL_TREE);
       }
       break;
 
     case BREAK_STMT:
       lineno = TREE_COMPLEXITY (t);
-      emit_line_note (input_filename, lineno);
-      if (! expand_exit_something ())
-       error ("break statement not within loop or switch");
+      finish_break_stmt ();
       break;
 
     case CONTINUE_STMT:
       lineno = TREE_COMPLEXITY (t);
-      emit_line_note (input_filename, lineno);
-      if (! expand_continue_loop (0))
-       error ("continue statement not within a loop");
+      finish_continue_stmt ();
       break;
 
     case SWITCH_STMT:
       {
        tree val, tmp;
-       int cond_scope = (TREE_CODE (TREE_OPERAND (t, 0)) == DECL_STMT);
 
        lineno = TREE_COMPLEXITY (t);
-       if (cond_scope)
-         do_pushlevel ();
-       val = tsubst_expr (TREE_OPERAND (t, 0), args, in_decl);
-       emit_line_note (input_filename, lineno);
-       c_expand_start_case (val);
-       push_switch ();
+       begin_switch_stmt ();
+       val = tsubst_expr (SWITCH_COND (t), args, in_decl);
+       finish_switch_cond (val);
        
        if (tmp = TREE_OPERAND (t, 1), tmp)
          tsubst_expr (tmp, args, in_decl);
 
-       expand_end_case (val);
-       pop_switch ();
-
-       if (cond_scope)
-         do_poplevel ();
-
-       finish_stmt ();
+       finish_switch_stmt (val, NULL_TREE);
       }
       break;
 
     case CASE_LABEL:
-      do_case (tsubst_expr (TREE_OPERAND (t, 0), args, in_decl),
-              tsubst_expr (TREE_OPERAND (t, 1), args, in_decl));
+      finish_case_label (tsubst_expr (CASE_LOW (t), args, in_decl),
+                        tsubst_expr (CASE_HIGH (t), args, in_decl));
       break;
 
     case LABEL_DECL:
@@ -4920,47 +4843,47 @@ tsubst_expr (t, args, in_decl)
 
     case GOTO_STMT:
       lineno = TREE_COMPLEXITY (t);
-      emit_line_note (input_filename, lineno);
-      if (TREE_CODE (TREE_OPERAND (t, 0)) == IDENTIFIER_NODE)
-       {
-         tree decl = lookup_label (TREE_OPERAND (t, 0));
-         TREE_USED (decl) = 1;
-         expand_goto (decl);
-       }
-      else
-       expand_computed_goto
-         (tsubst_expr (TREE_OPERAND (t, 0), args, in_decl));
+      finish_goto_stmt (tsubst_expr (GOTO_DESTINATION (t),
+                                    args, in_decl));
+      break;
+
+    case ASM_STMT:
+      lineno = TREE_COMPLEXITY (t);
+      finish_asm_stmt (tsubst_expr (ASM_CV_QUAL (t), args, in_decl),
+                      tsubst_expr (ASM_STRING (t), args, in_decl),
+                      tsubst_expr (ASM_OUTPUTS (t), args, in_decl),
+                      tsubst_expr (ASM_INPUTS (t), args, in_decl), 
+                      tsubst_expr (ASM_CLOBBERS (t), args, in_decl));
       break;
 
     case TRY_BLOCK:
       lineno = TREE_COMPLEXITY (t);
-      emit_line_note (input_filename, lineno);
-      expand_start_try_stmts ();
-      tsubst_expr (TREE_OPERAND (t, 0), args, in_decl);
-      expand_start_all_catch ();
+      begin_try_block ();
+      tsubst_expr (TRY_STMTS (t), args, in_decl);
+      finish_try_block (NULL_TREE);
       {
-       tree handler = TREE_OPERAND (t, 1);
+       tree handler = TRY_HANDLERS (t);
        for (; handler; handler = TREE_CHAIN (handler))
          tsubst_expr (handler, args, in_decl);
       }
-      expand_end_all_catch ();
+      finish_handler_sequence (NULL_TREE);
       break;
 
     case HANDLER:
       lineno = TREE_COMPLEXITY (t);
-      do_pushlevel ();
-      if (TREE_OPERAND (t, 0))
+      begin_handler ();
+      if (HANDLER_PARMS (t))
        {
-         tree d = TREE_OPERAND (t, 0);
+         tree d = HANDLER_PARMS (t);
          expand_start_catch_block
            (tsubst (TREE_OPERAND (d, 1), args, in_decl),
             tsubst (TREE_OPERAND (d, 0), args, in_decl));
        }
       else
        expand_start_catch_block (NULL_TREE, NULL_TREE);
-      tsubst_expr (TREE_OPERAND (t, 1), args, in_decl);
-      expand_end_catch_block ();
-      do_poplevel ();
+      finish_handler_parms (NULL_TREE);
+      tsubst_expr (HANDLER_BODY (t), args, in_decl);
+      finish_handler (NULL_TREE);
       break;
 
     case TAG_DEFN:
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
new file mode 100644 (file)
index 0000000..f302246
--- /dev/null
@@ -0,0 +1,748 @@
+/* Perform the semantic phase of parsing, i.e., the process of
+   building tree structure, checking semantic consistency, and
+   building RTL.  These routines are used both during actual parsing
+   and during the instantiation of template functions. 
+
+   Copyright (C) 1998 Free Software Foundation, Inc.
+   Written by Mark Mitchell (mmitchell@usa.net) based on code found
+   formerly in parse.y and pt.c.  
+
+   This file is part of GNU CC.
+
+   GNU CC 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 2, or (at your option)
+   any later version.
+   
+   GNU CC 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 GNU CC; see the file COPYING.  If not, write to the Free
+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.  */
+
+#include "config.h"
+#include <stdio.h>
+#include "tree.h"
+#include "cp-tree.h"
+#include "except.h"
+#include "lex.h"
+
+/* There routines provide a modular interface to perform many parsing
+   operations.  They may therefore be used during actual parsing, or
+   during template instantiation, which may be regarded as a
+   degenerate form of parsing.  Since the current g++ parser is
+   lacking in several respects, and will be reimplemented, we are
+   attempting to move most code that is not directly related to
+   parsing into this file; that will make implementing the new parser
+   much easier since it will be able to make use of these routines.  */
+
+/* When parsing a template, LAST_TREE contains the last statement
+   parsed.  These are chained together through the TREE_CHAIN field,
+   but often need to be re-organized since the parse is performed
+   bottom-up.  This macro makes LAST_TREE the indicated SUBSTMT of
+   STMT.  */
+
+#define RECHAIN_STMTS(stmt, substmt, last)     \
+  do {                                         \
+    substmt = last;                            \
+    TREE_CHAIN (stmt) = NULL_TREE;             \
+    last_tree = stmt;                          \
+  } while (0)
+
+#define RECHAIN_STMTS_FROM_LAST(stmt, substmt) \
+  RECHAIN_STMTS (stmt, substmt, last_tree)
+
+#define RECHAIN_STMTS_FROM_CHAIN(stmt, substmt)        \
+  RECHAIN_STMTS (stmt, substmt, TREE_CHAIN (stmt))
+
+/* Finish an expression-statement, whose EXPRESSION is as indicated.  */
+
+void 
+finish_expr_stmt (expr)
+     tree expr;
+{
+  if (!processing_template_decl)
+    {
+      emit_line_note (input_filename, lineno);
+      /* Do default conversion if safe and possibly important,
+        in case within ({...}).  */
+      if ((TREE_CODE (TREE_TYPE (expr)) == ARRAY_TYPE
+          && lvalue_p (expr))
+         || TREE_CODE (TREE_TYPE (expr)) == FUNCTION_TYPE)
+       expr = default_conversion (expr);
+    }
+  
+  cplus_expand_expr_stmt (expr);
+  clear_momentary ();
+  finish_stmt ();
+}
+
+/* Begin an if-statement.  Returns a newly created IF_STMT if
+   appropriate.  */
+
+tree
+begin_if_stmt ()
+{
+  tree r;
+
+  if (processing_template_decl)
+    {
+      r = build_min_nt (IF_STMT, NULL_TREE, NULL_TREE, NULL_TREE);
+      add_tree (r);
+    }
+  else
+    r = NULL_TREE;
+
+  do_pushlevel ();
+
+  return r;
+}
+
+/* Process the COND of an if-statement, which may be given by
+   IF_STMT.  */
+
+void 
+finish_if_stmt_cond (cond, if_stmt)
+     tree cond;
+     tree if_stmt;
+{
+  if (processing_template_decl)
+    {
+      if (last_tree != if_stmt)
+       RECHAIN_STMTS_FROM_LAST (if_stmt, IF_COND (if_stmt));
+      else
+       IF_COND (if_stmt) = cond;
+    }
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      expand_start_cond (condition_conversion (cond), 0);
+    }
+}
+
+/* Finish the then-clause of an if-statement, which may be given by
+   IF_STMT.  */
+
+tree
+finish_then_clause (if_stmt)
+     tree if_stmt;
+{
+  if (processing_template_decl)
+    {
+      RECHAIN_STMTS_FROM_CHAIN (if_stmt, 
+                               THEN_CLAUSE (if_stmt));
+      last_tree = if_stmt;
+      return if_stmt;
+    }
+  else
+    return NULL_TREE;
+}
+
+/* Begin the else-clause of an if-statement.  */
+
+void 
+begin_else_clause ()
+{
+  if (!processing_template_decl)
+    expand_start_else ();
+}
+
+/* Finish the else-clause of an if-statement, which may be given by
+   IF_STMT.  */
+
+void
+finish_else_clause (if_stmt)
+     tree if_stmt;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (if_stmt, ELSE_CLAUSE (if_stmt));
+}
+
+/* Finsh an if-statement.  */
+
+void 
+finish_if_stmt ()
+{
+  if (!processing_template_decl)
+    expand_end_cond ();
+
+  do_poplevel ();
+  finish_stmt ();
+}
+
+/* Begin a while-statement.  Returns a newly created WHILE_STMT if
+   appropriate.  */
+
+tree
+begin_while_stmt ()
+{
+  tree r;
+
+  if (processing_template_decl)
+    {
+      r = build_min_nt (WHILE_STMT, NULL_TREE, NULL_TREE);
+      add_tree (r);
+    }
+  else
+    {
+      emit_nop ();
+      emit_line_note (input_filename, lineno);
+      expand_start_loop (1); 
+      r = NULL_TREE;
+    }
+
+  do_pushlevel ();
+
+  return r;
+}
+
+/* Process the COND of an if-statement, which may be given by
+   WHILE_STMT.  */
+
+void 
+finish_while_stmt_cond (cond, while_stmt)
+     tree cond;
+     tree while_stmt;
+{
+  if (processing_template_decl)
+    {
+      if (last_tree != while_stmt)
+       RECHAIN_STMTS_FROM_LAST (while_stmt, 
+                                     WHILE_COND (while_stmt)); 
+      else
+       TREE_OPERAND (while_stmt, 0) = cond;
+    }
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      expand_exit_loop_if_false (0, condition_conversion (cond));
+    }
+
+  /* If COND wasn't a declaration, clear out the
+     block we made for it and start a new one here so the
+     optimization in expand_end_loop will work.  */
+  if (getdecls () == NULL_TREE)
+    {
+      do_poplevel ();
+      do_pushlevel ();
+    }
+}
+
+/* Finish a while-statement, which may be given by WHILE_STMT.  */
+
+void 
+finish_while_stmt (while_stmt)
+     tree while_stmt;
+{
+  do_poplevel ();
+
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (while_stmt, WHILE_BODY (while_stmt));
+  else
+    expand_end_loop ();
+  finish_stmt ();
+}
+
+/* Begin a do-statement.  Returns a newly created DO_STMT if
+   appropriate.  */
+
+tree
+begin_do_stmt ()
+{
+  if (processing_template_decl)
+    {
+      tree r = build_min_nt (DO_STMT, NULL_TREE, NULL_TREE);
+      add_tree (r);
+      return r;
+    }
+  else
+    {
+      emit_nop ();
+      emit_line_note (input_filename, lineno);
+      expand_start_loop_continue_elsewhere (1);
+      return NULL_TREE;
+    }
+}
+
+/* Finish the body of a do-statement, which may be given by DO_STMT.  */
+
+void
+finish_do_body (do_stmt)
+     tree do_stmt;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (do_stmt, DO_BODY (do_stmt));
+  else
+    expand_loop_continue_here ();
+}
+
+/* Finish a do-statement, which may be given by DO_STMT, and whose
+   COND is as indicated.  */
+
+void
+finish_do_stmt (cond, do_stmt)
+     tree cond;
+     tree do_stmt;
+{
+  if (processing_template_decl)
+    DO_COND (do_stmt) = cond;
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      expand_exit_loop_if_false (0, condition_conversion (cond));
+      expand_end_loop ();
+    }
+
+  clear_momentary ();
+  finish_stmt ();
+}
+
+/* Finish a return-statement.  The EXPRESSION returned, if any, is as
+   indicated.  */
+
+void
+finish_return_stmt (expr)
+     tree expr;
+{
+  emit_line_note (input_filename, lineno);
+  c_expand_return (expr);
+  finish_stmt ();
+}
+
+/* Begin a for-statement.  Returns a new FOR_STMT if appropriate.  */
+
+tree
+begin_for_stmt ()
+{
+  tree r;
+
+  if (processing_template_decl)
+    {
+      r = build_min_nt (FOR_STMT, NULL_TREE, NULL_TREE, 
+                       NULL_TREE, NULL_TREE);
+      add_tree (r);
+    }
+  else
+    r = NULL_TREE;
+
+  if (flag_new_for_scope > 0)
+    {
+      do_pushlevel ();
+      note_level_for_for ();
+    }
+
+  return r;
+}
+
+/* Finish the for-init-statement of a for-statement, which may be
+   given by FOR_STMT.  */
+
+void
+finish_for_init_stmt (for_stmt)
+     tree for_stmt;
+{
+  if (processing_template_decl)
+    {
+      if (last_tree != for_stmt)
+       RECHAIN_STMTS_FROM_CHAIN (for_stmt, FOR_INIT_STMT (for_stmt));
+    }
+  else
+    {
+      emit_nop ();
+      emit_line_note (input_filename, lineno);
+      expand_start_loop_continue_elsewhere (1); 
+    }
+
+  do_pushlevel ();
+}
+
+/* Finish the COND of a for-statement, which may be given by
+   FOR_STMT.  */
+
+void
+finish_for_cond (cond, for_stmt)
+     tree cond;
+     tree for_stmt;
+{
+  if (processing_template_decl)
+    {
+      if (last_tree != for_stmt)
+       RECHAIN_STMTS_FROM_LAST (for_stmt, FOR_COND (for_stmt));
+      else
+       FOR_COND (for_stmt) = cond;
+    }
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      if (cond) 
+       expand_exit_loop_if_false (0, cond);
+    }
+  
+  /* If the cond wasn't a declaration, clear out the
+     block we made for it and start a new one here so the
+     optimization in expand_end_loop will work.  */
+  if (getdecls () == NULL_TREE)
+    {
+      do_poplevel ();
+      do_pushlevel ();
+    }  
+}
+
+/* Finish the increment-EXPRESSION in a for-statement, which may be
+   given by FOR_STMT.  */
+
+void
+finish_for_expr (expr, for_stmt)
+     tree expr;
+     tree for_stmt;
+{
+  if (processing_template_decl)
+    FOR_EXPR (for_stmt) = expr;
+
+  /* Don't let the tree nodes for EXPR be discarded
+     by clear_momentary during the parsing of the next stmt.  */
+  push_momentary ();
+}
+
+/* Finish the body of a for-statement, which may be given by
+   FOR_STMT.  The increment-EXPR for the loop must be
+   provided.  */
+
+void
+finish_for_stmt (expr, for_stmt)
+     tree expr;
+     tree for_stmt;
+{
+  /* Pop the scope for the body of the loop.  */
+  do_poplevel ();
+
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (for_stmt, FOR_BODY (for_stmt));
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      expand_loop_continue_here ();
+      if (expr) 
+       cplus_expand_expr_stmt (expr);
+      expand_end_loop ();
+    }
+
+  pop_momentary ();
+
+  if (flag_new_for_scope > 0)
+    do_poplevel ();
+
+  finish_stmt (); 
+}
+
+/* Finish a break-statement.  */
+
+void
+finish_break_stmt ()
+{
+  emit_line_note (input_filename, lineno);
+  if (processing_template_decl)
+    add_tree (build_min_nt (BREAK_STMT));
+  else if ( ! expand_exit_something ())
+    cp_error ("break statement not within loop or switch");
+}
+
+/* Finish a continue-statement.  */
+
+void
+finish_continue_stmt ()
+{
+  emit_line_note (input_filename, lineno);
+  if (processing_template_decl)
+    add_tree (build_min_nt (CONTINUE_STMT));
+  else if (! expand_continue_loop (0))
+    cp_error ("continue statement not within a loop");   
+}
+
+/* Begin a switch-statement.  */
+
+void
+begin_switch_stmt ()
+{
+  do_pushlevel ();
+}
+
+/* Finish the cond of a switch-statement.  Returns a new
+   SWITCH_STMT if appropriate.  */ 
+
+tree
+finish_switch_cond (cond)
+     tree cond;
+{
+  tree r;
+
+  if (processing_template_decl)
+    {
+      r = build_min_nt (SWITCH_STMT, cond, NULL_TREE);
+      add_tree (r);
+    }
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      c_expand_start_case (cond);
+      r = NULL_TREE;
+    }
+  push_switch ();
+
+  /* Don't let the tree nodes for COND be discarded by
+     clear_momentary during the parsing of the next stmt.  */
+  push_momentary ();
+
+  return r;
+}
+
+/* Finish the body of a switch-statement, which may be given by
+   SWITCH_STMT.  The COND to switch on is indicated.  */
+
+void
+finish_switch_stmt (cond, switch_stmt)
+     tree cond;
+     tree switch_stmt;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (switch_stmt, SWITCH_BODY (switch_stmt));
+  else
+    expand_end_case (cond);
+  pop_momentary ();
+  pop_switch (); 
+  do_poplevel ();
+  finish_stmt ();
+}
+
+/* Finish a case-label.  */
+
+void 
+finish_case_label (low_value, high_value)
+     tree low_value;
+     tree high_value;
+{
+  do_case (low_value, high_value);
+}
+
+
+/* Finish a goto-statement.  */
+
+void
+finish_goto_stmt (destination)
+     tree destination;
+{
+  if (processing_template_decl)
+    add_tree (build_min_nt (GOTO_STMT, destination));
+  else
+    {
+      emit_line_note (input_filename, lineno);
+
+      if (TREE_CODE (destination) == IDENTIFIER_NODE)
+       {
+         tree decl = lookup_label (destination);
+         TREE_USED (decl) = 1;
+         expand_goto (decl); 
+       }
+      else
+       expand_computed_goto (destination);
+    }
+}
+
+/* Begin a try-block.  Returns a newly-created TRY_BLOCK if
+   appropriate.  */
+
+tree
+begin_try_block ()
+{
+  if (processing_template_decl)
+    {
+      tree r = build_min_nt (TRY_BLOCK, NULL_TREE,
+                            NULL_TREE);
+      add_tree (r);
+      return r;
+    }
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      expand_start_try_stmts ();
+      return NULL_TREE;
+    }
+}
+
+/* Finish a try-block, which may be given by TRY_BLOCK.  */
+
+void
+finish_try_block (try_block)
+     tree try_block;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_LAST (try_block, TRY_STMTS (try_block));
+  else
+    expand_start_all_catch ();  
+}
+
+/* Finish a handler-sequence for a try-block, which may be given by
+   TRY_BLOCK.  */
+
+void
+finish_handler_sequence (try_block)
+     tree try_block;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (try_block, TRY_HANDLERS (try_block));
+  else
+    expand_end_all_catch ();
+}
+
+/* Begin a handler.  Returns a HANDLER if appropriate.  */
+
+tree
+begin_handler ()
+{
+  tree r;
+
+  if (processing_template_decl)
+    {
+      r = build_min_nt (HANDLER, NULL_TREE, NULL_TREE);
+      add_tree (r);
+    }
+  else
+    r = NULL_TREE;
+
+  do_pushlevel ();
+
+  return r;
+}
+
+/* Finish the handler-parameters for a handler, which may be given by
+   HANDLER.  */
+
+void
+finish_handler_parms (handler)
+     tree handler;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (handler, HANDLER_PARMS (handler));
+}
+
+/* Finish a handler, which may be given by HANDLER.  */
+
+void
+finish_handler (handler)
+     tree handler;
+{
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (handler, HANDLER_BODY (handler));
+  else
+    expand_end_catch_block ();
+
+  do_poplevel ();
+}
+
+/* Begin a compound-statement.  If HAS_NO_SCOPE is non-zero, the
+   compound-statement does not define a scope.  Returns a new
+   COMPOUND_STMT if appropriate.  */
+
+tree
+begin_compound_stmt (has_no_scope)
+     int has_no_scope;
+{
+  tree r; 
+
+  if (processing_template_decl)
+    {
+      r = build_min_nt (COMPOUND_STMT, NULL_TREE);
+      add_tree (r);
+      if (has_no_scope)
+       COMPOUND_STMT_NO_SCOPE (r) = 1;
+    }
+  else
+    r = NULL_TREE;
+
+  if (!has_no_scope)
+    do_pushlevel ();
+
+  return r;
+}
+
+
+/* Finish a compound-statement, which may be given by COMPOUND_STMT.
+   If HAS_NO_SCOPE is non-zero, the compound statement does not define
+   a scope.  */
+
+tree
+finish_compound_stmt (has_no_scope, compound_stmt)
+     int has_no_scope;
+     tree compound_stmt;
+{
+  tree r;
+
+  if (!has_no_scope)
+    r = do_poplevel ();
+  else
+    r = NULL_TREE;
+
+  if (processing_template_decl)
+    RECHAIN_STMTS_FROM_CHAIN (compound_stmt, 
+                             COMPOUND_BODY (compound_stmt));
+
+  finish_stmt ();
+
+  return r;
+}
+
+/* Finish an asm-statement, whose components are a CV_QUALIFIER, a
+   STRING, some OUTPUT_OPERANDS, some INPUT_OPERANDS, and some
+   CLOBBERS.  */
+
+void
+finish_asm_stmt (cv_qualifier, string, output_operands,
+                     input_operands, clobbers)
+     tree cv_qualifier;
+     tree string;
+     tree output_operands;
+     tree input_operands;
+     tree clobbers;
+{
+  if (TREE_CHAIN (string))
+    combine_strings (string);
+
+  if (processing_template_decl)
+    {
+      tree r = build_min_nt (ASM_STMT, cv_qualifier, string,
+                            output_operands, input_operands,
+                            clobbers);
+      add_tree (r);
+    }
+  else
+    {
+      emit_line_note (input_filename, lineno);
+      if (output_operands != NULL_TREE)
+       {
+         if (cv_qualifier != NULL_TREE
+             && cv_qualifier != ridpointers[(int) RID_VOLATILE])
+           cp_warning ("%s qualifier ignored on asm",
+                       IDENTIFIER_POINTER (cv_qualifier));
+           
+         c_expand_asm_operands (string, output_operands,
+                                input_operands, 
+                                clobbers,
+                                cv_qualifier 
+                                == ridpointers[(int) RID_VOLATILE],
+                                input_filename, lineno);
+       }
+      else
+       {
+         if (cv_qualifier != NULL_TREE)
+           cp_warning ("%s qualifier ignored on asm",
+                       IDENTIFIER_POINTER (cv_qualifier));
+         expand_asm (string);
+       }
+
+      finish_stmt ();
+    }
+}