fixed xml_ns.as
[swftools.git] / lib / as3 / parser.tab.c
index 59fd16d..60e6fa7 100644 (file)
@@ -1,5 +1,5 @@
 
-/* A Bison parser, made by GNU Bison 2.4.  */
+/* A Bison parser, made by GNU Bison 2.4.1.  */
 
 /* Skeleton implementation for Bison's Yacc-like parsers in C
    
@@ -46,7 +46,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4"
+#define YYBISON_VERSION "2.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "./skeleton.m4"
@@ -292,7 +292,7 @@ tokenunion
 /* Copy the second part of user declarations.  */
 
 /* Line 273 of skeleton.m4  */
-#line 276 "parser.y"
+#line 275 "parser.y"
 
 
 static int a3_error(char*s)
@@ -389,6 +389,13 @@ struct _methodstate {
     methodstate_list_t*innerfunctions;
 };
 
+void methodstate_destroy(methodstate_t*m) 
+{
+    dict_destroy(m->unresolved_variables);
+    m->unresolved_variables = 0;
+    list_free(m->innerfunctions);m->innerfunctions=0;
+}
+
 typedef struct _state {
     struct _state*old;
     int level;
@@ -549,8 +556,7 @@ static void old_state()
     state = state->old;
 
     if(as3_pass>1 && leaving->method && leaving->method != state->method && !leaving->method->inner) {
-        free(leaving->method);
-        leaving->method=0;
+        methodstate_destroy(leaving->method);leaving->method=0;
     }
     if(as3_pass>1 && leaving->cls && leaving->cls != state->cls) {
         free(leaving->cls);
@@ -650,7 +656,7 @@ typedef struct _variable {
     methodstate_t*is_inner_method;
 } variable_t;
 
-static variable_t* find_variable(state_t*s, char*name)
+static variable_t* find_variable(state_t*s, const char*name)
 {
     if(s->method->no_variable_scoping) {
         return dict_lookup(s->allvars, name);
@@ -666,10 +672,10 @@ static variable_t* find_variable(state_t*s, char*name)
         return 0;
     }
 }
-static variable_t* find_slot(state_t*s, const char*name)
+static variable_t* find_slot(methodstate_t*m, const char*name)
 {
-    if(s->method && s->method->slots)
-        return dict_lookup(s->method->slots, name);
+    if(m && m->slots)
+        return dict_lookup(m->slots, name);
     return 0;
 }
 
@@ -715,10 +721,10 @@ static int alloc_local()
     return state->method->variable_count++;
 }
 
-static variable_t* new_variable2(const char*name, classinfo_t*type, char init, char maybeslot)
+static variable_t* new_variable2(methodstate_t*method, const char*name, classinfo_t*type, char init, char maybeslot)
 {
     if(maybeslot) {
-        variable_t*v = find_slot(state, name);
+        variable_t*v = find_slot(method, name);
         if(v) {
             alloc_local(); 
             return v;
@@ -731,13 +737,15 @@ static variable_t* new_variable2(const char*name, classinfo_t*type, char init, c
     v->init = v->kill = init;
  
     if(name) {
-        if(!state->method->no_variable_scoping) 
+        if(!method->no_variable_scoping) 
         {
-            if(dict_contains(state->vars, name))
+            if(dict_contains(state->vars, name)) {
+                *(int*)0=0;
                 syntaxerror("variable %s already defined", name);
+            }
             dict_put(state->vars, name, v);
         }
-        if(state->method->no_variable_scoping && 
+        if(method->no_variable_scoping && 
            as3_pass==2 && 
            dict_contains(state->allvars, name)) 
         {
@@ -751,9 +759,9 @@ static variable_t* new_variable2(const char*name, classinfo_t*type, char init, c
 
     return v;
 }
-static int new_variable(const char*name, classinfo_t*type, char init, char maybeslot)
+static int new_variable(methodstate_t*method, const char*name, classinfo_t*type, char init, char maybeslot)
 {
-    return new_variable2(name, type, init, maybeslot)->index;
+    return new_variable2(method, name, type, init, maybeslot)->index;
 }
 
 #define TEMPVARNAME "__as3_temp__"
@@ -764,7 +772,7 @@ int gettempvar()
     if(v) 
         i = v->index;
     else
-        i = new_variable(TEMPVARNAME, 0, 0, 0);
+        i = new_variable(state->method, TEMPVARNAME, 0, 0, 0);
     parserassert(i);
     return i;
 }
@@ -818,7 +826,7 @@ static void unknown_variable(char*name)
 
 static code_t* add_scope_code(code_t*c, methodstate_t*m, char init)
 {
-    if(m->uses_slots || (m->late_binding && !m->inner)) { //???? especially inner functions need the pushscope
+    if(m->uses_slots || m->innerfunctions || (m->late_binding && !m->inner)) {
         c = abc_getlocal_0(c);
         c = abc_pushscope(c);
     }
@@ -931,7 +939,7 @@ static namespace_t modifiers2access(modifiers_t*mod)
             syntaxerror("invalid combination of access levels and namespaces");
         ns.access = ACCESS_NAMESPACE;
         state_t*s = state;
-        const char*url = (const char*)trie_lookup(active_namespaces, mod->ns);
+        const char*url = (const char*)trie_lookup(active_namespaces, (unsigned char*)mod->ns);
         if(!url) {
             /* shouldn't happen- the tokenizer only reports something as a namespace
                if it was already registered */
@@ -969,7 +977,7 @@ static void innerfunctions2vars(methodstate_t*m)
     while(l) {
         methodstate_t*m = l->methodstate;
         
-        variable_t* v = new_variable2(m->info->name, TYPE_FUNCTION(m->info), 0, 0);
+        variable_t* v = new_variable2(state->method, m->info->name, TYPE_FUNCTION(m->info), 0, 0);
         m->var_index = v->index;
         if(m->is_a_slot)
             m->slot_index = m->is_a_slot;
@@ -983,25 +991,30 @@ static void function_initvars(methodstate_t*m, char has_params, params_t*params,
     if(var0) {
         int index = -1;
         if(m->inner)
-            index = new_variable("this", 0, 0, 0);
+            index = new_variable(m, "this", 0, 0, 0);
         else if(!m->is_global)
-            index = new_variable((flags&FLAG_STATIC)?"class":"this", state->cls?state->cls->info:0, 0, 0);
+            index = new_variable(m, (flags&FLAG_STATIC)?"class":"this", state->cls?state->cls->info:0, 0, 0);
         else
-            index = new_variable("globalscope", 0, 0, 0);
+            index = new_variable(m, "globalscope", 0, 0, 0);
+        if(index) {
+            DICT_ITERATE_ITEMS(state->vars, char*, name, variable_t*, v) {
+                printf("%s %d\n", name, v->index);
+            }
+        }
         parserassert(!index);
     }
 
     if(has_params) {
         param_list_t*p=0;
         for(p=params->list;p;p=p->next) {
-            variable_t*v = new_variable2(p->param->name, p->param->type, 0, 1);
+            variable_t*v = new_variable2(m, p->param->name, p->param->type, 0, 1);
             v->is_parameter = 1;
         }
         if(as3_pass==2 && m->need_arguments) {
             /* arguments can never be used by an innerfunction (the inner functions
                have their own arguments var), so it's ok to  not initialize this until
                pass 2. (We don't know whether we need it before, anyway) */
-            variable_t*v = new_variable2("arguments", TYPE_ARRAY, 0, 0);
+            variable_t*v = new_variable2(m, "arguments", TYPE_ARRAY, 0, 0);
             m->need_arguments = v->index;
         }
     }
@@ -1071,7 +1084,6 @@ static void startclass(modifiers_t* mod, char*classname, classinfo_t*extends, cl
         state->cls->init = rfx_calloc(sizeof(methodstate_t));
         state->cls->static_init = rfx_calloc(sizeof(methodstate_t));
         state->cls->static_init->is_static=FLAG_STATIC;
-        state->cls->static_init->variable_count=1;
         /* notice: we make no effort to initialize the top variable (local0) here,
            even though it has special meaning. We just rely on the fact
            that pass 1 won't do anything with variables */
@@ -1101,10 +1113,12 @@ static void startclass(modifiers_t* mod, char*classname, classinfo_t*extends, cl
     if(as3_pass == 2) {
         state->cls = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
     
-        state->method = state->cls->init;
         parserassert(state->cls && state->cls->info);
        
+        state->method = state->cls->static_init;
+
         function_initvars(state->cls->init, 0, 0, 0, 1);
+        state->cls->static_init->variable_count=1;
         function_initvars(state->cls->static_init, 0, 0, 0, 0);
 
         if(extends && (extends->flags & FLAG_FINAL))
@@ -1344,9 +1358,13 @@ static void innerfunction(char*name, params_t*params, classinfo_t*return_type)
     //parserassert(state->method && state->method->info);
 
     methodstate_t*parent_method = state->method;
+    variable_t*v = 0;
 
     if(as3_pass==1) {
         return_type = 0; // not valid in pass 1
+        if(name) {
+            v = new_variable2(parent_method, name, 0, 0, 0);
+        }
     }
 
     new_state();
@@ -1359,6 +1377,9 @@ static void innerfunction(char*name, params_t*params, classinfo_t*return_type)
         state->method->is_static = parent_method->is_static;
         state->method->variable_count = 0;
         state->method->abc = rfx_calloc(sizeof(abc_method_t));
+        if(v) {
+            v->is_inner_method = state->method;
+        }
 
         NEW(methodinfo_t,minfo);
         minfo->kind = INFOTYPE_METHOD;
@@ -1433,51 +1454,57 @@ static void startfunction(modifiers_t*mod, enum yytokentype getset, char*name,
     } 
 }
 
+static void insert_unresolved(methodstate_t*m, dict_t*xvars, dict_t*allvars)
+{
+    parserassert(m->inner);
+    if(m->unresolved_variables) {
+        dict_t*d = m->unresolved_variables;
+        int t;
+        DICT_ITERATE_KEY(d, char*, id) {
+            /* check parent method's variables */
+            variable_t*v;
+            if(dict_contains(allvars, id)) {
+                m->uses_parent_function = 1;
+                state->method->uses_slots = 1;
+                dict_put(xvars, id, 0);
+            }
+        }
+    }
+    methodstate_list_t*ml = m->innerfunctions;
+    while(ml) {
+        insert_unresolved(ml->methodstate, xvars, allvars);
+        ml = ml->next;
+    }
+}
+
 static abc_method_t* endfunction(modifiers_t*mod, enum yytokentype getset, char*name,
                           params_t*params, classinfo_t*return_type, code_t*body)
 {
     if(as3_pass==1) {
-        innerfunctions2vars(state->method);
-
-        methodstate_list_t*ml = state->method->innerfunctions;
-        
         dict_t*xvars = dict_new();
         
         if(state->method->unresolved_variables) {
             DICT_ITERATE_KEY(state->method->unresolved_variables, char*, vname) {
-                if(dict_contains(state->allvars, vname)) {
-                    state->method->no_variable_scoping = 1;
-                    as3_warning("function %s uses forward or outer block variable references (%s): switching into compatiblity mode", name, vname);
-                    break;
+                if(!state->method->no_variable_scoping && dict_contains(state->allvars, vname)) {
+                    variable_t*v = dict_lookup(state->allvars, vname);
+                    if(!v->is_inner_method) {
+                        state->method->no_variable_scoping = 1;
+                        as3_warning("function %s uses forward or outer block variable references (%s): switching into compatiblity mode", name, vname);
+                    }
                 }
             }
         }
 
+        methodstate_list_t*ml = state->method->innerfunctions;
         while(ml) {
-            methodstate_t*m = ml->methodstate;
-            parserassert(m->inner);
-            if(m->unresolved_variables) {
-                dict_t*d = m->unresolved_variables;
-                int t;
-                DICT_ITERATE_KEY(d, char*, id) {
-                    /* check parent method's variables */
-                    variable_t*v;
-                    if((v=find_variable(state, id))) {
-                        m->uses_parent_function = 1;
-                        state->method->uses_slots = 1;
-                        dict_put(xvars, id, 0);
-                    }
-                }
-                dict_destroy(m->unresolved_variables);
-                m->unresolved_variables = 0;
-            }
+            insert_unresolved(ml->methodstate, xvars, state->allvars);
             ml = ml->next;
         }
         
         if(state->method->uses_slots) {
             state->method->slots = dict_new();
             int i = 1;
-            DICT_ITERATE_ITEMS(state->vars, char*, name, variable_t*, v) {
+            DICT_ITERATE_ITEMS(state->allvars, char*, name, variable_t*, v) {
                 if(!name) syntaxerror("internal error");
                 if(v->index && dict_contains(xvars, name)) {
                     v->init = v->kill = 0;
@@ -1955,11 +1982,11 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 273 of skeleton.m4  */
-#line 1959 "parser.tab.c"
+#line 1986 "parser.tab.c"
 /* Unqualified %code blocks.  */
 
 /* Line 274 of skeleton.m4  */
-#line 2050 "parser.y"
+#line 2076 "parser.y"
 
     char is_subtype_of(classinfo_t*type, classinfo_t*supertype)
     {
@@ -1976,7 +2003,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2500 "parser.y"
+#line 2527 "parser.y"
 
     static void state_has_imports()
     {
@@ -1999,7 +2026,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2639 "parser.y"
+#line 2666 "parser.y"
 
     static int slotstate_varconst = 0;
     static modifiers_t*slotstate_flags = 0;
@@ -2061,15 +2088,63 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2819 "parser.y"
+#line 2846 "parser.y"
 
     static int xml_level = 0;
 
 
 /* Line 274 of skeleton.m4  */
-#line 3624 "parser.y"
+#line 3512 "parser.y"
+
+    node_t* resolve_identifier(const char*name);
+    node_t* get_descendants(node_t*e,const char*ns,const char*subnode,char multi, char attr)
+    {
+       typedcode_t v = node_read(e);
+       typedcode_t w;
+
+       multiname_t m = {0,0,0,subnode};
+       namespace_t zero = {ZERONAMESPACE,"*"};
+       if(!strcmp(ns,"*")) {
+           m.ns = &zero;
+           m.type = attr?QNAMEA:QNAME;
+       } else {
+           typedcode_t w = node_read(resolve_identifier(ns));
+           if(!TYPE_IS_NAMESPACE(w.t)) {
+               as3_softwarning("%s might not be a namespace", ns);
+           }
+           v.c = code_append(v.c, w.c);
+           v.c = converttype(v.c, w.t, TYPE_NAMESPACE);
+           m.type = attr?RTQNAMEA:RTQNAME;
+       }
+
+       if(!multi) {
+           v.c = abc_getproperty2(v.c, &m);
+       } else {
+           v.c = abc_getdescendants2(v.c, &m);
+       }
+
+       if(TYPE_IS_XML(v.t)) {
+           v.t = TYPE_XMLLIST;
+       } else {
+           v.c = abc_coerce_a(v.c);
+           v.t = TYPE_ANY;
+       }
+       return mkcodenode(v);
+    }
+
+
+/* Line 274 of skeleton.m4  */
+#line 3683 "parser.y"
+
+    node_t* var_read(variable_t*v)
+    {
+        typedcode_t o;
+       o.c = abc_getlocal(0, v->index);
+       o.t = v->type;
+       return mkcodenode(o);
+    }
 
-    node_t* resolve_identifier(char*name)
+    node_t* resolve_identifier(const char*name)
     {
         typedcode_t o;
         o.t = 0;
@@ -2082,11 +2157,9 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
         /* look at variables */
         if((v = find_variable(state, name))) {
             // name is a local variable
-            o.c = abc_getlocal(o.c, v->index);
-            o.t = v->type;
-            return mkcodenode(o);
+           return var_read(v);
         }
-        if((v = find_slot(state, name))) {
+        if((v = find_slot(state->method, name))) {
             o.c = abc_getscopeobject(o.c, 1);
             o.c = abc_getslot(o.c, v->index);
             o.t = v->type;
@@ -2160,7 +2233,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
         if(!state->xmlfilter && 
            (dict_contains(state->import_toplevel_packages, name) || 
             registry_ispackage(name))) {
-            o.c = abc___pushpackage__(o.c, name);
+            o.c = abc___pushpackage__(o.c, (char*)name);
             o.t = 0;
             return mkcodenode(o); //?
         }
@@ -2184,7 +2257,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 3764 "parser.y"
+#line 3834 "parser.y"
 
     void add_active_url(const char*url)
     {
@@ -2196,7 +2269,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar)
 
 
 /* Line 274 of skeleton.m4  */
-#line 2200 "parser.tab.c"
+#line 2273 "parser.tab.c"
 
 #ifdef short
 # undef short
@@ -2409,18 +2482,18 @@ union yyalloc
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  164
+#define YYFINAL  165
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   3411
+#define YYLAST   3366
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  136
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  135
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  354
+#define YYNRULES  358
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  601
+#define YYNSTATES  612
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
@@ -2510,8 +2583,8 @@ static const yytype_uint16 yyprhs[] =
      899,   901,   905,   908,   913,   917,   921,   925,   929,   933,
      937,   941,   945,   949,   953,   957,   961,   967,   970,   973,
      976,   979,   983,   986,   987,   994,   996,   998,  1000,  1002,
-    1004,  1010,  1014,  1020,  1025,  1030,  1037,  1044,  1048,  1050,
-    1053,  1058,  1063,  1066,  1071
+    1004,  1010,  1014,  1020,  1026,  1031,  1038,  1043,  1050,  1057,
+    1064,  1068,  1070,  1072,  1075,  1080,  1085,  1088,  1093
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
@@ -2618,54 +2691,56 @@ static const yytype_int16 yyrhs[] =
      129,     3,    -1,   130,     3,    -1,    -1,   261,   129,   124,
      262,   261,   135,    -1,     3,    -1,   117,    -1,     4,    -1,
      186,    -1,   117,    -1,   261,   129,   263,    91,   264,    -1,
-     261,    94,   264,    -1,   261,   129,   126,   261,   127,    -1,
-     261,   129,   130,   264,    -1,   261,    94,   130,   264,    -1,
+     261,    94,   264,    -1,   261,    94,   263,    91,   264,    -1,
+     261,   129,   126,   261,   127,    -1,   261,   129,   130,   264,
+      -1,   261,   129,   130,   263,    91,   264,    -1,   261,    94,
+     130,   264,    -1,   261,    94,   130,   263,    91,   264,    -1,
      261,   129,   130,   126,   261,   127,    -1,   261,    94,   130,
-     126,   261,   127,    -1,   261,   129,   264,    -1,     3,    -1,
-      16,     3,    -1,    16,     3,   104,     3,    -1,    16,     3,
-     104,     5,    -1,   192,   267,    -1,    63,    16,   104,   261,
-      -1,    22,    16,   241,    -1
+     126,   261,   127,    -1,   261,   129,   264,    -1,     4,    -1,
+       3,    -1,    16,     3,    -1,    16,     3,   104,     3,    -1,
+      16,     3,   104,     5,    -1,   192,   267,    -1,    63,    16,
+     104,   261,    -1,    22,    16,   241,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,  1941,  1941,  1943,  1943,  1944,  1945,  1947,  1948,  1949,
-    1950,  1951,  1952,  1953,  1954,  1956,  1956,  1957,  1958,  1960,
-    1961,  1962,  1963,  1964,  1965,  1966,  1967,  1969,  1970,  1972,
-    1975,  1978,  1979,  1980,  1981,  1982,  1983,  1984,  1985,  1986,
-    1987,  1988,  1989,  1990,  1991,  1992,  1995,  1996,  1997,  1998,
-    1999,  2000,  2001,  2002,  2014,  2015,  2019,  2030,  2038,  2065,
-    2066,  2068,  2069,  2071,  2072,  2074,  2135,  2135,  2139,  2140,
-    2143,  2159,  2160,  2161,  2166,  2170,  2175,  2176,  2178,  2198,
-    2241,  2257,  2269,  2272,  2275,  2278,  2282,  2283,  2284,  2285,
-    2286,  2287,  2289,  2300,  2303,  2303,  2334,  2334,  2359,  2359,
-    2375,  2376,  2377,  2378,  2386,  2395,  2395,  2444,  2448,  2459,
-    2469,  2486,  2487,  2488,  2489,  2490,  2492,  2493,  2495,  2495,
-    2497,  2497,  2521,  2529,  2540,  2556,  2557,  2558,  2559,  2566,
-    2567,  2568,  2569,  2570,  2571,  2572,  2573,  2574,  2575,  2579,
-    2580,  2582,  2583,  2585,  2586,  2590,  2588,  2596,  2594,  2603,
-    2604,  2605,  2606,  2607,  2608,  2609,  2610,  2612,  2618,  2619,
-    2620,  2621,  2622,  2623,  2626,  2699,  2699,  2701,  2701,  2703,
-    2704,  2706,  2790,  2791,  2800,  2801,  2804,  2805,  2806,  2807,
-    2808,  2809,  2810,  2823,  2834,  2835,  2836,  2838,  2838,  2841,
-    2841,  2844,  2845,  2848,  2853,  2856,  2859,  2862,  2865,  2869,
-    2872,  2876,  2880,  2885,  2891,  2894,  2897,  2900,  2905,  2908,
-    2911,  2921,  2925,  2931,  2937,  2945,  2950,  2956,  2964,  2972,
-    2973,  2974,  2977,  2976,  2993,  2994,  2996,  2995,  3019,  3038,
-    3052,  3053,  3055,  3056,  3058,  3059,  3060,  3069,  3070,  3074,
-    3075,  3077,  3078,  3079,  3081,  3085,  3086,  3091,  3092,  3136,
-    3186,  3207,  3229,  3232,  3239,  3242,  3245,  3248,  3251,  3254,
-    3259,  3260,  3262,  3263,  3264,  3265,  3266,  3268,  3274,  3283,
-    3284,  3285,  3286,  3287,  3288,  3290,  3294,  3299,  3317,  3328,
-    3338,  3347,  3348,  3349,  3350,  3351,  3352,  3353,  3354,  3355,
-    3356,  3357,  3358,  3359,  3360,  3361,  3362,  3363,  3364,  3365,
-    3366,  3367,  3368,  3369,  3370,  3371,  3372,  3373,  3374,  3375,
-    3376,  3377,  3378,  3379,  3380,  3381,  3382,  3383,  3384,  3385,
-    3386,  3387,  3388,  3389,  3390,  3391,  3392,  3394,  3395,  3396,
-    3397,  3399,  3414,  3422,  3422,  3476,  3477,  3478,  3479,  3480,
-    3488,  3506,  3513,  3524,  3531,  3538,  3548,  3559,  3739,  3773,
-    3780,  3787,  3794,  3816,  3822
+       0,  1967,  1967,  1969,  1969,  1970,  1971,  1973,  1974,  1975,
+    1976,  1977,  1978,  1979,  1980,  1982,  1982,  1983,  1984,  1986,
+    1987,  1988,  1989,  1990,  1991,  1992,  1993,  1995,  1996,  1998,
+    2001,  2004,  2005,  2006,  2007,  2008,  2009,  2010,  2011,  2012,
+    2013,  2014,  2015,  2016,  2017,  2018,  2021,  2022,  2023,  2024,
+    2025,  2026,  2027,  2028,  2040,  2041,  2045,  2056,  2064,  2091,
+    2092,  2094,  2095,  2097,  2098,  2100,  2161,  2161,  2165,  2166,
+    2169,  2185,  2186,  2187,  2192,  2196,  2201,  2202,  2204,  2224,
+    2268,  2284,  2296,  2299,  2302,  2305,  2309,  2310,  2311,  2312,
+    2313,  2314,  2316,  2327,  2330,  2330,  2361,  2361,  2386,  2386,
+    2402,  2403,  2404,  2405,  2413,  2422,  2422,  2471,  2475,  2486,
+    2496,  2513,  2514,  2515,  2516,  2517,  2519,  2520,  2522,  2522,
+    2524,  2524,  2548,  2556,  2567,  2583,  2584,  2585,  2586,  2593,
+    2594,  2595,  2596,  2597,  2598,  2599,  2600,  2601,  2602,  2606,
+    2607,  2609,  2610,  2612,  2613,  2617,  2615,  2623,  2621,  2630,
+    2631,  2632,  2633,  2634,  2635,  2636,  2637,  2639,  2645,  2646,
+    2647,  2648,  2649,  2650,  2653,  2726,  2726,  2728,  2728,  2730,
+    2731,  2733,  2817,  2818,  2827,  2828,  2831,  2832,  2833,  2834,
+    2835,  2836,  2837,  2850,  2861,  2862,  2863,  2865,  2865,  2868,
+    2868,  2871,  2872,  2875,  2880,  2883,  2886,  2889,  2892,  2896,
+    2899,  2903,  2907,  2912,  2918,  2921,  2924,  2927,  2932,  2935,
+    2938,  2948,  2952,  2958,  2964,  2972,  2977,  2983,  2991,  2999,
+    3000,  3001,  3004,  3003,  3020,  3021,  3023,  3022,  3046,  3065,
+    3079,  3080,  3082,  3083,  3085,  3086,  3087,  3096,  3097,  3101,
+    3102,  3104,  3105,  3106,  3108,  3112,  3113,  3118,  3119,  3166,
+    3216,  3237,  3259,  3262,  3269,  3272,  3275,  3278,  3281,  3284,
+    3289,  3290,  3292,  3293,  3294,  3295,  3296,  3298,  3304,  3313,
+    3314,  3315,  3316,  3317,  3318,  3320,  3324,  3329,  3347,  3358,
+    3368,  3377,  3378,  3379,  3380,  3381,  3382,  3383,  3384,  3385,
+    3386,  3387,  3388,  3389,  3390,  3391,  3392,  3393,  3394,  3395,
+    3396,  3397,  3398,  3399,  3400,  3401,  3402,  3403,  3404,  3405,
+    3406,  3407,  3408,  3409,  3410,  3411,  3412,  3413,  3414,  3415,
+    3416,  3417,  3418,  3419,  3420,  3421,  3422,  3424,  3425,  3426,
+    3427,  3429,  3444,  3452,  3452,  3506,  3507,  3508,  3509,  3510,
+    3550,  3553,  3560,  3563,  3574,  3582,  3586,  3593,  3597,  3607,
+    3618,  3805,  3809,  3843,  3850,  3857,  3864,  3886,  3893
 };
 #endif
 
@@ -2789,8 +2864,8 @@ static const yytype_uint16 yyr1[] =
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   262,   261,   263,   263,   263,   264,   264,
-     261,   261,   261,   261,   261,   261,   261,   265,   266,   267,
-     267,   267,   268,   269,   270
+     261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
+     265,   266,   266,   267,   267,   267,   268,   269,   270
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -2830,8 +2905,8 @@ static const yytype_uint8 yyr2[] =
        1,     3,     2,     4,     3,     3,     3,     3,     3,     3,
        3,     3,     3,     3,     3,     3,     5,     2,     2,     2,
        2,     3,     2,     0,     6,     1,     1,     1,     1,     1,
-       5,     3,     5,     4,     4,     6,     6,     3,     1,     2,
-       4,     4,     2,     4,     3
+       5,     3,     5,     5,     4,     6,     4,     6,     6,     6,
+       3,     1,     1,     2,     4,     4,     2,     4,     3
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2839,7 +2914,7 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-     125,   348,   138,   177,   277,   174,   175,   176,     0,     0,
+     125,   352,   351,   177,   277,   174,   175,   176,     0,     0,
       66,     0,     0,   131,   278,   129,   130,     0,   137,     0,
      136,   225,   181,   182,   310,   132,     0,     0,     0,   180,
      133,   135,   134,     0,     0,   179,   178,     0,     0,     0,
@@ -2849,163 +2924,165 @@ static const yytype_uint16 yydefact[] =
       32,     0,   126,   127,     9,     8,    11,   275,   276,     0,
      183,    10,   269,   271,   273,   272,    41,   258,   270,   274,
       43,    31,    42,     0,     0,    76,     0,     0,   125,    94,
-     111,   115,   113,   112,   114,   120,   117,     0,     0,   348,
-     247,   224,     0,   309,     0,   122,     0,   123,   308,   105,
-     241,     0,     0,   251,     0,   262,   263,   264,   265,   266,
-       0,     0,   261,   330,   329,   312,   292,   291,     0,   256,
-       0,   242,   243,   244,   254,    84,     0,   108,   252,     0,
-      82,    46,    45,   125,    47,    30,     0,    48,    49,    50,
-      52,     0,    51,   332,     1,     6,   125,   348,     0,    72,
-       0,     0,    73,    55,   110,     0,   221,     0,   166,     0,
-     165,   167,   352,   128,   197,     0,   198,   199,     0,     0,
+     111,   115,   113,   112,   114,   120,   117,     0,     0,   352,
+     351,   247,   224,     0,   309,     0,   122,     0,   123,   308,
+     105,   241,     0,     0,   251,     0,   262,   263,   264,   265,
+     266,     0,     0,   261,   330,   329,   312,   292,   291,     0,
+     256,     0,   242,   243,   244,   254,    84,     0,   108,   252,
+       0,    82,    46,    45,   125,    47,    30,     0,    48,    49,
+      50,    52,     0,    51,   332,     1,     6,   125,   352,     0,
+      72,     0,     0,    73,    55,   110,     0,   221,     0,   166,
+       0,   165,   167,   356,   138,   128,   197,     0,   198,   199,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   328,   327,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   328,   327,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     241,     0,     0,    58,    77,     0,   255,     0,    67,     0,
-     125,   118,     0,   228,     0,   231,   230,   354,   239,   211,
-       0,     0,    28,     0,   331,     0,     0,   280,     0,     0,
-       0,   311,   279,   245,   246,    85,   238,    62,    63,   107,
-     253,    61,    83,    44,    29,   125,     0,   238,     0,     0,
-      54,   349,   220,   219,     0,   139,   141,     0,   189,     0,
-     206,     0,   200,   204,   259,   306,   307,   304,   305,   285,
-     286,   288,   287,   283,   284,   320,   319,   315,   314,   322,
-     323,   324,   321,   317,   316,   318,   289,   290,   339,     0,
-     338,   341,   298,   297,   296,   325,     0,   295,   294,   293,
-     281,   282,   302,   301,   299,   303,   300,     0,     0,   111,
-     115,   339,   333,     0,     0,     0,   347,    66,     0,     0,
-      26,    57,     0,   125,    17,    23,     0,    20,    19,    22,
-      21,   125,   116,     0,   241,   248,   172,     0,     0,   212,
-     216,   109,   124,   229,     0,    27,   250,   353,    66,   267,
-       0,   257,     0,    60,     0,   125,    13,    60,     0,     0,
-       0,     0,     0,   143,     0,     0,   238,   168,   169,     0,
-       0,     0,   185,   186,   191,   205,     0,   344,     0,   249,
-     313,     0,     0,     0,   343,     0,    80,     0,     0,     0,
-     121,    18,   125,     0,     0,     0,     0,   218,   213,   238,
-       0,     0,    68,     0,   236,   235,   234,   237,     0,    65,
-      64,    53,     0,    66,   350,   351,   211,   140,     0,     0,
-     232,   142,   147,    60,     0,   190,   210,   209,   207,   208,
-       0,     0,     0,   326,     0,   342,     0,   340,    81,    86,
-       0,     0,   119,   240,   173,   172,     0,     0,   215,     0,
-       0,   100,   104,   102,   106,    66,    70,   268,    59,     0,
-      79,     0,   144,   145,     0,   125,   171,   170,   201,   193,
-     184,   194,     0,   192,     0,   191,   346,   334,   345,     0,
-       0,     0,    87,    90,    88,    25,    24,   217,   226,   214,
-      98,     0,   101,   103,    69,    66,   238,   125,   233,     0,
-     162,     0,     0,   125,   160,     0,   187,   184,   191,   195,
-       0,    28,    95,    91,    89,    28,    28,   238,    78,     0,
-     153,   157,     0,     0,     0,   125,   151,   155,   156,   163,
-     221,   148,   161,   186,     0,     0,   196,    28,    93,     0,
-       0,     0,   222,   125,   146,   152,     0,     0,   188,   186,
-      92,   227,    99,    96,    28,     0,     0,   202,     0,     0,
-       0,   154,   211,   203,    28,   223,     0,     0,   238,    97,
-     164
+       0,     0,   241,     0,     0,    58,    77,     0,   255,     0,
+      67,     0,   125,   118,     0,   228,     0,   231,   230,   358,
+     239,   211,     0,     0,    28,     0,   331,     0,     0,   280,
+       0,     0,     0,   311,   279,   245,   246,    85,   238,    62,
+      63,   107,   253,    61,    83,    44,    29,   125,     0,   238,
+       0,     0,    54,   353,   220,   219,     0,   139,   141,     0,
+     189,     0,   206,     0,   200,   204,   259,   306,   307,   304,
+     305,   285,   286,   288,   287,   283,   284,   320,   319,   315,
+     314,   322,   323,   324,   321,   317,   316,   318,   289,   290,
+     111,   115,   339,     0,   338,     0,   341,   298,   297,   296,
+     325,     0,   295,   294,   293,   281,   282,   302,   301,   299,
+     303,   300,     0,     0,   333,     0,     0,     0,   350,    66,
+       0,     0,    26,    57,     0,   125,    17,    23,     0,    20,
+      19,    22,    21,   125,   116,     0,   241,   248,   172,     0,
+       0,   212,   216,   109,   124,   229,     0,    27,   250,   357,
+      66,   267,     0,   257,     0,    60,     0,   125,    13,    60,
+       0,     0,     0,     0,     0,   143,     0,     0,   238,   168,
+     169,     0,     0,     0,   185,   186,   191,   205,     0,     0,
+     346,     0,     0,   249,   313,     0,     0,     0,     0,   344,
+       0,    80,     0,     0,     0,   121,    18,   125,     0,     0,
+       0,     0,   218,   213,   238,     0,     0,    68,     0,   236,
+     235,   234,   237,     0,    65,    64,    53,     0,    66,   354,
+     355,   211,   140,     0,     0,   232,   142,   147,    60,     0,
+     190,   210,   209,   207,   208,     0,     0,     0,     0,   339,
+     342,   326,     0,   343,     0,     0,   340,    81,    86,     0,
+       0,   119,   240,   173,   172,     0,     0,   215,     0,     0,
+     100,   104,   102,   106,    66,    70,   268,    59,     0,    79,
+       0,   144,   145,     0,   125,   171,   170,   201,   193,   184,
+     194,     0,   192,     0,   191,   349,   347,   334,   348,   345,
+       0,     0,     0,    87,    90,    88,    25,    24,   217,   226,
+     214,    98,     0,   101,   103,    69,    66,   238,   125,   233,
+       0,   162,     0,     0,   125,   160,     0,   187,   184,   191,
+     195,     0,    28,    95,    91,    89,    28,    28,   238,    78,
+       0,   153,   157,     0,     0,     0,   125,   151,   155,   156,
+     163,   221,   148,   161,   186,     0,     0,   196,    28,    93,
+       0,     0,     0,   222,   125,   146,   152,     0,     0,   188,
+     186,    92,   227,    99,    96,    28,     0,     0,   202,     0,
+       0,     0,   154,   211,   203,    28,   223,     0,     0,   238,
+      97,   164
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,    52,    53,    54,    55,   352,   353,   354,   374,   375,
-     154,   155,   174,   355,   419,   156,   439,   157,   271,   268,
-      97,    98,   486,    59,   170,   171,    60,    61,    62,    63,
-      64,   158,   159,   511,   512,   513,   514,    65,   239,   481,
-     589,   482,   546,   483,   484,    66,   252,   160,    67,    68,
-     243,   244,    69,   361,   240,    70,   161,    72,    73,   393,
-     395,   449,   357,   527,   358,   495,   554,   555,   556,   532,
-     533,   534,   181,   359,   287,   397,   398,   427,    77,    78,
-      79,   404,   460,   503,   564,   186,   399,   461,   504,   187,
-     291,    80,   292,   293,   368,   369,   370,   284,   360,   584,
-     112,    82,   545,   245,   246,   436,   451,   437,   383,   365,
-     140,   141,   142,   248,    83,    84,    85,   162,   143,   235,
-     236,    86,   130,   131,   132,    87,   411,   345,   321,    88,
-      89,   182,    90,    91,    92
+      -1,    52,    53,    54,    55,   354,   355,   356,   376,   377,
+     155,   156,   175,   357,   424,   157,   444,   158,   273,   270,
+      97,    98,   495,    59,   171,   172,    60,    61,    62,    63,
+      64,   159,   160,   522,   523,   524,   525,    65,   241,   490,
+     600,   491,   557,   492,   493,    66,   254,   161,    67,    68,
+     324,   246,    69,   363,   242,    70,   162,    72,    73,   395,
+     397,   454,   359,   538,   360,   504,   565,   566,   567,   543,
+     544,   545,   182,   361,   289,   399,   400,   432,    77,    78,
+      79,   406,   465,   512,   575,   188,   401,   466,   513,   189,
+     293,    80,   294,   295,   370,   371,   372,   286,   362,   595,
+     113,    82,   556,   247,   248,   441,   456,   442,   385,   367,
+     141,   142,   143,   250,    83,    84,    85,   163,   144,   237,
+     238,    86,   131,   132,   133,    87,   415,   325,   326,    88,
+      89,   183,    90,    91,    92
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
    STATE-NUM.  */
-#define YYPACT_NINF -515
+#define YYPACT_NINF -501
 static const yytype_int16 yypact[] =
 {
-    1766,    12,  -515,  -515,  -515,  -515,  -515,  -515,   -28,    -6,
-    -515,    16,    94,  -515,  -515,  -515,  -515,   108,  -515,  2220,
-    -515,   122,  -515,  -515,  2277,  -515,    17,   363,  2220,  -515,
-    -515,  -515,  -515,    24,    27,  -515,  -515,   112,  2220,    29,
-     332,  2220,  2220,  -515,  -515,  2220,  2220,  2220,  2220,  2220,
-     710,   158,   165,  -515,   578,  -515,  -515,  -515,    44,  -515,
-    2148,  -515,  -515,  -515,  -515,  -515,  -515,  2022,  -515,  -515,
-    -515,   288,   766,  -515,  -515,  -515,  -515,  -515,  -515,    11,
-    -515,  -515,  -515,  -515,  -515,  -515,   118,  2972,  -515,  -515,
-    -515,  -515,  -515,   218,   101,  -515,  2220,   221,  2022,  -515,
-    -515,  -515,  -515,  -515,  -515,  -515,  -515,   -83,   373,  -515,
-     -50,  -515,   111,   -51,  2220,   110,   124,  -515,   -51,  -515,
-    2220,   253,   155,   -51,  2220,  -515,  -515,  -515,  -515,  -515,
-     127,   159,   162,   -51,   -51,   702,   -51,   -51,   -52,  2910,
-     141,   168,  2220,  -515,  2910,   268,   272,  2220,  2220,   272,
-     273,  -515,  -515,   842,  -515,  -515,   149,  -515,  -515,  -515,
-    -515,   266,  -515,  -515,  -515,  -515,  1106,   214,   282,  -515,
-     191,   225,   118,   202,  -515,   302,    54,   304,  -515,   305,
-    -515,  -515,  -515,  -515,  -515,  2220,  -515,    20,  2220,  2220,
-    2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,
-    2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,
-    2220,  2220,  -515,  -515,   130,  2220,  2220,  2220,  2220,  2220,
-    2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,  2220,
-    2220,  2220,   128,  -515,  -515,   174,   209,   188,  -515,  2220,
-    1238,  -515,   373,   184,   187,  -515,  -515,  -515,   194,    21,
-     186,    84,  1894,   193,  -515,  2220,   198,  -515,  2220,   332,
-    2220,  -515,  -515,  -515,  -515,  -515,   216,   236,  -515,  -515,
-    -515,   236,  -515,  -515,  -515,  2022,   226,   216,  2220,  2220,
-    -515,   239,  -515,  -515,   345,   311,   314,   366,  2910,   278,
-     280,   -49,    20,  -515,  2910,   408,   570,   570,   570,  3282,
-    3282,  3282,  3282,   408,   408,  2910,  2910,  2910,  2910,  2910,
-    2910,  2910,  2910,  2910,  2910,  2910,   365,  3034,  -515,   146,
-    -515,  -515,   424,   424,   424,  2910,  2476,  3096,  3158,  3220,
-     408,   408,   702,   702,   -51,   -51,   -51,   250,  2538,   295,
-     306,   307,  -515,  2220,   233,   312,  -515,  -515,  2220,  2336,
-    -515,   279,   259,  1370,  -515,  -515,   267,  -515,  -515,  -515,
-    -515,  1238,  -515,   373,  2220,  -515,   126,   401,   274,   308,
-    -515,  -515,  -515,   283,   281,  1894,  -515,  2910,  -515,  -515,
-     310,  2910,   270,   313,   272,   974,  -515,   -30,   317,   284,
-     104,   290,   373,   393,   373,   292,   216,   323,  -515,   294,
-      14,    15,  -515,  -515,  -515,  -515,  2220,  -515,  2220,  -515,
-    -515,  2220,  2600,  2220,  -515,   354,  -515,   296,   301,  2220,
-    -515,  -515,  1238,   298,   309,  2220,   270,  -515,  -515,   216,
-      22,    39,   364,  2220,  -515,  -515,  -515,  -515,  2220,  -515,
-    -515,  -515,  2220,  -515,  -515,  -515,    21,  -515,   373,   315,
-    -515,   334,  -515,   313,   366,  -515,  -515,  -515,  -515,  -515,
-     333,    43,  2662,  2910,  2406,  -515,  2724,  -515,  -515,    28,
-    2786,   316,  -515,  -515,  2910,   342,   319,   401,  -515,   321,
-     327,  -515,  -515,    39,  -515,  -515,  -515,  -515,  2910,   -41,
-    -515,   318,   334,  -515,   373,   277,  -515,  -515,  -515,  -515,
-     338,  -515,  2220,  -515,   353,  -515,  -515,  -515,  -515,  2220,
-     350,   331,    28,  -515,  -515,  -515,  -515,  -515,  -515,  -515,
-    -515,   463,  -515,  -515,  -515,  -515,   216,  1502,  -515,   464,
-    -515,   442,   335,   326,  -515,    11,  2910,   359,  -515,    46,
-    2848,  1894,  -515,  -515,  -515,  1894,  1894,   216,  -515,   358,
-    -515,  -515,   360,   264,   336,  1634,  -515,  -515,  -515,  -515,
-      54,  -515,  -515,  -515,   344,    11,    46,  1894,  -515,   362,
-     369,   352,  -515,  1502,  -515,  -515,   489,   381,  -515,  -515,
-    -515,  -515,  -515,  -515,  1894,   374,   375,  -515,   386,   379,
-     376,  -515,    21,  -515,  1894,  -515,   377,   380,   216,  -515,
-    -515
+    1777,   -27,   777,  -501,  -501,  -501,  -501,  -501,   -25,   -48,
+    -501,   -47,   258,  -501,  -501,  -501,  -501,    73,  -501,  2113,
+    -501,   107,  -501,  -501,  2170,  -501,    -8,   363,  2113,  -501,
+    -501,  -501,  -501,    -9,   -17,  -501,  -501,   117,  2113,    35,
+     153,  2113,  2113,  -501,  -501,  2113,  2113,  2113,  2113,  2113,
+     721,   135,   141,  -501,   589,  -501,  -501,  -501,    23,  -501,
+     434,  -501,  -501,  -501,  -501,  -501,  -501,  2033,  -501,  -501,
+    -501,   362,   453,  -501,  -501,  -501,  -501,  -501,  -501,    14,
+    -501,  -501,  -501,  -501,  -501,  -501,    74,  2865,  -501,  -501,
+    -501,  -501,  -501,   174,   100,  -501,  2113,   223,  2033,  -501,
+    -501,  -501,  -501,  -501,  -501,  -501,  -501,    98,   418,  -501,
+    -501,   -34,  -501,   112,   -24,  2113,   110,   122,  -501,   -24,
+    -501,  2113,   255,   156,   -24,  2113,  -501,  -501,  -501,  -501,
+    -501,   129,   158,   163,   -24,   -24,   818,   -24,   -24,   -55,
+    2803,   139,   168,  2113,  -501,  2803,   268,   275,  2113,  2113,
+     275,   282,  -501,  -501,   853,  -501,  -501,   165,  -501,  -501,
+    -501,  -501,   279,  -501,  -501,  -501,  -501,  1117,   222,   296,
+    -501,   203,   237,    74,   206,  -501,   310,    27,   311,  -501,
+     312,  -501,  -501,  -501,  -501,  -501,  -501,  2113,  -501,    15,
+    2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,
+    2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,
+    2113,  2113,  2113,  2113,  -501,  -501,    36,  2113,  2113,  2113,
+    2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,  2113,
+    2113,  2113,  2113,  2113,   123,  -501,  -501,   181,   215,   195,
+    -501,  2113,  1249,  -501,   418,   192,   194,  -501,  -501,  -501,
+     207,    25,   197,   344,  1905,   199,  -501,  2113,   201,  -501,
+    2113,   153,  2113,  -501,  -501,  -501,  -501,  -501,   236,   238,
+    -501,  -501,  -501,   238,  -501,  -501,  -501,  2033,   209,   236,
+    2113,  2113,  -501,   241,  -501,  -501,   343,   295,   298,   347,
+    2803,   249,   265,    38,    15,  -501,  2803,  1109,   581,   581,
+     581,  3237,  3237,  3237,  3237,  1109,  1109,  2803,  2803,  2803,
+    2803,  2803,  2803,  2803,  2803,  2803,  2803,  2803,  2927,  2989,
+     271,   283,   284,   273,  -501,   285,  -501,   713,   713,   713,
+    2803,  2369,  3051,  3113,  3175,  1109,  1109,   818,   818,   -24,
+     -24,   -24,   224,  2431,  -501,  2113,   293,   291,  -501,  -501,
+    2113,  2229,  -501,   243,   257,  1381,  -501,  -501,   270,  -501,
+    -501,  -501,  -501,  1249,  -501,   418,  2113,  -501,    68,   380,
+     267,   302,  -501,  -501,  -501,   278,   277,  1905,  -501,  2803,
+    -501,  -501,   303,  2803,   308,   309,   275,   985,  -501,   -19,
+     314,   281,   220,   299,   418,   402,   418,   292,   236,   328,
+    -501,   307,    18,    19,  -501,  -501,  -501,  -501,  2113,   341,
+    -501,   368,  2113,  -501,  -501,  2113,  2493,  2113,   342,  -501,
+     368,  -501,   301,   317,  2113,  -501,  -501,  1249,   315,   313,
+    2113,   308,  -501,  -501,   236,    28,    48,   384,  2113,  -501,
+    -501,  -501,  -501,  2113,  -501,  -501,  -501,  2113,  -501,  -501,
+    -501,    25,  -501,   418,   323,  -501,   350,  -501,   309,   347,
+    -501,  -501,  -501,  -501,  -501,   352,    37,  2555,   368,  -501,
+    -501,  2803,  2299,  -501,  2617,   368,  -501,  -501,    49,  2679,
+     320,  -501,  -501,  2803,   351,   331,   380,  -501,   337,   332,
+    -501,  -501,    48,  -501,  -501,  -501,  -501,  2803,   -29,  -501,
+     333,   350,  -501,   418,   234,  -501,  -501,  -501,  -501,   353,
+    -501,  2113,  -501,   356,  -501,  -501,  -501,  -501,  -501,  -501,
+    2113,   366,   348,    49,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,   472,  -501,  -501,  -501,  -501,   236,  1513,  -501,
+     478,  -501,   457,   354,   280,  -501,    14,  2803,   370,  -501,
+      17,  2741,  1905,  -501,  -501,  -501,  1905,  1905,   236,  -501,
+     364,  -501,  -501,   365,    72,   360,  1645,  -501,  -501,  -501,
+    -501,    27,  -501,  -501,  -501,   361,    14,    17,  1905,  -501,
+     369,   372,   349,  -501,  1513,  -501,  -501,   494,   395,  -501,
+    -501,  -501,  -501,  -501,  -501,  1905,   375,   386,  -501,   399,
+     385,   378,  -501,    25,  -501,  1905,  -501,   379,   381,   236,
+    -501,  -501
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -515,  -515,   343,  -515,   457,  -340,  -515,   160,  -514,   -37,
-       1,   -58,   417,    60,  -515,     2,    82,   461,   390,   161,
-    -241,  -515,  -515,  -515,  -515,  -515,  -515,  -515,  -515,  -515,
-    -515,  -515,  -515,  -515,  -515,    31,    32,  -515,  -515,    63,
-    -515,    64,  -515,  -515,  -515,  -515,  -515,  -515,  -515,  -515,
-      37,    59,  -515,  -515,  -515,  -515,     0,  -515,   477,  -515,
-    -515,  -515,    65,  -515,    68,  -515,   -22,  -515,    -3,  -515,
-    -515,    30,  -515,     3,  -515,  -515,   100,    85,  -515,  -515,
-    -515,  -515,  -464,  -515,  -515,  -172,  -515,  -453,  -515,  -488,
-    -515,  -423,  -515,   269,  -428,  -515,  -339,     5,     4,  -515,
-    -515,  -515,  -515,  -515,   535,  -103,   116,   140,  -269,  -515,
-    -109,  -515,  -515,  -515,  -515,  -515,  -515,  -515,  -132,   -55,
-     519,   -54,  -515,   320,  -515,   -12,  -515,  -515,  -215,  -515,
-    -515,  -515,  -515,  -515,  -515
+    -501,  -501,   355,  -501,   462,  -331,  -501,   162,  -470,   -36,
+       1,   -57,   420,    61,  -501,     2,    62,   459,   374,   137,
+    -334,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+    -501,  -501,  -501,  -501,  -501,     5,     6,  -501,  -501,    32,
+    -501,    33,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -501,
+      -7,    39,  -501,  -501,  -501,  -501,     0,  -501,   458,  -501,
+    -501,  -501,    63,  -501,    67,  -501,   -53,  -501,   -33,  -501,
+    -501,   -10,  -501,     3,  -501,  -501,    76,    52,  -501,  -501,
+    -501,  -501,  -500,  -501,  -501,  -170,  -501,  -455,  -501,  -497,
+    -501,  -422,  -501,   252,  -430,  -501,  -342,   -39,     4,  -501,
+    -501,  -501,  -501,  -501,   510,  -102,    90,   116,  -270,  -501,
+    -110,  -501,  -501,  -501,  -501,  -501,  -501,  -501,  -130,   -77,
+     501,   -52,  -501,   289,  -501,   -12,  -501,  -191,  -189,  -501,
+    -501,  -501,  -501,  -501,  -501
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -3015,694 +3092,684 @@ static const yytype_int16 yypgoto[] =
 #define YYTABLE_NINF -338
 static const yytype_int16 yytable[] =
 {
-      71,    56,    58,    76,    81,   247,   172,   110,   387,   173,
-     264,   253,   113,   153,   184,   290,   118,   346,   491,   456,
-     458,   423,    94,   289,   366,   366,   123,   568,   428,   133,
-     134,   569,   570,   135,   136,   137,   139,   144,   505,   -74,
-     173,   212,   213,   214,   214,   241,   242,   563,   499,   106,
-     260,   499,   539,   580,    71,    56,    58,    76,    81,   250,
-      57,   188,   509,   402,   106,    74,   479,   403,    75,   256,
-     590,   107,   480,   230,   438,   231,   231,   579,   232,   232,
-     597,   538,   471,   261,   139,   566,   116,   100,   101,   282,
-     510,   478,   269,   270,   525,   274,    95,   100,   101,   577,
-     102,   103,   139,    93,   407,   283,   416,   444,   144,   445,
-     102,   103,   139,   104,    57,   588,   367,   477,    96,    74,
-     290,   337,    75,   104,   108,   111,   379,   453,   122,   414,
-     144,   339,   340,   100,   101,   139,   139,   432,   519,   185,
-      99,   114,   185,   185,   102,   103,   102,   103,   185,   100,
-     101,   120,   119,   124,   500,   501,   121,   104,   501,   104,
-     476,   163,   102,   103,   596,   164,    71,    56,    58,    76,
-      81,   502,   166,   288,   502,   104,   294,   295,   296,   297,
+      71,    56,    58,    76,    81,   106,   249,   111,   173,   389,
+     174,   255,   114,   266,   154,   421,   119,   186,   291,   292,
+     106,   500,   508,   461,   463,    94,   124,   433,   368,   134,
+     135,   368,   428,   136,   137,   138,   140,   145,   252,   320,
+     321,   174,   508,   347,   514,   348,   437,   262,   258,   574,
+     -74,   107,   102,   103,    71,    56,    58,    76,    81,   550,
+     216,    57,   284,    74,    93,   104,   117,    75,   214,   215,
+     216,   271,   272,   190,   588,   488,    96,    99,   285,   590,
+     263,   489,   579,   520,   140,   443,   580,   581,   176,   108,
+     599,   549,   233,   487,   577,   234,   480,   276,   177,    95,
+     232,   245,   233,   140,   179,   234,   536,   121,   591,   145,
+     112,   521,   122,   140,   499,    57,   115,    74,   181,   120,
+     369,    75,   342,   486,   292,   601,   320,   321,   458,   510,
+     381,   145,   409,   123,   410,   608,   140,   140,   164,   102,
+     103,   165,   187,   187,   530,   511,   187,   187,   509,   510,
+     404,   167,   104,   322,   405,   418,   126,   419,   127,   125,
+     535,   128,   129,   130,   485,   511,   323,    71,    56,    58,
+      76,    81,   430,   607,   431,   290,   190,   235,   296,   297,
      298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
      308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
-     467,   372,   490,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   144,   338,
-     188,   233,   105,   388,   389,   234,    57,   349,   457,   459,
-     425,    74,   426,   237,    75,   249,   100,   101,   385,  -111,
-      71,    56,   356,   377,   524,   341,   144,   318,   381,   102,
-     103,   320,   342,   251,   343,   424,   254,   549,   344,   255,
-     319,   257,   104,   318,   259,   258,   139,   139,   262,   320,
-     263,   265,   406,   100,   101,   266,   272,   275,   571,   362,
-     175,     2,   175,   -75,   548,   277,   102,   103,   373,   447,
-     176,   450,   278,   417,   279,    13,   178,    15,    16,   104,
-      18,   487,    20,   280,   175,   281,   434,   285,   286,   347,
-     180,   260,   348,  -117,   176,    25,   363,   274,   364,   177,
-     178,   371,   382,   529,    30,    31,    32,   274,   376,   600,
-       2,   412,   179,   378,   180,   125,   139,   126,   384,   144,
-     127,   128,   129,   390,    13,   450,    15,    16,   391,    18,
-     318,    20,   144,    71,    56,   356,   320,   100,   101,   413,
-     386,    71,    56,   356,    25,   392,   115,   101,   394,   396,
-     102,   103,   529,    30,    31,    32,   100,   101,   530,   102,
-     103,   320,   400,   104,   401,   409,  -335,   435,   489,   102,
-     103,   528,   104,   420,   462,   422,   463,  -337,  -336,   464,
-     373,   466,   104,   415,   366,   189,  -241,   470,   448,   429,
-     430,  -158,  -116,   474,   446,   431,   433,   438,   442,   443,
-     452,   144,    71,    56,   356,   454,   488,   530,   455,   469,
-     485,   468,   472,   190,   191,   192,   494,   193,   194,   195,
-     196,   197,   198,   493,   473,   498,   425,   518,  -338,   520,
-     516,   521,   320,   526,   535,   211,   541,   212,   213,   214,
-    -159,   215,   216,   217,   537,   542,   547,   559,   560,   561,
-     574,   318,   220,   221,   222,   565,   223,   224,   578,   225,
-     226,   227,   228,   229,  -338,  -338,   572,   583,   573,   230,
-     536,   231,   586,   587,   232,   531,   581,   540,   593,   592,
-     212,   213,   214,   582,   215,   216,   217,   594,   591,   276,
-     595,   165,   598,   421,   599,   238,   212,   213,   214,  -338,
-    -338,   169,   225,   226,   227,   228,   229,   553,   551,   552,
-     557,   558,   230,   531,   231,   496,   267,   232,   225,   226,
-     227,   228,   229,   543,   544,   440,   522,   523,   230,   183,
-     231,   585,   575,   232,   497,   553,   551,   552,   557,   558,
-     517,   405,   117,   562,   492,   576,   475,   138,     0,     0,
-       0,     0,     0,   553,   551,   552,   557,   558,    -4,   380,
-       0,     1,     2,     3,     4,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,     0,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,     0,     0,    22,    23,     0,     0,
-     189,     0,     0,     0,    24,     0,    25,    26,     0,    27,
-       0,    28,     0,    29,     0,    30,    31,    32,     0,     0,
-      33,    34,     0,    35,    36,     0,     0,     0,  -338,  -338,
-    -338,    37,    38,    39,     0,     0,   197,   198,     0,    40,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   212,   213,   214,     0,   215,   216,   217,     0,
-      41,    42,     0,     0,     0,     0,     0,     0,     0,    43,
-       0,   223,   224,     0,   225,   226,   227,   228,   229,    44,
-       0,     0,    45,     0,   230,     0,   231,    46,    47,   232,
-       0,     0,    48,     0,    49,     0,    50,     0,    51,     0,
-       0,     0,    -4,     1,     2,     3,     4,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,     0,     0,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,     0,    22,    23,
-     145,     0,   146,     0,     0,     0,    24,   147,    25,    26,
-       0,    27,   148,    28,     0,    29,   149,    30,    31,    32,
-       0,     0,    33,    34,     0,    35,    36,     0,     0,     0,
-       2,     0,     0,    37,    38,    39,     0,   150,     0,     0,
-       0,    40,     0,     0,    13,     0,    15,    16,     0,    18,
-       0,    20,     0,     0,   212,   213,   214,     0,     0,     0,
-       0,     0,    41,    42,    25,     0,     0,     0,     0,     0,
-       0,   151,     0,    30,    31,    32,     0,     0,   227,   228,
-     229,    44,     0,     0,    45,     0,   230,     0,   231,    46,
-      47,   232,     0,     0,    48,     0,    49,     0,    50,     0,
-      51,     0,     0,     0,   152,     1,     2,     3,     4,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,     0,     0,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,     0,
-      22,    23,   145,     0,   146,     0,     0,     0,    24,   147,
-      25,    26,     0,    27,   148,    28,     0,    29,   149,    30,
-      31,    32,     0,     0,    33,    34,     0,    35,    36,     0,
-       0,     0,     0,     0,     0,    37,    38,    39,     0,   150,
-       0,     0,     0,    40,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    44,     0,     0,    45,     0,     0,     0,
-       0,    46,    47,     0,     0,     0,    48,     0,    49,     0,
-      50,     0,    51,     0,     0,     0,   273,     1,     2,     3,
-       4,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-       0,     0,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,     0,    22,    23,   145,     0,   146,     0,     0,     0,
-      24,   147,    25,    26,     0,    27,   148,    28,     0,    29,
-     149,    30,    31,    32,     0,     0,    33,    34,     0,    35,
-      36,     0,     0,     0,     0,     0,     0,    37,    38,    39,
-       0,   150,     0,     0,     0,    40,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    44,     0,     0,    45,     0,
-       0,     0,     0,    46,    47,     0,     0,     0,    48,     0,
-      49,     0,    50,     0,    51,     0,     0,     0,   441,     1,
-       2,     3,     4,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,     0,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,     0,     0,    22,    23,     0,     0,     0,     0,
-       0,     0,    24,     0,    25,    26,     0,    27,     0,    28,
-       0,    29,     0,    30,    31,    32,     0,     0,    33,    34,
-       0,    35,    36,     0,     0,     0,     0,     0,     0,    37,
-      38,    39,     0,     0,     0,     0,     0,    40,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    44,     0,     0,
-      45,     0,     0,     0,     0,    46,    47,     0,     0,     0,
-      48,     0,    49,     0,    50,     0,    51,     0,     0,     0,
-      -3,     1,     2,     3,     4,     0,     5,     6,     7,     8,
-       9,    10,    11,     0,     0,     0,    13,    14,    15,    16,
-      17,    18,    19,    20,     0,     0,    22,    23,     0,     0,
-       0,     0,     0,     0,    24,     0,    25,    26,     0,    27,
-       0,    28,     0,    29,     0,    30,    31,    32,     0,     0,
-      33,    34,     0,    35,    36,     0,     0,     0,     0,     0,
-       0,    37,    38,    39,     0,     0,     0,     0,     0,    40,
+     318,   319,   559,   390,   391,   327,   328,   329,   330,   331,
+     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
+     145,   343,   470,   449,   236,   450,   243,   244,    57,   351,
+      74,   476,   462,   464,    75,   239,   251,   364,   184,  -111,
+     322,   387,    71,    56,   358,   379,   375,   344,   145,   345,
+     383,   253,    13,   346,    15,    16,   429,    18,   256,    20,
+     257,   100,   101,   259,   260,   261,   264,   560,   140,   140,
+     265,   267,    25,   422,   102,   103,   320,   321,   268,   516,
+     540,    30,    31,    32,   184,   274,   519,   104,   582,   102,
+     103,   -75,   452,   277,   455,   176,   320,   321,    13,   279,
+      15,    16,   104,    18,   280,    20,   281,   282,   496,   102,
+     103,   100,   101,   283,   287,   288,   349,   262,    25,   350,
+     276,  -117,   104,   365,   102,   103,   540,    30,    31,    32,
+     276,   366,   373,   416,   378,   541,   380,   104,   140,   611,
+     386,   145,   384,   388,   439,   392,   393,   100,   101,   394,
+     398,   455,   396,   402,   145,    71,    56,   358,   375,   413,
+     102,   103,  -335,    71,    56,   358,   116,   101,  -158,   403,
+    -241,   100,   101,   104,  -337,  -336,   411,   245,   176,   102,
+     103,   541,   420,   368,   102,   103,   105,   245,   177,   245,
+     322,   425,   104,   178,   179,   498,   467,   104,   427,   408,
+     471,   539,   434,   472,   435,   474,   180,  -116,   181,   438,
+     322,   436,   479,   443,  -159,   447,   448,   453,   483,   417,
+     457,   100,   101,   451,   245,   440,   145,    71,    56,   358,
+     459,   497,   468,   475,   102,   103,   477,   168,   110,     3,
+       4,   460,     5,     6,     7,   478,   245,   104,   482,   481,
+     494,   502,   503,    14,   527,   430,   532,   184,    19,   529,
+      21,   374,    22,    23,   507,   531,   147,   548,   537,   546,
+      24,    13,   552,    15,    16,   558,    18,    28,    20,    29,
+     169,   570,   553,   571,   594,   469,   576,    34,   572,    35,
+      36,    25,   583,   584,   585,   589,   245,   597,    38,   547,
+      30,    31,    32,   592,   542,    40,   593,   598,   551,   602,
+     603,   604,   606,   605,   609,   610,   166,   426,   240,   170,
+     505,   269,   278,   445,   533,   534,    41,    42,   554,   555,
+     185,   596,   587,   586,   573,   506,   528,   118,   564,   562,
+     563,   568,   569,   501,   542,    44,   407,   484,    45,   139,
+     382,     0,     0,    46,    47,     0,     0,     0,    48,     0,
+      49,     0,     0,     0,    51,     0,   564,   562,   563,   568,
+     569,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   564,   562,   563,   568,   569,    -4,
+       0,     0,     1,     2,     3,     4,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,     0,    12,    13,    14,    15,
+      16,    17,    18,    19,    20,     0,     0,    22,    23,     0,
+       0,   191,     0,     0,     0,    24,     0,    25,    26,     0,
+      27,     0,    28,     0,    29,     0,    30,    31,    32,     0,
+       0,    33,    34,     0,    35,    36,     0,     0,     0,  -338,
+    -338,  -338,    37,    38,    39,     0,     0,   199,   200,     0,
+      40,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   214,   215,   216,     0,   217,   218,   219,
+       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
+      43,     0,   225,   226,     0,   227,   228,   229,   230,   231,
+      44,     0,     0,    45,     0,   232,     0,   233,    46,    47,
+     234,     0,     0,    48,     0,    49,     0,    50,     0,    51,
+       0,     0,     0,    -4,     1,     2,     3,     4,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,     0,     0,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,     0,    22,
+      23,   146,     0,   147,     0,     0,     0,    24,   148,    25,
+      26,     0,    27,   149,    28,     0,    29,   150,    30,    31,
+      32,     0,     0,    33,    34,     0,    35,    36,     0,     0,
+       0,  -138,     0,     0,    37,    38,    39,     0,   151,     0,
+       0,     0,    40,  -138,     0,  -138,     0,  -138,  -138,     0,
+    -138,     0,  -138,  -138,     0,   214,   215,   216,  -138,  -138,
+       0,     0,     0,    41,    42,  -138,     0,     0,     0,     0,
+       0,  -138,   152,  -138,  -138,  -138,  -138,   227,   228,   229,
+     230,   231,    44,     0,     0,    45,     0,   232,     0,   233,
+      46,    47,   234,     0,     0,    48,     0,    49,     0,    50,
+       0,    51,     0,     0,     0,   153,     1,     2,     3,     4,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,     0,
+       0,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+       0,    22,    23,   146,     0,   147,     0,     0,     0,    24,
+     148,    25,    26,     0,    27,   149,    28,     0,    29,   150,
+      30,    31,    32,     0,     0,    33,    34,     0,    35,    36,
+     214,   215,   216,     0,     0,     0,    37,    38,    39,     0,
+     151,     0,     0,     0,    40,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   229,   230,   231,     0,     0,     0,
+       0,     0,   232,     0,   233,    41,    42,   234,     0,     0,
+       0,     0,     0,     0,   152,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    44,     0,     0,    45,     0,     0,
+       0,     0,    46,    47,     0,     0,     0,    48,     0,    49,
+       0,    50,     0,    51,     0,     0,     0,   275,     1,     2,
+       3,     4,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,     0,     0,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,     0,    22,    23,   146,     0,   147,     0,     0,
+       0,    24,   148,    25,    26,     0,    27,   149,    28,     0,
+      29,   150,    30,    31,    32,     0,     0,    33,    34,     0,
+      35,    36,     0,     0,     0,     0,     0,     0,    37,    38,
+      39,     0,   151,     0,     0,     0,    40,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,     0,     0,     0,     0,   152,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
+       0,     0,     0,     0,    46,    47,     0,     0,     0,    48,
+       0,    49,     0,    50,     0,    51,     0,     0,     0,   446,
+       1,     2,     3,     4,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,     0,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,     0,     0,    22,    23,     0,     0,  -338,
+       0,     0,     0,    24,     0,    25,    26,     0,    27,     0,
+      28,     0,    29,     0,    30,    31,    32,     0,     0,    33,
+      34,     0,    35,    36,     0,     0,     0,     0,     0,     0,
+      37,    38,    39,     0,     0,  -338,  -338,     0,    40,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      41,    42,     0,     0,     0,     0,     0,     0,     0,   350,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    44,
-       0,     0,    45,     0,     0,     0,     0,    46,    47,     0,
-       0,     0,    48,     0,   351,     0,    50,     0,    51,     0,
-       0,     0,   -15,     1,     2,     3,     4,     0,     5,     6,
-       7,     8,     9,    10,    11,     0,     0,     0,    13,    14,
-      15,    16,    17,    18,    19,    20,     0,     0,    22,    23,
-       0,     0,     0,     0,     0,     0,    24,     0,    25,    26,
-       0,    27,     0,    28,     0,    29,     0,    30,    31,    32,
-       0,     0,    33,    34,     0,    35,    36,     0,     0,     0,
-       0,     0,     0,    37,    38,    39,     0,     0,     0,     0,
-       0,    40,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   214,   215,   216,     0,   217,   218,   219,     0,    41,
+      42,     0,     0,     0,     0,     0,     0,     0,    43,     0,
+    -338,  -338,     0,   227,   228,   229,   230,   231,    44,     0,
+       0,    45,     0,   232,     0,   233,    46,    47,   234,     0,
+       0,    48,     0,    49,     0,    50,     0,    51,     0,     0,
+       0,    -3,     1,     2,     3,     4,     0,     5,     6,     7,
+       8,     9,    10,    11,     0,     0,     0,    13,    14,    15,
+      16,    17,    18,    19,    20,     0,     0,    22,    23,     0,
+       0,     0,     0,     0,     0,    24,     0,    25,    26,     0,
+      27,     0,    28,     0,    29,     0,    30,    31,    32,     0,
+       0,    33,    34,     0,    35,    36,     0,     0,     0,     0,
+       0,     0,    37,    38,    39,     0,     0,     0,     0,     0,
+      40,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
-       0,   350,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    44,     0,     0,    45,     0,     0,     0,     0,    46,
-      47,     0,     0,     0,    48,     0,   351,     0,    50,     0,
-      51,     0,     0,     0,   -16,     1,     2,     3,     4,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,     0,     0,
-      13,    14,    15,    16,    17,    18,    19,    20,     0,     0,
-      22,    23,     0,     0,     0,     0,     0,     0,    24,     0,
-      25,    26,     0,    27,     0,    28,     0,    29,     0,    30,
-      31,    32,     0,     0,    33,    34,     0,    35,    36,     0,
-       0,     0,     0,     0,     0,    37,    38,    39,     0,     0,
-       0,     0,     0,    40,     0,     0,     0,     0,     0,     0,
+       0,    41,    42,     0,     0,     0,     0,     0,     0,     0,
+     352,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      44,     0,     0,    45,     0,     0,     0,     0,    46,    47,
+       0,     0,     0,    48,     0,   353,     0,    50,     0,    51,
+       0,     0,     0,   -15,     1,     2,     3,     4,     0,     5,
+       6,     7,     8,     9,    10,    11,     0,     0,     0,    13,
+      14,    15,    16,    17,    18,    19,    20,     0,     0,    22,
+      23,     0,     0,     0,     0,     0,     0,    24,     0,    25,
+      26,     0,    27,     0,    28,     0,    29,     0,    30,    31,
+      32,     0,     0,    33,    34,     0,    35,    36,     0,     0,
+       0,     0,     0,     0,    37,    38,    39,     0,     0,     0,
+       0,     0,    40,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
-       0,     0,     0,   550,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    44,     0,     0,    45,     0,     0,     0,
-       0,    46,    47,     0,     0,     0,    48,     0,    49,     0,
-      50,     0,    51,     0,     0,     0,  -149,     1,     2,     3,
-       4,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-       0,     0,    13,    14,    15,    16,    17,    18,    19,    20,
-       0,     0,    22,    23,     0,     0,     0,     0,     0,     0,
-      24,     0,    25,    26,     0,    27,     0,    28,     0,    29,
-       0,    30,    31,    32,     0,     0,    33,    34,     0,    35,
-      36,     0,     0,     0,     0,     0,     0,    37,    38,    39,
-       0,     0,     0,     0,     0,    40,     0,     0,     0,     0,
+       0,     0,     0,    41,    42,     0,     0,     0,     0,     0,
+       0,     0,   352,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    44,     0,     0,    45,     0,     0,     0,     0,
+      46,    47,     0,     0,     0,    48,     0,   353,     0,    50,
+       0,    51,     0,     0,     0,   -16,     1,     2,     3,     4,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,     0,
+       0,    13,    14,    15,    16,    17,    18,    19,    20,     0,
+       0,    22,    23,     0,     0,     0,     0,     0,     0,    24,
+       0,    25,    26,     0,    27,     0,    28,     0,    29,     0,
+      30,    31,    32,     0,     0,    33,    34,     0,    35,    36,
+       0,     0,     0,     0,     0,     0,    37,    38,    39,     0,
+       0,     0,     0,     0,    40,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,     0,     0,     0,     0,   550,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    44,     0,     0,    45,     0,
-       0,     0,     0,    46,    47,     0,     0,     0,    48,     0,
-      49,     0,    50,     0,    51,     0,    -3,     0,  -150,     1,
-       2,     3,     4,     0,     5,     6,     7,     8,     9,    10,
-      11,     0,     0,    12,    13,    14,    15,    16,    17,    18,
-      19,    20,     0,     0,    22,    23,     0,     0,     0,     0,
-       0,     0,    24,     0,    25,    26,     0,    27,     0,    28,
-       0,    29,     0,    30,    31,    32,     0,     0,    33,    34,
-       0,    35,    36,     0,     0,     0,     0,     0,     0,    37,
-      38,    39,     0,     0,     0,     0,     0,    40,     0,     0,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+       0,     0,     0,     0,   561,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    44,     0,     0,    45,     0,     0,
+       0,     0,    46,    47,     0,     0,     0,    48,     0,    49,
+       0,    50,     0,    51,     0,     0,     0,  -149,     1,     2,
+       3,     4,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,     0,     0,    13,    14,    15,    16,    17,    18,    19,
+      20,     0,     0,    22,    23,     0,     0,     0,     0,     0,
+       0,    24,     0,    25,    26,     0,    27,     0,    28,     0,
+      29,     0,    30,    31,    32,     0,     0,    33,    34,     0,
+      35,    36,     0,     0,     0,     0,     0,     0,    37,    38,
+      39,     0,     0,     0,     0,     0,    40,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
-       0,     0,     0,     0,     0,     0,     0,    43,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    44,     0,     0,
-      45,     0,     0,     0,     0,    46,    47,     0,     0,     0,
-      48,     0,    49,     0,    50,     0,    51,     1,     2,     3,
-       4,     0,     5,     6,     7,     8,     9,    10,    11,     0,
-    -125,     0,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,     0,    22,    23,   145,     0,   146,     0,     0,     0,
-      24,   147,    25,    26,     0,    27,   148,    28,     0,    29,
-     149,    30,    31,    32,     0,     0,    33,    34,     0,    35,
-      36,     0,     0,     0,     0,     0,     0,    37,    38,    39,
-       0,   150,     0,     0,     0,    40,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,     0,     0,     0,     0,   561,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
+       0,     0,     0,     0,    46,    47,     0,     0,     0,    48,
+       0,    49,     0,    50,     0,    51,     0,    -3,     0,  -150,
+       1,     2,     3,     4,     0,     5,     6,     7,     8,     9,
+      10,    11,     0,     0,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,     0,     0,    22,    23,     0,     0,     0,
+       0,     0,     0,    24,     0,    25,    26,     0,    27,     0,
+      28,     0,    29,     0,    30,    31,    32,     0,     0,    33,
+      34,     0,    35,    36,     0,     0,     0,     0,     0,     0,
+      37,    38,    39,     0,     0,     0,     0,     0,    40,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    41,    42,     0,     0,
-       0,     0,     0,     0,     0,   151,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    44,     0,     0,    45,     0,
-       0,     0,     0,    46,    47,     0,     0,     0,    48,     0,
-      49,     0,    50,     0,    51,     1,     2,     3,     4,     0,
-       5,     6,     7,     8,     9,    10,    11,     0,     0,     0,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,     0,
-      22,    23,   145,     0,   146,     0,     0,     0,    24,   147,
-      25,    26,     0,    27,   148,    28,     0,    29,   149,    30,
-      31,    32,     0,     0,    33,    34,     0,    35,    36,     0,
-       0,     0,     0,     0,     0,    37,    38,    39,     0,   150,
-       0,     0,     0,    40,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    41,    42,     0,     0,     0,     0,
-       0,     0,     0,   151,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    44,     0,     0,    45,     0,     0,     0,
-       0,    46,    47,     0,     0,     0,    48,     0,    49,     0,
-      50,   167,    51,     3,     4,     0,     5,     6,     7,     0,
-       0,     0,     0,     0,     0,     0,     0,    14,     0,     0,
-       0,     0,    19,     0,    21,     0,    22,    23,     0,     0,
-     146,     0,     0,     0,    24,     0,     0,     0,     0,     0,
-       0,    28,     0,    29,   168,     0,     0,     0,     0,     0,
-       0,    34,     0,    35,    36,     0,     0,     0,     0,     0,
-       0,     0,    38,     0,     0,     0,     0,     0,     0,    40,
-       0,     0,     0,   109,     0,     3,     4,     0,     5,     6,
-       7,     0,     0,     0,     0,     0,     0,     0,     0,    14,
-      41,    42,     0,     0,    19,     0,    21,     0,    22,    23,
-       0,     0,     0,     0,     0,     0,    24,     0,     0,    44,
-       0,     0,    45,    28,     0,    29,     0,    46,    47,     0,
-       0,     0,    48,    34,    49,    35,    36,     0,    51,     0,
-     109,     0,     3,     4,    38,     5,     6,     7,     0,     0,
-       0,    40,     0,     0,     0,     0,    14,     0,     0,     0,
-       0,    19,     0,    21,     0,    22,    23,     0,     0,     0,
-       0,     0,    41,    42,     0,     0,     0,     0,     0,     0,
-       0,     0,    29,     0,     0,     0,     0,     0,     0,     0,
-      34,    44,    35,    36,    45,     0,     0,     0,     0,    46,
-      47,     0,     0,     0,    48,     0,    49,     0,    40,     0,
-      51,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    41,
-      42,     0,     0,     0,     0,     0,   189,     0,     0,     0,
+      42,     0,     0,     0,     0,     0,     0,     0,    43,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    44,     0,
+       0,    45,     0,     0,     0,     0,    46,    47,     0,     0,
+       0,    48,     0,    49,     0,    50,     0,    51,     1,     2,
+       3,     4,     0,     5,     6,     7,     8,     9,    10,    11,
+       0,  -125,     0,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,     0,    22,    23,   146,     0,   147,     0,     0,
+       0,    24,   148,    25,    26,     0,    27,   149,    28,     0,
+      29,   150,    30,    31,    32,     0,     0,    33,    34,     0,
+      35,    36,     0,     0,     0,     0,     0,     0,    37,    38,
+      39,     0,   151,     0,     0,     0,    40,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    41,    42,     0,
+       0,     0,     0,     0,     0,     0,   152,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    44,     0,     0,    45,
+       0,     0,     0,     0,    46,    47,     0,     0,     0,    48,
+       0,    49,     0,    50,     0,    51,     1,     2,     3,     4,
+       0,     5,     6,     7,     8,     9,    10,    11,     0,     0,
+       0,    13,    14,    15,    16,    17,    18,    19,    20,    21,
+       0,    22,    23,   146,     0,   147,     0,     0,     0,    24,
+     148,    25,    26,     0,    27,   149,    28,     0,    29,   150,
+      30,    31,    32,     0,     0,    33,    34,     0,    35,    36,
+       0,     0,     0,     0,     0,     0,    37,    38,    39,     0,
+     151,     0,     0,     0,    40,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   109,   110,     3,     4,
+       0,     5,     6,     7,     0,    41,    42,     0,     0,     0,
+       0,     0,    14,     0,   152,     0,     0,    19,     0,    21,
+       0,    22,    23,     0,    44,     0,     0,    45,     0,    24,
+       0,     0,    46,    47,     0,     0,    28,    48,    29,    49,
+       0,    50,     0,    51,     0,     0,    34,     0,    35,    36,
+       0,     0,     0,   109,   110,     3,     4,    38,     5,     6,
+       7,     0,     0,     0,    40,     0,     0,     0,     0,    14,
+       0,     0,     0,     0,    19,     0,    21,     0,    22,    23,
+       0,     0,     0,     0,     0,    41,    42,     0,     0,     0,
+       0,     0,     0,     0,     0,    29,     0,     0,     0,     0,
+       0,     0,     0,    34,    44,    35,    36,    45,     0,     0,
+       0,     0,    46,    47,     0,     0,     0,    48,     0,    49,
+       0,    40,     0,    51,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    48,     0,    49,   190,   191,   192,    51,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,     0,   212,   213,
-     214,     0,   215,   216,   217,     0,     0,     0,     0,     0,
-     218,   219,     0,   220,   221,   222,   189,   223,   224,     0,
-     225,   226,   227,   228,   229,     0,     0,     0,     0,     0,
-     230,     0,   231,     0,     0,   232,     0,     0,     0,     0,
-       0,   418,     0,     0,   190,   191,   192,     0,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,     0,   212,   213,
-     214,     0,   215,   216,   217,     0,     0,     0,     0,     0,
-     218,   219,     0,   220,   221,   222,   189,   223,   224,     0,
-     225,   226,   227,   228,   229,     0,     0,     0,     0,     0,
-     230,     0,   231,     0,     0,   232,     0,     0,     0,     0,
-       0,   507,     0,     0,   190,   191,   192,     0,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,     0,   212,   213,
-     214,     0,   215,   216,   217,     0,     0,     0,   189,     0,
-     218,   219,   408,   220,   221,   222,     0,   223,   224,     0,
-     225,   226,   227,   228,   229,     0,     0,     0,     0,     0,
-     230,     0,   231,     0,     0,   232,   190,   191,   192,     0,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,     0,
-     212,   213,   214,     0,   215,   216,   217,     0,     0,     0,
-     189,     0,   218,   219,     0,   220,   221,   222,     0,   223,
-     224,     0,   225,   226,   227,   228,   229,     0,     0,     0,
-       0,     0,   230,     0,   231,   410,     0,   232,   190,   191,
-     192,     0,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,     0,   212,   213,   214,     0,   215,   216,   217,     0,
-       0,     0,   189,     0,   218,   219,     0,   220,   221,   222,
-       0,   223,   224,     0,   225,   226,   227,   228,   229,     0,
-       0,     0,     0,     0,   230,     0,   231,   465,     0,   232,
-     190,   191,   192,     0,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,     0,   212,   213,   214,     0,   215,   216,
-     217,     0,     0,     0,   189,     0,   218,   219,     0,   220,
-     221,   222,     0,   223,   224,     0,   225,   226,   227,   228,
-     229,     0,     0,     0,     0,     0,   230,     0,   231,   506,
-       0,   232,   190,   191,   192,     0,   193,   194,   195,   196,
-     197,   198,   199,   200,   201,   202,   203,   204,   205,   206,
-     207,   208,   209,   210,   211,     0,   212,   213,   214,     0,
-     215,   216,   217,     0,     0,     0,   189,     0,   218,   219,
-       0,   220,   221,   222,     0,   223,   224,     0,   225,   226,
-     227,   228,   229,     0,     0,     0,     0,     0,   230,     0,
-     231,   508,     0,   232,   190,   191,   192,     0,   193,   194,
-     195,   196,   197,   198,   199,   200,   201,   202,   203,   204,
-     205,   206,   207,   208,   209,   210,   211,     0,   212,   213,
-     214,     0,   215,   216,   217,     0,     0,     0,   189,     0,
-     218,   219,     0,   220,   221,   222,     0,   223,   224,     0,
-     225,   226,   227,   228,   229,     0,     0,     0,     0,     0,
-     230,     0,   231,   515,     0,   232,   190,   191,   192,     0,
-     193,   194,   195,   196,   197,   198,   199,   200,   201,   202,
-     203,   204,   205,   206,   207,   208,   209,   210,   211,     0,
-     212,   213,   214,     0,   215,   216,   217,     0,     0,     0,
-     189,     0,   218,   219,   567,   220,   221,   222,     0,   223,
-     224,     0,   225,   226,   227,   228,   229,     0,     0,     0,
-       0,     0,   230,     0,   231,     0,     0,   232,   190,   191,
-     192,     0,   193,   194,   195,   196,   197,   198,   199,   200,
-     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
-     211,     0,   212,   213,   214,     0,   215,   216,   217,     0,
-       0,     0,   189,     0,   218,   219,     0,   220,   221,   222,
-       0,   223,   224,     0,   225,   226,   227,   228,   229,     0,
-       0,     0,     0,     0,   230,     0,   231,     0,     0,   232,
-     190,   191,   192,     0,   193,   194,   195,   196,   197,   198,
-     199,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-     209,   210,   211,     0,   212,   213,   214,     0,   215,   216,
-     217,     0,     0,     0,   189,     0,   218,   219,     0,   220,
-     221,   222,     0,     0,   224,     0,   225,   226,   227,   228,
-     229,     0,     0,     0,     0,     0,   230,     0,   231,     0,
-       0,   232,   190,   191,   192,     0,   193,   194,   195,   196,
-     197,   198,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,   212,   213,   214,     0,
-     215,   216,   217,     0,     0,     0,   189,     0,     0,     0,
-       0,   220,   221,   222,     0,   223,   224,     0,   225,   226,
-     227,   228,   229,     0,     0,     0,     0,     0,   230,     0,
-     231,     0,     0,   232,   190,   191,   192,     0,   193,   194,
-     195,   196,   197,   198,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   212,   213,
-     214,     0,   215,   216,   217,     0,     0,     0,   189,     0,
-       0,     0,     0,     0,   221,   222,     0,   223,   224,     0,
-     225,   226,   227,   228,   229,     0,     0,     0,     0,     0,
-     230,     0,   231,     0,     0,   232,   190,   191,   192,     0,
-     193,   194,   195,   196,   197,   198,     0,     0,     0,     0,
+       0,     0,    41,    42,     0,     0,     0,     0,     0,   191,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     212,   213,   214,     0,   215,   216,   217,     0,     0,     0,
-     189,     0,     0,     0,     0,     0,     0,   222,     0,   223,
-     224,     0,   225,   226,   227,   228,   229,     0,     0,     0,
-       0,     0,   230,     0,   231,     0,     0,   232,   190,   191,
-     192,     0,   193,   194,   195,   196,   197,   198,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   212,   213,   214,     0,   215,   216,   217,     0,
-       0,     0,   189,     0,     0,     0,     0,     0,     0,  -338,
-       0,   223,   224,     0,   225,   226,   227,   228,   229,     0,
-       0,     0,     0,     0,   230,     0,   231,     0,     0,   232,
-     190,   191,   192,     0,  -338,  -338,  -338,  -338,   197,   198,
+       0,     0,     0,     0,    48,     0,    49,   192,   193,   194,
+      51,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+       0,   214,   215,   216,     0,   217,   218,   219,     0,     0,
+       0,     0,     0,   220,   221,     0,   222,   223,   224,   191,
+     225,   226,     0,   227,   228,   229,   230,   231,     0,     0,
+       0,     0,     0,   232,     0,   233,     0,     0,   234,     0,
+       0,     0,     0,     0,   423,     0,     0,   192,   193,   194,
+       0,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+       0,   214,   215,   216,     0,   217,   218,   219,     0,     0,
+       0,     0,     0,   220,   221,     0,   222,   223,   224,   191,
+     225,   226,     0,   227,   228,   229,   230,   231,     0,     0,
+       0,     0,     0,   232,     0,   233,     0,     0,   234,     0,
+       0,     0,     0,     0,   517,     0,     0,   192,   193,   194,
+       0,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+       0,   214,   215,   216,     0,   217,   218,   219,     0,     0,
+       0,   191,     0,   220,   221,   412,   222,   223,   224,     0,
+     225,   226,     0,   227,   228,   229,   230,   231,     0,     0,
+       0,     0,     0,   232,     0,   233,     0,     0,   234,   192,
+     193,   194,     0,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,     0,   214,   215,   216,     0,   217,   218,   219,
+       0,     0,     0,   191,     0,   220,   221,     0,   222,   223,
+     224,     0,   225,   226,     0,   227,   228,   229,   230,   231,
+       0,     0,     0,     0,     0,   232,     0,   233,   414,     0,
+     234,   192,   193,   194,     0,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,     0,   214,   215,   216,     0,   217,
+     218,   219,     0,     0,     0,   191,     0,   220,   221,     0,
+     222,   223,   224,     0,   225,   226,     0,   227,   228,   229,
+     230,   231,     0,     0,     0,     0,     0,   232,     0,   233,
+     473,     0,   234,   192,   193,   194,     0,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,     0,   214,   215,   216,
+       0,   217,   218,   219,     0,     0,     0,   191,     0,   220,
+     221,     0,   222,   223,   224,     0,   225,   226,     0,   227,
+     228,   229,   230,   231,     0,     0,     0,     0,     0,   232,
+       0,   233,   515,     0,   234,   192,   193,   194,     0,   195,
+     196,   197,   198,   199,   200,   201,   202,   203,   204,   205,
+     206,   207,   208,   209,   210,   211,   212,   213,     0,   214,
+     215,   216,     0,   217,   218,   219,     0,     0,     0,   191,
+       0,   220,   221,     0,   222,   223,   224,     0,   225,   226,
+       0,   227,   228,   229,   230,   231,     0,     0,     0,     0,
+       0,   232,     0,   233,   518,     0,   234,   192,   193,   194,
+       0,   195,   196,   197,   198,   199,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   212,   213,
+       0,   214,   215,   216,     0,   217,   218,   219,     0,     0,
+       0,   191,     0,   220,   221,     0,   222,   223,   224,     0,
+     225,   226,     0,   227,   228,   229,   230,   231,     0,     0,
+       0,     0,     0,   232,     0,   233,   526,     0,   234,   192,
+     193,   194,     0,   195,   196,   197,   198,   199,   200,   201,
+     202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
+     212,   213,     0,   214,   215,   216,     0,   217,   218,   219,
+       0,     0,     0,   191,     0,   220,   221,   578,   222,   223,
+     224,     0,   225,   226,     0,   227,   228,   229,   230,   231,
+       0,     0,     0,     0,     0,   232,     0,   233,     0,     0,
+     234,   192,   193,   194,     0,   195,   196,   197,   198,   199,
+     200,   201,   202,   203,   204,   205,   206,   207,   208,   209,
+     210,   211,   212,   213,     0,   214,   215,   216,     0,   217,
+     218,   219,     0,     0,     0,   191,     0,   220,   221,     0,
+     222,   223,   224,     0,   225,   226,     0,   227,   228,   229,
+     230,   231,     0,     0,     0,     0,     0,   232,     0,   233,
+       0,     0,   234,   192,   193,   194,     0,   195,   196,   197,
+     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
+     208,   209,   210,   211,   212,   213,     0,   214,   215,   216,
+       0,   217,   218,   219,     0,     0,     0,   191,     0,   220,
+     221,     0,   222,   223,   224,     0,     0,   226,     0,   227,
+     228,   229,   230,   231,     0,     0,     0,     0,     0,   232,
+       0,   233,     0,     0,   234,   192,   193,   194,     0,   195,
+     196,   197,   198,   199,   200,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   213,     0,   214,
+     215,   216,     0,   217,   218,   219,     0,     0,     0,   191,
+       0,     0,     0,     0,   222,   223,   224,     0,   225,   226,
+       0,   227,   228,   229,   230,   231,     0,     0,     0,     0,
+       0,   232,     0,   233,     0,     0,   234,   192,   193,   194,
+       0,   195,   196,   197,   198,   199,   200,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   212,   213,   214,     0,   215,   216,
-     217,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   223,   224,     0,   225,   226,   227,   228,
-     229,     0,     0,     0,     0,     0,   230,     0,   231,     0,
-       0,   232
+       0,   214,   215,   216,     0,   217,   218,   219,     0,     0,
+       0,   191,     0,     0,     0,     0,   222,   223,   224,     0,
+     225,   226,     0,   227,   228,   229,   230,   231,     0,     0,
+       0,     0,     0,   232,     0,   233,     0,     0,   234,   192,
+     193,   194,     0,   195,   196,   197,   198,   199,   200,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   214,   215,   216,     0,   217,   218,   219,
+       0,     0,     0,   191,     0,     0,     0,     0,     0,   223,
+     224,     0,   225,   226,     0,   227,   228,   229,   230,   231,
+       0,     0,     0,     0,     0,   232,     0,   233,     0,     0,
+     234,   192,   193,   194,     0,   195,   196,   197,   198,   199,
+     200,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   214,   215,   216,     0,   217,
+     218,   219,     0,     0,     0,   191,     0,     0,     0,     0,
+       0,     0,   224,     0,   225,   226,     0,   227,   228,   229,
+     230,   231,     0,     0,     0,     0,     0,   232,     0,   233,
+       0,     0,   234,   192,   193,   194,     0,   195,   196,   197,
+     198,   199,   200,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   214,   215,   216,
+       0,   217,   218,   219,     0,     0,     0,   191,     0,     0,
+       0,     0,     0,     0,  -338,     0,   225,   226,     0,   227,
+     228,   229,   230,   231,     0,     0,     0,     0,     0,   232,
+       0,   233,     0,     0,   234,   192,   193,   194,     0,  -338,
+    -338,  -338,  -338,   199,   200,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   214,
+     215,   216,     0,   217,   218,   219,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   225,   226,
+       0,   227,   228,   229,   230,   231,     0,     0,     0,     0,
+       0,   232,     0,   233,     0,     0,   234
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,     0,     0,     0,     0,   108,    60,    19,   277,    67,
-     142,   120,    24,    50,     3,   187,    28,   232,   446,     5,
-       5,   361,    50,     3,     3,     3,    38,   541,   367,    41,
-      42,   545,   546,    45,    46,    47,    48,    49,   461,    69,
-      98,    92,    93,    94,    94,   128,   129,   535,     5,    12,
-     102,     5,   505,   567,    54,    54,    54,    54,    54,   114,
-       0,   102,    34,   112,    27,     0,    27,   116,     0,   124,
-     584,    12,    33,   124,   104,   126,   126,   565,   129,   129,
-     594,   504,   422,   135,    96,   538,    27,     3,     4,    35,
-      62,   430,   147,   148,   135,   153,   124,     3,     4,   563,
-      16,    17,   114,    91,   319,    51,   347,     3,   120,     5,
-      16,    17,   124,    29,    54,   579,    95,    95,   124,    54,
-     292,   230,    54,    29,    16,     3,   258,   396,    16,   344,
-     142,     3,     4,     3,     4,   147,   148,   378,   477,   128,
-     124,   124,   128,   128,    16,    17,    16,    17,   128,     3,
-       4,   124,   128,   124,   111,   112,   129,    29,   112,    29,
-     429,     3,    16,    17,   592,     0,   166,   166,   166,   166,
-     166,   128,   128,   185,   128,    29,   188,   189,   190,   191,
+       0,     0,     0,     0,     0,    12,   108,    19,    60,   279,
+      67,   121,    24,   143,    50,   349,    28,     3,     3,   189,
+      27,   451,     5,     5,     5,    50,    38,   369,     3,    41,
+      42,     3,   363,    45,    46,    47,    48,    49,   115,     3,
+       4,    98,     5,   234,   466,   234,   380,   102,   125,   546,
+      69,    12,    16,    17,    54,    54,    54,    54,    54,   514,
+      94,     0,    35,     0,    91,    29,    27,     0,    92,    93,
+      94,   148,   149,   102,   574,    27,   124,   124,    51,   576,
+     135,    33,   552,    34,    96,   104,   556,   557,    16,    16,
+     590,   513,   126,   435,   549,   129,   427,   154,    26,   124,
+     124,   108,   126,   115,    32,   129,   135,   124,   578,   121,
+       3,    62,   129,   125,   448,    54,   124,    54,    46,   128,
+      95,    54,   232,    95,   294,   595,     3,     4,   398,   112,
+     260,   143,   323,    16,   323,   605,   148,   149,     3,    16,
+      17,     0,   128,   128,   486,   128,   128,   128,   111,   112,
+     112,   128,    29,   117,   116,   346,     3,   346,     5,   124,
+     494,     8,     9,    10,   434,   128,   130,   167,   167,   167,
+     167,   167,   104,   603,   106,   187,   102,     3,   190,   191,
      192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
      202,   203,   204,   205,   206,   207,   208,   209,   210,   211,
-     415,   117,   443,   215,   216,   217,   218,   219,   220,   221,
+     212,   213,   536,   280,   281,   217,   218,   219,   220,   221,
      222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
-     102,     3,   128,   278,   279,   124,   166,   239,   400,   401,
-     104,   166,   106,    12,   166,   124,     3,     4,   275,   129,
-     240,   240,   240,   255,   485,   117,   258,   117,   260,    16,
-      17,   214,   124,   129,   126,   364,     3,   526,   130,   104,
-     130,   134,    29,   117,   102,   106,   278,   279,   127,   232,
-     102,     3,   126,     3,     4,     3,     3,   128,   547,   242,
-      16,     4,    16,    69,   525,     3,    16,    17,   251,   392,
-      26,   394,   101,   348,    69,    18,    32,    20,    21,    29,
-      23,   433,    25,   101,    16,     3,    36,     3,     3,   135,
-      46,   102,   124,   129,    26,    38,   129,   375,   124,    31,
-      32,   135,   106,    46,    47,    48,    49,   385,   135,   598,
-       4,   343,    44,   135,    46,     3,   348,     5,   102,   351,
-       8,     9,    10,   104,    18,   448,    20,    21,     3,    23,
-     117,    25,   364,   353,   353,   353,   319,     3,     4,   126,
-     134,   361,   361,   361,    38,    54,     3,     4,    54,     3,
-      16,    17,    46,    47,    48,    49,     3,     4,   101,    16,
-      17,   344,   104,    29,   104,   135,    91,   117,   442,    16,
-      17,   494,    29,   134,   406,   128,   408,    91,    91,   411,
-     363,   413,    29,    91,     3,    40,   127,   419,    15,   135,
-     102,   134,   129,   425,   124,   134,   106,   104,   101,   135,
-     128,   433,   422,   422,   422,   102,   438,   101,   134,   128,
-      66,   135,   134,    68,    69,    70,   102,    72,    73,    74,
-      75,    76,    77,   128,   135,   112,   104,   128,    40,   128,
-     134,   124,   415,   135,   116,    90,   106,    92,    93,    94,
-     134,    96,    97,    98,   111,   134,     3,     3,    26,   134,
-     134,   117,   107,   108,   109,   116,   111,   112,   134,   114,
-     115,   116,   117,   118,    76,    77,   128,   135,   128,   124,
-     502,   126,     3,   112,   129,   495,   134,   509,   112,   124,
-      92,    93,    94,   134,    96,    97,    98,   128,   134,   166,
-     134,    54,   135,   353,   134,    98,    92,    93,    94,   111,
-     112,    60,   114,   115,   116,   117,   118,   527,   527,   527,
-     527,   527,   124,   533,   126,   453,   146,   129,   114,   115,
-     116,   117,   118,   512,   512,   384,   483,   483,   124,    72,
-     126,   573,   555,   129,   454,   555,   555,   555,   555,   555,
-     475,   292,    27,   533,   448,   560,   426,    48,    -1,    -1,
-      -1,    -1,    -1,   573,   573,   573,   573,   573,     0,   259,
-      -1,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-      12,    13,    14,    -1,    -1,    17,    18,    19,    20,    21,
-      22,    23,    24,    25,    -1,    -1,    28,    29,    -1,    -1,
-      40,    -1,    -1,    -1,    36,    -1,    38,    39,    -1,    41,
-      -1,    43,    -1,    45,    -1,    47,    48,    49,    -1,    -1,
-      52,    53,    -1,    55,    56,    -1,    -1,    -1,    68,    69,
-      70,    63,    64,    65,    -1,    -1,    76,    77,    -1,    71,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    -1,    96,    97,    98,    -1,
-      92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
-      -1,   111,   112,    -1,   114,   115,   116,   117,   118,   111,
-      -1,    -1,   114,    -1,   124,    -1,   126,   119,   120,   129,
-      -1,    -1,   124,    -1,   126,    -1,   128,    -1,   130,    -1,
-      -1,    -1,   134,     3,     4,     5,     6,    -1,     8,     9,
-      10,    11,    12,    13,    14,    -1,    -1,    -1,    18,    19,
-      20,    21,    22,    23,    24,    25,    26,    -1,    28,    29,
-      30,    -1,    32,    -1,    -1,    -1,    36,    37,    38,    39,
-      -1,    41,    42,    43,    -1,    45,    46,    47,    48,    49,
-      -1,    -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,
-       4,    -1,    -1,    63,    64,    65,    -1,    67,    -1,    -1,
-      -1,    71,    -1,    -1,    18,    -1,    20,    21,    -1,    23,
-      -1,    25,    -1,    -1,    92,    93,    94,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    38,    -1,    -1,    -1,    -1,    -1,
-      -1,   101,    -1,    47,    48,    49,    -1,    -1,   116,   117,
-     118,   111,    -1,    -1,   114,    -1,   124,    -1,   126,   119,
-     120,   129,    -1,    -1,   124,    -1,   126,    -1,   128,    -1,
-     130,    -1,    -1,    -1,   134,     3,     4,     5,     6,    -1,
-       8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
-      28,    29,    30,    -1,    32,    -1,    -1,    -1,    36,    37,
-      38,    39,    -1,    41,    42,    43,    -1,    45,    46,    47,
-      48,    49,    -1,    -1,    52,    53,    -1,    55,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    64,    65,    -1,    67,
-      -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
-      -1,   119,   120,    -1,    -1,    -1,   124,    -1,   126,    -1,
-     128,    -1,   130,    -1,    -1,    -1,   134,     3,     4,     5,
-       6,    -1,     8,     9,    10,    11,    12,    13,    14,    -1,
-      -1,    -1,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    -1,    28,    29,    30,    -1,    32,    -1,    -1,    -1,
-      36,    37,    38,    39,    -1,    41,    42,    43,    -1,    45,
-      46,    47,    48,    49,    -1,    -1,    52,    53,    -1,    55,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    65,
-      -1,    67,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,   114,    -1,
-      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,
-     126,    -1,   128,    -1,   130,    -1,    -1,    -1,   134,     3,
-       4,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
-      14,    -1,    -1,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    -1,    -1,    28,    29,    -1,    -1,    -1,    -1,
-      -1,    -1,    36,    -1,    38,    39,    -1,    41,    -1,    43,
-      -1,    45,    -1,    47,    48,    49,    -1,    -1,    52,    53,
-      -1,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,
-      64,    65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
-     114,    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,
-     124,    -1,   126,    -1,   128,    -1,   130,    -1,    -1,    -1,
-     134,     3,     4,     5,     6,    -1,     8,     9,    10,    11,
-      12,    13,    14,    -1,    -1,    -1,    18,    19,    20,    21,
-      22,    23,    24,    25,    -1,    -1,    28,    29,    -1,    -1,
-      -1,    -1,    -1,    -1,    36,    -1,    38,    39,    -1,    41,
-      -1,    43,    -1,    45,    -1,    47,    48,    49,    -1,    -1,
-      52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,
-      -1,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,    71,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     232,   233,   411,     3,   124,     5,   128,   129,   167,   241,
+     167,   420,   402,   403,   167,    12,   124,   244,     4,   129,
+     117,   277,   242,   242,   242,   257,   253,   124,   260,   126,
+     262,   129,    18,   130,    20,    21,   366,    23,     3,    25,
+     104,     3,     4,   134,   106,   102,   127,   537,   280,   281,
+     102,     3,    38,   350,    16,    17,     3,     4,     3,   468,
+      46,    47,    48,    49,     4,     3,   475,    29,   558,    16,
+      17,    69,   394,   128,   396,    16,     3,     4,    18,     3,
+      20,    21,    29,    23,   101,    25,    69,   101,   438,    16,
+      17,     3,     4,     3,     3,     3,   135,   102,    38,   124,
+     377,   129,    29,   129,    16,    17,    46,    47,    48,    49,
+     387,   124,   135,   345,   135,   101,   135,    29,   350,   609,
+     102,   353,   106,   134,    36,   104,     3,     3,     4,    54,
+       3,   453,    54,   104,   366,   355,   355,   355,   365,   135,
+      16,    17,    91,   363,   363,   363,     3,     4,   134,   104,
+     127,     3,     4,    29,    91,    91,    91,   384,    16,    16,
+      17,   101,    91,     3,    16,    17,   128,   394,    26,   396,
+     117,   134,    29,    31,    32,   447,   408,    29,   128,   126,
+     412,   503,   135,   415,   102,   417,    44,   129,    46,   106,
+     117,   134,   424,   104,   134,   101,   135,    15,   430,   126,
+     128,     3,     4,   124,   431,   117,   438,   427,   427,   427,
+     102,   443,    91,    91,    16,    17,   135,     3,     4,     5,
+       6,   134,     8,     9,    10,   128,   453,    29,   135,   134,
+      66,   128,   102,    19,   134,   104,   124,     4,    24,   128,
+      26,   117,    28,    29,   112,   128,    32,   111,   135,   116,
+      36,    18,   106,    20,    21,     3,    23,    43,    25,    45,
+      46,     3,   134,    26,   135,   117,   116,    53,   134,    55,
+      56,    38,   128,   128,   134,   134,   503,     3,    64,   511,
+      47,    48,    49,   134,   504,    71,   134,   112,   520,   134,
+     124,   112,   134,   128,   135,   134,    54,   355,    98,    60,
+     458,   147,   167,   386,   492,   492,    92,    93,   523,   523,
+      72,   584,   571,   566,   544,   459,   484,    27,   538,   538,
+     538,   538,   538,   453,   544,   111,   294,   431,   114,    48,
+     261,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,
+     126,    -1,    -1,    -1,   130,    -1,   566,   566,   566,   566,
+     566,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   584,   584,   584,   584,   584,     0,
+      -1,    -1,     3,     4,     5,     6,    -1,     8,     9,    10,
+      11,    12,    13,    14,    -1,    -1,    17,    18,    19,    20,
+      21,    22,    23,    24,    25,    -1,    -1,    28,    29,    -1,
+      -1,    40,    -1,    -1,    -1,    36,    -1,    38,    39,    -1,
+      41,    -1,    43,    -1,    45,    -1,    47,    48,    49,    -1,
+      -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,    68,
+      69,    70,    63,    64,    65,    -1,    -1,    76,    77,    -1,
+      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    -1,    96,    97,    98,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     101,    -1,   111,   112,    -1,   114,   115,   116,   117,   118,
+     111,    -1,    -1,   114,    -1,   124,    -1,   126,   119,   120,
+     129,    -1,    -1,   124,    -1,   126,    -1,   128,    -1,   130,
+      -1,    -1,    -1,   134,     3,     4,     5,     6,    -1,     8,
+       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    -1,    28,
+      29,    30,    -1,    32,    -1,    -1,    -1,    36,    37,    38,
+      39,    -1,    41,    42,    43,    -1,    45,    46,    47,    48,
+      49,    -1,    -1,    52,    53,    -1,    55,    56,    -1,    -1,
+      -1,     4,    -1,    -1,    63,    64,    65,    -1,    67,    -1,
+      -1,    -1,    71,    16,    -1,    18,    -1,    20,    21,    -1,
+      23,    -1,    25,    26,    -1,    92,    93,    94,    31,    32,
+      -1,    -1,    -1,    92,    93,    38,    -1,    -1,    -1,    -1,
+      -1,    44,   101,    46,    47,    48,    49,   114,   115,   116,
+     117,   118,   111,    -1,    -1,   114,    -1,   124,    -1,   126,
+     119,   120,   129,    -1,    -1,   124,    -1,   126,    -1,   128,
+      -1,   130,    -1,    -1,    -1,   134,     3,     4,     5,     6,
+      -1,     8,     9,    10,    11,    12,    13,    14,    -1,    -1,
+      -1,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      -1,    28,    29,    30,    -1,    32,    -1,    -1,    -1,    36,
+      37,    38,    39,    -1,    41,    42,    43,    -1,    45,    46,
+      47,    48,    49,    -1,    -1,    52,    53,    -1,    55,    56,
+      92,    93,    94,    -1,    -1,    -1,    63,    64,    65,    -1,
+      67,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   116,   117,   118,    -1,    -1,    -1,
+      -1,    -1,   124,    -1,   126,    92,    93,   129,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   111,    -1,    -1,   114,    -1,    -1,
+      -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,   126,
+      -1,   128,    -1,   130,    -1,    -1,    -1,   134,     3,     4,
+       5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
+      -1,    -1,    -1,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    28,    29,    30,    -1,    32,    -1,    -1,
+      -1,    36,    37,    38,    39,    -1,    41,    42,    43,    -1,
+      45,    46,    47,    48,    49,    -1,    -1,    52,    53,    -1,
+      55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+      65,    -1,    67,    -1,    -1,    -1,    71,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,
-      -1,    -1,   114,    -1,    -1,    -1,    -1,   119,   120,    -1,
-      -1,    -1,   124,    -1,   126,    -1,   128,    -1,   130,    -1,
-      -1,    -1,   134,     3,     4,     5,     6,    -1,     8,     9,
-      10,    11,    12,    13,    14,    -1,    -1,    -1,    18,    19,
-      20,    21,    22,    23,    24,    25,    -1,    -1,    28,    29,
-      -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    39,
-      -1,    41,    -1,    43,    -1,    45,    -1,    47,    48,    49,
-      -1,    -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,
-      -1,    -1,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,
-      -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,   114,
+      -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,
+      -1,   126,    -1,   128,    -1,   130,    -1,    -1,    -1,   134,
+       3,     4,     5,     6,    -1,     8,     9,    10,    11,    12,
+      13,    14,    -1,    -1,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    -1,    -1,    28,    29,    -1,    -1,    40,
+      -1,    -1,    -1,    36,    -1,    38,    39,    -1,    41,    -1,
+      43,    -1,    45,    -1,    47,    48,    49,    -1,    -1,    52,
+      53,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,
+      63,    64,    65,    -1,    -1,    76,    77,    -1,    71,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   111,    -1,    -1,   114,    -1,    -1,    -1,    -1,   119,
-     120,    -1,    -1,    -1,   124,    -1,   126,    -1,   128,    -1,
-     130,    -1,    -1,    -1,   134,     3,     4,     5,     6,    -1,
-       8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
-      18,    19,    20,    21,    22,    23,    24,    25,    -1,    -1,
-      28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,
-      38,    39,    -1,    41,    -1,    43,    -1,    45,    -1,    47,
-      48,    49,    -1,    -1,    52,    53,    -1,    55,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    64,    65,    -1,    -1,
-      -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    94,    -1,    96,    97,    98,    -1,    92,
+      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
+     111,   112,    -1,   114,   115,   116,   117,   118,   111,    -1,
+      -1,   114,    -1,   124,    -1,   126,   119,   120,   129,    -1,
+      -1,   124,    -1,   126,    -1,   128,    -1,   130,    -1,    -1,
+      -1,   134,     3,     4,     5,     6,    -1,     8,     9,    10,
+      11,    12,    13,    14,    -1,    -1,    -1,    18,    19,    20,
+      21,    22,    23,    24,    25,    -1,    -1,    28,    29,    -1,
+      -1,    -1,    -1,    -1,    -1,    36,    -1,    38,    39,    -1,
+      41,    -1,    43,    -1,    45,    -1,    47,    48,    49,    -1,
+      -1,    52,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,
+      -1,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,    -1,
+      71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
-      -1,   119,   120,    -1,    -1,    -1,   124,    -1,   126,    -1,
-     128,    -1,   130,    -1,    -1,    -1,   134,     3,     4,     5,
-       6,    -1,     8,     9,    10,    11,    12,    13,    14,    -1,
-      -1,    -1,    18,    19,    20,    21,    22,    23,    24,    25,
-      -1,    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,
-      36,    -1,    38,    39,    -1,    41,    -1,    43,    -1,    45,
-      -1,    47,    48,    49,    -1,    -1,    52,    53,    -1,    55,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    65,
-      -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+      -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     111,    -1,    -1,   114,    -1,    -1,    -1,    -1,   119,   120,
+      -1,    -1,    -1,   124,    -1,   126,    -1,   128,    -1,   130,
+      -1,    -1,    -1,   134,     3,     4,     5,     6,    -1,     8,
+       9,    10,    11,    12,    13,    14,    -1,    -1,    -1,    18,
+      19,    20,    21,    22,    23,    24,    25,    -1,    -1,    28,
+      29,    -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    38,
+      39,    -1,    41,    -1,    43,    -1,    45,    -1,    47,    48,
+      49,    -1,    -1,    52,    53,    -1,    55,    56,    -1,    -1,
+      -1,    -1,    -1,    -1,    63,    64,    65,    -1,    -1,    -1,
+      -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,   114,    -1,
-      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,
-     126,    -1,   128,    -1,   130,    -1,     0,    -1,   134,     3,
-       4,     5,     6,    -1,     8,     9,    10,    11,    12,    13,
-      14,    -1,    -1,    17,    18,    19,    20,    21,    22,    23,
-      24,    25,    -1,    -1,    28,    29,    -1,    -1,    -1,    -1,
-      -1,    -1,    36,    -1,    38,    39,    -1,    41,    -1,    43,
-      -1,    45,    -1,    47,    48,    49,    -1,    -1,    52,    53,
-      -1,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,
-      64,    65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,    -1,
+     119,   120,    -1,    -1,    -1,   124,    -1,   126,    -1,   128,
+      -1,   130,    -1,    -1,    -1,   134,     3,     4,     5,     6,
+      -1,     8,     9,    10,    11,    12,    13,    14,    -1,    -1,
+      -1,    18,    19,    20,    21,    22,    23,    24,    25,    -1,
+      -1,    28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    36,
+      -1,    38,    39,    -1,    41,    -1,    43,    -1,    45,    -1,
+      47,    48,    49,    -1,    -1,    52,    53,    -1,    55,    56,
+      -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    65,    -1,
+      -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,
-     114,    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,
-     124,    -1,   126,    -1,   128,    -1,   130,     3,     4,     5,
-       6,    -1,     8,     9,    10,    11,    12,    13,    14,    -1,
-      16,    -1,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    -1,    28,    29,    30,    -1,    32,    -1,    -1,    -1,
-      36,    37,    38,    39,    -1,    41,    42,    43,    -1,    45,
-      46,    47,    48,    49,    -1,    -1,    52,    53,    -1,    55,
-      56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    65,
-      -1,    67,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   111,    -1,    -1,   114,    -1,    -1,
+      -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,   126,
+      -1,   128,    -1,   130,    -1,    -1,    -1,   134,     3,     4,
+       5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
+      -1,    -1,    -1,    18,    19,    20,    21,    22,    23,    24,
+      25,    -1,    -1,    28,    29,    -1,    -1,    -1,    -1,    -1,
+      -1,    36,    -1,    38,    39,    -1,    41,    -1,    43,    -1,
+      45,    -1,    47,    48,    49,    -1,    -1,    52,    53,    -1,
+      55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+      65,    -1,    -1,    -1,    -1,    -1,    71,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,   114,    -1,
-      -1,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,
-     126,    -1,   128,    -1,   130,     3,     4,     5,     6,    -1,
-       8,     9,    10,    11,    12,    13,    14,    -1,    -1,    -1,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    -1,
-      28,    29,    30,    -1,    32,    -1,    -1,    -1,    36,    37,
-      38,    39,    -1,    41,    42,    43,    -1,    45,    46,    47,
-      48,    49,    -1,    -1,    52,    53,    -1,    55,    56,    -1,
-      -1,    -1,    -1,    -1,    -1,    63,    64,    65,    -1,    67,
-      -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,   114,
+      -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,
+      -1,   126,    -1,   128,    -1,   130,    -1,     0,    -1,   134,
+       3,     4,     5,     6,    -1,     8,     9,    10,    11,    12,
+      13,    14,    -1,    -1,    17,    18,    19,    20,    21,    22,
+      23,    24,    25,    -1,    -1,    28,    29,    -1,    -1,    -1,
+      -1,    -1,    -1,    36,    -1,    38,    39,    -1,    41,    -1,
+      43,    -1,    45,    -1,    47,    48,    49,    -1,    -1,    52,
+      53,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,    -1,
+      63,    64,    65,    -1,    -1,    -1,    -1,    -1,    71,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   101,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,    -1,    -1,   114,    -1,    -1,    -1,
-      -1,   119,   120,    -1,    -1,    -1,   124,    -1,   126,    -1,
-     128,     3,   130,     5,     6,    -1,     8,     9,    10,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,    -1,    -1,
-      -1,    -1,    24,    -1,    26,    -1,    28,    29,    -1,    -1,
-      32,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
-      -1,    43,    -1,    45,    46,    -1,    -1,    -1,    -1,    -1,
-      -1,    53,    -1,    55,    56,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    64,    -1,    -1,    -1,    -1,    -1,    -1,    71,
-      -1,    -1,    -1,     3,    -1,     5,     6,    -1,     8,     9,
-      10,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,
-      92,    93,    -1,    -1,    24,    -1,    26,    -1,    28,    29,
-      -1,    -1,    -1,    -1,    -1,    -1,    36,    -1,    -1,   111,
-      -1,    -1,   114,    43,    -1,    45,    -1,   119,   120,    -1,
-      -1,    -1,   124,    53,   126,    55,    56,    -1,   130,    -1,
-       3,    -1,     5,     6,    64,     8,     9,    10,    -1,    -1,
-      -1,    71,    -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,
-      -1,    24,    -1,    26,    -1,    28,    29,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    45,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      53,   111,    55,    56,   114,    -1,    -1,    -1,    -1,   119,
-     120,    -1,    -1,    -1,   124,    -1,   126,    -1,    71,    -1,
-     130,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
-      93,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,    -1,
+      93,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,
+      -1,   114,    -1,    -1,    -1,    -1,   119,   120,    -1,    -1,
+      -1,   124,    -1,   126,    -1,   128,    -1,   130,     3,     4,
+       5,     6,    -1,     8,     9,    10,    11,    12,    13,    14,
+      -1,    16,    -1,    18,    19,    20,    21,    22,    23,    24,
+      25,    26,    -1,    28,    29,    30,    -1,    32,    -1,    -1,
+      -1,    36,    37,    38,    39,    -1,    41,    42,    43,    -1,
+      45,    46,    47,    48,    49,    -1,    -1,    52,    53,    -1,
+      55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    64,
+      65,    -1,    67,    -1,    -1,    -1,    71,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   101,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   111,    -1,    -1,   114,
+      -1,    -1,    -1,    -1,   119,   120,    -1,    -1,    -1,   124,
+      -1,   126,    -1,   128,    -1,   130,     3,     4,     5,     6,
+      -1,     8,     9,    10,    11,    12,    13,    14,    -1,    -1,
+      -1,    18,    19,    20,    21,    22,    23,    24,    25,    26,
+      -1,    28,    29,    30,    -1,    32,    -1,    -1,    -1,    36,
+      37,    38,    39,    -1,    41,    42,    43,    -1,    45,    46,
+      47,    48,    49,    -1,    -1,    52,    53,    -1,    55,    56,
+      -1,    -1,    -1,    -1,    -1,    -1,    63,    64,    65,    -1,
+      67,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
+      -1,     8,     9,    10,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    -1,    19,    -1,   101,    -1,    -1,    24,    -1,    26,
+      -1,    28,    29,    -1,   111,    -1,    -1,   114,    -1,    36,
+      -1,    -1,   119,   120,    -1,    -1,    43,   124,    45,   126,
+      -1,   128,    -1,   130,    -1,    -1,    53,    -1,    55,    56,
+      -1,    -1,    -1,     3,     4,     5,     6,    64,     8,     9,
+      10,    -1,    -1,    -1,    71,    -1,    -1,    -1,    -1,    19,
+      -1,    -1,    -1,    -1,    24,    -1,    26,    -1,    28,    29,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    45,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    53,   111,    55,    56,   114,    -1,    -1,
+      -1,    -1,   119,   120,    -1,    -1,    -1,   124,    -1,   126,
+      -1,    71,    -1,   130,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   124,    -1,   126,    68,    69,    70,   130,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
-      94,    -1,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
-     104,   105,    -1,   107,   108,   109,    40,   111,   112,    -1,
-     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-     124,    -1,   126,    -1,    -1,   129,    -1,    -1,    -1,    -1,
-      -1,   135,    -1,    -1,    68,    69,    70,    -1,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
-      94,    -1,    96,    97,    98,    -1,    -1,    -1,    -1,    -1,
-     104,   105,    -1,   107,   108,   109,    40,   111,   112,    -1,
-     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-     124,    -1,   126,    -1,    -1,   129,    -1,    -1,    -1,    -1,
-      -1,   135,    -1,    -1,    68,    69,    70,    -1,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
-      94,    -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,
-     104,   105,   106,   107,   108,   109,    -1,   111,   112,    -1,
-     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-     124,    -1,   126,    -1,    -1,   129,    68,    69,    70,    -1,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    -1,
-      92,    93,    94,    -1,    96,    97,    98,    -1,    -1,    -1,
-      40,    -1,   104,   105,    -1,   107,   108,   109,    -1,   111,
-     112,    -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,
-      -1,    -1,   124,    -1,   126,   127,    -1,   129,    68,    69,
-      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    -1,    92,    93,    94,    -1,    96,    97,    98,    -1,
-      -1,    -1,    40,    -1,   104,   105,    -1,   107,   108,   109,
-      -1,   111,   112,    -1,   114,   115,   116,   117,   118,    -1,
-      -1,    -1,    -1,    -1,   124,    -1,   126,   127,    -1,   129,
-      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    -1,    92,    93,    94,    -1,    96,    97,
-      98,    -1,    -1,    -1,    40,    -1,   104,   105,    -1,   107,
-     108,   109,    -1,   111,   112,    -1,   114,   115,   116,   117,
-     118,    -1,    -1,    -1,    -1,    -1,   124,    -1,   126,   127,
-      -1,   129,    68,    69,    70,    -1,    72,    73,    74,    75,
-      76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
-      86,    87,    88,    89,    90,    -1,    92,    93,    94,    -1,
-      96,    97,    98,    -1,    -1,    -1,    40,    -1,   104,   105,
-      -1,   107,   108,   109,    -1,   111,   112,    -1,   114,   115,
-     116,   117,   118,    -1,    -1,    -1,    -1,    -1,   124,    -1,
-     126,   127,    -1,   129,    68,    69,    70,    -1,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,    -1,    92,    93,
-      94,    -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,
-     104,   105,    -1,   107,   108,   109,    -1,   111,   112,    -1,
-     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-     124,    -1,   126,   127,    -1,   129,    68,    69,    70,    -1,
-      72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
-      82,    83,    84,    85,    86,    87,    88,    89,    90,    -1,
-      92,    93,    94,    -1,    96,    97,    98,    -1,    -1,    -1,
-      40,    -1,   104,   105,   106,   107,   108,   109,    -1,   111,
-     112,    -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,
-      -1,    -1,   124,    -1,   126,    -1,    -1,   129,    68,    69,
-      70,    -1,    72,    73,    74,    75,    76,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    88,    89,
-      90,    -1,    92,    93,    94,    -1,    96,    97,    98,    -1,
-      -1,    -1,    40,    -1,   104,   105,    -1,   107,   108,   109,
-      -1,   111,   112,    -1,   114,   115,   116,   117,   118,    -1,
-      -1,    -1,    -1,    -1,   124,    -1,   126,    -1,    -1,   129,
-      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    81,    82,    83,    84,    85,    86,    87,
-      88,    89,    90,    -1,    92,    93,    94,    -1,    96,    97,
-      98,    -1,    -1,    -1,    40,    -1,   104,   105,    -1,   107,
-     108,   109,    -1,    -1,   112,    -1,   114,   115,   116,   117,
-     118,    -1,    -1,    -1,    -1,    -1,   124,    -1,   126,    -1,
-      -1,   129,    68,    69,    70,    -1,    72,    73,    74,    75,
-      76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,    -1,
-      96,    97,    98,    -1,    -1,    -1,    40,    -1,    -1,    -1,
-      -1,   107,   108,   109,    -1,   111,   112,    -1,   114,   115,
-     116,   117,   118,    -1,    -1,    -1,    -1,    -1,   124,    -1,
-     126,    -1,    -1,   129,    68,    69,    70,    -1,    72,    73,
-      74,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,
-      94,    -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,
-      -1,    -1,    -1,    -1,   108,   109,    -1,   111,   112,    -1,
-     114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,
-     124,    -1,   126,    -1,    -1,   129,    68,    69,    70,    -1,
-      72,    73,    74,    75,    76,    77,    -1,    -1,    -1,    -1,
+      -1,    -1,    92,    93,    -1,    -1,    -1,    -1,    -1,    40,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      92,    93,    94,    -1,    96,    97,    98,    -1,    -1,    -1,
-      40,    -1,    -1,    -1,    -1,    -1,    -1,   109,    -1,   111,
-     112,    -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,
-      -1,    -1,   124,    -1,   126,    -1,    -1,   129,    68,    69,
-      70,    -1,    72,    73,    74,    75,    76,    77,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    92,    93,    94,    -1,    96,    97,    98,    -1,
-      -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,    -1,   109,
-      -1,   111,   112,    -1,   114,   115,   116,   117,   118,    -1,
-      -1,    -1,    -1,    -1,   124,    -1,   126,    -1,    -1,   129,
-      68,    69,    70,    -1,    72,    73,    74,    75,    76,    77,
+      -1,    -1,    -1,    -1,   124,    -1,   126,    68,    69,    70,
+     130,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      -1,    92,    93,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    -1,    -1,   104,   105,    -1,   107,   108,   109,    40,
+     111,   112,    -1,   114,   115,   116,   117,   118,    -1,    -1,
+      -1,    -1,    -1,   124,    -1,   126,    -1,    -1,   129,    -1,
+      -1,    -1,    -1,    -1,   135,    -1,    -1,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      -1,    92,    93,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    -1,    -1,   104,   105,    -1,   107,   108,   109,    40,
+     111,   112,    -1,   114,   115,   116,   117,   118,    -1,    -1,
+      -1,    -1,    -1,   124,    -1,   126,    -1,    -1,   129,    -1,
+      -1,    -1,    -1,    -1,   135,    -1,    -1,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      -1,    92,    93,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    40,    -1,   104,   105,   106,   107,   108,   109,    -1,
+     111,   112,    -1,   114,   115,   116,   117,   118,    -1,    -1,
+      -1,    -1,    -1,   124,    -1,   126,    -1,    -1,   129,    68,
+      69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    -1,    92,    93,    94,    -1,    96,    97,    98,
+      -1,    -1,    -1,    40,    -1,   104,   105,    -1,   107,   108,
+     109,    -1,   111,   112,    -1,   114,   115,   116,   117,   118,
+      -1,    -1,    -1,    -1,    -1,   124,    -1,   126,   127,    -1,
+     129,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    -1,    92,    93,    94,    -1,    96,
+      97,    98,    -1,    -1,    -1,    40,    -1,   104,   105,    -1,
+     107,   108,   109,    -1,   111,   112,    -1,   114,   115,   116,
+     117,   118,    -1,    -1,    -1,    -1,    -1,   124,    -1,   126,
+     127,    -1,   129,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    -1,    92,    93,    94,
+      -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,   104,
+     105,    -1,   107,   108,   109,    -1,   111,   112,    -1,   114,
+     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,   124,
+      -1,   126,   127,    -1,   129,    68,    69,    70,    -1,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    -1,    92,
+      93,    94,    -1,    96,    97,    98,    -1,    -1,    -1,    40,
+      -1,   104,   105,    -1,   107,   108,   109,    -1,   111,   112,
+      -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
+      -1,   124,    -1,   126,   127,    -1,   129,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+      -1,    92,    93,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    40,    -1,   104,   105,    -1,   107,   108,   109,    -1,
+     111,   112,    -1,   114,   115,   116,   117,   118,    -1,    -1,
+      -1,    -1,    -1,   124,    -1,   126,   127,    -1,   129,    68,
+      69,    70,    -1,    72,    73,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
+      89,    90,    -1,    92,    93,    94,    -1,    96,    97,    98,
+      -1,    -1,    -1,    40,    -1,   104,   105,   106,   107,   108,
+     109,    -1,   111,   112,    -1,   114,   115,   116,   117,   118,
+      -1,    -1,    -1,    -1,    -1,   124,    -1,   126,    -1,    -1,
+     129,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    -1,    92,    93,    94,    -1,    96,
+      97,    98,    -1,    -1,    -1,    40,    -1,   104,   105,    -1,
+     107,   108,   109,    -1,   111,   112,    -1,   114,   115,   116,
+     117,   118,    -1,    -1,    -1,    -1,    -1,   124,    -1,   126,
+      -1,    -1,   129,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
+      85,    86,    87,    88,    89,    90,    -1,    92,    93,    94,
+      -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,   104,
+     105,    -1,   107,   108,   109,    -1,    -1,   112,    -1,   114,
+     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,   124,
+      -1,   126,    -1,    -1,   129,    68,    69,    70,    -1,    72,
+      73,    74,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    90,    -1,    92,
+      93,    94,    -1,    96,    97,    98,    -1,    -1,    -1,    40,
+      -1,    -1,    -1,    -1,   107,   108,   109,    -1,   111,   112,
+      -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
+      -1,   124,    -1,   126,    -1,    -1,   129,    68,    69,    70,
+      -1,    72,    73,    74,    75,    76,    77,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    92,    93,    94,    -1,    96,    97,
-      98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   111,   112,    -1,   114,   115,   116,   117,
-     118,    -1,    -1,    -1,    -1,    -1,   124,    -1,   126,    -1,
-      -1,   129
+      -1,    92,    93,    94,    -1,    96,    97,    98,    -1,    -1,
+      -1,    40,    -1,    -1,    -1,    -1,   107,   108,   109,    -1,
+     111,   112,    -1,   114,   115,   116,   117,   118,    -1,    -1,
+      -1,    -1,    -1,   124,    -1,   126,    -1,    -1,   129,    68,
+      69,    70,    -1,    72,    73,    74,    75,    76,    77,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    92,    93,    94,    -1,    96,    97,    98,
+      -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,   108,
+     109,    -1,   111,   112,    -1,   114,   115,   116,   117,   118,
+      -1,    -1,    -1,    -1,    -1,   124,    -1,   126,    -1,    -1,
+     129,    68,    69,    70,    -1,    72,    73,    74,    75,    76,
+      77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    92,    93,    94,    -1,    96,
+      97,    98,    -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,
+      -1,    -1,   109,    -1,   111,   112,    -1,   114,   115,   116,
+     117,   118,    -1,    -1,    -1,    -1,    -1,   124,    -1,   126,
+      -1,    -1,   129,    68,    69,    70,    -1,    72,    73,    74,
+      75,    76,    77,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,    93,    94,
+      -1,    96,    97,    98,    -1,    -1,    -1,    40,    -1,    -1,
+      -1,    -1,    -1,    -1,   109,    -1,   111,   112,    -1,   114,
+     115,   116,   117,   118,    -1,    -1,    -1,    -1,    -1,   124,
+      -1,   126,    -1,    -1,   129,    68,    69,    70,    -1,    72,
+      73,    74,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    92,
+      93,    94,    -1,    96,    97,    98,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   111,   112,
+      -1,   114,   115,   116,   117,   118,    -1,    -1,    -1,    -1,
+      -1,   124,    -1,   126,    -1,    -1,   129
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -3720,56 +3787,57 @@ static const yytype_uint16 yystos[] =
      227,   234,   237,   250,   251,   252,   257,   261,   265,   266,
      268,   269,   270,    91,    50,   124,   124,   156,   157,   124,
        3,     4,    16,    17,    29,   128,   186,   187,    16,     3,
-     261,     3,   236,   261,   124,     3,   187,   240,   261,   128,
-     124,   129,    16,   261,   124,     3,     5,     8,     9,    10,
-     258,   259,   260,   261,   261,   261,   261,   261,   256,   261,
-     246,   247,   248,   254,   261,    30,    32,    37,    42,    46,
-      67,   101,   134,   145,   146,   147,   151,   153,   167,   168,
-     183,   192,   253,     3,     0,   140,   128,     3,    46,   153,
-     160,   161,   257,   147,   148,    16,    26,    31,    32,    44,
-      46,   208,   267,   194,     3,   128,   221,   225,   102,    40,
-      68,    69,    70,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    92,    93,    94,    96,    97,    98,   104,   105,
-     107,   108,   109,   111,   112,   114,   115,   116,   117,   118,
-     124,   126,   129,     3,   124,   255,   256,    12,   148,   174,
-     190,   128,   129,   186,   187,   239,   240,   241,   249,   124,
-     255,   129,   182,   246,     3,   104,   255,   134,   106,   102,
-     102,   135,   127,   102,   254,     3,     3,   154,   155,   255,
-     255,   154,     3,   134,   147,   128,   138,     3,   101,    69,
-     101,     3,    35,    51,   233,     3,     3,   210,   261,     3,
-     221,   226,   228,   229,   261,   261,   261,   261,   261,   261,
+       4,   261,     3,   236,   261,   124,     3,   187,   240,   261,
+     128,   124,   129,    16,   261,   124,     3,     5,     8,     9,
+      10,   258,   259,   260,   261,   261,   261,   261,   261,   256,
+     261,   246,   247,   248,   254,   261,    30,    32,    37,    42,
+      46,    67,   101,   134,   145,   146,   147,   151,   153,   167,
+     168,   183,   192,   253,     3,     0,   140,   128,     3,    46,
+     153,   160,   161,   257,   147,   148,    16,    26,    31,    32,
+      44,    46,   208,   267,     4,   194,     3,   128,   221,   225,
+     102,    40,    68,    69,    70,    72,    73,    74,    75,    76,
+      77,    78,    79,    80,    81,    82,    83,    84,    85,    86,
+      87,    88,    89,    90,    92,    93,    94,    96,    97,    98,
+     104,   105,   107,   108,   109,   111,   112,   114,   115,   116,
+     117,   118,   124,   126,   129,     3,   124,   255,   256,    12,
+     148,   174,   190,   128,   129,   186,   187,   239,   240,   241,
+     249,   124,   255,   129,   182,   246,     3,   104,   255,   134,
+     106,   102,   102,   135,   127,   102,   254,     3,     3,   154,
+     155,   255,   255,   154,     3,   134,   147,   128,   138,     3,
+     101,    69,   101,     3,    35,    51,   233,     3,     3,   210,
+     261,     3,   221,   226,   228,   229,   261,   261,   261,   261,
+     261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
      261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
-     261,   261,   261,   261,   261,   261,   261,   261,   117,   130,
-     186,   264,   261,   261,   261,   261,   261,   261,   261,   261,
-     261,   261,   261,   261,   261,   261,   261,   246,   261,     3,
-       4,   117,   124,   126,   130,   263,   264,   135,   124,   261,
-     101,   126,   141,   142,   143,   149,   151,   198,   200,   209,
-     234,   189,   186,   129,   124,   245,     3,    95,   230,   231,
-     232,   135,   117,   186,   144,   145,   135,   261,   135,   254,
-     259,   261,   106,   244,   102,   145,   134,   244,   255,   255,
-     104,     3,    54,   195,    54,   196,     3,   211,   212,   222,
-     104,   104,   112,   116,   217,   229,   126,   264,   106,   135,
-     127,   262,   261,   126,   264,    91,   156,   255,   135,   150,
-     134,   143,   128,   141,   246,   104,   106,   213,   232,   135,
-     102,   134,   156,   106,    36,   117,   241,   243,   104,   152,
-     155,   134,   101,   135,     3,     5,   124,   241,    15,   197,
-     241,   242,   128,   244,   102,   134,     5,   221,     5,   221,
-     218,   223,   261,   261,   261,   127,   261,   264,   135,   128,
-     261,   141,   134,   135,   261,   243,   244,    95,   232,    27,
-      33,   175,   177,   179,   180,    66,   158,   254,   261,   257,
-     156,   230,   242,   128,   102,   201,   152,   212,   112,     5,
-     111,   112,   128,   219,   224,   227,   127,   135,   127,    34,
-      62,   169,   170,   171,   172,   127,   134,   213,   128,   232,
-     128,   124,   175,   177,   156,   135,   135,   199,   241,    46,
-     101,   192,   205,   206,   207,   116,   261,   111,   227,   223,
-     261,   106,   134,   171,   172,   238,   178,     3,   156,   244,
-     101,   146,   151,   192,   202,   203,   204,   209,   234,     3,
-      26,   134,   207,   225,   220,   116,   223,   106,   144,   144,
-     144,   244,   128,   128,   134,   204,   233,   218,   134,   225,
-     144,   134,   134,   135,   235,   202,     3,   112,   218,   176,
-     144,   134,   124,   112,   128,   134,   230,   144,   135,   134,
-     244
+       3,     4,   117,   130,   186,   263,   264,   261,   261,   261,
+     261,   261,   261,   261,   261,   261,   261,   261,   261,   261,
+     261,   261,   246,   261,   124,   126,   130,   263,   264,   135,
+     124,   261,   101,   126,   141,   142,   143,   149,   151,   198,
+     200,   209,   234,   189,   186,   129,   124,   245,     3,    95,
+     230,   231,   232,   135,   117,   186,   144,   145,   135,   261,
+     135,   254,   259,   261,   106,   244,   102,   145,   134,   244,
+     255,   255,   104,     3,    54,   195,    54,   196,     3,   211,
+     212,   222,   104,   104,   112,   116,   217,   229,   126,   263,
+     264,    91,   106,   135,   127,   262,   261,   126,   263,   264,
+      91,   156,   255,   135,   150,   134,   143,   128,   141,   246,
+     104,   106,   213,   232,   135,   102,   134,   156,   106,    36,
+     117,   241,   243,   104,   152,   155,   134,   101,   135,     3,
+       5,   124,   241,    15,   197,   241,   242,   128,   244,   102,
+     134,     5,   221,     5,   221,   218,   223,   261,    91,   117,
+     264,   261,   261,   127,   261,    91,   264,   135,   128,   261,
+     141,   134,   135,   261,   243,   244,    95,   232,    27,    33,
+     175,   177,   179,   180,    66,   158,   254,   261,   257,   156,
+     230,   242,   128,   102,   201,   152,   212,   112,     5,   111,
+     112,   128,   219,   224,   227,   127,   264,   135,   127,   264,
+      34,    62,   169,   170,   171,   172,   127,   134,   213,   128,
+     232,   128,   124,   175,   177,   156,   135,   135,   199,   241,
+      46,   101,   192,   205,   206,   207,   116,   261,   111,   227,
+     223,   261,   106,   134,   171,   172,   238,   178,     3,   156,
+     244,   101,   146,   151,   192,   202,   203,   204,   209,   234,
+       3,    26,   134,   207,   225,   220,   116,   223,   106,   144,
+     144,   144,   244,   128,   128,   134,   204,   233,   218,   134,
+     225,   144,   134,   134,   135,   235,   202,     3,   112,   218,
+     176,   144,   134,   124,   112,   128,   134,   230,   144,   135,
+     134,   244
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -4585,7 +4653,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1953 "parser.y"
+#line 1979 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
     }
     break;
@@ -4596,7 +4664,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1965 "parser.y"
+#line 1991 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
     }
     break;
@@ -4607,7 +4675,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1966 "parser.y"
+#line 1992 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(2) - (4)].number_int);PASS1 as3_warning("embed command ignored");}
     }
     break;
@@ -4618,7 +4686,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1969 "parser.y"
+#line 1995 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4629,7 +4697,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1970 "parser.y"
+#line 1996 "parser.y"
     {(yyval.code)=code_new();}
     }
     break;
@@ -4640,7 +4708,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1972 "parser.y"
+#line 1998 "parser.y"
     {
     (yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));
 }
@@ -4653,7 +4721,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1975 "parser.y"
+#line 2001 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4664,7 +4732,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1991 "parser.y"
+#line 2017 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (3)].code);}
     }
     break;
@@ -4675,7 +4743,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1992 "parser.y"
+#line 2018 "parser.y"
     {(yyval.code)=0;}
     }
     break;
@@ -4686,7 +4754,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 1995 "parser.y"
+#line 2021 "parser.y"
     {(yyval.code)=0;}
     }
     break;
@@ -4697,7 +4765,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2002 "parser.y"
+#line 2028 "parser.y"
     {
     PASS_ALWAYS 
     if(as3_pass) {
@@ -4716,7 +4784,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2014 "parser.y"
+#line 2040 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (2)].code);}
     }
     break;
@@ -4727,7 +4795,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2015 "parser.y"
+#line 2041 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4738,7 +4806,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2019 "parser.y"
+#line 2045 "parser.y"
     {
     if((yyvsp[(1) - (1)].code)) {
         if(!global->init) 
@@ -4756,7 +4824,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2030 "parser.y"
+#line 2056 "parser.y"
     {
     PASS_ALWAYS
     (yyval.number_int) = as3_pass;
@@ -4771,7 +4839,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2038 "parser.y"
+#line 2064 "parser.y"
     {
     PASS12
     (yyval.number_int)=as3_pass;
@@ -4790,7 +4858,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2065 "parser.y"
+#line 2091 "parser.y"
     {(yyval.node)=(yyvsp[(2) - (2)].node);}
     }
     break;
@@ -4801,7 +4869,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2066 "parser.y"
+#line 2092 "parser.y"
     {(yyval.node)=mkdummynode();}
     }
     break;
@@ -4812,7 +4880,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2068 "parser.y"
+#line 2094 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (2)].code);}
     }
     break;
@@ -4823,7 +4891,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2069 "parser.y"
+#line 2095 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (2)].code);}
     }
     break;
@@ -4834,7 +4902,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2071 "parser.y"
+#line 2097 "parser.y"
     {(yyval.code) = (yyvsp[(1) - (1)].code);}
     }
     break;
@@ -4845,7 +4913,7 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2072 "parser.y"
+#line 2098 "parser.y"
     {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
     }
     break;
@@ -4856,20 +4924,20 @@ yyreduce:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2075 "parser.y"
+#line 2101 "parser.y"
     {
 PASS12
-    if(variable_exists((yyvsp[(1) - (3)].id)))
+    if(variable_exists((yyvsp[(1) - (3)].id))) 
         syntaxerror("Variable %s already defined", (yyvsp[(1) - (3)].id));
 PASS1
-    new_variable((yyvsp[(1) - (3)].id), 0, 1, 0);
+    new_variable(state->method, (yyvsp[(1) - (3)].id), 0, 1, 0);
 PASS2
    
     char slot = 0;
     int index = 0;
     variable_t*v = 0;
     if(state->method->uses_slots) {
-        v = find_slot(state, (yyvsp[(1) - (3)].id));
+        v = find_slot(state->method, (yyvsp[(1) - (3)].id));
         if(v && !v->init) {
             // this variable is stored in a slot
             v->init = 1;
@@ -4878,7 +4946,7 @@ PASS2
         }
     }
     if(!v) {
-        v = new_variable2((yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].classinfo), 1, 0);
+        v = new_variable2(state->method, (yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].classinfo), 1, 0);
     }
 
     (yyval.code) = slot?abc_getscopeobject(0, 1):0;
@@ -4923,7 +4991,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2135 "parser.y"
+#line 2161 "parser.y"
     {PASS12 new_state();}
     }
     break;
@@ -4934,7 +5002,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2135 "parser.y"
+#line 2161 "parser.y"
     {
     (yyval.code) = var_block((yyvsp[(2) - (2)].code), state->vars);
     PASS12 old_state();
@@ -4948,7 +5016,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2139 "parser.y"
+#line 2165 "parser.y"
     {(yyval.code) = code_new();}
     }
     break;
@@ -4959,7 +5027,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2140 "parser.y"
+#line 2166 "parser.y"
     {(yyval.code)=(yyvsp[(2) - (2)].code);}
     }
     break;
@@ -4970,7 +5038,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2143 "parser.y"
+#line 2169 "parser.y"
     {
     (yyval.code) = code_new();
     (yyval.code) = code_append((yyval.code), (yyvsp[(3) - (6)].value).c);
@@ -4995,7 +5063,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2159 "parser.y"
+#line 2185 "parser.y"
     {(yyval.code)=code_new();}
     }
     break;
@@ -5006,10 +5074,10 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2166 "parser.y"
+#line 2192 "parser.y"
     {
-    PASS1 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),0,1,0);
-    PASS2 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1,0);
+    PASS1 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable(state->method, (yyvsp[(2) - (3)].id),0,1,0);
+    PASS2 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable(state->method, (yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1,0);
 }
     }
     break;
@@ -5020,7 +5088,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2170 "parser.y"
+#line 2196 "parser.y"
     {
     PASS12
     (yyval.id)=(yyvsp[(1) - (1)].id);
@@ -5034,7 +5102,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2175 "parser.y"
+#line 2201 "parser.y"
     {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;}
     }
     break;
@@ -5045,7 +5113,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2176 "parser.y"
+#line 2202 "parser.y"
     {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;}
     }
     break;
@@ -5056,7 +5124,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2178 "parser.y"
+#line 2204 "parser.y"
     {
     if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement");
     (yyval.code) = code_new();
@@ -5085,12 +5153,11 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2198 "parser.y"
+#line 2224 "parser.y"
     {
-    variable_t*var = find_variable(state, (yyvsp[(2) - (6)].id));
-    if(!var) {
-        syntaxerror("variable %s not known in this scope", (yyvsp[(2) - (6)].id));
-    }
+    node_t*n = resolve_identifier((yyvsp[(2) - (6)].id));
+    typedcode_t w = node_write(n);
+    
     int it = alloc_local();
     int array = alloc_local();
 
@@ -5111,8 +5178,9 @@ PASS2
         (yyval.code) = abc_nextname((yyval.code));
     else
         (yyval.code) = abc_nextvalue((yyval.code));
-    (yyval.code) = converttype((yyval.code), 0, var->type);
-    (yyval.code) = abc_setlocal((yyval.code), var->index);
+
+    (yyval.code) = converttype((yyval.code), 0, w.t);
+    (yyval.code) = code_append((yyval.code), w.c);
 
     (yyval.code) = code_append((yyval.code), (yyvsp[(6) - (6)].code));
     (yyval.code) = abc_jump((yyval.code), loopstart);
@@ -5126,6 +5194,7 @@ PASS2
     (yyval.code) = abc_kill((yyval.code), it);
     (yyval.code) = abc_kill((yyval.code), array);
 
+    (yyval.code) = var_block((yyval.code), state->vars);
     PASS12 old_state();
 }
     }
@@ -5137,7 +5206,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2241 "parser.y"
+#line 2268 "parser.y"
     {
 
     (yyval.code) = code_new();
@@ -5162,7 +5231,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2257 "parser.y"
+#line 2284 "parser.y"
     {
     (yyval.code) = code_new();
     code_t*loopstart = (yyval.code) = abc_label((yyval.code));
@@ -5183,7 +5252,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2269 "parser.y"
+#line 2296 "parser.y"
     {
     (yyval.code) = abc___break__(0, "");
 }
@@ -5196,7 +5265,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2272 "parser.y"
+#line 2299 "parser.y"
     {
     (yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id));
 }
@@ -5209,7 +5278,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2275 "parser.y"
+#line 2302 "parser.y"
     {
     (yyval.code) = abc___continue__(0, "");
 }
@@ -5222,7 +5291,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2278 "parser.y"
+#line 2305 "parser.y"
     {
     (yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id));
 }
@@ -5235,7 +5304,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2282 "parser.y"
+#line 2309 "parser.y"
     {(yyval.code)=0;}
     }
     break;
@@ -5246,7 +5315,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2283 "parser.y"
+#line 2310 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -5257,7 +5326,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2284 "parser.y"
+#line 2311 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -5268,7 +5337,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2285 "parser.y"
+#line 2312 "parser.y"
     {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
     }
     break;
@@ -5279,7 +5348,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2286 "parser.y"
+#line 2313 "parser.y"
     {(yyval.code)=(yyvsp[(1) - (1)].code);}
     }
     break;
@@ -5290,7 +5359,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2287 "parser.y"
+#line 2314 "parser.y"
     {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));}
     }
     break;
@@ -5301,7 +5370,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2289 "parser.y"
+#line 2316 "parser.y"
     {
     (yyval.code) = abc_getlocal(0, state->switch_var);
     (yyval.code) = code_append((yyval.code), node_read((yyvsp[(2) - (4)].node)).c);
@@ -5322,7 +5391,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2300 "parser.y"
+#line 2327 "parser.y"
     {
     (yyval.code) = (yyvsp[(3) - (3)].code);
 }
@@ -5335,7 +5404,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2303 "parser.y"
+#line 2330 "parser.y"
     {PASS12 new_state();state->switch_var=alloc_local();}
     }
     break;
@@ -5346,7 +5415,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2303 "parser.y"
+#line 2330 "parser.y"
     {
     (yyval.code) = node_read((yyvsp[(4) - (8)].node)).c;
     (yyval.code) = abc_setlocal((yyval.code), state->switch_var);
@@ -5384,11 +5453,11 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2334 "parser.y"
+#line 2361 "parser.y"
     {PASS12 new_state();
                                                       state->exception_name=(yyvsp[(3) - (5)].id);
-                                               PASS1 new_variable((yyvsp[(3) - (5)].id), 0, 0, 0);
-                                               PASS2 new_variable((yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0, 0);
+                                               PASS1 new_variable(state->method, (yyvsp[(3) - (5)].id), 0, 0, 0);
+                                               PASS2 new_variable(state->method, (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].classinfo), 0, 0);
                                               }
     }
     break;
@@ -5399,7 +5468,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2339 "parser.y"
+#line 2366 "parser.y"
     {
     namespace_t name_ns = {ACCESS_PACKAGE, ""};
     multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)};
@@ -5429,7 +5498,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2359 "parser.y"
+#line 2386 "parser.y"
     {PASS12 new_state();state->exception_name=0;}
     }
     break;
@@ -5440,7 +5509,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2359 "parser.y"
+#line 2386 "parser.y"
     {
     (yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code), state->vars);
     if(!(yyvsp[(4) - (5)].code)) {
@@ -5465,7 +5534,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2375 "parser.y"
+#line 2402 "parser.y"
     {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));}
     }
     break;
@@ -5476,7 +5545,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2376 "parser.y"
+#line 2403 "parser.y"
     {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));}
     }
     break;
