mbed I/F binding for mruby

Dependents:   mruby_mbed_web mirb_mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers parse.c Source File

parse.c

00001 /* A Bison parser, made by GNU Bison 2.4.2.  */
00002 
00003 /* Skeleton implementation for Bison's Yacc-like parsers in C
00004    
00005       Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software
00006    Foundation, Inc.
00007    
00008    This program is free software: you can redistribute it and/or modify
00009    it under the terms of the GNU General Public License as published by
00010    the Free Software Foundation, either version 3 of the License, or
00011    (at your option) any later version.
00012    
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017    
00018    You should have received a copy of the GNU General Public License
00019    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
00020 
00021 /* As a special exception, you may create a larger work that contains
00022    part or all of the Bison parser skeleton and distribute that work
00023    under terms of your choice, so long as that work isn't itself a
00024    parser generator using the skeleton or a modified version thereof
00025    as a parser skeleton.  Alternatively, if you modify or redistribute
00026    the parser skeleton itself, you may (at your option) remove this
00027    special exception, which will cause the skeleton and the resulting
00028    Bison output files to be licensed under the GNU General Public
00029    License without this special exception.
00030    
00031    This special exception was added by the Free Software Foundation in
00032    version 2.2 of Bison.  */
00033 
00034 /* C LALR(1) parser skeleton written by Richard Stallman, by
00035    simplifying the original so-called "semantic" parser.  */
00036 
00037 /* All symbols defined below should begin with yy or YY, to avoid
00038    infringing on user name space.  This should be done even for local
00039    variables, as they might otherwise be expanded by user macros.
00040    There are some unavoidable exceptions within include files to
00041    define necessary library symbols; they are noted "INFRINGES ON
00042    USER NAME SPACE" below.  */
00043 
00044 /* Identify Bison output.  */
00045 #define YYBISON 1
00046 
00047 /* Bison version.  */
00048 #define YYBISON_VERSION "2.4.2"
00049 
00050 /* Skeleton name.  */
00051 #define YYSKELETON_NAME "yacc.c"
00052 
00053 /* Pure parsers.  */
00054 #define YYPURE 1
00055 
00056 /* Push parsers.  */
00057 #define YYPUSH 0
00058 
00059 /* Pull parsers.  */
00060 #define YYPULL 1
00061 
00062 /* Using locations.  */
00063 #define YYLSP_NEEDED 0
00064 
00065 
00066 
00067 /* Copy the first part of user declarations.  */
00068 
00069 /* Line 189 of yacc.c  */
00070 #line 7 "src/parse.y"
00071 
00072 #undef PARSER_DEBUG
00073 
00074 #define YYDEBUG 1
00075 #define YYERROR_VERBOSE 1
00076 /*
00077  * Force yacc to use our memory management.  This is a little evil because
00078  * the macros assume that "parser_state *p" is in scope
00079  */
00080 #define YYMALLOC(n)    mrb_malloc(p->mrb, (n))
00081 #define YYFREE(o)      mrb_free(p->mrb, (o))
00082 #define YYSTACK_USE_ALLOCA 0
00083 
00084 #include <ctype.h>
00085 #include <errno.h>
00086 #include <stdlib.h>
00087 #include <string.h>
00088 #include "mruby.h"
00089 #include "mruby/compile.h"
00090 #include "mruby/proc.h"
00091 #include "mruby/error.h"
00092 #include "node.h"
00093 #include "mrb_throw.h"
00094 
00095 #define YYLEX_PARAM p
00096 
00097 typedef mrb_ast_node node;
00098 typedef struct mrb_parser_state parser_state;
00099 typedef struct mrb_parser_heredoc_info parser_heredoc_info;
00100 
00101 static int yyparse(parser_state *p);
00102 static int yylex(void *lval, parser_state *p);
00103 static void yyerror(parser_state *p, const char *s);
00104 static void yywarn(parser_state *p, const char *s);
00105 static void yywarning(parser_state *p, const char *s);
00106 static void backref_error(parser_state *p, node *n);
00107 static void tokadd(parser_state *p, int32_t c);
00108 
00109 #define identchar(c) (ISALNUM(c) || (c) == '_' || !ISASCII(c))
00110 
00111 typedef unsigned int stack_type;
00112 
00113 #define BITSTACK_PUSH(stack, n) ((stack) = ((stack)<<1)|((n)&1))
00114 #define BITSTACK_POP(stack)     ((stack) = (stack) >> 1)
00115 #define BITSTACK_LEXPOP(stack)  ((stack) = ((stack) >> 1) | ((stack) & 1))
00116 #define BITSTACK_SET_P(stack)   ((stack)&1)
00117 
00118 #define COND_PUSH(n)    BITSTACK_PUSH(p->cond_stack, (n))
00119 #define COND_POP()      BITSTACK_POP(p->cond_stack)
00120 #define COND_LEXPOP()   BITSTACK_LEXPOP(p->cond_stack)
00121 #define COND_P()        BITSTACK_SET_P(p->cond_stack)
00122 
00123 #define CMDARG_PUSH(n)  BITSTACK_PUSH(p->cmdarg_stack, (n))
00124 #define CMDARG_POP()    BITSTACK_POP(p->cmdarg_stack)
00125 #define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
00126 #define CMDARG_P()      BITSTACK_SET_P(p->cmdarg_stack)
00127 
00128 #define SET_LINENO(c,n) ((c)->lineno = (n))
00129 #define NODE_LINENO(c,n) do {\
00130   if (n) {\
00131      (c)->filename_index = (n)->filename_index;\
00132      (c)->lineno = (n)->lineno;\
00133   }\
00134 } while (0)
00135 
00136 #define sym(x) ((mrb_sym)(intptr_t)(x))
00137 #define nsym(x) ((node*)(intptr_t)(x))
00138 
00139 static inline mrb_sym
00140 intern_cstr_gen(parser_state *p, const char *s)
00141 {
00142   return mrb_intern_cstr(p->mrb, s);
00143 }
00144 #define intern_cstr(s) intern_cstr_gen(p,(s))
00145 
00146 static inline mrb_sym
00147 intern_gen(parser_state *p, const char *s, size_t len)
00148 {
00149   return mrb_intern(p->mrb, s, len);
00150 }
00151 #define intern(s,len) intern_gen(p,(s),(len))
00152 
00153 static inline mrb_sym
00154 intern_gen_c(parser_state *p, const char c)
00155 {
00156   return mrb_intern(p->mrb, &c, 1);
00157 }
00158 #define intern_c(c) intern_gen_c(p,(c))
00159 
00160 static void
00161 cons_free_gen(parser_state *p, node *cons)
00162 {
00163   cons->cdr = p->cells;
00164   p->cells = cons;
00165 }
00166 #define cons_free(c) cons_free_gen(p, (c))
00167 
00168 static void*
00169 parser_palloc(parser_state *p, size_t size)
00170 {
00171   void *m = mrb_pool_alloc(p->pool, size);
00172 
00173   if (!m) {
00174     MRB_THROW(p->jmp);
00175   }
00176   return m;
00177 }
00178 
00179 static node*
00180 cons_gen(parser_state *p, node *car, node *cdr)
00181 {
00182   node *c;
00183 
00184   if (p->cells) {
00185     c = p->cells;
00186     p->cells = p->cells->cdr;
00187   }
00188   else {
00189     c = (node *)parser_palloc(p, sizeof(mrb_ast_node));
00190   }
00191 
00192   c->car = car;
00193   c->cdr = cdr;
00194   c->lineno = p->lineno;
00195   c->filename_index = p->current_filename_index;
00196   return c;
00197 }
00198 #define cons(a,b) cons_gen(p,(a),(b))
00199 
00200 static node*
00201 list1_gen(parser_state *p, node *a)
00202 {
00203   return cons(a, 0);
00204 }
00205 #define list1(a) list1_gen(p, (a))
00206 
00207 static node*
00208 list2_gen(parser_state *p, node *a, node *b)
00209 {
00210   return cons(a, cons(b,0));
00211 }
00212 #define list2(a,b) list2_gen(p, (a),(b))
00213 
00214 static node*
00215 list3_gen(parser_state *p, node *a, node *b, node *c)
00216 {
00217   return cons(a, cons(b, cons(c,0)));
00218 }
00219 #define list3(a,b,c) list3_gen(p, (a),(b),(c))
00220 
00221 static node*
00222 list4_gen(parser_state *p, node *a, node *b, node *c, node *d)
00223 {
00224   return cons(a, cons(b, cons(c, cons(d, 0))));
00225 }
00226 #define list4(a,b,c,d) list4_gen(p, (a),(b),(c),(d))
00227 
00228 static node*
00229 list5_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e)
00230 {
00231   return cons(a, cons(b, cons(c, cons(d, cons(e, 0)))));
00232 }
00233 #define list5(a,b,c,d,e) list5_gen(p, (a),(b),(c),(d),(e))
00234 
00235 static node*
00236 list6_gen(parser_state *p, node *a, node *b, node *c, node *d, node *e, node *f)
00237 {
00238   return cons(a, cons(b, cons(c, cons(d, cons(e, cons(f, 0))))));
00239 }
00240 #define list6(a,b,c,d,e,f) list6_gen(p, (a),(b),(c),(d),(e),(f))
00241 
00242 static node*
00243 append_gen(parser_state *p, node *a, node *b)
00244 {
00245   node *c = a;
00246 
00247   if (!a) return b;
00248   while (c->cdr) {
00249     c = c->cdr;
00250   }
00251   if (b) {
00252     c->cdr = b;
00253   }
00254   return a;
00255 }
00256 #define append(a,b) append_gen(p,(a),(b))
00257 #define push(a,b) append_gen(p,(a),list1(b))
00258 
00259 static char*
00260 parser_strndup(parser_state *p, const char *s, size_t len)
00261 {
00262   char *b = (char *)parser_palloc(p, len+1);
00263 
00264   memcpy(b, s, len);
00265   b[len] = '\0';
00266   return b;
00267 }
00268 #define strndup(s,len) parser_strndup(p, s, len)
00269 
00270 static char*
00271 parser_strdup(parser_state *p, const char *s)
00272 {
00273   return parser_strndup(p, s, strlen(s));
00274 }
00275 #undef strdup
00276 #define strdup(s) parser_strdup(p, s)
00277 
00278 /* xxx ----------------------------- */
00279 
00280 static node*
00281 local_switch(parser_state *p)
00282 {
00283   node *prev = p->locals;
00284 
00285   p->locals = cons(0, 0);
00286   return prev;
00287 }
00288 
00289 static void
00290 local_resume(parser_state *p, node *prev)
00291 {
00292   p->locals = prev;
00293 }
00294 
00295 static void
00296 local_nest(parser_state *p)
00297 {
00298   p->locals = cons(0, p->locals);
00299 }
00300 
00301 static void
00302 local_unnest(parser_state *p)
00303 {
00304   p->locals = p->locals->cdr;
00305 }
00306 
00307 static mrb_bool
00308 local_var_p(parser_state *p, mrb_sym sym)
00309 {
00310   node *l = p->locals;
00311 
00312   while (l) {
00313     node *n = l->car;
00314     while (n) {
00315       if (sym(n->car) == sym) return TRUE;
00316       n = n->cdr;
00317     }
00318     l = l->cdr;
00319   }
00320   return FALSE;
00321 }
00322 
00323 static void
00324 local_add_f(parser_state *p, mrb_sym sym)
00325 {
00326   p->locals->car = push(p->locals->car, nsym(sym));
00327 }
00328 
00329 static void
00330 local_add(parser_state *p, mrb_sym sym)
00331 {
00332   if (!local_var_p(p, sym)) {
00333     local_add_f(p, sym);
00334   }
00335 }
00336 
00337 /* (:scope (vars..) (prog...)) */
00338 static node*
00339 new_scope(parser_state *p, node *body)
00340 {
00341   return cons((node*)NODE_SCOPE, cons(p->locals->car, body));
00342 }
00343 
00344 /* (:begin prog...) */
00345 static node*
00346 new_begin(parser_state *p, node *body)
00347 {
00348   if (body) {
00349     return list2((node*)NODE_BEGIN, body);
00350   }
00351   return cons((node*)NODE_BEGIN, 0);
00352 }
00353 
00354 #define newline_node(n) (n)
00355 
00356 /* (:rescue body rescue else) */
00357 static node*
00358 new_rescue(parser_state *p, node *body, node *resq, node *els)
00359 {
00360   return list4((node*)NODE_RESCUE, body, resq, els);
00361 }
00362 
00363 /* (:ensure body ensure) */
00364 static node*
00365 new_ensure(parser_state *p, node *a, node *b)
00366 {
00367   return cons((node*)NODE_ENSURE, cons(a, cons(0, b)));
00368 }
00369 
00370 /* (:nil) */
00371 static node*
00372 new_nil(parser_state *p)
00373 {
00374   return list1((node*)NODE_NIL);
00375 }
00376 
00377 /* (:true) */
00378 static node*
00379 new_true(parser_state *p)
00380 {
00381   return list1((node*)NODE_TRUE);
00382 }
00383 
00384 /* (:false) */
00385 static node*
00386 new_false(parser_state *p)
00387 {
00388   return list1((node*)NODE_FALSE);
00389 }
00390 
00391 /* (:alias new old) */
00392 static node*
00393 new_alias(parser_state *p, mrb_sym a, mrb_sym b)
00394 {
00395   return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b)));
00396 }
00397 
00398 /* (:if cond then else) */
00399 static node*
00400 new_if(parser_state *p, node *a, node *b, node *c)
00401 {
00402   return list4((node*)NODE_IF, a, b, c);
00403 }
00404 
00405 /* (:unless cond then else) */
00406 static node*
00407 new_unless(parser_state *p, node *a, node *b, node *c)
00408 {
00409   return list4((node*)NODE_IF, a, c, b);
00410 }
00411 
00412 /* (:while cond body) */
00413 static node*
00414 new_while(parser_state *p, node *a, node *b)
00415 {
00416   return cons((node*)NODE_WHILE, cons(a, b));
00417 }
00418 
00419 /* (:until cond body) */
00420 static node*
00421 new_until(parser_state *p, node *a, node *b)
00422 {
00423   return cons((node*)NODE_UNTIL, cons(a, b));
00424 }
00425 
00426 /* (:for var obj body) */
00427 static node*
00428 new_for(parser_state *p, node *v, node *o, node *b)
00429 {
00430   return list4((node*)NODE_FOR, v, o, b);
00431 }
00432 
00433 /* (:case a ((when ...) body) ((when...) body)) */
00434 static node*
00435 new_case(parser_state *p, node *a, node *b)
00436 {
00437   node *n = list2((node*)NODE_CASE, a);
00438   node *n2 = n;
00439 
00440   while (n2->cdr) {
00441     n2 = n2->cdr;
00442   }
00443   n2->cdr = b;
00444   return n;
00445 }
00446 
00447 /* (:postexe a) */
00448 static node*
00449 new_postexe(parser_state *p, node *a)
00450 {
00451   return cons((node*)NODE_POSTEXE, a);
00452 }
00453 
00454 /* (:self) */
00455 static node*
00456 new_self(parser_state *p)
00457 {
00458   return list1((node*)NODE_SELF);
00459 }
00460 
00461 /* (:call a b c) */
00462 static node*
00463 new_call(parser_state *p, node *a, mrb_sym b, node *c)
00464 {
00465   node *n = list4((node*)NODE_CALL, a, nsym(b), c);
00466   NODE_LINENO(n, a);
00467   return n;
00468 }
00469 
00470 /* (:fcall self mid args) */
00471 static node*
00472 new_fcall(parser_state *p, mrb_sym b, node *c)
00473 {
00474   node *n = new_self(p);
00475   NODE_LINENO(n, c);
00476   n = list4((node*)NODE_FCALL, n, nsym(b), c);
00477   NODE_LINENO(n, c);
00478   return n;
00479 }
00480 
00481 /* (:super . c) */
00482 static node*
00483 new_super(parser_state *p, node *c)
00484 {
00485   return cons((node*)NODE_SUPER, c);
00486 }
00487 
00488 /* (:zsuper) */
00489 static node*
00490 new_zsuper(parser_state *p)
00491 {
00492   return list1((node*)NODE_ZSUPER);
00493 }
00494 
00495 /* (:yield . c) */
00496 static node*
00497 new_yield(parser_state *p, node *c)
00498 {
00499   if (c) {
00500     if (c->cdr) {
00501       yyerror(p, "both block arg and actual block given");
00502     }
00503     return cons((node*)NODE_YIELD, c->car);
00504   }
00505   return cons((node*)NODE_YIELD, 0);
00506 }
00507 
00508 /* (:return . c) */
00509 static node*
00510 new_return(parser_state *p, node *c)
00511 {
00512   return cons((node*)NODE_RETURN, c);
00513 }
00514 
00515 /* (:break . c) */
00516 static node*
00517 new_break(parser_state *p, node *c)
00518 {
00519   return cons((node*)NODE_BREAK, c);
00520 }
00521 
00522 /* (:next . c) */
00523 static node*
00524 new_next(parser_state *p, node *c)
00525 {
00526   return cons((node*)NODE_NEXT, c);
00527 }
00528 
00529 /* (:redo) */
00530 static node*
00531 new_redo(parser_state *p)
00532 {
00533   return list1((node*)NODE_REDO);
00534 }
00535 
00536 /* (:retry) */
00537 static node*
00538 new_retry(parser_state *p)
00539 {
00540   return list1((node*)NODE_RETRY);
00541 }
00542 
00543 /* (:dot2 a b) */
00544 static node*
00545 new_dot2(parser_state *p, node *a, node *b)
00546 {
00547   return cons((node*)NODE_DOT2, cons(a, b));
00548 }
00549 
00550 /* (:dot3 a b) */
00551 static node*
00552 new_dot3(parser_state *p, node *a, node *b)
00553 {
00554   return cons((node*)NODE_DOT3, cons(a, b));
00555 }
00556 
00557 /* (:colon2 b c) */
00558 static node*
00559 new_colon2(parser_state *p, node *b, mrb_sym c)
00560 {
00561   return cons((node*)NODE_COLON2, cons(b, nsym(c)));
00562 }
00563 
00564 /* (:colon3 . c) */
00565 static node*
00566 new_colon3(parser_state *p, mrb_sym c)
00567 {
00568   return cons((node*)NODE_COLON3, nsym(c));
00569 }
00570 
00571 /* (:and a b) */
00572 static node*
00573 new_and(parser_state *p, node *a, node *b)
00574 {
00575   return cons((node*)NODE_AND, cons(a, b));
00576 }
00577 
00578 /* (:or a b) */
00579 static node*
00580 new_or(parser_state *p, node *a, node *b)
00581 {
00582   return cons((node*)NODE_OR, cons(a, b));
00583 }
00584 
00585 /* (:array a...) */
00586 static node*
00587 new_array(parser_state *p, node *a)
00588 {
00589   return cons((node*)NODE_ARRAY, a);
00590 }
00591 
00592 /* (:splat . a) */
00593 static node*
00594 new_splat(parser_state *p, node *a)
00595 {
00596   return cons((node*)NODE_SPLAT, a);
00597 }
00598 
00599 /* (:hash (k . v) (k . v)...) */
00600 static node*
00601 new_hash(parser_state *p, node *a)
00602 {
00603   return cons((node*)NODE_HASH, a);
00604 }
00605 
00606 /* (:sym . a) */
00607 static node*
00608 new_sym(parser_state *p, mrb_sym sym)
00609 {
00610   return cons((node*)NODE_SYM, nsym(sym));
00611 }
00612 
00613 static mrb_sym
00614 new_strsym(parser_state *p, node* str)
00615 {
00616   const char *s = (const char*)str->cdr->car;
00617   size_t len = (size_t)str->cdr->cdr;
00618 
00619   return mrb_intern(p->mrb, s, len);
00620 }
00621 
00622 /* (:lvar . a) */
00623 static node*
00624 new_lvar(parser_state *p, mrb_sym sym)
00625 {
00626   return cons((node*)NODE_LVAR, nsym(sym));
00627 }
00628 
00629 /* (:gvar . a) */
00630 static node*
00631 new_gvar(parser_state *p, mrb_sym sym)
00632 {
00633   return cons((node*)NODE_GVAR, nsym(sym));
00634 }
00635 
00636 /* (:ivar . a) */
00637 static node*
00638 new_ivar(parser_state *p, mrb_sym sym)
00639 {
00640   return cons((node*)NODE_IVAR, nsym(sym));
00641 }
00642 
00643 /* (:cvar . a) */
00644 static node*
00645 new_cvar(parser_state *p, mrb_sym sym)
00646 {
00647   return cons((node*)NODE_CVAR, nsym(sym));
00648 }
00649 
00650 /* (:const . a) */
00651 static node*
00652 new_const(parser_state *p, mrb_sym sym)
00653 {
00654   return cons((node*)NODE_CONST, nsym(sym));
00655 }
00656 
00657 /* (:undef a...) */
00658 static node*
00659 new_undef(parser_state *p, mrb_sym sym)
00660 {
00661   return list2((node*)NODE_UNDEF, nsym(sym));
00662 }
00663 
00664 /* (:class class super body) */
00665 static node*
00666 new_class(parser_state *p, node *c, node *s, node *b)
00667 {
00668   return list4((node*)NODE_CLASS, c, s, cons(p->locals->car, b));
00669 }
00670 
00671 /* (:sclass obj body) */
00672 static node*
00673 new_sclass(parser_state *p, node *o, node *b)
00674 {
00675   return list3((node*)NODE_SCLASS, o, cons(p->locals->car, b));
00676 }
00677 
00678 /* (:module module body) */
00679 static node*
00680 new_module(parser_state *p, node *m, node *b)
00681 {
00682   return list3((node*)NODE_MODULE, m, cons(p->locals->car, b));
00683 }
00684 
00685 /* (:def m lv (arg . body)) */
00686 static node*
00687 new_def(parser_state *p, mrb_sym m, node *a, node *b)
00688 {
00689   return list5((node*)NODE_DEF, nsym(m), p->locals->car, a, b);
00690 }
00691 
00692 /* (:sdef obj m lv (arg . body)) */
00693 static node*
00694 new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
00695 {
00696   return list6((node*)NODE_SDEF, o, nsym(m), p->locals->car, a, b);
00697 }
00698 
00699 /* (:arg . sym) */
00700 static node*
00701 new_arg(parser_state *p, mrb_sym sym)
00702 {
00703   return cons((node*)NODE_ARG, nsym(sym));
00704 }
00705 
00706 /* (m o r m2 b) */
00707 /* m: (a b c) */
00708 /* o: ((a . e1) (b . e2)) */
00709 /* r: a */
00710 /* m2: (a b c) */
00711 /* b: a */
00712 static node*
00713 new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, mrb_sym blk)
00714 {
00715   node *n;
00716 
00717   n = cons(m2, nsym(blk));
00718   n = cons(nsym(rest), n);
00719   n = cons(opt, n);
00720   return cons(m, n);
00721 }
00722 
00723 /* (:block_arg . a) */
00724 static node*
00725 new_block_arg(parser_state *p, node *a)
00726 {
00727   return cons((node*)NODE_BLOCK_ARG, a);
00728 }
00729 
00730 /* (:block arg body) */
00731 static node*
00732 new_block(parser_state *p, node *a, node *b)
00733 {
00734   return list4((node*)NODE_BLOCK, p->locals->car, a, b);
00735 }
00736 
00737 /* (:lambda arg body) */
00738 static node*
00739 new_lambda(parser_state *p, node *a, node *b)
00740 {
00741   return list4((node*)NODE_LAMBDA, p->locals->car, a, b);
00742 }
00743 
00744 /* (:asgn lhs rhs) */
00745 static node*
00746 new_asgn(parser_state *p, node *a, node *b)
00747 {
00748   return cons((node*)NODE_ASGN, cons(a, b));
00749 }
00750 
00751 /* (:masgn mlhs=(pre rest post)  mrhs) */
00752 static node*
00753 new_masgn(parser_state *p, node *a, node *b)
00754 {
00755   return cons((node*)NODE_MASGN, cons(a, b));
00756 }
00757 
00758 /* (:asgn lhs rhs) */
00759 static node*
00760 new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
00761 {
00762   return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
00763 }
00764 
00765 /* (:int . i) */
00766 static node*
00767 new_int(parser_state *p, const char *s, int base)
00768 {
00769   return list3((node*)NODE_INT, (node*)strdup(s), (node*)(intptr_t)base);
00770 }
00771 
00772 /* (:float . i) */
00773 static node*
00774 new_float(parser_state *p, const char *s)
00775 {
00776   return cons((node*)NODE_FLOAT, (node*)strdup(s));
00777 }
00778 
00779 /* (:str . (s . len)) */
00780 static node*
00781 new_str(parser_state *p, const char *s, int len)
00782 {
00783   return cons((node*)NODE_STR, cons((node*)strndup(s, len), (node*)(intptr_t)len));
00784 }
00785 
00786 /* (:dstr . a) */
00787 static node*
00788 new_dstr(parser_state *p, node *a)
00789 {
00790   return cons((node*)NODE_DSTR, a);
00791 }
00792 
00793 /* (:str . (s . len)) */
00794 static node*
00795 new_xstr(parser_state *p, const char *s, int len)
00796 {
00797   return cons((node*)NODE_XSTR, cons((node*)strndup(s, len), (node*)(intptr_t)len));
00798 }
00799 
00800 /* (:xstr . a) */
00801 static node*
00802 new_dxstr(parser_state *p, node *a)
00803 {
00804   return cons((node*)NODE_DXSTR, a);
00805 }
00806 
00807 /* (:dsym . a) */
00808 static node*
00809 new_dsym(parser_state *p, node *a)
00810 {
00811   return cons((node*)NODE_DSYM, new_dstr(p, a));
00812 }
00813 
00814 /* (:str . (a . a)) */
00815 static node*
00816 new_regx(parser_state *p, const char *p1, const char* p2)
00817 {
00818   return cons((node*)NODE_REGX, cons((node*)p1, (node*)p2));
00819 }
00820 
00821 /* (:dregx . a) */
00822 static node*
00823 new_dregx(parser_state *p, node *a, node *b)
00824 {
00825   return cons((node*)NODE_DREGX, cons(a, b));
00826 }
00827 
00828 /* (:backref . n) */
00829 static node*
00830 new_back_ref(parser_state *p, int n)
00831 {
00832   return cons((node*)NODE_BACK_REF, (node*)(intptr_t)n);
00833 }
00834 
00835 /* (:nthref . n) */
00836 static node*
00837 new_nth_ref(parser_state *p, int n)
00838 {
00839   return cons((node*)NODE_NTH_REF, (node*)(intptr_t)n);
00840 }
00841 
00842 /* (:heredoc . a) */
00843 static node*
00844 new_heredoc(parser_state *p)
00845 {
00846   parser_heredoc_info *inf = (parser_heredoc_info *)parser_palloc(p, sizeof(parser_heredoc_info));
00847   return cons((node*)NODE_HEREDOC, (node*)inf);
00848 }
00849 
00850 static void
00851 new_bv(parser_state *p, mrb_sym id)
00852 {
00853 }
00854 
00855 static node*
00856 new_literal_delim(parser_state *p)
00857 {
00858   return cons((node*)NODE_LITERAL_DELIM, 0);
00859 }
00860 
00861 /* (:words . a) */
00862 static node*
00863 new_words(parser_state *p, node *a)
00864 {
00865   return cons((node*)NODE_WORDS, a);
00866 }
00867 
00868 /* (:symbols . a) */
00869 static node*
00870 new_symbols(parser_state *p, node *a)
00871 {
00872   return cons((node*)NODE_SYMBOLS, a);
00873 }
00874 
00875 /* xxx ----------------------------- */
00876 
00877 /* (:call a op) */
00878 static node*
00879 call_uni_op(parser_state *p, node *recv, const char *m)
00880 {
00881   return new_call(p, recv, intern_cstr(m), 0);
00882 }
00883 
00884 /* (:call a op b) */
00885 static node*
00886 call_bin_op(parser_state *p, node *recv, const char *m, node *arg1)
00887 {
00888   return new_call(p, recv, intern_cstr(m), list1(list1(arg1)));
00889 }
00890 
00891 static void
00892 args_with_block(parser_state *p, node *a, node *b)
00893 {
00894   if (b) {
00895     if (a->cdr) {
00896       yyerror(p, "both block arg and actual block given");
00897     }
00898     a->cdr = b;
00899   }
00900 }
00901 
00902 static void
00903 call_with_block(parser_state *p, node *a, node *b)
00904 {
00905   node *n;
00906 
00907   if (a->car == (node*)NODE_SUPER ||
00908       a->car == (node*)NODE_ZSUPER) {
00909     if (!a->cdr) a->cdr = cons(0, b);
00910     else {
00911       args_with_block(p, a->cdr, b);
00912     }
00913   }
00914   else {
00915     n = a->cdr->cdr->cdr;
00916     if (!n->car) n->car = cons(0, b);
00917     else {
00918       args_with_block(p, n->car, b);
00919     }
00920   }
00921 }
00922 
00923 static node*
00924 negate_lit(parser_state *p, node *n)
00925 {
00926   return cons((node*)NODE_NEGATE, n);
00927 }
00928 
00929 static node*
00930 cond(node *n)
00931 {
00932   return n;
00933 }
00934 
00935 static node*
00936 ret_args(parser_state *p, node *n)
00937 {
00938   if (n->cdr) {
00939     yyerror(p, "block argument should not be given");
00940     return NULL;
00941   }
00942   if (!n->car->cdr) return n->car->car;
00943   return new_array(p, n->car);
00944 }
00945 
00946 static void
00947 assignable(parser_state *p, node *lhs)
00948 {
00949   if ((int)(intptr_t)lhs->car == NODE_LVAR) {
00950     local_add(p, sym(lhs->cdr));
00951   }
00952 }
00953 
00954 static node*
00955 var_reference(parser_state *p, node *lhs)
00956 {
00957   node *n;
00958 
00959   if ((int)(intptr_t)lhs->car == NODE_LVAR) {
00960     if (!local_var_p(p, sym(lhs->cdr))) {
00961       n = new_fcall(p, sym(lhs->cdr), 0);
00962       cons_free(lhs);
00963       return n;
00964     }
00965   }
00966 
00967   return lhs;
00968 }
00969 
00970 typedef enum mrb_string_type  string_type;
00971 
00972 static node*
00973 new_strterm(parser_state *p, string_type type, int term, int paren)
00974 {
00975   return cons((node*)(intptr_t)type, cons((node*)0, cons((node*)(intptr_t)paren, (node*)(intptr_t)term)));
00976 }
00977 
00978 static void
00979 end_strterm(parser_state *p)
00980 {
00981   cons_free(p->lex_strterm->cdr->cdr);
00982   cons_free(p->lex_strterm->cdr);
00983   cons_free(p->lex_strterm);
00984   p->lex_strterm = NULL;
00985 }
00986 
00987 static parser_heredoc_info *
00988 parsing_heredoc_inf(parser_state *p)
00989 {
00990   node *nd = p->parsing_heredoc;
00991   if (nd == NULL)
00992     return NULL;
00993   /* mrb_assert(nd->car->car == NODE_HEREDOC); */
00994   return (parser_heredoc_info*)nd->car->cdr;
00995 }
00996 
00997 static void
00998 heredoc_treat_nextline(parser_state *p)
00999 {
01000   if (p->heredocs_from_nextline == NULL)
01001     return;
01002   if (p->parsing_heredoc == NULL) {
01003     node *n;
01004     p->parsing_heredoc = p->heredocs_from_nextline;
01005     p->lex_strterm_before_heredoc = p->lex_strterm;
01006     p->lex_strterm = new_strterm(p, parsing_heredoc_inf(p)->type, 0, 0);
01007     n = p->all_heredocs;
01008     if (n) {
01009       while (n->cdr)
01010         n = n->cdr;
01011       n->cdr = p->parsing_heredoc;
01012     }
01013     else {
01014       p->all_heredocs = p->parsing_heredoc;
01015     }
01016   }
01017   else {
01018     node *n, *m;
01019     m = p->heredocs_from_nextline;
01020     while (m->cdr)
01021       m = m->cdr;
01022     n = p->all_heredocs;
01023     mrb_assert(n != NULL);
01024     if (n == p->parsing_heredoc) {
01025       m->cdr = n;
01026       p->all_heredocs = p->heredocs_from_nextline;
01027       p->parsing_heredoc = p->heredocs_from_nextline;
01028     }
01029     else {
01030       while (n->cdr != p->parsing_heredoc) {
01031         n = n->cdr;
01032         mrb_assert(n != NULL);
01033       }
01034       m->cdr = n->cdr;
01035       n->cdr = p->heredocs_from_nextline;
01036       p->parsing_heredoc = p->heredocs_from_nextline;
01037     }
01038   }
01039   p->heredocs_from_nextline = NULL;
01040 }
01041 
01042 static void
01043 heredoc_end(parser_state *p)
01044 {
01045   p->parsing_heredoc = p->parsing_heredoc->cdr;
01046   if (p->parsing_heredoc == NULL) {
01047     p->lstate = EXPR_BEG;
01048     p->cmd_start = TRUE;
01049     end_strterm(p);
01050     p->lex_strterm = p->lex_strterm_before_heredoc;
01051     p->lex_strterm_before_heredoc = NULL;
01052     p->heredoc_end_now = TRUE;
01053   }
01054   else {
01055     /* next heredoc */
01056     p->lex_strterm->car = (node*)(intptr_t)parsing_heredoc_inf(p)->type;
01057   }
01058 }
01059 #define is_strterm_type(p,str_func) ((int)(intptr_t)((p)->lex_strterm->car) & (str_func))
01060 
01061 /* xxx ----------------------------- */
01062 
01063 
01064 
01065 /* Line 189 of yacc.c  */
01066 #line 1067 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c"
01067 
01068 /* Enabling traces.  */
01069 #ifndef YYDEBUG
01070 # define YYDEBUG 0
01071 #endif
01072 
01073 /* Enabling verbose error messages.  */
01074 #ifdef YYERROR_VERBOSE
01075 # undef YYERROR_VERBOSE
01076 # define YYERROR_VERBOSE 1
01077 #else
01078 # define YYERROR_VERBOSE 0
01079 #endif
01080 
01081 /* Enabling the token table.  */
01082 #ifndef YYTOKEN_TABLE
01083 # define YYTOKEN_TABLE 0
01084 #endif
01085 
01086 
01087 /* Tokens.  */
01088 #ifndef YYTOKENTYPE
01089 # define YYTOKENTYPE
01090    /* Put the tokens into the symbol table, so that GDB and other debuggers
01091       know about them.  */
01092    enum yytokentype {
01093      keyword_class = 258,
01094      keyword_module = 259,
01095      keyword_def = 260,
01096      keyword_begin = 261,
01097      keyword_if = 262,
01098      keyword_unless = 263,
01099      keyword_while = 264,
01100      keyword_until = 265,
01101      keyword_for = 266,
01102      keyword_undef = 267,
01103      keyword_rescue = 268,
01104      keyword_ensure = 269,
01105      keyword_end = 270,
01106      keyword_then = 271,
01107      keyword_elsif = 272,
01108      keyword_else = 273,
01109      keyword_case = 274,
01110      keyword_when = 275,
01111      keyword_break = 276,
01112      keyword_next = 277,
01113      keyword_redo = 278,
01114      keyword_retry = 279,
01115      keyword_in = 280,
01116      keyword_do = 281,
01117      keyword_do_cond = 282,
01118      keyword_do_block = 283,
01119      keyword_do_LAMBDA = 284,
01120      keyword_return = 285,
01121      keyword_yield = 286,
01122      keyword_super = 287,
01123      keyword_self = 288,
01124      keyword_nil = 289,
01125      keyword_true = 290,
01126      keyword_false = 291,
01127      keyword_and = 292,
01128      keyword_or = 293,
01129      keyword_not = 294,
01130      modifier_if = 295,
01131      modifier_unless = 296,
01132      modifier_while = 297,
01133      modifier_until = 298,
01134      modifier_rescue = 299,
01135      keyword_alias = 300,
01136      keyword_BEGIN = 301,
01137      keyword_END = 302,
01138      keyword__LINE__ = 303,
01139      keyword__FILE__ = 304,
01140      keyword__ENCODING__ = 305,
01141      tIDENTIFIER = 306,
01142      tFID = 307,
01143      tGVAR = 308,
01144      tIVAR = 309,
01145      tCONSTANT = 310,
01146      tCVAR = 311,
01147      tLABEL = 312,
01148      tINTEGER = 313,
01149      tFLOAT = 314,
01150      tCHAR = 315,
01151      tXSTRING = 316,
01152      tREGEXP = 317,
01153      tSTRING = 318,
01154      tSTRING_PART = 319,
01155      tSTRING_MID = 320,
01156      tNTH_REF = 321,
01157      tBACK_REF = 322,
01158      tREGEXP_END = 323,
01159      tUPLUS = 324,
01160      tUMINUS = 325,
01161      tPOW = 326,
01162      tCMP = 327,
01163      tEQ = 328,
01164      tEQQ = 329,
01165      tNEQ = 330,
01166      tGEQ = 331,
01167      tLEQ = 332,
01168      tANDOP = 333,
01169      tOROP = 334,
01170      tMATCH = 335,
01171      tNMATCH = 336,
01172      tDOT2 = 337,
01173      tDOT3 = 338,
01174      tAREF = 339,
01175      tASET = 340,
01176      tLSHFT = 341,
01177      tRSHFT = 342,
01178      tCOLON2 = 343,
01179      tCOLON3 = 344,
01180      tOP_ASGN = 345,
01181      tASSOC = 346,
01182      tLPAREN = 347,
01183      tLPAREN_ARG = 348,
01184      tRPAREN = 349,
01185      tLBRACK = 350,
01186      tLBRACE = 351,
01187      tLBRACE_ARG = 352,
01188      tSTAR = 353,
01189      tAMPER = 354,
01190      tLAMBDA = 355,
01191      tSYMBEG = 356,
01192      tREGEXP_BEG = 357,
01193      tWORDS_BEG = 358,
01194      tSYMBOLS_BEG = 359,
01195      tSTRING_BEG = 360,
01196      tXSTRING_BEG = 361,
01197      tSTRING_DVAR = 362,
01198      tLAMBEG = 363,
01199      tHEREDOC_BEG = 364,
01200      tHEREDOC_END = 365,
01201      tLITERAL_DELIM = 366,
01202      tHD_LITERAL_DELIM = 367,
01203      tHD_STRING_PART = 368,
01204      tHD_STRING_MID = 369,
01205      tLOWEST = 370,
01206      tUMINUS_NUM = 371,
01207      idNULL = 372,
01208      idRespond_to = 373,
01209      idIFUNC = 374,
01210      idCFUNC = 375,
01211      id_core_set_method_alias = 376,
01212      id_core_set_variable_alias = 377,
01213      id_core_undef_method = 378,
01214      id_core_define_method = 379,
01215      id_core_define_singleton_method = 380,
01216      id_core_set_postexe = 381,
01217      tLAST_TOKEN = 382
01218    };
01219 #endif
01220 
01221 
01222 
01223 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
01224 typedef union YYSTYPE
01225 {
01226 
01227 /* Line 214 of yacc.c  */
01228 #line 1005 "src/parse.y"
01229 
01230     node *nd;
01231     mrb_sym id;
01232     int num;
01233     stack_type stack;
01234     const struct vtable *vars;
01235 
01236 
01237 
01238 /* Line 214 of yacc.c  */
01239 #line 1240 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c"
01240 } YYSTYPE;
01241 # define YYSTYPE_IS_TRIVIAL 1
01242 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
01243 # define YYSTYPE_IS_DECLARED 1
01244 #endif
01245 
01246 
01247 /* Copy the second part of user declarations.  */
01248 
01249 
01250 /* Line 264 of yacc.c  */
01251 #line 1252 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c"
01252 
01253 #ifdef short
01254 # undef short
01255 #endif
01256 
01257 #ifdef YYTYPE_UINT8
01258 typedef YYTYPE_UINT8 yytype_uint8;
01259 #else
01260 typedef unsigned char yytype_uint8;
01261 #endif
01262 
01263 #ifdef YYTYPE_INT8
01264 typedef YYTYPE_INT8 yytype_int8;
01265 #elif (defined __STDC__ || defined __C99__FUNC__ \
01266      || defined __cplusplus || defined _MSC_VER)
01267 typedef signed char yytype_int8;
01268 #else
01269 typedef short int yytype_int8;
01270 #endif
01271 
01272 #ifdef YYTYPE_UINT16
01273 typedef YYTYPE_UINT16 yytype_uint16;
01274 #else
01275 typedef unsigned short int yytype_uint16;
01276 #endif
01277 
01278 #ifdef YYTYPE_INT16
01279 typedef YYTYPE_INT16 yytype_int16;
01280 #else
01281 typedef short int yytype_int16;
01282 #endif
01283 
01284 #ifndef YYSIZE_T
01285 # ifdef __SIZE_TYPE__
01286 #  define YYSIZE_T __SIZE_TYPE__
01287 # elif defined size_t
01288 #  define YYSIZE_T size_t
01289 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
01290      || defined __cplusplus || defined _MSC_VER)
01291 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
01292 #  define YYSIZE_T size_t
01293 # else
01294 #  define YYSIZE_T unsigned int
01295 # endif
01296 #endif
01297 
01298 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
01299 
01300 #ifndef YY_
01301 # if defined YYENABLE_NLS && YYENABLE_NLS
01302 #  if ENABLE_NLS
01303 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
01304 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
01305 #  endif
01306 # endif
01307 # ifndef YY_
01308 #  define YY_(msgid) msgid
01309 # endif
01310 #endif
01311 
01312 /* Suppress unused-variable warnings by "using" E.  */
01313 #if ! defined lint || defined __GNUC__
01314 # define YYUSE(e) ((void) (e))
01315 #else
01316 # define YYUSE(e) /* empty */
01317 #endif
01318 
01319 /* Identity function, used to suppress warnings about constant conditions.  */
01320 #ifndef lint
01321 # define YYID(n) (n)
01322 #else
01323 #if (defined __STDC__ || defined __C99__FUNC__ \
01324      || defined __cplusplus || defined _MSC_VER)
01325 static int
01326 YYID (int yyi)
01327 #else
01328 static int
01329 YYID (yyi)
01330     int yyi;
01331 #endif
01332 {
01333   return yyi;
01334 }
01335 #endif
01336 
01337 #if ! defined yyoverflow || YYERROR_VERBOSE
01338 
01339 /* The parser invokes alloca or malloc; define the necessary symbols.  */
01340 
01341 # ifdef YYSTACK_USE_ALLOCA
01342 #  if YYSTACK_USE_ALLOCA
01343 #   ifdef __GNUC__
01344 #    define YYSTACK_ALLOC __builtin_alloca
01345 #   elif defined __BUILTIN_VA_ARG_INCR
01346 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
01347 #   elif defined _AIX
01348 #    define YYSTACK_ALLOC __alloca
01349 #   elif defined _MSC_VER
01350 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
01351 #    define alloca _alloca
01352 #   else
01353 #    define YYSTACK_ALLOC alloca
01354 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01355      || defined __cplusplus || defined _MSC_VER)
01356 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
01357 #     ifndef _STDLIB_H
01358 #      define _STDLIB_H 1
01359 #     endif
01360 #    endif
01361 #   endif
01362 #  endif
01363 # endif
01364 
01365 # ifdef YYSTACK_ALLOC
01366    /* Pacify GCC's `empty if-body' warning.  */
01367 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
01368 #  ifndef YYSTACK_ALLOC_MAXIMUM
01369     /* The OS might guarantee only one guard page at the bottom of the stack,
01370        and a page size can be as small as 4096 bytes.  So we cannot safely
01371        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
01372        to allow for a few compiler-allocated temporary stack slots.  */
01373 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
01374 #  endif
01375 # else
01376 #  define YYSTACK_ALLOC YYMALLOC
01377 #  define YYSTACK_FREE YYFREE
01378 #  ifndef YYSTACK_ALLOC_MAXIMUM
01379 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
01380 #  endif
01381 #  if (defined __cplusplus && ! defined _STDLIB_H \
01382        && ! ((defined YYMALLOC || defined malloc) \
01383          && (defined YYFREE || defined free)))
01384 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
01385 #   ifndef _STDLIB_H
01386 #    define _STDLIB_H 1
01387 #   endif
01388 #  endif
01389 #  ifndef YYMALLOC
01390 #   define YYMALLOC malloc
01391 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01392      || defined __cplusplus || defined _MSC_VER)
01393 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
01394 #   endif
01395 #  endif
01396 #  ifndef YYFREE
01397 #   define YYFREE free
01398 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
01399      || defined __cplusplus || defined _MSC_VER)
01400 void free (void *); /* INFRINGES ON USER NAME SPACE */
01401 #   endif
01402 #  endif
01403 # endif
01404 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
01405 
01406 
01407 #if (! defined yyoverflow \
01408      && (! defined __cplusplus \
01409      || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
01410 
01411 /* A type that is properly aligned for any stack member.  */
01412 union yyalloc
01413 {
01414   yytype_int16 yyss_alloc;
01415   YYSTYPE yyvs_alloc;
01416 };
01417 
01418 /* The size of the maximum gap between one aligned stack and the next.  */
01419 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
01420 
01421 /* The size of an array large to enough to hold all stacks, each with
01422    N elements.  */
01423 # define YYSTACK_BYTES(N) \
01424      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
01425       + YYSTACK_GAP_MAXIMUM)
01426 
01427 /* Copy COUNT objects from FROM to TO.  The source and destination do
01428    not overlap.  */
01429 # ifndef YYCOPY
01430 #  if defined __GNUC__ && 1 < __GNUC__
01431 #   define YYCOPY(To, From, Count) \
01432       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
01433 #  else
01434 #   define YYCOPY(To, From, Count)      \
01435       do                    \
01436     {                   \
01437       YYSIZE_T yyi;             \
01438       for (yyi = 0; yyi < (Count); yyi++)   \
01439         (To)[yyi] = (From)[yyi];        \
01440     }                   \
01441       while (YYID (0))
01442 #  endif
01443 # endif
01444 
01445 /* Relocate STACK from its old location to the new one.  The
01446    local variables YYSIZE and YYSTACKSIZE give the old and new number of
01447    elements in the stack, and YYPTR gives the new location of the
01448    stack.  Advance YYPTR to a properly aligned location for the next
01449    stack.  */
01450 # define YYSTACK_RELOCATE(Stack_alloc, Stack)               \
01451     do                                  \
01452       {                                 \
01453     YYSIZE_T yynewbytes;                        \
01454     YYCOPY (&yyptr->Stack_alloc, Stack, yysize);            \
01455     Stack = &yyptr->Stack_alloc;                    \
01456     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
01457     yyptr += yynewbytes / sizeof (*yyptr);              \
01458       }                                 \
01459     while (YYID (0))
01460 
01461 #endif
01462 
01463 /* YYFINAL -- State number of the termination state.  */
01464 #define YYFINAL  3
01465 /* YYLAST -- Last index in YYTABLE.  */
01466 #define YYLAST   10941
01467 
01468 /* YYNTOKENS -- Number of terminals.  */
01469 #define YYNTOKENS  154
01470 /* YYNNTS -- Number of nonterminals.  */
01471 #define YYNNTS  160
01472 /* YYNRULES -- Number of rules.  */
01473 #define YYNRULES  555
01474 /* YYNRULES -- Number of states.  */
01475 #define YYNSTATES  970
01476 
01477 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
01478 #define YYUNDEFTOK  2
01479 #define YYMAXUTOK   382
01480 
01481 #define YYTRANSLATE(YYX)                        \
01482   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
01483 
01484 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
01485 static const yytype_uint8 yytranslate[] =
01486 {
01487        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01488      153,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01489        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01490        2,     2,     2,   130,     2,     2,     2,   128,   123,     2,
01491      149,   150,   126,   124,   147,   125,   146,   127,     2,     2,
01492        2,     2,     2,     2,     2,     2,     2,     2,   118,   152,
01493      120,   116,   119,   117,     2,     2,     2,     2,     2,     2,
01494        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01495        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01496        2,   145,     2,   151,   122,     2,   148,     2,     2,     2,
01497        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01498        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01499        2,     2,     2,   143,   121,   144,   131,     2,     2,     2,
01500        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01501        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01502        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01503        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01504        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01505        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01506        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01507        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01508        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01509        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01510        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01511        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
01512        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
01513        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
01514       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
01515       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
01516       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
01517       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
01518       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
01519       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
01520       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
01521       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
01522       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
01523      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
01524      115,   129,   132,   133,   134,   135,   136,   137,   138,   139,
01525      140,   141,   142
01526 };
01527 
01528 #if YYDEBUG
01529 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
01530    YYRHS.  */
01531 static const yytype_uint16 yyprhs[] =
01532 {
01533        0,     0,     3,     4,     7,    10,    12,    14,    18,    21,
01534       23,    24,    30,    35,    38,    40,    42,    46,    49,    50,
01535       55,    58,    62,    66,    70,    74,    78,    83,    85,    89,
01536       93,   100,   106,   112,   118,   124,   128,   132,   136,   140,
01537      142,   146,   150,   152,   156,   160,   164,   167,   169,   171,
01538      173,   175,   177,   182,   183,   189,   192,   196,   201,   207,
01539      212,   218,   221,   224,   227,   230,   233,   235,   239,   241,
01540      245,   247,   250,   254,   260,   263,   268,   271,   276,   278,
01541      282,   284,   288,   291,   295,   297,   300,   302,   307,   311,
01542      315,   319,   323,   326,   328,   330,   335,   339,   343,   347,
01543      351,   354,   356,   358,   360,   363,   365,   369,   371,   373,
01544      375,   377,   379,   381,   383,   385,   386,   391,   393,   395,
01545      397,   399,   401,   403,   405,   407,   409,   411,   413,   415,
01546      417,   419,   421,   423,   425,   427,   429,   431,   433,   435,
01547      437,   439,   441,   443,   445,   447,   449,   451,   453,   455,
01548      457,   459,   461,   463,   465,   467,   469,   471,   473,   475,
01549      477,   479,   481,   483,   485,   487,   489,   491,   493,   495,
01550      497,   499,   501,   503,   505,   507,   509,   511,   513,   515,
01551      517,   519,   521,   523,   525,   527,   529,   533,   539,   543,
01552      549,   556,   562,   568,   574,   580,   585,   589,   593,   597,
01553      601,   605,   609,   613,   617,   621,   626,   631,   634,   637,
01554      641,   645,   649,   653,   657,   661,   665,   669,   673,   677,
01555      681,   685,   689,   692,   695,   699,   703,   707,   711,   718,
01556      720,   722,   724,   727,   732,   735,   739,   741,   743,   745,
01557      747,   750,   755,   758,   760,   763,   766,   771,   773,   774,
01558      777,   780,   783,   785,   787,   790,   794,   799,   804,   810,
01559      814,   819,   822,   824,   826,   828,   830,   832,   834,   836,
01560      838,   839,   844,   845,   846,   852,   853,   857,   861,   865,
01561      868,   872,   876,   878,   883,   887,   889,   894,   898,   901,
01562      903,   906,   907,   912,   919,   926,   927,   928,   936,   937,
01563      938,   946,   952,   957,   958,   959,   969,   970,   977,   978,
01564      979,   988,   989,   995,   996,   997,  1005,  1006,  1007,  1017,
01565     1019,  1021,  1023,  1025,  1027,  1029,  1031,  1034,  1036,  1038,
01566     1040,  1046,  1048,  1051,  1053,  1055,  1057,  1061,  1063,  1067,
01567     1069,  1074,  1081,  1085,  1091,  1094,  1099,  1101,  1105,  1112,
01568     1121,  1126,  1133,  1138,  1141,  1148,  1151,  1156,  1163,  1166,
01569     1171,  1174,  1179,  1181,  1183,  1185,  1189,  1191,  1196,  1198,
01570     1203,  1205,  1209,  1211,  1213,  1218,  1220,  1224,  1228,  1229,
01571     1235,  1238,  1243,  1249,  1255,  1258,  1263,  1268,  1272,  1276,
01572     1280,  1283,  1285,  1290,  1291,  1297,  1298,  1304,  1310,  1312,
01573     1314,  1321,  1323,  1325,  1327,  1329,  1332,  1334,  1337,  1339,
01574     1341,  1343,  1345,  1347,  1349,  1351,  1354,  1358,  1360,  1363,
01575     1365,  1366,  1371,  1373,  1376,  1379,  1383,  1386,  1390,  1392,
01576     1393,  1395,  1397,  1400,  1402,  1405,  1407,  1410,  1412,  1413,
01577     1418,  1421,  1425,  1427,  1432,  1435,  1437,  1439,  1441,  1443,
01578     1445,  1448,  1451,  1455,  1457,  1459,  1462,  1465,  1467,  1469,
01579     1471,  1473,  1475,  1477,  1479,  1481,  1483,  1485,  1487,  1489,
01580     1491,  1493,  1495,  1497,  1498,  1503,  1506,  1510,  1513,  1520,
01581     1529,  1534,  1541,  1546,  1553,  1556,  1561,  1568,  1571,  1576,
01582     1579,  1584,  1586,  1587,  1589,  1591,  1593,  1595,  1597,  1599,
01583     1601,  1605,  1607,  1611,  1614,  1617,  1620,  1622,  1626,  1628,
01584     1632,  1634,  1636,  1639,  1641,  1643,  1645,  1648,  1651,  1653,
01585     1655,  1656,  1661,  1663,  1666,  1668,  1672,  1676,  1679,  1681,
01586     1683,  1685,  1687,  1689,  1691,  1693,  1695,  1697,  1699,  1701,
01587     1703,  1704,  1706,  1707,  1709,  1712,  1715,  1716,  1718,  1720,
01588     1722,  1724,  1725,  1729,  1731,  1734
01589 };
01590 
01591 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
01592 static const yytype_int16 yyrhs[] =
01593 {
01594      155,     0,    -1,    -1,   156,   157,    -1,   158,   304,    -1,
01595      313,    -1,   159,    -1,   158,   312,   159,    -1,     1,   159,
01596       -1,   164,    -1,    -1,    46,   160,   143,   157,   144,    -1,
01597      162,   249,   227,   252,    -1,   163,   304,    -1,   313,    -1,
01598      164,    -1,   163,   312,   164,    -1,     1,   164,    -1,    -1,
01599       45,   185,   165,   185,    -1,    12,   186,    -1,   164,    40,
01600      168,    -1,   164,    41,   168,    -1,   164,    42,   168,    -1,
01601      164,    43,   168,    -1,   164,    44,   164,    -1,    47,   143,
01602      162,   144,    -1,   166,    -1,   174,   116,   169,    -1,   274,
01603       90,   169,    -1,   223,   145,   195,   307,    90,   169,    -1,
01604      223,   146,    51,    90,   169,    -1,   223,   146,    55,    90,
01605      169,    -1,   223,    88,    55,    90,   169,    -1,   223,    88,
01606       51,    90,   169,    -1,   276,    90,   169,    -1,   181,   116,
01607      202,    -1,   174,   116,   191,    -1,   174,   116,   202,    -1,
01608      167,    -1,   181,   116,   169,    -1,   181,   116,   166,    -1,
01609      169,    -1,   167,    37,   167,    -1,   167,    38,   167,    -1,
01610       39,   305,   167,    -1,   130,   169,    -1,   190,    -1,   167,
01611       -1,   173,    -1,   170,    -1,   242,    -1,   242,   303,   301,
01612      197,    -1,    -1,    97,   172,   233,   162,   144,    -1,   300,
01613      197,    -1,   300,   197,   171,    -1,   223,   146,   301,   197,
01614       -1,   223,   146,   301,   197,   171,    -1,   223,    88,   301,
01615      197,    -1,   223,    88,   301,   197,   171,    -1,    32,   197,
01616       -1,    31,   197,    -1,    30,   196,    -1,    21,   196,    -1,
01617       22,   196,    -1,   176,    -1,    92,   175,   306,    -1,   176,
01618       -1,    92,   175,   306,    -1,   178,    -1,   178,   177,    -1,
01619      178,    98,   180,    -1,   178,    98,   180,   147,   179,    -1,
01620      178,    98,    -1,   178,    98,   147,   179,    -1,    98,   180,
01621       -1,    98,   180,   147,   179,    -1,    98,    -1,    98,   147,
01622      179,    -1,   180,    -1,    92,   175,   306,    -1,   177,   147,
01623       -1,   178,   177,   147,    -1,   177,    -1,   178,   177,    -1,
01624      273,    -1,   223,   145,   195,   307,    -1,   223,   146,    51,
01625       -1,   223,    88,    51,    -1,   223,   146,    55,    -1,   223,
01626       88,    55,    -1,    89,    55,    -1,   276,    -1,   273,    -1,
01627      223,   145,   195,   307,    -1,   223,   146,    51,    -1,   223,
01628       88,    51,    -1,   223,   146,    55,    -1,   223,    88,    55,
01629       -1,    89,    55,    -1,   276,    -1,    51,    -1,    55,    -1,
01630       89,   182,    -1,   182,    -1,   223,    88,   182,    -1,    51,
01631       -1,    55,    -1,    52,    -1,   188,    -1,   189,    -1,   184,
01632       -1,   269,    -1,   185,    -1,    -1,   186,   147,   187,   185,
01633       -1,   121,    -1,   122,    -1,   123,    -1,    72,    -1,    73,
01634       -1,    74,    -1,    80,    -1,    81,    -1,   119,    -1,    76,
01635       -1,   120,    -1,    77,    -1,    75,    -1,    86,    -1,    87,
01636       -1,   124,    -1,   125,    -1,   126,    -1,    98,    -1,   127,
01637       -1,   128,    -1,    71,    -1,   130,    -1,   131,    -1,    69,
01638       -1,    70,    -1,    84,    -1,    85,    -1,   148,    -1,    48,
01639       -1,    49,    -1,    50,    -1,    46,    -1,    47,    -1,    45,
01640       -1,    37,    -1,     6,    -1,    21,    -1,    19,    -1,     3,
01641       -1,     5,    -1,    26,    -1,    18,    -1,    17,    -1,    15,
01642       -1,    14,    -1,    36,    -1,    11,    -1,    25,    -1,     4,
01643       -1,    22,    -1,    34,    -1,    39,    -1,    38,    -1,    23,
01644       -1,    13,    -1,    24,    -1,    30,    -1,    33,    -1,    32,
01645       -1,    16,    -1,    35,    -1,    12,    -1,    20,    -1,    31,
01646       -1,     7,    -1,     8,    -1,     9,    -1,    10,    -1,   181,
01647      116,   190,    -1,   181,   116,   190,    44,   190,    -1,   274,
01648       90,   190,    -1,   274,    90,   190,    44,   190,    -1,   223,
01649      145,   195,   307,    90,   190,    -1,   223,   146,    51,    90,
01650      190,    -1,   223,   146,    55,    90,   190,    -1,   223,    88,
01651       51,    90,   190,    -1,   223,    88,    55,    90,   190,    -1,
01652       89,    55,    90,   190,    -1,   276,    90,   190,    -1,   190,
01653       82,   190,    -1,   190,    83,   190,    -1,   190,   124,   190,
01654       -1,   190,   125,   190,    -1,   190,   126,   190,    -1,   190,
01655      127,   190,    -1,   190,   128,   190,    -1,   190,    71,   190,
01656       -1,   129,    58,    71,   190,    -1,   129,    59,    71,   190,
01657       -1,    69,   190,    -1,    70,   190,    -1,   190,   121,   190,
01658       -1,   190,   122,   190,    -1,   190,   123,   190,    -1,   190,
01659       72,   190,    -1,   190,   119,   190,    -1,   190,    76,   190,
01660       -1,   190,   120,   190,    -1,   190,    77,   190,    -1,   190,
01661       73,   190,    -1,   190,    74,   190,    -1,   190,    75,   190,
01662       -1,   190,    80,   190,    -1,   190,    81,   190,    -1,   130,
01663      190,    -1,   131,   190,    -1,   190,    86,   190,    -1,   190,
01664       87,   190,    -1,   190,    78,   190,    -1,   190,    79,   190,
01665       -1,   190,   117,   190,   305,   118,   190,    -1,   203,    -1,
01666      190,    -1,   313,    -1,   201,   308,    -1,   201,   147,   298,
01667      308,    -1,   298,   308,    -1,   149,   195,   306,    -1,   313,
01668       -1,   193,    -1,   313,    -1,   196,    -1,   201,   147,    -1,
01669      201,   147,   298,   147,    -1,   298,   147,    -1,   173,    -1,
01670      201,   200,    -1,   298,   200,    -1,   201,   147,   298,   200,
01671       -1,   199,    -1,    -1,   198,   196,    -1,    99,   191,    -1,
01672      147,   199,    -1,   313,    -1,   191,    -1,    98,   191,    -1,
01673      201,   147,   191,    -1,   201,   147,    98,   191,    -1,   201,
01674      147,   262,   191,    -1,   201,   147,   262,    98,   191,    -1,
01675      201,   147,   191,    -1,   201,   147,    98,   191,    -1,    98,
01676      191,    -1,   253,    -1,   254,    -1,   258,    -1,   259,    -1,
01677      260,    -1,   275,    -1,   276,    -1,    52,    -1,    -1,     6,
01678      204,   161,    15,    -1,    -1,    -1,    93,   205,   167,   206,
01679      306,    -1,    -1,    93,   207,   306,    -1,    92,   162,   150,
01680       -1,   223,    88,    55,    -1,    89,    55,    -1,    95,   192,
01681      151,    -1,    96,   297,   144,    -1,    30,    -1,    31,   149,
01682      196,   306,    -1,    31,   149,   306,    -1,    31,    -1,    39,
01683      149,   167,   306,    -1,    39,   149,   306,    -1,   300,   244,
01684       -1,   243,    -1,   243,   244,    -1,    -1,   100,   208,   238,
01685      239,    -1,     7,   168,   224,   162,   226,    15,    -1,     8,
01686      168,   224,   162,   227,    15,    -1,    -1,    -1,     9,   209,
01687      168,   225,   210,   162,    15,    -1,    -1,    -1,    10,   211,
01688      168,   225,   212,   162,    15,    -1,    19,   168,   304,   247,
01689       15,    -1,    19,   304,   247,    15,    -1,    -1,    -1,    11,
01690      228,    25,   213,   168,   225,   214,   162,    15,    -1,    -1,
01691        3,   183,   277,   215,   161,    15,    -1,    -1,    -1,     3,
01692       86,   167,   216,   309,   217,   161,    15,    -1,    -1,     4,
01693      183,   218,   161,    15,    -1,    -1,    -1,     5,   184,   219,
01694      220,   279,   161,    15,    -1,    -1,    -1,     5,   295,   303,
01695      221,   184,   222,   279,   161,    15,    -1,    21,    -1,    22,
01696       -1,    23,    -1,    24,    -1,   203,    -1,   309,    -1,    16,
01697       -1,   309,    16,    -1,   309,    -1,    27,    -1,   227,    -1,
01698       17,   168,   224,   162,   226,    -1,   313,    -1,    18,   162,
01699       -1,   181,    -1,   174,    -1,   282,    -1,    92,   231,   306,
01700       -1,   229,    -1,   230,   147,   229,    -1,   230,    -1,   230,
01701      147,    98,   282,    -1,   230,   147,    98,   282,   147,   230,
01702       -1,   230,   147,    98,    -1,   230,   147,    98,   147,   230,
01703       -1,    98,   282,    -1,    98,   282,   147,   230,    -1,    98,
01704       -1,    98,   147,   230,    -1,   284,   147,   288,   147,   291,
01705      294,    -1,   284,   147,   288,   147,   291,   147,   284,   294,
01706       -1,   284,   147,   288,   294,    -1,   284,   147,   288,   147,
01707      284,   294,    -1,   284,   147,   291,   294,    -1,   284,   147,
01708       -1,   284,   147,   291,   147,   284,   294,    -1,   284,   294,
01709       -1,   288,   147,   291,   294,    -1,   288,   147,   291,   147,
01710      284,   294,    -1,   288,   294,    -1,   288,   147,   284,   294,
01711       -1,   291,   294,    -1,   291,   147,   284,   294,    -1,   293,
01712       -1,   313,    -1,   234,    -1,   121,   235,   121,    -1,    79,
01713       -1,   121,   232,   235,   121,    -1,   305,    -1,   305,   152,
01714      236,   305,    -1,   237,    -1,   236,   147,   237,    -1,    51,
01715       -1,   281,    -1,   149,   280,   235,   150,    -1,   280,    -1,
01716      108,   162,   144,    -1,    29,   162,    15,    -1,    -1,    28,
01717      241,   233,   162,    15,    -1,   173,   240,    -1,   242,   303,
01718      301,   194,    -1,   242,   303,   301,   194,   244,    -1,   242,
01719      303,   301,   197,   240,    -1,   300,   193,    -1,   223,   146,
01720      301,   194,    -1,   223,    88,   301,   193,    -1,   223,    88,
01721      302,    -1,   223,   146,   193,    -1,   223,    88,   193,    -1,
01722       32,   193,    -1,    32,    -1,   223,   145,   195,   307,    -1,
01723       -1,   143,   245,   233,   162,   144,    -1,    -1,    26,   246,
01724      233,   162,    15,    -1,    20,   201,   224,   162,   248,    -1,
01725      227,    -1,   247,    -1,    13,   250,   251,   224,   162,   249,
01726       -1,   313,    -1,   191,    -1,   202,    -1,   313,    -1,    91,
01727      181,    -1,   313,    -1,    14,   162,    -1,   313,    -1,   272,
01728       -1,   268,    -1,   267,    -1,   271,    -1,    60,    -1,    63,
01729       -1,   105,    63,    -1,   105,   255,    63,    -1,   256,    -1,
01730      255,   256,    -1,    65,    -1,    -1,    64,   257,   162,   144,
01731       -1,   111,    -1,   112,   262,    -1,   106,    61,    -1,   106,
01732      255,    61,    -1,   102,    62,    -1,   102,   255,    62,    -1,
01733      109,    -1,    -1,   262,    -1,   263,    -1,   262,   263,    -1,
01734      110,    -1,   264,   110,    -1,   265,    -1,   264,   265,    -1,
01735      114,    -1,    -1,   113,   266,   162,   144,    -1,   103,    63,
01736       -1,   103,   255,    63,    -1,   269,    -1,   101,   105,   256,
01737       63,    -1,   101,   270,    -1,   184,    -1,    54,    -1,    53,
01738       -1,    56,    -1,    63,    -1,   105,    63,    -1,   104,    63,
01739       -1,   104,   255,    63,    -1,    58,    -1,    59,    -1,   129,
01740       58,    -1,   129,    59,    -1,    51,    -1,    54,    -1,    53,
01741       -1,    56,    -1,    55,    -1,   273,    -1,   273,    -1,    34,
01742       -1,    33,    -1,    35,    -1,    36,    -1,    49,    -1,    48,
01743       -1,    66,    -1,    67,    -1,   309,    -1,    -1,   120,   278,
01744      168,   309,    -1,     1,   309,    -1,   149,   280,   306,    -1,
01745      280,   309,    -1,   284,   147,   289,   147,   291,   294,    -1,
01746      284,   147,   289,   147,   291,   147,   284,   294,    -1,   284,
01747      147,   289,   294,    -1,   284,   147,   289,   147,   284,   294,
01748       -1,   284,   147,   291,   294,    -1,   284,   147,   291,   147,
01749      284,   294,    -1,   284,   294,    -1,   289,   147,   291,   294,
01750       -1,   289,   147,   291,   147,   284,   294,    -1,   289,   294,
01751       -1,   289,   147,   284,   294,    -1,   291,   294,    -1,   291,
01752      147,   284,   294,    -1,   293,    -1,    -1,    55,    -1,    54,
01753       -1,    53,    -1,    56,    -1,   281,    -1,    51,    -1,   282,
01754       -1,    92,   231,   306,    -1,   283,    -1,   284,   147,   283,
01755       -1,    51,   116,    -1,   285,   191,    -1,   285,   223,    -1,
01756      287,    -1,   288,   147,   287,    -1,   286,    -1,   289,   147,
01757      286,    -1,   126,    -1,    98,    -1,   290,    51,    -1,   290,
01758       -1,   123,    -1,    99,    -1,   292,    51,    -1,   147,   293,
01759       -1,   313,    -1,   275,    -1,    -1,   149,   296,   167,   306,
01760       -1,   313,    -1,   298,   308,    -1,   299,    -1,   298,   147,
01761      299,    -1,   191,    91,   191,    -1,    57,   191,    -1,    51,
01762       -1,    55,    -1,    52,    -1,    51,    -1,    55,    -1,    52,
01763       -1,   188,    -1,    51,    -1,    52,    -1,   188,    -1,   146,
01764       -1,    88,    -1,    -1,   312,    -1,    -1,   310,    -1,   305,
01765      150,    -1,   305,   151,    -1,    -1,   310,    -1,   147,    -1,
01766      152,    -1,   310,    -1,    -1,   153,   311,   261,    -1,   309,
01767       -1,   312,   152,    -1,    -1
01768 };
01769 
01770 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
01771 static const yytype_uint16 yyrline[] =
01772 {
01773        0,  1166,  1166,  1166,  1177,  1183,  1187,  1192,  1196,  1202,
01774     1204,  1203,  1215,  1242,  1248,  1252,  1257,  1261,  1267,  1267,
01775     1271,  1275,  1279,  1283,  1287,  1291,  1295,  1300,  1301,  1305,
01776     1309,  1313,  1317,  1321,  1326,  1330,  1335,  1339,  1343,  1347,
01777     1350,  1354,  1361,  1362,  1366,  1370,  1374,  1378,  1381,  1388,
01778     1389,  1392,  1393,  1397,  1396,  1409,  1413,  1418,  1422,  1427,
01779     1431,  1436,  1440,  1444,  1448,  1452,  1458,  1462,  1468,  1469,
01780     1475,  1479,  1483,  1487,  1491,  1495,  1499,  1503,  1507,  1511,
01781     1517,  1518,  1524,  1528,  1534,  1538,  1544,  1548,  1552,  1556,
01782     1560,  1564,  1570,  1576,  1583,  1587,  1591,  1595,  1599,  1603,
01783     1609,  1615,  1622,  1626,  1629,  1633,  1637,  1643,  1644,  1645,
01784     1646,  1651,  1658,  1659,  1662,  1666,  1666,  1672,  1673,  1674,
01785     1675,  1676,  1677,  1678,  1679,  1680,  1681,  1682,  1683,  1684,
01786     1685,  1686,  1687,  1688,  1689,  1690,  1691,  1692,  1693,  1694,
01787     1695,  1696,  1697,  1698,  1699,  1700,  1703,  1703,  1703,  1704,
01788     1704,  1705,  1705,  1705,  1706,  1706,  1706,  1706,  1707,  1707,
01789     1707,  1708,  1708,  1708,  1709,  1709,  1709,  1709,  1710,  1710,
01790     1710,  1710,  1711,  1711,  1711,  1711,  1712,  1712,  1712,  1712,
01791     1713,  1713,  1713,  1713,  1714,  1714,  1717,  1721,  1725,  1729,
01792     1733,  1737,  1741,  1745,  1749,  1754,  1759,  1764,  1768,  1772,
01793     1776,  1780,  1784,  1788,  1792,  1796,  1800,  1804,  1808,  1812,
01794     1816,  1820,  1824,  1828,  1832,  1836,  1840,  1844,  1848,  1852,
01795     1856,  1860,  1864,  1868,  1872,  1876,  1880,  1884,  1888,  1892,
01796     1898,  1905,  1906,  1911,  1915,  1922,  1928,  1929,  1932,  1933,
01797     1934,  1939,  1944,  1951,  1956,  1961,  1966,  1971,  1978,  1978,
01798     1989,  1995,  1999,  2005,  2010,  2015,  2019,  2023,  2027,  2033,
01799     2037,  2041,  2047,  2048,  2049,  2050,  2051,  2052,  2053,  2054,
01800     2059,  2058,  2070,  2074,  2069,  2079,  2079,  2083,  2087,  2091,
01801     2095,  2100,  2105,  2109,  2113,  2117,  2121,  2125,  2129,  2133,
01802     2134,  2140,  2139,  2152,  2160,  2168,  2168,  2168,  2175,  2175,
01803     2175,  2182,  2188,  2193,  2195,  2192,  2204,  2202,  2218,  2223,
01804     2216,  2238,  2236,  2251,  2255,  2250,  2270,  2276,  2269,  2291,
01805     2295,  2299,  2303,  2309,  2316,  2317,  2318,  2321,  2322,  2325,
01806     2326,  2334,  2335,  2341,  2345,  2348,  2352,  2358,  2362,  2368,
01807     2372,  2376,  2380,  2384,  2388,  2392,  2396,  2400,  2406,  2410,
01808     2414,  2418,  2422,  2426,  2430,  2434,  2438,  2442,  2446,  2450,
01809     2454,  2458,  2462,  2468,  2469,  2476,  2480,  2484,  2491,  2495,
01810     2501,  2502,  2505,  2510,  2513,  2517,  2523,  2527,  2534,  2533,
01811     2546,  2556,  2560,  2565,  2572,  2576,  2580,  2584,  2588,  2592,
01812     2596,  2600,  2604,  2611,  2610,  2623,  2622,  2636,  2644,  2653,
01813     2656,  2663,  2666,  2670,  2671,  2674,  2678,  2681,  2685,  2688,
01814     2689,  2690,  2691,  2694,  2695,  2696,  2700,  2706,  2707,  2713,
01815     2718,  2717,  2728,  2732,  2738,  2742,  2748,  2752,  2758,  2761,
01816     2762,  2765,  2766,  2769,  2775,  2781,  2782,  2785,  2792,  2791,
01817     2805,  2809,  2816,  2820,  2827,  2834,  2835,  2836,  2837,  2838,
01818     2842,  2848,  2852,  2858,  2859,  2860,  2864,  2870,  2874,  2878,
01819     2882,  2886,  2892,  2898,  2902,  2906,  2910,  2914,  2918,  2925,
01820     2934,  2935,  2938,  2943,  2942,  2951,  2958,  2964,  2970,  2974,
01821     2978,  2982,  2986,  2990,  2994,  2998,  3002,  3006,  3010,  3014,
01822     3018,  3022,  3027,  3033,  3038,  3043,  3048,  3055,  3059,  3066,
01823     3070,  3076,  3080,  3086,  3093,  3099,  3105,  3109,  3115,  3119,
01824     3125,  3126,  3129,  3134,  3141,  3142,  3145,  3152,  3156,  3163,
01825     3168,  3168,  3193,  3194,  3200,  3205,  3211,  3215,  3221,  3222,
01826     3223,  3226,  3227,  3228,  3229,  3232,  3233,  3234,  3237,  3238,
01827     3241,  3242,  3245,  3246,  3249,  3252,  3255,  3256,  3257,  3260,
01828     3261,  3265,  3264,  3271,  3272,  3276
01829 };
01830 #endif
01831 
01832 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
01833 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
01834    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
01835 static const char *const yytname[] =
01836 {
01837   "$end", "error", "$undefined", "keyword_class", "keyword_module",
01838   "keyword_def", "keyword_begin", "keyword_if", "keyword_unless",
01839   "keyword_while", "keyword_until", "keyword_for", "keyword_undef",
01840   "keyword_rescue", "keyword_ensure", "keyword_end", "keyword_then",
01841   "keyword_elsif", "keyword_else", "keyword_case", "keyword_when",
01842   "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
01843   "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
01844   "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
01845   "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
01846   "keyword_and", "keyword_or", "keyword_not", "modifier_if",
01847   "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
01848   "keyword_alias", "keyword_BEGIN", "keyword_END", "keyword__LINE__",
01849   "keyword__FILE__", "keyword__ENCODING__", "tIDENTIFIER", "tFID", "tGVAR",
01850   "tIVAR", "tCONSTANT", "tCVAR", "tLABEL", "tINTEGER", "tFLOAT", "tCHAR",
01851   "tXSTRING", "tREGEXP", "tSTRING", "tSTRING_PART", "tSTRING_MID",
01852   "tNTH_REF", "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW",
01853   "tCMP", "tEQ", "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP",
01854   "tMATCH", "tNMATCH", "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT",
01855   "tRSHFT", "tCOLON2", "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN",
01856   "tLPAREN_ARG", "tRPAREN", "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR",
01857   "tAMPER", "tLAMBDA", "tSYMBEG", "tREGEXP_BEG", "tWORDS_BEG",
01858   "tSYMBOLS_BEG", "tSTRING_BEG", "tXSTRING_BEG", "tSTRING_DVAR", "tLAMBEG",
01859   "tHEREDOC_BEG", "tHEREDOC_END", "tLITERAL_DELIM", "tHD_LITERAL_DELIM",
01860   "tHD_STRING_PART", "tHD_STRING_MID", "tLOWEST", "'='", "'?'", "':'",
01861   "'>'", "'<'", "'|'", "'^'", "'&'", "'+'", "'-'", "'*'", "'/'", "'%'",
01862   "tUMINUS_NUM", "'!'", "'~'", "idNULL", "idRespond_to", "idIFUNC",
01863   "idCFUNC", "id_core_set_method_alias", "id_core_set_variable_alias",
01864   "id_core_undef_method", "id_core_define_method",
01865   "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN",
01866   "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'",
01867   "'\\n'", "$accept", "program", "$@1", "top_compstmt", "top_stmts",
01868   "top_stmt", "@2", "bodystmt", "compstmt", "stmts", "stmt", "$@3",
01869   "command_asgn", "expr", "expr_value", "command_call", "block_command",
01870   "cmd_brace_block", "$@4", "command", "mlhs", "mlhs_inner", "mlhs_basic",
01871   "mlhs_item", "mlhs_list", "mlhs_post", "mlhs_node", "lhs", "cname",
01872   "cpath", "fname", "fsym", "undef_list", "$@5", "op", "reswords", "arg",
01873   "arg_value", "aref_args", "paren_args", "opt_paren_args",
01874   "opt_call_args", "call_args", "command_args", "@6", "block_arg",
01875   "opt_block_arg", "args", "mrhs", "primary", "@7", "@8", "$@9", "$@10",
01876   "@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17", "@18", "@19",
01877   "@20", "@21", "@22", "@23", "@24", "@25", "primary_value", "then", "do",
01878   "if_tail", "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs",
01879   "block_param", "opt_block_param", "block_param_def", "opt_bv_decl",
01880   "bv_decls", "bvar", "f_larglist", "lambda_body", "do_block", "$@26",
01881   "block_call", "method_call", "brace_block", "@27", "@28", "case_body",
01882   "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
01883   "string", "string_rep", "string_interp", "@29", "xstring", "regexp",
01884   "heredoc", "opt_heredoc_bodies", "heredoc_bodies", "heredoc_body",
01885   "heredoc_string_rep", "heredoc_string_interp", "@30", "words", "symbol",
01886   "basic_symbol", "sym", "symbols", "numeric", "variable", "var_lhs",
01887   "var_ref", "backref", "superclass", "$@31", "f_arglist", "f_args",
01888   "f_bad_arg", "f_norm_arg", "f_arg_item", "f_arg", "f_opt_asgn", "f_opt",
01889   "f_block_opt", "f_block_optarg", "f_optarg", "restarg_mark",
01890   "f_rest_arg", "blkarg_mark", "f_block_arg", "opt_f_block_arg",
01891   "singleton", "$@32", "assoc_list", "assocs", "assoc", "operation",
01892   "operation2", "operation3", "dot_or_colon", "opt_terms", "opt_nl",
01893   "rparen", "rbracket", "trailer", "term", "nl", "$@33", "terms", "none", 0
01894 };
01895 #endif
01896 
01897 # ifdef YYPRINT
01898 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
01899    token YYLEX-NUM.  */
01900 static const yytype_uint16 yytoknum[] =
01901 {
01902        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
01903      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
01904      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
01905      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
01906      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
01907      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
01908      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
01909      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
01910      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
01911      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
01912      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
01913      365,   366,   367,   368,   369,   370,    61,    63,    58,    62,
01914       60,   124,    94,    38,    43,    45,    42,    47,    37,   371,
01915       33,   126,   372,   373,   374,   375,   376,   377,   378,   379,
01916      380,   381,   382,   123,   125,    91,    46,    44,    96,    40,
01917       41,    93,    59,    10
01918 };
01919 # endif
01920 
01921 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
01922 static const yytype_uint16 yyr1[] =
01923 {
01924        0,   154,   156,   155,   157,   158,   158,   158,   158,   159,
01925      160,   159,   161,   162,   163,   163,   163,   163,   165,   164,
01926      164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
01927      164,   164,   164,   164,   164,   164,   164,   164,   164,   164,
01928      166,   166,   167,   167,   167,   167,   167,   167,   168,   169,
01929      169,   170,   170,   172,   171,   173,   173,   173,   173,   173,
01930      173,   173,   173,   173,   173,   173,   174,   174,   175,   175,
01931      176,   176,   176,   176,   176,   176,   176,   176,   176,   176,
01932      177,   177,   178,   178,   179,   179,   180,   180,   180,   180,
01933      180,   180,   180,   180,   181,   181,   181,   181,   181,   181,
01934      181,   181,   182,   182,   183,   183,   183,   184,   184,   184,
01935      184,   184,   185,   185,   186,   187,   186,   188,   188,   188,
01936      188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
01937      188,   188,   188,   188,   188,   188,   188,   188,   188,   188,
01938      188,   188,   188,   188,   188,   188,   189,   189,   189,   189,
01939      189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
01940      189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
01941      189,   189,   189,   189,   189,   189,   189,   189,   189,   189,
01942      189,   189,   189,   189,   189,   189,   190,   190,   190,   190,
01943      190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
01944      190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
01945      190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
01946      190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
01947      191,   192,   192,   192,   192,   193,   194,   194,   195,   195,
01948      195,   195,   195,   196,   196,   196,   196,   196,   198,   197,
01949      199,   200,   200,   201,   201,   201,   201,   201,   201,   202,
01950      202,   202,   203,   203,   203,   203,   203,   203,   203,   203,
01951      204,   203,   205,   206,   203,   207,   203,   203,   203,   203,
01952      203,   203,   203,   203,   203,   203,   203,   203,   203,   203,
01953      203,   208,   203,   203,   203,   209,   210,   203,   211,   212,
01954      203,   203,   203,   213,   214,   203,   215,   203,   216,   217,
01955      203,   218,   203,   219,   220,   203,   221,   222,   203,   203,
01956      203,   203,   203,   223,   224,   224,   224,   225,   225,   226,
01957      226,   227,   227,   228,   228,   229,   229,   230,   230,   231,
01958      231,   231,   231,   231,   231,   231,   231,   231,   232,   232,
01959      232,   232,   232,   232,   232,   232,   232,   232,   232,   232,
01960      232,   232,   232,   233,   233,   234,   234,   234,   235,   235,
01961      236,   236,   237,   237,   238,   238,   239,   239,   241,   240,
01962      242,   242,   242,   242,   243,   243,   243,   243,   243,   243,
01963      243,   243,   243,   245,   244,   246,   244,   247,   248,   248,
01964      249,   249,   250,   250,   250,   251,   251,   252,   252,   253,
01965      253,   253,   253,   254,   254,   254,   254,   255,   255,   256,
01966      257,   256,   256,   256,   258,   258,   259,   259,   260,   261,
01967      261,   262,   262,   263,   263,   264,   264,   265,   266,   265,
01968      267,   267,   268,   268,   269,   270,   270,   270,   270,   270,
01969      270,   271,   271,   272,   272,   272,   272,   273,   273,   273,
01970      273,   273,   274,   275,   275,   275,   275,   275,   275,   275,
01971      276,   276,   277,   278,   277,   277,   279,   279,   280,   280,
01972      280,   280,   280,   280,   280,   280,   280,   280,   280,   280,
01973      280,   280,   280,   281,   281,   281,   281,   282,   282,   283,
01974      283,   284,   284,   285,   286,   287,   288,   288,   289,   289,
01975      290,   290,   291,   291,   292,   292,   293,   294,   294,   295,
01976      296,   295,   297,   297,   298,   298,   299,   299,   300,   300,
01977      300,   301,   301,   301,   301,   302,   302,   302,   303,   303,
01978      304,   304,   305,   305,   306,   307,   308,   308,   308,   309,
01979      309,   311,   310,   312,   312,   313
01980 };
01981 
01982 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
01983 static const yytype_uint8 yyr2[] =
01984 {
01985        0,     2,     0,     2,     2,     1,     1,     3,     2,     1,
01986        0,     5,     4,     2,     1,     1,     3,     2,     0,     4,
01987        2,     3,     3,     3,     3,     3,     4,     1,     3,     3,
01988        6,     5,     5,     5,     5,     3,     3,     3,     3,     1,
01989        3,     3,     1,     3,     3,     3,     2,     1,     1,     1,
01990        1,     1,     4,     0,     5,     2,     3,     4,     5,     4,
01991        5,     2,     2,     2,     2,     2,     1,     3,     1,     3,
01992        1,     2,     3,     5,     2,     4,     2,     4,     1,     3,
01993        1,     3,     2,     3,     1,     2,     1,     4,     3,     3,
01994        3,     3,     2,     1,     1,     4,     3,     3,     3,     3,
01995        2,     1,     1,     1,     2,     1,     3,     1,     1,     1,
01996        1,     1,     1,     1,     1,     0,     4,     1,     1,     1,
01997        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01998        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
01999        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02000        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02001        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02002        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02003        1,     1,     1,     1,     1,     1,     3,     5,     3,     5,
02004        6,     5,     5,     5,     5,     4,     3,     3,     3,     3,
02005        3,     3,     3,     3,     3,     4,     4,     2,     2,     3,
02006        3,     3,     3,     3,     3,     3,     3,     3,     3,     3,
02007        3,     3,     2,     2,     3,     3,     3,     3,     6,     1,
02008        1,     1,     2,     4,     2,     3,     1,     1,     1,     1,
02009        2,     4,     2,     1,     2,     2,     4,     1,     0,     2,
02010        2,     2,     1,     1,     2,     3,     4,     4,     5,     3,
02011        4,     2,     1,     1,     1,     1,     1,     1,     1,     1,
02012        0,     4,     0,     0,     5,     0,     3,     3,     3,     2,
02013        3,     3,     1,     4,     3,     1,     4,     3,     2,     1,
02014        2,     0,     4,     6,     6,     0,     0,     7,     0,     0,
02015        7,     5,     4,     0,     0,     9,     0,     6,     0,     0,
02016        8,     0,     5,     0,     0,     7,     0,     0,     9,     1,
02017        1,     1,     1,     1,     1,     1,     2,     1,     1,     1,
02018        5,     1,     2,     1,     1,     1,     3,     1,     3,     1,
02019        4,     6,     3,     5,     2,     4,     1,     3,     6,     8,
02020        4,     6,     4,     2,     6,     2,     4,     6,     2,     4,
02021        2,     4,     1,     1,     1,     3,     1,     4,     1,     4,
02022        1,     3,     1,     1,     4,     1,     3,     3,     0,     5,
02023        2,     4,     5,     5,     2,     4,     4,     3,     3,     3,
02024        2,     1,     4,     0,     5,     0,     5,     5,     1,     1,
02025        6,     1,     1,     1,     1,     2,     1,     2,     1,     1,
02026        1,     1,     1,     1,     1,     2,     3,     1,     2,     1,
02027        0,     4,     1,     2,     2,     3,     2,     3,     1,     0,
02028        1,     1,     2,     1,     2,     1,     2,     1,     0,     4,
02029        2,     3,     1,     4,     2,     1,     1,     1,     1,     1,
02030        2,     2,     3,     1,     1,     2,     2,     1,     1,     1,
02031        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02032        1,     1,     1,     0,     4,     2,     3,     2,     6,     8,
02033        4,     6,     4,     6,     2,     4,     6,     2,     4,     2,
02034        4,     1,     0,     1,     1,     1,     1,     1,     1,     1,
02035        3,     1,     3,     2,     2,     2,     1,     3,     1,     3,
02036        1,     1,     2,     1,     1,     1,     2,     2,     1,     1,
02037        0,     4,     1,     2,     1,     3,     3,     2,     1,     1,
02038        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
02039        0,     1,     0,     1,     2,     2,     0,     1,     1,     1,
02040        1,     0,     3,     1,     2,     0
02041 };
02042 
02043 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
02044    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
02045    means the default is an error.  */
02046 static const yytype_uint16 yydefact[] =
02047 {
02048        2,     0,     0,     1,     0,     0,     0,     0,   270,     0,
02049        0,   295,   298,     0,     0,   540,   319,   320,   321,   322,
02050      282,   248,   248,   465,   464,   466,   467,   542,     0,    10,
02051        0,   469,   468,   457,   530,   459,   458,   461,   460,   453,
02052      454,   413,   414,   470,   471,     0,     0,     0,     0,   272,
02053      555,   555,    78,   291,     0,     0,     0,     0,     0,     0,
02054      428,     0,     0,     0,     3,   540,     6,     9,    27,    39,
02055       42,    50,    49,     0,    66,     0,    70,    80,     0,    47,
02056      229,     0,    51,   289,   262,   263,   264,   265,   266,   411,
02057      410,   442,   412,   409,   463,     0,   267,   268,   248,     5,
02058        8,   319,   320,   282,   285,   391,     0,   102,   103,     0,
02059        0,     0,     0,   105,     0,   323,     0,   463,   268,     0,
02060      311,   156,   166,   157,   153,   182,   183,   184,   185,   164,
02061      179,   172,   162,   161,   177,   160,   159,   155,   180,   154,
02062      167,   171,   173,   165,   158,   174,   181,   176,   175,   168,
02063      178,   163,   152,   170,   169,   151,   149,   150,   146,   147,
02064      148,   107,   109,   108,   141,   142,   138,   120,   121,   122,
02065      129,   126,   128,   123,   124,   143,   144,   130,   131,   135,
02066      125,   127,   117,   118,   119,   132,   133,   134,   136,   137,
02067      139,   140,   145,   520,   313,   110,   111,   519,     0,     0,
02068        0,    48,     0,     0,     0,   463,     0,   268,     0,     0,
02069        0,     0,   334,   333,     0,     0,   463,   268,   175,   168,
02070      178,   163,   146,   147,   107,   108,     0,   112,   114,    20,
02071      113,   549,   551,   540,     0,   553,   550,   541,     0,     0,
02072        0,     0,   243,   230,   253,    64,   247,   555,   555,   524,
02073       65,    63,   542,    62,     0,   555,   390,    61,   542,     0,
02074      543,    18,     0,     0,   207,     0,   208,   279,     0,     0,
02075        0,   540,    15,   542,    68,    14,     0,   542,     0,   546,
02076      546,   231,     0,     0,   546,   522,     0,     0,    76,     0,
02077       86,    93,   492,   447,   446,   448,   449,     0,   445,   444,
02078      426,   420,   419,   422,     0,     0,   417,   440,     0,   451,
02079        0,   415,     0,   424,     0,   455,   456,    46,   222,   223,
02080        4,   541,     0,     0,     0,     0,     0,     0,     0,   378,
02081      380,     0,    82,     0,    74,    71,     0,     0,     0,     0,
02082        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02083        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02084        0,     0,     0,     0,   555,     0,   539,   538,     0,   395,
02085      393,   290,     0,     0,   384,    55,   288,   308,   102,   103,
02086      104,   455,   456,     0,   473,   306,   472,     0,   555,     0,
02087        0,     0,   314,   316,     0,   555,   279,   325,     0,   324,
02088        0,     0,   555,     0,     0,     0,     0,     0,     0,   279,
02089        0,   555,     0,   303,     0,   115,   429,     0,     0,     0,
02090      554,   527,   254,   250,     0,     0,   244,   252,     0,   245,
02091      542,     0,   284,   249,   542,   239,   555,   555,   238,   542,
02092      287,    45,     0,     0,     0,     0,     0,     0,    17,   542,
02093      277,    13,   541,    67,   273,   276,   280,   548,   232,   547,
02094      548,   234,   281,   523,    92,    84,     0,    79,     0,     0,
02095      555,     0,   498,   495,   494,   493,   496,     0,   511,   515,
02096      514,   510,   492,     0,   375,   497,   499,   501,   555,     0,
02097      508,   555,   513,   555,     0,   491,   450,     0,     0,   433,
02098      438,   437,   423,   431,     0,   435,   427,   418,   441,   452,
02099      416,   425,     0,     0,     7,    21,    22,    23,    24,    25,
02100       43,    44,   555,     0,    28,    37,     0,    38,   542,     0,
02101       72,    83,    41,    40,     0,   186,   253,    36,   204,   212,
02102      217,   218,   219,   214,   216,   226,   227,   220,   221,   197,
02103      198,   224,   225,   542,   213,   215,   209,   210,   211,   199,
02104      200,   201,   202,   203,   531,   536,   532,   537,   389,   248,
02105      387,   542,   531,   533,   532,   534,   388,   248,   531,   532,
02106      248,   555,   555,    29,   188,    35,   196,    53,    56,     0,
02107      475,     0,     0,   102,   103,   106,     0,   542,   555,     0,
02108      542,   492,     0,   271,   555,   555,   401,   555,   326,   186,
02109      535,   532,   542,   531,   532,   555,   328,   296,   327,   299,
02110      535,   278,   542,   531,   532,     0,     0,   552,   430,     0,
02111        0,   302,   526,     0,   255,   251,     0,   555,   525,   283,
02112      544,   235,   240,   242,   286,    19,     0,    26,   195,    69,
02113       16,   542,   546,    85,    77,    89,    91,   542,   531,   532,
02114      503,   498,     0,   346,   337,   339,   542,   335,   542,     0,
02115        0,   292,     0,   484,   518,   504,     0,   487,   512,     0,
02116      489,   516,   443,     0,     0,   432,   434,   436,   205,   206,
02117      366,   542,     0,   364,   363,   261,     0,    81,    75,     0,
02118        0,     0,     0,     0,     0,   386,    59,     0,   392,     0,
02119        0,   237,   385,    57,   236,   381,    52,     0,     0,     0,
02120      555,   309,     0,     0,   392,   312,   521,   492,     0,     0,
02121      317,   402,   403,   555,   404,     0,   555,   331,     0,     0,
02122      329,     0,     0,   392,     0,     0,     0,     0,     0,   392,
02123        0,   116,   301,     0,     0,   256,     0,   257,   246,   555,
02124       11,   274,   233,    87,   542,     0,   344,     0,   500,     0,
02125      368,     0,     0,   502,   555,   555,   517,   555,   509,   555,
02126      555,   421,     0,   542,     0,   555,     0,   506,   555,   555,
02127      362,     0,     0,   259,    73,   187,     0,    34,   193,    33,
02128      194,    60,   545,     0,    31,   191,    32,   192,    58,   382,
02129      383,     0,     0,   189,     0,     0,   474,   307,   542,     0,
02130      477,   492,     0,     0,   406,   332,     0,    12,   408,     0,
02131      293,     0,   294,     0,     0,   304,   255,   555,   258,   241,
02132      336,   347,     0,   342,   338,   374,     0,   377,   376,     0,
02133      480,     0,   482,     0,   488,     0,   485,   490,   439,     0,
02134      365,   353,   355,     0,   505,     0,   358,     0,   360,   379,
02135      260,   228,    30,   190,   396,   394,     0,     0,   476,   315,
02136        0,     0,   405,     0,    94,   101,     0,   407,     0,   297,
02137      300,     0,   398,   399,   397,     0,   345,     0,   340,   372,
02138      542,   370,   373,   555,   555,   555,   555,   367,   555,   555,
02139      279,     0,   555,   507,   555,   555,    54,   310,     0,   100,
02140        0,   555,     0,   555,   555,     0,   343,     0,     0,   369,
02141      481,     0,   478,   483,   486,     0,   350,     0,   352,   535,
02142      278,   359,     0,   356,   361,   318,   535,    99,   542,   531,
02143      532,   400,   330,   305,   341,   371,   555,   555,   555,   555,
02144      555,   392,   479,   351,     0,   348,   354,   357,   555,   349
02145 };
02146 
02147 /* YYDEFGOTO[NTERM-NUM].  */
02148 static const yytype_int16 yydefgoto[] =
02149 {
02150       -1,     1,     2,    64,    65,    66,   262,   394,   395,   271,
02151      272,   442,    68,    69,   202,    70,    71,   588,   720,    72,
02152       73,   273,    74,    75,    76,   467,    77,   203,   113,   114,
02153      227,   228,   229,   626,   195,   196,    79,   244,   278,   568,
02154      712,   434,   435,   253,   254,   246,   426,   436,   527,    80,
02155      199,   276,   651,   277,   292,   209,   747,   210,   748,   625,
02156      891,   592,   589,   815,   390,   392,   601,   602,   821,   265,
02157      398,   617,   739,   740,   215,   664,   665,   666,   783,   692,
02158      693,   769,   900,   901,   483,   671,   330,   522,    82,    83,
02159      376,   582,   581,   419,   894,   605,   733,   823,   827,    84,
02160       85,   305,   306,   498,    86,    87,    88,   627,   636,   503,
02161      504,   505,   684,    89,    90,    91,   299,    92,    93,   205,
02162      206,    96,   207,   385,   591,   728,   729,   485,   486,   487,
02163      488,   489,   490,   787,   788,   491,   492,   493,   494,   776,
02164      673,   198,   391,   283,   437,   249,   119,   596,   570,   368,
02165      234,   431,   432,   708,   458,   399,   260,   416,   237,   275
02166 };
02167 
02168 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
02169    STATE-NUM.  */
02170 #define YYPACT_NINF -763
02171 static const yytype_int16 yypact[] =
02172 {
02173     -763,   120,  2670,  -763,  7298,  9106,  9433,  5605,  -763,  8767,
02174     8767,  -763,  -763,  9215,  6691,  5113,  7976,  7976,  -763,  -763,
02175     7976,  3331,  2908,  -763,  -763,  -763,  -763,    26,  6691,  -763,
02176        9,  -763,  -763,  5736,  3049,  -763,  -763,  5865,  -763,  -763,
02177     -763,  -763,  -763,  -763,  -763,  8880,  8880,    90,  4462,   -22,
02178     8089,  8315,  6967,  -763,  6399,   584,   717,   907,   943,   659,
02179     -763,   272,  8993,  8880,  -763,   197,  -763,  1023,  -763,   519,
02180     -763,  -763,   119,    45,  -763,    11,  9324,  -763,   115,  3169,
02181      173,   228,    28,    81,  -763,  -763,  -763,  -763,  -763,  -763,
02182     -763,  -763,  -763,  -763,   398,    87,  -763,   439,    44,  -763,
02183     -763,  -763,  -763,  -763,    21,    85,   100,   350,   394,  8767,
02184      278,  4597,   540,  -763,    58,  -763,   271,  -763,  -763,    44,
02185     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,
02186     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,
02187     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,    38,    49,
02188       54,    61,  -763,  -763,  -763,  -763,  -763,  -763,    97,   198,
02189     -763,   218,  -763,   232,  -763,  -763,  -763,  -763,  -763,  -763,
02190     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,
02191     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,
02192     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,    28,  3668,
02193       99,   519,    74,   138,   320,    24,   203,    40,    74,  8767,
02194     8767,   262,  -763,  -763,   331,   317,    52,    68,  -763,  -763,
02195     -763,  -763,  -763,  -763,  -763,  -763,  6545,  -763,  -763,   225,
02196     -763,  -763,  -763,   197,   325,  -763,  -763,   229,  8880,  8880,
02197     8880,  8880,  -763,  3169,   292,  -763,  -763,   243,   250,  -763,
02198     -763,  -763,  5000,  -763,  7976,  7976,  -763,  -763,  5228,  8767,
02199     -763,  -763,   256,  4732,  -763,   361,   330,   445,  7524,  4462,
02200      280,   197,  1023,   268,   326,  -763,  8767,   268,   304,   174,
02201      179,  -763,   292,   319,   179,  -763,   415,  9542,   334,   363,
02202      366,   379,   748,  -763,  -763,  -763,  -763,   971,  -763,  -763,
02203     -763,  -763,  -763,  -763,   370,   625,  -763,  -763,   975,  -763,
02204      982,  -763,  1039,  -763,   733,   419,   421,  -763,  -763,  -763,
02205     -763,  5341,  8767,  8767,  8767,  8767,  7524,  8767,  8767,  -763,
02206     -763,  8428,  -763,  4462,  7076,   338,  8428,  8880,  8880,  8880,
02207     8880,  8880,  8880,  8880,  8880,  8880,  8880,  8880,  8880,  8880,
02208     8880,  8880,  8880,  8880,  8880,  8880,  8880,  8880,  8880,  8880,
02209     8880,  8880,  8880,  2210,  7976,  9821,  -763,  -763, 10793,  -763,
02210     -763,  -763,  8993,  8993,  -763,   400,  -763,   519,  -763,   387,
02211     -763,  -763,  -763,   197,  -763,  -763,  -763,  9902,  7976,  9983,
02212     3668,  8767,  -763,  -763,   486,   490,    65,  -763,  3807,   497,
02213     8880, 10064,  7976, 10145,  8880,  8880,  4079,    60,    60,   104,
02214    10226,  7976, 10307,  -763,   452,  -763,   370,   325,  8541,   503,
02215     -763,  -763,  -763,  -763,  8880,  7185,  -763,  -763,  8202,  -763,
02216      268,   371,  -763,  -763,   268,  -763,   376,   389,  -763,   129,
02217     -763,  -763,  6691,  4194,   382, 10064, 10145,  8880,  1023,   268,
02218     -763,  -763,  5455,   391,   519,  -763,  -763,  7411,  -763,  -763,
02219     8315,  -763,  -763,  -763,   387,    11,  9542,  -763,  9542, 10388,
02220     7976, 10469,   425,  -763,  -763,  -763,  -763,   797,  -763,  -763,
02221     -763,  -763,   757,    80,  -763,  -763,  -763,  -763,   397,  8880,
02222     -763,   401,   514,   429,   518,  -763,  -763,   525,  4732,  -763,
02223     -763,  -763,   370,  -763,   480,  -763,  -763,  -763,  -763,  -763,
02224     -763,  -763,  8880,  8880,  -763,  -763,  -763,  -763,  -763,  -763,
02225     -763,  -763,    29,  8880,  -763,   434,   448,  -763,   268,  9542,
02226      453,  -763,  -763,  -763,   509,  2107,  -763,  -763,   330,  1778,
02227     1778,  1778,  1778,  1278,  1278,  6710,  1338,  1778,  1778,  9758,
02228     9758,   583,   583,  2455,  1278,  1278,   735,   735,   813,    64,
02229       64,   330,   330,   330,  3423,  6123,  3515,  6252,  -763,    85,
02230     -763,   268,   524,  -763,   537,  -763,  -763,  3190,  -763,  -763,
02231     1238,    29,    29,  -763,  2887,  -763,  3169,  -763,  -763,   197,
02232     -763,  8767,  3668,   496,    37,  -763,    85,   268,    85,   632,
02233      129,   997,  6837,  -763,  8654,   618,  -763,   674,  -763,  3028,
02234     5994,  2767,   268,   279,   294,   618,  -763,  -763,  -763,  -763,
02235      140,   147,   268,   132,   151,  8767,  6691,  -763,   370,   643,
02236       67,  -763,  -763,  8880,   292,  -763,  7637,   250,  -763,  -763,
02237     -763,  -763,  7185,  8202,  -763,  -763,   516,  -763,  3169,    -6,
02238     1023,   268,   179,   338,  -763,   496,    37,   268,   238,   309,
02239     -763,  -763,   797,   556,  -763,   517,   268,  -763,   268,  4885,
02240     4732,  -763,   757,  -763,  -763,  -763,   757,  -763,  -763,   877,
02241     -763,  -763,  -763,   534,  4732,  -763,  -763,  -763,   330,   330,
02242     -763,   837,  4885,  -763,  -763,   522,  7750,  -763,  -763,  9542,
02243     8993,  8880,   562,  8993,  8993,  -763,   400,   531,   547,  8993,
02244     8993,  -763,  -763,   400,  -763,    81,   119,  4885,  4732,  8880,
02245       29,  -763,   197,   673,  -763,  -763,  -763,   757,  3668,   197,
02246     -763,   434,  -763,   609,  -763,  4347,   688,  -763,  8767,   702,
02247     -763,  8880,  8880,   353,  8880,  8880,   704,  4885,  4885,   155,
02248       60,  -763,  -763,  7863,  3943,  -763,  8880,  -763,  -763,   574,
02249     -763,  -763,  -763,   315,   268,   896,   575,  1139,  -763,   576,
02250      573,   712,   586,  -763,   585,   592,  -763,   593,  -763,   595,
02251      593,  -763,   601,   268,   629,   599,  9651,  -763,   605,   606,
02252     -763,   739,  8880,   612,  -763,  3169,  8880,  -763,  3169,  -763,
02253     3169,  -763,  -763,  8993,  -763,  3169,  -763,  3169,  -763,  -763,
02254     -763,   741,   616,  3169,  4732,  3668,  -763,  -763,   268,   747,
02255     -763,   997,  9760,    74,  -763,  -763,  4885,  -763,  -763,    74,
02256     -763,  8880,  -763,   749,   751,  -763,  -763,    93,  -763,  8202,
02257     -763,   620,   896,   621,  -763,  -763,  1073,  -763,  -763,   757,
02258     -763,   877,  -763,   877,  -763,   877,  -763,  -763,  -763,   655,
02259     -763,   757,  -763,   724,   414,   757,  -763,   877,  -763,  -763,
02260      637,  3169,  -763,  3169,  -763,  -763,   641,   773,  -763,  -763,
02261     3668,   737,  -763,   422,   366,   379,  3668,  -763,  3807,  -763,
02262     -763,  4885,  -763,  -763,  -763,   896,   620,   896,   642,  -763,
02263      213,  -763,  -763,   593,   653,   593,   593,  -763,   658,   662,
02264     -763, 10550,   593,  -763,   667,   593,  -763,  -763,   775,   387,
02265    10631,  7976, 10712,   490,   674,   800,   620,   896,  1073,  -763,
02266     -763,   877,  -763,  -763,  -763,   757,  -763,   877,  -763,   668,
02267      670,  -763,   877,  -763,  -763,  -763,   128,    37,   268,    84,
02268      103,  -763,  -763,  -763,   620,  -763,   593,   593,   669,   593,
02269      593,   118,  -763,  -763,   877,  -763,  -763,  -763,   593,  -763
02270 };
02271 
02272 /* YYPGOTO[NTERM-NUM].  */
02273 static const yytype_int16 yypgoto[] =
02274 {
02275     -763,  -763,  -763,   380,  -763,    42,  -763,  -363,   -19,  -763,
02276       35,  -763,  -293,   734,    13,   -48,  -763,  -570,  -763,   -13,
02277      817,  -170,     7,   -55,  -270,  -414,   -11,  1771,   -59,   828,
02278       -1,   -20,  -763,  -763,  -241,  -763,  1317,   894,  -763,    -7,
02279      257,  -338,    55,    -3,  -763,  -395,  -243,   101,  -291,     5,
02280     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,
02281     -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,  -763,   295,
02282     -199,  -370,   -86,  -553,  -763,  -699,  -689,   177,  -763,  -480,
02283     -763,  -594,  -763,   -87,  -763,  -763,   126,  -763,  -763,  -763,
02284      -82,  -763,  -763,  -401,  -763,   -69,  -763,  -763,  -763,  -763,
02285     -763,   656,   903,  -763,  -763,  -763,  -763,  -763,  -198,  -364,
02286     -763,   364,  -763,  -763,  -763,     8,  -763,  -763,  -763,  1109,
02287     1870,   850,  1678,  -763,  -763,    56,  -280,  -760,  -397,  -593,
02288      305,  -644,  -616,  -762,    48,   193,  -763,  -587,  -763,  -279,
02289      388,  -763,  -763,  -763,    15,  -386,   816,  -307,  -763,   672,
02290        2,   -25,  -233,  -534,  -260,    19,   144,  -763,     4,    -2
02291 };
02292 
02293 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
02294    positive, shift that token.  If negative, reduce the rule which
02295    number is the opposite.  If zero, do what YYDEFACT says.
02296    If YYTABLE_NINF, syntax error.  */
02297 #define YYTABLE_NINF -556
02298 static const yytype_int16 yytable[] =
02299 {
02300       99,   371,   259,   242,   242,   429,   194,   242,   261,   406,
02301      115,   115,   484,   495,   317,   256,   629,   466,   115,   257,
02302      461,   335,   230,   208,   463,   440,   571,   599,   233,   270,
02303      635,   248,   248,   635,   235,   248,   230,    67,   619,    67,
02304      453,   288,   638,   532,   455,   537,   100,   786,   281,   285,
02305      597,   380,   736,   298,   654,   274,   569,   115,   577,   383,
02306      778,   580,   746,   724,   612,   280,   284,   320,   844,   321,
02307      369,   245,   250,   622,   638,   251,   841,   -94,   743,   773,
02308      667,   115,   598,   397,   235,   775,   902,   616,   749,   779,
02309      397,   374,   270,  -101,   569,   375,   577,   784,   256,   449,
02310      -96,   717,   718,   913,   789,   598,   502,   369,   690,   669,
02311      -67,   735,   374,   418,  -462,   698,   366,   247,   247,   -98,
02312        3,   247,   567,   763,   575,  -278,  -465,   575,  -275,  -100,
02313      405,  -275,   657,   386,   -95,   337,   801,  -464,   685,   598,
02314      -94,   -81,  -466,   808,   -97,   267,   567,   329,   575,  -467,
02315      691,   279,   263,   896,   396,   447,  -101,   -96,   332,   236,
02316      567,   331,   575,   528,   598,   -97,   327,   328,   902,   567,
02317      252,   575,   -99,   913,   367,   258,   -98,   372,   384,   232,
02318      -95,  -100,  -278,  -278,  -465,  -469,  -532,   370,   670,   859,
02319      360,   361,   362,   255,   429,  -464,   844,   639,   466,   -86,
02320     -466,   641,   668,   495,   567,   575,   644,  -467,   926,   236,
02321      231,   232,   231,   232,   753,   -93,   649,   786,   628,   231,
02322      232,   786,   407,   408,   370,   298,   231,   232,   567,   723,
02323      575,   336,   465,   778,   255,   417,   -96,   -96,   954,   242,
02324      814,   242,   242,  -469,   444,   427,   427,   635,   635,   258,
02325      270,   -92,   235,   438,   400,   -98,   -98,   638,   236,   466,
02326      773,  -323,   904,   -88,   685,   667,   766,   248,   773,   248,
02327      -95,   -95,   685,   451,   909,   452,   274,  -531,   914,   -88,
02328      -97,   -97,   232,   524,   892,   794,  -468,   -89,   533,  -531,
02329      235,   786,   115,   404,   -91,   697,  -532,    81,   -90,    81,
02330      116,   116,   -87,   448,   204,   204,  -457,   430,   214,   433,
02331      204,   204,   204,   732,   270,   204,   363,   409,  -323,  -323,
02332     -461,   457,   495,   530,   583,   585,   460,   232,   595,   378,
02333      315,   316,   232,   379,   -90,   515,   516,   517,   518,   115,
02334      274,  -392,   413,    81,  -468,   418,   236,   289,   958,   231,
02335      232,   242,   236,   247,   -88,   247,    67,   204,   576,   387,
02336      928,   519,   438,   514,  -457,   819,   232,   726,   667,   744,
02337      667,   289,   415,   364,   365,   242,  -528,   236,  -461,   607,
02338      835,   420,   576,   424,   745,   -88,   438,   615,   -88,   242,
02339      425,   -88,   762,   606,   758,   -96,   576,   428,   242,   443,
02340      438,   337,   590,  -392,   204,   576,    81,   532,   401,   438,
02341      -98,   653,   790,   465,   961,   236,   388,   389,   761,   410,
02342     -529,   232,   645,   459,   459,   -90,   618,   618,   459,   466,
02343      450,   754,   526,   768,   427,   427,   893,   526,  -457,   576,
02344      637,    99,   -66,   831,   635,   667,   898,   818,   495,   445,
02345      230,   469,   877,   638,  -463,   456,   -90,   242,  -392,   -90,
02346     -392,  -392,   -90,   462,   576,   402,   403,  -268,   438,   -95,
02347      464,   115,   652,   115,   465,  -279,   411,   412,    67,   683,
02348      499,   468,  -461,   500,   501,   531,   674,   650,  -462,   674,
02349      512,   674,   513,  -528,    81,  -457,  -457,   587,   667,  -528,
02350      667,   603,   911,   604,   204,   204,   402,   446,   470,   471,
02351      920,  -463,  -463,   608,   -94,   496,   758,   918,   631,   630,
02352      694,   640,  -535,   642,  -268,  -268,   647,   236,   702,   373,
02353      667,   840,  -279,  -279,   115,   447,   643,  -529,   -81,  -461,
02354     -461,   660,   495,  -529,   672,   -86,   707,   204,   676,   204,
02355      204,   236,   236,   204,   204,  -101,   327,   328,    81,   388,
02356      389,  -100,   705,    81,    81,   678,   706,   921,   922,   681,
02357      711,   204,   707,   711,   713,   714,   679,   716,   714,   694,
02358      694,  -253,   289,   948,  -535,   878,   -93,   707,   682,   705,
02359      686,   711,   -92,   500,   501,   696,   714,   707,   381,   382,
02360      699,   730,   734,   737,   722,   737,   751,   661,   721,   473,
02361      474,   475,   476,   737,   709,   598,    81,   204,   204,   204,
02362      204,    81,   204,   204,   886,   700,   204,   710,    81,   289,
02363      888,   204,   707,   809,   230,   427,   735,   803,   750,  -535,
02364      -96,  -535,  -535,   770,   465,  -531,   300,   725,   301,   302,
02365      771,   772,   533,   -98,   337,   797,   799,   759,   752,   204,
02366      760,   804,   806,   -95,   767,   782,   770,   204,   204,  -254,
02367      567,   -88,   661,   791,   473,   474,   475,   476,   781,   567,
02368      796,   575,   802,   204,   -90,    81,   204,   506,   817,   301,
02369      302,   738,   735,    81,   -87,   303,   304,   204,   811,   812,
02370      822,    81,   826,   765,   115,   526,   204,   358,   359,   360,
02371      361,   362,   308,   310,   312,   314,   825,   830,   694,   832,
02372      313,   839,   842,   301,   302,   846,   845,   847,   833,   834,
02373      848,   824,   849,   236,   828,   837,   303,   304,    81,   851,
02374      853,   816,   855,   201,   201,   858,   861,    81,   820,   201,
02375      860,   829,   865,   867,   869,   872,   874,   427,   770,  -255,
02376      875,   289,   879,   289,   889,   204,   890,   895,   897,   618,
02377      303,   304,   674,   674,   236,   674,   907,   674,   674,   910,
02378      307,   301,   302,   674,  -256,   916,   674,   674,   917,   927,
02379      945,   115,   919,    81,   511,   876,   459,   301,   302,   472,
02380      931,   473,   474,   475,   476,   935,   337,   887,   472,   937,
02381      473,   474,   475,   476,   942,   953,   964,  -531,    98,  -532,
02382       98,   350,   351,   646,   289,    98,    98,   115,   303,   304,
02383      212,    98,    98,    98,   120,   737,    98,   715,   952,   764,
02384      477,   955,   810,   377,   303,   304,   478,   479,   661,   477,
02385      473,   474,   475,   476,   951,   478,   479,   197,   357,   358,
02386      359,   360,   361,   362,    98,   774,   236,   923,   687,   924,
02387      393,   480,   925,   236,   481,   929,     0,   880,    98,   677,
02388      480,   680,     0,   481,   337,     0,   204,    81,   472,   662,
02389      473,   474,   475,   476,   236,   663,     0,   482,     0,   350,
02390      351,   674,   674,   674,   674,     0,   674,   674,   242,   908,
02391      674,     0,   674,   674,     0,   576,     0,     0,     0,   438,
02392      204,   606,   737,   707,     0,    98,     0,    98,   661,   477,
02393      473,   474,   475,   476,     0,   478,   479,   358,   359,   360,
02394      361,   362,     0,   201,   201,   282,     0,   661,     0,   473,
02395      474,   475,   476,     0,   674,   674,   674,   674,   674,     0,
02396      480,     0,     0,   481,    81,    81,   674,   236,     0,   477,
02397      309,   301,   302,   236,     0,     0,   479,     0,     0,    81,
02398        0,   777,     0,     0,   780,     0,     0,    81,   662,     0,
02399      232,     0,   439,   441,   289,   204,   785,     0,   204,   204,
02400      480,     0,     0,     0,   204,   204,   311,   301,   302,     0,
02401      454,     0,    81,    81,     0,    98,     0,     0,   303,   304,
02402        0,     0,     0,    81,     0,    98,    98,     0,     0,     0,
02403       81,     0,     0,   204,   496,   301,   302,     0,   508,   301,
02404      302,     0,    81,    81,     0,   509,   301,   302,   472,    81,
02405      473,   474,   475,   476,   303,   304,   201,   201,   201,   201,
02406        0,   520,   521,   322,   323,   324,   325,   326,    98,     0,
02407       98,    98,     0,     0,    98,    98,     0,     0,     0,    98,
02408        0,   864,   303,   304,    98,    98,   303,   304,     0,   477,
02409        0,     0,    98,   303,   304,   478,   479,     0,   204,     0,
02410        0,     0,   510,   301,   302,     0,     0,     0,     0,    81,
02411       81,    94,     0,    94,   117,   117,   117,   883,     0,     0,
02412      480,    81,   216,   481,   899,   600,   473,   474,   475,   476,
02413        0,     0,   421,   422,   423,     0,     0,    98,    98,    98,
02414       98,    98,    98,    98,    98,     0,   727,    98,     0,    98,
02415      303,   304,    98,     0,   903,     0,   905,    94,     0,     0,
02416      906,   290,   850,   852,     0,   854,     0,   856,   857,     0,
02417      912,     0,   915,   862,     0,    81,   866,   868,     0,     0,
02418       98,    81,     0,    81,     0,   290,    81,     0,    98,    98,
02419      661,     0,   473,   474,   475,   476,     0,     0,     0,     0,
02420      497,     0,     0,     0,    98,     0,    98,    98,   507,     0,
02421        0,   507,     0,   507,    98,   507,   204,   507,    98,     0,
02422       94,     0,    98,     0,     0,   525,     0,    98,     0,     0,
02423      536,   662,     0,     0,     0,     0,   956,   843,  -555,     0,
02424      957,     0,   959,     0,     0,     0,     0,   960,     0,     0,
02425        0,  -555,  -555,  -555,  -555,  -555,  -555,     0,  -555,    98,
02426        0,     0,     0,     0,  -555,  -555,     0,     0,    98,   968,
02427        0,     0,     0,     0,     0,  -555,  -555,     0,  -555,  -555,
02428     -555,  -555,  -555,     0,     0,     0,    98,     0,     0,     0,
02429        0,   930,   932,   933,   934,     0,   936,   938,     0,     0,
02430      941,     0,   943,   944,     0,     0,     0,     0,    94,     0,
02431        0,     0,   536,     0,    98,     0,     0,     0,   632,   634,
02432        0,     0,   282,     0,     0,   201,  -555,     0,     0,     0,
02433        0,     0,     0,   243,   243,     0,     0,   243,     0,     0,
02434        0,     0,     0,     0,   962,   963,   965,   966,   967,   337,
02435        0,   634,     0,     0,   282,     0,   969,     0,     0,   201,
02436        0,     0,   264,   266,   350,   351,     0,   243,   243,     0,
02437        0,     0,    94,     0,     0,     0,     0,    94,    94,   318,
02438      319,  -555,  -555,   675,  -555,     0,     0,   255,  -555,     0,
02439     -555,  -555,     0,     0,     0,     0,   290,     0,     0,   355,
02440      356,   357,   358,   359,   360,   361,   362,    98,    98,   337,
02441      338,   339,   340,   341,   342,   343,   344,   695,   346,   347,
02442        0,     0,     0,     0,   350,   351,     0,     0,     0,     0,
02443       94,     0,     0,     0,     0,    94,     0,     0,     0,     0,
02444        0,    98,    94,   290,     0,     0,     0,     0,     0,     0,
02445        0,     0,     0,     0,     0,     0,     0,   353,   354,   355,
02446      356,   357,   358,   359,   360,   361,   362,     0,     0,     0,
02447        0,     0,   201,     0,     0,     0,     0,     0,     0,     0,
02448        0,     0,     0,     0,     0,    98,    98,     0,     0,     0,
02449        0,     0,     0,     0,     0,     0,     0,     0,   731,    94,
02450       98,     0,     0,     0,     0,     0,     0,    94,    98,     0,
02451        0,     0,     0,     0,     0,    94,    98,     0,     0,    98,
02452       98,     0,     0,     0,     0,    98,    98,   755,     0,     0,
02453      757,     0,     0,    98,    98,     0,   634,   282,     0,     0,
02454        0,     0,     0,     0,    98,     0,     0,     0,     0,     0,
02455        0,    98,    94,     0,    98,   243,   243,   243,   318,     0,
02456        0,    94,     0,    98,    98,     0,     0,     0,     0,   243,
02457       98,   243,   243,     0,     0,   290,     0,   290,     0,     0,
02458        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02459      793,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02460        0,     0,     0,     0,     0,     0,     0,    94,     0,     0,
02461        0,     0,     0,     0,     0,     0,     0,     0,     0,    98,
02462        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02463       98,    98,     0,     0,     0,     0,     0,     0,   290,     0,
02464        0,     0,    98,     0,     0,     0,     0,   836,   243,     0,
02465      838,     0,     0,   535,   538,   539,   540,   541,   542,   543,
02466      544,   545,   546,   547,   548,   549,   550,   551,   552,   553,
02467      554,   555,   556,   557,   558,   559,   560,   561,   562,   563,
02468       97,   243,    97,   118,   118,     0,   870,     0,     0,   584,
02469      586,   217,     0,     0,     0,     0,    98,     0,     0,     0,
02470        0,    94,    98,     0,    98,   243,     0,    98,     0,     0,
02471        0,     0,     0,     0,     0,     0,     0,   609,     0,   243,
02472        0,   584,   586,     0,     0,     0,    97,     0,   243,     0,
02473      291,     0,     0,   282,     0,   243,     0,    98,     0,     0,
02474        0,   243,   243,     0,     0,   243,     0,     0,     0,     0,
02475        0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
02476        0,     0,     0,     0,   648,     0,     0,     0,     0,     0,
02477        0,     0,     0,    78,   243,    78,     0,   243,    94,    94,
02478        0,     0,     0,     0,   213,     0,     0,   243,     0,    97,
02479        0,     0,     0,    94,     0,     0,     0,     0,     0,     0,
02480        0,    94,     0,     0,     0,     0,   243,     0,   290,     0,
02481        0,     0,     0,     0,     0,     0,     0,     0,     0,    78,
02482        0,     0,     0,     0,     0,     0,    94,    94,     0,   688,
02483      689,     0,     0,     0,     0,     0,     0,    94,     0,     0,
02484      243,     0,     0,     0,    94,     0,     0,     0,     0,   337,
02485     -556,  -556,  -556,  -556,   342,   343,    94,    94,  -556,  -556,
02486        0,     0,     0,    94,   350,   351,     0,     0,     0,     0,
02487        0,     0,    95,     0,    95,     0,     0,    97,     0,     0,
02488        0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
02489        0,     0,     0,     0,     0,   117,     0,   353,   354,   355,
02490      356,   357,   358,   359,   360,   361,   362,     0,     0,     0,
02491        0,     0,     0,     0,     0,     0,     0,     0,    95,     0,
02492        0,   243,     0,    94,    94,     0,     0,     0,     0,     0,
02493        0,   884,     0,     0,     0,    94,     0,     0,     0,     0,
02494        0,    97,     0,     0,     0,     0,    97,    97,     0,     0,
02495      243,     0,     0,   243,     0,     0,     0,     0,     0,   243,
02496      243,     0,     0,     0,     0,   291,     0,     0,     0,     0,
02497       78,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02498        0,    95,     0,     0,     0,     0,     0,     0,     0,    94,
02499        0,     0,     0,     0,     0,    94,     0,    94,     0,    97,
02500       94,     0,     0,     0,    97,     0,     0,     0,     0,     0,
02501        0,    97,   291,   243,     0,     0,     0,   609,   795,     0,
02502      798,   800,     0,     0,     0,     0,   805,   807,     0,     0,
02503        0,     0,     0,     0,    78,     0,   813,     0,     0,    78,
02504       78,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02505        0,     0,     0,     0,     0,     0,     0,     0,   798,   800,
02506        0,   805,   807,     0,     0,     0,     0,     0,    97,    95,
02507      243,     0,     0,   243,     0,     0,    97,     0,     0,     0,
02508        0,     0,     0,     0,    97,     0,     0,     0,     0,     0,
02509        0,     0,    78,     0,     0,     0,     0,    78,     0,     0,
02510        0,     0,     0,     0,    78,     0,     0,   534,     0,   243,
02511        0,     0,     0,   871,     0,     0,     0,     0,     0,     0,
02512      873,    97,     0,     0,     0,     0,     0,     0,     0,     0,
02513       97,     0,     0,    95,     0,     0,     0,     0,    95,    95,
02514        0,     0,     0,     0,   291,     0,   291,     0,   873,     0,
02515        0,   701,     0,     0,     0,     0,   243,     0,     0,     0,
02516        0,    78,     0,     0,     0,     0,     0,     0,     0,    78,
02517        0,     0,     0,     0,     0,     0,    97,    78,   337,   338,
02518      339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
02519      349,    95,     0,   350,   351,     0,    95,     0,     0,     0,
02520        0,     0,     0,    95,     0,     0,     0,   291,     0,     0,
02521        0,     0,     0,     0,    78,     0,     0,     0,     0,     0,
02522        0,     0,     0,    78,   352,     0,   353,   354,   355,   356,
02523      357,   358,   359,   360,   361,   362,     0,     0,   243,     0,
02524        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02525        0,     0,     0,     0,  -230,     0,     0,     0,     0,     0,
02526       95,   564,   565,     0,     0,   566,     0,     0,    95,    78,
02527       97,     0,     0,     0,     0,     0,    95,     0,     0,   164,
02528      165,   166,   167,   168,   169,   170,   171,   172,     0,     0,
02529      173,   174,     0,     0,   175,   176,   177,   178,     0,     0,
02530        0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
02531        0,     0,     0,    95,     0,     0,     0,     0,     0,     0,
02532        0,     0,    95,     0,     0,     0,     0,     0,     0,   180,
02533      181,   182,   183,   184,   185,   186,   187,   188,   189,     0,
02534      190,   191,     0,     0,     0,     0,     0,    97,    97,     0,
02535        0,     0,     0,     0,     0,     0,     0,     0,   192,   255,
02536        0,     0,    97,    78,     0,     0,     0,     0,    95,     0,
02537       97,     0,     0,     0,     0,     0,     0,   291,     0,     0,
02538        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02539        0,     0,     0,     0,     0,    97,    97,     0,     0,     0,
02540        0,     0,     0,     0,     0,     0,    97,     0,     0,     0,
02541        0,     0,     0,    97,     0,     0,     0,     0,     0,     0,
02542        0,     0,     0,     0,     0,    97,    97,     0,     0,     0,
02543        0,     0,    97,     0,     0,     0,     0,     0,     0,     0,
02544       78,    78,     0,     0,     0,     0,     0,     0,     0,     0,
02545        0,     0,     0,     0,     0,    78,     0,     0,     0,     0,
02546        0,     0,    95,    78,   118,     0,     0,     0,     0,     0,
02547        0,   534,     0,     0,     0,     0,     0,     0,     0,     0,
02548        0,     0,     0,     0,     0,     0,     0,     0,    78,    78,
02549        0,     0,    97,    97,     0,     0,     0,     0,     0,    78,
02550      885,     0,     0,     0,    97,     0,    78,     0,     0,     0,
02551        0,     0,     0,     0,     0,     0,     0,     0,    78,    78,
02552        0,     0,     0,     0,     0,    78,   337,   338,   339,   340,
02553      341,   342,   343,   344,   345,   346,   347,   348,   349,    95,
02554       95,   350,   351,     0,     0,     0,     0,     0,     0,     0,
02555        0,     0,     0,     0,    95,     0,     0,     0,    97,     0,
02556        0,     0,    95,     0,    97,     0,    97,     0,     0,    97,
02557        0,     0,   352,     0,   353,   354,   355,   356,   357,   358,
02558      359,   360,   361,   362,     0,    78,    78,    95,    95,     0,
02559        0,     0,     0,   882,     0,     0,     0,    78,    95,     0,
02560        0,     0,     0,     0,     0,    95,     0,     0,   232,     0,
02561        0,     0,     0,     0,     0,     0,     0,    95,    95,     0,
02562        0,     0,     0,     0,    95,     0,     0,     0,     0,     0,
02563        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02564        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02565        0,    78,     0,     0,     0,     0,     0,    78,     0,    78,
02566        0,     0,    78,     0,     0,     0,     0,     0,     0,     0,
02567     -555,     4,     0,     5,     6,     7,     8,     9,    10,    11,
02568       12,    13,    14,     0,    95,    95,     0,     0,     0,    15,
02569        0,    16,    17,    18,    19,     0,    95,     0,     0,     0,
02570       20,    21,    22,    23,    24,    25,    26,     0,     0,    27,
02571        0,     0,     0,     0,     0,    28,    29,    30,    31,    32,
02572        0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
02573       41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
02574       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02575       95,     0,     0,     0,     0,     0,    95,     0,    95,    47,
02576        0,    95,    48,    49,     0,    50,    51,  -278,    52,     0,
02577       53,    54,    55,    56,    57,    58,    59,     0,     0,    60,
02578     -278,  -278,  -278,  -278,  -278,  -278,     0,  -278,     0,     0,
02579        0,     0,     0,     0,  -278,  -278,  -278,     0,     0,    61,
02580       62,    63,     0,     0,  -278,  -278,     0,  -278,  -278,  -278,
02581     -278,  -278,     0,     0,     0,     0,     0,     0,     0,     0,
02582        0,     0,  -555,  -555,     0,     0,     0,     0,     0,     0,
02583        0,     0,     0,     0,     0,     0,     0,     0,  -278,  -278,
02584     -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,
02585     -278,     0,     0,  -278,  -278,  -278,     0,   742,  -278,     0,
02586        0,     0,     0,     0,  -278,     0,     0,     0,     0,     0,
02587        0,     0,     0,     0,     0,  -278,     0,     0,     0,     0,
02588        0,     0,     0,   -99,  -278,  -278,  -278,  -278,  -278,  -278,
02589     -278,  -278,  -278,  -278,  -278,  -278,     0,     0,     0,     0,
02590        0,     0,     0,     0,     0,     0,     0,     0,  -391,     0,
02591        0,  -278,  -278,  -278,  -278,     0,     0,  -278,  -278,  -278,
02592     -278,  -391,  -391,  -391,  -391,  -391,  -391,     0,  -391,     0,
02593        0,   719,     0,     0,  -391,  -391,  -391,     0,     0,     0,
02594        0,     0,     0,     0,     0,  -391,  -391,     0,  -391,  -391,
02595     -391,  -391,  -391,     0,     0,     0,     0,     0,   337,   338,
02596      339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
02597      349,     0,     0,   350,   351,     0,     0,     0,     0,  -391,
02598     -391,  -391,  -391,  -391,  -391,  -391,  -391,  -391,  -391,  -391,
02599     -391,  -391,     0,     0,  -391,  -391,  -391,     0,     0,  -391,
02600        0,     0,     0,     0,   352,  -391,   353,   354,   355,   356,
02601      357,   358,   359,   360,   361,   362,     0,     0,     0,     0,
02602        0,     0,     0,     0,     0,  -391,     0,  -391,  -391,  -391,
02603     -391,  -391,  -391,  -391,  -391,  -391,  -391,     0,     0,     0,
02604        0,     0,     0,     0,     0,     0,     0,     0,     0,  -269,
02605        0,  -391,  -391,  -391,  -391,  -391,     0,   255,  -391,  -391,
02606     -391,  -391,  -269,  -269,  -269,  -269,  -269,  -269,     0,  -269,
02607        0,     0,   701,     0,     0,     0,  -269,  -269,  -269,     0,
02608        0,     0,     0,     0,     0,     0,  -269,  -269,     0,  -269,
02609     -269,  -269,  -269,  -269,     0,     0,     0,     0,     0,   337,
02610      338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
02611      348,   349,     0,     0,   350,   351,     0,     0,     0,     0,
02612     -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,
02613     -269,  -269,  -269,     0,     0,  -269,  -269,  -269,     0,     0,
02614     -269,     0,     0,     0,     0,   352,  -269,   353,   354,   355,
02615      356,   357,   358,   359,   360,   361,   362,  -269,     0,     0,
02616        0,     0,     0,     0,     0,     0,  -269,  -269,  -269,  -269,
02617     -269,  -269,  -269,  -269,  -269,  -269,  -269,  -269,     0,     0,
02618        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02619     -555,     0,     0,  -269,  -269,  -269,  -269,     0,     0,  -269,
02620     -269,  -269,  -269,  -555,  -555,  -555,  -555,  -555,  -555,     0,
02621     -555,     0,     0,     0,     0,     0,  -555,  -555,  -555,     0,
02622        0,     0,     0,     0,     0,     0,     0,  -555,  -555,     0,
02623     -555,  -555,  -555,  -555,  -555,     0,     0,     0,     0,     0,
02624      337,   338,   339,   340,   341,   342,   343,   344,   345,   346,
02625      347,   348,   349,     0,     0,   350,   351,     0,     0,     0,
02626        0,  -555,  -555,  -555,  -555,  -555,  -555,  -555,  -555,  -555,
02627     -555,  -555,  -555,  -555,     0,     0,  -555,  -555,  -555,     0,
02628        0,  -555,     0,     0,     0,     0,   352,  -555,   353,   354,
02629      355,   356,   357,   358,   359,   360,   361,   362,     0,     0,
02630        0,     0,     0,     0,     0,     0,     0,  -555,     0,  -555,
02631     -555,  -555,  -555,  -555,  -555,  -555,  -555,  -555,  -555,     0,
02632        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02633        0,  -285,     0,  -555,  -555,  -555,  -555,  -555,     0,   255,
02634     -555,  -555,  -555,  -555,  -285,  -285,  -285,  -285,  -285,  -285,
02635        0,  -285,     0,     0,     0,     0,     0,     0,  -285,  -285,
02636        0,     0,     0,     0,     0,     0,     0,     0,  -285,  -285,
02637        0,  -285,  -285,  -285,  -285,  -285,     0,     0,     0,     0,
02638        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02639        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02640        0,     0,  -285,  -285,  -285,  -285,  -285,  -285,  -285,  -285,
02641     -285,  -285,  -285,  -285,  -285,     0,     0,  -285,  -285,  -285,
02642        0,     0,  -285,  -535,     0,     0,     0,     0,  -285,     0,
02643        0,     0,     0,     0,     0,     0,  -535,  -535,  -535,     0,
02644     -535,  -535,     0,  -535,     0,     0,     0,     0,  -285,  -535,
02645     -285,  -285,  -285,  -285,  -285,  -285,  -285,  -285,  -285,  -285,
02646     -535,  -535,     0,  -535,  -535,  -535,  -535,  -535,     0,     0,
02647        0,     0,     0,     0,     0,  -285,  -285,  -285,  -285,     0,
02648      252,  -285,  -285,  -285,  -285,     0,     0,     0,     0,     0,
02649        0,     0,     0,     0,  -535,  -535,  -535,  -535,  -535,  -535,
02650     -535,  -535,  -535,  -535,  -535,  -535,  -535,     0,     0,  -535,
02651     -535,  -535,     0,   703,     0,  -278,     0,     0,     0,     0,
02652        0,     0,     0,     0,     0,     0,     0,     0,  -278,  -278,
02653     -278,     0,  -278,  -278,     0,  -278,     0,     0,     0,   -97,
02654     -535,     0,  -535,  -535,  -535,  -535,  -535,  -535,  -535,  -535,
02655     -535,  -535,  -278,  -278,     0,  -278,  -278,  -278,  -278,  -278,
02656        0,     0,     0,     0,     0,     0,  -535,  -535,  -535,  -535,
02657      -89,     0,     0,  -535,     0,  -535,  -535,     0,     0,     0,
02658        0,     0,     0,     0,     0,     0,  -278,  -278,  -278,  -278,
02659     -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,  -278,     0,
02660        0,  -278,  -278,  -278,     0,   704,     0,     0,     0,     0,
02661        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02662        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02663        0,   -99,  -278,     0,  -278,  -278,  -278,  -278,  -278,  -278,
02664     -278,  -278,  -278,  -278,     0,     0,     0,     0,     0,     0,
02665        0,     0,     0,     0,     0,     0,     0,     0,     0,  -278,
02666     -278,  -278,   -91,     0,     0,  -278,     0,  -278,  -278,   268,
02667        0,     5,     6,     7,     8,     9,    10,    11,    12,    13,
02668       14,  -555,  -555,  -555,     0,     0,  -555,    15,     0,    16,
02669       17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
02670       22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
02671        0,     0,     0,    28,     0,    30,    31,    32,     0,    33,
02672       34,    35,    36,    37,    38,     0,    39,    40,    41,     0,
02673        0,    42,     0,     0,    43,    44,     0,    45,    46,     0,
02674        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02675        0,     0,     0,     0,     0,     0,     0,    47,     0,     0,
02676       48,    49,     0,    50,    51,     0,    52,     0,    53,    54,
02677       55,    56,    57,    58,    59,     0,     0,    60,     0,     0,
02678        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02679        0,     0,     0,     0,     0,     0,     0,    61,    62,    63,
02680        0,     0,     0,     0,     0,     0,     0,     0,   268,     0,
02681        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
02682     -555,  -555,  -555,     0,  -555,  -555,    15,     0,    16,    17,
02683       18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
02684       23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
02685        0,     0,    28,     0,    30,    31,    32,     0,    33,    34,
02686       35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
02687       42,     0,     0,    43,    44,     0,    45,    46,     0,     0,
02688        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02689        0,     0,     0,     0,     0,     0,    47,     0,     0,    48,
02690       49,     0,    50,    51,     0,    52,     0,    53,    54,    55,
02691       56,    57,    58,    59,     0,     0,    60,     0,     0,     0,
02692        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02693        0,     0,     0,     0,     0,     0,    61,    62,    63,     0,
02694        0,     0,     0,     0,   268,     0,     5,     6,     7,     8,
02695        9,    10,    11,    12,    13,    14,     0,     0,  -555,  -555,
02696     -555,  -555,    15,  -555,    16,    17,    18,    19,     0,     0,
02697        0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
02698        0,     0,    27,     0,     0,     0,     0,     0,    28,     0,
02699       30,    31,    32,     0,    33,    34,    35,    36,    37,    38,
02700        0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
02701       44,     0,    45,    46,     0,     0,     0,     0,     0,     0,
02702        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02703        0,     0,    47,     0,     0,    48,    49,     0,    50,    51,
02704        0,    52,     0,    53,    54,    55,    56,    57,    58,    59,
02705        0,     0,    60,     0,     0,     0,     0,     0,     0,     0,
02706        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02707        0,     0,    61,    62,    63,     0,     0,     0,     0,     0,
02708      268,     0,     5,     6,     7,     8,     9,    10,    11,    12,
02709       13,    14,     0,     0,  -555,  -555,  -555,  -555,    15,     0,
02710       16,    17,    18,    19,     0,     0,     0,     0,     0,    20,
02711       21,    22,    23,    24,    25,    26,     0,     0,    27,     0,
02712        0,     0,     0,     0,    28,     0,    30,    31,    32,     0,
02713       33,    34,    35,    36,    37,    38,     0,    39,    40,    41,
02714        0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
02715        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02716        0,     0,     0,     0,     0,     0,     0,     0,    47,     0,
02717        0,    48,    49,     0,    50,    51,     0,    52,     0,    53,
02718       54,    55,    56,    57,    58,    59,     0,     0,    60,     0,
02719        0,     0,     0,     0,     0,     4,     0,     5,     6,     7,
02720        8,     9,    10,    11,    12,    13,    14,     0,    61,    62,
02721       63,     0,     0,    15,     0,    16,    17,    18,    19,     0,
02722        0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
02723       26,  -555,  -555,    27,     0,     0,     0,     0,     0,    28,
02724       29,    30,    31,    32,     0,    33,    34,    35,    36,    37,
02725       38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
02726       43,    44,     0,    45,    46,     0,     0,     0,     0,     0,
02727        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02728        0,     0,     0,    47,     0,     0,    48,    49,     0,    50,
02729       51,     0,    52,     0,    53,    54,    55,    56,    57,    58,
02730       59,     0,     0,    60,     0,     0,     0,     0,     0,     0,
02731        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02732        0,     0,     0,    61,    62,    63,     0,     0,     0,     0,
02733        0,     0,     0,     0,     0,     0,     0,     0,  -555,     0,
02734        0,     0,     0,     0,     0,     0,  -555,  -555,   268,     0,
02735        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
02736        0,  -555,  -555,     0,     0,     0,    15,     0,    16,    17,
02737       18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
02738       23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
02739        0,     0,    28,     0,    30,    31,    32,     0,    33,    34,
02740       35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
02741       42,     0,     0,    43,    44,     0,    45,    46,     0,     0,
02742        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02743        0,     0,     0,     0,     0,     0,    47,     0,     0,    48,
02744       49,     0,    50,    51,     0,    52,     0,    53,    54,    55,
02745       56,    57,    58,    59,     0,     0,    60,     0,     0,     0,
02746        0,     0,     0,   268,     0,     5,     6,     7,     8,     9,
02747       10,    11,    12,    13,    14,     0,    61,    62,    63,     0,
02748        0,    15,     0,    16,    17,    18,    19,     0,     0,     0,
02749        0,     0,    20,    21,    22,    23,    24,    25,    26,  -555,
02750     -555,    27,     0,     0,     0,     0,     0,    28,     0,    30,
02751       31,    32,     0,    33,    34,    35,    36,    37,    38,     0,
02752       39,    40,    41,     0,     0,    42,     0,     0,    43,    44,
02753        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
02754        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02755        0,    47,     0,     0,   269,    49,     0,    50,    51,     0,
02756       52,     0,    53,    54,    55,    56,    57,    58,    59,     0,
02757        0,    60,     0,     0,     0,     0,     0,     0,     0,     0,
02758        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02759        0,    61,    62,    63,     0,     0,     0,     0,   268,     0,
02760        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
02761        0,     0,  -555,     0,  -555,  -555,    15,     0,    16,    17,
02762       18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
02763       23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
02764        0,     0,    28,     0,    30,    31,    32,     0,    33,    34,
02765       35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
02766       42,     0,     0,    43,    44,     0,    45,    46,     0,     0,
02767        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02768        0,     0,     0,     0,     0,     0,    47,     0,     0,    48,
02769       49,     0,    50,    51,     0,    52,     0,    53,    54,    55,
02770       56,    57,    58,    59,     0,     0,    60,     0,     0,     0,
02771        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02772        0,     0,     0,     0,     0,     0,    61,    62,    63,     0,
02773        0,     0,     0,   268,     0,     5,     6,     7,     8,     9,
02774       10,    11,    12,    13,    14,     0,     0,  -555,     0,  -555,
02775     -555,    15,     0,    16,    17,    18,    19,     0,     0,     0,
02776        0,     0,    20,    21,    22,    23,    24,    25,    26,     0,
02777        0,    27,     0,     0,     0,     0,     0,    28,     0,    30,
02778       31,    32,     0,    33,    34,    35,    36,    37,    38,     0,
02779       39,    40,    41,     0,     0,    42,     0,     0,    43,    44,
02780        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
02781        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02782        0,    47,     0,     0,    48,    49,     0,    50,    51,     0,
02783       52,     0,    53,    54,    55,    56,    57,    58,    59,     0,
02784        0,    60,     0,     0,     0,     0,     0,     0,     0,     0,
02785        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02786        0,    61,    62,    63,     0,     0,     0,     0,     0,     0,
02787        0,     0,     0,     0,     0,     0,  -555,     0,     0,     0,
02788        0,     0,     0,     0,  -555,  -555,   268,     0,     5,     6,
02789        7,     8,     9,    10,    11,    12,    13,    14,     0,     0,
02790     -555,     0,     0,     0,    15,     0,    16,    17,    18,    19,
02791        0,     0,     0,     0,     0,    20,    21,    22,    23,    24,
02792       25,    26,     0,     0,    27,     0,     0,     0,     0,     0,
02793       28,     0,    30,    31,    32,     0,    33,    34,    35,    36,
02794       37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
02795        0,    43,    44,     0,    45,    46,     0,     0,     0,     0,
02796        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02797        0,     0,     0,     0,    47,     0,     0,    48,    49,     0,
02798       50,    51,     0,    52,     0,    53,    54,    55,    56,    57,
02799       58,    59,     0,     0,    60,     0,     0,     0,     0,     0,
02800        0,     0,     0,     5,     6,     7,     8,     9,    10,    11,
02801       12,    13,     0,     0,    61,    62,    63,     0,     0,    15,
02802        0,    16,    17,    18,    19,     0,     0,     0,     0,     0,
02803       20,    21,    22,    23,    24,    25,    26,  -555,  -555,   106,
02804        0,     0,     0,     0,     0,     0,     0,     0,    31,    32,
02805        0,    33,    34,    35,    36,    37,    38,   238,    39,    40,
02806       41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
02807       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02808        0,     0,     0,     0,     0,     0,     0,     0,     0,   200,
02809        0,     0,   111,    49,     0,    50,    51,     0,   239,   240,
02810       53,    54,    55,    56,    57,    58,    59,     0,     0,    60,
02811        0,     0,     0,     0,     0,     0,     5,     6,     7,     8,
02812        9,    10,    11,    12,    13,     0,     0,     0,     0,    61,
02813      241,    63,    15,     0,    16,    17,    18,    19,     0,     0,
02814        0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
02815        0,     0,    27,   232,     0,     0,     0,     0,     0,     0,
02816        0,    31,    32,     0,    33,    34,    35,    36,    37,    38,
02817        0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
02818       44,     0,    45,    46,     0,     0,     0,     0,     0,     0,
02819        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02820        0,     0,   200,     0,     0,   111,    49,     0,    50,    51,
02821        0,     0,     0,    53,    54,    55,    56,    57,    58,    59,
02822        0,     0,    60,     0,     0,     0,     0,     0,     0,     0,
02823        0,     5,     6,     7,     8,     9,    10,    11,    12,    13,
02824        0,     0,    61,    62,    63,     0,     0,    15,     0,    16,
02825       17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
02826       22,    23,    24,    25,    26,   231,   232,    27,     0,     0,
02827        0,     0,     0,     0,     0,     0,    31,    32,     0,    33,
02828       34,    35,    36,    37,    38,     0,    39,    40,    41,     0,
02829        0,    42,     0,     0,    43,    44,     0,    45,    46,     0,
02830        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02831        0,     0,     0,     0,     0,     0,     0,   200,     0,     0,
02832      111,    49,     0,    50,    51,     0,     0,     0,    53,    54,
02833       55,    56,    57,    58,    59,     0,     0,    60,     0,     0,
02834        0,     0,     0,     0,     5,     6,     7,     8,     9,    10,
02835       11,    12,    13,    14,     0,     0,     0,    61,    62,    63,
02836       15,     0,    16,    17,    18,    19,     0,     0,     0,     0,
02837        0,    20,    21,    22,    23,    24,    25,    26,     0,     0,
02838       27,   232,     0,     0,     0,     0,    28,    29,    30,    31,
02839       32,     0,    33,    34,    35,    36,    37,    38,     0,    39,
02840       40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
02841       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
02842        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02843       47,     0,     0,    48,    49,     0,    50,    51,     0,    52,
02844        0,    53,    54,    55,    56,    57,    58,    59,     0,     0,
02845       60,     0,     0,     0,     0,     0,     0,     0,     5,     6,
02846        7,     8,     9,    10,    11,    12,    13,    14,     0,     0,
02847       61,    62,    63,     0,    15,     0,    16,    17,    18,    19,
02848        0,     0,     0,     0,     0,    20,    21,    22,    23,    24,
02849       25,    26,     0,   420,    27,     0,     0,     0,     0,     0,
02850       28,     0,    30,    31,    32,     0,    33,    34,    35,    36,
02851       37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
02852        0,    43,    44,     0,    45,    46,     0,     0,     0,     0,
02853        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02854        0,     0,     0,     0,    47,     0,     0,    48,    49,     0,
02855       50,    51,     0,    52,     0,    53,    54,    55,    56,    57,
02856       58,    59,     0,     0,    60,     0,     0,     0,     0,     0,
02857        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02858        0,     0,     0,     0,    61,    62,    63,     0,     0,     0,
02859        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02860        0,     0,     0,     0,     0,     0,     0,   420,   121,   122,
02861      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
02862      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
02863      143,   144,     0,     0,     0,   145,   146,   147,   148,   149,
02864      150,   151,   152,   153,   154,     0,     0,     0,     0,     0,
02865      155,   156,   157,   158,   159,   160,   161,   162,    35,    36,
02866      163,    38,     0,     0,     0,     0,     0,     0,     0,     0,
02867        0,     0,     0,     0,   164,   165,   166,   167,   168,   169,
02868      170,   171,   172,     0,     0,   173,   174,     0,     0,   175,
02869      176,   177,   178,     0,     0,     0,     0,     0,     0,     0,
02870        0,     0,     0,   179,     0,     0,     0,     0,     0,     0,
02871        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02872        0,     0,     0,     0,   180,   181,   182,   183,   184,   185,
02873      186,   187,   188,   189,     0,   190,   191,     0,     0,  -528,
02874     -528,  -528,  -528,  -528,  -528,  -528,  -528,  -528,     0,     0,
02875        0,     0,     0,   192,   193,  -528,     0,  -528,  -528,  -528,
02876     -528,     0,  -528,     0,     0,     0,  -528,  -528,  -528,  -528,
02877     -528,  -528,  -528,     0,     0,  -528,     0,     0,     0,     0,
02878        0,     0,     0,     0,  -528,  -528,     0,  -528,  -528,  -528,
02879     -528,  -528,  -528,  -528,  -528,  -528,  -528,     0,     0,  -528,
02880        0,     0,  -528,  -528,     0,  -528,  -528,     0,     0,     0,
02881        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02882        0,     0,     0,     0,     0,  -528,     0,     0,  -528,  -528,
02883        0,  -528,  -528,     0,  -528,  -528,  -528,  -528,  -528,  -528,
02884     -528,  -528,  -528,     0,     0,  -528,     0,     0,     0,     0,
02885        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02886        0,     0,     0,     0,     0,  -528,  -528,  -528,  -529,  -529,
02887     -529,  -529,  -529,  -529,  -529,  -529,  -529,     0,     0,  -528,
02888        0,     0,     0,     0,  -529,  -528,  -529,  -529,  -529,  -529,
02889        0,  -529,     0,     0,     0,  -529,  -529,  -529,  -529,  -529,
02890     -529,  -529,     0,     0,  -529,     0,     0,     0,     0,     0,
02891        0,     0,     0,  -529,  -529,     0,  -529,  -529,  -529,  -529,
02892     -529,  -529,  -529,  -529,  -529,  -529,     0,     0,  -529,     0,
02893        0,  -529,  -529,     0,  -529,  -529,     0,     0,     0,     0,
02894        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02895        0,     0,     0,     0,  -529,     0,     0,  -529,  -529,     0,
02896     -529,  -529,     0,  -529,  -529,  -529,  -529,  -529,  -529,  -529,
02897     -529,  -529,     0,     0,  -529,     0,     0,     0,     0,     0,
02898        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02899        0,     0,     0,     0,  -529,  -529,  -529,  -531,  -531,  -531,
02900     -531,  -531,  -531,  -531,  -531,  -531,     0,     0,  -529,     0,
02901        0,     0,     0,  -531,  -529,  -531,  -531,  -531,  -531,     0,
02902        0,     0,     0,     0,  -531,  -531,  -531,  -531,  -531,  -531,
02903     -531,     0,     0,  -531,     0,     0,     0,     0,     0,     0,
02904        0,     0,  -531,  -531,     0,  -531,  -531,  -531,  -531,  -531,
02905     -531,  -531,  -531,  -531,  -531,     0,     0,  -531,     0,     0,
02906     -531,  -531,     0,  -531,  -531,     0,     0,     0,     0,     0,
02907        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02908        0,     0,     0,  -531,   741,     0,  -531,  -531,     0,  -531,
02909     -531,     0,  -531,  -531,  -531,  -531,  -531,  -531,  -531,  -531,
02910     -531,     0,     0,  -531,     0,     0,     0,     0,     0,     0,
02911      -97,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02912        0,     0,     0,  -531,  -531,  -531,  -533,  -533,  -533,  -533,
02913     -533,  -533,  -533,  -533,  -533,     0,     0,     0,     0,     0,
02914        0,     0,  -533,  -531,  -533,  -533,  -533,  -533,     0,     0,
02915        0,     0,     0,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
02916        0,     0,  -533,     0,     0,     0,     0,     0,     0,     0,
02917        0,  -533,  -533,     0,  -533,  -533,  -533,  -533,  -533,  -533,
02918     -533,  -533,  -533,  -533,     0,     0,  -533,     0,     0,  -533,
02919     -533,     0,  -533,  -533,     0,     0,     0,     0,     0,     0,
02920        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02921        0,     0,  -533,     0,     0,  -533,  -533,     0,  -533,  -533,
02922        0,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,  -533,
02923        0,     0,  -533,     0,     0,     0,     0,     0,     0,     0,
02924        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02925        0,     0,  -533,  -533,  -533,  -534,  -534,  -534,  -534,  -534,
02926     -534,  -534,  -534,  -534,     0,     0,     0,     0,     0,     0,
02927        0,  -534,  -533,  -534,  -534,  -534,  -534,     0,     0,     0,
02928        0,     0,  -534,  -534,  -534,  -534,  -534,  -534,  -534,     0,
02929        0,  -534,     0,     0,     0,     0,     0,     0,     0,     0,
02930     -534,  -534,     0,  -534,  -534,  -534,  -534,  -534,  -534,  -534,
02931     -534,  -534,  -534,     0,     0,  -534,     0,     0,  -534,  -534,
02932        0,  -534,  -534,     0,     0,     0,     0,     0,     0,     0,
02933        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02934        0,  -534,     0,     0,  -534,  -534,     0,  -534,  -534,     0,
02935     -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,  -534,     0,
02936        0,  -534,     0,     0,     0,     0,     0,     0,     0,     0,
02937        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02938        0,  -534,  -534,  -534,     0,     0,     0,     0,     0,     0,
02939        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02940        0,  -534,   121,   122,   123,   124,   125,   126,   127,   128,
02941      129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
02942      139,   140,   141,   142,   143,   144,     0,     0,     0,   145,
02943      146,   147,   218,   219,   220,   221,   152,   153,   154,     0,
02944        0,     0,     0,     0,   155,   156,   157,   222,   223,   160,
02945      224,   162,   293,   294,   225,   295,     0,     0,     0,     0,
02946        0,     0,   296,     0,     0,     0,     0,     0,   164,   165,
02947      166,   167,   168,   169,   170,   171,   172,     0,     0,   173,
02948      174,     0,     0,   175,   176,   177,   178,     0,     0,     0,
02949        0,     0,     0,     0,     0,     0,     0,   179,     0,     0,
02950        0,     0,     0,     0,   297,     0,     0,     0,     0,     0,
02951        0,     0,     0,     0,     0,     0,     0,     0,   180,   181,
02952      182,   183,   184,   185,   186,   187,   188,   189,     0,   190,
02953      191,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02954        0,     0,     0,     0,     0,     0,     0,   192,   121,   122,
02955      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
02956      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
02957      143,   144,     0,     0,     0,   145,   146,   147,   218,   219,
02958      220,   221,   152,   153,   154,     0,     0,     0,     0,     0,
02959      155,   156,   157,   222,   223,   160,   224,   162,   293,   294,
02960      225,   295,     0,     0,     0,     0,     0,     0,   296,     0,
02961        0,     0,     0,     0,   164,   165,   166,   167,   168,   169,
02962      170,   171,   172,     0,     0,   173,   174,     0,     0,   175,
02963      176,   177,   178,     0,     0,     0,     0,     0,     0,     0,
02964        0,     0,     0,   179,     0,     0,     0,     0,     0,     0,
02965      414,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02966        0,     0,     0,     0,   180,   181,   182,   183,   184,   185,
02967      186,   187,   188,   189,     0,   190,   191,     0,     0,     0,
02968        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02969        0,     0,     0,   192,   121,   122,   123,   124,   125,   126,
02970      127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
02971      137,   138,   139,   140,   141,   142,   143,   144,     0,     0,
02972        0,   145,   146,   147,   218,   219,   220,   221,   152,   153,
02973      154,     0,     0,     0,     0,     0,   155,   156,   157,   222,
02974      223,   160,   224,   162,     0,     0,   225,     0,     0,     0,
02975        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02976      164,   165,   166,   167,   168,   169,   170,   171,   172,     0,
02977        0,   173,   174,     0,     0,   175,   176,   177,   178,     0,
02978        0,   337,   338,   339,   340,   341,   342,   343,     0,   179,
02979      346,   347,   226,     0,     0,     0,   350,   351,     0,     0,
02980        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02981      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
02982        0,   190,   191,     0,     0,     0,     0,     0,     0,   353,
02983      354,   355,   356,   357,   358,   359,   360,   361,   362,   192,
02984      121,   122,   123,   124,   125,   126,   127,   128,   129,   130,
02985      131,   132,   133,   134,   135,   136,   137,   138,   139,   140,
02986      141,   142,   143,   144,     0,     0,     0,   145,   146,   147,
02987      218,   219,   220,   221,   152,   153,   154,     0,     0,     0,
02988        0,     0,   155,   156,   157,   222,   223,   160,   224,   162,
02989        0,     0,   225,     0,     0,     0,     0,     0,     0,     0,
02990        0,     0,     0,     0,     0,     0,   164,   165,   166,   167,
02991      168,   169,   170,   171,   172,     0,     0,   173,   174,     0,
02992        0,   175,   176,   177,   178,     0,     0,     0,     0,     0,
02993        0,     0,     0,     0,     0,   179,     0,     0,     0,     0,
02994        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
02995        0,     0,     0,     0,     0,     0,   180,   181,   182,   183,
02996      184,   185,   186,   187,   188,   189,     0,   190,   191,     0,
02997        5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
02998        0,     0,     0,     0,     0,   192,    15,     0,   101,   102,
02999       18,    19,     0,     0,     0,     0,     0,   103,   104,   105,
03000       23,    24,    25,    26,     0,     0,   106,     0,     0,     0,
03001        0,     0,     0,     0,     0,    31,    32,     0,    33,    34,
03002       35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
03003       42,     0,     0,    43,    44,     0,     0,     0,     0,     0,
03004        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03005        0,     0,     0,     0,     0,     0,   286,     0,     0,   111,
03006       49,     0,    50,    51,     0,     0,     0,    53,    54,    55,
03007       56,    57,    58,    59,     0,     0,    60,     0,     0,     5,
03008        6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
03009        0,     0,     0,     0,     0,    15,   112,   101,   102,    18,
03010       19,     0,     0,     0,     0,     0,   103,   104,   105,    23,
03011       24,    25,    26,     0,   287,   106,     0,     0,     0,     0,
03012        0,     0,     0,     0,    31,    32,     0,    33,    34,    35,
03013       36,    37,    38,     0,    39,    40,    41,     0,     0,    42,
03014        0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
03015        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03016        0,     0,     0,     0,     0,   286,     0,     0,   111,    49,
03017        0,    50,    51,     0,     0,     0,    53,    54,    55,    56,
03018       57,    58,    59,     0,     0,    60,     0,     0,     5,     6,
03019        7,     8,     9,    10,    11,    12,    13,     0,     0,     0,
03020        0,     0,     0,     0,    15,   112,   101,   102,    18,    19,
03021        0,     0,     0,     0,     0,   103,   104,   105,    23,    24,
03022       25,    26,     0,   529,   106,     0,     0,     0,     0,     0,
03023        0,     0,     0,    31,    32,     0,    33,    34,    35,    36,
03024       37,    38,   238,    39,    40,    41,     0,     0,    42,     0,
03025        0,    43,    44,     0,    45,    46,     0,     0,     0,     0,
03026        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03027        0,     0,     0,     0,   200,     0,     0,   111,    49,     0,
03028       50,    51,     0,   633,   240,    53,    54,    55,    56,    57,
03029       58,    59,     0,     0,    60,   499,     0,     0,   500,   501,
03030        0,     5,     6,     7,     8,     9,    10,    11,    12,    13,
03031       14,     0,     0,     0,    61,   241,    63,    15,     0,    16,
03032       17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
03033       22,    23,    24,    25,    26,     0,     0,    27,     0,     0,
03034        0,     0,     0,    28,    29,    30,    31,    32,     0,    33,
03035       34,    35,    36,    37,    38,     0,    39,    40,    41,     0,
03036        0,    42,     0,     0,    43,    44,     0,    45,    46,     0,
03037        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03038        0,     0,     0,     0,     0,     0,     0,    47,     0,     0,
03039       48,    49,     0,    50,    51,     0,    52,     0,    53,    54,
03040       55,    56,    57,    58,    59,     0,     0,    60,     0,     0,
03041        0,     0,     0,     0,     5,     6,     7,     8,     9,    10,
03042       11,    12,    13,     0,     0,     0,     0,    61,    62,    63,
03043       15,     0,   101,   102,    18,    19,     0,     0,     0,     0,
03044        0,   103,   104,   105,    23,    24,    25,    26,     0,     0,
03045      106,     0,     0,     0,     0,     0,     0,     0,     0,    31,
03046       32,     0,    33,    34,    35,    36,    37,    38,   238,    39,
03047       40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
03048       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
03049        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03050      200,     0,     0,   111,    49,     0,    50,    51,     0,   633,
03051        0,    53,    54,    55,    56,    57,    58,    59,     0,     0,
03052       60,   499,     0,     0,   500,   501,     0,     5,     6,     7,
03053        8,     9,    10,    11,    12,    13,    14,     0,     0,     0,
03054       61,   241,    63,    15,     0,    16,    17,    18,    19,     0,
03055        0,     0,     0,     0,    20,    21,    22,    23,    24,    25,
03056       26,     0,     0,    27,     0,     0,     0,     0,     0,    28,
03057        0,    30,    31,    32,     0,    33,    34,    35,    36,    37,
03058       38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
03059       43,    44,     0,    45,    46,     0,     0,     0,     0,     0,
03060        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03061        0,     0,     0,    47,     0,     0,    48,    49,     0,    50,
03062       51,     0,    52,     0,    53,    54,    55,    56,    57,    58,
03063       59,     0,     0,    60,     0,     0,     0,     0,     0,     0,
03064        5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
03065        0,     0,     0,    61,    62,    63,    15,     0,   101,   102,
03066       18,    19,     0,     0,     0,     0,     0,   103,   104,   105,
03067       23,    24,    25,    26,     0,     0,   106,     0,     0,     0,
03068        0,     0,     0,     0,     0,    31,    32,     0,    33,    34,
03069       35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
03070       42,     0,     0,    43,    44,     0,    45,    46,     0,     0,
03071        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03072        0,     0,     0,     0,     0,     0,   200,     0,     0,   111,
03073       49,     0,    50,    51,     0,   756,     0,    53,    54,    55,
03074       56,    57,    58,    59,     0,     0,    60,   499,     0,     0,
03075      500,   501,     0,     5,     6,     7,     8,     9,    10,    11,
03076       12,    13,     0,     0,     0,     0,    61,   241,    63,    15,
03077        0,   101,   102,    18,    19,     0,     0,     0,     0,     0,
03078      103,   104,   105,    23,    24,    25,    26,     0,     0,   106,
03079        0,     0,     0,     0,     0,     0,     0,     0,    31,    32,
03080        0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
03081       41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
03082       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03083        0,     0,     0,     0,     0,     0,     0,     0,     0,   200,
03084        0,     0,   111,    49,     0,    50,    51,     0,   792,     0,
03085       53,    54,    55,    56,    57,    58,    59,     0,     0,    60,
03086      499,     0,     0,   500,   501,     0,     5,     6,     7,     8,
03087        9,    10,    11,    12,    13,     0,     0,     0,     0,    61,
03088      241,    63,    15,     0,   101,   102,    18,    19,     0,     0,
03089        0,     0,     0,   103,   104,   105,    23,    24,    25,    26,
03090        0,     0,   106,     0,     0,     0,     0,     0,     0,     0,
03091        0,    31,    32,     0,    33,    34,    35,    36,    37,    38,
03092        0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
03093       44,     0,    45,    46,     0,     0,     0,     0,     0,     0,
03094        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03095        0,     0,   200,     0,     0,   111,    49,     0,    50,    51,
03096        0,   633,     0,    53,    54,    55,    56,    57,    58,    59,
03097        0,     0,    60,   499,     0,     0,   500,   501,     0,     5,
03098        6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
03099        0,     0,    61,   241,    63,    15,     0,    16,    17,    18,
03100       19,     0,     0,     0,     0,     0,    20,    21,    22,    23,
03101       24,    25,    26,     0,     0,   106,     0,     0,     0,     0,
03102        0,     0,     0,     0,    31,    32,     0,    33,    34,    35,
03103       36,    37,    38,   238,    39,    40,    41,     0,     0,    42,
03104        0,     0,    43,    44,     0,    45,    46,     0,     0,     0,
03105        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03106        0,     0,     0,     0,     0,   200,     0,     0,   111,    49,
03107        0,    50,    51,     0,   239,   240,    53,    54,    55,    56,
03108       57,    58,    59,     0,     0,    60,     0,     0,     0,     0,
03109        0,     0,     5,     6,     7,     8,     9,    10,    11,    12,
03110       13,     0,     0,     0,     0,    61,   241,    63,    15,     0,
03111      101,   102,    18,    19,     0,     0,     0,     0,     0,   103,
03112      104,   105,    23,    24,    25,    26,     0,     0,   106,     0,
03113        0,     0,     0,     0,     0,     0,     0,    31,    32,     0,
03114       33,    34,    35,    36,    37,    38,   238,    39,    40,    41,
03115        0,     0,    42,     0,     0,    43,    44,     0,    45,    46,
03116        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03117        0,     0,     0,     0,     0,     0,     0,     0,   200,     0,
03118        0,   111,    49,     0,    50,    51,     0,   239,     0,    53,
03119       54,    55,    56,    57,    58,    59,     0,     0,    60,     0,
03120        0,     0,     0,     0,     0,     5,     6,     7,     8,     9,
03121       10,    11,    12,    13,     0,     0,     0,     0,    61,   241,
03122       63,    15,     0,   101,   102,    18,    19,     0,     0,     0,
03123        0,     0,   103,   104,   105,    23,    24,    25,    26,     0,
03124        0,   106,     0,     0,     0,     0,     0,     0,     0,     0,
03125       31,    32,     0,    33,    34,    35,    36,    37,    38,   238,
03126       39,    40,    41,     0,     0,    42,     0,     0,    43,    44,
03127        0,    45,    46,     0,     0,     0,     0,     0,     0,     0,
03128        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03129        0,   200,     0,     0,   111,    49,     0,    50,    51,     0,
03130        0,   240,    53,    54,    55,    56,    57,    58,    59,     0,
03131        0,    60,     0,     0,     0,     0,     0,     0,     5,     6,
03132        7,     8,     9,    10,    11,    12,    13,     0,     0,     0,
03133        0,    61,   241,    63,    15,     0,   101,   102,    18,    19,
03134        0,     0,     0,     0,     0,   103,   104,   105,    23,    24,
03135       25,    26,     0,     0,   106,     0,     0,     0,     0,     0,
03136        0,     0,     0,    31,    32,     0,    33,    34,    35,    36,
03137       37,    38,   238,    39,    40,    41,     0,     0,    42,     0,
03138        0,    43,    44,     0,    45,    46,     0,     0,     0,     0,
03139        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03140        0,     0,     0,     0,   200,     0,     0,   111,    49,     0,
03141       50,    51,     0,     0,     0,    53,    54,    55,    56,    57,
03142       58,    59,     0,     0,    60,     0,     0,     0,     0,     0,
03143        0,     5,     6,     7,     8,     9,    10,    11,    12,    13,
03144        0,     0,     0,     0,    61,   241,    63,    15,     0,    16,
03145       17,    18,    19,     0,     0,     0,     0,     0,    20,    21,
03146       22,    23,    24,    25,    26,     0,     0,   106,     0,     0,
03147        0,     0,     0,     0,     0,     0,    31,    32,     0,    33,
03148       34,    35,    36,    37,    38,     0,    39,    40,    41,     0,
03149        0,    42,     0,     0,    43,    44,     0,    45,    46,     0,
03150        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03151        0,     0,     0,     0,     0,     0,     0,   200,     0,     0,
03152      111,    49,     0,    50,    51,     0,   523,     0,    53,    54,
03153       55,    56,    57,    58,    59,     0,     0,    60,     0,     0,
03154        0,     0,     0,     0,     5,     6,     7,     8,     9,    10,
03155       11,    12,    13,     0,     0,     0,     0,    61,   241,    63,
03156       15,     0,   101,   102,    18,    19,     0,     0,     0,     0,
03157        0,   103,   104,   105,    23,    24,    25,    26,     0,     0,
03158      106,     0,     0,     0,     0,     0,     0,     0,     0,    31,
03159       32,     0,    33,    34,    35,    36,    37,    38,     0,    39,
03160       40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
03161       45,    46,     0,     0,     0,     0,     0,     0,     0,     0,
03162        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03163      200,     0,     0,   111,    49,     0,    50,    51,     0,   239,
03164        0,    53,    54,    55,    56,    57,    58,    59,     0,     0,
03165       60,     0,     0,     0,     0,     0,     0,     5,     6,     7,
03166        8,     9,    10,    11,    12,    13,     0,     0,     0,     0,
03167       61,   241,    63,    15,     0,   101,   102,    18,    19,     0,
03168        0,     0,     0,     0,   103,   104,   105,    23,    24,    25,
03169       26,     0,     0,   106,     0,     0,     0,     0,     0,     0,
03170        0,     0,    31,    32,     0,    33,    34,    35,    36,    37,
03171       38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
03172       43,    44,     0,    45,    46,     0,     0,     0,     0,     0,
03173        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03174        0,     0,     0,   200,     0,     0,   111,    49,     0,    50,
03175       51,     0,   523,     0,    53,    54,    55,    56,    57,    58,
03176       59,     0,     0,    60,     0,     0,     0,     0,     0,     0,
03177        5,     6,     7,     8,     9,    10,    11,    12,    13,     0,
03178        0,     0,     0,    61,   241,    63,    15,     0,    16,    17,
03179       18,    19,     0,     0,     0,     0,     0,    20,    21,    22,
03180       23,    24,    25,    26,     0,     0,    27,     0,     0,     0,
03181        0,     0,     0,     0,     0,    31,    32,     0,    33,    34,
03182       35,    36,    37,    38,     0,    39,    40,    41,     0,     0,
03183       42,     0,     0,    43,    44,     0,    45,    46,     0,     0,
03184        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03185        0,     0,     0,     0,     0,     0,   200,     0,     0,   111,
03186       49,     0,    50,    51,     0,     0,     0,    53,    54,    55,
03187       56,    57,    58,    59,     0,     0,    60,     0,     0,     0,
03188        0,     0,     0,     5,     6,     7,     8,     9,    10,    11,
03189       12,    13,     0,     0,     0,     0,    61,    62,    63,    15,
03190        0,   101,   102,    18,    19,     0,     0,     0,     0,     0,
03191      103,   104,   105,    23,    24,    25,    26,     0,     0,   106,
03192        0,     0,     0,     0,     0,     0,     0,     0,    31,    32,
03193        0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
03194       41,     0,     0,    42,     0,     0,    43,    44,     0,    45,
03195       46,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03196        0,     0,     0,     0,     0,     0,     0,     0,     0,   200,
03197        0,     0,   111,    49,     0,    50,    51,     0,     0,     0,
03198       53,    54,    55,    56,    57,    58,    59,     0,     0,    60,
03199        0,     0,     0,     0,     0,     0,     5,     6,     7,     8,
03200        9,    10,    11,    12,    13,     0,     0,     0,     0,    61,
03201      241,    63,    15,     0,    16,    17,    18,    19,     0,     0,
03202        0,     0,     0,    20,    21,    22,    23,    24,    25,    26,
03203        0,     0,   106,     0,     0,     0,     0,     0,     0,     0,
03204        0,    31,    32,     0,    33,    34,    35,    36,    37,    38,
03205        0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
03206       44,     0,    45,    46,     0,     0,     0,     0,     0,     0,
03207        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03208        0,     0,   200,     0,     0,   111,    49,     0,    50,    51,
03209        0,     0,     0,    53,    54,    55,    56,    57,    58,    59,
03210        0,     0,    60,     0,     0,     0,     0,     0,     0,     5,
03211        6,     7,     8,     9,    10,    11,    12,    13,     0,     0,
03212        0,     0,    61,   241,    63,    15,     0,   101,   102,    18,
03213       19,     0,     0,     0,     0,     0,   103,   104,   105,    23,
03214       24,    25,    26,     0,     0,   106,     0,     0,     0,     0,
03215        0,     0,     0,     0,    31,    32,     0,   107,    34,    35,
03216       36,   108,    38,     0,    39,    40,    41,     0,     0,    42,
03217        0,     0,    43,    44,     0,     0,     0,     0,     0,     0,
03218        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03219        0,     0,   109,     0,     0,   110,     0,     0,   111,    49,
03220        0,    50,    51,     0,     0,     0,    53,    54,    55,    56,
03221       57,    58,    59,     0,     0,    60,     0,     0,     5,     6,
03222        7,     8,     9,    10,    11,    12,    13,     0,     0,     0,
03223        0,     0,     0,     0,    15,   112,   101,   102,    18,    19,
03224        0,     0,     0,     0,     0,   103,   104,   105,    23,    24,
03225       25,    26,     0,     0,   106,     0,     0,     0,     0,     0,
03226        0,     0,     0,    31,    32,     0,    33,    34,    35,    36,
03227       37,    38,     0,    39,    40,    41,     0,     0,    42,     0,
03228        0,    43,    44,     0,     0,     0,     0,     0,     0,     0,
03229        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03230        0,     0,     0,     0,   211,     0,     0,    48,    49,     0,
03231       50,    51,     0,    52,     0,    53,    54,    55,    56,    57,
03232       58,    59,     0,     0,    60,     0,     0,     5,     6,     7,
03233        8,     9,    10,    11,    12,    13,     0,     0,     0,     0,
03234        0,     0,     0,    15,   112,   101,   102,    18,    19,     0,
03235        0,     0,     0,     0,   103,   104,   105,    23,    24,    25,
03236       26,     0,     0,   106,     0,     0,     0,     0,     0,     0,
03237        0,     0,    31,    32,     0,    33,    34,    35,    36,    37,
03238       38,     0,    39,    40,    41,     0,     0,    42,     0,     0,
03239       43,    44,     0,     0,     0,     0,     0,     0,     0,     0,
03240        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03241        0,     0,     0,   286,     0,     0,   333,    49,     0,    50,
03242       51,     0,   334,     0,    53,    54,    55,    56,    57,    58,
03243       59,     0,     0,    60,     0,     0,     5,     6,     7,     8,
03244        9,    10,    11,    12,    13,     0,     0,     0,     0,     0,
03245        0,     0,    15,   112,   101,   102,    18,    19,     0,     0,
03246        0,     0,     0,   103,   104,   105,    23,    24,    25,    26,
03247        0,     0,   106,     0,     0,     0,     0,     0,     0,     0,
03248        0,    31,    32,     0,   107,    34,    35,    36,   108,    38,
03249        0,    39,    40,    41,     0,     0,    42,     0,     0,    43,
03250       44,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03251        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03252        0,     0,   110,     0,     0,   111,    49,     0,    50,    51,
03253        0,     0,     0,    53,    54,    55,    56,    57,    58,    59,
03254        0,     0,    60,     0,     0,     5,     6,     7,     8,     9,
03255       10,    11,    12,    13,     0,     0,     0,     0,     0,     0,
03256        0,    15,   112,   101,   102,    18,    19,     0,     0,     0,
03257        0,     0,   103,   104,   105,    23,    24,    25,    26,     0,
03258        0,   106,     0,     0,     0,     0,     0,     0,     0,     0,
03259       31,    32,     0,    33,    34,    35,    36,    37,    38,     0,
03260       39,    40,    41,     0,     0,    42,     0,     0,    43,    44,
03261        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03262        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03263        0,   286,     0,     0,   333,    49,     0,    50,    51,     0,
03264        0,     0,    53,    54,    55,    56,    57,    58,    59,     0,
03265        0,    60,     0,     0,     5,     6,     7,     8,     9,    10,
03266       11,    12,    13,     0,     0,     0,     0,     0,     0,     0,
03267       15,   112,   101,   102,    18,    19,     0,     0,     0,     0,
03268        0,   103,   104,   105,    23,    24,    25,    26,     0,     0,
03269      106,     0,     0,     0,     0,     0,     0,     0,     0,    31,
03270       32,     0,    33,    34,    35,    36,    37,    38,     0,    39,
03271       40,    41,     0,     0,    42,     0,     0,    43,    44,     0,
03272        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03273        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03274      863,     0,     0,   111,    49,     0,    50,    51,     0,     0,
03275        0,    53,    54,    55,    56,    57,    58,    59,     0,     0,
03276       60,     0,     0,     5,     6,     7,     8,     9,    10,    11,
03277       12,    13,     0,     0,     0,     0,     0,     0,     0,    15,
03278      112,   101,   102,    18,    19,     0,     0,     0,     0,     0,
03279      103,   104,   105,    23,    24,    25,    26,     0,     0,   106,
03280        0,     0,     0,     0,     0,     0,     0,     0,    31,    32,
03281        0,    33,    34,    35,    36,    37,    38,     0,    39,    40,
03282       41,     0,     0,    42,     0,     0,    43,    44,     0,   337,
03283      338,   339,   340,   341,   342,   343,   344,   345,   346,   347,
03284     -556,  -556,     0,     0,   350,   351,     0,     0,     0,   881,
03285        0,     0,   111,    49,     0,    50,    51,     0,     0,     0,
03286       53,    54,    55,    56,    57,    58,    59,     0,     0,    60,
03287        0,     0,   572,   573,     0,     0,   574,   353,   354,   355,
03288      356,   357,   358,   359,   360,   361,   362,     0,     0,   112,
03289      164,   165,   166,   167,   168,   169,   170,   171,   172,     0,
03290        0,   173,   174,     0,     0,   175,   176,   177,   178,     0,
03291        0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
03292        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03293        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03294      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
03295        0,   190,   191,   593,   565,     0,     0,   594,     0,     0,
03296        0,     0,     0,     0,     0,     0,     0,     0,     0,   192,
03297      255,   164,   165,   166,   167,   168,   169,   170,   171,   172,
03298        0,     0,   173,   174,     0,     0,   175,   176,   177,   178,
03299        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03300      179,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03301        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03302        0,   180,   181,   182,   183,   184,   185,   186,   187,   188,
03303      189,     0,   190,   191,   578,   573,     0,     0,   579,     0,
03304        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03305      192,   255,   164,   165,   166,   167,   168,   169,   170,   171,
03306      172,     0,     0,   173,   174,     0,     0,   175,   176,   177,
03307      178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03308        0,   179,     0,     0,     0,     0,     0,     0,     0,     0,
03309        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03310        0,     0,   180,   181,   182,   183,   184,   185,   186,   187,
03311      188,   189,     0,   190,   191,   610,   565,     0,     0,   611,
03312        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03313        0,   192,   255,   164,   165,   166,   167,   168,   169,   170,
03314      171,   172,     0,     0,   173,   174,     0,     0,   175,   176,
03315      177,   178,     0,     0,     0,     0,     0,     0,     0,     0,
03316        0,     0,   179,     0,     0,     0,     0,     0,     0,     0,
03317        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03318        0,     0,     0,   180,   181,   182,   183,   184,   185,   186,
03319      187,   188,   189,     0,   190,   191,   613,   573,     0,     0,
03320      614,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03321        0,     0,   192,   255,   164,   165,   166,   167,   168,   169,
03322      170,   171,   172,     0,     0,   173,   174,     0,     0,   175,
03323      176,   177,   178,     0,     0,     0,     0,     0,     0,     0,
03324        0,     0,     0,   179,     0,     0,     0,     0,     0,     0,
03325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03326        0,     0,     0,     0,   180,   181,   182,   183,   184,   185,
03327      186,   187,   188,   189,     0,   190,   191,   620,   565,     0,
03328        0,   621,     0,     0,     0,     0,     0,     0,     0,     0,
03329        0,     0,     0,   192,   255,   164,   165,   166,   167,   168,
03330      169,   170,   171,   172,     0,     0,   173,   174,     0,     0,
03331      175,   176,   177,   178,     0,     0,     0,     0,     0,     0,
03332        0,     0,     0,     0,   179,     0,     0,     0,     0,     0,
03333        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03334        0,     0,     0,     0,     0,   180,   181,   182,   183,   184,
03335      185,   186,   187,   188,   189,     0,   190,   191,   623,   573,
03336        0,     0,   624,     0,     0,     0,     0,     0,     0,     0,
03337        0,     0,     0,     0,   192,   255,   164,   165,   166,   167,
03338      168,   169,   170,   171,   172,     0,     0,   173,   174,     0,
03339        0,   175,   176,   177,   178,     0,     0,     0,     0,     0,
03340        0,     0,     0,     0,     0,   179,     0,     0,     0,     0,
03341        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03342        0,     0,     0,     0,     0,     0,   180,   181,   182,   183,
03343      184,   185,   186,   187,   188,   189,     0,   190,   191,   655,
03344      565,     0,     0,   656,     0,     0,     0,     0,     0,     0,
03345        0,     0,     0,     0,     0,   192,   255,   164,   165,   166,
03346      167,   168,   169,   170,   171,   172,     0,     0,   173,   174,
03347        0,     0,   175,   176,   177,   178,     0,     0,     0,     0,
03348        0,     0,     0,     0,     0,     0,   179,     0,     0,     0,
03349        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03350        0,     0,     0,     0,     0,     0,     0,   180,   181,   182,
03351      183,   184,   185,   186,   187,   188,   189,     0,   190,   191,
03352      658,   573,     0,     0,   659,     0,     0,     0,     0,     0,
03353        0,     0,     0,     0,     0,     0,   192,   255,   164,   165,
03354      166,   167,   168,   169,   170,   171,   172,     0,     0,   173,
03355      174,     0,     0,   175,   176,   177,   178,     0,     0,     0,
03356        0,     0,     0,     0,     0,     0,     0,   179,     0,     0,
03357        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03358        0,     0,     0,     0,     0,     0,     0,     0,   180,   181,
03359      182,   183,   184,   185,   186,   187,   188,   189,     0,   190,
03360      191,   939,   565,     0,     0,   940,     0,     0,     0,     0,
03361        0,     0,     0,     0,     0,     0,     0,   192,   255,   164,
03362      165,   166,   167,   168,   169,   170,   171,   172,     0,     0,
03363      173,   174,     0,     0,   175,   176,   177,   178,     0,     0,
03364        0,     0,     0,     0,     0,     0,     0,     0,   179,     0,
03365        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03366        0,     0,     0,     0,     0,     0,     0,     0,     0,   180,
03367      181,   182,   183,   184,   185,   186,   187,   188,   189,     0,
03368      190,   191,   946,   565,     0,     0,   947,     0,     0,     0,
03369        0,     0,     0,     0,     0,     0,     0,     0,   192,   255,
03370      164,   165,   166,   167,   168,   169,   170,   171,   172,     0,
03371        0,   173,   174,     0,     0,   175,   176,   177,   178,     0,
03372        0,     0,     0,     0,     0,     0,     0,     0,     0,   179,
03373        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03374        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03375      180,   181,   182,   183,   184,   185,   186,   187,   188,   189,
03376        0,   190,   191,   949,   573,     0,     0,   950,     0,     0,
03377        0,     0,     0,     0,     0,     0,     0,     0,     0,   192,
03378      255,   164,   165,   166,   167,   168,   169,   170,   171,   172,
03379        0,     0,   173,   174,     0,     0,   175,   176,   177,   178,
03380        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03381      179,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03382        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03383        0,   180,   181,   182,   183,   184,   185,   186,   187,   188,
03384      189,     0,   190,   191,   578,   573,     0,     0,   579,     0,
03385        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03386      192,   255,   164,   165,   166,   167,   168,   169,   170,   171,
03387      172,     0,     0,   173,   174,     0,     0,   175,   176,   177,
03388      178,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03389        0,   179,     0,     0,     0,     0,     0,     0,     0,     0,
03390        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03391        0,     0,   180,   181,   182,   183,   184,   185,   186,   187,
03392      188,   189,     0,   190,   191,     0,     0,     0,     0,     0,
03393        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
03394        0,   192
03395 };
03396 
03397 static const yytype_int16 yycheck[] =
03398 {
03399        2,    83,    27,    16,    17,   248,     7,    20,    28,   208,
03400        5,     6,   292,   292,    62,    22,   417,   287,    13,    22,
03401      280,    76,    14,    10,   284,   258,   364,   390,    15,    48,
03402      425,    16,    17,   428,    15,    20,    28,     2,   408,     4,
03403      273,    52,   428,   336,   277,   336,     4,   691,    50,    51,
03404      388,   110,   605,    54,   468,    48,   363,    52,   365,     1,
03405      676,   368,   615,   597,   402,    50,    51,    65,   767,    65,
03406       26,    16,    17,   411,   460,    20,   765,    25,   612,   672,
03407      477,    76,   389,    16,    65,   672,   846,    27,   622,   676,
03408       16,    98,   111,    25,   401,    98,   403,   691,   105,   269,
03409       16,   581,   582,   865,   691,   412,   304,    26,    79,    29,
03410      116,    18,   119,    20,    90,   529,    88,    16,    17,    16,
03411        0,    20,   363,   657,   365,    88,    88,   368,   150,    25,
03412       90,   153,   470,   114,    16,    71,   706,    88,   502,   446,
03413      116,   147,    88,   713,    16,    55,   387,    28,   389,    88,
03414      121,    50,   143,   842,    55,    90,   116,    25,   147,    15,
03415      401,   116,   403,   333,   471,    25,    37,    38,   928,   410,
03416      149,   412,    25,   935,   146,   149,    25,    90,   120,   153,
03417       25,   116,   145,   146,   146,    88,   149,   143,   108,   783,
03418      126,   127,   128,   149,   437,   146,   895,   430,   468,   147,
03419      146,   434,   482,   482,   445,   446,   439,   146,   897,    65,
03420      152,   153,   152,   153,   147,   147,   449,   861,   416,   152,
03421      153,   865,   209,   210,   143,   226,   152,   153,   469,   592,
03422      471,   116,   287,   849,   149,   233,   152,   153,   927,   252,
03423      720,   254,   255,   146,   263,   247,   248,   642,   643,   149,
03424      269,   147,   233,   255,   116,   152,   153,   643,   114,   529,
03425      853,    88,   849,    25,   628,   662,   663,   252,   861,   254,
03426      152,   153,   636,   271,   861,   271,   269,   149,   865,   147,
03427      152,   153,   153,   331,   837,   699,    88,   147,   336,   149,
03428      271,   935,   287,    90,   147,   528,   149,     2,   147,     4,
03429        5,     6,   147,   268,     9,    10,    88,   252,    13,   254,
03430       15,    16,    17,   604,   333,    20,    88,    55,   145,   146,
03431       88,   147,   601,   334,   372,   373,   147,   153,   387,    51,
03432       58,    59,   153,    55,    25,   322,   323,   324,   325,   334,
03433      333,    26,    25,    48,   146,    20,   202,    52,   935,   152,
03434      153,   364,   208,   252,   116,   254,   321,    62,   365,    88,
03435      147,   326,   364,   321,   146,   728,   153,   600,   765,    90,
03436      767,    76,   147,   145,   146,   388,    26,   233,   146,   398,
03437      750,   152,   389,    91,    90,   147,   388,   406,   150,   402,
03438      147,   153,   652,   395,   637,   116,   403,   147,   411,   143,
03439      402,    71,   383,    88,   109,   412,   111,   700,    88,   411,
03440      116,   466,   691,   468,   948,   271,   145,   146,   651,    88,
03441       26,   153,   442,   279,   280,   116,   407,   408,   284,   699,
03442      150,   630,   331,   666,   436,   437,   837,   336,    88,   446,
03443      425,   443,   116,    90,   839,   842,   843,   727,   727,    88,
03444      442,    88,   815,   839,    88,   151,   147,   470,   143,   150,
03445      145,   146,   153,   144,   471,   145,   146,    88,   470,   116,
03446       55,   466,   457,   468,   529,    88,   145,   146,   443,   498,
03447      110,   147,    88,   113,   114,   147,   488,   452,    90,   491,
03448       71,   493,    71,   143,   199,   145,   146,    97,   895,   149,
03449      897,    15,    88,    13,   209,   210,   145,   146,   145,   146,
03450       88,   145,   146,    16,   116,    63,   759,   880,    15,   418,
03451      522,   150,    26,   147,   145,   146,   144,   383,   553,    90,
03452      927,   764,   145,   146,   529,    90,   147,   143,   147,   145,
03453      146,   116,   821,   149,   147,   147,   571,   252,   147,   254,
03454      255,   407,   408,   258,   259,   116,    37,    38,   263,   145,
03455      146,   116,   569,   268,   269,    51,   569,   145,   146,    51,
03456      577,   276,   597,   580,   577,   577,   147,   580,   580,   581,
03457      582,   147,   287,   921,    88,   818,   147,   612,    63,   596,
03458      110,   598,   147,   113,   114,   147,   598,   622,    58,    59,
03459      147,   602,   604,   605,   591,   607,   626,    51,   589,    53,
03460       54,    55,    56,   615,    90,   922,   321,   322,   323,   324,
03461      325,   326,   327,   328,   823,   116,   331,    90,   333,   334,
03462      829,   336,   657,   715,   626,   637,    18,    90,   625,   143,
03463      116,   145,   146,   668,   699,   149,    62,    15,    64,    65,
03464      669,   670,   700,   116,    71,   703,   704,   642,    15,   364,
03465      144,   709,   710,   116,   147,   684,   691,   372,   373,   147,
03466      911,   147,    51,   692,    53,    54,    55,    56,   144,   920,
03467      118,   922,   151,   388,   147,   390,   391,    62,    15,    64,
03468       65,    17,    18,   398,   147,   111,   112,   402,   717,   718,
03469       91,   406,    14,   147,   699,   604,   411,   124,   125,   126,
03470      127,   128,    56,    57,    58,    59,   735,    15,   720,    15,
03471       61,   147,   147,    64,    65,   152,   150,    15,   747,   748,
03472      144,   733,   147,   589,   736,   754,   111,   112,   443,   147,
03473      147,   722,   147,     9,    10,   144,   147,   452,   729,    15,
03474      121,   738,   147,   147,    15,   803,    15,   759,   783,   147,
03475      144,   466,    15,   468,    15,   470,    15,   147,   147,   750,
03476      111,   112,   774,   775,   630,   777,   121,   779,   780,    55,
03477       63,    64,    65,   785,   147,   144,   788,   789,    15,   147,
03478       15,   786,    55,   498,    61,   814,   652,    64,    65,    51,
03479      147,    53,    54,    55,    56,   147,    71,   826,    51,   147,
03480       53,    54,    55,    56,   147,    15,   147,   149,     2,   149,
03481        4,    86,    87,   443,   529,     9,    10,   822,   111,   112,
03482       13,    15,    16,    17,     6,   837,    20,   580,   924,   662,
03483       92,   928,   716,   109,   111,   112,    98,    99,    51,    92,
03484       53,    54,    55,    56,   923,    98,    99,     7,   123,   124,
03485      125,   126,   127,   128,    48,   672,   722,   886,   504,   888,
03486      198,   123,   891,   729,   126,   900,    -1,   821,    62,   491,
03487      123,   493,    -1,   126,    71,    -1,   591,   592,    51,    92,
03488       53,    54,    55,    56,   750,    98,    -1,   149,    -1,    86,
03489       87,   903,   904,   905,   906,    -1,   908,   909,   921,   861,
03490      912,    -1,   914,   915,    -1,   922,    -1,    -1,    -1,   921,
03491      625,   923,   924,   948,    -1,   109,    -1,   111,    51,    92,
03492       53,    54,    55,    56,    -1,    98,    99,   124,   125,   126,
03493      127,   128,    -1,   209,   210,    51,    -1,    51,    -1,    53,
03494       54,    55,    56,    -1,   956,   957,   958,   959,   960,    -1,
03495      123,    -1,    -1,   126,   669,   670,   968,   823,    -1,    92,
03496       63,    64,    65,   829,    -1,    -1,    99,    -1,    -1,   684,
03497       -1,   676,    -1,    -1,   679,    -1,    -1,   692,    92,    -1,
03498      153,    -1,   258,   259,   699,   700,   691,    -1,   703,   704,
03499      123,    -1,    -1,    -1,   709,   710,    63,    64,    65,    -1,
03500      276,    -1,   717,   718,    -1,   199,    -1,    -1,   111,   112,
03501       -1,    -1,    -1,   728,    -1,   209,   210,    -1,    -1,    -1,
03502      735,    -1,    -1,   738,    63,    64,    65,    -1,    63,    64,
03503       65,    -1,   747,   748,    -1,    63,    64,    65,    51,   754,
03504       53,    54,    55,    56,   111,   112,   322,   323,   324,   325,
03505       -1,   327,   328,    40,    41,    42,    43,    44,   252,    -1,
03506      254,   255,    -1,    -1,   258,   259,    -1,    -1,    -1,   263,
03507       -1,   786,   111,   112,   268,   269,   111,   112,    -1,    92,
03508       -1,    -1,   276,   111,   112,    98,    99,    -1,   803,    -1,
03509       -1,    -1,    63,    64,    65,    -1,    -1,    -1,    -1,   814,
03510      815,     2,    -1,     4,     5,     6,     7,   822,    -1,    -1,
03511      123,   826,    13,   126,    51,   391,    53,    54,    55,    56,
03512       -1,    -1,   238,   239,   240,    -1,    -1,   321,   322,   323,
03513      324,   325,   326,   327,   328,    -1,   149,   331,    -1,   333,
03514      111,   112,   336,    -1,   849,    -1,   851,    48,    -1,    -1,
03515      855,    52,   774,   775,    -1,   777,    -1,   779,   780,    -1,
03516      865,    -1,   867,   785,    -1,   880,   788,   789,    -1,    -1,
03517      364,   886,    -1,   888,    -1,    76,   891,    -1,   372,   373,
03518       51,    -1,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
03519      297,    -1,    -1,    -1,   388,    -1,   390,   391,   305,    -1,
03520       -1,   308,    -1,   310,   398,   312,   921,   314,   402,    -1,
03521      111,    -1,   406,    -1,    -1,   331,    -1,   411,    -1,    -1,
03522      336,    92,    -1,    -1,    -1,    -1,   931,    98,     0,    -1,
03523      935,    -1,   937,    -1,    -1,    -1,    -1,   942,    -1,    -1,
03524       -1,    13,    14,    15,    16,    17,    18,    -1,    20,   443,
03525       -1,    -1,    -1,    -1,    26,    27,    -1,    -1,   452,   964,
03526       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
03527       42,    43,    44,    -1,    -1,    -1,   470,    -1,    -1,    -1,
03528       -1,   903,   904,   905,   906,    -1,   908,   909,    -1,    -1,
03529      912,    -1,   914,   915,    -1,    -1,    -1,    -1,   199,    -1,
03530       -1,    -1,   418,    -1,   498,    -1,    -1,    -1,   424,   425,
03531       -1,    -1,   428,    -1,    -1,   591,    88,    -1,    -1,    -1,
03532       -1,    -1,    -1,    16,    17,    -1,    -1,    20,    -1,    -1,
03533       -1,    -1,    -1,    -1,   956,   957,   958,   959,   960,    71,
03534       -1,   457,    -1,    -1,   460,    -1,   968,    -1,    -1,   625,
03535       -1,    -1,    45,    46,    86,    87,    -1,    50,    51,    -1,
03536       -1,    -1,   263,    -1,    -1,    -1,    -1,   268,   269,    62,
03537       63,   143,   144,   489,   146,    -1,    -1,   149,   150,    -1,
03538      152,   153,    -1,    -1,    -1,    -1,   287,    -1,    -1,   121,
03539      122,   123,   124,   125,   126,   127,   128,   591,   592,    71,
03540       72,    73,    74,    75,    76,    77,    78,   523,    80,    81,
03541       -1,    -1,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
03542      321,    -1,    -1,    -1,    -1,   326,    -1,    -1,    -1,    -1,
03543       -1,   625,   333,   334,    -1,    -1,    -1,    -1,    -1,    -1,
03544       -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
03545      122,   123,   124,   125,   126,   127,   128,    -1,    -1,    -1,
03546       -1,    -1,   738,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03547       -1,    -1,    -1,    -1,    -1,   669,   670,    -1,    -1,    -1,
03548       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   604,   390,
03549      684,    -1,    -1,    -1,    -1,    -1,    -1,   398,   692,    -1,
03550       -1,    -1,    -1,    -1,    -1,   406,   700,    -1,    -1,   703,
03551      704,    -1,    -1,    -1,    -1,   709,   710,   633,    -1,    -1,
03552      636,    -1,    -1,   717,   718,    -1,   642,   643,    -1,    -1,
03553       -1,    -1,    -1,    -1,   728,    -1,    -1,    -1,    -1,    -1,
03554       -1,   735,   443,    -1,   738,   238,   239,   240,   241,    -1,
03555       -1,   452,    -1,   747,   748,    -1,    -1,    -1,    -1,   252,
03556      754,   254,   255,    -1,    -1,   466,    -1,   468,    -1,    -1,
03557       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03558      696,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03559       -1,    -1,    -1,    -1,    -1,    -1,    -1,   498,    -1,    -1,
03560       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   803,
03561       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03562      814,   815,    -1,    -1,    -1,    -1,    -1,    -1,   529,    -1,
03563       -1,    -1,   826,    -1,    -1,    -1,    -1,   753,   331,    -1,
03564      756,    -1,    -1,   336,   337,   338,   339,   340,   341,   342,
03565      343,   344,   345,   346,   347,   348,   349,   350,   351,   352,
03566      353,   354,   355,   356,   357,   358,   359,   360,   361,   362,
03567        2,   364,     4,     5,     6,    -1,   792,    -1,    -1,   372,
03568      373,    13,    -1,    -1,    -1,    -1,   880,    -1,    -1,    -1,
03569       -1,   592,   886,    -1,   888,   388,    -1,   891,    -1,    -1,
03570       -1,    -1,    -1,    -1,    -1,    -1,    -1,   400,    -1,   402,
03571       -1,   404,   405,    -1,    -1,    -1,    48,    -1,   411,    -1,
03572       52,    -1,    -1,   839,    -1,   418,    -1,   921,    -1,    -1,
03573       -1,   424,   425,    -1,    -1,   428,    -1,    -1,    -1,    -1,
03574       -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
03575       -1,    -1,    -1,    -1,   447,    -1,    -1,    -1,    -1,    -1,
03576       -1,    -1,    -1,     2,   457,     4,    -1,   460,   669,   670,
03577       -1,    -1,    -1,    -1,    13,    -1,    -1,   470,    -1,   111,
03578       -1,    -1,    -1,   684,    -1,    -1,    -1,    -1,    -1,    -1,
03579       -1,   692,    -1,    -1,    -1,    -1,   489,    -1,   699,    -1,
03580       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
03581       -1,    -1,    -1,    -1,    -1,    -1,   717,   718,    -1,   512,
03582      513,    -1,    -1,    -1,    -1,    -1,    -1,   728,    -1,    -1,
03583      523,    -1,    -1,    -1,   735,    -1,    -1,    -1,    -1,    71,
03584       72,    73,    74,    75,    76,    77,   747,   748,    80,    81,
03585       -1,    -1,    -1,   754,    86,    87,    -1,    -1,    -1,    -1,
03586       -1,    -1,     2,    -1,     4,    -1,    -1,   199,    -1,    -1,
03587       -1,    -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03588       -1,    -1,    -1,    -1,    -1,   786,    -1,   119,   120,   121,
03589      122,   123,   124,   125,   126,   127,   128,    -1,    -1,    -1,
03590       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    -1,
03591       -1,   604,    -1,   814,   815,    -1,    -1,    -1,    -1,    -1,
03592       -1,   822,    -1,    -1,    -1,   826,    -1,    -1,    -1,    -1,
03593       -1,   263,    -1,    -1,    -1,    -1,   268,   269,    -1,    -1,
03594      633,    -1,    -1,   636,    -1,    -1,    -1,    -1,    -1,   642,
03595      643,    -1,    -1,    -1,    -1,   287,    -1,    -1,    -1,    -1,
03596      199,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03597       -1,   111,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   880,
03598       -1,    -1,    -1,    -1,    -1,   886,    -1,   888,    -1,   321,
03599      891,    -1,    -1,    -1,   326,    -1,    -1,    -1,    -1,    -1,
03600       -1,   333,   334,   696,    -1,    -1,    -1,   700,   701,    -1,
03601      703,   704,    -1,    -1,    -1,    -1,   709,   710,    -1,    -1,
03602       -1,    -1,    -1,    -1,   263,    -1,   719,    -1,    -1,   268,
03603      269,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03604       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   741,   742,
03605       -1,   744,   745,    -1,    -1,    -1,    -1,    -1,   390,   199,
03606      753,    -1,    -1,   756,    -1,    -1,   398,    -1,    -1,    -1,
03607       -1,    -1,    -1,    -1,   406,    -1,    -1,    -1,    -1,    -1,
03608       -1,    -1,   321,    -1,    -1,    -1,    -1,   326,    -1,    -1,
03609       -1,    -1,    -1,    -1,   333,    -1,    -1,   336,    -1,   792,
03610       -1,    -1,    -1,   796,    -1,    -1,    -1,    -1,    -1,    -1,
03611      803,   443,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03612      452,    -1,    -1,   263,    -1,    -1,    -1,    -1,   268,   269,
03613       -1,    -1,    -1,    -1,   466,    -1,   468,    -1,   831,    -1,
03614       -1,    44,    -1,    -1,    -1,    -1,   839,    -1,    -1,    -1,
03615       -1,   390,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   398,
03616       -1,    -1,    -1,    -1,    -1,    -1,   498,   406,    71,    72,
03617       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
03618       83,   321,    -1,    86,    87,    -1,   326,    -1,    -1,    -1,
03619       -1,    -1,    -1,   333,    -1,    -1,    -1,   529,    -1,    -1,
03620       -1,    -1,    -1,    -1,   443,    -1,    -1,    -1,    -1,    -1,
03621       -1,    -1,    -1,   452,   117,    -1,   119,   120,   121,   122,
03622      123,   124,   125,   126,   127,   128,    -1,    -1,   921,    -1,
03623       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03624       -1,    -1,    -1,    -1,   147,    -1,    -1,    -1,    -1,    -1,
03625      390,    51,    52,    -1,    -1,    55,    -1,    -1,   398,   498,
03626      592,    -1,    -1,    -1,    -1,    -1,   406,    -1,    -1,    69,
03627       70,    71,    72,    73,    74,    75,    76,    77,    -1,    -1,
03628       80,    81,    -1,    -1,    84,    85,    86,    87,    -1,    -1,
03629       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
03630       -1,    -1,    -1,   443,    -1,    -1,    -1,    -1,    -1,    -1,
03631       -1,    -1,   452,    -1,    -1,    -1,    -1,    -1,    -1,   119,
03632      120,   121,   122,   123,   124,   125,   126,   127,   128,    -1,
03633      130,   131,    -1,    -1,    -1,    -1,    -1,   669,   670,    -1,
03634       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   148,   149,
03635       -1,    -1,   684,   592,    -1,    -1,    -1,    -1,   498,    -1,
03636      692,    -1,    -1,    -1,    -1,    -1,    -1,   699,    -1,    -1,
03637       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03638       -1,    -1,    -1,    -1,    -1,   717,   718,    -1,    -1,    -1,
03639       -1,    -1,    -1,    -1,    -1,    -1,   728,    -1,    -1,    -1,
03640       -1,    -1,    -1,   735,    -1,    -1,    -1,    -1,    -1,    -1,
03641       -1,    -1,    -1,    -1,    -1,   747,   748,    -1,    -1,    -1,
03642       -1,    -1,   754,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03643      669,   670,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03644       -1,    -1,    -1,    -1,    -1,   684,    -1,    -1,    -1,    -1,
03645       -1,    -1,   592,   692,   786,    -1,    -1,    -1,    -1,    -1,
03646       -1,   700,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03647       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   717,   718,
03648       -1,    -1,   814,   815,    -1,    -1,    -1,    -1,    -1,   728,
03649      822,    -1,    -1,    -1,   826,    -1,   735,    -1,    -1,    -1,
03650       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   747,   748,
03651       -1,    -1,    -1,    -1,    -1,   754,    71,    72,    73,    74,
03652       75,    76,    77,    78,    79,    80,    81,    82,    83,   669,
03653      670,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03654       -1,    -1,    -1,    -1,   684,    -1,    -1,    -1,   880,    -1,
03655       -1,    -1,   692,    -1,   886,    -1,   888,    -1,    -1,   891,
03656       -1,    -1,   117,    -1,   119,   120,   121,   122,   123,   124,
03657      125,   126,   127,   128,    -1,   814,   815,   717,   718,    -1,
03658       -1,    -1,    -1,   822,    -1,    -1,    -1,   826,   728,    -1,
03659       -1,    -1,    -1,    -1,    -1,   735,    -1,    -1,   153,    -1,
03660       -1,    -1,    -1,    -1,    -1,    -1,    -1,   747,   748,    -1,
03661       -1,    -1,    -1,    -1,   754,    -1,    -1,    -1,    -1,    -1,
03662       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03663       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03664       -1,   880,    -1,    -1,    -1,    -1,    -1,   886,    -1,   888,
03665       -1,    -1,   891,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03666        0,     1,    -1,     3,     4,     5,     6,     7,     8,     9,
03667       10,    11,    12,    -1,   814,   815,    -1,    -1,    -1,    19,
03668       -1,    21,    22,    23,    24,    -1,   826,    -1,    -1,    -1,
03669       30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
03670       -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,
03671       -1,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
03672       60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
03673       70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03674      880,    -1,    -1,    -1,    -1,    -1,   886,    -1,   888,    89,
03675       -1,   891,    92,    93,    -1,    95,    96,     0,    98,    -1,
03676      100,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
03677       13,    14,    15,    16,    17,    18,    -1,    20,    -1,    -1,
03678       -1,    -1,    -1,    -1,    27,    28,    29,    -1,    -1,   129,
03679      130,   131,    -1,    -1,    37,    38,    -1,    40,    41,    42,
03680       43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03681       -1,    -1,   152,   153,    -1,    -1,    -1,    -1,    -1,    -1,
03682       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    71,    72,
03683       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
03684       83,    -1,    -1,    86,    87,    88,    -1,    90,    91,    -1,
03685       -1,    -1,    -1,    -1,    97,    -1,    -1,    -1,    -1,    -1,
03686       -1,    -1,    -1,    -1,    -1,   108,    -1,    -1,    -1,    -1,
03687       -1,    -1,    -1,   116,   117,   118,   119,   120,   121,   122,
03688      123,   124,   125,   126,   127,   128,    -1,    -1,    -1,    -1,
03689       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,    -1,
03690       -1,   144,   145,   146,   147,    -1,    -1,   150,   151,   152,
03691      153,    13,    14,    15,    16,    17,    18,    -1,    20,    -1,
03692       -1,    44,    -1,    -1,    26,    27,    28,    -1,    -1,    -1,
03693       -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,    41,
03694       42,    43,    44,    -1,    -1,    -1,    -1,    -1,    71,    72,
03695       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
03696       83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    71,
03697       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
03698       82,    83,    -1,    -1,    86,    87,    88,    -1,    -1,    91,
03699       -1,    -1,    -1,    -1,   117,    97,   119,   120,   121,   122,
03700      123,   124,   125,   126,   127,   128,    -1,    -1,    -1,    -1,
03701       -1,    -1,    -1,    -1,    -1,   117,    -1,   119,   120,   121,
03702      122,   123,   124,   125,   126,   127,   128,    -1,    -1,    -1,
03703       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,
03704       -1,   143,   144,   145,   146,   147,    -1,   149,   150,   151,
03705      152,   153,    13,    14,    15,    16,    17,    18,    -1,    20,
03706       -1,    -1,    44,    -1,    -1,    -1,    27,    28,    29,    -1,
03707       -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,    40,
03708       41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,    71,
03709       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
03710       82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
03711       71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
03712       81,    82,    83,    -1,    -1,    86,    87,    88,    -1,    -1,
03713       91,    -1,    -1,    -1,    -1,   117,    97,   119,   120,   121,
03714      122,   123,   124,   125,   126,   127,   128,   108,    -1,    -1,
03715       -1,    -1,    -1,    -1,    -1,    -1,   117,   118,   119,   120,
03716      121,   122,   123,   124,   125,   126,   127,   128,    -1,    -1,
03717       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03718        0,    -1,    -1,   144,   145,   146,   147,    -1,    -1,   150,
03719      151,   152,   153,    13,    14,    15,    16,    17,    18,    -1,
03720       20,    -1,    -1,    -1,    -1,    -1,    26,    27,    28,    -1,
03721       -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,    -1,
03722       40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,    -1,
03723       71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
03724       81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
03725       -1,    71,    72,    73,    74,    75,    76,    77,    78,    79,
03726       80,    81,    82,    83,    -1,    -1,    86,    87,    88,    -1,
03727       -1,    91,    -1,    -1,    -1,    -1,   117,    97,   119,   120,
03728      121,   122,   123,   124,   125,   126,   127,   128,    -1,    -1,
03729       -1,    -1,    -1,    -1,    -1,    -1,    -1,   117,    -1,   119,
03730      120,   121,   122,   123,   124,   125,   126,   127,   128,    -1,
03731       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03732       -1,     0,    -1,   143,   144,   145,   146,   147,    -1,   149,
03733      150,   151,   152,   153,    13,    14,    15,    16,    17,    18,
03734       -1,    20,    -1,    -1,    -1,    -1,    -1,    -1,    27,    28,
03735       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,    38,
03736       -1,    40,    41,    42,    43,    44,    -1,    -1,    -1,    -1,
03737       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03738       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03739       -1,    -1,    71,    72,    73,    74,    75,    76,    77,    78,
03740       79,    80,    81,    82,    83,    -1,    -1,    86,    87,    88,
03741       -1,    -1,    91,     0,    -1,    -1,    -1,    -1,    97,    -1,
03742       -1,    -1,    -1,    -1,    -1,    -1,    13,    14,    15,    -1,
03743       17,    18,    -1,    20,    -1,    -1,    -1,    -1,   117,    26,
03744      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
03745       37,    38,    -1,    40,    41,    42,    43,    44,    -1,    -1,
03746       -1,    -1,    -1,    -1,    -1,   144,   145,   146,   147,    -1,
03747      149,   150,   151,   152,   153,    -1,    -1,    -1,    -1,    -1,
03748       -1,    -1,    -1,    -1,    71,    72,    73,    74,    75,    76,
03749       77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
03750       87,    88,    -1,    90,    -1,     0,    -1,    -1,    -1,    -1,
03751       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    13,    14,
03752       15,    -1,    17,    18,    -1,    20,    -1,    -1,    -1,   116,
03753      117,    -1,   119,   120,   121,   122,   123,   124,   125,   126,
03754      127,   128,    37,    38,    -1,    40,    41,    42,    43,    44,
03755       -1,    -1,    -1,    -1,    -1,    -1,   143,   144,   145,   146,
03756      147,    -1,    -1,   150,    -1,   152,   153,    -1,    -1,    -1,
03757       -1,    -1,    -1,    -1,    -1,    -1,    71,    72,    73,    74,
03758       75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
03759       -1,    86,    87,    88,    -1,    90,    -1,    -1,    -1,    -1,
03760       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03761       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03762       -1,   116,   117,    -1,   119,   120,   121,   122,   123,   124,
03763      125,   126,   127,   128,    -1,    -1,    -1,    -1,    -1,    -1,
03764       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   144,
03765      145,   146,   147,    -1,    -1,   150,    -1,   152,   153,     1,
03766       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
03767       12,    13,    14,    15,    -1,    -1,    18,    19,    -1,    21,
03768       22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
03769       32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
03770       -1,    -1,    -1,    45,    -1,    47,    48,    49,    -1,    51,
03771       52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
03772       -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,
03773       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03774       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
03775       92,    93,    -1,    95,    96,    -1,    98,    -1,   100,   101,
03776      102,   103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,
03777       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03778       -1,    -1,    -1,    -1,    -1,    -1,    -1,   129,   130,   131,
03779       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
03780        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
03781      152,   153,    15,    -1,    17,    18,    19,    -1,    21,    22,
03782       23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
03783       33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
03784       -1,    -1,    45,    -1,    47,    48,    49,    -1,    51,    52,
03785       53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
03786       63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,
03787       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03788       -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
03789       93,    -1,    95,    96,    -1,    98,    -1,   100,   101,   102,
03790      103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,
03791       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03792       -1,    -1,    -1,    -1,    -1,    -1,   129,   130,   131,    -1,
03793       -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,
03794        7,     8,     9,    10,    11,    12,    -1,    -1,    15,   152,
03795      153,    18,    19,    20,    21,    22,    23,    24,    -1,    -1,
03796       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
03797       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    -1,
03798       47,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
03799       -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
03800       67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
03801       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03802       -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,
03803       -1,    98,    -1,   100,   101,   102,   103,   104,   105,   106,
03804       -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03805       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03806       -1,    -1,   129,   130,   131,    -1,    -1,    -1,    -1,    -1,
03807        1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
03808       11,    12,    -1,    -1,    15,   152,   153,    18,    19,    -1,
03809       21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
03810       31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
03811       -1,    -1,    -1,    -1,    45,    -1,    47,    48,    49,    -1,
03812       51,    52,    53,    54,    55,    56,    -1,    58,    59,    60,
03813       -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
03814       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03815       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
03816       -1,    92,    93,    -1,    95,    96,    -1,    98,    -1,   100,
03817      101,   102,   103,   104,   105,   106,    -1,    -1,   109,    -1,
03818       -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,     5,
03819        6,     7,     8,     9,    10,    11,    12,    -1,   129,   130,
03820      131,    -1,    -1,    19,    -1,    21,    22,    23,    24,    -1,
03821       -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
03822       36,   152,   153,    39,    -1,    -1,    -1,    -1,    -1,    45,
03823       46,    47,    48,    49,    -1,    51,    52,    53,    54,    55,
03824       56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
03825       66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,
03826       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03827       -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,
03828       96,    -1,    98,    -1,   100,   101,   102,   103,   104,   105,
03829      106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
03830       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03831       -1,    -1,    -1,   129,   130,   131,    -1,    -1,    -1,    -1,
03832       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   144,    -1,
03833       -1,    -1,    -1,    -1,    -1,    -1,   152,   153,     1,    -1,
03834        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
03835       -1,    14,    15,    -1,    -1,    -1,    19,    -1,    21,    22,
03836       23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
03837       33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
03838       -1,    -1,    45,    -1,    47,    48,    49,    -1,    51,    52,
03839       53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
03840       63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,
03841       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03842       -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
03843       93,    -1,    95,    96,    -1,    98,    -1,   100,   101,   102,
03844      103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,
03845       -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
03846        8,     9,    10,    11,    12,    -1,   129,   130,   131,    -1,
03847       -1,    19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,
03848       -1,    -1,    30,    31,    32,    33,    34,    35,    36,   152,
03849      153,    39,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,
03850       48,    49,    -1,    51,    52,    53,    54,    55,    56,    -1,
03851       58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
03852       -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03853       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03854       -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,
03855       98,    -1,   100,   101,   102,   103,   104,   105,   106,    -1,
03856       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03857       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03858       -1,   129,   130,   131,    -1,    -1,    -1,    -1,     1,    -1,
03859        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
03860       -1,    -1,   150,    -1,   152,   153,    19,    -1,    21,    22,
03861       23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
03862       33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
03863       -1,    -1,    45,    -1,    47,    48,    49,    -1,    51,    52,
03864       53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
03865       63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,
03866       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03867       -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
03868       93,    -1,    95,    96,    -1,    98,    -1,   100,   101,   102,
03869      103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,
03870       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03871       -1,    -1,    -1,    -1,    -1,    -1,   129,   130,   131,    -1,
03872       -1,    -1,    -1,     1,    -1,     3,     4,     5,     6,     7,
03873        8,     9,    10,    11,    12,    -1,    -1,   150,    -1,   152,
03874      153,    19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,
03875       -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
03876       -1,    39,    -1,    -1,    -1,    -1,    -1,    45,    -1,    47,
03877       48,    49,    -1,    51,    52,    53,    54,    55,    56,    -1,
03878       58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
03879       -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03880       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03881       -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,
03882       98,    -1,   100,   101,   102,   103,   104,   105,   106,    -1,
03883       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03884       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03885       -1,   129,   130,   131,    -1,    -1,    -1,    -1,    -1,    -1,
03886       -1,    -1,    -1,    -1,    -1,    -1,   144,    -1,    -1,    -1,
03887       -1,    -1,    -1,    -1,   152,   153,     1,    -1,     3,     4,
03888        5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
03889       15,    -1,    -1,    -1,    19,    -1,    21,    22,    23,    24,
03890       -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
03891       35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
03892       45,    -1,    47,    48,    49,    -1,    51,    52,    53,    54,
03893       55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
03894       -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,
03895       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03896       -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,
03897       95,    96,    -1,    98,    -1,   100,   101,   102,   103,   104,
03898      105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
03899       -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
03900       10,    11,    -1,    -1,   129,   130,   131,    -1,    -1,    19,
03901       -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
03902       30,    31,    32,    33,    34,    35,    36,   152,   153,    39,
03903       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,
03904       -1,    51,    52,    53,    54,    55,    56,    57,    58,    59,
03905       60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
03906       70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03907       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
03908       -1,    -1,    92,    93,    -1,    95,    96,    -1,    98,    99,
03909      100,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
03910       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
03911        7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   129,
03912      130,   131,    19,    -1,    21,    22,    23,    24,    -1,    -1,
03913       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
03914       -1,    -1,    39,   153,    -1,    -1,    -1,    -1,    -1,    -1,
03915       -1,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
03916       -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
03917       67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
03918       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03919       -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,
03920       -1,    -1,    -1,   100,   101,   102,   103,   104,   105,   106,
03921       -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03922       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
03923       -1,    -1,   129,   130,   131,    -1,    -1,    19,    -1,    21,
03924       22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
03925       32,    33,    34,    35,    36,   152,   153,    39,    -1,    -1,
03926       -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    51,
03927       52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
03928       -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,
03929       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03930       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
03931       92,    93,    -1,    95,    96,    -1,    -1,    -1,   100,   101,
03932      102,   103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,
03933       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
03934        9,    10,    11,    12,    -1,    -1,    -1,   129,   130,   131,
03935       19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
03936       -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
03937       39,   153,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
03938       49,    -1,    51,    52,    53,    54,    55,    56,    -1,    58,
03939       59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
03940       69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03941       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03942       89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,    98,
03943       -1,   100,   101,   102,   103,   104,   105,   106,    -1,    -1,
03944      109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
03945        5,     6,     7,     8,     9,    10,    11,    12,    -1,    -1,
03946      129,   130,   131,    -1,    19,    -1,    21,    22,    23,    24,
03947       -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
03948       35,    36,    -1,   152,    39,    -1,    -1,    -1,    -1,    -1,
03949       45,    -1,    47,    48,    49,    -1,    51,    52,    53,    54,
03950       55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
03951       -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,
03952       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03953       -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,
03954       95,    96,    -1,    98,    -1,   100,   101,   102,   103,   104,
03955      105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
03956       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03957       -1,    -1,    -1,    -1,   129,   130,   131,    -1,    -1,    -1,
03958       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03959       -1,    -1,    -1,    -1,    -1,    -1,    -1,   152,     3,     4,
03960        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
03961       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
03962       25,    26,    -1,    -1,    -1,    30,    31,    32,    33,    34,
03963       35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
03964       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
03965       55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03966       -1,    -1,    -1,    -1,    69,    70,    71,    72,    73,    74,
03967       75,    76,    77,    -1,    -1,    80,    81,    -1,    -1,    84,
03968       85,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03969       -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
03970       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03971       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
03972      125,   126,   127,   128,    -1,   130,   131,    -1,    -1,     3,
03973        4,     5,     6,     7,     8,     9,    10,    11,    -1,    -1,
03974       -1,    -1,    -1,   148,   149,    19,    -1,    21,    22,    23,
03975       24,    -1,    26,    -1,    -1,    -1,    30,    31,    32,    33,
03976       34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
03977       -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,
03978       54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
03979       -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,
03980       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03981       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,
03982       -1,    95,    96,    -1,    98,    99,   100,   101,   102,   103,
03983      104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,
03984       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03985       -1,    -1,    -1,    -1,    -1,   129,   130,   131,     3,     4,
03986        5,     6,     7,     8,     9,    10,    11,    -1,    -1,   143,
03987       -1,    -1,    -1,    -1,    19,   149,    21,    22,    23,    24,
03988       -1,    26,    -1,    -1,    -1,    30,    31,    32,    33,    34,
03989       35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
03990       -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,    54,
03991       55,    56,    57,    58,    59,    60,    -1,    -1,    63,    -1,
03992       -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,
03993       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03994       -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,
03995       95,    96,    -1,    98,    99,   100,   101,   102,   103,   104,
03996      105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
03997       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
03998       -1,    -1,    -1,    -1,   129,   130,   131,     3,     4,     5,
03999        6,     7,     8,     9,    10,    11,    -1,    -1,   143,    -1,
04000       -1,    -1,    -1,    19,   149,    21,    22,    23,    24,    -1,
04001       -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
04002       36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
04003       -1,    -1,    48,    49,    -1,    51,    52,    53,    54,    55,
04004       56,    57,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
04005       66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,
04006       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04007       -1,    -1,    -1,    89,    90,    -1,    92,    93,    -1,    95,
04008       96,    -1,    98,    99,   100,   101,   102,   103,   104,   105,
04009      106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
04010      116,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04011       -1,    -1,    -1,   129,   130,   131,     3,     4,     5,     6,
04012        7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
04013       -1,    -1,    19,   149,    21,    22,    23,    24,    -1,    -1,
04014       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
04015       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04016       -1,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
04017       57,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
04018       67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
04019       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04020       -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,
04021       -1,    98,    99,   100,   101,   102,   103,   104,   105,   106,
04022       -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04023       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04024       -1,    -1,   129,   130,   131,     3,     4,     5,     6,     7,
04025        8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
04026       -1,    19,   149,    21,    22,    23,    24,    -1,    -1,    -1,
04027       -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
04028       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04029       48,    49,    -1,    51,    52,    53,    54,    55,    56,    57,
04030       58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
04031       -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04032       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04033       -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,
04034       98,    99,   100,   101,   102,   103,   104,   105,   106,    -1,
04035       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04036       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04037       -1,   129,   130,   131,    -1,    -1,    -1,    -1,    -1,    -1,
04038       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04039       -1,   149,     3,     4,     5,     6,     7,     8,     9,    10,
04040       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
04041       21,    22,    23,    24,    25,    26,    -1,    -1,    -1,    30,
04042       31,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
04043       -1,    -1,    -1,    -1,    45,    46,    47,    48,    49,    50,
04044       51,    52,    53,    54,    55,    56,    -1,    -1,    -1,    -1,
04045       -1,    -1,    63,    -1,    -1,    -1,    -1,    -1,    69,    70,
04046       71,    72,    73,    74,    75,    76,    77,    -1,    -1,    80,
04047       81,    -1,    -1,    84,    85,    86,    87,    -1,    -1,    -1,
04048       -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,
04049       -1,    -1,    -1,    -1,   105,    -1,    -1,    -1,    -1,    -1,
04050       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,
04051      121,   122,   123,   124,   125,   126,   127,   128,    -1,   130,
04052      131,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04053       -1,    -1,    -1,    -1,    -1,    -1,    -1,   148,     3,     4,
04054        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
04055       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
04056       25,    26,    -1,    -1,    -1,    30,    31,    32,    33,    34,
04057       35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
04058       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
04059       55,    56,    -1,    -1,    -1,    -1,    -1,    -1,    63,    -1,
04060       -1,    -1,    -1,    -1,    69,    70,    71,    72,    73,    74,
04061       75,    76,    77,    -1,    -1,    80,    81,    -1,    -1,    84,
04062       85,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04063       -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
04064      105,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04065       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
04066      125,   126,   127,   128,    -1,   130,   131,    -1,    -1,    -1,
04067       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04068       -1,    -1,    -1,   148,     3,     4,     5,     6,     7,     8,
04069        9,    10,    11,    12,    13,    14,    15,    16,    17,    18,
04070       19,    20,    21,    22,    23,    24,    25,    26,    -1,    -1,
04071       -1,    30,    31,    32,    33,    34,    35,    36,    37,    38,
04072       39,    -1,    -1,    -1,    -1,    -1,    45,    46,    47,    48,
04073       49,    50,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
04074       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04075       69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
04076       -1,    80,    81,    -1,    -1,    84,    85,    86,    87,    -1,
04077       -1,    71,    72,    73,    74,    75,    76,    77,    -1,    98,
04078       80,    81,   101,    -1,    -1,    -1,    86,    87,    -1,    -1,
04079       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04080      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
04081       -1,   130,   131,    -1,    -1,    -1,    -1,    -1,    -1,   119,
04082      120,   121,   122,   123,   124,   125,   126,   127,   128,   148,
04083        3,     4,     5,     6,     7,     8,     9,    10,    11,    12,
04084       13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
04085       23,    24,    25,    26,    -1,    -1,    -1,    30,    31,    32,
04086       33,    34,    35,    36,    37,    38,    39,    -1,    -1,    -1,
04087       -1,    -1,    45,    46,    47,    48,    49,    50,    51,    52,
04088       -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04089       -1,    -1,    -1,    -1,    -1,    -1,    69,    70,    71,    72,
04090       73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
04091       -1,    84,    85,    86,    87,    -1,    -1,    -1,    -1,    -1,
04092       -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,
04093       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04094       -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
04095      123,   124,   125,   126,   127,   128,    -1,   130,   131,    -1,
04096        3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
04097       -1,    -1,    -1,    -1,    -1,   148,    19,    -1,    21,    22,
04098       23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
04099       33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
04100       -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,
04101       53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
04102       63,    -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    -1,
04103       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04104       -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
04105       93,    -1,    95,    96,    -1,    -1,    -1,   100,   101,   102,
04106      103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,     3,
04107        4,     5,     6,     7,     8,     9,    10,    11,    -1,    -1,
04108       -1,    -1,    -1,    -1,    -1,    19,   129,    21,    22,    23,
04109       24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
04110       34,    35,    36,    -1,   147,    39,    -1,    -1,    -1,    -1,
04111       -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,
04112       54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
04113       -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
04114       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04115       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,
04116       -1,    95,    96,    -1,    -1,    -1,   100,   101,   102,   103,
04117      104,   105,   106,    -1,    -1,   109,    -1,    -1,     3,     4,
04118        5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
04119       -1,    -1,    -1,    -1,    19,   129,    21,    22,    23,    24,
04120       -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
04121       35,    36,    -1,   147,    39,    -1,    -1,    -1,    -1,    -1,
04122       -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,    54,
04123       55,    56,    57,    58,    59,    60,    -1,    -1,    63,    -1,
04124       -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,
04125       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04126       -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,
04127       95,    96,    -1,    98,    99,   100,   101,   102,   103,   104,
04128      105,   106,    -1,    -1,   109,   110,    -1,    -1,   113,   114,
04129       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
04130       12,    -1,    -1,    -1,   129,   130,   131,    19,    -1,    21,
04131       22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
04132       32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
04133       -1,    -1,    -1,    45,    46,    47,    48,    49,    -1,    51,
04134       52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
04135       -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,
04136       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04137       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
04138       92,    93,    -1,    95,    96,    -1,    98,    -1,   100,   101,
04139      102,   103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,
04140       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
04141        9,    10,    11,    -1,    -1,    -1,    -1,   129,   130,   131,
04142       19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
04143       -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
04144       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
04145       49,    -1,    51,    52,    53,    54,    55,    56,    57,    58,
04146       59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
04147       69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04148       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04149       89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,    98,
04150       -1,   100,   101,   102,   103,   104,   105,   106,    -1,    -1,
04151      109,   110,    -1,    -1,   113,   114,    -1,     3,     4,     5,
04152        6,     7,     8,     9,    10,    11,    12,    -1,    -1,    -1,
04153      129,   130,   131,    19,    -1,    21,    22,    23,    24,    -1,
04154       -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
04155       36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    45,
04156       -1,    47,    48,    49,    -1,    51,    52,    53,    54,    55,
04157       56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
04158       66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,
04159       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04160       -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,
04161       96,    -1,    98,    -1,   100,   101,   102,   103,   104,   105,
04162      106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
04163        3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
04164       -1,    -1,    -1,   129,   130,   131,    19,    -1,    21,    22,
04165       23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
04166       33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
04167       -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,
04168       53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
04169       63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,
04170       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04171       -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
04172       93,    -1,    95,    96,    -1,    98,    -1,   100,   101,   102,
04173      103,   104,   105,   106,    -1,    -1,   109,   110,    -1,    -1,
04174      113,   114,    -1,     3,     4,     5,     6,     7,     8,     9,
04175       10,    11,    -1,    -1,    -1,    -1,   129,   130,   131,    19,
04176       -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
04177       30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
04178       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,
04179       -1,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
04180       60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
04181       70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04182       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
04183       -1,    -1,    92,    93,    -1,    95,    96,    -1,    98,    -1,
04184      100,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
04185      110,    -1,    -1,   113,   114,    -1,     3,     4,     5,     6,
04186        7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   129,
04187      130,   131,    19,    -1,    21,    22,    23,    24,    -1,    -1,
04188       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
04189       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04190       -1,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
04191       -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
04192       67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
04193       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04194       -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,
04195       -1,    98,    -1,   100,   101,   102,   103,   104,   105,   106,
04196       -1,    -1,   109,   110,    -1,    -1,   113,   114,    -1,     3,
04197        4,     5,     6,     7,     8,     9,    10,    11,    -1,    -1,
04198       -1,    -1,   129,   130,   131,    19,    -1,    21,    22,    23,
04199       24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
04200       34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
04201       -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,
04202       54,    55,    56,    57,    58,    59,    60,    -1,    -1,    63,
04203       -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,
04204       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04205       -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,
04206       -1,    95,    96,    -1,    98,    99,   100,   101,   102,   103,
04207      104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,
04208       -1,    -1,     3,     4,     5,     6,     7,     8,     9,    10,
04209       11,    -1,    -1,    -1,    -1,   129,   130,   131,    19,    -1,
04210       21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,
04211       31,    32,    33,    34,    35,    36,    -1,    -1,    39,    -1,
04212       -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    -1,
04213       51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
04214       -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,
04215       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04216       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,
04217       -1,    92,    93,    -1,    95,    96,    -1,    98,    -1,   100,
04218      101,   102,   103,   104,   105,   106,    -1,    -1,   109,    -1,
04219       -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,
04220        8,     9,    10,    11,    -1,    -1,    -1,    -1,   129,   130,
04221      131,    19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,
04222       -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
04223       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04224       48,    49,    -1,    51,    52,    53,    54,    55,    56,    57,
04225       58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
04226       -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04227       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04228       -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,
04229       -1,    99,   100,   101,   102,   103,   104,   105,   106,    -1,
04230       -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,
04231        5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
04232       -1,   129,   130,   131,    19,    -1,    21,    22,    23,    24,
04233       -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
04234       35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
04235       -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,    54,
04236       55,    56,    57,    58,    59,    60,    -1,    -1,    63,    -1,
04237       -1,    66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,
04238       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04239       -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,
04240       95,    96,    -1,    -1,    -1,   100,   101,   102,   103,   104,
04241      105,   106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,
04242       -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
04243       -1,    -1,    -1,    -1,   129,   130,   131,    19,    -1,    21,
04244       22,    23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,
04245       32,    33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,
04246       -1,    -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    51,
04247       52,    53,    54,    55,    56,    -1,    58,    59,    60,    -1,
04248       -1,    63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,
04249       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04250       -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,
04251       92,    93,    -1,    95,    96,    -1,    98,    -1,   100,   101,
04252      102,   103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,
04253       -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
04254        9,    10,    11,    -1,    -1,    -1,    -1,   129,   130,   131,
04255       19,    -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
04256       -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
04257       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
04258       49,    -1,    51,    52,    53,    54,    55,    56,    -1,    58,
04259       59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
04260       69,    70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04261       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04262       89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,    98,
04263       -1,   100,   101,   102,   103,   104,   105,   106,    -1,    -1,
04264      109,    -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,
04265        6,     7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,
04266      129,   130,   131,    19,    -1,    21,    22,    23,    24,    -1,
04267       -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
04268       36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
04269       -1,    -1,    48,    49,    -1,    51,    52,    53,    54,    55,
04270       56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
04271       66,    67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,
04272       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04273       -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,
04274       96,    -1,    98,    -1,   100,   101,   102,   103,   104,   105,
04275      106,    -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,
04276        3,     4,     5,     6,     7,     8,     9,    10,    11,    -1,
04277       -1,    -1,    -1,   129,   130,   131,    19,    -1,    21,    22,
04278       23,    24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,
04279       33,    34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,
04280       -1,    -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,
04281       53,    54,    55,    56,    -1,    58,    59,    60,    -1,    -1,
04282       63,    -1,    -1,    66,    67,    -1,    69,    70,    -1,    -1,
04283       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04284       -1,    -1,    -1,    -1,    -1,    -1,    89,    -1,    -1,    92,
04285       93,    -1,    95,    96,    -1,    -1,    -1,   100,   101,   102,
04286      103,   104,   105,   106,    -1,    -1,   109,    -1,    -1,    -1,
04287       -1,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
04288       10,    11,    -1,    -1,    -1,    -1,   129,   130,   131,    19,
04289       -1,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
04290       30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
04291       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,
04292       -1,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
04293       60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    69,
04294       70,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04295       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    89,
04296       -1,    -1,    92,    93,    -1,    95,    96,    -1,    -1,    -1,
04297      100,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
04298       -1,    -1,    -1,    -1,    -1,    -1,     3,     4,     5,     6,
04299        7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,   129,
04300      130,   131,    19,    -1,    21,    22,    23,    24,    -1,    -1,
04301       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
04302       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04303       -1,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
04304       -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
04305       67,    -1,    69,    70,    -1,    -1,    -1,    -1,    -1,    -1,
04306       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04307       -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,
04308       -1,    -1,    -1,   100,   101,   102,   103,   104,   105,   106,
04309       -1,    -1,   109,    -1,    -1,    -1,    -1,    -1,    -1,     3,
04310        4,     5,     6,     7,     8,     9,    10,    11,    -1,    -1,
04311       -1,    -1,   129,   130,   131,    19,    -1,    21,    22,    23,
04312       24,    -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,
04313       34,    35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,
04314       -1,    -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,
04315       54,    55,    56,    -1,    58,    59,    60,    -1,    -1,    63,
04316       -1,    -1,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,
04317       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04318       -1,    -1,    86,    -1,    -1,    89,    -1,    -1,    92,    93,
04319       -1,    95,    96,    -1,    -1,    -1,   100,   101,   102,   103,
04320      104,   105,   106,    -1,    -1,   109,    -1,    -1,     3,     4,
04321        5,     6,     7,     8,     9,    10,    11,    -1,    -1,    -1,
04322       -1,    -1,    -1,    -1,    19,   129,    21,    22,    23,    24,
04323       -1,    -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,
04324       35,    36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,
04325       -1,    -1,    -1,    48,    49,    -1,    51,    52,    53,    54,
04326       55,    56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,
04327       -1,    66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04328       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04329       -1,    -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,
04330       95,    96,    -1,    98,    -1,   100,   101,   102,   103,   104,
04331      105,   106,    -1,    -1,   109,    -1,    -1,     3,     4,     5,
04332        6,     7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,
04333       -1,    -1,    -1,    19,   129,    21,    22,    23,    24,    -1,
04334       -1,    -1,    -1,    -1,    30,    31,    32,    33,    34,    35,
04335       36,    -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
04336       -1,    -1,    48,    49,    -1,    51,    52,    53,    54,    55,
04337       56,    -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,
04338       66,    67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04339       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04340       -1,    -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,
04341       96,    -1,    98,    -1,   100,   101,   102,   103,   104,   105,
04342      106,    -1,    -1,   109,    -1,    -1,     3,     4,     5,     6,
04343        7,     8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,
04344       -1,    -1,    19,   129,    21,    22,    23,    24,    -1,    -1,
04345       -1,    -1,    -1,    30,    31,    32,    33,    34,    35,    36,
04346       -1,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04347       -1,    48,    49,    -1,    51,    52,    53,    54,    55,    56,
04348       -1,    58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,
04349       67,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04350       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04351       -1,    -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,
04352       -1,    -1,    -1,   100,   101,   102,   103,   104,   105,   106,
04353       -1,    -1,   109,    -1,    -1,     3,     4,     5,     6,     7,
04354        8,     9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
04355       -1,    19,   129,    21,    22,    23,    24,    -1,    -1,    -1,
04356       -1,    -1,    30,    31,    32,    33,    34,    35,    36,    -1,
04357       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04358       48,    49,    -1,    51,    52,    53,    54,    55,    56,    -1,
04359       58,    59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,
04360       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04361       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04362       -1,    89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,
04363       -1,    -1,   100,   101,   102,   103,   104,   105,   106,    -1,
04364       -1,   109,    -1,    -1,     3,     4,     5,     6,     7,     8,
04365        9,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04366       19,   129,    21,    22,    23,    24,    -1,    -1,    -1,    -1,
04367       -1,    30,    31,    32,    33,    34,    35,    36,    -1,    -1,
04368       39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,
04369       49,    -1,    51,    52,    53,    54,    55,    56,    -1,    58,
04370       59,    60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,
04371       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04372       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04373       89,    -1,    -1,    92,    93,    -1,    95,    96,    -1,    -1,
04374       -1,   100,   101,   102,   103,   104,   105,   106,    -1,    -1,
04375      109,    -1,    -1,     3,     4,     5,     6,     7,     8,     9,
04376       10,    11,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    19,
04377      129,    21,    22,    23,    24,    -1,    -1,    -1,    -1,    -1,
04378       30,    31,    32,    33,    34,    35,    36,    -1,    -1,    39,
04379       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    48,    49,
04380       -1,    51,    52,    53,    54,    55,    56,    -1,    58,    59,
04381       60,    -1,    -1,    63,    -1,    -1,    66,    67,    -1,    71,
04382       72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
04383       82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    89,
04384       -1,    -1,    92,    93,    -1,    95,    96,    -1,    -1,    -1,
04385      100,   101,   102,   103,   104,   105,   106,    -1,    -1,   109,
04386       -1,    -1,    51,    52,    -1,    -1,    55,   119,   120,   121,
04387      122,   123,   124,   125,   126,   127,   128,    -1,    -1,   129,
04388       69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
04389       -1,    80,    81,    -1,    -1,    84,    85,    86,    87,    -1,
04390       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,
04391       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04392       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04393      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
04394       -1,   130,   131,    51,    52,    -1,    -1,    55,    -1,    -1,
04395       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   148,
04396      149,    69,    70,    71,    72,    73,    74,    75,    76,    77,
04397       -1,    -1,    80,    81,    -1,    -1,    84,    85,    86,    87,
04398       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04399       98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04400       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04401       -1,   119,   120,   121,   122,   123,   124,   125,   126,   127,
04402      128,    -1,   130,   131,    51,    52,    -1,    -1,    55,    -1,
04403       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04404      148,   149,    69,    70,    71,    72,    73,    74,    75,    76,
04405       77,    -1,    -1,    80,    81,    -1,    -1,    84,    85,    86,
04406       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04407       -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04408       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04409       -1,    -1,   119,   120,   121,   122,   123,   124,   125,   126,
04410      127,   128,    -1,   130,   131,    51,    52,    -1,    -1,    55,
04411       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04412       -1,   148,   149,    69,    70,    71,    72,    73,    74,    75,
04413       76,    77,    -1,    -1,    80,    81,    -1,    -1,    84,    85,
04414       86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04415       -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04416       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04417       -1,    -1,    -1,   119,   120,   121,   122,   123,   124,   125,
04418      126,   127,   128,    -1,   130,   131,    51,    52,    -1,    -1,
04419       55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04420       -1,    -1,   148,   149,    69,    70,    71,    72,    73,    74,
04421       75,    76,    77,    -1,    -1,    80,    81,    -1,    -1,    84,
04422       85,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04423       -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,
04424       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04425       -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,   124,
04426      125,   126,   127,   128,    -1,   130,   131,    51,    52,    -1,
04427       -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04428       -1,    -1,    -1,   148,   149,    69,    70,    71,    72,    73,
04429       74,    75,    76,    77,    -1,    -1,    80,    81,    -1,    -1,
04430       84,    85,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
04431       -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,    -1,
04432       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04433       -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,   123,
04434      124,   125,   126,   127,   128,    -1,   130,   131,    51,    52,
04435       -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04436       -1,    -1,    -1,    -1,   148,   149,    69,    70,    71,    72,
04437       73,    74,    75,    76,    77,    -1,    -1,    80,    81,    -1,
04438       -1,    84,    85,    86,    87,    -1,    -1,    -1,    -1,    -1,
04439       -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,    -1,
04440       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04441       -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,   122,
04442      123,   124,   125,   126,   127,   128,    -1,   130,   131,    51,
04443       52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,    -1,
04444       -1,    -1,    -1,    -1,    -1,   148,   149,    69,    70,    71,
04445       72,    73,    74,    75,    76,    77,    -1,    -1,    80,    81,
04446       -1,    -1,    84,    85,    86,    87,    -1,    -1,    -1,    -1,
04447       -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,    -1,
04448       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04449       -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,   121,
04450      122,   123,   124,   125,   126,   127,   128,    -1,   130,   131,
04451       51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,    -1,
04452       -1,    -1,    -1,    -1,    -1,    -1,   148,   149,    69,    70,
04453       71,    72,    73,    74,    75,    76,    77,    -1,    -1,    80,
04454       81,    -1,    -1,    84,    85,    86,    87,    -1,    -1,    -1,
04455       -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,    -1,
04456       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04457       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,   120,
04458      121,   122,   123,   124,   125,   126,   127,   128,    -1,   130,
04459      131,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,    -1,
04460       -1,    -1,    -1,    -1,    -1,    -1,    -1,   148,   149,    69,
04461       70,    71,    72,    73,    74,    75,    76,    77,    -1,    -1,
04462       80,    81,    -1,    -1,    84,    85,    86,    87,    -1,    -1,
04463       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,    -1,
04464       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04465       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   119,
04466      120,   121,   122,   123,   124,   125,   126,   127,   128,    -1,
04467      130,   131,    51,    52,    -1,    -1,    55,    -1,    -1,    -1,
04468       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   148,   149,
04469       69,    70,    71,    72,    73,    74,    75,    76,    77,    -1,
04470       -1,    80,    81,    -1,    -1,    84,    85,    86,    87,    -1,
04471       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    98,
04472       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04473       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04474      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
04475       -1,   130,   131,    51,    52,    -1,    -1,    55,    -1,    -1,
04476       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   148,
04477      149,    69,    70,    71,    72,    73,    74,    75,    76,    77,
04478       -1,    -1,    80,    81,    -1,    -1,    84,    85,    86,    87,
04479       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04480       98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04481       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04482       -1,   119,   120,   121,   122,   123,   124,   125,   126,   127,
04483      128,    -1,   130,   131,    51,    52,    -1,    -1,    55,    -1,
04484       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04485      148,   149,    69,    70,    71,    72,    73,    74,    75,    76,
04486       77,    -1,    -1,    80,    81,    -1,    -1,    84,    85,    86,
04487       87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04488       -1,    98,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04489       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04490       -1,    -1,   119,   120,   121,   122,   123,   124,   125,   126,
04491      127,   128,    -1,   130,   131,    -1,    -1,    -1,    -1,    -1,
04492       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
04493       -1,   148
04494 };
04495 
04496 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
04497    symbol of state STATE-NUM.  */
04498 static const yytype_uint16 yystos[] =
04499 {
04500        0,   155,   156,     0,     1,     3,     4,     5,     6,     7,
04501        8,     9,    10,    11,    12,    19,    21,    22,    23,    24,
04502       30,    31,    32,    33,    34,    35,    36,    39,    45,    46,
04503       47,    48,    49,    51,    52,    53,    54,    55,    56,    58,
04504       59,    60,    63,    66,    67,    69,    70,    89,    92,    93,
04505       95,    96,    98,   100,   101,   102,   103,   104,   105,   106,
04506      109,   129,   130,   131,   157,   158,   159,   164,   166,   167,
04507      169,   170,   173,   174,   176,   177,   178,   180,   181,   190,
04508      203,   223,   242,   243,   253,   254,   258,   259,   260,   267,
04509      268,   269,   271,   272,   273,   274,   275,   276,   300,   313,
04510      159,    21,    22,    30,    31,    32,    39,    51,    55,    86,
04511       89,    92,   129,   182,   183,   203,   223,   273,   276,   300,
04512      183,     3,     4,     5,     6,     7,     8,     9,    10,    11,
04513       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
04514       22,    23,    24,    25,    26,    30,    31,    32,    33,    34,
04515       35,    36,    37,    38,    39,    45,    46,    47,    48,    49,
04516       50,    51,    52,    55,    69,    70,    71,    72,    73,    74,
04517       75,    76,    77,    80,    81,    84,    85,    86,    87,    98,
04518      119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
04519      130,   131,   148,   149,   184,   188,   189,   275,   295,   204,
04520       89,   167,   168,   181,   223,   273,   274,   276,   168,   209,
04521      211,    89,   174,   181,   223,   228,   273,   276,    33,    34,
04522       35,    36,    48,    49,    51,    55,   101,   184,   185,   186,
04523      269,   152,   153,   168,   304,   309,   310,   312,    57,    98,
04524       99,   130,   173,   190,   191,   196,   199,   201,   298,   299,
04525      196,   196,   149,   197,   198,   149,   193,   197,   149,   305,
04526      310,   185,   160,   143,   190,   223,   190,    55,     1,    92,
04527      162,   163,   164,   175,   176,   313,   205,   207,   192,   201,
04528      298,   313,   191,   297,   298,   313,    89,   147,   180,   223,
04529      273,   276,   208,    53,    54,    56,    63,   105,   184,   270,
04530       62,    64,    65,   111,   112,   255,   256,    63,   255,    63,
04531      255,    63,   255,    61,   255,    58,    59,   169,   190,   190,
04532      304,   312,    40,    41,    42,    43,    44,    37,    38,    28,
04533      240,   116,   147,    92,    98,   177,   116,    71,    72,    73,
04534       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
04535       86,    87,   117,   119,   120,   121,   122,   123,   124,   125,
04536      126,   127,   128,    88,   145,   146,    88,   146,   303,    26,
04537      143,   244,    90,    90,   193,   197,   244,   167,    51,    55,
04538      182,    58,    59,     1,   120,   277,   309,    88,   145,   146,
04539      218,   296,   219,   303,   161,   162,    55,    16,   224,   309,
04540      116,    88,   145,   146,    90,    90,   224,   168,   168,    55,
04541       88,   145,   146,    25,   105,   147,   311,   304,    20,   247,
04542      152,   191,   191,   191,    91,   147,   200,   313,   147,   200,
04543      196,   305,   306,   196,   195,   196,   201,   298,   313,   167,
04544      306,   167,   165,   143,   162,    88,   146,    90,   164,   175,
04545      150,   304,   312,   306,   167,   306,   151,   147,   308,   310,
04546      147,   308,   144,   308,    55,   177,   178,   179,   147,    88,
04547      145,   146,    51,    53,    54,    55,    56,    92,    98,    99,
04548      123,   126,   149,   238,   280,   281,   282,   283,   284,   285,
04549      286,   289,   290,   291,   292,   293,    63,   256,   257,   110,
04550      113,   114,   262,   263,   264,   265,    62,   256,    63,    63,
04551       63,    61,    71,    71,   159,   168,   168,   168,   168,   164,
04552      167,   167,   241,    98,   169,   191,   201,   202,   175,   147,
04553      180,   147,   166,   169,   181,   190,   191,   202,   190,   190,
04554      190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
04555      190,   190,   190,   190,   190,   190,   190,   190,   190,   190,
04556      190,   190,   190,   190,    51,    52,    55,   188,   193,   301,
04557      302,   195,    51,    52,    55,   188,   193,   301,    51,    55,
04558      301,   246,   245,   169,   190,   169,   190,    97,   171,   216,
04559      309,   278,   215,    51,    55,   182,   301,   195,   301,   161,
04560      167,   220,   221,    15,    13,   249,   313,   162,    16,   190,
04561       51,    55,   195,    51,    55,   162,    27,   225,   309,   225,
04562       51,    55,   195,    51,    55,   213,   187,   261,   262,   247,
04563      201,    15,   191,    98,   191,   199,   262,   298,   299,   306,
04564      150,   306,   147,   147,   306,   185,   157,   144,   190,   306,
04565      164,   206,   298,   177,   179,    51,    55,   195,    51,    55,
04566      116,    51,    92,    98,   229,   230,   231,   282,   280,    29,
04567      108,   239,   147,   294,   313,   191,   147,   294,    51,   147,
04568      294,    51,    63,   162,   266,   263,   110,   265,   190,   190,
04569       79,   121,   233,   234,   313,   191,   147,   306,   179,   147,
04570      116,    44,   305,    90,    90,   193,   197,   305,   307,    90,
04571       90,   193,   194,   197,   313,   194,   197,   233,   233,    44,
04572      172,   309,   168,   161,   307,    15,   306,   149,   279,   280,
04573      184,   191,   202,   250,   313,    18,   227,   313,    17,   226,
04574      227,    90,    90,   307,    90,    90,   227,   210,   212,   307,
04575      168,   185,    15,   147,   224,   191,    98,   191,   200,   298,
04576      144,   306,   308,   307,   231,   147,   282,   147,   306,   235,
04577      305,   162,   162,   283,   289,   291,   293,   284,   286,   291,
04578      284,   144,   162,   232,   235,   284,   285,   287,   288,   291,
04579      293,   162,    98,   191,   179,   190,   118,   169,   190,   169,
04580      190,   171,   151,    90,   169,   190,   169,   190,   171,   244,
04581      240,   162,   162,   190,   233,   217,   309,    15,   280,   161,
04582      309,   222,    91,   251,   313,   162,    14,   252,   313,   168,
04583       15,    90,    15,   162,   162,   225,   191,   162,   191,   147,
04584      306,   230,   147,    98,   229,   150,   152,    15,   144,   147,
04585      294,   147,   294,   147,   294,   147,   294,   294,   144,   235,
04586      121,   147,   294,    89,   223,   147,   294,   147,   294,    15,
04587      191,   190,   169,   190,    15,   144,   162,   161,   306,    15,
04588      279,    89,   181,   223,   273,   276,   224,   162,   224,    15,
04589       15,   214,   227,   247,   248,   147,   230,   147,   282,    51,
04590      236,   237,   281,   284,   291,   284,   284,   121,   288,   291,
04591       55,    88,   284,   287,   291,   284,   144,    15,   161,    55,
04592       88,   145,   146,   162,   162,   162,   230,   147,   147,   305,
04593      294,   147,   294,   294,   294,   147,   294,   147,   294,    51,
04594       55,   294,   147,   294,   294,    15,    51,    55,   195,    51,
04595       55,   249,   226,    15,   230,   237,   284,   284,   291,   284,
04596      284,   307,   294,   294,   147,   294,   294,   294,   284,   294
04597 };
04598 
04599 #define yyerrok     (yyerrstatus = 0)
04600 #define yyclearin   (yychar = YYEMPTY)
04601 #define YYEMPTY     (-2)
04602 #define YYEOF       0
04603 
04604 #define YYACCEPT    goto yyacceptlab
04605 #define YYABORT     goto yyabortlab
04606 #define YYERROR     goto yyerrorlab
04607 
04608 
04609 /* Like YYERROR except do call yyerror.  This remains here temporarily
04610    to ease the transition to the new meaning of YYERROR, for GCC.
04611    Once GCC version 2 has supplanted version 1, this can go.  However,
04612    YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
04613    in Bison 2.4.2's NEWS entry, where a plan to phase it out is
04614    discussed.  */
04615 
04616 #define YYFAIL      goto yyerrlab
04617 #if defined YYFAIL
04618   /* This is here to suppress warnings from the GCC cpp's
04619      -Wunused-macros.  Normally we don't worry about that warning, but
04620      some users do, and we want to make it easy for users to remove
04621      YYFAIL uses, which will produce warnings from Bison 2.5.  */
04622 #endif
04623 
04624 #define YYRECOVERING()  (!!yyerrstatus)
04625 
04626 #define YYBACKUP(Token, Value)                  \
04627 do                              \
04628   if (yychar == YYEMPTY && yylen == 1)              \
04629     {                               \
04630       yychar = (Token);                     \
04631       yylval = (Value);                     \
04632       yytoken = YYTRANSLATE (yychar);               \
04633       YYPOPSTACK (1);                       \
04634       goto yybackup;                        \
04635     }                               \
04636   else                              \
04637     {                               \
04638       yyerror (p, YY_("syntax error: cannot back up")); \
04639       YYERROR;                          \
04640     }                               \
04641 while (YYID (0))
04642 
04643 
04644 #define YYTERROR    1
04645 #define YYERRCODE   256
04646 
04647 
04648 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
04649    If N is 0, then set CURRENT to the empty location which ends
04650    the previous symbol: RHS[0] (always defined).  */
04651 
04652 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
04653 #ifndef YYLLOC_DEFAULT
04654 # define YYLLOC_DEFAULT(Current, Rhs, N)                \
04655     do                                  \
04656       if (YYID (N))                                                    \
04657     {                               \
04658       (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;    \
04659       (Current).first_column = YYRHSLOC (Rhs, 1).first_column;  \
04660       (Current).last_line    = YYRHSLOC (Rhs, N).last_line;     \
04661       (Current).last_column  = YYRHSLOC (Rhs, N).last_column;   \
04662     }                               \
04663       else                              \
04664     {                               \
04665       (Current).first_line   = (Current).last_line   =      \
04666         YYRHSLOC (Rhs, 0).last_line;                \
04667       (Current).first_column = (Current).last_column =      \
04668         YYRHSLOC (Rhs, 0).last_column;              \
04669     }                               \
04670     while (YYID (0))
04671 #endif
04672 
04673 
04674 /* YY_LOCATION_PRINT -- Print the location on the stream.
04675    This macro was not mandated originally: define only if we know
04676    we won't break user code: when these are the locations we know.  */
04677 
04678 #ifndef YY_LOCATION_PRINT
04679 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
04680 #  define YY_LOCATION_PRINT(File, Loc)          \
04681      fprintf (File, "%d.%d-%d.%d",          \
04682           (Loc).first_line, (Loc).first_column, \
04683           (Loc).last_line,  (Loc).last_column)
04684 # else
04685 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
04686 # endif
04687 #endif
04688 
04689 
04690 /* YYLEX -- calling `yylex' with the right arguments.  */
04691 
04692 #ifdef YYLEX_PARAM
04693 # define YYLEX yylex (&yylval, YYLEX_PARAM)
04694 #else
04695 # define YYLEX yylex (&yylval, p)
04696 #endif
04697 
04698 /* Enable debugging if requested.  */
04699 #if YYDEBUG
04700 
04701 # ifndef YYFPRINTF
04702 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
04703 #  define YYFPRINTF fprintf
04704 # endif
04705 
04706 # define YYDPRINTF(Args)            \
04707 do {                        \
04708   if (yydebug)                  \
04709     YYFPRINTF Args;             \
04710 } while (YYID (0))
04711 
04712 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)            \
04713 do {                                      \
04714   if (yydebug)                                \
04715     {                                     \
04716       YYFPRINTF (stderr, "%s ", Title);                   \
04717       yy_symbol_print (stderr,                        \
04718           Type, Value, p); \
04719       YYFPRINTF (stderr, "\n");                       \
04720     }                                     \
04721 } while (YYID (0))
04722 
04723 
04724 /*--------------------------------.
04725 | Print this symbol on YYOUTPUT.  |
04726 `--------------------------------*/
04727 
04728 /*ARGSUSED*/
04729 #if (defined __STDC__ || defined __C99__FUNC__ \
04730      || defined __cplusplus || defined _MSC_VER)
04731 static void
04732 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_state *p)
04733 #else
04734 static void
04735 yy_symbol_value_print (yyoutput, yytype, yyvaluep, p)
04736     FILE *yyoutput;
04737     int yytype;
04738     YYSTYPE const * const yyvaluep;
04739     parser_state *p;
04740 #endif
04741 {
04742   if (!yyvaluep)
04743     return;
04744   YYUSE (p);
04745 # ifdef YYPRINT
04746   if (yytype < YYNTOKENS)
04747     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
04748 # else
04749   YYUSE (yyoutput);
04750 # endif
04751   switch (yytype)
04752     {
04753       default:
04754     break;
04755     }
04756 }
04757 
04758 
04759 /*--------------------------------.
04760 | Print this symbol on YYOUTPUT.  |
04761 `--------------------------------*/
04762 
04763 #if (defined __STDC__ || defined __C99__FUNC__ \
04764      || defined __cplusplus || defined _MSC_VER)
04765 static void
04766 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, parser_state *p)
04767 #else
04768 static void
04769 yy_symbol_print (yyoutput, yytype, yyvaluep, p)
04770     FILE *yyoutput;
04771     int yytype;
04772     YYSTYPE const * const yyvaluep;
04773     parser_state *p;
04774 #endif
04775 {
04776   if (yytype < YYNTOKENS)
04777     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
04778   else
04779     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
04780 
04781   yy_symbol_value_print (yyoutput, yytype, yyvaluep, p);
04782   YYFPRINTF (yyoutput, ")");
04783 }
04784 
04785 /*------------------------------------------------------------------.
04786 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
04787 | TOP (included).                                                   |
04788 `------------------------------------------------------------------*/
04789 
04790 #if (defined __STDC__ || defined __C99__FUNC__ \
04791      || defined __cplusplus || defined _MSC_VER)
04792 static void
04793 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
04794 #else
04795 static void
04796 yy_stack_print (yybottom, yytop)
04797     yytype_int16 *yybottom;
04798     yytype_int16 *yytop;
04799 #endif
04800 {
04801   YYFPRINTF (stderr, "Stack now");
04802   for (; yybottom <= yytop; yybottom++)
04803     {
04804       int yybot = *yybottom;
04805       YYFPRINTF (stderr, " %d", yybot);
04806     }
04807   YYFPRINTF (stderr, "\n");
04808 }
04809 
04810 # define YY_STACK_PRINT(Bottom, Top)                \
04811 do {                                \
04812   if (yydebug)                          \
04813     yy_stack_print ((Bottom), (Top));               \
04814 } while (YYID (0))
04815 
04816 
04817 /*------------------------------------------------.
04818 | Report that the YYRULE is going to be reduced.  |
04819 `------------------------------------------------*/
04820 
04821 #if (defined __STDC__ || defined __C99__FUNC__ \
04822      || defined __cplusplus || defined _MSC_VER)
04823 static void
04824 yy_reduce_print (YYSTYPE *yyvsp, int yyrule, parser_state *p)
04825 #else
04826 static void
04827 yy_reduce_print (yyvsp, yyrule, p)
04828     YYSTYPE *yyvsp;
04829     int yyrule;
04830     parser_state *p;
04831 #endif
04832 {
04833   int yynrhs = yyr2[yyrule];
04834   int yyi;
04835   unsigned long int yylno = yyrline[yyrule];
04836   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
04837          yyrule - 1, yylno);
04838   /* The symbols being reduced.  */
04839   for (yyi = 0; yyi < yynrhs; yyi++)
04840     {
04841       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
04842       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
04843                &(yyvsp[(yyi + 1) - (yynrhs)])
04844                            , p);
04845       YYFPRINTF (stderr, "\n");
04846     }
04847 }
04848 
04849 # define YY_REDUCE_PRINT(Rule)      \
04850 do {                    \
04851   if (yydebug)              \
04852     yy_reduce_print (yyvsp, Rule, p); \
04853 } while (YYID (0))
04854 
04855 /* Nonzero means print parse trace.  It is left uninitialized so that
04856    multiple parsers can coexist.  */
04857 int yydebug;
04858 #else /* !YYDEBUG */
04859 # define YYDPRINTF(Args)
04860 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
04861 # define YY_STACK_PRINT(Bottom, Top)
04862 # define YY_REDUCE_PRINT(Rule)
04863 #endif /* !YYDEBUG */
04864 
04865 
04866 /* YYINITDEPTH -- initial size of the parser's stacks.  */
04867 #ifndef YYINITDEPTH
04868 # define YYINITDEPTH 200
04869 #endif
04870 
04871 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
04872    if the built-in stack extension method is used).
04873 
04874    Do not make this value too large; the results are undefined if
04875    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
04876    evaluated with infinite-precision integer arithmetic.  */
04877 
04878 #ifndef YYMAXDEPTH
04879 # define YYMAXDEPTH 10000
04880 #endif
04881 
04882 
04883 
04884 #if YYERROR_VERBOSE
04885 
04886 # ifndef yystrlen
04887 #  if defined __GLIBC__ && defined _STRING_H
04888 #   define yystrlen strlen
04889 #  else
04890 /* Return the length of YYSTR.  */
04891 #if (defined __STDC__ || defined __C99__FUNC__ \
04892      || defined __cplusplus || defined _MSC_VER)
04893 static YYSIZE_T
04894 yystrlen (const char *yystr)
04895 #else
04896 static YYSIZE_T
04897 yystrlen (yystr)
04898     const char *yystr;
04899 #endif
04900 {
04901   YYSIZE_T yylen;
04902   for (yylen = 0; yystr[yylen]; yylen++)
04903     continue;
04904   return yylen;
04905 }
04906 #  endif
04907 # endif
04908 
04909 # ifndef yystpcpy
04910 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
04911 #   define yystpcpy stpcpy
04912 #  else
04913 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
04914    YYDEST.  */
04915 #if (defined __STDC__ || defined __C99__FUNC__ \
04916      || defined __cplusplus || defined _MSC_VER)
04917 static char *
04918 yystpcpy (char *yydest, const char *yysrc)
04919 #else
04920 static char *
04921 yystpcpy (yydest, yysrc)
04922     char *yydest;
04923     const char *yysrc;
04924 #endif
04925 {
04926   char *yyd = yydest;
04927   const char *yys = yysrc;
04928 
04929   while ((*yyd++ = *yys++) != '\0')
04930     continue;
04931 
04932   return yyd - 1;
04933 }
04934 #  endif
04935 # endif
04936 
04937 # ifndef yytnamerr
04938 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
04939    quotes and backslashes, so that it's suitable for yyerror.  The
04940    heuristic is that double-quoting is unnecessary unless the string
04941    contains an apostrophe, a comma, or backslash (other than
04942    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
04943    null, do not copy; instead, return the length of what the result
04944    would have been.  */
04945 static YYSIZE_T
04946 yytnamerr (char *yyres, const char *yystr)
04947 {
04948   if (*yystr == '"')
04949     {
04950       YYSIZE_T yyn = 0;
04951       char const *yyp = yystr;
04952 
04953       for (;;)
04954     switch (*++yyp)
04955       {
04956       case '\'':
04957       case ',':
04958         goto do_not_strip_quotes;
04959 
04960       case '\\':
04961         if (*++yyp != '\\')
04962           goto do_not_strip_quotes;
04963         /* Fall through.  */
04964       default:
04965         if (yyres)
04966           yyres[yyn] = *yyp;
04967         yyn++;
04968         break;
04969 
04970       case '"':
04971         if (yyres)
04972           yyres[yyn] = '\0';
04973         return yyn;
04974       }
04975     do_not_strip_quotes: ;
04976     }
04977 
04978   if (! yyres)
04979     return yystrlen (yystr);
04980 
04981   return yystpcpy (yyres, yystr) - yyres;
04982 }
04983 # endif
04984 
04985 /* Copy into YYRESULT an error message about the unexpected token
04986    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
04987    including the terminating null byte.  If YYRESULT is null, do not
04988    copy anything; just return the number of bytes that would be
04989    copied.  As a special case, return 0 if an ordinary "syntax error"
04990    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
04991    size calculation.  */
04992 static YYSIZE_T
04993 yysyntax_error (char *yyresult, int yystate, int yychar)
04994 {
04995   int yyn = yypact[yystate];
04996 
04997   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
04998     return 0;
04999   else
05000     {
05001       int yytype = YYTRANSLATE (yychar);
05002       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
05003       YYSIZE_T yysize = yysize0;
05004       YYSIZE_T yysize1;
05005       int yysize_overflow = 0;
05006       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
05007       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
05008       int yyx;
05009 
05010 # if 0
05011       /* This is so xgettext sees the translatable formats that are
05012      constructed on the fly.  */
05013       YY_("syntax error, unexpected %s");
05014       YY_("syntax error, unexpected %s, expecting %s");
05015       YY_("syntax error, unexpected %s, expecting %s or %s");
05016       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
05017       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
05018 # endif
05019       char *yyfmt;
05020       char const *yyf;
05021       static char const yyunexpected[] = "syntax error, unexpected %s";
05022       static char const yyexpecting[] = ", expecting %s";
05023       static char const yyor[] = " or %s";
05024       char yyformat[sizeof yyunexpected
05025             + sizeof yyexpecting - 1
05026             + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
05027                * (sizeof yyor - 1))];
05028       char const *yyprefix = yyexpecting;
05029 
05030       /* Start YYX at -YYN if negative to avoid negative indexes in
05031      YYCHECK.  */
05032       int yyxbegin = yyn < 0 ? -yyn : 0;
05033 
05034       /* Stay within bounds of both yycheck and yytname.  */
05035       int yychecklim = YYLAST - yyn + 1;
05036       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
05037       int yycount = 1;
05038 
05039       yyarg[0] = yytname[yytype];
05040       yyfmt = yystpcpy (yyformat, yyunexpected);
05041 
05042       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
05043     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
05044       {
05045         if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
05046           {
05047         yycount = 1;
05048         yysize = yysize0;
05049         yyformat[sizeof yyunexpected - 1] = '\0';
05050         break;
05051           }
05052         yyarg[yycount++] = yytname[yyx];
05053         yysize1 = yysize + yytnamerr (0, yytname[yyx]);
05054         yysize_overflow |= (yysize1 < yysize);
05055         yysize = yysize1;
05056         yyfmt = yystpcpy (yyfmt, yyprefix);
05057         yyprefix = yyor;
05058       }
05059 
05060       yyf = YY_(yyformat);
05061       yysize1 = yysize + yystrlen (yyf);
05062       yysize_overflow |= (yysize1 < yysize);
05063       yysize = yysize1;
05064 
05065       if (yysize_overflow)
05066     return YYSIZE_MAXIMUM;
05067 
05068       if (yyresult)
05069     {
05070       /* Avoid sprintf, as that infringes on the user's name space.
05071          Don't have undefined behavior even if the translation
05072          produced a string with the wrong number of "%s"s.  */
05073       char *yyp = yyresult;
05074       int yyi = 0;
05075       while ((*yyp = *yyf) != '\0')
05076         {
05077           if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
05078         {
05079           yyp += yytnamerr (yyp, yyarg[yyi++]);
05080           yyf += 2;
05081         }
05082           else
05083         {
05084           yyp++;
05085           yyf++;
05086         }
05087         }
05088     }
05089       return yysize;
05090     }
05091 }
05092 #endif /* YYERROR_VERBOSE */
05093 
05094 
05095 /*-----------------------------------------------.
05096 | Release the memory associated to this symbol.  |
05097 `-----------------------------------------------*/
05098 
05099 /*ARGSUSED*/
05100 #if (defined __STDC__ || defined __C99__FUNC__ \
05101      || defined __cplusplus || defined _MSC_VER)
05102 static void
05103 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, parser_state *p)
05104 #else
05105 static void
05106 yydestruct (yymsg, yytype, yyvaluep, p)
05107     const char *yymsg;
05108     int yytype;
05109     YYSTYPE *yyvaluep;
05110     parser_state *p;
05111 #endif
05112 {
05113   YYUSE (yyvaluep);
05114   YYUSE (p);
05115 
05116   if (!yymsg)
05117     yymsg = "Deleting";
05118   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
05119 
05120   switch (yytype)
05121     {
05122 
05123       default:
05124     break;
05125     }
05126 }
05127 
05128 /* Prevent warnings from -Wmissing-prototypes.  */
05129 #ifdef YYPARSE_PARAM
05130 #if defined __STDC__ || defined __cplusplus
05131 int yyparse (void *YYPARSE_PARAM);
05132 #else
05133 int yyparse ();
05134 #endif
05135 #else /* ! YYPARSE_PARAM */
05136 #if defined __STDC__ || defined __cplusplus
05137 int yyparse (parser_state *p);
05138 #else
05139 int yyparse ();
05140 #endif
05141 #endif /* ! YYPARSE_PARAM */
05142 
05143 
05144 
05145 
05146 
05147 /*-------------------------.
05148 | yyparse or yypush_parse.  |
05149 `-------------------------*/
05150 
05151 #ifdef YYPARSE_PARAM
05152 #if (defined __STDC__ || defined __C99__FUNC__ \
05153      || defined __cplusplus || defined _MSC_VER)
05154 int
05155 yyparse (void *YYPARSE_PARAM)
05156 #else
05157 int
05158 yyparse (YYPARSE_PARAM)
05159     void *YYPARSE_PARAM;
05160 #endif
05161 #else /* ! YYPARSE_PARAM */
05162 #if (defined __STDC__ || defined __C99__FUNC__ \
05163      || defined __cplusplus || defined _MSC_VER)
05164 int
05165 yyparse (parser_state *p)
05166 #else
05167 int
05168 yyparse (p)
05169     parser_state *p;
05170 #endif
05171 #endif
05172 {
05173 /* The lookahead symbol.  */
05174 int yychar;
05175 
05176 /* The semantic value of the lookahead symbol.  */
05177 YYSTYPE yylval;
05178 
05179     /* Number of syntax errors so far.  */
05180     int yynerrs;
05181 
05182     int yystate;
05183     /* Number of tokens to shift before error messages enabled.  */
05184     int yyerrstatus;
05185 
05186     /* The stacks and their tools:
05187        `yyss': related to states.
05188        `yyvs': related to semantic values.
05189 
05190        Refer to the stacks thru separate pointers, to allow yyoverflow
05191        to reallocate them elsewhere.  */
05192 
05193     /* The state stack.  */
05194     yytype_int16 yyssa[YYINITDEPTH];
05195     yytype_int16 *yyss;
05196     yytype_int16 *yyssp;
05197 
05198     /* The semantic value stack.  */
05199     YYSTYPE yyvsa[YYINITDEPTH];
05200     YYSTYPE *yyvs;
05201     YYSTYPE *yyvsp;
05202 
05203     YYSIZE_T yystacksize;
05204 
05205   int yyn;
05206   int yyresult;
05207   /* Lookahead token as an internal (translated) token number.  */
05208   int yytoken;
05209   /* The variables used to return semantic value and location from the
05210      action routines.  */
05211   YYSTYPE yyval;
05212 
05213 #if YYERROR_VERBOSE
05214   /* Buffer for error messages, and its allocated size.  */
05215   char yymsgbuf[128];
05216   char *yymsg = yymsgbuf;
05217   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
05218 #endif
05219 
05220 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
05221 
05222   /* The number of symbols on the RHS of the reduced rule.
05223      Keep to zero when no symbol should be popped.  */
05224   int yylen = 0;
05225 
05226   yytoken = 0;
05227   yyss = yyssa;
05228   yyvs = yyvsa;
05229   yystacksize = YYINITDEPTH;
05230 
05231   YYDPRINTF ((stderr, "Starting parse\n"));
05232 
05233   yystate = 0;
05234   yyerrstatus = 0;
05235   yynerrs = 0;
05236   yychar = YYEMPTY; /* Cause a token to be read.  */
05237 
05238   /* Initialize stack pointers.
05239      Waste one element of value and location stack
05240      so that they stay on the same level as the state stack.
05241      The wasted elements are never initialized.  */
05242   yyssp = yyss;
05243   yyvsp = yyvs;
05244 
05245   goto yysetstate;
05246 
05247 /*------------------------------------------------------------.
05248 | yynewstate -- Push a new state, which is found in yystate.  |
05249 `------------------------------------------------------------*/
05250  yynewstate:
05251   /* In all cases, when you get here, the value and location stacks
05252      have just been pushed.  So pushing a state here evens the stacks.  */
05253   yyssp++;
05254 
05255  yysetstate:
05256   *yyssp = yystate;
05257 
05258   if (yyss + yystacksize - 1 <= yyssp)
05259     {
05260       /* Get the current used size of the three stacks, in elements.  */
05261       YYSIZE_T yysize = yyssp - yyss + 1;
05262 
05263 #ifdef yyoverflow
05264       {
05265     /* Give user a chance to reallocate the stack.  Use copies of
05266        these so that the &'s don't force the real ones into
05267        memory.  */
05268     YYSTYPE *yyvs1 = yyvs;
05269     yytype_int16 *yyss1 = yyss;
05270 
05271     /* Each stack pointer address is followed by the size of the
05272        data in use in that stack, in bytes.  This used to be a
05273        conditional around just the two extra args, but that might
05274        be undefined if yyoverflow is a macro.  */
05275     yyoverflow (YY_("memory exhausted"),
05276             &yyss1, yysize * sizeof (*yyssp),
05277             &yyvs1, yysize * sizeof (*yyvsp),
05278             &yystacksize);
05279 
05280     yyss = yyss1;
05281     yyvs = yyvs1;
05282       }
05283 #else /* no yyoverflow */
05284 # ifndef YYSTACK_RELOCATE
05285       goto yyexhaustedlab;
05286 # else
05287       /* Extend the stack our own way.  */
05288       if (YYMAXDEPTH <= yystacksize)
05289     goto yyexhaustedlab;
05290       yystacksize *= 2;
05291       if (YYMAXDEPTH < yystacksize)
05292     yystacksize = YYMAXDEPTH;
05293 
05294       {
05295     yytype_int16 *yyss1 = yyss;
05296     union yyalloc *yyptr =
05297       (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
05298     if (! yyptr)
05299       goto yyexhaustedlab;
05300     YYSTACK_RELOCATE (yyss_alloc, yyss);
05301     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
05302 #  undef YYSTACK_RELOCATE
05303     if (yyss1 != yyssa)
05304       YYSTACK_FREE (yyss1);
05305       }
05306 # endif
05307 #endif /* no yyoverflow */
05308 
05309       yyssp = yyss + yysize - 1;
05310       yyvsp = yyvs + yysize - 1;
05311 
05312       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
05313           (unsigned long int) yystacksize));
05314 
05315       if (yyss + yystacksize - 1 <= yyssp)
05316     YYABORT;
05317     }
05318 
05319   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
05320 
05321   if (yystate == YYFINAL)
05322     YYACCEPT;
05323 
05324   goto yybackup;
05325 
05326 /*-----------.
05327 | yybackup.  |
05328 `-----------*/
05329 yybackup:
05330 
05331   /* Do appropriate processing given the current state.  Read a
05332      lookahead token if we need one and don't already have one.  */
05333 
05334   /* First try to decide what to do without reference to lookahead token.  */
05335   yyn = yypact[yystate];
05336   if (yyn == YYPACT_NINF)
05337     goto yydefault;
05338 
05339   /* Not known => get a lookahead token if don't already have one.  */
05340 
05341   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
05342   if (yychar == YYEMPTY)
05343     {
05344       YYDPRINTF ((stderr, "Reading a token: "));
05345       yychar = YYLEX;
05346     }
05347 
05348   if (yychar <= YYEOF)
05349     {
05350       yychar = yytoken = YYEOF;
05351       YYDPRINTF ((stderr, "Now at end of input.\n"));
05352     }
05353   else
05354     {
05355       yytoken = YYTRANSLATE (yychar);
05356       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
05357     }
05358 
05359   /* If the proper action on seeing token YYTOKEN is to reduce or to
05360      detect an error, take that action.  */
05361   yyn += yytoken;
05362   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
05363     goto yydefault;
05364   yyn = yytable[yyn];
05365   if (yyn <= 0)
05366     {
05367       if (yyn == 0 || yyn == YYTABLE_NINF)
05368     goto yyerrlab;
05369       yyn = -yyn;
05370       goto yyreduce;
05371     }
05372 
05373   /* Count tokens shifted since error; after three, turn off error
05374      status.  */
05375   if (yyerrstatus)
05376     yyerrstatus--;
05377 
05378   /* Shift the lookahead token.  */
05379   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
05380 
05381   /* Discard the shifted token.  */
05382   yychar = YYEMPTY;
05383 
05384   yystate = yyn;
05385   *++yyvsp = yylval;
05386 
05387   goto yynewstate;
05388 
05389 
05390 /*-----------------------------------------------------------.
05391 | yydefault -- do the default action for the current state.  |
05392 `-----------------------------------------------------------*/
05393 yydefault:
05394   yyn = yydefact[yystate];
05395   if (yyn == 0)
05396     goto yyerrlab;
05397   goto yyreduce;
05398 
05399 
05400 /*-----------------------------.
05401 | yyreduce -- Do a reduction.  |
05402 `-----------------------------*/
05403 yyreduce:
05404   /* yyn is the number of a rule to reduce with.  */
05405   yylen = yyr2[yyn];
05406 
05407   /* If YYLEN is nonzero, implement the default value of the action:
05408      `$$ = $1'.
05409 
05410      Otherwise, the following line sets YYVAL to garbage.
05411      This behavior is undocumented and Bison
05412      users should not rely upon it.  Assigning to YYVAL
05413      unconditionally makes the parser a bit smaller, and it avoids a
05414      GCC warning that YYVAL may be used uninitialized.  */
05415   yyval = yyvsp[1-yylen];
05416 
05417 
05418   YY_REDUCE_PRINT (yyn);
05419   switch (yyn)
05420     {
05421         case 2:
05422 
05423 /* Line 1464 of yacc.c  */
05424 #line 1166 "src/parse.y"
05425     {
05426                       p->lstate = EXPR_BEG;
05427                       if (!p->locals) p->locals = cons(0,0);
05428                     ;}
05429     break;
05430 
05431   case 3:
05432 
05433 /* Line 1464 of yacc.c  */
05434 #line 1171 "src/parse.y"
05435     {
05436                       p->tree = new_scope(p, (yyvsp[(2) - (2)].nd));
05437                       NODE_LINENO(p->tree, (yyvsp[(2) - (2)].nd));
05438                     ;}
05439     break;
05440 
05441   case 4:
05442 
05443 /* Line 1464 of yacc.c  */
05444 #line 1178 "src/parse.y"
05445     {
05446                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
05447                     ;}
05448     break;
05449 
05450   case 5:
05451 
05452 /* Line 1464 of yacc.c  */
05453 #line 1184 "src/parse.y"
05454     {
05455                       (yyval.nd) = new_begin(p, 0);
05456                     ;}
05457     break;
05458 
05459   case 6:
05460 
05461 /* Line 1464 of yacc.c  */
05462 #line 1188 "src/parse.y"
05463     {
05464                       (yyval.nd) = new_begin(p, (yyvsp[(1) - (1)].nd));
05465                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd));
05466                     ;}
05467     break;
05468 
05469   case 7:
05470 
05471 /* Line 1464 of yacc.c  */
05472 #line 1193 "src/parse.y"
05473     {
05474                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), newline_node((yyvsp[(3) - (3)].nd)));
05475                     ;}
05476     break;
05477 
05478   case 8:
05479 
05480 /* Line 1464 of yacc.c  */
05481 #line 1197 "src/parse.y"
05482     {
05483                       (yyval.nd) = new_begin(p, 0);
05484                     ;}
05485     break;
05486 
05487   case 10:
05488 
05489 /* Line 1464 of yacc.c  */
05490 #line 1204 "src/parse.y"
05491     {
05492                       (yyval.nd) = local_switch(p);
05493                     ;}
05494     break;
05495 
05496   case 11:
05497 
05498 /* Line 1464 of yacc.c  */
05499 #line 1208 "src/parse.y"
05500     {
05501                       yyerror(p, "BEGIN not supported");
05502                       local_resume(p, (yyvsp[(2) - (5)].nd));
05503                       (yyval.nd) = 0;
05504                     ;}
05505     break;
05506 
05507   case 12:
05508 
05509 /* Line 1464 of yacc.c  */
05510 #line 1219 "src/parse.y"
05511     {
05512                       if ((yyvsp[(2) - (4)].nd)) {
05513                         (yyval.nd) = new_rescue(p, (yyvsp[(1) - (4)].nd), (yyvsp[(2) - (4)].nd), (yyvsp[(3) - (4)].nd));
05514                         NODE_LINENO((yyval.nd), (yyvsp[(1) - (4)].nd));
05515                       }
05516                       else if ((yyvsp[(3) - (4)].nd)) {
05517                         yywarn(p, "else without rescue is useless");
05518                         (yyval.nd) = push((yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd));
05519                       }
05520                       else {
05521                         (yyval.nd) = (yyvsp[(1) - (4)].nd);
05522                       }
05523                       if ((yyvsp[(4) - (4)].nd)) {
05524                         if ((yyval.nd)) {
05525                           (yyval.nd) = new_ensure(p, (yyval.nd), (yyvsp[(4) - (4)].nd));
05526                         }
05527                         else {
05528                           (yyval.nd) = push((yyvsp[(4) - (4)].nd), new_nil(p));
05529                         }
05530                       }
05531                     ;}
05532     break;
05533 
05534   case 13:
05535 
05536 /* Line 1464 of yacc.c  */
05537 #line 1243 "src/parse.y"
05538     {
05539                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
05540                     ;}
05541     break;
05542 
05543   case 14:
05544 
05545 /* Line 1464 of yacc.c  */
05546 #line 1249 "src/parse.y"
05547     {
05548                       (yyval.nd) = new_begin(p, 0);
05549                     ;}
05550     break;
05551 
05552   case 15:
05553 
05554 /* Line 1464 of yacc.c  */
05555 #line 1253 "src/parse.y"
05556     {
05557                       (yyval.nd) = new_begin(p, (yyvsp[(1) - (1)].nd));
05558                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd));
05559                     ;}
05560     break;
05561 
05562   case 16:
05563 
05564 /* Line 1464 of yacc.c  */
05565 #line 1258 "src/parse.y"
05566     {
05567                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), newline_node((yyvsp[(3) - (3)].nd)));
05568                     ;}
05569     break;
05570 
05571   case 17:
05572 
05573 /* Line 1464 of yacc.c  */
05574 #line 1262 "src/parse.y"
05575     {
05576                       (yyval.nd) = new_begin(p, (yyvsp[(2) - (2)].nd));
05577                     ;}
05578     break;
05579 
05580   case 18:
05581 
05582 /* Line 1464 of yacc.c  */
05583 #line 1267 "src/parse.y"
05584     {p->lstate = EXPR_FNAME;;}
05585     break;
05586 
05587   case 19:
05588 
05589 /* Line 1464 of yacc.c  */
05590 #line 1268 "src/parse.y"
05591     {
05592                       (yyval.nd) = new_alias(p, (yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].id));
05593                     ;}
05594     break;
05595 
05596   case 20:
05597 
05598 /* Line 1464 of yacc.c  */
05599 #line 1272 "src/parse.y"
05600     {
05601                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
05602                     ;}
05603     break;
05604 
05605   case 21:
05606 
05607 /* Line 1464 of yacc.c  */
05608 #line 1276 "src/parse.y"
05609     {
05610                       (yyval.nd) = new_if(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd), 0);
05611                     ;}
05612     break;
05613 
05614   case 22:
05615 
05616 /* Line 1464 of yacc.c  */
05617 #line 1280 "src/parse.y"
05618     {
05619                       (yyval.nd) = new_unless(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd), 0);
05620                     ;}
05621     break;
05622 
05623   case 23:
05624 
05625 /* Line 1464 of yacc.c  */
05626 #line 1284 "src/parse.y"
05627     {
05628                       (yyval.nd) = new_while(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd));
05629                     ;}
05630     break;
05631 
05632   case 24:
05633 
05634 /* Line 1464 of yacc.c  */
05635 #line 1288 "src/parse.y"
05636     {
05637                       (yyval.nd) = new_until(p, cond((yyvsp[(3) - (3)].nd)), (yyvsp[(1) - (3)].nd));
05638                     ;}
05639     break;
05640 
05641   case 25:
05642 
05643 /* Line 1464 of yacc.c  */
05644 #line 1292 "src/parse.y"
05645     {
05646                       (yyval.nd) = new_rescue(p, (yyvsp[(1) - (3)].nd), list1(list3(0, 0, (yyvsp[(3) - (3)].nd))), 0);
05647                     ;}
05648     break;
05649 
05650   case 26:
05651 
05652 /* Line 1464 of yacc.c  */
05653 #line 1296 "src/parse.y"
05654     {
05655                       yyerror(p, "END not suported");
05656                       (yyval.nd) = new_postexe(p, (yyvsp[(3) - (4)].nd));
05657                     ;}
05658     break;
05659 
05660   case 28:
05661 
05662 /* Line 1464 of yacc.c  */
05663 #line 1302 "src/parse.y"
05664     {
05665                       (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05666                     ;}
05667     break;
05668 
05669   case 29:
05670 
05671 /* Line 1464 of yacc.c  */
05672 #line 1306 "src/parse.y"
05673     {
05674                       (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].nd));
05675                     ;}
05676     break;
05677 
05678   case 30:
05679 
05680 /* Line 1464 of yacc.c  */
05681 #line 1310 "src/parse.y"
05682     {
05683                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (6)].nd), intern("[]",2), (yyvsp[(3) - (6)].nd)), (yyvsp[(5) - (6)].id), (yyvsp[(6) - (6)].nd));
05684                     ;}
05685     break;
05686 
05687   case 31:
05688 
05689 /* Line 1464 of yacc.c  */
05690 #line 1314 "src/parse.y"
05691     {
05692                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd));
05693                     ;}
05694     break;
05695 
05696   case 32:
05697 
05698 /* Line 1464 of yacc.c  */
05699 #line 1318 "src/parse.y"
05700     {
05701                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd));
05702                     ;}
05703     break;
05704 
05705   case 33:
05706 
05707 /* Line 1464 of yacc.c  */
05708 #line 1322 "src/parse.y"
05709     {
05710                       yyerror(p, "constant re-assignment");
05711                       (yyval.nd) = 0;
05712                     ;}
05713     break;
05714 
05715   case 34:
05716 
05717 /* Line 1464 of yacc.c  */
05718 #line 1327 "src/parse.y"
05719     {
05720                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd));
05721                     ;}
05722     break;
05723 
05724   case 35:
05725 
05726 /* Line 1464 of yacc.c  */
05727 #line 1331 "src/parse.y"
05728     {
05729                       backref_error(p, (yyvsp[(1) - (3)].nd));
05730                       (yyval.nd) = new_begin(p, 0);
05731                     ;}
05732     break;
05733 
05734   case 36:
05735 
05736 /* Line 1464 of yacc.c  */
05737 #line 1336 "src/parse.y"
05738     {
05739                       (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), new_array(p, (yyvsp[(3) - (3)].nd)));
05740                     ;}
05741     break;
05742 
05743   case 37:
05744 
05745 /* Line 1464 of yacc.c  */
05746 #line 1340 "src/parse.y"
05747     {
05748                       (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05749                     ;}
05750     break;
05751 
05752   case 38:
05753 
05754 /* Line 1464 of yacc.c  */
05755 #line 1344 "src/parse.y"
05756     {
05757                       (yyval.nd) = new_masgn(p, (yyvsp[(1) - (3)].nd), new_array(p, (yyvsp[(3) - (3)].nd)));
05758                     ;}
05759     break;
05760 
05761   case 40:
05762 
05763 /* Line 1464 of yacc.c  */
05764 #line 1351 "src/parse.y"
05765     {
05766                       (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05767                     ;}
05768     break;
05769 
05770   case 41:
05771 
05772 /* Line 1464 of yacc.c  */
05773 #line 1355 "src/parse.y"
05774     {
05775                       (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05776                     ;}
05777     break;
05778 
05779   case 43:
05780 
05781 /* Line 1464 of yacc.c  */
05782 #line 1363 "src/parse.y"
05783     {
05784                       (yyval.nd) = new_and(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05785                     ;}
05786     break;
05787 
05788   case 44:
05789 
05790 /* Line 1464 of yacc.c  */
05791 #line 1367 "src/parse.y"
05792     {
05793                       (yyval.nd) = new_or(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05794                     ;}
05795     break;
05796 
05797   case 45:
05798 
05799 /* Line 1464 of yacc.c  */
05800 #line 1371 "src/parse.y"
05801     {
05802                       (yyval.nd) = call_uni_op(p, cond((yyvsp[(3) - (3)].nd)), "!");
05803                     ;}
05804     break;
05805 
05806   case 46:
05807 
05808 /* Line 1464 of yacc.c  */
05809 #line 1375 "src/parse.y"
05810     {
05811                       (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "!");
05812                     ;}
05813     break;
05814 
05815   case 48:
05816 
05817 /* Line 1464 of yacc.c  */
05818 #line 1382 "src/parse.y"
05819     {
05820                       if (!(yyvsp[(1) - (1)].nd)) (yyval.nd) = new_nil(p);
05821                       else (yyval.nd) = (yyvsp[(1) - (1)].nd);
05822                     ;}
05823     break;
05824 
05825   case 53:
05826 
05827 /* Line 1464 of yacc.c  */
05828 #line 1397 "src/parse.y"
05829     {
05830                       local_nest(p);
05831                     ;}
05832     break;
05833 
05834   case 54:
05835 
05836 /* Line 1464 of yacc.c  */
05837 #line 1403 "src/parse.y"
05838     {
05839                       (yyval.nd) = new_block(p, (yyvsp[(3) - (5)].nd), (yyvsp[(4) - (5)].nd));
05840                       local_unnest(p);
05841                     ;}
05842     break;
05843 
05844   case 55:
05845 
05846 /* Line 1464 of yacc.c  */
05847 #line 1410 "src/parse.y"
05848     {
05849                       (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].nd));
05850                     ;}
05851     break;
05852 
05853   case 56:
05854 
05855 /* Line 1464 of yacc.c  */
05856 #line 1414 "src/parse.y"
05857     {
05858                       args_with_block(p, (yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd));
05859                       (yyval.nd) = new_fcall(p, (yyvsp[(1) - (3)].id), (yyvsp[(2) - (3)].nd));
05860                     ;}
05861     break;
05862 
05863   case 57:
05864 
05865 /* Line 1464 of yacc.c  */
05866 #line 1419 "src/parse.y"
05867     {
05868                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
05869                     ;}
05870     break;
05871 
05872   case 58:
05873 
05874 /* Line 1464 of yacc.c  */
05875 #line 1423 "src/parse.y"
05876     {
05877                       args_with_block(p, (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd));
05878                       (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
05879                    ;}
05880     break;
05881 
05882   case 59:
05883 
05884 /* Line 1464 of yacc.c  */
05885 #line 1428 "src/parse.y"
05886     {
05887                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
05888                     ;}
05889     break;
05890 
05891   case 60:
05892 
05893 /* Line 1464 of yacc.c  */
05894 #line 1432 "src/parse.y"
05895     {
05896                       args_with_block(p, (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd));
05897                       (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
05898                     ;}
05899     break;
05900 
05901   case 61:
05902 
05903 /* Line 1464 of yacc.c  */
05904 #line 1437 "src/parse.y"
05905     {
05906                       (yyval.nd) = new_super(p, (yyvsp[(2) - (2)].nd));
05907                     ;}
05908     break;
05909 
05910   case 62:
05911 
05912 /* Line 1464 of yacc.c  */
05913 #line 1441 "src/parse.y"
05914     {
05915                       (yyval.nd) = new_yield(p, (yyvsp[(2) - (2)].nd));
05916                     ;}
05917     break;
05918 
05919   case 63:
05920 
05921 /* Line 1464 of yacc.c  */
05922 #line 1445 "src/parse.y"
05923     {
05924                       (yyval.nd) = new_return(p, ret_args(p, (yyvsp[(2) - (2)].nd)));
05925                     ;}
05926     break;
05927 
05928   case 64:
05929 
05930 /* Line 1464 of yacc.c  */
05931 #line 1449 "src/parse.y"
05932     {
05933                       (yyval.nd) = new_break(p, ret_args(p, (yyvsp[(2) - (2)].nd)));
05934                     ;}
05935     break;
05936 
05937   case 65:
05938 
05939 /* Line 1464 of yacc.c  */
05940 #line 1453 "src/parse.y"
05941     {
05942                       (yyval.nd) = new_next(p, ret_args(p, (yyvsp[(2) - (2)].nd)));
05943                     ;}
05944     break;
05945 
05946   case 66:
05947 
05948 /* Line 1464 of yacc.c  */
05949 #line 1459 "src/parse.y"
05950     {
05951                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
05952                     ;}
05953     break;
05954 
05955   case 67:
05956 
05957 /* Line 1464 of yacc.c  */
05958 #line 1463 "src/parse.y"
05959     {
05960                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
05961                     ;}
05962     break;
05963 
05964   case 69:
05965 
05966 /* Line 1464 of yacc.c  */
05967 #line 1470 "src/parse.y"
05968     {
05969                       (yyval.nd) = list1((yyvsp[(2) - (3)].nd));
05970                     ;}
05971     break;
05972 
05973   case 70:
05974 
05975 /* Line 1464 of yacc.c  */
05976 #line 1476 "src/parse.y"
05977     {
05978                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
05979                     ;}
05980     break;
05981 
05982   case 71:
05983 
05984 /* Line 1464 of yacc.c  */
05985 #line 1480 "src/parse.y"
05986     {
05987                       (yyval.nd) = list1(push((yyvsp[(1) - (2)].nd),(yyvsp[(2) - (2)].nd)));
05988                     ;}
05989     break;
05990 
05991   case 72:
05992 
05993 /* Line 1464 of yacc.c  */
05994 #line 1484 "src/parse.y"
05995     {
05996                       (yyval.nd) = list2((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
05997                     ;}
05998     break;
05999 
06000   case 73:
06001 
06002 /* Line 1464 of yacc.c  */
06003 #line 1488 "src/parse.y"
06004     {
06005                       (yyval.nd) = list3((yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].nd), (yyvsp[(5) - (5)].nd));
06006                     ;}
06007     break;
06008 
06009   case 74:
06010 
06011 /* Line 1464 of yacc.c  */
06012 #line 1492 "src/parse.y"
06013     {
06014                       (yyval.nd) = list2((yyvsp[(1) - (2)].nd), new_nil(p));
06015                     ;}
06016     break;
06017 
06018   case 75:
06019 
06020 /* Line 1464 of yacc.c  */
06021 #line 1496 "src/parse.y"
06022     {
06023                       (yyval.nd) = list3((yyvsp[(1) - (4)].nd), new_nil(p), (yyvsp[(4) - (4)].nd));
06024                     ;}
06025     break;
06026 
06027   case 76:
06028 
06029 /* Line 1464 of yacc.c  */
06030 #line 1500 "src/parse.y"
06031     {
06032                       (yyval.nd) = list2(0, (yyvsp[(2) - (2)].nd));
06033                     ;}
06034     break;
06035 
06036   case 77:
06037 
06038 /* Line 1464 of yacc.c  */
06039 #line 1504 "src/parse.y"
06040     {
06041                       (yyval.nd) = list3(0, (yyvsp[(2) - (4)].nd), (yyvsp[(4) - (4)].nd));
06042                     ;}
06043     break;
06044 
06045   case 78:
06046 
06047 /* Line 1464 of yacc.c  */
06048 #line 1508 "src/parse.y"
06049     {
06050                       (yyval.nd) = list2(0, new_nil(p));
06051                     ;}
06052     break;
06053 
06054   case 79:
06055 
06056 /* Line 1464 of yacc.c  */
06057 #line 1512 "src/parse.y"
06058     {
06059                       (yyval.nd) = list3(0, new_nil(p), (yyvsp[(3) - (3)].nd));
06060                     ;}
06061     break;
06062 
06063   case 81:
06064 
06065 /* Line 1464 of yacc.c  */
06066 #line 1519 "src/parse.y"
06067     {
06068                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
06069                     ;}
06070     break;
06071 
06072   case 82:
06073 
06074 /* Line 1464 of yacc.c  */
06075 #line 1525 "src/parse.y"
06076     {
06077                       (yyval.nd) = list1((yyvsp[(1) - (2)].nd));
06078                     ;}
06079     break;
06080 
06081   case 83:
06082 
06083 /* Line 1464 of yacc.c  */
06084 #line 1529 "src/parse.y"
06085     {
06086                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].nd));
06087                     ;}
06088     break;
06089 
06090   case 84:
06091 
06092 /* Line 1464 of yacc.c  */
06093 #line 1535 "src/parse.y"
06094     {
06095                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
06096                     ;}
06097     break;
06098 
06099   case 85:
06100 
06101 /* Line 1464 of yacc.c  */
06102 #line 1539 "src/parse.y"
06103     {
06104                       (yyval.nd) = push((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
06105                     ;}
06106     break;
06107 
06108   case 86:
06109 
06110 /* Line 1464 of yacc.c  */
06111 #line 1545 "src/parse.y"
06112     {
06113                       assignable(p, (yyvsp[(1) - (1)].nd));
06114                     ;}
06115     break;
06116 
06117   case 87:
06118 
06119 /* Line 1464 of yacc.c  */
06120 #line 1549 "src/parse.y"
06121     {
06122                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern("[]",2), (yyvsp[(3) - (4)].nd));
06123                     ;}
06124     break;
06125 
06126   case 88:
06127 
06128 /* Line 1464 of yacc.c  */
06129 #line 1553 "src/parse.y"
06130     {
06131                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
06132                     ;}
06133     break;
06134 
06135   case 89:
06136 
06137 /* Line 1464 of yacc.c  */
06138 #line 1557 "src/parse.y"
06139     {
06140                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
06141                     ;}
06142     break;
06143 
06144   case 90:
06145 
06146 /* Line 1464 of yacc.c  */
06147 #line 1561 "src/parse.y"
06148     {
06149                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
06150                     ;}
06151     break;
06152 
06153   case 91:
06154 
06155 /* Line 1464 of yacc.c  */
06156 #line 1565 "src/parse.y"
06157     {
06158                       if (p->in_def || p->in_single)
06159                         yyerror(p, "dynamic constant assignment");
06160                       (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id));
06161                     ;}
06162     break;
06163 
06164   case 92:
06165 
06166 /* Line 1464 of yacc.c  */
06167 #line 1571 "src/parse.y"
06168     {
06169                       if (p->in_def || p->in_single)
06170                         yyerror(p, "dynamic constant assignment");
06171                       (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id));
06172                     ;}
06173     break;
06174 
06175   case 93:
06176 
06177 /* Line 1464 of yacc.c  */
06178 #line 1577 "src/parse.y"
06179     {
06180                       backref_error(p, (yyvsp[(1) - (1)].nd));
06181                       (yyval.nd) = 0;
06182                     ;}
06183     break;
06184 
06185   case 94:
06186 
06187 /* Line 1464 of yacc.c  */
06188 #line 1584 "src/parse.y"
06189     {
06190                       assignable(p, (yyvsp[(1) - (1)].nd));
06191                     ;}
06192     break;
06193 
06194   case 95:
06195 
06196 /* Line 1464 of yacc.c  */
06197 #line 1588 "src/parse.y"
06198     {
06199                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern("[]",2), (yyvsp[(3) - (4)].nd));
06200                     ;}
06201     break;
06202 
06203   case 96:
06204 
06205 /* Line 1464 of yacc.c  */
06206 #line 1592 "src/parse.y"
06207     {
06208                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
06209                     ;}
06210     break;
06211 
06212   case 97:
06213 
06214 /* Line 1464 of yacc.c  */
06215 #line 1596 "src/parse.y"
06216     {
06217                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
06218                     ;}
06219     break;
06220 
06221   case 98:
06222 
06223 /* Line 1464 of yacc.c  */
06224 #line 1600 "src/parse.y"
06225     {
06226                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
06227                     ;}
06228     break;
06229 
06230   case 99:
06231 
06232 /* Line 1464 of yacc.c  */
06233 #line 1604 "src/parse.y"
06234     {
06235                       if (p->in_def || p->in_single)
06236                         yyerror(p, "dynamic constant assignment");
06237                       (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id));
06238                     ;}
06239     break;
06240 
06241   case 100:
06242 
06243 /* Line 1464 of yacc.c  */
06244 #line 1610 "src/parse.y"
06245     {
06246                       if (p->in_def || p->in_single)
06247                         yyerror(p, "dynamic constant assignment");
06248                       (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id));
06249                     ;}
06250     break;
06251 
06252   case 101:
06253 
06254 /* Line 1464 of yacc.c  */
06255 #line 1616 "src/parse.y"
06256     {
06257                       backref_error(p, (yyvsp[(1) - (1)].nd));
06258                       (yyval.nd) = 0;
06259                     ;}
06260     break;
06261 
06262   case 102:
06263 
06264 /* Line 1464 of yacc.c  */
06265 #line 1623 "src/parse.y"
06266     {
06267                       yyerror(p, "class/module name must be CONSTANT");
06268                     ;}
06269     break;
06270 
06271   case 104:
06272 
06273 /* Line 1464 of yacc.c  */
06274 #line 1630 "src/parse.y"
06275     {
06276                       (yyval.nd) = cons((node*)1, nsym((yyvsp[(2) - (2)].id)));
06277                     ;}
06278     break;
06279 
06280   case 105:
06281 
06282 /* Line 1464 of yacc.c  */
06283 #line 1634 "src/parse.y"
06284     {
06285                       (yyval.nd) = cons((node*)0, nsym((yyvsp[(1) - (1)].id)));
06286                     ;}
06287     break;
06288 
06289   case 106:
06290 
06291 /* Line 1464 of yacc.c  */
06292 #line 1638 "src/parse.y"
06293     {
06294                       (yyval.nd) = cons((yyvsp[(1) - (3)].nd), nsym((yyvsp[(3) - (3)].id)));
06295                     ;}
06296     break;
06297 
06298   case 110:
06299 
06300 /* Line 1464 of yacc.c  */
06301 #line 1647 "src/parse.y"
06302     {
06303                       p->lstate = EXPR_ENDFN;
06304                       (yyval.id) = (yyvsp[(1) - (1)].id);
06305                     ;}
06306     break;
06307 
06308   case 111:
06309 
06310 /* Line 1464 of yacc.c  */
06311 #line 1652 "src/parse.y"
06312     {
06313                       p->lstate = EXPR_ENDFN;
06314                       (yyval.id) = (yyvsp[(1) - (1)].id);
06315                     ;}
06316     break;
06317 
06318   case 114:
06319 
06320 /* Line 1464 of yacc.c  */
06321 #line 1663 "src/parse.y"
06322     {
06323                       (yyval.nd) = new_undef(p, (yyvsp[(1) - (1)].id));
06324                     ;}
06325     break;
06326 
06327   case 115:
06328 
06329 /* Line 1464 of yacc.c  */
06330 #line 1666 "src/parse.y"
06331     {p->lstate = EXPR_FNAME;;}
06332     break;
06333 
06334   case 116:
06335 
06336 /* Line 1464 of yacc.c  */
06337 #line 1667 "src/parse.y"
06338     {
06339                       (yyval.nd) = push((yyvsp[(1) - (4)].nd), nsym((yyvsp[(4) - (4)].id)));
06340                     ;}
06341     break;
06342 
06343   case 117:
06344 
06345 /* Line 1464 of yacc.c  */
06346 #line 1672 "src/parse.y"
06347     { (yyval.id) = intern_c('|');   ;}
06348     break;
06349 
06350   case 118:
06351 
06352 /* Line 1464 of yacc.c  */
06353 #line 1673 "src/parse.y"
06354     { (yyval.id) = intern_c('^');   ;}
06355     break;
06356 
06357   case 119:
06358 
06359 /* Line 1464 of yacc.c  */
06360 #line 1674 "src/parse.y"
06361     { (yyval.id) = intern_c('&');   ;}
06362     break;
06363 
06364   case 120:
06365 
06366 /* Line 1464 of yacc.c  */
06367 #line 1675 "src/parse.y"
06368     { (yyval.id) = intern("<=>",3); ;}
06369     break;
06370 
06371   case 121:
06372 
06373 /* Line 1464 of yacc.c  */
06374 #line 1676 "src/parse.y"
06375     { (yyval.id) = intern("==",2);  ;}
06376     break;
06377 
06378   case 122:
06379 
06380 /* Line 1464 of yacc.c  */
06381 #line 1677 "src/parse.y"
06382     { (yyval.id) = intern("===",3); ;}
06383     break;
06384 
06385   case 123:
06386 
06387 /* Line 1464 of yacc.c  */
06388 #line 1678 "src/parse.y"
06389     { (yyval.id) = intern("=~",2);  ;}
06390     break;
06391 
06392   case 124:
06393 
06394 /* Line 1464 of yacc.c  */
06395 #line 1679 "src/parse.y"
06396     { (yyval.id) = intern("!~",2);  ;}
06397     break;
06398 
06399   case 125:
06400 
06401 /* Line 1464 of yacc.c  */
06402 #line 1680 "src/parse.y"
06403     { (yyval.id) = intern_c('>');   ;}
06404     break;
06405 
06406   case 126:
06407 
06408 /* Line 1464 of yacc.c  */
06409 #line 1681 "src/parse.y"
06410     { (yyval.id) = intern(">=",2);  ;}
06411     break;
06412 
06413   case 127:
06414 
06415 /* Line 1464 of yacc.c  */
06416 #line 1682 "src/parse.y"
06417     { (yyval.id) = intern_c('<');   ;}
06418     break;
06419 
06420   case 128:
06421 
06422 /* Line 1464 of yacc.c  */
06423 #line 1683 "src/parse.y"
06424     { (yyval.id) = intern("<=",2);  ;}
06425     break;
06426 
06427   case 129:
06428 
06429 /* Line 1464 of yacc.c  */
06430 #line 1684 "src/parse.y"
06431     { (yyval.id) = intern("!=",2);  ;}
06432     break;
06433 
06434   case 130:
06435 
06436 /* Line 1464 of yacc.c  */
06437 #line 1685 "src/parse.y"
06438     { (yyval.id) = intern("<<",2);  ;}
06439     break;
06440 
06441   case 131:
06442 
06443 /* Line 1464 of yacc.c  */
06444 #line 1686 "src/parse.y"
06445     { (yyval.id) = intern(">>",2);  ;}
06446     break;
06447 
06448   case 132:
06449 
06450 /* Line 1464 of yacc.c  */
06451 #line 1687 "src/parse.y"
06452     { (yyval.id) = intern_c('+');   ;}
06453     break;
06454 
06455   case 133:
06456 
06457 /* Line 1464 of yacc.c  */
06458 #line 1688 "src/parse.y"
06459     { (yyval.id) = intern_c('-');   ;}
06460     break;
06461 
06462   case 134:
06463 
06464 /* Line 1464 of yacc.c  */
06465 #line 1689 "src/parse.y"
06466     { (yyval.id) = intern_c('*');   ;}
06467     break;
06468 
06469   case 135:
06470 
06471 /* Line 1464 of yacc.c  */
06472 #line 1690 "src/parse.y"
06473     { (yyval.id) = intern_c('*');   ;}
06474     break;
06475 
06476   case 136:
06477 
06478 /* Line 1464 of yacc.c  */
06479 #line 1691 "src/parse.y"
06480     { (yyval.id) = intern_c('/');   ;}
06481     break;
06482 
06483   case 137:
06484 
06485 /* Line 1464 of yacc.c  */
06486 #line 1692 "src/parse.y"
06487     { (yyval.id) = intern_c('%');   ;}
06488     break;
06489 
06490   case 138:
06491 
06492 /* Line 1464 of yacc.c  */
06493 #line 1693 "src/parse.y"
06494     { (yyval.id) = intern("**",2);  ;}
06495     break;
06496 
06497   case 139:
06498 
06499 /* Line 1464 of yacc.c  */
06500 #line 1694 "src/parse.y"
06501     { (yyval.id) = intern_c('!');   ;}
06502     break;
06503 
06504   case 140:
06505 
06506 /* Line 1464 of yacc.c  */
06507 #line 1695 "src/parse.y"
06508     { (yyval.id) = intern_c('~');   ;}
06509     break;
06510 
06511   case 141:
06512 
06513 /* Line 1464 of yacc.c  */
06514 #line 1696 "src/parse.y"
06515     { (yyval.id) = intern("+@",2);  ;}
06516     break;
06517 
06518   case 142:
06519 
06520 /* Line 1464 of yacc.c  */
06521 #line 1697 "src/parse.y"
06522     { (yyval.id) = intern("-@",2);  ;}
06523     break;
06524 
06525   case 143:
06526 
06527 /* Line 1464 of yacc.c  */
06528 #line 1698 "src/parse.y"
06529     { (yyval.id) = intern("[]",2);  ;}
06530     break;
06531 
06532   case 144:
06533 
06534 /* Line 1464 of yacc.c  */
06535 #line 1699 "src/parse.y"
06536     { (yyval.id) = intern("[]=",3); ;}
06537     break;
06538 
06539   case 145:
06540 
06541 /* Line 1464 of yacc.c  */
06542 #line 1700 "src/parse.y"
06543     { (yyval.id) = intern_c('`');   ;}
06544     break;
06545 
06546   case 186:
06547 
06548 /* Line 1464 of yacc.c  */
06549 #line 1718 "src/parse.y"
06550     {
06551                       (yyval.nd) = new_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
06552                     ;}
06553     break;
06554 
06555   case 187:
06556 
06557 /* Line 1464 of yacc.c  */
06558 #line 1722 "src/parse.y"
06559     {
06560                       (yyval.nd) = new_asgn(p, (yyvsp[(1) - (5)].nd), new_rescue(p, (yyvsp[(3) - (5)].nd), list1(list3(0, 0, (yyvsp[(5) - (5)].nd))), 0));
06561                     ;}
06562     break;
06563 
06564   case 188:
06565 
06566 /* Line 1464 of yacc.c  */
06567 #line 1726 "src/parse.y"
06568     {
06569                       (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (3)].nd), (yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].nd));
06570                     ;}
06571     break;
06572 
06573   case 189:
06574 
06575 /* Line 1464 of yacc.c  */
06576 #line 1730 "src/parse.y"
06577     {
06578                       (yyval.nd) = new_op_asgn(p, (yyvsp[(1) - (5)].nd), (yyvsp[(2) - (5)].id), new_rescue(p, (yyvsp[(3) - (5)].nd), list1(list3(0, 0, (yyvsp[(5) - (5)].nd))), 0));
06579                     ;}
06580     break;
06581 
06582   case 190:
06583 
06584 /* Line 1464 of yacc.c  */
06585 #line 1734 "src/parse.y"
06586     {
06587                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (6)].nd), intern("[]",2), (yyvsp[(3) - (6)].nd)), (yyvsp[(5) - (6)].id), (yyvsp[(6) - (6)].nd));
06588                     ;}
06589     break;
06590 
06591   case 191:
06592 
06593 /* Line 1464 of yacc.c  */
06594 #line 1738 "src/parse.y"
06595     {
06596                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd));
06597                     ;}
06598     break;
06599 
06600   case 192:
06601 
06602 /* Line 1464 of yacc.c  */
06603 #line 1742 "src/parse.y"
06604     {
06605                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd));
06606                     ;}
06607     break;
06608 
06609   case 193:
06610 
06611 /* Line 1464 of yacc.c  */
06612 #line 1746 "src/parse.y"
06613     {
06614                       (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), 0), (yyvsp[(4) - (5)].id), (yyvsp[(5) - (5)].nd));
06615                     ;}
06616     break;
06617 
06618   case 194:
06619 
06620 /* Line 1464 of yacc.c  */
06621 #line 1750 "src/parse.y"
06622     {
06623                       yyerror(p, "constant re-assignment");
06624                       (yyval.nd) = new_begin(p, 0);
06625                     ;}
06626     break;
06627 
06628   case 195:
06629 
06630 /* Line 1464 of yacc.c  */
06631 #line 1755 "src/parse.y"
06632     {
06633                       yyerror(p, "constant re-assignment");
06634                       (yyval.nd) = new_begin(p, 0);
06635                     ;}
06636     break;
06637 
06638   case 196:
06639 
06640 /* Line 1464 of yacc.c  */
06641 #line 1760 "src/parse.y"
06642     {
06643                       backref_error(p, (yyvsp[(1) - (3)].nd));
06644                       (yyval.nd) = new_begin(p, 0);
06645                     ;}
06646     break;
06647 
06648   case 197:
06649 
06650 /* Line 1464 of yacc.c  */
06651 #line 1765 "src/parse.y"
06652     {
06653                       (yyval.nd) = new_dot2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
06654                     ;}
06655     break;
06656 
06657   case 198:
06658 
06659 /* Line 1464 of yacc.c  */
06660 #line 1769 "src/parse.y"
06661     {
06662                       (yyval.nd) = new_dot3(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
06663                     ;}
06664     break;
06665 
06666   case 199:
06667 
06668 /* Line 1464 of yacc.c  */
06669 #line 1773 "src/parse.y"
06670     {
06671                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "+", (yyvsp[(3) - (3)].nd));
06672                     ;}
06673     break;
06674 
06675   case 200:
06676 
06677 /* Line 1464 of yacc.c  */
06678 #line 1777 "src/parse.y"
06679     {
06680                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "-", (yyvsp[(3) - (3)].nd));
06681                     ;}
06682     break;
06683 
06684   case 201:
06685 
06686 /* Line 1464 of yacc.c  */
06687 #line 1781 "src/parse.y"
06688     {
06689                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "*", (yyvsp[(3) - (3)].nd));
06690                     ;}
06691     break;
06692 
06693   case 202:
06694 
06695 /* Line 1464 of yacc.c  */
06696 #line 1785 "src/parse.y"
06697     {
06698                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "/", (yyvsp[(3) - (3)].nd));
06699                     ;}
06700     break;
06701 
06702   case 203:
06703 
06704 /* Line 1464 of yacc.c  */
06705 #line 1789 "src/parse.y"
06706     {
06707                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "%", (yyvsp[(3) - (3)].nd));
06708                     ;}
06709     break;
06710 
06711   case 204:
06712 
06713 /* Line 1464 of yacc.c  */
06714 #line 1793 "src/parse.y"
06715     {
06716                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "**", (yyvsp[(3) - (3)].nd));
06717                     ;}
06718     break;
06719 
06720   case 205:
06721 
06722 /* Line 1464 of yacc.c  */
06723 #line 1797 "src/parse.y"
06724     {
06725                       (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[(2) - (4)].nd), "**", (yyvsp[(4) - (4)].nd)), "-@");
06726                     ;}
06727     break;
06728 
06729   case 206:
06730 
06731 /* Line 1464 of yacc.c  */
06732 #line 1801 "src/parse.y"
06733     {
06734                       (yyval.nd) = call_uni_op(p, call_bin_op(p, (yyvsp[(2) - (4)].nd), "**", (yyvsp[(4) - (4)].nd)), "-@");
06735                     ;}
06736     break;
06737 
06738   case 207:
06739 
06740 /* Line 1464 of yacc.c  */
06741 #line 1805 "src/parse.y"
06742     {
06743                       (yyval.nd) = call_uni_op(p, (yyvsp[(2) - (2)].nd), "+@");
06744                     ;}
06745     break;
06746 
06747   case 208:
06748 
06749 /* Line 1464 of yacc.c  */
06750 #line 1809 "src/parse.y"
06751     {
06752                       (yyval.nd) = call_uni_op(p, (yyvsp[(2) - (2)].nd), "-@");
06753                     ;}
06754     break;
06755 
06756   case 209:
06757 
06758 /* Line 1464 of yacc.c  */
06759 #line 1813 "src/parse.y"
06760     {
06761                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "|", (yyvsp[(3) - (3)].nd));
06762                     ;}
06763     break;
06764 
06765   case 210:
06766 
06767 /* Line 1464 of yacc.c  */
06768 #line 1817 "src/parse.y"
06769     {
06770                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "^", (yyvsp[(3) - (3)].nd));
06771                     ;}
06772     break;
06773 
06774   case 211:
06775 
06776 /* Line 1464 of yacc.c  */
06777 #line 1821 "src/parse.y"
06778     {
06779                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "&", (yyvsp[(3) - (3)].nd));
06780                     ;}
06781     break;
06782 
06783   case 212:
06784 
06785 /* Line 1464 of yacc.c  */
06786 #line 1825 "src/parse.y"
06787     {
06788                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<=>", (yyvsp[(3) - (3)].nd));
06789                     ;}
06790     break;
06791 
06792   case 213:
06793 
06794 /* Line 1464 of yacc.c  */
06795 #line 1829 "src/parse.y"
06796     {
06797                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">", (yyvsp[(3) - (3)].nd));
06798                     ;}
06799     break;
06800 
06801   case 214:
06802 
06803 /* Line 1464 of yacc.c  */
06804 #line 1833 "src/parse.y"
06805     {
06806                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">=", (yyvsp[(3) - (3)].nd));
06807                     ;}
06808     break;
06809 
06810   case 215:
06811 
06812 /* Line 1464 of yacc.c  */
06813 #line 1837 "src/parse.y"
06814     {
06815                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<", (yyvsp[(3) - (3)].nd));
06816                     ;}
06817     break;
06818 
06819   case 216:
06820 
06821 /* Line 1464 of yacc.c  */
06822 #line 1841 "src/parse.y"
06823     {
06824                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<=", (yyvsp[(3) - (3)].nd));
06825                     ;}
06826     break;
06827 
06828   case 217:
06829 
06830 /* Line 1464 of yacc.c  */
06831 #line 1845 "src/parse.y"
06832     {
06833                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "==", (yyvsp[(3) - (3)].nd));
06834                     ;}
06835     break;
06836 
06837   case 218:
06838 
06839 /* Line 1464 of yacc.c  */
06840 #line 1849 "src/parse.y"
06841     {
06842                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "===", (yyvsp[(3) - (3)].nd));
06843                     ;}
06844     break;
06845 
06846   case 219:
06847 
06848 /* Line 1464 of yacc.c  */
06849 #line 1853 "src/parse.y"
06850     {
06851                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "!=", (yyvsp[(3) - (3)].nd));
06852                     ;}
06853     break;
06854 
06855   case 220:
06856 
06857 /* Line 1464 of yacc.c  */
06858 #line 1857 "src/parse.y"
06859     {
06860                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "=~", (yyvsp[(3) - (3)].nd));
06861                     ;}
06862     break;
06863 
06864   case 221:
06865 
06866 /* Line 1464 of yacc.c  */
06867 #line 1861 "src/parse.y"
06868     {
06869                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "!~", (yyvsp[(3) - (3)].nd));
06870                     ;}
06871     break;
06872 
06873   case 222:
06874 
06875 /* Line 1464 of yacc.c  */
06876 #line 1865 "src/parse.y"
06877     {
06878                       (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "!");
06879                     ;}
06880     break;
06881 
06882   case 223:
06883 
06884 /* Line 1464 of yacc.c  */
06885 #line 1869 "src/parse.y"
06886     {
06887                       (yyval.nd) = call_uni_op(p, cond((yyvsp[(2) - (2)].nd)), "~");
06888                     ;}
06889     break;
06890 
06891   case 224:
06892 
06893 /* Line 1464 of yacc.c  */
06894 #line 1873 "src/parse.y"
06895     {
06896                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), "<<", (yyvsp[(3) - (3)].nd));
06897                     ;}
06898     break;
06899 
06900   case 225:
06901 
06902 /* Line 1464 of yacc.c  */
06903 #line 1877 "src/parse.y"
06904     {
06905                       (yyval.nd) = call_bin_op(p, (yyvsp[(1) - (3)].nd), ">>", (yyvsp[(3) - (3)].nd));
06906                     ;}
06907     break;
06908 
06909   case 226:
06910 
06911 /* Line 1464 of yacc.c  */
06912 #line 1881 "src/parse.y"
06913     {
06914                       (yyval.nd) = new_and(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
06915                     ;}
06916     break;
06917 
06918   case 227:
06919 
06920 /* Line 1464 of yacc.c  */
06921 #line 1885 "src/parse.y"
06922     {
06923                       (yyval.nd) = new_or(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
06924                     ;}
06925     break;
06926 
06927   case 228:
06928 
06929 /* Line 1464 of yacc.c  */
06930 #line 1889 "src/parse.y"
06931     {
06932                       (yyval.nd) = new_if(p, cond((yyvsp[(1) - (6)].nd)), (yyvsp[(3) - (6)].nd), (yyvsp[(6) - (6)].nd));
06933                     ;}
06934     break;
06935 
06936   case 229:
06937 
06938 /* Line 1464 of yacc.c  */
06939 #line 1893 "src/parse.y"
06940     {
06941                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
06942                     ;}
06943     break;
06944 
06945   case 230:
06946 
06947 /* Line 1464 of yacc.c  */
06948 #line 1899 "src/parse.y"
06949     {
06950                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
06951                       if (!(yyval.nd)) (yyval.nd) = new_nil(p);
06952                     ;}
06953     break;
06954 
06955   case 232:
06956 
06957 /* Line 1464 of yacc.c  */
06958 #line 1907 "src/parse.y"
06959     {
06960                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
06961                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd));
06962                     ;}
06963     break;
06964 
06965   case 233:
06966 
06967 /* Line 1464 of yacc.c  */
06968 #line 1912 "src/parse.y"
06969     {
06970                       (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd)));
06971                     ;}
06972     break;
06973 
06974   case 234:
06975 
06976 /* Line 1464 of yacc.c  */
06977 #line 1916 "src/parse.y"
06978     {
06979                       (yyval.nd) = cons(new_hash(p, (yyvsp[(1) - (2)].nd)), 0);
06980                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd));
06981                     ;}
06982     break;
06983 
06984   case 235:
06985 
06986 /* Line 1464 of yacc.c  */
06987 #line 1923 "src/parse.y"
06988     {
06989                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
06990                     ;}
06991     break;
06992 
06993   case 240:
06994 
06995 /* Line 1464 of yacc.c  */
06996 #line 1935 "src/parse.y"
06997     {
06998                       (yyval.nd) = cons((yyvsp[(1) - (2)].nd),0);
06999                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd));
07000                     ;}
07001     break;
07002 
07003   case 241:
07004 
07005 /* Line 1464 of yacc.c  */
07006 #line 1940 "src/parse.y"
07007     {
07008                       (yyval.nd) = cons(push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))), 0);
07009                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (4)].nd));
07010                     ;}
07011     break;
07012 
07013   case 242:
07014 
07015 /* Line 1464 of yacc.c  */
07016 #line 1945 "src/parse.y"
07017     {
07018                       (yyval.nd) = cons(list1(new_hash(p, (yyvsp[(1) - (2)].nd))), 0);
07019                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd));
07020                     ;}
07021     break;
07022 
07023   case 243:
07024 
07025 /* Line 1464 of yacc.c  */
07026 #line 1952 "src/parse.y"
07027     {
07028                       (yyval.nd) = cons(list1((yyvsp[(1) - (1)].nd)), 0);
07029                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd));
07030                     ;}
07031     break;
07032 
07033   case 244:
07034 
07035 /* Line 1464 of yacc.c  */
07036 #line 1957 "src/parse.y"
07037     {
07038                       (yyval.nd) = cons((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
07039                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd));
07040                     ;}
07041     break;
07042 
07043   case 245:
07044 
07045 /* Line 1464 of yacc.c  */
07046 #line 1962 "src/parse.y"
07047     {
07048                       (yyval.nd) = cons(list1(new_hash(p, (yyvsp[(1) - (2)].nd))), (yyvsp[(2) - (2)].nd));
07049                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (2)].nd));
07050                     ;}
07051     break;
07052 
07053   case 246:
07054 
07055 /* Line 1464 of yacc.c  */
07056 #line 1967 "src/parse.y"
07057     {
07058                       (yyval.nd) = cons(push((yyvsp[(1) - (4)].nd), new_hash(p, (yyvsp[(3) - (4)].nd))), (yyvsp[(4) - (4)].nd));
07059                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (4)].nd));
07060                     ;}
07061     break;
07062 
07063   case 247:
07064 
07065 /* Line 1464 of yacc.c  */
07066 #line 1972 "src/parse.y"
07067     {
07068                       (yyval.nd) = cons(0, (yyvsp[(1) - (1)].nd));
07069                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd));
07070                     ;}
07071     break;
07072 
07073   case 248:
07074 
07075 /* Line 1464 of yacc.c  */
07076 #line 1978 "src/parse.y"
07077     {
07078                       (yyval.stack) = p->cmdarg_stack;
07079                       CMDARG_PUSH(1);
07080                     ;}
07081     break;
07082 
07083   case 249:
07084 
07085 /* Line 1464 of yacc.c  */
07086 #line 1983 "src/parse.y"
07087     {
07088                       p->cmdarg_stack = (yyvsp[(1) - (2)].stack);
07089                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
07090                     ;}
07091     break;
07092 
07093   case 250:
07094 
07095 /* Line 1464 of yacc.c  */
07096 #line 1990 "src/parse.y"
07097     {
07098                       (yyval.nd) = new_block_arg(p, (yyvsp[(2) - (2)].nd));
07099                     ;}
07100     break;
07101 
07102   case 251:
07103 
07104 /* Line 1464 of yacc.c  */
07105 #line 1996 "src/parse.y"
07106     {
07107                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
07108                     ;}
07109     break;
07110 
07111   case 252:
07112 
07113 /* Line 1464 of yacc.c  */
07114 #line 2000 "src/parse.y"
07115     {
07116                       (yyval.nd) = 0;
07117                     ;}
07118     break;
07119 
07120   case 253:
07121 
07122 /* Line 1464 of yacc.c  */
07123 #line 2006 "src/parse.y"
07124     {
07125                       (yyval.nd) = cons((yyvsp[(1) - (1)].nd), 0);
07126                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd));
07127                     ;}
07128     break;
07129 
07130   case 254:
07131 
07132 /* Line 1464 of yacc.c  */
07133 #line 2011 "src/parse.y"
07134     {
07135                       (yyval.nd) = cons(new_splat(p, (yyvsp[(2) - (2)].nd)), 0);
07136                       NODE_LINENO((yyval.nd), (yyvsp[(2) - (2)].nd));
07137                     ;}
07138     break;
07139 
07140   case 255:
07141 
07142 /* Line 1464 of yacc.c  */
07143 #line 2016 "src/parse.y"
07144     {
07145                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
07146                     ;}
07147     break;
07148 
07149   case 256:
07150 
07151 /* Line 1464 of yacc.c  */
07152 #line 2020 "src/parse.y"
07153     {
07154                       (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_splat(p, (yyvsp[(4) - (4)].nd)));
07155                     ;}
07156     break;
07157 
07158   case 257:
07159 
07160 /* Line 1464 of yacc.c  */
07161 #line 2024 "src/parse.y"
07162     {
07163                       (yyval.nd) = push((yyvsp[(1) - (4)].nd), (yyvsp[(4) - (4)].nd));
07164                     ;}
07165     break;
07166 
07167   case 258:
07168 
07169 /* Line 1464 of yacc.c  */
07170 #line 2028 "src/parse.y"
07171     {
07172                       (yyval.nd) = push((yyvsp[(1) - (5)].nd), new_splat(p, (yyvsp[(5) - (5)].nd)));
07173                     ;}
07174     break;
07175 
07176   case 259:
07177 
07178 /* Line 1464 of yacc.c  */
07179 #line 2034 "src/parse.y"
07180     {
07181                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
07182                     ;}
07183     break;
07184 
07185   case 260:
07186 
07187 /* Line 1464 of yacc.c  */
07188 #line 2038 "src/parse.y"
07189     {
07190                       (yyval.nd) = push((yyvsp[(1) - (4)].nd), new_splat(p, (yyvsp[(4) - (4)].nd)));
07191                     ;}
07192     break;
07193 
07194   case 261:
07195 
07196 /* Line 1464 of yacc.c  */
07197 #line 2042 "src/parse.y"
07198     {
07199                       (yyval.nd) = list1(new_splat(p, (yyvsp[(2) - (2)].nd)));
07200                     ;}
07201     break;
07202 
07203   case 269:
07204 
07205 /* Line 1464 of yacc.c  */
07206 #line 2055 "src/parse.y"
07207     {
07208                       (yyval.nd) = new_fcall(p, (yyvsp[(1) - (1)].id), 0);
07209                     ;}
07210     break;
07211 
07212   case 270:
07213 
07214 /* Line 1464 of yacc.c  */
07215 #line 2059 "src/parse.y"
07216     {
07217                       (yyval.stack) = p->cmdarg_stack;
07218                       p->cmdarg_stack = 0;
07219                     ;}
07220     break;
07221 
07222   case 271:
07223 
07224 /* Line 1464 of yacc.c  */
07225 #line 2065 "src/parse.y"
07226     {
07227                       p->cmdarg_stack = (yyvsp[(2) - (4)].stack);
07228                       (yyval.nd) = (yyvsp[(3) - (4)].nd);
07229                     ;}
07230     break;
07231 
07232   case 272:
07233 
07234 /* Line 1464 of yacc.c  */
07235 #line 2070 "src/parse.y"
07236     {
07237                       (yyval.stack) = p->cmdarg_stack;
07238                       p->cmdarg_stack = 0;
07239                     ;}
07240     break;
07241 
07242   case 273:
07243 
07244 /* Line 1464 of yacc.c  */
07245 #line 2074 "src/parse.y"
07246     {p->lstate = EXPR_ENDARG;;}
07247     break;
07248 
07249   case 274:
07250 
07251 /* Line 1464 of yacc.c  */
07252 #line 2075 "src/parse.y"
07253     {
07254                       p->cmdarg_stack = (yyvsp[(2) - (5)].stack);
07255                       (yyval.nd) = (yyvsp[(3) - (5)].nd);
07256                     ;}
07257     break;
07258 
07259   case 275:
07260 
07261 /* Line 1464 of yacc.c  */
07262 #line 2079 "src/parse.y"
07263     {p->lstate = EXPR_ENDARG;;}
07264     break;
07265 
07266   case 276:
07267 
07268 /* Line 1464 of yacc.c  */
07269 #line 2080 "src/parse.y"
07270     {
07271                       (yyval.nd) = 0;
07272                     ;}
07273     break;
07274 
07275   case 277:
07276 
07277 /* Line 1464 of yacc.c  */
07278 #line 2084 "src/parse.y"
07279     {
07280                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
07281                     ;}
07282     break;
07283 
07284   case 278:
07285 
07286 /* Line 1464 of yacc.c  */
07287 #line 2088 "src/parse.y"
07288     {
07289                       (yyval.nd) = new_colon2(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id));
07290                     ;}
07291     break;
07292 
07293   case 279:
07294 
07295 /* Line 1464 of yacc.c  */
07296 #line 2092 "src/parse.y"
07297     {
07298                       (yyval.nd) = new_colon3(p, (yyvsp[(2) - (2)].id));
07299                     ;}
07300     break;
07301 
07302   case 280:
07303 
07304 /* Line 1464 of yacc.c  */
07305 #line 2096 "src/parse.y"
07306     {
07307                       (yyval.nd) = new_array(p, (yyvsp[(2) - (3)].nd));
07308                       NODE_LINENO((yyval.nd), (yyvsp[(2) - (3)].nd));
07309                     ;}
07310     break;
07311 
07312   case 281:
07313 
07314 /* Line 1464 of yacc.c  */
07315 #line 2101 "src/parse.y"
07316     {
07317                       (yyval.nd) = new_hash(p, (yyvsp[(2) - (3)].nd));
07318                       NODE_LINENO((yyval.nd), (yyvsp[(2) - (3)].nd));
07319                     ;}
07320     break;
07321 
07322   case 282:
07323 
07324 /* Line 1464 of yacc.c  */
07325 #line 2106 "src/parse.y"
07326     {
07327                       (yyval.nd) = new_return(p, 0);
07328                     ;}
07329     break;
07330 
07331   case 283:
07332 
07333 /* Line 1464 of yacc.c  */
07334 #line 2110 "src/parse.y"
07335     {
07336                       (yyval.nd) = new_yield(p, (yyvsp[(3) - (4)].nd));
07337                     ;}
07338     break;
07339 
07340   case 284:
07341 
07342 /* Line 1464 of yacc.c  */
07343 #line 2114 "src/parse.y"
07344     {
07345                       (yyval.nd) = new_yield(p, 0);
07346                     ;}
07347     break;
07348 
07349   case 285:
07350 
07351 /* Line 1464 of yacc.c  */
07352 #line 2118 "src/parse.y"
07353     {
07354                       (yyval.nd) = new_yield(p, 0);
07355                     ;}
07356     break;
07357 
07358   case 286:
07359 
07360 /* Line 1464 of yacc.c  */
07361 #line 2122 "src/parse.y"
07362     {
07363                       (yyval.nd) = call_uni_op(p, cond((yyvsp[(3) - (4)].nd)), "!");
07364                     ;}
07365     break;
07366 
07367   case 287:
07368 
07369 /* Line 1464 of yacc.c  */
07370 #line 2126 "src/parse.y"
07371     {
07372                       (yyval.nd) = call_uni_op(p, new_nil(p), "!");
07373                     ;}
07374     break;
07375 
07376   case 288:
07377 
07378 /* Line 1464 of yacc.c  */
07379 #line 2130 "src/parse.y"
07380     {
07381                       (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), cons(0, (yyvsp[(2) - (2)].nd)));
07382                     ;}
07383     break;
07384 
07385   case 290:
07386 
07387 /* Line 1464 of yacc.c  */
07388 #line 2135 "src/parse.y"
07389     {
07390                       call_with_block(p, (yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
07391                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
07392                     ;}
07393     break;
07394 
07395   case 291:
07396 
07397 /* Line 1464 of yacc.c  */
07398 #line 2140 "src/parse.y"
07399     {
07400                       local_nest(p);
07401                       (yyval.num) = p->lpar_beg;
07402                       p->lpar_beg = ++p->paren_nest;
07403                     ;}
07404     break;
07405 
07406   case 292:
07407 
07408 /* Line 1464 of yacc.c  */
07409 #line 2147 "src/parse.y"
07410     {
07411                       p->lpar_beg = (yyvsp[(2) - (4)].num);
07412                       (yyval.nd) = new_lambda(p, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].nd));
07413                       local_unnest(p);
07414                     ;}
07415     break;
07416 
07417   case 293:
07418 
07419 /* Line 1464 of yacc.c  */
07420 #line 2156 "src/parse.y"
07421     {
07422                       (yyval.nd) = new_if(p, cond((yyvsp[(2) - (6)].nd)), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd));
07423                       SET_LINENO((yyval.nd), (yyvsp[(1) - (6)].num));
07424                     ;}
07425     break;
07426 
07427   case 294:
07428 
07429 /* Line 1464 of yacc.c  */
07430 #line 2164 "src/parse.y"
07431     {
07432                       (yyval.nd) = new_unless(p, cond((yyvsp[(2) - (6)].nd)), (yyvsp[(4) - (6)].nd), (yyvsp[(5) - (6)].nd));
07433                       SET_LINENO((yyval.nd), (yyvsp[(1) - (6)].num));
07434                     ;}
07435     break;
07436 
07437   case 295:
07438 
07439 /* Line 1464 of yacc.c  */
07440 #line 2168 "src/parse.y"
07441     {COND_PUSH(1);;}
07442     break;
07443 
07444   case 296:
07445 
07446 /* Line 1464 of yacc.c  */
07447 #line 2168 "src/parse.y"
07448     {COND_POP();;}
07449     break;
07450 
07451   case 297:
07452 
07453 /* Line 1464 of yacc.c  */
07454 #line 2171 "src/parse.y"
07455     {
07456                       (yyval.nd) = new_while(p, cond((yyvsp[(3) - (7)].nd)), (yyvsp[(6) - (7)].nd));
07457                       SET_LINENO((yyval.nd), (yyvsp[(1) - (7)].num));
07458                     ;}
07459     break;
07460 
07461   case 298:
07462 
07463 /* Line 1464 of yacc.c  */
07464 #line 2175 "src/parse.y"
07465     {COND_PUSH(1);;}
07466     break;
07467 
07468   case 299:
07469 
07470 /* Line 1464 of yacc.c  */
07471 #line 2175 "src/parse.y"
07472     {COND_POP();;}
07473     break;
07474 
07475   case 300:
07476 
07477 /* Line 1464 of yacc.c  */
07478 #line 2178 "src/parse.y"
07479     {
07480                       (yyval.nd) = new_until(p, cond((yyvsp[(3) - (7)].nd)), (yyvsp[(6) - (7)].nd));
07481                       SET_LINENO((yyval.nd), (yyvsp[(1) - (7)].num));
07482                     ;}
07483     break;
07484 
07485   case 301:
07486 
07487 /* Line 1464 of yacc.c  */
07488 #line 2185 "src/parse.y"
07489     {
07490                       (yyval.nd) = new_case(p, (yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd));
07491                     ;}
07492     break;
07493 
07494   case 302:
07495 
07496 /* Line 1464 of yacc.c  */
07497 #line 2189 "src/parse.y"
07498     {
07499                       (yyval.nd) = new_case(p, 0, (yyvsp[(3) - (4)].nd));
07500                     ;}
07501     break;
07502 
07503   case 303:
07504 
07505 /* Line 1464 of yacc.c  */
07506 #line 2193 "src/parse.y"
07507     {COND_PUSH(1);;}
07508     break;
07509 
07510   case 304:
07511 
07512 /* Line 1464 of yacc.c  */
07513 #line 2195 "src/parse.y"
07514     {COND_POP();;}
07515     break;
07516 
07517   case 305:
07518 
07519 /* Line 1464 of yacc.c  */
07520 #line 2198 "src/parse.y"
07521     {
07522                       (yyval.nd) = new_for(p, (yyvsp[(2) - (9)].nd), (yyvsp[(5) - (9)].nd), (yyvsp[(8) - (9)].nd));
07523                       SET_LINENO((yyval.nd), (yyvsp[(1) - (9)].num));
07524                     ;}
07525     break;
07526 
07527   case 306:
07528 
07529 /* Line 1464 of yacc.c  */
07530 #line 2204 "src/parse.y"
07531     {
07532                       if (p->in_def || p->in_single)
07533                         yyerror(p, "class definition in method body");
07534                       (yyval.nd) = local_switch(p);
07535                     ;}
07536     break;
07537 
07538   case 307:
07539 
07540 /* Line 1464 of yacc.c  */
07541 #line 2211 "src/parse.y"
07542     {
07543                       (yyval.nd) = new_class(p, (yyvsp[(2) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].nd));
07544                       SET_LINENO((yyval.nd), (yyvsp[(1) - (6)].num));
07545                       local_resume(p, (yyvsp[(4) - (6)].nd));
07546                     ;}
07547     break;
07548 
07549   case 308:
07550 
07551 /* Line 1464 of yacc.c  */
07552 #line 2218 "src/parse.y"
07553     {
07554                       (yyval.num) = p->in_def;
07555                       p->in_def = 0;
07556                     ;}
07557     break;
07558 
07559   case 309:
07560 
07561 /* Line 1464 of yacc.c  */
07562 #line 2223 "src/parse.y"
07563     {
07564                       (yyval.nd) = cons(local_switch(p), (node*)(intptr_t)p->in_single);
07565                       p->in_single = 0;
07566                     ;}
07567     break;
07568 
07569   case 310:
07570 
07571 /* Line 1464 of yacc.c  */
07572 #line 2229 "src/parse.y"
07573     {
07574                       (yyval.nd) = new_sclass(p, (yyvsp[(3) - (8)].nd), (yyvsp[(7) - (8)].nd));
07575                       SET_LINENO((yyval.nd), (yyvsp[(1) - (8)].num));
07576                       local_resume(p, (yyvsp[(6) - (8)].nd)->car);
07577                       p->in_def = (yyvsp[(4) - (8)].num);
07578                       p->in_single = (int)(intptr_t)(yyvsp[(6) - (8)].nd)->cdr;
07579                     ;}
07580     break;
07581 
07582   case 311:
07583 
07584 /* Line 1464 of yacc.c  */
07585 #line 2238 "src/parse.y"
07586     {
07587                       if (p->in_def || p->in_single)
07588                         yyerror(p, "module definition in method body");
07589                       (yyval.nd) = local_switch(p);
07590                     ;}
07591     break;
07592 
07593   case 312:
07594 
07595 /* Line 1464 of yacc.c  */
07596 #line 2245 "src/parse.y"
07597     {
07598                       (yyval.nd) = new_module(p, (yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd));
07599                       SET_LINENO((yyval.nd), (yyvsp[(1) - (5)].num));
07600                       local_resume(p, (yyvsp[(3) - (5)].nd));
07601                     ;}
07602     break;
07603 
07604   case 313:
07605 
07606 /* Line 1464 of yacc.c  */
07607 #line 2251 "src/parse.y"
07608     {
07609                       (yyval.stack) = p->cmdarg_stack;
07610                       p->cmdarg_stack = 0;
07611                     ;}
07612     break;
07613 
07614   case 314:
07615 
07616 /* Line 1464 of yacc.c  */
07617 #line 2255 "src/parse.y"
07618     {
07619                       p->in_def++;
07620                       (yyval.nd) = local_switch(p);
07621                     ;}
07622     break;
07623 
07624   case 315:
07625 
07626 /* Line 1464 of yacc.c  */
07627 #line 2262 "src/parse.y"
07628     {
07629                       (yyval.nd) = new_def(p, (yyvsp[(2) - (7)].id), (yyvsp[(5) - (7)].nd), (yyvsp[(6) - (7)].nd));
07630                       SET_LINENO((yyval.nd), (yyvsp[(1) - (7)].num));
07631                       local_resume(p, (yyvsp[(4) - (7)].nd));
07632                       p->in_def--;
07633                       p->cmdarg_stack = (yyvsp[(3) - (7)].stack);
07634                     ;}
07635     break;
07636 
07637   case 316:
07638 
07639 /* Line 1464 of yacc.c  */
07640 #line 2270 "src/parse.y"
07641     {
07642                       p->lstate = EXPR_FNAME;
07643                       (yyval.stack) = p->cmdarg_stack;
07644                       p->cmdarg_stack = 0;
07645                     ;}
07646     break;
07647 
07648   case 317:
07649 
07650 /* Line 1464 of yacc.c  */
07651 #line 2276 "src/parse.y"
07652     {
07653                       p->in_single++;
07654                       p->lstate = EXPR_ENDFN; /* force for args */
07655                       (yyval.nd) = local_switch(p);
07656                     ;}
07657     break;
07658 
07659   case 318:
07660 
07661 /* Line 1464 of yacc.c  */
07662 #line 2284 "src/parse.y"
07663     {
07664                       (yyval.nd) = new_sdef(p, (yyvsp[(2) - (9)].nd), (yyvsp[(5) - (9)].id), (yyvsp[(7) - (9)].nd), (yyvsp[(8) - (9)].nd));
07665                       SET_LINENO((yyval.nd), (yyvsp[(1) - (9)].num));
07666                       local_resume(p, (yyvsp[(6) - (9)].nd));
07667                       p->in_single--;
07668                       p->cmdarg_stack = (yyvsp[(4) - (9)].stack);
07669                     ;}
07670     break;
07671 
07672   case 319:
07673 
07674 /* Line 1464 of yacc.c  */
07675 #line 2292 "src/parse.y"
07676     {
07677                       (yyval.nd) = new_break(p, 0);
07678                     ;}
07679     break;
07680 
07681   case 320:
07682 
07683 /* Line 1464 of yacc.c  */
07684 #line 2296 "src/parse.y"
07685     {
07686                       (yyval.nd) = new_next(p, 0);
07687                     ;}
07688     break;
07689 
07690   case 321:
07691 
07692 /* Line 1464 of yacc.c  */
07693 #line 2300 "src/parse.y"
07694     {
07695                       (yyval.nd) = new_redo(p);
07696                     ;}
07697     break;
07698 
07699   case 322:
07700 
07701 /* Line 1464 of yacc.c  */
07702 #line 2304 "src/parse.y"
07703     {
07704                       (yyval.nd) = new_retry(p);
07705                     ;}
07706     break;
07707 
07708   case 323:
07709 
07710 /* Line 1464 of yacc.c  */
07711 #line 2310 "src/parse.y"
07712     {
07713                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
07714                       if (!(yyval.nd)) (yyval.nd) = new_nil(p);
07715                     ;}
07716     break;
07717 
07718   case 330:
07719 
07720 /* Line 1464 of yacc.c  */
07721 #line 2329 "src/parse.y"
07722     {
07723                       (yyval.nd) = new_if(p, cond((yyvsp[(2) - (5)].nd)), (yyvsp[(4) - (5)].nd), (yyvsp[(5) - (5)].nd));
07724                     ;}
07725     break;
07726 
07727   case 332:
07728 
07729 /* Line 1464 of yacc.c  */
07730 #line 2336 "src/parse.y"
07731     {
07732                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
07733                     ;}
07734     break;
07735 
07736   case 333:
07737 
07738 /* Line 1464 of yacc.c  */
07739 #line 2342 "src/parse.y"
07740     {
07741                       (yyval.nd) = list1(list1((yyvsp[(1) - (1)].nd)));
07742                     ;}
07743     break;
07744 
07745   case 335:
07746 
07747 /* Line 1464 of yacc.c  */
07748 #line 2349 "src/parse.y"
07749     {
07750                       (yyval.nd) = new_arg(p, (yyvsp[(1) - (1)].id));
07751                     ;}
07752     break;
07753 
07754   case 336:
07755 
07756 /* Line 1464 of yacc.c  */
07757 #line 2353 "src/parse.y"
07758     {
07759                       (yyval.nd) = new_masgn(p, (yyvsp[(2) - (3)].nd), 0);
07760                     ;}
07761     break;
07762 
07763   case 337:
07764 
07765 /* Line 1464 of yacc.c  */
07766 #line 2359 "src/parse.y"
07767     {
07768                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
07769                     ;}
07770     break;
07771 
07772   case 338:
07773 
07774 /* Line 1464 of yacc.c  */
07775 #line 2363 "src/parse.y"
07776     {
07777                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
07778                     ;}
07779     break;
07780 
07781   case 339:
07782 
07783 /* Line 1464 of yacc.c  */
07784 #line 2369 "src/parse.y"
07785     {
07786                       (yyval.nd) = list3((yyvsp[(1) - (1)].nd),0,0);
07787                     ;}
07788     break;
07789 
07790   case 340:
07791 
07792 /* Line 1464 of yacc.c  */
07793 #line 2373 "src/parse.y"
07794     {
07795                       (yyval.nd) = list3((yyvsp[(1) - (4)].nd), new_arg(p, (yyvsp[(4) - (4)].id)), 0);
07796                     ;}
07797     break;
07798 
07799   case 341:
07800 
07801 /* Line 1464 of yacc.c  */
07802 #line 2377 "src/parse.y"
07803     {
07804                       (yyval.nd) = list3((yyvsp[(1) - (6)].nd), new_arg(p, (yyvsp[(4) - (6)].id)), (yyvsp[(6) - (6)].nd));
07805                     ;}
07806     break;
07807 
07808   case 342:
07809 
07810 /* Line 1464 of yacc.c  */
07811 #line 2381 "src/parse.y"
07812     {
07813                       (yyval.nd) = list3((yyvsp[(1) - (3)].nd), (node*)-1, 0);
07814                     ;}
07815     break;
07816 
07817   case 343:
07818 
07819 /* Line 1464 of yacc.c  */
07820 #line 2385 "src/parse.y"
07821     {
07822                       (yyval.nd) = list3((yyvsp[(1) - (5)].nd), (node*)-1, (yyvsp[(5) - (5)].nd));
07823                     ;}
07824     break;
07825 
07826   case 344:
07827 
07828 /* Line 1464 of yacc.c  */
07829 #line 2389 "src/parse.y"
07830     {
07831                       (yyval.nd) = list3(0, new_arg(p, (yyvsp[(2) - (2)].id)), 0);
07832                     ;}
07833     break;
07834 
07835   case 345:
07836 
07837 /* Line 1464 of yacc.c  */
07838 #line 2393 "src/parse.y"
07839     {
07840                       (yyval.nd) = list3(0, new_arg(p, (yyvsp[(2) - (4)].id)), (yyvsp[(4) - (4)].nd));
07841                     ;}
07842     break;
07843 
07844   case 346:
07845 
07846 /* Line 1464 of yacc.c  */
07847 #line 2397 "src/parse.y"
07848     {
07849                       (yyval.nd) = list3(0, (node*)-1, 0);
07850                     ;}
07851     break;
07852 
07853   case 347:
07854 
07855 /* Line 1464 of yacc.c  */
07856 #line 2401 "src/parse.y"
07857     {
07858                       (yyval.nd) = list3(0, (node*)-1, (yyvsp[(3) - (3)].nd));
07859                     ;}
07860     break;
07861 
07862   case 348:
07863 
07864 /* Line 1464 of yacc.c  */
07865 #line 2407 "src/parse.y"
07866     {
07867                       (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id));
07868                     ;}
07869     break;
07870 
07871   case 349:
07872 
07873 /* Line 1464 of yacc.c  */
07874 #line 2411 "src/parse.y"
07875     {
07876                       (yyval.nd) = new_args(p, (yyvsp[(1) - (8)].nd), (yyvsp[(3) - (8)].nd), (yyvsp[(5) - (8)].id), (yyvsp[(7) - (8)].nd), (yyvsp[(8) - (8)].id));
07877                     ;}
07878     break;
07879 
07880   case 350:
07881 
07882 /* Line 1464 of yacc.c  */
07883 #line 2415 "src/parse.y"
07884     {
07885                       (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd), 0, 0, (yyvsp[(4) - (4)].id));
07886                     ;}
07887     break;
07888 
07889   case 351:
07890 
07891 /* Line 1464 of yacc.c  */
07892 #line 2419 "src/parse.y"
07893     {
07894                       (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), 0, (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
07895                     ;}
07896     break;
07897 
07898   case 352:
07899 
07900 /* Line 1464 of yacc.c  */
07901 #line 2423 "src/parse.y"
07902     {
07903                       (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
07904                     ;}
07905     break;
07906 
07907   case 353:
07908 
07909 /* Line 1464 of yacc.c  */
07910 #line 2427 "src/parse.y"
07911     {
07912                       (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 1, 0, 0);
07913                     ;}
07914     break;
07915 
07916   case 354:
07917 
07918 /* Line 1464 of yacc.c  */
07919 #line 2431 "src/parse.y"
07920     {
07921                       (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), 0, (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
07922                     ;}
07923     break;
07924 
07925   case 355:
07926 
07927 /* Line 1464 of yacc.c  */
07928 #line 2435 "src/parse.y"
07929     {
07930                       (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 0, 0, (yyvsp[(2) - (2)].id));
07931                     ;}
07932     break;
07933 
07934   case 356:
07935 
07936 /* Line 1464 of yacc.c  */
07937 #line 2439 "src/parse.y"
07938     {
07939                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
07940                     ;}
07941     break;
07942 
07943   case 357:
07944 
07945 /* Line 1464 of yacc.c  */
07946 #line 2443 "src/parse.y"
07947     {
07948                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
07949                     ;}
07950     break;
07951 
07952   case 358:
07953 
07954 /* Line 1464 of yacc.c  */
07955 #line 2447 "src/parse.y"
07956     {
07957                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (2)].nd), 0, 0, (yyvsp[(2) - (2)].id));
07958                     ;}
07959     break;
07960 
07961   case 359:
07962 
07963 /* Line 1464 of yacc.c  */
07964 #line 2451 "src/parse.y"
07965     {
07966                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
07967                     ;}
07968     break;
07969 
07970   case 360:
07971 
07972 /* Line 1464 of yacc.c  */
07973 #line 2455 "src/parse.y"
07974     {
07975                       (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (2)].id), 0, (yyvsp[(2) - (2)].id));
07976                     ;}
07977     break;
07978 
07979   case 361:
07980 
07981 /* Line 1464 of yacc.c  */
07982 #line 2459 "src/parse.y"
07983     {
07984                       (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
07985                     ;}
07986     break;
07987 
07988   case 362:
07989 
07990 /* Line 1464 of yacc.c  */
07991 #line 2463 "src/parse.y"
07992     {
07993                       (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[(1) - (1)].id));
07994                     ;}
07995     break;
07996 
07997   case 364:
07998 
07999 /* Line 1464 of yacc.c  */
08000 #line 2470 "src/parse.y"
08001     {
08002                       p->cmd_start = TRUE;
08003                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
08004                     ;}
08005     break;
08006 
08007   case 365:
08008 
08009 /* Line 1464 of yacc.c  */
08010 #line 2477 "src/parse.y"
08011     {
08012                       (yyval.nd) = 0;
08013                     ;}
08014     break;
08015 
08016   case 366:
08017 
08018 /* Line 1464 of yacc.c  */
08019 #line 2481 "src/parse.y"
08020     {
08021                       (yyval.nd) = 0;
08022                     ;}
08023     break;
08024 
08025   case 367:
08026 
08027 /* Line 1464 of yacc.c  */
08028 #line 2485 "src/parse.y"
08029     {
08030                       (yyval.nd) = (yyvsp[(2) - (4)].nd);
08031                     ;}
08032     break;
08033 
08034   case 368:
08035 
08036 /* Line 1464 of yacc.c  */
08037 #line 2492 "src/parse.y"
08038     {
08039                       (yyval.nd) = 0;
08040                     ;}
08041     break;
08042 
08043   case 369:
08044 
08045 /* Line 1464 of yacc.c  */
08046 #line 2496 "src/parse.y"
08047     {
08048                       (yyval.nd) = 0;
08049                     ;}
08050     break;
08051 
08052   case 372:
08053 
08054 /* Line 1464 of yacc.c  */
08055 #line 2506 "src/parse.y"
08056     {
08057                       local_add_f(p, (yyvsp[(1) - (1)].id));
08058                       new_bv(p, (yyvsp[(1) - (1)].id));
08059                     ;}
08060     break;
08061 
08062   case 374:
08063 
08064 /* Line 1464 of yacc.c  */
08065 #line 2514 "src/parse.y"
08066     {
08067                       (yyval.nd) = (yyvsp[(2) - (4)].nd);
08068                     ;}
08069     break;
08070 
08071   case 375:
08072 
08073 /* Line 1464 of yacc.c  */
08074 #line 2518 "src/parse.y"
08075     {
08076                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
08077                     ;}
08078     break;
08079 
08080   case 376:
08081 
08082 /* Line 1464 of yacc.c  */
08083 #line 2524 "src/parse.y"
08084     {
08085                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
08086                     ;}
08087     break;
08088 
08089   case 377:
08090 
08091 /* Line 1464 of yacc.c  */
08092 #line 2528 "src/parse.y"
08093     {
08094                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
08095                     ;}
08096     break;
08097 
08098   case 378:
08099 
08100 /* Line 1464 of yacc.c  */
08101 #line 2534 "src/parse.y"
08102     {
08103                       local_nest(p);
08104                     ;}
08105     break;
08106 
08107   case 379:
08108 
08109 /* Line 1464 of yacc.c  */
08110 #line 2540 "src/parse.y"
08111     {
08112                       (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd));
08113                       local_unnest(p);
08114                     ;}
08115     break;
08116 
08117   case 380:
08118 
08119 /* Line 1464 of yacc.c  */
08120 #line 2547 "src/parse.y"
08121     {
08122                       if ((yyvsp[(1) - (2)].nd)->car == (node*)NODE_YIELD) {
08123                         yyerror(p, "block given to yield");
08124                       }
08125                       else {
08126                         call_with_block(p, (yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
08127                       }
08128                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
08129                     ;}
08130     break;
08131 
08132   case 381:
08133 
08134 /* Line 1464 of yacc.c  */
08135 #line 2557 "src/parse.y"
08136     {
08137                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
08138                     ;}
08139     break;
08140 
08141   case 382:
08142 
08143 /* Line 1464 of yacc.c  */
08144 #line 2561 "src/parse.y"
08145     {
08146                       (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
08147                       call_with_block(p, (yyval.nd), (yyvsp[(5) - (5)].nd));
08148                     ;}
08149     break;
08150 
08151   case 383:
08152 
08153 /* Line 1464 of yacc.c  */
08154 #line 2566 "src/parse.y"
08155     {
08156                       (yyval.nd) = new_call(p, (yyvsp[(1) - (5)].nd), (yyvsp[(3) - (5)].id), (yyvsp[(4) - (5)].nd));
08157                       call_with_block(p, (yyval.nd), (yyvsp[(5) - (5)].nd));
08158                     ;}
08159     break;
08160 
08161   case 384:
08162 
08163 /* Line 1464 of yacc.c  */
08164 #line 2573 "src/parse.y"
08165     {
08166                       (yyval.nd) = new_fcall(p, (yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].nd));
08167                     ;}
08168     break;
08169 
08170   case 385:
08171 
08172 /* Line 1464 of yacc.c  */
08173 #line 2577 "src/parse.y"
08174     {
08175                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
08176                     ;}
08177     break;
08178 
08179   case 386:
08180 
08181 /* Line 1464 of yacc.c  */
08182 #line 2581 "src/parse.y"
08183     {
08184                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), (yyvsp[(4) - (4)].nd));
08185                     ;}
08186     break;
08187 
08188   case 387:
08189 
08190 /* Line 1464 of yacc.c  */
08191 #line 2585 "src/parse.y"
08192     {
08193                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].id), 0);
08194                     ;}
08195     break;
08196 
08197   case 388:
08198 
08199 /* Line 1464 of yacc.c  */
08200 #line 2589 "src/parse.y"
08201     {
08202                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), intern("call",4), (yyvsp[(3) - (3)].nd));
08203                     ;}
08204     break;
08205 
08206   case 389:
08207 
08208 /* Line 1464 of yacc.c  */
08209 #line 2593 "src/parse.y"
08210     {
08211                       (yyval.nd) = new_call(p, (yyvsp[(1) - (3)].nd), intern("call",4), (yyvsp[(3) - (3)].nd));
08212                     ;}
08213     break;
08214 
08215   case 390:
08216 
08217 /* Line 1464 of yacc.c  */
08218 #line 2597 "src/parse.y"
08219     {
08220                       (yyval.nd) = new_super(p, (yyvsp[(2) - (2)].nd));
08221                     ;}
08222     break;
08223 
08224   case 391:
08225 
08226 /* Line 1464 of yacc.c  */
08227 #line 2601 "src/parse.y"
08228     {
08229                       (yyval.nd) = new_zsuper(p);
08230                     ;}
08231     break;
08232 
08233   case 392:
08234 
08235 /* Line 1464 of yacc.c  */
08236 #line 2605 "src/parse.y"
08237     {
08238                       (yyval.nd) = new_call(p, (yyvsp[(1) - (4)].nd), intern("[]",2), (yyvsp[(3) - (4)].nd));
08239                     ;}
08240     break;
08241 
08242   case 393:
08243 
08244 /* Line 1464 of yacc.c  */
08245 #line 2611 "src/parse.y"
08246     {
08247                       local_nest(p);
08248                       (yyval.num) = p->lineno;
08249                     ;}
08250     break;
08251 
08252   case 394:
08253 
08254 /* Line 1464 of yacc.c  */
08255 #line 2617 "src/parse.y"
08256     {
08257                       (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd));
08258                       SET_LINENO((yyval.nd), (yyvsp[(2) - (5)].num));
08259                       local_unnest(p);
08260                     ;}
08261     break;
08262 
08263   case 395:
08264 
08265 /* Line 1464 of yacc.c  */
08266 #line 2623 "src/parse.y"
08267     {
08268                       local_nest(p);
08269                       (yyval.num) = p->lineno;
08270                     ;}
08271     break;
08272 
08273   case 396:
08274 
08275 /* Line 1464 of yacc.c  */
08276 #line 2629 "src/parse.y"
08277     {
08278                       (yyval.nd) = new_block(p,(yyvsp[(3) - (5)].nd),(yyvsp[(4) - (5)].nd));
08279                       SET_LINENO((yyval.nd), (yyvsp[(2) - (5)].num));
08280                       local_unnest(p);
08281                     ;}
08282     break;
08283 
08284   case 397:
08285 
08286 /* Line 1464 of yacc.c  */
08287 #line 2639 "src/parse.y"
08288     {
08289                       (yyval.nd) = cons(cons((yyvsp[(2) - (5)].nd), (yyvsp[(4) - (5)].nd)), (yyvsp[(5) - (5)].nd));
08290                     ;}
08291     break;
08292 
08293   case 398:
08294 
08295 /* Line 1464 of yacc.c  */
08296 #line 2645 "src/parse.y"
08297     {
08298                       if ((yyvsp[(1) - (1)].nd)) {
08299                         (yyval.nd) = cons(cons(0, (yyvsp[(1) - (1)].nd)), 0);
08300                       }
08301                       else {
08302                         (yyval.nd) = 0;
08303                       }
08304                     ;}
08305     break;
08306 
08307   case 400:
08308 
08309 /* Line 1464 of yacc.c  */
08310 #line 2659 "src/parse.y"
08311     {
08312                       (yyval.nd) = list1(list3((yyvsp[(2) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].nd)));
08313                       if ((yyvsp[(6) - (6)].nd)) (yyval.nd) = append((yyval.nd), (yyvsp[(6) - (6)].nd));
08314                     ;}
08315     break;
08316 
08317   case 402:
08318 
08319 /* Line 1464 of yacc.c  */
08320 #line 2667 "src/parse.y"
08321     {
08322                         (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
08323                     ;}
08324     break;
08325 
08326   case 405:
08327 
08328 /* Line 1464 of yacc.c  */
08329 #line 2675 "src/parse.y"
08330     {
08331                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
08332                     ;}
08333     break;
08334 
08335   case 407:
08336 
08337 /* Line 1464 of yacc.c  */
08338 #line 2682 "src/parse.y"
08339     {
08340                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
08341                     ;}
08342     break;
08343 
08344   case 415:
08345 
08346 /* Line 1464 of yacc.c  */
08347 #line 2697 "src/parse.y"
08348     {
08349                       (yyval.nd) = (yyvsp[(2) - (2)].nd);
08350                     ;}
08351     break;
08352 
08353   case 416:
08354 
08355 /* Line 1464 of yacc.c  */
08356 #line 2701 "src/parse.y"
08357     {
08358                       (yyval.nd) = new_dstr(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
08359                     ;}
08360     break;
08361 
08362   case 418:
08363 
08364 /* Line 1464 of yacc.c  */
08365 #line 2708 "src/parse.y"
08366     {
08367                       (yyval.nd) = append((yyvsp[(1) - (2)].nd), (yyvsp[(2) - (2)].nd));
08368                     ;}
08369     break;
08370 
08371   case 419:
08372 
08373 /* Line 1464 of yacc.c  */
08374 #line 2714 "src/parse.y"
08375     {
08376                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
08377                     ;}
08378     break;
08379 
08380   case 420:
08381 
08382 /* Line 1464 of yacc.c  */
08383 #line 2718 "src/parse.y"
08384     {
08385                       (yyval.nd) = p->lex_strterm;
08386                       p->lex_strterm = NULL;
08387                     ;}
08388     break;
08389 
08390   case 421:
08391 
08392 /* Line 1464 of yacc.c  */
08393 #line 2724 "src/parse.y"
08394     {
08395                       p->lex_strterm = (yyvsp[(2) - (4)].nd);
08396                       (yyval.nd) = list2((yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd));
08397                     ;}
08398     break;
08399 
08400   case 422:
08401 
08402 /* Line 1464 of yacc.c  */
08403 #line 2729 "src/parse.y"
08404     {
08405                       (yyval.nd) = list1(new_literal_delim(p));
08406                     ;}
08407     break;
08408 
08409   case 423:
08410 
08411 /* Line 1464 of yacc.c  */
08412 #line 2733 "src/parse.y"
08413     {
08414                       (yyval.nd) = list1(new_literal_delim(p));
08415                     ;}
08416     break;
08417 
08418   case 424:
08419 
08420 /* Line 1464 of yacc.c  */
08421 #line 2739 "src/parse.y"
08422     {
08423                         (yyval.nd) = (yyvsp[(2) - (2)].nd);
08424                     ;}
08425     break;
08426 
08427   case 425:
08428 
08429 /* Line 1464 of yacc.c  */
08430 #line 2743 "src/parse.y"
08431     {
08432                       (yyval.nd) = new_dxstr(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
08433                     ;}
08434     break;
08435 
08436   case 426:
08437 
08438 /* Line 1464 of yacc.c  */
08439 #line 2749 "src/parse.y"
08440     {
08441                         (yyval.nd) = (yyvsp[(2) - (2)].nd);
08442                     ;}
08443     break;
08444 
08445   case 427:
08446 
08447 /* Line 1464 of yacc.c  */
08448 #line 2753 "src/parse.y"
08449     {
08450                       (yyval.nd) = new_dregx(p, (yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd));
08451                     ;}
08452     break;
08453 
08454   case 433:
08455 
08456 /* Line 1464 of yacc.c  */
08457 #line 2770 "src/parse.y"
08458     {
08459                       parser_heredoc_info * inf = parsing_heredoc_inf(p);
08460                       inf->doc = push(inf->doc, new_str(p, "", 0));
08461                       heredoc_end(p);
08462                     ;}
08463     break;
08464 
08465   case 434:
08466 
08467 /* Line 1464 of yacc.c  */
08468 #line 2776 "src/parse.y"
08469     {
08470                       heredoc_end(p);
08471                     ;}
08472     break;
08473 
08474   case 437:
08475 
08476 /* Line 1464 of yacc.c  */
08477 #line 2786 "src/parse.y"
08478     {
08479                       parser_heredoc_info * inf = parsing_heredoc_inf(p);
08480                       inf->doc = push(inf->doc, (yyvsp[(1) - (1)].nd));
08481                       heredoc_treat_nextline(p);
08482                     ;}
08483     break;
08484 
08485   case 438:
08486 
08487 /* Line 1464 of yacc.c  */
08488 #line 2792 "src/parse.y"
08489     {
08490                       (yyval.nd) = p->lex_strterm;
08491                       p->lex_strterm = NULL;
08492                     ;}
08493     break;
08494 
08495   case 439:
08496 
08497 /* Line 1464 of yacc.c  */
08498 #line 2798 "src/parse.y"
08499     {
08500                       parser_heredoc_info * inf = parsing_heredoc_inf(p);
08501                       p->lex_strterm = (yyvsp[(2) - (4)].nd);
08502                       inf->doc = push(push(inf->doc, (yyvsp[(1) - (4)].nd)), (yyvsp[(3) - (4)].nd));
08503                     ;}
08504     break;
08505 
08506   case 440:
08507 
08508 /* Line 1464 of yacc.c  */
08509 #line 2806 "src/parse.y"
08510     {
08511                       (yyval.nd) = new_words(p, list1((yyvsp[(2) - (2)].nd)));
08512                     ;}
08513     break;
08514 
08515   case 441:
08516 
08517 /* Line 1464 of yacc.c  */
08518 #line 2810 "src/parse.y"
08519     {
08520                       (yyval.nd) = new_words(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
08521                     ;}
08522     break;
08523 
08524   case 442:
08525 
08526 /* Line 1464 of yacc.c  */
08527 #line 2817 "src/parse.y"
08528     {
08529                       (yyval.nd) = new_sym(p, (yyvsp[(1) - (1)].id));
08530                     ;}
08531     break;
08532 
08533   case 443:
08534 
08535 /* Line 1464 of yacc.c  */
08536 #line 2821 "src/parse.y"
08537     {
08538                       p->lstate = EXPR_END;
08539                       (yyval.nd) = new_dsym(p, push((yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].nd)));
08540                     ;}
08541     break;
08542 
08543   case 444:
08544 
08545 /* Line 1464 of yacc.c  */
08546 #line 2828 "src/parse.y"
08547     {
08548                       p->lstate = EXPR_END;
08549                       (yyval.id) = (yyvsp[(2) - (2)].id);
08550                     ;}
08551     break;
08552 
08553   case 449:
08554 
08555 /* Line 1464 of yacc.c  */
08556 #line 2839 "src/parse.y"
08557     {
08558                       (yyval.id) = new_strsym(p, (yyvsp[(1) - (1)].nd));
08559                     ;}
08560     break;
08561 
08562   case 450:
08563 
08564 /* Line 1464 of yacc.c  */
08565 #line 2843 "src/parse.y"
08566     {
08567                       (yyval.id) = new_strsym(p, (yyvsp[(2) - (2)].nd));
08568                     ;}
08569     break;
08570 
08571   case 451:
08572 
08573 /* Line 1464 of yacc.c  */
08574 #line 2849 "src/parse.y"
08575     {
08576                       (yyval.nd) = new_symbols(p, list1((yyvsp[(2) - (2)].nd)));
08577                     ;}
08578     break;
08579 
08580   case 452:
08581 
08582 /* Line 1464 of yacc.c  */
08583 #line 2853 "src/parse.y"
08584     {
08585                       (yyval.nd) = new_symbols(p, push((yyvsp[(2) - (3)].nd), (yyvsp[(3) - (3)].nd)));
08586                     ;}
08587     break;
08588 
08589   case 455:
08590 
08591 /* Line 1464 of yacc.c  */
08592 #line 2861 "src/parse.y"
08593     {
08594                       (yyval.nd) = negate_lit(p, (yyvsp[(2) - (2)].nd));
08595                     ;}
08596     break;
08597 
08598   case 456:
08599 
08600 /* Line 1464 of yacc.c  */
08601 #line 2865 "src/parse.y"
08602     {
08603                       (yyval.nd) = negate_lit(p, (yyvsp[(2) - (2)].nd));
08604                     ;}
08605     break;
08606 
08607   case 457:
08608 
08609 /* Line 1464 of yacc.c  */
08610 #line 2871 "src/parse.y"
08611     {
08612                       (yyval.nd) = new_lvar(p, (yyvsp[(1) - (1)].id));
08613                     ;}
08614     break;
08615 
08616   case 458:
08617 
08618 /* Line 1464 of yacc.c  */
08619 #line 2875 "src/parse.y"
08620     {
08621                       (yyval.nd) = new_ivar(p, (yyvsp[(1) - (1)].id));
08622                     ;}
08623     break;
08624 
08625   case 459:
08626 
08627 /* Line 1464 of yacc.c  */
08628 #line 2879 "src/parse.y"
08629     {
08630                       (yyval.nd) = new_gvar(p, (yyvsp[(1) - (1)].id));
08631                     ;}
08632     break;
08633 
08634   case 460:
08635 
08636 /* Line 1464 of yacc.c  */
08637 #line 2883 "src/parse.y"
08638     {
08639                       (yyval.nd) = new_cvar(p, (yyvsp[(1) - (1)].id));
08640                     ;}
08641     break;
08642 
08643   case 461:
08644 
08645 /* Line 1464 of yacc.c  */
08646 #line 2887 "src/parse.y"
08647     {
08648                       (yyval.nd) = new_const(p, (yyvsp[(1) - (1)].id));
08649                     ;}
08650     break;
08651 
08652   case 462:
08653 
08654 /* Line 1464 of yacc.c  */
08655 #line 2893 "src/parse.y"
08656     {
08657                       assignable(p, (yyvsp[(1) - (1)].nd));
08658                     ;}
08659     break;
08660 
08661   case 463:
08662 
08663 /* Line 1464 of yacc.c  */
08664 #line 2899 "src/parse.y"
08665     {
08666                       (yyval.nd) = var_reference(p, (yyvsp[(1) - (1)].nd));
08667                     ;}
08668     break;
08669 
08670   case 464:
08671 
08672 /* Line 1464 of yacc.c  */
08673 #line 2903 "src/parse.y"
08674     {
08675                       (yyval.nd) = new_nil(p);
08676                     ;}
08677     break;
08678 
08679   case 465:
08680 
08681 /* Line 1464 of yacc.c  */
08682 #line 2907 "src/parse.y"
08683     {
08684                       (yyval.nd) = new_self(p);
08685                     ;}
08686     break;
08687 
08688   case 466:
08689 
08690 /* Line 1464 of yacc.c  */
08691 #line 2911 "src/parse.y"
08692     {
08693                       (yyval.nd) = new_true(p);
08694                     ;}
08695     break;
08696 
08697   case 467:
08698 
08699 /* Line 1464 of yacc.c  */
08700 #line 2915 "src/parse.y"
08701     {
08702                       (yyval.nd) = new_false(p);
08703                     ;}
08704     break;
08705 
08706   case 468:
08707 
08708 /* Line 1464 of yacc.c  */
08709 #line 2919 "src/parse.y"
08710     {
08711                       if (!p->filename) {
08712                         p->filename = "(null)";
08713                       }
08714                       (yyval.nd) = new_str(p, p->filename, strlen(p->filename));
08715                     ;}
08716     break;
08717 
08718   case 469:
08719 
08720 /* Line 1464 of yacc.c  */
08721 #line 2926 "src/parse.y"
08722     {
08723                       char buf[16];
08724 
08725                       snprintf(buf, sizeof(buf), "%d", p->lineno);
08726                       (yyval.nd) = new_int(p, buf, 10);
08727                     ;}
08728     break;
08729 
08730   case 472:
08731 
08732 /* Line 1464 of yacc.c  */
08733 #line 2939 "src/parse.y"
08734     {
08735                       (yyval.nd) = 0;
08736                     ;}
08737     break;
08738 
08739   case 473:
08740 
08741 /* Line 1464 of yacc.c  */
08742 #line 2943 "src/parse.y"
08743     {
08744                       p->lstate = EXPR_BEG;
08745                       p->cmd_start = TRUE;
08746                     ;}
08747     break;
08748 
08749   case 474:
08750 
08751 /* Line 1464 of yacc.c  */
08752 #line 2948 "src/parse.y"
08753     {
08754                       (yyval.nd) = (yyvsp[(3) - (4)].nd);
08755                     ;}
08756     break;
08757 
08758   case 475:
08759 
08760 /* Line 1464 of yacc.c  */
08761 #line 2952 "src/parse.y"
08762     {
08763                       yyerrok;
08764                       (yyval.nd) = 0;
08765                     ;}
08766     break;
08767 
08768   case 476:
08769 
08770 /* Line 1464 of yacc.c  */
08771 #line 2959 "src/parse.y"
08772     {
08773                       (yyval.nd) = (yyvsp[(2) - (3)].nd);
08774                       p->lstate = EXPR_BEG;
08775                       p->cmd_start = TRUE;
08776                     ;}
08777     break;
08778 
08779   case 477:
08780 
08781 /* Line 1464 of yacc.c  */
08782 #line 2965 "src/parse.y"
08783     {
08784                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
08785                     ;}
08786     break;
08787 
08788   case 478:
08789 
08790 /* Line 1464 of yacc.c  */
08791 #line 2971 "src/parse.y"
08792     {
08793                       (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), (yyvsp[(5) - (6)].id), 0, (yyvsp[(6) - (6)].id));
08794                     ;}
08795     break;
08796 
08797   case 479:
08798 
08799 /* Line 1464 of yacc.c  */
08800 #line 2975 "src/parse.y"
08801     {
08802                       (yyval.nd) = new_args(p, (yyvsp[(1) - (8)].nd), (yyvsp[(3) - (8)].nd), (yyvsp[(5) - (8)].id), (yyvsp[(7) - (8)].nd), (yyvsp[(8) - (8)].id));
08803                     ;}
08804     break;
08805 
08806   case 480:
08807 
08808 /* Line 1464 of yacc.c  */
08809 #line 2979 "src/parse.y"
08810     {
08811                       (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].nd), 0, 0, (yyvsp[(4) - (4)].id));
08812                     ;}
08813     break;
08814 
08815   case 481:
08816 
08817 /* Line 1464 of yacc.c  */
08818 #line 2983 "src/parse.y"
08819     {
08820                       (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].nd), 0, (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
08821                     ;}
08822     break;
08823 
08824   case 482:
08825 
08826 /* Line 1464 of yacc.c  */
08827 #line 2987 "src/parse.y"
08828     {
08829                       (yyval.nd) = new_args(p, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
08830                     ;}
08831     break;
08832 
08833   case 483:
08834 
08835 /* Line 1464 of yacc.c  */
08836 #line 2991 "src/parse.y"
08837     {
08838                       (yyval.nd) = new_args(p, (yyvsp[(1) - (6)].nd), 0, (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
08839                     ;}
08840     break;
08841 
08842   case 484:
08843 
08844 /* Line 1464 of yacc.c  */
08845 #line 2995 "src/parse.y"
08846     {
08847                       (yyval.nd) = new_args(p, (yyvsp[(1) - (2)].nd), 0, 0, 0, (yyvsp[(2) - (2)].id));
08848                     ;}
08849     break;
08850 
08851   case 485:
08852 
08853 /* Line 1464 of yacc.c  */
08854 #line 2999 "src/parse.y"
08855     {
08856                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), (yyvsp[(3) - (4)].id), 0, (yyvsp[(4) - (4)].id));
08857                     ;}
08858     break;
08859 
08860   case 486:
08861 
08862 /* Line 1464 of yacc.c  */
08863 #line 3003 "src/parse.y"
08864     {
08865                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (6)].nd), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].nd), (yyvsp[(6) - (6)].id));
08866                     ;}
08867     break;
08868 
08869   case 487:
08870 
08871 /* Line 1464 of yacc.c  */
08872 #line 3007 "src/parse.y"
08873     {
08874                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (2)].nd), 0, 0, (yyvsp[(2) - (2)].id));
08875                     ;}
08876     break;
08877 
08878   case 488:
08879 
08880 /* Line 1464 of yacc.c  */
08881 #line 3011 "src/parse.y"
08882     {
08883                       (yyval.nd) = new_args(p, 0, (yyvsp[(1) - (4)].nd), 0, (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
08884                     ;}
08885     break;
08886 
08887   case 489:
08888 
08889 /* Line 1464 of yacc.c  */
08890 #line 3015 "src/parse.y"
08891     {
08892                       (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (2)].id), 0, (yyvsp[(2) - (2)].id));
08893                     ;}
08894     break;
08895 
08896   case 490:
08897 
08898 /* Line 1464 of yacc.c  */
08899 #line 3019 "src/parse.y"
08900     {
08901                       (yyval.nd) = new_args(p, 0, 0, (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].nd), (yyvsp[(4) - (4)].id));
08902                     ;}
08903     break;
08904 
08905   case 491:
08906 
08907 /* Line 1464 of yacc.c  */
08908 #line 3023 "src/parse.y"
08909     {
08910                       (yyval.nd) = new_args(p, 0, 0, 0, 0, (yyvsp[(1) - (1)].id));
08911                     ;}
08912     break;
08913 
08914   case 492:
08915 
08916 /* Line 1464 of yacc.c  */
08917 #line 3027 "src/parse.y"
08918     {
08919                       local_add_f(p, 0);
08920                       (yyval.nd) = new_args(p, 0, 0, 0, 0, 0);
08921                     ;}
08922     break;
08923 
08924   case 493:
08925 
08926 /* Line 1464 of yacc.c  */
08927 #line 3034 "src/parse.y"
08928     {
08929                       yyerror(p, "formal argument cannot be a constant");
08930                       (yyval.nd) = 0;
08931                     ;}
08932     break;
08933 
08934   case 494:
08935 
08936 /* Line 1464 of yacc.c  */
08937 #line 3039 "src/parse.y"
08938     {
08939                       yyerror(p, "formal argument cannot be an instance variable");
08940                       (yyval.nd) = 0;
08941                     ;}
08942     break;
08943 
08944   case 495:
08945 
08946 /* Line 1464 of yacc.c  */
08947 #line 3044 "src/parse.y"
08948     {
08949                       yyerror(p, "formal argument cannot be a global variable");
08950                       (yyval.nd) = 0;
08951                     ;}
08952     break;
08953 
08954   case 496:
08955 
08956 /* Line 1464 of yacc.c  */
08957 #line 3049 "src/parse.y"
08958     {
08959                       yyerror(p, "formal argument cannot be a class variable");
08960                       (yyval.nd) = 0;
08961                     ;}
08962     break;
08963 
08964   case 497:
08965 
08966 /* Line 1464 of yacc.c  */
08967 #line 3056 "src/parse.y"
08968     {
08969                       (yyval.id) = 0;
08970                     ;}
08971     break;
08972 
08973   case 498:
08974 
08975 /* Line 1464 of yacc.c  */
08976 #line 3060 "src/parse.y"
08977     {
08978                       local_add_f(p, (yyvsp[(1) - (1)].id));
08979                       (yyval.id) = (yyvsp[(1) - (1)].id);
08980                     ;}
08981     break;
08982 
08983   case 499:
08984 
08985 /* Line 1464 of yacc.c  */
08986 #line 3067 "src/parse.y"
08987     {
08988                       (yyval.nd) = new_arg(p, (yyvsp[(1) - (1)].id));
08989                     ;}
08990     break;
08991 
08992   case 500:
08993 
08994 /* Line 1464 of yacc.c  */
08995 #line 3071 "src/parse.y"
08996     {
08997                       (yyval.nd) = new_masgn(p, (yyvsp[(2) - (3)].nd), 0);
08998                     ;}
08999     break;
09000 
09001   case 501:
09002 
09003 /* Line 1464 of yacc.c  */
09004 #line 3077 "src/parse.y"
09005     {
09006                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
09007                     ;}
09008     break;
09009 
09010   case 502:
09011 
09012 /* Line 1464 of yacc.c  */
09013 #line 3081 "src/parse.y"
09014     {
09015                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
09016                     ;}
09017     break;
09018 
09019   case 503:
09020 
09021 /* Line 1464 of yacc.c  */
09022 #line 3087 "src/parse.y"
09023     {
09024                       local_add_f(p, (yyvsp[(1) - (2)].id));
09025                       (yyval.id) = (yyvsp[(1) - (2)].id);
09026                     ;}
09027     break;
09028 
09029   case 504:
09030 
09031 /* Line 1464 of yacc.c  */
09032 #line 3094 "src/parse.y"
09033     {
09034                       (yyval.nd) = cons(nsym((yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd));
09035                     ;}
09036     break;
09037 
09038   case 505:
09039 
09040 /* Line 1464 of yacc.c  */
09041 #line 3100 "src/parse.y"
09042     {
09043                       (yyval.nd) = cons(nsym((yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd));
09044                     ;}
09045     break;
09046 
09047   case 506:
09048 
09049 /* Line 1464 of yacc.c  */
09050 #line 3106 "src/parse.y"
09051     {
09052                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
09053                     ;}
09054     break;
09055 
09056   case 507:
09057 
09058 /* Line 1464 of yacc.c  */
09059 #line 3110 "src/parse.y"
09060     {
09061                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
09062                     ;}
09063     break;
09064 
09065   case 508:
09066 
09067 /* Line 1464 of yacc.c  */
09068 #line 3116 "src/parse.y"
09069     {
09070                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
09071                     ;}
09072     break;
09073 
09074   case 509:
09075 
09076 /* Line 1464 of yacc.c  */
09077 #line 3120 "src/parse.y"
09078     {
09079                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
09080                     ;}
09081     break;
09082 
09083   case 512:
09084 
09085 /* Line 1464 of yacc.c  */
09086 #line 3130 "src/parse.y"
09087     {
09088                       local_add_f(p, (yyvsp[(2) - (2)].id));
09089                       (yyval.id) = (yyvsp[(2) - (2)].id);
09090                     ;}
09091     break;
09092 
09093   case 513:
09094 
09095 /* Line 1464 of yacc.c  */
09096 #line 3135 "src/parse.y"
09097     {
09098                       local_add_f(p, 0);
09099                       (yyval.id) = -1;
09100                     ;}
09101     break;
09102 
09103   case 516:
09104 
09105 /* Line 1464 of yacc.c  */
09106 #line 3146 "src/parse.y"
09107     {
09108                       local_add_f(p, (yyvsp[(2) - (2)].id));
09109                       (yyval.id) = (yyvsp[(2) - (2)].id);
09110                     ;}
09111     break;
09112 
09113   case 517:
09114 
09115 /* Line 1464 of yacc.c  */
09116 #line 3153 "src/parse.y"
09117     {
09118                       (yyval.id) = (yyvsp[(2) - (2)].id);
09119                     ;}
09120     break;
09121 
09122   case 518:
09123 
09124 /* Line 1464 of yacc.c  */
09125 #line 3157 "src/parse.y"
09126     {
09127                       local_add_f(p, 0);
09128                       (yyval.id) = 0;
09129                     ;}
09130     break;
09131 
09132   case 519:
09133 
09134 /* Line 1464 of yacc.c  */
09135 #line 3164 "src/parse.y"
09136     {
09137                       (yyval.nd) = (yyvsp[(1) - (1)].nd);
09138                       if (!(yyval.nd)) (yyval.nd) = new_nil(p);
09139                     ;}
09140     break;
09141 
09142   case 520:
09143 
09144 /* Line 1464 of yacc.c  */
09145 #line 3168 "src/parse.y"
09146     {p->lstate = EXPR_BEG;;}
09147     break;
09148 
09149   case 521:
09150 
09151 /* Line 1464 of yacc.c  */
09152 #line 3169 "src/parse.y"
09153     {
09154                       if ((yyvsp[(3) - (4)].nd) == 0) {
09155                         yyerror(p, "can't define singleton method for ().");
09156                       }
09157                       else {
09158                         switch ((enum node_type)(int)(intptr_t)(yyvsp[(3) - (4)].nd)->car) {
09159                         case NODE_STR:
09160                         case NODE_DSTR:
09161                         case NODE_XSTR:
09162                         case NODE_DXSTR:
09163                         case NODE_DREGX:
09164                         case NODE_MATCH:
09165                         case NODE_FLOAT:
09166                         case NODE_ARRAY:
09167                         case NODE_HEREDOC:
09168                           yyerror(p, "can't define singleton method for literals");
09169                         default:
09170                           break;
09171                         }
09172                       }
09173                       (yyval.nd) = (yyvsp[(3) - (4)].nd);
09174                     ;}
09175     break;
09176 
09177   case 523:
09178 
09179 /* Line 1464 of yacc.c  */
09180 #line 3195 "src/parse.y"
09181     {
09182                       (yyval.nd) = (yyvsp[(1) - (2)].nd);
09183                     ;}
09184     break;
09185 
09186   case 524:
09187 
09188 /* Line 1464 of yacc.c  */
09189 #line 3201 "src/parse.y"
09190     {
09191                       (yyval.nd) = list1((yyvsp[(1) - (1)].nd));
09192                       NODE_LINENO((yyval.nd), (yyvsp[(1) - (1)].nd));
09193                     ;}
09194     break;
09195 
09196   case 525:
09197 
09198 /* Line 1464 of yacc.c  */
09199 #line 3206 "src/parse.y"
09200     {
09201                       (yyval.nd) = push((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
09202                     ;}
09203     break;
09204 
09205   case 526:
09206 
09207 /* Line 1464 of yacc.c  */
09208 #line 3212 "src/parse.y"
09209     {
09210                       (yyval.nd) = cons((yyvsp[(1) - (3)].nd), (yyvsp[(3) - (3)].nd));
09211                     ;}
09212     break;
09213 
09214   case 527:
09215 
09216 /* Line 1464 of yacc.c  */
09217 #line 3216 "src/parse.y"
09218     {
09219                       (yyval.nd) = cons(new_sym(p, (yyvsp[(1) - (2)].id)), (yyvsp[(2) - (2)].nd));
09220                     ;}
09221     break;
09222 
09223   case 549:
09224 
09225 /* Line 1464 of yacc.c  */
09226 #line 3260 "src/parse.y"
09227     {yyerrok;;}
09228     break;
09229 
09230   case 551:
09231 
09232 /* Line 1464 of yacc.c  */
09233 #line 3265 "src/parse.y"
09234     {
09235                       p->lineno++;
09236                       p->column = 0;
09237                     ;}
09238     break;
09239 
09240   case 554:
09241 
09242 /* Line 1464 of yacc.c  */
09243 #line 3272 "src/parse.y"
09244     {yyerrok;;}
09245     break;
09246 
09247   case 555:
09248 
09249 /* Line 1464 of yacc.c  */
09250 #line 3276 "src/parse.y"
09251     {
09252                       (yyval.nd) = 0;
09253                     ;}
09254     break;
09255 
09256 
09257 
09258 /* Line 1464 of yacc.c  */
09259 #line 9260 "C:/Users/matsuzaki.takuya/work/daily/20150106/mruby-1.1.0/build/ARMCA9/src/y.tab.c"
09260       default: break;
09261     }
09262   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
09263 
09264   YYPOPSTACK (yylen);
09265   yylen = 0;
09266   YY_STACK_PRINT (yyss, yyssp);
09267 
09268   *++yyvsp = yyval;
09269 
09270   /* Now `shift' the result of the reduction.  Determine what state
09271      that goes to, based on the state we popped back to and the rule
09272      number reduced by.  */
09273 
09274   yyn = yyr1[yyn];
09275 
09276   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
09277   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
09278     yystate = yytable[yystate];
09279   else
09280     yystate = yydefgoto[yyn - YYNTOKENS];
09281 
09282   goto yynewstate;
09283 
09284 
09285 /*------------------------------------.
09286 | yyerrlab -- here on detecting error |
09287 `------------------------------------*/
09288 yyerrlab:
09289   /* If not already recovering from an error, report this error.  */
09290   if (!yyerrstatus)
09291     {
09292       ++yynerrs;
09293 #if ! YYERROR_VERBOSE
09294       yyerror (p, YY_("syntax error"));
09295 #else
09296       {
09297     YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
09298     if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
09299       {
09300         YYSIZE_T yyalloc = 2 * yysize;
09301         if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
09302           yyalloc = YYSTACK_ALLOC_MAXIMUM;
09303         if (yymsg != yymsgbuf)
09304           YYSTACK_FREE (yymsg);
09305         yymsg = (char *) YYSTACK_ALLOC (yyalloc);
09306         if (yymsg)
09307           yymsg_alloc = yyalloc;
09308         else
09309           {
09310         yymsg = yymsgbuf;
09311         yymsg_alloc = sizeof yymsgbuf;
09312           }
09313       }
09314 
09315     if (0 < yysize && yysize <= yymsg_alloc)
09316       {
09317         (void) yysyntax_error (yymsg, yystate, yychar);
09318         yyerror (p, yymsg);
09319       }
09320     else
09321       {
09322         yyerror (p, YY_("syntax error"));
09323         if (yysize != 0)
09324           goto yyexhaustedlab;
09325       }
09326       }
09327 #endif
09328     }
09329 
09330 
09331 
09332   if (yyerrstatus == 3)
09333     {
09334       /* If just tried and failed to reuse lookahead token after an
09335      error, discard it.  */
09336 
09337       if (yychar <= YYEOF)
09338     {
09339       /* Return failure if at end of input.  */
09340       if (yychar == YYEOF)
09341         YYABORT;
09342     }
09343       else
09344     {
09345       yydestruct ("Error: discarding",
09346               yytoken, &yylval, p);
09347       yychar = YYEMPTY;
09348     }
09349     }
09350 
09351   /* Else will try to reuse lookahead token after shifting the error
09352      token.  */
09353   goto yyerrlab1;
09354 
09355 
09356 /*---------------------------------------------------.
09357 | yyerrorlab -- error raised explicitly by YYERROR.  |
09358 `---------------------------------------------------*/
09359 yyerrorlab:
09360 
09361   /* Pacify compilers like GCC when the user code never invokes
09362      YYERROR and the label yyerrorlab therefore never appears in user
09363      code.  */
09364   if (/*CONSTCOND*/ 0)
09365      goto yyerrorlab;
09366 
09367   /* Do not reclaim the symbols of the rule which action triggered
09368      this YYERROR.  */
09369   YYPOPSTACK (yylen);
09370   yylen = 0;
09371   YY_STACK_PRINT (yyss, yyssp);
09372   yystate = *yyssp;
09373   goto yyerrlab1;
09374 
09375 
09376 /*-------------------------------------------------------------.
09377 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
09378 `-------------------------------------------------------------*/
09379 yyerrlab1:
09380   yyerrstatus = 3;  /* Each real token shifted decrements this.  */
09381 
09382   for (;;)
09383     {
09384       yyn = yypact[yystate];
09385       if (yyn != YYPACT_NINF)
09386     {
09387       yyn += YYTERROR;
09388       if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
09389         {
09390           yyn = yytable[yyn];
09391           if (0 < yyn)
09392         break;
09393         }
09394     }
09395 
09396       /* Pop the current state because it cannot handle the error token.  */
09397       if (yyssp == yyss)
09398     YYABORT;
09399 
09400 
09401       yydestruct ("Error: popping",
09402           yystos[yystate], yyvsp, p);
09403       YYPOPSTACK (1);
09404       yystate = *yyssp;
09405       YY_STACK_PRINT (yyss, yyssp);
09406     }
09407 
09408   *++yyvsp = yylval;
09409 
09410 
09411   /* Shift the error token.  */
09412   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
09413 
09414   yystate = yyn;
09415   goto yynewstate;
09416 
09417 
09418 /*-------------------------------------.
09419 | yyacceptlab -- YYACCEPT comes here.  |
09420 `-------------------------------------*/
09421 yyacceptlab:
09422   yyresult = 0;
09423   goto yyreturn;
09424 
09425 /*-----------------------------------.
09426 | yyabortlab -- YYABORT comes here.  |
09427 `-----------------------------------*/
09428 yyabortlab:
09429   yyresult = 1;
09430   goto yyreturn;
09431 
09432 #if !defined(yyoverflow) || YYERROR_VERBOSE
09433 /*-------------------------------------------------.
09434 | yyexhaustedlab -- memory exhaustion comes here.  |
09435 `-------------------------------------------------*/
09436 yyexhaustedlab:
09437   yyerror (p, YY_("memory exhausted"));
09438   yyresult = 2;
09439   /* Fall through.  */
09440 #endif
09441 
09442 yyreturn:
09443   if (yychar != YYEMPTY)
09444      yydestruct ("Cleanup: discarding lookahead",
09445          yytoken, &yylval, p);
09446   /* Do not reclaim the symbols of the rule which action triggered
09447      this YYABORT or YYACCEPT.  */
09448   YYPOPSTACK (yylen);
09449   YY_STACK_PRINT (yyss, yyssp);
09450   while (yyssp != yyss)
09451     {
09452       yydestruct ("Cleanup: popping",
09453           yystos[*yyssp], yyvsp, p);
09454       YYPOPSTACK (1);
09455     }
09456 #ifndef yyoverflow
09457   if (yyss != yyssa)
09458     YYSTACK_FREE (yyss);
09459 #endif
09460 #if YYERROR_VERBOSE
09461   if (yymsg != yymsgbuf)
09462     YYSTACK_FREE (yymsg);
09463 #endif
09464   /* Make sure YYID is used.  */
09465   return YYID (yyresult);
09466 }
09467 
09468 
09469 
09470 /* Line 1684 of yacc.c  */
09471 #line 3280 "src/parse.y"
09472 
09473 #define yylval  (*((YYSTYPE*)(p->ylval)))
09474 
09475 static void
09476 yyerror(parser_state *p, const char *s)
09477 {
09478   char* c;
09479   int n;
09480 
09481   if (! p->capture_errors) {
09482 #ifdef ENABLE_STDIO
09483     if (p->filename) {
09484       fprintf(stderr, "%s:%d:%d: %s\n", p->filename, p->lineno, p->column, s);
09485     }
09486     else {
09487       fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s);
09488     }
09489 #endif
09490   }
09491   else if (p->nerr < sizeof(p->error_buffer) / sizeof(p->error_buffer[0])) {
09492     n = strlen(s);
09493     c = (char *)parser_palloc(p, n + 1);
09494     memcpy(c, s, n + 1);
09495     p->error_buffer[p->nerr].message = c;
09496     p->error_buffer[p->nerr].lineno = p->lineno;
09497     p->error_buffer[p->nerr].column = p->column;
09498   }
09499   p->nerr++;
09500 }
09501 
09502 static void
09503 yyerror_i(parser_state *p, const char *fmt, int i)
09504 {
09505   char buf[256];
09506 
09507   snprintf(buf, sizeof(buf), fmt, i);
09508   yyerror(p, buf);
09509 }
09510 
09511 static void
09512 yywarn(parser_state *p, const char *s)
09513 {
09514   char* c;
09515   int n;
09516 
09517   if (! p->capture_errors) {
09518 #ifdef ENABLE_STDIO
09519     if (p->filename) {
09520       fprintf(stderr, "%s:%d:%d: %s\n", p->filename, p->lineno, p->column, s);
09521     }
09522     else {
09523       fprintf(stderr, "line %d:%d: %s\n", p->lineno, p->column, s);
09524     }
09525 #endif
09526   }
09527   else if (p->nwarn < sizeof(p->warn_buffer) / sizeof(p->warn_buffer[0])) {
09528     n = strlen(s);
09529     c = (char *)parser_palloc(p, n + 1);
09530     memcpy(c, s, n + 1);
09531     p->warn_buffer[p->nwarn].message = c;
09532     p->warn_buffer[p->nwarn].lineno = p->lineno;
09533     p->warn_buffer[p->nwarn].column = p->column;
09534   }
09535   p->nwarn++;
09536 }
09537 
09538 static void
09539 yywarning(parser_state *p, const char *s)
09540 {
09541   yywarn(p, s);
09542 }
09543 
09544 static void
09545 yywarning_s(parser_state *p, const char *fmt, const char *s)
09546 {
09547   char buf[256];
09548 
09549   snprintf(buf, sizeof(buf), fmt, s);
09550   yywarning(p, buf);
09551 }
09552 
09553 static void
09554 backref_error(parser_state *p, node *n)
09555 {
09556   int c;
09557 
09558   c = (int)(intptr_t)n->car;
09559 
09560   if (c == NODE_NTH_REF) {
09561     yyerror_i(p, "can't set variable $%d", (int)(intptr_t)n->cdr);
09562   }
09563   else if (c == NODE_BACK_REF) {
09564     yyerror_i(p, "can't set variable $%c", (int)(intptr_t)n->cdr);
09565   }
09566   else {
09567     mrb_bug(p->mrb, "Internal error in backref_error() : n=>car == %S", mrb_fixnum_value(c));
09568   }
09569 }
09570 
09571 static void pushback(parser_state *p, int c);
09572 static mrb_bool peeks(parser_state *p, const char *s);
09573 static mrb_bool skips(parser_state *p, const char *s);
09574 
09575 static inline int
09576 nextc(parser_state *p)
09577 {
09578   int c;
09579 
09580   if (p->pb) {
09581     node *tmp;
09582 
09583     c = (int)(intptr_t)p->pb->car;
09584     tmp = p->pb;
09585     p->pb = p->pb->cdr;
09586     cons_free(tmp);
09587   }
09588   else {
09589 #ifdef ENABLE_STDIO
09590     if (p->f) {
09591       if (feof(p->f)) goto eof;
09592       c = fgetc(p->f);
09593       if (c == EOF) goto eof;
09594     }
09595     else
09596 #endif
09597       if (!p->s || p->s >= p->send) {
09598         goto eof;
09599       }
09600       else {
09601         c = (unsigned char)*p->s++;
09602       }
09603   }
09604   if (c >= 0) {
09605     p->column++;
09606   }
09607   if (c == '\r') {
09608     c = nextc(p);
09609     if (c != '\n') {
09610       pushback(p, c);
09611       return '\r';
09612     }
09613     return c;
09614   }
09615   return c;
09616 
09617   eof:
09618   if (!p->cxt) return -1;
09619   else {
09620     if (p->cxt->partial_hook(p) < 0)
09621       return -1;                /* end of program(s) */
09622     return -2;                  /* end of a file in the program files */
09623   }
09624 }
09625 
09626 static void
09627 pushback(parser_state *p, int c)
09628 {
09629   if (c >= 0) {
09630     p->column--;
09631   }
09632   p->pb = cons((node*)(intptr_t)c, p->pb);
09633 }
09634 
09635 static void
09636 skip(parser_state *p, char term)
09637 {
09638   int c;
09639 
09640   for (;;) {
09641     c = nextc(p);
09642     if (c < 0) break;
09643     if (c == term) break;
09644   }
09645 }
09646 
09647 static int
09648 peekc_n(parser_state *p, int n)
09649 {
09650   node *list = 0;
09651   int c0;
09652 
09653   do {
09654     c0 = nextc(p);
09655     if (c0 == -1) return c0;    /* do not skip partial EOF */
09656     list = push(list, (node*)(intptr_t)c0);
09657   } while(n--);
09658   if (p->pb) {
09659     p->pb = append((node*)list, p->pb);
09660   }
09661   else {
09662     p->pb = list;
09663   }
09664   return c0;
09665 }
09666 
09667 static mrb_bool
09668 peek_n(parser_state *p, int c, int n)
09669 {
09670   return peekc_n(p, n) == c && c >= 0;
09671 }
09672 #define peek(p,c) peek_n((p), (c), 0)
09673 
09674 static mrb_bool
09675 peeks(parser_state *p, const char *s)
09676 {
09677   int len = strlen(s);
09678 
09679 #ifdef ENABLE_STDIO
09680   if (p->f) {
09681     int n = 0;
09682     while (*s) {
09683       if (!peek_n(p, *s++, n++)) return FALSE;
09684     }
09685     return TRUE;
09686   }
09687   else
09688 #endif
09689     if (p->s && p->s + len <= p->send) {
09690       if (memcmp(p->s, s, len) == 0) return TRUE;
09691     }
09692   return FALSE;
09693 }
09694 
09695 static mrb_bool
09696 skips(parser_state *p, const char *s)
09697 {
09698   int c;
09699 
09700   for (;;) {
09701     /* skip until first char */
09702     for (;;) {
09703       c = nextc(p);
09704       if (c < 0) return c;
09705       if (c == '\n') {
09706         p->lineno++;
09707         p->column = 0;
09708       }
09709       if (c == *s) break;
09710     }
09711     s++;
09712     if (peeks(p, s)) {
09713       int len = strlen(s);
09714 
09715       while (len--) {
09716         if (nextc(p) == '\n') {
09717           p->lineno++;
09718           p->column = 0;
09719         }
09720       }
09721       return TRUE;
09722     }
09723     else{
09724       s--;
09725     }
09726   }
09727   return FALSE;
09728 }
09729 
09730 
09731 static int
09732 newtok(parser_state *p)
09733 {
09734   p->bidx = 0;
09735   return p->column - 1;
09736 }
09737 
09738 static void
09739 tokadd(parser_state *p, int32_t c)
09740 {
09741   char utf8[4];
09742   unsigned len;
09743 
09744   /* mrb_assert(-0x10FFFF <= c && c <= 0xFF); */
09745   if (c >= 0) {
09746     /* Single byte from source or non-Unicode escape */
09747     utf8[0] = (char)c;
09748     len = 1;
09749   }
09750   else {
09751     /* Unicode character */
09752     c = -c;
09753     if (c < 0x80) {
09754       utf8[0] = (char)c;
09755       len = 1;
09756     }
09757     else if (c < 0x800) {
09758       utf8[0] = (char)(0xC0 | (c >> 6));
09759       utf8[1] = (char)(0x80 | (c & 0x3F));
09760       len = 2;
09761     }
09762     else if (c < 0x10000) {
09763       utf8[0] = (char)(0xE0 |  (c >> 12)        );
09764       utf8[1] = (char)(0x80 | ((c >>  6) & 0x3F));
09765       utf8[2] = (char)(0x80 | ( c        & 0x3F));
09766       len = 3;
09767     }
09768     else {
09769       utf8[0] = (char)(0xF0 |  (c >> 18)        );
09770       utf8[1] = (char)(0x80 | ((c >> 12) & 0x3F));
09771       utf8[2] = (char)(0x80 | ((c >>  6) & 0x3F));
09772       utf8[3] = (char)(0x80 | ( c        & 0x3F));
09773       len = 4;
09774     }
09775   }
09776   if (p->bidx+len <= MRB_PARSER_BUF_SIZE) {
09777     unsigned i;
09778     for (i = 0; i < len; i++) {
09779       p->buf[p->bidx++] = utf8[i];
09780     }
09781   }
09782 }
09783 
09784 static int
09785 toklast(parser_state *p)
09786 {
09787   return p->buf[p->bidx-1];
09788 }
09789 
09790 static void
09791 tokfix(parser_state *p)
09792 {
09793   if (p->bidx >= MRB_PARSER_BUF_SIZE) {
09794     yyerror(p, "string too long (truncated)");
09795   }
09796   p->buf[p->bidx] = '\0';
09797 }
09798 
09799 static const char*
09800 tok(parser_state *p)
09801 {
09802   return p->buf;
09803 }
09804 
09805 static int
09806 toklen(parser_state *p)
09807 {
09808   return p->bidx;
09809 }
09810 
09811 #define IS_ARG() (p->lstate == EXPR_ARG || p->lstate == EXPR_CMDARG)
09812 #define IS_END() (p->lstate == EXPR_END || p->lstate == EXPR_ENDARG || p->lstate == EXPR_ENDFN)
09813 #define IS_BEG() (p->lstate == EXPR_BEG || p->lstate == EXPR_MID || p->lstate == EXPR_VALUE || p->lstate == EXPR_CLASS)
09814 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
09815 #define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG())
09816 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
09817 
09818 static int
09819 scan_oct(const int *start, int len, int *retlen)
09820 {
09821   const int *s = start;
09822   int retval = 0;
09823 
09824   /* mrb_assert(len <= 3) */
09825   while (len-- && *s >= '0' && *s <= '7') {
09826     retval <<= 3;
09827     retval |= *s++ - '0';
09828   }
09829   *retlen = s - start;
09830 
09831   return retval;
09832 }
09833 
09834 static int32_t
09835 scan_hex(const int *start, int len, int *retlen)
09836 {
09837   static const char hexdigit[] = "0123456789abcdef0123456789ABCDEF";
09838   const int *s = start;
09839   int32_t retval = 0;
09840   char *tmp;
09841 
09842   /* mrb_assert(len <= 8) */
09843   while (len-- && *s && (tmp = (char*)strchr(hexdigit, *s))) {
09844     retval <<= 4;
09845     retval |= (tmp - hexdigit) & 15;
09846     s++;
09847   }
09848   *retlen = s - start;
09849 
09850   return retval;
09851 }
09852 
09853 /* Return negative to indicate Unicode code point */
09854 static int32_t
09855 read_escape(parser_state *p)
09856 {
09857   int32_t c;
09858 
09859   switch (c = nextc(p)) {
09860   case '\\':/* Backslash */
09861     return c;
09862 
09863   case 'n':/* newline */
09864     return '\n';
09865 
09866   case 't':/* horizontal tab */
09867     return '\t';
09868 
09869   case 'r':/* carriage-return */
09870     return '\r';
09871 
09872   case 'f':/* form-feed */
09873     return '\f';
09874 
09875   case 'v':/* vertical tab */
09876     return '\13';
09877 
09878   case 'a':/* alarm(bell) */
09879     return '\007';
09880 
09881   case 'e':/* escape */
09882     return 033;
09883 
09884   case '0': case '1': case '2': case '3': /* octal constant */
09885   case '4': case '5': case '6': case '7':
09886   {
09887     int buf[3];
09888     int i;
09889 
09890     buf[0] = c;
09891     for (i=1; i<3; i++) {
09892       buf[i] = nextc(p);
09893       if (buf[i] < 0) goto eof;
09894       if (buf[i] < '0' || '7' < buf[i]) {
09895         pushback(p, buf[i]);
09896         break;
09897       }
09898     }
09899     c = scan_oct(buf, i, &i);
09900   }
09901   return c;
09902 
09903   case 'x':     /* hex constant */
09904   {
09905     int buf[2];
09906     int i;
09907 
09908     for (i=0; i<2; i++) {
09909       buf[i] = nextc(p);
09910       if (buf[i] < 0) goto eof;
09911       if (!ISXDIGIT(buf[i])) {
09912         pushback(p, buf[i]);
09913         break;
09914       }
09915     }
09916     c = scan_hex(buf, i, &i);
09917     if (i == 0) {
09918       yyerror(p, "Invalid escape character syntax");
09919       return 0;
09920     }
09921   }
09922   return c;
09923 
09924   case 'u':     /* Unicode */
09925   {
09926     int buf[9];
09927     int i;
09928 
09929     /* Look for opening brace */
09930     i = 0;
09931     buf[0] = nextc(p);
09932     if (buf[0] < 0) goto eof;
09933     if (buf[0] == '{') {
09934       /* \u{xxxxxxxx} form */
09935       for (i=0; i<9; i++) {
09936         buf[i] = nextc(p);
09937         if (buf[i] < 0) goto eof;
09938         if (buf[i] == '}') {
09939           break;
09940         }
09941         else if (!ISXDIGIT(buf[i])) {
09942           yyerror(p, "Invalid escape character syntax");
09943           pushback(p, buf[i]);
09944           return 0;
09945         }
09946       }
09947     }
09948     else if (ISXDIGIT(buf[0])) {
09949       /* \uxxxx form */
09950       for (i=1; i<4; i++) {
09951         buf[i] = nextc(p);
09952         if (buf[i] < 0) goto eof;
09953         if (!ISXDIGIT(buf[i])) {
09954           pushback(p, buf[i]);
09955           break;
09956         }
09957       }
09958     }
09959     else {
09960       pushback(p, buf[0]);
09961     }
09962     c = scan_hex(buf, i, &i);
09963     if (i == 0) {
09964       yyerror(p, "Invalid escape character syntax");
09965       return 0;
09966     }
09967     if (c < 0 || c > 0x10FFFF || (c & 0xFFFFF800) == 0xD800) {
09968       yyerror(p, "Invalid Unicode code point");
09969       return 0;
09970     }
09971   }
09972   return -c;
09973 
09974   case 'b':/* backspace */
09975     return '\010';
09976 
09977   case 's':/* space */
09978     return ' ';
09979 
09980   case 'M':
09981     if ((c = nextc(p)) != '-') {
09982       yyerror(p, "Invalid escape character syntax");
09983       pushback(p, c);
09984       return '\0';
09985     }
09986     if ((c = nextc(p)) == '\\') {
09987       return read_escape(p) | 0x80;
09988     }
09989     else if (c < 0) goto eof;
09990     else {
09991       return ((c & 0xff) | 0x80);
09992     }
09993 
09994   case 'C':
09995     if ((c = nextc(p)) != '-') {
09996       yyerror(p, "Invalid escape character syntax");
09997       pushback(p, c);
09998       return '\0';
09999     }
10000   case 'c':
10001     if ((c = nextc(p))== '\\') {
10002       c = read_escape(p);
10003     }
10004     else if (c == '?')
10005       return 0177;
10006     else if (c < 0) goto eof;
10007     return c & 0x9f;
10008 
10009     eof:
10010   case -1:
10011   case -2:                      /* end of a file */
10012     yyerror(p, "Invalid escape character syntax");
10013     return '\0';
10014 
10015   default:
10016     return c;
10017   }
10018 }
10019 
10020 static int
10021 parse_string(parser_state *p)
10022 {
10023   int c;
10024   string_type type = (string_type)(intptr_t)p->lex_strterm->car;
10025   int nest_level = (intptr_t)p->lex_strterm->cdr->car;
10026   int beg = (intptr_t)p->lex_strterm->cdr->cdr->car;
10027   int end = (intptr_t)p->lex_strterm->cdr->cdr->cdr;
10028   parser_heredoc_info *hinf = (type & STR_FUNC_HEREDOC) ? parsing_heredoc_inf(p) : NULL;
10029 
10030   newtok(p);
10031   while ((c = nextc(p)) != end || nest_level != 0) {
10032     if (hinf && (c == '\n' || c < 0)) {
10033       mrb_bool line_head;
10034       tokadd(p, '\n');
10035       tokfix(p);
10036       p->lineno++;
10037       p->column = 0;
10038       line_head = hinf->line_head;
10039       hinf->line_head = TRUE;
10040       if (line_head) {
10041         /* check whether end of heredoc */
10042         const char *s = tok(p);
10043         int len = toklen(p);
10044         if (hinf->allow_indent) {
10045           while (ISSPACE(*s) && len > 0) {
10046             ++s;
10047             --len;
10048           }
10049         }
10050         if ((len-1 == hinf->term_len) && (strncmp(s, hinf->term, len-1) == 0)) {
10051           return tHEREDOC_END;
10052         }
10053       }
10054       if (c < 0) {
10055         char buf[256];
10056         snprintf(buf, sizeof(buf), "can't find heredoc delimiter \"%s\" anywhere before EOF", hinf->term);
10057         yyerror(p, buf);
10058         return 0;
10059       }
10060       yylval.nd = new_str(p, tok(p), toklen(p));
10061       return tHD_STRING_MID;
10062     }
10063     if (c < 0) {
10064       yyerror(p, "unterminated string meets end of file");
10065       return 0;
10066     }
10067     else if (c == beg) {
10068       nest_level++;
10069       p->lex_strterm->cdr->car = (node*)(intptr_t)nest_level;
10070     }
10071     else if (c == end) {
10072       nest_level--;
10073       p->lex_strterm->cdr->car = (node*)(intptr_t)nest_level;
10074     }
10075     else if (c == '\\') {
10076       c = nextc(p);
10077       if (type & STR_FUNC_EXPAND) {
10078         if (c == end || c == beg) {
10079           tokadd(p, c);
10080         }
10081         else if (c == '\n') {
10082           p->lineno++;
10083           p->column = 0;
10084           if (type & STR_FUNC_ARRAY) {
10085             tokadd(p, '\n');
10086           }
10087         }
10088         else if (type & STR_FUNC_REGEXP) {
10089           tokadd(p, '\\');
10090           tokadd(p, c);
10091         }
10092         else {
10093           pushback(p, c);
10094           tokadd(p, read_escape(p));
10095           if (hinf)
10096             hinf->line_head = FALSE;
10097         }
10098       }
10099       else {
10100         if (c != beg && c != end) {
10101           if (c == '\n') {
10102             p->lineno++;
10103             p->column = 0;
10104           }
10105           if (!(c == '\\' || ((type & STR_FUNC_ARRAY) && ISSPACE(c)))) {
10106             tokadd(p, '\\');
10107           }
10108         }
10109         tokadd(p, c);
10110       }
10111       continue;
10112     }
10113     else if ((c == '#') && (type & STR_FUNC_EXPAND)) {
10114       c = nextc(p);
10115       if (c == '{') {
10116         tokfix(p);
10117         p->lstate = EXPR_BEG;
10118         p->cmd_start = TRUE;
10119         yylval.nd = new_str(p, tok(p), toklen(p));
10120         if (hinf) {
10121           hinf->line_head = FALSE;
10122           return tHD_STRING_PART;
10123         }
10124         return tSTRING_PART;
10125       }
10126       tokadd(p, '#');
10127       pushback(p, c);
10128       continue;
10129     }
10130     if ((type & STR_FUNC_ARRAY) && ISSPACE(c)) {
10131       if (toklen(p) == 0) {
10132         do {
10133           if (c == '\n') {
10134             p->lineno++;
10135             p->column = 0;
10136             heredoc_treat_nextline(p);
10137             if (p->parsing_heredoc != NULL) {
10138               return tHD_LITERAL_DELIM;
10139             }
10140           }
10141           c = nextc(p);
10142         } while (ISSPACE(c));
10143         pushback(p, c);
10144         return tLITERAL_DELIM;
10145       }
10146       else {
10147         pushback(p, c);
10148         tokfix(p);
10149         yylval.nd = new_str(p, tok(p), toklen(p));
10150         return tSTRING_MID;
10151       }
10152     }
10153     tokadd(p, c);
10154   }
10155 
10156   tokfix(p);
10157   p->lstate = EXPR_END;
10158   end_strterm(p);
10159 
10160   if (type & STR_FUNC_XQUOTE) {
10161     yylval.nd = new_xstr(p, tok(p), toklen(p));
10162     return tXSTRING;
10163   }
10164 
10165   if (type & STR_FUNC_REGEXP) {
10166     int f = 0;
10167     int re_opt;
10168     char *s = strndup(tok(p), toklen(p));
10169     char flags[3];
10170     char *flag = flags;
10171     char *dup;
10172 
10173     newtok(p);
10174     while (re_opt = nextc(p), re_opt >= 0 && ISALPHA(re_opt)) {
10175       switch (re_opt) {
10176       case 'i': f |= 1; break;
10177       case 'x': f |= 2; break;
10178       case 'm': f |= 4; break;
10179       default: tokadd(p, re_opt); break;
10180       }
10181     }
10182     pushback(p, re_opt);
10183     if (toklen(p)) {
10184       char msg[128];
10185       tokfix(p);
10186       snprintf(msg, sizeof(msg), "unknown regexp option%s - %s",
10187           toklen(p) > 1 ? "s" : "", tok(p));
10188       yyerror(p, msg);
10189     }
10190     if (f != 0) {
10191       if (f & 1) *flag++ = 'i';
10192       if (f & 2) *flag++ = 'x';
10193       if (f & 4) *flag++ = 'm';
10194       dup = strndup(flags, (size_t)(flag - flags));
10195     }
10196     else {
10197       dup = NULL;
10198     }
10199     yylval.nd = new_regx(p, s, dup);
10200 
10201     return tREGEXP;
10202   }
10203 
10204   yylval.nd = new_str(p, tok(p), toklen(p));
10205   return tSTRING;
10206 }
10207 
10208 
10209 static int
10210 heredoc_identifier(parser_state *p)
10211 {
10212   int c;
10213   int type = str_heredoc;
10214   mrb_bool indent = FALSE;
10215   mrb_bool quote = FALSE;
10216   node *newnode;
10217   parser_heredoc_info *info;
10218 
10219   c = nextc(p);
10220   if (ISSPACE(c) || c == '=') {
10221     pushback(p, c);
10222     return 0;
10223   }
10224   if (c == '-') {
10225     indent = TRUE;
10226     c = nextc(p);
10227   }
10228   if (c == '\'' || c == '"') {
10229     int term = c;
10230     if (c == '\'')
10231       quote = TRUE;
10232     newtok(p);
10233     while ((c = nextc(p)) >= 0 && c != term) {
10234       if (c == '\n') {
10235         c = -1;
10236         break;
10237       }
10238       tokadd(p, c);
10239     }
10240     if (c < 0) {
10241       yyerror(p, "unterminated here document identifier");
10242       return 0;
10243     }
10244   }
10245   else {
10246     if (c < 0) {
10247       return 0;                 /* missing here document identifier */
10248     }
10249     if (! identchar(c)) {
10250       pushback(p, c);
10251       if (indent) pushback(p, '-');
10252       return 0;
10253     }
10254     newtok(p);
10255     do {
10256       tokadd(p, c);
10257     } while ((c = nextc(p)) >= 0 && identchar(c));
10258     pushback(p, c);
10259   }
10260   tokfix(p);
10261   newnode = new_heredoc(p);
10262   info = (parser_heredoc_info*)newnode->cdr;
10263   info->term = strndup(tok(p), toklen(p));
10264   info->term_len = toklen(p);
10265   if (! quote)
10266     type |= STR_FUNC_EXPAND;
10267   info->type = (string_type)type;
10268   info->allow_indent = indent;
10269   info->line_head = TRUE;
10270   info->doc = NULL;
10271   p->heredocs_from_nextline = push(p->heredocs_from_nextline, newnode);
10272   p->lstate = EXPR_END;
10273 
10274   yylval.nd = newnode;
10275   return tHEREDOC_BEG;
10276 }
10277 
10278 static int
10279 arg_ambiguous(parser_state *p)
10280 {
10281   yywarning(p, "ambiguous first argument; put parentheses or even spaces");
10282   return 1;
10283 }
10284 
10285 #include "lex.def"
10286 
10287 static int
10288 parser_yylex(parser_state *p)
10289 {
10290   int32_t c;
10291   int space_seen = 0;
10292   int cmd_state;
10293   enum mrb_lex_state_enum last_state;
10294   int token_column;
10295 
10296   if (p->lex_strterm) {
10297     if (is_strterm_type(p, STR_FUNC_HEREDOC)) {
10298       if (p->parsing_heredoc != NULL)
10299         return parse_string(p);
10300     }
10301     else
10302       return parse_string(p);
10303   }
10304   cmd_state = p->cmd_start;
10305   p->cmd_start = FALSE;
10306   retry:
10307   last_state = p->lstate;
10308   switch (c = nextc(p)) {
10309   case '\0':    /* NUL */
10310   case '\004':  /* ^D */
10311   case '\032':  /* ^Z */
10312     return 0;
10313   case -1:      /* end of script. */
10314     if (p->heredocs_from_nextline)
10315       goto maybe_heredoc;
10316     return 0;
10317 
10318   /* white spaces */
10319   case ' ': case '\t': case '\f': case '\r':
10320   case '\13':   /* '\v' */
10321     space_seen = 1;
10322     goto retry;
10323 
10324   case '#':     /* it's a comment */
10325     skip(p, '\n');
10326     /* fall through */
10327   case -2:      /* end of a file */
10328   case '\n':
10329     maybe_heredoc:
10330     heredoc_treat_nextline(p);
10331   switch (p->lstate) {
10332   case EXPR_BEG:
10333   case EXPR_FNAME:
10334   case EXPR_DOT:
10335   case EXPR_CLASS:
10336   case EXPR_VALUE:
10337     p->lineno++;
10338     p->column = 0;
10339     if (p->parsing_heredoc != NULL) {
10340       return parse_string(p);
10341     }
10342     goto retry;
10343   default:
10344     break;
10345   }
10346   if (p->parsing_heredoc != NULL) {
10347     return '\n';
10348   }
10349   while ((c = nextc(p))) {
10350     switch (c) {
10351     case ' ': case '\t': case '\f': case '\r':
10352     case '\13': /* '\v' */
10353       space_seen = 1;
10354       break;
10355     case '.':
10356       if ((c = nextc(p)) != '.') {
10357         pushback(p, c);
10358         pushback(p, '.');
10359         goto retry;
10360       }
10361     case -1:                  /* EOF */
10362     case -2:                  /* end of a file */
10363       goto normal_newline;
10364     default:
10365       pushback(p, c);
10366       goto normal_newline;
10367     }
10368   }
10369   normal_newline:
10370   p->cmd_start = TRUE;
10371   p->lstate = EXPR_BEG;
10372   return '\n';
10373 
10374   case '*':
10375     if ((c = nextc(p)) == '*') {
10376       if ((c = nextc(p)) == '=') {
10377         yylval.id = intern("**",2);
10378         p->lstate = EXPR_BEG;
10379         return tOP_ASGN;
10380       }
10381       pushback(p, c);
10382       c = tPOW;
10383     }
10384     else {
10385       if (c == '=') {
10386         yylval.id = intern_c('*');
10387         p->lstate = EXPR_BEG;
10388         return tOP_ASGN;
10389       }
10390       pushback(p, c);
10391       if (IS_SPCARG(c)) {
10392         yywarning(p, "`*' interpreted as argument prefix");
10393         c = tSTAR;
10394       }
10395       else if (IS_BEG()) {
10396         c = tSTAR;
10397       }
10398       else {
10399         c = '*';
10400       }
10401     }
10402     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10403       p->lstate = EXPR_ARG;
10404     }
10405     else {
10406       p->lstate = EXPR_BEG;
10407     }
10408     return c;
10409 
10410   case '!':
10411     c = nextc(p);
10412     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10413       p->lstate = EXPR_ARG;
10414       if (c == '@') {
10415         return '!';
10416       }
10417     }
10418     else {
10419       p->lstate = EXPR_BEG;
10420     }
10421     if (c == '=') {
10422       return tNEQ;
10423     }
10424     if (c == '~') {
10425       return tNMATCH;
10426     }
10427     pushback(p, c);
10428     return '!';
10429 
10430   case '=':
10431     if (p->column == 1) {
10432       static const char begin[] = "begin";
10433       static const char end[] = "\n=end";
10434       if (peeks(p, begin)) {
10435         c = peekc_n(p, sizeof(begin)-1);
10436         if (c < 0 || ISSPACE(c)) {
10437           do {
10438             if (!skips(p, end)) {
10439               yyerror(p, "embedded document meets end of file");
10440               return 0;
10441             }
10442             c = nextc(p);
10443           } while (!(c < 0 || ISSPACE(c)));
10444           if (c != '\n') skip(p, '\n');
10445           p->lineno++;
10446           p->column = 0;
10447           goto retry;
10448         }
10449       }
10450     }
10451     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10452       p->lstate = EXPR_ARG;
10453     }
10454     else {
10455       p->lstate = EXPR_BEG;
10456     }
10457     if ((c = nextc(p)) == '=') {
10458       if ((c = nextc(p)) == '=') {
10459         return tEQQ;
10460       }
10461       pushback(p, c);
10462       return tEQ;
10463     }
10464     if (c == '~') {
10465       return tMATCH;
10466     }
10467     else if (c == '>') {
10468       return tASSOC;
10469     }
10470     pushback(p, c);
10471     return '=';
10472 
10473   case '<':
10474     c = nextc(p);
10475     if (c == '<' &&
10476         p->lstate != EXPR_DOT &&
10477         p->lstate != EXPR_CLASS &&
10478         !IS_END() &&
10479         (!IS_ARG() || space_seen)) {
10480       int token = heredoc_identifier(p);
10481       if (token)
10482         return token;
10483     }
10484     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10485       p->lstate = EXPR_ARG;
10486     }
10487     else {
10488       p->lstate = EXPR_BEG;
10489       if (p->lstate == EXPR_CLASS) {
10490         p->cmd_start = TRUE;
10491       }
10492     }
10493     if (c == '=') {
10494       if ((c = nextc(p)) == '>') {
10495         return tCMP;
10496       }
10497       pushback(p, c);
10498       return tLEQ;
10499     }
10500     if (c == '<') {
10501       if ((c = nextc(p)) == '=') {
10502         yylval.id = intern("<<",2);
10503         p->lstate = EXPR_BEG;
10504         return tOP_ASGN;
10505       }
10506       pushback(p, c);
10507       return tLSHFT;
10508     }
10509     pushback(p, c);
10510     return '<';
10511 
10512   case '>':
10513     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10514       p->lstate = EXPR_ARG;
10515     }
10516     else {
10517       p->lstate = EXPR_BEG;
10518     }
10519     if ((c = nextc(p)) == '=') {
10520       return tGEQ;
10521     }
10522     if (c == '>') {
10523       if ((c = nextc(p)) == '=') {
10524         yylval.id = intern(">>",2);
10525         p->lstate = EXPR_BEG;
10526         return tOP_ASGN;
10527       }
10528       pushback(p, c);
10529       return tRSHFT;
10530     }
10531     pushback(p, c);
10532     return '>';
10533 
10534   case '"':
10535     p->lex_strterm = new_strterm(p, str_dquote, '"', 0);
10536     return tSTRING_BEG;
10537 
10538   case '\'':
10539     p->lex_strterm = new_strterm(p, str_squote, '\'', 0);
10540     return parse_string(p);
10541 
10542   case '`':
10543     if (p->lstate == EXPR_FNAME) {
10544       p->lstate = EXPR_ENDFN;
10545       return '`';
10546     }
10547     if (p->lstate == EXPR_DOT) {
10548       if (cmd_state)
10549         p->lstate = EXPR_CMDARG;
10550       else
10551         p->lstate = EXPR_ARG;
10552       return '`';
10553     }
10554     p->lex_strterm = new_strterm(p, str_xquote, '`', 0);
10555     return tXSTRING_BEG;
10556 
10557   case '?':
10558     if (IS_END()) {
10559       p->lstate = EXPR_VALUE;
10560       return '?';
10561     }
10562     c = nextc(p);
10563     if (c < 0) {
10564       yyerror(p, "incomplete character syntax");
10565       return 0;
10566     }
10567     if (ISSPACE(c)) {
10568       if (!IS_ARG()) {
10569         int c2;
10570         switch (c) {
10571         case ' ':
10572           c2 = 's';
10573           break;
10574         case '\n':
10575           c2 = 'n';
10576           break;
10577         case '\t':
10578           c2 = 't';
10579           break;
10580         case '\v':
10581           c2 = 'v';
10582           break;
10583         case '\r':
10584           c2 = 'r';
10585           break;
10586         case '\f':
10587           c2 = 'f';
10588           break;
10589         default:
10590           c2 = 0;
10591           break;
10592         }
10593         if (c2) {
10594           char buf[256];
10595           snprintf(buf, sizeof(buf), "invalid character syntax; use ?\\%c", c2);
10596           yyerror(p, buf);
10597         }
10598       }
10599       ternary:
10600       pushback(p, c);
10601       p->lstate = EXPR_VALUE;
10602       return '?';
10603     }
10604     newtok(p);
10605     /* need support UTF-8 if configured */
10606     if ((isalnum(c) || c == '_')) {
10607       int c2 = nextc(p);
10608       pushback(p, c2);
10609       if ((isalnum(c2) || c2 == '_')) {
10610         goto ternary;
10611       }
10612     }
10613     if (c == '\\') {
10614       c = read_escape(p);
10615       tokadd(p, c);
10616     }
10617     else {
10618       tokadd(p, c);
10619     }
10620     tokfix(p);
10621     yylval.nd = new_str(p, tok(p), toklen(p));
10622     p->lstate = EXPR_END;
10623     return tCHAR;
10624 
10625   case '&':
10626     if ((c = nextc(p)) == '&') {
10627       p->lstate = EXPR_BEG;
10628       if ((c = nextc(p)) == '=') {
10629         yylval.id = intern("&&",2);
10630         p->lstate = EXPR_BEG;
10631         return tOP_ASGN;
10632       }
10633       pushback(p, c);
10634       return tANDOP;
10635     }
10636     else if (c == '=') {
10637       yylval.id = intern_c('&');
10638       p->lstate = EXPR_BEG;
10639       return tOP_ASGN;
10640     }
10641     pushback(p, c);
10642     if (IS_SPCARG(c)) {
10643       yywarning(p, "`&' interpreted as argument prefix");
10644       c = tAMPER;
10645     }
10646     else if (IS_BEG()) {
10647       c = tAMPER;
10648     }
10649     else {
10650       c = '&';
10651     }
10652     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10653       p->lstate = EXPR_ARG;
10654     }
10655     else {
10656       p->lstate = EXPR_BEG;
10657     }
10658     return c;
10659 
10660   case '|':
10661     if ((c = nextc(p)) == '|') {
10662       p->lstate = EXPR_BEG;
10663       if ((c = nextc(p)) == '=') {
10664         yylval.id = intern("||",2);
10665         p->lstate = EXPR_BEG;
10666         return tOP_ASGN;
10667       }
10668       pushback(p, c);
10669       return tOROP;
10670     }
10671     if (c == '=') {
10672       yylval.id = intern_c('|');
10673       p->lstate = EXPR_BEG;
10674       return tOP_ASGN;
10675     }
10676     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10677       p->lstate = EXPR_ARG;
10678     }
10679     else {
10680       p->lstate = EXPR_BEG;
10681     }
10682     pushback(p, c);
10683     return '|';
10684 
10685   case '+':
10686     c = nextc(p);
10687     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10688       p->lstate = EXPR_ARG;
10689       if (c == '@') {
10690         return tUPLUS;
10691       }
10692       pushback(p, c);
10693       return '+';
10694     }
10695     if (c == '=') {
10696       yylval.id = intern_c('+');
10697       p->lstate = EXPR_BEG;
10698       return tOP_ASGN;
10699     }
10700     if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
10701       p->lstate = EXPR_BEG;
10702       pushback(p, c);
10703       if (c >= 0 && ISDIGIT(c)) {
10704         c = '+';
10705         goto start_num;
10706       }
10707       return tUPLUS;
10708     }
10709     p->lstate = EXPR_BEG;
10710     pushback(p, c);
10711     return '+';
10712 
10713   case '-':
10714     c = nextc(p);
10715     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
10716       p->lstate = EXPR_ARG;
10717       if (c == '@') {
10718         return tUMINUS;
10719       }
10720       pushback(p, c);
10721       return '-';
10722     }
10723     if (c == '=') {
10724       yylval.id = intern_c('-');
10725       p->lstate = EXPR_BEG;
10726       return tOP_ASGN;
10727     }
10728     if (c == '>') {
10729       p->lstate = EXPR_ENDFN;
10730       return tLAMBDA;
10731     }
10732     if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p))) {
10733       p->lstate = EXPR_BEG;
10734       pushback(p, c);
10735       if (c >= 0 && ISDIGIT(c)) {
10736         return tUMINUS_NUM;
10737       }
10738       return tUMINUS;
10739     }
10740     p->lstate = EXPR_BEG;
10741     pushback(p, c);
10742     return '-';
10743 
10744   case '.':
10745     p->lstate = EXPR_BEG;
10746     if ((c = nextc(p)) == '.') {
10747       if ((c = nextc(p)) == '.') {
10748         return tDOT3;
10749       }
10750       pushback(p, c);
10751       return tDOT2;
10752     }
10753     pushback(p, c);
10754     if (c >= 0 && ISDIGIT(c)) {
10755       yyerror(p, "no .<digit> floating literal anymore; put 0 before dot");
10756     }
10757     p->lstate = EXPR_DOT;
10758     return '.';
10759 
10760     start_num:
10761   case '0': case '1': case '2': case '3': case '4':
10762   case '5': case '6': case '7': case '8': case '9':
10763   {
10764     int is_float, seen_point, seen_e, nondigit;
10765 
10766     is_float = seen_point = seen_e = nondigit = 0;
10767     p->lstate = EXPR_END;
10768     newtok(p);
10769     if (c == '-' || c == '+') {
10770       tokadd(p, c);
10771       c = nextc(p);
10772     }
10773     if (c == '0') {
10774 #define no_digits() do {yyerror(p,"numeric literal without digits"); return 0;} while (0)
10775       int start = toklen(p);
10776       c = nextc(p);
10777       if (c == 'x' || c == 'X') {
10778         /* hexadecimal */
10779         c = nextc(p);
10780         if (c >= 0 && ISXDIGIT(c)) {
10781           do {
10782             if (c == '_') {
10783               if (nondigit) break;
10784               nondigit = c;
10785               continue;
10786             }
10787             if (!ISXDIGIT(c)) break;
10788             nondigit = 0;
10789             tokadd(p, tolower(c));
10790           } while ((c = nextc(p)) >= 0);
10791         }
10792         pushback(p, c);
10793         tokfix(p);
10794         if (toklen(p) == start) {
10795           no_digits();
10796         }
10797         else if (nondigit) goto trailing_uc;
10798         yylval.nd = new_int(p, tok(p), 16);
10799         return tINTEGER;
10800       }
10801       if (c == 'b' || c == 'B') {
10802         /* binary */
10803         c = nextc(p);
10804         if (c == '0' || c == '1') {
10805           do {
10806             if (c == '_') {
10807               if (nondigit) break;
10808               nondigit = c;
10809               continue;
10810             }
10811             if (c != '0' && c != '1') break;
10812             nondigit = 0;
10813             tokadd(p, c);
10814           } while ((c = nextc(p)) >= 0);
10815         }
10816         pushback(p, c);
10817         tokfix(p);
10818         if (toklen(p) == start) {
10819           no_digits();
10820         }
10821         else if (nondigit) goto trailing_uc;
10822         yylval.nd = new_int(p, tok(p), 2);
10823         return tINTEGER;
10824       }
10825       if (c == 'd' || c == 'D') {
10826         /* decimal */
10827         c = nextc(p);
10828         if (c >= 0 && ISDIGIT(c)) {
10829           do {
10830             if (c == '_') {
10831               if (nondigit) break;
10832               nondigit = c;
10833               continue;
10834             }
10835             if (!ISDIGIT(c)) break;
10836             nondigit = 0;
10837             tokadd(p, c);
10838           } while ((c = nextc(p)) >= 0);
10839         }
10840         pushback(p, c);
10841         tokfix(p);
10842         if (toklen(p) == start) {
10843           no_digits();
10844         }
10845         else if (nondigit) goto trailing_uc;
10846         yylval.nd = new_int(p, tok(p), 10);
10847         return tINTEGER;
10848       }
10849       if (c == '_') {
10850         /* 0_0 */
10851         goto octal_number;
10852       }
10853       if (c == 'o' || c == 'O') {
10854         /* prefixed octal */
10855         c = nextc(p);
10856         if (c < 0 || c == '_' || !ISDIGIT(c)) {
10857           no_digits();
10858         }
10859       }
10860       if (c >= '0' && c <= '7') {
10861         /* octal */
10862         octal_number:
10863         do {
10864           if (c == '_') {
10865             if (nondigit) break;
10866             nondigit = c;
10867             continue;
10868           }
10869           if (c < '0' || c > '9') break;
10870           if (c > '7') goto invalid_octal;
10871           nondigit = 0;
10872           tokadd(p, c);
10873         } while ((c = nextc(p)) >= 0);
10874 
10875         if (toklen(p) > start) {
10876           pushback(p, c);
10877           tokfix(p);
10878           if (nondigit) goto trailing_uc;
10879           yylval.nd = new_int(p, tok(p), 8);
10880           return tINTEGER;
10881         }
10882         if (nondigit) {
10883           pushback(p, c);
10884           goto trailing_uc;
10885         }
10886       }
10887       if (c > '7' && c <= '9') {
10888         invalid_octal:
10889         yyerror(p, "Invalid octal digit");
10890       }
10891       else if (c == '.' || c == 'e' || c == 'E') {
10892         tokadd(p, '0');
10893       }
10894       else {
10895         pushback(p, c);
10896         yylval.nd = new_int(p, "0", 10);
10897         return tINTEGER;
10898       }
10899     }
10900 
10901     for (;;) {
10902       switch (c) {
10903       case '0': case '1': case '2': case '3': case '4':
10904       case '5': case '6': case '7': case '8': case '9':
10905         nondigit = 0;
10906         tokadd(p, c);
10907         break;
10908 
10909       case '.':
10910         if (nondigit) goto trailing_uc;
10911         if (seen_point || seen_e) {
10912           goto decode_num;
10913         }
10914         else {
10915           int c0 = nextc(p);
10916           if (c0 < 0 || !ISDIGIT(c0)) {
10917             pushback(p, c0);
10918             goto decode_num;
10919           }
10920           c = c0;
10921         }
10922         tokadd(p, '.');
10923         tokadd(p, c);
10924         is_float++;
10925         seen_point++;
10926         nondigit = 0;
10927         break;
10928 
10929       case 'e':
10930       case 'E':
10931         if (nondigit) {
10932           pushback(p, c);
10933           c = nondigit;
10934           goto decode_num;
10935         }
10936         if (seen_e) {
10937           goto decode_num;
10938         }
10939         tokadd(p, c);
10940         seen_e++;
10941         is_float++;
10942         nondigit = c;
10943         c = nextc(p);
10944         if (c != '-' && c != '+') continue;
10945         tokadd(p, c);
10946         nondigit = c;
10947         break;
10948 
10949       case '_':       /* `_' in number just ignored */
10950         if (nondigit) goto decode_num;
10951         nondigit = c;
10952         break;
10953 
10954       default:
10955         goto decode_num;
10956       }
10957       c = nextc(p);
10958     }
10959 
10960     decode_num:
10961     pushback(p, c);
10962     if (nondigit) {
10963       trailing_uc:
10964       yyerror_i(p, "trailing `%c' in number", nondigit);
10965     }
10966     tokfix(p);
10967     if (is_float) {
10968       double d;
10969       char *endp;
10970 
10971       errno = 0;
10972       d = strtod(tok(p), &endp);
10973       if (d == 0 && endp == tok(p)) {
10974         yywarning_s(p, "corrupted float value %s", tok(p));
10975       }
10976       else if (errno == ERANGE) {
10977         yywarning_s(p, "float %s out of range", tok(p));
10978         errno = 0;
10979       }
10980       yylval.nd = new_float(p, tok(p));
10981       return tFLOAT;
10982     }
10983     yylval.nd = new_int(p, tok(p), 10);
10984     return tINTEGER;
10985   }
10986 
10987   case ')':
10988   case ']':
10989     p->paren_nest--;
10990   case '}':
10991     COND_LEXPOP();
10992     CMDARG_LEXPOP();
10993     if (c == ')')
10994       p->lstate = EXPR_ENDFN;
10995     else
10996       p->lstate = EXPR_ENDARG;
10997     return c;
10998 
10999   case ':':
11000     c = nextc(p);
11001     if (c == ':') {
11002       if (IS_BEG() || p->lstate == EXPR_CLASS || IS_SPCARG(-1)) {
11003         p->lstate = EXPR_BEG;
11004         return tCOLON3;
11005       }
11006       p->lstate = EXPR_DOT;
11007       return tCOLON2;
11008     }
11009     if (IS_END() || ISSPACE(c)) {
11010       pushback(p, c);
11011       p->lstate = EXPR_BEG;
11012       return ':';
11013     }
11014     pushback(p, c);
11015     p->lstate = EXPR_FNAME;
11016     return tSYMBEG;
11017 
11018   case '/':
11019     if (IS_BEG()) {
11020       p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
11021       return tREGEXP_BEG;
11022     }
11023     if ((c = nextc(p)) == '=') {
11024       yylval.id = intern_c('/');
11025       p->lstate = EXPR_BEG;
11026       return tOP_ASGN;
11027     }
11028     pushback(p, c);
11029     if (IS_SPCARG(c)) {
11030       p->lex_strterm = new_strterm(p, str_regexp, '/', 0);
11031       return tREGEXP_BEG;
11032     }
11033     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
11034       p->lstate = EXPR_ARG;
11035     }
11036     else {
11037       p->lstate = EXPR_BEG;
11038     }
11039     return '/';
11040 
11041   case '^':
11042     if ((c = nextc(p)) == '=') {
11043       yylval.id = intern_c('^');
11044       p->lstate = EXPR_BEG;
11045       return tOP_ASGN;
11046     }
11047     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
11048       p->lstate = EXPR_ARG;
11049     }
11050     else {
11051       p->lstate = EXPR_BEG;
11052     }
11053     pushback(p, c);
11054     return '^';
11055 
11056   case ';':
11057     p->lstate = EXPR_BEG;
11058     return ';';
11059 
11060   case ',':
11061     p->lstate = EXPR_BEG;
11062     return ',';
11063 
11064   case '~':
11065     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
11066       if ((c = nextc(p)) != '@') {
11067         pushback(p, c);
11068       }
11069       p->lstate = EXPR_ARG;
11070     }
11071     else {
11072       p->lstate = EXPR_BEG;
11073     }
11074     return '~';
11075 
11076   case '(':
11077     if (IS_BEG()) {
11078       c = tLPAREN;
11079     }
11080     else if (IS_SPCARG(-1)) {
11081       c = tLPAREN_ARG;
11082     }
11083     p->paren_nest++;
11084     COND_PUSH(0);
11085     CMDARG_PUSH(0);
11086     p->lstate = EXPR_BEG;
11087     return c;
11088 
11089   case '[':
11090     p->paren_nest++;
11091     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
11092       p->lstate = EXPR_ARG;
11093       if ((c = nextc(p)) == ']') {
11094         if ((c = nextc(p)) == '=') {
11095           return tASET;
11096         }
11097         pushback(p, c);
11098         return tAREF;
11099       }
11100       pushback(p, c);
11101       return '[';
11102     }
11103     else if (IS_BEG()) {
11104       c = tLBRACK;
11105     }
11106     else if (IS_ARG() && space_seen) {
11107       c = tLBRACK;
11108     }
11109     p->lstate = EXPR_BEG;
11110     COND_PUSH(0);
11111     CMDARG_PUSH(0);
11112     return c;
11113 
11114   case '{':
11115     if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
11116       p->lstate = EXPR_BEG;
11117       p->lpar_beg = 0;
11118       p->paren_nest--;
11119       COND_PUSH(0);
11120       CMDARG_PUSH(0);
11121       return tLAMBEG;
11122     }
11123     if (IS_ARG() || p->lstate == EXPR_END || p->lstate == EXPR_ENDFN)
11124       c = '{';          /* block (primary) */
11125     else if (p->lstate == EXPR_ENDARG)
11126       c = tLBRACE_ARG;  /* block (expr) */
11127     else
11128       c = tLBRACE;      /* hash */
11129     COND_PUSH(0);
11130     CMDARG_PUSH(0);
11131     p->lstate = EXPR_BEG;
11132     return c;
11133 
11134   case '\\':
11135     c = nextc(p);
11136     if (c == '\n') {
11137       p->lineno++;
11138       p->column = 0;
11139       space_seen = 1;
11140       goto retry; /* skip \\n */
11141     }
11142     pushback(p, c);
11143     return '\\';
11144 
11145   case '%':
11146     if (IS_BEG()) {
11147       int term;
11148       int paren;
11149 
11150       c = nextc(p);
11151       quotation:
11152       if (c < 0 || !ISALNUM(c)) {
11153         term = c;
11154         c = 'Q';
11155       }
11156       else {
11157         term = nextc(p);
11158         if (isalnum(term)) {
11159           yyerror(p, "unknown type of %string");
11160           return 0;
11161         }
11162       }
11163       if (c < 0 || term < 0) {
11164         yyerror(p, "unterminated quoted string meets end of file");
11165         return 0;
11166       }
11167       paren = term;
11168       if (term == '(') term = ')';
11169       else if (term == '[') term = ']';
11170       else if (term == '{') term = '}';
11171       else if (term == '<') term = '>';
11172       else paren = 0;
11173 
11174       switch (c) {
11175       case 'Q':
11176         p->lex_strterm = new_strterm(p, str_dquote, term, paren);
11177         return tSTRING_BEG;
11178 
11179       case 'q':
11180         p->lex_strterm = new_strterm(p, str_squote, term, paren);
11181         return parse_string(p);
11182 
11183       case 'W':
11184         p->lex_strterm = new_strterm(p, str_dword, term, paren);
11185         return tWORDS_BEG;
11186 
11187       case 'w':
11188         p->lex_strterm = new_strterm(p, str_sword, term, paren);
11189         return tWORDS_BEG;
11190 
11191       case 'x':
11192         p->lex_strterm = new_strterm(p, str_xquote, term, paren);
11193         return tXSTRING_BEG;
11194 
11195       case 'r':
11196         p->lex_strterm = new_strterm(p, str_regexp, term, paren);
11197         return tREGEXP_BEG;
11198 
11199       case 's':
11200         p->lex_strterm = new_strterm(p, str_ssym, term, paren);
11201         return tSYMBEG;
11202 
11203       case 'I':
11204         p->lex_strterm = new_strterm(p, str_dsymbols, term, paren);
11205         return tSYMBOLS_BEG;
11206 
11207       case 'i':
11208         p->lex_strterm = new_strterm(p, str_ssymbols, term, paren);
11209         return tSYMBOLS_BEG;
11210 
11211       default:
11212         yyerror(p, "unknown type of %string");
11213         return 0;
11214       }
11215     }
11216     if ((c = nextc(p)) == '=') {
11217       yylval.id = intern_c('%');
11218       p->lstate = EXPR_BEG;
11219       return tOP_ASGN;
11220     }
11221     if (IS_SPCARG(c)) {
11222       goto quotation;
11223     }
11224     if (p->lstate == EXPR_FNAME || p->lstate == EXPR_DOT) {
11225       p->lstate = EXPR_ARG;
11226     }
11227     else {
11228       p->lstate = EXPR_BEG;
11229     }
11230     pushback(p, c);
11231     return '%';
11232 
11233   case '$':
11234     p->lstate = EXPR_END;
11235     token_column = newtok(p);
11236     c = nextc(p);
11237     if (c < 0) {
11238       yyerror(p, "incomplete global variable syntax");
11239       return 0;
11240     }
11241     switch (c) {
11242     case '_':     /* $_: last read line string */
11243       c = nextc(p);
11244       if (c >= 0 && identchar(c)) { /* if there is more after _ it is a variable */
11245         tokadd(p, '$');
11246         tokadd(p, c);
11247         break;
11248       }
11249       pushback(p, c);
11250       c = '_';
11251       /* fall through */
11252     case '~':     /* $~: match-data */
11253     case '*':     /* $*: argv */
11254     case '$':     /* $$: pid */
11255     case '?':     /* $?: last status */
11256     case '!':     /* $!: error string */
11257     case '@':     /* $@: error position */
11258     case '/':     /* $/: input record separator */
11259     case '\\':    /* $\: output record separator */
11260     case ';':     /* $;: field separator */
11261     case ',':     /* $,: output field separator */
11262     case '.':     /* $.: last read line number */
11263     case '=':     /* $=: ignorecase */
11264     case ':':     /* $:: load path */
11265     case '<':     /* $<: reading filename */
11266     case '>':     /* $>: default output handle */
11267     case '\"':    /* $": already loaded files */
11268       tokadd(p, '$');
11269       tokadd(p, c);
11270       tokfix(p);
11271       yylval.id = intern_cstr(tok(p));
11272       return tGVAR;
11273 
11274     case '-':
11275       tokadd(p, '$');
11276       tokadd(p, c);
11277       c = nextc(p);
11278       pushback(p, c);
11279       gvar:
11280       tokfix(p);
11281       yylval.id = intern_cstr(tok(p));
11282       return tGVAR;
11283 
11284     case '&':     /* $&: last match */
11285     case '`':     /* $`: string before last match */
11286     case '\'':    /* $': string after last match */
11287     case '+':     /* $+: string matches last pattern */
11288       if (last_state == EXPR_FNAME) {
11289         tokadd(p, '$');
11290         tokadd(p, c);
11291         goto gvar;
11292       }
11293       yylval.nd = new_back_ref(p, c);
11294       return tBACK_REF;
11295 
11296     case '1': case '2': case '3':
11297     case '4': case '5': case '6':
11298     case '7': case '8': case '9':
11299       do {
11300         tokadd(p, c);
11301         c = nextc(p);
11302       } while (c >= 0 && isdigit(c));
11303       pushback(p, c);
11304       if (last_state == EXPR_FNAME) goto gvar;
11305       tokfix(p);
11306       yylval.nd = new_nth_ref(p, atoi(tok(p)));
11307       return tNTH_REF;
11308 
11309     default:
11310       if (!identchar(c)) {
11311         pushback(p,  c);
11312         return '$';
11313       }
11314     case '0':
11315       tokadd(p, '$');
11316     }
11317     break;
11318 
11319     case '@':
11320       c = nextc(p);
11321       token_column = newtok(p);
11322       tokadd(p, '@');
11323       if (c == '@') {
11324         tokadd(p, '@');
11325         c = nextc(p);
11326       }
11327       if (c < 0) {
11328         if (p->bidx == 1) {
11329           yyerror(p, "incomplete instance variable syntax");
11330         }
11331         else {
11332           yyerror(p, "incomplete class variable syntax");
11333         }
11334         return 0;
11335       }
11336       else if (isdigit(c)) {
11337         if (p->bidx == 1) {
11338           yyerror_i(p, "`@%c' is not allowed as an instance variable name", c);
11339         }
11340         else {
11341           yyerror_i(p, "`@@%c' is not allowed as a class variable name", c);
11342         }
11343         return 0;
11344       }
11345       if (!identchar(c)) {
11346         pushback(p, c);
11347         return '@';
11348       }
11349       break;
11350 
11351     case '_':
11352       token_column = newtok(p);
11353       break;
11354 
11355     default:
11356       if (!identchar(c)) {
11357         yyerror_i(p,  "Invalid char `\\x%02X' in expression", c);
11358         goto retry;
11359       }
11360 
11361       token_column = newtok(p);
11362       break;
11363   }
11364 
11365   do {
11366     tokadd(p, c);
11367     c = nextc(p);
11368     if (c < 0) break;
11369   } while (identchar(c));
11370   if (token_column == 0 && toklen(p) == 7 && (c < 0 || c == '\n') &&
11371       strncmp(tok(p), "__END__", toklen(p)) == 0)
11372     return -1;
11373 
11374   switch (tok(p)[0]) {
11375   case '@': case '$':
11376     pushback(p, c);
11377     break;
11378   default:
11379     if ((c == '!' || c == '?') && !peek(p, '=')) {
11380       tokadd(p, c);
11381     }
11382     else {
11383       pushback(p, c);
11384     }
11385   }
11386   tokfix(p);
11387   {
11388     int result = 0;
11389 
11390     switch (tok(p)[0]) {
11391     case '$':
11392       p->lstate = EXPR_END;
11393       result = tGVAR;
11394       break;
11395     case '@':
11396       p->lstate = EXPR_END;
11397       if (tok(p)[1] == '@')
11398         result = tCVAR;
11399       else
11400         result = tIVAR;
11401       break;
11402 
11403     default:
11404       if (toklast(p) == '!' || toklast(p) == '?') {
11405         result = tFID;
11406       }
11407       else {
11408         if (p->lstate == EXPR_FNAME) {
11409           if ((c = nextc(p)) == '=' && !peek(p, '~') && !peek(p, '>') &&
11410               (!peek(p, '=') || (peek_n(p, '>', 1)))) {
11411             result = tIDENTIFIER;
11412             tokadd(p, c);
11413             tokfix(p);
11414           }
11415           else {
11416             pushback(p, c);
11417           }
11418         }
11419         if (result == 0 && ISUPPER(tok(p)[0])) {
11420           result = tCONSTANT;
11421         }
11422         else {
11423           result = tIDENTIFIER;
11424         }
11425       }
11426 
11427       if (IS_LABEL_POSSIBLE()) {
11428         if (IS_LABEL_SUFFIX(0)) {
11429           p->lstate = EXPR_BEG;
11430           nextc(p);
11431           tokfix(p);
11432           yylval.id = intern_cstr(tok(p));
11433           return tLABEL;
11434         }
11435       }
11436       if (p->lstate != EXPR_DOT) {
11437         const struct kwtable *kw;
11438 
11439         /* See if it is a reserved word.  */
11440         kw = mrb_reserved_word(tok(p), toklen(p));
11441         if (kw) {
11442           enum mrb_lex_state_enum state = p->lstate;
11443           yylval.num = p->lineno;
11444           p->lstate = kw->state;
11445           if (state == EXPR_FNAME) {
11446             yylval.id = intern_cstr(kw->name);
11447             return kw->id[0];
11448           }
11449           if (p->lstate == EXPR_BEG) {
11450             p->cmd_start = TRUE;
11451           }
11452           if (kw->id[0] == keyword_do) {
11453             if (p->lpar_beg && p->lpar_beg == p->paren_nest) {
11454               p->lpar_beg = 0;
11455               p->paren_nest--;
11456               return keyword_do_LAMBDA;
11457             }
11458             if (COND_P()) return keyword_do_cond;
11459             if (CMDARG_P() && state != EXPR_CMDARG)
11460               return keyword_do_block;
11461             if (state == EXPR_ENDARG || state == EXPR_BEG)
11462               return keyword_do_block;
11463             return keyword_do;
11464           }
11465           if (state == EXPR_BEG || state == EXPR_VALUE)
11466             return kw->id[0];
11467           else {
11468             if (kw->id[0] != kw->id[1])
11469               p->lstate = EXPR_BEG;
11470             return kw->id[1];
11471           }
11472         }
11473       }
11474 
11475       if (IS_BEG() || p->lstate == EXPR_DOT || IS_ARG()) {
11476         if (cmd_state) {
11477           p->lstate = EXPR_CMDARG;
11478         }
11479         else {
11480           p->lstate = EXPR_ARG;
11481         }
11482       }
11483       else if (p->lstate == EXPR_FNAME) {
11484         p->lstate = EXPR_ENDFN;
11485       }
11486       else {
11487         p->lstate = EXPR_END;
11488       }
11489     }
11490     {
11491       mrb_sym ident = intern_cstr(tok(p));
11492 
11493       yylval.id = ident;
11494 #if 0
11495       if (last_state != EXPR_DOT && islower(tok(p)[0]) && lvar_defined(ident)) {
11496         p->lstate = EXPR_END;
11497       }
11498 #endif
11499     }
11500     return result;
11501   }
11502 }
11503 
11504 static int
11505 yylex(void *lval, parser_state *p)
11506 {
11507   p->ylval = lval;
11508   return parser_yylex(p);
11509 }
11510 
11511 static void
11512 parser_init_cxt(parser_state *p, mrbc_context *cxt)
11513 {
11514   if (!cxt) return;
11515   if (cxt->filename) mrb_parser_set_filename(p, cxt->filename);
11516   if (cxt->lineno) p->lineno = cxt->lineno;
11517   if (cxt->syms) {
11518     int i;
11519 
11520     p->locals = cons(0,0);
11521     for (i=0; i<cxt->slen; i++) {
11522       local_add_f(p, cxt->syms[i]);
11523     }
11524   }
11525   p->capture_errors = cxt->capture_errors;
11526   p->no_optimize = cxt->no_optimize;
11527   if (cxt->partial_hook) {
11528     p->cxt = cxt;
11529   }
11530 }
11531 
11532 static void
11533 parser_update_cxt(parser_state *p, mrbc_context *cxt)
11534 {
11535   node *n, *n0;
11536   int i = 0;
11537 
11538   if (!cxt) return;
11539   if ((int)(intptr_t)p->tree->car != NODE_SCOPE) return;
11540   n0 = n = p->tree->cdr->car;
11541   while (n) {
11542     i++;
11543     n = n->cdr;
11544   }
11545   cxt->syms = (mrb_sym *)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym));
11546   cxt->slen = i;
11547   for (i=0, n=n0; n; i++,n=n->cdr) {
11548     cxt->syms[i] = sym(n->car);
11549   }
11550 }
11551 
11552 void mrb_codedump_all(mrb_state*, struct RProc*);
11553 void mrb_parser_dump(mrb_state *mrb, node *tree, int offset);
11554 
11555 MRB_API void
11556 mrb_parser_parse(parser_state *p, mrbc_context *c)
11557 {
11558   struct mrb_jmpbuf buf;
11559   p->jmp = &buf;
11560 
11561   MRB_TRY(p->jmp) {
11562 
11563     p->cmd_start = TRUE;
11564     p->in_def = p->in_single = 0;
11565     p->nerr = p->nwarn = 0;
11566     p->lex_strterm = NULL;
11567 
11568     parser_init_cxt(p, c);
11569     yyparse(p);
11570     if (!p->tree) {
11571       p->tree = new_nil(p);
11572     }
11573     parser_update_cxt(p, c);
11574     if (c && c->dump_result) {
11575       mrb_parser_dump(p->mrb, p->tree, 0);
11576     }
11577 
11578   }
11579   MRB_CATCH(p->jmp) {
11580     yyerror(p, "memory allocation error");
11581     p->nerr++;
11582     p->tree = 0;
11583     return;
11584   }
11585   MRB_END_EXC(p->jmp);
11586 }
11587 
11588 MRB_API parser_state*
11589 mrb_parser_new(mrb_state *mrb)
11590 {
11591   mrb_pool *pool;
11592   parser_state *p;
11593   static const parser_state parser_state_zero = { 0 };
11594 
11595   pool = mrb_pool_open(mrb);
11596   if (!pool) return NULL;
11597   p = (parser_state *)mrb_pool_alloc(pool, sizeof(parser_state));
11598   if (!p) return NULL;
11599 
11600   *p = parser_state_zero;
11601   p->mrb = mrb;
11602   p->pool = pool;
11603 
11604   p->s = p->send = NULL;
11605 #ifdef ENABLE_STDIO
11606   p->f = NULL;
11607 #endif
11608 
11609   p->cmd_start = TRUE;
11610   p->in_def = p->in_single = 0;
11611 
11612   p->capture_errors = FALSE;
11613   p->lineno = 1;
11614   p->column = 0;
11615 #if defined(PARSER_TEST) || defined(PARSER_DEBUG)
11616   yydebug = 1;
11617 #endif
11618 
11619   p->lex_strterm = NULL;
11620   p->all_heredocs = p->parsing_heredoc = NULL;
11621   p->lex_strterm_before_heredoc = NULL;
11622 
11623   p->current_filename_index = -1;
11624   p->filename_table = NULL;
11625   p->filename_table_length = 0;
11626 
11627   return p;
11628 }
11629 
11630 MRB_API void
11631 mrb_parser_free(parser_state *p) {
11632   mrb_pool_close(p->pool);
11633 }
11634 
11635 MRB_API mrbc_context*
11636 mrbc_context_new(mrb_state *mrb)
11637 {
11638   return (mrbc_context *)mrb_calloc(mrb, 1, sizeof(mrbc_context));
11639 }
11640 
11641 MRB_API void
11642 mrbc_context_free(mrb_state *mrb, mrbc_context *cxt)
11643 {
11644   mrb_free(mrb, cxt->syms);
11645   mrb_free(mrb, cxt);
11646 }
11647 
11648 MRB_API const char*
11649 mrbc_filename(mrb_state *mrb, mrbc_context *c, const char *s)
11650 {
11651   if (s) {
11652     int len = strlen(s);
11653     char *p = (char *)mrb_alloca(mrb, len + 1);
11654 
11655     memcpy(p, s, len + 1);
11656     c->filename = p;
11657   }
11658   return c->filename;
11659 }
11660 
11661 MRB_API void
11662 mrbc_partial_hook(mrb_state *mrb, mrbc_context *c, int (*func)(struct mrb_parser_state*), void *data)
11663 {
11664   c->partial_hook = func;
11665   c->partial_data = data;
11666 }
11667 
11668 MRB_API void
11669 mrb_parser_set_filename(struct mrb_parser_state *p, const char *f)
11670 {
11671   mrb_sym sym;
11672   size_t i;
11673   mrb_sym* new_table;
11674 
11675   sym = mrb_intern_cstr(p->mrb, f);
11676   p->filename = mrb_sym2name_len(p->mrb, sym, NULL);
11677   p->lineno = (p->filename_table_length > 0)? 0 : 1;
11678 
11679   for (i = 0; i < p->filename_table_length; ++i) {
11680     if (p->filename_table[i] == sym) {
11681       p->current_filename_index = i;
11682       return;
11683     }
11684   }
11685 
11686   p->current_filename_index = p->filename_table_length++;
11687 
11688   new_table = (mrb_sym*)parser_palloc(p, sizeof(mrb_sym) * p->filename_table_length);
11689   if (p->filename_table) {
11690     memmove(new_table, p->filename_table, sizeof(mrb_sym) * p->filename_table_length);
11691   }
11692   p->filename_table = new_table;
11693   p->filename_table[p->filename_table_length - 1] = sym;
11694 }
11695 
11696 MRB_API char const*
11697 mrb_parser_get_filename(struct mrb_parser_state* p, uint16_t idx) {
11698   if (idx >= p->filename_table_length) { return NULL; }
11699   else {
11700     return mrb_sym2name_len(p->mrb, p->filename_table[idx], NULL);
11701   }
11702 }
11703 
11704 #ifdef ENABLE_STDIO
11705 MRB_API parser_state*
11706 mrb_parse_file(mrb_state *mrb, FILE *f, mrbc_context *c)
11707 {
11708   parser_state *p;
11709 
11710   p = mrb_parser_new(mrb);
11711   if (!p) return NULL;
11712   p->s = p->send = NULL;
11713   p->f = f;
11714 
11715   mrb_parser_parse(p, c);
11716   return p;
11717 }
11718 #endif
11719 
11720 MRB_API parser_state*
11721 mrb_parse_nstring(mrb_state *mrb, const char *s, int len, mrbc_context *c)
11722 {
11723   parser_state *p;
11724 
11725   p = mrb_parser_new(mrb);
11726   if (!p) return NULL;
11727   p->s = s;
11728   p->send = s + len;
11729 
11730   mrb_parser_parse(p, c);
11731   return p;
11732 }
11733 
11734 MRB_API parser_state*
11735 mrb_parse_string(mrb_state *mrb, const char *s, mrbc_context *c)
11736 {
11737   return mrb_parse_nstring(mrb, s, strlen(s), c);
11738 }
11739 
11740 static mrb_value
11741 load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c)
11742 {
11743   struct RClass *target = mrb->object_class;
11744   struct RProc *proc;
11745   mrb_value v;
11746   unsigned int keep = 0;
11747 
11748   if (!p) {
11749     return mrb_undef_value();
11750   }
11751   if (!p->tree || p->nerr) {
11752     if (p->capture_errors) {
11753       char buf[256];
11754       int n;
11755 
11756       n = snprintf(buf, sizeof(buf), "line %d: %s\n",
11757           p->error_buffer[0].lineno, p->error_buffer[0].message);
11758       mrb->exc = mrb_obj_ptr(mrb_exc_new(mrb, E_SYNTAX_ERROR, buf, n));
11759       mrb_parser_free(p);
11760       return mrb_undef_value();
11761     }
11762     else {
11763       mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SYNTAX_ERROR, "syntax error"));
11764       mrb_parser_free(p);
11765       return mrb_undef_value();
11766     }
11767   }
11768   proc = mrb_generate_code(mrb, p);
11769   mrb_parser_free(p);
11770   if (proc == NULL) {
11771     mrb->exc = mrb_obj_ptr(mrb_exc_new_str_lit(mrb, E_SCRIPT_ERROR, "codegen error"));
11772     return mrb_undef_value();
11773   }
11774   if (c) {
11775     if (c->dump_result) mrb_codedump_all(mrb, proc);
11776     if (c->no_exec) return mrb_obj_value(proc);
11777     if (c->target_class) {
11778       target = c->target_class;
11779     }
11780     if (c->keep_lv) {
11781       keep = c->slen + 1;
11782     }
11783     else {
11784       c->keep_lv = TRUE;
11785     }
11786   }
11787   proc->target_class = target;
11788   if (mrb->c->ci) {
11789     mrb->c->ci->target_class = target;
11790   }
11791   v = mrb_toplevel_run_keep(mrb, proc, keep);
11792   if (mrb->exc) return mrb_nil_value();
11793   return v;
11794 }
11795 
11796 #ifdef ENABLE_STDIO
11797 MRB_API mrb_value
11798 mrb_load_file_cxt(mrb_state *mrb, FILE *f, mrbc_context *c)
11799 {
11800   return load_exec(mrb, mrb_parse_file(mrb, f, c), c);
11801 }
11802 
11803 MRB_API mrb_value
11804 mrb_load_file(mrb_state *mrb, FILE *f)
11805 {
11806   return mrb_load_file_cxt(mrb, f, NULL);
11807 }
11808 #endif
11809 
11810 MRB_API mrb_value
11811 mrb_load_nstring_cxt(mrb_state *mrb, const char *s, int len, mrbc_context *c)
11812 {
11813   return load_exec(mrb, mrb_parse_nstring(mrb, s, len, c), c);
11814 }
11815 
11816 MRB_API mrb_value
11817 mrb_load_nstring(mrb_state *mrb, const char *s, int len)
11818 {
11819   return mrb_load_nstring_cxt(mrb, s, len, NULL);
11820 }
11821 
11822 MRB_API mrb_value
11823 mrb_load_string_cxt(mrb_state *mrb, const char *s, mrbc_context *c)
11824 {
11825   return mrb_load_nstring_cxt(mrb, s, strlen(s), c);
11826 }
11827 
11828 MRB_API mrb_value
11829 mrb_load_string(mrb_state *mrb, const char *s)
11830 {
11831   return mrb_load_string_cxt(mrb, s, NULL);
11832 }
11833 
11834 #ifdef ENABLE_STDIO
11835 
11836 static void
11837 dump_prefix(node *tree, int offset)
11838 {
11839   printf("%05d ", tree->lineno);
11840   while (offset--) {
11841     putc(' ', stdout);
11842     putc(' ', stdout);
11843   }
11844 }
11845 
11846 static void
11847 dump_recur(mrb_state *mrb, node *tree, int offset)
11848 {
11849   while (tree) {
11850     mrb_parser_dump(mrb, tree->car, offset);
11851     tree = tree->cdr;
11852   }
11853 }
11854 
11855 #endif
11856 
11857 void
11858 mrb_parser_dump(mrb_state *mrb, node *tree, int offset)
11859 {
11860 #ifdef ENABLE_STDIO
11861   int nodetype;
11862 
11863   if (!tree) return;
11864   again:
11865   dump_prefix(tree, offset);
11866   nodetype = (int)(intptr_t)tree->car;
11867   tree = tree->cdr;
11868   switch (nodetype) {
11869   case NODE_BEGIN:
11870     printf("NODE_BEGIN:\n");
11871     dump_recur(mrb, tree, offset+1);
11872     break;
11873 
11874   case NODE_RESCUE:
11875     printf("NODE_RESCUE:\n");
11876     if (tree->car) {
11877       dump_prefix(tree, offset+1);
11878       printf("body:\n");
11879       mrb_parser_dump(mrb, tree->car, offset+2);
11880     }
11881     tree = tree->cdr;
11882     if (tree->car) {
11883       node *n2 = tree->car;
11884 
11885       dump_prefix(n2, offset+1);
11886       printf("rescue:\n");
11887       while (n2) {
11888         node *n3 = n2->car;
11889         if (n3->car) {
11890           dump_prefix(n2, offset+2);
11891           printf("handle classes:\n");
11892           dump_recur(mrb, n3->car, offset+3);
11893         }
11894         if (n3->cdr->car) {
11895           dump_prefix(n3, offset+2);
11896           printf("exc_var:\n");
11897           mrb_parser_dump(mrb, n3->cdr->car, offset+3);
11898         }
11899         if (n3->cdr->cdr->car) {
11900           dump_prefix(n3, offset+2);
11901           printf("rescue body:\n");
11902           mrb_parser_dump(mrb, n3->cdr->cdr->car, offset+3);
11903         }
11904         n2 = n2->cdr;
11905       }
11906     }
11907     tree = tree->cdr;
11908     if (tree->car) {
11909       dump_prefix(tree, offset+1);
11910       printf("else:\n");
11911       mrb_parser_dump(mrb, tree->car, offset+2);
11912     }
11913     break;
11914 
11915   case NODE_ENSURE:
11916     printf("NODE_ENSURE:\n");
11917     dump_prefix(tree, offset+1);
11918     printf("body:\n");
11919     mrb_parser_dump(mrb, tree->car, offset+2);
11920     dump_prefix(tree, offset+1);
11921     printf("ensure:\n");
11922     mrb_parser_dump(mrb, tree->cdr->cdr, offset+2);
11923     break;
11924 
11925   case NODE_LAMBDA:
11926     printf("NODE_BLOCK:\n");
11927     goto block;
11928 
11929   case NODE_BLOCK:
11930     block:
11931     printf("NODE_BLOCK:\n");
11932     tree = tree->cdr;
11933     if (tree->car) {
11934       node *n = tree->car;
11935 
11936       if (n->car) {
11937         dump_prefix(n, offset+1);
11938         printf("mandatory args:\n");
11939         dump_recur(mrb, n->car, offset+2);
11940       }
11941       n = n->cdr;
11942       if (n->car) {
11943         dump_prefix(n, offset+1);
11944         printf("optional args:\n");
11945         {
11946           node *n2 = n->car;
11947 
11948           while (n2) {
11949             dump_prefix(n2, offset+2);
11950             printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
11951             mrb_parser_dump(mrb, n2->car->cdr, 0);
11952             n2 = n2->cdr;
11953           }
11954         }
11955       }
11956       n = n->cdr;
11957       if (n->car) {
11958         dump_prefix(n, offset+1);
11959         printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
11960       }
11961       n = n->cdr;
11962       if (n->car) {
11963         dump_prefix(n, offset+1);
11964         printf("post mandatory args:\n");
11965         dump_recur(mrb, n->car, offset+2);
11966       }
11967       n = n->cdr;
11968       if (n) {
11969         dump_prefix(n, offset+1);
11970         printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
11971       }
11972     }
11973     dump_prefix(tree, offset+1);
11974     printf("body:\n");
11975     mrb_parser_dump(mrb, tree->cdr->car, offset+2);
11976     break;
11977 
11978   case NODE_IF:
11979     printf("NODE_IF:\n");
11980     dump_prefix(tree, offset+1);
11981     printf("cond:\n");
11982     mrb_parser_dump(mrb, tree->car, offset+2);
11983     dump_prefix(tree, offset+1);
11984     printf("then:\n");
11985     mrb_parser_dump(mrb, tree->cdr->car, offset+2);
11986     if (tree->cdr->cdr->car) {
11987       dump_prefix(tree, offset+1);
11988       printf("else:\n");
11989       mrb_parser_dump(mrb, tree->cdr->cdr->car, offset+2);
11990     }
11991     break;
11992 
11993   case NODE_AND:
11994     printf("NODE_AND:\n");
11995     mrb_parser_dump(mrb, tree->car, offset+1);
11996     mrb_parser_dump(mrb, tree->cdr, offset+1);
11997     break;
11998 
11999   case NODE_OR:
12000     printf("NODE_OR:\n");
12001     mrb_parser_dump(mrb, tree->car, offset+1);
12002     mrb_parser_dump(mrb, tree->cdr, offset+1);
12003     break;
12004 
12005   case NODE_CASE:
12006     printf("NODE_CASE:\n");
12007     if (tree->car) {
12008       mrb_parser_dump(mrb, tree->car, offset+1);
12009     }
12010     tree = tree->cdr;
12011     while (tree) {
12012       dump_prefix(tree, offset+1);
12013       printf("case:\n");
12014       dump_recur(mrb, tree->car->car, offset+2);
12015       dump_prefix(tree, offset+1);
12016       printf("body:\n");
12017       mrb_parser_dump(mrb, tree->car->cdr, offset+2);
12018       tree = tree->cdr;
12019     }
12020     break;
12021 
12022   case NODE_WHILE:
12023     printf("NODE_WHILE:\n");
12024     dump_prefix(tree, offset+1);
12025     printf("cond:\n");
12026     mrb_parser_dump(mrb, tree->car, offset+2);
12027     dump_prefix(tree, offset+1);
12028     printf("body:\n");
12029     mrb_parser_dump(mrb, tree->cdr, offset+2);
12030     break;
12031 
12032   case NODE_UNTIL:
12033     printf("NODE_UNTIL:\n");
12034     dump_prefix(tree, offset+1);
12035     printf("cond:\n");
12036     mrb_parser_dump(mrb, tree->car, offset+2);
12037     dump_prefix(tree, offset+1);
12038     printf("body:\n");
12039     mrb_parser_dump(mrb, tree->cdr, offset+2);
12040     break;
12041 
12042   case NODE_FOR:
12043     printf("NODE_FOR:\n");
12044     dump_prefix(tree, offset+1);
12045     printf("var:\n");
12046     {
12047       node *n2 = tree->car;
12048 
12049       if (n2->car) {
12050         dump_prefix(n2, offset+2);
12051         printf("pre:\n");
12052         dump_recur(mrb, n2->car, offset+3);
12053       }
12054       n2 = n2->cdr;
12055       if (n2) {
12056         if (n2->car) {
12057           dump_prefix(n2, offset+2);
12058           printf("rest:\n");
12059           mrb_parser_dump(mrb, n2->car, offset+3);
12060         }
12061         n2 = n2->cdr;
12062         if (n2) {
12063           if (n2->car) {
12064             dump_prefix(n2, offset+2);
12065             printf("post:\n");
12066             dump_recur(mrb, n2->car, offset+3);
12067           }
12068         }
12069       }
12070     }
12071     tree = tree->cdr;
12072     dump_prefix(tree, offset+1);
12073     printf("in:\n");
12074     mrb_parser_dump(mrb, tree->car, offset+2);
12075     tree = tree->cdr;
12076     dump_prefix(tree, offset+1);
12077     printf("do:\n");
12078     mrb_parser_dump(mrb, tree->car, offset+2);
12079     break;
12080 
12081   case NODE_SCOPE:
12082     printf("NODE_SCOPE:\n");
12083     {
12084       node *n2 = tree->car;
12085       mrb_bool first_lval = TRUE;
12086 
12087       if (n2 && (n2->car || n2->cdr)) {
12088         dump_prefix(n2, offset+1);
12089         printf("local variables:\n");
12090         dump_prefix(n2, offset+2);
12091         while (n2) {
12092           if (n2->car) {
12093             if (!first_lval) printf(", ");
12094             printf("%s", mrb_sym2name(mrb, sym(n2->car)));
12095             first_lval = FALSE;
12096           }
12097           n2 = n2->cdr;
12098         }
12099         printf("\n");
12100       }
12101     }
12102     tree = tree->cdr;
12103     offset++;
12104     goto again;
12105 
12106   case NODE_FCALL:
12107   case NODE_CALL:
12108     printf("NODE_CALL:\n");
12109     mrb_parser_dump(mrb, tree->car, offset+1);
12110     dump_prefix(tree, offset+1);
12111     printf("method='%s' (%d)\n",
12112         mrb_sym2name(mrb, sym(tree->cdr->car)),
12113         (int)(intptr_t)tree->cdr->car);
12114     tree = tree->cdr->cdr->car;
12115     if (tree) {
12116       dump_prefix(tree, offset+1);
12117       printf("args:\n");
12118       dump_recur(mrb, tree->car, offset+2);
12119       if (tree->cdr) {
12120         dump_prefix(tree, offset+1);
12121         printf("block:\n");
12122         mrb_parser_dump(mrb, tree->cdr, offset+2);
12123       }
12124     }
12125     break;
12126 
12127   case NODE_DOT2:
12128     printf("NODE_DOT2:\n");
12129     mrb_parser_dump(mrb, tree->car, offset+1);
12130     mrb_parser_dump(mrb, tree->cdr, offset+1);
12131     break;
12132 
12133   case NODE_DOT3:
12134     printf("NODE_DOT3:\n");
12135     mrb_parser_dump(mrb, tree->car, offset+1);
12136     mrb_parser_dump(mrb, tree->cdr, offset+1);
12137     break;
12138 
12139   case NODE_COLON2:
12140     printf("NODE_COLON2:\n");
12141     mrb_parser_dump(mrb, tree->car, offset+1);
12142     dump_prefix(tree, offset+1);
12143     printf("::%s\n", mrb_sym2name(mrb, sym(tree->cdr)));
12144     break;
12145 
12146   case NODE_COLON3:
12147     printf("NODE_COLON3:\n");
12148     dump_prefix(tree, offset+1);
12149     printf("::%s\n", mrb_sym2name(mrb, sym(tree)));
12150     break;
12151 
12152   case NODE_ARRAY:
12153     printf("NODE_ARRAY:\n");
12154     dump_recur(mrb, tree, offset+1);
12155     break;
12156 
12157   case NODE_HASH:
12158     printf("NODE_HASH:\n");
12159     while (tree) {
12160       dump_prefix(tree, offset+1);
12161       printf("key:\n");
12162       mrb_parser_dump(mrb, tree->car->car, offset+2);
12163       dump_prefix(tree, offset+1);
12164       printf("value:\n");
12165       mrb_parser_dump(mrb, tree->car->cdr, offset+2);
12166       tree = tree->cdr;
12167     }
12168     break;
12169 
12170   case NODE_SPLAT:
12171     printf("NODE_SPLAT:\n");
12172     mrb_parser_dump(mrb, tree, offset+1);
12173     break;
12174 
12175   case NODE_ASGN:
12176     printf("NODE_ASGN:\n");
12177     dump_prefix(tree, offset+1);
12178     printf("lhs:\n");
12179     mrb_parser_dump(mrb, tree->car, offset+2);
12180     dump_prefix(tree, offset+1);
12181     printf("rhs:\n");
12182     mrb_parser_dump(mrb, tree->cdr, offset+2);
12183     break;
12184 
12185   case NODE_MASGN:
12186     printf("NODE_MASGN:\n");
12187     dump_prefix(tree, offset+1);
12188     printf("mlhs:\n");
12189     {
12190       node *n2 = tree->car;
12191 
12192       if (n2->car) {
12193         dump_prefix(tree, offset+2);
12194         printf("pre:\n");
12195         dump_recur(mrb, n2->car, offset+3);
12196       }
12197       n2 = n2->cdr;
12198       if (n2) {
12199         if (n2->car) {
12200           dump_prefix(n2, offset+2);
12201           printf("rest:\n");
12202           if (n2->car == (node*)-1) {
12203             dump_prefix(n2, offset+2);
12204             printf("(empty)\n");
12205           }
12206           else {
12207             mrb_parser_dump(mrb, n2->car, offset+3);
12208           }
12209         }
12210         n2 = n2->cdr;
12211         if (n2) {
12212           if (n2->car) {
12213             dump_prefix(n2, offset+2);
12214             printf("post:\n");
12215             dump_recur(mrb, n2->car, offset+3);
12216           }
12217         }
12218       }
12219     }
12220     dump_prefix(tree, offset+1);
12221     printf("rhs:\n");
12222     mrb_parser_dump(mrb, tree->cdr, offset+2);
12223     break;
12224 
12225   case NODE_OP_ASGN:
12226     printf("NODE_OP_ASGN:\n");
12227     dump_prefix(tree, offset+1);
12228     printf("lhs:\n");
12229     mrb_parser_dump(mrb, tree->car, offset+2);
12230     tree = tree->cdr;
12231     dump_prefix(tree, offset+1);
12232     printf("op='%s' (%d)\n", mrb_sym2name(mrb, sym(tree->car)), (int)(intptr_t)tree->car);
12233     tree = tree->cdr;
12234     mrb_parser_dump(mrb, tree->car, offset+1);
12235     break;
12236 
12237   case NODE_SUPER:
12238     printf("NODE_SUPER:\n");
12239     if (tree) {
12240       dump_prefix(tree, offset+1);
12241       printf("args:\n");
12242       dump_recur(mrb, tree->car, offset+2);
12243       if (tree->cdr) {
12244         dump_prefix(tree, offset+1);
12245         printf("block:\n");
12246         mrb_parser_dump(mrb, tree->cdr, offset+2);
12247       }
12248     }
12249     break;
12250 
12251   case NODE_ZSUPER:
12252     printf("NODE_ZSUPER\n");
12253     break;
12254 
12255   case NODE_RETURN:
12256     printf("NODE_RETURN:\n");
12257     mrb_parser_dump(mrb, tree, offset+1);
12258     break;
12259 
12260   case NODE_YIELD:
12261     printf("NODE_YIELD:\n");
12262     dump_recur(mrb, tree, offset+1);
12263     break;
12264 
12265   case NODE_BREAK:
12266     printf("NODE_BREAK:\n");
12267     mrb_parser_dump(mrb, tree, offset+1);
12268     break;
12269 
12270   case NODE_NEXT:
12271     printf("NODE_NEXT:\n");
12272     mrb_parser_dump(mrb, tree, offset+1);
12273     break;
12274 
12275   case NODE_REDO:
12276     printf("NODE_REDO\n");
12277     break;
12278 
12279   case NODE_RETRY:
12280     printf("NODE_RETRY\n");
12281     break;
12282 
12283   case NODE_LVAR:
12284     printf("NODE_LVAR %s\n", mrb_sym2name(mrb, sym(tree)));
12285     break;
12286 
12287   case NODE_GVAR:
12288     printf("NODE_GVAR %s\n", mrb_sym2name(mrb, sym(tree)));
12289     break;
12290 
12291   case NODE_IVAR:
12292     printf("NODE_IVAR %s\n", mrb_sym2name(mrb, sym(tree)));
12293     break;
12294 
12295   case NODE_CVAR:
12296     printf("NODE_CVAR %s\n", mrb_sym2name(mrb, sym(tree)));
12297     break;
12298 
12299   case NODE_CONST:
12300     printf("NODE_CONST %s\n", mrb_sym2name(mrb, sym(tree)));
12301     break;
12302 
12303   case NODE_MATCH:
12304     printf("NODE_MATCH:\n");
12305     dump_prefix(tree, offset + 1);
12306     printf("lhs:\n");
12307     mrb_parser_dump(mrb, tree->car, offset + 2);
12308     dump_prefix(tree, offset + 1);
12309     printf("rhs:\n");
12310     mrb_parser_dump(mrb, tree->cdr, offset + 2);
12311     break;
12312 
12313   case NODE_BACK_REF:
12314     printf("NODE_BACK_REF: $%c\n", (int)(intptr_t)tree);
12315     break;
12316 
12317   case NODE_NTH_REF:
12318     printf("NODE_NTH_REF: $%d\n", (int)(intptr_t)tree);
12319     break;
12320 
12321   case NODE_ARG:
12322     printf("NODE_ARG %s\n", mrb_sym2name(mrb, sym(tree)));
12323     break;
12324 
12325   case NODE_BLOCK_ARG:
12326     printf("NODE_BLOCK_ARG:\n");
12327     mrb_parser_dump(mrb, tree, offset+1);
12328     break;
12329 
12330   case NODE_INT:
12331     printf("NODE_INT %s base %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr->car);
12332     break;
12333 
12334   case NODE_FLOAT:
12335     printf("NODE_FLOAT %s\n", (char*)tree);
12336     break;
12337 
12338   case NODE_NEGATE:
12339     printf("NODE_NEGATE\n");
12340     mrb_parser_dump(mrb, tree, offset+1);
12341     break;
12342 
12343   case NODE_STR:
12344     printf("NODE_STR \"%s\" len %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr);
12345     break;
12346 
12347   case NODE_DSTR:
12348     printf("NODE_DSTR\n");
12349     dump_recur(mrb, tree, offset+1);
12350     break;
12351 
12352   case NODE_XSTR:
12353     printf("NODE_XSTR \"%s\" len %d\n", (char*)tree->car, (int)(intptr_t)tree->cdr);
12354     break;
12355 
12356   case NODE_DXSTR:
12357     printf("NODE_DXSTR\n");
12358     dump_recur(mrb, tree, offset+1);
12359     break;
12360 
12361   case NODE_REGX:
12362     printf("NODE_REGX /%s/%s\n", (char*)tree->car, (char*)tree->cdr);
12363     break;
12364 
12365   case NODE_DREGX:
12366     printf("NODE_DREGX\n");
12367     dump_recur(mrb, tree->car, offset+1);
12368     dump_prefix(tree, offset);
12369     printf("tail: %s\n", (char*)tree->cdr->cdr->car);
12370     dump_prefix(tree, offset);
12371     printf("opt: %s\n", (char*)tree->cdr->cdr->cdr);
12372     break;
12373 
12374   case NODE_SYM:
12375     printf("NODE_SYM :%s\n", mrb_sym2name(mrb, sym(tree)));
12376     break;
12377 
12378   case NODE_SELF:
12379     printf("NODE_SELF\n");
12380     break;
12381 
12382   case NODE_NIL:
12383     printf("NODE_NIL\n");
12384     break;
12385 
12386   case NODE_TRUE:
12387     printf("NODE_TRUE\n");
12388     break;
12389 
12390   case NODE_FALSE:
12391     printf("NODE_FALSE\n");
12392     break;
12393 
12394   case NODE_ALIAS:
12395     printf("NODE_ALIAS %s %s:\n",
12396         mrb_sym2name(mrb, sym(tree->car)),
12397         mrb_sym2name(mrb, sym(tree->cdr)));
12398     break;
12399 
12400   case NODE_UNDEF:
12401     printf("NODE_UNDEF");
12402     {
12403       node *t = tree;
12404       while (t) {
12405         printf(" %s", mrb_sym2name(mrb, sym(t->car)));
12406         t = t->cdr;
12407       }
12408     }
12409     printf(":\n");
12410     break;
12411 
12412   case NODE_CLASS:
12413     printf("NODE_CLASS:\n");
12414     if (tree->car->car == (node*)0) {
12415       dump_prefix(tree, offset+1);
12416       printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
12417     }
12418     else if (tree->car->car == (node*)1) {
12419       dump_prefix(tree, offset+1);
12420       printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
12421     }
12422     else {
12423       mrb_parser_dump(mrb, tree->car->car, offset+1);
12424       dump_prefix(tree, offset+1);
12425       printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
12426     }
12427     if (tree->cdr->car) {
12428       dump_prefix(tree, offset+1);
12429       printf("super:\n");
12430       mrb_parser_dump(mrb, tree->cdr->car, offset+2);
12431     }
12432     dump_prefix(tree, offset+1);
12433     printf("body:\n");
12434     mrb_parser_dump(mrb, tree->cdr->cdr->car->cdr, offset+2);
12435     break;
12436 
12437   case NODE_MODULE:
12438     printf("NODE_MODULE:\n");
12439     if (tree->car->car == (node*)0) {
12440       dump_prefix(tree, offset+1);
12441       printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
12442     }
12443     else if (tree->car->car == (node*)1) {
12444       dump_prefix(tree, offset+1);
12445       printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
12446     }
12447     else {
12448       mrb_parser_dump(mrb, tree->car->car, offset+1);
12449       dump_prefix(tree, offset+1);
12450       printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
12451     }
12452     dump_prefix(tree, offset+1);
12453     printf("body:\n");
12454     mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2);
12455     break;
12456 
12457   case NODE_SCLASS:
12458     printf("NODE_SCLASS:\n");
12459     mrb_parser_dump(mrb, tree->car, offset+1);
12460     dump_prefix(tree, offset+1);
12461     printf("body:\n");
12462     mrb_parser_dump(mrb, tree->cdr->car->cdr, offset+2);
12463     break;
12464 
12465   case NODE_DEF:
12466     printf("NODE_DEF:\n");
12467     dump_prefix(tree, offset+1);
12468     printf("%s\n", mrb_sym2name(mrb, sym(tree->car)));
12469     tree = tree->cdr;
12470     {
12471       node *n2 = tree->car;
12472       mrb_bool first_lval = TRUE;
12473 
12474       if (n2 && (n2->car || n2->cdr)) {
12475         dump_prefix(n2, offset+1);
12476         printf("local variables:\n");
12477         dump_prefix(n2, offset+2);
12478         while (n2) {
12479           if (n2->car) {
12480             if (!first_lval) printf(", ");
12481             printf("%s", mrb_sym2name(mrb, sym(n2->car)));
12482             first_lval = FALSE;
12483           }
12484           n2 = n2->cdr;
12485         }
12486         printf("\n");
12487       }
12488     }
12489     tree = tree->cdr;
12490     if (tree->car) {
12491       node *n = tree->car;
12492 
12493       if (n->car) {
12494         dump_prefix(n, offset+1);
12495         printf("mandatory args:\n");
12496         dump_recur(mrb, n->car, offset+2);
12497       }
12498       n = n->cdr;
12499       if (n->car) {
12500         dump_prefix(n, offset+1);
12501         printf("optional args:\n");
12502         {
12503           node *n2 = n->car;
12504 
12505           while (n2) {
12506             dump_prefix(n2, offset+2);
12507             printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
12508             mrb_parser_dump(mrb, n2->car->cdr, 0);
12509             n2 = n2->cdr;
12510           }
12511         }
12512       }
12513       n = n->cdr;
12514       if (n->car) {
12515         dump_prefix(n, offset+1);
12516         printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
12517       }
12518       n = n->cdr;
12519       if (n->car) {
12520         dump_prefix(n, offset+1);
12521         printf("post mandatory args:\n");
12522         dump_recur(mrb, n->car, offset+2);
12523       }
12524       n = n->cdr;
12525       if (n) {
12526         dump_prefix(n, offset+1);
12527         printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
12528       }
12529     }
12530     mrb_parser_dump(mrb, tree->cdr->car, offset+1);
12531     break;
12532 
12533   case NODE_SDEF:
12534     printf("NODE_SDEF:\n");
12535     mrb_parser_dump(mrb, tree->car, offset+1);
12536     tree = tree->cdr;
12537     dump_prefix(tree, offset+1);
12538     printf(":%s\n", mrb_sym2name(mrb, sym(tree->car)));
12539     tree = tree->cdr->cdr;
12540     if (tree->car) {
12541       node *n = tree->car;
12542 
12543       if (n->car) {
12544         dump_prefix(n, offset+1);
12545         printf("mandatory args:\n");
12546         dump_recur(mrb, n->car, offset+2);
12547       }
12548       n = n->cdr;
12549       if (n->car) {
12550         dump_prefix(n, offset+1);
12551         printf("optional args:\n");
12552         {
12553           node *n2 = n->car;
12554 
12555           while (n2) {
12556             dump_prefix(n2, offset+2);
12557             printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
12558             mrb_parser_dump(mrb, n2->car->cdr, 0);
12559             n2 = n2->cdr;
12560           }
12561         }
12562       }
12563       n = n->cdr;
12564       if (n->car) {
12565         dump_prefix(n, offset+1);
12566         printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
12567       }
12568       n = n->cdr;
12569       if (n->car) {
12570         dump_prefix(n, offset+1);
12571         printf("post mandatory args:\n");
12572         dump_recur(mrb, n->car, offset+2);
12573       }
12574       n = n->cdr;
12575       if (n) {
12576         dump_prefix(n, offset+1);
12577         printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
12578       }
12579     }
12580     tree = tree->cdr;
12581     mrb_parser_dump(mrb, tree->car, offset+1);
12582     break;
12583 
12584   case NODE_POSTEXE:
12585     printf("NODE_POSTEXE:\n");
12586     mrb_parser_dump(mrb, tree, offset+1);
12587     break;
12588 
12589   case NODE_HEREDOC:
12590     printf("NODE_HEREDOC:\n");
12591     mrb_parser_dump(mrb, ((parser_heredoc_info*)tree)->doc, offset+1);
12592     break;
12593 
12594   default:
12595     printf("node type: %d (0x%x)\n", nodetype, (unsigned)nodetype);
12596     break;
12597   }
12598 #endif
12599 }
12600 
12601