Makefile.in (tree.o): Depend on ggc.h.
authorMark Mitchell <mark@codesourcery.com>
Tue, 7 Sep 1999 16:07:42 +0000 (16:07 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Tue, 7 Sep 1999 16:07:42 +0000 (16:07 +0000)
* Makefile.in (tree.o): Depend on ggc.h.
* class.c (make_method_vec): Remove.
(free_method_vec): Likewise.
(free_method_vecs): Remove.
(add_method): Don't use them.
* cp-tree.def (PTRMEM_CST): Make it longer.
(TEMPLATE_PARM_INDEX): Make it shorter.
* cp-tree.h (BINDING_HAS_LEVEL_P): New macro.
(template_parm_index): Remove RTL field.
(ptrmem_cst): Add RTL field.
(finish_function): Removed parameter.
(process_next_inline): Change prototype.
(init_cplus_unsave): Rename to init_tree.
(binding_init): Remove.
* decl.c (free_binding_nodes): Remove.
(push_binding): Don't use them.  Set BINDING_HAS_LEVEL_P.
(pop_binding): Don't use free_binding_nodes.
(free_binding_vecs): Remove.
(store_bindings): Don't use them.
(pop_from_top_level): Likewise.
(lookup_namespace_name): Simplify.
(build_typename_type): Don't use obstack_free.
(unqualified_namespace_lookup): Simplify.
(lookup_name_real): Simplify.
(start_function): Remove comment about leaks.
(finish_function): Removed nested parameter.  Call
expand_end_bindings even when building_stmt_tree.
Call ggc_push_context and ggc_pop_context around
rest_of_compilation, if necessary.
(mark_cp_function_context): Handle a NULL language-context.
(lang_mark_false_label_stack): Fix typo.
(lang_mark_tree): Handle CPLUS_BINDING, OVERLOAD,
TEMPLATE_PARM_INDEX.  Handle the funny TYPE_LANG_SPECIFIC on
pointer to method types.
(lang_cleanup_tree): Use free to free TYPE_LANG_SPECIFIC.
* decl2.c (finish_objects): Adjust call to finish_function.
(finish_static_store_duration_function): Likewise.
(do_nonmember_using_decl): Remove call to binding_init.
* except.c (end_anon_func): Adjust call to finish_function.
* lex.c (mark_impl_file_chain): New function.
(init_parse): Call init_tree, not init_cplus_unsave.
Add GC roots.
(cp_pramga_interface): Use xmalloc, not permalloc.
(cp_pragma_implementation): Likewise.
(begin_definition_of_inclass_inline): Simplify.
(process_next_inline): Adjust prototype.
(do_scoped_id): Don't call binding_init.
(make_lang_type): Allocate TYPE_LANG_SPECIFIC with xmalloc.
(emit_thunk): Adjust call to finish_function.
(synthesize_method): Likewise.
* parse.y (%union): Add a new `pi' variant.
(PRE_PARSED_FUNCTION_DECL): Use it.
(fn.defpen): Likewise.
(fndef): Adjust call to finish_function.
(instantiate_decl): Likewise.
(rtti.c): Likewise.
(semantics.c): Likewise.
* tree.c: Include ggc.h.
(mark_list_hash): New function.
(binding_init): Remove.
(init_cplus_unsave): Rename to ...
(init_tree): This.  Add GC roots.

From-SVN: r29172

13 files changed:
gcc/cp/ChangeLog
gcc/cp/Makefile.in
gcc/cp/class.c
gcc/cp/cp-tree.def
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/decl2.c
gcc/cp/except.c
gcc/cp/lex.c
gcc/cp/parse.c
gcc/cp/parse.h
gcc/cp/parse.y
gcc/cp/tree.c

index ff3696eb35bcf8f711877b942199a2e7f6cf04a1..996ee3e4c9fa7d410a6c4e911fcd1e4f519af329 100644 (file)
@@ -1,3 +1,68 @@
+1999-09-07  Mark Mitchell  <mark@codesourcery.com>
+
+       * Makefile.in (tree.o): Depend on ggc.h.
+       * class.c (make_method_vec): Remove.
+       (free_method_vec): Likewise.
+       (free_method_vecs): Remove.
+       (add_method): Don't use them.
+       * cp-tree.def (PTRMEM_CST): Make it longer.
+       (TEMPLATE_PARM_INDEX): Make it shorter.
+       * cp-tree.h (BINDING_HAS_LEVEL_P): New macro.
+       (template_parm_index): Remove RTL field.
+       (ptrmem_cst): Add RTL field.
+       (finish_function): Removed parameter.
+       (process_next_inline): Change prototype.
+       (init_cplus_unsave): Rename to init_tree.
+       (binding_init): Remove.
+       * decl.c (free_binding_nodes): Remove.
+       (push_binding): Don't use them.  Set BINDING_HAS_LEVEL_P.
+       (pop_binding): Don't use free_binding_nodes.
+       (free_binding_vecs): Remove.
+       (store_bindings): Don't use them.
+       (pop_from_top_level): Likewise.
+       (lookup_namespace_name): Simplify.
+       (build_typename_type): Don't use obstack_free.
+       (unqualified_namespace_lookup): Simplify.
+       (lookup_name_real): Simplify.
+       (start_function): Remove comment about leaks.
+       (finish_function): Removed nested parameter.  Call
+       expand_end_bindings even when building_stmt_tree.
+       Call ggc_push_context and ggc_pop_context around
+       rest_of_compilation, if necessary.
+       (mark_cp_function_context): Handle a NULL language-context.
+       (lang_mark_false_label_stack): Fix typo.
+       (lang_mark_tree): Handle CPLUS_BINDING, OVERLOAD,
+       TEMPLATE_PARM_INDEX.  Handle the funny TYPE_LANG_SPECIFIC on
+       pointer to method types.
+       (lang_cleanup_tree): Use free to free TYPE_LANG_SPECIFIC.
+       * decl2.c (finish_objects): Adjust call to finish_function.
+       (finish_static_store_duration_function): Likewise.
+       (do_nonmember_using_decl): Remove call to binding_init.
+       * except.c (end_anon_func): Adjust call to finish_function.
+       * lex.c (mark_impl_file_chain): New function.
+       (init_parse): Call init_tree, not init_cplus_unsave.
+       Add GC roots.
+       (cp_pramga_interface): Use xmalloc, not permalloc.
+       (cp_pragma_implementation): Likewise.
+       (begin_definition_of_inclass_inline): Simplify.
+       (process_next_inline): Adjust prototype.
+       (do_scoped_id): Don't call binding_init.
+       (make_lang_type): Allocate TYPE_LANG_SPECIFIC with xmalloc.
+       (emit_thunk): Adjust call to finish_function.
+       (synthesize_method): Likewise.
+       * parse.y (%union): Add a new `pi' variant.
+       (PRE_PARSED_FUNCTION_DECL): Use it.
+       (fn.defpen): Likewise.
+       (fndef): Adjust call to finish_function.
+       (instantiate_decl): Likewise.
+       (rtti.c): Likewise.
+       (semantics.c): Likewise.
+       * tree.c: Include ggc.h.
+       (mark_list_hash): New function.
+       (binding_init): Remove.
+       (init_cplus_unsave): Rename to ...
+       (init_tree): This.  Add GC roots.
+       
 1999-09-05  Mark Mitchell  <mark@codesourcery.com>
 
        Get ready for garbage collection.
index 07e0f83286103f624302ad6354a310fe7d31b6a0..621567b59d008ca611bd94ac4c800b3eda4852f5 100644 (file)
@@ -271,7 +271,7 @@ cvt.o : cvt.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h decl.h \
 search.o : search.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../stack.h \
   $(srcdir)/../flags.h $(srcdir)/../system.h $(srcdir)/../toplev.h
 tree.o : tree.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \
-  $(srcdir)/../system.h $(srcdir)/../toplev.h
+  $(srcdir)/../system.h $(srcdir)/../toplev.h $(srcdir)/../ggc.h
 ptree.o : ptree.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../system.h
 rtti.o : rtti.c $(CONFIG_H) $(CXX_TREE_H) $(srcdir)/../flags.h \
   $(srcdir)/../system.h $(srcdir)/../toplev.h
index 7b508703d0fc18bb54d67e699fddf2de3f00a10e..ab417f505ea0db50113e3b56808a4c130daa74a9 100644 (file)
@@ -115,8 +115,6 @@ static void finish_struct_methods PROTO((tree));
 static void maybe_warn_about_overly_private_class PROTO ((tree));
 static int field_decl_cmp PROTO ((const tree *, const tree *));
 static int method_name_cmp PROTO ((const tree *, const tree *));
-static tree make_method_vec PROTO((int));
-static void free_method_vec PROTO((tree));
 static tree add_implicitly_declared_members PROTO((tree, int, int, int));
 static tree fixed_type_or_null PROTO((tree, int *));
 static tree resolve_address_of_overloaded_function PROTO((tree, tree, int,
@@ -1066,46 +1064,6 @@ add_virtual_function (pv, phv, has_virtual, fndecl, t)
 struct obstack class_obstack;
 extern struct obstack *current_obstack;
 
-/* These are method vectors that were too small for the number of
-   methods in some class, and so were abandoned.  */
-static tree free_method_vecs;
-
-/* Returns a method vector with enough room for N methods.  N should
-   be a power of two.  */
-
-static tree
-make_method_vec (n)
-     int n;
-{
-  tree new_vec;
-  tree* t;
-  
-  for (t = &free_method_vecs; *t; t = &(TREE_CHAIN (*t)))
-    /* Note that we don't use >= n here because we don't want to
-       allocate a very large vector where it isn't needed.  */
-    if (TREE_VEC_LENGTH (*t) == n)
-      {
-       new_vec = *t;
-       *t = TREE_CHAIN (new_vec);
-       TREE_CHAIN (new_vec) = NULL_TREE;
-       bzero ((PTR) &TREE_VEC_ELT (new_vec, 0), n * sizeof (tree));
-       return new_vec;
-      }
-
-  new_vec = make_tree_vec (n);
-  return new_vec;
-}
-
-/* Free the method vector VEC.  */
-
-static void
-free_method_vec (vec)
-     tree vec;
-{
-  TREE_CHAIN (vec) = free_method_vecs;
-  free_method_vecs = vec;
-}
-
 /* Add method METHOD to class TYPE.
 
    If non-NULL, FIELDS is the entry in the METHOD_VEC vector entry of
@@ -1141,9 +1099,8 @@ add_method (type, fields, method)
           memory making the links in the list than we would by
           over-allocating the size of the vector here.  Furthermore,
           we would complicate all the code that expects this to be a
-          vector.  We keep a free list of vectors that we outgrew so
-          that we don't really waste any memory.  */
-       CLASSTYPE_METHOD_VEC (type) = make_method_vec (8);
+          vector.  */
+       CLASSTYPE_METHOD_VEC (type) = make_tree_vec (8);
 
       method_vec = CLASSTYPE_METHOD_VEC (type);
       len = TREE_VEC_LENGTH (method_vec);
@@ -1165,11 +1122,10 @@ add_method (type, fields, method)
          if (slot == len)
            {
              /* We need a bigger method vector.  */
-             tree new_vec = make_method_vec (2 * len);
+             tree new_vec = make_tree_vec (2 * len);
              bcopy ((PTR) &TREE_VEC_ELT (method_vec, 0),
                     (PTR) &TREE_VEC_ELT (new_vec, 0),
                     len * sizeof (tree));
-             free_method_vec (method_vec);
              len = 2 * len;
              method_vec = CLASSTYPE_METHOD_VEC (type) = new_vec;
            }
index e864c7863fcb6bd77d8aa6d8b8033ac025e1d434..3322786ce2c53722befc29de87bb7419bc31de37 100644 (file)
@@ -32,7 +32,7 @@ DEFTREECODE (OFFSET_REF, "offset_ref", 'r', 2)
 /* A pointer-to-member constant.  For a pointer-to-member constant
    `X::Y' The PTRMEM_CST_CLASS is the RECORD_TYPE for `X' and the
    PTRMEM_CST_MEMBER is the _DECL for `Y'.  */
-DEFTREECODE (PTRMEM_CST, "ptrmem_cst", 'c', 1)
+DEFTREECODE (PTRMEM_CST, "ptrmem_cst", 'c', 2)
 
 /* For NEW_EXPR, operand 0 is the placement list.
    Operand 1 is the new-declarator.
@@ -130,7 +130,7 @@ DEFTREECODE (TEMPLATE_PARM_INDEX, "template_parm_index", 'x',
                expression is to ensure against the case where
                sizeof(char*) does not evenly divide
                sizeof(HOST_WIDE_INT).  */
-            2 + ((3 * sizeof (HOST_WIDE_INT) + sizeof(char*) - 1)
+            1 + ((3 * sizeof (HOST_WIDE_INT) + sizeof(char*) - 1)
                  / sizeof (char*)))
 
 /* Index into a template parameter list.  This parameter must be a type.
index 14231e803b6c476e8b5cff2ba614c6b4c0036e10..d7ca7a7ea80feb577e90473ed9ac6f3a1cbf8f59 100644 (file)
@@ -54,6 +54,7 @@ Boston, MA 02111-1307, USA.  */
       BINFO_FIELDS_MARKED.
       TYPE_VIRTUAL_P.
       ICS_THIS_FLAG (in _CONV)
+      BINDING_HAS_LEVEL_P (In CPLUS_BINDING)
    3: TYPE_USES_VIRTUAL_BASECLASSES (in a class TYPE).
       BINFO_VTABLE_PATH_MARKED.
       BINFO_PUSHDECLS_MARKED.
@@ -139,8 +140,6 @@ typedef struct
 typedef struct 
 {
   char common[sizeof (struct tree_common)];
-  struct rtx_def *rtl; /* Unused, but required to match up with what
-                          the middle-end expects.  */
   HOST_WIDE_INT index;
   HOST_WIDE_INT level;
   HOST_WIDE_INT orig_level;
@@ -150,6 +149,9 @@ typedef struct
 typedef struct ptrmem_cst
 {
   char common[sizeof (struct tree_common)];
+  /* This isn't used, but the middle-end expects all constants to have 
+     this field.  */
+  struct rtx_def *rtl;
   tree member;
 }* ptrmem_cst_t;
 
@@ -168,6 +170,9 @@ typedef struct ptrmem_cst
    BINDING_LEVEL is used instead.  */
 #define BINDING_SCOPE(NODE) (((struct tree_binding*)NODE)->scope.scope)
 
+/* Nonzero if NODE has BINDING_LEVEL, rather than BINDING_SCOPE.  */
+#define BINDING_HAS_LEVEL_P(NODE) TREE_LANG_FLAG_2 ((NODE))
+
 /* This is the declaration bound to the name. Possible values:
    variable, overloaded function, namespace, template, enumerator.  */
 #define BINDING_VALUE(NODE)    (((struct tree_binding*)NODE)->value)
@@ -3174,7 +3179,7 @@ extern int start_function                 PROTO((tree, tree, tree, int));
 extern void expand_start_early_try_stmts       PROTO((void));
 extern void store_parm_decls                   PROTO((void));
 extern void store_return_init                  PROTO((tree));
-extern void finish_function                    PROTO((int, int, int));
+extern void finish_function                    PROTO((int, int));
 extern tree start_method                       PROTO((tree, tree, tree));
 extern tree finish_method                      PROTO((tree));
 extern void hack_incomplete_structures         PROTO((tree));
@@ -3376,7 +3381,7 @@ extern void reinit_parse_for_function             PROTO((void));
 extern void print_parse_statistics             PROTO((void));
 extern void extract_interface_info             PROTO((void));
 extern void do_pending_inlines                 PROTO((void));
-extern void process_next_inline                        PROTO((tree));
+extern void process_next_inline                        PROTO((struct pending_inline *));
 extern struct pending_input *save_pending_input PROTO((void));
 extern void restore_pending_input              PROTO((struct pending_input *));
 extern void yyungetc                           PROTO((int, int));
@@ -3640,7 +3645,7 @@ extern int yylex                          PROTO((void));
 extern tree arbitrate_lookup                   PROTO((tree, tree, tree));
 
 /* in tree.c */
-extern void init_cplus_unsave                  PROTO((void));
+extern void init_tree                          PROTO((void));
 extern void cplus_unsave_expr_now               PROTO((tree));
 extern int pod_type_p                          PROTO((tree));
 extern void unshare_base_binfos                        PROTO((tree));
@@ -3670,7 +3675,6 @@ extern tree reverse_path                  PROTO((tree));
 extern int count_functions                     PROTO((tree));
 extern int is_overloaded_fn                    PROTO((tree));
 extern tree get_first_fn                       PROTO((tree));
-extern tree binding_init                        PROTO((struct tree_binding*));
 extern int bound_pmf_p                         PROTO((tree));
 extern tree ovl_cons                            PROTO((tree, tree));
 extern tree scratch_ovl_cons                    PROTO((tree, tree));
index 93558bb6435a4b558060f549c6cabfa18915e2c4..b5c5806444c8be66d019dfaaa6bda8d8e57836e0 100644 (file)
@@ -946,11 +946,6 @@ pushlevel_temporary (tag_transparent)
 #define BINDING_LEVEL(NODE) \
    (((struct tree_binding*)NODE)->scope.level)
 
-/* These are currently unused, but permanent, CPLUS_BINDING nodes.
-   They are kept here because they are allocated from the permanent
-   obstack and cannot be easily freed.  */
-static tree free_binding_nodes;
-
 /* Make DECL the innermost binding for ID.  The LEVEL is the binding
    level at which this declaration is being bound.  */
 
@@ -962,21 +957,7 @@ push_binding (id, decl, level)
 {
   tree binding;
 
-  if (!free_binding_nodes)
-    {
-      /* There are no free nodes, so we must build one here.  */
-      push_permanent_obstack ();
-      binding = make_node (CPLUS_BINDING);
-      pop_obstacks ();
-    }
-  else
-    {
-      /* There are nodes on the free list.  Grab the first one.  */
-      binding = free_binding_nodes;
-      
-      /* And update the free list.  */
-      free_binding_nodes = TREE_CHAIN (free_binding_nodes);
-    }
+  binding = make_node (CPLUS_BINDING);
 
   /* Now, fill in the binding information.  */
   BINDING_VALUE (binding) = decl;
@@ -984,6 +965,7 @@ push_binding (id, decl, level)
   BINDING_LEVEL (binding) = level;
   INHERITED_VALUE_BINDING_P (binding) = 0;
   LOCAL_BINDING_P (binding) = (level != class_binding_level);
+  BINDING_HAS_LEVEL_P (binding) = 1;
 
   /* And put it on the front of the list of bindings for ID.  */
   TREE_CHAIN (binding) = IDENTIFIER_BINDING (id);
@@ -1210,15 +1192,9 @@ pop_binding (id, decl)
     my_friendly_abort (0);
 
   if (!BINDING_VALUE (binding) && !BINDING_TYPE (binding))
-    {
-      /* We're completely done with the innermost binding for this
-        identifier.  Unhook it from the list of bindings.  */
-      IDENTIFIER_BINDING (id) = TREE_CHAIN (binding);
-
-      /* And place it on the free list.  */
-      TREE_CHAIN (binding) = free_binding_nodes;
-      free_binding_nodes = binding;
-    }
+    /* We're completely done with the innermost binding for this
+       identifier.  Unhook it from the list of bindings.  */
+    IDENTIFIER_BINDING (id) = TREE_CHAIN (binding);
 }
 
 /* When a label goes out of scope, check to see if that label was used
@@ -2424,11 +2400,6 @@ mark_saved_scope (arg)
     }
 }
 
-/* A chain of the binding vecs created by store_bindings.  We create a
-   whole bunch of these during compilation, on permanent_obstack, so we
-   can't just throw them away.  */
-static tree free_binding_vecs;
-
 static tree
 store_bindings (names, old_bindings)
      tree names, old_bindings;
@@ -2454,13 +2425,7 @@ store_bindings (names, old_bindings)
        if (TREE_VEC_ELT (t1, 0) == id)
          goto skip_it;
 
-      if (free_binding_vecs)
-       {
-         binding = free_binding_vecs;
-         free_binding_vecs = TREE_CHAIN (free_binding_vecs);
-       }
-      else
-       binding = make_tree_vec (4);
+      binding = make_tree_vec (4);
 
       if (id)
        {
@@ -2567,9 +2532,8 @@ pop_from_top_level ()
   VARRAY_FREE (current_lang_base);
 
   scope_chain = s->prev;
-  for (t = s->old_bindings; t; )
+  for (t = s->old_bindings; t; t = TREE_CHAIN (t))
     {
-      tree save = t;
       tree id = TREE_VEC_ELT (t, 0);
       if (id)
        {
@@ -2577,9 +2541,6 @@ pop_from_top_level ()
          IDENTIFIER_BINDING (id) = TREE_VEC_ELT (t, 2);
          IDENTIFIER_CLASS_VALUE (id) = TREE_VEC_ELT (t, 3);
        }
-      t = TREE_CHAIN (t);
-      TREE_CHAIN (save) = free_binding_vecs;
-      free_binding_vecs = save;
     }
 
   if (current_lang_name == lang_name_cplusplus)
@@ -5262,7 +5223,6 @@ tree
 lookup_namespace_name (namespace, name)
      tree namespace, name;
 {
-  struct tree_binding _b;
   tree val;
   tree template_id = NULL_TREE;
 
@@ -5293,7 +5253,7 @@ lookup_namespace_name (namespace, name)
 
   my_friendly_assert (TREE_CODE (name) == IDENTIFIER_NODE, 373);
   
-  val = binding_init (&_b);
+  val = make_node (CPLUS_BINDING);
   if (!qualified_lookup_using_namespace (name, namespace, val, 0))
     return error_mark_node;
 
@@ -5425,12 +5385,7 @@ build_typename_type (context, name, fullname, base_type)
   /* See if we already have this type.  */
   e = hash_lookup (&ht, t, /*create=*/false, /*copy=*/0);
   if (e)
-    {
-      /* This will free not only TREE_TYPE, but the lang-specific data
-        and the TYPE_DECL as well.  */
-      obstack_free (&permanent_obstack, t);
-      t = (tree) e->key;
-    }
+    t = (tree) e->key;
   else
     /* Insert the type into the table.  */
     hash_lookup (&ht, t, /*create=*/true, /*copy=*/0);
@@ -5571,8 +5526,7 @@ unqualified_namespace_lookup (name, flags, spacesp)
      int flags;
      tree *spacesp;
 {
-  struct tree_binding _binding;
-  tree b = binding_init (&_binding);
+  tree b = make_node (CPLUS_BINDING);
   tree initial = current_decl_namespace();
   tree scope = initial;
   tree siter;
@@ -5750,8 +5704,7 @@ lookup_name_real (name, prefer_type, nonclass, namespaces_only)
            type = global_namespace;
          if (TREE_CODE (type) == NAMESPACE_DECL)
            {
-             struct tree_binding b;
-             val = binding_init (&b);
+             val = make_node (CPLUS_BINDING);
              flags |= LOOKUP_COMPLAIN;
              if (!qualified_lookup_using_namespace (name, type, val, flags))
                return NULL_TREE;
@@ -12930,11 +12883,7 @@ static int function_depth;
    For C++, we must first check whether that datum makes any sense.
    For example, "class A local_a(1,2);" means that variable local_a
    is an aggregate of type A, which should have a constructor
-   applied to it with the argument list [1, 2].
-
-   @@ There is currently no way to retrieve the storage
-   @@ allocated to FUNCTION (or all of its parms) if we return
-   @@ something we had previously.  */
+   applied to it with the argument list [1, 2].  */
 
 int
 start_function (declspecs, declarator, attrs, pre_parsed_p)
@@ -13550,16 +13499,12 @@ store_return_init (decl)
      2 - INCLASS_INLINE
        We just finished processing the body of an in-class inline
        function definition.  (This processing will have taken place
-       after the class definition is complete.)
-
-   NESTED is nonzero if we were in the middle of compiling another function
-   when we started on this one.  */
+       after the class definition is complete.)  */
 
 void
-finish_function (lineno, flags, nested)
+finish_function (lineno, flags)
      int lineno;
      int flags;
-     int nested;
 {
   register tree fndecl = current_function_decl;
   tree fntype, ctype = NULL_TREE;
@@ -13570,15 +13515,14 @@ finish_function (lineno, flags, nested)
   int call_poplevel = (flags & 1) != 0;
   int inclass_inline = (flags & 2) != 0;
   int expand_p;
+  int nested;
 
   /* When we get some parse errors, we can end up without a
      current_function_decl, so cope.  */
   if (fndecl == NULL_TREE)
     return;
 
-  if (function_depth > 1)
-    nested = 1;
-
+  nested = function_depth > 1;
   fntype = TREE_TYPE (fndecl);
 
 /*  TREE_READONLY (fndecl) = 1;
@@ -13600,6 +13544,15 @@ finish_function (lineno, flags, nested)
          expand_end_bindings (decls, decls != NULL_TREE, 0);
          poplevel (decls != NULL_TREE, 0, 0);
        }
+
+      /* Because we do not call expand_function_end, we won't call
+        expand_end_bindings to match the call to
+        expand_start_bindings we did in store_parm_decls.  Therefore,
+        we explicitly call expand_end_bindings here.  However, we
+        really shouldn't be calling expand_start_bindings at all when
+        building_stmt_tree; it's conceptually an RTL-generation
+        function, rather than a front-end function.  */
+      expand_end_bindings (0, 0, 0);
     }
   else
     {
@@ -14041,9 +13994,16 @@ finish_function (lineno, flags, nested)
           function is gone.  See save_tree_status.  */
        flag_keep_inline_functions = 1;
 
+      /* If this is a nested function (like a template instantiation
+        that we're compiling in the midst of compiling something
+        else), push a new GC context.  That will keep local variables
+        on the stack from being collected while we're doing the
+        compilation of this function.  */
+      if (function_depth > 1)
+       ggc_push_context ();
+
       /* Run the optimizers and output the assembler code for this
          function.  */
-
       if (DECL_ARTIFICIAL (fndecl))
        {
          /* Do we really *want* to inline this synthesized method?  */
@@ -14061,6 +14021,10 @@ finish_function (lineno, flags, nested)
       else
        rest_of_compilation (fndecl);
 
+      /* Undo the call to ggc_push_context above.  */
+      if (function_depth > 1)
+       ggc_pop_context ();
+
       flag_keep_inline_functions = saved_flag_keep_inline_functions;
 
       if (DECL_SAVED_INSNS (fndecl) && ! TREE_ASM_WRITTEN (fndecl))
@@ -14557,6 +14521,9 @@ mark_cp_function_context (f)
 {
   struct language_function *p = f->language;
 
+  if (!p)
+    return;
+
   ggc_mark_tree (p->x_named_labels);
   ggc_mark_tree (p->x_ctor_label);
   ggc_mark_tree (p->x_dtor_label);
@@ -14588,7 +14555,7 @@ lang_mark_false_label_stack (l)
      struct label_node *l;
 {
   /* C++ doesn't use false_label_stack.  It better be NULL.  */
-  my_friendly_assert (l != NULL, 19990904);
+  my_friendly_assert (l == NULL, 19990904);
 }
 
 void
@@ -14611,6 +14578,18 @@ lang_mark_tree (t)
          ggc_mark_tree (li2->error_locus);
        }
     }
+  else if (code == CPLUS_BINDING)
+    {
+      if (BINDING_HAS_LEVEL_P (t))
+       mark_binding_level (&BINDING_LEVEL (t));
+      else
+       ggc_mark_tree (BINDING_SCOPE (t));
+      ggc_mark_tree (BINDING_VALUE (t));
+    }
+  else if (code == OVERLOAD)
+    ggc_mark_tree (OVL_FUNCTION (t));
+  else if (code == TEMPLATE_PARM_INDEX)
+    ggc_mark_tree (TEMPLATE_PARM_DECL (t));
   else if (TREE_CODE_CLASS (code) == 'd')
     {
       struct lang_decl *ld = DECL_LANG_SPECIFIC (t);
@@ -14635,7 +14614,8 @@ lang_mark_tree (t)
     {
       struct lang_type *lt = TYPE_LANG_SPECIFIC (t);
 
-      if (lt)
+      if (lt && !(TREE_CODE (t) == POINTER_TYPE 
+                 && TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE))
        {
          ggc_mark_tree (lt->vfields);
          ggc_mark_tree (lt->vbases);
@@ -14647,7 +14627,12 @@ lang_mark_tree (t)
          ggc_mark_tree (lt->rtti);
          ggc_mark_tree (lt->methods);
          ggc_mark_tree (lt->template_info);
+         ggc_mark_tree (lt->befriending_classes);
        }
+      else if (lt)
+       /* In the case of pointer-to-member function types, the
+          TYPE_LANG_SPECIFIC is really just a tree.  */
+       ggc_mark_tree ((tree) lt);
     }
 }
 
@@ -14656,11 +14641,8 @@ lang_cleanup_tree (t)
      tree t;
 {
   if (TREE_CODE_CLASS (TREE_CODE (t)) == 't'
-      && TYPE_LANG_SPECIFIC (t) != NULL)
-    {
-#if 0
-      /* This is currently allocated with an obstack.  This will change.  */
-      free (TYPE_LANG_SPECIFIC (t));
-#endif
-    }
+      && TYPE_LANG_SPECIFIC (t) != NULL
+      && !(TREE_CODE (t) == POINTER_TYPE 
+                 && TREE_CODE (TREE_TYPE (t)) == METHOD_TYPE))
+    free (TYPE_LANG_SPECIFIC (t));
 }
index 169eba2566fe20c5a3d390ec3830a4d1303c9543..6ca93f9c0248f8bff6c9170679a09ce3a1329e44 100644 (file)
@@ -2860,7 +2860,7 @@ finish_objects (method_type, initp)
   expand_end_bindings (getdecls (), 1, 0);
   poplevel (1, 0, 0);
   pop_momentary ();
-  finish_function (lineno, 0, 0);
+  finish_function (lineno, 0);
 
   if (initp == DEFAULT_INIT_PRIORITY)
     {
@@ -3111,7 +3111,7 @@ finish_static_storage_duration_function ()
   expand_end_bindings (getdecls (), 1, 0);
   poplevel (1, 0, 0);
   pop_momentary ();
-  finish_function (lineno, 0, 0);
+  finish_function (lineno, 0);
 }
 
 /* Return the information about the indicated PRIORITY level.  If no
@@ -4950,10 +4950,9 @@ do_nonmember_using_decl (scope, name, oldval, oldtype, newval, newtype)
      tree *newval, *newtype;
 {
   tree decls;
-  struct tree_binding _decls;
 
   *newval = *newtype = NULL_TREE;
-  decls = binding_init (&_decls);
+  decls = make_node (CPLUS_BINDING);
   if (!qualified_lookup_using_namespace (name, scope, decls, 0))
     /* Lookup error */
     return;
index 15e2e8fd169745ff2fac989f608aec9d05942e5a..87c6e470d0b058fd5e236c04dd63d2ee8dcf54b5 100644 (file)
@@ -838,7 +838,7 @@ end_anon_func ()
   poplevel (1, 0, 0);
   pop_momentary ();
 
-  finish_function (lineno, 0, 0);
+  finish_function (lineno, 0);
 
   pop_from_top_level ();
   pop_function_context_from (NULL_TREE);
index 72995f3a6c30b4daa36fda96da81718b8d3f330e..51f0c0028f44580661f714aa00f95bc578d4aab8 100644 (file)
@@ -94,6 +94,7 @@ static void pragma_ungetc PROTO((int));
 static int read_line_number PROTO((int *));
 static int token_getch PROTO ((void));
 static void token_put_back PROTO ((int));
+static void mark_impl_file_chain PROTO ((void *));
 
 /* Given a file name X, return the nondirectory portion.
    Keep in mind that X can be computed more than once.  */
@@ -185,6 +186,33 @@ extern int *token_count;
 static tree defarg_fns;
 static tree defarg_parm;
 
+/* Functions and data structures for #pragma interface.
+
+   `#pragma implementation' means that the main file being compiled
+   is considered to implement (provide) the classes that appear in
+   its main body.  I.e., if this is file "foo.cc", and class `bar'
+   is defined in "foo.cc", then we say that "foo.cc implements bar".
+
+   All main input files "implement" themselves automagically.
+
+   `#pragma interface' means that unless this file (of the form "foo.h"
+   is not presently being included by file "foo.cc", the
+   CLASSTYPE_INTERFACE_ONLY bit gets set.  The effect is that none
+   of the vtables nor any of the inline functions defined in foo.h
+   will ever be output.
+
+   There are cases when we want to link files such as "defs.h" and
+   "main.cc".  In this case, we give "defs.h" a `#pragma interface',
+   and "main.cc" has `#pragma implementation "defs.h"'.  */
+
+struct impl_files
+{
+  char *filename;
+  struct impl_files *next;
+};
+
+static struct impl_files *impl_file_chain;
+
 \f
 /* Return something to represent absolute declarators containing a *.
    TARGET is the absolute declarator that the * contains.
@@ -544,7 +572,7 @@ init_parse (filename)
   set_identifier_size (sizeof (struct lang_identifier));
   decl_printable_name = lang_printable_name;
 
-  init_cplus_unsave ();
+  init_tree ();
   init_cplus_expand ();
 
   memcpy (tree_code_type + (int) LAST_AND_UNUSED_TREE_CODE,
@@ -894,7 +922,8 @@ init_parse (filename)
   ggc_add_tree_root (&defarg_parm, 1);
   ggc_add_tree_root (&this_filename_time, 1);
   ggc_add_tree_root (&filename_times, 1);
-
+  ggc_add_root (&impl_file_chain, 1, sizeof (impl_file_chain),
+               mark_impl_file_chain);
   return filename;
 }
 
@@ -1091,32 +1120,18 @@ set_yydebug (value)
 }
 
 \f
-/* Functions and data structures for #pragma interface.
-
-   `#pragma implementation' means that the main file being compiled
-   is considered to implement (provide) the classes that appear in
-   its main body.  I.e., if this is file "foo.cc", and class `bar'
-   is defined in "foo.cc", then we say that "foo.cc implements bar".
-
-   All main input files "implement" themselves automagically.
-
-   `#pragma interface' means that unless this file (of the form "foo.h"
-   is not presently being included by file "foo.cc", the
-   CLASSTYPE_INTERFACE_ONLY bit gets set.  The effect is that none
-   of the vtables nor any of the inline functions defined in foo.h
-   will ever be output.
+/* Mark ARG (which is really a struct impl_files **) for GC.  */
 
-   There are cases when we want to link files such as "defs.h" and
-   "main.cc".  In this case, we give "defs.h" a `#pragma interface',
-   and "main.cc" has `#pragma implementation "defs.h"'.  */
-
-struct impl_files
+static void
+mark_impl_file_chain (arg)
+     void *arg;
 {
-  char *filename;
-  struct impl_files *next;
-};
+  struct impl_files *ifs;
 
-static struct impl_files *impl_file_chain;
+  ifs = *(struct impl_files **) arg;
+  if (ifs)
+    ggc_mark_string (ifs->filename);
+}
 
 /* Helper function to load global variables with interface
    information.  */
@@ -1202,7 +1217,8 @@ cp_pragma_interface (main_filename)
       TREE_INT_CST_LOW (fi) = 0;
       TREE_INT_CST_HIGH (fi) = 1;
       /* Get default.  */
-      impl_file_chain = (struct impl_files *)permalloc (sizeof (struct impl_files));
+      impl_file_chain 
+       = (struct impl_files *) xmalloc (sizeof (struct impl_files));
       impl_file_chain->filename = filename;
       impl_file_chain->next = 0;
 #endif
@@ -1237,7 +1253,7 @@ cp_pragma_implementation (main_filename)
        }
       if (ifiles == 0)
        {
-         ifiles = (struct impl_files*) permalloc (sizeof (struct impl_files));
+         ifiles = (struct impl_files*) xmalloc (sizeof (struct impl_files));
          ifiles->filename = main_filename;
          ifiles->next = impl_file_chain;
          impl_file_chain = ifiles;
@@ -1247,7 +1263,7 @@ cp_pragma_implementation (main_filename)
            && ! strcmp (main_input_filename, input_filename))
           || ! strcmp (main_filename, input_filename))
     {
-      impl_file_chain = (struct impl_files*) permalloc (sizeof (struct impl_files));
+      impl_file_chain = (struct impl_files*) xmalloc (sizeof (struct impl_files));
       impl_file_chain->filename = main_filename;
       impl_file_chain->next = 0;
     }
@@ -1289,7 +1305,7 @@ begin_definition_of_inclass_inline (pi)
 
   feed_input (pi->buf, pi->len, pi->filename, pi->lineno);
   yychar = PRE_PARSED_FUNCTION_DECL;
-  yylval.ttype = build_tree_list ((tree) pi, pi->fndecl);
+  yylval.pi = pi;
   /* Pass back a handle to the rest of the inline functions, so that they
      can be processed later.  */
   DECL_PENDING_INLINE_INFO (pi->fndecl) = 0;
@@ -1340,11 +1356,10 @@ do_pending_inlines ()
    do_pending_inlines).  */
 
 void
-process_next_inline (t)
-     tree t;
+process_next_inline (i)
+     struct pending_inline *i;
 {
   tree context;
-  struct pending_inline *i = (struct pending_inline *) TREE_PURPOSE (t);
   context = hack_decl_function_context (i->fndecl);  
   if (context)
     pop_function_context_from (context);
@@ -2539,7 +2554,7 @@ linenum:
       body_time = this_time;
     }
 
-  if (!TREE_PERMANENT (yylval.ttype))
+  if (! ggc_p && !TREE_PERMANENT (yylval.ttype))
     {
       input_filename
        = (char *) permalloc (TREE_STRING_LENGTH (yylval.ttype) + 1);
@@ -3254,8 +3269,7 @@ do_scoped_id (token, parsing)
   /* during parsing, this is ::name. Otherwise, it is black magic. */
   if (parsing)
     {
-      struct tree_binding _b;
-      id = binding_init (&_b);
+      id = make_node (CPLUS_BINDING);
       if (!qualified_lookup_using_namespace (token, global_namespace, id, 0))
        id = NULL_TREE;
       else
@@ -4836,23 +4850,16 @@ tree
 make_lang_type (code)
      enum tree_code code;
 {
-  extern struct obstack *current_obstack, *saveable_obstack;
   register tree t = make_node (code);
 
   /* Set up some flags that give proper default behavior.  */
   if (IS_AGGR_TYPE_CODE (code))
     {
-      struct obstack *obstack = current_obstack;
       struct lang_type *pi;
 
       SET_IS_AGGR_TYPE (t, 1);
 
-      if (! TREE_PERMANENT (t))
-       obstack = saveable_obstack;
-      else
-       my_friendly_assert (obstack == &permanent_obstack, 236);
-
-      pi = (struct lang_type *) obstack_alloc (obstack, sizeof (struct lang_type));
+      pi = (struct lang_type *) xmalloc (sizeof (struct lang_type));
       bzero ((char *) pi, (int) sizeof (struct lang_type));
 
       TYPE_LANG_SPECIFIC (t) = pi;
index 0ecd14f0e7fba705e10c4ebefa9427552bb84a17..80e6bf453d02b51632fd7bd998dfa19debcc5f08 100644 (file)
 #define        POINTSAT        328
 #define        TRY     329
 #define        CATCH   330
-#define        PRE_PARSED_FUNCTION_DECL        331
-#define        EXTERN_LANG_STRING      332
-#define        ALL     333
-#define        PRE_PARSED_CLASS_DECL   334
-#define        DEFARG  335
-#define        DEFARG_MARKER   336
+#define        EXTERN_LANG_STRING      331
+#define        ALL     332
+#define        PRE_PARSED_CLASS_DECL   333
+#define        DEFARG  334
+#define        DEFARG_MARKER   335
+#define        PRE_PARSED_FUNCTION_DECL        336
 #define        TYPENAME_DEFN   337
 #define        IDENTIFIER_DEFN 338
 #define        PTYPENAME_DEFN  339
@@ -154,8 +154,15 @@ empty_parms ()
 
 
 #line 93 "parse.y"
-typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
-#line 289 "parse.y"
+typedef union {
+  long itype; 
+  tree ttype; 
+  char *strtype; 
+  enum tree_code code; 
+  flagged_type_tree ftype; 
+  struct pending_inline *pi;
+} YYSTYPE;
+#line 298 "parse.y"
 
 /* List of types and structure classes of the current declaration.  */
 static tree current_declspecs;
@@ -181,7 +188,7 @@ extern void yyprint                 PROTO((FILE *, int, YYSTYPE));
 extern tree combine_strings            PROTO((tree));
 
 static int
-parse_decl(declarator, specs_attrs, attributes, initialized, decl)
+parse_decl (declarator, specs_attrs, attributes, initialized, decl)
   tree declarator;
   tree specs_attrs;
   tree attributes;
@@ -375,7 +382,7 @@ static const short yyrhs[] = {    -1,
    328,   163,     0,    47,   328,   131,   163,     0,     0,    47,
     45,   130,   132,    61,     0,    58,    55,     0,   131,    58,
     55,     0,   209,     0,   314,     0,   328,   314,     0,   328,
-   209,     0,    98,     0,   133,    98,     0,     0,    49,    75,
+   209,     0,    97,     0,   133,    97,     0,     0,    49,    75,
    135,   136,    76,     0,    49,    75,    76,     0,   140,     0,
    136,    60,   140,     0,   163,     0,     0,   269,   137,     0,
     46,   137,     0,   134,   269,   137,     0,   138,     0,   138,
@@ -515,9 +522,9 @@ static const short yyrhs[] = {    -1,
     59,   255,   109,     0,    59,   255,    60,   109,     0,     1,
      0,   254,     0,   255,    60,   254,     0,    94,   204,   111,
    254,     0,   163,    63,   254,     0,   255,    60,   163,    63,
-   254,     0,    97,     0,   256,   146,   145,   339,     0,   256,
+   254,     0,   102,     0,   256,   146,   145,   339,     0,   256,
    146,   363,     0,   256,   146,     1,     0,     0,   258,   257,
-   147,     0,   102,   204,   107,     0,   102,     1,   107,     0,
+   147,     0,   101,   204,   107,     0,   101,     1,   107,     0,
      0,   260,   259,     0,   260,     1,     0,     0,    14,   163,
     59,   262,   295,   109,     0,     0,    14,    59,   263,   295,
    109,     0,    14,   163,     0,    14,   326,     0,    46,   321,
@@ -626,7 +633,7 @@ static const short yyrhs[] = {    -1,
    382,    60,    11,     0,     0,   384,     0,   225,     0,   388,
      0,   389,    12,     0,   388,    12,     0,   225,    12,     0,
     12,     0,   388,    63,     0,   225,    63,     0,     0,    65,
-   386,   387,     0,   101,     0,   254,     0,   390,     0,   392,
+   386,   387,     0,   100,     0,   254,     0,   390,     0,   392,
    385,     0,   389,   391,     0,   389,   394,     0,   389,   394,
     65,   254,     0,   388,    60,     0,   225,    60,     0,   227,
    223,     0,   230,   223,     0,   232,   223,     0,   227,   332,
@@ -653,53 +660,53 @@ static const short yyrhs[] = {    -1,
 
 #if YYDEBUG != 0
 static const short yyrline[] = { 0,
-   351,   353,   361,   364,   365,   369,   371,   374,   379,   383,
-   389,   393,   396,   400,   403,   405,   407,   410,   412,   415,
-   418,   420,   422,   424,   426,   427,   429,   430,   434,   437,
-   446,   449,   451,   455,   458,   460,   464,   467,   479,   486,
-   494,   496,   497,   499,   503,   506,   512,   515,   517,   522,
-   525,   529,   532,   535,   538,   542,   547,   557,   559,   561,
-   563,   565,   578,   581,   585,   588,   590,   592,   595,   598,
-   602,   604,   606,   608,   613,   615,   617,   619,   621,   622,
-   629,   630,   631,   634,   637,   641,   643,   644,   647,   649,
-   652,   655,   661,   665,   668,   670,   674,   676,   678,   682,
-   684,   686,   690,   692,   694,   700,   704,   707,   710,   713,
-   718,   721,   723,   725,   731,   743,   746,   751,   756,   759,
-   764,   769,   778,   781,   783,   787,   796,   816,   819,   821,
-   822,   825,   832,   838,   840,   842,   844,   846,   849,   854,
-   856,   857,   858,   859,   862,   864,   865,   868,   870,   871,
-   874,   879,   879,   883,   883,   886,   886,   889,   889,   893,
-   893,   898,   898,   901,   901,   904,   906,   909,   916,   920,
-   923,   926,   928,   932,   938,   947,   949,   957,   960,   963,
-   966,   970,   973,   975,   978,   981,   983,   985,   987,   991,
-   994,   997,  1002,  1006,  1011,  1015,  1018,  1019,  1023,  1042,
-  1049,  1052,  1054,  1055,  1056,  1059,  1063,  1064,  1068,  1072,
-  1075,  1077,  1081,  1084,  1087,  1091,  1094,  1096,  1098,  1100,
-  1103,  1107,  1109,  1112,  1114,  1120,  1123,  1126,  1129,  1141,
-  1146,  1150,  1154,  1159,  1161,  1165,  1169,  1171,  1173,  1183,
-  1187,  1190,  1193,  1198,  1201,  1203,  1211,  1224,  1229,  1235,
-  1237,  1239,  1252,  1255,  1257,  1259,  1261,  1263,  1265,  1267,
-  1269,  1271,  1273,  1275,  1277,  1279,  1281,  1283,  1285,  1287,
-  1289,  1291,  1293,  1295,  1299,  1301,  1303,  1320,  1323,  1325,
-  1326,  1327,  1328,  1329,  1332,  1344,  1347,  1351,  1354,  1356,
-  1361,  1363,  1364,  1367,  1369,  1377,  1379,  1381,  1383,  1387,
-  1390,  1394,  1398,  1399,  1400,  1404,  1412,  1413,  1414,  1428,
-  1430,  1433,  1435,  1446,  1451,  1453,  1455,  1457,  1459,  1461,
-  1463,  1466,  1468,  1485,  1486,  1490,  1494,  1498,  1502,  1504,
-  1508,  1510,  1512,  1520,  1522,  1524,  1526,  1530,  1532,  1534,
-  1536,  1541,  1543,  1545,  1547,  1550,  1552,  1554,  1598,  1601,
-  1605,  1608,  1612,  1615,  1620,  1622,  1626,  1635,  1638,  1645,
-  1652,  1657,  1659,  1664,  1666,  1673,  1675,  1679,  1683,  1689,
-  1693,  1696,  1700,  1703,  1713,  1715,  1718,  1722,  1725,  1728,
-  1731,  1734,  1740,  1746,  1748,  1753,  1755,  1773,  1776,  1778,
-  1781,  1787,  1789,  1799,  1803,  1806,  1809,  1814,  1817,  1825,
-  1827,  1829,  1831,  1834,  1837,  1852,  1871,  1874,  1876,  1879,
-  1881,  1885,  1887,  1891,  1893,  1897,  1900,  1904,  1910,  1911,
-  1923,  1930,  1933,  1939,  1943,  1948,  1954,  1955,  1963,  1966,
-  1970,  1973,  1977,  1982,  1985,  1989,  1992,  1994,  1996,  1998,
-  2005,  2007,  2008,  2009,  2013,  2016,  2020,  2023,  2029,  2031,
-  2034,  2037,  2040,  2046,  2049,  2052,  2054,  2056,  2060,  2066,
-  2074,  2081,  2085,  2087,  2092,  2095,  2098,  2100,  2102,  2106,
+   360,   362,   370,   373,   374,   378,   380,   383,   388,   392,
+   398,   402,   405,   409,   412,   414,   416,   419,   421,   424,
+   427,   429,   431,   433,   435,   436,   438,   439,   443,   446,
+   455,   458,   460,   464,   467,   469,   473,   476,   488,   495,
+   503,   505,   506,   508,   512,   515,   521,   524,   526,   531,
+   534,   538,   541,   544,   547,   551,   556,   566,   568,   570,
+   572,   574,   587,   590,   594,   597,   599,   601,   604,   607,
+   611,   613,   615,   617,   622,   624,   626,   628,   630,   631,
+   638,   639,   640,   643,   646,   650,   652,   653,   656,   658,
+   661,   664,   666,   670,   673,   675,   679,   681,   683,   687,
+   689,   691,   695,   697,   699,   705,   709,   712,   715,   718,
+   723,   726,   728,   730,   736,   748,   751,   756,   761,   764,
+   769,   774,   783,   786,   788,   792,   801,   821,   824,   826,
+   827,   830,   837,   843,   845,   847,   849,   851,   854,   859,
+   861,   862,   863,   864,   867,   869,   870,   873,   875,   876,
+   879,   884,   884,   888,   888,   891,   891,   894,   894,   898,
+   898,   903,   903,   906,   906,   909,   911,   914,   921,   925,
+   928,   931,   933,   937,   943,   952,   954,   962,   965,   968,
+   971,   975,   978,   980,   983,   986,   988,   990,   992,   996,
+   999,  1002,  1007,  1011,  1016,  1020,  1023,  1024,  1028,  1047,
+  1054,  1057,  1059,  1060,  1061,  1064,  1068,  1069,  1073,  1077,
+  1080,  1082,  1086,  1089,  1092,  1096,  1099,  1101,  1103,  1105,
+  1108,  1112,  1114,  1117,  1119,  1125,  1128,  1131,  1134,  1146,
+  1151,  1155,  1159,  1164,  1166,  1170,  1174,  1176,  1178,  1188,
+  1192,  1195,  1198,  1203,  1206,  1208,  1216,  1229,  1234,  1240,
+  1242,  1244,  1257,  1260,  1262,  1264,  1266,  1268,  1270,  1272,
+  1274,  1276,  1278,  1280,  1282,  1284,  1286,  1288,  1290,  1292,
+  1294,  1296,  1298,  1300,  1304,  1306,  1308,  1325,  1328,  1330,
+  1331,  1332,  1333,  1334,  1337,  1349,  1352,  1356,  1359,  1361,
+  1366,  1368,  1369,  1372,  1374,  1382,  1384,  1386,  1388,  1392,
+  1395,  1399,  1403,  1404,  1405,  1409,  1417,  1418,  1419,  1433,
+  1435,  1438,  1440,  1451,  1456,  1458,  1460,  1462,  1464,  1466,
+  1468,  1471,  1473,  1490,  1491,  1495,  1499,  1503,  1507,  1509,
+  1513,  1515,  1517,  1525,  1527,  1529,  1531,  1535,  1537,  1539,
+  1541,  1546,  1548,  1550,  1552,  1555,  1557,  1559,  1603,  1606,
+  1610,  1613,  1617,  1620,  1625,  1627,  1631,  1640,  1643,  1650,
+  1657,  1662,  1664,  1669,  1671,  1678,  1680,  1684,  1688,  1694,
+  1698,  1701,  1705,  1708,  1718,  1720,  1723,  1727,  1730,  1733,
+  1736,  1739,  1745,  1751,  1753,  1758,  1760,  1778,  1781,  1783,
+  1786,  1792,  1794,  1804,  1808,  1811,  1814,  1819,  1822,  1830,
+  1832,  1834,  1836,  1839,  1842,  1857,  1876,  1879,  1881,  1884,
+  1886,  1890,  1892,  1896,  1898,  1902,  1905,  1909,  1915,  1916,
+  1928,  1935,  1938,  1944,  1948,  1953,  1959,  1960,  1968,  1971,
+  1975,  1978,  1982,  1987,  1990,  1994,  1997,  1999,  2001,  2003,
+  2010,  2012,  2013,  2014,  2018,  2021,  2025,  2028,  2034,  2036,
+  2039,  2042,  2045,  2051,  2054,  2057,  2059,  2061,  2065,  2070,
+  2076,  2081,  2085,  2087,  2092,  2095,  2098,  2100,  2102,  2106,
   2111,  2118,  2122,  2129,  2132,  2135,  2141,  2143,  2155,  2159,
   2164,  2188,  2190,  2193,  2195,  2200,  2202,  2204,  2206,  2208,
   2210,  2214,  2222,  2225,  2227,  2231,  2238,  2244,  2250,  2256,
@@ -758,8 +765,8 @@ static const char * const yytname[] = {   "$","error","$undefined.","IDENTIFIER"
 "';'","THROW","':'","ASSIGN","'='","'?'","OROR","ANDAND","'|'","'^'","'&'","MIN_MAX",
 "EQCOMPARE","ARITHCOMPARE","'<'","'>'","LSHIFT","RSHIFT","'+'","'-'","'*'","'/'",
 "'%'","POINTSAT_STAR","DOT_STAR","UNARY","PLUSPLUS","MINUSMINUS","'~'","HYPERUNARY",
-"POINTSAT","'.'","'('","'['","TRY","CATCH","PRE_PARSED_FUNCTION_DECL","EXTERN_LANG_STRING",
-"ALL","PRE_PARSED_CLASS_DECL","DEFARG","DEFARG_MARKER","TYPENAME_DEFN","IDENTIFIER_DEFN",
+"POINTSAT","'.'","'('","'['","TRY","CATCH","EXTERN_LANG_STRING","ALL","PRE_PARSED_CLASS_DECL",
+"DEFARG","DEFARG_MARKER","PRE_PARSED_FUNCTION_DECL","TYPENAME_DEFN","IDENTIFIER_DEFN",
 "PTYPENAME_DEFN","END_OF_LINE","END_OF_SAVED_INPUT","')'","'}'","'!'","']'",
 "program","extdefs","@1","extdefs_opt",".hush_warning",".warning_ok","extension",
 "asm_keyword","lang_extdef","@2","extdef","@3","@4","namespace_alias","@5","using_decl",
@@ -1200,179 +1207,179 @@ static const short yydefgoto[] = {  1665,
    148,  1023,   746,  1220,  1221,   533,    84,    85
 };
 
-static const short yypact[] = {   131,
-   215,-32768,-32768,  6330,-32768,    67,   149,    64,   151,   163,
-   102,-32768,-32768,  1060,-32768,   152,   177,   201,-32768,-32768,
--32768,   862,   986,  2200,   241,-32768,   296,   404,-32768,  3864,
-  3864,-32768,  8054,-32768,  6330,   288,-32768,-32768,   326,-32768,
-    49,  6732,-32768,-32768,   315,   876,   357,   350,   385,-32768,
--32768,-32768,-32768,   402,  5747,-32768,  4343,-32768,  2560,   763,
--32768,   445,-32768,-32768,  1626,   366,-32768,   391,-32768,-32768,
-   421,  2404,-32768,-32768,-32768,   947,-32768,-32768,-32768,  1656,
--32768,-32768,   795,  4628,   419,-32768,-32768, 10831,-32768, 10831,
--32768, 10831,-32768,-32768,-32768,    64,   151,   296,   446,-32768,
-   469,   385,-32768,  1423,-32768,   795, 10922, 10922,   442,-32768,
--32768,-32768,-32768,-32768,    79,   457,   418,   756,   771,   496,
-   507,-32768,-32768,  1220,-32768,  1200,    64,   151,-32768,   296,
-   446,-32768,  1278,   518,   489, 11976, 10831,-32768, 10831, 12155,
+static const short yypact[] = {   119,
+   215,-32768,-32768,  5403,-32768,    67,   149,   151,   404,   163,
+   102,-32768,-32768,  1060,-32768,   152,   198,   201,-32768,-32768,
+-32768,   862,   986,  2200,   274,-32768,   296,   418,-32768,  3864,
+  3864,-32768,  8054,-32768,  5403,   294,-32768,-32768,   350,-32768,
+   211,  6330,-32768,-32768,   315,   876,   415,   393,   425,-32768,
+-32768,-32768,-32768,   402,  5747,-32768,  4343,-32768,  2560,   321,
+-32768,   463,-32768,-32768,  1626,   366,-32768,   394,-32768,-32768,
+   442,  2404,-32768,-32768,-32768,   947,-32768,-32768,-32768,  1656,
+-32768,-32768,   795,  4628,   437,-32768,-32768, 10830,-32768, 10830,
+-32768, 10830,-32768,-32768,-32768,   151,   404,   296,   473,-32768,
+   476,   425,-32768,  1423,-32768,   795, 10921, 10921,   458,-32768,
+-32768,-32768,-32768,-32768,    79,   507,   756,   771,   787,   510,
+   517,-32768,-32768,  1220,-32768,  1200,   151,   404,-32768,   296,
+   473,-32768,  1278,   518,   529, 11975, 10830,-32768, 10830, 12154,
   4022,-32768,-32768,  2368,  1154,  4022,-32768,  1384,  4238,  4238,
-  8054,   464,   486,-32768,   504,   633,   497,   524,-32768,-32768,
-   615,-32768,   529,-32768,  3682,-32768,-32768,   241,  7725,   547,
--32768,-32768,-32768,   315,  5451, 12021,   802,   586,-32768,-32768,
-   561,   445,   660,    94,   196,   611,-32768,-32768,   570,   272,
--32768,-32768,  5510,  5510, 12176,   947,   908,-32768,-32768,   515,
--32768,-32768,  3323,-32768,-32768,-32768,-32768,-32768,  2560,   919,
--32768,   445,   947,-32768,-32768,-32768,  2762,  2560,-32768,   445,
+  8054,   486,   490,-32768,   532,   633,   524,   530,-32768,-32768,
+   636,-32768,   536,-32768,  3682,-32768,-32768,   274,  6805,   557,
+-32768,-32768,-32768,   315,  5451, 12020,   763,   602,-32768,-32768,
+   579,   463,   678,    94,   196,   635,-32768,-32768,   596,   272,
+-32768,-32768,  5510,  5510, 12175,   947,   803,-32768,-32768,   515,
+-32768,-32768,  3323,-32768,-32768,-32768,-32768,-32768,  2560,   908,
+-32768,   463,   947,-32768,-32768,-32768,  2762,  2560,-32768,   463,
 -32768,  5451,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   621,-32768,   385,-32768,   445,  1288,  1540,-32768,
--32768,   391,-32768,-32768,-32768,-32768,   831,   795,-32768,   625,
+-32768,-32768,   650,-32768,   425,-32768,   463,  1288,  1540,-32768,
+-32768,   394,-32768,-32768,-32768,-32768,   831,   795,-32768,   625,
   1480,-32768,   304,-32768,-32768,-32768,-32768,-32768,  6066,-32768,
--32768,   770,-32768,   631,   638,-32768,-32768,-32768,-32768,   644,
+-32768,   770,-32768,   638,   646,-32768,-32768,-32768,-32768,   690,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,-32768,   629,-32768,-32768,   831,  2404,   182,-32768,-32768,
-   690,-32768,-32768, 11560, 11651, 11742, 11742,   701,-32768,-32768,
--32768,-32768,-32768,   722,   678,   745,   755,   767,   943,   446,
- 11013,  1764, 11742,-32768,-32768, 11742,-32768,-32768, 11742,  8412,
--32768, 11742,   543,   800,-32768, 11742,-32768, 11104,-32768, 12433,
-   369,  1553,  2934, 11195,-32768,   853,  3244,-32768,  1595,  4989,
-  5987,-32768,   410,-32768,  1793,  2656,   543,   543, 10831, 11976,
-   535,-32768,  1764,-32768,-32768,   778,   815, 12340,   781,   786,
-   805,  1400,   529,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,   457,   418,   756,  1764,   771,   496,   803,   507,-32768,
-   860,-32768,   868,    64,   151,-32768,-32768,-32768,-32768,-32768,
+-32768,-32768,   672,-32768,-32768,   831,  2404,   182,-32768,-32768,
+   701,-32768,-32768, 11559, 11650, 11741, 11741,   704,-32768,-32768,
+-32768,-32768,-32768,   716,   740,   745,   755,   785,   943,   473,
+ 11012,  1764, 11741,-32768,-32768, 11741,-32768,-32768, 11741,  8412,
+-32768, 11741,   543,   815,-32768, 11741,-32768, 11103,-32768, 12432,
+   369,  1553,  2934, 11194,-32768,   867,  3244,-32768,  1595,  4989,
+  5987,-32768,   410,-32768,  1793,  2656,   543,   543, 10830, 11975,
+   535,-32768,  1764,-32768,-32768,   778,   829, 12339,   786,   805,
+   807,  1400,   536,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,   507,   756,   771,  1764,   787,   510,   853,   517,-32768,
+   879,-32768,   868,   151,   404,-32768,-32768,-32768,-32768,-32768,
 -32768,  6108,-32768,  5451,  2178,  1839,-32768,   543,   577,-32768,
--32768,   812,-32768,   859,   872,-32768,-32768,-32768,  4022,-32768,
--32768,  4022,-32768,   820,-32768,-32768,-32768,   633,   633,   633,
--32768,-32768,-32768,  6066,    72,   841,   849,-32768,-32768,-32768,
--32768, 11976,-32768,  1018,  1020,-32768,-32768,   615,-32768,   445,
--32768,-32768,-32768,-32768,   114,-32768,-32768,-32768,-32768,  8964,
- 11013,-32768,-32768,-32768, 11013,   854,-32768,  7021,   112, 12196,
-  6441,-32768,-32768,  6441,-32768,  7262,  7262, 12176, 12237,   879,
--32768,   445,  5451,-32768,   873,-32768,-32768, 12094,  2762,  2560,
-  5451,-32768,   445,-32768,-32768,   445,  2762,-32768,   982,-32768,
- 10831,   621,-32768,-32768,  1288,-32768,  1189,  4503,   831,   445,
--32768,-32768,   951,   954,   959,   958,-32768,-32768,-32768,-32768,
-  1007,-32768,   420,   883,   926,-32768,-32768,   831,-32768,-32768,
-   896,-32768,-32768, 10831, 11013,   690,  8412,-32768,   423,  8412,
--32768,-32768,-32768, 11013, 10922,  3179,  3179,  3179,  3179, 12411,
--32768,-32768,-32768,-32768,   932, 11287, 11287,  8412,   941,    61,
-   946,   988,   950,-32768,-32768,-32768,-32768, 10831,-32768,  8503,
-  8412,-32768, 11013, 11013,  9055, 11013, 11013, 11013, 11013, 11013,
- 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013, 11013,
- 11013, 11013, 11013, 11013,-32768, 11013,-32768,-32768,-32768,-32768,
--32768, 11013, 11013,-32768,-32768,  3082,   337,   833,  9601,-32768,
--32768,-32768,  1013,  1480,  1078,   444,   520,   563,  1860,  1154,
--32768,  1421,  1421,  5141,   962,   999,  1046,-32768,-32768,   600,
- 10099,  1711,-32768,   939,   795,-32768,-32768, 11013,-32768,-32768,
--32768,-32768,-32768,   264,   419,-32768,-32768,   543,-32768,  5451,
-  2853,-32768,-32768,  1031,-32768,   995,  1047,-32768,   535,   803,
--32768,  9328,  9419,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   103,-32768,  1016,  1005,   529,   868,  1068, 10831,-32768,  1067,
--32768,-32768,   518,  1319,  1095,   273,  1071,  1091,-32768,-32768,
-  2743, 12021,  2743,  3527,  1626, 11811,-32768,  1098,-32768,-32768,
--32768,-32768,-32768,-32768,-32768,-32768,  1036,  1057,-32768,  1105,
+-32768,   812,-32768,   872,   875,-32768,-32768,-32768,  4022,-32768,
+-32768,  4022,-32768,   850,-32768,-32768,-32768,   633,   633,   633,
+-32768,-32768,-32768,  6066,    72,   856,   878,-32768,-32768,-32768,
+-32768, 11975,-32768,   919,  1018,-32768,-32768,   636,-32768,   463,
+-32768,-32768,-32768,-32768,   114,-32768,-32768,-32768,-32768,  8963,
+ 11012,-32768,-32768,-32768, 11012,   873,-32768,  7021,   112, 12195,
+  6441,-32768,-32768,  6441,-32768,  7262,  7262, 12175, 12236,   886,
+-32768,   463,  5451,-32768,   898,-32768,-32768, 12093,  2762,  2560,
+  5451,-32768,   463,-32768,-32768,   463,  2762,-32768,   987,-32768,
+ 10830,   650,-32768,-32768,  1288,-32768,  1189,  4503,   831,   463,
+-32768,-32768,   951,   954,   982,   958,-32768,-32768,-32768,-32768,
+  1007,-32768,   420,   929,   936,-32768,-32768,   831,-32768,-32768,
+   896,-32768,-32768, 10830, 11012,   701,  8412,-32768,   423,  8412,
+-32768,-32768,-32768, 11012, 10921,  3179,  3179,  3179,  3179, 12410,
+-32768,-32768,-32768,-32768,   941, 11286, 11286,  8412,   946,    61,
+   950,  1009,   965,-32768,-32768,-32768,-32768, 10830,-32768,  8503,
+  8412,-32768, 11012, 11012,  9054, 11012, 11012, 11012, 11012, 11012,
+ 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012, 11012,
+ 11012, 11012, 11012, 11012,-32768, 11012,-32768,-32768,-32768,-32768,
+-32768, 11012, 11012,-32768,-32768,  3082,   337,   833,  9600,-32768,
+-32768,-32768,  1031,  1480,  1084,   444,   520,   563,  1860,  1154,
+-32768,  1421,  1421,  5141,   983,  1003,  1056,-32768,-32768,   600,
+ 10098,  1711,-32768,   939,   795,-32768,-32768, 11012,-32768,-32768,
+-32768,-32768,-32768,    92,   437,-32768,-32768,   543,-32768,  5451,
+  2853,-32768,-32768,  1042,-32768,  1000,  1054,-32768,   535,   853,
+-32768,  9327,  9418,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   103,-32768,  1030,  1019,   536,   868,  1077, 10830,-32768,  1075,
+-32768,-32768,   518,  1319,  1107,   243,  1089,  1090,-32768,-32768,
+  2743, 12020,  2743,  3527,  1626, 11810,-32768,  1091,-32768,-32768,
+-32768,-32768,-32768,-32768,-32768,-32768,  1055,  1057,-32768,  1105,
 -32768,-32768,   315,-32768,-32768,-32768,-32768,    96,   331,  1104,
-   988,-32768,-32768,-32768,-32768,  8318, 12411,-32768,   815,  1063,
- 12340,-32768,-32768,  1064,-32768,  1069,   170,  4146,  1072,-32768,
-   189, 11871,  1116,  1120,   575,-32768,-32768,-32768,-32768,  6441,
-  6441, 12135, 12135, 12237,   939,-32768,-32768, 12094,-32768,  1122,
--32768,-32768,  1058,   112,-32768,  2762,-32768,-32768,   445,  1113,
--32768,   418,   756,-32768,-32768,   507,  1130,-32768,-32768,   321,
--32768,-32768,  1979,-32768,  1197,   501,-32768, 11013,  5403,-32768,
-  5403,    99,    99,   336,   583,  2287,  7135,    53,  5058,-32768,
-   186,    99,-32768,   112,  6496, 10831, 10831,-32768, 10831,   112,
+  1009,-32768,-32768,-32768,-32768,  8318, 12410,-32768,   829,  1063,
+ 12339,-32768,-32768,  1064,-32768,  1069,   170,  4146,  1072,-32768,
+   189, 11870,  1116,  1120,   575,-32768,-32768,-32768,-32768,  6441,
+  6441, 12134, 12134, 12236,   939,-32768,-32768, 12093,-32768,  1122,
+-32768,-32768,  1058,   112,-32768,  2762,-32768,-32768,   463,  1113,
+-32768,   756,   771,-32768,-32768,   517,  1130,-32768,-32768,   101,
+-32768,-32768,  1979,-32768,  1197,   501,-32768, 11012,  7722,-32768,
+  7722,    99,    99,   336,   583,  2287,  7135,    53,  5058,-32768,
+   186,    99,-32768,   112,  6496, 10830, 10830,-32768, 10830,   112,
   6496,-32768,-32768,-32768,-32768,-32768,-32768,   967,   967,   967,
-   543,  1090,  1092, 10467,  1046,  1102, 12366,  1107,  1108,  1137,
-  5728,  1141,  1143,  1150,-32768,  1121,-32768,-32768,  1123,-32768,
--32768,  1167,   406,   634,    77,   567, 11013,  1169,-32768,  1146,
-  1126, 12411, 12411,-32768,-32768,  1175, 12451,  7304,  8078,  4526,
+   543,  1092,  1098, 10466,  1056,  1102, 12365,  1108,  1109,  1137,
+  5728,  1139,  1143,  1150,-32768,  1121,-32768,-32768,  1123,-32768,
+-32768,  1135,   406,   634,    77,   567, 11012,  1167,-32768,  1172,
+  1126, 12410, 12410,-32768,-32768,  1175, 12450,  7304,  8078,  4526,
   4063,  3194,  4207,  2423,  2423,  2423,  2363,  2363,  1527,  1527,
-   915,   915,   915,-32768,-32768,  1131,  1132,  1139, 11013, 10922,
--32768,   337,-32768,  8964, 11013,-32768,-32768,-32768, 11013,-32768,
--32768,  1149, 11742,  1140,  1164,  1181,  1218,-32768, 11013,-32768,
- 11013,-32768, 11013,   389,  2977,-32768,-32768,  2977,-32768,   115,
+   915,   915,   915,-32768,-32768,  1131,  1132,  1140, 11012, 10921,
+-32768,   337,-32768,  8963, 11012,-32768,-32768,-32768, 11012,-32768,
+-32768,  1149, 11741,  1142,  1161,  1181,  1218,-32768, 11012,-32768,
+ 11012,-32768, 11012,   389,  2977,-32768,-32768,  2977,-32768,   115,
    389,  1159,  1162,-32768,  1163,  3179,   112,-32768,   112,  3446,
--32768,  6496,  1165, 10283, 10283,  5878,  1171, 11104,  1177,  2159,
+-32768,  6496,  1165, 10282, 10282,  5878,  1171, 11103,  1177,  2159,
   4339,  2656,   978,  1187,-32768,-32768,-32768,-32768,-32768,-32768,
--32768, 11013,-32768,  1764,-32768,  1180,-32768, 12411,-32768, 12411,
-  1400,  1190, 11378,-32768,  1188,  1212,-32768,   543,-32768,-32768,
--32768,-32768,-32768,  1749,  6108,-32768,  3179, 10831,  1883,  1883,
+-32768, 11012,-32768,  1764,-32768,  1164,-32768, 12410,-32768, 12410,
+  1400,  1190, 11377,-32768,  1180,  1236,-32768,   543,-32768,-32768,
+-32768,-32768,-32768,  1749,  6108,-32768,  3179, 10830,  1883,  1883,
   4805,-32768,-32768,-32768,-32768,  3323,-32768,-32768,-32768,  1070,
- 11013,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-   315,-32768,   457,-32768,   771,   496, 11013,  1239,-32768,   593,
-   612,   622,   988,-32768,    84,-32768,   123,-32768,-32768,-32768,
--32768,-32768,-32768, 10191,-32768,-32768,-32768,-32768,-32768,-32768,
--32768,  1120,  1236,-32768,-32768,-32768,  3179,  1948,  1948,  2223,
--32768,-32768,-32768,  1240,-32768,-32768,-32768,-32768,-32768,-32768,
-  1470,-32768,  6496, 12411,-32768,  3756,-32768,   445,   445,-32768,
--32768,-32768,-32768,-32768,  6496,   553,   658, 11013,   982,-32768,
-  1248,-32768,-32768,-32768,   195,   640,  1656,  1154,   657,    99,
-  1252,-32768,   723,  1251,   445,  6586,-32768,-32768,-32768,   445,
+ 11012,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
+   315,-32768,   507,-32768,   787,   510, 11012,  1239,-32768,   593,
+   612,   622,  1009,-32768,    84,-32768,   123,-32768,-32768,-32768,
+-32768,-32768,-32768, 10190,-32768,-32768,-32768,-32768,-32768,-32768,
+-32768,  1120,  1240,-32768,-32768,-32768,  3179,  1948,  1948,  2223,
+-32768,-32768,-32768,  1243,-32768,-32768,-32768,-32768,-32768,-32768,
+  1470,-32768,  6496, 12410,-32768,  3756,-32768,   463,   463,-32768,
+-32768,-32768,-32768,-32768,  6496,   413,   658, 11012,   987,-32768,
+  1241,-32768,-32768,-32768,   195,   640,  1656,  1154,   657,    99,
+  1252,-32768,   723,  1251,   463,  6586,-32768,-32768,-32768,   463,
 -32768,  1207,   543,   543,   543,-32768,  1213,   112,  6496,   112,
   6496,-32768,-32768,-32768,-32768,-32768,-32768,-32768,  3179,-32768,
--32768,  1232,  1238,  1250,  1254,  1036,-32768, 12274,  8964,  8597,
-  1224,-32768, 11013,-32768,-32768,-32768,  1241,  1244,  1245,  3179,
--32768,-32768,  1246,   355,   653,   653,  1255,   653,-32768,-32768,
- 11742,  1347, 10831,-32768,  1257,  1262,  1267,-32768,-32768,-32768,
+-32768,  1232,  1238,  1250,  1254,  1055,-32768, 12273,  8963,  8597,
+  1224,-32768, 11012,-32768,-32768,-32768,  1244,  1242,  1246,  3179,
+-32768,-32768,  1247,   355,   653,   653,  1255,   653,-32768,-32768,
+ 11741,  1344, 10830,-32768,  1257,  1262,  1267,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,   112,  1274,-32768,  1270,
-  2159,-32768,-32768,  2048,  2048,  6891,  4726,-32768,-32768,-32768,
--32768,-32768, 12411,-32768,-32768,-32768,-32768,   207,  1276,-32768,
+  2159,-32768,-32768,  2048,  2048,  6704,  4726,-32768,-32768,-32768,
+-32768,-32768, 12410,-32768,-32768,-32768,-32768,   207,  1276,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,  3303,  2078,  2078,  2304,
-  2304,  4805,  3372,   166,  3323,-32768,  2674, 12433,-32768,-32768,
--32768,  1282,-32768,   331,-32768, 11013,-32768, 11013,-32768, 11013,
--32768,  1764,-32768,-32768,  8167,  1329,-32768,  8688,-32768, 10375,
- 10375,  7983,   297,  1284,   320,-32768,  8964,  8779,-32768,-32768,
-   223,  2550,  2550,  1093,  1093,  8964,-32768,-32768,  1189,-32768,
--32768,-32768,   112,  1285,-32768,  1298,  1298,   112,  1287, 11013,
- 11013,  8214,   445,  6285,   445,   445,  1012,   445,  6486,-32768,
+  2304,  4805,  3372,   166,  3323,-32768,  2674, 12432,-32768,-32768,
+-32768,  1282,-32768,   331,-32768, 11012,-32768, 11012,-32768, 11012,
+-32768,  1764,-32768,-32768,  8167,  1329,-32768,  8688,-32768, 10374,
+ 10374,  7983,   297,  1284,   320,-32768,  8963,  8779,-32768,-32768,
+   223,  2550,  2550,  1093,  1093,  8963,-32768,-32768,  1189,-32768,
+-32768,-32768,   112,  1285,-32768,  1298,  1298,   112,  1287, 11012,
+ 11012,  8214,   463,  6285,   463,   463,  1012,   463,  6486,-32768,
 -32768,  7823,  1298,-32768,-32768,  1343,-32768,-32768,-32768,  1293,
--32768,  1294,  1307, 11013, 11013, 11013, 11013,  8964,-32768,  1353,
--32768,-32768, 12411,-32768,-32768,-32768,   541,  1245,-32768,-32768,
+-32768,  1294,  1307, 11012, 11012, 11012, 11012,  8963,-32768,  1353,
+-32768,-32768, 12410,-32768,-32768,-32768,   541,  1246,-32768,-32768,
 -32768,-32768,-32768,-32768,  1306,-32768,  1372,   543,-32768,-32768,
--32768,   112,-32768,-32768,-32768,-32768,-32768, 11013,-32768,-32768,
+-32768,   112,-32768,-32768,-32768,-32768,-32768, 11012,-32768,-32768,
   3372,  2078,  2078,  3076,  3076,  7405,-32768,   348,  2674,-32768,
--32768,  1313,  1321,  1324,  1338,-32768,  1061,   235,  1373,   696,
-   766,-32768,-32768,-32768,-32768,-32768, 11013,  1380,  1374,  1386,
- 10558,   522,  1764,   904,   686,-32768,-32768, 10649,  1436,-32768,
--32768,-32768,  1387,-32768,  7486, 11916,  5255,  6192,-32768,-32768,
-  1434,-32768,-32768,-32768,  9710,-32768,-32768,  1345,   424,-32768,
--32768,-32768,-32768,  3179,-32768,-32768,  8964,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  8214,  8214,-32768,  1298,   734,   824,
- 11013,-32768,-32768,-32768,   982,   982,  1298,  1298,  1007,  1298,
+-32768,  1313,  1321,  1324,  1338,-32768,  1020,   235,  1373,   696,
+   766,-32768,-32768,-32768,-32768,-32768, 11012,  1380,  1374,  1386,
+ 10557,   522,  1764,   904,   553,-32768,-32768, 10648,  1436,-32768,
+-32768,-32768,  1387,-32768,  7486, 11915,  5255,  6192,-32768,-32768,
+  1434,-32768,-32768,-32768,  9709,-32768,-32768,  1345,   424,-32768,
+-32768,-32768,-32768,  3179,-32768,-32768,  8963,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  8214,  8214,-32768,  1298,   686,   824,
+ 11012,-32768,-32768,-32768,   987,   987,  1298,  1298,  1007,  1298,
 -32768,-32768,-32768,   112,   112,-32768,-32768,-32768,  1348,  1351,
-  1352,  1354,-32768,  8964, 11013,-32768,   541,-32768,-32768,-32768,
--32768,   112,  1357,  4445,  4445,   939,  6713,-32768,-32768,-32768,
+  1352,  1354,-32768,  8963, 11012,-32768,   541,-32768,-32768,-32768,
+-32768,   112,  1357,  4445,  4445,   939,  6891,-32768,-32768,-32768,
 -32768,  1338,-32768,  1764,-32768,-32768,-32768,-32768,-32768,-32768,
-   679,   679,   988,  1358,  1402,  7870,-32768,-32768,-32768,-32768,
-  1416, 11013,  1435,  1439,  1445,  1992,  2096,-32768,   988,-32768,
--32768,  1408,-32768,-32768,   982,  1065,-32768,  1079,   982, 10740,
-  1094,   263,-32768,-32768,-32768,-32768,-32768,-32768,   426,-32768,
--32768,   112,   112,-32768,-32768,-32768, 11013, 11013,  8214,   445,
-   445,-32768,-32768,-32768,  5606,-32768,-32768,   112,   112,-32768,
+   679,   679,  1009,  1358,  1402,  7870,-32768,-32768,-32768,-32768,
+  1416, 11012,  1435,  1439,  1445,  1992,  2096,-32768,  1009,-32768,
+-32768,  1408,-32768,-32768,   987,  1061,-32768,  1065,   987, 10739,
+  1079,   263,-32768,-32768,-32768,-32768,-32768,-32768,   426,-32768,
+-32768,   112,   112,-32768,-32768,-32768, 11012, 11012,  8214,   463,
+   463,-32768,-32768,-32768,  5606,-32768,-32768,   112,   112,-32768,
 -32768,-32768,-32768,-32768,  1394,-32768,-32768,-32768,  7452,  7452,
- 12076,  2017,  1414,-32768,-32768,-32768, 10922,-32768,-32768,-32768,
-  1494, 10006,  7612, 10922, 11013,-32768,  9818,-32768,  1451,-32768,
--32768,  1461,-32768,  1445,  1992,-32768,-32768,   615,-32768,-32768,
- 11469, 11469,  8873,-32768,-32768,   988,-32768,-32768,  8214,  8214,
--32768,  1298,  1298,-32768,  9510,-32768,-32768,-32768,-32768,-32768,
-  2017, 12279,-32768,-32768,  1409,   220,  5451,   988,  9912,-32768,
--32768,    84,-32768,-32768,  1457,  1412, 12389,  9818,-32768,-32768,
+ 12075,  2017,  1414,-32768,-32768,-32768, 10921,-32768,-32768,-32768,
+  1494, 10005,  7612, 10921, 11012,-32768,  9817,-32768,  1451,-32768,
+-32768,  1461,-32768,  1445,  1992,-32768,-32768,   636,-32768,-32768,
+ 11468, 11468,  8872,-32768,-32768,  1009,-32768,-32768,  8214,  8214,
+-32768,  1298,  1298,-32768,  9509,-32768,-32768,-32768,-32768,-32768,
+  2017, 12278,-32768,-32768,  1409,   220,  5451,  1009,  9911,-32768,
+-32768,    84,-32768,-32768,  1457,  1412, 12388,  9817,-32768,-32768,
 -32768,-32768,  1338,    95,-32768,-32768,-32768,-32768,-32768,  1424,
- 12296,  1426,  1422,  1425,   988,-32768,   982,-32768,-32768,-32768,
--32768,   688,-32768,  9146,-32768,-32768,-32768,-32768,  1338,  1523,
-  1478,-32768,-32768,-32768,   357,   315,-32768,-32768,-32768,   445,
-    84,-32768, 11013,  1485,-32768,  1488,-32768,   988,  9818,  1448,
+ 12295,  1428,  1415,  1425,  1009,-32768,   987,-32768,-32768,-32768,
+-32768,   688,-32768,  9145,-32768,-32768,-32768,-32768,  1338,  1523,
+  1478,-32768,-32768,-32768,   415,   315,-32768,-32768,-32768,   463,
+    84,-32768, 11012,  1485,-32768,  1488,-32768,  1009,  9817,  1448,
    680,  1490,-32768,-32768,   122,-32768,  1487,-32768,  1450,-32768,
--32768,-32768,-32768, 11013,  1523,  1492,  1523,-32768,   114,-32768,
--32768,-32768,  9237,  1452,   683,-32768,-32768,-32768,  8964,  1453,
--32768,  1545,  1498,-32768,-32768,-32768,   224,-32768,  9912,  1554,
+-32768,-32768,-32768, 11012,  1523,  1492,  1523,-32768,   114,-32768,
+-32768,-32768,  9236,  1452,   683,-32768,-32768,-32768,  8963,  1453,
+-32768,  1545,  1498,-32768,-32768,-32768,   224,-32768,  9911,  1554,
   1505,-32768,-32768,-32768,  1567,  1569,-32768
 };
 
 static const short yypgoto[] = {-32768,
   1573,-32768,  -309,  1406,  -341,    58,     9,  1576,-32768,  1544,
--32768,-32768,   275,-32768,   417,-32768,   453,-32768,   133,   905,
+-32768,-32768,   275,-32768,   324,-32768,   417,-32768,   133,   905,
     43,    10,-32768,-32768,  -660,-32768,-32768,   618,    52,  1417,
   1145,  1420,  -709,   -16,  -166,    33,   -31,-32768,-32768,-32768,
 -32768,-32768,   796,-32768,-32768,-32768,-32768,-32768,-32768,   398,
@@ -1383,27 +1390,27 @@ static const short yypgoto[] = {-32768,
     31,  1955,  4797,  1322,  -331,   -60,   -97,  2135,  -117,   -74,
    528,-32768,-32768,-32768,  -332,-32768,  -160,-32768,-32768, -1267,
    -51,  -334,  6208,   107,  1546,  -142,    23,   342,  -207,    -4,
-  -188,  -172,  -167,   -19,   -13,   -91,-32768,  -202,-32768,-32768,
+  -188,  -172,  -167,   -19,   -13,   -91,-32768,  -177,-32768,-32768,
 -32768,-32768,-32768,  -140,  1273,   830,-32768,   671,-32768,-32768,
-  -972,  -266,   898,-32768,-32768,-32768,-32768,-32768,     1,-32768,
--32768,-32768,-32768,-32768,-32768,   968,  -380,-32768,-32768,-32768,
--32768,-32768,-32768,-32768,  1390,-32768,   407,   608,-32768,-32768,
--32768,   578,  -743,-32768,-32768,-32768,-32768,-32768,-32768,   867,
--32768,   422,   992,-32768,   712,  1066,  2660,   106,    36,  -470,
+  -972,  -266,   899,-32768,-32768,-32768,-32768,-32768,     1,-32768,
+-32768,-32768,-32768,-32768,-32768,   975,  -380,-32768,-32768,-32768,
+-32768,-32768,-32768,-32768,  1382,-32768,   407,   608,-32768,-32768,
+-32768,   578,  -743,-32768,-32768,-32768,-32768,-32768,-32768,   854,
+-32768,   421,   997,-32768,   720,  1066,  2660,   106,    36,  -470,
   1467,  2911,  1464,-32768,  -488,-32768,    14,  1644,   142,   -68,
-   613,   -79,  5336,  1323,-32768,  6215,  2861,  1736,   -18,  -114,
--32768,  1549,   -58,-32768,  5701,  3829,  -196,-32768,  2335,  1088,
--32768,-32768,   339,-32768,-32768,   463,    54,  -448,-32768,-32768,
+   613,   -79,  5336,  1326,-32768,  6215,  2861,  1736,   -18,  -114,
+-32768,  1547,   -58,-32768,  5701,  3829,  -196,-32768,  2335,  1088,
+-32768,-32768,   339,-32768,-32768,   485,    30,  -448,-32768,-32768,
 -32768,-32768, -1402,-32768, -1276, -1434,-32768,-32768,-32768,-32768,
 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-    66,-32768,-32768,-32768,-32768,-32768,   121, -1348,-32768,-32768,
+    68,-32768,-32768,-32768,-32768,-32768,   121, -1348,-32768,-32768,
    -37,-32768,-32768,-32768,-32768, -1436,    69,-32768,    59,-32768,
   -713,  -372,   684,-32768,-32768,-32768,-32768,  -392,-32768,  -384,
   -184,-32768,  1556,   347,-32768,   -63,-32768,  -234
 };
 
 
-#define        YYLAST          12536
+#define        YYLAST          12535
 
 
 static const short yytable[] = {    59,
@@ -1417,132 +1424,132 @@ static const short yytable[] = {    59,
   1450,  1465,   397,  1504,   174,   497,  1565,  1561,  1468,   296,
    420,   423,   611,   350,   170,   350,   253,   350,   528,   190,
   1074,  1082,    35,   171,   452,   740,   260,  1087,   713,   169,
-   703,   704,   350,   350,   403,   611,   611,   163,   595,    72,
-    55,   233,   986,   839,   721,  1566,  1202,  1593,    89,   364,
+   703,   704,   350,   350,   403,   611,   611,  1039,   595,    72,
+    55,   233,   986,   839,   721,  1566,  1202,  1593,    -1,   364,
    519,   645,  1638,   196,  1591,    15,  1011,    86,   256,  -416,
-    -1,   406,   350,  1575,   350,   141,   146,   374,    90,  -143,
-    72,    55,   528,   375,   208,    76,   164,    72,   175,   177,
+   309,   406,   350,  1575,   350,   141,   146,   374,  1040,  -143,
+    72,    55,   528,   375,   208,    76,    26,    72,   175,   177,
     94,   137,  -357,   596,   915,  1588,   453,  1600,   405,  -416,
     59,  1075,   951,  -416,    59,   357,  1628,   358,  -296,   178,
    388,   209,   722,   745,  1012,    87,    76,  1013,    42,   710,
   -357,  1011,  1208,    76,   453,   127,   128,    57,   454,   297,
    190,   176,  1203,   728,   416,  1617,   201,   440,   213,   493,
-  1016,   174,  1601,   992,   825,    91,  1650,  -416,  1148,   221,
+  1016,   174,  1601,   992,   825,    89,  1650,  -416,  1148,   221,
    952,   170,   408,  -600,    -2,  1632,   454,   221,   221,  -366,
-   171,    15,   840,    88,  1591,    92,   169,   215,   216,  1012,
+   171,    15,   840,    88,  1591,    90,   169,   215,   216,  1012,
   1001,  1209,  1013,    14,  -829,   190,    26,    93,   130,   131,
   1569,    72,   404,   459,   107,  1563,  1078,   221,  1017,   617,
   1504,  1018,   529,  -366,   419,   422,    20,  -366,  -600,  -600,
-   460,   260,   530,  1371,  1372,    23,  1298,   621,   523,   108,
+   460,   260,   530,  1371,  1372,    23,  1298,   621,   523,   163,
     72,    55,  1004,  -600,    72,   175,  1159,   407,    38,  1162,
   1393,   410,  1364,  1660,   502,   504,   616,   718,   461,  -366,
-   768,  1598,   247,   109,  1079,  1426,   221,   514,   471,   474,
-   495,   498,   309,  1173,   964,   608,    76,   803,   495,    38,
-    76,   642,   824,   682,  1299,   135,   201,   213,    26,   467,
-   498,  1189,  1190,  1426,  1120,   350,   677,  1039,   649,  1234,
-  1365,  1661,   965,   993,   772,   773,   542,   543,   296,   498,
-   937,  1239,  1633,  1427,  -303,    58,   247,   766,   966,   697,
-   221,   517,   700,   552,   350,   651,   553,  1022,  1040,   554,
+   108,  1598,   247,   109,  1079,  1426,   221,   514,   471,   474,
+   495,   498,   965,  1173,   964,   608,    76,   164,   495,    38,
+    76,   642,   824,   682,  1299,   768,   201,   213,   966,   467,
+   498,  1189,  1190,  1426,  1120,   350,   677,    39,   649,  1234,
+  1365,  1661,   803,   993,   772,   773,   542,   543,   296,   498,
+   937,  1239,  1633,  1427,  -303,    58,   247,   766,   135,   697,
+   221,   517,   700,   552,   350,   651,   553,  1022,    39,   554,
   1050,   432,   564,   201,   468,   955,   569,  -625,   551,   260,
    137,  1535,   990,   991,   610,  1260,    58,  1262,   994,   516,
-   161,   183,   405,    58,   883,    26,   162,   995,   996,  -303,
+   222,   223,   405,    58,   883,    26,   161,   995,   996,  -303,
   -303,   761,   127,   128,  1051,  -599,   518,   694,  1052,   767,
    209,   884,   621,   632,  -296,  1476,   221,   420,   423,   660,
-   187,   685,  -625,  -625,  1482,  1483,   595,  1484,   670,    18,
-    39,   179,   177,   997,   240,   295,  1406,  -625,   241,   885,
-  1053,   660,   740,  1176,   648,  -305,   621,    59,   740,   188,
+   162,   685,  -625,  -625,  1482,  1483,   595,  1484,   670,    18,
+    40,   179,   177,   997,   240,   295,  1406,  -625,   241,   885,
+  1053,   660,   740,  1176,   648,  -305,   621,    59,   740,   183,
   -599,  -599,   178,    26,  1228,   130,   131,   824,   297,  -581,
-  -305,    39,  1150,   243,  -305,  -599,    40,   637,   138,   622,
+  -305,    40,  1150,   187,  -305,  -599,   243,   637,    91,   622,
     89,   596,  1280,   738,   176,    72,   650,   814,  -141,   623,
-   621,  -305,   377,  -305,   715,    18,   792,    58,   139,   245,
-    90,   624,   625,  -305,  -305,   769,  -305,    40,  -305,   221,
-   221,   898,    90,   299,  -581,   189,   350,   221,  1296,  1297,
-   138,   652,   638,    59,   127,   128,    58,   696,  1077,   221,
-    58,   376,   815,  1095,   795,   824,  -305,  -305,  -305,  -305,
-   300,   394,   395,    10,    95,   110,   111,   362,   221,   350,
-   797,  -305,   350,  -299,   372,   350,   899,    95,   110,   111,
+   621,  -305,   138,  -305,   715,  1240,   792,    58,    92,   188,
+    90,   624,   625,  -305,  -305,   769,  -305,    88,  -305,   221,
+   221,   898,   139,    18,  -581,   189,   350,   221,  1296,  1297,
+   245,   652,   638,    59,   127,   128,    58,   696,  1077,   221,
+    58,   299,   815,  1095,   795,   824,  -305,  -305,  -305,  -305,
+   300,   394,   395,    10,    95,   110,   111,   138,   221,   350,
+   797,  -305,   350,  -299,   362,   350,   899,    95,   110,   111,
    350,   831,   831,   831,   831,   201,   989,    72,   175,   740,
-   380,   771,   781,   350,  1201,    26,  1496,   130,   131,    21,
-   155,   381,  -581,   350,   401,   789,   350,   900,   608,  1578,
-  1579,  -296,   697,   696,    27,   320,   770,   495,   112,   113,
+   372,   771,   781,   350,  1201,    26,  1496,   130,   131,    21,
+   155,   376,  -581,   350,   380,   789,   350,   900,   608,  1578,
+  1579,   381,   697,   696,    27,   320,   770,   495,   112,   113,
    698,   750,   751,    76,   695,   960,   552,   553,   883,  1036,
-  1037,   112,   113,   425,   653,  1041,   682,   189,   939,   642,
-   641,   296,  1442,   961,   433,   884,    32,  -581,   485,   821,
-   902,   410,   901,    72,   796,  1240,   848,  1122,   565,   694,
-   566,   138,  1026,   528,   201,   303,   738,    88,  1034,  -144,
-  1054,  -620,   201,   885,  1405,   300,   568,    -7,    10,   972,
-  1195,   977,   978,   572,   164,   158,   447,   921,   260,   802,
-  1172,   221,   565,   448,   566,   903,   127,   128,  1285,  1197,
-   896,   519,   451,    18,  -367,   122,    15,  1027,   392,  1199,
-   740,   463,   511,   350,    21,  1055,   155,   155,   155,    91,
-   464,  -120,   740,    15,   295,  1196,   978,   209,    91,   426,
-   427,   247,   922,   923,   221,   501,  -142,   645,  -367,    92,
-  1002,    58,  -367,   428,  1198,  1001,   526,    26,    92,   130,
+  1037,   112,   113,  -296,   653,  1041,   682,   425,   939,   642,
+   641,   296,  1442,   961,   401,   884,    32,  -581,   485,   821,
+   902,   410,   901,    72,   796,  1448,   848,  1122,   565,   694,
+   566,   138,  1026,   528,   201,   189,   738,   137,  1034,  -144,
+  1054,   433,   201,   885,  1405,   300,   568,  -620,    10,   972,
+  1195,   977,   978,   572,    -7,   158,   303,   921,   260,   802,
+  1172,   221,   565,   164,   566,   903,   127,   128,  1285,  1197,
+   896,   519,   447,    18,  -367,   122,    15,  1027,   392,  1199,
+   740,   448,   511,   350,    21,  1055,   155,   155,   155,    91,
+   451,  -120,   740,    15,   295,  1196,   978,   209,    91,   426,
+   427,   247,   922,   923,   221,   463,  -142,   645,  -367,    92,
+  1002,    58,  -367,   428,  1198,  1001,   464,    26,    92,   130,
    131,   297,    89,   429,  1200,  -120,   740,   512,   740,  -120,
-  1241,    32,   155,   887,   524,   430,  1506,   905,   908,   696,
-   963,   525,    90,   888,  -367,  1612,   696,   694,   221,   527,
-   781,   980,  1635,   693,  1060,  1652,   889,  -118,  1448,    15,
-    89,  -120,   546,   958,  1092,  1093,  1094,   792,  1429,   792,
-   137,   158,   158,   158,  1059,  1069,   221,   792,   366,   370,
+  1241,    32,   155,   887,   501,   430,  1506,   905,   908,   696,
+   963,   524,    90,   888,  -367,  1612,   696,   694,   221,   525,
+   781,   980,  1635,   693,  1060,  1652,   889,  -118,  1477,    15,
+    89,  -120,   526,   958,  1092,  1093,  1094,   792,  1429,   792,
+    88,   158,   158,   158,  1059,  1069,   221,   792,   366,   370,
     90,  1507,   848,     8,   521,  1255,  1256,  1257,  1048,  1049,
-  1613,  -118,   535,    58,    59,  -118,    59,  1636,  1080,   825,
-  1653,   201,   209,   544,    59,   795,  1477,   795,     8,     9,
-   694,   350,   350,   795,   350,   795,   694,   158,    88,   693,
-   378,   797,   432,   797,   545,   127,   128,  -118,   363,   547,
-    91,   797,   222,   223,  1191,   379,   130,   131,  1430,   548,
-    92,   221,   201,   975,   201,   201,   127,   128,   215,   216,
-    92,   549,  1269,  1271,    14,   137,   789,   696,   789,    58,
-   522,   130,   131,  1229,  1230,  1231,   789,  1028,  1029,   568,
-   363,   222,   446,   611,    95,   110,   111,    20,   130,   131,
-   300,   394,   395,    10,   662,   350,    23,   678,    89,   201,
-  1124,  1083,  1084,  1020,  1085,   661,  1478,    26,   664,   130,
-   131,   224,   522,   665,    72,   796,    72,  1046,    90,   127,
+  1613,  -118,   527,    58,    59,  -118,    59,  1636,  1080,   825,
+  1653,   201,   209,   535,    59,   795,   544,   795,     8,     9,
+   694,   350,   350,   795,   350,   795,   694,   158,   545,   693,
+   377,   797,   432,   797,   546,   127,   128,  -118,   363,   547,
+    91,   797,   222,   446,  1191,   378,   130,   131,  1430,   548,
+    90,   221,   201,   975,   201,   201,   127,   128,   215,   216,
+    92,   379,  1269,  1271,    14,    92,   789,   696,   789,    58,
+   522,   130,   131,  1229,  1230,  1231,   789,  1028,  1029,   549,
+   363,   137,   483,   484,    95,   110,   111,    20,   130,   131,
+   300,   394,   395,    10,   568,   350,    23,   611,    89,   201,
+  1124,  1083,  1084,  1020,  1085,   661,  1478,    26,   662,   130,
+   131,   224,   522,   664,    72,   796,    72,  1046,    90,   127,
    128,   256,    15,   887,    72,   796,  -416,  1236,  1237,    21,
-   696,   831,   666,   888,   679,  1639,   696,   694,   112,   113,
-   114,   738,    26,  1130,    27,   320,   889,   707,  1281,  1282,
-   802,  1284,   802,    90,  1251,  -416,  -416,  1066,  1073,  1253,
-   802,  1271,     8,     9,   363,   260,    92,   295,   129,    -6,
-  1360,  1362,   130,   131,   552,   553,    32,   711,    26,  1366,
-   694,  1445,   831,   350,   733,   693,   694,   483,   484,   224,
-   127,   128,   693,    15,   685,   519,   252,  -416,   491,   492,
-  1410,     8,     9,   762,  1510,   224,   757,   363,   116,   117,
-   118,   559,   256,   816,  1060,   130,   131,   670,   593,   594,
-  1527,  1403,  -183,   155,   155,   155,  -416,  -416,    15,   738,
-   963,  -416,   825,   808,  1059,   127,  1389,   137,  -183,   252,
+   696,   831,   665,   888,   666,  1639,   696,   694,   112,   113,
+   114,   738,    26,  1130,    27,   320,   889,   678,  1281,  1282,
+   802,  1284,   802,   679,  1251,  -416,  -416,  1066,  1073,  1253,
+   802,  1271,     8,     9,   363,   260,    90,   295,   129,    92,
+  1360,  1362,   130,   131,   552,   553,    32,   707,    26,  1366,
+   694,  1445,   831,   350,    -6,   693,   694,   491,   492,   224,
+   127,   128,   693,    15,   685,   519,   252,  -416,   483,   716,
+  1410,     8,     9,   733,  1510,   224,   711,   363,   116,   117,
+   118,   559,   256,   757,  1060,   130,   131,   670,   593,   594,
+  1527,  1403,  -183,   155,   155,   155,  -416,  -416,   762,   738,
+   963,  -416,   825,    15,  1059,   127,  1389,   137,  -183,   252,
   -183,    26,   831,   130,   131,   806,   363,   696,   807,   905,
-   908,   696,   809,   432,   130,   131,   817,   529,   694,   835,
-    26,   224,   119,   120,   792,  1243,   722,   530,   837,   224,
-   694,  1245,  1246,   838,   812,  1243,  1248,   840,   522,  1246,
-   363,    91,    95,    96,    97,   432,   224,   895,   130,   131,
-   696,    59,   914,   253,  1178,  1179,   696,   483,   716,   491,
-   717,    92,   795,   693,   694,   897,   694,  1510,   158,   158,
-   158,   916,   522,   918,   831,   942,     8,     9,   797,   813,
-  1471,  1377,  1378,   943,  1387,  1388,   944,  1390,   953,  1510,
-   256,   420,   423,   954,    26,   831,    98,    99,   100,   696,
-  1424,  1425,   957,    18,   483,  1529,   732,   959,   350,   -52,
-    58,    20,    58,   789,   -52,   967,  1609,  1494,   491,  1530,
-    58,   420,   423,  -299,   501,   -52,   693,    26,   696,   130,
-   131,   694,   693,   483,  1534,   968,  1270,   127,   128,   697,
-   696,  1286,   981,  1222,   987,   988,   453,  1584,  1032,  1510,
+   908,   696,   809,   432,   130,   131,   808,   529,   694,   816,
+    26,   224,   119,   120,   792,  1243,   817,   530,   835,   224,
+   694,  1245,  1246,   837,   812,  1243,  1248,   838,   522,  1246,
+   363,    91,    95,    96,    97,   432,   224,   722,   130,   131,
+   696,    59,   840,   253,  1178,  1179,   696,   491,   717,  1424,
+  1425,    92,   795,   693,   694,   895,   694,  1510,   158,   158,
+   158,   897,   522,   914,   831,   916,     8,     9,   797,   813,
+  1471,  1377,  1378,   918,  1387,  1388,   942,  1390,   943,  1510,
+   256,   420,   423,   944,    26,   831,    98,    99,   100,   696,
+   483,  1529,   953,    18,   491,  1530,   732,   954,   350,   -52,
+    58,   957,    58,   789,   -52,   959,  1609,  1494,   483,  1534,
+    58,   420,   423,    20,   501,   -52,   693,    26,   696,   130,
+   131,   694,   693,   967,   968,   981,  1270,   127,   128,   697,
+   696,  1286,  -299,  1222,   987,   988,   453,  1584,  1032,  1510,
   1008,  1009,  1456,  1223,  1461,  1002,  1010,   694,  1458,  1015,
   -828,    72,   796,   432,  1024,  1224,  1031,  1066,  1035,  1038,
-   724,   116,   772,   773,   696,   774,   696,  1096,   559,  1097,
-  1347,   559,   116,   117,   118,  1110,   828,   738,  1288,  1098,
-   130,   131,  1102,  1339,  1100,  1101,  1103,   802,  1104,   559,
-   792,   825,   382,   383,   384,  1105,   775,  1346,  1106,  -140,
-  1107,  1109,   559,  1112,  1474,  1475,   855,  1113,  1114,  1115,
-   552,   553,  1129,    26,  1042,   119,   120,    59,  1316,  1116,
-  1131,    91,  1132,   523,  1270,  1133,   119,   120,   795,   905,
+   724,   116,   772,   773,   696,   774,   696,  -140,   559,  1096,
+  1347,   559,   116,   117,   118,  1097,   828,   738,  1288,  1098,
+   130,   131,  1102,  1339,  1103,  1100,  1101,   802,  1104,   559,
+   792,   825,   382,   383,   384,  1105,   775,  1346,  1106,  1109,
+  1107,  1110,   559,  1112,  1474,  1475,   855,  1113,  1114,  1115,
+   552,   553,  1129,    26,  1042,   119,   120,    59,  1316,  1132,
+  1116,    91,  1131,   523,  1270,  1133,   119,   120,   795,   905,
    908,   696,  1338,   693,   878,  1134,  1141,   693,   385,  1142,
-   894,    92,  1171,  1143,   797,  1149,   386,   387,  1152,   224,
-   300,   394,   395,    10,  1153,  1302,  1303,   696,  1165,  1043,
-    95,    96,    97,  1455,  1158,  1455,  1170,  1167,  1194,   224,
-  1217,   694,   140,   140,  1227,   156,   693,  1244,   224,   789,
+   894,    92,  1165,  1143,   797,  1149,   386,   387,  1152,   224,
+   300,   394,   395,    10,  1153,  1302,  1303,   696,  1170,  1043,
+    95,    96,    97,  1455,  1158,  1455,  1171,  1167,  1194,   224,
+  1244,   694,   140,   140,  1217,   156,   693,  1227,   224,   789,
     72,  1249,   693,  1250,  1254,  1302,  1303,   696,   410,    21,
   1258,   382,   383,   384,  1264,   224,   251,  1028,  1029,   212,
   1265,   220,  1272,  1347,    27,   320,   363,   237,  1541,  1542,
-  1543,   209,  1266,  1347,    98,    99,  1267,   221,   528,  1274,
-  1347,  1275,  1276,  1279,  1287,   693,  1339,    72,   796,   831,
+  1543,   209,  1266,  1347,    98,    99,  1267,   221,   528,  1275,
+  1347,  1287,  1274,  1276,  1279,   693,  1339,    72,   796,   831,
   1346,  1202,   460,  1339,  1289,  1283,    32,  1574,   564,  1290,
   1346,  1480,  1481,    26,  1291,   386,   387,  1346,  1443,  1444,
   1295,  1294,  1654,  1300,   693,  1386,    95,   414,   415,  1310,
@@ -1559,7 +1566,7 @@ static const short yytable[] = {    59,
    220,   622,  1523,  1526,  1514,  1520,   694,   693,   155,  1521,
   1528,   623,  1556,   375,  1550,  1587,  1552,  1347,  1347,  1556,
   1560,  1570,  1347,   624,   625,  1571,  1586,  1595,   199,  1596,
-  1339,    21,  1604,   693,    26,  1339,   119,   120,   350,  1607,
+  1339,    21,  1607,   693,    26,  1339,   119,   120,   350,  1604,
   1602,   140,  1608,  1620,  1346,  1346,   112,   113,  1624,  1346,
   1634,   155,    95,    96,    97,  1630,    58,   694,  1631,  1637,
   1127,  1641,  1646,   693,  1347,  1656,   221,  1642,  1658,  1651,
@@ -1569,14 +1576,14 @@ static const short yytable[] = {    59,
   1346,  1311,  1070,    58,   360,  1509,    98,    99,   127,   128,
    597,   503,   156,   409,  1414,  1415,   696,   590,   591,   592,
    593,   594,   297,  1662,  1347,  1407,  1338,    72,    72,   297,
-   534,  1166,    72,  1007,   945,  1338,   158,  1339,    95,    96,
-    97,   506,   225,   226,   227,  1368,   750,   751,   199,   598,
+   534,  1166,    72,   506,  1007,  1338,   158,  1339,    95,    96,
+    97,   945,   225,   226,   227,  1368,   750,   751,   199,   598,
    599,  1346,   621,   600,   601,   602,   603,   693,  1232,    26,
-   946,   130,   131,  1252,  1347,  1164,    18,   696,     7,     8,
-   250,    10,   228,  1072,    72,   622,   486,  1339,  1356,   618,
-  1391,   882,   390,    72,   147,   623,  1338,   212,   220,    58,
+  1072,   130,   131,  1252,  1347,   946,    18,   696,     7,     8,
+   250,    10,   228,  1164,    72,   622,   486,  1339,  1648,  1391,
+   390,   882,   618,    72,   147,   623,  1338,   212,   220,    58,
     26,  1346,    98,    99,   229,   199,  1464,   624,   625,    58,
-  1640,   140,  1648,  1599,   140,  1647,    58,    21,   201,   297,
+  1356,   140,  1640,  1599,   140,  1647,    58,    21,   201,   297,
    156,   156,   156,  1645,   251,  1216,   140,   155,   155,   155,
   1470,     0,    27,    28,     0,     0,  1338,     0,     0,  -577,
      0,     0,  -577,     0,    72,     0,     0,     0,   230,   231,
@@ -1947,16 +1954,16 @@ static const short yytable[] = {    59,
     78,     0,     0,     0,     0,     0,     0,    78,     0,   145,
    248,     0,     0,     0,     0,   145,     0,     0,     0,     0,
     78,     0,    78,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,   784,     0,     7,     8,   785,    10,   167,
+     0,     0,     0,     6,     0,     7,     8,     9,    10,    11,
     12,    13,     0,     0,     0,   254,    14,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,   560,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,   560,     0,    15,
     16,     0,    17,    18,    19,     0,     0,     0,     0,    20,
-     0,     0,     0,     0,    21,     0,    51,     0,    23,   786,
-     0,   168,     0,     7,     8,     9,    10,    26,     0,    27,
-    28,     0,     0,   787,     0,   788,     0,     0,     0,     0,
+     0,     0,     0,     0,    21,     0,    51,    22,    23,    24,
+     0,    25,     0,     7,     8,     9,    10,    26,     0,    27,
+    28,     0,     0,    29,     0,     0,     0,     0,     0,     0,
      0,    78,   396,    30,     0,    78,    78,     0,     0,   396,
      0,    78,     0,    31,    78,    78,    78,    51,    51,    51,
-    51,    32,    21,     0,     0,    33,     0,     0,     0,     0,
+    51,    32,    21,     0,     0,    33,     0,     0,     0,    34,
     78,     0,     0,     0,    78,    26,     0,    27,    28,     0,
     78,    78,     7,     8,     9,    10,     0,     0,    13,     0,
      0,   193,     0,     0,     0,     0,     0,     0,    78,    78,
@@ -1977,7 +1984,7 @@ static const short yytable[] = {    59,
   -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
   -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,  -479,
   -479,   643,  -479,  -479,  -479,    78,  -479,  -479,  -479,  -479,
-  -479,     0,  -479,     0,     0,     0,     0,  1545,     0,     0,
+  -479,     0,     0,     0,     0,     0,  1545,  -479,     0,     0,
      0,     0,  -479,  -479,  -479,     0,  -479,     0,     0,     0,
    560,   560,   560,     0,     0,     0,   431,   254,     0,     0,
      0,   127,   128,   159,     0,   215,   216,     0,     0,    78,
@@ -2040,16 +2047,16 @@ static const short yytable[] = {    59,
   1463,   331,     0,     0,    78,    78,    78,     0,   890,     0,
      0,     0,     0,     0,   369,   371,     0,     0,   257,     0,
    365,     0,   628,   628,   628,     0,    21,  1213,  1213,  1213,
-     6,   628,     7,     8,     9,    10,    11,    12,    13,    26,
+   166,   628,     7,     8,     9,    10,   167,    12,    13,    26,
      0,    27,    28,    14,     0,     0,     0,  1381,     0,  1215,
-   204,     0,     0,    51,     0,   193,    15,    16,     0,    17,
+   204,     0,     0,    51,     0,   193,     0,    16,     0,    17,
     18,    19,     0,     0,     0,   194,    20,     0,     0,     0,
-     0,    21,     0,    32,    22,    23,    24,   195,    25,     0,
+     0,    21,     0,    32,     0,    23,     0,   195,   168,     0,
      0,    78,     0,     0,    26,     0,    27,    28,     0,   202,
-    29,   973,     0,   973,   973,     0,   628,     0,     0,     0,
+     0,   973,     0,   973,   973,     0,   628,     0,     0,     0,
     30,     0,     0,     0,     0,     0,     0,   202,   202,   202,
     31,    78,     0,     0,     0,     0,     0,   487,    32,     0,
-     0,     0,    33,     0,     0,     0,     0,    34,     0,     0,
+     0,     0,    33,     0,     0,     0,    34,     0,     0,     0,
      0,     0,     0,     0,     0,     0,   202,     0,   973,     0,
      0,     0,     0,     7,     8,     9,    10,     0,     0,   246,
    204,   204,   756,   756,   756,     0,     0,     0,   204,     0,
@@ -2077,35 +2084,35 @@ static const short yytable[] = {    59,
    973,  1186,     0,     0,    32,   737,     0,     0,    33,     0,
     78,    78,    78,     0,   202,   202,     0,     0,   202,     0,
    202,   202,   202,   202,  -524,     0,     0,   202,     0,     0,
-     0,     0,   202,     0,     0,   202,     0,     0,     0,     0,
-     0,     0,     0,     0,  1186,     0,     8,     9,     0,     0,
-     0,   519,     0,     0,     0,     0,     0,     0,   756,   756,
-   756,     0,   166,     0,     7,     8,     9,    10,   167,    12,
-    13,     0,     0,    18,   823,    14,   204,   826,     0,     0,
-     0,     0,   829,   830,   832,   833,   834,     0,     0,    16,
-   621,    17,    18,    19,     0,   563,     0,    26,    20,   130,
-   131,     0,     0,    21,     0,     0,     0,    23,   851,     0,
-   168,     0,     0,  1499,     0,     0,    26,     0,    27,    28,
-     0,     0,     0,  1500,     0,  1215,     0,     0,     0,     0,
-     0,     0,    30,     0,     0,  1501,   625,     0,     0,     0,
-     0,     0,    31,     0,     0,     0,     0,     0,     0,     0,
-    32,     0,     0,     0,    33,   890,   890,     0,   890,    34,
-     0,   910,     0,     0,     0,     0,     0,     0,   910,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,   257,   261,
-     0,   628,     0,     0,   628,   628,   628,     0,     0,     0,
-     0,     0,     0,     0,   202,     0,  1215,  1215,  1215,     0,
-     0,     0,     0,     0,     0,     0,     0,   973,   973,   973,
-  1186,  1186,  1186,  1307,     0,     0,     0,   973,     0,     0,
-     0,     0,    78,   300,     8,     9,    10,   167,    12,    13,
-     0,     0,   735,     0,    14,   202,     0,   202,   202,     0,
-  1186,  1186,  1186,     0,     0,     0,     0,     0,    16,     0,
-    17,    18,   756,   756,   756,   756,     0,    20,     0,     0,
-     0,     0,    21,     0,     0,     0,    23,     0,   621,     0,
-     0,     0,     0,     0,   204,    26,     0,    27,   320,   690,
+     0,     0,   202,     0,     0,   202,   300,     8,     9,    10,
+   167,    12,    13,     0,  1186,   735,     0,    14,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   756,   756,
+   756,    16,     0,    17,    18,     0,     0,     0,     0,     0,
+    20,     0,     0,     0,   823,    21,   204,   826,     0,    23,
+     0,   621,   829,   830,   832,   833,   834,     0,    26,     0,
+    27,   320,     0,     0,     0,   563,     0,     0,     0,     0,
+     0,     0,     0,     0,  1154,     0,     0,     0,   851,     0,
+     0,     0,     0,     0,  1155,     0,     0,     0,     0,     0,
+     0,     0,    32,     0,     0,  1215,  1156,   625,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     7,     8,     9,
+    10,   167,    12,    13,     0,     0,     0,     0,    14,     0,
+     0,     0,     0,     0,     0,   890,   890,     0,   890,     0,
+     0,   910,    16,     0,    17,    18,    19,     0,   910,     0,
+     0,    20,     0,     0,     0,     0,    21,     0,   257,   261,
+    23,   628,     0,   168,   628,   628,   628,     0,     0,    26,
+     0,    27,    28,     0,   202,     0,  1215,  1215,  1215,     0,
+     0,     0,     0,     0,     0,    30,     0,   973,   973,   973,
+  1186,  1186,  1186,  1307,     0,    31,     0,   973,     0,     0,
+     0,     0,    78,    32,     8,     9,     0,    33,     0,   519,
+     0,    34,     0,     0,     0,   202,     0,   202,   202,     0,
+  1186,  1186,  1186,     0,     0,     0,     0,     0,     0,     0,
+     0,    18,   756,   756,   756,   756,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   621,     0,
+     0,     0,     0,     0,   204,    26,     0,   130,   131,   690,
      0,     0,   202,     0,     0,     0,     0,     0,     0,     0,
-     0,  1154,     0,     0,   202,   202,   202,   202,   202,   487,
-     0,  1155,   202,     0,     0,     0,     0,     0,     0,    32,
-     0,     0,     0,  1156,   625,     0,     0,     0,     0,     0,
+     0,  1499,     0,     0,   202,   202,   202,   202,   202,   487,
+     0,  1500,   202,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,  1501,   625,     0,     0,     0,     0,     0,
      0,     0,     0,     0,     0,     0,     0,   261,     0,     0,
      0,  1307,   973,   973,  1307,  1307,  1307,     0,     0,   973,
    202,     0,   737,   626,   626,   626,     0,     0,   737,     0,
@@ -2179,17 +2186,17 @@ static const short yytable[] = {    59,
    324,   325,   326,     0,   102,     0,   776,     0,   327,   328,
    329,     0,     0,     0,   330,     0,     0,     0,   910,     0,
      0,     0,     0,   202,   202,  1184,   202,     0,     0,     0,
-   102,   331,     0,     0,     0,     0,     0,     7,     8,     9,
-    10,   167,    12,    13,     0,     0,     0,     0,    14,     0,
-   563,     0,     0,     0,     0,  1184,  1184,  1184,     0,     0,
-     0,     0,    16,     0,    17,    18,    19,     0,     0,   690,
-     0,    20,     0,     0,     0,   202,    21,     0,     0,     0,
-    23,   202,     0,   168,     0,     0,     0,     0,     0,    26,
-     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,    30,     0,   102,     0,     0,
-     0,     0,     0,     0,     0,    31,     0,     0,   102,   102,
-     0,   102,   102,    32,     0,   626,     0,    33,   626,   626,
-   626,     0,    34,   784,     0,     7,     8,   785,    10,   167,
+   102,   331,   784,     0,     7,     8,   785,    10,   167,    12,
+    13,     0,     0,     0,     0,    14,     0,     0,     0,     0,
+   563,     0,     0,     0,     0,  1184,  1184,  1184,     0,    16,
+     0,    17,    18,    19,     0,     0,     0,     0,    20,   690,
+     0,     0,     0,    21,     0,   202,     0,    23,   786,     0,
+   168,   202,     0,     0,     0,     0,    26,     0,    27,    28,
+     0,     0,   787,     0,   788,     0,     0,     0,     0,     0,
+     0,     0,    30,     0,     0,     0,     0,   102,     0,     0,
+     0,     0,    31,     0,     0,     0,     0,     0,   102,   102,
+    32,   102,   102,     0,    33,   626,     0,     0,   626,   626,
+   626,     0,     0,   784,     0,     7,     8,   785,    10,   167,
     12,    13,     0,     0,     0,     0,    14,     0,     0,     0,
      0,   626,   626,   626,   626,   626,   626,   626,     0,     0,
     16,   626,    17,    18,    19,     0,     0,     0,     0,    20,
@@ -2294,61 +2301,70 @@ static const short yytable[] = {    59,
    321,     0,     0,     0,     0,     0,   322,     0,     0,   323,
      0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-     0,   330,     0,   555,     0,     7,     8,     9,    10,  1361,
-    12,   301,   302,   303,     0,   304,    14,     0,   331,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    16,   305,    17,    18,    19,     0,   306,   307,   308,    20,
+     0,   330,   555,     0,     7,     8,     9,    10,  1361,    12,
+   301,   302,   303,     0,   304,    14,     0,     0,   331,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    16,
+   305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
+   309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
+     0,   314,   315,   316,   317,   318,    26,     0,    27,    28,
+  -313,     0,     0,   321,     0,     0,     0,     0,     0,   322,
+     0,     0,  1531,     0,     0,     0,     0,     0,     0,     0,
+   324,   325,  1532,     0,     0,     0,     0,     0,   327,   328,
+   329,     0,     0,   725,  1533,   300,     8,     9,    10,     0,
+    12,   536,   302,   303,     0,   304,    14,     0,     0,     0,
+     0,   331,     0,     0,     0,     0,     0,     0,     0,     0,
+    16,   305,    17,     0,    19,     0,   306,   307,   308,    20,
      0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
      0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-    28,  -313,     0,     0,   321,     0,     0,     0,     0,     0,
-   322,     0,     0,  1531,     0,     0,     0,     0,     0,     0,
-     0,   324,   325,  1532,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,   725,  1533,   300,     8,     9,    10,
+   320,   726,     0,     0,   321,     0,     0,     0,     0,     0,
+   322,     0,     0,   323,     0,     0,     0,     0,     0,     0,
+     0,   324,   325,   326,     0,     0,     0,     0,     0,   327,
+   328,   329,     0,     0,   854,   330,   300,     8,     9,    10,
      0,    12,   536,   302,   303,     0,   304,    14,     0,     0,
      0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
      0,    16,   305,    17,     0,    19,     0,   306,   307,   308,
     20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
      0,     0,     0,   314,   315,   316,   317,   318,    26,     0,
-    27,   320,   726,     0,     0,   321,     0,     0,     0,     0,
+    27,   320,     0,     0,     0,   321,  -789,     0,     0,     0,
      0,   322,     0,     0,   323,     0,     0,     0,     0,     0,
      0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
-   327,   328,   329,     0,     0,   854,   330,   300,     8,     9,
-    10,     0,    12,   536,   302,   303,     0,   304,    14,     0,
+   327,   328,   329,     0,     0,  1615,   330,   300,     8,     9,
+    10,     0,    12,   301,   302,   303,     0,   304,    14,     0,
      0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
      0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
    308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
     23,     0,     0,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,   320,     0,     0,     0,   321,  -789,     0,     0,
+     0,    27,   320,     0,     0,  -196,   321,     0,     0,     0,
      0,     0,   322,     0,     0,   323,     0,     0,     0,     0,
      0,     0,     0,   324,   325,   326,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,  1615,   330,   300,     8,
-     9,    10,     0,    12,   301,   302,   303,     0,   304,    14,
+     0,   327,   328,   329,     0,     0,   854,   330,   300,     8,
+     9,    10,     0,    12,   536,   302,   303,     0,   304,    14,
      0,     0,     0,     0,   331,     0,     0,     0,     0,     0,
      0,     0,     0,    16,   305,    17,     0,    19,     0,   306,
    307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
      0,    23,     0,     0,     0,   314,   315,   316,   317,   318,
-    26,     0,    27,   320,     0,     0,  -196,   321,     0,     0,
+    26,     0,    27,   320,     0,     0,     0,   321,     0,     0,
      0,     0,     0,   322,     0,     0,   323,     0,     0,     0,
      0,     0,     0,     0,   324,   325,   326,     0,     0,     0,
-     0,     0,   327,   328,   329,     0,     0,   854,   330,   300,
+     0,     0,   327,   328,   329,     0,     0,   947,   330,   300,
      8,     9,    10,     0,    12,   536,   302,   303,     0,   304,
-    14,     0,     0,     0,     0,   331,     0,     0,     0,     0,
+    14,     0,     0,  -789,     0,   331,     0,     0,     0,     0,
      0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
    313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
    318,    26,     0,    27,   320,     0,     0,     0,   321,     0,
      0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
      0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,   947,   330,
+     0,     0,     0,   327,   328,   329,     0,     0,   949,   330,
    300,     8,     9,    10,     0,    12,   536,   302,   303,     0,
-   304,    14,     0,     0,  -789,     0,   331,     0,     0,     0,
+   304,    14,     0,     0,     0,     0,   331,     0,     0,     0,
      0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
      0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
    312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
    317,   318,    26,     0,    27,   320,     0,     0,     0,   321,
      0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
      0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
-     0,     0,     0,     0,   327,   328,   329,     0,     0,   949,
+     0,     0,     0,     0,   327,   328,   329,     0,     0,  1580,
    330,   300,     8,     9,    10,     0,    12,   536,   302,   303,
      0,   304,    14,     0,     0,     0,     0,   331,     0,     0,
      0,     0,     0,     0,     0,     0,    16,   305,    17,     0,
@@ -2358,7 +2374,7 @@ static const short yytable[] = {    59,
    321,     0,     0,     0,     0,     0,   322,     0,     0,   323,
      0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-  1580,   330,   300,     8,     9,    10,     0,    12,   536,   302,
+     0,   330,   300,     8,     9,    10,     0,    12,   536,   302,
    303,     0,   304,    14,     0,     0,     0,     0,   331,     0,
      0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
      0,    19,     0,   306,   307,   308,    20,     0,   309,   310,
@@ -2367,140 +2383,140 @@ static const short yytable[] = {    59,
      0,   321,     0,     0,     0,     0,     0,   322,     0,     0,
    323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
    326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,   330,   300,     8,     9,    10,     0,    12,   536,
-   302,   303,     0,   304,    14,     0,     0,     0,     0,   331,
-     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
-    17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
-   310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
-   314,   315,   316,   317,   318,    26,     0,    27,   320,     0,
-     0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
+     0,     0,   330,     0,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   331,
+   893,  1319,  1320,  1321,    10,   167,    12,   301,   302,   303,
+     0,   304,    14,  1322,     0,  1323,  1324,  1325,  1326,  1327,
+  1328,  1329,  1330,  1331,  1332,    15,    16,   305,    17,    18,
+    19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
+    21,   312,   313,  1333,    23,  1334,     0,     0,   314,   315,
+   316,   317,   318,    26,     0,  1335,   320,   722,     0,  1336,
+   321,     0,     0,     0,     0,     0,   322,     0,     0,   323,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
+     0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
+     0,   330,     0,  1337,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,  1467,   331,  1319,
+  1320,  1321,    10,   167,    12,   301,   302,   303,     0,   304,
+    14,  1322,     0,  1323,  1324,  1325,  1326,  1327,  1328,  1329,
+  1330,  1331,  1332,    15,    16,   305,    17,    18,    19,     0,
+   306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
+   313,  1333,    23,  1334,     0,     0,   314,   315,   316,   317,
+   318,    26,     0,  1335,   320,   722,     0,  1336,   321,     0,
+     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,     0,   330,
+     0,  1337,     0,  1319,  1320,  1321,    10,   167,    12,   301,
+   302,   303,     0,   304,    14,  1322,   331,  1323,  1324,  1325,
+  1326,  1327,  1328,  1329,  1330,  1331,  1332,    15,    16,   305,
+    17,    18,    19,     0,   306,   307,   308,    20,     0,   309,
+   310,   311,    21,   312,   313,  1333,    23,  1334,     0,     0,
+   314,   315,   316,   317,   318,    26,     0,  1335,   320,  1589,
+     0,  1336,   321,     0,     0,     0,     0,     0,   322,     0,
      0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
    325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,     0,   330,     0,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   331,   893,  1319,  1320,  1321,    10,   167,    12,   301,   302,
-   303,     0,   304,    14,  1322,     0,  1323,  1324,  1325,  1326,
-  1327,  1328,  1329,  1330,  1331,  1332,    15,    16,   305,    17,
-    18,    19,     0,   306,   307,   308,    20,     0,   309,   310,
-   311,    21,   312,   313,  1333,    23,  1334,     0,     0,   314,
-   315,   316,   317,   318,    26,     0,  1335,   320,   722,     0,
-  1336,   321,     0,     0,     0,     0,     0,   322,     0,     0,
-   323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
-   326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,   330,     0,  1337,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,  1467,   331,
-  1319,  1320,  1321,    10,   167,    12,   301,   302,   303,     0,
-   304,    14,  1322,     0,  1323,  1324,  1325,  1326,  1327,  1328,
-  1329,  1330,  1331,  1332,    15,    16,   305,    17,    18,    19,
+     0,     0,     0,   330,     0,  1337,     0,  1319,  1320,  1321,
+    10,   167,    12,   301,   302,   303,     0,   304,    14,  1322,
+   331,  1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,  1331,
+  1332,    15,    16,   305,    17,    18,    19,     0,   306,   307,
+   308,    20,     0,   309,   310,   311,    21,   312,   313,  1333,
+    23,  1334,     0,     0,   314,   315,   316,   317,   318,    26,
+     0,  1335,   320,     0,     0,  1336,   321,     0,     0,     0,
+     0,     0,   322,     0,     0,   323,     0,     0,     0,     0,
+     0,     0,     0,   324,   325,   326,     0,     0,     0,     0,
+     0,   327,   328,   329,     0,     0,     0,   330,     0,  1337,
+   300,     8,     9,    10,   167,    12,   301,   302,   303,   735,
+   304,    14,     0,     0,   331,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   305,    17,    18,    19,
      0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
-   312,   313,  1333,    23,  1334,     0,     0,   314,   315,   316,
-   317,   318,    26,     0,  1335,   320,   722,     0,  1336,   321,
-     0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
-     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+   312,   313,     0,    23,     0,   621,     0,   314,   315,   316,
+   317,   318,    26,     0,    27,   320,     0,     0,     0,   321,
+     0,     0,     0,     0,     0,   322,     0,     0,   924,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,   925,     0,
      0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
-   330,     0,  1337,     0,  1319,  1320,  1321,    10,   167,    12,
-   301,   302,   303,     0,   304,    14,  1322,   331,  1323,  1324,
-  1325,  1326,  1327,  1328,  1329,  1330,  1331,  1332,    15,    16,
+   926,   625,     7,     8,     9,    10,   167,    12,   301,   302,
+   303,   735,   304,    14,     0,     0,     0,   331,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
+    18,    19,     0,   306,   307,   308,    20,     0,   309,   310,
+   311,    21,   312,   313,     0,    23,     0,   621,     0,   314,
+   315,   316,   317,   318,    26,     0,    27,    28,     0,     0,
+     0,   321,     0,     0,     0,     0,     0,   322,     0,     0,
+  1210,     0,     0,     0,     0,     0,     0,     0,   324,   325,
+  1211,     0,     0,     0,     0,     0,   327,   328,   329,     0,
+     0,     0,  1212,   625,   300,     8,     9,    10,     0,    12,
+   301,   302,   303,     0,   304,    14,     0,     0,     0,   331,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,    16,
    305,    17,    18,    19,     0,   306,   307,   308,    20,     0,
-   309,   310,   311,    21,   312,   313,  1333,    23,  1334,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,  1335,   320,
-  1589,     0,  1336,   321,     0,     0,     0,     0,     0,   322,
-     0,     0,   323,     0,     0,     0,     0,     0,     0,     0,
-   324,   325,   326,     0,     0,     0,     0,     0,   327,   328,
-   329,     0,     0,     0,   330,     0,  1337,     0,  1319,  1320,
-  1321,    10,   167,    12,   301,   302,   303,     0,   304,    14,
-  1322,   331,  1323,  1324,  1325,  1326,  1327,  1328,  1329,  1330,
-  1331,  1332,    15,    16,   305,    17,    18,    19,     0,   306,
+   309,   310,   311,    21,   312,   313,     0,    23,     0,   621,
+     0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
+     0,     0,     0,     0,     0,     0,     0,     0,     0,   322,
+     0,     0,   924,     0,     0,     0,     0,     0,     0,     0,
+   324,   325,   925,     0,     0,     0,     0,     0,   327,   328,
+   329,     0,     0,     0,   926,   625,     7,     8,     9,    10,
+     0,    12,   301,   302,   303,     0,   304,    14,     0,     0,
+     0,   331,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,    16,   305,    17,    18,    19,     0,   306,   307,   308,
+    20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
+     0,   621,     0,   314,   315,   316,   317,   318,    26,     0,
+    27,    28,     0,     0,     0,     0,     0,     0,     0,     0,
+     0,   322,     0,     0,  1210,     0,     0,     0,     0,     0,
+     0,     0,   324,   325,  1211,     0,     0,     0,     0,     0,
+   327,   328,   329,     0,     0,     0,  1212,   625,   300,     8,
+     9,    10,     0,    12,   536,   302,   303,     0,   304,    14,
+     0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,    16,   305,    17,    18,    19,     0,   306,
    307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
-  1333,    23,  1334,     0,     0,   314,   315,   316,   317,   318,
-    26,     0,  1335,   320,     0,     0,  1336,   321,     0,     0,
-     0,     0,     0,   322,     0,     0,   323,     0,     0,     0,
-     0,     0,     0,     0,   324,   325,   326,     0,     0,     0,
-     0,     0,   327,   328,   329,     0,     0,     0,   330,     0,
-  1337,   300,     8,     9,    10,   167,    12,   301,   302,   303,
-   735,   304,    14,     0,     0,   331,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    16,   305,    17,    18,
-    19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
-    21,   312,   313,     0,    23,     0,   621,     0,   314,   315,
-   316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
-   321,     0,     0,     0,     0,     0,   322,     0,     0,   924,
-     0,     0,     0,     0,     0,     0,     0,   324,   325,   925,
-     0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-     0,   926,   625,     7,     8,     9,    10,   167,    12,   301,
-   302,   303,   735,   304,    14,     0,     0,     0,   331,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
-    17,    18,    19,     0,   306,   307,   308,    20,     0,   309,
-   310,   311,    21,   312,   313,     0,    23,     0,   621,     0,
-   314,   315,   316,   317,   318,    26,     0,    27,    28,     0,
-     0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
-     0,  1210,     0,     0,     0,     0,     0,     0,     0,   324,
-   325,  1211,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,     0,  1212,   625,   300,     8,     9,    10,     0,
-    12,   301,   302,   303,     0,   304,    14,     0,     0,     0,
-   331,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-    16,   305,    17,    18,    19,     0,   306,   307,   308,    20,
-     0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
-   621,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-   320,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-   322,     0,     0,   924,     0,     0,     0,     0,     0,     0,
-     0,   324,   325,   925,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,     0,   926,   625,     7,     8,     9,
-    10,     0,    12,   301,   302,   303,     0,   304,    14,     0,
-     0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,    16,   305,    17,    18,    19,     0,   306,   307,
-   308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
-    23,     0,   621,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,    28,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   322,     0,     0,  1210,     0,     0,     0,     0,
-     0,     0,     0,   324,   325,  1211,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,     0,  1212,   625,   300,
+     0,    23,     0,     0,     0,   314,   315,   316,   317,   318,
+    26,     0,    27,   320,     0,     0,     0,   321,     0,     0,
+     0,     0,     0,   322,     0,     0,   556,     0,     0,     0,
+     0,     0,     0,     0,   324,   325,   557,     0,     0,     0,
+     0,     0,   327,   328,   329,     0,     0,     0,   558,   300,
      8,     9,    10,     0,    12,   536,   302,   303,     0,   304,
-    14,     0,     0,     0,   331,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   305,    17,    18,    19,     0,
+    14,     0,     0,     0,     0,   331,     0,     0,     0,     0,
+     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
    313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
-   318,    26,     0,    27,   320,     0,     0,     0,   321,     0,
-     0,     0,     0,     0,   322,     0,     0,   556,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,   557,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,   558,
-   300,     8,     9,    10,     0,    12,   536,   302,   303,     0,
+   318,    26,     0,    27,   320,     0,     0,  1440,   321,     0,
+     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,     0,   330,
+   300,     8,     9,    10,   167,    12,   301,   302,   303,     0,
    304,    14,     0,     0,     0,     0,   331,     0,     0,     0,
-     0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
+     0,     0,     0,     0,     0,    16,   305,    17,    18,    19,
      0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
    312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
-   317,   318,    26,     0,    27,   320,     0,     0,  1440,   321,
+   317,   318,    26,     0,    27,   320,     0,     0,     0,     0,
      0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
      0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
      0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
-   330,   300,     8,     9,    10,   167,    12,   301,   302,   303,
+   330,     7,     8,     9,    10,     0,    12,   536,   302,   303,
      0,   304,    14,     0,     0,     0,     0,   331,     0,     0,
      0,     0,     0,     0,     0,     0,    16,   305,    17,    18,
     19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
     21,   312,   313,     0,    23,     0,     0,     0,   314,   315,
-   316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   322,     0,     0,   323,
-     0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
+   316,   317,   318,    26,     0,    27,    28,     0,     0,     0,
+   321,     0,     0,     0,     0,     0,   322,     0,     0,  1531,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,  1532,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-     0,   330,     7,     8,     9,    10,     0,    12,   536,   302,
+     0,  1533,   300,     8,     9,    10,     0,    12,   301,   302,
    303,     0,   304,    14,     0,     0,     0,     0,   331,     0,
      0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
-    18,    19,     0,   306,   307,   308,    20,     0,   309,   310,
+     0,    19,     0,   306,   307,   308,    20,     0,   309,   310,
    311,    21,   312,   313,     0,    23,     0,     0,     0,   314,
-   315,   316,   317,   318,    26,     0,    27,    28,     0,     0,
+   315,   316,   317,   318,    26,     0,   319,   320,     0,     0,
      0,   321,     0,     0,     0,     0,     0,   322,     0,     0,
-  1531,     0,     0,     0,     0,     0,     0,     0,   324,   325,
-  1532,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,  1533,   300,     8,     9,    10,     0,    12,   301,
+   323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
+   326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
+     0,     0,   330,   300,     8,     9,    10,     0,    12,   301,
    302,   303,     0,   304,    14,     0,     0,     0,     0,   331,
      0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
     17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
    310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
-   314,   315,   316,   317,   318,    26,     0,   319,   320,     0,
+   314,   315,   316,   317,   318,    26,     0,    27,   320,     0,
      0,     0,   321,     0,     0,     0,     0,     0,   322,     0,
      0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
    325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
      0,     0,     0,   330,   300,     8,     9,    10,     0,    12,
-   301,   302,   303,     0,   304,    14,     0,     0,     0,     0,
+   536,   302,   303,     0,   304,    14,     0,     0,     0,     0,
    331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
    305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
    309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
@@ -2514,56 +2530,56 @@ static const short yytable[] = {    59,
     16,   305,    17,     0,    19,     0,   306,   307,   308,    20,
      0,   309,   310,   311,    21,   312,   313,     0,    23,     0,
      0,     0,   314,   315,   316,   317,   318,    26,     0,    27,
-   320,     0,     0,     0,   321,     0,     0,     0,     0,     0,
+   320,   570,     0,     0,     0,     0,     0,     0,     0,     0,
    322,     0,     0,   323,     0,     0,     0,     0,     0,     0,
      0,   324,   325,   326,     0,     0,     0,     0,     0,   327,
-   328,   329,     0,     0,     0,   330,   300,     8,     9,    10,
+   328,   329,     0,     0,     0,   571,   300,     8,     9,    10,
      0,    12,   536,   302,   303,     0,   304,    14,     0,     0,
      0,     0,   331,     0,     0,     0,     0,     0,     0,     0,
      0,    16,   305,    17,     0,    19,     0,   306,   307,   308,
     20,     0,   309,   310,   311,    21,   312,   313,     0,    23,
      0,     0,     0,   314,   315,   316,   317,   318,    26,     0,
-    27,   320,   570,     0,     0,     0,     0,     0,     0,     0,
+    27,   320,     0,     0,     0,     0,     0,     0,     0,     0,
      0,   322,     0,     0,   323,     0,     0,     0,     0,     0,
      0,     0,   324,   325,   326,     0,     0,     0,     0,     0,
-   327,   328,   329,     0,     0,     0,   571,   300,     8,     9,
-    10,     0,    12,   536,   302,   303,     0,   304,    14,     0,
+   327,   328,   329,     0,     0,     0,   330,   609,   300,     8,
+     9,    10,     0,    12,   536,   302,   303,     0,   304,    14,
      0,     0,     0,   331,     0,     0,     0,     0,     0,     0,
-     0,     0,    16,   305,    17,     0,    19,     0,   306,   307,
-   308,    20,     0,   309,   310,   311,    21,   312,   313,     0,
-    23,     0,     0,     0,   314,   315,   316,   317,   318,    26,
-     0,    27,   320,     0,     0,     0,     0,     0,     0,     0,
-     0,     0,   322,     0,     0,   323,     0,     0,     0,     0,
-     0,     0,     0,   324,   325,   326,     0,     0,     0,     0,
-     0,   327,   328,   329,     0,     0,     0,   330,   609,   300,
+     0,     0,     0,    16,   305,    17,    18,    19,     0,   306,
+   307,   308,    20,     0,   309,   310,   311,    21,   312,   313,
+     0,    23,     0,     0,     0,   314,   315,   316,   317,   318,
+    26,     0,    27,   320,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,   322,     0,     0,   556,     0,     0,     0,
+     0,     0,     0,     0,   324,   325,   557,     0,     0,     0,
+     0,     0,   327,   328,   329,     0,     0,     0,   558,  1168,
      8,     9,    10,     0,    12,   536,   302,   303,     0,   304,
-    14,     0,     0,     0,   331,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,    16,   305,    17,    18,    19,     0,
+    14,     0,     0,     0,     0,   331,     0,     0,     0,     0,
+     0,     0,     0,     0,    16,   305,    17,     0,    19,     0,
    306,   307,   308,    20,     0,   309,   310,   311,    21,   312,
    313,     0,    23,     0,     0,     0,   314,   315,   316,   317,
-   318,    26,     0,    27,   320,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,   322,     0,     0,   556,     0,     0,
-     0,     0,     0,     0,     0,   324,   325,   557,     0,     0,
-     0,     0,     0,   327,   328,   329,     0,     0,     0,   558,
-  1168,     8,     9,    10,     0,    12,   536,   302,   303,     0,
+   318,    26,     0,    27,   320,     0,     0,     0,   321,     0,
+     0,     0,     0,     0,   322,     0,     0,   323,     0,     0,
+     0,     0,     0,     0,     0,   324,   325,   326,     0,     0,
+     0,     0,     0,   327,   328,   329,     0,     0,     0,   330,
+     7,     8,     9,    10,     0,    12,   301,   302,   303,     0,
    304,    14,     0,     0,     0,     0,   331,     0,     0,     0,
-     0,     0,     0,     0,     0,    16,   305,    17,     0,    19,
+     0,     0,     0,     0,     0,    16,   305,    17,    18,    19,
      0,   306,   307,   308,    20,     0,   309,   310,   311,    21,
    312,   313,     0,    23,     0,     0,     0,   314,   315,   316,
-   317,   318,    26,     0,    27,   320,     0,     0,     0,   321,
-     0,     0,     0,     0,     0,   322,     0,     0,   323,     0,
-     0,     0,     0,     0,     0,     0,   324,   325,   326,     0,
+   317,   318,    26,     0,    27,    28,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,   322,     0,     0,  1531,     0,
+     0,     0,     0,     0,     0,     0,   324,   325,  1532,     0,
      0,     0,     0,     0,   327,   328,   329,     0,     0,     0,
-   330,     7,     8,     9,    10,     0,    12,   301,   302,   303,
+  1533,   300,     8,     9,    10,     0,    12,   536,   302,   303,
      0,   304,    14,     0,     0,     0,     0,   331,     0,     0,
-     0,     0,     0,     0,     0,     0,    16,   305,    17,    18,
+     0,     0,     0,     0,     0,     0,    16,   305,    17,     0,
     19,     0,   306,   307,   308,    20,     0,   309,   310,   311,
     21,   312,   313,     0,    23,     0,     0,     0,   314,   315,
-   316,   317,   318,    26,     0,    27,    28,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,   322,     0,     0,  1531,
-     0,     0,     0,     0,     0,     0,     0,   324,   325,  1532,
+   316,   317,   318,    26,     0,    27,   320,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,   322,     0,     0,   323,
+     0,     0,     0,     0,     0,     0,     0,   324,   325,   326,
      0,     0,     0,     0,     0,   327,   328,   329,     0,     0,
-     0,  1533,   300,     8,     9,    10,     0,    12,   536,   302,
+     0,   537,   300,     8,     9,    10,     0,    12,   536,   302,
    303,     0,   304,    14,     0,     0,     0,     0,   331,     0,
      0,     0,     0,     0,     0,     0,     0,    16,   305,    17,
      0,    19,     0,   306,   307,   308,    20,     0,   309,   310,
@@ -2572,95 +2588,86 @@ static const short yytable[] = {    59,
      0,     0,     0,     0,     0,     0,     0,   322,     0,     0,
    323,     0,     0,     0,     0,     0,     0,     0,   324,   325,
    326,     0,     0,     0,     0,     0,   327,   328,   329,     0,
-     0,     0,   537,   300,     8,     9,    10,     0,    12,   536,
+     0,     0,   540,   300,     8,     9,    10,     0,    12,   536,
    302,   303,     0,   304,    14,     0,     0,     0,     0,   331,
      0,     0,     0,     0,     0,     0,     0,     0,    16,   305,
     17,     0,    19,     0,   306,   307,   308,    20,     0,   309,
    310,   311,    21,   312,   313,     0,    23,     0,     0,     0,
    314,   315,   316,   317,   318,    26,     0,    27,   320,     0,
      0,     0,     0,     0,     0,     0,     0,     0,   322,     0,
-     0,   323,     0,     0,     0,     0,     0,     0,     0,   324,
-   325,   326,     0,     0,     0,     0,     0,   327,   328,   329,
-     0,     0,     0,   540,   300,     8,     9,    10,     0,    12,
-   536,   302,   303,     0,   304,    14,     0,     0,     0,     0,
-   331,     0,     0,     0,     0,     0,     0,     0,     0,    16,
-   305,    17,     0,    19,     0,   306,   307,   308,    20,     0,
-   309,   310,   311,    21,   312,   313,     0,    23,     0,     0,
-     0,   314,   315,   316,   317,   318,    26,     0,    27,   320,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   322,
-     0,     0,   323,  -388,     8,     9,  -388,  -388,    12,   246,
-   324,   325,   326,     0,    14,     0,     0,     0,   327,   328,
-   329,     0,     0,     0,   330,     0,     0,     0,    16,     0,
-    17,  -388,     0,     0,     0,     0,     0,    20,     0,     0,
-     0,   331,  -388,     0,     0,     0,    23,     0,   621,     0,
-     0,     0,     0,     0,     0,    26,     0,   130,   131,     0,
-     0,     0,     0,     7,     8,     9,    10,   167,    12,    13,
-     0,   622,  1019,     0,    14,     0,     0,     0,     0,     0,
-     0,   623,     0,     0,     0,     0,     0,     0,    16,  -388,
-    17,    18,     0,   624,   625,     0,     0,    20,     0,     0,
-     0,     0,    21,     0,     0,     0,    23,     0,     7,     8,
-     9,    10,   205,    12,   206,    26,     0,    27,    28,    14,
+     0,   323,  -388,     8,     9,  -388,  -388,    12,   246,   324,
+   325,   326,     0,    14,     0,     0,     0,   327,   328,   329,
+     0,     0,     0,   330,     0,     0,     0,    16,     0,    17,
+  -388,     0,     0,     0,     0,     0,    20,     0,     0,     0,
+   331,  -388,     0,     0,     0,    23,     0,   621,     0,     0,
+     0,     0,     0,     0,    26,     0,   130,   131,     0,     0,
+     0,     0,     7,     8,     9,    10,   167,    12,    13,     0,
+   622,  1019,     0,    14,     0,     0,     0,     0,     0,     0,
+   623,     0,     0,     0,     0,     0,     0,    16,  -388,    17,
+    18,     0,   624,   625,     0,     0,    20,     0,     0,     0,
+     0,    21,     0,     0,     0,    23,     0,     7,     8,     9,
+    10,   205,    12,   206,    26,     0,    27,    28,    14,     0,
      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     0,    30,     0,    16,     0,    17,    18,     0,     0,     0,
-     0,    31,    20,     0,     0,     0,     0,    21,     0,    32,
-     0,    23,     0,    33,     0,     0,     0,     0,     0,     0,
-    26,     0,    27,    28,     0,     0,  1457,     0,     7,     8,
-     9,    10,   167,    12,    13,     0,    30,     0,     0,    14,
-     0,     0,     0,     0,     0,     0,    31,     0,     0,     0,
-     0,     0,     0,    16,    32,    17,    18,     0,    33,     0,
-     0,     0,    20,     0,     0,     0,     0,    21,     0,     0,
-     0,    23,     0,     7,     8,     9,    10,   205,    12,   206,
-    26,     0,    27,    28,    14,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    30,     0,    16,     0,
-    17,    18,     0,     0,     0,     0,    31,    20,     0,     0,
-     0,     0,    21,     0,    32,     0,    23,     0,    33,     0,
-     0,     0,     0,     0,     0,    26,     0,    27,    28,     8,
-     9,     0,   167,    12,    13,     0,     0,   735,     0,    14,
-     0,    30,     0,     0,     0,     0,     7,     8,     9,    10,
-     0,    31,   519,    16,     0,    17,    18,     0,     0,    32,
-     0,     0,    20,    33,     0,     0,     0,     0,     0,     0,
-     0,    23,     0,   621,    18,     0,     0,     0,     0,     0,
-    26,     0,   130,   131,     0,    21,     0,   300,     8,     9,
-    10,     0,     0,    13,     0,     0,  1499,     0,    26,     0,
-    27,    28,     0,     0,     0,     0,  1500,     7,   127,   128,
-    10,     0,     0,     0,   193,    18,     0,     0,  1501,   625,
-     0,     0,     0,     0,   194,     0,    21,     0,     7,     8,
-     9,    10,    32,     0,     0,    18,   195,     0,     0,    26,
-     0,    27,   320,     0,     0,     0,    21,     0,     7,     8,
-     9,    10,     0,     0,     0,   752,    18,     0,     0,    26,
-     0,    27,    28,     0,     0,   753,     0,    21,     0,     0,
-     0,     0,     0,    32,     0,    30,    18,   754,     0,     0,
-    26,     0,    27,    28,     0,    31,     0,    21,     0,   300,
-     8,     9,    10,    32,     0,     0,   476,    33,     0,     0,
-    26,     0,    27,    28,     0,     0,   477,     0,     0,     0,
-     0,     0,     0,     0,    32,     0,   193,    18,   478,     0,
-     0,     0,     0,     0,     0,     0,   194,     0,    21,     0,
-     0,     0,     8,     9,    32,   167,    12,    13,   195,     0,
-  1583,    26,    14,    27,   320,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,    16,   752,    17,    18,
-     0,     0,     0,     0,     0,    20,     0,   753,     0,     0,
-     0,     0,     0,     0,    23,    32,     0,     0,     0,   754,
-     0,     0,     0,    26,     0,   130,   131,   573,   574,   575,
-   576,   577,   578,   579,   580,   581,   582,   583,   584,   585,
-   586,   587,   588,   589,   590,   591,   592,   593,   594,   573,
-   574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
-   584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-   594,     0,     0,     0,  1268,     0,     0,     0,     0,     0,
-     0,     0,     0,     0,     0,     0,     0,     0,     0,   663,
-     0,     0,  1603,   573,   574,   575,   576,   577,   578,   579,
-   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
-   590,   591,   592,   593,   594,  1099,     0,     0,     0,   573,
-   574,   575,   576,   577,   578,   579,   580,   581,   582,   583,
-   584,   585,   586,   587,   588,   589,   590,   591,   592,   593,
-   594,  1597,   573,   574,   575,   576,   577,   578,   579,   580,
+    30,     0,    16,     0,    17,    18,     0,     0,     0,     0,
+    31,    20,     0,     0,     0,     0,    21,     0,    32,     0,
+    23,     0,    33,     0,     0,     0,     0,     0,     0,    26,
+     0,    27,    28,     0,     0,  1457,     0,     7,     8,     9,
+    10,   167,    12,    13,     0,    30,     0,     0,    14,     0,
+     0,     0,     0,     0,     0,    31,     0,     0,     0,     0,
+     0,     0,    16,    32,    17,    18,     0,    33,     0,     0,
+     0,    20,     0,     0,     0,     0,    21,     0,     0,     0,
+    23,     0,     7,     8,     9,    10,   205,    12,   206,    26,
+     0,    27,    28,    14,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    30,     0,    16,     0,    17,
+    18,     0,     0,     0,     0,    31,    20,     0,     0,     0,
+     0,    21,     0,    32,     0,    23,     0,    33,     0,     0,
+     0,     0,     0,     0,    26,     0,    27,    28,     8,     9,
+     0,   167,    12,    13,     0,     0,   735,     0,    14,     0,
+    30,     0,     0,     0,     0,     7,     8,     9,    10,     0,
+    31,   519,    16,     0,    17,    18,     0,     0,    32,     0,
+     0,    20,    33,     0,     0,     0,     0,     0,     0,     0,
+    23,     0,   621,    18,     0,     0,     0,     0,     0,    26,
+     0,   130,   131,     0,    21,     0,   300,     8,     9,    10,
+     0,     0,    13,     0,     0,  1499,     0,    26,     0,    27,
+    28,     0,     0,     0,     0,  1500,     7,   127,   128,    10,
+     0,     0,     0,   193,    18,     0,     0,  1501,   625,     0,
+     0,     0,     0,   194,     0,    21,     0,     7,     8,     9,
+    10,    32,     0,     0,    18,   195,     0,     0,    26,     0,
+    27,   320,     0,     0,     0,    21,     0,     7,     8,     9,
+    10,     0,     0,     0,   752,    18,     0,     0,    26,     0,
+    27,    28,     0,     0,   753,     0,    21,     0,     0,     0,
+     0,     0,    32,     0,    30,    18,   754,     0,     0,    26,
+     0,    27,    28,     0,    31,     0,    21,     0,   300,     8,
+     9,    10,    32,     0,     0,   476,    33,     0,     0,    26,
+     0,    27,    28,     0,     0,   477,     0,     0,     0,     0,
+     0,     0,     0,    32,     0,   193,    18,   478,     0,     0,
+     0,     0,     0,     0,     0,   194,     0,    21,     0,     0,
+     0,     8,     9,    32,   167,    12,    13,   195,     0,  1583,
+    26,    14,    27,   320,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,    16,   752,    17,    18,     0,
+     0,     0,     0,     0,    20,     0,   753,     0,     0,     0,
+     0,     0,     0,    23,    32,     0,     0,     0,   754,     0,
+     0,     0,    26,     0,   130,   131,   573,   574,   575,   576,
+   577,   578,   579,   580,   581,   582,   583,   584,   585,   586,
+   587,   588,   589,   590,   591,   592,   593,   594,   573,   574,
+   575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+   585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
+     0,     0,     0,  1268,     0,     0,     0,     0,     0,     0,
+     0,     0,     0,     0,     0,     0,     0,     0,   663,     0,
+     0,  1603,   573,   574,   575,   576,   577,   578,   579,   580,
    581,   582,   583,   584,   585,   586,   587,   588,   589,   590,
-   591,   592,   593,   594,   573,   574,   575,   576,   577,   578,
-   579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
-   589,   590,   591,   592,   593,   594,   573,   574,   575,   576,
-   577,   578,   579,   580,   581,   582,   583,   584,     0,   586,
-   587,   588,   589,   590,   591,   592,   593,   594,   577,   578,
-   579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
-   589,   590,   591,   592,   593,   594
+   591,   592,   593,   594,  1099,     0,     0,     0,   573,   574,
+   575,   576,   577,   578,   579,   580,   581,   582,   583,   584,
+   585,   586,   587,   588,   589,   590,   591,   592,   593,   594,
+  1597,   573,   574,   575,   576,   577,   578,   579,   580,   581,
+   582,   583,   584,   585,   586,   587,   588,   589,   590,   591,
+   592,   593,   594,   573,   574,   575,   576,   577,   578,   579,
+   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
+   590,   591,   592,   593,   594,   573,   574,   575,   576,   577,
+   578,   579,   580,   581,   582,   583,   584,     0,   586,   587,
+   588,   589,   590,   591,   592,   593,   594,   577,   578,   579,
+   580,   581,   582,   583,   584,   585,   586,   587,   588,   589,
+   590,   591,   592,   593,   594
 };
 
 static const short yycheck[] = {     4,
@@ -2674,11 +2681,11 @@ static const short yycheck[] = {     4,
   1338,  1348,   133,  1422,    42,   218,  1513,  1512,  1355,    84,
    149,   150,    11,    88,    42,    90,    80,    92,   296,    54,
     38,   805,    35,    42,     1,   468,    83,   811,   440,    42,
-   408,   409,   107,   108,   136,    11,    11,    59,    48,     4,
-     4,    65,   703,   562,     1,  1514,    33,  1562,    55,   106,
+   408,   409,   107,   108,   136,    11,    11,     7,    48,     4,
+     4,    65,   703,   562,     1,  1514,    33,  1562,     0,   106,
      9,   356,     1,   175,  1559,    27,    12,    61,   203,    31,
-     0,   136,   137,  1536,   139,    30,    31,    59,    75,    63,
-    35,    35,   350,    65,   176,     4,    98,    42,    42,   169,
+    39,   136,   137,  1536,   139,    30,    31,    59,    38,    63,
+    35,    35,   350,    65,   176,     4,    55,    42,    42,   169,
     49,    75,    59,    93,   625,  1558,    63,    63,   136,    61,
    165,   109,    60,    65,   169,    90,  1611,    92,   108,   169,
    124,   176,    59,    62,    60,   109,    35,    63,   169,   108,
@@ -2690,116 +2697,116 @@ static const short yycheck[] = {     4,
    719,   109,    63,    14,    65,   200,    55,    75,    57,    58,
   1517,   136,   136,    48,    93,  1513,    61,   247,    60,   347,
   1599,    63,    71,    59,   149,   150,    37,    63,    93,    94,
-    65,   248,    81,  1236,  1237,    46,    60,    48,   262,    93,
+    65,   248,    81,  1236,  1237,    46,    60,    48,   262,    59,
    165,   165,   721,   108,   169,   169,   938,   136,     4,   941,
   1253,   140,    60,    60,   238,   239,   347,   448,    93,    95,
-   493,  1568,   297,    93,   109,    61,   296,   251,   193,   194,
-   489,   490,    39,   964,   685,   343,   165,   510,   497,    35,
-   169,   644,    93,   393,   108,    75,   175,   176,    55,    48,
-   509,   983,   984,    61,   881,   330,   385,     7,   360,  1043,
-   108,   108,    60,     3,     4,     5,   306,   307,   343,   528,
-   648,  1055,  1619,   109,    48,     4,   351,   490,    76,   742,
-   350,    48,   404,   323,   359,   360,   326,   742,    38,   329,
+    93,  1568,   297,    93,   109,    61,   296,   251,   193,   194,
+   489,   490,    60,   964,   685,   343,   165,    97,   497,    35,
+   169,   644,    93,   393,   108,   493,   175,   176,    76,    48,
+   509,   983,   984,    61,   881,   330,   385,     4,   360,  1043,
+   108,   108,   510,     3,     4,     5,   306,   307,   343,   528,
+   648,  1055,  1619,   109,    48,     4,   351,   490,    75,   742,
+   350,    48,   404,   323,   359,   360,   326,   742,    35,   329,
     25,   479,   332,   222,    93,   675,   336,    48,   322,   356,
     75,   109,   714,   715,   344,  1089,    35,  1091,    48,   614,
-    93,    25,   360,    42,    48,    55,    61,    57,    58,    93,
+    60,    61,   360,    42,    48,    55,    93,    57,    58,    93,
     94,   483,     4,     5,    59,    48,    93,   402,    63,   491,
    405,    65,    48,   738,   108,  1378,   406,   476,   477,   363,
     61,   402,    93,    94,  1387,  1388,    48,  1390,   372,    31,
      4,   107,   442,    93,    59,    84,  1277,   108,    63,    93,
-    95,   385,   805,   968,   359,    12,    48,   442,   811,    55,
+    95,   385,   805,   968,   359,    12,    48,   442,   811,    25,
     93,    94,   442,    55,  1035,    57,    58,    93,   343,    48,
-    27,    35,   923,    63,    31,   108,     4,    48,    55,    71,
+    27,    35,   923,    61,    31,   108,    63,    48,    55,    71,
     55,    93,   108,   468,   442,   360,   360,    48,    63,    81,
-    48,    48,    55,    48,   442,    31,   508,   136,    75,    59,
-    75,    93,    94,    60,    61,   499,    63,    35,    65,   489,
-   490,    48,    75,    75,    93,    94,   501,   497,  1160,  1161,
-    55,   360,    93,   508,     4,     5,   165,   402,  1252,   509,
-   169,    55,    93,   821,   508,    93,    93,    94,    93,    94,
-     3,     4,     5,     6,     3,     4,     5,    59,   528,   534,
-   508,   108,   537,   108,    93,   540,    93,     3,     4,     5,
+    48,    48,    55,    48,   442,    63,   508,   136,    75,    55,
+    75,    93,    94,    60,    61,   499,    63,    75,    65,   489,
+   490,    48,    75,    31,    93,    94,   501,   497,  1160,  1161,
+    59,   360,    93,   508,     4,     5,   165,   402,  1252,   509,
+   169,    75,    93,   821,   508,    93,    93,    94,    93,    94,
+     3,     4,     5,     6,     3,     4,     5,    55,   528,   534,
+   508,   108,   537,   108,    59,   540,    93,     3,     4,     5,
    545,   546,   547,   548,   549,   404,   713,   442,   442,   922,
-    55,   505,  1041,   558,  1003,    55,  1407,    57,    58,    42,
-    33,    55,    48,   568,    76,   508,   571,    48,   606,  1542,
-  1543,   108,   965,   468,    57,    58,   501,   766,    57,    58,
+    93,   505,  1041,   558,  1003,    55,  1407,    57,    58,    42,
+    33,    55,    48,   568,    55,   508,   571,    48,   606,  1542,
+  1543,    55,   965,   468,    57,    58,   501,   766,    57,    58,
    965,   476,   477,   442,   965,   683,   556,   557,    48,   774,
-   775,    57,    58,   108,    60,   780,   676,    94,   650,   932,
-   932,   606,    81,   683,   108,    65,    89,    93,    94,   534,
+   775,    57,    58,   108,    60,   780,   676,   108,   650,   932,
+   932,   606,    81,   683,    76,    65,    89,    93,    94,   534,
     48,   470,    93,   508,   508,    63,   570,   884,    76,   624,
-    78,    55,    48,   831,   483,    11,   631,    75,   769,    63,
-    48,   108,   491,    93,    94,     3,    60,   109,     6,   691,
-    48,   693,   694,   928,    98,    33,    61,    48,   635,   508,
-   958,   651,    76,    93,    78,    93,     4,     5,  1129,    48,
-   614,     9,     3,    31,    25,   684,    27,    93,   783,    48,
-  1043,    61,    48,   678,    42,    93,   149,   150,   151,    55,
-   111,    25,  1055,    27,   343,    93,   738,   692,    55,    57,
-    58,   696,    93,    94,   694,    75,    63,   932,    59,    75,
-   719,   360,    63,    71,    93,  1194,    63,    55,    75,    57,
+    78,    55,    48,   831,   483,    94,   631,    75,   769,    63,
+    48,   108,   491,    93,    94,     3,    60,   108,     6,   691,
+    48,   693,   694,   928,   109,    33,    11,    48,   635,   508,
+   958,   651,    76,    97,    78,    93,     4,     5,  1129,    48,
+   614,     9,    61,    31,    25,   684,    27,    93,   783,    48,
+  1043,    93,    48,   678,    42,    93,   149,   150,   151,    55,
+     3,    25,  1055,    27,   343,    93,   738,   692,    55,    57,
+    58,   696,    93,    94,   694,    61,    63,   932,    59,    75,
+   719,   360,    63,    71,    93,  1194,   111,    55,    75,    57,
     58,   606,    55,    81,    93,    59,  1089,    93,  1091,    63,
-    63,    89,   195,    71,    94,    93,    48,   622,   623,   624,
-   684,    94,    75,    81,    95,    48,   631,   742,   738,   111,
+    63,    89,   195,    71,    75,    93,    48,   622,   623,   624,
+   684,    94,    75,    81,    95,    48,   631,   742,   738,    94,
   1229,   695,    63,   402,   796,    63,    94,    25,    63,    27,
-    55,    95,    75,   678,   818,   819,   820,   789,    63,   791,
+    55,    95,    63,   678,   818,   819,   820,   789,    63,   791,
     75,   149,   150,   151,   796,   797,   766,   799,   107,   108,
     75,    93,   726,     4,     5,  1083,  1084,  1085,   792,   793,
-    93,    59,    93,   442,   789,    63,   791,   108,   802,  1124,
-   108,   650,   797,    93,   799,   789,    63,   791,     4,     5,
-   805,   806,   807,   797,   809,   799,   811,   195,    75,   468,
-    55,   789,   930,   791,    93,     4,     5,    95,    49,    75,
+    93,    59,   111,   442,   789,    63,   791,   108,   802,  1124,
+   108,   650,   797,    93,   799,   789,    93,   791,     4,     5,
+   805,   806,   807,   797,   809,   799,   811,   195,    93,   468,
+    55,   789,   930,   791,    75,     4,     5,    95,    49,    75,
     55,   799,    60,    61,   991,    55,    57,    58,    63,    75,
     75,   831,   691,   692,   693,   694,     4,     5,     8,     9,
-    75,    75,  1109,  1110,    14,    75,   789,   742,   791,   508,
-    81,    57,    58,  1038,  1039,  1040,   799,   752,   753,    60,
-    49,    60,    61,    11,     3,     4,     5,    37,    57,    58,
-     3,     4,     5,     6,    60,   880,    46,    75,    55,   738,
-   885,   806,   807,   742,   809,   108,    63,    55,   108,    57,
+    75,    55,  1109,  1110,    14,    75,   789,   742,   791,   508,
+    81,    57,    58,  1038,  1039,  1040,   799,   752,   753,    75,
+    49,    75,    60,    61,     3,     4,     5,    37,    57,    58,
+     3,     4,     5,     6,    60,   880,    46,    11,    55,   738,
+   885,   806,   807,   742,   809,   108,    63,    55,    60,    57,
     58,    62,    81,   108,   789,   789,   791,   791,    75,     4,
      5,   976,    27,    71,   799,   799,    31,  1048,  1049,    42,
-   805,   916,   108,    81,    55,  1625,   811,   922,    57,    58,
-    59,   926,    55,   893,    57,    58,    94,   108,  1125,  1126,
-   789,  1128,   791,    75,  1075,    60,    61,   796,   797,  1080,
-   799,  1208,     4,     5,    49,   932,    75,   606,    45,   109,
-  1217,  1218,    57,    58,   924,   925,    89,   109,    55,  1226,
-   965,    58,   967,   968,   111,   624,   971,    60,    61,   140,
+   805,   916,   108,    81,   108,  1625,   811,   922,    57,    58,
+    59,   926,    55,   893,    57,    58,    94,    75,  1125,  1126,
+   789,  1128,   791,    55,  1075,    60,    61,   796,   797,  1080,
+   799,  1208,     4,     5,    49,   932,    75,   606,    45,    75,
+  1217,  1218,    57,    58,   924,   925,    89,   108,    55,  1226,
+   965,    58,   967,   968,   109,   624,   971,    60,    61,   140,
      4,     5,   631,    27,   965,     9,    81,    31,    60,    61,
-  1288,     4,     5,   111,  1433,   156,   108,    49,     3,     4,
-     5,   330,  1067,   111,  1046,    57,    58,   951,    84,    85,
-  1449,  1268,    60,   476,   477,   478,    60,    61,    27,  1014,
-   964,    65,  1347,    55,  1046,     4,     5,    75,    76,    81,
+  1288,     4,     5,   111,  1433,   156,   109,    49,     3,     4,
+     5,   330,  1067,   108,  1046,    57,    58,   951,    84,    85,
+  1449,  1268,    60,   476,   477,   478,    60,    61,   111,  1014,
+   964,    65,  1347,    27,  1046,     4,     5,    75,    76,    81,
     78,    55,  1027,    57,    58,    75,    49,   922,    75,   924,
-   925,   926,    75,  1151,    57,    58,   111,    71,  1043,   108,
-    55,   212,    57,    58,  1076,  1059,    59,    81,   108,   220,
+   925,   926,    75,  1151,    57,    58,    55,    71,  1043,   111,
+    55,   212,    57,    58,  1076,  1059,   111,    81,   108,   220,
   1055,  1065,  1066,   108,    48,  1069,  1070,   108,    81,  1073,
-    49,    55,     3,     4,     5,  1183,   237,    55,    57,    58,
-   965,  1076,   111,  1067,   969,   970,   971,    60,    61,    60,
-    61,    75,  1076,   742,  1089,     8,  1091,  1536,   476,   477,
-   478,    93,    81,    48,  1099,    65,     4,     5,  1076,    93,
-  1367,  1242,  1243,   109,  1245,  1246,    60,  1248,    93,  1558,
-  1185,  1180,  1181,   109,    55,  1120,    57,    58,    59,  1014,
-    60,    61,    55,    31,    60,    61,   465,    61,  1133,    60,
-   789,    37,   791,  1076,    65,    65,  1585,  1404,    60,    61,
-   799,  1210,  1211,   108,    75,    76,   805,    55,  1043,    57,
-    58,  1156,   811,    60,    61,    65,  1110,     4,     5,  1552,
-  1055,  1131,    65,    71,   108,    61,    63,  1552,   111,  1618,
+    49,    55,     3,     4,     5,  1183,   237,    59,    57,    58,
+   965,  1076,   108,  1067,   969,   970,   971,    60,    61,    60,
+    61,    75,  1076,   742,  1089,    55,  1091,  1536,   476,   477,
+   478,     8,    81,   111,  1099,    93,     4,     5,  1076,    93,
+  1367,  1242,  1243,    48,  1245,  1246,    65,  1248,   109,  1558,
+  1185,  1180,  1181,    60,    55,  1120,    57,    58,    59,  1014,
+    60,    61,    93,    31,    60,    61,   465,   109,  1133,    60,
+   789,    55,   791,  1076,    65,    61,  1585,  1404,    60,    61,
+   799,  1210,  1211,    37,    75,    76,   805,    55,  1043,    57,
+    58,  1156,   811,    65,    65,    65,  1110,     4,     5,  1552,
+  1055,  1131,   108,    71,   108,    61,    63,  1552,   111,  1618,
    108,   108,  1345,    81,  1347,  1194,   108,  1182,  1346,   108,
     65,  1076,  1076,  1301,    65,    93,    65,  1046,    76,    60,
-  1639,     3,     4,     5,  1089,     7,  1091,   108,   537,   108,
-  1205,   540,     3,     4,     5,    60,   545,  1212,  1133,   108,
-    57,    58,    76,  1205,   108,   108,    76,  1076,    76,   558,
+  1639,     3,     4,     5,  1089,     7,  1091,    63,   537,   108,
+  1205,   540,     3,     4,     5,   108,   545,  1212,  1133,   108,
+    57,    58,    76,  1205,    76,   108,   108,  1076,    76,   558,
   1252,  1556,     3,     4,     5,    76,    38,  1205,   108,    63,
-   108,    63,   571,   108,  1375,  1376,   575,    63,   108,   108,
-  1210,  1211,    94,    55,    48,    57,    58,  1252,  1202,   111,
-   111,    55,    89,  1247,  1208,    75,    57,    58,  1252,  1154,
+   108,    60,   571,   108,  1375,  1376,   575,    63,   108,   108,
+  1210,  1211,    94,    55,    48,    57,    58,  1252,  1202,    89,
+   111,    55,   111,  1247,  1208,    75,    57,    58,  1252,  1154,
   1155,  1156,  1205,   922,   603,    48,   108,   926,    49,   108,
-   609,    75,    61,   111,  1252,   111,    57,    58,   108,   450,
+   609,    75,   109,   111,  1252,   111,    57,    58,   108,   450,
      3,     4,     5,     6,   108,  1180,  1181,  1182,   109,    93,
-     3,     4,     5,  1345,   108,  1347,   109,   108,    60,   470,
-    65,  1306,    30,    31,    65,    33,   965,    60,   479,  1252,
+     3,     4,     5,  1345,   108,  1347,    61,   108,    60,   470,
+    60,  1306,    30,    31,    65,    33,   965,    65,   479,  1252,
   1205,    60,   971,    63,   108,  1210,  1211,  1212,  1177,    42,
    108,     3,     4,     5,    93,   496,    49,  1222,  1223,    57,
     93,    59,   109,  1338,    57,    58,    49,    65,  1479,  1480,
-  1481,  1346,    93,  1348,    57,    58,    93,  1347,  1556,   109,
-  1355,   108,   108,   108,     8,  1014,  1348,  1252,  1252,  1364,
+  1481,  1346,    93,  1348,    57,    58,    93,  1347,  1556,   108,
+  1355,     8,   109,   108,   108,  1014,  1348,  1252,  1252,  1364,
   1338,    33,    65,  1355,   108,   111,    89,  1528,  1338,   108,
   1348,  1385,  1386,    55,   108,    57,    58,  1355,  1332,  1333,
    111,   108,  1649,   108,  1043,  1244,     3,     4,     5,   108,
@@ -2816,7 +2823,7 @@ static const short yycheck[] = {     4,
    218,    71,  1446,  1447,    93,    61,  1501,  1156,   971,    55,
     93,    81,  1507,    65,   111,  1557,    93,  1512,  1513,  1514,
     17,    61,  1517,    93,    94,    55,   108,    61,    55,   108,
-  1512,    42,    97,  1182,    55,  1517,    57,    58,  1533,   108,
+  1512,    42,   108,  1182,    55,  1517,    57,    58,  1533,   102,
    107,   259,   108,    11,  1512,  1513,    57,    58,    61,  1517,
     93,  1014,     3,     4,     5,    61,  1205,  1552,    61,    60,
    889,    65,    61,  1212,  1559,    11,  1556,   108,    61,   108,
@@ -2826,14 +2833,14 @@ static const short yycheck[] = {     4,
   1568,  1194,   797,  1252,    94,  1432,    57,    58,     4,     5,
     48,   238,   330,   139,  1499,  1500,  1501,    81,    82,    83,
     84,    85,  1507,  1659,  1619,  1278,  1559,  1512,  1513,  1514,
-   299,   951,  1517,   726,   657,  1568,  1014,  1619,     3,     4,
-     5,   242,     7,     8,     9,  1229,  1531,  1532,   175,    87,
+   299,   951,  1517,   242,   726,  1568,  1014,  1619,     3,     4,
+     5,   657,     7,     8,     9,  1229,  1531,  1532,   175,    87,
     88,  1619,    48,    91,    92,    93,    94,  1306,  1041,    55,
-   659,    57,    58,  1076,  1659,   944,    31,  1552,     3,     4,
-     5,     6,    37,   797,  1559,    71,   200,  1659,  1206,   347,
-  1249,   606,   124,  1568,    31,    81,  1619,   405,   406,  1338,
+   797,    57,    58,  1076,  1659,   659,    31,  1552,     3,     4,
+     5,     6,    37,   944,  1559,    71,   200,  1659,  1639,  1249,
+   124,   606,   347,  1568,    31,    81,  1619,   405,   406,  1338,
     55,  1659,    57,    58,    59,   222,  1348,    93,    94,  1348,
-  1625,   419,  1639,  1573,   422,  1637,  1355,    42,  1557,  1594,
+  1206,   419,  1625,  1573,   422,  1637,  1355,    42,  1557,  1594,
    428,   429,   430,  1635,    49,  1022,   434,  1180,  1181,  1182,
   1364,    -1,    57,    58,    -1,    -1,  1659,    -1,    -1,     9,
     -1,    -1,    12,    -1,  1619,    -1,    -1,    -1,   103,   104,
@@ -3206,14 +3213,14 @@ static const short yycheck[] = {     4,
     55,    -1,    57,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
      8,     9,    -1,    -1,    -1,   619,    14,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,   631,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   631,    -1,    27,
     28,    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
-    -1,    -1,    -1,    -1,    42,    -1,   650,    -1,    46,    47,
+    -1,    -1,    -1,    -1,    42,    -1,   650,    45,    46,    47,
     -1,    49,    -1,     3,     4,     5,     6,    55,    -1,    57,
-    58,    -1,    -1,    61,    -1,    63,    -1,    -1,    -1,    -1,
+    58,    -1,    -1,    61,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,   136,   676,    71,    -1,   140,   141,    -1,    -1,   683,
     -1,   146,    -1,    81,   149,   150,   151,   691,   692,   693,
-   694,    89,    42,    -1,    -1,    93,    -1,    -1,    -1,    -1,
+   694,    89,    42,    -1,    -1,    93,    -1,    -1,    -1,    97,
    165,    -1,    -1,    -1,   169,    55,    -1,    57,    58,    -1,
    175,   176,     3,     4,     5,     6,    -1,    -1,     9,    -1,
     -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,   193,   194,
@@ -3234,7 +3241,7 @@ static const short yycheck[] = {     4,
     65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
     75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
     85,   356,    87,    88,    89,   360,    91,    92,    93,    94,
-    95,    -1,    97,    -1,    -1,    -1,    -1,   102,    -1,    -1,
+    95,    -1,    -1,    -1,    -1,    -1,   101,   102,    -1,    -1,
     -1,    -1,   107,   108,   109,    -1,   111,    -1,    -1,    -1,
    924,   925,   926,    -1,    -1,    -1,   930,   931,    -1,    -1,
     -1,     4,     5,    33,    -1,     8,     9,    -1,    -1,   404,
@@ -3299,14 +3306,14 @@ static const short yycheck[] = {     4,
    106,    -1,   622,   623,   624,    -1,    42,  1531,  1532,  1533,
      1,   631,     3,     4,     5,     6,     7,     8,     9,    55,
     -1,    57,    58,    14,    -1,    -1,    -1,    63,    -1,  1014,
-   650,    -1,    -1,  1557,    -1,    71,    27,    28,    -1,    30,
+   650,    -1,    -1,  1557,    -1,    71,    -1,    28,    -1,    30,
     31,    32,    -1,    -1,    -1,    81,    37,    -1,    -1,    -1,
-    -1,    42,    -1,    89,    45,    46,    47,    93,    49,    -1,
+    -1,    42,    -1,    89,    -1,    46,    -1,    93,    49,    -1,
     -1,  1046,    -1,    -1,    55,    -1,    57,    58,    -1,   175,
-    61,   691,    -1,   693,   694,    -1,   696,    -1,    -1,    -1,
+    -1,   691,    -1,   693,   694,    -1,   696,    -1,    -1,    -1,
     71,    -1,    -1,    -1,    -1,    -1,    -1,   193,   194,   195,
     81,  1076,    -1,    -1,    -1,    -1,    -1,   203,    89,    -1,
-    -1,    -1,    93,    -1,    -1,    -1,    -1,    98,    -1,    -1,
+    -1,    -1,    93,    -1,    -1,    -1,    97,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,   222,    -1,   738,    -1,
     -1,    -1,    -1,     3,     4,     5,     6,    -1,    -1,     9,
    750,   751,   752,   753,   754,    -1,    -1,    -1,   758,    -1,
@@ -3334,34 +3341,34 @@ static const short yycheck[] = {     4,
    970,   971,    -1,    -1,    89,   468,    -1,    -1,    93,    -1,
   1345,  1346,  1347,    -1,   470,   471,    -1,    -1,   474,    -1,
    476,   477,   478,   479,   109,    -1,    -1,   483,    -1,    -1,
-    -1,    -1,   488,    -1,    -1,   491,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,  1014,    -1,     4,     5,    -1,    -1,
-    -1,     9,    -1,    -1,    -1,    -1,    -1,    -1,  1028,  1029,
-  1030,    -1,     1,    -1,     3,     4,     5,     6,     7,     8,
-     9,    -1,    -1,    31,   537,    14,  1046,   540,    -1,    -1,
-    -1,    -1,   545,   546,   547,   548,   549,    -1,    -1,    28,
-    48,    30,    31,    32,    -1,   558,    -1,    55,    37,    57,
-    58,    -1,    -1,    42,    -1,    -1,    -1,    46,   571,    -1,
-    49,    -1,    -1,    71,    -1,    -1,    55,    -1,    57,    58,
-    -1,    -1,    -1,    81,    -1,  1460,    -1,    -1,    -1,    -1,
-    -1,    -1,    71,    -1,    -1,    93,    94,    -1,    -1,    -1,
-    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    89,    -1,    -1,    -1,    93,  1125,  1126,    -1,  1128,    98,
-    -1,   624,    -1,    -1,    -1,    -1,    -1,    -1,   631,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   634,   635,
-    -1,  1151,    -1,    -1,  1154,  1155,  1156,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,   650,    -1,  1531,  1532,  1533,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1177,  1178,  1179,
-  1180,  1181,  1182,  1183,    -1,    -1,    -1,  1187,    -1,    -1,
-    -1,    -1,  1557,     3,     4,     5,     6,     7,     8,     9,
-    -1,    -1,    12,    -1,    14,   691,    -1,   693,   694,    -1,
-  1210,  1211,  1212,    -1,    -1,    -1,    -1,    -1,    28,    -1,
-    30,    31,  1222,  1223,  1224,  1225,    -1,    37,    -1,    -1,
-    -1,    -1,    42,    -1,    -1,    -1,    46,    -1,    48,    -1,
+    -1,    -1,   488,    -1,    -1,   491,     3,     4,     5,     6,
+     7,     8,     9,    -1,  1014,    12,    -1,    14,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,  1028,  1029,
+  1030,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,    -1,
+    37,    -1,    -1,    -1,   537,    42,  1046,   540,    -1,    46,
+    -1,    48,   545,   546,   547,   548,   549,    -1,    55,    -1,
+    57,    58,    -1,    -1,    -1,   558,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,   571,    -1,
+    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    89,    -1,    -1,  1460,    93,    94,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,  1125,  1126,    -1,  1128,    -1,
+    -1,   624,    28,    -1,    30,    31,    32,    -1,   631,    -1,
+    -1,    37,    -1,    -1,    -1,    -1,    42,    -1,   634,   635,
+    46,  1151,    -1,    49,  1154,  1155,  1156,    -1,    -1,    55,
+    -1,    57,    58,    -1,   650,    -1,  1531,  1532,  1533,    -1,
+    -1,    -1,    -1,    -1,    -1,    71,    -1,  1177,  1178,  1179,
+  1180,  1181,  1182,  1183,    -1,    81,    -1,  1187,    -1,    -1,
+    -1,    -1,  1557,    89,     4,     5,    -1,    93,    -1,     9,
+    -1,    97,    -1,    -1,    -1,   691,    -1,   693,   694,    -1,
+  1210,  1211,  1212,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    31,  1222,  1223,  1224,  1225,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
     -1,    -1,    -1,    -1,  1244,    55,    -1,    57,    58,   742,
     -1,    -1,   738,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    71,    -1,    -1,   750,   751,   752,   753,   754,   755,
-    -1,    81,   758,    -1,    -1,    -1,    -1,    -1,    -1,    89,
+    -1,    81,   758,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    93,    94,    -1,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,   783,    -1,    -1,
     -1,  1301,  1302,  1303,  1304,  1305,  1306,    -1,    -1,  1309,
@@ -3436,17 +3443,17 @@ static const short yycheck[] = {     4,
     79,    80,    81,    -1,   505,    -1,   507,    -1,    87,    88,
     89,    -1,    -1,    -1,    93,    -1,    -1,    -1,  1501,    -1,
     -1,    -1,    -1,  1499,  1500,  1501,  1502,    -1,    -1,    -1,
-   531,   110,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
-     6,     7,     8,     9,    -1,    -1,    -1,    -1,    14,    -1,
-  1533,    -1,    -1,    -1,    -1,  1531,  1532,  1533,    -1,    -1,
-    -1,    -1,    28,    -1,    30,    31,    32,    -1,    -1,  1552,
-    -1,    37,    -1,    -1,    -1,  1551,    42,    -1,    -1,    -1,
-    46,  1557,    -1,    49,    -1,    -1,    -1,    -1,    -1,    55,
-    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    71,    -1,   608,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,   619,   620,
-    -1,   622,   623,    89,    -1,  1151,    -1,    93,  1154,  1155,
-  1156,    -1,    98,     1,    -1,     3,     4,     5,     6,     7,
+   531,   110,     1,    -1,     3,     4,     5,     6,     7,     8,
+     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,    -1,    -1,
+  1533,    -1,    -1,    -1,    -1,  1531,  1532,  1533,    -1,    28,
+    -1,    30,    31,    32,    -1,    -1,    -1,    -1,    37,  1552,
+    -1,    -1,    -1,    42,    -1,  1551,    -1,    46,    47,    -1,
+    49,  1557,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,
+    -1,    -1,    61,    -1,    63,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    71,    -1,    -1,    -1,    -1,   608,    -1,    -1,
+    -1,    -1,    81,    -1,    -1,    -1,    -1,    -1,   619,   620,
+    89,   622,   623,    -1,    93,  1151,    -1,    -1,  1154,  1155,
+  1156,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
      8,     9,    -1,    -1,    -1,    -1,    14,    -1,    -1,    -1,
     -1,  1177,  1178,  1179,  1180,  1181,  1182,  1183,    -1,    -1,
     28,  1187,    30,    31,    32,    -1,    -1,    -1,    -1,    37,
@@ -3551,10 +3558,19 @@ static const short yycheck[] = {     4,
     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,    93,    -1,     1,    -1,     3,     4,     5,     6,   101,
-     8,     9,    10,    11,    -1,    13,    14,    -1,   110,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    28,    29,    30,    31,    32,    -1,    34,    35,    36,    37,
+    -1,    93,     1,    -1,     3,     4,     5,     6,   100,     8,
+     9,    10,    11,    -1,    13,    14,    -1,    -1,   110,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
+    29,    30,    31,    32,    -1,    34,    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,    93,     3,     4,     5,     6,    -1,
+     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
+    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    28,    29,    30,    -1,    32,    -1,    34,    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,
@@ -3566,7 +3582,7 @@ static const short yycheck[] = {     4,
     -1,    28,    29,    30,    -1,    32,    -1,    34,    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,
+    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,    93,     3,     4,     5,
@@ -3575,7 +3591,7 @@ static const short yycheck[] = {     4,
     -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    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,    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,    93,     3,     4,
@@ -3584,12 +3600,12 @@ static const short yycheck[] = {     4,
     -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,
     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,
+    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,    93,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    14,    -1,    -1,   108,    -1,   110,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
     34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
     44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,    53,
@@ -3598,7 +3614,7 @@ static const short yycheck[] = {     4,
     -1,    -1,    -1,    -1,    -1,    79,    80,    81,    -1,    -1,
     -1,    -1,    -1,    87,    88,    89,    -1,    -1,     1,    93,
      3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
-    13,    14,    -1,    -1,   108,    -1,   110,    -1,    -1,    -1,
+    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
     -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
     43,    44,    -1,    46,    -1,    -1,    -1,    50,    51,    52,
@@ -3615,7 +3631,7 @@ static const short yycheck[] = {     4,
     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,    93,     3,     4,     5,     6,    -1,     8,     9,    10,
+    -1,    93,     3,     4,     5,     6,    -1,     8,     9,    10,
     11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
     -1,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
@@ -3624,124 +3640,124 @@ static const short yycheck[] = {     4,
     -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,    93,     3,     4,     5,     6,    -1,     8,     9,
-    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
-    30,    -1,    32,    -1,    34,    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,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   110,
+   111,     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,    -1,    34,    35,    36,    37,    -1,    39,    40,    41,
+    42,    43,    44,    45,    46,    47,    -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,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,     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,    -1,
+    34,    35,    36,    37,    -1,    39,    40,    41,    42,    43,
+    44,    45,    46,    47,    -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,    93,
+    -1,    95,    -1,     3,     4,     5,     6,     7,     8,     9,
+    10,    11,    -1,    13,    14,    15,   110,    17,    18,    19,
+    20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+    30,    31,    32,    -1,    34,    35,    36,    37,    -1,    39,
+    40,    41,    42,    43,    44,    45,    46,    47,    -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,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-   110,   111,     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,    -1,    34,    35,    36,    37,    -1,    39,    40,
-    41,    42,    43,    44,    45,    46,    47,    -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,    93,    -1,    95,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   109,   110,
-     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,
+    -1,    -1,    -1,    93,    -1,    95,    -1,     3,     4,     5,
+     6,     7,     8,     9,    10,    11,    -1,    13,    14,    15,
+   110,    17,    18,    19,    20,    21,    22,    23,    24,    25,
+    26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
+    36,    37,    -1,    39,    40,    41,    42,    43,    44,    45,
+    46,    47,    -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,    93,    -1,    95,
+     3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
+    13,    14,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
     -1,    34,    35,    36,    37,    -1,    39,    40,    41,    42,
-    43,    44,    45,    46,    47,    -1,    -1,    50,    51,    52,
-    53,    54,    55,    -1,    57,    58,    59,    -1,    61,    62,
+    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,    -1,    -1,
-    93,    -1,    95,    -1,     3,     4,     5,     6,     7,     8,
-     9,    10,    11,    -1,    13,    14,    15,   110,    17,    18,
-    19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+    93,    94,     3,     4,     5,     6,     7,     8,     9,    10,
+    11,    12,    13,    14,    -1,    -1,    -1,   110,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
+    31,    32,    -1,    34,    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,
+    -1,    -1,    93,    94,     3,     4,     5,     6,    -1,     8,
+     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,   110,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
     29,    30,    31,    32,    -1,    34,    35,    36,    37,    -1,
-    39,    40,    41,    42,    43,    44,    45,    46,    47,    -1,
+    39,    40,    41,    42,    43,    44,    -1,    46,    -1,    48,
     -1,    50,    51,    52,    53,    54,    55,    -1,    57,    58,
-    59,    -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,    93,    -1,    95,    -1,     3,     4,
-     5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
-    15,   110,    17,    18,    19,    20,    21,    22,    23,    24,
-    25,    26,    27,    28,    29,    30,    31,    32,    -1,    34,
+    89,    -1,    -1,    -1,    93,    94,     3,     4,     5,     6,
+    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,
+    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    28,    29,    30,    31,    32,    -1,    34,    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,    -1,    -1,    93,    94,     3,     4,
+     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
+    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,
     35,    36,    37,    -1,    39,    40,    41,    42,    43,    44,
-    45,    46,    47,    -1,    -1,    50,    51,    52,    53,    54,
-    55,    -1,    57,    58,    -1,    -1,    61,    62,    -1,    -1,
+    -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,    93,    -1,
-    95,     3,     4,     5,     6,     7,     8,     9,    10,    11,
-    12,    13,    14,    -1,    -1,   110,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
-    32,    -1,    34,    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,    -1,
-    -1,    93,    94,     3,     4,     5,     6,     7,     8,     9,
-    10,    11,    12,    13,    14,    -1,    -1,    -1,   110,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,
-    30,    31,    32,    -1,    34,    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,    -1,    -1,    93,    94,     3,     4,     5,     6,    -1,
-     8,     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,
-   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    28,    29,    30,    31,    32,    -1,    34,    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,    -1,    -1,    93,    94,     3,     4,     5,
-     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
-    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,    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,    -1,    -1,    93,    94,     3,
+    -1,    -1,    87,    88,    89,    -1,    -1,    -1,    93,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,
+    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
     34,    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,    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,    93,
-     3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
+     3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
     13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
     -1,    34,    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,
+    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,
-    93,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+    93,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
     -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
     32,    -1,    34,    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,
+    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,    93,     3,     4,     5,     6,    -1,     8,     9,    10,
     11,    -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,
     -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,
-    31,    32,    -1,    34,    35,    36,    37,    -1,    39,    40,
+    -1,    32,    -1,    34,    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,
@@ -3771,7 +3787,7 @@ static const short yycheck[] = {     4,
     28,    29,    30,    -1,    32,    -1,    34,    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,
+    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,    -1,    -1,    -1,    93,     3,     4,     5,     6,
@@ -3780,40 +3796,40 @@ static const short yycheck[] = {     4,
     -1,    28,    29,    30,    -1,    32,    -1,    34,    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,
+    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,    93,     3,     4,     5,
-     6,    -1,     8,     9,    10,    11,    -1,    13,    14,    -1,
+    87,    88,    89,    -1,    -1,    -1,    93,    94,     3,     4,
+     5,     6,    -1,     8,     9,    10,    11,    -1,    13,    14,
     -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    28,    29,    30,    -1,    32,    -1,    34,    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,    93,    94,     3,
+    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,    34,
+    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,    93,     3,
      4,     5,     6,    -1,     8,     9,    10,    11,    -1,    13,
-    14,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,    -1,
+    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,    -1,
     34,    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,
+    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,    93,
      3,     4,     5,     6,    -1,     8,     9,    10,    11,    -1,
     13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,    32,
+    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,    32,
     -1,    34,    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,
+    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,
     93,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
     -1,    13,    14,    -1,    -1,    -1,    -1,   110,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    31,
+    -1,    -1,    -1,    -1,    -1,    -1,    28,    29,    30,    -1,
     32,    -1,    34,    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,
@@ -3836,88 +3852,79 @@ static const short yycheck[] = {     4,
     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,    93,     3,     4,     5,     6,    -1,     8,
-     9,    10,    11,    -1,    13,    14,    -1,    -1,    -1,    -1,
-   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    28,
-    29,    30,    -1,    32,    -1,    34,    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,    93,    -1,    -1,    -1,    28,    -1,
-    30,    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,
-    -1,   110,    42,    -1,    -1,    -1,    46,    -1,    48,    -1,
-    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,
-    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
-    -1,    71,    12,    -1,    14,    -1,    -1,    -1,    -1,    -1,
-    -1,    81,    -1,    -1,    -1,    -1,    -1,    -1,    28,    89,
-    30,    31,    -1,    93,    94,    -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,    71,     3,     4,     5,     6,     7,     8,     9,    79,
+    80,    81,    -1,    14,    -1,    -1,    -1,    87,    88,    89,
+    -1,    -1,    -1,    93,    -1,    -1,    -1,    28,    -1,    30,
+    31,    -1,    -1,    -1,    -1,    -1,    37,    -1,    -1,    -1,
+   110,    42,    -1,    -1,    -1,    46,    -1,    48,    -1,    -1,
+    -1,    -1,    -1,    -1,    55,    -1,    57,    58,    -1,    -1,
+    -1,    -1,     3,     4,     5,     6,     7,     8,     9,    -1,
+    71,    12,    -1,    14,    -1,    -1,    -1,    -1,    -1,    -1,
+    81,    -1,    -1,    -1,    -1,    -1,    -1,    28,    89,    30,
+    31,    -1,    93,    94,    -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,    -1,    -1,    -1,
-    -1,    71,    -1,    28,    -1,    30,    31,    -1,    -1,    -1,
-    -1,    81,    37,    -1,    -1,    -1,    -1,    42,    -1,    89,
-    -1,    46,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,    -1,    -1,    61,    -1,     3,     4,
-     5,     6,     7,     8,     9,    -1,    71,    -1,    -1,    14,
-    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,    -1,    28,    89,    30,    31,    -1,    93,    -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,    -1,    -1,    -1,    71,    -1,    28,    -1,
-    30,    31,    -1,    -1,    -1,    -1,    81,    37,    -1,    -1,
-    -1,    -1,    42,    -1,    89,    -1,    46,    -1,    93,    -1,
-    -1,    -1,    -1,    -1,    -1,    55,    -1,    57,    58,     4,
-     5,    -1,     7,     8,     9,    -1,    -1,    12,    -1,    14,
-    -1,    71,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
-    -1,    81,     9,    28,    -1,    30,    31,    -1,    -1,    89,
-    -1,    -1,    37,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-    -1,    46,    -1,    48,    31,    -1,    -1,    -1,    -1,    -1,
-    55,    -1,    57,    58,    -1,    42,    -1,     3,     4,     5,
-     6,    -1,    -1,     9,    -1,    -1,    71,    -1,    55,    -1,
-    57,    58,    -1,    -1,    -1,    -1,    81,     3,     4,     5,
-     6,    -1,    -1,    -1,    71,    31,    -1,    -1,    93,    94,
-    -1,    -1,    -1,    -1,    81,    -1,    42,    -1,     3,     4,
-     5,     6,    89,    -1,    -1,    31,    93,    -1,    -1,    55,
-    -1,    57,    58,    -1,    -1,    -1,    42,    -1,     3,     4,
-     5,     6,    -1,    -1,    -1,    71,    31,    -1,    -1,    55,
-    -1,    57,    58,    -1,    -1,    81,    -1,    42,    -1,    -1,
+    71,    -1,    28,    -1,    30,    31,    -1,    -1,    -1,    -1,
+    81,    37,    -1,    -1,    -1,    -1,    42,    -1,    89,    -1,
+    46,    -1,    93,    -1,    -1,    -1,    -1,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    61,    -1,     3,     4,     5,
+     6,     7,     8,     9,    -1,    71,    -1,    -1,    14,    -1,
+    -1,    -1,    -1,    -1,    -1,    81,    -1,    -1,    -1,    -1,
+    -1,    -1,    28,    89,    30,    31,    -1,    93,    -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,    -1,    -1,    -1,    71,    -1,    28,    -1,    30,
+    31,    -1,    -1,    -1,    -1,    81,    37,    -1,    -1,    -1,
+    -1,    42,    -1,    89,    -1,    46,    -1,    93,    -1,    -1,
+    -1,    -1,    -1,    -1,    55,    -1,    57,    58,     4,     5,
+    -1,     7,     8,     9,    -1,    -1,    12,    -1,    14,    -1,
+    71,    -1,    -1,    -1,    -1,     3,     4,     5,     6,    -1,
+    81,     9,    28,    -1,    30,    31,    -1,    -1,    89,    -1,
+    -1,    37,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+    46,    -1,    48,    31,    -1,    -1,    -1,    -1,    -1,    55,
+    -1,    57,    58,    -1,    42,    -1,     3,     4,     5,     6,
+    -1,    -1,     9,    -1,    -1,    71,    -1,    55,    -1,    57,
+    58,    -1,    -1,    -1,    -1,    81,     3,     4,     5,     6,
+    -1,    -1,    -1,    71,    31,    -1,    -1,    93,    94,    -1,
+    -1,    -1,    -1,    81,    -1,    42,    -1,     3,     4,     5,
+     6,    89,    -1,    -1,    31,    93,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    -1,    42,    -1,     3,     4,     5,
+     6,    -1,    -1,    -1,    71,    31,    -1,    -1,    55,    -1,
+    57,    58,    -1,    -1,    81,    -1,    42,    -1,    -1,    -1,
+    -1,    -1,    89,    -1,    71,    31,    93,    -1,    -1,    55,
+    -1,    57,    58,    -1,    81,    -1,    42,    -1,     3,     4,
+     5,     6,    89,    -1,    -1,    71,    93,    -1,    -1,    55,
+    -1,    57,    58,    -1,    -1,    81,    -1,    -1,    -1,    -1,
     -1,    -1,    -1,    89,    -1,    71,    31,    93,    -1,    -1,
-    55,    -1,    57,    58,    -1,    81,    -1,    42,    -1,     3,
-     4,     5,     6,    89,    -1,    -1,    71,    93,    -1,    -1,
-    55,    -1,    57,    58,    -1,    -1,    81,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    89,    -1,    71,    31,    93,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    81,    -1,    42,    -1,
-    -1,    -1,     4,     5,    89,     7,     8,     9,    93,    -1,
-    12,    55,    14,    57,    58,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    28,    71,    30,    31,
-    -1,    -1,    -1,    -1,    -1,    37,    -1,    81,    -1,    -1,
-    -1,    -1,    -1,    -1,    46,    89,    -1,    -1,    -1,    93,
-    -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,   111,    -1,    -1,    -1,    -1,    -1,
-    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,
-    -1,    -1,   107,    64,    65,    66,    67,    68,    69,    70,
-    71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
-    81,    82,    83,    84,    85,    60,    -1,    -1,    -1,    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,
+    -1,    -1,    -1,    -1,    -1,    81,    -1,    42,    -1,    -1,
+    -1,     4,     5,    89,     7,     8,     9,    93,    -1,    12,
+    55,    14,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    28,    71,    30,    31,    -1,
+    -1,    -1,    -1,    -1,    37,    -1,    81,    -1,    -1,    -1,
+    -1,    -1,    -1,    46,    89,    -1,    -1,    -1,    93,    -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,   111,    -1,    -1,    -1,    -1,    -1,    -1,
+    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    60,    -1,
+    -1,   107,    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,    68,    69,
-    70,    71,    72,    73,    74,    75,    76,    77,    78,    79,
-    80,    81,    82,    83,    84,    85
+    82,    83,    84,    85,    60,    -1,    -1,    -1,    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,    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"
@@ -4463,106 +4470,106 @@ yyreduce:
   switch (yyn) {
 
 case 2:
-#line 354 "parse.y"
+#line 363 "parse.y"
 { finish_translation_unit (); ;
     break;}
 case 3:
-#line 362 "parse.y"
+#line 371 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 4:
-#line 364 "parse.y"
+#line 373 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 5:
-#line 366 "parse.y"
+#line 375 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 8:
-#line 375 "parse.y"
+#line 384 "parse.y"
 { have_extern_spec = 1;
                  used_extern_spec = 0;
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 9:
-#line 380 "parse.y"
+#line 389 "parse.y"
 { have_extern_spec = 0; ;
     break;}
 case 10:
-#line 385 "parse.y"
+#line 394 "parse.y"
 { yyval.itype = pedantic;
                  pedantic = 0; ;
     break;}
 case 12:
-#line 394 "parse.y"
+#line 403 "parse.y"
 { if (pending_lang_change) do_pending_lang_change(); ;
     break;}
 case 13:
-#line 396 "parse.y"
+#line 405 "parse.y"
 { if (! toplevel_bindings_p ())
                  pop_everything (); ;
     break;}
 case 14:
-#line 402 "parse.y"
+#line 411 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 15:
-#line 404 "parse.y"
+#line 413 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 16:
-#line 406 "parse.y"
+#line 415 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 17:
-#line 408 "parse.y"
+#line 417 "parse.y"
 { if (TREE_CHAIN (yyvsp[-2].ttype)) yyvsp[-2].ttype = combine_strings (yyvsp[-2].ttype);
                  assemble_asm (yyvsp[-2].ttype); ;
     break;}
 case 18:
-#line 411 "parse.y"
+#line 420 "parse.y"
 { pop_lang_context (); ;
     break;}
 case 19:
-#line 413 "parse.y"
+#line 422 "parse.y"
 { if (pending_inlines) do_pending_inlines ();
                  pop_lang_context (); ;
     break;}
 case 20:
-#line 416 "parse.y"
+#line 425 "parse.y"
 { if (pending_inlines) do_pending_inlines ();
                  pop_lang_context (); ;
     break;}
 case 21:
-#line 419 "parse.y"
+#line 428 "parse.y"
 { push_namespace (yyvsp[-1].ttype); ;
     break;}
 case 22:
-#line 421 "parse.y"
+#line 430 "parse.y"
 { pop_namespace (); ;
     break;}
 case 23:
-#line 423 "parse.y"
+#line 432 "parse.y"
 { push_namespace (NULL_TREE); ;
     break;}
 case 24:
-#line 425 "parse.y"
+#line 434 "parse.y"
 { pop_namespace (); ;
     break;}
 case 26:
-#line 428 "parse.y"
+#line 437 "parse.y"
 { do_toplevel_using_decl (yyvsp[-1].ttype); ;
     break;}
 case 28:
-#line 431 "parse.y"
+#line 440 "parse.y"
 { pedantic = yyvsp[-1].itype; ;
     break;}
 case 29:
-#line 436 "parse.y"
+#line 445 "parse.y"
 { begin_only_namespace_names (); ;
     break;}
 case 30:
-#line 438 "parse.y"
+#line 447 "parse.y"
 {
                  end_only_namespace_names ();
                  if (lastiddecl)
@@ -4571,35 +4578,35 @@ case 30:
                ;
     break;}
 case 31:
-#line 448 "parse.y"
+#line 457 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 32:
-#line 450 "parse.y"
+#line 459 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 33:
-#line 452 "parse.y"
+#line 461 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 34:
-#line 457 "parse.y"
+#line 466 "parse.y"
 { yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 35:
-#line 459 "parse.y"
+#line 468 "parse.y"
 { yyval.ttype = build_parse_node (SCOPE_REF, global_namespace, yyvsp[0].ttype); ;
     break;}
 case 36:
-#line 461 "parse.y"
+#line 470 "parse.y"
 { yyval.ttype = build_parse_node (SCOPE_REF, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 37:
-#line 466 "parse.y"
+#line 475 "parse.y"
 { begin_only_namespace_names (); ;
     break;}
 case 38:
-#line 468 "parse.y"
+#line 477 "parse.y"
 {
                  end_only_namespace_names ();
                  /* If no declaration was found, the using-directive is
@@ -4611,7 +4618,7 @@ case 38:
                ;
     break;}
 case 39:
-#line 481 "parse.y"
+#line 490 "parse.y"
 {
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
                    yyval.ttype = lastiddecl;
@@ -4619,7 +4626,7 @@ case 39:
                ;
     break;}
 case 40:
-#line 487 "parse.y"
+#line 496 "parse.y"
 {
                  yyval.ttype = yyvsp[-1].ttype;
                  if (TREE_CODE (yyval.ttype) == IDENTIFIER_NODE)
@@ -4628,86 +4635,86 @@ case 40:
                ;
     break;}
 case 43:
-#line 498 "parse.y"
+#line 507 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 44:
-#line 500 "parse.y"
+#line 509 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 45:
-#line 505 "parse.y"
+#line 514 "parse.y"
 { push_lang_context (yyvsp[0].ttype); ;
     break;}
 case 46:
-#line 507 "parse.y"
+#line 516 "parse.y"
 { if (current_lang_name != yyvsp[0].ttype)
                    cp_error ("use of linkage spec `%D' is different from previous spec `%D'", yyvsp[0].ttype, current_lang_name);
                  pop_lang_context (); push_lang_context (yyvsp[0].ttype); ;
     break;}
 case 47:
-#line 514 "parse.y"
+#line 523 "parse.y"
 { begin_template_parm_list (); ;
     break;}
 case 48:
-#line 516 "parse.y"
+#line 525 "parse.y"
 { yyval.ttype = end_template_parm_list (yyvsp[-1].ttype); ;
     break;}
 case 49:
-#line 518 "parse.y"
+#line 527 "parse.y"
 { begin_specialization(); 
                  yyval.ttype = NULL_TREE; ;
     break;}
 case 50:
-#line 524 "parse.y"
+#line 533 "parse.y"
 { yyval.ttype = process_template_parm (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 51:
-#line 526 "parse.y"
+#line 535 "parse.y"
 { yyval.ttype = process_template_parm (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 52:
-#line 531 "parse.y"
+#line 540 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 53:
-#line 533 "parse.y"
+#line 542 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 54:
-#line 537 "parse.y"
+#line 546 "parse.y"
 { yyval.ttype = finish_template_type_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 55:
-#line 539 "parse.y"
+#line 548 "parse.y"
 { yyval.ttype = finish_template_type_parm (class_type_node, yyvsp[0].ttype); ;
     break;}
 case 56:
-#line 544 "parse.y"
+#line 553 "parse.y"
 { yyval.ttype = finish_template_template_parm (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 57:
-#line 556 "parse.y"
+#line 565 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 58:
-#line 558 "parse.y"
+#line 567 "parse.y"
 { yyval.ttype = build_tree_list (groktypename (yyvsp[0].ftype.t), yyvsp[-2].ttype); ;
     break;}
 case 59:
-#line 560 "parse.y"
+#line 569 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
 case 60:
-#line 562 "parse.y"
+#line 571 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[0].ttype, yyvsp[-2].ftype.t); ;
     break;}
 case 61:
-#line 564 "parse.y"
+#line 573 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 62:
-#line 566 "parse.y"
+#line 575 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) != TEMPLATE_DECL
                      && TREE_CODE (yyvsp[0].ttype) != TEMPLATE_TEMPLATE_PARM
@@ -4720,66 +4727,66 @@ case 62:
                ;
     break;}
 case 63:
-#line 580 "parse.y"
+#line 589 "parse.y"
 { finish_template_decl (yyvsp[-1].ttype); ;
     break;}
 case 64:
-#line 582 "parse.y"
+#line 591 "parse.y"
 { finish_template_decl (yyvsp[-1].ttype); ;
     break;}
 case 65:
-#line 587 "parse.y"
+#line 596 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 66:
-#line 589 "parse.y"
+#line 598 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 67:
-#line 591 "parse.y"
+#line 600 "parse.y"
 { if (pending_inlines) do_pending_inlines (); ;
     break;}
 case 68:
-#line 593 "parse.y"
+#line 602 "parse.y"
 { if (pending_inlines) do_pending_inlines ();
                  pop_lang_context (); ;
     break;}
 case 69:
-#line 596 "parse.y"
+#line 605 "parse.y"
 { if (pending_inlines) do_pending_inlines ();
                  pop_lang_context (); ;
     break;}
 case 70:
-#line 599 "parse.y"
+#line 608 "parse.y"
 { pedantic = yyvsp[-1].itype; ;
     break;}
 case 72:
-#line 605 "parse.y"
+#line 614 "parse.y"
 {;
     break;}
 case 73:
-#line 607 "parse.y"
+#line 616 "parse.y"
 { note_list_got_semicolon (yyvsp[-2].ftype.t); ;
     break;}
 case 74:
-#line 609 "parse.y"
+#line 618 "parse.y"
 { maybe_process_partial_specialization (yyvsp[-1].ftype.t);
                  note_got_semicolon (yyvsp[-1].ftype.t); ;
     break;}
 case 76:
-#line 616 "parse.y"
+#line 625 "parse.y"
 {;
     break;}
 case 77:
-#line 618 "parse.y"
+#line 627 "parse.y"
 { note_list_got_semicolon (yyvsp[-2].ftype.t); ;
     break;}
 case 78:
-#line 620 "parse.y"
+#line 629 "parse.y"
 { pedwarn ("empty declaration"); ;
     break;}
 case 80:
-#line 623 "parse.y"
+#line 632 "parse.y"
 {
                  tree t, attrs;
                  split_specs_attrs (yyvsp[-1].ftype.t, &t, &attrs);
@@ -4788,128 +4795,124 @@ case 80:
                ;
     break;}
 case 84:
-#line 636 "parse.y"
+#line 645 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 85:
-#line 638 "parse.y"
+#line 647 "parse.y"
 { yyval.itype = 1; ;
     break;}
 case 91:
-#line 654 "parse.y"
-{ finish_function (lineno, (int)yyvsp[-1].itype, 0); ;
+#line 663 "parse.y"
+{ finish_function (lineno, (int)yyvsp[-1].itype); ;
     break;}
 case 92:
-#line 656 "parse.y"
-{ 
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)yyvsp[0].itype, nested); 
-               ;
+#line 665 "parse.y"
+{ finish_function (lineno, (int)yyvsp[0].itype); ;
     break;}
 case 93:
-#line 662 "parse.y"
+#line 667 "parse.y"
 { ;
     break;}
 case 94:
-#line 667 "parse.y"
+#line 672 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 95:
-#line 669 "parse.y"
+#line 674 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 96:
-#line 671 "parse.y"
+#line 676 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); 
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 97:
-#line 675 "parse.y"
+#line 680 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 98:
-#line 677 "parse.y"
+#line 682 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 99:
-#line 679 "parse.y"
+#line 684 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype);
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 100:
-#line 683 "parse.y"
+#line 688 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 101:
-#line 685 "parse.y"
+#line 690 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 102:
-#line 687 "parse.y"
+#line 692 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype);
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 103:
-#line 691 "parse.y"
+#line 696 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 104:
-#line 693 "parse.y"
+#line 698 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 105:
-#line 695 "parse.y"
+#line 700 "parse.y"
 { yyval.ttype = begin_constructor_declarator (yyvsp[-4].ttype, yyvsp[-3].ttype); 
                  yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype);
                ;
     break;}
 case 106:
-#line 702 "parse.y"
+#line 707 "parse.y"
 { if (!begin_function_definition (yyvsp[-1].ftype.t, yyvsp[0].ttype))
                    YYERROR1; ;
     break;}
 case 107:
-#line 705 "parse.y"
+#line 710 "parse.y"
 { if (!begin_function_definition (yyvsp[-1].ttype, yyvsp[0].ttype))
                    YYERROR1; ;
     break;}
 case 108:
-#line 708 "parse.y"
+#line 713 "parse.y"
 { if (!begin_function_definition (NULL_TREE, yyvsp[0].ttype))
                    YYERROR1; ;
     break;}
 case 109:
-#line 711 "parse.y"
+#line 716 "parse.y"
 { if (!begin_function_definition (yyvsp[-1].ttype, yyvsp[0].ttype))
                    YYERROR1; ;
     break;}
 case 110:
-#line 714 "parse.y"
+#line 719 "parse.y"
 { if (!begin_function_definition (NULL_TREE, yyvsp[0].ttype))
                    YYERROR1; ;
     break;}
 case 111:
-#line 720 "parse.y"
+#line 725 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 112:
-#line 722 "parse.y"
+#line 727 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 113:
-#line 724 "parse.y"
+#line 729 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-5].ttype, yyvsp[-3].ttype, yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 114:
-#line 726 "parse.y"
+#line 731 "parse.y"
 { yyval.ttype = make_call_declarator (yyvsp[-3].ttype, empty_parms (), yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 115:
-#line 733 "parse.y"
+#line 738 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
                  attrs = build_tree_list (attrs, NULL_TREE);
@@ -4922,43 +4925,43 @@ case 115:
                  reinit_parse_for_method (yychar, yyval.ttype); ;
     break;}
 case 116:
-#line 744 "parse.y"
+#line 749 "parse.y"
 { yyval.ttype = start_method (NULL_TREE, yyvsp[0].ttype, NULL_TREE); 
                  goto rest_of_mdef; ;
     break;}
 case 117:
-#line 747 "parse.y"
+#line 752 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ftype.t, &specs, &attrs);
                  attrs = build_tree_list (attrs, NULL_TREE);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs); goto rest_of_mdef; ;
     break;}
 case 118:
-#line 752 "parse.y"
+#line 757 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
                  attrs = build_tree_list (attrs, NULL_TREE);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs); goto rest_of_mdef; ;
     break;}
 case 119:
-#line 757 "parse.y"
+#line 762 "parse.y"
 { yyval.ttype = start_method (NULL_TREE, yyval.ttype, NULL_TREE); 
                  goto rest_of_mdef; ;
     break;}
 case 120:
-#line 760 "parse.y"
+#line 765 "parse.y"
 { tree specs, attrs;
                  split_specs_attrs (yyvsp[-1].ttype, &specs, &attrs);
                  attrs = build_tree_list (attrs, NULL_TREE);
                  yyval.ttype = start_method (specs, yyvsp[0].ttype, attrs); goto rest_of_mdef; ;
     break;}
 case 121:
-#line 765 "parse.y"
+#line 770 "parse.y"
 { yyval.ttype = start_method (NULL_TREE, yyval.ttype, NULL_TREE); 
                  goto rest_of_mdef; ;
     break;}
 case 122:
-#line 771 "parse.y"
+#line 776 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -4966,19 +4969,19 @@ case 122:
                ;
     break;}
 case 123:
-#line 780 "parse.y"
+#line 785 "parse.y"
 { finish_named_return_value (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 124:
-#line 782 "parse.y"
+#line 787 "parse.y"
 { finish_named_return_value (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 125:
-#line 784 "parse.y"
+#line 789 "parse.y"
 { finish_named_return_value (yyval.ttype, NULL_TREE); ;
     break;}
 case 126:
-#line 789 "parse.y"
+#line 794 "parse.y"
 {
                  if (yyvsp[0].itype == 0)
                    error ("no base initializers given following ':'");
@@ -4986,7 +4989,7 @@ case 126:
                ;
     break;}
 case 127:
-#line 798 "parse.y"
+#line 803 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -5005,15 +5008,15 @@ case 127:
                ;
     break;}
 case 128:
-#line 818 "parse.y"
+#line 823 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 129:
-#line 820 "parse.y"
+#line 825 "parse.y"
 { yyval.itype = 1; ;
     break;}
 case 132:
-#line 827 "parse.y"
+#line 832 "parse.y"
 {
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
@@ -5021,7 +5024,7 @@ case 132:
                ;
     break;}
 case 133:
-#line 833 "parse.y"
+#line 838 "parse.y"
 {
                  if (current_class_name)
                    pedwarn ("anachronistic old style base class initializer");
@@ -5029,93 +5032,93 @@ case 133:
                ;
     break;}
 case 134:
-#line 839 "parse.y"
+#line 844 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 135:
-#line 841 "parse.y"
+#line 846 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
     break;}
 case 136:
-#line 843 "parse.y"
+#line 848 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 137:
-#line 845 "parse.y"
+#line 850 "parse.y"
 { expand_member_init (current_class_ref, yyvsp[-1].ttype, void_type_node); ;
     break;}
 case 138:
-#line 847 "parse.y"
+#line 852 "parse.y"
 { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-3].ttype),
                                      yyvsp[-1].ttype); ;
     break;}
 case 139:
-#line 850 "parse.y"
+#line 855 "parse.y"
 { expand_member_init (current_class_ref, TYPE_MAIN_DECL (yyvsp[-1].ttype),
                                      void_type_node); ;
     break;}
 case 151:
-#line 876 "parse.y"
+#line 881 "parse.y"
 { do_type_instantiation (yyvsp[-1].ftype.t, NULL_TREE);
                  yyungetc (';', 1); ;
     break;}
 case 153:
-#line 880 "parse.y"
+#line 885 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  do_decl_instantiation (specs, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 155:
-#line 884 "parse.y"
+#line 889 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 157:
-#line 887 "parse.y"
+#line 892 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 159:
-#line 890 "parse.y"
+#line 895 "parse.y"
 { do_type_instantiation (yyvsp[-1].ftype.t, yyvsp[-4].ttype);
                  yyungetc (';', 1); ;
     break;}
 case 161:
-#line 895 "parse.y"
+#line 900 "parse.y"
 { tree specs = strip_attrs (yyvsp[-1].ftype.t);
                  do_decl_instantiation (specs, yyvsp[0].ttype, yyvsp[-4].ttype); ;
     break;}
 case 163:
-#line 899 "parse.y"
+#line 904 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;
     break;}
 case 165:
-#line 902 "parse.y"
+#line 907 "parse.y"
 { do_decl_instantiation (NULL_TREE, yyvsp[0].ttype, yyvsp[-3].ttype); ;
     break;}
 case 167:
-#line 907 "parse.y"
+#line 912 "parse.y"
 { begin_explicit_instantiation(); ;
     break;}
 case 168:
-#line 910 "parse.y"
+#line 915 "parse.y"
 { end_explicit_instantiation(); ;
     break;}
 case 169:
-#line 919 "parse.y"
+#line 924 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 170:
-#line 922 "parse.y"
+#line 927 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 173:
-#line 930 "parse.y"
+#line 935 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 174:
-#line 935 "parse.y"
+#line 940 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 175:
-#line 939 "parse.y"
+#line 944 "parse.y"
 { 
                  if (yychar == YYEMPTY)
                    yychar = YYLEX;
@@ -5125,7 +5128,7 @@ case 175:
                ;
     break;}
 case 177:
-#line 950 "parse.y"
+#line 955 "parse.y"
 {
                  /* Handle `Class<Class<Type>>' without space in the `>>' */
                  pedwarn ("`>>' should be `> >' in template class name");
@@ -5133,79 +5136,79 @@ case 177:
                ;
     break;}
 case 178:
-#line 959 "parse.y"
+#line 964 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 180:
-#line 965 "parse.y"
+#line 970 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 181:
-#line 967 "parse.y"
+#line 972 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 182:
-#line 972 "parse.y"
+#line 977 "parse.y"
 { yyval.ttype = groktypename (yyvsp[0].ftype.t); ;
     break;}
 case 183:
-#line 974 "parse.y"
+#line 979 "parse.y"
 { yyval.ttype = lastiddecl; ;
     break;}
 case 185:
-#line 980 "parse.y"
+#line 985 "parse.y"
 { yyval.code = NEGATE_EXPR; ;
     break;}
 case 186:
-#line 982 "parse.y"
+#line 987 "parse.y"
 { yyval.code = CONVERT_EXPR; ;
     break;}
 case 187:
-#line 984 "parse.y"
+#line 989 "parse.y"
 { yyval.code = PREINCREMENT_EXPR; ;
     break;}
 case 188:
-#line 986 "parse.y"
+#line 991 "parse.y"
 { yyval.code = PREDECREMENT_EXPR; ;
     break;}
 case 189:
-#line 988 "parse.y"
+#line 993 "parse.y"
 { yyval.code = TRUTH_NOT_EXPR; ;
     break;}
 case 190:
-#line 993 "parse.y"
+#line 998 "parse.y"
 { yyval.ttype = build_x_compound_expr (yyval.ttype); ;
     break;}
 case 192:
-#line 999 "parse.y"
+#line 1004 "parse.y"
 { error ("ANSI C++ forbids an empty condition for `%s'",
                         cond_stmt_keyword);
                  yyval.ttype = integer_zero_node; ;
     break;}
 case 193:
-#line 1003 "parse.y"
+#line 1008 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 194:
-#line 1008 "parse.y"
+#line 1013 "parse.y"
 { error ("ANSI C++ forbids an empty condition for `%s'",
                         cond_stmt_keyword);
                  yyval.ttype = integer_zero_node; ;
     break;}
 case 195:
-#line 1012 "parse.y"
+#line 1017 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 196:
-#line 1017 "parse.y"
+#line 1022 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 198:
-#line 1020 "parse.y"
+#line 1025 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 199:
-#line 1025 "parse.y"
+#line 1030 "parse.y"
 { {
                  tree d;
                  for (d = getdecls (); d; d = TREE_CHAIN (d))
@@ -5224,7 +5227,7 @@ case 199:
                ;
     break;}
 case 200:
-#line 1042 "parse.y"
+#line 1047 "parse.y"
 { 
                  cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-3].ttype, 1, LOOKUP_ONLYCONVERTING);
                  resume_momentary (yyvsp[-2].itype);
@@ -5234,188 +5237,188 @@ case 200:
                ;
     break;}
 case 206:
-#line 1061 "parse.y"
+#line 1066 "parse.y"
 { yyval.ttype = begin_compound_stmt (1); ;
     break;}
 case 207:
-#line 1063 "parse.y"
+#line 1068 "parse.y"
 { finish_compound_stmt (1, yyvsp[-1].ttype); ;
     break;}
 case 209:
-#line 1070 "parse.y"
+#line 1075 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 210:
-#line 1073 "parse.y"
+#line 1078 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyval.ttype, 
                                  build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
 case 211:
-#line 1076 "parse.y"
+#line 1081 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 212:
-#line 1078 "parse.y"
+#line 1083 "parse.y"
 { chainon (yyval.ttype, build_expr_list (NULL_TREE, error_mark_node)); ;
     break;}
 case 213:
-#line 1083 "parse.y"
+#line 1088 "parse.y"
 { yyval.ttype = build_expr_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 215:
-#line 1089 "parse.y"
+#line 1094 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 216:
-#line 1092 "parse.y"
+#line 1097 "parse.y"
 { yyval.ttype = yyvsp[0].ttype;
                  pedantic = yyvsp[-1].itype; ;
     break;}
 case 217:
-#line 1095 "parse.y"
+#line 1100 "parse.y"
 { yyval.ttype = build_x_indirect_ref (yyvsp[0].ttype, "unary *"); ;
     break;}
 case 218:
-#line 1097 "parse.y"
+#line 1102 "parse.y"
 { yyval.ttype = build_x_unary_op (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
 case 219:
-#line 1099 "parse.y"
+#line 1104 "parse.y"
 { yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 220:
-#line 1101 "parse.y"
+#line 1106 "parse.y"
 { yyval.ttype = finish_unary_op_expr (yyvsp[-1].code, yyvsp[0].ttype); ;
     break;}
 case 221:
-#line 1104 "parse.y"
+#line 1109 "parse.y"
 { if (pedantic)
                    pedwarn ("ANSI C++ forbids `&&'");
                  yyval.ttype = finish_label_address_expr (yyvsp[0].ttype); ;
     break;}
 case 222:
-#line 1108 "parse.y"
+#line 1113 "parse.y"
 { yyval.ttype = expr_sizeof (yyvsp[0].ttype); ;
     break;}
 case 223:
-#line 1110 "parse.y"
+#line 1115 "parse.y"
 { yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ftype.t));
                  check_for_new_type ("sizeof", yyvsp[-1].ftype); ;
     break;}
 case 224:
-#line 1113 "parse.y"
+#line 1118 "parse.y"
 { yyval.ttype = grok_alignof (yyvsp[0].ttype); ;
     break;}
 case 225:
-#line 1115 "parse.y"
+#line 1120 "parse.y"
 { yyval.ttype = c_alignof (groktypename (yyvsp[-1].ftype.t)); 
                  check_for_new_type ("alignof", yyvsp[-1].ftype); ;
     break;}
 case 226:
-#line 1121 "parse.y"
+#line 1126 "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 227:
-#line 1124 "parse.y"
+#line 1129 "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 228:
-#line 1127 "parse.y"
+#line 1132 "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 229:
-#line 1130 "parse.y"
+#line 1135 "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 230:
-#line 1143 "parse.y"
+#line 1148 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-1].ftype.t),
                                  NULL_TREE, yyvsp[-4].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 231:
-#line 1148 "parse.y"
+#line 1153 "parse.y"
 { yyval.ttype = build_new (NULL_TREE, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-5].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
 case 232:
-#line 1152 "parse.y"
+#line 1157 "parse.y"
 { yyval.ttype = build_new (yyvsp[-4].ttype, groktypename(yyvsp[-1].ftype.t), NULL_TREE, yyvsp[-5].itype); 
                  check_for_new_type ("new", yyvsp[-1].ftype); ;
     break;}
 case 233:
-#line 1156 "parse.y"
+#line 1161 "parse.y"
 { yyval.ttype = build_new (yyvsp[-5].ttype, groktypename(yyvsp[-2].ftype.t), yyvsp[0].ttype, yyvsp[-6].itype); 
                  check_for_new_type ("new", yyvsp[-2].ftype); ;
     break;}
 case 234:
-#line 1160 "parse.y"
+#line 1165 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 0, yyvsp[-1].itype); ;
     break;}
 case 235:
-#line 1162 "parse.y"
+#line 1167 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, NULL_TREE, 1, yyvsp[-3].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
 case 236:
-#line 1166 "parse.y"
+#line 1171 "parse.y"
 { yyval.ttype = delete_sanity (yyvsp[0].ttype, yyvsp[-2].ttype, 2, yyvsp[-4].itype);
                  if (yychar == YYEMPTY)
                    yychar = YYLEX; ;
     break;}
 case 237:
-#line 1170 "parse.y"
+#line 1175 "parse.y"
 { yyval.ttype = build_x_unary_op (REALPART_EXPR, yyvsp[0].ttype); ;
     break;}
 case 238:
-#line 1172 "parse.y"
+#line 1177 "parse.y"
 { yyval.ttype = build_x_unary_op (IMAGPART_EXPR, yyvsp[0].ttype); ;
     break;}
 case 239:
-#line 1174 "parse.y"
+#line 1179 "parse.y"
 { yyval.ttype = build_va_arg (yyvsp[-3].ttype, groktypename (yyvsp[-1].ftype.t));
                  check_for_new_type ("__builtin_va_arg", yyvsp[-1].ftype); ;
     break;}
 case 240:
-#line 1185 "parse.y"
+#line 1190 "parse.y"
 { finish_new_placement (NULL_TREE, yyvsp[-2].itype); ;
     break;}
 case 241:
-#line 1188 "parse.y"
+#line 1193 "parse.y"
 { yyval.itype = begin_new_placement (); ;
     break;}
 case 242:
-#line 1192 "parse.y"
+#line 1197 "parse.y"
 { yyval.ttype = finish_new_placement (yyvsp[-1].ttype, yyvsp[-2].itype); ;
     break;}
 case 243:
-#line 1194 "parse.y"
+#line 1199 "parse.y"
 { cp_pedwarn ("old style placement syntax, use () instead");
                  yyval.ttype = finish_new_placement (yyvsp[-1].ttype, yyvsp[-2].itype); ;
     break;}
 case 244:
-#line 1200 "parse.y"
+#line 1205 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 245:
-#line 1202 "parse.y"
+#line 1207 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 246:
-#line 1204 "parse.y"
+#line 1209 "parse.y"
 {
                  cp_error ("`%T' is not a valid expression", yyvsp[-1].ftype.t);
                  yyval.ttype = error_mark_node;
                ;
     break;}
 case 247:
-#line 1212 "parse.y"
+#line 1217 "parse.y"
 {
                  if (pedantic)
                    pedwarn ("ANSI C++ forbids initialization of new expression with `='");
@@ -5427,23 +5430,23 @@ case 247:
                ;
     break;}
 case 248:
-#line 1226 "parse.y"
+#line 1231 "parse.y"
 { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0);
                  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 249:
-#line 1230 "parse.y"
+#line 1235 "parse.y"
 { yyvsp[-1].ftype.t = finish_parmlist (build_tree_list (NULL_TREE, yyvsp[-1].ftype.t), 0); 
                  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 251:
-#line 1238 "parse.y"
+#line 1243 "parse.y"
 { yyval.ttype = reparse_absdcl_as_casts (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 252:
-#line 1240 "parse.y"
+#line 1245 "parse.y"
 { 
                  tree init = build_nt (CONSTRUCTOR, NULL_TREE,
                                        nreverse (yyvsp[-2].ttype)); 
@@ -5456,113 +5459,113 @@ case 252:
                ;
     break;}
 case 254:
-#line 1256 "parse.y"
+#line 1261 "parse.y"
 { yyval.ttype = build_x_binary_op (MEMBER_REF, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 255:
-#line 1258 "parse.y"
+#line 1263 "parse.y"
 { yyval.ttype = build_m_component_ref (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 256:
-#line 1260 "parse.y"
+#line 1265 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 257:
-#line 1262 "parse.y"
+#line 1267 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 258:
-#line 1264 "parse.y"
+#line 1269 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 259:
-#line 1266 "parse.y"
+#line 1271 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 260:
-#line 1268 "parse.y"
+#line 1273 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 261:
-#line 1270 "parse.y"
+#line 1275 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 262:
-#line 1272 "parse.y"
+#line 1277 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 263:
-#line 1274 "parse.y"
+#line 1279 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 264:
-#line 1276 "parse.y"
+#line 1281 "parse.y"
 { yyval.ttype = build_x_binary_op (LT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 265:
-#line 1278 "parse.y"
+#line 1283 "parse.y"
 { yyval.ttype = build_x_binary_op (GT_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 266:
-#line 1280 "parse.y"
+#line 1285 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 267:
-#line 1282 "parse.y"
+#line 1287 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 268:
-#line 1284 "parse.y"
+#line 1289 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 269:
-#line 1286 "parse.y"
+#line 1291 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 270:
-#line 1288 "parse.y"
+#line 1293 "parse.y"
 { yyval.ttype = build_x_binary_op (yyvsp[-1].code, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 271:
-#line 1290 "parse.y"
+#line 1295 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ANDIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 272:
-#line 1292 "parse.y"
+#line 1297 "parse.y"
 { yyval.ttype = build_x_binary_op (TRUTH_ORIF_EXPR, yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 273:
-#line 1294 "parse.y"
+#line 1299 "parse.y"
 { yyval.ttype = build_x_conditional_expr (yyval.ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 274:
-#line 1296 "parse.y"
+#line 1301 "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 275:
-#line 1300 "parse.y"
+#line 1305 "parse.y"
 { yyval.ttype = build_x_modify_expr (yyval.ttype, yyvsp[-1].code, yyvsp[0].ttype); ;
     break;}
 case 276:
-#line 1302 "parse.y"
+#line 1307 "parse.y"
 { yyval.ttype = build_throw (NULL_TREE); ;
     break;}
 case 277:
-#line 1304 "parse.y"
+#line 1309 "parse.y"
 { yyval.ttype = build_throw (yyvsp[0].ttype); ;
     break;}
 case 278:
-#line 1322 "parse.y"
+#line 1327 "parse.y"
 { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 279:
-#line 1324 "parse.y"
+#line 1329 "parse.y"
 { yyval.ttype = build_parse_node (BIT_NOT_EXPR, yyvsp[0].ttype); ;
     break;}
 case 285:
-#line 1333 "parse.y"
+#line 1338 "parse.y"
 {
                  /* If lastiddecl is a TREE_LIST, it's a baselink, which
                     means that we're in an expression like S::f<int>, so
@@ -5575,27 +5578,27 @@ case 285:
                ;
     break;}
 case 286:
-#line 1346 "parse.y"
+#line 1351 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 287:
-#line 1348 "parse.y"
+#line 1353 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 288:
-#line 1353 "parse.y"
+#line 1358 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 289:
-#line 1355 "parse.y"
+#line 1360 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 290:
-#line 1358 "parse.y"
+#line 1363 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 295:
-#line 1370 "parse.y"
+#line 1375 "parse.y"
 {
                  /* Provide support for '(' attributes '*' declarator ')'
                     etc */
@@ -5603,31 +5606,31 @@ case 295:
                ;
     break;}
 case 297:
-#line 1380 "parse.y"
+#line 1385 "parse.y"
 { yyval.ttype = build_parse_node (INDIRECT_REF, yyvsp[0].ttype); ;
     break;}
 case 298:
-#line 1382 "parse.y"
+#line 1387 "parse.y"
 { yyval.ttype = build_parse_node (ADDR_EXPR, yyvsp[0].ttype); ;
     break;}
 case 299:
-#line 1384 "parse.y"
+#line 1389 "parse.y"
 { yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 300:
-#line 1389 "parse.y"
+#line 1394 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 301:
-#line 1391 "parse.y"
+#line 1396 "parse.y"
 { yyval.ttype = lookup_template_function (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 305:
-#line 1401 "parse.y"
+#line 1406 "parse.y"
 { yyval.ttype = finish_decl_parsing (yyvsp[-1].ttype); ;
     break;}
 case 306:
-#line 1406 "parse.y"
+#line 1411 "parse.y"
 {
                  if (TREE_CODE (yyvsp[0].ttype) == BIT_NOT_EXPR)
                    yyval.ttype = build_x_unary_op (BIT_NOT_EXPR, TREE_OPERAND (yyvsp[0].ttype, 0));
@@ -5636,7 +5639,7 @@ case 306:
                ;
     break;}
 case 309:
-#line 1415 "parse.y"
+#line 1420 "parse.y"
 {
                  if (processing_template_decl)
                    push_obstacks (&permanent_obstack, &permanent_obstack);
@@ -5652,20 +5655,20 @@ case 309:
                ;
     break;}
 case 310:
-#line 1429 "parse.y"
+#line 1434 "parse.y"
 { yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ;
     break;}
 case 311:
-#line 1431 "parse.y"
+#line 1436 "parse.y"
 { yyvsp[-1].ttype = reparse_decl_as_expr (NULL_TREE, yyvsp[-1].ttype);
                  yyval.ttype = finish_parenthesized_expr (yyvsp[-1].ttype); ;
     break;}
 case 312:
-#line 1434 "parse.y"
+#line 1439 "parse.y"
 { yyval.ttype = error_mark_node; ;
     break;}
 case 313:
-#line 1436 "parse.y"
+#line 1441 "parse.y"
 { tree scope = current_scope ();
                  if (!scope || TREE_CODE (scope) != FUNCTION_DECL)
                    {
@@ -5678,43 +5681,43 @@ case 313:
                ;
     break;}
 case 314:
-#line 1447 "parse.y"
+#line 1452 "parse.y"
 { yyval.ttype = finish_stmt_expr (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
     break;}
 case 315:
-#line 1452 "parse.y"
+#line 1457 "parse.y"
 { yyval.ttype = finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 1); ;
     break;}
 case 316:
-#line 1454 "parse.y"
+#line 1459 "parse.y"
 { yyval.ttype = finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 1); ;
     break;}
 case 317:
-#line 1456 "parse.y"
+#line 1461 "parse.y"
 { yyval.ttype = finish_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype, 0); ;
     break;}
 case 318:
-#line 1458 "parse.y"
+#line 1463 "parse.y"
 { yyval.ttype = finish_call_expr (yyvsp[-1].ttype, NULL_TREE, 0); ;
     break;}
 case 319:
-#line 1460 "parse.y"
+#line 1465 "parse.y"
 { yyval.ttype = grok_array_decl (yyval.ttype, yyvsp[-1].ttype); ;
     break;}
 case 320:
-#line 1462 "parse.y"
+#line 1467 "parse.y"
 { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTINCREMENT_EXPR); ;
     break;}
 case 321:
-#line 1464 "parse.y"
+#line 1469 "parse.y"
 { yyval.ttype = finish_increment_expr (yyvsp[-1].ttype, POSTDECREMENT_EXPR); ;
     break;}
 case 322:
-#line 1467 "parse.y"
+#line 1472 "parse.y"
 { yyval.ttype = finish_this_expr (); ;
     break;}
 case 323:
-#line 1469 "parse.y"
+#line 1474 "parse.y"
 {
                  /* This is a C cast in C++'s `functional' notation
                     using the "implicit int" extension so that:
@@ -5733,49 +5736,49 @@ case 323:
                ;
     break;}
 case 325:
-#line 1487 "parse.y"
+#line 1492 "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 326:
-#line 1491 "parse.y"
+#line 1496 "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 327:
-#line 1495 "parse.y"
+#line 1500 "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 328:
-#line 1499 "parse.y"
+#line 1504 "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 329:
-#line 1503 "parse.y"
+#line 1508 "parse.y"
 { yyval.ttype = build_x_typeid (yyvsp[-1].ttype); ;
     break;}
 case 330:
-#line 1505 "parse.y"
+#line 1510 "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 331:
-#line 1509 "parse.y"
+#line 1514 "parse.y"
 { yyval.ttype = do_scoped_id (yyvsp[0].ttype, 1); ;
     break;}
 case 332:
-#line 1511 "parse.y"
+#line 1516 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 333:
-#line 1513 "parse.y"
+#line 1518 "parse.y"
 {
                  got_scope = NULL_TREE;
                  if (TREE_CODE (yyvsp[0].ttype) == IDENTIFIER_NODE)
@@ -5785,102 +5788,102 @@ case 333:
                ;
     break;}
 case 334:
-#line 1521 "parse.y"
+#line 1526 "parse.y"
 { yyval.ttype = build_offset_ref (OP0 (yyval.ttype), OP1 (yyval.ttype)); ;
     break;}
 case 335:
-#line 1523 "parse.y"
+#line 1528 "parse.y"
 { yyval.ttype = finish_qualified_call_expr (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 336:
-#line 1525 "parse.y"
+#line 1530 "parse.y"
 { yyval.ttype = finish_qualified_call_expr (yyvsp[-1].ttype, NULL_TREE); ;
     break;}
 case 337:
-#line 1527 "parse.y"
+#line 1532 "parse.y"
 { 
                  yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); 
                ;
     break;}
 case 338:
-#line 1531 "parse.y"
+#line 1536 "parse.y"
 { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
 case 339:
-#line 1533 "parse.y"
+#line 1538 "parse.y"
 { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 340:
-#line 1535 "parse.y"
+#line 1540 "parse.y"
 { yyval.ttype = build_x_component_ref (yyval.ttype, yyvsp[0].ttype, NULL_TREE, 1); ;
     break;}
 case 341:
-#line 1537 "parse.y"
+#line 1542 "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 342:
-#line 1542 "parse.y"
+#line 1547 "parse.y"
 { yyval.ttype = finish_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
 case 343:
-#line 1544 "parse.y"
+#line 1549 "parse.y"
 { yyval.ttype = finish_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 344:
-#line 1546 "parse.y"
+#line 1551 "parse.y"
 { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-3].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
 case 345:
-#line 1548 "parse.y"
+#line 1553 "parse.y"
 { yyval.ttype = finish_qualified_object_call_expr (yyvsp[-1].ttype, yyvsp[-2].ttype, NULL_TREE); ;
     break;}
 case 346:
-#line 1551 "parse.y"
+#line 1556 "parse.y"
 { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-3].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 347:
-#line 1553 "parse.y"
+#line 1558 "parse.y"
 { yyval.ttype = finish_pseudo_destructor_call_expr (yyvsp[-5].ttype, yyvsp[-4].ttype, yyvsp[-1].ttype); ;
     break;}
 case 348:
-#line 1555 "parse.y"
+#line 1560 "parse.y"
 {
                  yyval.ttype = error_mark_node;
                ;
     break;}
 case 349:
-#line 1600 "parse.y"
+#line 1605 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 350:
-#line 1602 "parse.y"
+#line 1607 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
 case 351:
-#line 1607 "parse.y"
+#line 1612 "parse.y"
 { yyval.itype = 0; ;
     break;}
 case 352:
-#line 1609 "parse.y"
+#line 1614 "parse.y"
 { got_scope = NULL_TREE; yyval.itype = 1; ;
     break;}
 case 353:
-#line 1614 "parse.y"
+#line 1619 "parse.y"
 { yyval.ttype = boolean_true_node; ;
     break;}
 case 354:
-#line 1616 "parse.y"
+#line 1621 "parse.y"
 { yyval.ttype = boolean_false_node; ;
     break;}
 case 356:
-#line 1623 "parse.y"
+#line 1628 "parse.y"
 { yyval.ttype = chainon (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 357:
-#line 1628 "parse.y"
+#line 1633 "parse.y"
 {
                  if (! current_function_parms_stored)
                    store_parm_decls ();
@@ -5888,18 +5891,18 @@ case 357:
                ;
     break;}
 case 358:
-#line 1637 "parse.y"
+#line 1642 "parse.y"
 { got_object = TREE_TYPE (yyval.ttype); ;
     break;}
 case 359:
-#line 1639 "parse.y"
+#line 1644 "parse.y"
 {
                  yyval.ttype = build_x_arrow (yyval.ttype); 
                  got_object = TREE_TYPE (yyval.ttype);
                ;
     break;}
 case 360:
-#line 1647 "parse.y"
+#line 1652 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  if (yyvsp[-2].ftype.t && IS_AGGR_TYPE_CODE (TREE_CODE (yyvsp[-2].ftype.t)))
@@ -5907,139 +5910,139 @@ case 360:
                ;
     break;}
 case 361:
-#line 1653 "parse.y"
+#line 1658 "parse.y"
 {
                  resume_momentary (yyvsp[-1].itype);
                  note_list_got_semicolon (yyvsp[-2].ftype.t);
                ;
     break;}
 case 362:
-#line 1658 "parse.y"
+#line 1663 "parse.y"
 { resume_momentary (yyvsp[-1].itype); ;
     break;}
 case 363:
-#line 1660 "parse.y"
+#line 1665 "parse.y"
 {
                  shadow_tag (yyvsp[-1].ftype.t);
                  note_list_got_semicolon (yyvsp[-1].ftype.t);
                ;
     break;}
 case 364:
-#line 1665 "parse.y"
+#line 1670 "parse.y"
 { warning ("empty declaration"); ;
     break;}
 case 365:
-#line 1667 "parse.y"
+#line 1672 "parse.y"
 { pedantic = yyvsp[-1].itype; ;
     break;}
 case 368:
-#line 1681 "parse.y"
+#line 1686 "parse.y"
 { yyval.ttype = make_call_declarator (NULL_TREE, empty_parms (),
                                             NULL_TREE, NULL_TREE); ;
     break;}
 case 369:
-#line 1684 "parse.y"
+#line 1689 "parse.y"
 { yyval.ttype = make_call_declarator (yyval.ttype, empty_parms (), NULL_TREE,
                                             NULL_TREE); ;
     break;}
 case 370:
-#line 1691 "parse.y"
+#line 1696 "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 371:
-#line 1694 "parse.y"
+#line 1699 "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 372:
-#line 1697 "parse.y"
+#line 1702 "parse.y"
 { yyval.ftype.t = build_decl_list (build_decl_list (NULL_TREE, yyvsp[-1].ftype.t),
                                          yyvsp[0].ttype); 
                  yyval.ftype.new_type_flag = yyvsp[-1].ftype.new_type_flag; ;
     break;}
 case 373:
-#line 1701 "parse.y"
+#line 1706 "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 374:
-#line 1704 "parse.y"
+#line 1709 "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 377:
-#line 1720 "parse.y"
+#line 1725 "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 378:
-#line 1723 "parse.y"
+#line 1728 "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 379:
-#line 1726 "parse.y"
+#line 1731 "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 380:
-#line 1729 "parse.y"
+#line 1734 "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 381:
-#line 1732 "parse.y"
+#line 1737 "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 382:
-#line 1735 "parse.y"
+#line 1740 "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 383:
-#line 1742 "parse.y"
+#line 1747 "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 384:
-#line 1747 "parse.y"
+#line 1752 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyval.ttype); ;
     break;}
 case 385:
-#line 1749 "parse.y"
+#line 1754 "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 386:
-#line 1754 "parse.y"
+#line 1759 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 387:
-#line 1756 "parse.y"
+#line 1761 "parse.y"
 { yyval.ttype = decl_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 388:
-#line 1775 "parse.y"
+#line 1780 "parse.y"
 { yyval.ttype = yyvsp[0].ftype.t; TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 389:
-#line 1777 "parse.y"
+#line 1782 "parse.y"
 { yyval.ttype = hash_tree_cons (NULL_TREE, yyval.ttype, NULL_TREE); ;
     break;}
 case 390:
-#line 1779 "parse.y"
+#line 1784 "parse.y"
 { yyval.ttype = hash_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype);
                  TREE_STATIC (yyval.ttype) = 1; ;
     break;}
 case 391:
-#line 1782 "parse.y"
+#line 1787 "parse.y"
 { if (extra_warnings && TREE_STATIC (yyval.ttype))
                    warning ("`%s' is not at beginning of declaration",
                             IDENTIFIER_POINTER (yyvsp[0].ttype));
@@ -6047,61 +6050,61 @@ case 391:
                  TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
     break;}
 case 392:
-#line 1788 "parse.y"
+#line 1793 "parse.y"
 { yyval.ttype = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
     break;}
 case 393:
-#line 1790 "parse.y"
+#line 1795 "parse.y"
 { yyval.ttype = hash_tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
     break;}
 case 394:
-#line 1801 "parse.y"
+#line 1806 "parse.y"
 { yyval.ftype.t = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); 
                  yyval.ftype.new_type_flag = yyvsp[0].ftype.new_type_flag; ;
     break;}
 case 395:
-#line 1804 "parse.y"
+#line 1809 "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 396:
-#line 1807 "parse.y"
+#line 1812 "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 397:
-#line 1810 "parse.y"
+#line 1815 "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 398:
-#line 1816 "parse.y"
+#line 1821 "parse.y"
 { yyval.ttype = build_decl_list (NULL_TREE, yyvsp[0].ftype.t); ;
     break;}
 case 399:
-#line 1818 "parse.y"
+#line 1823 "parse.y"
 { yyval.ttype = decl_tree_cons (NULL_TREE, yyvsp[0].ftype.t, yyvsp[-1].ttype); ;
     break;}
 case 401:
-#line 1828 "parse.y"
+#line 1833 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 402:
-#line 1830 "parse.y"
+#line 1835 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 403:
-#line 1832 "parse.y"
+#line 1837 "parse.y"
 { yyval.ftype.t = finish_typeof (yyvsp[-1].ttype);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 404:
-#line 1835 "parse.y"
+#line 1840 "parse.y"
 { yyval.ftype.t = groktypename (yyvsp[-1].ftype.t);
                  yyval.ftype.new_type_flag = 0; ;
     break;}
 case 405:
-#line 1838 "parse.y"
+#line 1843 "parse.y"
 { tree type = TREE_TYPE (yyvsp[-1].ttype);
 
                   yyval.ftype.new_type_flag = 0;
@@ -6118,7 +6121,7 @@ case 405:
                ;
     break;}
 case 406:
-#line 1853 "parse.y"
+#line 1858 "parse.y"
 { tree type = groktypename (yyvsp[-1].ftype.t);
 
                   yyval.ftype.new_type_flag = 0;
@@ -6135,219 +6138,214 @@ case 406:
                ;
     break;}
 case 407:
-#line 1873 "parse.y"
+#line 1878 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 408:
-#line 1875 "parse.y"
+#line 1880 "parse.y"
 { yyval.ftype.t = yyvsp[0].ttype; yyval.ftype.new_type_flag = 0; ;
     break;}
 case 411:
-#line 1882 "parse.y"
+#line 1887 "parse.y"
 { check_multiple_declarators (); ;
     break;}
 case 413:
-#line 1888 "parse.y"
+#line 1893 "parse.y"
 { check_multiple_declarators (); ;
     break;}
 case 415:
-#line 1894 "parse.y"
+#line 1899 "parse.y"
 { check_multiple_declarators (); ;
     break;}
 case 416:
-#line 1899 "parse.y"
+#line 1904 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 417:
-#line 1901 "parse.y"
+#line 1906 "parse.y"
 { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype); yyval.ttype = yyvsp[-1].ttype; ;
     break;}
 case 418:
-#line 1906 "parse.y"
+#line 1911 "parse.y"
 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
                                          yyvsp[-1].ttype, prefix_attributes); ;
     break;}
 case 419:
-#line 1910 "parse.y"
+#line 1915 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1, LOOKUP_ONLYCONVERTING); ;
     break;}
 case 420:
-#line 1912 "parse.y"
+#line 1917 "parse.y"
 { yyval.ttype = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
                                          yyvsp[0].ttype, prefix_attributes);
                  cp_finish_decl (yyval.ttype, NULL_TREE, yyvsp[-1].ttype, 1, 0); ;
     break;}
 case 421:
-#line 1925 "parse.y"
+#line 1930 "parse.y"
 { yyvsp[0].itype = parse_decl (yyvsp[-3].ttype, yyvsp[-4].ttype, 
                                           yyvsp[-1].ttype, 1, &yyval.ttype); ;
     break;}
 case 422:
-#line 1930 "parse.y"
+#line 1935 "parse.y"
 { cp_finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype, 1,
                                  LOOKUP_ONLYCONVERTING);
                  yyval.itype = yyvsp[-2].itype; ;
     break;}
 case 423:
-#line 1934 "parse.y"
+#line 1939 "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 424:
-#line 1941 "parse.y"
+#line 1946 "parse.y"
 { yyval.itype = yyvsp[0].itype; ;
     break;}
 case 425:
-#line 1945 "parse.y"
+#line 1950 "parse.y"
 { yyval.itype = yyvsp[0].itype; ;
     break;}
 case 426:
-#line 1950 "parse.y"
+#line 1955 "parse.y"
 { /* Set things up as initdcl0_innards expects.  */
              yyvsp[0].ttype = yyvsp[-1].ttype; 
               yyvsp[-1].ttype = NULL_TREE; ;
     break;}
 case 427:
-#line 1954 "parse.y"
+#line 1959 "parse.y"
 {;
     break;}
 case 428:
-#line 1956 "parse.y"
+#line 1961 "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 429:
-#line 1965 "parse.y"
+#line 1970 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 430:
-#line 1967 "parse.y"
+#line 1972 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 431:
-#line 1972 "parse.y"
+#line 1977 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 432:
-#line 1974 "parse.y"
+#line 1979 "parse.y"
 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
     break;}
 case 433:
-#line 1979 "parse.y"
+#line 1984 "parse.y"
 { yyval.ttype = yyvsp[-2].ttype; ;
     break;}
 case 434:
-#line 1984 "parse.y"
+#line 1989 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 435:
-#line 1986 "parse.y"
+#line 1991 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 436:
-#line 1991 "parse.y"
+#line 1996 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 437:
-#line 1993 "parse.y"
+#line 1998 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
     break;}
 case 438:
-#line 1995 "parse.y"
+#line 2000 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
     break;}
 case 439:
-#line 1997 "parse.y"
+#line 2002 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
     break;}
 case 440:
-#line 1999 "parse.y"
+#line 2004 "parse.y"
 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
     break;}
 case 445:
-#line 2015 "parse.y"
+#line 2020 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
     break;}
 case 446:
-#line 2017 "parse.y"
+#line 2022 "parse.y"
 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
     break;}
 case 447:
-#line 2022 "parse.y"
+#line 2027 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 448:
-#line 2024 "parse.y"
+#line 2029 "parse.y"
 { yyval.ttype = yyvsp[0].ttype; ;
     break;}
 case 450:
-#line 2032 "parse.y"
+#line 2037 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, NULL_TREE);
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 451:
-#line 2035 "parse.y"
+#line 2040 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-1].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 452:
-#line 2038 "parse.y"
+#line 2043 "parse.y"
 { yyval.ttype = build_nt (CONSTRUCTOR, NULL_TREE, nreverse (yyvsp[-2].ttype));
                  TREE_HAS_CONSTRUCTOR (yyval.ttype) = 1; ;
     break;}
 case 453:
-#line 2041 "parse.y"
+#line 2046 "parse.y"
 { yyval.ttype = NULL_TREE; ;
     break;}
 case 454:
-#line 2048 "parse.y"
+#line 2053 "parse.y"
 { yyval.ttype = build_tree_list (NULL_TREE, yyval.ttype); ;
     break;}
 case 455:
-#line 2050 "parse.y"
+#line 2055 "parse.y"
 { yyval.ttype = expr_tree_cons (NULL_TREE, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 456:
-#line 2053 "parse.y"
+#line 2058 "parse.y"
 { yyval.ttype = build_expr_list (yyvsp[-2].ttype, yyvsp[0].ttype); ;
     break;}
 case 457:
-#line 2055 "parse.y"
+#line 2060 "parse.y"
 { yyval.ttype = build_expr_list (yyval.ttype, yyvsp[0].ttype); ;
     break;}
 case 458:
-#line 2057 "parse.y"
+#line 2062 "parse.y"
 { yyval.ttype = expr_tree_cons (yyvsp[-2].ttype, yyvsp[0].ttype, yyval.ttype); ;
     break;}
 case 459:
-#line 2062 "parse.y"
-{ start_function (NULL_TREE, TREE_VALUE (yyvsp[0].ttype),
-                                 NULL_TREE, 2);
+#line 2067 "parse.y"
+{ start_function (NULL_TREE, yyvsp[0].pi->fndecl, NULL_TREE, 2);
                  reinit_parse_for_function (); ;
     break;}
 case 460:
-#line 2068 "parse.y"
+#line 2072 "parse.y"
 {
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)yyvsp[-1].itype | 2, nested);
-                 process_next_inline (yyvsp[-3].ttype);
+                 finish_function (lineno, (int)yyvsp[-1].itype | 2);
+                 process_next_inline (yyvsp[-3].pi);
                ;
     break;}
 case 461:
-#line 2075 "parse.y"
+#line 2077 "parse.y"
 { 
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)yyvsp[0].itype | 2, nested); 
-                  process_next_inline (yyvsp[-2].ttype);
+                 finish_function (lineno, (int)yyvsp[0].itype | 2); 
+                  process_next_inline (yyvsp[-2].pi);
                ;
     break;}
 case 462:
 #line 2082 "parse.y"
-{ process_next_inline (yyvsp[-2].ttype); ;
+{ process_next_inline (yyvsp[-2].pi); ;
     break;}
 case 465:
 #line 2094 "parse.y"
index 56ec7b4099640787bde948c3516a69e0d63f63aa..67d0f575df165cefea84fe1d3bce8461d568a6be 100644 (file)
@@ -1,4 +1,11 @@
-typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; } YYSTYPE;
+typedef union {
+  long itype; 
+  tree ttype; 
+  char *strtype; 
+  enum tree_code code; 
+  flagged_type_tree ftype; 
+  struct pending_inline *pi;
+} YYSTYPE;
 #define        IDENTIFIER      257
 #define        TYPENAME        258
 #define        SELFNAME        259
@@ -73,12 +80,12 @@ typedef union {long itype; tree ttype; char *strtype; enum tree_code code; flagg
 #define        POINTSAT        328
 #define        TRY     329
 #define        CATCH   330
-#define        PRE_PARSED_FUNCTION_DECL        331
-#define        EXTERN_LANG_STRING      332
-#define        ALL     333
-#define        PRE_PARSED_CLASS_DECL   334
-#define        DEFARG  335
-#define        DEFARG_MARKER   336
+#define        EXTERN_LANG_STRING      331
+#define        ALL     332
+#define        PRE_PARSED_CLASS_DECL   333
+#define        DEFARG  334
+#define        DEFARG_MARKER   335
+#define        PRE_PARSED_FUNCTION_DECL        336
 #define        TYPENAME_DEFN   337
 #define        IDENTIFIER_DEFN 338
 #define        PTYPENAME_DEFN  339
index bed84abb00de36a441e5b6a272e32236892bd1a1..cf69bc1dd881d361eaf5e61f7b2606c078f695a8 100644 (file)
@@ -90,7 +90,14 @@ empty_parms ()
 
 %start program
 
-%union {long itype; tree ttype; char *strtype; enum tree_code code; flagged_type_tree ftype; }
+%union {
+  long itype; 
+  tree ttype; 
+  char *strtype; 
+  enum tree_code code; 
+  flagged_type_tree ftype; 
+  struct pending_inline *pi;
+}
 
 /* All identifiers that are not reserved words
    and are not declared typedefs in the current block */
@@ -236,10 +243,12 @@ empty_parms ()
 
 /* C++ extensions */
 %token <ttype> PTYPENAME
-%token <ttype> PRE_PARSED_FUNCTION_DECL EXTERN_LANG_STRING ALL
+%token <ttype> EXTERN_LANG_STRING ALL
 %token <ttype> PRE_PARSED_CLASS_DECL DEFARG DEFARG_MARKER
+%token <pi> PRE_PARSED_FUNCTION_DECL 
 %type <ttype> component_constructor_declarator
-%type <ttype> fn.def2 return_id fn.defpen constructor_declarator
+%type <ttype> fn.def2 return_id constructor_declarator
+%type <pi> fn.defpen 
 %type <itype> ctor_initializer_opt function_try_block
 %type <ttype> named_class_head_sans_basetype
 %type <ftype> class_head named_class_head 
@@ -311,7 +320,7 @@ extern void yyprint                 PROTO((FILE *, int, YYSTYPE));
 extern tree combine_strings            PROTO((tree));
 
 static int
-parse_decl(declarator, specs_attrs, attributes, initialized, decl)
+parse_decl (declarator, specs_attrs, attributes, initialized, decl)
   tree declarator;
   tree specs_attrs;
   tree attributes;
@@ -651,13 +660,9 @@ eat_saved_input:
 
 fndef:
          fn.def1 maybe_return_init ctor_initializer_opt compstmt_or_error
-               { finish_function (lineno, (int)$3, 0); }
+               { finish_function (lineno, (int)$3); }
        | fn.def1 maybe_return_init function_try_block
-               { 
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)$3, nested); 
-               }
+               { finish_function (lineno, (int)$3); }
        | fn.def1 maybe_return_init error
                { }
        ;
@@ -2059,23 +2064,18 @@ initlist:
 
 fn.defpen:
        PRE_PARSED_FUNCTION_DECL
-               { start_function (NULL_TREE, TREE_VALUE ($1),
-                                 NULL_TREE, 2);
+               { start_function (NULL_TREE, $1->fndecl, NULL_TREE, 2);
                  reinit_parse_for_function (); }
 
 pending_inline:
          fn.defpen maybe_return_init ctor_initializer_opt compstmt_or_error
                {
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)$3 | 2, nested);
+                 finish_function (lineno, (int)$3 | 2);
                  process_next_inline ($1);
                }
        | fn.defpen maybe_return_init function_try_block
                { 
-                 int nested = (hack_decl_function_context
-                               (current_function_decl) != NULL_TREE);
-                 finish_function (lineno, (int)$3 | 2, nested); 
+                 finish_function (lineno, (int)$3 | 2); 
                   process_next_inline ($1);
                }
        | fn.defpen maybe_return_init error
index a1928efbb6f81c6ea1e59c497346f2060285e2fa..d3878ef7dc21c457166faa9b68854cc9e3f15574 100644 (file)
@@ -27,6 +27,7 @@ Boston, MA 02111-1307, USA.  */
 #include "flags.h"
 #include "rtl.h"
 #include "toplev.h"
+#include "ggc.h"
 
 static tree bot_manip PROTO((tree));
 static tree perm_manip PROTO((tree));
@@ -39,6 +40,7 @@ static int avoid_overlap PROTO((tree, tree));
 static cp_lvalue_kind lvalue_p_1 PROTO((tree, int));
 static tree no_linkage_helper PROTO((tree));
 static tree build_srcloc PROTO((char *, int));
+static void mark_list_hash PROTO ((void *));
 
 #define CEIL(x,y) (((x) + (y) - 1) / (y))
 
@@ -1299,25 +1301,6 @@ debug_binfo (elem)
     }
 }
 
-/* Initialize an CPLUS_BINDING node that does not live on an obstack. */
-
-tree
-binding_init (node)
-     struct tree_binding* node;
-{
-  static struct tree_binding* source;
-  if (!source)
-    {
-      extern struct obstack permanent_obstack;
-      push_obstacks (&permanent_obstack, &permanent_obstack);
-      source = (struct tree_binding*)make_node (CPLUS_BINDING);
-      pop_obstacks ();
-    }
-  *node = *source;
-  TREE_PERMANENT ((tree)node) = 0;
-  return (tree)node;
-}
-
 int
 count_functions (t)
      tree t;
@@ -2870,11 +2853,28 @@ make_ptrmem_cst (type, member)
   return ptrmem_cst;
 }
 
-/* Initialize unsave for C++. */
+/* Mark ARG (which is really a list_hash_table **) for GC.  */
+
+static void
+mark_list_hash (arg)
+     void *arg;
+{
+  struct list_hash *lh;
+
+  for (lh = * ((struct list_hash **) arg); lh; lh = lh->next)
+    ggc_mark_tree (lh->list);
+}
+
+/* Initialize tree.c.  */
+
 void
-init_cplus_unsave ()
+init_tree ()
 {
   lang_unsave_expr_now = cplus_unsave_expr_now;
+  ggc_add_root (list_hash_table, 
+               sizeof (list_hash_table) / sizeof (struct list_hash *),
+               sizeof (struct list_hash *),
+               mark_list_hash);
 }
 
 /* The C++ version of unsave_expr_now.