@@ -5487,7 +5556,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2377 "parser.y"
+#line 2404 "parser.y"
     {(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);}
     }
     break;
@@ -5498,7 +5567,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2378 "parser.y"
+#line 2405 "parser.y"
     {
     (yyval.catch_list) = (yyvsp[(1) - (2)].catch_list);
     (yyval.catch_list).finally = 0;
@@ -5516,7 +5585,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2386 "parser.y"
+#line 2413 "parser.y"
     {
     (yyval.catch_list).l=list_new();
     (yyval.catch_list).finally = 0;
@@ -5534,7 +5603,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2395 "parser.y"
+#line 2422 "parser.y"
     {PASS12 new_state();
                  state->method->has_exceptions=1;
                  state->method->late_binding=1;//for invariant scope_code
@@ -5548,7 +5617,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2398 "parser.y"
+#line 2425 "parser.y"
     {
     code_t*out = abc_nop(0);
 
@@ -5601,7 +5670,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2444 "parser.y"
+#line 2471 "parser.y"
     {
     (yyval.code)=(yyvsp[(2) - (2)].value).c;
     (yyval.code)=abc_throw((yyval.code));
@@ -5615,7 +5684,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2448 "parser.y"
+#line 2475 "parser.y"
     {
     if(!state->exception_name)
         syntaxerror("re-throw only possible within a catch block");
@@ -5633,7 +5702,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2459 "parser.y"
+#line 2486 "parser.y"
     {
      new_state();
      if(state->method->has_exceptions) {
@@ -5653,7 +5722,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2469 "parser.y"
+#line 2496 "parser.y"
     {
      /* remove getlocal;pushwith from scope code again */
      state->method->scope_code = code_cutlast(code_cutlast(state->method->scope_code));
@@ -5677,7 +5746,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2487 "parser.y"
+#line 2514 "parser.y"
     {PASS12 (yyval.id)="package";}
     }
     break;
@@ -5688,7 +5757,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2488 "parser.y"
+#line 2515 "parser.y"
     {PASS12 (yyval.id)="namespace";}
     }
     break;
@@ -5699,7 +5768,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2489 "parser.y"
+#line 2516 "parser.y"
     {PASS12 (yyval.id)="NaN";}
     }
     break;
@@ -5710,7 +5779,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2490 "parser.y"
+#line 2517 "parser.y"
     {PASS12 (yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
@@ -5721,7 +5790,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2492 "parser.y"
+#line 2519 "parser.y"
     {PASS12 (yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;}
     }
     break;
@@ -5732,7 +5801,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2493 "parser.y"
+#line 2520 "parser.y"
     {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));}
     }
     break;
@@ -5743,7 +5812,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2495 "parser.y"
+#line 2522 "parser.y"
     {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;}
     }
     break;
@@ -5754,7 +5823,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2496 "parser.y"
+#line 2523 "parser.y"
     {PASS12 endpackage();(yyval.code)=0;}
     }
     break;
@@ -5765,7 +5834,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2497 "parser.y"
+#line 2524 "parser.y"
     {PASS12 startpackage("");}
     }
     break;
@@ -5776,7 +5845,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2498 "parser.y"
+#line 2525 "parser.y"
     {PASS12 endpackage();(yyval.code)=0;}
     }
     break;
@@ -5787,7 +5856,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2521 "parser.y"
+#line 2548 "parser.y"
     {
        PASS12
        slotinfo_t*s = registry_find(state->package, (yyvsp[(2) - (2)].id));
@@ -5805,7 +5874,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2529 "parser.y"
+#line 2556 "parser.y"
     {
        PASS12
        slotinfo_t*s = registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
@@ -5826,7 +5895,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2540 "parser.y"
+#line 2567 "parser.y"
     {
        PASS12
        if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6) && as3_pass==1) {
@@ -5849,7 +5918,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2556 "parser.y"
+#line 2583 "parser.y"
     {PASS12 (yyval.flags).flags=0;(yyval.flags).ns=0;}
     }
     break;
@@ -5860,7 +5929,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2557 "parser.y"
+#line 2584 "parser.y"
     {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
     }
     break;
@@ -5871,7 +5940,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2558 "parser.y"
+#line 2585 "parser.y"
     {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
     }
     break;
@@ -5882,7 +5951,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2559 "parser.y"
+#line 2586 "parser.y"
     {
     PASS12 
     (yyval.flags).flags=(yyvsp[(1) - (2)].flags).flags|(yyvsp[(2) - (2)].flags).flags;
@@ -5899,7 +5968,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2566 "parser.y"
+#line 2593 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PUBLIC;(yyval.flags).ns=0;}
     }
     break;
@@ -5910,7 +5979,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2567 "parser.y"
+#line 2594 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PRIVATE;(yyval.flags).ns=0;}
     }
     break;
@@ -5921,7 +5990,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2568 "parser.y"
+#line 2595 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PROTECTED;(yyval.flags).ns=0;}
     }
     break;
