47 #define YYBISON_VERSION "3.0.4"
50 #define YYSKELETON_NAME "yacc.c"
69 # error needs pure parser
72 #define YYERROR_VERBOSE 1
73 #define YYSTACK_USE_ALLOCA 0
74 #define YYLTYPE rb_code_location_t
75 #define YYLTYPE_IS_DECLARED 1
90 #ifndef WARN_PAST_SCOPE
91 # define WARN_PAST_SCOPE 0
96 #define yydebug (p->debug)
98 #define YYMALLOC(size) rb_parser_malloc(p, (size))
99 #define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
100 #define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
101 #define YYFREE(ptr) rb_parser_free(p, (ptr))
102 #define YYFPRINTF rb_parser_printf
103 #define YYPRINT(out, tok, val) parser_token_value_print(p, (tok), &(val))
104 #define YY_LOCATION_PRINT(File, loc) \
105 rb_parser_printf(p, "%d.%d-%d.%d", \
106 (loc).beg_pos.lineno, (loc).beg_pos.column,\
107 (loc).end_pos.lineno, (loc).end_pos.column)
108 #define YYLLOC_DEFAULT(Current, Rhs, N) \
112 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
113 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
117 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
118 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
122 #define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
123 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
124 #define RUBY_SET_YYLLOC_OF_NONE(Current) \
125 rb_parser_set_location_of_none(p, &(Current))
126 #define RUBY_SET_YYLLOC(Current) \
127 rb_parser_set_location(p, &(Current))
128 #define RUBY_INIT_YYLLOC() \
130 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
131 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
152 #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
172 #define IS_lex_state_for(x, ls) ((x) & (ls))
173 #define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
174 #define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
175 #define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
177 # define SET_LEX_STATE(ls) \
180 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
181 (enum lex_state_e)(ls)))
187 # define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
188 # define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
189 # define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
190 # define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
191 # define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
195 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
196 #define COND_POP() BITSTACK_POP(cond_stack)
197 #define COND_P() BITSTACK_SET_P(cond_stack)
198 #define COND_SET(n) BITSTACK_SET(cond_stack, (n))
202 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
203 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
204 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
205 #define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
235 #define NUMPARAM_ID_P(id) numparam_id_p(id)
236 #define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
237 #define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
247 #define DVARS_INHERIT ((void*)1)
248 #define DVARS_TOPSCOPE NULL
249 #define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
341 unsigned int past_scope_enabled: 1;
371 VALUE parsing_thread;
375 #define intern_cstr(n,l,en) rb_intern3(n,l,en)
377 #define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
378 #define STR_NEW0() rb_enc_str_new(0,0,p->enc)
379 #define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
380 #define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
381 #define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
414 #define yyerror0(msg) parser_yyerror(p, NULL, (msg))
415 #define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
416 #define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
417 #define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
420 #define compile_for_eval (0)
422 #define compile_for_eval (p->parent_iseq != 0)
425 #define token_column ((int)(p->lex.ptok - p->lex.pbeg))
427 #define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
428 #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
429 #define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
431 #define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
459 #define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
473 set_line_body(
NODE *body,
int line)
483 #define yyparse ruby_yyparse
487 #define new_nil(loc) NEW_NIL(loc)
498 static NODE *remove_begin_all(
NODE*);
499 #define value_expr(node) value_expr_gen(p, (node) = remove_begin(node))
522 static bool args_info_empty_p(
struct rb_args_info *args);
567 #define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
587 #define get_id(id) (id)
588 #define get_value(val) (val)
589 #define get_num(num) (num)
591 #define NODE_RIPPER NODE_CDECL
593 static inline int ripper_is_node_yylval(
VALUE n);
598 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
599 add_mark_object(p, b);
600 add_mark_object(p, c);
605 ripper_is_node_yylval(
VALUE n)
610 #define value_expr(node) ((void)(node))
611 #define remove_begin(node) (node)
612 #define void_stmts(p,x) (x)
613 #define rb_dvar_defined(id, base) 0
614 #define rb_local_defined(id, base) 0
615 static ID ripper_get_id(
VALUE);
616 #define get_id(id) ripper_get_id(id)
618 #define get_value(val) ripper_get_value(val)
619 #define get_num(num) (int)get_id(num)
623 #define method_cond(p,node,loc) (node)
624 #define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
625 #define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
626 #define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
627 #define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
629 #define new_nil(loc) Qnil
677 #define dyna_var(p, id) local_var(p, id)
688 # define METHOD_NOT idNOT
690 # define METHOD_NOT '!'
693 #define idFWD_REST '*'
694 #ifdef RUBY3_KEYWORDS
695 #define idFWD_KWREST idPow
697 #define idFWD_KWREST 0
699 #define idFWD_BLOCK '&'
701 #define RE_OPTION_ONCE (1<<16)
702 #define RE_OPTION_ENCODING_SHIFT 8
703 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
704 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
705 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
706 #define RE_OPTION_MASK 0xff
707 #define RE_OPTION_ARG_ENCODING_NONE 32
729 #define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
736 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
738 # define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
740 # define HERETERM_LENGTH_MAX UINT_MAX
743 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
753 #define STRTERM_HEREDOC IMEMO_FL_USER0
775 #define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
778 #define TOKEN2ID(tok) ( \
779 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
780 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
781 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
782 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
783 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
784 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
785 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
790 #define RIPPER_VERSION "0.1.0"
792 static inline VALUE intern_sym(
const char *
name);
806 #define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
807 #define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
808 #define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
809 #define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
810 #define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
811 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
812 #define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
814 #define yyparse ripper_yyparse
816 #define ID2VAL(id) STATIC_ID2SYM(id)
817 #define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
818 #define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
820 #define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
821 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
823 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
830 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
837 add_mark_object(p, kw_args);
838 add_mark_object(p, kw_rest_arg);
839 add_mark_object(p, block);
862 if (!
NIL_P(pre_arg)) {
888 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
897 #define new_hash(p,h,l) rb_ary_new_from_args(0)
910 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
918 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
925 add_mark_object(p, kw_args);
926 add_mark_object(p, kw_rest_arg);
930 #define new_defined(p,expr,loc) dispatch1(defined, (expr))
935 #define ID2VAL(id) (id)
936 #define TOKEN2VAL(t) ID2VAL(t)
937 #define KWD2EID(t, v) keyword_##t
943 # define ifndef_ripper(x) (x)
946 # define Qnull Qundef
947 # define ifndef_ripper(x)
950 # define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
951 # define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
952 # define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
953 # define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
954 # define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
955 # define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
956 # define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
957 # define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
958 # define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
959 # define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
960 # define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
961 # define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
962 # define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
963 # define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
964 # define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
965 # define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
966 # define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
967 # define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
968 # define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
969 # define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
971 static ID id_warn, id_warning, id_gets, id_assoc;
972 # define WARN_S_L(s,l) STR_NEW(s,l)
973 # define WARN_S(s) STR_NEW2(s)
974 # define WARN_I(i) INT2NUM(i)
975 # define WARN_ID(i) rb_id2str(i)
976 # define WARN_IVAL(i) i
977 # define PRIsWARN "s"
978 # define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
979 # define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
980 # ifdef HAVE_VA_ARGS_MACRO
981 # define WARN_CALL(...) rb_funcall(__VA_ARGS__)
983 # define WARN_CALL rb_funcall
985 # define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
986 # define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
987 # ifdef HAVE_VA_ARGS_MACRO
988 # define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
990 # define WARNING_CALL rb_funcall
993 # define compile_error ripper_compile_error
995 # define WARN_S_L(s,l) s
998 # define WARN_ID(i) rb_id2name(i)
999 # define WARN_IVAL(i) NUM2INT(i)
1000 # define PRIsWARN PRIsVALUE
1001 # define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1002 # define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1003 # define WARN_CALL rb_compile_warn
1004 # define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1005 # define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1006 # define WARNING_CALL rb_compile_warning
1008 # define compile_error parser_compile_error
1016 #define WARN_EOL(tok) \
1017 (looking_at_eol_p(p) ? \
1018 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1022 #line 1023 "ripper.c"
1025 # if defined __cplusplus && 201103L <= __cplusplus
1026 # define YY_NULLPTR nullptr
1028 # define YY_NULLPTR 0
1033 #ifdef YYERROR_VERBOSE
1034 # undef YYERROR_VERBOSE
1035 # define YYERROR_VERBOSE 1
1037 # define YYERROR_VERBOSE 1
1053 # define YYTOKENTYPE
1180 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1184 #line 979 "ripper.y"
1194 #line 1193 "ripper.c"
1198 # define YYSTYPE_IS_TRIVIAL 1
1199 # define YYSTYPE_IS_DECLARED 1
1203 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1212 # define YYLTYPE_IS_DECLARED 1
1213 # define YYLTYPE_IS_TRIVIAL 1
1224 #line 1223 "ripper.c"
1242 #ifdef YYTYPE_UINT16
1255 # ifdef __SIZE_TYPE__
1256 # define YYSIZE_T __SIZE_TYPE__
1257 # elif defined size_t
1258 # define YYSIZE_T size_t
1259 # elif ! defined YYSIZE_T
1260 # include <stddef.h>
1261 # define YYSIZE_T size_t
1263 # define YYSIZE_T unsigned int
1267 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
1270 # if defined YYENABLE_NLS && YYENABLE_NLS
1272 # include <libintl.h>
1273 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1277 # define YY_(Msgid) Msgid
1281 #ifndef YY_ATTRIBUTE
1282 # if (defined __GNUC__ \
1283 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
1284 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
1285 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
1287 # define YY_ATTRIBUTE(Spec)
1291 #ifndef YY_ATTRIBUTE_PURE
1292 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
1295 #ifndef YY_ATTRIBUTE_UNUSED
1296 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
1299 #if !defined _Noreturn \
1300 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
1301 # if defined _MSC_VER && 1200 <= _MSC_VER
1302 # define _Noreturn __declspec (noreturn)
1304 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
1309 #if ! defined lint || defined __GNUC__
1310 # define YYUSE(E) ((void) (E))
1315 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
1317 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1318 _Pragma ("GCC diagnostic push") \
1319 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
1320 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1321 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1322 _Pragma ("GCC diagnostic pop")
1324 # define YY_INITIAL_VALUE(Value) Value
1326 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1327 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1328 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1330 #ifndef YY_INITIAL_VALUE
1331 # define YY_INITIAL_VALUE(Value)
1335 #if ! defined yyoverflow || YYERROR_VERBOSE
1339 # ifdef YYSTACK_USE_ALLOCA
1340 # if YYSTACK_USE_ALLOCA
1342 # define YYSTACK_ALLOC __builtin_alloca
1343 # elif defined __BUILTIN_VA_ARG_INCR
1344 # include <alloca.h>
1346 # define YYSTACK_ALLOC __alloca
1347 # elif defined _MSC_VER
1348 # include <malloc.h>
1349 # define alloca _alloca
1351 # define YYSTACK_ALLOC alloca
1352 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1353 # include <stdlib.h>
1355 # ifndef EXIT_SUCCESS
1356 # define EXIT_SUCCESS 0
1363 # ifdef YYSTACK_ALLOC
1365 # define YYSTACK_FREE(Ptr) do { ; } while (0)
1366 # ifndef YYSTACK_ALLOC_MAXIMUM
1371 # define YYSTACK_ALLOC_MAXIMUM 4032
1374 # define YYSTACK_ALLOC YYMALLOC
1375 # define YYSTACK_FREE YYFREE
1376 # ifndef YYSTACK_ALLOC_MAXIMUM
1377 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1379 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1380 && ! ((defined YYMALLOC || defined malloc) \
1381 && (defined YYFREE || defined free)))
1382 # include <stdlib.h>
1383 # ifndef EXIT_SUCCESS
1384 # define EXIT_SUCCESS 0
1388 # define YYMALLOC malloc
1389 # if ! defined malloc && ! defined EXIT_SUCCESS
1394 # define YYFREE free
1395 # if ! defined free && ! defined EXIT_SUCCESS
1403 #if (! defined yyoverflow \
1404 && (! defined __cplusplus \
1405 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
1406 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
1417 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
1421 # define YYSTACK_BYTES(N) \
1422 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
1423 + 2 * YYSTACK_GAP_MAXIMUM)
1425 # define YYCOPY_NEEDED 1
1432 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1435 YYSIZE_T yynewbytes; \
1436 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1437 Stack = &yyptr->Stack_alloc; \
1438 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
1439 yyptr += yynewbytes / sizeof (*yyptr); \
1445 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1449 # if defined __GNUC__ && 1 < __GNUC__
1450 # define YYCOPY(Dst, Src, Count) \
1451 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
1453 # define YYCOPY(Dst, Src, Count) \
1457 for (yyi = 0; yyi < (Count); yyi++) \
1458 (Dst)[yyi] = (Src)[yyi]; \
1468 #define YYLAST 13766
1471 #define YYNTOKENS 154
1475 #define YYNRULES 759
1477 #define YYNSTATES 1243
1481 #define YYUNDEFTOK 2
1482 #define YYMAXUTOK 353
1484 #define YYTRANSLATE(YYX) \
1485 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
1491 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
1492 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
1493 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1494 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
1495 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
1497 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
1498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1500 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
1504 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
1505 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
1506 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1517 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1518 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1519 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1520 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1521 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1522 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1523 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
1524 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1525 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1533 0, 1177, 1177, 1177, 1203, 1209, 1216, 1223, 1230, 1236,
1534 1237, 1243, 1256, 1254, 1265, 1276, 1282, 1289, 1296, 1303,
1535 1309, 1314, 1313, 1323, 1323, 1330, 1337, 1347, 1355, 1362,
1536 1370, 1378, 1390, 1402, 1412, 1426, 1427, 1435, 1443, 1452,
1537 1459, 1462, 1469, 1476, 1484, 1491, 1498, 1506, 1513, 1523,
1538 1528, 1537, 1540, 1541, 1545, 1549, 1553, 1558, 1565, 1567,
1539 1557, 1575, 1578, 1585, 1585, 1585, 1591, 1592, 1595, 1596,
1540 1605, 1615, 1625, 1634, 1645, 1652, 1659, 1666, 1673, 1681,
1541 1689, 1696, 1703, 1712, 1713, 1722, 1723, 1732, 1739, 1746,
1542 1753, 1760, 1767, 1774, 1781, 1788, 1795, 1804, 1805, 1814,
1543 1821, 1830, 1837, 1846, 1853, 1860, 1867, 1877, 1884, 1894,
1544 1901, 1908, 1918, 1925, 1932, 1939, 1946, 1953, 1960, 1967,
1545 1974, 1984, 1991, 1994, 2001, 2008, 2017, 2018, 2019, 2020,
1546 2025, 2028, 2035, 2038, 2045, 2045, 2055, 2056, 2057, 2058,
1547 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, 2068,
1548 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, 2078,
1549 2079, 2080, 2081, 2082, 2083, 2084, 2087, 2087, 2087, 2088,
1550 2088, 2089, 2089, 2089, 2090, 2090, 2090, 2090, 2091, 2091,
1551 2091, 2091, 2092, 2092, 2092, 2093, 2093, 2093, 2093, 2094,
1552 2094, 2094, 2094, 2095, 2095, 2095, 2095, 2096, 2096, 2096,
1553 2096, 2097, 2097, 2097, 2097, 2098, 2098, 2101, 2108, 2115,
1554 2123, 2131, 2139, 2147, 2155, 2162, 2170, 2179, 2188, 2200,
1555 2212, 2224, 2236, 2240, 2244, 2248, 2252, 2256, 2260, 2264,
1556 2268, 2272, 2276, 2280, 2284, 2288, 2289, 2293, 2297, 2301,
1557 2305, 2309, 2313, 2317, 2321, 2325, 2329, 2333, 2333, 2338,
1558 2347, 2353, 2354, 2355, 2356, 2359, 2363, 2370, 2377, 2378,
1559 2382, 2389, 2398, 2403, 2414, 2421, 2450, 2451, 2454, 2455,
1560 2456, 2460, 2467, 2476, 2484, 2491, 2499, 2507, 2511, 2511,
1561 2548, 2557, 2561, 2567, 2574, 2581, 2588, 2597, 2598, 2601,
1562 2608, 2615, 2624, 2625, 2626, 2627, 2628, 2629, 2630, 2631,
1563 2632, 2633, 2634, 2642, 2641, 2656, 2656, 2663, 2663, 2671,
1564 2679, 2686, 2693, 2700, 2708, 2715, 2722, 2729, 2736, 2736,
1565 2741, 2745, 2749, 2756, 2757, 2766, 2765, 2776, 2787, 2798,
1566 2808, 2819, 2818, 2835, 2834, 2849, 2858, 2903, 2902, 2926,
1567 2925, 2948, 2947, 2971, 2977, 2970, 2997, 2998, 2997, 3023,
1568 3030, 3037, 3044, 3053, 3060, 3066, 3083, 3089, 3095, 3101,
1569 3107, 3113, 3119, 3125, 3131, 3137, 3143, 3149, 3155, 3161,
1570 3176, 3183, 3189, 3196, 3197, 3198, 3201, 3202, 3205, 3206,
1571 3218, 3219, 3228, 3229, 3232, 3240, 3249, 3256, 3265, 3272,
1572 3279, 3286, 3293, 3302, 3310, 3319, 3323, 3327, 3331, 3335,
1573 3341, 3346, 3351, 3355, 3359, 3363, 3367, 3371, 3379, 3383,
1574 3387, 3391, 3395, 3399, 3403, 3407, 3411, 3417, 3418, 3424,
1575 3433, 3445, 3449, 3458, 3460, 3464, 3469, 3475, 3478, 3482,
1576 3486, 3490, 3475, 3514, 3522, 3532, 3537, 3543, 3553, 3567,
1577 3574, 3581, 3590, 3599, 3607, 3615, 3622, 3630, 3638, 3645,
1578 3652, 3665, 3673, 3683, 3684, 3688, 3683, 3705, 3706, 3710,
1579 3705, 3729, 3737, 3744, 3752, 3761, 3773, 3774, 3778, 3784,
1580 3785, 3787, 3788, 3789, 3777, 3802, 3803, 3806, 3807, 3815,
1581 3825, 3826, 3831, 3839, 3843, 3849, 3852, 3861, 3864, 3871,
1582 3874, 3875, 3877, 3878, 3887, 3896, 3901, 3910, 3919, 3924,
1583 3924, 3929, 3935, 3934, 3946, 3951, 3951, 3958, 3967, 3971,
1584 3980, 3984, 3988, 3992, 3996, 3999, 4003, 4012, 4016, 4020,
1585 4024, 4030, 4031, 4040, 4049, 4053, 4057, 4061, 4065, 4069,
1586 4075, 4077, 4086, 4094, 4108, 4109, 4132, 4136, 4142, 4148,
1587 4149, 4158, 4167, 4179, 4191, 4192, 4193, 4194, 4206, 4220,
1588 4221, 4222, 4223, 4224, 4225, 4226, 4227, 4228, 4236, 4235,
1589 4248, 4258, 4271, 4278, 4285, 4294, 4306, 4309, 4316, 4323,
1590 4326, 4330, 4333, 4340, 4343, 4344, 4347, 4364, 4365, 4366,
1591 4375, 4385, 4394, 4400, 4410, 4416, 4425, 4427, 4436, 4446,
1592 4452, 4461, 4470, 4480, 4486, 4496, 4502, 4512, 4522, 4541,
1593 4547, 4557, 4567, 4608, 4611, 4610, 4627, 4631, 4636, 4640,
1594 4644, 4626, 4665, 4672, 4679, 4686, 4689, 4690, 4693, 4703,
1595 4704, 4705, 4706, 4709, 4719, 4720, 4730, 4731, 4732, 4733,
1596 4736, 4737, 4738, 4739, 4740, 4743, 4744, 4745, 4746, 4747,
1597 4748, 4749, 4752, 4765, 4774, 4781, 4790, 4791, 4795, 4794,
1598 4804, 4812, 4821, 4836, 4836, 4850, 4854, 4858, 4862, 4866,
1599 4872, 4877, 4882, 4886, 4890, 4894, 4898, 4902, 4906, 4910,
1600 4914, 4918, 4922, 4926, 4930, 4934, 4939, 4945, 4954, 4962,
1601 4970, 4978, 4988, 4989, 4997, 5006, 5014, 5035, 5037, 5050,
1602 5060, 5068, 5078, 5085, 5094, 5101, 5111, 5118, 5127, 5128,
1603 5131, 5139, 5147, 5157, 5167, 5177, 5184, 5193, 5200, 5209,
1604 5210, 5213, 5221, 5231, 5232, 5235, 5245, 5249, 5255, 5260,
1605 5260, 5284, 5285, 5294, 5296, 5319, 5330, 5337, 5345, 5364,
1606 5365, 5366, 5369, 5370, 5371, 5372, 5375, 5376, 5377, 5380,
1607 5381, 5384, 5385, 5388, 5389, 5392, 5393, 5396, 5397, 5400,
1608 5403, 5406, 5409, 5410, 5411, 5414, 5415, 5418, 5419, 5423
1612 #if YYDEBUG || YYERROR_VERBOSE || 1
1615 static const char *
const yytname[] =
1617 "\"end-of-input\"",
"error",
"$undefined",
"\"`class'\"",
1618 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
1619 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
1620 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
1621 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
1622 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
1623 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
1624 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
1625 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
1626 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
1627 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
1628 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
1629 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
1630 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
1631 "\"constant\"",
"\"class variable\"",
"tLABEL",
"\"integer literal\"",
1632 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
1633 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
1634 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
1635 "\"escaped space\"",
"\"escaped horizontal tab\"",
1636 "\"escaped form feed\"",
"\"escaped carriage return\"",
1637 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
1638 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
1639 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
1640 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
1641 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
1642 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
1643 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
1644 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
1645 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
1646 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
1647 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
1648 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
1649 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
1650 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
1651 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
1652 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
1653 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
1654 "expr_value",
"expr_value_do",
"$@8",
"$@9",
"command_call",
1655 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
1656 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
1657 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
1658 "$@10",
"op",
"reswords",
"arg",
"$@11",
"relop",
"rel_expr",
1659 "arg_value",
"aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
1660 "opt_call_args",
"call_args",
"command_args",
"$@12",
"block_arg",
1661 "opt_block_arg",
"args",
"mrhs_arg",
"mrhs",
"primary",
"$@13",
"$@14",
1662 "$@15",
"$@16",
"$@17",
"@18",
"@19",
"$@20",
"@21",
"$@22",
"@23",
1663 "@24",
"@25",
"@26",
"primary_value",
"k_begin",
"k_if",
"k_unless",
1664 "k_while",
"k_until",
"k_case",
"k_for",
"k_class",
"k_module",
"k_def",
1665 "k_do",
"k_do_block",
"k_rescue",
"k_ensure",
"k_when",
"k_else",
1666 "k_elsif",
"k_end",
"k_return",
"then",
"do",
"if_tail",
"opt_else",
1667 "for_var",
"f_marg",
"f_marg_list",
"f_margs",
"f_rest_marg",
1668 "block_args_tail",
"opt_block_args_tail",
"block_param",
1669 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
1670 "lambda",
"@27",
"@28",
"@29",
"@30",
"$@31",
"f_larglist",
1671 "lambda_body",
"do_block",
"block_call",
"method_call",
"brace_block",
1672 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
1673 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"@40",
1674 "$@41",
"$@42",
"$@43",
"p_cases",
"p_top_expr",
"p_top_expr_body",
1675 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
1676 "@44",
"@45",
"@46",
"p_args",
"p_args_head",
"p_args_tail",
1677 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
1678 "p_kwrest",
"p_kwnorest",
"p_value",
"p_primitive",
"$@47",
"p_variable",
1679 "p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
1680 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
1681 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
1682 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
1683 "xstring_contents",
"regexp_contents",
"string_content",
"@48",
"$@49",
1684 "@50",
"@51",
"@52",
"@53",
"string_dvar",
"symbol",
"ssym",
"sym",
1685 "dsym",
"numeric",
"simple_numeric",
"user_variable",
"keyword_variable",
1686 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@54",
"f_arglist",
1687 "@55",
"args_tail",
"opt_args_tail",
"f_args",
"args_forward",
1688 "f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
1689 "f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
"f_kwarg",
1690 "kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
"f_block_opt",
1691 "f_block_optarg",
"f_optarg",
"restarg_mark",
"f_rest_arg",
1692 "blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
"singleton",
"$@56",
1693 "assoc_list",
"assocs",
"assoc",
"operation",
"operation2",
"operation3",
1694 "dot_or_colon",
"call_op",
"call_op2",
"opt_terms",
"opt_nl",
"rparen",
1695 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none",
YY_NULLPTR
1704 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1705 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1706 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1707 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1708 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1709 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1710 315, 316, 317, 318, 319, 320, 321, 322, 46, 92,
1711 323, 9, 12, 13, 11, 132, 133, 134, 135, 140,
1712 141, 142, 139, 138, 148, 149, 143, 144, 128, 129,
1713 130, 131, 145, 146, 136, 137, 150, 147, 324, 325,
1714 326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1715 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1716 346, 347, 348, 349, 350, 351, 61, 63, 58, 62,
1717 60, 124, 94, 38, 43, 45, 42, 47, 37, 352,
1718 33, 126, 353, 123, 125, 91, 44, 96, 40, 41,
1723 #define YYPACT_NINF -1028
1725 #define yypact_value_is_default(Yystate) \
1726 (!!((Yystate) == (-1028)))
1728 #define YYTABLE_NINF -760
1730 #define yytable_value_is_error(Yytable_value) \
1731 (!!((Yytable_value) == (-760)))
1737 -1028, 133, 3772, -1028, 9176, -1028, -1028, -1028, 8634, -1028,
1738 -1028, -1028, -1028, -1028, -1028, -1028, 9302, 9302, -1028, -1028,
1739 -1028, 5241, 4800, -1028, -1028, -1028, -1028, 533, 8489, 1,
1740 100, 124, -1028, -1028, -1028, 4065, 4947, -1028, -1028, 4212,
1741 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 10940, 10940,
1742 10940, 10940, 200, 6689, 9428, 9806, 10184, 8918, -1028, 8344,
1743 -1028, -1028, -1028, 155, 181, 247, 265, 1275, 11066, 10940,
1744 -1028, 232, -1028, 1140, -1028, 319, -1028, -1028, 14, 411,
1745 330, -1028, 332, 11318, -1028, 380, 2654, 644, 46, 425,
1746 -1028, 11192, 11192, -1028, -1028, 7671, 11440, 11562, 11684, 8198,
1747 9302, 819, 108, -1028, -1028, 456, -1028, -1028, -1028, -1028,
1748 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 717, 729,
1749 -1028, 420, 783, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1750 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1751 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1752 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1753 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1754 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1755 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1756 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1757 -1028, -1028, 432, -1028, -1028, -1028, 479, 10940, 524, 6840,
1758 10940, 10940, 10940, -1028, 10940, -1028, 503, 4337, 542, -1028,
1759 -1028, 513, 515, 267, 365, 614, 366, 545, -1028, -1028,
1760 7545, -1028, 9302, 9554, -1028, -1028, 7797, -1028, 11192, 858,
1761 -1028, 574, 6991, -1028, 7142, -1028, -1028, 598, 605, 14,
1762 -1028, 522, -1028, 718, 3380, 3380, 791, 9428, -1028, 6689,
1763 657, 232, -1028, 1140, 1, 682, -1028, 1140, 1, 665,
1764 371, 519, -1028, 542, 673, 519, -1028, 1, 763, 1275,
1765 11806, 677, -1028, 690, 708, 716, 724, -1028, -1028, -1028,
1766 -1028, -1028, 481, -1028, 580, 678, 953, -1028, -1028, -1028,
1767 -1028, 748, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 7923,
1768 11192, 11192, 11192, 11192, 9428, 11192, 11192, -1028, -1028, -1028,
1769 721, -1028, -1028, -1028, -1028, -1028, 10310, -1028, 6689, 9047,
1770 684, 10310, -1028, 10940, 10940, 10940, 10940, 10940, -1028, -1028,
1771 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, -1028,
1772 -1028, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940, 10940,
1773 10940, -1028, -1028, 12269, 9302, 12359, 5833, 319, 86, 86,
1774 7293, 11192, 7293, 232, -1028, 691, 777, -1028, -1028, 741,
1775 822, 53, 68, 69, 681, 956, 11192, 733, -1028, 714,
1776 891, -1028, -1028, -1028, -1028, 130, 291, 527, 572, 582,
1777 586, 608, 653, 663, -1028, -1028, -1028, 666, -1028, -1028,
1778 -1028, 13619, -1028, -1028, 11066, 11066, -1028, -1028, 374, -1028,
1779 -1028, -1028, 618, 10940, 10940, 9680, -1028, -1028, 12449, 9302,
1780 12539, 10940, 10940, 9932, -1028, 1, 710, -1028, -1028, 10940,
1781 1, -1028, 711, 1, 722, -1028, 107, -1028, -1028, -1028,
1782 -1028, -1028, 8634, -1028, 10940, 726, 728, 12449, 12539, 10940,
1783 1140, 100, 1, -1028, -1028, 8049, 732, 1, -1028, -1028,
1784 10058, -1028, -1028, 10184, -1028, -1028, -1028, 574, 893, -1028,
1785 -1028, 734, 11806, 12629, 9302, 12719, -1028, -1028, -1028, -1028,
1786 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 786, 101,
1787 988, 102, 10940, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1788 -1028, -1028, 757, -1028, -1028, -1028, 882, -1028, 882, 10940,
1789 -1028, 760, 767, 874, -1028, 1, 11806, 774, -1028, -1028,
1790 -1028, 880, 806, 4043, -1028, -1028, -1028, 963, 400, -1028,
1791 718, 3896, 3896, 3896, 3896, 4484, 3134, 3896, 3896, 3380,
1792 3380, 759, 759, 3267, 1222, 1222, 1464, 406, 406, 718,
1793 718, 718, 1115, 1115, 3482, 4359, 5535, 4506, -1028, 605,
1794 -1028, 1, 850, -1028, 1016, -1028, -1028, 5094, 882, 925,
1795 -1028, 5984, 922, 6437, 882, 60, 882, 914, 927, 76,
1796 12809, 9302, 12899, -1028, 319, -1028, 893, -1028, -1028, -1028,
1797 12989, 9302, 13079, 5833, 11192, -1028, -1028, -1028, -1028, -1028,
1798 -1028, 2683, -1028, 4190, -1028, -1028, -1028, 8634, 10940, -1028,
1799 10940, 542, -1028, 545, 3918, 4653, 1, 453, 458, -1028,
1800 -1028, -1028, -1028, 9680, -1028, 9932, -1028, -1028, 11192, 4337,
1801 -1028, -1028, 605, 605, -1028, -1028, -9, -1028, -1028, 519,
1802 11806, 734, 381, 686, 1, 362, 407, -1028, -1028, 1249,
1803 -1028, 566, -1028, 794, -1028, -1028, 568, 795, -1028, 718,
1804 -1028, -1028, 804, -1028, -1028, -1028, -1028, 812, 10436, 9428,
1805 -1028, 734, 11806, 9428, 11066, 10940, 13169, 9302, 13259, 12202,
1806 832, 11066, 11066, -1028, 721, 816, 1020, 11066, 11066, -1028,
1807 -1028, 721, -1028, -1028, -1028, 10562, 755, -1028, 825, -1028,
1808 950, -1028, -1028, -1028, -1028, -1028, -1028, 927, 882, -1028,
1809 10688, 882, 33, 278, 1, 77, 83, 7293, 232, 11192,
1810 5833, 995, 686, -1028, 1, 882, 107, 820, 8779, 108,
1811 411, -1028, -1028, -1028, -1028, 10940, 10940, 462, 10940, 10940,
1812 824, 107, -1028, -1028, 626, -1028, -1028, -1028, -1028, -1028,
1813 -1028, -1028, -1028, -1028, -1028, -1028, -1028, 843, -1028, 843,
1814 10940, 833, -1028, 734, -1028, 4337, 5388, 5682, 1, 466,
1815 470, -1028, -1028, 3091, 3091, 751, -1028, 616, 345, -1028,
1816 940, 899, -1028, 871, -1028, -1028, 815, -1028, -1028, 336,
1817 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 10940,
1818 -1028, -1028, -1028, -1028, -1028, -1028, 11066, -1028, -1028, -1028,
1819 -1028, -1028, 760, -1028, 904, -1028, -1028, -1028, 7293, -1028,
1820 -1028, -1028, -1028, 7293, 11192, 882, -1028, -1028, 882, -1028,
1821 -1028, 882, -1028, 10940, -1028, 54, -1028, 113, 882, 5833,
1822 232, 882, -1028, -1028, -1028, 1877, 5833, 1686, -1028, -1028,
1823 -1028, 10940, 9932, -1028, 1519, -1028, 1385, 7142, -1028, -1028,
1824 5833, 862, 538, -1028, -1028, -1028, -1028, 12202, 12083, -1028,
1825 257, 866, -1028, -1028, -1028, 964, -1028, 12202, 3091, 3091,
1826 751, 616, 547, 3621, 3621, 4337, -1028, -1028, 11928, 86,
1827 -1028, -1028, 6563, -1028, 86, -1028, -1028, -1028, -1028, -1028,
1828 10814, 6135, -1028, 882, -1028, -1028, -1028, -1028, -1028, -1028,
1829 -1028, -1028, -1028, -1028, 1537, -1028, -1028, -1028, -1028, -1028,
1830 -1028, 1, 1, -1028, -1028, 896, -1028, 877, 10940, -1028,
1831 883, 106, 887, 887, -1028, 894, 980, 895, 987, -1028,
1832 882, 232, 820, 1686, -1028, -1028, -1028, -1028, 1, 912,
1833 920, 901, 12050, -1028, 911, 887, 887, -1028, 916, 918,
1834 -1028, 929, -1028, -1028, 276, 27, 3, 1, 12169, -1028,
1835 919, -1028, -1028, 1, 932, -1028, 12202, -1028, -1028, 348,
1836 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
1837 1, 1, 1, 1, 994, -1028, 1025, 118, 135, 179,
1838 5833, 1078, 5984, 3621, 10940, -1028, 92, -1028, 1537, 1208,
1839 -1028, 949, 1, 954, -1028, -1028, -1028, 10940, 1686, -1028,
1840 -1028, 1060, -1028, -1028, -1028, -1028, 216, -1028, -1028, 1686,
1841 -1028, -1028, 1096, -1028, -1028, -1028, -1028, 5833, 1, 63,
1842 7419, 972, -1028, 12050, 1686, -1028, 1049, 1030, 1060, -1028,
1843 -1028, -1028, 1686, -1028, 1096, -1028, 1424, -1028, 978, 12202,
1844 -1028, 43, 899, 982, -1028, 288, -1028, 257, 899, -1028,
1845 -1028, 1079, -1028, -1028, -1028, -1028, 222, 13349, 9302, 13439,
1846 925, -1028, 825, 86, 886, 255, -1028, -1028, -1028, -1028,
1847 -1028, -1028, 1, -1028, 1537, -1028, 1560, -1028, -1028, -1028,
1848 983, 986, -1028, 1082, 887, -1028, 989, -1028, 990, -1028,
1849 989, 882, 992, 5833, 7142, -1028, 1019, -1028, 1030, -1028,
1850 998, 1001, -1028, 13529, -1028, 887, 1003, -1028, 1011, 1003,
1851 -1028, 592, -1028, -1028, 12202, 1012, -1028, 1015, 12202, -1028,
1852 -1028, -1028, -1028, -1028, 134, 158, 1, 315, 318, -1028,
1853 -1028, -1028, 11192, 11192, 12083, -1028, -1028, 1017, 1021, 1686,
1854 -1028, 1096, -1028, -1028, 1096, -1028, 1096, -1028, -1028, -1028,
1855 -1028, 882, 1027, -1028, 1686, -1028, 1096, -1028, 1024, 1029,
1856 -1028, 1096, -1028, 1096, -1028, -1028, 1424, -1028, 1012, 12202,
1857 12202, 1012, 457, -1028, -1028, -1028, -1028, 1560, 1560, 989,
1858 1041, 989, 989, -1028, -1028, 1003, 1043, 1003, 1003, -1028,
1859 -1028, 1012, -1028, 1021, -1028, 1096, -1028, -1028, -1028, -1028,
1860 1096, -1028, -1028, -1028, 6286, 989, 1003, 150, -1028, -1028,
1869 2, 0, 0, 1, 0, 361, 362, 363, 0, 354,
1870 355, 356, 359, 357, 358, 360, 349, 350, 351, 352,
1871 372, 278, 278, 636, 635, 637, 638, 747, 0, 747,
1872 0, 0, 640, 639, 641, 729, 731, 632, 631, 730,
1873 634, 626, 627, 628, 629, 577, 646, 647, 0, 0,
1874 0, 0, 0, 0, 305, 759, 759, 95, 325, 597,
1875 597, 599, 601, 0, 0, 0, 0, 0, 0, 0,
1876 3, 745, 6, 9, 35, 40, 52, 67, 278, 66,
1877 0, 83, 0, 87, 97, 0, 61, 235, 250, 0,
1878 303, 0, 0, 63, 63, 745, 0, 0, 0, 0,
1879 314, 68, 323, 292, 293, 576, 578, 294, 295, 296,
1880 298, 297, 299, 575, 616, 617, 574, 624, 642, 643,
1881 300, 0, 301, 71, 5, 8, 176, 187, 177, 200,
1882 173, 193, 183, 182, 203, 204, 198, 181, 180, 175,
1883 201, 205, 206, 185, 174, 188, 192, 194, 186, 179,
1884 195, 202, 197, 196, 189, 199, 184, 172, 191, 190,
1885 171, 178, 169, 170, 166, 167, 168, 126, 128, 127,
1886 161, 162, 157, 139, 140, 141, 148, 145, 147, 142,
1887 143, 163, 164, 149, 150, 154, 158, 144, 146, 136,
1888 137, 138, 151, 152, 153, 155, 156, 159, 160, 165,
1889 131, 133, 28, 129, 130, 132, 0, 0, 0, 0,
1890 0, 0, 0, 597, 0, 273, 0, 257, 283, 81,
1891 277, 759, 0, 642, 643, 0, 301, 759, 723, 82,
1892 747, 79, 0, 759, 448, 78, 747, 748, 0, 0,
1893 23, 247, 0, 10, 0, 349, 350, 317, 449, 0,
1894 229, 0, 314, 230, 220, 221, 311, 0, 21, 0,
1895 0, 745, 17, 20, 747, 85, 16, 307, 747, 0,
1896 752, 752, 258, 0, 0, 752, 721, 747, 0, 0,
1897 0, 93, 353, 0, 103, 104, 111, 427, 621, 620,
1898 622, 619, 0, 618, 0, 0, 0, 584, 593, 589,
1899 595, 625, 56, 241, 242, 755, 756, 4, 757, 746,
1900 0, 0, 0, 0, 0, 0, 0, 364, 453, 442,
1901 72, 457, 322, 365, 457, 438, 0, 99, 0, 91,
1902 88, 0, 57, 0, 0, 0, 0, 0, 253, 254,
1903 0, 0, 0, 0, 218, 219, 0, 0, 0, 251,
1904 252, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1905 0, 741, 742, 0, 759, 0, 0, 62, 0, 0,
1906 0, 0, 0, 745, 333, 746, 0, 383, 382, 0,
1907 0, 642, 643, 301, 121, 122, 0, 0, 124, 650,
1908 0, 642, 643, 301, 341, 196, 189, 199, 184, 166,
1909 167, 168, 126, 127, 719, 343, 718, 0, 80, 744,
1910 743, 0, 324, 579, 0, 0, 134, 726, 311, 284,
1911 728, 280, 0, 0, 0, 0, 274, 282, 0, 759,
1912 0, 0, 0, 0, 275, 747, 0, 316, 279, 677,
1913 747, 269, 759, 747, 759, 268, 747, 321, 55, 25,
1914 27, 26, 0, 318, 0, 0, 0, 0, 0, 0,
1915 19, 0, 747, 309, 15, 746, 84, 747, 306, 312,
1916 754, 753, 259, 754, 261, 313, 722, 0, 110, 625,
1917 101, 96, 0, 0, 759, 0, 326, 428, 603, 623,
1918 606, 604, 598, 580, 581, 600, 582, 602, 0, 0,
1919 0, 0, 0, 758, 7, 29, 30, 31, 32, 33,
1920 53, 54, 0, 454, 453, 73, 0, 458, 0, 0,
1921 36, 288, 0, 39, 287, 747, 0, 89, 100, 51,
1922 41, 49, 0, 262, 283, 207, 37, 0, 301, 58,
1923 227, 234, 236, 237, 238, 245, 246, 239, 240, 216,
1924 217, 243, 244, 747, 231, 232, 233, 222, 223, 224,
1925 225, 226, 255, 256, 732, 734, 733, 735, 447, 278,
1926 445, 747, 732, 734, 733, 735, 446, 278, 0, 759,
1927 374, 0, 373, 0, 0, 0, 0, 331, 0, 311,
1928 0, 759, 0, 63, 339, 121, 122, 123, 648, 337,
1929 0, 759, 0, 0, 0, 344, 739, 740, 346, 732,
1930 733, 278, 42, 262, 208, 48, 215, 0, 0, 725,
1931 0, 285, 281, 759, 732, 733, 747, 732, 733, 724,
1932 315, 749, 264, 270, 265, 272, 320, 24, 0, 248,
1933 11, 34, 0, 759, 214, 22, 86, 18, 308, 752,
1934 0, 94, 736, 109, 747, 732, 733, 429, 607, 0,
1935 583, 0, 586, 0, 591, 588, 0, 0, 592, 228,
1936 451, 455, 0, 371, 452, 459, 437, 291, 0, 0,
1937 98, 92, 0, 0, 0, 0, 0, 759, 0, 0,
1938 0, 0, 0, 444, 76, 0, 450, 0, 0, 267,
1939 443, 74, 266, 304, 366, 759, 759, 566, 759, 375,
1940 759, 329, 377, 64, 376, 330, 468, 0, 0, 368,
1941 0, 0, 736, 310, 747, 732, 733, 0, 0, 0,
1942 0, 121, 122, 125, 747, 0, 747, 653, 0, 439,
1943 69, 135, 727, 286, 276, 0, 0, 450, 0, 0,
1944 759, 747, 260, 102, 450, 430, 608, 612, 613, 614,
1945 605, 615, 585, 587, 594, 590, 596, 759, 70, 759,
1946 0, 289, 38, 90, 50, 263, 732, 733, 747, 732,
1947 733, 560, 564, 0, 0, 0, 505, 499, 502, 558,
1948 0, 59, 485, 487, 489, 492, 539, 544, 545, 546,
1949 549, 550, 551, 552, 553, 555, 554, 556, 557, 0,
1950 47, 212, 46, 213, 77, 750, 0, 44, 210, 45,
1951 211, 75, 567, 568, 759, 569, 367, 369, 0, 12,
1952 14, 573, 370, 0, 0, 0, 378, 380, 0, 65,
1953 469, 0, 335, 0, 461, 0, 334, 450, 0, 0,
1954 0, 0, 450, 342, 720, 676, 0, 676, 347, 440,
1955 441, 0, 271, 319, 676, 609, 747, 0, 418, 417,
1956 0, 290, 450, 547, 548, 122, 562, 0, 0, 501,
1957 0, 0, 504, 427, 561, 0, 60, 0, 542, 543,
1958 0, 491, 490, 0, 0, 249, 43, 209, 0, 0,
1959 571, 572, 0, 381, 0, 327, 328, 470, 332, 462,
1960 0, 0, 336, 0, 649, 338, 683, 680, 679, 678,
1961 681, 689, 698, 677, 0, 710, 699, 714, 713, 709,
1962 675, 747, 747, 682, 684, 685, 687, 661, 691, 696,
1963 759, 702, 759, 759, 707, 661, 712, 661, 0, 659,
1964 0, 0, 653, 676, 431, 434, 610, 416, 747, 0,
1965 685, 401, 693, 694, 759, 759, 759, 705, 401, 401,
1966 399, 421, 456, 460, 747, 519, 507, 747, 508, 514,
1967 0, 534, 597, 747, 525, 530, 533, 527, 529, 537,
1968 751, 559, 486, 488, 540, 541, 563, 498, 495, 597,
1969 747, 747, 747, 747, 0, 570, 0, 642, 643, 301,
1970 0, 759, 0, 0, 0, 463, 759, 340, 0, 394,
1971 386, 388, 747, 391, 384, 651, 652, 0, 0, 668,
1972 690, 0, 656, 717, 700, 701, 0, 658, 657, 0,
1973 671, 711, 0, 673, 715, 345, 654, 0, 747, 0,
1974 0, 0, 419, 0, 407, 409, 0, 692, 0, 396,
1975 398, 397, 0, 412, 0, 414, 0, 506, 517, 0,
1976 500, 512, 523, 509, 515, 0, 503, 526, 532, 538,
1977 536, 0, 493, 494, 496, 497, 311, 0, 759, 0,
1978 759, 13, 759, 0, 477, 480, 483, 484, 464, 466,
1979 467, 465, 747, 393, 0, 686, 0, 703, 660, 688,
1980 661, 661, 697, 702, 759, 716, 661, 708, 661, 685,
1981 661, 0, 0, 0, 0, 432, 0, 420, 704, 400,
1982 401, 401, 311, 0, 695, 759, 401, 706, 401, 401,
1983 425, 747, 423, 426, 0, 520, 521, 510, 0, 516,
1984 535, 531, 524, 528, 736, 310, 747, 732, 733, 565,
1985 379, 471, 0, 0, 481, 385, 387, 389, 392, 0,
1986 664, 0, 666, 655, 0, 672, 0, 669, 674, 348,
1987 433, 0, 0, 611, 0, 404, 0, 406, 736, 310,
1988 395, 0, 413, 0, 410, 415, 0, 422, 518, 0,
1989 0, 513, 450, 472, 478, 479, 482, 0, 0, 661,
1990 661, 661, 661, 436, 435, 401, 401, 401, 401, 424,
1991 522, 511, 473, 390, 665, 0, 662, 667, 670, 405,
1992 0, 402, 408, 411, 0, 661, 401, 759, 663, 403,
1999 -1028, -1028, -1028, 923, -1028, 62, 730, -552, -1028, -35,
2000 -1028, 731, -1028, 72, -1028, -212, -254, -66, -1028, -1028,
2001 -1028, -32, -88, -1028, -1028, -36, -1028, -260, 641, 25,
2002 1106, -141, -6, -68, -1028, -410, -19, 2212, -370, 1108,
2003 -40, -24, -1028, -1028, 5, -1028, 2954, -1028, 1121, -1028,
2004 1541, -1028, 652, 426, 601, -307, 94, -10, -1028, -360,
2005 -218, 66, -1028, -310, -52, -1028, -1028, -1028, -1028, -1028,
2006 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, 32,
2007 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028,
2008 -1028, -1028, -1028, -1028, -1028, 509, -1028, 210, 981, -368,
2009 -1028, 126, -700, -1028, -1024, -1001, 198, 116, 355, 317,
2010 -1028, 461, -1028, -860, -1028, 30, 350, -1028, -1028, -1028,
2011 -1028, -1028, -1028, -1028, 494, -1028, -1028, -95, 723, -1028,
2012 -1028, -1028, 915, -1028, -1028, -1028, -1028, -680, -1028, -1,
2013 -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -1028, -526,
2014 -1028, -1028, -1028, -1028, 354, -1028, -1028, -1028, -824, -1028,
2015 230, -609, -594, -781, -1028, 177, -1028, 178, 190, -1028,
2016 -376, -1028, 373, -1028, -1028, 166, -1028, -1028, 263, 485,
2017 499, -1028, 1171, 747, 1110, 1394, -1028, 780, 1448, -1028,
2018 1612, 1744, -1028, -1028, -57, -1028, -1028, -199, -1028, -1028,
2019 -1028, -1028, -1028, -1028, -1028, 0, -1028, -1028, -1028, -1028,
2020 -37, 2020, 1174, 1178, 2236, 1512, -1028, -1028, 329, -1028,
2021 -705, 314, -773, 429, -1027, -785, -603, -908, 236, -200,
2022 258, 243, -1028, -1028, -503, -690, -213, -984, -987, 234,
2023 274, -1028, -846, -1028, -513, -379, -1028, -1028, -1028, 6,
2024 -417, -1028, -275, -1028, -1028, -87, -1028, -71, 23, 185,
2025 -583, 322, -194, -60, -44, -2
2031 -1, 1, 2, 70, 71, 72, 243, 578, 902, 579,
2032 261, 262, 461, 263, 452, 74, 530, 75, 539, 689,
2033 886, 368, 370, 371, 839, 76, 77, 515, 249, 79,
2034 80, 264, 81, 82, 83, 481, 84, 216, 388, 389,
2035 200, 201, 202, 617, 567, 204, 86, 454, 359, 87,
2036 218, 269, 535, 568, 700, 440, 441, 231, 232, 220,
2037 426, 442, 523, 524, 88, 366, 268, 467, 638, 287,
2038 717, 588, 730, 728, 603, 605, 737, 738, 952, 251,
2039 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
2040 321, 324, 705, 828, 720, 833, 834, 674, 252, 581,
2041 713, 835, 836, 380, 1020, 1021, 1022, 1023, 1129, 1055,
2042 958, 867, 868, 959, 1141, 1142, 486, 487, 657, 755,
2043 864, 1049, 954, 1125, 325, 101, 102, 322, 512, 513,
2044 671, 767, 516, 517, 675, 769, 845, 721, 1101, 718,
2045 840, 907, 1013, 1203, 1222, 1234, 1242, 1093, 1094, 1072,
2046 792, 793, 893, 894, 794, 878, 880, 877, 977, 978,
2047 979, 1145, 980, 983, 984, 985, 986, 987, 988, 795,
2048 796, 883, 797, 798, 799, 706, 824, 899, 830, 103,
2049 104, 105, 106, 107, 108, 109, 498, 661, 110, 500,
2050 111, 112, 499, 501, 292, 295, 296, 492, 659, 658,
2051 756, 865, 956, 1050, 760, 113, 114, 293, 115, 116,
2052 117, 223, 224, 120, 225, 226, 599, 729, 856, 857,
2053 1108, 1029, 931, 443, 933, 934, 1119, 936, 937, 938,
2054 939, 963, 964, 940, 941, 942, 943, 944, 967, 968,
2055 945, 946, 947, 948, 949, 1032, 407, 604, 274, 444,
2056 228, 123, 642, 570, 608, 602, 411, 307, 436, 437,
2057 696, 882, 472, 582, 375, 266
2065 124, 583, 365, 294, 240, 282, 372, 412, 205, 434,
2066 838, 308, 235, 203, 410, 330, 629, 597, 260, 291,
2067 969, 536, 227, 227, 374, 367, 367, 309, 205, 367,
2068 301, 282, 302, 203, 89, 308, 89, 841, 281, 1143,
2069 317, 215, 215, 747, 282, 282, 282, 265, 222, 222,
2070 238, 735, 241, 272, 276, 1117, 629, 571, -116, 405,
2071 369, 271, 275, 373, 203, 622, 125, 580, 320, 1000,
2072 1002, 754, 651, 622, 73, 1137, 73, 474, -112, 1068,
2073 1166, 476, 221, 221, 951, 89, 89, 712, 569, 283,
2074 577, 955, 1123, -113, -120, 1147, 495, 497, 1051, 580,
2075 222, -119, -115, 885, 203, 1168, 227, 827, -117, 719,
2076 219, 229, 1001, 1003, -353, 283, 681, -84, 462, 529,
2077 1109, 270, 626, 222, 222, 215, 267, 222, 379, 390,
2078 390, -112, 222, 3, 317, 430, 611, -98, -114, 1024,
2079 1034, 847, -353, -353, 315, 316, 1109, -116, -113, -523,
2080 930, 852, 930, 569, 237, 577, 422, 318, 1035, 930,
2081 612, 615, 233, 791, 458, 827, 221, 663, 667, 1143,
2082 446, -118, 448, 1069, 260, 716, 965, 654, 851, -107,
2083 1048, -732, 1111, 643, 1166, 1117, 1124, 525, 1122, 1148,
2084 464, -353, -120, 1118, 408, 872, 485, 1137, -636, -103,
2085 910, 308, 529, 529, 879, 305, 1223, 306, 1131, 456,
2086 643, 305, 480, 306, -104, -111, 1138, 465, 629, 427,
2087 664, 668, -110, -106, 260, 427, 434, -636, 282, -108,
2088 733, 445, 1097, 1024, 1103, -119, 227, 305, 227, 306,
2089 124, 89, 479, 242, 367, 367, 367, 367, 930, 510,
2090 511, 318, 935, 265, 935, 215, 256, 215, 215, -105,
2091 237, 935, 222, 960, 222, 222, 1109, 244, 222, -112,
2092 222, -112, 773, 622, 89, 622, 89, 282, 505, 506,
2093 507, 508, -732, 1109, 724, -116, -113, -116, -113, 89,
2094 520, 89, 592, 260, 734, 531, 221, 913, 221, 662,
2095 477, 662, 587, -118, 950, 367, -733, 297, 997, -118,
2096 527, -118, 283, 308, 73, 981, 1099, 643, 973, 1024,
2097 594, 1024, 265, 1210, 435, 927, 438, 643, -115, 460,
2098 -120, -117, -120, 298, 922, 584, 1100, 586, 1216, 585,
2099 1206, 89, 222, 222, 222, 222, 89, 222, 222, 928,
2100 935, 974, 976, 970, 488, 885, 315, 316, 222, -635,
2101 89, 283, 445, 537, 965, 926, -644, 976, 976, 982,
2102 575, 504, 965, -119, 965, -119, 885, 989, 531, 531,
2103 778, 73, 1079, 305, 1073, 306, 509, -106, -635, 215,
2104 989, 989, 522, -112, 1070, 823, 222, 522, 89, 299,
2105 1080, 1164, 89, 222, 89, 744, -107, 873, 874, 490,
2106 491, 569, 1150, 577, 480, 876, 575, 300, 222, 1084,
2107 1085, 447, 1024, 1024, -109, 935, -733, 445, 637, 237,
2108 282, 623, -108, 890, 814, 575, 935, 810, 812, 323,
2109 427, 821, 427, 817, 819, 629, 537, 537, 234, 466,
2110 688, 960, 205, 468, 215, 752, 326, 203, 480, 960,
2111 1078, 222, 763, 575, -645, 432, -115, 763, -115, -117,
2112 -114, -117, 529, 459, 282, 1146, 649, 911, 327, 529,
2113 529, 891, 445, 333, 892, 529, 529, 1095, -106, -747,
2114 575, -113, -120, 361, 965, 1121, 965, 89, 237, 415,
2115 -119, 965, 622, 965, 319, 727, 331, -107, -106, 215,
2116 989, -106, 994, 995, 283, -106, 222, 470, 1115, 414,
2117 996, 362, 363, 1115, 471, 714, -120, -107, 1113, -732,
2118 -107, 1010, 744, -108, -107, 1198, 1012, 1240, 736, 1201,
2119 965, 970, 356, 357, 358, 1115, 708, 488, 710, 970,
2120 1146, 970, 748, -108, 1146, 1113, -108, 749, 283, 694,
2121 -108, 861, 896, 1037, 1038, 697, 935, 701, 60, 698,
2122 364, 1181, 751, 1202, 989, 702, 690, 707, 416, -115,
2123 418, 960, 753, 361, -117, 1059, 1060, 1061, -114, 445,
2124 361, 1221, -115, 741, 695, -637, -117, 575, 282, 445,
2125 489, 740, 490, 491, 529, 1220, 1146, 575, -114, 702,
2126 -114, 362, 428, 89, 480, 89, 215, 205, 362, 457,
2127 630, 427, 203, 222, -637, 632, 215, 236, 634, 423,
2128 282, 636, 488, 222, 488, 89, 222, 816, 976, 750,
2129 -638, 702, 424, 78, 859, 78, 488, 646, 531, 695,
2130 -640, -105, 648, 966, -639, 531, 531, 78, 78, 425,
2131 429, 531, 531, 367, -114, 473, 962, 429, 849, -638,
2132 222, 970, 471, 970, 234, 319, -641, 695, 970, -640,
2133 970, 236, 283, -639, 488, 445, 237, 490, 491, 490,
2134 491, 433, 848, 575, 78, 78, -747, 850, 858, 493,
2135 237, 490, 491, 825, 831, -641, 837, -729, 837, 78,
2136 680, 89, 215, 431, 283, 89, 537, 970, 762, 222,
2137 765, -630, 453, 537, 537, 1161, 338, 339, 676, 537,
2138 537, -633, 78, 78, 606, 1173, 78, 493, 1196, 490,
2139 491, 78, 618, 203, 488, 237, 230, 695, 427, -630,
2140 -630, 772, -105, 233, -310, 774, 1190, 695, 361, 89,
2141 -633, 222, 89, 607, 826, 869, -747, 869, 367, 237,
2142 827, 522, -105, 349, 350, -105, -642, -630, -630, -105,
2143 531, 1156, -310, -310, -643, 595, 362, 483, 703, 596,
2144 914, 576, -301, 901, 711, 333, 715, 494, 903, 490,
2145 491, 695, 904, 595, -642, -642, 463, 875, -83, 361,
2146 695, 881, -643, -643, 643, 469, -644, 475, 1114, 478,
2147 -301, -301, 900, 482, -729, 502, -630, 514, -645, -729,
2148 528, -310, 972, 589, -733, 484, 333, 362, 590, 832,
2149 827, 966, 503, -112, 598, 1135, 282, 593, 537, 966,
2150 78, 966, 488, -642, 962, -113, 576, 633, 962, 631,
2151 89, -643, 962, -103, 962, 89, 222, 1011, 635, -301,
2152 640, 78, 641, 78, 78, -104, 1016, 78, -98, 78,
2153 650, 89, 415, 78, 576, 78, 591, 361, 89, 971,
2154 459, 1046, 673, 354, 355, 356, 357, 358, 78, 89,
2155 78, 670, 89, 888, 889, 660, -283, 490, 491, -120,
2156 282, 576, 449, 678, 695, 362, 409, -119, 679, 1089,
2157 682, 854, 450, 451, 683, 1075, 1162, 1163, 842, -111,
2158 1006, 846, 684, 704, 89, 709, 863, -110, 1033, 716,
2159 1033, 1033, 1081, 89, 719, 853, 764, 766, 768, 697,
2160 78, 78, 78, 78, 78, 78, 78, 78, -284, 361,
2161 809, -311, 1033, 1033, 1033, 827, 815, 78, 855, 78,
2162 862, 966, 78, 966, 866, 1090, -115, 1092, 966, -285,
2163 966, 971, -730, 100, 962, 100, 962, 362, 600, -311,
2164 -311, 962, 884, 962, 1057, 693, -106, 100, 100, 885,
2165 695, 282, 887, 699, 898, 78, 881, 78, -286, 831,
2166 990, 78, 78, 78, 837, 1126, 781, 966, 576, 488,
2167 496, -736, 1027, 1028, -633, 695, 695, 78, 576, 1031,
2168 962, 361, 1041, 1036, 100, 100, 601, 699, -311, 1044,
2169 1039, 1042, 89, 1052, 89, 905, 1053, 1054, 906, 100,
2170 1086, 908, -633, -633, 488, 78, 78, 1058, 912, 362,
2171 686, 915, 1062, -736, 1064, 1074, 614, 616, 693, 699,
2172 78, 971, 100, 100, 490, 491, 100, 998, 1077, 89,
2173 1066, 100, 89, 614, 616, 1128, 445, 826, 707, 1182,
2174 837, -736, -736, 361, 575, 1104, 367, 367, 361, -730,
2175 1106, -633, 961, 1127, -730, 1132, 78, 665, 687, 490,
2176 491, 644, 1033, 215, 576, 698, 1025, 1026, 921, 816,
2177 222, 362, 1087, 1017, 1144, 78, 362, 1133, 1149, 1169,
2178 1204, 1205, 1171, 1033, 1035, 1174, 1176, 922, -736, 1183,
2179 -736, 1180, -117, -732, 1184, 488, -114, 1186, 916, 1191,
2180 917, 918, 919, 920, 921, 89, 89, 1193, 1199, 1067,
2181 1045, 1200, -108, 1207, 1197, 455, -105, 1208, 926, 927,
2182 1088, 1214, -732, 922, 800, 601, 119, -733, 119, 695,
2183 310, 311, 312, 313, 314, 1082, 1083, 1225, 801, 1230,
2184 100, 645, 333, 928, 222, 222, 647, 924, 493, 1237,
2185 490, 491, 377, 1150, 926, 927, 394, 1105, 360, 346,
2186 347, 100, 739, 100, 100, 829, 1102, 100, 1160, 100,
2187 1167, 957, 78, 100, 78, 100, 1219, 119, 119, 928,
2188 870, 285, 78, 991, 860, 837, 1241, 672, 100, 518,
2189 100, 993, 78, 1096, 78, 78, 351, 352, 353, 354,
2190 355, 356, 357, 358, 1151, 1152, 1159, 285, 992, 1040,
2191 916, 1043, 917, 918, 919, 920, 89, 1153, 800, 800,
2192 382, 392, 392, 392, 1091, 1116, 413, 406, 1120, 78,
2193 666, 1047, 801, 801, 932, 1063, 1065, 1165, 1130, 1112,
2194 100, 100, 100, 100, 100, 100, 100, 100, 1136, 333,
2195 1139, 1134, 1110, 757, 758, 1076, 759, 100, 0, 100,
2196 0, 0, 100, 46, 47, 0, 346, 347, 0, 0,
2197 78, 0, 0, 0, 78, 78, 0, 0, 78, 0,
2198 0, 1179, 78, 78, 41, 42, 43, 44, 78, 78,
2199 0, 0, 0, 811, 813, 100, 0, 100, 0, 818,
2200 820, 100, 100, 100, 0, 353, 354, 355, 356, 357,
2201 358, 0, 800, 800, 0, 0, 0, 100, 78, 0,
2202 78, 78, 800, 800, 800, 0, 801, 801, 800, 800,
2203 0, 0, 0, 119, 0, 0, 801, 801, 801, 0,
2204 0, 1213, 801, 801, 0, 100, 100, 811, 813, 0,
2205 818, 820, 0, 0, 0, 1209, 0, 1211, 0, 0,
2206 100, 0, 1212, 0, 0, 0, 119, 0, 119, 0,
2207 1215, 0, 1217, 0, 1170, 1172, 0, 0, 0, 1218,
2208 1175, 119, 1177, 119, 1178, 0, 802, 916, 0, 917,
2209 918, 919, 920, 921, 0, 0, 100, 1185, 1187, 0,
2210 0, 0, 0, 1192, 285, 1194, 1195, 78, 0, 0,
2211 0, 1235, 922, 800, 0, 100, 1236, 0, 897, 78,
2212 0, 800, 0, 0, 78, 78, 1140, 801, 917, 918,
2213 919, 920, 0, 119, 0, 801, 924, 0, 119, 0,
2214 78, 0, 925, 926, 927, 0, 0, 78, 800, 0,
2215 0, 0, 119, 285, 0, 0, 0, 0, 78, 0,
2216 0, 78, 801, 897, 122, 576, 122, 0, 928, 0,
2217 0, 929, 0, 1224, 1226, 1227, 1228, 0, 0, 0,
2218 802, 802, 1229, 1231, 1232, 1233, 0, 0, 237, 0,
2219 119, 333, 0, 78, 119, 0, 119, 0, 0, 1238,
2220 0, 0, 78, 1239, 800, 0, 0, 0, 346, 347,
2221 0, 0, 100, 0, 100, 122, 122, 0, 801, 286,
2222 0, 916, 100, 917, 918, 919, 920, 921, 0, 0,
2223 0, 0, 100, 0, 100, 100, 0, 0, 0, 916,
2224 0, 917, 918, 919, 920, 286, 922, 273, 354, 355,
2225 356, 357, 358, 0, 0, 0, 0, 0, 383, 393,
2226 393, 0, 916, 0, 917, 918, 919, 920, 0, 100,
2227 924, 0, 0, 0, 802, 802, 925, 926, 927, 800,
2228 0, 0, 0, 800, 802, 802, 802, 0, 1018, 119,
2229 802, 802, 0, 801, 1019, 0, 0, 801, 0, 800,
2230 0, 78, 928, 78, 0, 929, 285, 0, 0, 0,
2231 100, 1018, 0, 801, 100, 100, 0, 953, 100, 0,
2232 0, 0, 100, 100, 0, 0, 0, 0, 100, 100,
2233 0, 0, 0, 0, 800, 800, 0, 0, 78, 0,
2234 0, 78, 0, 0, 0, 0, 0, 0, 801, 801,
2235 285, 0, 0, 0, 0, 0, 0, 0, 100, 0,
2236 100, 100, 0, 0, 0, 0, 0, 0, 0, 0,
2237 0, 122, 0, 0, 0, 802, 0, 0, 0, 78,
2238 0, 0, 0, 802, 0, 0, 0, 0, 916, 0,
2239 917, 918, 919, 920, 921, 0, 0, 0, 417, 0,
2240 0, 419, 420, 421, 122, 119, 122, 119, 0, 0,
2241 802, 0, 0, 922, 78, 78, 0, 0, 0, 122,
2242 0, 122, 0, 0, 0, 0, 0, 119, 0, 0,
2243 0, 0, 0, 0, 0, 0, 0, 924, 0, 0,
2244 0, 0, 286, 925, 926, 927, 0, 100, 0, 803,
2245 0, 0, 0, 78, 78, 0, 0, 0, 0, 100,
2246 0, 0, 0, 0, 100, 100, 802, 0, 0, 928,
2247 0, 122, 929, 0, 285, 0, 122, 0, 0, 0,
2248 100, 0, 0, 0, 0, 0, 0, 100, 0, 0,
2249 122, 286, 0, 538, 0, 0, 0, 0, 100, 0,
2250 0, 100, 0, 119, 0, 0, 285, 119, 0, 0,
2251 0, 0, 0, 808, 0, 0, 0, 521, 0, 0,
2252 0, 0, 534, 0, 0, 78, 0, 0, 122, 0,
2253 0, 0, 122, 100, 122, 0, 0, 0, 0, 0,
2254 0, 802, 100, 803, 803, 802, 0, 0, 0, 0,
2255 0, 119, 0, 0, 119, 0, 0, 0, 0, 0,
2256 0, 802, 0, 0, 0, 0, 0, 0, 0, 0,
2257 0, 0, 0, 0, 0, 0, 538, 538, 0, 916,
2258 0, 917, 918, 919, 920, 921, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0, 802, 802, 0, 0,
2260 0, 0, 0, 0, 922, 0, 0, 808, 808, 0,
2261 0, 0, 0, 0, 0, 619, 621, 0, 923, 0,
2262 0, 0, 0, 0, 273, 0, 0, 122, 924, 0,
2263 0, 0, 0, 0, 925, 926, 927, 803, 803, 0,
2264 0, 100, 0, 100, 286, 0, 0, 803, 803, 803,
2265 0, 0, 119, 803, 803, 0, 0, 119, 0, 0,
2266 928, 621, 0, 929, 273, 0, 0, 0, 0, 0,
2267 0, 0, 118, 119, 118, 0, 0, 0, 100, 0,
2268 119, 100, 0, 0, 0, 0, 0, 0, 286, 0,
2269 0, 119, 0, 0, 119, 0, 0, 0, 0, 0,
2270 0, 808, 808, 0, 0, 0, 0, 0, 0, 0,
2271 677, 808, 808, 808, 0, 0, 0, 808, 808, 100,
2272 0, 0, 1008, 118, 118, 0, 119, 284, 0, 0,
2273 0, 0, 0, 804, 0, 119, 0, 0, 803, 0,
2274 0, 0, 0, 122, 0, 122, 803, 0, 0, 0,
2275 0, 0, 0, 284, 100, 100, 0, 0, 0, 0,
2276 0, 0, 0, 0, 0, 122, 381, 391, 391, 391,
2277 0, 0, 0, 803, 0, 0, 0, 0, 0, 0,
2278 0, 0, 0, 0, 0, 0, 392, 805, 0, 0,
2279 0, 0, 0, 100, 100, 0, 0, 0, 0, 0,
2280 0, 0, 808, 0, 0, 0, 0, 0, 0, 742,
2281 808, 743, 286, 0, 0, 0, 0, 0, 0, 0,
2282 0, 761, 0, 0, 621, 0, 273, 804, 804, 803,
2283 0, 0, 0, 0, 119, 0, 119, 808, 0, 0,
2284 0, 122, 0, 0, 286, 122, 538, 0, 0, 0,
2285 0, 0, 0, 538, 538, 0, 0, 0, 0, 538,
2286 538, 0, 0, 0, 85, 100, 85, 0, 0, 771,
2287 0, 119, 0, 0, 119, 0, 0, 392, 0, 118,
2288 0, 805, 805, 0, 0, 0, 0, 0, 121, 122,
2289 121, 0, 122, 808, 0, 0, 822, 0, 0, 0,
2290 0, 0, 0, 0, 803, 0, 0, 0, 803, 0,
2291 0, 844, 118, 0, 118, 85, 85, 0, 0, 0,
2292 0, 804, 804, 0, 803, 0, 0, 118, 0, 118,
2293 0, 804, 804, 804, 0, 0, 0, 804, 804, 121,
2294 121, 0, 0, 0, 0, 0, 0, 119, 119, 0,
2295 284, 806, 0, 0, 0, 0, 0, 0, 378, 803,
2296 803, 871, 0, 0, 0, 0, 0, 0, 808, 0,
2297 0, 0, 808, 0, 0, 805, 805, 0, 538, 118,
2298 0, 0, 0, 0, 118, 805, 805, 805, 808, 0,
2299 122, 805, 805, 0, 0, 122, 0, 0, 118, 284,
2300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2301 0, 122, 0, 0, 0, 0, 0, 0, 122, 0,
2302 0, 0, 804, 808, 808, 0, 0, 0, 0, 122,
2303 804, 0, 122, 0, 909, 0, 118, 0, 0, 0,
2304 118, 0, 118, 0, 0, 806, 806, 0, 0, 0,
2305 0, 0, 0, 273, 0, 0, 0, 804, 119, 0,
2306 1009, 0, 0, 0, 122, 0, 0, 0, 0, 0,
2307 0, 85, 0, 122, 0, 0, 805, 0, 0, 0,
2308 0, 0, 0, 807, 805, 0, 0, 0, 0, 0,
2309 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
2310 0, 1015, 0, 0, 85, 0, 85, 0, 0, 0,
2311 0, 805, 0, 804, 0, 0, 0, 0, 0, 85,
2312 0, 85, 0, 0, 393, 0, 0, 0, 121, 1030,
2313 121, 0, 0, 0, 0, 118, 0, 0, 0, 806,
2314 806, 0, 0, 121, 0, 121, 0, 0, 0, 806,
2315 806, 806, 284, 0, 0, 806, 806, 0, 0, 0,
2316 0, 0, 0, 0, 0, 0, 0, 805, 0, 0,
2317 0, 85, 122, 0, 122, 0, 85, 807, 807, 0,
2318 0, 0, 0, 0, 0, 0, 0, 0, 804, 0,
2319 85, 0, 804, 532, 0, 121, 284, 0, 0, 0,
2320 121, 0, 0, 0, 0, 1098, 0, 0, 804, 122,
2321 0, 0, 122, 0, 121, 393, 0, 121, 1107, 0,
2322 0, 0, 0, 0, 0, 0, 0, 0, 85, 0,
2323 0, 0, 85, 0, 85, 0, 0, 0, 0, 0,
2324 806, 0, 805, 804, 804, 0, 805, 0, 806, 0,
2325 0, 118, 121, 118, 0, 0, 121, 0, 121, 0,
2326 0, 0, 805, 0, 0, 0, 0, 0, 0, 0,
2327 0, 807, 807, 118, 0, 806, 532, 532, 0, 0,
2328 0, 807, 807, 807, 0, 122, 122, 807, 807, 0,
2329 0, 0, 0, 0, 0, 0, 0, 805, 805, 0,
2330 121, 121, 0, 0, 0, 0, 0, 0, 0, 0,
2331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2332 284, 0, 0, 0, 0, 0, 0, 85, 0, 332,
2333 0, 806, 0, -759, 0, 0, 0, 0, 0, 0,
2334 0, -759, -759, -759, 0, 0, -759, -759, -759, 118,
2335 -759, 121, 284, 118, 0, 0, 0, 0, -759, -759,
2336 -759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2337 -759, -759, 807, -759, -759, -759, -759, -759, 0, 0,
2338 807, 333, 334, 335, 336, 337, 338, 339, 340, 341,
2339 342, 343, 344, 345, 0, 0, 122, 118, 346, 347,
2340 118, -759, 0, 0, 0, 0, 806, 807, 0, 0,
2341 806, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2342 0, 0, 0, 0, 0, 0, 806, 0, 0, -759,
2343 -759, 348, 0, 349, 350, 351, 352, 353, 354, 355,
2344 356, 357, 358, 85, 0, 85, 0, 0, 0, 0,
2345 0, 0, 0, -759, 0, 0, 0, 0, 0, 0,
2346 0, 806, 806, 807, 0, 85, 0, 121, 0, 121,
2347 0, 0, 0, 0, 0, 0, -759, -759, 0, 0,
2348 0, 233, -759, 0, -759, 0, -759, 0, 0, 121,
2349 0, 0, 0, 0, 0, 0, 0, 0, 118, 0,
2350 0, 0, 0, 118, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 0, 0, 0, 0, 118,
2352 0, 0, 0, 0, 0, 0, 118, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 0, 118, 807, 0,
2354 118, 85, 807, 0, 0, 85, 532, 0, 0, 0,
2355 0, 0, 0, 532, 532, 0, 0, 0, 807, 532,
2356 532, 0, 0, 0, 0, 121, 0, 0, 1007, 121,
2357 121, 0, 118, 0, 0, 0, 0, 121, 121, 0,
2358 0, 118, 0, 121, 121, 0, 0, 0, 0, 85,
2359 0, 0, 85, 807, 807, 0, 0, 0, 0, 0,
2360 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2361 0, 0, 0, 121, 0, 0, 121, 0, 0, 0,
2362 217, 217, 0, 0, 0, 0, 0, 0, 0, 0,
2363 0, 0, 391, 0, 0, 0, 0, 0, 0, 0,
2364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2365 0, 0, 250, 253, 254, 255, 0, 0, 0, 217,
2366 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2367 0, 0, 303, 304, 0, 0, 0, 0, 532, 0,
2368 118, 0, 118, 0, 0, 0, 0, 0, 0, 0,
2369 85, 0, 0, 0, 0, 85, 0, 0, 0, 0,
2370 0, 0, 121, 0, 217, 0, 0, 0, 0, 0,
2371 0, 85, 0, 0, 121, 0, 0, 118, 85, 121,
2372 118, 0, 0, 391, 0, 0, 0, 0, 0, 85,
2373 0, 0, 85, 0, 0, 121, 0, 0, 0, 0,
2374 0, 0, 121, 0, 0, 0, 0, 0, 0, 0,
2375 0, 0, 0, 121, 0, 0, 121, 0, 0, 0,
2376 1005, 0, 0, 0, 85, 0, 0, 0, 0, 0,
2377 0, 0, 0, 85, 23, 24, 25, 26, 0, 0,
2378 0, 0, 0, 0, 0, 0, 0, 0, 121, 0,
2379 32, 33, 34, 118, 118, 0, 0, 121, 0, 0,
2380 41, 42, 43, 44, 45, 0, 0, 0, 0, 0,
2381 0, 217, 0, 0, 217, 217, 217, 0, 303, 0,
2382 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2383 0, 0, 0, 0, 217, 0, 217, 217, 0, 0,
2384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2385 0, 789, 59, 60, 61, 62, 63, 64, 65, 66,
2386 0, 333, 334, 335, 336, 337, 338, 339, 340, 0,
2387 342, 343, 85, 0, 85, 0, 0, 0, 346, 347,
2388 279, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2389 0, 0, 0, 0, 0, 0, 121, 0, 121, 0,
2390 0, 0, 0, 0, 118, 0, 0, 0, 0, 85,
2391 0, 0, 85, 349, 350, 351, 352, 353, 354, 355,
2392 356, 357, 358, 0, 0, 0, 0, 0, 0, 0,
2393 217, 0, 0, 121, 0, 533, 121, 540, 541, 542,
2394 543, 544, 0, 0, 545, 546, 547, 548, 549, 550,
2395 551, 552, 553, 0, 0, 554, 555, 556, 557, 558,
2396 559, 560, 561, 562, 563, 0, 0, 0, 217, 0,
2397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2398 0, 0, 0, 0, 0, 85, 85, 0, 0, 0,
2399 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2400 339, 340, 341, 342, 343, 344, 345, 0, 0, 121,
2401 121, 346, 347, 0, 0, 0, 0, 0, 613, 613,
2402 0, 0, 0, 0, 0, 0, 0, 613, 217, 217,
2403 0, 0, 0, 217, 0, 613, 613, 217, 0, 0,
2404 0, 0, 0, 255, 348, 0, 349, 350, 351, 352,
2405 353, 354, 355, 356, 357, 358, 0, 0, 639, 0,
2406 0, 0, 0, 613, 0, 0, 0, 0, 0, 0,
2407 237, 0, 0, 0, 217, 0, 0, 217, 0, 0,
2408 0, 0, 0, 0, 0, 0, 0, 0, 217, 0,
2409 0, 0, 0, 0, 0, 0, 85, 0, 0, 0,
2410 0, 0, 0, 0, 0, 0, 669, 333, 334, 335,
2411 336, 337, 338, 339, 340, 341, 342, 343, -760, -760,
2412 121, 0, 0, 217, 346, 347, 0, 0, 0, 0,
2413 0, 0, -736, 0, 0, 0, 0, 0, 0, 0,
2414 -736, -736, -736, 0, 0, 0, -736, -736, 0, -736,
2415 0, 0, 0, 0, 0, 0, 0, -736, -736, 349,
2416 350, 351, 352, 353, 354, 355, 356, 357, 358, -736,
2417 -736, 0, -736, -736, -736, -736, -736, 0, 0, 0,
2418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2419 0, 0, 0, 0, 0, 217, 0, 0, 0, 0,
2420 -736, 0, 0, 0, 0, 217, 0, 0, 0, -736,
2421 -736, -736, -736, -736, -736, -736, -736, -736, -736, -736,
2422 -736, -736, 217, 0, 217, 0, -736, -736, -736, -736,
2423 0, 691, 0, 0, 0, 0, 0, 217, 0, 217,
2424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2425 0, 0, -736, 0, 0, 0, 0, 0, -116, -736,
2426 0, -736, -736, -736, -736, -736, -736, -736, -736, -736,
2427 -736, 0, 0, 0, 0, -736, -736, -736, -107, 0,
2428 0, -736, 217, -736, 0, -736, 0, 0, 613, 775,
2429 0, 217, 0, 0, 0, 613, 613, 0, 0, 0,
2430 0, 613, 613, 0, 23, 24, 25, 26, 0, 217,
2431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2432 32, 33, 34, 781, 217, 0, 0, 782, 0, 981,
2433 41, 42, 43, 44, 45, 0, 0, 0, 0, 0,
2434 0, 0, 0, 0, 0, 0, 0, 0, 922, 613,
2435 613, 0, 613, 613, 0, 0, 0, 0, 0, 0,
2436 0, 783, 784, 0, 0, 0, 0, 0, 0, 785,
2437 0, 0, 786, 0, 217, 787, 788, 0, 975, 926,
2438 0, 789, 59, 999, 61, 62, 63, 64, 65, 66,
2439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2440 0, 0, 0, 790, 0, 0, 0, 0, 0, 0,
2441 279, 0, 0, 895, 0, 0, 0, 0, 0, 0,
2442 613, 0, -759, 4, 0, 5, 6, 7, 8, 9,
2443 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2444 13, 14, 15, 16, 17, 18, 19, 217, 0, 0,
2445 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2446 0, 27, 0, 0, 0, 613, 217, 28, 29, 30,
2447 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2448 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2449 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2451 0, 0, 50, 51, 217, 0, 0, 0, 0, 0,
2452 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2453 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2454 66, 0, 217, 0, 0, 0, 0, 0, 0, 0,
2455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2456 0, 67, 68, 69, 0, 0, 0, 0, -736, 0,
2457 0, 0, 0, -759, 0, -759, -736, -736, -736, 0,
2458 0, -736, -736, -736, 0, -736, 0, 0, 0, 0,
2459 0, 0, 0, -736, -736, -736, -736, -736, 0, 0,
2460 0, 0, 0, 0, 0, -736, -736, 0, -736, -736,
2461 -736, -736, -736, 0, 0, 0, 0, 0, 217, 0,
2462 0, 0, 0, 333, -760, -760, -760, -760, 338, 339,
2463 0, 217, -760, -760, 0, 0, -736, 0, 0, 0,
2464 346, 347, 0, 0, 0, -736, -736, -736, -736, -736,
2465 -736, -736, -736, -736, -736, -736, -736, -736, 0, 0,
2466 0, 0, -736, -736, -736, -736, 0, 745, -736, 0,
2467 0, 0, 0, 0, -736, 349, 350, 351, 352, 353,
2468 354, 355, 356, 357, 358, 0, 0, 0, -736, 0,
2469 0, -736, 217, 0, -116, -736, -736, -736, -736, -736,
2470 -736, -736, -736, -736, -736, -736, -736, 0, 0, 0,
2471 0, -736, -736, -736, -736, -630, 0, -736, -736, -736,
2472 0, -736, 0, -630, -630, -630, 0, 0, -630, -630,
2473 -630, 0, -630, 0, 0, 0, 0, 685, 0, 0,
2474 -630, 0, -630, -630, -630, 0, 0, 0, 0, 0,
2475 0, 0, -630, -630, 0, -630, -630, -630, -630, -630,
2476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2477 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
2478 343, 344, 345, -630, 0, 0, 0, 346, 347, 0,
2479 0, 0, -630, -630, -630, -630, -630, -630, -630, -630,
2480 -630, -630, -630, -630, -630, 0, 0, 0, 0, -630,
2481 -630, -630, -630, 0, -630, -630, 0, 0, 0, 0,
2482 348, -630, 349, 350, 351, 352, 353, 354, 355, 356,
2483 357, 358, 0, 0, 0, -630, 0, 0, -630, -257,
2484 0, -630, -630, -630, -630, -630, -630, -630, -630, -630,
2485 -630, -630, -630, -630, 0, 0, 0, 0, 0, -630,
2486 -630, -630, -633, 0, -630, -630, -630, 0, -630, 0,
2487 -633, -633, -633, 0, 0, -633, -633, -633, 0, -633,
2488 0, 0, 0, 0, 685, 0, 0, -633, 0, -633,
2489 -633, -633, 0, 0, 0, 0, 0, 0, 0, -633,
2490 -633, 0, -633, -633, -633, -633, -633, 0, 0, 0,
2491 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
2492 336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
2493 -633, 0, 0, 0, 346, 347, 0, 0, 0, -633,
2494 -633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
2495 -633, -633, 0, 0, 0, 0, -633, -633, -633, -633,
2496 0, -633, -633, 0, 0, 0, 0, 348, -633, 349,
2497 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
2498 0, 0, -633, 0, 0, -633, 0, 0, -633, -633,
2499 -633, -633, -633, -633, -633, -633, -633, -633, -633, -633,
2500 -633, 0, 0, 0, 0, 0, -633, -633, -633, -737,
2501 0, -633, -633, -633, 0, -633, 0, -737, -737, -737,
2502 0, 0, -737, -737, -737, 0, -737, 0, 0, 0,
2503 0, 0, 0, 0, -737, -737, -737, -737, -737, 0,
2504 0, 0, 0, 0, 0, 0, -737, -737, 0, -737,
2505 -737, -737, -737, -737, 0, 0, 0, 0, 0, 0,
2506 0, 0, 0, 0, 333, 334, 335, 336, 337, 338,
2507 339, 340, 341, 342, 343, 344, 345, -737, 0, 0,
2508 0, 346, 347, 0, 0, 0, -737, -737, -737, -737,
2509 -737, -737, -737, -737, -737, -737, -737, -737, -737, 0,
2510 0, 0, 0, -737, -737, -737, -737, 0, 0, -737,
2511 0, 0, 0, 0, 348, -737, 349, 350, 351, 352,
2512 353, 354, 355, 356, 357, 358, 0, 0, 0, -737,
2513 0, 0, -737, 0, 0, 0, -737, -737, -737, -737,
2514 -737, -737, -737, -737, -737, -737, -737, -737, 0, 0,
2515 0, 0, -737, -737, -737, -737, -738, 0, -737, -737,
2516 -737, 0, -737, 0, -738, -738, -738, 0, 0, -738,
2517 -738, -738, 0, -738, 0, 0, 0, 0, 0, 0,
2518 0, -738, -738, -738, -738, -738, 0, 0, 0, 0,
2519 0, 0, 0, -738, -738, 0, -738, -738, -738, -738,
2520 -738, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2521 0, 333, 334, 335, 336, 337, 338, 339, 0, 0,
2522 342, 343, 0, 0, -738, 0, 0, 0, 346, 347,
2523 0, 0, 0, -738, -738, -738, -738, -738, -738, -738,
2524 -738, -738, -738, -738, -738, -738, 0, 0, 0, 0,
2525 -738, -738, -738, -738, 0, 0, -738, 0, 0, 0,
2526 0, 0, -738, 349, 350, 351, 352, 353, 354, 355,
2527 356, 357, 358, 0, 0, 0, -738, 0, 0, -738,
2528 0, 0, 0, -738, -738, -738, -738, -738, -738, -738,
2529 -738, -738, -738, -738, -738, 0, 0, 0, 0, -738,
2530 -738, -738, -738, -310, 0, -738, -738, -738, 0, -738,
2531 0, -310, -310, -310, 0, 0, -310, -310, -310, 0,
2532 -310, 0, 0, 0, 0, 0, 0, 0, -310, 0,
2533 -310, -310, -310, 0, 0, 0, 0, 0, 0, 0,
2534 -310, -310, 0, -310, -310, -310, -310, -310, 0, 0,
2535 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2537 0, -310, 0, 0, 0, 0, 0, 0, 0, 0,
2538 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2539 -310, -310, -310, 0, 0, 0, 0, -310, -310, -310,
2540 -310, 0, 746, -310, 0, 0, 0, 0, 0, -310,
2541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2542 0, 0, 0, -310, 0, 0, -310, 0, 0, -118,
2543 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2544 -310, -310, 0, 0, 0, 0, 0, -310, -310, -310,
2545 -449, 0, -310, -310, -310, 0, -310, 0, -449, -449,
2546 -449, 0, 0, -449, -449, -449, 0, -449, 0, 0,
2547 0, 0, 0, 0, 0, -449, -449, -449, -449, 0,
2548 0, 0, 0, 0, 0, 0, 0, -449, -449, 0,
2549 -449, -449, -449, -449, -449, 0, 0, 0, 0, 0,
2550 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2551 0, 0, 0, 0, 0, 0, 0, 0, -449, 0,
2552 0, 0, 0, 0, 0, 0, 0, -449, -449, -449,
2553 -449, -449, -449, -449, -449, -449, -449, -449, -449, -449,
2554 0, 0, 0, 0, -449, -449, -449, -449, 0, 0,
2555 -449, 0, 0, 0, 0, 0, -449, 0, 0, 0,
2556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2557 -449, 0, 0, 0, 0, 0, 0, -449, 0, -449,
2558 -449, -449, -449, -449, -449, -449, -449, -449, -449, 0,
2559 0, 0, 0, -449, -449, -449, -449, -302, 233, -449,
2560 -449, -449, 0, -449, 0, -302, -302, -302, 0, 0,
2561 -302, -302, -302, 0, -302, 0, 0, 0, 0, 0,
2562 0, 0, -302, 0, -302, -302, -302, 0, 0, 0,
2563 0, 0, 0, 0, -302, -302, 0, -302, -302, -302,
2564 -302, -302, 0, 0, 0, 0, 0, 0, 0, 0,
2565 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2566 0, 0, 0, 0, 0, -302, 0, 0, 0, 0,
2567 0, 0, 0, 0, -302, -302, -302, -302, -302, -302,
2568 -302, -302, -302, -302, -302, -302, -302, 0, 0, 0,
2569 0, -302, -302, -302, -302, 0, 0, -302, 0, 0,
2570 0, 0, 0, -302, 0, 0, 0, 0, 0, 0,
2571 0, 0, 0, 0, 0, 0, 0, -302, 0, 0,
2572 -302, 0, 0, 0, -302, -302, -302, -302, -302, -302,
2573 -302, -302, -302, -302, -302, -302, 0, 0, 0, 0,
2574 0, -302, -302, -302, -759, 0, -302, -302, -302, 0,
2575 -302, 0, -759, -759, -759, 0, 0, -759, -759, -759,
2576 0, -759, 0, 0, 0, 0, 0, 0, 0, -759,
2577 -759, -759, -759, 0, 0, 0, 0, 0, 0, 0,
2578 0, -759, -759, 0, -759, -759, -759, -759, -759, 0,
2579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2581 0, 0, -759, 0, 0, 0, 0, 0, 0, 0,
2582 0, -759, -759, -759, -759, -759, -759, -759, -759, -759,
2583 -759, -759, -759, -759, 0, 0, 0, 0, -759, -759,
2584 -759, -759, 0, 0, -759, 0, 0, 0, 0, 0,
2585 -759, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2586 0, 0, 0, 0, -759, 0, 0, 0, 0, 0,
2587 0, -759, 0, -759, -759, -759, -759, -759, -759, -759,
2588 -759, -759, -759, 0, 0, 0, 0, -759, -759, -759,
2589 -759, -317, 233, -759, -759, -759, 0, -759, 0, -317,
2590 -317, -317, 0, 0, -317, -317, -317, 0, -317, 0,
2591 0, 0, 0, 0, 0, 0, -317, 0, -317, -317,
2592 0, 0, 0, 0, 0, 0, 0, 0, -317, -317,
2593 0, -317, -317, -317, -317, -317, 0, 0, 0, 0,
2594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2595 0, 0, 0, 0, 0, 0, 0, 0, 0, -317,
2596 0, 0, 0, 0, 0, 0, 0, 0, -317, -317,
2597 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
2598 -317, 0, 0, 0, 0, -317, -317, -317, -317, 0,
2599 0, -317, 0, 0, 0, 0, 0, -317, 0, 0,
2600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2601 0, -317, 0, 0, 0, 0, 0, 0, -317, 0,
2602 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
2603 0, 0, 0, 0, 0, -317, -317, -317, -736, 230,
2604 -317, -317, -317, 0, -317, 0, -736, -736, -736, 0,
2605 0, 0, -736, -736, 0, -736, 0, 0, 0, 0,
2606 0, 0, 0, -736, -736, 0, 0, 0, 0, 0,
2607 0, 0, 0, 0, 0, -736, -736, 0, -736, -736,
2608 -736, -736, -736, 0, 0, 0, 0, 0, 0, 0,
2609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2610 0, 0, 0, 0, 0, 0, -736, 0, 0, 0,
2611 0, 0, 0, 0, 0, -736, -736, -736, -736, -736,
2612 -736, -736, -736, -736, -736, -736, -736, -736, 0, 0,
2613 0, 0, -736, -736, -736, -736, 0, 691, 0, 0,
2614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2615 0, 0, 0, 0, 0, 0, 0, 0, -736, 0,
2616 0, 0, 0, 0, -116, -736, 0, -736, -736, -736,
2617 -736, -736, -736, -736, -736, -736, -736, 0, 0, 0,
2618 0, -736, -736, -736, -736, -310, 0, -736, 0, -736,
2619 0, -736, 0, -310, -310, -310, 0, 0, 0, -310,
2620 -310, 0, -310, 0, 0, 0, 0, 0, 0, 0,
2621 -310, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2622 0, 0, -310, -310, 0, -310, -310, -310, -310, -310,
2623 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2625 0, 0, 0, -310, 0, 0, 0, 0, 0, 0,
2626 0, 0, -310, -310, -310, -310, -310, -310, -310, -310,
2627 -310, -310, -310, -310, -310, 0, 0, 0, 0, -310,
2628 -310, -310, -310, 0, 692, 0, 0, 0, 0, 0,
2629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2630 0, 0, 0, 0, 0, -310, 0, 0, 0, 0,
2631 0, -118, -310, 0, -310, -310, -310, -310, -310, -310,
2632 -310, -310, -310, -310, 0, 0, 0, 0, 0, -310,
2633 -310, -109, -310, 0, -310, 0, -310, 0, -310, 0,
2634 -310, -310, -310, 0, 0, 0, -310, -310, 0, -310,
2635 0, 0, 0, 0, 0, 0, 0, -310, 0, 0,
2636 0, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2637 -310, 0, -310, -310, -310, -310, -310, 0, 0, 0,
2638 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2640 -310, 0, 0, 0, 0, 0, 0, 0, 0, -310,
2641 -310, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2642 -310, -310, 0, 0, 0, 0, -310, -310, -310, -310,
2643 0, 692, 0, 0, 0, 0, 0, 0, 0, 0,
2644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2645 0, 0, -310, 0, 0, 0, 0, 0, -118, -310,
2646 0, -310, -310, -310, -310, -310, -310, -310, -310, -310,
2647 -310, 0, 0, 0, 0, 0, -310, -310, -310, 0,
2648 0, -310, 0, -310, 257, -310, 5, 6, 7, 8,
2649 9, -759, -759, -759, 10, 11, 0, 0, -759, 12,
2650 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2651 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2652 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2653 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2654 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2655 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2657 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2658 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2659 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2660 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2662 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
2663 0, 0, 0, 0, -759, 257, -759, 5, 6, 7,
2664 8, 9, 0, 0, -759, 10, 11, 0, -759, -759,
2665 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
2666 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
2667 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
2668 29, 258, 31, 32, 33, 34, 35, 36, 37, 38,
2669 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
2670 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
2671 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2672 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
2673 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
2674 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
2675 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
2676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2677 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
2678 0, 0, 0, 0, 0, -759, 257, -759, 5, 6,
2679 7, 8, 9, 0, 0, -759, 10, 11, 0, 0,
2680 -759, 12, -759, 13, 14, 15, 16, 17, 18, 19,
2681 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
2682 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
2683 28, 29, 258, 31, 32, 33, 34, 35, 36, 37,
2684 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
2685 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2686 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2687 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2688 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
2689 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
2690 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2692 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
2693 0, 0, 0, 0, 0, 0, -759, 257, -759, 5,
2694 6, 7, 8, 9, 0, 0, -759, 10, 11, 0,
2695 0, -759, 12, 0, 13, 14, 15, 16, 17, 18,
2696 19, -759, 0, 0, 0, 0, 20, 21, 22, 23,
2697 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2698 0, 28, 29, 258, 31, 32, 33, 34, 35, 36,
2699 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2700 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2701 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2702 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2703 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2704 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2705 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2706 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2707 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
2708 0, 0, 0, 0, 0, 0, 0, -759, 257, -759,
2709 5, 6, 7, 8, 9, 0, 0, -759, 10, 11,
2710 0, 0, -759, 12, 0, 13, 14, 15, 16, 17,
2711 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
2712 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2713 0, 0, 28, 29, 258, 31, 32, 33, 34, 35,
2714 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2715 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2716 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2717 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2718 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
2719 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
2720 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2721 0, 0, 0, 0, 257, 0, 5, 6, 7, 8,
2722 9, 0, -759, -759, 10, 11, 67, 68, 69, 12,
2723 0, 13, 14, 15, 16, 17, 18, 19, -759, 0,
2724 -759, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2725 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2726 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2727 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2728 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2730 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2731 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2732 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2733 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2734 257, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2735 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2736 16, 17, 18, 19, -759, 0, -759, 0, 0, 20,
2737 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2738 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2739 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2740 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2741 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2742 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2743 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2744 259, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2745 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2747 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2748 69, 0, 0, 0, 0, 0, 0, 0, -759, 0,
2749 -759, 257, -759, 5, 6, 7, 8, 9, 0, 0,
2750 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
2751 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
2752 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
2753 0, 0, 0, 0, 0, 28, 29, 258, 31, 32,
2754 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
2755 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
2756 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
2757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2758 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
2759 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
2760 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
2761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2762 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
2763 68, 69, 0, 0, 0, 0, 0, 0, 0, -759,
2764 0, -759, 4, -759, 5, 6, 7, 8, 9, 0,
2765 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
2766 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
2767 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2768 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
2769 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2770 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2771 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2773 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
2774 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
2775 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2778 67, 68, 69, 0, 0, -759, 0, 0, 0, 0,
2779 0, 0, -759, 257, -759, 5, 6, 7, 8, 9,
2780 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
2781 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2782 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2783 0, 27, 0, 0, 0, 0, 0, 28, 29, 258,
2784 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
2785 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
2786 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
2787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2788 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
2789 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
2790 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
2791 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2793 0, 67, 68, 69, 0, 0, -759, 0, 0, 0,
2794 0, 0, 0, -759, 257, -759, 5, 6, 7, 8,
2795 9, 0, 0, -759, 10, 11, 0, 0, 0, 12,
2796 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2797 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2798 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2799 258, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2800 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2801 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2803 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2804 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2805 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2806 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2807 257, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2808 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2809 16, 17, 18, 19, -759, 0, -759, 0, 0, 20,
2810 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2811 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2812 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2813 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2814 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2815 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2816 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2817 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2818 59, 60, 61, 62, 63, 64, 65, 66, 0, -759,
2819 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
2820 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
2821 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
2822 -759, 0, -759, 0, 0, 20, 21, 22, 23, 24,
2823 25, 26, 0, 0, 206, 0, 0, 0, 0, 0,
2824 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
2825 38, 39, 40, 207, 41, 42, 43, 44, 45, 46,
2826 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2827 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
2828 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
2829 0, 0, 0, 208, 0, 0, 209, 54, 0, 55,
2830 56, 0, 210, 211, 212, 58, 59, 213, 61, 62,
2831 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
2832 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
2833 0, 0, 10, 11, 67, 214, 69, 12, 0, 13,
2834 14, 15, 16, 17, 18, 19, 0, 0, 237, 0,
2835 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
2836 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
2837 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
2838 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
2839 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
2840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2841 0, 50, 51, 0, 0, 0, 0, 0, 0, 208,
2842 0, 0, 209, 54, 0, 55, 56, 0, 0, 0,
2843 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
2844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2845 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
2846 67, 68, 69, 12, 0, 13, 14, 15, 16, 17,
2847 18, 19, 305, 0, 306, 0, 0, 20, 21, 22,
2848 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
2849 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
2850 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2851 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2852 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
2853 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
2854 0, 0, 0, 0, 0, 208, 0, 0, 209, 54,
2855 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2856 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2857 0, 0, 0, 0, 0, 0, 5, 6, 7, 8,
2858 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
2859 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
2860 237, 0, 0, 20, 21, 22, 23, 24, 25, 26,
2861 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
2862 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
2863 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
2864 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
2865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2866 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
2867 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
2868 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2869 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
2870 0, 0, 5, 6, 7, 8, 9, 0, 0, 0,
2871 10, 11, 67, 68, 69, 12, 0, 13, 14, 15,
2872 16, 17, 18, 19, 503, 0, 0, 0, 0, 20,
2873 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
2874 0, 0, 0, 0, 28, 29, 258, 31, 32, 33,
2875 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
2876 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
2877 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
2878 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
2879 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
2880 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
2881 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
2882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2883 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
2884 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2885 503, 126, 127, 128, 129, 130, 131, 132, 133, 134,
2886 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
2887 145, 146, 147, 148, 149, 0, 0, 0, 150, 151,
2888 152, 395, 396, 397, 398, 157, 158, 159, 0, 0,
2889 0, 0, 0, 160, 161, 162, 163, 399, 400, 401,
2890 402, 168, 37, 38, 403, 40, 0, 0, 0, 0,
2891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2892 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
2893 177, 178, 0, 0, 179, 180, 0, 0, 0, 0,
2894 181, 182, 183, 184, 0, 0, 0, 0, 0, 0,
2895 0, 0, 0, 0, 0, 185, 186, 0, 0, 0,
2896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2897 0, 0, 0, 0, 0, 0, 0, 187, 188, 189,
2898 190, 191, 192, 193, 194, 195, 196, 0, 197, 198,
2899 0, 0, 0, 0, 0, 199, 404, 126, 127, 128,
2900 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2901 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2902 149, 0, 0, 0, 150, 151, 152, 153, 154, 155,
2903 156, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2904 161, 162, 163, 164, 165, 166, 167, 168, 288, 289,
2905 169, 290, 0, 0, 0, 0, 0, 0, 0, 0,
2906 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2907 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2908 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2910 0, 185, 186, 0, 0, 0, 0, 0, 0, 0,
2911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2912 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2913 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2914 0, 199, 126, 127, 128, 129, 130, 131, 132, 133,
2915 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2916 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2917 151, 152, 153, 154, 155, 156, 157, 158, 159, 0,
2918 0, 0, 0, 0, 160, 161, 162, 163, 164, 165,
2919 166, 167, 168, 239, 0, 169, 0, 0, 0, 0,
2920 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2921 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2922 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2923 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2924 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2925 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2926 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2927 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2928 198, 0, 0, 0, 0, 0, 199, 126, 127, 128,
2929 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
2930 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
2931 149, 0, 0, 0, 150, 151, 152, 153, 154, 155,
2932 156, 157, 158, 159, 0, 0, 0, 0, 0, 160,
2933 161, 162, 163, 164, 165, 166, 167, 168, 0, 0,
2934 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2935 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
2936 171, 172, 173, 174, 175, 176, 177, 178, 0, 0,
2937 179, 180, 0, 0, 0, 0, 181, 182, 183, 184,
2938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2939 0, 185, 186, 0, 0, 59, 0, 0, 0, 0,
2940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2941 0, 0, 0, 187, 188, 189, 190, 191, 192, 193,
2942 194, 195, 196, 0, 197, 198, 0, 0, 0, 0,
2943 0, 199, 126, 127, 128, 129, 130, 131, 132, 133,
2944 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
2945 144, 145, 146, 147, 148, 149, 0, 0, 0, 150,
2946 151, 152, 153, 154, 155, 156, 157, 158, 159, 0,
2947 0, 0, 0, 0, 160, 161, 162, 163, 164, 165,
2948 166, 167, 168, 0, 0, 169, 0, 0, 0, 0,
2949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2950 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
2951 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
2952 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
2954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2955 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
2956 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
2957 198, 5, 6, 7, 0, 9, 199, 0, 0, 10,
2958 11, 0, 0, 0, 12, 0, 13, 14, 15, 245,
2959 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
2960 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
2961 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
2962 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
2963 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
2964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2966 0, 0, 0, 0, 0, 0, 278, 0, 0, 209,
2967 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
2968 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
2969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2970 5, 6, 7, 0, 9, 0, 0, 279, 10, 11,
2971 0, 0, 0, 12, 280, 13, 14, 15, 245, 246,
2972 18, 19, 0, 0, 0, 0, 0, 20, 247, 248,
2973 23, 24, 25, 26, 0, 0, 206, 0, 0, 0,
2974 0, 0, 0, 277, 0, 0, 32, 33, 34, 35,
2975 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
2976 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
2977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2979 0, 0, 0, 0, 0, 278, 0, 0, 209, 54,
2980 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
2981 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
2982 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
2983 6, 7, 8, 9, 0, 0, 279, 10, 11, 0,
2984 0, 0, 12, 526, 13, 14, 15, 16, 17, 18,
2985 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
2986 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
2987 0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
2988 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
2989 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
2990 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
2991 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
2992 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
2993 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
2994 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
2995 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
2996 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
2997 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
2998 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
2999 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3000 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3001 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3002 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3004 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3005 208, 0, 0, 209, 54, 0, 55, 56, 0, 210,
3006 211, 212, 58, 59, 213, 61, 62, 63, 64, 65,
3007 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3008 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3009 11, 67, 214, 69, 12, 0, 13, 14, 15, 16,
3010 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3011 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3012 0, 0, 0, 28, 29, 0, 31, 32, 33, 34,
3013 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3014 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3015 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3016 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3017 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3018 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3019 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3020 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3021 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3022 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3023 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3024 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3025 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3026 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3027 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3028 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3029 0, 0, 0, 0, 50, 439, 0, 0, 0, 0,
3030 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3031 0, 210, 211, 212, 58, 59, 213, 61, 62, 63,
3032 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3033 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3034 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3035 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3036 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3037 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3038 33, 34, 35, 36, 37, 38, 39, 40, 207, 41,
3039 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3040 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3042 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3043 0, 209, 54, 0, 55, 56, 0, 620, 211, 212,
3044 58, 59, 213, 61, 62, 63, 64, 65, 66, 0,
3045 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3046 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3047 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3048 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3049 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3050 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3051 37, 38, 39, 40, 207, 41, 42, 43, 44, 45,
3052 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3053 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3054 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3055 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3056 55, 56, 0, 210, 211, 0, 58, 59, 213, 61,
3057 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3058 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3059 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3060 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3061 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3062 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3063 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3064 207, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3065 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3067 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3068 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3069 211, 212, 58, 59, 213, 61, 62, 63, 64, 65,
3070 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3071 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3072 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3073 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3074 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3075 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3076 35, 36, 37, 38, 39, 40, 207, 41, 42, 43,
3077 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3078 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3079 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3080 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3081 54, 0, 55, 56, 0, 620, 211, 0, 58, 59,
3082 213, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3083 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3084 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3085 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3086 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3087 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3088 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3089 39, 40, 207, 41, 42, 43, 44, 45, 46, 47,
3090 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3091 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3092 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3093 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3094 0, 0, 211, 0, 58, 59, 213, 61, 62, 63,
3095 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3096 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3097 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3098 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3099 20, 21, 22, 23, 24, 25, 26, 0, 0, 206,
3100 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3101 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3102 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3103 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3105 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3106 0, 209, 54, 0, 55, 56, 0, 519, 0, 0,
3107 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3108 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3109 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3110 214, 69, 12, 0, 13, 14, 15, 245, 246, 18,
3111 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3112 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3113 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3114 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3115 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3116 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3117 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3118 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3119 55, 56, 0, 770, 0, 0, 58, 59, 60, 61,
3120 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3121 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3122 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3123 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3124 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3125 0, 206, 0, 0, 0, 0, 0, 0, 29, 0,
3126 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3127 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3128 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3130 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3131 208, 0, 0, 209, 54, 0, 55, 56, 0, 519,
3132 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3133 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3134 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3135 11, 67, 214, 69, 12, 0, 13, 14, 15, 245,
3136 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3137 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3138 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3139 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3140 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3141 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3142 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3143 0, 0, 0, 0, 0, 0, 208, 0, 0, 209,
3144 54, 0, 55, 56, 0, 843, 0, 0, 58, 59,
3145 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3146 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3147 0, 9, 0, 0, 0, 10, 11, 67, 214, 69,
3148 12, 0, 13, 14, 15, 245, 246, 18, 19, 0,
3149 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3150 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3151 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3152 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3153 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3154 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3155 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3156 0, 0, 208, 0, 0, 209, 54, 0, 55, 56,
3157 0, 1014, 0, 0, 58, 59, 60, 61, 62, 63,
3158 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3159 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3160 0, 10, 11, 67, 214, 69, 12, 0, 13, 14,
3161 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3162 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3163 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3164 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3165 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3166 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3168 50, 51, 0, 0, 0, 0, 0, 0, 208, 0,
3169 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3170 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3171 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3172 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3173 214, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3174 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3175 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3176 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3177 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3178 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3179 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3180 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3181 0, 0, 0, 0, 208, 0, 0, 209, 54, 0,
3182 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3183 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3184 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3185 0, 0, 0, 10, 11, 67, 214, 69, 12, 0,
3186 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3187 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3188 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
3189 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3190 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3191 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3193 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3194 208, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3195 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3196 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3197 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3198 11, 67, 68, 69, 12, 0, 13, 14, 15, 245,
3199 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3200 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3201 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3202 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3203 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3206 0, 0, 0, 0, 0, 0, 278, 0, 0, 328,
3207 54, 0, 55, 56, 0, 329, 0, 0, 58, 59,
3208 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3209 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3210 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3211 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3212 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3213 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3214 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3215 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3218 0, 0, 0, 0, 0, 0, 0, 0, 376, 0,
3219 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3220 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3221 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
3222 0, 0, 0, 10, 11, 0, 0, 0, 12, 279,
3223 13, 14, 15, 245, 246, 18, 19, 0, 0, 0,
3224 0, 0, 20, 247, 248, 23, 24, 25, 26, 0,
3225 0, 206, 0, 0, 0, 0, 0, 0, 277, 0,
3226 0, 32, 33, 34, 384, 36, 37, 38, 385, 40,
3227 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3230 0, 0, 0, 0, 0, 0, 386, 0, 0, 0,
3231 387, 0, 0, 209, 54, 0, 55, 56, 0, 0,
3232 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3233 66, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3234 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3235 12, 279, 13, 14, 15, 245, 246, 18, 19, 0,
3236 0, 0, 0, 0, 20, 247, 248, 23, 24, 25,
3237 26, 0, 0, 206, 0, 0, 0, 0, 0, 0,
3238 277, 0, 0, 32, 33, 34, 384, 36, 37, 38,
3239 385, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3243 0, 0, 387, 0, 0, 209, 54, 0, 55, 56,
3244 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3245 64, 65, 66, 0, 0, 0, 0, 0, 0, 5,
3246 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
3247 0, 0, 12, 279, 13, 14, 15, 245, 246, 18,
3248 19, 0, 0, 0, 0, 0, 20, 247, 248, 23,
3249 24, 25, 26, 0, 0, 206, 0, 0, 0, 0,
3250 0, 0, 277, 0, 0, 32, 33, 34, 35, 36,
3251 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3252 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3255 0, 0, 0, 0, 278, 0, 0, 328, 54, 0,
3256 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3257 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3258 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3259 11, 0, 0, 0, 12, 279, 13, 14, 15, 245,
3260 246, 18, 19, 0, 0, 0, 0, 0, 20, 247,
3261 248, 23, 24, 25, 26, 0, 0, 206, 0, 0,
3262 0, 0, 0, 0, 277, 0, 0, 32, 33, 34,
3263 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3264 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3267 0, 0, 0, 0, 0, 0, 1004, 0, 0, 209,
3268 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
3269 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3270 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3271 0, 10, 11, 0, 0, 0, 12, 279, 13, 14,
3272 15, 245, 246, 18, 19, 0, 0, 0, 0, 0,
3273 20, 247, 248, 23, 24, 25, 26, 0, 0, 206,
3274 0, 0, 0, 0, 0, 0, 277, 0, 0, 32,
3275 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3276 42, 43, 44, 45, 46, 47, 23, 24, 25, 26,
3277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3278 0, 0, 32, 33, 34, 781, 0, 0, 0, 782,
3279 0, 0, 41, 42, 43, 44, 45, 0, 1056, 0,
3280 0, 209, 54, 0, 55, 56, 0, 0, 0, 0,
3281 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3282 0, 0, 0, 783, 784, 0, 0, 0, 0, 0,
3283 0, 785, 0, 0, 786, 0, 0, 787, 788, 279,
3284 975, 0, 0, 789, 59, 60, 61, 62, 63, 64,
3285 65, 66, 23, 24, 25, 26, 0, 0, 0, 0,
3286 0, 0, 0, 0, 0, 790, 0, 0, 32, 33,
3287 34, 781, 279, 0, 0, 782, 0, 0, 41, 42,
3288 43, 44, 45, 0, 0, 23, 24, 25, 26, 0,
3289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3290 0, 32, 33, 34, 781, 0, 0, 0, 782, 783,
3291 784, 41, 42, 43, 44, 45, 0, 785, 0, 0,
3292 786, 0, 0, 787, 788, 0, 1071, 0, 0, 789,
3293 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3294 0, 0, 783, 784, 0, 0, 0, 0, 0, 0,
3295 785, 790, 0, 786, 0, 0, 787, 788, 279, 0,
3296 0, 0, 789, 59, 60, 61, 62, 63, 64, 65,
3297 66, 564, 565, 0, 0, 566, 0, 0, 0, 0,
3298 0, 0, 0, 0, 790, 0, 0, 0, 0, 0,
3299 0, 279, 0, 0, 170, 171, 172, 173, 174, 175,
3300 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3301 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3302 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3304 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3305 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3306 198, 572, 573, 0, 0, 574, 199, 233, 0, 0,
3307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3308 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3309 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3310 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3313 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3314 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3315 198, 624, 565, 0, 0, 625, 199, 233, 0, 0,
3316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3317 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3318 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3319 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3322 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3323 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3324 198, 627, 573, 0, 0, 628, 199, 233, 0, 0,
3325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3326 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3327 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3328 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3329 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3331 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3332 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3333 198, 652, 565, 0, 0, 653, 199, 233, 0, 0,
3334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3336 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3337 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3340 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3341 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3342 198, 655, 573, 0, 0, 656, 199, 233, 0, 0,
3343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3344 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3345 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3346 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3349 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3350 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3351 198, 722, 565, 0, 0, 723, 199, 233, 0, 0,
3352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3353 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3354 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3355 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3356 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3358 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3359 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3360 198, 725, 573, 0, 0, 726, 199, 233, 0, 0,
3361 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3362 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3363 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3364 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3365 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3367 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3368 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3369 198, 731, 565, 0, 0, 732, 199, 233, 0, 0,
3370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3371 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3372 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3373 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3374 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3376 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3377 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3378 198, 609, 573, 0, 0, 610, 199, 233, 0, 0,
3379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3381 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3382 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3385 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3386 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3387 198, 776, 565, 0, 0, 777, 199, 233, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3389 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3390 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3391 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3394 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3395 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3396 198, 779, 573, 0, 0, 780, 199, 233, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3398 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3399 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3400 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3401 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3403 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3404 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3405 198, 1154, 565, 0, 0, 1155, 199, 233, 0, 0,
3406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3407 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3408 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3409 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3410 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3412 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3413 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3414 198, 1157, 573, 0, 0, 1158, 199, 233, 0, 0,
3415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3416 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3417 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3418 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3419 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3421 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3422 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3423 198, 1188, 565, 0, 0, 1189, 199, 233, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3425 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3426 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3427 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3428 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3430 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3431 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3432 198, 609, 573, 0, 0, 610, 199, 233, 0, 0,
3433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3434 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
3435 176, 177, 178, 0, 0, 179, 180, 0, 0, 0,
3436 0, 181, 182, 183, 184, 0, 0, 0, 0, 0,
3437 0, 0, 0, 0, 0, 0, 185, 186, 0, 0,
3438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3439 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
3440 189, 190, 191, 192, 193, 194, 195, 196, 0, 197,
3441 198, 0, 0, 0, 0, 0, 199
3446 2, 369, 89, 60, 28, 57, 94, 102, 8, 227,
3447 710, 71, 22, 8, 101, 83, 433, 387, 53, 59,
3448 866, 331, 16, 17, 95, 91, 92, 71, 28, 95,
3449 67, 83, 68, 28, 2, 95, 4, 717, 57, 1066,
3450 26, 16, 17, 626, 96, 97, 98, 53, 16, 17,
3451 27, 603, 29, 55, 56, 1039, 473, 364, 25, 99,
3452 92, 55, 56, 95, 59, 425, 4, 13, 78, 893,
3453 894, 654, 482, 433, 2, 1062, 4, 271, 25, 52,
3454 1104, 275, 16, 17, 857, 53, 54, 27, 363, 57,
3455 365, 864, 29, 25, 25, 52, 295, 296, 958, 13,
3456 68, 25, 25, 100, 99, 1106, 100, 15, 25, 17,
3457 16, 17, 893, 894, 68, 83, 526, 126, 259, 331,
3458 1028, 55, 429, 91, 92, 100, 54, 95, 96, 97,
3459 98, 13, 100, 0, 26, 222, 411, 146, 25, 924,
3460 34, 724, 96, 97, 37, 38, 1054, 13, 13, 146,
3461 855, 734, 857, 428, 153, 430, 213, 143, 52, 864,
3462 414, 415, 148, 689, 251, 15, 100, 66, 66, 1196,
3463 236, 13, 238, 146, 209, 25, 866, 484, 730, 146,
3464 953, 148, 1028, 458, 1208, 1169, 123, 328, 1048, 146,
3465 261, 145, 13, 1039, 100, 778, 283, 1184, 68, 146,
3466 146, 261, 414, 415, 787, 151, 1207, 153, 1054, 244,
3467 485, 151, 280, 153, 146, 146, 1062, 261, 635, 221,
3468 119, 119, 146, 146, 259, 227, 444, 97, 280, 146,
3469 600, 233, 1013, 1018, 1019, 13, 230, 151, 232, 153,
3470 242, 209, 279, 143, 310, 311, 312, 313, 953, 315,
3471 316, 143, 855, 259, 857, 230, 56, 232, 233, 146,
3472 153, 864, 230, 866, 232, 233, 1174, 143, 236, 151,
3473 238, 153, 682, 633, 242, 635, 244, 329, 310, 311,
3474 312, 313, 148, 1191, 591, 151, 151, 153, 153, 257,
3475 326, 259, 379, 328, 601, 331, 230, 849, 232, 498,
3476 277, 500, 373, 25, 856, 371, 148, 152, 891, 151,
3477 329, 153, 280, 373, 242, 58, 1016, 592, 870, 1104,
3478 386, 1106, 328, 1169, 230, 109, 232, 602, 13, 257,
3479 151, 13, 153, 152, 77, 370, 1016, 372, 1184, 371,
3480 1164, 309, 310, 311, 312, 313, 314, 315, 316, 133,
3481 953, 877, 878, 866, 66, 100, 37, 38, 326, 68,
3482 328, 329, 364, 331, 1054, 108, 99, 893, 894, 112,
3483 365, 309, 1062, 151, 1064, 153, 100, 880, 414, 415,
3484 687, 309, 34, 151, 978, 153, 314, 25, 97, 364,
3485 893, 894, 326, 126, 977, 705, 364, 331, 366, 152,
3486 52, 146, 370, 371, 372, 623, 25, 783, 784, 121,
3487 122, 686, 124, 688, 482, 785, 411, 152, 386, 1002,
3488 1003, 236, 1207, 1208, 146, 1028, 148, 429, 452, 153,
3489 482, 425, 25, 97, 694, 430, 1039, 691, 692, 28,
3490 442, 701, 444, 697, 698, 862, 414, 415, 22, 264,
3491 537, 1054, 452, 268, 429, 649, 126, 452, 526, 1062,
3492 986, 429, 661, 458, 99, 99, 151, 666, 153, 151,
3493 13, 153, 684, 99, 526, 1069, 470, 845, 146, 691,
3494 692, 145, 484, 77, 148, 697, 698, 1013, 126, 144,
3495 485, 126, 126, 68, 1184, 1047, 1186, 465, 153, 99,
3496 126, 1191, 862, 1193, 78, 593, 126, 126, 146, 484,
3497 1013, 149, 888, 889, 482, 153, 484, 146, 1031, 99,
3498 890, 96, 97, 1036, 153, 585, 126, 146, 1031, 148,
3499 149, 899, 750, 126, 153, 1144, 904, 1237, 604, 1148,
3500 1230, 1054, 136, 137, 138, 1058, 581, 66, 583, 1062,
3501 1144, 1064, 99, 146, 1148, 1058, 149, 99, 526, 569,
3502 153, 99, 816, 942, 943, 99, 1169, 577, 112, 99,
3503 145, 1123, 638, 1156, 1077, 577, 553, 579, 146, 126,
3504 56, 1184, 650, 68, 126, 964, 965, 966, 126, 591,
3505 68, 1200, 126, 617, 571, 68, 126, 592, 650, 601,
3506 119, 611, 121, 122, 816, 1199, 1200, 602, 151, 611,
3507 153, 96, 97, 581, 682, 583, 591, 617, 96, 97,
3508 435, 623, 617, 591, 97, 440, 601, 148, 443, 126,
3509 682, 446, 66, 601, 66, 603, 604, 99, 1164, 633,
3510 68, 643, 100, 2, 739, 4, 66, 462, 684, 626,
3511 68, 25, 467, 866, 68, 691, 692, 16, 17, 146,
3512 145, 697, 698, 729, 126, 146, 866, 145, 728, 97,
3513 638, 1184, 153, 1186, 248, 249, 68, 654, 1191, 97,
3514 1193, 148, 650, 97, 66, 687, 153, 121, 122, 121,
3515 122, 146, 727, 688, 53, 54, 149, 729, 738, 119,
3516 153, 121, 122, 705, 706, 97, 708, 26, 710, 68,
3517 525, 679, 687, 99, 682, 683, 684, 1230, 152, 687,
3518 152, 68, 148, 691, 692, 1093, 82, 83, 518, 697,
3519 698, 68, 91, 92, 68, 1114, 95, 119, 146, 121,
3520 122, 100, 124, 738, 66, 153, 148, 724, 750, 68,
3521 97, 679, 126, 148, 68, 683, 1135, 734, 68, 727,
3522 97, 729, 730, 97, 9, 767, 150, 769, 834, 153,
3523 15, 705, 146, 129, 130, 149, 68, 96, 97, 153,
3524 816, 1088, 96, 97, 68, 52, 96, 97, 578, 56,
3525 850, 365, 68, 828, 584, 77, 586, 119, 833, 121,
3526 122, 778, 834, 52, 96, 97, 149, 56, 126, 68,
3527 787, 788, 96, 97, 1089, 150, 99, 144, 1031, 56,
3528 96, 97, 824, 146, 143, 77, 145, 106, 99, 148,
3529 146, 145, 867, 56, 148, 145, 77, 96, 97, 14,
3530 15, 1054, 151, 126, 130, 1058, 898, 25, 816, 1062,
3531 209, 1064, 66, 145, 1054, 126, 430, 146, 1058, 149,
3532 828, 145, 1062, 146, 1064, 833, 834, 902, 146, 145,
3533 144, 230, 144, 232, 233, 146, 911, 236, 146, 238,
3534 146, 849, 99, 242, 458, 244, 145, 68, 856, 866,
3535 99, 951, 10, 134, 135, 136, 137, 138, 257, 867,
3536 259, 144, 870, 88, 89, 119, 146, 121, 122, 126,
3537 962, 485, 54, 146, 891, 96, 97, 126, 44, 1006,
3538 146, 736, 64, 65, 44, 982, 40, 41, 718, 146,
3539 898, 721, 126, 8, 902, 13, 751, 146, 940, 25,
3540 942, 943, 999, 911, 17, 735, 152, 152, 144, 99,
3541 309, 310, 311, 312, 313, 314, 315, 316, 146, 68,
3542 128, 68, 964, 965, 966, 15, 150, 326, 148, 328,
3543 146, 1184, 331, 1186, 131, 1010, 126, 1012, 1191, 146,
3544 1193, 958, 26, 2, 1184, 4, 1186, 96, 97, 96,
3545 97, 1191, 52, 1193, 962, 569, 146, 16, 17, 100,
3546 977, 1053, 131, 577, 100, 364, 983, 366, 146, 1011,
3547 144, 370, 371, 372, 1016, 1050, 52, 1230, 592, 66,
3548 67, 26, 126, 146, 68, 1002, 1003, 386, 602, 146,
3549 1230, 68, 52, 146, 53, 54, 145, 611, 145, 52,
3550 146, 146, 1010, 131, 1012, 835, 126, 146, 838, 68,
3551 56, 841, 96, 97, 66, 414, 415, 146, 848, 96,
3552 97, 851, 146, 68, 146, 146, 414, 415, 642, 643,
3553 429, 1048, 91, 92, 121, 122, 95, 892, 146, 1047,
3554 151, 100, 1050, 431, 432, 1053, 1088, 9, 1090, 1124,
3555 1092, 96, 97, 68, 1089, 146, 1162, 1163, 68, 143,
3556 146, 145, 866, 131, 148, 56, 465, 119, 145, 121,
3557 122, 459, 1114, 1088, 688, 99, 931, 932, 58, 99,
3558 1088, 96, 97, 913, 146, 484, 96, 97, 146, 146,
3559 1162, 1163, 146, 1135, 52, 146, 146, 77, 143, 120,
3560 145, 149, 126, 148, 146, 66, 126, 146, 52, 146,
3561 54, 55, 56, 57, 58, 1123, 1124, 146, 146, 974,
3562 950, 146, 146, 146, 1141, 242, 146, 146, 108, 109,
3563 145, 144, 148, 77, 689, 145, 2, 148, 4, 1156,
3564 40, 41, 42, 43, 44, 1000, 1001, 146, 689, 146,
3565 209, 461, 77, 133, 1162, 1163, 465, 101, 119, 1234,
3566 121, 122, 96, 124, 108, 109, 98, 1022, 87, 94,
3567 95, 230, 611, 232, 233, 706, 1018, 236, 1092, 238,
3568 1104, 866, 581, 242, 583, 244, 1196, 53, 54, 133,
3569 769, 57, 591, 883, 740, 1237, 1237, 514, 257, 324,
3570 259, 887, 601, 1013, 603, 604, 131, 132, 133, 134,
3571 135, 136, 137, 138, 1077, 1077, 1090, 83, 885, 945,
3572 52, 947, 54, 55, 56, 57, 1234, 1077, 783, 784,
3573 96, 97, 98, 99, 1011, 1039, 105, 99, 1042, 638,
3574 500, 952, 783, 784, 855, 968, 969, 1102, 1054, 1031,
3575 309, 310, 311, 312, 313, 314, 315, 316, 1062, 77,
3576 1064, 1058, 1028, 54, 55, 983, 57, 326, -1, 328,
3577 -1, -1, 331, 64, 65, -1, 94, 95, -1, -1,
3578 679, -1, -1, -1, 683, 684, -1, -1, 687, -1,
3579 -1, 1121, 691, 692, 59, 60, 61, 62, 697, 698,
3580 -1, -1, -1, 691, 692, 364, -1, 366, -1, 697,
3581 698, 370, 371, 372, -1, 133, 134, 135, 136, 137,
3582 138, -1, 877, 878, -1, -1, -1, 386, 727, -1,
3583 729, 730, 887, 888, 889, -1, 877, 878, 893, 894,
3584 -1, -1, -1, 209, -1, -1, 887, 888, 889, -1,
3585 -1, 1181, 893, 894, -1, 414, 415, 745, 746, -1,
3586 748, 749, -1, -1, -1, 1169, -1, 1171, -1, -1,
3587 429, -1, 1176, -1, -1, -1, 242, -1, 244, -1,
3588 1184, -1, 1186, -1, 1110, 1111, -1, -1, -1, 1193,
3589 1116, 257, 1118, 259, 1120, -1, 689, 52, -1, 54,
3590 55, 56, 57, 58, -1, -1, 465, 1130, 1131, -1,
3591 -1, -1, -1, 1136, 280, 1138, 1139, 816, -1, -1,
3592 -1, 1225, 77, 978, -1, 484, 1230, -1, 816, 828,
3593 -1, 986, -1, -1, 833, 834, 52, 978, 54, 55,
3594 56, 57, -1, 309, -1, 986, 101, -1, 314, -1,
3595 849, -1, 107, 108, 109, -1, -1, 856, 1013, -1,
3596 -1, -1, 328, 329, -1, -1, -1, -1, 867, -1,
3597 -1, 870, 1013, 861, 2, 1089, 4, -1, 133, -1,
3598 -1, 136, -1, 1209, 1210, 1211, 1212, -1, -1, -1,
3599 783, 784, 1215, 1216, 1217, 1218, -1, -1, 153, -1,
3600 366, 77, -1, 902, 370, -1, 372, -1, -1, 1235,
3601 -1, -1, 911, 1236, 1069, -1, -1, -1, 94, 95,
3602 -1, -1, 581, -1, 583, 53, 54, -1, 1069, 57,
3603 -1, 52, 591, 54, 55, 56, 57, 58, -1, -1,
3604 -1, -1, 601, -1, 603, 604, -1, -1, -1, 52,
3605 -1, 54, 55, 56, 57, 83, 77, 56, 134, 135,
3606 136, 137, 138, -1, -1, -1, -1, -1, 96, 97,
3607 98, -1, 52, -1, 54, 55, 56, 57, -1, 638,
3608 101, -1, -1, -1, 877, 878, 107, 108, 109, 1144,
3609 -1, -1, -1, 1148, 887, 888, 889, -1, 101, 465,
3610 893, 894, -1, 1144, 107, -1, -1, 1148, -1, 1164,
3611 -1, 1010, 133, 1012, -1, 136, 482, -1, -1, -1,
3612 679, 101, -1, 1164, 683, 684, -1, 148, 687, -1,
3613 -1, -1, 691, 692, -1, -1, -1, -1, 697, 698,
3614 -1, -1, -1, -1, 1199, 1200, -1, -1, 1047, -1,
3615 -1, 1050, -1, -1, -1, -1, -1, -1, 1199, 1200,
3616 526, -1, -1, -1, -1, -1, -1, -1, 727, -1,
3617 729, 730, -1, -1, -1, -1, -1, -1, -1, -1,
3618 -1, 209, -1, -1, -1, 978, -1, -1, -1, 1088,
3619 -1, -1, -1, 986, -1, -1, -1, -1, 52, -1,
3620 54, 55, 56, 57, 58, -1, -1, -1, 207, -1,
3621 -1, 210, 211, 212, 242, 581, 244, 583, -1, -1,
3622 1013, -1, -1, 77, 1123, 1124, -1, -1, -1, 257,
3623 -1, 259, -1, -1, -1, -1, -1, 603, -1, -1,
3624 -1, -1, -1, -1, -1, -1, -1, 101, -1, -1,
3625 -1, -1, 280, 107, 108, 109, -1, 816, -1, 689,
3626 -1, -1, -1, 1162, 1163, -1, -1, -1, -1, 828,
3627 -1, -1, -1, -1, 833, 834, 1069, -1, -1, 133,
3628 -1, 309, 136, -1, 650, -1, 314, -1, -1, -1,
3629 849, -1, -1, -1, -1, -1, -1, 856, -1, -1,
3630 328, 329, -1, 331, -1, -1, -1, -1, 867, -1,
3631 -1, 870, -1, 679, -1, -1, 682, 683, -1, -1,
3632 -1, -1, -1, 689, -1, -1, -1, 326, -1, -1,
3633 -1, -1, 331, -1, -1, 1234, -1, -1, 366, -1,
3634 -1, -1, 370, 902, 372, -1, -1, -1, -1, -1,
3635 -1, 1144, 911, 783, 784, 1148, -1, -1, -1, -1,
3636 -1, 727, -1, -1, 730, -1, -1, -1, -1, -1,
3637 -1, 1164, -1, -1, -1, -1, -1, -1, -1, -1,
3638 -1, -1, -1, -1, -1, -1, 414, 415, -1, 52,
3639 -1, 54, 55, 56, 57, 58, -1, -1, -1, -1,
3640 -1, -1, -1, -1, -1, -1, 1199, 1200, -1, -1,
3641 -1, -1, -1, -1, 77, -1, -1, 783, 784, -1,
3642 -1, -1, -1, -1, -1, 424, 425, -1, 91, -1,
3643 -1, -1, -1, -1, 433, -1, -1, 465, 101, -1,
3644 -1, -1, -1, -1, 107, 108, 109, 877, 878, -1,
3645 -1, 1010, -1, 1012, 482, -1, -1, 887, 888, 889,
3646 -1, -1, 828, 893, 894, -1, -1, 833, -1, -1,
3647 133, 470, -1, 136, 473, -1, -1, -1, -1, -1,
3648 -1, -1, 2, 849, 4, -1, -1, -1, 1047, -1,
3649 856, 1050, -1, -1, -1, -1, -1, -1, 526, -1,
3650 -1, 867, -1, -1, 870, -1, -1, -1, -1, -1,
3651 -1, 877, 878, -1, -1, -1, -1, -1, -1, -1,
3652 519, 887, 888, 889, -1, -1, -1, 893, 894, 1088,
3653 -1, -1, 898, 53, 54, -1, 902, 57, -1, -1,
3654 -1, -1, -1, 689, -1, 911, -1, -1, 978, -1,
3655 -1, -1, -1, 581, -1, 583, 986, -1, -1, -1,
3656 -1, -1, -1, 83, 1123, 1124, -1, -1, -1, -1,
3657 -1, -1, -1, -1, -1, 603, 96, 97, 98, 99,
3658 -1, -1, -1, 1013, -1, -1, -1, -1, -1, -1,
3659 -1, -1, -1, -1, -1, -1, 962, 689, -1, -1,
3660 -1, -1, -1, 1162, 1163, -1, -1, -1, -1, -1,
3661 -1, -1, 978, -1, -1, -1, -1, -1, -1, 618,
3662 986, 620, 650, -1, -1, -1, -1, -1, -1, -1,
3663 -1, 659, -1, -1, 633, -1, 635, 783, 784, 1069,
3664 -1, -1, -1, -1, 1010, -1, 1012, 1013, -1, -1,
3665 -1, 679, -1, -1, 682, 683, 684, -1, -1, -1,
3666 -1, -1, -1, 691, 692, -1, -1, -1, -1, 697,
3667 698, -1, -1, -1, 2, 1234, 4, -1, -1, 678,
3668 -1, 1047, -1, -1, 1050, -1, -1, 1053, -1, 209,
3669 -1, 783, 784, -1, -1, -1, -1, -1, 2, 727,
3670 4, -1, 730, 1069, -1, -1, 705, -1, -1, -1,
3671 -1, -1, -1, -1, 1144, -1, -1, -1, 1148, -1,
3672 -1, 720, 242, -1, 244, 53, 54, -1, -1, -1,
3673 -1, 877, 878, -1, 1164, -1, -1, 257, -1, 259,
3674 -1, 887, 888, 889, -1, -1, -1, 893, 894, 53,
3675 54, -1, -1, -1, -1, -1, -1, 1123, 1124, -1,
3676 280, 689, -1, -1, -1, -1, -1, -1, 96, 1199,
3677 1200, 770, -1, -1, -1, -1, -1, -1, 1144, -1,
3678 -1, -1, 1148, -1, -1, 877, 878, -1, 816, 309,
3679 -1, -1, -1, -1, 314, 887, 888, 889, 1164, -1,
3680 828, 893, 894, -1, -1, 833, -1, -1, 328, 329,
3681 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3682 -1, 849, -1, -1, -1, -1, -1, -1, 856, -1,
3683 -1, -1, 978, 1199, 1200, -1, -1, -1, -1, 867,
3684 986, -1, 870, -1, 843, -1, 366, -1, -1, -1,
3685 370, -1, 372, -1, -1, 783, 784, -1, -1, -1,
3686 -1, -1, -1, 862, -1, -1, -1, 1013, 1234, -1,
3687 898, -1, -1, -1, 902, -1, -1, -1, -1, -1,
3688 -1, 209, -1, 911, -1, -1, 978, -1, -1, -1,
3689 -1, -1, -1, 689, 986, -1, -1, -1, -1, -1,
3690 -1, -1, -1, -1, -1, 209, -1, -1, -1, -1,
3691 -1, 910, -1, -1, 242, -1, 244, -1, -1, -1,
3692 -1, 1013, -1, 1069, -1, -1, -1, -1, -1, 257,
3693 -1, 259, -1, -1, 962, -1, -1, -1, 242, 938,
3694 244, -1, -1, -1, -1, 465, -1, -1, -1, 877,
3695 878, -1, -1, 257, -1, 259, -1, -1, -1, 887,
3696 888, 889, 482, -1, -1, 893, 894, -1, -1, -1,
3697 -1, -1, -1, -1, -1, -1, -1, 1069, -1, -1,
3698 -1, 309, 1010, -1, 1012, -1, 314, 783, 784, -1,
3699 -1, -1, -1, -1, -1, -1, -1, -1, 1144, -1,
3700 328, -1, 1148, 331, -1, 309, 526, -1, -1, -1,
3701 314, -1, -1, -1, -1, 1014, -1, -1, 1164, 1047,
3702 -1, -1, 1050, -1, 328, 1053, -1, 331, 1027, -1,
3703 -1, -1, -1, -1, -1, -1, -1, -1, 366, -1,
3704 -1, -1, 370, -1, 372, -1, -1, -1, -1, -1,
3705 978, -1, 1144, 1199, 1200, -1, 1148, -1, 986, -1,
3706 -1, 581, 366, 583, -1, -1, 370, -1, 372, -1,
3707 -1, -1, 1164, -1, -1, -1, -1, -1, -1, -1,
3708 -1, 877, 878, 603, -1, 1013, 414, 415, -1, -1,
3709 -1, 887, 888, 889, -1, 1123, 1124, 893, 894, -1,
3710 -1, -1, -1, -1, -1, -1, -1, 1199, 1200, -1,
3711 414, 415, -1, -1, -1, -1, -1, -1, -1, -1,
3712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3713 650, -1, -1, -1, -1, -1, -1, 465, -1, 25,
3714 -1, 1069, -1, 0, -1, -1, -1, -1, -1, -1,
3715 -1, 8, 9, 10, -1, -1, 13, 14, 15, 679,
3716 17, 465, 682, 683, -1, -1, -1, -1, 25, 26,
3717 27, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3718 37, 38, 978, 40, 41, 42, 43, 44, -1, -1,
3719 986, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3720 86, 87, 88, 89, -1, -1, 1234, 727, 94, 95,
3721 730, 68, -1, -1, -1, -1, 1144, 1013, -1, -1,
3722 1148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3723 -1, -1, -1, -1, -1, -1, 1164, -1, -1, 96,
3724 97, 127, -1, 129, 130, 131, 132, 133, 134, 135,
3725 136, 137, 138, 581, -1, 583, -1, -1, -1, -1,
3726 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
3727 -1, 1199, 1200, 1069, -1, 603, -1, 581, -1, 583,
3728 -1, -1, -1, -1, -1, -1, 143, 144, -1, -1,
3729 -1, 148, 149, -1, 151, -1, 153, -1, -1, 603,
3730 -1, -1, -1, -1, -1, -1, -1, -1, 828, -1,
3731 -1, -1, -1, 833, -1, -1, -1, -1, -1, -1,
3732 -1, -1, -1, -1, -1, -1, -1, -1, -1, 849,
3733 -1, -1, -1, -1, -1, -1, 856, -1, -1, -1,
3734 -1, -1, -1, -1, -1, -1, -1, 867, 1144, -1,
3735 870, 679, 1148, -1, -1, 683, 684, -1, -1, -1,
3736 -1, -1, -1, 691, 692, -1, -1, -1, 1164, 697,
3737 698, -1, -1, -1, -1, 679, -1, -1, 898, 683,
3738 684, -1, 902, -1, -1, -1, -1, 691, 692, -1,
3739 -1, 911, -1, 697, 698, -1, -1, -1, -1, 727,
3740 -1, -1, 730, 1199, 1200, -1, -1, -1, -1, -1,
3741 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3742 -1, -1, -1, 727, -1, -1, 730, -1, -1, -1,
3743 16, 17, -1, -1, -1, -1, -1, -1, -1, -1,
3744 -1, -1, 962, -1, -1, -1, -1, -1, -1, -1,
3745 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3746 -1, -1, 48, 49, 50, 51, -1, -1, -1, 55,
3747 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3748 -1, -1, 68, 69, -1, -1, -1, -1, 816, -1,
3749 1010, -1, 1012, -1, -1, -1, -1, -1, -1, -1,
3750 828, -1, -1, -1, -1, 833, -1, -1, -1, -1,
3751 -1, -1, 816, -1, 100, -1, -1, -1, -1, -1,
3752 -1, 849, -1, -1, 828, -1, -1, 1047, 856, 833,
3753 1050, -1, -1, 1053, -1, -1, -1, -1, -1, 867,
3754 -1, -1, 870, -1, -1, 849, -1, -1, -1, -1,
3755 -1, -1, 856, -1, -1, -1, -1, -1, -1, -1,
3756 -1, -1, -1, 867, -1, -1, 870, -1, -1, -1,
3757 898, -1, -1, -1, 902, -1, -1, -1, -1, -1,
3758 -1, -1, -1, 911, 33, 34, 35, 36, -1, -1,
3759 -1, -1, -1, -1, -1, -1, -1, -1, 902, -1,
3760 49, 50, 51, 1123, 1124, -1, -1, 911, -1, -1,
3761 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
3762 -1, 207, -1, -1, 210, 211, 212, -1, 214, -1,
3763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3764 -1, -1, -1, -1, 230, -1, 232, 233, -1, -1,
3765 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3766 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3767 -1, 77, 78, 79, 80, 81, 82, 83, 84, -1,
3768 86, 87, 1010, -1, 1012, -1, -1, -1, 94, 95,
3769 139, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3770 -1, -1, -1, -1, -1, -1, 1010, -1, 1012, -1,
3771 -1, -1, -1, -1, 1234, -1, -1, -1, -1, 1047,
3772 -1, -1, 1050, 129, 130, 131, 132, 133, 134, 135,
3773 136, 137, 138, -1, -1, -1, -1, -1, -1, -1,
3774 326, -1, -1, 1047, -1, 331, 1050, 333, 334, 335,
3775 336, 337, -1, -1, 340, 341, 342, 343, 344, 345,
3776 346, 347, 348, -1, -1, 351, 352, 353, 354, 355,
3777 356, 357, 358, 359, 360, -1, -1, -1, 364, -1,
3778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3779 -1, -1, -1, -1, -1, 1123, 1124, -1, -1, -1,
3780 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3781 83, 84, 85, 86, 87, 88, 89, -1, -1, 1123,
3782 1124, 94, 95, -1, -1, -1, -1, -1, 414, 415,
3783 -1, -1, -1, -1, -1, -1, -1, 423, 424, 425,
3784 -1, -1, -1, 429, -1, 431, 432, 433, -1, -1,
3785 -1, -1, -1, 439, 127, -1, 129, 130, 131, 132,
3786 133, 134, 135, 136, 137, 138, -1, -1, 454, -1,
3787 -1, -1, -1, 459, -1, -1, -1, -1, -1, -1,
3788 153, -1, -1, -1, 470, -1, -1, 473, -1, -1,
3789 -1, -1, -1, -1, -1, -1, -1, -1, 484, -1,
3790 -1, -1, -1, -1, -1, -1, 1234, -1, -1, -1,
3791 -1, -1, -1, -1, -1, -1, 502, 77, 78, 79,
3792 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3793 1234, -1, -1, 519, 94, 95, -1, -1, -1, -1,
3794 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
3795 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
3796 -1, -1, -1, -1, -1, -1, -1, 25, 26, 129,
3797 130, 131, 132, 133, 134, 135, 136, 137, 138, 37,
3798 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3800 -1, -1, -1, -1, -1, 591, -1, -1, -1, -1,
3801 68, -1, -1, -1, -1, 601, -1, -1, -1, 77,
3802 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3803 88, 89, 618, -1, 620, -1, 94, 95, 96, 97,
3804 -1, 99, -1, -1, -1, -1, -1, 633, -1, 635,
3805 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3806 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
3807 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3808 138, -1, -1, -1, -1, 143, 144, 145, 146, -1,
3809 -1, 149, 678, 151, -1, 153, -1, -1, 684, 685,
3810 -1, 687, -1, -1, -1, 691, 692, -1, -1, -1,
3811 -1, 697, 698, -1, 33, 34, 35, 36, -1, 705,
3812 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3813 49, 50, 51, 52, 720, -1, -1, 56, -1, 58,
3814 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
3815 -1, -1, -1, -1, -1, -1, -1, -1, 77, 745,
3816 746, -1, 748, 749, -1, -1, -1, -1, -1, -1,
3817 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
3818 -1, -1, 101, -1, 770, 104, 105, -1, 107, 108,
3819 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
3820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3821 -1, -1, -1, 132, -1, -1, -1, -1, -1, -1,
3822 139, -1, -1, 809, -1, -1, -1, -1, -1, -1,
3823 816, -1, 0, 1, -1, 3, 4, 5, 6, 7,
3824 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
3825 18, 19, 20, 21, 22, 23, 24, 843, -1, -1,
3826 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
3827 -1, 39, -1, -1, -1, 861, 862, 45, 46, 47,
3828 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
3829 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
3830 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
3831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3832 -1, -1, 90, 91, 910, -1, -1, -1, -1, -1,
3833 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
3834 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
3835 118, -1, 938, -1, -1, -1, -1, -1, -1, -1,
3836 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3837 -1, 139, 140, 141, -1, -1, -1, -1, 0, -1,
3838 -1, -1, -1, 151, -1, 153, 8, 9, 10, -1,
3839 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
3840 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
3841 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3842 42, 43, 44, -1, -1, -1, -1, -1, 1014, -1,
3843 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3844 -1, 1027, 86, 87, -1, -1, 68, -1, -1, -1,
3845 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
3846 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3847 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
3848 -1, -1, -1, -1, 106, 129, 130, 131, 132, 133,
3849 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
3850 -1, 123, 1088, -1, 126, 127, 128, 129, 130, 131,
3851 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3852 -1, 143, 144, 145, 146, 0, -1, 149, 150, 151,
3853 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
3854 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
3855 25, -1, 27, 28, 29, -1, -1, -1, -1, -1,
3856 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
3857 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3858 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3859 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
3860 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
3861 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
3862 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
3863 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
3864 137, 138, -1, -1, -1, 120, -1, -1, 123, 146,
3865 -1, 126, 127, 128, 129, 130, 131, 132, 133, 134,
3866 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
3867 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
3868 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
3869 -1, -1, -1, -1, 44, -1, -1, 25, -1, 27,
3870 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
3871 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
3872 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3873 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3874 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
3875 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
3876 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
3877 -1, 99, 100, -1, -1, -1, -1, 127, 106, 129,
3878 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3879 -1, -1, 120, -1, -1, 123, -1, -1, 126, 127,
3880 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3881 138, -1, -1, -1, -1, -1, 144, 145, 146, 0,
3882 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
3883 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
3884 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
3885 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
3886 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
3887 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3888 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
3889 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
3890 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
3891 -1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
3892 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
3893 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
3894 -1, -1, 123, -1, -1, -1, 127, 128, 129, 130,
3895 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
3896 -1, -1, 143, 144, 145, 146, 0, -1, 149, 150,
3897 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
3898 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
3899 -1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
3900 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
3901 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3902 -1, 77, 78, 79, 80, 81, 82, 83, -1, -1,
3903 86, 87, -1, -1, 68, -1, -1, -1, 94, 95,
3904 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
3905 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
3906 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
3907 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
3908 136, 137, 138, -1, -1, -1, 120, -1, -1, 123,
3909 -1, -1, -1, 127, 128, 129, 130, 131, 132, 133,
3910 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
3911 144, 145, 146, 0, -1, 149, 150, 151, -1, 153,
3912 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
3913 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
3914 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
3915 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
3916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3917 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3918 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
3919 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
3920 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
3921 97, -1, 99, 100, -1, -1, -1, -1, -1, 106,
3922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3923 -1, -1, -1, 120, -1, -1, 123, -1, -1, 126,
3924 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
3925 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
3926 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
3927 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
3928 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
3929 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
3930 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
3931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3932 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
3933 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
3934 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
3935 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
3936 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
3937 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3938 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
3939 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
3940 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
3941 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
3942 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
3943 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
3944 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
3945 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
3946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3947 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
3948 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
3949 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
3950 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
3951 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
3952 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
3953 123, -1, -1, -1, 127, 128, 129, 130, 131, 132,
3954 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
3955 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
3956 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
3957 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
3958 26, 27, 28, -1, -1, -1, -1, -1, -1, -1,
3959 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
3960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3961 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3962 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
3963 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
3964 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
3965 96, 97, -1, -1, 100, -1, -1, -1, -1, -1,
3966 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3967 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
3968 -1, 127, -1, 129, 130, 131, 132, 133, 134, 135,
3969 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
3970 146, 0, 148, 149, 150, 151, -1, 153, -1, 8,
3971 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
3972 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
3973 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
3974 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
3975 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3976 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
3977 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
3978 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
3979 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
3980 -1, 100, -1, -1, -1, -1, -1, 106, -1, -1,
3981 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3982 -1, 120, -1, -1, -1, -1, -1, -1, 127, -1,
3983 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3984 -1, -1, -1, -1, -1, 144, 145, 146, 0, 148,
3985 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
3986 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
3987 -1, -1, -1, 25, 26, -1, -1, -1, -1, -1,
3988 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
3989 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
3990 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3991 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
3992 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
3993 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
3994 -1, -1, 94, 95, 96, 97, -1, 99, -1, -1,
3995 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
3996 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
3997 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
3998 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
3999 -1, 143, 144, 145, 146, 0, -1, 149, -1, 151,
4000 -1, 153, -1, 8, 9, 10, -1, -1, -1, 14,
4001 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4002 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4003 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4004 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4005 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4006 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4007 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4008 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4009 95, 96, 97, -1, 99, -1, -1, -1, -1, -1,
4010 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4011 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4012 -1, 126, 127, -1, 129, 130, 131, 132, 133, 134,
4013 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4014 145, 146, 0, -1, 149, -1, 151, -1, 153, -1,
4015 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
4016 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
4017 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4018 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4020 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4021 68, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4022 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4023 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4024 -1, 99, -1, -1, -1, -1, -1, -1, -1, -1,
4025 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4026 -1, -1, 120, -1, -1, -1, -1, -1, 126, 127,
4027 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4028 138, -1, -1, -1, -1, -1, 144, 145, 146, -1,
4029 -1, 149, -1, 151, 1, 153, 3, 4, 5, 6,
4030 7, 8, 9, 10, 11, 12, -1, -1, 15, 16,
4031 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4032 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4033 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4034 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4035 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4036 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4038 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4039 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4040 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4041 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4042 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4043 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4044 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4045 6, 7, -1, -1, 10, 11, 12, -1, 14, 15,
4046 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4047 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4048 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4049 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4050 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4051 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4052 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4053 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4054 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4055 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4056 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4058 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4059 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4060 5, 6, 7, -1, -1, 10, 11, 12, -1, -1,
4061 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
4062 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4063 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4064 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4065 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4066 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4067 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4068 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4069 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4070 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4071 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4072 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4073 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
4074 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4075 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4076 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
4077 24, 25, -1, -1, -1, -1, 30, 31, 32, 33,
4078 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4079 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4080 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4081 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4082 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4083 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4084 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4085 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4086 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4088 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4089 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4090 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4091 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
4092 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4093 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4094 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4095 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4096 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4097 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4098 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4099 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4100 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4101 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4102 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
4103 7, -1, 9, 10, 11, 12, 139, 140, 141, 16,
4104 -1, 18, 19, 20, 21, 22, 23, 24, 151, -1,
4105 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4106 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4107 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4108 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4109 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4111 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4112 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4113 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4114 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4115 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4116 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4117 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4118 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4119 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4120 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4121 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4122 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4123 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4124 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4125 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4126 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4128 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4129 141, -1, -1, -1, -1, -1, -1, -1, 149, -1,
4130 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4131 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
4132 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4133 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4134 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4135 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4136 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4137 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4138 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4139 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4140 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4141 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4143 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4144 140, 141, -1, -1, -1, -1, -1, -1, -1, 149,
4145 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
4146 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
4147 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
4148 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4149 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
4150 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4151 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4152 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4153 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4154 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4155 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
4156 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4159 139, 140, 141, -1, -1, 144, -1, -1, -1, -1,
4160 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4161 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
4162 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4163 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4164 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4165 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4166 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4167 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4169 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4170 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4171 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4172 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4174 -1, 139, 140, 141, -1, -1, 144, -1, -1, -1,
4175 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4176 7, -1, -1, 10, 11, 12, -1, -1, -1, 16,
4177 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4178 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4179 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4180 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4181 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4182 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4183 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4184 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4185 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4186 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4187 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4188 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4189 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4190 21, 22, 23, 24, 151, -1, 153, -1, -1, 30,
4191 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4192 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4193 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4194 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4195 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4196 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4197 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4198 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4199 111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
4200 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
4201 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
4202 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4203 151, -1, 153, -1, -1, 30, 31, 32, 33, 34,
4204 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4205 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
4206 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
4207 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4208 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4209 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4210 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4211 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
4212 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4213 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
4214 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
4215 19, 20, 21, 22, 23, 24, -1, -1, 153, -1,
4216 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
4217 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
4218 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
4219 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
4220 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
4221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4222 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
4223 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
4224 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
4225 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4226 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
4227 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
4228 23, 24, 151, -1, 153, -1, -1, 30, 31, 32,
4229 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4230 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4231 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4232 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4233 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4234 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4235 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4236 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4237 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4238 -1, -1, -1, -1, -1, -1, 3, 4, 5, 6,
4239 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
4240 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4241 153, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4242 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4243 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4244 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4245 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4246 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4247 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4248 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4249 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4250 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4251 -1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
4252 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
4253 21, 22, 23, 24, 151, -1, -1, -1, -1, 30,
4254 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4255 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4256 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4257 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4258 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4259 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4260 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4261 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4262 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4264 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4265 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4266 151, 3, 4, 5, 6, 7, 8, 9, 10, 11,
4267 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
4268 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
4269 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
4270 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4271 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
4272 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4273 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
4274 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
4275 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
4276 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
4277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4278 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
4279 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
4280 -1, -1, -1, -1, -1, 147, 148, 3, 4, 5,
4281 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4282 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4283 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4284 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4285 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4286 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
4287 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4288 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4289 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4291 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
4292 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4293 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4294 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4295 -1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
4296 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4297 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4298 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4299 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4300 51, 52, 53, 54, -1, 56, -1, -1, -1, -1,
4301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4302 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4303 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4304 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4305 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4306 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4307 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4308 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4309 141, -1, -1, -1, -1, -1, 147, 3, 4, 5,
4310 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
4311 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4312 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4313 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
4314 46, 47, 48, 49, 50, 51, 52, 53, -1, -1,
4315 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4316 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4317 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4318 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
4319 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4320 -1, 107, 108, -1, -1, 111, -1, -1, -1, -1,
4321 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4322 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
4323 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
4324 -1, 147, 3, 4, 5, 6, 7, 8, 9, 10,
4325 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
4326 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
4327 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
4328 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4329 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4330 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4331 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4332 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4333 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4334 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4335 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4336 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4337 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4338 141, 3, 4, 5, -1, 7, 147, -1, -1, 11,
4339 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
4340 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4341 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4342 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4343 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4344 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4347 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4348 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4349 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4350 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4351 3, 4, 5, -1, 7, -1, -1, 139, 11, 12,
4352 -1, -1, -1, 16, 146, 18, 19, 20, 21, 22,
4353 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4354 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4355 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
4356 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4357 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4358 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4359 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4360 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4361 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
4362 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4363 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4364 4, 5, 6, 7, -1, -1, 139, 11, 12, -1,
4365 -1, -1, 16, 146, 18, 19, 20, 21, 22, 23,
4366 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4367 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4368 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4369 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4370 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4371 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4372 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4373 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4374 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4375 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4376 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4377 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4378 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4379 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4380 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4381 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4382 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4383 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4385 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4386 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4387 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
4388 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4389 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
4390 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4391 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4392 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4393 -1, -1, -1, 45, 46, -1, 48, 49, 50, 51,
4394 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4395 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4396 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4397 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4398 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4399 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4400 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4401 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4402 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4403 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4404 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4405 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4406 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4407 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4408 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4409 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4410 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4411 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4412 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
4413 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4414 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4415 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4416 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4417 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4418 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4419 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
4420 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4421 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4423 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4424 -1, 101, 102, -1, 104, 105, -1, 107, 108, 109,
4425 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4426 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4427 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4428 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4429 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4430 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4431 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4432 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
4433 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4434 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4435 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4436 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4437 104, 105, -1, 107, 108, -1, 110, 111, 112, 113,
4438 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4439 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4440 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4441 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4442 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4443 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4444 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4445 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4446 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4448 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4449 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4450 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
4451 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4452 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4453 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4454 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4455 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4456 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4457 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4458 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4459 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4460 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4461 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4462 102, -1, 104, 105, -1, 107, 108, -1, 110, 111,
4463 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4464 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4465 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4466 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4467 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4468 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4469 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4470 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4471 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4472 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4473 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4474 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4475 -1, -1, 108, -1, 110, 111, 112, 113, 114, 115,
4476 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4477 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4478 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4479 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4480 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4481 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4482 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4483 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4484 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4486 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4487 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4488 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4489 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4490 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4491 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4492 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4493 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4494 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4495 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4496 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4497 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4498 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4499 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4500 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4501 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4502 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4503 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4504 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4505 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4506 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4507 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4508 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4509 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4511 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4512 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4513 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4514 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4515 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4516 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4517 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4518 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4519 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4520 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4521 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4522 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4523 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4524 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4525 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4526 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4527 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4528 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4529 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4530 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4531 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4532 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4533 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4534 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4535 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4536 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4537 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4538 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4539 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4540 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4541 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4542 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4543 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4544 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4545 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4546 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4547 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4549 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4550 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4551 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4552 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4553 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
4554 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4555 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4556 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4557 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4558 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4559 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4560 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4561 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4562 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4563 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4564 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4565 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4566 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4567 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4568 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4569 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4570 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4571 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4572 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4574 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4575 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4576 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4577 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4578 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4579 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4580 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4581 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4582 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4583 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4584 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4585 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4587 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4588 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4589 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4590 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4591 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4592 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4593 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4594 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4595 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4596 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4599 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
4600 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4601 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4602 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
4603 -1, -1, -1, 11, 12, -1, -1, -1, 16, 139,
4604 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4605 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4606 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
4607 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4608 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4609 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4611 -1, -1, -1, -1, -1, -1, 94, -1, -1, -1,
4612 98, -1, -1, 101, 102, -1, 104, 105, -1, -1,
4613 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4614 118, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4615 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4616 16, 139, 18, 19, 20, 21, 22, 23, 24, -1,
4617 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4618 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4619 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4620 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4624 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4625 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4626 116, 117, 118, -1, -1, -1, -1, -1, -1, 3,
4627 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
4628 -1, -1, 16, 139, 18, 19, 20, 21, 22, 23,
4629 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4630 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4631 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
4632 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4633 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4636 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4637 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
4638 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4639 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4640 12, -1, -1, -1, 16, 139, 18, 19, 20, 21,
4641 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4642 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4643 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4644 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4645 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4646 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4648 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4649 102, -1, 104, 105, -1, -1, -1, -1, 110, 111,
4650 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4651 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4652 -1, 11, 12, -1, -1, -1, 16, 139, 18, 19,
4653 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4654 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4655 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4656 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4657 60, 61, 62, 63, 64, 65, 33, 34, 35, 36,
4658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4659 -1, -1, 49, 50, 51, 52, -1, -1, -1, 56,
4660 -1, -1, 59, 60, 61, 62, 63, -1, 98, -1,
4661 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4662 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4663 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4664 -1, 98, -1, -1, 101, -1, -1, 104, 105, 139,
4665 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4666 117, 118, 33, 34, 35, 36, -1, -1, -1, -1,
4667 -1, -1, -1, -1, -1, 132, -1, -1, 49, 50,
4668 51, 52, 139, -1, -1, 56, -1, -1, 59, 60,
4669 61, 62, 63, -1, -1, 33, 34, 35, 36, -1,
4670 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4671 -1, 49, 50, 51, 52, -1, -1, -1, 56, 90,
4672 91, 59, 60, 61, 62, 63, -1, 98, -1, -1,
4673 101, -1, -1, 104, 105, -1, 107, -1, -1, 110,
4674 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4675 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4676 98, 132, -1, 101, -1, -1, 104, 105, 139, -1,
4677 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4678 118, 52, 53, -1, -1, 56, -1, -1, -1, -1,
4679 -1, -1, -1, -1, 132, -1, -1, -1, -1, -1,
4680 -1, 139, -1, -1, 75, 76, 77, 78, 79, 80,
4681 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4682 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4683 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4685 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4686 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4687 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4688 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4689 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4690 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4691 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4692 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4694 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4695 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4696 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4697 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4698 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4699 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4700 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4701 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4702 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4703 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4704 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4705 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4707 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4708 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4709 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4710 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4712 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4713 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4714 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4716 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4717 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4718 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4719 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4721 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4722 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4723 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4724 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4725 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4726 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4727 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4728 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4730 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4731 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4732 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4733 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4734 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4735 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4736 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4737 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4738 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4739 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4740 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4741 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4743 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4744 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4745 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4746 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4748 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4749 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4750 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4751 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4752 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4753 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4754 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4755 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4756 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4757 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4758 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4759 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4761 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4762 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4763 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4764 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4765 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4766 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4767 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4768 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4770 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4771 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4772 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4773 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4774 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4775 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4776 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4777 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4779 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4780 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4781 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4782 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4784 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4785 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4786 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4788 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4789 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4790 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4791 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4793 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4794 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4795 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4796 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4797 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4798 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4799 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4800 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4802 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4803 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4804 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4805 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4806 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4807 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4808 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4809 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4811 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4812 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4813 141, 52, 53, -1, -1, 56, 147, 148, -1, -1,
4814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4815 -1, -1, -1, -1, 75, 76, 77, 78, 79, 80,
4816 81, 82, 83, -1, -1, 86, 87, -1, -1, -1,
4817 -1, 92, 93, 94, 95, -1, -1, -1, -1, -1,
4818 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
4819 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4820 -1, -1, -1, -1, -1, -1, -1, -1, 129, 130,
4821 131, 132, 133, 134, 135, 136, 137, 138, -1, 140,
4822 141, -1, -1, -1, -1, -1, 147
4829 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
4830 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
4831 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
4832 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4833 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
4834 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
4835 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
4836 157, 158, 159, 167, 169, 171, 179, 180, 182, 183,
4837 184, 186, 187, 188, 190, 191, 200, 203, 218, 233,
4838 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
4839 252, 279, 280, 333, 334, 335, 336, 337, 338, 339,
4840 342, 344, 345, 359, 360, 362, 363, 364, 365, 366,
4841 367, 368, 369, 405, 419, 159, 3, 4, 5, 6,
4842 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
4843 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
4844 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4845 45, 46, 47, 48, 49, 50, 51, 52, 53, 56,
4846 75, 76, 77, 78, 79, 80, 81, 82, 83, 86,
4847 87, 92, 93, 94, 95, 107, 108, 129, 130, 131,
4848 132, 133, 134, 135, 136, 137, 138, 140, 141, 147,
4849 194, 195, 196, 198, 199, 359, 39, 58, 98, 101,
4850 107, 108, 109, 112, 140, 183, 191, 200, 204, 210,
4851 213, 215, 233, 365, 366, 368, 369, 403, 404, 210,
4852 148, 211, 212, 148, 207, 211, 148, 153, 412, 54,
4853 195, 412, 143, 160, 143, 21, 22, 31, 32, 182,
4854 200, 233, 252, 200, 200, 200, 56, 1, 47, 101,
4855 163, 164, 165, 167, 185, 186, 419, 167, 220, 205,
4856 215, 403, 419, 204, 402, 403, 419, 46, 98, 139,
4857 146, 190, 218, 233, 365, 366, 369, 223, 54, 55,
4858 57, 194, 348, 361, 348, 349, 350, 152, 152, 152,
4859 152, 364, 179, 200, 200, 151, 153, 411, 417, 418,
4860 40, 41, 42, 43, 44, 37, 38, 26, 143, 207,
4861 211, 244, 281, 28, 245, 278, 126, 146, 101, 107,
4862 187, 126, 25, 77, 78, 79, 80, 81, 82, 83,
4863 84, 85, 86, 87, 88, 89, 94, 95, 127, 129,
4864 130, 131, 132, 133, 134, 135, 136, 137, 138, 202,
4865 202, 68, 96, 97, 145, 409, 219, 171, 175, 175,
4866 176, 177, 176, 175, 411, 418, 98, 184, 191, 233,
4867 257, 365, 366, 369, 52, 56, 94, 98, 192, 193,
4868 233, 365, 366, 369, 193, 33, 34, 35, 36, 49,
4869 50, 51, 52, 56, 148, 194, 367, 400, 210, 97,
4870 409, 410, 281, 336, 99, 99, 146, 204, 56, 204,
4871 204, 204, 348, 126, 100, 146, 214, 419, 97, 145,
4872 409, 99, 99, 146, 214, 210, 412, 413, 210, 91,
4873 209, 210, 215, 377, 403, 419, 171, 413, 171, 54,
4874 64, 65, 168, 148, 201, 157, 163, 97, 409, 99,
4875 167, 166, 185, 149, 411, 418, 413, 221, 413, 150,
4876 146, 153, 416, 146, 416, 144, 416, 412, 56, 364,
4877 187, 189, 146, 97, 145, 409, 270, 271, 66, 119,
4878 121, 122, 351, 119, 119, 351, 67, 351, 340, 346,
4879 343, 347, 77, 151, 159, 175, 175, 175, 175, 167,
4880 171, 171, 282, 283, 106, 181, 286, 287, 286, 107,
4881 179, 204, 215, 216, 217, 185, 146, 190, 146, 169,
4882 170, 179, 191, 200, 204, 206, 217, 233, 369, 172,
4883 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4884 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4885 200, 200, 200, 200, 52, 53, 56, 198, 207, 406,
4886 407, 209, 52, 53, 56, 198, 207, 406, 161, 163,
4887 13, 253, 417, 253, 163, 175, 163, 411, 225, 56,
4888 97, 145, 409, 25, 171, 52, 56, 192, 130, 370,
4889 97, 145, 409, 228, 401, 229, 68, 97, 408, 52,
4890 56, 406, 170, 200, 206, 170, 206, 197, 124, 204,
4891 107, 204, 213, 403, 52, 56, 209, 52, 56, 404,
4892 413, 149, 413, 146, 413, 146, 413, 195, 222, 200,
4893 144, 144, 406, 406, 206, 160, 413, 165, 413, 403,
4894 146, 189, 52, 56, 209, 52, 56, 272, 353, 352,
4895 119, 341, 351, 66, 119, 119, 341, 66, 119, 200,
4896 144, 284, 282, 10, 251, 288, 251, 204, 146, 44,
4897 413, 189, 146, 44, 126, 44, 97, 145, 409, 173,
4898 412, 99, 99, 207, 211, 412, 414, 99, 99, 207,
4899 208, 211, 419, 251, 8, 246, 329, 419, 163, 13,
4900 163, 251, 27, 254, 417, 251, 25, 224, 293, 17,
4901 248, 291, 52, 56, 209, 52, 56, 176, 227, 371,
4902 226, 52, 56, 192, 209, 161, 171, 230, 231, 208,
4903 211, 195, 204, 204, 214, 99, 99, 414, 99, 99,
4904 403, 171, 416, 187, 414, 273, 354, 54, 55, 57,
4905 358, 369, 152, 351, 152, 152, 152, 285, 144, 289,
4906 107, 204, 167, 189, 167, 200, 52, 56, 209, 52,
4907 56, 52, 56, 90, 91, 98, 101, 104, 105, 110,
4908 132, 303, 304, 305, 308, 323, 324, 326, 327, 328,
4909 333, 334, 337, 338, 339, 342, 344, 345, 366, 128,
4910 170, 206, 170, 206, 181, 150, 99, 170, 206, 170,
4911 206, 181, 204, 217, 330, 419, 9, 15, 247, 249,
4912 332, 419, 14, 249, 250, 255, 256, 419, 256, 178,
4913 294, 291, 251, 107, 204, 290, 251, 414, 163, 417,
4914 175, 161, 414, 251, 413, 148, 372, 373, 194, 281,
4915 278, 99, 146, 413, 274, 355, 131, 265, 266, 419,
4916 265, 204, 414, 324, 324, 56, 192, 311, 309, 414,
4917 310, 412, 415, 325, 52, 100, 174, 131, 88, 89,
4918 97, 145, 148, 306, 307, 200, 170, 206, 100, 331,
4919 419, 163, 162, 163, 175, 251, 251, 295, 251, 204,
4920 146, 253, 251, 161, 417, 251, 52, 54, 55, 56,
4921 57, 58, 77, 91, 101, 107, 108, 109, 133, 136,
4922 374, 376, 377, 378, 379, 380, 381, 382, 383, 384,
4923 387, 388, 389, 390, 391, 394, 395, 396, 397, 398,
4924 161, 376, 232, 148, 276, 376, 356, 262, 264, 267,
4925 380, 382, 383, 385, 386, 389, 390, 392, 393, 396,
4926 398, 412, 163, 161, 303, 107, 303, 312, 313, 314,
4927 316, 58, 112, 317, 318, 319, 320, 321, 322, 388,
4928 144, 270, 326, 308, 324, 324, 192, 414, 413, 112,
4929 312, 317, 312, 317, 98, 191, 233, 365, 366, 369,
4930 253, 163, 253, 296, 107, 204, 163, 251, 101, 107,
4931 258, 259, 260, 261, 379, 413, 413, 126, 146, 375,
4932 204, 146, 399, 419, 34, 52, 146, 399, 399, 146,
4933 375, 52, 146, 375, 52, 251, 417, 372, 376, 275,
4934 357, 267, 131, 126, 146, 263, 98, 233, 146, 399,
4935 399, 399, 146, 263, 146, 263, 151, 413, 52, 146,
4936 414, 107, 303, 316, 146, 348, 415, 146, 303, 34,
4937 52, 348, 413, 413, 414, 414, 56, 97, 145, 409,
4938 163, 332, 163, 301, 302, 303, 314, 317, 204, 256,
4939 291, 292, 260, 379, 146, 413, 146, 204, 374, 381,
4940 394, 396, 384, 388, 390, 398, 382, 391, 396, 380,
4941 382, 161, 267, 29, 123, 277, 163, 131, 233, 262,
4942 393, 396, 56, 97, 385, 390, 382, 392, 396, 382,
4943 52, 268, 269, 378, 146, 315, 316, 52, 146, 146,
4944 124, 319, 321, 322, 52, 56, 209, 52, 56, 329,
4945 255, 253, 40, 41, 146, 413, 258, 261, 259, 146,
4946 375, 146, 375, 399, 146, 375, 146, 375, 375, 251,
4947 149, 161, 163, 120, 146, 263, 146, 263, 52, 56,
4948 399, 146, 263, 146, 263, 263, 146, 412, 315, 146,
4949 146, 315, 414, 297, 175, 175, 312, 146, 146, 382,
4950 396, 382, 382, 251, 144, 382, 396, 382, 382, 269,
4951 316, 315, 298, 259, 375, 146, 375, 375, 375, 263,
4952 146, 263, 263, 263, 299, 382, 382, 163, 375, 263,
4959 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
4960 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
4961 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
4962 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
4963 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
4964 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
4965 171, 171, 175, 177, 178, 176, 179, 179, 180, 180,
4966 181, 182, 183, 183, 183, 183, 183, 183, 183, 183,
4967 183, 183, 183, 184, 184, 185, 185, 186, 186, 186,
4968 186, 186, 186, 186, 186, 186, 186, 187, 187, 188,
4969 188, 189, 189, 190, 190, 190, 190, 190, 190, 190,
4970 190, 190, 191, 191, 191, 191, 191, 191, 191, 191,
4971 191, 192, 192, 193, 193, 193, 194, 194, 194, 194,
4972 194, 195, 195, 196, 197, 196, 198, 198, 198, 198,
4973 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4974 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
4975 198, 198, 198, 198, 198, 198, 199, 199, 199, 199,
4976 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4977 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4978 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
4979 199, 199, 199, 199, 199, 199, 199, 200, 200, 200,
4980 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4981 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4982 200, 200, 200, 200, 200, 200, 200, 200, 200, 200,
4983 200, 200, 200, 200, 200, 200, 200, 201, 200, 200,
4984 200, 202, 202, 202, 202, 203, 203, 204, 205, 205,
4985 205, 205, 206, 206, 207, 207, 208, 208, 209, 209,
4986 209, 209, 209, 210, 210, 210, 210, 210, 212, 211,
4987 213, 214, 214, 215, 215, 215, 215, 216, 216, 217,
4988 217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
4989 218, 218, 218, 219, 218, 220, 218, 221, 218, 218,
4990 218, 218, 218, 218, 218, 218, 218, 218, 222, 218,
4991 218, 218, 218, 218, 218, 223, 218, 218, 218, 218,
4992 218, 224, 218, 225, 218, 218, 218, 226, 218, 227,
4993 218, 228, 218, 229, 230, 218, 231, 232, 218, 218,
4994 218, 218, 218, 233, 234, 235, 236, 237, 238, 239,
4995 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
4996 250, 251, 252, 253, 253, 253, 254, 254, 255, 255,
4997 256, 256, 257, 257, 258, 258, 259, 259, 260, 260,
4998 260, 260, 260, 261, 261, 262, 262, 262, 262, 262,
4999 263, 263, 264, 264, 264, 264, 264, 264, 264, 264,
5000 264, 264, 264, 264, 264, 264, 264, 265, 265, 266,
5001 266, 267, 267, 268, 268, 269, 269, 271, 272, 273,
5002 274, 275, 270, 276, 276, 277, 277, 278, 279, 279,
5003 279, 279, 280, 280, 280, 280, 280, 280, 280, 280,
5004 280, 281, 281, 283, 284, 285, 282, 287, 288, 289,
5005 286, 290, 290, 290, 290, 291, 292, 292, 294, 295,
5006 296, 297, 298, 299, 293, 300, 300, 301, 301, 301,
5007 302, 302, 302, 302, 302, 303, 304, 304, 305, 305,
5008 306, 307, 308, 308, 308, 308, 308, 308, 308, 309,
5009 308, 308, 310, 308, 308, 311, 308, 312, 312, 312,
5010 312, 312, 312, 312, 312, 313, 313, 314, 314, 314,
5011 314, 315, 315, 316, 317, 317, 317, 317, 317, 317,
5012 318, 318, 319, 319, 320, 320, 321, 321, 322, 323,
5013 323, 323, 323, 323, 323, 323, 323, 323, 323, 324,
5014 324, 324, 324, 324, 324, 324, 324, 324, 325, 324,
5015 326, 327, 328, 328, 328, 329, 329, 330, 330, 330,
5016 331, 331, 332, 332, 333, 333, 334, 335, 335, 335,
5017 336, 337, 338, 339, 340, 340, 341, 341, 342, 343,
5018 343, 344, 345, 346, 346, 347, 347, 348, 348, 349,
5019 349, 350, 350, 351, 352, 351, 353, 354, 355, 356,
5020 357, 351, 358, 358, 358, 358, 359, 359, 360, 361,
5021 361, 361, 361, 362, 363, 363, 364, 364, 364, 364,
5022 365, 365, 365, 365, 365, 366, 366, 366, 366, 366,
5023 366, 366, 367, 367, 368, 368, 369, 369, 371, 370,
5024 370, 372, 372, 373, 372, 374, 374, 374, 374, 374,
5025 375, 375, 376, 376, 376, 376, 376, 376, 376, 376,
5026 376, 376, 376, 376, 376, 376, 376, 377, 378, 378,
5027 378, 378, 379, 379, 380, 381, 381, 382, 382, 383,
5028 384, 384, 385, 385, 386, 386, 387, 387, 388, 388,
5029 389, 390, 390, 391, 392, 393, 393, 394, 394, 395,
5030 395, 396, 396, 397, 397, 398, 399, 399, 400, 401,
5031 400, 402, 402, 403, 403, 404, 404, 404, 404, 405,
5032 405, 405, 406, 406, 406, 406, 407, 407, 407, 408,
5033 408, 409, 409, 410, 410, 411, 411, 412, 412, 413,
5034 414, 415, 416, 416, 416, 417, 417, 418, 418, 419
5040 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5041 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5042 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5043 3, 3, 3, 3, 4, 1, 3, 3, 5, 3,
5044 1, 3, 3, 6, 5, 5, 5, 5, 3, 1,
5045 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5046 6, 1, 1, 0, 0, 4, 1, 1, 1, 4,
5047 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5048 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5049 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5050 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5051 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
5052 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
5053 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
5054 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5055 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5056 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5057 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5058 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5059 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5060 1, 1, 1, 1, 1, 1, 1, 3, 3, 6,
5061 5, 5, 5, 5, 4, 3, 3, 3, 2, 2,
5062 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
5063 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
5064 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
5065 1, 1, 1, 1, 1, 3, 3, 1, 1, 2,
5066 4, 2, 1, 3, 3, 3, 1, 1, 1, 1,
5067 2, 4, 2, 1, 2, 2, 4, 1, 0, 2,
5068 2, 2, 1, 1, 2, 3, 4, 1, 1, 3,
5069 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
5070 1, 1, 1, 0, 4, 0, 3, 0, 4, 3,
5071 3, 2, 3, 3, 1, 4, 3, 1, 0, 6,
5072 4, 3, 2, 1, 2, 0, 3, 6, 6, 4,
5073 4, 0, 6, 0, 5, 5, 6, 0, 6, 0,
5074 7, 0, 5, 0, 0, 7, 0, 0, 9, 1,
5075 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5076 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5077 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5078 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5079 5, 1, 3, 2, 1, 4, 2, 2, 2, 1,
5080 2, 0, 6, 8, 4, 6, 4, 2, 6, 2,
5081 4, 6, 2, 4, 2, 4, 1, 1, 1, 3,
5082 4, 1, 4, 1, 3, 1, 1, 0, 0, 0,
5083 0, 0, 7, 4, 1, 3, 3, 3, 2, 4,
5084 5, 5, 2, 4, 4, 3, 3, 3, 2, 1,
5085 4, 3, 3, 0, 0, 0, 5, 0, 0, 0,
5086 5, 1, 2, 3, 4, 5, 1, 1, 0, 0,
5087 0, 0, 0, 0, 11, 1, 1, 1, 3, 3,
5088 1, 2, 3, 1, 1, 1, 3, 1, 3, 1,
5089 1, 1, 1, 4, 4, 3, 4, 4, 3, 0,
5090 4, 2, 0, 4, 2, 0, 4, 1, 1, 2,
5091 3, 5, 2, 4, 1, 2, 3, 2, 4, 1,
5092 3, 1, 3, 1, 3, 1, 2, 1, 3, 1,
5093 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
5094 3, 3, 2, 2, 1, 1, 1, 2, 2, 1,
5095 1, 1, 1, 1, 1, 1, 1, 1, 0, 3,
5096 1, 2, 2, 3, 1, 6, 1, 1, 1, 1,
5097 2, 1, 2, 1, 1, 1, 1, 1, 1, 2,
5098 3, 3, 3, 4, 0, 3, 1, 2, 4, 0,
5099 3, 4, 4, 0, 3, 0, 3, 0, 2, 0,
5100 2, 0, 2, 1, 0, 3, 0, 0, 0, 0,
5101 0, 8, 1, 1, 1, 1, 1, 1, 2, 1,
5102 1, 1, 1, 3, 1, 2, 1, 1, 1, 1,
5103 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5104 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
5105 0, 3, 3, 0, 3, 4, 2, 2, 2, 1,
5106 2, 0, 6, 8, 4, 6, 4, 6, 2, 4,
5107 6, 2, 4, 2, 4, 1, 0, 1, 1, 1,
5108 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
5109 2, 1, 2, 1, 1, 3, 1, 3, 1, 1,
5110 2, 2, 1, 3, 3, 1, 3, 1, 3, 1,
5111 1, 2, 1, 1, 1, 2, 2, 1, 1, 0,
5112 4, 1, 2, 1, 3, 3, 2, 4, 2, 1,
5113 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5114 1, 1, 1, 1, 1, 0, 1, 0, 1, 2,
5115 2, 2, 0, 1, 1, 1, 1, 1, 2, 0
5119 #define yyerrok (yyerrstatus = 0)
5120 #define yyclearin (yychar = YYEMPTY)
5121 #define YYEMPTY (-2)
5124 #define YYACCEPT goto yyacceptlab
5125 #define YYABORT goto yyabortlab
5126 #define YYERROR goto yyerrorlab
5129 #define YYRECOVERING() (!!yyerrstatus)
5131 #define YYBACKUP(Token, Value) \
5133 if (yychar == YYEMPTY) \
5137 YYPOPSTACK (yylen); \
5143 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5150 #define YYERRCODE 256
5157 #ifndef YYLLOC_DEFAULT
5158 # define YYLLOC_DEFAULT(Current, Rhs, N) \
5162 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5163 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5164 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5165 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5169 (Current).first_line = (Current).last_line = \
5170 YYRHSLOC (Rhs, 0).last_line; \
5171 (Current).first_column = (Current).last_column = \
5172 YYRHSLOC (Rhs, 0).last_column; \
5177 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
5185 # define YYFPRINTF fprintf
5188 # define YYDPRINTF(Args) \
5199 #ifndef YY_LOCATION_PRINT
5200 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5206 yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
5224 else if (0 <= end_col && yylocp->
first_column < end_col)
5230 # define YY_LOCATION_PRINT(File, Loc) \
5231 yy_location_print_ (File, &(Loc))
5234 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
5239 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
5243 YYFPRINTF (p, "%s ", Title); \
5244 yy_symbol_print (stderr, \
5245 Type, Value, Location, p); \
5246 YYFPRINTF (p, "\n"); \
5258 FILE *yyo = yyoutput;
5260 YYUSE (yylocationp);
5266 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
5280 yytype <
YYNTOKENS ?
"token" :
"nterm", yytname[yytype]);
5284 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp, p);
5295 #define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
5298 for (; yybottom <= yytop; yybottom++)
5300 int yybot = *yybottom;
5306 # define YY_STACK_PRINT(Bottom, Top) \
5309 yy_stack_print ((Bottom), (Top)); \
5320 unsigned long int yylno = yyrline[yyrule];
5321 int yynrhs = yyr2[yyrule];
5323 YYFPRINTF (p,
"Reducing stack by rule %d (line %lu):\n",
5326 for (yyi = 0; yyi < yynrhs; yyi++)
5330 yystos[yyssp[yyi + 1 - yynrhs]],
5331 &(yyvsp[(yyi + 1) - (yynrhs)])
5332 , &(yylsp[(yyi + 1) - (yynrhs)]) , p);
5337 # define YY_REDUCE_PRINT(Rule) \
5340 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
5349 # define YYDPRINTF(Args)
5350 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
5351 # define YY_STACK_PRINT(Bottom, Top)
5352 # define YY_REDUCE_PRINT(Rule)
5358 # define YYINITDEPTH 200
5369 # define YYMAXDEPTH 10000
5376 # if defined __GLIBC__ && defined _STRING_H
5377 # define yystrlen strlen
5381 yystrlen (
const char *yystr)
5384 for (yylen = 0; yystr[yylen]; yylen++)
5392 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
5393 # define yystpcpy stpcpy
5398 yystpcpy (
char *yydest,
const char *yysrc)
5401 const char *yys = yysrc;
5403 while ((*yyd++ = *yys++) !=
'\0')
5420 yytnamerr (
char *yyres,
const char *yystr)
5425 char const *yyp = yystr;
5432 goto do_not_strip_quotes;
5436 goto do_not_strip_quotes;
5449 do_not_strip_quotes: ;
5453 return yystrlen (yystr);
5455 return yystpcpy (yyres, yystr) - yyres;
5473 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
5477 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
5507 int yyn = yypact[*yyssp];
5508 yyarg[yycount++] = yytname[yytoken];
5514 int yyxbegin = yyn < 0 ? -yyn : 0;
5516 int yychecklim =
YYLAST - yyn + 1;
5520 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
5521 if (yycheck[yyx + yyn] == yyx && yyx !=
YYTERROR
5524 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
5530 yyarg[yycount++] = yytname[yyx];
5533 if (! (yysize <= yysize1
5544 # define YYCASE_(N, S) \
5549 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
5550 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
5551 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
5552 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
5553 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
5558 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
5564 if (*yymsg_alloc < yysize)
5566 *yymsg_alloc = 2 * yysize;
5567 if (! (yysize <= *yymsg_alloc
5579 while ((*yyp = *yyformat) !=
'\0')
5580 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
5603 YYUSE (yylocationp);
5636 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5640 YYLTYPE yylloc = yyloc_default;
5689 char *yymsg = yymsgbuf;
5690 YYSIZE_T yymsg_alloc =
sizeof yymsgbuf;
5693 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
5699 yyssp = yyss = yyssa;
5700 yyvsp = yyvs = yyvsa;
5701 yylsp = yyls = yylsa;
5712 #line 975 "ripper.y"
5717 #line 5713 "ripper.c"
5732 if (yyss + yystacksize - 1 <= yyssp)
5735 YYSIZE_T yysize = yyssp - yyss + 1;
5750 yyoverflow (
YY_(
"memory exhausted"),
5751 &yyss1, yysize *
sizeof (*yyssp),
5752 &yyvs1, yysize *
sizeof (*yyvsp),
5753 &yyls1, yysize *
sizeof (*yylsp),
5761 # ifndef YYSTACK_RELOCATE
5762 goto yyexhaustedlab;
5766 goto yyexhaustedlab;
5776 goto yyexhaustedlab;
5780 # undef YYSTACK_RELOCATE
5787 yyssp = yyss + yysize - 1;
5788 yyvsp = yyvs + yysize - 1;
5789 yylsp = yyls + yysize - 1;
5791 YYDPRINTF ((p,
"Stack size increased to %lu\n",
5792 (
unsigned long int) yystacksize));
5794 if (yyss + yystacksize - 1 <= yyssp)
5798 YYDPRINTF ((p,
"Entering state %d\n", yystate));
5814 yyn = yypact[yystate];
5824 yychar = yylex (&
yylval, &yylloc, p);
5827 if (yychar <=
YYEOF)
5829 yychar = yytoken =
YYEOF;
5830 YYDPRINTF ((p,
"Now at end of input.\n"));
5841 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
5875 yyn = yydefact[yystate];
5896 yyval = yyvsp[1-yylen];
5904 #line 1177 "ripper.y"
5909 #line 5905 "ripper.c"
5913 #line 1182 "ripper.y"
5917 NODE *node = (yyvsp[0].val);
5920 while (node->nd_next) {
5921 node = node->nd_next;
5923 node = node->nd_head;
5925 node = remove_begin(node);
5930 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(program,v1);p->result=v2;}
5933 #line 5929 "ripper.c"
5937 #line 1204 "ripper.y"
5939 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
5941 #line 5937 "ripper.c"
5945 #line 1210 "ripper.y"
5950 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
5952 #line 5948 "ripper.c"
5956 #line 1217 "ripper.y"
5959 (yyval.
val) = newline_node((yyvsp[0].val));
5961 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
5963 #line 5959 "ripper.c"
5967 #line 1224 "ripper.y"
5970 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
5972 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
5974 #line 5970 "ripper.c"
5978 #line 1231 "ripper.y"
5980 (yyval.
val) = remove_begin((yyvsp[0].val));
5982 #line 5978 "ripper.c"
5986 #line 1238 "ripper.y"
5988 (yyval.
val) = (yyvsp[0].val);
5990 #line 5986 "ripper.c"
5994 #line 1244 "ripper.y"
6001 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(BEGIN,v1);(yyval.
val)=v2;}
6003 #line 5999 "ripper.c"
6007 #line 1256 "ripper.y"
6008 {
if (!(yyvsp[-1].val)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
6009 #line 6005 "ripper.c"
6013 #line 1259 "ripper.y"
6016 (yyval.
val) = new_bodystmt(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6018 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-5].val));v2=escape_Qundef((yyvsp[-4].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
6020 #line 6016 "ripper.c"
6024 #line 1268 "ripper.y"
6027 (yyval.
val) = new_bodystmt(p, (yyvsp[-2].val), (yyvsp[-1].val), 0, (yyvsp[0].val), &(yyloc));
6029 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=
Qnil;v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.
val)=v5;}
6031 #line 6027 "ripper.c"
6035 #line 1277 "ripper.y"
6037 (yyval.
val) = void_stmts(p, (yyvsp[-1].val));
6039 #line 6035 "ripper.c"
6043 #line 1283 "ripper.y"
6048 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.
val)=v5;}
6050 #line 6046 "ripper.c"
6054 #line 1290 "ripper.y"
6057 (yyval.
val) = newline_node((yyvsp[0].val));
6059 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(stmts_add,v2,v3);(yyval.
val)=v4;}
6061 #line 6057 "ripper.c"
6065 #line 1297 "ripper.y"
6068 (yyval.
val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
6070 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(stmts_add,v1,v2);(yyval.
val)=v3;}
6072 #line 6068 "ripper.c"
6076 #line 1304 "ripper.y"
6078 (yyval.
val) = remove_begin((yyvsp[0].val));
6080 #line 6076 "ripper.c"
6084 #line 1310 "ripper.y"
6086 (yyval.
val) = (yyvsp[0].val);
6088 #line 6084 "ripper.c"
6092 #line 1314 "ripper.y"
6094 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
6096 #line 6092 "ripper.c"
6100 #line 1318 "ripper.y"
6102 (yyval.
val) = (yyvsp[0].val);
6104 #line 6100 "ripper.c"
6108 #line 1323 "ripper.y"
6110 #line 6106 "ripper.c"
6114 #line 1324 "ripper.y"
6117 (yyval.
val) =
NEW_ALIAS((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6119 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(
alias,v1,v2);(yyval.
val)=v3;}
6121 #line 6117 "ripper.c"
6125 #line 1331 "ripper.y"
6128 (yyval.
val) =
NEW_VALIAS((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6130 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6132 #line 6128 "ripper.c"
6136 #line 1338 "ripper.y"
6141 buf[1] = (
char)(yyvsp[0].val)->nd_nth;
6144 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);(yyval.
val)=v3;}
6146 #line 6142 "ripper.c"
6150 #line 1348 "ripper.y"
6153 yyerror1(&(yylsp[0]),
"can't make alias for the number variables");
6156 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);v4=v3;v5=dispatch1(alias_error,v4);(yyval.
val)=v5;}ripper_error(p);
6158 #line 6154 "ripper.c"
6162 #line 1356 "ripper.y"
6165 (yyval.
val) = (yyvsp[0].val);
6167 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(undef,v1);(yyval.
val)=v2;}
6169 #line 6165 "ripper.c"
6173 #line 1363 "ripper.y"
6176 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6177 fixpos((yyval.
val), (yyvsp[0].val));
6179 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
6181 #line 6177 "ripper.c"
6185 #line 1371 "ripper.y"
6188 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
6189 fixpos((yyval.
val), (yyvsp[0].val));
6191 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
6193 #line 6189 "ripper.c"
6197 #line 1379 "ripper.y"
6201 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val)->
nd_body, 0, &(yyloc));
6204 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val), 1, &(yyloc));
6207 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(while_mod,v1,v2);(yyval.
val)=v3;}
6209 #line 6205 "ripper.c"
6213 #line 1391 "ripper.y"
6217 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val)->
nd_body, 0, &(yyloc));
6220 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val), 1, &(yyloc));
6223 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(until_mod,v1,v2);(yyval.
val)=v3;}
6225 #line 6221 "ripper.c"
6229 #line 1403 "ripper.y"
6233 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6234 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc);
6235 (yyval.
val) =
NEW_RESCUE(remove_begin((yyvsp[-2].val)), resq, 0, &(yyloc));
6237 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
6239 #line 6235 "ripper.c"
6243 #line 1413 "ripper.y"
6246 rb_warn0(
"END in method; use at_exit");
6251 NODE_SCOPE, 0 , (yyvsp[-1].val) , 0 , &(yyloc));
6255 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(
END,v1);(yyval.
val)=v2;}
6257 #line 6253 "ripper.c"
6261 #line 1428 "ripper.y"
6265 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6267 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
6269 #line 6265 "ripper.c"
6273 #line 1436 "ripper.y"
6277 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6279 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
6281 #line 6277 "ripper.c"
6285 #line 1444 "ripper.y"
6288 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6290 (yyval.
val) = node_assign(p, (yyvsp[-4].val),
NEW_RESCUE((yyvsp[-2].val),
NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc)), &(yyloc));
6292 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=(yyvsp[-4].val);v5=v3;v6=dispatch2(massign,v4,v5);(yyval.
val)=v6;}
6294 #line 6290 "ripper.c"
6298 #line 1453 "ripper.y"
6301 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6303 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(massign,v1,v2);(yyval.
val)=v3;}
6305 #line 6301 "ripper.c"
6309 #line 1463 "ripper.y"
6312 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6314 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
6316 #line 6312 "ripper.c"
6320 #line 1470 "ripper.y"
6323 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6325 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
6327 #line 6323 "ripper.c"
6331 #line 1477 "ripper.y"
6334 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-3]), &(yyloc));
6336 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
6339 #line 6335 "ripper.c"
6343 #line 1485 "ripper.y"
6346 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6348 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6350 #line 6346 "ripper.c"
6354 #line 1492 "ripper.y"
6357 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6359 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6361 #line 6357 "ripper.c"
6365 #line 1499 "ripper.y"
6368 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
6369 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6371 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
6373 #line 6369 "ripper.c"
6377 #line 1507 "ripper.y"
6380 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6382 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
6384 #line 6380 "ripper.c"
6388 #line 1514 "ripper.y"
6391 rb_backref_error(p, (yyvsp[-2].val));
6394 {
VALUE v1,v2,v3,v4,v5;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);v4=v3;v5=dispatch1(assign_error,v4);(yyval.
val)=v5;}ripper_error(p);
6396 #line 6392 "ripper.c"
6400 #line 1524 "ripper.y"
6403 (yyval.
val) = (yyvsp[0].val);
6405 #line 6401 "ripper.c"
6409 #line 1529 "ripper.y"
6412 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
6416 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
6418 #line 6414 "ripper.c"
6422 #line 1542 "ripper.y"
6424 (yyval.
val) = logop(p,
idAND, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
6426 #line 6422 "ripper.c"
6430 #line 1546 "ripper.y"
6432 (yyval.
val) = logop(p,
idOR, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
6434 #line 6430 "ripper.c"
6438 #line 1550 "ripper.y"
6440 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
6442 #line 6438 "ripper.c"
6446 #line 1554 "ripper.y"
6448 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
6450 #line 6446 "ripper.c"
6454 #line 1558 "ripper.y"
6462 #line 6458 "ripper.c"
6466 #line 1565 "ripper.y"
6467 {(yyval.
tbl) = push_pvtbl(p);}
6468 #line 6464 "ripper.c"
6472 #line 1567 "ripper.y"
6473 {pop_pvtbl(p, (yyvsp[-1].tbl));}
6474 #line 6470 "ripper.c"
6478 #line 1568 "ripper.y"
6482 (yyval.
val) = new_case3(p, (yyvsp[-5].val),
NEW_IN((yyvsp[-1].val), 0, 0, &(yylsp[-1])), &(yyloc));
6484 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-1].val);v2=
Qnil;v3=
Qnil;v4=dispatch3(in,v1,v2,v3);v5=(yyvsp[-5].val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.
val)=v7;}
6486 #line 6482 "ripper.c"
6490 #line 1579 "ripper.y"
6493 (yyval.
val) = (yyvsp[0].val);
6495 #line 6491 "ripper.c"
6499 #line 1585 "ripper.y"
6501 #line 6497 "ripper.c"
6505 #line 1585 "ripper.y"
6507 #line 6503 "ripper.c"
6511 #line 1586 "ripper.y"
6513 (yyval.
val) = (yyvsp[-2].val);
6515 #line 6511 "ripper.c"
6519 #line 1597 "ripper.y"
6522 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
6524 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
6526 #line 6522 "ripper.c"
6530 #line 1606 "ripper.y"
6532 (yyval.
val) = (yyvsp[-1].val);
6534 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
6538 #line 6534 "ripper.c"
6542 #line 1616 "ripper.y"
6548 (yyval.
val)=(yyvsp[0].val);
6550 #line 6546 "ripper.c"
6554 #line 1626 "ripper.y"
6557 (yyvsp[-1].val)->
nd_args = (yyvsp[0].val);
6559 (yyval.
val) = (yyvsp[-1].val);
6561 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(command,v1,v2);(yyval.
val)=v3;}
6563 #line 6559 "ripper.c"
6567 #line 1635 "ripper.y"
6570 block_dup_check(p, (yyvsp[-1].val), (yyvsp[0].val));
6571 (yyvsp[-2].val)->
nd_args = (yyvsp[-1].val);
6572 (yyval.
val) = method_add_block(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6573 fixpos((yyval.
val), (yyvsp[-2].val));
6576 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(command,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(method_add_block,v4,v5);(yyval.
val)=v6;}
6578 #line 6574 "ripper.c"
6582 #line 1646 "ripper.y"
6585 (yyval.
val) = new_command_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val),
Qnull, &(yylsp[-1]), &(yyloc));
6587 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=(yyvsp[0].val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
6589 #line 6585 "ripper.c"
6593 #line 1653 "ripper.y"
6596 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
6598 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
6600 #line 6596 "ripper.c"
6604 #line 1660 "ripper.y"
6607 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val),
Qnull, &(yylsp[-1]), &(yyloc));
6609 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].val);v4=(yyvsp[0].val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.
val)=v5;}
6611 #line 6607 "ripper.c"
6615 #line 1667 "ripper.y"
6618 (yyval.
val) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
6620 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
6622 #line 6618 "ripper.c"
6626 #line 1674 "ripper.y"
6630 fixpos((yyval.
val), (yyvsp[0].val));
6632 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
6634 #line 6630 "ripper.c"
6638 #line 1682 "ripper.y"
6641 (yyval.
val) = new_yield(p, (yyvsp[0].val), &(yyloc));
6642 fixpos((yyval.
val), (yyvsp[0].val));
6644 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(yield,v1);(yyval.
val)=v2;}
6646 #line 6642 "ripper.c"
6650 #line 1690 "ripper.y"
6653 (yyval.
val) =
NEW_RETURN(ret_args(p, (yyvsp[0].val)), &(yyloc));
6655 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
return,v1);(yyval.
val)=v2;}
6657 #line 6653 "ripper.c"
6661 #line 1697 "ripper.y"
6664 (yyval.
val) =
NEW_BREAK(ret_args(p, (yyvsp[0].val)), &(yyloc));
6666 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
break,v1);(yyval.
val)=v2;}
6668 #line 6664 "ripper.c"
6672 #line 1704 "ripper.y"
6675 (yyval.
val) =
NEW_NEXT(ret_args(p, (yyvsp[0].val)), &(yyloc));
6677 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(next,v1);(yyval.
val)=v2;}
6679 #line 6675 "ripper.c"
6683 #line 1714 "ripper.y"
6686 (yyval.
val) = (yyvsp[-1].val);
6688 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6690 #line 6686 "ripper.c"
6694 #line 1724 "ripper.y"
6699 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6701 #line 6697 "ripper.c"
6705 #line 1733 "ripper.y"
6710 (yyval.
val)=(yyvsp[0].val);
6712 #line 6708 "ripper.c"
6716 #line 1740 "ripper.y"
6719 (yyval.
val) =
NEW_MASGN(list_append(p, (yyvsp[-1].val),(yyvsp[0].val)), 0, &(yyloc));
6721 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6723 #line 6719 "ripper.c"
6727 #line 1747 "ripper.y"
6730 (yyval.
val) =
NEW_MASGN((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
6732 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
6734 #line 6730 "ripper.c"
6738 #line 1754 "ripper.y"
6743 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
6745 #line 6741 "ripper.c"
6749 #line 1761 "ripper.y"
6754 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
6756 #line 6752 "ripper.c"
6760 #line 1768 "ripper.y"
6765 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
6767 #line 6763 "ripper.c"
6771 #line 1775 "ripper.y"
6776 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
6778 #line 6774 "ripper.c"
6782 #line 1782 "ripper.y"
6787 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
6789 #line 6785 "ripper.c"
6793 #line 1789 "ripper.y"
6798 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
6800 #line 6796 "ripper.c"
6804 #line 1796 "ripper.y"
6809 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
6811 #line 6807 "ripper.c"
6815 #line 1806 "ripper.y"
6818 (yyval.
val) = (yyvsp[-1].val);
6820 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
6822 #line 6818 "ripper.c"
6826 #line 1815 "ripper.y"
6829 (yyval.
val) =
NEW_LIST((yyvsp[-1].val), &(yylsp[-1]));
6831 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-1].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
6833 #line 6829 "ripper.c"
6837 #line 1822 "ripper.y"
6840 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
6842 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6844 #line 6840 "ripper.c"
6848 #line 1831 "ripper.y"
6853 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
6855 #line 6851 "ripper.c"
6859 #line 1838 "ripper.y"
6862 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].val));
6864 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
6866 #line 6862 "ripper.c"
6870 #line 1847 "ripper.y"
6873 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
6875 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
6877 #line 6873 "ripper.c"
6881 #line 1854 "ripper.y"
6884 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
6886 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
6888 #line 6884 "ripper.c"
6892 #line 1861 "ripper.y"
6895 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
6897 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
6899 #line 6895 "ripper.c"
6903 #line 1868 "ripper.y"
6905 if ((yyvsp[-1].val) ==
tANDDOT) {
6906 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6909 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6911 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
6913 #line 6909 "ripper.c"
6917 #line 1878 "ripper.y"
6920 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].val), &(yyloc));
6922 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=v3;}
6924 #line 6920 "ripper.c"
6928 #line 1885 "ripper.y"
6930 if ((yyvsp[-1].val) ==
tANDDOT) {
6931 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
6934 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
6936 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
6938 #line 6934 "ripper.c"
6942 #line 1895 "ripper.y"
6945 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
6947 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
6949 #line 6945 "ripper.c"
6953 #line 1902 "ripper.y"
6956 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
6958 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
6960 #line 6956 "ripper.c"
6964 #line 1909 "ripper.y"
6967 rb_backref_error(p, (yyvsp[0].val));
6970 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
6972 #line 6968 "ripper.c"
6976 #line 1919 "ripper.y"
6979 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
6981 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
6983 #line 6979 "ripper.c"
6987 #line 1926 "ripper.y"
6990 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
6992 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
6994 #line 6990 "ripper.c"
6998 #line 1933 "ripper.y"
7001 (yyval.
val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
7003 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.
val)=v3;}
7005 #line 7001 "ripper.c"
7009 #line 1940 "ripper.y"
7012 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7014 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7016 #line 7012 "ripper.c"
7020 #line 1947 "ripper.y"
7023 (yyval.
val) = attrset(p, (yyvsp[-2].val),
idCOLON2, (yyvsp[0].val), &(yyloc));
7025 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7027 #line 7023 "ripper.c"
7031 #line 1954 "ripper.y"
7034 (yyval.
val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7036 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.
val)=v4;}
7038 #line 7034 "ripper.c"
7042 #line 1961 "ripper.y"
7045 (yyval.
val) = const_decl(p,
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
7047 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.
val)=const_decl(p, v3);}
7049 #line 7045 "ripper.c"
7053 #line 1968 "ripper.y"
7056 (yyval.
val) = const_decl(p,
NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
7058 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_field,v1);(yyval.
val)=const_decl(p, v2);}
7060 #line 7056 "ripper.c"
7064 #line 1975 "ripper.y"
7067 rb_backref_error(p, (yyvsp[0].val));
7070 {
VALUE v1,v2;v1=var_field(p, (yyvsp[0].val));v2=dispatch1(assign_error,v1);(yyval.
val)=v2;}ripper_error(p);
7072 #line 7068 "ripper.c"
7076 #line 1985 "ripper.y"
7079 yyerror1(&(yylsp[0]),
"class/module name must be CONSTANT");
7081 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(class_name_error,v1);(yyval.
val)=v2;}ripper_error(p);
7083 #line 7079 "ripper.c"
7087 #line 1995 "ripper.y"
7092 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
7094 #line 7090 "ripper.c"
7098 #line 2002 "ripper.y"
7103 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(const_ref,v1);(yyval.
val)=v2;}
7105 #line 7101 "ripper.c"
7109 #line 2009 "ripper.y"
7112 (yyval.
val) =
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7114 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
7116 #line 7112 "ripper.c"
7120 #line 2021 "ripper.y"
7123 (yyval.
val) = (yyvsp[0].val);
7125 #line 7121 "ripper.c"
7129 #line 2029 "ripper.y"
7134 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(symbol_literal,v1);(yyval.
val)=v2;}
7136 #line 7132 "ripper.c"
7140 #line 2039 "ripper.y"
7147 #line 7143 "ripper.c"
7151 #line 2045 "ripper.y"
7153 #line 7149 "ripper.c"
7157 #line 2046 "ripper.y"
7161 (yyval.
val) = block_append(p, (yyvsp[-3].val), undef);
7165 #line 7161 "ripper.c"
7169 #line 2055 "ripper.y"
7171 #line 7167 "ripper.c"
7175 #line 2056 "ripper.y"
7177 #line 7173 "ripper.c"
7181 #line 2057 "ripper.y"
7183 #line 7179 "ripper.c"
7187 #line 2058 "ripper.y"
7189 #line 7185 "ripper.c"
7193 #line 2059 "ripper.y"
7195 #line 7191 "ripper.c"
7199 #line 2060 "ripper.y"
7201 #line 7197 "ripper.c"
7205 #line 2061 "ripper.y"
7207 #line 7203 "ripper.c"
7211 #line 2062 "ripper.y"
7213 #line 7209 "ripper.c"
7217 #line 2063 "ripper.y"
7219 #line 7215 "ripper.c"
7223 #line 2064 "ripper.y"
7225 #line 7221 "ripper.c"
7229 #line 2065 "ripper.y"
7231 #line 7227 "ripper.c"
7235 #line 2066 "ripper.y"
7237 #line 7233 "ripper.c"
7241 #line 2067 "ripper.y"
7243 #line 7239 "ripper.c"
7247 #line 2068 "ripper.y"
7249 #line 7245 "ripper.c"
7253 #line 2069 "ripper.y"
7255 #line 7251 "ripper.c"
7259 #line 2070 "ripper.y"
7261 #line 7257 "ripper.c"
7265 #line 2071 "ripper.y"
7267 #line 7263 "ripper.c"
7271 #line 2072 "ripper.y"
7273 #line 7269 "ripper.c"
7277 #line 2073 "ripper.y"
7279 #line 7275 "ripper.c"
7283 #line 2074 "ripper.y"
7285 #line 7281 "ripper.c"
7289 #line 2075 "ripper.y"
7291 #line 7287 "ripper.c"
7295 #line 2076 "ripper.y"
7297 #line 7293 "ripper.c"
7301 #line 2077 "ripper.y"
7303 #line 7299 "ripper.c"
7307 #line 2078 "ripper.y"
7309 #line 7305 "ripper.c"
7313 #line 2079 "ripper.y"
7315 #line 7311 "ripper.c"
7319 #line 2080 "ripper.y"
7321 #line 7317 "ripper.c"
7325 #line 2081 "ripper.y"
7327 #line 7323 "ripper.c"
7331 #line 2082 "ripper.y"
7333 #line 7329 "ripper.c"
7337 #line 2083 "ripper.y"
7339 #line 7335 "ripper.c"
7343 #line 2084 "ripper.y"
7345 #line 7341 "ripper.c"
7349 #line 2102 "ripper.y"
7352 (yyval.
val) = node_assign(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7354 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.
val)=v3;}
7356 #line 7352 "ripper.c"
7360 #line 2109 "ripper.y"
7363 (yyval.
val) = new_op_assign(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7365 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.
val)=v4;}
7367 #line 7363 "ripper.c"
7371 #line 2116 "ripper.y"
7375 (yyval.
val) = new_ary_op_assign(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-3]), &(yyloc));
7377 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].val);v2=escape_Qundef((yyvsp[-3].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7379 #line 7375 "ripper.c"
7383 #line 2124 "ripper.y"
7387 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7389 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7391 #line 7387 "ripper.c"
7395 #line 2132 "ripper.y"
7399 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7401 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7403 #line 7399 "ripper.c"
7407 #line 2140 "ripper.y"
7411 (yyval.
val) = new_attr_op_assign(p, (yyvsp[-4].val),
ID2VAL(
idCOLON2), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7413 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-2].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-1].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.
val)=v8;}
7415 #line 7411 "ripper.c"
7419 #line 2148 "ripper.y"
7422 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-2]));
7423 (yyval.
val) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-4].val), (yyvsp[-2].val), &loc), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7425 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-1].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.
val)=v7;}
7427 #line 7423 "ripper.c"
7431 #line 2156 "ripper.y"
7434 (yyval.
val) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-2].val), &(yyloc)), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7436 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=dispatch1(top_const_field,v1);v3=v2;v4=(yyvsp[-1].val);v5=(yyvsp[0].val);v6=dispatch3(opassign,v3,v4,v5);(yyval.
val)=v6;}
7438 #line 7434 "ripper.c"
7442 #line 2163 "ripper.y"
7445 rb_backref_error(p, (yyvsp[-2].val));
7448 {
VALUE v1,v2,v3,v4,v5,v6;v1=var_field(p, (yyvsp[-2].val));v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);v5=v4;v6=dispatch1(assign_error,v5);(yyval.
val)=v6;}ripper_error(p);
7450 #line 7446 "ripper.c"
7454 #line 2171 "ripper.y"
7459 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7461 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7463 #line 7459 "ripper.c"
7467 #line 2180 "ripper.y"
7472 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7474 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7476 #line 7472 "ripper.c"
7480 #line 2189 "ripper.y"
7484 loc.beg_pos = (yylsp[0]).end_pos;
7485 loc.end_pos = (yylsp[0]).end_pos;
7490 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7492 #line 7488 "ripper.c"
7496 #line 2201 "ripper.y"
7500 loc.beg_pos = (yylsp[0]).end_pos;
7501 loc.end_pos = (yylsp[0]).end_pos;
7506 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7508 #line 7504 "ripper.c"
7512 #line 2213 "ripper.y"
7516 loc.beg_pos = (yylsp[-1]).beg_pos;
7517 loc.end_pos = (yylsp[-1]).beg_pos;
7522 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
7524 #line 7520 "ripper.c"
7528 #line 2225 "ripper.y"
7532 loc.beg_pos = (yylsp[-1]).beg_pos;
7533 loc.end_pos = (yylsp[-1]).beg_pos;
7538 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
7540 #line 7536 "ripper.c"
7544 #line 2237 "ripper.y"
7546 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'+', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7548 #line 7544 "ripper.c"
7552 #line 2241 "ripper.y"
7554 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'-', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7556 #line 7552 "ripper.c"
7560 #line 2245 "ripper.y"
7562 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'*', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7564 #line 7560 "ripper.c"
7568 #line 2249 "ripper.y"
7570 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'/', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7572 #line 7568 "ripper.c"
7576 #line 2253 "ripper.y"
7578 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'%', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7580 #line 7576 "ripper.c"
7584 #line 2257 "ripper.y"
7586 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7588 #line 7584 "ripper.c"
7592 #line 2261 "ripper.y"
7594 (yyval.
val) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].val),
idPow, (yyvsp[0].val), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
7596 #line 7592 "ripper.c"
7600 #line 2265 "ripper.y"
7602 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUPlus, &(yylsp[-1]), &(yyloc));
7604 #line 7600 "ripper.c"
7608 #line 2269 "ripper.y"
7610 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
idUMinus, &(yylsp[-1]), &(yyloc));
7612 #line 7608 "ripper.c"
7616 #line 2273 "ripper.y"
7618 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'|', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7620 #line 7616 "ripper.c"
7624 #line 2277 "ripper.y"
7626 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'^', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7628 #line 7624 "ripper.c"
7632 #line 2281 "ripper.y"
7634 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
'&', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7636 #line 7632 "ripper.c"
7640 #line 2285 "ripper.y"
7642 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idCmp, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7644 #line 7640 "ripper.c"
7648 #line 2290 "ripper.y"
7650 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7652 #line 7648 "ripper.c"
7656 #line 2294 "ripper.y"
7658 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idEqq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7660 #line 7656 "ripper.c"
7664 #line 2298 "ripper.y"
7666 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7668 #line 7664 "ripper.c"
7672 #line 2302 "ripper.y"
7674 (yyval.
val) = match_op(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7676 #line 7672 "ripper.c"
7680 #line 2306 "ripper.y"
7682 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idNeqTilde, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7684 #line 7680 "ripper.c"
7688 #line 2310 "ripper.y"
7690 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7692 #line 7688 "ripper.c"
7696 #line 2314 "ripper.y"
7698 (yyval.
val) = call_uni_op(p, (yyvsp[0].val),
'~', &(yylsp[-1]), &(yyloc));
7700 #line 7696 "ripper.c"
7704 #line 2318 "ripper.y"
7706 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idLTLT, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7708 #line 7704 "ripper.c"
7712 #line 2322 "ripper.y"
7714 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val),
idGTGT, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7716 #line 7712 "ripper.c"
7720 #line 2326 "ripper.y"
7722 (yyval.
val) = logop(p,
idANDOP, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7724 #line 7720 "ripper.c"
7728 #line 2330 "ripper.y"
7730 (yyval.
val) = logop(p,
idOROP, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7732 #line 7728 "ripper.c"
7736 #line 2333 "ripper.y"
7738 #line 7734 "ripper.c"
7742 #line 2334 "ripper.y"
7745 (yyval.
val) = new_defined(p, (yyvsp[0].val), &(yyloc));
7747 #line 7743 "ripper.c"
7751 #line 2339 "ripper.y"
7755 (yyval.
val) = new_if(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
7756 fixpos((yyval.
val), (yyvsp[-5].val));
7758 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].val);v2=(yyvsp[-3].val);v3=(yyvsp[0].val);v4=dispatch3(ifop,v1,v2,v3);(yyval.
val)=v4;}
7760 #line 7756 "ripper.c"
7764 #line 2348 "ripper.y"
7766 (yyval.
val) = (yyvsp[0].val);
7768 #line 7764 "ripper.c"
7772 #line 2353 "ripper.y"
7773 {(yyval.
val) =
'>';}
7774 #line 7770 "ripper.c"
7778 #line 2354 "ripper.y"
7779 {(yyval.
val) =
'<';}
7780 #line 7776 "ripper.c"
7784 #line 2355 "ripper.y"
7786 #line 7782 "ripper.c"
7790 #line 2356 "ripper.y"
7792 #line 7788 "ripper.c"
7796 #line 2360 "ripper.y"
7798 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7800 #line 7796 "ripper.c"
7804 #line 2364 "ripper.y"
7807 (yyval.
val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7809 #line 7805 "ripper.c"
7813 #line 2371 "ripper.y"
7816 (yyval.
val) = (yyvsp[0].val);
7818 #line 7814 "ripper.c"
7822 #line 2379 "ripper.y"
7824 (yyval.
val) = (yyvsp[-1].val);
7826 #line 7822 "ripper.c"
7830 #line 2383 "ripper.y"
7833 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
7835 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
7837 #line 7833 "ripper.c"
7841 #line 2390 "ripper.y"
7844 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : 0;
7846 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
7848 #line 7844 "ripper.c"
7852 #line 2399 "ripper.y"
7855 (yyval.
val) = (yyvsp[0].val);
7857 #line 7853 "ripper.c"
7861 #line 2404 "ripper.y"
7864 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7868 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.
val)=v3;}
7870 #line 7866 "ripper.c"
7874 #line 2415 "ripper.y"
7877 (yyval.
val) = (yyvsp[-1].val);
7879 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
7881 #line 7877 "ripper.c"
7885 #line 2422 "ripper.y"
7903 (yyval.
val) = arg_append(p, splat, new_hash(p, kwrest, &(yylsp[-1])), &(yylsp[-1]));
7905 (yyval.
val) = splat;
7907 (yyval.
val) = arg_blk_pass((yyval.
val), block);
7909 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(arg_paren,v1);(yyval.
val)=v2;}
7912 #line 7908 "ripper.c"
7916 #line 2457 "ripper.y"
7918 (yyval.
val) = (yyvsp[-1].val);
7920 #line 7916 "ripper.c"
7924 #line 2461 "ripper.y"
7927 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
7929 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.
val)=v5;}
7931 #line 7927 "ripper.c"
7935 #line 2468 "ripper.y"
7938 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
7940 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.
val)=v6;}
7942 #line 7938 "ripper.c"
7946 #line 2477 "ripper.y"
7952 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
7954 #line 7950 "ripper.c"
7958 #line 2485 "ripper.y"
7961 (yyval.
val) = arg_blk_pass((yyvsp[-1].val), (yyvsp[0].val));
7963 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_block,v1,v2);(yyval.
val)=v3;}
7965 #line 7961 "ripper.c"
7969 #line 2492 "ripper.y"
7972 (yyval.
val) = (yyvsp[-1].val) ?
NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
7973 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].val));
7975 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);v7=v6;v8=(yyvsp[0].val);v9=dispatch2(args_add_block,v7,v8);(yyval.
val)=v9;}
7977 #line 7973 "ripper.c"
7981 #line 2500 "ripper.y"
7984 (yyval.
val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
7985 (yyval.
val) = arg_blk_pass((yyval.
val), (yyvsp[0].val));
7987 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(args_add_block,v6,v7);(yyval.
val)=v8;}
7989 #line 7985 "ripper.c"
7993 #line 2508 "ripper.y"
7994 {{
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_block,v2,v3);(yyval.
val)=v4;}}
7995 #line 7991 "ripper.c"
7999 #line 2511 "ripper.y"
8017 #line 8013 "ripper.c"
8021 #line 2529 "ripper.y"
8037 (yyval.
val) = (yyvsp[0].val);
8039 #line 8035 "ripper.c"
8043 #line 2549 "ripper.y"
8048 (yyval.
val)=(yyvsp[0].val);
8050 #line 8046 "ripper.c"
8054 #line 2558 "ripper.y"
8056 (yyval.
val) = (yyvsp[0].val);
8058 #line 8054 "ripper.c"
8062 #line 2562 "ripper.y"
8066 #line 8062 "ripper.c"
8070 #line 2568 "ripper.y"
8075 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
8077 #line 8073 "ripper.c"
8081 #line 2575 "ripper.y"
8086 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
8088 #line 8084 "ripper.c"
8092 #line 2582 "ripper.y"
8095 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8097 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
8099 #line 8095 "ripper.c"
8103 #line 2589 "ripper.y"
8106 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
8108 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
8110 #line 8106 "ripper.c"
8114 #line 2602 "ripper.y"
8117 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8119 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(mrhs_add,v3,v4);(yyval.
val)=v5;}
8121 #line 8117 "ripper.c"
8125 #line 2609 "ripper.y"
8128 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
8130 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(mrhs_add_star,v3,v4);(yyval.
val)=v5;}
8132 #line 8128 "ripper.c"
8136 #line 2616 "ripper.y"
8141 {
VALUE v1,v2,v3,v4;v1=dispatch0(mrhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mrhs_add_star,v2,v3);(yyval.
val)=v4;}
8143 #line 8139 "ripper.c"
8147 #line 2635 "ripper.y"
8152 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[0].val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);(yyval.
val)=v6;}
8154 #line 8150 "ripper.c"
8158 #line 2642 "ripper.y"
8162 #line 8158 "ripper.c"
8166 #line 2647 "ripper.y"
8170 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8174 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(begin,v1);(yyval.
val)=v2;}
8176 #line 8172 "ripper.c"
8180 #line 2656 "ripper.y"
8182 #line 8178 "ripper.c"
8186 #line 2657 "ripper.y"
8191 {
VALUE v1,v2;v1=0;v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8193 #line 8189 "ripper.c"
8197 #line 2663 "ripper.y"
8199 #line 8195 "ripper.c"
8203 #line 2664 "ripper.y"
8207 (yyval.
val) = (yyvsp[-2].val);
8209 {
VALUE v1,v2;v1=(yyvsp[-2].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8211 #line 8207 "ripper.c"
8215 #line 2672 "ripper.y"
8219 (yyval.
val) = (yyvsp[-1].val);
8221 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
8223 #line 8219 "ripper.c"
8227 #line 2680 "ripper.y"
8230 (yyval.
val) =
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8232 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
8234 #line 8230 "ripper.c"
8238 #line 2687 "ripper.y"
8243 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
8245 #line 8241 "ripper.c"
8249 #line 2694 "ripper.y"
8254 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(array,v1);(yyval.
val)=v2;}
8256 #line 8252 "ripper.c"
8260 #line 2701 "ripper.y"
8263 (yyval.
val) = new_hash(p, (yyvsp[-1].val), &(yyloc));
8266 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(hash,v1);(yyval.
val)=v2;}
8268 #line 8264 "ripper.c"
8272 #line 2709 "ripper.y"
8277 {
VALUE v1;v1=dispatch0(return0);(yyval.
val)=v1;}
8279 #line 8275 "ripper.c"
8283 #line 2716 "ripper.y"
8286 (yyval.
val) = new_yield(p, (yyvsp[-1].val), &(yyloc));
8288 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);v3=v2;v4=dispatch1(yield,v3);(yyval.
val)=v4;}
8290 #line 8286 "ripper.c"
8294 #line 2723 "ripper.y"
8299 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(args_new);v2=v1;v3=dispatch1(paren,v2);v4=v3;v5=dispatch1(yield,v4);(yyval.
val)=v5;}
8301 #line 8297 "ripper.c"
8305 #line 2730 "ripper.y"
8310 {
VALUE v1;v1=dispatch0(yield0);(yyval.
val)=v1;}
8312 #line 8308 "ripper.c"
8316 #line 2736 "ripper.y"
8318 #line 8314 "ripper.c"
8322 #line 2737 "ripper.y"
8325 (yyval.
val) = new_defined(p, (yyvsp[-1].val), &(yyloc));
8327 #line 8323 "ripper.c"
8331 #line 2742 "ripper.y"
8333 (yyval.
val) = call_uni_op(p, method_cond(p, (yyvsp[-1].val), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
8335 #line 8331 "ripper.c"
8339 #line 2746 "ripper.y"
8341 (yyval.
val) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
8343 #line 8339 "ripper.c"
8347 #line 2750 "ripper.y"
8350 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8352 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=(yyvsp[-1].val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);v7=v6;v8=(yyvsp[0].val);v9=dispatch2(method_add_block,v7,v8);(yyval.
val)=v9;}
8354 #line 8350 "ripper.c"
8358 #line 2758 "ripper.y"
8361 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
8362 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8364 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
8366 #line 8362 "ripper.c"
8370 #line 2766 "ripper.y"
8372 token_info_push(p,
"->", &(yylsp[0]));
8374 #line 8370 "ripper.c"
8378 #line 2770 "ripper.y"
8380 (yyval.
val) = (yyvsp[0].val);
8385 #line 8381 "ripper.c"
8389 #line 2780 "ripper.y"
8392 (yyval.
val) = new_if(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
8393 fixpos((yyval.
val), (yyvsp[-4].val));
8395 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(
if,v1,v2,v3);(yyval.
val)=v4;}
8397 #line 8393 "ripper.c"
8401 #line 2791 "ripper.y"
8404 (yyval.
val) = new_unless(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
8405 fixpos((yyval.
val), (yyvsp[-4].val));
8407 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(unless,v1,v2,v3);(yyval.
val)=v4;}
8409 #line 8405 "ripper.c"
8413 #line 2801 "ripper.y"
8416 (yyval.
val) =
NEW_WHILE(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].val), 1, &(yyloc));
8417 fixpos((yyval.
val), (yyvsp[-2].val));
8419 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(
while,v1,v2);(yyval.
val)=v3;}
8421 #line 8417 "ripper.c"
8425 #line 2811 "ripper.y"
8428 (yyval.
val) =
NEW_UNTIL(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].val), 1, &(yyloc));
8429 fixpos((yyval.
val), (yyvsp[-2].val));
8431 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(until,v1,v2);(yyval.
val)=v3;}
8433 #line 8429 "ripper.c"
8437 #line 2819 "ripper.y"
8442 #line 8438 "ripper.c"
8446 #line 2825 "ripper.y"
8451 (yyval.
val) =
NEW_CASE((yyvsp[-4].val), (yyvsp[-1].val), &(yyloc));
8452 fixpos((yyval.
val), (yyvsp[-4].val));
8454 {
VALUE v1,v2,v3;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8456 #line 8452 "ripper.c"
8460 #line 2835 "ripper.y"
8465 #line 8461 "ripper.c"
8469 #line 2841 "ripper.y"
8476 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8478 #line 8474 "ripper.c"
8482 #line 2852 "ripper.y"
8485 (yyval.
val) = new_case3(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
8487 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.
val)=v3;}
8489 #line 8485 "ripper.c"
8493 #line 2861 "ripper.y"
8505 ID id = internal_id(p);
8507 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
8509 tbl[0] = 1 ; tbl[1] =
id ;
8512 switch (
nd_type((yyvsp[-4].val))) {
8516 (yyvsp[-4].val)->
nd_value = internal_var;
8519 m->nd_next = (yyvsp[-4].val);
8522 m->nd_next = node_assign(p, (yyvsp[-4].val),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])), &(yylsp[-4]));
8525 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].val), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, &(yylsp[-4]));
8528 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
8530 (yyval.
val) =
NEW_FOR((yyvsp[-2].val), scope, &(yyloc));
8531 fixpos((yyval.
val), (yyvsp[-4].val));
8533 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
for,v1,v2,v3);(yyval.
val)=v4;}
8535 #line 8531 "ripper.c"
8539 #line 2903 "ripper.y"
8542 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
8543 yyerror1(&loc,
"class definition in method body");
8549 #line 8545 "ripper.c"
8553 #line 2914 "ripper.y"
8556 (yyval.
val) =
NEW_CLASS((yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[-3].val), &(yyloc));
8558 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8561 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-1].val);v4=dispatch3(
class,v1,v2,v3);(yyval.
val)=v4;}
8565 #line 8561 "ripper.c"
8569 #line 2926 "ripper.y"
8576 #line 8572 "ripper.c"
8580 #line 2935 "ripper.y"
8583 (yyval.
val) =
NEW_SCLASS((yyvsp[-4].val), (yyvsp[-1].val), &(yyloc));
8585 set_line_body((yyvsp[-1].val),
nd_line((yyvsp[-4].val)));
8586 fixpos((yyval.
val), (yyvsp[-4].val));
8588 {
VALUE v1,v2,v3;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=dispatch2(sclass,v1,v2);(yyval.
val)=v3;}
8590 p->
in_def = (yyvsp[-3].num) & 1;
8591 p->
in_class = ((yyvsp[-3].num) >> 1) & 1;
8593 #line 8589 "ripper.c"
8597 #line 2948 "ripper.y"
8600 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
8601 yyerror1(&loc,
"module definition in method body");
8607 #line 8603 "ripper.c"
8611 #line 2959 "ripper.y"
8614 (yyval.
val) =
NEW_MODULE((yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
8616 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
8619 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(module,v1,v2);(yyval.
val)=v3;}
8623 #line 8619 "ripper.c"
8627 #line 2971 "ripper.y"
8629 numparam_name(p,
get_id((yyvsp[0].val)));
8634 #line 8630 "ripper.c"
8638 #line 2977 "ripper.y"
8643 #line 8639 "ripper.c"
8647 #line 2984 "ripper.y"
8650 NODE *body = remove_begin((yyvsp[-1].val));
8651 reduce_nodes(p, &body);
8652 (yyval.
val) =
NEW_DEFN((yyvsp[-5].val), (yyvsp[-2].val), body, &(yyloc));
8654 set_line_body(body, (yylsp[-6]).beg_pos.lineno);
8656 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(def,v1,v2,v3);(yyval.
val)=v4;}
8658 p->
in_def = (yyvsp[-3].num) & 1;
8661 #line 8657 "ripper.c"
8665 #line 2997 "ripper.y"
8667 #line 8663 "ripper.c"
8671 #line 2998 "ripper.y"
8673 numparam_name(p,
get_id((yyvsp[0].val)));
8674 (yyvsp[-1].num) = p->
in_def;
8681 #line 8677 "ripper.c"
8685 #line 3010 "ripper.y"
8688 NODE *body = remove_begin((yyvsp[-1].val));
8689 reduce_nodes(p, &body);
8690 (yyval.
val) =
NEW_DEFS((yyvsp[-7].val), (yyvsp[-4].val), (yyvsp[-2].val), body, &(yyloc));
8692 set_line_body(body, (yylsp[-8]).beg_pos.lineno);
8694 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-7].val);v2=(yyvsp[-6].val);v3=(yyvsp[-4].val);v4=(yyvsp[-2].val);v5=(yyvsp[-1].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.
val)=v6;}
8696 p->
in_def = (yyvsp[-5].num) & 1;
8699 #line 8695 "ripper.c"
8703 #line 3024 "ripper.y"
8708 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(
break,v2);(yyval.
val)=v3;}
8710 #line 8706 "ripper.c"
8714 #line 3031 "ripper.y"
8719 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(next,v2);(yyval.
val)=v3;}
8721 #line 8717 "ripper.c"
8725 #line 3038 "ripper.y"
8730 {
VALUE v1;v1=dispatch0(redo);(yyval.
val)=v1;}
8732 #line 8728 "ripper.c"
8736 #line 3045 "ripper.y"
8741 {
VALUE v1;v1=dispatch0(retry);(yyval.
val)=v1;}
8743 #line 8739 "ripper.c"
8747 #line 3054 "ripper.y"
8750 (yyval.
val) = (yyvsp[0].val);
8752 #line 8748 "ripper.c"
8756 #line 3061 "ripper.y"
8758 token_info_push(p,
"begin", &(yyloc));
8760 #line 8756 "ripper.c"
8764 #line 3067 "ripper.y"
8767 token_info_push(p,
"if", &(yyloc));
8779 #line 8775 "ripper.c"
8783 #line 3084 "ripper.y"
8785 token_info_push(p,
"unless", &(yyloc));
8787 #line 8783 "ripper.c"
8791 #line 3090 "ripper.y"
8793 token_info_push(p,
"while", &(yyloc));
8795 #line 8791 "ripper.c"
8799 #line 3096 "ripper.y"
8801 token_info_push(p,
"until", &(yyloc));
8803 #line 8799 "ripper.c"
8807 #line 3102 "ripper.y"
8809 token_info_push(p,
"case", &(yyloc));
8811 #line 8807 "ripper.c"
8815 #line 3108 "ripper.y"
8817 token_info_push(p,
"for", &(yyloc));
8819 #line 8815 "ripper.c"
8823 #line 3114 "ripper.y"
8825 token_info_push(p,
"class", &(yyloc));
8827 #line 8823 "ripper.c"
8831 #line 3120 "ripper.y"
8833 token_info_push(p,
"module", &(yyloc));
8835 #line 8831 "ripper.c"
8839 #line 3126 "ripper.y"
8841 token_info_push(p,
"def", &(yyloc));
8843 #line 8839 "ripper.c"
8847 #line 3132 "ripper.y"
8849 token_info_push(p,
"do", &(yyloc));
8851 #line 8847 "ripper.c"
8855 #line 3138 "ripper.y"
8857 token_info_push(p,
"do", &(yyloc));
8859 #line 8855 "ripper.c"
8863 #line 3144 "ripper.y"
8865 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
8867 #line 8863 "ripper.c"
8871 #line 3150 "ripper.y"
8873 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
8875 #line 8871 "ripper.c"
8879 #line 3156 "ripper.y"
8881 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
8883 #line 8879 "ripper.c"
8887 #line 3162 "ripper.y"
8890 int same = ptinfo_beg &&
strcmp(ptinfo_beg->
token,
"case") != 0;
8891 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
8896 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
8897 if (!e.
nonspc) *ptinfo_beg = e;
8900 #line 8896 "ripper.c"
8904 #line 3177 "ripper.y"
8907 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
8909 #line 8905 "ripper.c"
8913 #line 3184 "ripper.y"
8915 token_info_pop(p,
"end", &(yyloc));
8917 #line 8913 "ripper.c"
8921 #line 3190 "ripper.y"
8924 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
8926 #line 8922 "ripper.c"
8930 #line 3209 "ripper.y"
8933 (yyval.
val) = new_if(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8934 fixpos((yyval.
val), (yyvsp[-3].val));
8936 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(elsif,v1,v2,v3);(yyval.
val)=v4;}
8938 #line 8934 "ripper.c"
8942 #line 3220 "ripper.y"
8945 (yyval.
val) = (yyvsp[0].val);
8947 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
else,v1);(yyval.
val)=v2;}
8949 #line 8945 "ripper.c"
8953 #line 3233 "ripper.y"
8956 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8957 mark_lvar_used(p, (yyval.
val));
8959 (yyval.
val)=assignable(p, (yyvsp[0].val));
8961 #line 8957 "ripper.c"
8965 #line 3241 "ripper.y"
8968 (yyval.
val) = (yyvsp[-1].val);
8970 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
8972 #line 8968 "ripper.c"
8976 #line 3250 "ripper.y"
8981 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.
val)=v4;}
8983 #line 8979 "ripper.c"
8987 #line 3257 "ripper.y"
8990 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].val));
8992 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.
val)=v3;}
8994 #line 8990 "ripper.c"
8998 #line 3266 "ripper.y"
9003 (yyval.
val)=(yyvsp[0].val);
9005 #line 9001 "ripper.c"
9009 #line 3273 "ripper.y"
9012 (yyval.
val) =
NEW_MASGN((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9014 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.
val)=v3;}
9016 #line 9012 "ripper.c"
9020 #line 3280 "ripper.y"
9025 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.
val)=v6;}
9027 #line 9023 "ripper.c"
9031 #line 3287 "ripper.y"
9036 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.
val)=v4;}
9038 #line 9034 "ripper.c"
9042 #line 3294 "ripper.y"
9047 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.
val)=v7;}
9049 #line 9045 "ripper.c"
9053 #line 3303 "ripper.y"
9056 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
9057 mark_lvar_used(p, (yyval.
val));
9059 (yyval.
val)=assignable(p, (yyvsp[0].val));
9061 #line 9057 "ripper.c"
9065 #line 3311 "ripper.y"
9072 #line 9068 "ripper.c"
9076 #line 3320 "ripper.y"
9078 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
9080 #line 9076 "ripper.c"
9084 #line 3324 "ripper.y"
9086 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yylsp[-1]));
9088 #line 9084 "ripper.c"
9092 #line 3328 "ripper.y"
9094 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
9096 #line 9092 "ripper.c"
9100 #line 3332 "ripper.y"
9104 #line 9100 "ripper.c"
9108 #line 3336 "ripper.y"
9110 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
9112 #line 9108 "ripper.c"
9116 #line 3342 "ripper.y"
9118 (yyval.
val) = (yyvsp[0].val);
9120 #line 9116 "ripper.c"
9124 #line 3346 "ripper.y"
9128 #line 9124 "ripper.c"
9132 #line 3352 "ripper.y"
9134 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9136 #line 9132 "ripper.c"
9140 #line 3356 "ripper.y"
9142 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9144 #line 9140 "ripper.c"
9148 #line 3360 "ripper.y"
9150 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9152 #line 9148 "ripper.c"
9156 #line 3364 "ripper.y"
9158 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9160 #line 9156 "ripper.c"
9164 #line 3368 "ripper.y"
9166 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9168 #line 9164 "ripper.c"
9172 #line 3372 "ripper.y"
9176 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
NODE_SPECIAL_EXCESSIVE_COMMA,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone, &(yylsp[-1])), &(yyloc));
9178 {
VALUE v1;v1=dispatch0(excessed_comma);(yyval.
val)=new_args(p, (yyvsp[-1].val),
Qnone, v1,
Qnone, new_args_tail(p,
Qnone,
Qnone,
Qnone,
NULL),
NULL);}
9180 #line 9176 "ripper.c"
9184 #line 3380 "ripper.y"
9186 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9188 #line 9184 "ripper.c"
9192 #line 3384 "ripper.y"
9194 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9196 #line 9192 "ripper.c"
9200 #line 3388 "ripper.y"
9202 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9204 #line 9200 "ripper.c"
9208 #line 3392 "ripper.y"
9210 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9212 #line 9208 "ripper.c"
9216 #line 3396 "ripper.y"
9218 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9220 #line 9216 "ripper.c"
9224 #line 3400 "ripper.y"
9226 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9228 #line 9224 "ripper.c"
9232 #line 3404 "ripper.y"
9234 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
9236 #line 9232 "ripper.c"
9240 #line 3408 "ripper.y"
9242 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9244 #line 9240 "ripper.c"
9248 #line 3412 "ripper.y"
9252 #line 9248 "ripper.c"
9256 #line 3419 "ripper.y"
9260 #line 9256 "ripper.c"
9264 #line 3425 "ripper.y"
9271 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11;v1=
Qnil;v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=escape_Qundef((yyvsp[-1].val));v11=dispatch2(block_var,v9,v10);(yyval.
val)=v11;}
9273 #line 9269 "ripper.c"
9277 #line 3434 "ripper.y"
9282 (yyval.
val) = (yyvsp[-2].val);
9284 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(block_var,v1,v2);(yyval.
val)=v3;}
9286 #line 9282 "ripper.c"
9290 #line 3446 "ripper.y"
9294 #line 9290 "ripper.c"
9298 #line 3450 "ripper.y"
9303 (yyval.
val)=(yyvsp[-1].val);
9305 #line 9301 "ripper.c"
9309 #line 3459 "ripper.y"
9311 #line 9307 "ripper.c"
9315 #line 3461 "ripper.y"
9317 #line 9313 "ripper.c"
9321 #line 3465 "ripper.y"
9323 new_bv(p,
get_id((yyvsp[0].val)));
9326 #line 9322 "ripper.c"
9330 #line 3470 "ripper.y"
9334 #line 9330 "ripper.c"
9338 #line 3475 "ripper.y"
9340 (yyval.
vars) = dyna_push(p);
9342 #line 9338 "ripper.c"
9346 #line 3478 "ripper.y"
9351 #line 9347 "ripper.c"
9355 #line 3482 "ripper.y"
9360 #line 9356 "ripper.c"
9364 #line 3486 "ripper.y"
9366 (yyval.
node) = numparam_push(p);
9368 #line 9364 "ripper.c"
9372 #line 3490 "ripper.y"
9376 #line 9372 "ripper.c"
9380 #line 3494 "ripper.y"
9386 (yyvsp[-2].val) = args_with_numbered(p, (yyvsp[-2].val), max_numparam);
9389 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9390 (yyval.
val) =
NEW_LAMBDA((yyvsp[-2].val), (yyvsp[0].val), &loc);
9395 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(lambda,v1,v2);(yyval.
val)=v3;}
9396 numparam_pop(p, (yyvsp[-3].node));
9397 dyna_pop(p, (yyvsp[-6].
vars));
9399 #line 9395 "ripper.c"
9403 #line 3515 "ripper.y"
9406 (yyval.
val) = (yyvsp[-2].val);
9409 {
VALUE v1,v2;v1=(yyvsp[-2].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
9411 #line 9407 "ripper.c"
9415 #line 3523 "ripper.y"
9418 if (!args_info_empty_p((yyvsp[0].val)->
nd_ainfo))
9421 (yyval.
val) = (yyvsp[0].val);
9423 #line 9419 "ripper.c"
9427 #line 3533 "ripper.y"
9429 token_info_pop(p,
"}", &(yylsp[0]));
9430 (yyval.
val) = (yyvsp[-1].val);
9432 #line 9428 "ripper.c"
9436 #line 3538 "ripper.y"
9438 (yyval.
val) = (yyvsp[-1].val);
9440 #line 9436 "ripper.c"
9444 #line 3544 "ripper.y"
9446 (yyval.
val) = (yyvsp[-1].val);
9448 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9452 #line 9448 "ripper.c"
9456 #line 3554 "ripper.y"
9463 block_dup_check(p, (yyvsp[-1].val)->
nd_args, (yyvsp[0].val));
9465 (yyval.
val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9466 fixpos((yyval.
val), (yyvsp[-1].val));
9468 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(method_add_block,v1,v2);(yyval.
val)=v3;}
9470 #line 9466 "ripper.c"
9474 #line 3568 "ripper.y"
9477 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9479 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9481 #line 9477 "ripper.c"
9485 #line 3575 "ripper.y"
9488 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
9490 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=v7==
Qundef ? v6 : dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
9492 #line 9488 "ripper.c"
9496 #line 3582 "ripper.y"
9499 (yyval.
val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
9501 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.
val)=v8;}
9503 #line 9499 "ripper.c"
9507 #line 3591 "ripper.y"
9510 (yyval.
val) = (yyvsp[-1].val);
9514 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(fcall,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(method_add_arg,v3,v4);(yyval.
val)=v5;}
9516 #line 9512 "ripper.c"
9520 #line 3600 "ripper.y"
9523 (yyval.
val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9526 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9528 #line 9524 "ripper.c"
9532 #line 3608 "ripper.y"
9535 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9538 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=
ID2VAL(
idCOLON2);v3=(yyvsp[-1].val);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9540 #line 9536 "ripper.c"
9544 #line 3616 "ripper.y"
9547 (yyval.
val) = new_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-2].val), (yyvsp[0].val),
Qnull, &(yylsp[0]), &(yyloc));
9551 #line 9547 "ripper.c"
9555 #line 3623 "ripper.y"
9558 (yyval.
val) = new_qcall(p, (yyvsp[-1].val), (yyvsp[-2].val),
ID2VAL(
idCall), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9561 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=
ID2VAL(
idCall);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9563 #line 9559 "ripper.c"
9567 #line 3631 "ripper.y"
9573 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].val);v2=
ID2VAL(
idCOLON2);v3=
ID2VAL(
idCall);v4=dispatch3(
call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.
val)=v7;}
9575 #line 9571 "ripper.c"
9579 #line 3639 "ripper.y"
9584 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(super,v1);(yyval.
val)=v2;}
9586 #line 9582 "ripper.c"
9590 #line 3646 "ripper.y"
9595 {
VALUE v1;v1=dispatch0(zsuper);(yyval.
val)=v1;}
9597 #line 9593 "ripper.c"
9601 #line 3653 "ripper.y"
9608 fixpos((yyval.
val), (yyvsp[-3].val));
9610 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref,v1,v2);(yyval.
val)=v3;}
9612 #line 9608 "ripper.c"
9616 #line 3666 "ripper.y"
9618 (yyval.
val) = (yyvsp[-1].val);
9620 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9624 #line 9620 "ripper.c"
9628 #line 3674 "ripper.y"
9630 (yyval.
val) = (yyvsp[-1].val);
9632 (yyval.
val)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
9636 #line 9632 "ripper.c"
9640 #line 3683 "ripper.y"
9641 {(yyval.
vars) = dyna_push(p);}
9642 #line 9638 "ripper.c"
9646 #line 3684 "ripper.y"
9651 #line 9647 "ripper.c"
9655 #line 3688 "ripper.y"
9657 (yyval.
node) = numparam_push(p);
9659 #line 9655 "ripper.c"
9663 #line 3692 "ripper.y"
9667 (yyvsp[-1].val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
9669 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9671 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].val);v3=dispatch2(brace_block,v1,v2);(yyval.
val)=v3;}
9672 numparam_pop(p, (yyvsp[-2].node));
9673 dyna_pop(p, (yyvsp[-4].
vars));
9675 #line 9671 "ripper.c"
9679 #line 3705 "ripper.y"
9680 {(yyval.
vars) = dyna_push(p);}
9681 #line 9677 "ripper.c"
9685 #line 3706 "ripper.y"
9690 #line 9686 "ripper.c"
9694 #line 3710 "ripper.y"
9696 (yyval.
node) = numparam_push(p);
9699 #line 9695 "ripper.c"
9703 #line 3715 "ripper.y"
9707 (yyvsp[-1].val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
9709 (yyval.
val) =
NEW_ITER((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9711 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].val);v3=dispatch2(do_block,v1,v2);(yyval.
val)=v3;}
9713 numparam_pop(p, (yyvsp[-2].node));
9714 dyna_pop(p, (yyvsp[-4].
vars));
9716 #line 9712 "ripper.c"
9720 #line 3730 "ripper.y"
9723 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
9726 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.
val)=v4;}
9728 #line 9724 "ripper.c"
9732 #line 3738 "ripper.y"
9737 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_star,v2,v3);(yyval.
val)=v4;}
9739 #line 9735 "ripper.c"
9743 #line 3745 "ripper.y"
9746 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
9747 (yyval.
val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9749 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(args_add,v1,v2);(yyval.
val)=v3;}
9751 #line 9747 "ripper.c"
9755 #line 3753 "ripper.y"
9758 (yyval.
val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
9760 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_star,v1,v2);(yyval.
val)=v3;}
9762 #line 9758 "ripper.c"
9766 #line 3764 "ripper.y"
9769 (yyval.
val) =
NEW_WHEN((yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9770 fixpos((yyval.
val), (yyvsp[-3].val));
9772 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(when,v1,v2,v3);(yyval.
val)=v4;}
9774 #line 9770 "ripper.c"
9778 #line 3778 "ripper.y"
9785 #line 9781 "ripper.c"
9789 #line 3784 "ripper.y"
9790 {(yyval.
tbl) = push_pvtbl(p);}
9791 #line 9787 "ripper.c"
9795 #line 3785 "ripper.y"
9796 {(yyval.
tbl) = push_pktbl(p);}
9797 #line 9793 "ripper.c"
9801 #line 3787 "ripper.y"
9802 {pop_pktbl(p, (yyvsp[-2].tbl));}
9803 #line 9799 "ripper.c"
9807 #line 3788 "ripper.y"
9808 {pop_pvtbl(p, (yyvsp[-4].tbl));}
9809 #line 9805 "ripper.c"
9813 #line 3789 "ripper.y"
9817 #line 9813 "ripper.c"
9821 #line 3794 "ripper.y"
9824 (yyval.
val) =
NEW_IN((yyvsp[-6].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9826 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-6].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(in,v1,v2,v3);(yyval.
val)=v4;}
9828 #line 9824 "ripper.c"
9832 #line 3808 "ripper.y"
9835 (yyval.
val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
9836 fixpos((yyval.
val), (yyvsp[0].val));
9838 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(if_mod,v1,v2);(yyval.
val)=v3;}
9840 #line 9836 "ripper.c"
9844 #line 3816 "ripper.y"
9847 (yyval.
val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
9848 fixpos((yyval.
val), (yyvsp[0].val));
9850 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(unless_mod,v1,v2);(yyval.
val)=v3;}
9852 #line 9848 "ripper.c"
9856 #line 3827 "ripper.y"
9858 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
9861 #line 9857 "ripper.c"
9865 #line 3832 "ripper.y"
9867 (yyval.
val) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].val)), (yyvsp[0].val), &(yyloc));
9873 #line 9869 "ripper.c"
9877 #line 3840 "ripper.y"
9879 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
9881 #line 9877 "ripper.c"
9885 #line 3844 "ripper.y"
9887 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[0].val), &(yyloc));
9889 #line 9885 "ripper.c"
9893 #line 3853 "ripper.y"
9897 n = list_append(p,
n, (yyvsp[0].val));
9898 (yyval.
val) = new_hash(p,
n, &(yyloc));
9900 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=
STATIC_ID2SYM(id_assoc);v3=(yyvsp[0].val);v4=dispatch3(binary,v1,v2,v3);(yyval.
val)=v4;}
9902 #line 9898 "ripper.c"
9906 #line 3865 "ripper.y"
9911 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=
STATIC_ID2SYM(
idOr);v3=(yyvsp[0].val);v4=dispatch3(binary,v1,v2,v3);(yyval.
val)=v4;}
9913 #line 9909 "ripper.c"
9917 #line 3874 "ripper.y"
9918 {(yyval.
tbl) = push_pktbl(p);}
9919 #line 9915 "ripper.c"
9923 #line 3875 "ripper.y"
9924 {(yyval.
tbl) = push_pktbl(p);}
9925 #line 9921 "ripper.c"
9929 #line 3879 "ripper.y"
9931 pop_pktbl(p, (yyvsp[-2].tbl));
9932 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), &(yyloc));
9938 #line 9934 "ripper.c"
9942 #line 3888 "ripper.y"
9944 pop_pktbl(p, (yyvsp[-2].tbl));
9945 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
9951 #line 9947 "ripper.c"
9955 #line 3897 "ripper.y"
9957 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9958 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
9960 #line 9956 "ripper.c"
9964 #line 3902 "ripper.y"
9966 pop_pktbl(p, (yyvsp[-2].tbl));
9967 (yyval.
val) = new_array_pattern(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), &(yyloc));
9973 #line 9969 "ripper.c"
9977 #line 3911 "ripper.y"
9979 pop_pktbl(p, (yyvsp[-2].tbl));
9980 (yyval.
val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
9986 #line 9982 "ripper.c"
9990 #line 3920 "ripper.y"
9992 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
9993 (yyval.
val) = new_array_pattern(p, (yyvsp[-2].val),
Qnone, (yyval.
val), &(yyloc));
9995 #line 9991 "ripper.c"
9999 #line 3924 "ripper.y"
10000 {(yyval.
tbl) = push_pktbl(p);}
10001 #line 9997 "ripper.c"
10005 #line 3925 "ripper.y"
10007 pop_pktbl(p, (yyvsp[-2].tbl));
10008 (yyval.
val) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].val), &(yyloc));
10010 #line 10006 "ripper.c"
10014 #line 3930 "ripper.y"
10016 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
10019 #line 10015 "ripper.c"
10023 #line 3935 "ripper.y"
10025 (yyval.
tbl) = push_pktbl(p);
10029 #line 10025 "ripper.c"
10033 #line 3941 "ripper.y"
10035 pop_pktbl(p, (yyvsp[-2].tbl));
10037 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyvsp[-1].val), &(yyloc));
10039 #line 10035 "ripper.c"
10043 #line 3947 "ripper.y"
10045 (yyval.
val) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
10046 (yyval.
val) = new_hash_pattern(p,
Qnone, (yyval.
val), &(yyloc));
10048 #line 10044 "ripper.c"
10052 #line 3951 "ripper.y"
10053 {(yyval.
tbl) = push_pktbl(p);}
10054 #line 10050 "ripper.c"
10058 #line 3952 "ripper.y"
10060 pop_pktbl(p, (yyvsp[-2].tbl));
10061 (yyval.
val) = (yyvsp[-1].val);
10063 #line 10059 "ripper.c"
10067 #line 3959 "ripper.y"
10071 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10076 #line 10072 "ripper.c"
10080 #line 3968 "ripper.y"
10082 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[0].val), 1, 0,
Qnone, &(yyloc));
10084 #line 10080 "ripper.c"
10088 #line 3972 "ripper.y"
10091 (yyval.
val) = new_array_pattern_tail(p, list_concat((yyvsp[-1].val), (yyvsp[0].val)), 0, 0,
Qnone, &(yyloc));
10094 (yyval.
val) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
10097 #line 10093 "ripper.c"
10101 #line 3981 "ripper.y"
10103 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-2].val), 1, (yyvsp[0].val),
Qnone, &(yyloc));
10105 #line 10101 "ripper.c"
10109 #line 3985 "ripper.y"
10111 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-4].val), 1, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10113 #line 10109 "ripper.c"
10117 #line 3989 "ripper.y"
10119 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-1].val), 1, 0,
Qnone, &(yyloc));
10121 #line 10117 "ripper.c"
10125 #line 3993 "ripper.y"
10127 (yyval.
val) = new_array_pattern_tail(p, (yyvsp[-3].val), 1, 0, (yyvsp[0].val), &(yyloc));
10129 #line 10125 "ripper.c"
10133 #line 4000 "ripper.y"
10135 (yyval.
val) = (yyvsp[-1].val);
10137 #line 10133 "ripper.c"
10141 #line 4004 "ripper.y"
10144 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[-1].val));
10148 #line 10144 "ripper.c"
10152 #line 4013 "ripper.y"
10154 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].val),
Qnone, &(yyloc));
10156 #line 10152 "ripper.c"
10160 #line 4017 "ripper.y"
10162 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10164 #line 10160 "ripper.c"
10168 #line 4021 "ripper.y"
10170 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10172 #line 10168 "ripper.c"
10176 #line 4025 "ripper.y"
10178 (yyval.
val) = new_array_pattern_tail(p,
Qnone, 1, 0, (yyvsp[0].val), &(yyloc));
10180 #line 10176 "ripper.c"
10184 #line 4032 "ripper.y"
10187 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].val));
10191 #line 10187 "ripper.c"
10195 #line 4041 "ripper.y"
10198 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10202 #line 10198 "ripper.c"
10206 #line 4050 "ripper.y"
10208 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)), (yyvsp[0].val), &(yyloc));
10210 #line 10206 "ripper.c"
10214 #line 4054 "ripper.y"
10216 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].val), &(yyloc)), 0, &(yyloc));
10218 #line 10214 "ripper.c"
10222 #line 4058 "ripper.y"
10224 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].val), &(yyloc)), 0, &(yyloc));
10226 #line 10222 "ripper.c"
10230 #line 4062 "ripper.y"
10232 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].val), &(yyloc));
10234 #line 10230 "ripper.c"
10238 #line 4066 "ripper.y"
10240 (yyval.
val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10242 #line 10238 "ripper.c"
10246 #line 4070 "ripper.y"
10248 (yyval.
val) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)),
ID2VAL(
idNil), &(yyloc));
10250 #line 10246 "ripper.c"
10254 #line 4076 "ripper.y"
10256 #line 10252 "ripper.c"
10260 #line 4078 "ripper.y"
10263 (yyval.
val) = list_concat((yyvsp[-2].val), (yyvsp[0].val));
10267 #line 10263 "ripper.c"
10271 #line 4087 "ripper.y"
10273 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].val)), &(yylsp[-1]));
10279 #line 10275 "ripper.c"
10283 #line 4095 "ripper.y"
10285 error_duplicate_pattern_key(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
10287 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
10289 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].val)), &(yylsp[0]));
10291 (yyval.
val) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].val), 0, &(yyloc)));
10295 #line 10291 "ripper.c"
10299 #line 4110 "ripper.y"
10301 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10304 NODE *node = dsym_node(p, (yyvsp[-1].val), &loc);
10308 if (ripper_is_node_yylval((yyvsp[-1].val)) &&
RNODE((yyvsp[-1].val))->nd_cval) {
10309 VALUE label =
RNODE((yyvsp[-1].val))->nd_cval;
10310 VALUE rval =
RNODE((yyvsp[-1].val))->nd_rval;
10316 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
10320 #line 10316 "ripper.c"
10324 #line 4133 "ripper.y"
10326 (yyval.
val) = (yyvsp[0].val);
10328 #line 10324 "ripper.c"
10332 #line 4137 "ripper.y"
10336 #line 10332 "ripper.c"
10340 #line 4143 "ripper.y"
10344 #line 10340 "ripper.c"
10348 #line 4150 "ripper.y"
10353 (yyval.
val) =
NEW_DOT2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10355 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10357 #line 10353 "ripper.c"
10361 #line 4159 "ripper.y"
10366 (yyval.
val) =
NEW_DOT3((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10368 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10370 #line 10366 "ripper.c"
10374 #line 4168 "ripper.y"
10378 loc.beg_pos = (yylsp[0]).end_pos;
10379 loc.end_pos = (yylsp[0]).end_pos;
10384 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10386 #line 10382 "ripper.c"
10390 #line 4180 "ripper.y"
10394 loc.beg_pos = (yylsp[0]).end_pos;
10395 loc.end_pos = (yylsp[0]).end_pos;
10400 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10402 #line 10398 "ripper.c"
10406 #line 4195 "ripper.y"
10410 loc.beg_pos = (yylsp[-1]).beg_pos;
10411 loc.end_pos = (yylsp[-1]).beg_pos;
10416 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.
val)=v3;}
10418 #line 10414 "ripper.c"
10422 #line 4207 "ripper.y"
10426 loc.beg_pos = (yylsp[-1]).beg_pos;
10427 loc.end_pos = (yylsp[-1]).beg_pos;
10432 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.
val)=v3;}
10434 #line 10430 "ripper.c"
10438 #line 4229 "ripper.y"
10441 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
10443 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10445 #line 10441 "ripper.c"
10449 #line 4236 "ripper.y"
10451 token_info_push(p,
"->", &(yylsp[0]));
10453 #line 10449 "ripper.c"
10457 #line 4240 "ripper.y"
10459 (yyval.
val) = (yyvsp[0].val);
10464 #line 10460 "ripper.c"
10468 #line 4249 "ripper.y"
10471 error_duplicate_pattern_variable(p, (yyvsp[0].val), &(yylsp[0]));
10472 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10474 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
10476 #line 10472 "ripper.c"
10480 #line 4259 "ripper.y"
10483 NODE *
n = gettable(p, (yyvsp[0].val), &(yyloc));
10489 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10491 #line 10487 "ripper.c"
10495 #line 4272 "ripper.y"
10500 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.
val)=v2;}
10502 #line 10498 "ripper.c"
10506 #line 4279 "ripper.y"
10509 (yyval.
val) =
NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10511 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.
val)=v3;}
10513 #line 10509 "ripper.c"
10517 #line 4286 "ripper.y"
10520 (yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc));
10522 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
10524 #line 10520 "ripper.c"
10528 #line 4297 "ripper.y"
10532 (yyvsp[-3].val) ? block_append(p, node_assign(p, (yyvsp[-3].val),
NEW_ERRINFO(&(yylsp[-3])), &(yylsp[-3])), (yyvsp[-1].val)) : (yyvsp[-1].val),
10533 (yyvsp[0].val), &(yyloc));
10534 fixpos((yyval.
val), (yyvsp[-4].val)?(yyvsp[-4].val):(yyvsp[-1].val));
10536 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-4].val));v2=escape_Qundef((yyvsp[-3].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(rescue,v1,v2,v3,v4);(yyval.
val)=v5;}
10538 #line 10534 "ripper.c"
10542 #line 4310 "ripper.y"
10545 (yyval.
val) =
NEW_LIST((yyvsp[0].val), &(yyloc));
10549 #line 10545 "ripper.c"
10553 #line 4317 "ripper.y"
10556 if (!((yyval.
val) = splat_array((yyvsp[0].val)))) (yyval.
val) = (yyvsp[0].val);
10558 (yyval.
val)=(yyvsp[0].val);
10560 #line 10556 "ripper.c"
10564 #line 4327 "ripper.y"
10566 (yyval.
val) = (yyvsp[0].val);
10568 #line 10564 "ripper.c"
10572 #line 4334 "ripper.y"
10575 (yyval.
val) = (yyvsp[0].val);
10577 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(ensure,v1);(yyval.
val)=v2;}
10579 #line 10575 "ripper.c"
10583 #line 4348 "ripper.y"
10586 NODE *node = (yyvsp[0].val);
10592 node = evstr2dstr(p, node);
10594 (yyval.
val) = node;
10596 (yyval.
val)=(yyvsp[0].val);
10598 #line 10594 "ripper.c"
10602 #line 4367 "ripper.y"
10605 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10607 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(string_concat,v1,v2);(yyval.
val)=v3;}
10609 #line 10605 "ripper.c"
10613 #line 4376 "ripper.y"
10616 (yyval.
val) = heredoc_dedent(p, (yyvsp[-1].val));
10617 if ((yyval.
val)) nd_set_loc((yyval.
val), &(yyloc));
10619 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(string_literal,v1);(yyval.
val)=v2;}
10621 #line 10617 "ripper.c"
10625 #line 4386 "ripper.y"
10628 (yyval.
val) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].val)), &(yyloc));
10630 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(xstring_literal,v1);(yyval.
val)=v2;}
10632 #line 10628 "ripper.c"
10636 #line 4395 "ripper.y"
10638 (yyval.
val) = new_regexp(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10640 #line 10636 "ripper.c"
10644 #line 4401 "ripper.y"
10649 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10651 #line 10647 "ripper.c"
10655 #line 4410 "ripper.y"
10660 {
VALUE v1;v1=dispatch0(words_new);(yyval.
val)=v1;}
10662 #line 10658 "ripper.c"
10666 #line 4417 "ripper.y"
10669 (yyval.
val) = list_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
10671 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(words_add,v1,v2);(yyval.
val)=v3;}
10673 #line 10669 "ripper.c"
10677 #line 4426 "ripper.y"
10678 {{
VALUE v1,v2,v3,v4;v1=dispatch0(word_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(word_add,v2,v3);(yyval.
val)=v4;}}
10679 #line 10675 "ripper.c"
10683 #line 4428 "ripper.y"
10686 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10688 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(word_add,v1,v2);(yyval.
val)=v3;}
10690 #line 10686 "ripper.c"
10694 #line 4437 "ripper.y"
10699 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10701 #line 10697 "ripper.c"
10705 #line 4446 "ripper.y"
10710 {
VALUE v1;v1=dispatch0(symbols_new);(yyval.
val)=v1;}
10712 #line 10708 "ripper.c"
10716 #line 4453 "ripper.y"
10719 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
10721 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(symbols_add,v1,v2);(yyval.
val)=v3;}
10723 #line 10719 "ripper.c"
10727 #line 4462 "ripper.y"
10732 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10734 #line 10730 "ripper.c"
10738 #line 4471 "ripper.y"
10743 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.
val)=v2;}
10745 #line 10741 "ripper.c"
10749 #line 4480 "ripper.y"
10754 {
VALUE v1;v1=dispatch0(qwords_new);(yyval.
val)=v1;}
10756 #line 10752 "ripper.c"
10760 #line 4487 "ripper.y"
10763 (yyval.
val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
10765 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(qwords_add,v1,v2);(yyval.
val)=v3;}
10767 #line 10763 "ripper.c"
10771 #line 4496 "ripper.y"
10776 {
VALUE v1;v1=dispatch0(qsymbols_new);(yyval.
val)=v1;}
10778 #line 10774 "ripper.c"
10782 #line 4503 "ripper.y"
10785 (yyval.
val) = symbol_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
10787 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(qsymbols_add,v1,v2);(yyval.
val)=v3;}
10789 #line 10785 "ripper.c"
10793 #line 4512 "ripper.y"
10798 {
VALUE v1;v1=dispatch0(string_content);(yyval.
val)=v1;}
10801 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
10804 #line 10800 "ripper.c"
10808 #line 4523 "ripper.y"
10811 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10813 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(string_add,v1,v2);(yyval.
val)=v3;}
10816 if (ripper_is_node_yylval((yyvsp[-1].val)) && ripper_is_node_yylval((yyvsp[0].val)) &&
10817 !
RNODE((yyvsp[-1].val))->nd_cval) {
10818 RNODE((yyvsp[-1].val))->nd_cval =
RNODE((yyvsp[0].val))->nd_cval;
10819 RNODE((yyvsp[-1].val))->nd_rval = add_mark_object(p, (yyval.
val));
10820 (yyval.
val) = (yyvsp[-1].val);
10824 #line 10820 "ripper.c"
10828 #line 4541 "ripper.y"
10833 {
VALUE v1;v1=dispatch0(xstring_new);(yyval.
val)=v1;}
10835 #line 10831 "ripper.c"
10839 #line 4548 "ripper.y"
10842 (yyval.
val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10844 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(xstring_add,v1,v2);(yyval.
val)=v3;}
10846 #line 10842 "ripper.c"
10850 #line 4557 "ripper.y"
10855 {
VALUE v1;v1=dispatch0(regexp_new);(yyval.
val)=v1;}
10858 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val), 0);
10861 #line 10857 "ripper.c"
10865 #line 4568 "ripper.y"
10868 NODE *head = (yyvsp[-1].val), *tail = (yyvsp[0].val);
10870 (yyval.
val) = tail;
10873 (yyval.
val) = head;
10883 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
10886 (yyval.
val) = list_append(p, head, tail);
10889 VALUE s1 = 1,
s2 = 0, n1 = (yyvsp[-1].val), n2 = (yyvsp[0].val);
10890 if (ripper_is_node_yylval(n1)) {
10891 s1 =
RNODE(n1)->nd_cval;
10892 n1 =
RNODE(n1)->nd_rval;
10894 if (ripper_is_node_yylval(n2)) {
10896 n2 =
RNODE(n2)->nd_rval;
10898 (yyval.
val) = dispatch2(regexp_add, n1, n2);
10900 (yyval.
val) = ripper_new_yylval(p, 0, (yyval.
val),
s2);
10904 #line 10900 "ripper.c"
10908 #line 4609 "ripper.y"
10909 {(yyval.
val)=ripper_new_yylval(p, 0,
get_value((yyvsp[0].val)), (yyvsp[0].val));}
10910 #line 10906 "ripper.c"
10914 #line 4611 "ripper.y"
10921 #line 10917 "ripper.c"
10925 #line 4618 "ripper.y"
10932 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(string_dvar,v1);(yyval.
val)=v2;}
10934 #line 10930 "ripper.c"
10938 #line 4627 "ripper.y"
10943 #line 10939 "ripper.c"
10947 #line 4631 "ripper.y"
10953 #line 10949 "ripper.c"
10957 #line 4636 "ripper.y"
10962 #line 10958 "ripper.c"
10966 #line 4640 "ripper.y"
10971 #line 10967 "ripper.c"
10975 #line 4644 "ripper.y"
10980 #line 10976 "ripper.c"
10984 #line 4649 "ripper.y"
10995 (yyval.
val) = new_evstr(p, (yyvsp[-1].val), &(yyloc));
10997 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(string_embexpr,v1);(yyval.
val)=v2;}
10999 #line 10995 "ripper.c"
11003 #line 4666 "ripper.y"
11006 (yyval.
val) =
NEW_GVAR((yyvsp[0].val), &(yyloc));
11008 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11010 #line 11006 "ripper.c"
11014 #line 4673 "ripper.y"
11017 (yyval.
val) =
NEW_IVAR((yyvsp[0].val), &(yyloc));
11019 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11021 #line 11017 "ripper.c"
11025 #line 4680 "ripper.y"
11028 (yyval.
val) =
NEW_CVAR((yyvsp[0].val), &(yyloc));
11030 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11032 #line 11028 "ripper.c"
11036 #line 4694 "ripper.y"
11042 {
VALUE v1,v2,v3,v4;v1=(yyvsp[0].val);v2=dispatch1(symbol,v1);v3=v2;v4=dispatch1(symbol_literal,v3);(yyval.
val)=v4;}
11044 #line 11040 "ripper.c"
11048 #line 4710 "ripper.y"
11052 (yyval.
val) = dsym_node(p, (yyvsp[-1].val), &(yyloc));
11054 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(dyna_symbol,v1);(yyval.
val)=v2;}
11056 #line 11052 "ripper.c"
11060 #line 4721 "ripper.y"
11063 (yyval.
val) = (yyvsp[0].val);
11068 #line 11064 "ripper.c"
11072 #line 4743 "ripper.y"
11073 {(yyval.
val) =
KWD2EID(nil, (yyvsp[0].val));}
11074 #line 11070 "ripper.c"
11078 #line 4744 "ripper.y"
11079 {(yyval.
val) =
KWD2EID(
self, (yyvsp[0].val));}
11080 #line 11076 "ripper.c"
11084 #line 4745 "ripper.y"
11085 {(yyval.
val) =
KWD2EID(
true, (yyvsp[0].val));}
11086 #line 11082 "ripper.c"
11090 #line 4746 "ripper.y"
11091 {(yyval.
val) =
KWD2EID(
false, (yyvsp[0].val));}
11092 #line 11088 "ripper.c"
11096 #line 4747 "ripper.y"
11097 {(yyval.
val) =
KWD2EID(_FILE__, (yyvsp[0].val));}
11098 #line 11094 "ripper.c"
11102 #line 4748 "ripper.y"
11103 {(yyval.
val) =
KWD2EID(_LINE__, (yyvsp[0].val));}
11104 #line 11100 "ripper.c"
11108 #line 4749 "ripper.y"
11109 {(yyval.
val) =
KWD2EID(_ENCODING__, (yyvsp[0].val));}
11110 #line 11106 "ripper.c"
11114 #line 4753 "ripper.y"
11117 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11119 if (id_is_var(p,
get_id((yyvsp[0].val)))) {
11120 (yyval.
val) = dispatch1(var_ref, (yyvsp[0].val));
11123 (yyval.
val) = dispatch1(vcall, (yyvsp[0].val));
11127 #line 11123 "ripper.c"
11131 #line 4766 "ripper.y"
11134 if (!((yyval.
val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.
val) =
NEW_BEGIN(0, &(yyloc));
11136 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.
val)=v2;}
11138 #line 11134 "ripper.c"
11142 #line 4775 "ripper.y"
11145 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11147 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11149 #line 11145 "ripper.c"
11153 #line 4782 "ripper.y"
11156 (yyval.
val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11158 (yyval.
val)=assignable(p, var_field(p, (yyvsp[0].val)));
11160 #line 11156 "ripper.c"
11164 #line 4795 "ripper.y"
11169 #line 11165 "ripper.c"
11173 #line 4800 "ripper.y"
11175 (yyval.
val) = (yyvsp[-1].val);
11177 #line 11173 "ripper.c"
11181 #line 4804 "ripper.y"
11188 #line 11184 "ripper.c"
11192 #line 4813 "ripper.y"
11195 (yyval.
val) = (yyvsp[-1].val);
11197 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
11201 #line 11197 "ripper.c"
11205 #line 4822 "ripper.y"
11220 #line 11216 "ripper.c"
11224 #line 4836 "ripper.y"
11230 #line 11226 "ripper.c"
11234 #line 4842 "ripper.y"
11237 (yyval.
val) = (yyvsp[-1].val);
11241 #line 11237 "ripper.c"
11245 #line 4851 "ripper.y"
11247 (yyval.
val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
11249 #line 11245 "ripper.c"
11253 #line 4855 "ripper.y"
11255 (yyval.
val) = new_args_tail(p, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yylsp[-1]));
11257 #line 11253 "ripper.c"
11261 #line 4859 "ripper.y"
11263 (yyval.
val) = new_args_tail(p,
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
11265 #line 11261 "ripper.c"
11269 #line 4863 "ripper.y"
11273 #line 11269 "ripper.c"
11277 #line 4867 "ripper.y"
11279 (yyval.
val) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].val), &(yylsp[0]));
11281 #line 11277 "ripper.c"
11285 #line 4873 "ripper.y"
11287 (yyval.
val) = (yyvsp[0].val);
11289 #line 11285 "ripper.c"
11293 #line 4877 "ripper.y"
11297 #line 11293 "ripper.c"
11301 #line 4883 "ripper.y"
11303 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11305 #line 11301 "ripper.c"
11309 #line 4887 "ripper.y"
11311 (yyval.
val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11313 #line 11309 "ripper.c"
11317 #line 4891 "ripper.y"
11319 (yyval.
val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11321 #line 11317 "ripper.c"
11325 #line 4895 "ripper.y"
11327 (yyval.
val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11329 #line 11325 "ripper.c"
11333 #line 4899 "ripper.y"
11335 (yyval.
val) = new_args(p, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11337 #line 11333 "ripper.c"
11341 #line 4903 "ripper.y"
11343 (yyval.
val) = new_args(p, (yyvsp[-5].val),
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11345 #line 11341 "ripper.c"
11349 #line 4907 "ripper.y"
11351 (yyval.
val) = new_args(p, (yyvsp[-1].val),
Qnone,
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11353 #line 11349 "ripper.c"
11357 #line 4911 "ripper.y"
11359 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11361 #line 11357 "ripper.c"
11365 #line 4915 "ripper.y"
11367 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11369 #line 11365 "ripper.c"
11373 #line 4919 "ripper.y"
11375 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-1].val),
Qnone,
Qnone, (yyvsp[0].val), &(yyloc));
11377 #line 11373 "ripper.c"
11381 #line 4923 "ripper.y"
11383 (yyval.
val) = new_args(p,
Qnone, (yyvsp[-3].val),
Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11385 #line 11381 "ripper.c"
11389 #line 4927 "ripper.y"
11391 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-1].val),
Qnone, (yyvsp[0].val), &(yyloc));
11393 #line 11389 "ripper.c"
11397 #line 4931 "ripper.y"
11399 (yyval.
val) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11401 #line 11397 "ripper.c"
11405 #line 4935 "ripper.y"
11409 #line 11405 "ripper.c"
11413 #line 4939 "ripper.y"
11418 #line 11414 "ripper.c"
11422 #line 4946 "ripper.y"
11427 {
VALUE v1;v1=dispatch0(args_forward);(yyval.
val)=v1;}
11429 #line 11425 "ripper.c"
11433 #line 4955 "ripper.y"
11436 yyerror1(&(yylsp[0]),
"formal argument cannot be a constant");
11439 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11441 #line 11437 "ripper.c"
11445 #line 4963 "ripper.y"
11448 yyerror1(&(yylsp[0]),
"formal argument cannot be an instance variable");
11451 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11453 #line 11449 "ripper.c"
11457 #line 4971 "ripper.y"
11460 yyerror1(&(yylsp[0]),
"formal argument cannot be a global variable");
11463 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11465 #line 11461 "ripper.c"
11469 #line 4979 "ripper.y"
11472 yyerror1(&(yylsp[0]),
"formal argument cannot be a class variable");
11475 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(param_error,v1);(yyval.
val)=v2;}ripper_error(p);
11477 #line 11473 "ripper.c"
11481 #line 4990 "ripper.y"
11483 formal_argument(p,
get_id((yyvsp[0].val)));
11485 (yyval.
val) = (yyvsp[0].val);
11487 #line 11483 "ripper.c"
11491 #line 4998 "ripper.y"
11496 (yyval.
val) = (yyvsp[0].val);
11498 #line 11494 "ripper.c"
11502 #line 5007 "ripper.y"
11510 #line 11506 "ripper.c"
11514 #line 5015 "ripper.y"
11517 ID tid = internal_id(p);
11519 loc.beg_pos = (yylsp[-1]).beg_pos;
11520 loc.end_pos = (yylsp[-1]).beg_pos;
11522 if (dyna_in_block(p)) {
11531 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.
val)=v2;}
11533 #line 11529 "ripper.c"
11537 #line 5036 "ripper.y"
11539 #line 11535 "ripper.c"
11543 #line 5038 "ripper.y"
11546 (yyval.
val) = (yyvsp[-2].val);
11549 rb_discard_node(p, (yyvsp[0].val));
11553 #line 11549 "ripper.c"
11557 #line 5051 "ripper.y"
11560 arg_var(p, formal_argument(p,
id));
11563 (yyval.
val) = (yyvsp[0].val);
11565 #line 11561 "ripper.c"
11569 #line 5061 "ripper.y"
11573 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11577 #line 11573 "ripper.c"
11581 #line 5069 "ripper.y"
11589 #line 11585 "ripper.c"
11593 #line 5079 "ripper.y"
11596 (yyval.
val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11600 #line 11596 "ripper.c"
11604 #line 5086 "ripper.y"
11611 #line 11607 "ripper.c"
11615 #line 5095 "ripper.y"
11618 (yyval.
val) = (yyvsp[0].val);
11622 #line 11618 "ripper.c"
11626 #line 5102 "ripper.y"
11629 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].val));
11633 #line 11629 "ripper.c"
11637 #line 5112 "ripper.y"
11640 (yyval.
val) = (yyvsp[0].val);
11644 #line 11640 "ripper.c"
11648 #line 5119 "ripper.y"
11651 (yyval.
val) = kwd_append((yyvsp[-2].val), (yyvsp[0].val));
11655 #line 11651 "ripper.c"
11659 #line 5132 "ripper.y"
11663 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(nokw_param,v1);(yyval.
val)=v2;}
11665 #line 11661 "ripper.c"
11669 #line 5140 "ripper.y"
11671 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11673 (yyval.
val) = (yyvsp[0].val);
11675 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
11677 #line 11673 "ripper.c"
11681 #line 5148 "ripper.y"
11684 (yyval.
val) = internal_id(p);
11685 arg_var(p, (yyval.
val));
11687 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(kwrest_param,v1);(yyval.
val)=v2;}
11689 #line 11685 "ripper.c"
11693 #line 5158 "ripper.y"
11697 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11701 #line 11697 "ripper.c"
11705 #line 5168 "ripper.y"
11709 (yyval.
val) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
11713 #line 11709 "ripper.c"
11717 #line 5178 "ripper.y"
11720 (yyval.
val) = (yyvsp[0].val);
11724 #line 11720 "ripper.c"
11728 #line 5185 "ripper.y"
11731 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].val));
11735 #line 11731 "ripper.c"
11739 #line 5194 "ripper.y"
11742 (yyval.
val) = (yyvsp[0].val);
11746 #line 11742 "ripper.c"
11750 #line 5201 "ripper.y"
11753 (yyval.
val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].val));
11757 #line 11753 "ripper.c"
11761 #line 5214 "ripper.y"
11763 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11765 (yyval.
val) = (yyvsp[0].val);
11767 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
11769 #line 11765 "ripper.c"
11773 #line 5222 "ripper.y"
11776 (yyval.
val) = internal_id(p);
11777 arg_var(p, (yyval.
val));
11779 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(rest_param,v1);(yyval.
val)=v2;}
11781 #line 11777 "ripper.c"
11785 #line 5236 "ripper.y"
11787 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].val))));
11789 (yyval.
val) = (yyvsp[0].val);
11791 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(blockarg,v1);(yyval.
val)=v2;}
11793 #line 11789 "ripper.c"
11797 #line 5246 "ripper.y"
11799 (yyval.
val) = (yyvsp[0].val);
11801 #line 11797 "ripper.c"
11805 #line 5250 "ripper.y"
11809 #line 11805 "ripper.c"
11813 #line 5256 "ripper.y"
11816 (yyval.
val) = (yyvsp[0].val);
11818 #line 11814 "ripper.c"
11822 #line 5260 "ripper.y"
11824 #line 11820 "ripper.c"
11828 #line 5261 "ripper.y"
11831 switch (
nd_type((yyvsp[-1].val))) {
11840 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
11846 (yyval.
val) = (yyvsp[-1].val);
11848 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.
val)=v2;}
11850 #line 11846 "ripper.c"
11854 #line 5286 "ripper.y"
11857 (yyval.
val) = (yyvsp[-1].val);
11859 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(assoclist_from_args,v1);(yyval.
val)=v2;}
11861 #line 11857 "ripper.c"
11865 #line 5295 "ripper.y"
11867 #line 11863 "ripper.c"
11871 #line 5297 "ripper.y"
11874 NODE *assocs = (yyvsp[-2].val);
11875 NODE *tail = (yyvsp[0].val);
11880 if (assocs->nd_head &&
11884 tail = tail->nd_next->nd_head->nd_head;
11886 assocs = list_concat(assocs, tail);
11888 (yyval.
val) = assocs;
11892 #line 11888 "ripper.c"
11896 #line 5320 "ripper.y"
11903 (yyval.
val) = list_append(p,
NEW_LIST((yyvsp[-2].val), &(yyloc)), (yyvsp[0].val));
11905 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
11907 #line 11903 "ripper.c"
11911 #line 5331 "ripper.y"
11916 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(assoc_new,v1,v2);(yyval.
val)=v3;}
11918 #line 11914 "ripper.c"
11922 #line 5338 "ripper.y"
11925 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
11926 (yyval.
val) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].val), &loc), &loc), (yyvsp[0].val));
11928 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].val);v2=dispatch1(dyna_symbol,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(assoc_new,v3,v4);(yyval.
val)=v5;}
11930 #line 11926 "ripper.c"
11934 #line 5346 "ripper.y"
11938 !((yyvsp[0].val)->
nd_head && (yyvsp[0].val)->nd_head->nd_alen)) {
11939 static VALUE empty_hash;
11947 (yyval.
val) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].val));
11949 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(assoc_splat,v1);(yyval.
val)=v2;}
11951 #line 11947 "ripper.c"
11955 #line 5414 "ripper.y"
11957 #line 11953 "ripper.c"
11961 #line 5415 "ripper.y"
11963 #line 11959 "ripper.c"
11967 #line 5419 "ripper.y"
11969 #line 11965 "ripper.c"
11973 #line 5423 "ripper.y"
11977 #line 11973 "ripper.c"
11981 #line 11977 "ripper.c"
12010 yystate = yypgoto[yyn -
YYNTOKENS] + *yyssp;
12011 if (0 <= yystate && yystate <=
YYLAST && yycheck[yystate] == *yyssp)
12012 yystate = yytable[yystate];
12031 #if ! YYERROR_VERBOSE
12034 # define YYSYNTAX_ERROR yysyntax_error (p, &yymsg_alloc, &yymsg, \
12037 char const *yymsgp =
YY_(
"syntax error");
12038 int yysyntax_error_status;
12040 if (yysyntax_error_status == 0)
12042 else if (yysyntax_error_status == 1)
12044 if (yymsg != yymsgbuf)
12050 yymsg_alloc =
sizeof yymsgbuf;
12051 yysyntax_error_status = 2;
12059 yyerror (&yylloc, p, yymsgp);
12060 if (yysyntax_error_status == 2)
12061 goto yyexhaustedlab;
12063 # undef YYSYNTAX_ERROR
12067 yyerror_range[1] = yylloc;
12069 if (yyerrstatus == 3)
12074 if (yychar <=
YYEOF)
12077 if (yychar ==
YYEOF)
12082 yydestruct (
"Error: discarding",
12083 yytoken, &
yylval, &yylloc, p);
12104 yyerror_range[1] = yylsp[1-yylen];
12122 yyn = yypact[yystate];
12128 yyn = yytable[yyn];
12138 yyerror_range[1] = *yylsp;
12139 yydestruct (
"Error: popping",
12140 yystos[yystate], yyvsp, yylsp, p);
12150 yyerror_range[2] = yylloc;
12177 #if !defined yyoverflow || YYERROR_VERBOSE
12182 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
12193 yydestruct (
"Cleanup: discarding lookahead",
12194 yytoken, &
yylval, &yylloc, p);
12200 while (yyssp != yyss)
12202 yydestruct (
"Cleanup: popping",
12203 yystos[*yyssp], yyvsp, yylsp, p);
12210 #if YYERROR_VERBOSE
12211 if (yymsg != yymsgbuf)
12216 #line 5427 "ripper.y"
12221 # define yylval (*p->lval)
12230 # define set_yylval_node(x) { \
12231 YYLTYPE _cur_loc; \
12232 rb_parser_set_location(p, &_cur_loc); \
12233 yylval.node = (x); \
12235 # define set_yylval_str(x) \
12237 set_yylval_node(NEW_STR(x, &_cur_loc)); \
12238 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12240 # define set_yylval_literal(x) \
12242 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
12243 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
12245 # define set_yylval_num(x) (yylval.num = (x))
12246 # define set_yylval_id(x) (yylval.id = (x))
12247 # define set_yylval_name(x) (yylval.id = (x))
12248 # define yylval_id() (yylval.id)
12250 static inline VALUE
12253 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
12255 # define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
12256 # define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
12257 # define set_yylval_id(x) (void)(x)
12258 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
12259 # define set_yylval_literal(x) add_mark_object(p, (x))
12260 # define set_yylval_node(x) (void)(x)
12261 # define yylval_id() yylval.id
12262 # define _cur_loc NULL_LOC
12265 #define set_yylval_noname() set_yylval_id(keyword_nil)
12268 #define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
12269 #define dispatch_scan_event(p, t) ((void)0)
12270 #define dispatch_delayed_token(p, t) ((void)0)
12271 #define has_delayed_token(p) (0)
12273 #define literal_flush(p, ptr) ((void)(ptr))
12275 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
12277 static inline VALUE
12278 intern_sym(
const char *
name)
12295 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t),
str);
12303 if (!ripper_has_scan_event(p))
return;
12304 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
12306 #define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
12312 const char *saved_tokp = p->
lex.
ptok;
12314 if (
NIL_P(p->delayed.token))
return;
12317 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
12318 p->delayed.token =
Qnil;
12322 #define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
12323 #define has_delayed_token(p) (!NIL_P(p->delayed.token))
12350 int column = 1, nonspc = 0,
i;
12352 if (*
ptr ==
'\t') {
12356 if (*
ptr !=
' ' && *
ptr !=
'\t') {
12362 ptinfo->
indent = column;
12363 ptinfo->
nonspc = nonspc;
12375 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
12385 if (!ptinfo_beg)
return;
12389 token_info_warn(p,
token, ptinfo_beg, 1, loc);
12396 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
12398 if (!ptinfo_beg)
return;
12399 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
12403 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
12405 "mismatched indentations at '%s' with '%s' at %d",
12431 else if (yylloc->beg_pos.lineno == lineno) {
12450 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
12451 yylloc->beg_pos.column == yylloc->end_pos.column)) {
12455 parser_show_error_line(p, yylloc);
12463 const int max_line_margin = 30;
12464 const char *
ptr, *ptr_end, *pt, *pb;
12465 const char *pre =
"", *post =
"", *pend;
12466 const char *code =
"", *caret =
"";
12473 if (!yylloc)
return;
12475 if (pend > pbeg && pend[-1] ==
'\n') {
12476 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
12480 if (lineno == yylloc->end_pos.lineno &&
12481 (pend - pbeg) > yylloc->end_pos.column) {
12482 pt = pbeg + yylloc->end_pos.column;
12485 ptr = ptr_end = pt;
12486 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
12487 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
12489 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
12490 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
12496 if (
ptr > pbeg) pre =
"...";
12498 if (ptr_end < pend) {
12500 if (ptr_end < pend) post =
"...";
12504 if (lineno == yylloc->beg_pos.lineno) {
12505 pb += yylloc->beg_pos.column;
12506 if (pb > pt) pb = pt;
12509 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
12512 if (
RTEST(errbuf)) {
12521 #define CSI_BEGIN "\033["
12522 #define CSI_SGR "m"
12532 (
int)(pt - pb), pb,
12533 (
int)(ptr_end - pt), pt,
12540 lim = pt < pend ? pt : pend;
12547 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
12558 pre, (
int)
len, code, post,
12567 const char *pcur = 0, *ptok = 0;
12576 dispatch1(parse_error,
STR_NEW2(msg));
12593 vtable_size(
const struct vtable *tbl)
12619 #define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
12637 #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
12653 if (
tbl->pos ==
tbl->capa) {
12654 tbl->capa =
tbl->capa * 2;
12659 #define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
12670 if (
tbl->pos <
n) {
12676 #define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
12680 vtable_included(
const struct vtable *
tbl,
ID id)
12685 for (
i = 0;
i <
tbl->pos;
i++) {
12686 if (
tbl->tbl[
i] ==
id) {
12700 debug_lines(
VALUE fname)
12703 CONST_ID(script_lines,
"SCRIPT_LINES__");
12739 if (!e_option_supplied(p)) {
12745 #define RUBY_DTRACE_PARSE_HOOK(name) \
12746 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
12747 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
12772 NODE *body = parser_append_options(p, tree->nd_body);
12776 tree->nd_body = prelude;
12788 if (
NIL_P(fname)) {
12808 must_be_ascii_compatible(
VALUE s)
12820 char *beg, *end, *start;
12832 if (end)
len = ++end - beg;
12841 if (
NIL_P(line))
return line;
12842 must_be_ascii_compatible(line);
12868 return yycompile(vparser, p, fname, line);
12880 must_be_ascii_compatible(s);
12881 return parser_compile_string(vparser,
f, s, line);
12903 return yycompile(vparser, p, fname, start);
12919 p->
lex.
gets = lex_generic_gets;
12924 return yycompile(vparser, p, fname, start);
12928 #define STR_FUNC_ESCAPE 0x01
12929 #define STR_FUNC_EXPAND 0x02
12930 #define STR_FUNC_REGEXP 0x04
12931 #define STR_FUNC_QWORDS 0x08
12932 #define STR_FUNC_SYMBOL 0x10
12933 #define STR_FUNC_INDENT 0x20
12934 #define STR_FUNC_LABEL 0x40
12935 #define STR_FUNC_LIST 0x4000
12936 #define STR_FUNC_TERM 0x8000
12967 #define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
12968 #define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
12969 #define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
12970 #define peek(p,c) peek_n(p, (c), 0)
12971 #define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
12972 #define peekc(p) peekc_n(p, 0)
12973 #define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
12991 #define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
13036 if (
peek(p,
'\n')) {
13043 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
13058 c = parser_cr(p, c);
13067 if (c == -1)
return;
13074 #define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
13076 #define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
13077 #define tok(p) (p)->tokenbuf
13078 #define toklen(p) (p)->tokidx
13084 while (ptr < p->
lex.pend) {
13085 int c = (
unsigned char)*
ptr++;
13086 int eol = (c ==
'\n' || c ==
'#');
13147 #define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
13150 escaped_control_code(
int c)
13176 #define WARN_SPACE_CHAR(c, prefix) \
13177 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
13181 int regexp_literal,
int wide)
13187 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
13188 yyerror0(
"invalid Unicode escape");
13189 return wide && numlen > 0;
13191 if (codepoint > 0x10ffff) {
13192 yyerror0(
"invalid Unicode codepoint (too large)");
13195 if ((codepoint & 0xfffff800) == 0xd800) {
13196 yyerror0(
"invalid Unicode codepoint");
13199 if (regexp_literal) {
13202 else if (codepoint >= 0x80) {
13204 if (*encp && utf8 != *encp) {
13207 parser_show_error_line(p, &loc);
13211 tokaddmbc(p, codepoint, *encp);
13214 tokadd(p, codepoint);
13222 int term,
int symbol_literal,
int regexp_literal)
13229 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
13231 const int open_brace =
'{', close_brace =
'}';
13233 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
13235 if (
peek(p, open_brace)) {
13236 const char *second =
NULL;
13237 int c,
last = nextc(p);
13240 while (c != close_brace) {
13241 if (c ==
term)
goto unterminated;
13242 if (second == multiple_codepoints)
13244 if (regexp_literal) tokadd(p,
last);
13245 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
13252 if (
term == -1 && !second)
13253 second = multiple_codepoints;
13256 if (c != close_brace) {
13259 yyerror0(
"unterminated Unicode escape");
13262 if (second && second != multiple_codepoints) {
13272 if (regexp_literal) tokadd(p, close_brace);
13276 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
13283 #define ESCAPE_CONTROL 1
13284 #define ESCAPE_META 2
13292 switch (c = nextc(p)) {
13317 case '0':
case '1':
case '2':
case '3':
13318 case '4':
case '5':
case '6':
case '7':
13325 c = tok_hex(p, &numlen);
13326 if (numlen == 0)
return 0;
13337 if ((c = nextc(p)) !=
'-') {
13340 if ((c = nextc(p)) ==
'\\') {
13341 if (
peek(p,
'u'))
goto eof;
13342 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
13344 else if (c == -1 || !
ISASCII(c))
goto eof;
13346 int c2 = escaped_control_code(c);
13355 else if (
ISCNTRL(c))
goto eof;
13356 return ((c & 0xff) | 0x80);
13360 if ((c = nextc(p)) !=
'-') {
13365 if ((c = nextc(p))==
'\\') {
13366 if (
peek(p,
'u'))
goto eof;
13371 else if (c == -1 || !
ISASCII(c))
goto eof;
13373 int c2 = escaped_control_code(c);
13392 else if (
ISCNTRL(c))
goto eof;
13398 yyerror0(
"Invalid escape character syntax");
13422 switch (c = nextc(p)) {
13426 case '0':
case '1':
case '2':
case '3':
13427 case '4':
case '5':
case '6':
case '7':
13430 if (numlen == 0)
goto eof;
13438 tok_hex(p, &numlen);
13439 if (numlen == 0)
return -1;
13446 if ((c = nextc(p)) !=
'-') {
13456 if ((c = nextc(p)) !=
'-') {
13468 if ((c = nextc(p)) ==
'\\') {
13471 else if (c == -1)
goto eof;
13477 yyerror0(
"Invalid escape character syntax");
13497 while (c = nextc(p),
ISALPHA(c)) {
13521 parser_show_error_line(p, &loc);
13529 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
13530 if (
len < 0)
return -1;
13538 simple_re_meta(
int c)
13541 case '$':
case '*':
case '+':
case '.':
13542 case '?':
case '^':
case '|':
13543 case ')':
case ']':
case '}':
case '>':
13551 parser_update_heredoc_indent(
struct parser_params *p,
int c)
13561 else if (c ==
'\t') {
13566 else if (c !=
'\n') {
13582 parser_show_error_line(p, &loc);
13588 const char *pos = p->
lex.
pcur;
13590 parser_mixed_error(p, enc1, enc2);
13596 int func,
int term,
int paren,
long *nest,
13600 bool erred =
false;
13602 #define mixed_error(enc1, enc2) \
13603 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
13604 #define mixed_escape(beg, enc1, enc2) \
13605 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
13607 while ((c = nextc(p)) != -1) {
13609 parser_update_heredoc_indent(p, c);
13612 if (paren && c == paren) {
13615 else if (c ==
term) {
13616 if (!nest || !*nest) {
13624 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
13629 else if (c ==
'\\') {
13661 if (c == -1)
return -1;
13667 if (c ==
term && !simple_re_meta(c)) {
13672 if ((c = tokadd_escape(p,
enc)) < 0)
13674 if (*
enc && *
enc != *encp) {
13682 c = read_escape(p, 0,
enc);
13687 else if (c !=
term && !(paren && c == paren)) {
13694 else if (!parser_isascii(p)) {
13699 else if (*
enc != *encp) {
13703 if (tokadd_mbchar(p, c) == -1)
return -1;
13714 else if (*
enc != *encp) {
13733 #define NEW_STRTERM(func, term, paren) \
13734 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
13741 if (!ripper_is_node_yylval(content))
13742 content = ripper_new_yylval(p, 0, 0, content);
13753 if (
yylval.val != content)
13758 #define flush_string_content(p, enc) ((void)(enc))
13765 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
13766 #define SPECIAL_PUNCT(idx) ( \
13767 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
13768 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
13769 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
13770 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
13771 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
13779 #undef SPECIAL_PUNCT
13792 if ((c = *
ptr) ==
'-') {
13796 else if (is_global_name_punct(c) ||
ISDIGIT(c)) {
13801 if ((c = *
ptr) ==
'@') {
13818 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
13819 #define IS_END() IS_lex_state(EXPR_END_ANY)
13820 #define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
13821 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
13822 #define IS_LABEL_POSSIBLE() (\
13823 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
13825 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
13826 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
13866 do {c = nextc(p);}
while (
ISSPACE(c));
13880 return parser_string_term(p, func);
13889 int t = parser_peek_variable_name(p);
13895 if (tokadd_string(p, func,
term, paren, "e->
u0.
nest,
13896 &
enc, &base_enc) == -1) {
13899 # define unterminated_literal(mesg) yyerror0(mesg)
13901 # define unterminated_literal(mesg) compile_error(p, mesg)
13936 int c = nextc(p),
term, func = 0, quote = 0;
13945 else if (c ==
'~') {
13965 while ((c = nextc(p)) !=
term) {
13966 if (c == -1 || c ==
'\r' || c ==
'\n') {
13967 yyerror(
NULL, p,
"unterminated here document identifier");
13974 if (!parser_is_identchar(p)) {
13977 pushback(p, indent > 0 ?
'~' :
'-');
13983 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
13984 if (
n < 0)
return 0;
13986 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
13993 yyerror(
NULL, p,
"too long here document identifier");
14003 here->
quote = quote;
14031 dedent_string(
VALUE string,
int width)
14038 for (
i = 0;
i <
len && col < width;
i++) {
14039 if (
str[
i] ==
' ') {
14042 else if (
str[
i] ==
'\t') {
14044 if (
n > width)
break;
14065 NODE *node, *str_node, *prev_node;
14067 VALUE prev_lit = 0;
14069 if (indent <= 0)
return root;
14071 if (!root)
return root;
14073 prev_node = node = str_node = root;
14077 VALUE lit = str_node->nd_lit;
14079 dedent_string(lit, indent);
14084 else if (!literal_concat0(p, prev_lit, lit)) {
14088 NODE *end = node->nd_end;
14089 node = prev_node->nd_next = node->nd_next;
14095 node->nd_end = end;
14100 while ((node = (prev_node = node)->
nd_next) != 0) {
14103 if ((str_node = node->nd_head) != 0) {
14119 if (indent <= 0)
return array;
14121 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
14141 col = dedent_string(
input, wid);
14147 whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
14156 if (
n < 0)
return FALSE;
14157 if (
n > 0 &&
ptr[
len] !=
'\n') {
14172 case '\0':
case '\004':
case '\032':
return 1;
14177 #define NUM_SUFFIX_R (1<<0)
14178 #define NUM_SUFFIX_I (1<<1)
14179 #define NUM_SUFFIX_ALL 3
14185 const char *lastp = p->
lex.
pcur;
14187 while ((c = nextc(p)) != -1) {
14232 return set_number_literal(p,
v,
type, suffix);
14249 #define dispatch_heredoc_end(p) ((void)0)
14255 int c, func, indent = 0;
14256 const char *eos, *
ptr, *ptr_end;
14267 if ((c = nextc(p)) == -1) {
14291 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
14309 else if (whole_match_p(p, eos,
len, indent)) {
14323 if (ptr_end >
ptr) {
14324 switch (ptr_end[-1]) {
14326 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
14337 while (
ptr +
i < ptr_end && parser_update_heredoc_indent(p,
ptr[
i]))
14351 if (nextc(p) == -1) {
14357 }
while (!whole_match_p(p, eos,
len, indent));
14363 int t = parser_peek_variable_name(p);
14377 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
14393 tokadd(p, nextc(p));
14399 if ((c = nextc(p)) == -1)
goto error;
14400 }
while (!whole_match_p(p, eos,
len, indent));
14424 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
14434 switch (id_type(lhs)) {
14439 yyerror0(
"formal argument cannot be a constant");
14442 yyerror0(
"formal argument cannot be an instance variable");
14445 yyerror0(
"formal argument cannot be a global variable");
14448 yyerror0(
"formal argument cannot be a class variable");
14451 yyerror0(
"formal argument must be local variable");
14455 lhs = dispatch1(param_error, lhs);
14460 shadowing_lvar(p, lhs);
14467 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
14476 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
14480 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
14516 for (
i = 0;
i <
n; ++
i) {
14528 while (
ptr < ptr_end) {
14539 magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
14541 if (!comment_at_top(p)) {
14544 parser_set_encode(p, val);
14551 case 't':
case 'T':
14556 case 'f':
case 'F':
14567 parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
14569 int b = parser_get_bool(p,
name, val);
14574 parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
14583 b = parser_get_bool(p,
name, val);
14592 # if WARN_PAST_SCOPE
14594 parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
14596 int b = parser_get_bool(p,
name, val);
14597 if (b >= 0) p->past_scope_enabled = b;
14608 {
"coding", magic_comment_encoding, parser_encode_length},
14609 {
"encoding", magic_comment_encoding, parser_encode_length},
14610 {
"frozen_string_literal", parser_set_compile_option_flag},
14611 {
"warn_indent", parser_set_token_info},
14612 # if WARN_PAST_SCOPE
14613 {
"warn_past_scope", parser_set_past_scope},
14617 static const char *
14618 magic_comment_marker(
const char *
str,
long len)
14625 if (
str[
i-1] ==
'*' &&
str[
i-2] ==
'-') {
14626 return str +
i + 1;
14631 if (
i + 1 >=
len)
return 0;
14632 if (
str[
i+1] !=
'-') {
14635 else if (
str[
i-1] !=
'-') {
14639 return str +
i + 2;
14655 const char *beg, *end, *vbeg, *vend;
14656 #define str_copy(_s, _p, _n) ((_s) \
14657 ? (void)(rb_str_resize((_s), (_n)), \
14658 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
14659 : (void)((_s) = STR_NEW((_p), (_n))))
14662 if (!!(beg = magic_comment_marker(
str,
len))) {
14663 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
14667 len = end - beg - 3;
14679 case '\'':
case '"':
case ':':
case ';':
14686 case '\'':
case '"':
case ':':
case ';':
14697 if (!indicator)
return FALSE;
14705 if (*
str ==
'\\') {
14731 for (
i = 0;
i <
n; ++
i) {
14732 if (s[
i] ==
'-') s[
i] =
'_';
14744 }
while (++mc < magic_comments +
numberof(magic_comments));
14755 set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
14758 const char *beg =
str;
14762 if (send -
str <= 6)
return;
14764 case 'C':
case 'c':
str += 6;
continue;
14765 case 'O':
case 'o':
str += 5;
continue;
14766 case 'D':
case 'd':
str += 4;
continue;
14767 case 'I':
case 'i':
str += 3;
continue;
14768 case 'N':
case 'n':
str += 2;
continue;
14769 case 'G':
case 'g':
str += 1;
continue;
14770 case '=':
case ':':
14783 if (++
str >= send)
return;
14786 if (*
str !=
'=' && *
str !=
':')
return;
14792 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
14808 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
14809 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
14824 #define ambiguous_operator(tok, op, syn) ( \
14825 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
14826 rb_warning0("even though it seems like "syn""))
14828 #define ambiguous_operator(tok, op, syn) \
14829 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
14831 #define warn_balanced(tok, op, syn) ((void) \
14832 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
14833 space_seen && !ISSPACE(c) && \
14834 (ambiguous_operator(tok, op, syn), 0)), \
14835 (enum yytokentype)(tok))
14841 char *point = &
str[seen_point];
14842 size_t fraclen =
len-seen_point-1;
14843 memmove(point, point+1, fraclen+1);
14851 yyerror0(
"numeric literal without digits");
14852 if (
peek(p,
'_')) nextc(p);
14854 return set_integer_literal(p,
INT2FIX(0), 0);
14860 int is_float, seen_point, seen_e, nondigit;
14863 is_float = seen_point = seen_e = nondigit = 0;
14866 if (c ==
'-' || c ==
'+') {
14873 if (c ==
'x' || c ==
'X') {
14879 if (nondigit)
break;
14886 }
while ((c = nextc(p)) != -1);
14890 if (
toklen(p) == start) {
14891 return no_digits(p);
14893 else if (nondigit)
goto trailing_uc;
14897 if (c ==
'b' || c ==
'B') {
14900 if (c ==
'0' || c ==
'1') {
14903 if (nondigit)
break;
14907 if (c !=
'0' && c !=
'1')
break;
14910 }
while ((c = nextc(p)) != -1);
14914 if (
toklen(p) == start) {
14915 return no_digits(p);
14917 else if (nondigit)
goto trailing_uc;
14921 if (c ==
'd' || c ==
'D') {
14927 if (nondigit)
break;
14934 }
while ((c = nextc(p)) != -1);
14938 if (
toklen(p) == start) {
14939 return no_digits(p);
14941 else if (nondigit)
goto trailing_uc;
14949 if (c ==
'o' || c ==
'O') {
14952 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
14953 return no_digits(p);
14956 if (c >=
'0' && c <=
'7') {
14961 if (nondigit)
break;
14965 if (c < '0' || c >
'9')
break;
14966 if (c >
'7')
goto invalid_octal;
14969 }
while ((c = nextc(p)) != -1);
14970 if (
toklen(p) > start) {
14973 if (nondigit)
goto trailing_uc;
14982 if (c >
'7' && c <=
'9') {
14986 else if (c ==
'.' || c ==
'e' || c ==
'E') {
14992 return set_integer_literal(p,
INT2FIX(0), suffix);
14998 case '0':
case '1':
case '2':
case '3':
case '4':
14999 case '5':
case '6':
case '7':
case '8':
case '9':
15005 if (nondigit)
goto trailing_uc;
15006 if (seen_point || seen_e) {
15011 if (c0 == -1 || !
ISDIGIT(c0)) {
15036 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
15041 tokadd(p, nondigit);
15045 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
15049 if (nondigit)
goto decode_num;
15066 parser_show_error_line(p, &loc);
15076 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
15086 return set_number_literal(p,
v,
type, suffix);
15110 int c2 = escaped_control_code(c);
15122 if (!parser_isascii(p)) {
15123 if (tokadd_mbchar(p, c) == -1)
return 0;
15128 const char *start = p->
lex.
pcur - 1, *
ptr = start;
15130 int n = parser_precise_mbclen(p,
ptr);
15131 if (
n < 0)
return -1;
15134 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
15135 " a conditional operator, put a space after `?'",
15140 else if (c ==
'\\') {
15141 if (
peek(p,
'u')) {
15144 tokadd_utf8(p, &enc, -1, 0, 0);
15148 if (tokadd_mbchar(p, c) == -1)
return 0;
15151 c = read_escape(p, 0, &enc);
15169 const char *ptok = p->
lex.
pcur;
15177 if (c == -1 || !
ISALNUM(c)) {
15184 yyerror0(
"unknown type of %string");
15188 if (c == -1 ||
term == -1) {
15189 compile_error(p,
"unterminated quoted string meets end of file");
15239 yyerror0(
"unknown type of %string");
15243 if ((c = nextc(p)) ==
'=') {
15260 if (tokadd_mbchar(p, c) == -1)
return -1;
15262 }
while (parser_is_identchar(p));
15283 const unsigned long nth_ref_max =
15284 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
15288 if (overflow ||
n > nth_ref_max) {
15311 if (parser_is_identchar(p)) {
15343 if (parser_is_identchar(p)) {
15344 if (tokadd_mbchar(p, c) == -1)
return 0;
15367 case '1':
case '2':
case '3':
15368 case '4':
case '5':
case '6':
15369 case '7':
case '8':
case '9':
15374 }
while (c != -1 &&
ISDIGIT(c));
15382 if (!parser_is_identchar(p)) {
15385 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
15389 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
15391 parser_show_error_line(p, &loc);
15400 if (tokadd_ident(p, c))
return 0;
15402 tokenize_ident(p, last_state);
15410 if (
n < 0)
return false;
15423 while (
n > args->
pos) {
15435 register int c = nextc(p);
15447 if (c == -1 || !parser_is_identchar(p)) {
15450 if (result ==
tIVAR) {
15451 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
15454 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
15456 parser_show_error_line(p, &loc);
15464 if (result ==
tIVAR) {
15465 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
15468 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
15470 parser_show_error_line(p, &loc);
15476 if (tokadd_ident(p, c))
return 0;
15477 tokenize_ident(p, last_state);
15491 if (tokadd_mbchar(p, c) == -1)
return 0;
15493 }
while (parser_is_identchar(p));
15494 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
15546 if (kw->
id[0] != kw->
id[1])
15561 else if (p->
lex.
state == EXPR_FNAME) {
15568 ident = tokenize_ident(p, last_state);
15572 lvar_defined(p, ident)) {
15582 int space_seen = 0;
15586 int fallthru =
FALSE;
15606 switch (c = nextc(p)) {
15614 case ' ':
case '\t':
case '\f':
case '\r':
15618 while ((c = nextc(p))) {
15620 case ' ':
case '\t':
case '\f':
case '\r':
15637 if (comment_at_top(p)) {
15647 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
15655 goto normal_newline;
15660 switch (c = nextc(p)) {
15661 case ' ':
case '\t':
case '\f':
case '\r':
15672 if (
peek(p,
'.') == (c ==
'&')) {
15694 goto normal_newline;
15703 if ((c = nextc(p)) ==
'*') {
15704 if ((c = nextc(p)) ==
'=') {
15711 rb_warning0(
"`**' interpreted as argument prefix");
15729 rb_warning0(
"`*' interpreted as argument prefix");
15765 if (word_match_p(p,
"begin", 5)) {
15766 int first_p =
TRUE;
15781 if (c ==
'=' && word_match_p(p,
"end", 3)) {
15793 if ((c = nextc(p)) ==
'=') {
15794 if ((c = nextc(p)) ==
'=') {
15803 else if (c ==
'>') {
15815 int token = heredoc_identifier(p);
15827 if ((c = nextc(p)) ==
'>') {
15834 if ((c = nextc(p)) ==
'=') {
15847 if ((c = nextc(p)) ==
'=') {
15851 if ((c = nextc(p)) ==
'=') {
15890 return parse_qmark(p, space_seen);
15893 if ((c = nextc(p)) ==
'&') {
15895 if ((c = nextc(p)) ==
'=') {
15903 else if (c ==
'=') {
15908 else if (c ==
'.') {
15917 !(c ==
'\'' || c ==
'"' ||
15919 rb_warning0(
"`&' interpreted as argument prefix");
15933 if ((c = nextc(p)) ==
'|') {
15935 if ((c = nextc(p)) ==
'=') {
15976 return parse_numeric(p,
'+');
16018 if ((c = nextc(p)) ==
'.') {
16019 if ((c = nextc(p)) ==
'.') {
16021 rb_warn0(
"... at EOL, should be parenthesized?");
16031 parse_numeric(p,
'.');
16033 yyerror0(
"unexpected fraction part after numeric literal");
16036 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
16047 case '0':
case '1':
case '2':
case '3':
case '4':
16048 case '5':
case '6':
case '7':
case '8':
case '9':
16049 return parse_numeric(p, c);
16110 if ((c = nextc(p)) ==
'=') {
16117 arg_ambiguous(p,
'/');
16125 if ((c = nextc(p)) ==
'=') {
16145 if ((c = nextc(p)) !=
'@') {
16159 else if (!space_seen) {
16166 rb_warning0(
"parentheses after method name is interpreted as "
16167 "an argument list, not a decomposed argument");
16178 if ((c = nextc(p)) ==
']') {
16180 if ((c = nextc(p)) ==
'=') {
16232 if (c ==
' ')
return tSP;
16238 return parse_percent(p, space_seen, last_state);
16241 return parse_gvar(p, last_state);
16244 return parse_atmark(p, last_state);
16247 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
16262 if (!parser_is_identchar(p)) {
16263 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
16272 return parse_ident(p, c, cmd_state);
16282 t = parser_yylex(p);
16297 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
16306 nd_set_loc(
n, loc);
16321 nodetype(
NODE *node)
16327 nodeline(
NODE *node)
16333 newline_node(
NODE *node)
16336 node = remove_begin(node);
16365 NODE *end, *
h = head, *nd;
16367 if (tail == 0)
return head;
16369 if (
h == 0)
return tail;
16377 parser_warning(p,
h,
"unused literal ignored");
16397 parser_warning(p, tail,
"statement not reached");
16407 tail->nd_end = tail;
16409 end->nd_next = tail;
16410 h->nd_end = tail->nd_end;
16422 if (
list->nd_next) {
16429 list->nd_alen += 1;
16431 list->nd_next->nd_end =
last->nd_next;
16440 list_concat(
NODE *head,
NODE *tail)
16444 if (head->nd_next) {
16445 last = head->nd_next->nd_end;
16451 head->nd_alen += tail->nd_alen;
16452 last->nd_next = tail;
16453 if (tail->nd_next) {
16454 head->nd_next->nd_end = tail->nd_next->nd_end;
16457 head->nd_next->nd_end = tail;
16468 if (
NIL_P(tail))
return 1;
16470 compile_error(p,
"string literal encodings differ (%s / %s)",
16489 if (!head)
return tail;
16490 if (!tail)
return head;
16496 head = list_append(p, node, head);
16504 return list_append(p, head, tail);
16511 if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16514 lit = headlast->nd_lit;
16517 lit = head->nd_lit;
16520 if (!literal_concat0(p, lit, tail->nd_lit)) {
16522 rb_discard_node(p, head);
16523 rb_discard_node(p, tail);
16526 rb_discard_node(p, tail);
16529 list_append(p, head, tail);
16535 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
16537 tail->nd_lit = head->nd_lit;
16538 rb_discard_node(p, head);
16541 else if (
NIL_P(tail->nd_lit)) {
16543 head->nd_alen += tail->nd_alen - 1;
16544 head->nd_next->nd_end->nd_next = tail->nd_next;
16545 head->nd_next->nd_end = tail->nd_next->nd_end;
16546 rb_discard_node(p, tail);
16548 else if (htype ==
NODE_DSTR && (headlast = head->nd_next->nd_end->nd_head) &&
16550 lit = headlast->nd_lit;
16551 if (!literal_concat0(p, lit, tail->nd_lit))
16553 tail->nd_lit =
Qnil;
16566 list_append(p, head, tail);
16578 node = list_append(p, dstr, node);
16631 if (block) block_dup_check(p, args, block);
16632 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
16633 if (block) ret = method_add_block(p, ret, block, loc);
16638 #define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
16643 int line = op_loc->beg_pos.lineno;
16658 const VALUE lit =
n->nd_lit;
16660 match->nd_args = reg_named_capture_assign(p, lit, loc);
16685 # if WARN_PAST_SCOPE
16691 if (vtable_included(past,
id))
return 1;
16700 #define WARN_LOCATION(type) do { \
16701 if (p->warn_location) { \
16703 VALUE file = rb_source_location(&line); \
16704 rb_warn3(type" in eval may not return location in binding;" \
16705 " use Binding#source_location instead\n" \
16706 "%"PRIsWARN":%d: warning: in `%"PRIsWARN"'", \
16707 file, WARN_I(line), rb_id2str(rb_frame_this_func())); \
16720 "%s:%d: %s block here",
16722 outer ?
"outer" :
"inner");
16723 parser_show_error_line(p, &
used->nd_loc);
16764 switch (id_type(
id)) {
16766 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
16776 if (local_id_ref(p,
id, &vidp)) {
16787 if (numparam_nested_p(p))
return 0;
16793 # if WARN_PAST_SCOPE
16814 opt_arg_append(
NODE *opt_list,
NODE *opt)
16816 NODE *opts = opt_list;
16819 while (opts->nd_next) {
16820 opts = opts->nd_next;
16823 opts->nd_next = opt;
16829 kwd_append(
NODE *kwlist,
NODE *kw)
16832 NODE *kws = kwlist;
16834 while (kws->nd_next) {
16835 kws = kws->nd_next;
16859 return list_append(p, symbols, symbol);
16878 nd_set_loc(node, loc);
16889 nd_set_loc(node, loc);
16891 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
16895 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
16897 if (!literal_concat0(p, lit, tail)) {
16902 rb_discard_node(p,
list->nd_head);
16903 rb_discard_node(p,
list);
16914 if (!node->nd_next) {
16946 nd_set_loc(node, loc);
16950 nd_set_loc(node, loc);
16967 if (lit ==
Qundef)
return;
16977 if (!
NIL_P(line)) {
16978 rb_warning1(
"duplicated `when' clause with line %d is ignored",
16995 if (dyna_in_block(p)) {
16998 if (local_id(p,
id))
return 1;
17012 if (ripper_is_node_yylval(re)) {
17014 re =
RNODE(re)->nd_rval;
17016 if (ripper_is_node_yylval(opt)) {
17017 options = (
int)
RNODE(opt)->nd_tag;
17018 opt =
RNODE(opt)->nd_rval;
17023 return dispatch2(regexp_literal, re, opt);
17029 static const char rb_parser_lex_state_names[][8] = {
17030 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
17031 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
17032 "LABEL",
"LABELED",
"FITEM",
17039 unsigned int mask = 1;
17040 static const char none[] =
"NONE";
17043 if ((
unsigned)state &
mask) {
17077 append_lex_state_name(from, mesg);
17079 append_lex_state_name(to, mesg);
17106 const char *
name,
int line)
17109 append_bitstack_value(stack, mesg);
17127 append_lex_state_name(p->
lex.
state, mesg);
17148 yylloc->beg_pos.lineno = sourceline;
17149 yylloc->beg_pos.column = beg_pos;
17150 yylloc->end_pos.lineno = sourceline;
17151 yylloc->end_pos.column = end_pos;
17187 v = valp->
node->nd_rval;
17194 v = valp->
node->nd_lit;
17222 if (!
id)
return -1;
17225 *
err =
"Can't change the value of self";
17228 *
err =
"Can't assign to nil";
17231 *
err =
"Can't assign to true";
17234 *
err =
"Can't assign to false";
17237 *
err =
"Can't assign to __FILE__";
17240 *
err =
"Can't assign to __LINE__";
17243 *
err =
"Can't assign to __ENCODING__";
17246 switch (id_type(
id)) {
17248 if (dyna_in_block(p)) {
17261 if (!local_id(p,
id)) local_var(p,
id);
17269 *
err =
"dynamic constant assignment";
17282 const char *
err = 0;
17300 const char *
err = 0;
17302 if (
err) lhs = assign_error(p, lhs);
17308 is_private_local_id(
ID name)
17321 if (is_private_local_id(
name))
return 1;
17322 if (dyna_in_block(p)) {
17323 if (dvar_curr(p,
name)) {
17324 yyerror0(
"duplicated argument name");
17326 else if (dvar_defined(p,
name) || local_id(p,
name)) {
17335 if (local_id(p,
name)) {
17336 yyerror0(
"duplicated argument name");
17345 shadowing_lvar_0(p,
name);
17358 if (!shadowing_lvar_0(p,
name))
return;
17392 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
17403 return list_append(p, node1, node2);
17405 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
17409 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
17415 node1->nd_body = list_append(p, node1->nd_body, node2);
17425 if (!node2)
return node1;
17428 if (node1->nd_head)
17429 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
17431 node1->nd_head =
NEW_LIST(node2, loc);
17435 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
17441 node1->nd_body = list_concat(node1->nd_body, node2);
17451 if ((n1 = splat_array(
args)) != 0) {
17452 return list_append(p, n1, last_arg);
17454 return arg_append(p,
args, last_arg, loc);
17462 return list_concat(n1, rest_arg);
17464 return arg_concat(p,
args, rest_arg, loc);
17468 splat_array(
NODE* node)
17482 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
17488 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
17494 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
17495 mark_lvar_used(p, rhs->nd_head);
17505 if (!lhs)
return 0;
17516 lhs->nd_value = rhs;
17517 nd_set_loc(lhs, loc);
17521 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
17522 nd_set_loc(lhs, loc);
17536 NODE *void_node = 0, *vn;
17548 return void_node ? void_node : node;
17555 if (node->nd_body->nd_body) {
17559 return void_node ? void_node : node;
17562 while (node->nd_next) {
17563 node = node->nd_next;
17565 node = node->nd_head;
17569 node = node->nd_body;
17574 if (!node->nd_body) {
17577 else if (!node->nd_else) {
17580 vn = value_expr_check(p, node->nd_body);
17581 if (!vn)
return NULL;
17582 if (!void_node) void_node = vn;
17583 node = node->nd_else;
17588 node = node->nd_1st;
17595 mark_lvar_used(p, node);
17609 NODE *void_node = value_expr_check(p, node);
17620 const char *useless = 0;
17627 switch (node->nd_mid) {
17658 useless =
"a variable";
17661 useless =
"a constant";
17667 useless =
"a literal";
17692 useless =
"defined?";
17704 NODE *
const n = node;
17706 if (!node)
return n;
17709 while (node->nd_next) {
17710 void_expr(p, node->nd_head);
17711 node = node->nd_next;
17717 remove_begin(
NODE *node)
17719 NODE **
n = &node, *n1 = node;
17721 *
n = n1 = n1->nd_body;
17727 remove_begin_all(
NODE *node)
17729 NODE **
n = &node, *n1 = node;
17731 *
n = n1 = n1->nd_body;
17739 NODE *node = *body;
17745 #define subnodes(n1, n2) \
17746 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
17747 (!node->n2) ? (body = &node->n1, 1) : \
17748 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
17758 *body = node = node->nd_stts;
17762 *body = node = node->nd_body;
17766 body = &node->nd_end->nd_head;
17773 body = &node->nd_body;
17782 if (node->nd_else) {
17783 body = &node->nd_resq;
17799 is_static_content(
NODE *node)
17801 if (!node)
return 1;
17804 if (!(node = node->nd_head))
break;
17807 if (!is_static_content(node->nd_head))
return 0;
17808 }
while ((node = node->nd_next) != 0);
17838 if (!node->nd_value)
return 1;
17839 if (is_static_content(node->nd_value)) {
17841 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
17852 #define SWITCH_BY_COND_TYPE(t, w, arg) \
17854 case COND_IN_OP: break; \
17855 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
17856 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
17866 if (node == 0)
return 0;
17871 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
17880 if (node == 0)
return 0;
17882 assign_in_cond(p, node);
17935 if (node == 0)
return 0;
17942 if (node == 0)
return 0;
17949 if (!
cc)
return right;
17951 return newline_node(
NEW_IF(
cc, left, right, loc));
17957 if (!
cc)
return right;
17959 return newline_node(
NEW_UNLESS(
cc, left, right, loc));
17970 NODE *node = left, *second;
17975 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
17996 no_blockarg(p, node);
17998 if (node->nd_next == 0) {
17999 node = node->nd_head;
18012 if (node) no_blockarg(p, node);
18056 arg_blk_pass(
NODE *node1,
NODE *node2)
18059 if (!node1)
return node2;
18060 node2->nd_head = node1;
18071 if (
args->pre_args_num)
return false;
18072 if (
args->post_args_num)
return false;
18073 if (
args->rest_arg)
return false;
18074 if (
args->opt_args)
return false;
18075 if (
args->block_arg)
return false;
18076 if (
args->kw_args)
return false;
18077 if (
args->kw_rest_arg)
return false;
18088 args->
pre_init = pre_args ? pre_args->nd_next : 0;
18091 args->
post_init = post_args ? post_args->nd_next : 0;
18101 nd_set_loc(tail, loc);
18113 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
18114 args->
imemo = tmpbuf;
18129 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
18131 NODE *kwn = kw_args;
18133 vtable_pop(vtargs, !!block + !!kw_rest_arg);
18134 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
18138 --required_kw_vars;
18139 kwn = kwn->nd_next;
18142 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
18143 ID vid = kwn->nd_body->nd_vid;
18145 *required_kw_vars++ = vid;
18152 arg_var(p, kw_bits);
18153 if (kw_rest_arg) arg_var(p, kw_rest_arg);
18154 if (block) arg_var(p, block);
18159 else if (kw_rest_arg ==
idNil) {
18162 else if (kw_rest_arg) {
18176 args = new_args_tail(p, 0, 0, 0, 0);
18177 nd_set_loc(args, &loc);
18179 args->nd_ainfo->pre_args_num = max_numparam;
18189 aryptn->nd_pconst = constant;
18210 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
18212 apinfo->
imemo = tmpbuf;
18238 hshptn->nd_pconst = constant;
18246 NODE *node, *kw_rest_arg_node;
18248 if (kw_rest_arg ==
idNil) {
18251 else if (kw_rest_arg) {
18252 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
18255 kw_rest_arg_node =
NULL;
18270 rb_warn0L(
nd_line(node),
"Pattern matching is experimental, and the behavior may change in future versions of Ruby!");
18286 nd_set_loc(node, loc);
18289 lit = node->nd_lit;
18292 nd_set_loc(node, loc);
18307 node->nd_next->nd_end = node->nd_next;
18308 node->nd_next->nd_next = 0;
18310 list_concat(*result, node);
18322 while (hash && hash->nd_head && hash->nd_next) {
18323 NODE *head = hash->nd_head;
18324 NODE *value = hash->nd_next;
18325 NODE *next = value->nd_next;
18329 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
18331 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
18332 head->nd_lit,
nd_line(head));
18333 head = ((
NODE *)data)->nd_next;
18334 head->nd_head = block_append(p, head->nd_head, value->nd_head);
18344 if (!result) result = hash;
18345 else list_concat(result, hash);
18354 if (hash) hash = remove_duplicate_keys(p, hash);
18362 if (is_private_local_id(
id)) {
18366 yyerror1(loc,
"duplicated variable name");
18380 yyerror1(loc,
"duplicated key name");
18401 ID vid = lhs->nd_vid;
18404 lhs->nd_value = rhs;
18405 nd_set_loc(lhs, loc);
18408 switch (id_type(vid)) {
18412 asgn->nd_aid = vid;
18416 else if (op ==
tANDOP) {
18417 lhs->nd_value = rhs;
18418 nd_set_loc(lhs, loc);
18424 nd_set_loc(asgn, loc);
18444 args = arg_concat(p, args, rhs, loc);
18481 yyerror1(loc,
"dynamic constant assignment");
18490 path = dispatch1(assign_error,
path);
18499 a = dispatch1(assign_error, a);
18507 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
18515 NODE *result = head;
18517 NODE *tmp = rescue_else ? rescue_else : rescue;
18520 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
18523 else if (rescue_else) {
18524 result = block_append(p, result, rescue_else);
18529 fixpos(result, head);
18539 if (!local->
used)
return;
18547 for (
int i = 0;
i <
cnt; ++
i) {
18549 if (is_private_local_id(
v[
i]))
continue;
18568 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
18575 # if WARN_PAST_SCOPE
18588 warn_unused_var(p, p->
lvtbl);
18591 # if WARN_PAST_SCOPE
18592 while (p->
lvtbl->past) {
18610 int cnt_args = vtable_size(p->
lvtbl->
args);
18611 int cnt_vars = vtable_size(p->
lvtbl->
vars);
18612 int cnt = cnt_args + cnt_vars;
18616 if (
cnt <= 0)
return 0;
18620 for (
i = 0, j = cnt_args+1;
i < cnt_vars; ++
i) {
18622 if (!vtable_included(p->
lvtbl->
args,
id)) {
18652 rb_warn1(
"`_%d' is reserved for numbered parameter; consider another name",
18659 numparam_name(p,
id);
18666 numparam_name(p,
id);
18685 if (used) used = used->
prev;
18691 else if (vtable_included(args,
id)) {
18695 int i = vtable_included(
vars,
id);
18696 if (
i && used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18704 return local_id_ref(p,
id,
NULL);
18749 static const struct vtable *
18763 struct vtable *tmp = *vtblp;
18764 *vtblp = tmp->
prev;
18765 # if WARN_PAST_SCOPE
18766 if (p->past_scope_enabled) {
18768 p->
lvtbl->past = tmp;
18781 warn_unused_var(p, p->
lvtbl);
18820 if (vtable_included(args,
id)) {
18823 if ((
i = vtable_included(
vars,
id)) != 0) {
18824 if (used && vidrefp) *vidrefp = &used->
tbl[
i-1];
18829 if (!vidrefp) used = 0;
18830 if (used) used = used->
prev;
18843 return dvar_defined_ref(p,
id,
NULL);
18849 return (vtable_included(p->
lvtbl->
args,
id) ||
18857 "regexp encoding option '%c' differs from source encoding '%s'",
18903 if (c) reg_fragment_enc_error(p,
str, c);
18910 reg_fragment_setenc(p,
str, options);
18929 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
18935 const char *s = (
const char *)
name;
18947 succ =
arg->succ_block;
18949 succ = block_append(p, succ, node);
18950 arg->succ_block = succ;
18961 arg.succ_block = 0;
18965 if (!
arg.succ_block)
return 0;
18966 return arg.succ_block->nd_next;
18972 reg_fragment_setenc(p,
str, options);
18989 re = parser_reg_compile(p,
str, options);
19006 if (c) reg_fragment_enc_error(p,
str, c);
19039 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
19040 const YYLTYPE *
const LOC = &default_location;
19046 node = block_append(p, node, print);
19056 node = block_append(p, split, node);
19061 node = block_append(p, chomp, node);
19081 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
19097 p->delayed.token =
Qnil;
19099 p->parsing_thread =
Qnil;
19109 #define parser_mark ripper_parser_mark
19110 #define parser_free ripper_parser_free
19114 parser_mark(
void *
ptr)
19144 parser_free(
void *
ptr)
19152 for (local = p->
lvtbl; local; local =
prev) {
19168 parser_memsize(
const void *
ptr)
19172 size_t size =
sizeof(*p);
19175 for (local = p->
lvtbl; local; local = local->
prev) {
19176 size +=
sizeof(*local);
19197 #undef rb_reserved_word
19202 return reserved_word(
str,
len);
19210 &parser_data_type, p);
19211 parser_initialize(p);
19228 #define rb_parser_end_seen_p ripper_parser_end_seen_p
19229 #define rb_parser_encoding ripper_parser_encoding
19230 #define rb_parser_get_yydebug ripper_parser_get_yydebug
19231 #define rb_parser_set_yydebug ripper_parser_set_yydebug
19232 #define rb_parser_get_debug_output ripper_parser_get_debug_output
19233 #define rb_parser_set_debug_output ripper_parser_set_debug_output
19234 static VALUE ripper_parser_end_seen_p(
VALUE vparser);
19235 static VALUE ripper_parser_encoding(
VALUE vparser);
19236 static VALUE ripper_parser_get_yydebug(
VALUE self);
19238 static VALUE ripper_parser_get_debug_output(
VALUE self);
19239 static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
19248 ripper_error_p(
VALUE vparser)
19295 rb_parser_get_yydebug(
VALUE self)
19352 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
19355 #define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
19356 #define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
19357 (new)->cnt = (cnt), (ptr))
19387 if (
n->ptr ==
ptr) {
19389 if (
n->cnt)
n->cnt =
cnt;
19392 }
while ((
n =
n->next) !=
NULL);
19404 while ((
n = *prev) !=
NULL) {
19405 if (
n->ptr ==
ptr) {
19450 count_char(
const char *
str,
int c)
19453 while (
str[
n] == c) ++
n;
19467 if (*yystr ==
'"') {
19468 size_t yyn = 0, bquote = 0;
19469 const char *yyp = yystr;
19475 bquote = count_char(yyp+1,
'`') + 1;
19476 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
19484 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
19485 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
19491 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
19492 if (yyres)
memcpy(yyres + yyn, yyp, 3);
19497 goto do_not_strip_quotes;
19500 goto do_not_strip_quotes;
19503 if (*++yyp !=
'\\')
19504 goto do_not_strip_quotes;
19520 do_not_strip_quotes: ;
19523 if (!yyres)
return strlen(yystr);
19525 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
19530 #ifdef RIPPER_DEBUG
19535 if (x ==
Qfalse)
return x;
19536 if (x ==
Qtrue)
return x;
19537 if (x ==
Qnil)
return x;
19555 x = ((
NODE *)x)->nd_rval;
19569 #define validate(x) ((x) = get_value(x))
19598 return rb_funcall(p->value, mid, 3, a, b, c);
19608 return rb_funcall(p->value, mid, 4, a, b, c, d);
19619 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
19632 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f, g);
19641 if (
nd_type(nd) != NODE_RIPPER)
return 0;
19646 ripper_get_value(
VALUE v)
19653 return nd->nd_rval;
19681 "gets returned %"PRIsVALUE" (expected String or nil)",
19698 &parser_data_type, p);
19703 #define ripper_initialized_p(r) ((r)->lex.input != 0)
19724 p->
lex.
gets = ripper_lex_io_get;
19727 p->
lex.
gets = ripper_lex_get_generic;
19735 if (
NIL_P(fname)) {
19743 parser_initialize(p);
19753 ripper_parse0(
VALUE parser_v)
19760 ripper_yyparse((
void*)p);
19767 ripper_ensure(
VALUE parser_v)
19772 p->parsing_thread =
Qnil;
19783 ripper_parse(
VALUE self)
19788 if (!ripper_initialized_p(p)) {
19791 if (!
NIL_P(p->parsing_thread)) {
19798 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
19811 ripper_column(
VALUE self)
19817 if (!ripper_initialized_p(p)) {
19820 if (
NIL_P(p->parsing_thread))
return Qnil;
19832 ripper_filename(
VALUE self)
19837 if (!ripper_initialized_p(p)) {
19851 ripper_lineno(
VALUE self)
19856 if (!ripper_initialized_p(p)) {
19859 if (
NIL_P(p->parsing_thread))
return Qnil;
19870 ripper_state(
VALUE self)
19875 if (!ripper_initialized_p(p)) {
19878 if (
NIL_P(p->parsing_thread))
return Qnil;
19889 ripper_token(
VALUE self)
19895 if (!ripper_initialized_p(p)) {
19898 if (
NIL_P(p->parsing_thread))
return Qnil;
19904 #ifdef RIPPER_DEBUG
19939 ripper_init_eventids1();
19940 ripper_init_eventids2();
19952 InitVM_ripper(
void)
19974 #ifdef RIPPER_DEBUG
20022 ripper_init_eventids1_table(Ripper);
20023 ripper_init_eventids2_table(Ripper);