@@ -5932,7 +6001,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2569 "parser.y"
+#line 2596 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_STATIC;(yyval.flags).ns=0;}
     }
     break;
@@ -5943,7 +6012,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2570 "parser.y"
+#line 2597 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_DYNAMIC;(yyval.flags).ns=0;}
     }
     break;
@@ -5954,7 +6023,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2571 "parser.y"
+#line 2598 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_FINAL;(yyval.flags).ns=0;}
     }
     break;
@@ -5965,7 +6034,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2572 "parser.y"
+#line 2599 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_OVERRIDE;(yyval.flags).ns=0;}
     }
     break;
@@ -5976,7 +6045,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2573 "parser.y"
+#line 2600 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_NATIVE;(yyval.flags).ns=0;}
     }
     break;
@@ -5987,7 +6056,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2574 "parser.y"
+#line 2601 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_PACKAGEINTERNAL;(yyval.flags).ns=0;}
     }
     break;
@@ -5998,7 +6067,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2575 "parser.y"
+#line 2602 "parser.y"
     {PASS12 (yyval.flags).flags=FLAG_NAMESPACE;
                                (yyval.flags).ns=(yyvsp[(1) - (1)].id);
                        }
@@ -6011,7 +6080,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2579 "parser.y"
+#line 2606 "parser.y"
     {PASS12 (yyval.classinfo)=0;}
     }
     break;
@@ -6022,7 +6091,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2580 "parser.y"
+#line 2607 "parser.y"
     {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
     }
     break;
@@ -6033,7 +6102,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2582 "parser.y"
+#line 2609 "parser.y"
     {PASS12 (yyval.classinfo_list)=list_new();}
     }
     break;
@@ -6044,7 +6113,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2583 "parser.y"
+#line 2610 "parser.y"
     {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
     }
     break;
@@ -6055,7 +6124,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2585 "parser.y"
+#line 2612 "parser.y"
     {PASS12 (yyval.classinfo_list)=list_new();}
     }
     break;
@@ -6066,7 +6135,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2586 "parser.y"
+#line 2613 "parser.y"
     {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
     }
     break;
@@ -6077,7 +6146,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2590 "parser.y"
+#line 2617 "parser.y"
     {PASS12 startclass(&(yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));}
     }
     break;
@@ -6088,7 +6157,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2592 "parser.y"
+#line 2619 "parser.y"
     {PASS12 endclass();(yyval.code)=0;}
     }
     break;
@@ -6099,7 +6168,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2596 "parser.y"
+#line 2623 "parser.y"
     {PASS12 (yyvsp[(1) - (5)].flags).flags|=FLAG_INTERFACE;
                                           startclass(&(yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));}
     }
@@ -6111,7 +6180,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2599 "parser.y"
+#line 2626 "parser.y"
     {PASS12 endclass();(yyval.code)=0;}
     }
     break;
@@ -6122,7 +6191,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2608 "parser.y"
+#line 2635 "parser.y"
     {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
     }
     break;
@@ -6133,7 +6202,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2612 "parser.y"
+#line 2639 "parser.y"
     {
     code_t*c = state->cls->static_init->header;
     c = code_append(c, (yyvsp[(1) - (1)].code));  
@@ -6148,7 +6217,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2623 "parser.y"
+#line 2650 "parser.y"
     {
     syntaxerror("variable declarations not allowed in interfaces");
 }
@@ -6161,7 +6230,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2626 "parser.y"
+#line 2653 "parser.y"
     {
     PASS12
     (yyvsp[(1) - (8)].flags).flags |= FLAG_PUBLIC;
@@ -6181,7 +6250,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2701 "parser.y"
+#line 2728 "parser.y"
     {PASS12 setslotstate(&(yyvsp[(1) - (2)].flags),(yyvsp[(2) - (2)].token));}
     }
     break;
@@ -6192,7 +6261,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2701 "parser.y"
+#line 2728 "parser.y"
     {PASS12 (yyval.code)=(yyvsp[(4) - (4)].code);setslotstate(0, 0);}
     }
     break;
@@ -6203,7 +6272,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2703 "parser.y"
+#line 2730 "parser.y"
     {PASS12 (yyval.code)=0;}
     }
     break;
@@ -6214,7 +6283,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2704 "parser.y"
+#line 2731 "parser.y"
     {PASS12 (yyval.code)=0;}
     }
     break;
@@ -6225,7 +6294,7 @@ PASS2
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2707 "parser.y"
+#line 2734 "parser.y"
     {
 PASS12
     int flags = slotstate_flags->flags;
@@ -6315,7 +6384,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2790 "parser.y"
+#line 2817 "parser.y"
     {(yyval.constant)=0;}
     }
     break;
@@ -6326,7 +6395,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2791 "parser.y"
+#line 2818 "parser.y"
     {
   (yyval.constant) = malloc(sizeof(constant_t));
   *(yyval.constant) = node_eval((yyvsp[(2) - (2)].node));
@@ -6343,7 +6412,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2800 "parser.y"
+#line 2827 "parser.y"
     {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));}
     }
     break;
@@ -6354,7 +6423,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2801 "parser.y"
+#line 2828 "parser.y"
     {
     (yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));
 }
@@ -6367,7 +6436,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2804 "parser.y"
+#line 2831 "parser.y"
     {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));}
     }
     break;
@@ -6378,7 +6447,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2805 "parser.y"
+#line 2832 "parser.y"
     {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);free((char*)(yyvsp[(1) - (1)].str).str);}
     }
     break;
@@ -6389,7 +6458,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2806 "parser.y"
+#line 2833 "parser.y"
     {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));}
     }
     break;
@@ -6400,7 +6469,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2807 "parser.y"
+#line 2834 "parser.y"
     {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));}
     }
     break;
@@ -6411,7 +6480,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2808 "parser.y"
+#line 2835 "parser.y"
     {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));}
     }
     break;
@@ -6422,7 +6491,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2809 "parser.y"
+#line 2836 "parser.y"
     {(yyval.constant) = constant_new_undefined((yyvsp[(1) - (1)].token));}
     }
     break;
@@ -6433,7 +6502,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2810 "parser.y"
+#line 2837 "parser.y"
     {(yyval.constant) = constant_new_float(__builtin_nan(""));}
     }
     break;
@@ -6444,7 +6513,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2823 "parser.y"
+#line 2850 "parser.y"
     {
    multiname_t m = {QNAME, &stdns, 0, "XML"};
    typedcode_t v;
@@ -6464,7 +6533,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2834 "parser.y"
+#line 2861 "parser.y"
     {PASS_ALWAYS if(!xml_level++) tokenizer_begin_xml();}
     }
     break;
@@ -6475,7 +6544,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2835 "parser.y"
+#line 2862 "parser.y"
     {PASS_ALWAYS tokenizer_begin_xmltext();}
     }
     break;
@@ -6486,7 +6555,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2836 "parser.y"
+#line 2863 "parser.y"
     {PASS_ALWAYS if(!--xml_level) tokenizer_end_xml(); else tokenizer_begin_xmltext();}
     }
     break;
@@ -6497,7 +6566,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2838 "parser.y"
+#line 2865 "parser.y"
     {PASS_ALWAYS tokenizer_begin_xmltext();}
     }
     break;
@@ -6508,7 +6577,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2838 "parser.y"
+#line 2865 "parser.y"
     {
     (yyval.node) = (yyvsp[(2) - (4)].node);
 }
@@ -6521,7 +6590,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2841 "parser.y"
+#line 2868 "parser.y"
     {PASS_ALWAYS tokenizer_begin_xml();}
     }
     break;
@@ -6532,7 +6601,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2841 "parser.y"
+#line 2868 "parser.y"
     {
     (yyval.node) = (yyvsp[(2) - (4)].node);
 }
@@ -6545,7 +6614,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2844 "parser.y"
+#line 2871 "parser.y"
     {(yyval.node)=mkstringnode("");}
     }
     break;
@@ -6556,7 +6625,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2845 "parser.y"
+#line 2872 "parser.y"
     {
     (yyval.node) = mkaddnode((yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
 }
@@ -6569,7 +6638,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2848 "parser.y"
+#line 2875 "parser.y"
     {
     char* str = string_cstr(&(yyvsp[(2) - (2)].str));
     (yyval.node) = mkaddnode((yyvsp[(1) - (2)].node),mkstringnode(str));
@@ -6584,7 +6653,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2853 "parser.y"
+#line 2880 "parser.y"
     {
     (yyval.node) = mkaddnode((yyvsp[(1) - (2)].node), mkstringnode(">"));
 }
@@ -6597,7 +6666,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2856 "parser.y"
+#line 2883 "parser.y"
     {
     (yyval.node) = mkaddnode((yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
 }
@@ -6610,7 +6679,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2859 "parser.y"
+#line 2886 "parser.y"
     {
     (yyval.node) = mkaddnode((yyvsp[(1) - (3)].node), mkaddnode((yyvsp[(2) - (3)].node),(yyvsp[(3) - (3)].node)));
 }
@@ -6623,7 +6692,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2862 "parser.y"
+#line 2889 "parser.y"
     {
     (yyval.node) = mkstringnode((yyvsp[(1) - (1)].id));
 }
@@ -6636,7 +6705,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2865 "parser.y"
+#line 2892 "parser.y"
     {
     (yyval.node) = (yyvsp[(1) - (1)].node);
 }
@@ -6649,7 +6718,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2869 "parser.y"
+#line 2896 "parser.y"
     {
     (yyval.node) = mkstringnode("");
 }
@@ -6662,7 +6731,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2872 "parser.y"
+#line 2899 "parser.y"
     {
     (yyval.node) = mkaddnode(mkstringnode(" "),(yyvsp[(1) - (1)].node));
 }
@@ -6675,7 +6744,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2876 "parser.y"
+#line 2903 "parser.y"
     {
     //$$ = allocprintf("<%s%s/>", $2, $3, $5, $8);
     (yyval.node) = mkaddnode(mkaddnode(mkaddnode(mkstringnode("<"),(yyvsp[(2) - (6)].node)),(yyvsp[(3) - (6)].node)),mkstringnode("/>"));
@@ -6689,7 +6758,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2880 "parser.y"
+#line 2907 "parser.y"
     {
     //$$ = allocprintf("<%s%s>%s</%s>", $2, $3, $5, $8);
     (yyval.node) = mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(
@@ -6704,7 +6773,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2885 "parser.y"
+#line 2912 "parser.y"
     {
     //$$ = allocprintf("<%s%s>%s%s</%s>", $2, $3, $5, $6, $9);
     (yyval.node) = mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(mkaddnode(
@@ -6719,7 +6788,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2891 "parser.y"
+#line 2918 "parser.y"
     {
     (yyval.node) = (yyvsp[(1) - (1)].node);
 }
@@ -6732,7 +6801,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2894 "parser.y"
+#line 2921 "parser.y"
     {
     (yyval.node) = mkaddnode((yyvsp[(1) - (2)].node), mkaddnode(mkstringnode(" "),(yyvsp[(2) - (2)].node)));
 }
@@ -6745,7 +6814,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2897 "parser.y"
+#line 2924 "parser.y"
     {
     (yyval.node) = (yyvsp[(1) - (1)].node);
 }
@@ -6758,7 +6827,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2900 "parser.y"
+#line 2927 "parser.y"
     {
     char* str = string_cstr(&(yyvsp[(3) - (3)].str));
     (yyval.node) = mkaddnode((yyvsp[(1) - (3)].node), mkstringnode(concat2("=",str)));
@@ -6773,7 +6842,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2905 "parser.y"
+#line 2932 "parser.y"
     {
     (yyval.node) = mkaddnode((yyvsp[(1) - (3)].node), mkaddnode(mkstringnode("=\""), mkaddnode((yyvsp[(3) - (3)].node), mkstringnode("\""))));
 }
@@ -6786,7 +6855,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2908 "parser.y"
+#line 2935 "parser.y"
     {
     (yyval.node) = mkaddnode(mkaddnode(mkstringnode(concat2((yyvsp[(1) - (3)].id),"=\"")), (yyvsp[(3) - (3)].node)), mkstringnode("\""));
 }
@@ -6799,7 +6868,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2911 "parser.y"
+#line 2938 "parser.y"
     {
     char* str = string_cstr(&(yyvsp[(3) - (3)].str));
     (yyval.node)=mkstringnode(allocprintf("%s=%s", (yyvsp[(1) - (3)].id),str));
@@ -6815,7 +6884,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2921 "parser.y"
+#line 2948 "parser.y"
     {
     PASS12
     memset(&(yyval.params),0,sizeof((yyval.params)));
@@ -6829,7 +6898,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2925 "parser.y"
+#line 2952 "parser.y"
     {
     PASS12
     (yyval.params)=(yyvsp[(1) - (1)].params);
@@ -6843,7 +6912,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2931 "parser.y"
+#line 2958 "parser.y"
     {
     PASS12
     memset(&(yyval.params),0,sizeof((yyval.params)));
@@ -6859,7 +6928,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2937 "parser.y"
+#line 2964 "parser.y"
     {
     PASS12
     (yyval.params) =(yyvsp[(1) - (4)].params);
@@ -6875,7 +6944,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2945 "parser.y"
+#line 2972 "parser.y"
     {
     PASS12
     (yyval.params) = (yyvsp[(1) - (3)].params);
@@ -6890,7 +6959,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2950 "parser.y"
+#line 2977 "parser.y"
     {
     PASS12
     memset(&(yyval.params),0,sizeof((yyval.params)));
@@ -6905,7 +6974,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2956 "parser.y"
+#line 2983 "parser.y"
     {
      PASS12
      (yyval.param) = rfx_calloc(sizeof(param_t));
@@ -6923,7 +6992,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2964 "parser.y"
+#line 2991 "parser.y"
     {
      PASS12
      (yyval.param) = rfx_calloc(sizeof(param_t));
@@ -6941,7 +7010,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2974 "parser.y"
+#line 3001 "parser.y"
     {PASS12 (yyval.token)=0;}
     }
     break;
@@ -6952,7 +7021,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2977 "parser.y"
+#line 3004 "parser.y"
     {PASS12 startfunction(&(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));}
     }
     break;
@@ -6963,7 +7032,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2978 "parser.y"
+#line 3005 "parser.y"
     {
     PASS1 
     endfunction(&(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),0,0);
@@ -6987,7 +7056,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2994 "parser.y"
+#line 3021 "parser.y"
     {PASS12 (yyval.id)=0;}
     }
     break;
@@ -6998,7 +7067,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2996 "parser.y"
+#line 3023 "parser.y"
     {PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));}
     }
     break;
@@ -7009,7 +7078,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 2997 "parser.y"
+#line 3024 "parser.y"
     {
     PASS1
     endfunction(0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),0,0);
@@ -7037,7 +7106,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3019 "parser.y"
+#line 3046 "parser.y"
     {
     PASS1 NEW(unresolvedinfo_t,c);
           memset(c, 0, sizeof(*c));
@@ -7065,7 +7134,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3038 "parser.y"
+#line 3065 "parser.y"
     {
     PASS1 NEW(unresolvedinfo_t,c);
           memset(c, 0, sizeof(*c));
@@ -7088,7 +7157,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3055 "parser.y"
+#line 3082 "parser.y"
     {PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));}
     }
     break;
@@ -7099,7 +7168,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3056 "parser.y"
+#line 3083 "parser.y"
     {PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));}
     }
     break;
@@ -7110,7 +7179,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3058 "parser.y"
+#line 3085 "parser.y"
     {PASS12 (yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);}
     }
     break;
@@ -7121,7 +7190,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3059 "parser.y"
+#line 3086 "parser.y"
     {PASS12 (yyval.classinfo)=TYPE_ANY;}
     }
     break;
@@ -7132,7 +7201,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3060 "parser.y"
+#line 3087 "parser.y"
     {PASS12 (yyval.classinfo)=TYPE_VOID;}
     }
     break;
@@ -7143,7 +7212,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3069 "parser.y"
+#line 3096 "parser.y"
     {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
     }
     break;
@@ -7154,7 +7223,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3070 "parser.y"
+#line 3097 "parser.y"
     {PASS12 (yyval.classinfo)=0;}
     }
     break;
@@ -7165,7 +7234,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3074 "parser.y"
+#line 3101 "parser.y"
     {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
     }
     break;
@@ -7176,7 +7245,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3075 "parser.y"
+#line 3102 "parser.y"
     {(yyval.value_list)=(yyvsp[(2) - (3)].value_list);}
     }
     break;
@@ -7187,7 +7256,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3077 "parser.y"
+#line 3104 "parser.y"
     {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
     }
     break;
@@ -7198,7 +7267,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3081 "parser.y"
+#line 3108 "parser.y"
     {(yyval.value_list).number=1;
                                                   (yyval.value_list).cc = (yyvsp[(1) - (1)].value).c;
                                                  }
@@ -7211,7 +7280,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3085 "parser.y"
+#line 3112 "parser.y"
     {(yyval.value_list) = (yyvsp[(1) - (2)].value_list);}
     }
     break;
@@ -7222,7 +7291,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3086 "parser.y"
+#line 3113 "parser.y"
     {
                                                   (yyval.value_list).number= (yyvsp[(1) - (2)].value_list).number+1;
                                                   (yyval.value_list).cc = code_append((yyvsp[(1) - (2)].value_list).cc, (yyvsp[(2) - (2)].value).c);
@@ -7236,7 +7305,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3092 "parser.y"
+#line 3119 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(2) - (4)].node));
     (yyval.value).c = v.c;
@@ -7249,6 +7318,9 @@ PASS12
         (yyval.value).c = code_append((yyval.value).c, paramcode);
         (yyval.value).c = abc_constructprop2((yyval.value).c, name, (yyvsp[(4) - (4)].value_list).number);
         multiname_destroy(name);
+    } else if(is_getlocal((yyval.value).c)) {
+        (yyval.value).c = code_append((yyval.value).c, paramcode);
+        (yyval.value).c = abc_construct((yyval.value).c, (yyvsp[(4) - (4)].value_list).number);
     } else if(TYPE_IS_CLASS(v.t) && v.t->data) {
         code_free((yyval.value).c);
         classinfo_t*c = v.t->data;
@@ -7285,7 +7357,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3136 "parser.y"
+#line 3166 "parser.y"
     {
    
     typedcode_t v = node_read((yyvsp[(1) - (4)].node));
@@ -7344,7 +7416,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3186 "parser.y"
+#line 3216 "parser.y"
     {
     if(!state->cls) syntaxerror("super() not allowed outside of a class");
     if(!state->method) syntaxerror("super() not allowed outside of a function");
@@ -7374,7 +7446,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3207 "parser.y"
+#line 3237 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(2) - (2)].node));
     (yyval.value).c = v.c;
@@ -7405,7 +7477,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3229 "parser.y"
+#line 3259 "parser.y"
     {
     (yyval.code) = abc_returnvoid(0);
 }
@@ -7418,7 +7490,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3232 "parser.y"
+#line 3262 "parser.y"
     {
     (yyval.code) = (yyvsp[(2) - (2)].value).c;
     (yyval.code) = abc_returnvalue((yyval.code));
@@ -7432,7 +7504,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3239 "parser.y"
+#line 3269 "parser.y"
     {
     (yyval.value) = node_read((yyvsp[(1) - (1)].node));
 }
@@ -7445,7 +7517,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3242 "parser.y"
+#line 3272 "parser.y"
     {
     (yyval.value) = node_read((yyvsp[(1) - (1)].node));
 }
@@ -7458,7 +7530,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3245 "parser.y"
+#line 3275 "parser.y"
     {
     (yyval.node) = mkmultinode(&node_comma, (yyvsp[(1) - (1)].node));
 }
@@ -7471,7 +7543,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3248 "parser.y"
+#line 3278 "parser.y"
     {
     (yyval.node) = multinode_extend((yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
 }
@@ -7484,7 +7556,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3251 "parser.y"
+#line 3281 "parser.y"
     { 
     (yyval.code) = node_exec((yyvsp[(1) - (1)].node)); 
 }
@@ -7497,7 +7569,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3254 "parser.y"
+#line 3284 "parser.y"
     { 
     (yyval.code) = (yyvsp[(1) - (3)].code);
     (yyval.code) = code_append((yyval.code), node_exec((yyvsp[(3) - (3)].node))); 
@@ -7511,7 +7583,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3259 "parser.y"
+#line 3289 "parser.y"
     {(yyval.value_list).cc=0;(yyval.value_list).number=0;}
     }
     break;
@@ -7522,7 +7594,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3260 "parser.y"
+#line 3290 "parser.y"
     {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);}
     }
     break;
@@ -7533,7 +7605,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3262 "parser.y"
+#line 3292 "parser.y"
     {(yyval.code)=abc_pushstring(0,(yyvsp[(1) - (1)].id));}
     }
     break;
@@ -7544,7 +7616,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3263 "parser.y"
+#line 3293 "parser.y"
     {(yyval.code)=abc_pushstring2(0,&(yyvsp[(1) - (1)].str));}
     }
     break;
@@ -7555,7 +7627,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3264 "parser.y"
+#line 3294 "parser.y"
     {syntaxerror("dictionary keys must be strings");}
     }
     break;
@@ -7566,7 +7638,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3265 "parser.y"
+#line 3295 "parser.y"
     {syntaxerror("dictionary keys must be strings");}
     }
     break;
@@ -7577,7 +7649,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3266 "parser.y"
+#line 3296 "parser.y"
     {syntaxerror("dictionary keys must be strings");}
     }
     break;
@@ -7588,7 +7660,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3268 "parser.y"
+#line 3298 "parser.y"
     {
     (yyval.value_list).cc = 0;
     (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].code));
@@ -7604,7 +7676,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3274 "parser.y"
+#line 3304 "parser.y"
     {
     (yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc;
     (yyval.value_list).number = (yyvsp[(1) - (5)].value_list).number+2;
@@ -7620,7 +7692,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3283 "parser.y"
+#line 3313 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
@@ -7631,7 +7703,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3284 "parser.y"
+#line 3314 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
@@ -7642,7 +7714,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3285 "parser.y"
+#line 3315 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
@@ -7653,7 +7725,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3286 "parser.y"
+#line 3316 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
@@ -7664,7 +7736,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3287 "parser.y"
+#line 3317 "parser.y"
     {(yyval.node) = mkcodenode((yyvsp[(1) - (1)].value));}
     }
     break;
@@ -7675,7 +7747,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3288 "parser.y"
+#line 3318 "parser.y"
     {(yyval.node) = (yyvsp[(1) - (1)].node);}
     }
     break;
@@ -7686,7 +7758,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3290 "parser.y"
+#line 3320 "parser.y"
     { 
     (yyval.node) = mkconstnode((yyvsp[(1) - (1)].constant));
 }
@@ -7699,7 +7771,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3294 "parser.y"
+#line 3324 "parser.y"
     {
     (yyval.node) = (yyvsp[(1) - (1)].node);
 }
@@ -7712,7 +7784,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3299 "parser.y"
+#line 3329 "parser.y"
     {
     typedcode_t v;
     v.c = 0;
@@ -7739,7 +7811,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3317 "parser.y"
+#line 3347 "parser.y"
     {
     PASS1
     state->method->need_arguments = 1;
@@ -7758,7 +7830,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3328 "parser.y"
+#line 3358 "parser.y"
     {
     typedcode_t v;
     v.c = code_new();
@@ -7776,7 +7848,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3338 "parser.y"
+#line 3368 "parser.y"
     {
     typedcode_t v;
     v.c = code_new();
@@ -7794,7 +7866,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3347 "parser.y"
+#line 3377 "parser.y"
     {(yyval.node) = mknode2(&node_lt,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7805,7 +7877,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3348 "parser.y"
+#line 3378 "parser.y"
     {(yyval.node) = mknode2(&node_gt,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7816,7 +7888,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3349 "parser.y"
+#line 3379 "parser.y"
     {(yyval.node) = mknode2(&node_le,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7827,7 +7899,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3350 "parser.y"
+#line 3380 "parser.y"
     {(yyval.node) = mknode2(&node_ge,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7838,7 +7910,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3351 "parser.y"
+#line 3381 "parser.y"
     {(yyval.node) = mknode2(&node_eqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7849,7 +7921,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3352 "parser.y"
+#line 3382 "parser.y"
     {(yyval.node) = mknode2(&node_eqeqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7860,7 +7932,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3353 "parser.y"
+#line 3383 "parser.y"
     {(yyval.node) = mknode2(&node_noteqeq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7871,7 +7943,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3354 "parser.y"
+#line 3384 "parser.y"
     {(yyval.node) = mknode2(&node_noteq,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7882,7 +7954,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3355 "parser.y"
+#line 3385 "parser.y"
     {(yyval.node) = mknode2(&node_oror,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7893,7 +7965,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3356 "parser.y"
+#line 3386 "parser.y"
     {(yyval.node) = mknode2(&node_andand,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7904,7 +7976,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3357 "parser.y"
+#line 3387 "parser.y"
     {(yyval.node) = mknode1(&node_not, (yyvsp[(2) - (2)].node));}
     }
     break;
@@ -7915,7 +7987,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3358 "parser.y"
+#line 3388 "parser.y"
     {(yyval.node) = mknode1(&node_bitnot, (yyvsp[(2) - (2)].node));}
     }
     break;
@@ -7926,7 +7998,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3359 "parser.y"
+#line 3389 "parser.y"
     {(yyval.node) = mknode2(&node_bitand, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7937,7 +8009,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3360 "parser.y"
+#line 3390 "parser.y"
     {(yyval.node) = mknode2(&node_bitxor, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7948,7 +8020,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3361 "parser.y"
+#line 3391 "parser.y"
     {(yyval.node) = mknode2(&node_bitor, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7959,7 +8031,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3362 "parser.y"
+#line 3392 "parser.y"
     {(yyval.node) = mknode2(&node_shr, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7970,7 +8042,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3363 "parser.y"
+#line 3393 "parser.y"
     {(yyval.node) = mknode2(&node_ushr, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7981,7 +8053,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3364 "parser.y"
+#line 3394 "parser.y"
     {(yyval.node) = mknode2(&node_shl, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -7992,7 +8064,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3365 "parser.y"
+#line 3395 "parser.y"
     {(yyval.node) = mknode2(&node_div, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8003,7 +8075,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3366 "parser.y"
+#line 3396 "parser.y"
     {(yyval.node) = mknode2(&node_mod, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8014,7 +8086,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3367 "parser.y"
+#line 3397 "parser.y"
     {(yyval.node) = mknode2(&node_plus, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8025,7 +8097,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3368 "parser.y"
+#line 3398 "parser.y"
     {(yyval.node) = mknode2(&node_minus, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8036,7 +8108,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3369 "parser.y"
+#line 3399 "parser.y"
     {(yyval.node) = mknode2(&node_multiply, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8047,7 +8119,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3370 "parser.y"
+#line 3400 "parser.y"
     {(yyval.node) = mknode2(&node_in, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8058,7 +8130,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3371 "parser.y"
+#line 3401 "parser.y"
     {(yyval.node) = mknode2(&node_as, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8069,7 +8141,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3372 "parser.y"
+#line 3402 "parser.y"
     {(yyval.node) = mknode2(&node_instanceof, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8080,7 +8152,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3373 "parser.y"
+#line 3403 "parser.y"
     {(yyval.node) = mknode2(&node_is, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8091,7 +8163,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3374 "parser.y"
+#line 3404 "parser.y"
     {(yyval.node) = mknode1(&node_typeof, (yyvsp[(2) - (2)].node));}
     }
     break;
@@ -8102,7 +8174,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3375 "parser.y"
+#line 3405 "parser.y"
     {(yyval.node) = mknode1(&node_void, (yyvsp[(2) - (2)].node));}
     }
     break;
@@ -8113,7 +8185,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3376 "parser.y"
+#line 3406 "parser.y"
     { (yyval.node) = mkconstnode(constant_new_undefined());}
     }
     break;
@@ -8124,7 +8196,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3377 "parser.y"
+#line 3407 "parser.y"
     { (yyval.node)=(yyvsp[(2) - (3)].node);}
     }
     break;
@@ -8135,7 +8207,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3378 "parser.y"
+#line 3408 "parser.y"
     {(yyval.node) = mknode1(&node_neg, (yyvsp[(2) - (2)].node));}
     }
     break;
@@ -8146,7 +8218,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3379 "parser.y"
+#line 3409 "parser.y"
     {(yyval.node) = mknode2(&node_arraylookup, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node));}
     }
     break;
@@ -8157,7 +8229,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3380 "parser.y"
+#line 3410 "parser.y"
     {(yyval.node) = mknode2(&node_muleq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8168,7 +8240,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3381 "parser.y"
+#line 3411 "parser.y"
     {(yyval.node) = mknode2(&node_modeq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8179,7 +8251,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3382 "parser.y"
+#line 3412 "parser.y"
     {(yyval.node) = mknode2(&node_shleq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8190,7 +8262,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3383 "parser.y"
+#line 3413 "parser.y"
     {(yyval.node) = mknode2(&node_shreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8201,7 +8273,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3384 "parser.y"
+#line 3414 "parser.y"
     {(yyval.node) = mknode2(&node_ushreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8212,7 +8284,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3385 "parser.y"
+#line 3415 "parser.y"
     { (yyval.node) = mknode2(&node_diveq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8223,7 +8295,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3386 "parser.y"
+#line 3416 "parser.y"
     { (yyval.node) = mknode2(&node_bitoreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8234,7 +8306,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3387 "parser.y"
+#line 3417 "parser.y"
     { (yyval.node) = mknode2(&node_bitxoreq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8245,7 +8317,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3388 "parser.y"
+#line 3418 "parser.y"
     { (yyval.node) = mknode2(&node_bitandeq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8256,7 +8328,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3389 "parser.y"
+#line 3419 "parser.y"
     { (yyval.node) = mknode2(&node_pluseq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8267,7 +8339,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3390 "parser.y"
+#line 3420 "parser.y"
     { (yyval.node) = mknode2(&node_minuseq, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8278,7 +8350,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3391 "parser.y"
+#line 3421 "parser.y"
     { (yyval.node) = mknode2(&node_assign, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));}
     }
     break;
@@ -8289,7 +8361,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3392 "parser.y"
+#line 3422 "parser.y"
     { (yyval.node) = mknode3(&node_tenary, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node), (yyvsp[(5) - (5)].node));}
     }
     break;
@@ -8300,7 +8372,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3394 "parser.y"
+#line 3424 "parser.y"
     { (yyval.node) = mknode1(&node_rplusplus, (yyvsp[(1) - (2)].node));}
     }
     break;
@@ -8311,7 +8383,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3395 "parser.y"
+#line 3425 "parser.y"
     { (yyval.node) = mknode1(&node_rminusminus, (yyvsp[(1) - (2)].node));}
     }
     break;
@@ -8322,7 +8394,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3396 "parser.y"
+#line 3426 "parser.y"
     {(yyval.node) = mknode1(&node_lplusplus, (yyvsp[(2) - (2)].node)); }
     }
     break;
@@ -8333,7 +8405,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3397 "parser.y"
+#line 3427 "parser.y"
     {(yyval.node) = mknode1(&node_lminusminus, (yyvsp[(2) - (2)].node)); }
     }
     break;
@@ -8344,7 +8416,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3400 "parser.y"
+#line 3430 "parser.y"
     { if(!state->cls->info)
                   syntaxerror("super keyword not allowed outside a class");
               classinfo_t*t = state->cls->info->superclass;
@@ -8367,7 +8439,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3414 "parser.y"
+#line 3444 "parser.y"
     {
     typedcode_t v;
     multiname_t m = {MULTINAMEA, 0, &nopackage_namespace_set, (yyvsp[(2) - (2)].id)};
@@ -8384,7 +8456,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3422 "parser.y"
+#line 3452 "parser.y"
     {PASS12 new_state();state->xmlfilter=1;}
     }
     break;
@@ -8395,7 +8467,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3422 "parser.y"
+#line 3452 "parser.y"
     {
     PASS1 old_state();
     PASS2
@@ -8458,7 +8530,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3476 "parser.y"
+#line 3506 "parser.y"
     {(yyval.id)=(yyvsp[(1) - (1)].id);}
     }
     break;
@@ -8469,7 +8541,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3477 "parser.y"
+#line 3507 "parser.y"
     {(yyval.id)="*";}
     }
     break;
@@ -8480,7 +8552,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3478 "parser.y"
+#line 3508 "parser.y"
     {(yyval.id)=(char*)(yyvsp[(1) - (1)].id);}
     }
     break;
@@ -8491,7 +8563,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3480 "parser.y"
+#line 3510 "parser.y"
     {(yyval.id)="*";}
     }
     break;
@@ -8502,24 +8574,9 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3488 "parser.y"
+#line 3550 "parser.y"
     {
-    typedcode_t v = node_read((yyvsp[(1) - (5)].node));
-    typedcode_t w = node_read(resolve_identifier((yyvsp[(3) - (5)].id)));
-    v.c = code_append(v.c, w.c);
-    if(!TYPE_IS_NAMESPACE(w.t)) {
-        as3_softwarning("%s might not be a namespace", (yyvsp[(3) - (5)].id));
-    }
-    v.c = converttype(v.c, w.t, TYPE_NAMESPACE);
-    multiname_t m = {RTQNAME, 0, 0, (yyvsp[(5) - (5)].id)};
-    v.c = abc_getproperty2(v.c, &m);
-    if(TYPE_IS_XML(v.t)) {
-        v.t = TYPE_XMLLIST;
-    } else {
-        v.c = abc_coerce_a(v.c);
-        v.t = TYPE_ANY;
-    }
-    (yyval.node) = mkcodenode(v);
+    (yyval.node) = get_descendants((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(5) - (5)].id), 0, 0);
 }
     }
     break;
@@ -8530,7 +8587,7 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3506 "parser.y"
+#line 3553 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (3)].node));
     multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(3) - (3)].id)};
@@ -8547,7 +8604,20 @@ PASS12
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3513 "parser.y"
+#line 3560 "parser.y"
+    {
+    (yyval.node) = get_descendants((yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].id), (yyvsp[(5) - (5)].id), 1, 0);
+}
+    }
+    break;
+
+
+  
+    case 343:
+    if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4  */
+#line 3563 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (5)].node));
     typedcode_t w = node_read((yyvsp[(4) - (5)].node));
@@ -8563,11 +8633,11 @@ PASS12
 
 
   
-    case 343:
+    case 344:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3524 "parser.y"
+#line 3574 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (4)].node));
     multiname_t m = {MULTINAMEA, 0, &nopackage_namespace_set, (yyvsp[(4) - (4)].id)};
@@ -8580,11 +8650,24 @@ PASS12
 
 
   
-    case 344:
+    case 345:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3531 "parser.y"
+#line 3582 "parser.y"
+    {
+    (yyval.node) = get_descendants((yyvsp[(1) - (6)].node), (yyvsp[(4) - (6)].id), (yyvsp[(6) - (6)].id), 0, 1);
+}
+    }
+    break;
+
+
+  
+    case 346:
+    if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4  */
+#line 3586 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (4)].node));
     multiname_t m = {MULTINAMEA, 0, &nopackage_namespace_set, (yyvsp[(4) - (4)].id)};
@@ -8597,11 +8680,24 @@ PASS12
 
 
   
-    case 345:
+    case 347:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3538 "parser.y"
+#line 3593 "parser.y"
+    {
+    (yyval.node) = get_descendants((yyvsp[(1) - (6)].node), (yyvsp[(4) - (6)].id), (yyvsp[(6) - (6)].id), 1, 1);
+}
+    }
+    break;
+
+
+  
+    case 348:
+    if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4  */
+#line 3597 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (6)].node));
     typedcode_t w = node_read((yyvsp[(5) - (6)].node));
@@ -8617,11 +8713,11 @@ PASS12
 
 
   
-    case 346:
+    case 349:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3548 "parser.y"
+#line 3607 "parser.y"
     {
     typedcode_t v = node_read((yyvsp[(1) - (6)].node));
     typedcode_t w = node_read((yyvsp[(5) - (6)].node));
@@ -8637,11 +8733,11 @@ PASS12
 
 
   
-    case 347:
+    case 350:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3559 "parser.y"
+#line 3618 "parser.y"
     {
     typedcode_t v1 = node_read((yyvsp[(1) - (3)].node));
     (yyval.value).c = v1.c;
@@ -8711,11 +8807,25 @@ PASS12
 
 
   
-    case 348:
+    case 351:
+    if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4  */
+#line 3805 "parser.y"
+    {
+    PASS2 
+    (yyval.node) = resolve_identifier((yyvsp[(1) - (1)].id));
+}
+    }
+    break;
+
+
+  
+    case 352:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3739 "parser.y"
+#line 3809 "parser.y"
     {
     PASS1
     /* Queue unresolved identifiers for checking against the parent
@@ -8743,11 +8853,11 @@ PASS12
 
 
   
-    case 349:
+    case 353:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3773 "parser.y"
+#line 3843 "parser.y"
     {
     PASS12
     NEW(namespace_decl_t,n);
@@ -8760,11 +8870,11 @@ PASS12
 
 
   
-    case 350:
+    case 354:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3780 "parser.y"
+#line 3850 "parser.y"
     {
     PASS12
     NEW(namespace_decl_t,n);
@@ -8777,11 +8887,11 @@ PASS12
 
 
   
-    case 351:
+    case 355:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3787 "parser.y"
+#line 3857 "parser.y"
     {
     PASS12
     NEW(namespace_decl_t,n);
@@ -8794,14 +8904,14 @@ PASS12
 
 
   
-    case 352:
+    case 356:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3794 "parser.y"
+#line 3864 "parser.y"
     {
     PASS12
-    trie_put(active_namespaces, (yyvsp[(2) - (2)].namespace_decl)->name, (void*)(yyvsp[(2) - (2)].namespace_decl)->url);
+    trie_put(active_namespaces, (unsigned char*)(yyvsp[(2) - (2)].namespace_decl)->name, (void*)(yyvsp[(2) - (2)].namespace_decl)->url);
 
     namespace_t access = modifiers2access(&(yyvsp[(1) - (2)].flags));
     varinfo_t* var = varinfo_register_global(access.access, state->package, (yyvsp[(2) - (2)].namespace_decl)->name);
@@ -8825,25 +8935,26 @@ PASS12
 
 
   
-    case 353:
+    case 357:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3817 "parser.y"
+#line 3887 "parser.y"
     {
-    as3_warning("default xml namespaces not supported yet");
     (yyval.code) = 0;
+    (yyval.code) = code_append((yyval.code), node_read((yyvsp[(4) - (4)].node)).c);
+    (yyval.code) = abc_dxnslate((yyval.code));
 }
     }
     break;
 
 
   
-    case 354:
+    case 358:
     if(as3_pass==2) {
 
 /* Line 1464 of skeleton.m4  */
-#line 3822 "parser.y"
+#line 3893 "parser.y"
     {
     PASS12
     const char*url = (yyvsp[(3) - (3)].classinfo)->name;
@@ -8861,7 +8972,7 @@ PASS12
         syntaxerror("%s.%s is not a namespace", (yyvsp[(3) - (3)].classinfo)->package, (yyvsp[(3) - (3)].classinfo)->name);
     url = s->value->ns->name;
 
-    trie_put(active_namespaces, (yyvsp[(3) - (3)].classinfo)->name, (void*)url);
+    trie_put(active_namespaces, (unsigned char*)(yyvsp[(3) - (3)].classinfo)->name, (void*)url);
     add_active_url(url);
     (yyval.code)=0;
 }
@@ -8872,7 +8983,7 @@ PASS12
 
 
 /* Line 1464 of skeleton.m4  */
-#line 8876 "parser.tab.c"
+#line 8987 "parser.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);