52#define YYBISON_VERSION "3.8.2"
55#define YYSKELETON_NAME "yacc.c"
74# error needs pure parser
77#define YYERROR_VERBOSE 1
78#define YYSTACK_USE_ALLOCA 0
79#define YYLTYPE rb_code_location_t
80#define YYLTYPE_IS_DECLARED 1
94#include "internal/error.h"
102#include "internal/symbol.h"
105#include "internal/variable.h"
134#define NO_LEX_CTXT (struct lex_context){0}
136#define AREF(ary, i) RARRAY_AREF(ary, i)
138#ifndef WARN_PAST_SCOPE
139# define WARN_PAST_SCOPE 0
144#define yydebug (p->debug)
146#define YYMALLOC(size) rb_parser_malloc(p, (size))
147#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
148#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
149#define YYFREE(ptr) rb_parser_free(p, (ptr))
150#define YYFPRINTF rb_parser_printf
151#define YY_LOCATION_PRINT(File, loc) \
152 rb_parser_printf(p, "%d.%d-%d.%d", \
153 (loc).beg_pos.lineno, (loc).beg_pos.column,\
154 (loc).end_pos.lineno, (loc).end_pos.column)
155#define YYLLOC_DEFAULT(Current, Rhs, N) \
159 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
160 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
164 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
165 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
169#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
170 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
171#define RUBY_SET_YYLLOC_OF_NONE(Current) \
172 rb_parser_set_location_of_none(p, &(Current))
173#define RUBY_SET_YYLLOC(Current) \
174 rb_parser_set_location(p, &(Current))
175#define RUBY_INIT_YYLLOC() \
177 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
178 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
199#define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
219#define IS_lex_state_for(x, ls) ((x) & (ls))
220#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
221#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
222#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
224# define SET_LEX_STATE(ls) \
227 rb_parser_trace_lex_state(p, p->lex.state, (ls), __LINE__) : \
228 (enum lex_state_e)(ls)))
234# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
235# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
236# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
237# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
238# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
242#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
243#define COND_POP() BITSTACK_POP(cond_stack)
244#define COND_P() BITSTACK_SET_P(cond_stack)
245#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
249#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
250#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
251#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
252#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
282#define NUMPARAM_ID_P(id) numparam_id_p(id)
283#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
284#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
294#define DVARS_INHERIT ((void*)1)
295#define DVARS_TOPSCOPE NULL
296#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
379 unsigned int eofp: 1;
381 unsigned int debug: 1;
386 unsigned int past_scope_enabled: 1;
415 VALUE parsing_thread;
419#define intern_cstr(n,l,en) rb_intern3(n,l,en)
421#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
422#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
423#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
424#define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
425#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
458#define yyerror0(msg) parser_yyerror(p, NULL, (msg))
459#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
460#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
461#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
470#define compile_for_eval (0)
472#define compile_for_eval (p->parent_iseq != 0)
475#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
477#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
478#define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
479#define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
481#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
498 && !RB_TYPE_P(obj,
T_NODE)
509#define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
523set_line_body(
NODE *body,
int line)
533#define yyparse ruby_yyparse
537#define new_nil(loc) NEW_NIL(loc)
549static NODE *remove_begin_all(
NODE*);
550#define value_expr(node) value_expr_gen(p, (node))
574static bool args_info_empty_p(
struct rb_args_info *args);
583static void warn_one_line_pattern_matching(
struct parser_params *p,
NODE *node,
NODE *pattern,
bool right_assign);
621#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
641#define get_id(id) (id)
642#define get_value(val) (val)
643#define get_num(num) (num)
645#define NODE_RIPPER NODE_CDECL
646#define NEW_RIPPER(a,b,c,loc) (VALUE)NEW_CDECL(a,b,c,loc)
648static inline int ripper_is_node_yylval(
VALUE n);
653 if (ripper_is_node_yylval(c)) c =
RNODE(c)->nd_cval;
654 add_mark_object(p, b);
655 add_mark_object(p, c);
656 return NEW_RIPPER(a, b, c, &NULL_LOC);
660ripper_is_node_yylval(
VALUE n)
665#define value_expr(node) ((void)(node))
666#define remove_begin(node) (node)
667#define void_stmts(p,x) (x)
668#define rb_dvar_defined(id, base) 0
669#define rb_local_defined(id, base) 0
671#define get_id(id) ripper_get_id(id)
673#define get_value(val) ripper_get_value(val)
674#define get_num(num) (int)get_id(num)
678#define method_cond(p,node,loc) (node)
679#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
680#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
681#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
682#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
684#define new_nil(loc) Qnil
701RUBY_SYMBOL_EXPORT_BEGIN
711RUBY_SYMBOL_EXPORT_END
740#define dyna_var(p, id) local_var(p, id)
751# define METHOD_NOT idNOT
753# define METHOD_NOT '!'
756#define idFWD_REST '*'
758#define idFWD_KWREST idPow
760#define idFWD_KWREST 0
762#define idFWD_BLOCK '&'
764#define RE_OPTION_ONCE (1<<16)
765#define RE_OPTION_ENCODING_SHIFT 8
766#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
767#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
768#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
769#define RE_OPTION_MASK 0xff
770#define RE_OPTION_ARG_ENCODING_NONE 32
792#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
799#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
801# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
803# define HERETERM_LENGTH_MAX UINT_MAX
806#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
816#define STRTERM_HEREDOC IMEMO_FL_USER0
838#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
841#define TOKEN2ID(tok) ( \
842 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
843 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
844 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
845 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
846 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
847 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
848 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
853#define RIPPER_VERSION "0.1.0"
855static inline VALUE intern_sym(
const char *
name);
869#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
870#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
871#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
872#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
873#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
874#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
875#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))
877#define yyparse ripper_yyparse
879#define ID2VAL(id) STATIC_ID2SYM(id)
880#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
881#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
883#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
884 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
886#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
892 VALUE kw_args =
t->u1.value, kw_rest_arg =
t->u2.value, block =
t->u3.value;
893 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
900 add_mark_object(p, kw_args);
901 add_mark_object(p, kw_rest_arg);
902 add_mark_object(p, block);
916 VALUE pre_args =
t->u1.value, rest_arg =
t->u2.value, post_args =
t->u3.value;
918 if (!
NIL_P(pre_arg)) {
919 if (!
NIL_P(pre_args)) {
926 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
935 rest_arg = dispatch1(var_field, rest_arg ? rest_arg :
Qnil);
942 add_mark_object(p, pre_args);
943 add_mark_object(p, rest_arg);
944 add_mark_object(p, post_args);
952 VALUE pre_rest_arg =
t->u1.value, args =
t->u2.value, post_rest_arg =
t->u3.value;
954 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
962 pre_rest_arg = dispatch1(var_field, pre_rest_arg ? pre_rest_arg :
Qnil);
963 post_rest_arg = dispatch1(var_field, post_rest_arg ? post_rest_arg :
Qnil);
966 add_mark_object(p, pre_rest_arg);
967 add_mark_object(p, args);
968 add_mark_object(p, post_rest_arg);
972#define new_hash(p,h,l) rb_ary_new_from_args(0)
984 VALUE kw_args =
t->u1.value, kw_rest_arg =
t->u2.value;
985 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
993 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1000 add_mark_object(p, kw_args);
1001 add_mark_object(p, kw_rest_arg);
1005#define new_defined(p,expr,loc) dispatch1(defined, (expr))
1010#define ID2VAL(id) (id)
1011#define TOKEN2VAL(t) ID2VAL(t)
1012#define KWD2EID(t, v) keyword_##t
1017 body = remove_begin(body);
1018 reduce_nodes(p, &body);
1019 n->nd_defn =
NEW_SCOPE(args, body, loc);
1022 set_line_body(body, loc->beg_pos.lineno);
1030 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1031 rescue =
NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1032 loc.beg_pos = arg_loc->beg_pos;
1044 p->
ctxt.shareable_constant_value = c.
ctxt.shareable_constant_value;
1051 defn = defn->nd_defn;
1053 ID mid = defn->nd_mid;
1055 yyerror1(loc,
"setter method cannot be defined in an endless method definition");
1057 token_info_drop(p,
"def", loc->beg_pos);
1063# define ifndef_ripper(x) (x)
1066# define Qnull Qundef
1067# define ifndef_ripper(x)
1070# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1071# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1072# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1073# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1074# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1075# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1076# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1077# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1078# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1079# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1080# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1081# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1082# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1083# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1084# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1085# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1086# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1087# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1088# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1089# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1091static ID id_warn, id_warning, id_gets, id_assoc;
1092# define ERR_MESG() STR_NEW2(mesg)
1093# define WARN_S_L(s,l) STR_NEW(s,l)
1094# define WARN_S(s) STR_NEW2(s)
1095# define WARN_I(i) INT2NUM(i)
1096# define WARN_ID(i) rb_id2str(i)
1097# define WARN_IVAL(i) i
1098# define PRIsWARN "s"
1099# define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1100# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1101# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1102# ifdef HAVE_VA_ARGS_MACRO
1103# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1105# define WARN_CALL rb_funcall
1107# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1108# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1109# ifdef HAVE_VA_ARGS_MACRO
1110# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1112# define WARNING_CALL rb_funcall
1115# define compile_error ripper_compile_error
1117# define WARN_S_L(s,l) s
1120# define WARN_ID(i) rb_id2name(i)
1121# define WARN_IVAL(i) NUM2INT(i)
1122# define PRIsWARN PRIsVALUE
1123# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1124# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1125# define WARN_CALL rb_compile_warn
1126# define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1127# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1128# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1129# define WARNING_CALL rb_compile_warning
1131# define compile_error parser_compile_error
1134#define WARN_EOL(tok) \
1135 (looking_at_eol_p(p) ? \
1136 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1144# define YY_CAST(Type, Val) static_cast<Type> (Val)
1145# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1147# define YY_CAST(Type, Val) ((Type) (Val))
1148# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1152# if defined __cplusplus
1153# if 201103L <= __cplusplus
1154# define YY_NULLPTR nullptr
1156# define YY_NULLPTR 0
1159# define YY_NULLPTR ((void*)0)
1165#ifndef YY_YY_Y_TAB_H_INCLUDED
1166# define YY_YY_Y_TAB_H_INCLUDED
1310#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1328# define YYSTYPE_IS_TRIVIAL 1
1329# define YYSTYPE_IS_DECLARED 1
1333#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1342# define YYLTYPE_IS_DECLARED 1
1343# define YYLTYPE_IS_TRIVIAL 1
1795#ifndef __PTRDIFF_MAX__
1797# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1808#ifdef __INT_LEAST8_MAX__
1810#elif defined YY_STDINT_H
1816#ifdef __INT_LEAST16_MAX__
1818#elif defined YY_STDINT_H
1830# undef UINT_LEAST8_MAX
1831# undef UINT_LEAST16_MAX
1832# define UINT_LEAST8_MAX 255
1833# define UINT_LEAST16_MAX 65535
1836#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1838#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1839 && UINT_LEAST8_MAX <= INT_MAX)
1841#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1847#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1849#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1850 && UINT_LEAST16_MAX <= INT_MAX)
1852#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1859# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1860# define YYPTRDIFF_T __PTRDIFF_TYPE__
1861# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1862# elif defined PTRDIFF_MAX
1866# define YYPTRDIFF_T ptrdiff_t
1867# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1869# define YYPTRDIFF_T long
1870# define YYPTRDIFF_MAXIMUM LONG_MAX
1875# ifdef __SIZE_TYPE__
1876# define YYSIZE_T __SIZE_TYPE__
1877# elif defined size_t
1878# define YYSIZE_T size_t
1879# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1881# define YYSIZE_T size_t
1883# define YYSIZE_T unsigned
1887#define YYSIZE_MAXIMUM \
1888 YY_CAST (YYPTRDIFF_T, \
1889 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1890 ? YYPTRDIFF_MAXIMUM \
1891 : YY_CAST (YYSIZE_T, -1)))
1893#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1903# if defined YYENABLE_NLS && YYENABLE_NLS
1905# include <libintl.h>
1906# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1910# define YY_(Msgid) Msgid
1915#ifndef YY_ATTRIBUTE_PURE
1916# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1917# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1919# define YY_ATTRIBUTE_PURE
1923#ifndef YY_ATTRIBUTE_UNUSED
1924# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1925# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1927# define YY_ATTRIBUTE_UNUSED
1932#if ! defined lint || defined __GNUC__
1933# define YY_USE(E) ((void) (E))
1939#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1940# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1941# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1942 _Pragma ("GCC diagnostic push") \
1943 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1945# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1946 _Pragma ("GCC diagnostic push") \
1947 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1948 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1950# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1951 _Pragma ("GCC diagnostic pop")
1953# define YY_INITIAL_VALUE(Value) Value
1955#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1956# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1957# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1959#ifndef YY_INITIAL_VALUE
1960# define YY_INITIAL_VALUE(Value)
1963#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1964# define YY_IGNORE_USELESS_CAST_BEGIN \
1965 _Pragma ("GCC diagnostic push") \
1966 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1967# define YY_IGNORE_USELESS_CAST_END \
1968 _Pragma ("GCC diagnostic pop")
1970#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1971# define YY_IGNORE_USELESS_CAST_BEGIN
1972# define YY_IGNORE_USELESS_CAST_END
1976#define YY_ASSERT(E) ((void) (0 && (E)))
1982# ifdef YYSTACK_USE_ALLOCA
1983# if YYSTACK_USE_ALLOCA
1985# define YYSTACK_ALLOC __builtin_alloca
1986# elif defined __BUILTIN_VA_ARG_INCR
1989# define YYSTACK_ALLOC __alloca
1990# elif defined _MSC_VER
1992# define alloca _alloca
1994# define YYSTACK_ALLOC alloca
1995# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1998# ifndef EXIT_SUCCESS
1999# define EXIT_SUCCESS 0
2006# ifdef YYSTACK_ALLOC
2008# define YYSTACK_FREE(Ptr) do { ; } while (0)
2009# ifndef YYSTACK_ALLOC_MAXIMUM
2014# define YYSTACK_ALLOC_MAXIMUM 4032
2017# define YYSTACK_ALLOC YYMALLOC
2018# define YYSTACK_FREE YYFREE
2019# ifndef YYSTACK_ALLOC_MAXIMUM
2020# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2022# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2023 && ! ((defined YYMALLOC || defined malloc) \
2024 && (defined YYFREE || defined free)))
2026# ifndef EXIT_SUCCESS
2027# define EXIT_SUCCESS 0
2031# define YYMALLOC malloc
2032# if ! defined malloc && ! defined EXIT_SUCCESS
2038# if ! defined free && ! defined EXIT_SUCCESS
2045#if (! defined yyoverflow \
2046 && (! defined __cplusplus \
2047 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2048 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2059# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2063# define YYSTACK_BYTES(N) \
2064 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2065 + YYSIZEOF (YYLTYPE)) \
2066 + 2 * YYSTACK_GAP_MAXIMUM)
2068# define YYCOPY_NEEDED 1
2075# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2078 YYPTRDIFF_T yynewbytes; \
2079 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2080 Stack = &yyptr->Stack_alloc; \
2081 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2082 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2088#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2092# if defined __GNUC__ && 1 < __GNUC__
2093# define YYCOPY(Dst, Src, Count) \
2094 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2096# define YYCOPY(Dst, Src, Count) \
2100 for (yyi = 0; yyi < (Count); yyi++) \
2101 (Dst)[yyi] = (Src)[yyi]; \
2114#define YYNTOKENS 154
2120#define YYNSTATES 1294
2123#define YYMAXUTOK 353
2128#define YYTRANSLATE(YYX) \
2129 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2130 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2137 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
2138 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
2139 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2140 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
2141 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
2142 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
2143 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
2144 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2145 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2146 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
2147 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2148 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2149 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
2150 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
2151 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
2152 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2153 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2154 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2155 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2156 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2162 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2163 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2164 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2165 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2166 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2167 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2168 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2169 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
2170 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2171 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2179 0, 1322, 1322, 1322, 1348, 1354, 1361, 1368, 1375, 1381,
2180 1382, 1388, 1401, 1399, 1410, 1421, 1427, 1434, 1441, 1448,
2181 1454, 1459, 1458, 1468, 1468, 1475, 1482, 1492, 1501, 1508,
2182 1516, 1524, 1536, 1548, 1558, 1572, 1573, 1581, 1589, 1598,
2183 1605, 1608, 1615, 1622, 1630, 1637, 1644, 1652, 1659, 1669,
2184 1674, 1683, 1686, 1687, 1691, 1695, 1699, 1704, 1711, 1713,
2185 1703, 1723, 1730, 1732, 1722, 1741, 1744, 1761, 1770, 1770,
2186 1784, 1791, 1791, 1791, 1797, 1798, 1801, 1802, 1811, 1821,
2187 1831, 1840, 1851, 1858, 1865, 1872, 1879, 1887, 1895, 1902,
2188 1909, 1918, 1919, 1928, 1929, 1938, 1945, 1952, 1959, 1966,
2189 1973, 1980, 1987, 1994, 2001, 2010, 2011, 2020, 2027, 2036,
2190 2043, 2052, 2059, 2066, 2073, 2083, 2090, 2100, 2107, 2114,
2191 2124, 2131, 2138, 2145, 2152, 2159, 2166, 2173, 2180, 2190,
2192 2198, 2201, 2208, 2215, 2224, 2225, 2226, 2227, 2232, 2235,
2193 2242, 2245, 2252, 2252, 2262, 2263, 2264, 2265, 2266, 2267,
2194 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277,
2195 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287,
2196 2288, 2289, 2290, 2291, 2294, 2294, 2294, 2295, 2295, 2296,
2197 2296, 2296, 2297, 2297, 2297, 2297, 2298, 2298, 2298, 2298,
2198 2299, 2299, 2299, 2300, 2300, 2300, 2300, 2301, 2301, 2301,
2199 2301, 2302, 2302, 2302, 2302, 2303, 2303, 2303, 2303, 2304,
2200 2304, 2304, 2304, 2305, 2305, 2308, 2315, 2322, 2329, 2336,
2201 2343, 2350, 2358, 2365, 2373, 2382, 2391, 2399, 2407, 2415,
2202 2423, 2427, 2431, 2435, 2439, 2443, 2447, 2451, 2455, 2459,
2203 2463, 2467, 2471, 2475, 2476, 2480, 2484, 2488, 2492, 2496,
2204 2500, 2504, 2508, 2512, 2516, 2520, 2520, 2525, 2534, 2544,
2205 2555, 2567, 2580, 2586, 2587, 2588, 2589, 2592, 2596, 2603,
2206 2607, 2613, 2620, 2621, 2625, 2632, 2641, 2646, 2656, 2663,
2207 2675, 2689, 2690, 2693, 2694, 2695, 2699, 2706, 2715, 2723,
2208 2730, 2738, 2746, 2750, 2750, 2787, 2796, 2800, 2806, 2813,
2209 2820, 2827, 2836, 2837, 2840, 2847, 2854, 2863, 2864, 2865,
2210 2866, 2867, 2868, 2869, 2870, 2871, 2872, 2873, 2881, 2880,
2211 2895, 2895, 2902, 2902, 2910, 2918, 2925, 2932, 2939, 2947,
2212 2954, 2961, 2968, 2975, 2975, 2980, 2984, 2988, 2995, 2996,
2213 3004, 3005, 3016, 3027, 3037, 3048, 3047, 3064, 3063, 3078,
2214 3087, 3132, 3131, 3155, 3154, 3177, 3176, 3199, 3211, 3225,
2215 3232, 3239, 3246, 3255, 3262, 3268, 3285, 3291, 3297, 3303,
2216 3309, 3315, 3322, 3329, 3335, 3341, 3347, 3353, 3359, 3365,
2217 3380, 3387, 3393, 3400, 3401, 3402, 3405, 3406, 3409, 3410,
2218 3422, 3423, 3432, 3433, 3436, 3444, 3453, 3460, 3469, 3476,
2219 3483, 3490, 3497, 3506, 3514, 3523, 3524, 3527, 3531, 3535,
2220 3539, 3545, 3550, 3555, 3565, 3569, 3573, 3577, 3581, 3585,
2221 3590, 3594, 3598, 3602, 3606, 3610, 3614, 3618, 3622, 3628,
2222 3629, 3635, 3644, 3656, 3660, 3669, 3671, 3675, 3680, 3687,
2223 3693, 3697, 3701, 3686, 3726, 3734, 3744, 3749, 3755, 3765,
2224 3779, 3786, 3793, 3802, 3811, 3819, 3827, 3834, 3842, 3850,
2225 3857, 3864, 3877, 3885, 3895, 3896, 3900, 3895, 3917, 3918,
2226 3922, 3917, 3941, 3949, 3956, 3964, 3973, 3985, 3986, 3990,
2227 3997, 4001, 3989, 4016, 4017, 4020, 4021, 4029, 4039, 4040,
2228 4045, 4053, 4057, 4061, 4067, 4070, 4079, 4082, 4089, 4092,
2229 4093, 4095, 4096, 4105, 4114, 4123, 4128, 4137, 4146, 4155,
2230 4160, 4164, 4168, 4174, 4173, 4185, 4190, 4190, 4197, 4206,
2231 4210, 4219, 4223, 4227, 4231, 4235, 4238, 4242, 4251, 4255,
2232 4261, 4271, 4275, 4281, 4282, 4291, 4300, 4304, 4308, 4312,
2233 4318, 4320, 4329, 4337, 4351, 4352, 4375, 4379, 4385, 4391,
2234 4392, 4395, 4396, 4405, 4414, 4422, 4430, 4431, 4432, 4433,
2235 4441, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, 4459,
2236 4466, 4469, 4479, 4492, 4499, 4506, 4515, 4527, 4530, 4537,
2237 4544, 4547, 4551, 4554, 4561, 4564, 4565, 4568, 4585, 4586,
2238 4587, 4596, 4606, 4615, 4621, 4631, 4637, 4646, 4648, 4657,
2239 4667, 4673, 4682, 4691, 4701, 4707, 4717, 4723, 4733, 4743,
2240 4762, 4768, 4778, 4788, 4829, 4832, 4831, 4848, 4852, 4857,
2241 4861, 4865, 4847, 4886, 4893, 4900, 4907, 4910, 4911, 4914,
2242 4924, 4925, 4926, 4927, 4930, 4940, 4941, 4951, 4952, 4953,
2243 4954, 4957, 4958, 4959, 4960, 4961, 4964, 4965, 4966, 4967,
2244 4968, 4969, 4970, 4973, 4986, 4995, 5002, 5011, 5012, 5016,
2245 5015, 5025, 5033, 5033, 5035, 5044, 5054, 5066, 5067, 5067,
2246 5081, 5085, 5089, 5093, 5099, 5104, 5109, 5113, 5117, 5121,
2247 5125, 5129, 5133, 5137, 5141, 5145, 5149, 5153, 5157, 5161,
2248 5166, 5172, 5181, 5190, 5199, 5208, 5219, 5220, 5228, 5237,
2249 5245, 5266, 5268, 5281, 5290, 5298, 5308, 5315, 5324, 5331,
2250 5341, 5348, 5357, 5358, 5361, 5369, 5377, 5387, 5397, 5407,
2251 5414, 5423, 5430, 5439, 5440, 5443, 5451, 5461, 5462, 5465,
2252 5475, 5479, 5485, 5490, 5490, 5514, 5515, 5524, 5526, 5549,
2253 5560, 5567, 5575, 5594, 5595, 5596, 5599, 5600, 5601, 5602,
2254 5605, 5606, 5607, 5610, 5611, 5614, 5615, 5618, 5619, 5622,
2255 5623, 5626, 5627, 5630, 5633, 5636, 5639, 5640, 5641, 5644,
2256 5645, 5648, 5649, 5653
2261#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2270static const char *
const yytname[] =
2272 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2273 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2274 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2275 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2276 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2277 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2278 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2279 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2280 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2281 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2282 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2283 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2284 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2285 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2286 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2287 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2288 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2289 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
2290 "\"escaped space\"",
"\"escaped horizontal tab\"",
2291 "\"escaped form feed\"",
"\"escaped carriage return\"",
2292 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2293 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2294 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2295 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2296 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2297 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2298 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2299 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2300 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2301 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2302 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
2303 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
2304 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
2305 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
2306 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
2307 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
2308 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"$@7",
"@8",
2309 "@9",
"$@10",
"def_name",
"defn_head",
"defs_head",
"$@11",
"expr_value",
2310 "expr_value_do",
"$@12",
"$@13",
"command_call",
"block_command",
2311 "cmd_brace_block",
"fcall",
"command",
"mlhs",
"mlhs_inner",
2312 "mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
"mlhs_node",
"lhs",
2313 "cname",
"cpath",
"fname",
"fitem",
"undef_list",
"$@14",
"op",
2314 "reswords",
"arg",
"$@15",
"relop",
"rel_expr",
"lex_ctxt",
"arg_value",
2315 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
2316 "call_args",
"command_args",
"$@16",
"block_arg",
"opt_block_arg",
2317 "args",
"mrhs_arg",
"mrhs",
"primary",
"$@17",
"$@18",
"$@19",
"$@20",
2318 "@21",
"@22",
"$@23",
"$@24",
"$@25",
"primary_value",
"k_begin",
"k_if",
2319 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2320 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2321 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"then",
"do",
2322 "if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
2323 "f_rest_marg",
"f_any_kwrest",
"block_args_tail",
"opt_block_args_tail",
2324 "excessed_comma",
"block_param",
"opt_block_param",
"block_param_def",
2325 "opt_bv_decl",
"bv_decls",
"bvar",
"lambda",
"@26",
"@27",
"@28",
"$@29",
2326 "f_larglist",
"lambda_body",
"do_block",
"block_call",
"method_call",
2327 "brace_block",
"brace_body",
"@30",
"@31",
"@32",
"do_body",
"@33",
2328 "@34",
"@35",
"case_args",
"case_body",
"cases",
"p_case_body",
"@36",
2329 "@37",
"$@38",
"p_cases",
"p_top_expr",
"p_top_expr_body",
"p_expr",
2330 "p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
"@39",
"@40",
2331 "p_args",
"p_args_head",
"p_args_tail",
"p_find",
"p_rest",
2332 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
2333 "p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
"p_primitive",
2334 "p_variable",
"p_var_ref",
"p_const",
"opt_rescue",
"exc_list",
2335 "exc_var",
"opt_ensure",
"literal",
"strings",
"string",
"string1",
2336 "xstring",
"regexp",
"words",
"word_list",
"word",
"symbols",
2337 "symbol_list",
"qwords",
"qsymbols",
"qword_list",
"qsym_list",
2338 "string_contents",
"xstring_contents",
"regexp_contents",
2339 "string_content",
"@41",
"$@42",
"@43",
"@44",
"@45",
"@46",
2340 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
2341 "simple_numeric",
"user_variable",
"keyword_variable",
"var_ref",
2342 "var_lhs",
"backref",
"superclass",
"$@47",
"f_opt_paren_args",
2343 "f_paren_args",
"f_arglist",
"@48",
"args_tail",
"opt_args_tail",
2344 "f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
2345 "f_arg_item",
"f_arg",
"f_label",
"f_kw",
"f_block_kw",
"f_block_kwarg",
2346 "f_kwarg",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"f_opt",
2347 "f_block_opt",
"f_block_optarg",
"f_optarg",
"restarg_mark",
2348 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
2349 "singleton",
"$@49",
"assoc_list",
"assocs",
"assoc",
"operation",
2350 "operation2",
"operation3",
"dot_or_colon",
"call_op",
"call_op2",
2351 "opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
"trailer",
"term",
2358 return yytname[yysymbol];
2362#define YYPACT_NINF (-1080)
2364#define yypact_value_is_default(Yyn) \
2365 ((Yyn) == YYPACT_NINF)
2367#define YYTABLE_NINF (-774)
2369#define yytable_value_is_error(Yyn) \
2370 ((Yyn) == YYTABLE_NINF)
2376 -1080, 155, 4053, -1080, 9649, -1080, -1080, -1080, 9107, -1080,
2377 -1080, -1080, -1080, -1080, -1080, -1080, 9775, 9775, -1080, -1080,
2378 -1080, 5567, 5126, -1080, -1080, -1080, -1080, 353, 8962, 127,
2379 41, 83, -1080, -1080, -1080, 4391, 5273, -1080, -1080, 4538,
2380 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, 11539, 11539,
2381 11539, 11539, 112, 7162, 9901, 10405, 10783, 9391, -1080, 8817,
2382 -1080, -1080, -1080, 164, 217, 257, 289, 1108, 11665, 11539,
2383 -1080, 512, -1080, 1512, -1080, 728, 227, 227, -1080, -1080,
2384 66, 425, 347, -1080, 341, 11917, -1080, 377, 2218, 632,
2385 499, 745, -1080, 11791, 11791, -1080, -1080, 8144, 12039, 12161,
2386 12283, 8671, 9775, -1080, 444, 81, -1080, -1080, 491, -1080,
2387 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2388 -1080, 316, 445, -1080, 558, 451, -1080, -1080, -1080, -1080,
2389 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2390 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2391 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2392 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2393 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2394 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2395 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2396 -1080, -1080, -1080, -1080, -1080, 520, -1080, -1080, -1080, 539,
2397 11539, 642, 7313, 11539, 11539, 11539, -1080, 11539, -1080, 586,
2398 4957, 617, -1080, -1080, 597, 770, 30, 31, 647, 350,
2399 611, -1080, -1080, 8018, -1080, 9775, 10027, -1080, -1080, 8270,
2400 -1080, 11791, 613, -1080, 619, 7464, -1080, 7615, -1080, -1080,
2401 631, 633, 66, -1080, 788, -1080, 755, 5104, 5104, 453,
2402 9901, -1080, 7162, 654, 512, -1080, 1512, 127, 694, -1080,
2403 1512, 127, 690, 244, 708, -1080, 617, 706, 708, -1080,
2404 127, 778, 1108, 12405, 704, 704, 709, -1080, 827, 900,
2405 926, 932, -1080, -1080, -1080, -1080, -1080, 61, -1080, 400,
2406 629, 509, -1080, -1080, -1080, -1080, 781, -1080, -1080, -1080,
2407 -1080, -1080, -1080, -1080, 8396, 11791, 11791, 11791, 11791, 9901,
2408 11791, 11791, 1279, 737, 754, 6306, 1694, -1080, 765, 6306,
2409 -1080, -1080, -1080, 791, -1080, -1080, -1080, -1080, -1080, 834,
2410 -1080, 7162, 9520, 768, 834, -1080, 11539, 11539, 11539, 11539,
2411 11539, -1080, -1080, 11539, 11539, 11539, 11539, 11539, 11539, 11539,
2412 11539, -1080, 11539, -1080, -1080, 11539, 11539, 11539, 11539, 11539,
2413 11539, 11539, 11539, 11539, 11539, -1080, -1080, 12835, 9775, 12925,
2414 6306, 728, 96, 96, 7766, 11791, 7766, 512, -1080, 775,
2415 880, -1080, -1080, 956, 929, 90, 93, 106, 726, 861,
2416 11791, 473, -1080, 826, 990, -1080, -1080, -1080, -1080, 45,
2417 64, 382, 465, 493, 514, 537, 545, 573, -1080, -1080,
2418 -1080, -1080, 637, -1080, -1080, -1080, 14185, -1080, -1080, 834,
2419 834, -1080, -1080, 362, -1080, -1080, -1080, 751, 834, 11539,
2420 10153, -1080, -1080, 13015, 9775, 13105, 834, 834, 10531, -1080,
2421 127, 814, -1080, -1080, 11539, 127, -1080, 820, 127, 832,
2422 -1080, 137, -1080, -1080, -1080, -1080, -1080, 9107, -1080, 11539,
2423 845, 847, 13015, 13105, 834, 1512, 41, 127, -1080, -1080,
2424 8522, 852, 127, -1080, -1080, 10657, -1080, -1080, 10783, -1080,
2425 -1080, -1080, 619, 995, -1080, -1080, 865, -1080, 12405, 13195,
2426 9775, 13285, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2427 -1080, -1080, -1080, 743, 110, 946, 191, 11539, -1080, -1080,
2428 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2429 -1080, -1080, -1080, -1080, -1080, 1307, -1080, -1080, -1080, -1080,
2430 -1080, 868, -1080, 127, 127, -1080, -1080, 867, -1080, 881,
2431 11539, -1080, 888, 391, -1080, -1080, -1080, 890, 989, 896,
2432 999, -1080, 11539, 1037, 1046, 512, 909, 11539, 1037, 917,
2433 -1080, -1080, -1080, 1037, -1080, 1037, -1080, 10909, -1080, 127,
2434 12405, 923, -1080, 10909, -1080, 755, 3708, 3708, 3708, 3708,
2435 5251, 2121, 3708, 3708, 5104, 5104, 592, 592, -1080, 5689,
2436 1165, 1165, 1456, 447, 447, 755, 755, 755, 1451, 1451,
2437 5714, 4685, 6008, 4832, -1080, 633, -1080, 127, 924, 489,
2438 -1080, 623, -1080, -1080, 5420, 1037, -1080, 6457, 1062, 6910,
2439 1037, 38, 1037, 1053, 1066, 118, 13375, 9775, 13465, -1080,
2440 728, -1080, 995, -1080, -1080, -1080, 13555, 9775, 13645, 6306,
2441 11791, -1080, -1080, -1080, -1080, -1080, 3013, 11665, 11665, 9107,
2442 11539, 11539, -1080, 11539, 617, -1080, 611, 4239, 4979, 127,
2443 481, 648, 11539, 11539, -1080, -1080, -1080, -1080, 10279, -1080,
2444 10531, -1080, -1080, 11791, 4957, -1080, -1080, 633, 633, 11539,
2445 -1080, 285, -1080, -1080, 708, 12405, 865, 280, 763, 127,
2446 587, 672, 1622, -1080, 953, -1080, 296, -1080, 938, -1080,
2447 -1080, 299, 941, -1080, 755, 1307, 930, -1080, 951, 127,
2448 952, -1080, 37, -1080, -1080, -1080, -1080, 11539, 1279, -1080,
2449 -1080, 630, -1080, -1080, -1080, 1694, -1080, -1080, 1440, -1080,
2450 -1080, 4516, -1080, -1080, -1080, 11035, 583, -1080, -1080, 1694,
2451 4663, -1080, -1080, -1080, 940, -1080, -1080, -1080, 11539, -1080,
2452 957, 958, 1058, -1080, -1080, 865, 12405, -1080, -1080, 1065,
2453 980, 4369, -1080, -1080, -1080, 1089, 656, 2593, 2593, 987,
2454 834, 834, -1080, 791, 967, 646, 10153, 834, 834, -1080,
2455 -1080, 791, -1080, -1080, 862, -1080, 1104, -1080, -1080, -1080,
2456 -1080, -1080, -1080, 1066, 1037, -1080, 11161, 1037, 87, 284,
2457 127, 133, 156, 7766, 512, 11791, 6306, 1085, 763, -1080,
2458 127, 1037, 137, 9252, 81, 425, -1080, 4810, -1080, -1080,
2459 -1080, -1080, -1080, -1080, -1080, 834, 834, 661, 834, 834,
2460 127, 977, 137, -1080, -1080, -1080, 684, 1694, -1080, -1080,
2461 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2462 -1080, 127, -1080, 1307, -1080, 1392, -1080, -1080, -1080, 127,
2463 -1080, 979, 984, -1080, 1074, 868, 992, -1080, 996, -1080,
2464 992, 11539, 957, -1080, 1033, -1080, -1080, -1080, 7766, -1080,
2465 -1080, -1080, 11539, 1005, -1080, 1005, 998, 11287, 9901, 865,
2466 9901, 834, 11539, 13735, 9775, 13825, -1080, -1080, 2007, 2007,
2467 568, -1080, 3718, 470, 1096, -1080, 1041, -1080, 1014, -1080,
2468 -1080, 800, -1080, -1080, 231, -1080, -1080, -1080, -1080, -1080,
2469 -1080, -1080, -1080, -1080, 1041, 11539, 11665, 11665, -1080, -1080,
2470 834, 11665, 11665, -1080, -1080, 7766, 11791, 1037, -1080, -1080,
2471 1037, -1080, -1080, 1037, -1080, 11539, -1080, 67, -1080, 179,
2472 1037, 6306, 512, 1037, -1080, -1080, -1080, -1080, -1080, -1080,
2473 11539, 11539, 834, 11539, 11539, -1080, 10531, -1080, 127, 170,
2474 -1080, -1080, -1080, 1003, 1009, -1080, 1694, -1080, 1440, -1080,
2475 -1080, 1440, -1080, 1440, -1080, -1080, 4957, 12527, 96, -1080,
2476 -1080, 7036, 4957, 1808, 7615, -1080, -1080, 6306, 11539, 1010,
2477 -1080, -1080, 11665, 4957, 5861, 6155, 127, 679, 725, -1080,
2478 -1080, -1080, -1080, 2593, 1107, 165, 127, 12682, -1080, 127,
2479 1017, 1018, -1080, 387, 1029, -1080, -1080, 1124, -1080, 2593,
2480 2007, 2007, 568, 180, 526, 3895, 3895, -1080, 4957, -1080,
2481 -1080, -1080, -1080, 11665, -1080, -1080, -1080, -1080, -1080, 96,
2482 -1080, -1080, 3895, -1080, -1080, 11413, 6608, -1080, 1037, -1080,
2483 -1080, 11539, 1038, 1027, 6306, 7615, -1080, -1080, 1392, 1392,
2484 992, 1054, 992, 992, 1143, -1080, 1093, 103, 132, 173,
2485 6306, 1192, 868, -1080, 127, 1072, 1079, 1071, 12649, -1080,
2486 1076, -1080, 1077, 1080, -1080, -1080, -1080, 1081, 727, 62,
2487 -1080, -1080, 73, 1041, 1083, -1080, 2593, -1080, -1080, -1080,
2488 127, 1094, -1080, 2593, -1080, -1080, -1080, 639, -1080, -1080,
2489 -1080, -1080, -1080, -1080, -1080, -1080, -1080, 127, 127, 127,
2490 127, 127, 127, -1080, -1080, 6457, 96, 901, 243, -1080,
2491 -1080, -1080, 11539, -1080, 720, -1080, -1080, 1317, 1037, 1064,
2492 7892, 1009, -1080, 1440, -1080, -1080, -1080, 183, 13915, 9775,
2493 14005, 1046, -1080, -1080, 1116, -1080, 12649, 1694, -1080, -1080,
2494 1155, 1148, 630, -1080, 1694, -1080, 1440, -1080, -1080, 1103,
2495 2593, -1080, 1110, -1080, 415, -1080, 387, 1041, -1080, -1080,
2496 816, -1080, -1080, -1080, -1080, -1080, -1080, 862, -1080, 11791,
2497 11791, 12768, -1080, -1080, -1080, -1080, -1080, 767, -1080, -1080,
2498 -1080, -1080, 1092, 992, 77, 89, 127, 198, 210, -1080,
2499 -1080, 1148, -1080, 1112, 1118, -1080, 14095, -1080, 868, 1120,
2500 -1080, 1121, 1120, 2593, 1122, 12768, -1080, -1080, -1080, -1080,
2501 6759, -1080, -1080, -1080, 1126, 1317, -1080, -1080, -1080, 221,
2502 1694, -1080, 1440, -1080, 1102, 1105, -1080, 1440, -1080, 1440,
2503 -1080, -1080, 1122, 2593, -1080, -1080, 370, 2593, -1080, 1120,
2504 1127, 1120, 1120, -1080, -1080, -1080, 1122, -1080, 1440, -1080,
2505 -1080, -1080, 1120, -1080
2513 2, 0, 0, 1, 0, 371, 372, 373, 0, 364,
2514 365, 366, 369, 367, 368, 370, 359, 360, 361, 362,
2515 382, 293, 293, 647, 646, 648, 649, 761, 0, 761,
2516 0, 0, 651, 650, 652, 743, 745, 643, 642, 744,
2517 645, 637, 638, 639, 640, 588, 657, 658, 0, 0,
2518 0, 0, 0, 0, 320, 773, 773, 103, 439, 608,
2519 608, 610, 612, 0, 0, 0, 0, 0, 0, 0,
2520 3, 759, 6, 9, 35, 40, 668, 668, 52, 75,
2521 293, 74, 0, 91, 0, 95, 105, 0, 65, 243,
2522 262, 0, 318, 0, 0, 71, 71, 759, 0, 0,
2523 0, 0, 329, 340, 76, 338, 307, 308, 587, 589,
2524 309, 310, 311, 313, 312, 314, 586, 627, 628, 585,
2525 635, 653, 654, 315, 0, 316, 79, 5, 8, 184,
2526 195, 185, 208, 181, 201, 191, 190, 211, 212, 206,
2527 189, 188, 183, 209, 213, 214, 193, 182, 196, 200,
2528 202, 194, 187, 203, 210, 205, 204, 197, 207, 192,
2529 180, 199, 198, 179, 186, 177, 178, 174, 175, 176,
2530 134, 136, 135, 169, 170, 165, 147, 148, 149, 156,
2531 153, 155, 150, 151, 171, 172, 157, 158, 162, 166,
2532 152, 154, 144, 145, 146, 159, 160, 161, 163, 164,
2533 167, 168, 173, 139, 141, 28, 137, 138, 140, 0,
2534 0, 0, 0, 0, 0, 0, 608, 0, 288, 0,
2535 271, 298, 89, 292, 773, 0, 653, 654, 0, 316,
2536 773, 737, 90, 761, 87, 0, 773, 459, 86, 761,
2537 762, 0, 0, 23, 255, 0, 10, 0, 359, 360,
2538 332, 460, 0, 237, 0, 329, 238, 228, 229, 326,
2539 0, 21, 0, 0, 759, 17, 20, 761, 93, 16,
2540 322, 761, 0, 766, 766, 272, 0, 0, 766, 735,
2541 761, 0, 0, 0, 668, 668, 101, 363, 0, 111,
2542 112, 119, 440, 632, 631, 633, 630, 0, 629, 0,
2543 0, 0, 595, 604, 600, 606, 636, 56, 249, 250,
2544 769, 770, 4, 771, 760, 0, 0, 0, 0, 0,
2545 0, 0, 690, 0, 667, 0, 690, 663, 0, 0,
2546 374, 464, 453, 80, 468, 337, 375, 468, 449, 773,
2547 107, 0, 99, 96, 773, 61, 0, 0, 0, 0,
2548 0, 265, 266, 0, 0, 0, 0, 226, 227, 0,
2549 0, 57, 0, 263, 264, 0, 0, 0, 0, 0,
2550 0, 0, 0, 0, 0, 755, 756, 0, 773, 0,
2551 0, 70, 0, 0, 0, 0, 0, 759, 347, 760,
2552 0, 393, 392, 0, 0, 653, 654, 316, 129, 130,
2553 0, 0, 132, 661, 0, 653, 654, 316, 355, 204,
2554 197, 207, 192, 174, 175, 176, 134, 135, 733, 67,
2555 66, 732, 0, 88, 758, 757, 0, 339, 590, 773,
2556 773, 142, 740, 326, 299, 742, 295, 0, 773, 0,
2557 0, 289, 297, 0, 773, 0, 773, 773, 0, 290,
2558 761, 0, 331, 294, 691, 761, 284, 773, 761, 773,
2559 283, 761, 336, 55, 25, 27, 26, 0, 333, 0,
2560 0, 0, 0, 0, 773, 19, 0, 761, 324, 15,
2561 760, 92, 761, 321, 327, 768, 767, 273, 768, 275,
2562 328, 736, 0, 118, 636, 109, 104, 667, 0, 0,
2563 773, 0, 441, 614, 634, 617, 615, 609, 591, 592,
2564 611, 593, 613, 0, 0, 0, 0, 0, 772, 7,
2565 29, 30, 31, 32, 33, 53, 54, 697, 694, 693,
2566 692, 695, 703, 712, 691, 0, 724, 713, 728, 727,
2567 723, 773, 689, 761, 761, 696, 698, 699, 701, 675,
2568 705, 710, 773, 716, 406, 405, 721, 675, 726, 675,
2569 0, 673, 0, 0, 773, 0, 675, 0, 0, 0,
2570 465, 464, 81, 0, 469, 0, 269, 0, 270, 761,
2571 0, 97, 108, 0, 62, 235, 242, 244, 245, 246,
2572 253, 254, 247, 248, 224, 225, 251, 252, 58, 761,
2573 239, 240, 241, 230, 231, 232, 233, 234, 267, 268,
2574 746, 748, 747, 749, 458, 293, 456, 761, 773, 746,
2575 748, 747, 749, 457, 293, 0, 384, 0, 383, 0,
2576 0, 0, 0, 345, 0, 326, 0, 773, 0, 71,
2577 353, 129, 130, 131, 659, 351, 0, 773, 0, 0,
2578 0, 753, 754, 68, 746, 747, 293, 0, 0, 0,
2579 0, 0, 739, 0, 300, 296, 773, 746, 747, 761,
2580 746, 747, 0, 0, 738, 330, 763, 278, 285, 280,
2581 287, 335, 24, 0, 256, 11, 34, 0, 773, 0,
2582 22, 94, 18, 323, 766, 0, 102, 750, 117, 761,
2583 746, 747, 690, 618, 0, 594, 0, 597, 0, 602,
2584 599, 0, 0, 603, 236, 0, 404, 396, 398, 761,
2585 401, 394, 0, 672, 731, 664, 666, 0, 0, 682,
2586 704, 0, 671, 714, 715, 0, 685, 725, 0, 687,
2587 729, 258, 381, 357, 376, 773, 773, 577, 669, 0,
2588 260, 358, 462, 466, 0, 463, 470, 448, 0, 36,
2589 303, 0, 39, 302, 106, 100, 0, 51, 41, 49,
2590 0, 276, 298, 215, 37, 0, 316, 0, 0, 0,
2591 773, 773, 455, 84, 0, 461, 285, 773, 773, 282,
2592 454, 82, 281, 319, 773, 385, 773, 343, 387, 72,
2593 386, 344, 479, 0, 0, 378, 0, 0, 750, 325,
2594 761, 746, 747, 0, 0, 0, 0, 129, 130, 133,
2595 761, 0, 761, 0, 450, 77, 42, 276, 216, 48,
2596 223, 143, 741, 301, 291, 773, 773, 461, 773, 773,
2597 761, 773, 761, 222, 274, 110, 461, 690, 442, 445,
2598 619, 623, 624, 625, 616, 626, 596, 598, 605, 601,
2599 607, 761, 403, 0, 700, 0, 730, 717, 674, 761,
2600 702, 675, 675, 711, 716, 773, 675, 722, 675, 699,
2601 675, 0, 578, 579, 773, 580, 377, 379, 0, 12,
2602 14, 584, 0, 773, 78, 773, 306, 0, 0, 98,
2603 0, 773, 0, 0, 773, 0, 571, 575, 0, 0,
2604 0, 516, 761, 513, 0, 570, 63, 494, 496, 498,
2605 501, 551, 556, 557, 558, 561, 562, 563, 564, 565,
2606 567, 566, 568, 569, 59, 0, 0, 0, 85, 764,
2607 773, 0, 0, 83, 380, 0, 0, 0, 388, 390,
2608 0, 73, 480, 0, 349, 0, 472, 0, 348, 461,
2609 0, 0, 0, 0, 461, 356, 734, 69, 451, 452,
2610 0, 0, 773, 0, 0, 279, 286, 334, 761, 0,
2611 620, 395, 397, 399, 402, 665, 0, 678, 0, 680,
2612 670, 0, 686, 0, 683, 688, 259, 0, 0, 582,
2613 583, 0, 261, 761, 0, 430, 429, 0, 0, 304,
2614 38, 50, 0, 277, 746, 747, 761, 746, 747, 559,
2615 560, 130, 573, 0, 532, 518, 761, 519, 525, 761,
2616 528, 0, 512, 0, 0, 515, 572, 0, 64, 0,
2617 554, 555, 0, 500, 499, 0, 0, 60, 257, 47,
2618 220, 46, 221, 0, 44, 218, 45, 219, 391, 0,
2619 341, 342, 0, 346, 473, 0, 0, 350, 0, 660,
2620 352, 0, 0, 433, 0, 0, 443, 621, 0, 0,
2621 675, 675, 675, 675, 0, 581, 0, 653, 654, 316,
2622 0, 773, 773, 428, 761, 0, 699, 412, 707, 708,
2623 773, 719, 412, 412, 410, 467, 471, 305, 461, 761,
2624 531, 510, 523, 535, 520, 511, 0, 526, 544, 608,
2625 761, 537, 540, 543, 549, 550, 539, 547, 765, 495,
2626 497, 552, 553, 574, 509, 505, 608, 761, 761, 761,
2627 761, 761, 761, 43, 217, 0, 0, 485, 488, 492,
2628 491, 493, 0, 474, 773, 354, 444, 0, 0, 0,
2629 0, 400, 679, 0, 676, 681, 684, 326, 0, 773,
2630 0, 773, 13, 409, 0, 431, 0, 413, 421, 419,
2631 0, 706, 0, 408, 0, 424, 0, 426, 517, 521,
2632 0, 527, 529, 533, 0, 514, 538, 542, 548, 546,
2633 0, 502, 503, 504, 506, 507, 508, 773, 481, 0,
2634 0, 489, 475, 477, 478, 476, 437, 761, 435, 438,
2635 447, 446, 0, 675, 750, 325, 761, 746, 747, 576,
2636 432, 718, 411, 412, 412, 326, 0, 709, 773, 412,
2637 720, 412, 412, 0, 524, 0, 545, 541, 536, 389,
2638 0, 486, 487, 490, 528, 0, 434, 622, 677, 461,
2639 0, 416, 0, 418, 750, 325, 407, 0, 425, 0,
2640 422, 427, 522, 0, 530, 534, 773, 0, 436, 412,
2641 412, 412, 412, 483, 484, 482, 529, 417, 0, 414,
2648 -1080, -1080, -1080, 1025, -1080, 23, 748, -318, -1080, -40,
2649 -1080, 774, -1080, 69, -1080, 295, -537, -44, -1080, -1080,
2650 -1080, -1080, -1080, -1080, 455, -42, -24, -1080, 42, -88,
2651 -1080, -1080, -20, -1080, -298, 1078, 15, 1176, -140, 36,
2652 -62, -1080, -428, -27, 2306, -384, 1179, -55, -23, -1080,
2653 -1080, 13, -1080, 3243, -1080, 1187, -1080, 602, 2959, -1080,
2654 671, 44, 624, -350, 189, 25, -1080, -277, -191, 71,
2655 -1080, -514, 49, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2656 -1080, -1080, 877, -1080, -1080, -1080, -1080, -1080, -1080, -1080,
2657 -1080, -1080, -1080, -1080, -1080, -1080, -1080, -1080, 540, -1080,
2658 -440, 1527, -376, -1080, 78, -784, -1080, -804, -786, 574,
2659 428, -714, 291, 194, -1080, -1080, 397, -1080, -795, -1080,
2660 40, 242, -1080, -1080, -1080, -1080, -1080, -1080, 480, -1080,
2661 -1080, -104, 735, -1080, -1080, -1080, 971, -1080, -1080, -1080,
2662 -1080, -767, -1080, 33, -1080, -1080, -1080, -1080, -1080, -1080,
2663 -343, -1080, -1080, -1080, -1080, 271, -1080, -1080, -945, -1080,
2664 250, -217, -1051, -1079, -743, -118, -1080, 119, -1080, -1080,
2665 -1080, 120, -1080, -721, 281, -1080, -1080, 149, -1080, -1080,
2666 233, 443, 759, -1080, 1214, 1373, 1700, 1769, -1080, 811,
2667 2085, -1080, 2192, 2445, -1080, -1080, -57, -1080, -1080, -147,
2668 -1080, -1080, -1080, -1080, -1080, -1080, -1080, 1, -1080, -1080,
2669 -1080, -1080, 0, 2191, -2, 1226, 2488, 1900, -1080, -1080,
2670 1253, 666, 9, -1080, -304, -464, -289, -268, -1053, -394,
2671 -245, -646, -203, -461, 601, 157, -1080, -1080, -691, -1080,
2672 -705, -700, -991, 168, -549, -1080, -584, -1080, -476, -527,
2673 -1080, -1080, -1080, 161, -410, -1080, -335, -1080, -1080, -85,
2674 -1080, -52, -13, 968, -532, 222, -254, -37, -3, 8
2680 0, 1, 2, 70, 71, 72, 246, 563, 1001, 564,
2681 264, 265, 476, 266, 467, 74, 768, 75, 598, 778,
2682 1047, 584, 777, 1038, 419, 76, 77, 823, 382, 384,
2683 385, 951, 78, 79, 572, 252, 81, 82, 267, 83,
2684 84, 85, 496, 86, 219, 402, 403, 203, 204, 205,
2685 659, 613, 207, 88, 469, 373, 89, 577, 221, 272,
2686 773, 614, 790, 455, 456, 234, 235, 223, 441, 618,
2687 762, 763, 90, 380, 271, 482, 683, 803, 634, 816,
2688 814, 649, 254, 92, 93, 94, 95, 96, 97, 98,
2689 99, 100, 101, 334, 337, 745, 888, 806, 945, 946,
2690 743, 255, 627, 799, 947, 948, 394, 717, 718, 719,
2691 720, 541, 1232, 1178, 1179, 1094, 1004, 1005, 1072, 1217,
2692 1218, 103, 292, 502, 702, 979, 848, 1076, 338, 104,
2693 105, 335, 569, 570, 753, 893, 573, 574, 756, 895,
2694 957, 807, 1215, 804, 952, 1062, 1250, 1285, 1146, 1147,
2695 1113, 917, 918, 1045, 1046, 919, 1033, 1023, 1026, 1027,
2696 1028, 1029, 1030, 1192, 1031, 1120, 1121, 1122, 1123, 1124,
2697 1125, 1126, 920, 921, 922, 923, 924, 746, 884, 998,
2698 890, 106, 107, 108, 109, 110, 111, 112, 513, 706,
2699 113, 515, 114, 115, 514, 516, 297, 300, 301, 507,
2700 704, 703, 850, 980, 1077, 1160, 854, 116, 117, 298,
2701 118, 119, 120, 226, 227, 123, 228, 229, 645, 815,
2702 323, 324, 325, 326, 868, 729, 543, 458, 545, 546,
2703 879, 548, 566, 550, 551, 1099, 1100, 552, 553, 554,
2704 555, 556, 1101, 1102, 557, 558, 559, 560, 561, 723,
2705 422, 650, 277, 459, 231, 126, 687, 616, 653, 648,
2706 426, 312, 451, 452, 785, 1035, 487, 628, 389, 269
2714 122, 427, 122, 299, 296, 243, 379, 629, 386, 208,
2715 127, 568, 950, 263, 241, 284, 244, 643, 542, 425,
2716 489, 206, 542, 343, 491, 732, 875, 128, 617, 208,
2717 286, 218, 218, 285, 313, 877, 953, 565, 674, 449,
2718 874, 206, 615, 284, 624, 388, 420, 238, 307, 381,
2719 381, 122, 122, 381, 544, 290, 284, 284, 284, 982,
2720 313, 285, 625, 275, 279, 798, 237, 306, 314, 774,
2721 696, 73, 206, 73, 285, 285, 285, 547, 674, 984,
2722 626, 547, 870, 290, 327, 327, 329, 224, 224, 268,
2723 -124, 656, 330, 736, 669, 739, 396, 406, 406, 406,
2724 1137, 1140, -126, 870, 1219, 333, 287, 330, 615, 626,
2725 624, 1244, -124, -647, 206, -120, -120, 218, -121, 549,
2726 826, 829, 477, 270, 332, 1189, 273, 503, 751, -655,
2727 -656, -128, -646, 755, 287, 757, 383, 837, 688, 387,
2728 445, 721, -647, -127, 872, -121, 538, 287, 287, 287,
2729 699, 878, 765, 510, 512, 3, -120, -121, -123, 437,
2730 1254, -646, 1037, 665, 1272, 872, 688, 846, 259, 473,
2731 539, 665, 263, 224, 320, 321, 708, 230, 230, 871,
2732 504, -125, 505, 506, 245, 793, -128, 1019, 1020, 310,
2733 797, 311, 801, 1240, 1274, 461, -127, 463, 1286, 1074,
2734 871, 579, 1219, 501, -122, 222, 232, 471, 1095, 331,
2735 122, -123, 479, 1065, 236, 240, 274, 278, 310, 1190,
2736 311, 495, 263, -125, 331, -746, 247, 313, -124, 709,
2737 -124, 883, 442, -115, -122, -746, -111, -747, 442, -112,
2738 -126, 284, -126, 122, 460, 122, 866, 310, 218, 311,
2739 218, 218, -119, 127, -120, 866, -120, 712, 122, 285,
2740 122, 480, 819, 230, -118, 1037, 1253, 492, 449, 1240,
2741 674, 381, 381, 381, 381, 982, 525, 526, 959, -114,
2742 240, 290, 494, -121, 1114, -121, 877, 810, 964, 1092,
2743 240, 423, 1161, 1075, 329, 237, 332, 820, 268, 1174,
2744 284, 263, -116, 688, 224, -115, 224, 457, 638, -126,
2745 713, -535, 122, 688, 73, 581, 302, 122, 285, 1131,
2746 1132, 721, 862, 122, -128, -113, -128, 122, 1042, 475,
2747 -761, 821, 287, 240, -127, 633, -127, 519, 899, 122,
2748 290, 381, 1127, 1037, 630, 870, 632, 578, 990, -123,
2749 313, -123, 578, -773, 1127, 1127, 640, 520, 521, 522,
2750 523, -125, 503, -125, 954, 503, 707, 958, 707, 303,
2751 1213, 1127, -122, 1193, -122, 322, 1043, 268, 122, 1044,
2752 1032, 965, 122, 73, 122, 887, 460, 1214, 524, 1211,
2753 485, 287, 622, 218, 230, 802, 230, 486, 542, 1049,
2754 1051, 665, 1081, 665, 1054, 1056, -115, 987, 989, 304,
2755 840, -92, 992, 849, 994, -655, 995, 505, 506, 1103,
2756 505, 506, 450, 623, 453, 733, -115, 631, -746, -115,
2757 -117, -106, -747, -115, 916, 934, 495, 578, 578, 622,
2758 844, 305, -120, 734, 682, 1118, 578, 1193, 856, 447,
2759 -648, 859, 460, 336, 578, 578, 284, 547, 622, 218,
2760 869, 474, -111, 1092, 533, 442, 503, 442, 208, 721,
2761 1092, 721, 1092, 339, 285, 834, -128, 1238, 122, -648,
2762 206, 503, 578, 547, 1108, 938, 622, 340, -127, 623,
2763 547, 874, 1283, 943, 1111, 537, 290, 1115, 963, 1119,
2764 1193, 239, 1275, 344, 547, 1127, 240, 1060, 460, 665,
2765 1061, 1134, 375, 1063, 622, 218, 1143, 623, 495, 508,
2766 1067, 505, 506, 1070, 346, 641, 1022, 1104, 748, 642,
2767 1275, 870, 876, -649, 1193, 880, 505, 506, 284, 1246,
2768 376, 424, 1098, 542, -656, 623, 1092, 287, 1092, 724,
2769 430, 813, 474, 1092, 1016, 1092, 285, 759, 978, 857,
2770 724, -651, -649, 769, 857, 1173, 674, -363, 615, 1025,
2771 624, -121, 747, 1183, 1092, 503, 511, -128, 290, -127,
2772 838, 1066, -650, 370, 371, 372, 779, 794, 787, 796,
2773 -651, -112, 886, 1234, 800, -363, -363, -119, 887, -118,
2774 1241, 666, 547, 60, 784, -652, 822, -123, 1204, 1205,
2775 1206, -650, -114, -641, -761, -123, 1162, 1164, 1165, 1166,
2776 641, 870, 1090, 240, 1021, 122, 442, 122, 1155, 287,
2777 505, 506, 792, 845, -652, -114, 831, 769, 769, 842,
2778 783, -644, -641, 1068, -363, 460, 694, 122, 761, 791,
2779 834, 622, 218, 284, 761, 460, 784, 429, 1133, 782,
2780 208, 622, 218, 310, 792, 311, 431, 464, 789, 346,
2781 -644, 285, 206, 1198, 442, -761, 1280, 465, 466, 240,
2782 1109, 825, 623, 1145, 721, 721, 784, 239, 532, 1106,
2783 905, 1199, 623, 290, 1259, 503, 792, -116, 433, 665,
2784 789, 1104, 1025, 1025, 495, 651, 866, 533, 1104, -113,
2785 1104, 1266, 438, -114, 351, 352, 1098, 439, 1220, 1148,
2786 968, 1098, 788, 1098, 284, 1098, 368, 369, 370, 371,
2787 372, 782, 789, -114, 652, 887, -114, 805, 537, 538,
2788 -114, 547, 285, 440, 287, 940, 446, 839, 509, -125,
2789 505, 506, -743, 885, 891, 430, 1158, 448, 1096, 1258,
2790 972, 363, 364, 539, 290, 320, 321, 468, 420, -116,
2791 1208, 381, -122, 960, -125, 933, 933, 961, 787, 233,
2792 1197, 236, -128, 1080, 1104, 1082, 1104, -122, 578, 578,
2793 1083, 1104, -113, 1104, -641, 578, 578, 784, -116, 1098,
2794 1097, 1098, 949, 478, 949, -123, 1098, 784, 1098, 503,
2795 -113, 122, 1104, 375, 122, 287, 761, 503, -116, 1226,
2796 -91, -116, -641, -641, 788, -116, 940, 1098, 1138, 1141,
2797 -113, -325, 346, -113, 493, 688, 206, -113, 375, 841,
2798 484, 376, 377, 578, 578, 1150, 578, 578, 1000, 442,
2799 490, -125, 322, -122, 488, 498, 375, 962, 517, -325,
2800 -325, 486, 705, 562, 505, 506, 376, 443, 1025, -743,
2801 508, -641, 505, 506, -743, 660, 944, 887, 767, 91,
2802 -662, 91, 503, 724, 376, 472, 122, -744, 1040, 1041,
2803 378, 567, 999, 225, 225, 375, 122, 571, 122, 784,
2804 1034, 1006, 381, 1006, 576, 1058, 933, 933, -325, 578,
2805 933, -747, 460, 1255, 582, 444, 769, 769, 622, 218,
2806 240, 769, 769, 376, 499, 1069, 518, 1139, 1142, -644,
2807 91, 91, 1096, 444, 288, 508, 635, 505, 506, 1096,
2808 1246, 1209, 1210, 122, 1151, 225, 583, 841, 578, 623,
2809 497, 497, 767, 767, 639, 284, 644, -644, -644, 122,
2810 1223, 1091, 288, 676, 1105, 1073, 678, 1010, -653, 1011,
2811 225, 225, 500, 285, 225, 393, 404, 404, 680, 225,
2812 578, 1239, 527, 1242, 528, 529, 530, 531, 1059, 685,
2813 1073, 686, 769, 727, -654, 1088, -653, -653, -106, 122,
2814 -316, 1170, 122, 784, -744, 122, -644, 851, 852, -744,
2815 853, 695, 503, 784, 722, 1096, 784, 46, 47, 915,
2816 915, 933, -654, -654, 375, 933, 1154, 728, -316, -316,
2817 784, 657, 658, 769, 731, 1159, 735, 933, 933, 933,
2818 661, 737, 738, 933, 933, -653, 287, 742, 672, 673,
2819 1171, 740, 376, 636, 744, 749, 284, 1279, 375, 1281,
2820 933, 752, 1194, -326, 122, 710, 1282, 505, 506, 766,
2821 786, -654, 122, 122, 285, 795, 689, -316, 802, 1200,
2822 80, 1073, 80, 805, 894, 1292, 376, 646, 122, 91,
2823 858, -326, -326, 860, 80, 80, 406, 863, 865, 891,
2824 724, 637, 898, -298, 897, 1207, 901, 1034, 724, 900,
2825 225, -750, 225, 225, 933, 935, 225, 939, 225, 887,
2826 1222, 933, 91, 976, 91, 986, 734, 784, 784, 784,
2827 988, 80, 80, 997, 284, 647, 1003, 91, 991, 91,
2828 -326, 1037, 993, 122, -299, 1039, 80, 287, 1036, 1078,
2829 915, 915, 285, -750, 915, 1079, -300, 375, 122, 1110,
2830 288, 375, 949, 1116, 1117, 381, 381, 41, 42, 43,
2831 44, 80, 80, 1128, 406, 80, 906, 460, 1157, 747,
2832 80, -750, -750, 622, 218, 376, 903, 1156, 933, 376,
2833 1168, 91, 225, 225, 225, 225, 91, 225, 225, 1167,
2834 1163, 886, 91, 1175, 1256, 1176, 91, 462, 1221, 933,
2835 1276, 1235, 1257, 784, 623, 949, 375, 1177, 91, 288,
2836 925, 925, 1182, 1184, 690, 287, 1186, -301, -750, 1191,
2837 -750, 767, 767, -746, 904, 481, 767, 767, 1169, 483,
2838 1196, 933, 346, 933, 376, 1236, 724, 1230, 122, 1243,
2839 -746, 1251, 1252, -747, 692, 225, 1245, 91, 1260, 359,
2840 360, 91, 225, 91, 1262, 915, 1267, 1269, 1273, 915,
2841 470, 933, 1277, 1288, 391, 933, 374, 225, 967, 408,
2842 824, 915, 915, 915, 949, 1249, 889, 915, 915, 861,
2843 80, 983, 1007, 647, 1093, 1278, 1185, 1187, 367, 368,
2844 369, 370, 371, 372, 915, 969, 754, 767, 575, 1284,
2845 1130, 80, 1149, 80, 80, 1247, 1248, 80, 1129, 80,
2846 1229, 225, 428, 80, 1172, 80, 711, 421, 828, 830,
2847 328, 527, 873, 528, 529, 530, 531, 532, 80, 1237,
2848 80, 0, 1195, 828, 830, 1233, 0, 0, 767, 0,
2849 0, 925, 925, 0, 0, 925, 533, 91, 915, 527,
2850 843, 528, 529, 530, 531, 915, 0, 0, 0, 1216,
2851 534, 528, 529, 530, 531, 288, 0, 225, 0, 0,
2852 535, 0, 936, 937, 0, 0, 536, 537, 538, 941,
2853 942, 0, 80, 80, 80, 80, 80, 80, 80, 80,
2854 0, 0, 0, 80, 0, 0, 0, 80, 715, 0,
2855 0, 0, 539, 0, 716, 540, 0, 0, 675, 80,
2856 0, 0, 0, 677, 0, 0, 679, 1261, 1263, 681,
2857 0, 0, 915, 1268, 0, 1270, 1271, 970, 971, 0,
2858 973, 974, 0, 0, 527, 691, 528, 529, 530, 531,
2859 693, 0, 0, 915, 225, 0, 80, 288, 80, 0,
2860 775, 0, 80, 80, 80, 0, 925, 0, 0, 0,
2861 925, 0, 0, 1287, 1289, 1290, 1291, 0, 80, 0,
2862 0, 0, 925, 925, 925, 915, 1293, 915, 925, 925,
2863 0, 0, 527, 715, 528, 529, 530, 531, 532, 0,
2864 0, 0, 0, 1012, 91, 925, 91, 0, 0, 0,
2865 0, 725, 726, 0, 225, 915, 0, 533, 0, 915,
2866 0, 0, 80, 0, 225, 0, 91, 225, 346, 102,
2867 0, 102, 0, 346, 775, 775, 926, 926, 0, 0,
2868 0, 535, 1053, 102, 102, 359, 360, 764, 537, 538,
2869 359, 360, 315, 316, 317, 318, 319, 0, 80, 925,
2870 225, 0, 0, 0, 0, 0, 925, 0, 0, 0,
2871 0, 0, 288, 539, 1071, 0, 0, 0, 80, 0,
2872 102, 102, 365, 366, 367, 368, 369, 370, 371, 372,
2873 368, 369, 370, 371, 372, 102, 0, 0, 0, 0,
2874 0, 0, 0, 0, 0, 0, 0, 1050, 1052, 0,
2875 0, 0, 1055, 1057, 0, 0, 0, 0, 0, 0,
2876 102, 102, 0, 0, 102, 0, 0, 0, 0, 102,
2877 0, 0, 0, 925, 0, 0, 0, 0, 0, 0,
2878 0, 1050, 1052, 288, 1055, 1057, 0, 0, 0, 0,
2879 0, 0, 0, 0, 925, 80, 0, 0, 0, 0,
2880 0, 80, 0, 0, 0, 0, 0, 926, 926, 0,
2881 0, 926, 0, 0, 527, 0, 528, 529, 530, 531,
2882 532, 0, 0, 0, 0, 0, 925, 864, 925, 0,
2883 91, 0, 225, 91, 0, 0, 0, 0, 0, 533,
2884 0, 0, 0, 0, 0, 80, 0, 80, 0, 0,
2885 0, 0, 0, 0, 0, 80, 925, 0, 0, 0,
2886 925, 0, 0, 535, 1144, 80, 0, 80, 80, 536,
2887 537, 538, 0, 0, 0, 80, 80, 0, 0, 102,
2888 0, 0, 1144, 0, 0, 0, 527, 0, 528, 529,
2889 530, 531, 532, 0, 0, 539, 0, 0, 540, 0,
2890 102, 80, 102, 102, 0, 91, 102, 0, 102, 0,
2891 847, 533, 102, 0, 102, 91, 0, 91, 0, 0,
2892 0, 225, 926, 0, 0, 0, 926, 102, 0, 102,
2893 966, 0, 0, 0, 0, 535, 0, 0, 926, 926,
2894 926, 536, 537, 538, 926, 926, 0, 0, 975, 0,
2895 977, 0, 0, 775, 775, 0, 0, 0, 775, 775,
2896 0, 926, 91, 225, 0, 0, 0, 539, 0, 981,
2897 540, 0, 0, 0, 0, 0, 0, 985, 91, 0,
2898 0, 102, 102, 102, 102, 102, 102, 102, 102, 0,
2899 0, 0, 102, 0, 0, 0, 102, 0, 0, 0,
2900 527, 0, 528, 529, 530, 531, 532, 0, 102, 0,
2901 0, 0, 0, 0, 1086, 926, 0, 0, 91, 0,
2902 0, 91, 926, 0, 91, 533, 0, 0, 0, 775,
2903 0, 80, 0, 80, 80, 0, 0, 0, 0, 0,
2904 0, 0, 125, 0, 125, 102, 0, 102, 0, 535,
2905 0, 102, 102, 102, 0, 536, 537, 538, 0, 0,
2906 0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
2907 775, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2908 0, 539, 0, 91, 540, 0, 0, 0, 0, 926,
2909 0, 91, 91, 125, 125, 0, 0, 291, 0, 0,
2910 0, 240, 0, 0, 0, 0, 80, 91, 0, 0,
2911 926, 102, 0, 0, 0, 1181, 80, 0, 80, 0,
2912 0, 0, 80, 0, 0, 291, 0, 0, 0, 0,
2913 0, 0, 0, 0, 0, 0, 0, 0, 397, 407,
2914 407, 0, 926, 0, 926, 0, 0, 102, 0, 0,
2915 0, 0, 1135, 0, 80, 80, 0, 0, 0, 80,
2916 80, 0, 91, 80, 80, 0, 0, 102, 0, 0,
2917 0, 0, 926, 0, 0, 0, 926, 91, 0, 80,
2918 23, 24, 25, 26, 0, 0, 225, 0, 0, 0,
2919 0, 0, 0, 1231, 0, 0, 32, 33, 34, 0,
2920 0, 0, 0, 0, 0, 0, 41, 42, 43, 44,
2921 45, 0, 0, 0, 0, 0, 0, 1188, 0, 80,
2922 0, 0, 80, 0, 0, 80, 225, 225, 0, 0,
2923 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2924 0, 0, 0, 0, 102, 1201, 1202, 1203, 0, 0,
2925 102, 0, 125, 0, 0, 0, 0, 58, 59, 60,
2926 61, 62, 63, 64, 65, 66, 0, 91, 0, 0,
2927 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
2928 0, 0, 0, 0, 80, 125, 282, 125, 0, 0,
2929 927, 927, 80, 80, 102, 0, 102, 0, 0, 0,
2930 125, 0, 125, 0, 102, 0, 0, 0, 80, 0,
2931 0, 0, 0, 0, 102, 0, 102, 102, 0, 0,
2932 0, 0, 0, 291, 102, 102, 0, 0, 0, 0,
2933 0, 0, 0, 121, 0, 121, 0, 0, 346, 347,
2934 348, 349, 350, 351, 352, 353, 0, 355, 356, 0,
2935 102, 0, 0, 0, 125, 359, 360, 0, 0, 125,
2936 0, 0, 0, 80, 0, 125, 0, 0, 0, 125,
2937 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
2938 0, 125, 291, 345, 121, 121, 0, 80, 289, 0,
2939 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
2940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2941 0, 0, 0, 0, 0, 0, 289, 0, 0, 0,
2942 125, 927, 927, 0, 125, 927, 125, 80, 80, 395,
2943 405, 405, 405, 0, 0, 346, 347, 348, 349, 350,
2944 351, 352, 353, 354, 355, 356, 357, 358, 87, 0,
2945 87, 0, 359, 360, 0, 0, 0, 0, 361, 0,
2946 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
2947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2948 102, 0, 102, 102, 0, 362, 0, 363, 364, 365,
2949 366, 367, 368, 369, 370, 371, 372, 0, 0, 87,
2950 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2952 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 0, 0, 927, 0, 291, 0,
2954 927, 0, 0, 121, 392, 0, 0, 0, 0, 0,
2955 0, 0, 927, 927, 927, 102, 0, 0, 927, 927,
2956 0, 0, 0, 0, 0, 102, 0, 102, 0, 0,
2957 0, 102, 0, 0, 0, 927, 121, 0, 121, 0,
2958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2959 0, 121, 0, 121, 0, 0, 0, 0, 0, 0,
2960 0, 0, 0, 102, 102, 0, 0, 0, 102, 102,
2961 0, 0, 102, 102, 289, 0, 0, 928, 928, 0,
2962 291, 0, 0, 776, 0, 0, 0, 0, 102, 927,
2963 124, 0, 124, 0, 0, 0, 927, 0, 0, 0,
2964 0, 0, 0, 0, 0, 121, 0, 0, 0, 0,
2965 121, 0, 0, 0, 0, 0, 121, 0, 87, 0,
2966 121, 0, 0, 0, 0, 0, 0, 125, 102, 125,
2967 0, 102, 121, 289, 102, 0, 0, 0, 0, 102,
2968 0, 124, 124, 0, 0, 0, 929, 929, 0, 125,
2969 0, 87, 0, 87, 0, 0, 0, 776, 776, 0,
2970 0, 0, 0, 927, 0, 0, 87, 0, 87, 0,
2971 0, 121, 0, 0, 0, 121, 0, 121, 0, 0,
2972 102, 0, 0, 0, 927, 0, 0, 0, 0, 0,
2973 0, 0, 0, 102, 0, 291, 0, 0, 0, 0,
2974 0, 102, 102, 0, 855, 0, 0, 0, 928, 928,
2975 0, 0, 928, 0, 0, 0, 927, 102, 927, 0,
2976 87, 0, 0, 0, 0, 87, 23, 24, 25, 26,
2977 0, 87, 0, 0, 0, 87, 0, 0, 0, 0,
2978 0, 0, 32, 33, 34, 906, 927, 87, 0, 907,
2979 927, 0, 41, 42, 43, 44, 45, 0, 0, 0,
2980 0, 0, 0, 0, 0, 0, 291, 0, 0, 0,
2981 0, 121, 102, 0, 0, 0, 0, 929, 929, 0,
2982 0, 929, 0, 908, 909, 0, 87, 102, 0, 289,
2983 87, 910, 87, 0, 911, 0, 102, 912, 913, 0,
2984 124, 0, 0, 58, 59, 60, 61, 62, 63, 64,
2985 65, 66, 0, 125, 0, 0, 125, 0, 0, 0,
2986 0, 0, 0, 928, 0, 914, 0, 928, 0, 0,
2987 0, 0, 282, 124, 0, 124, 102, 102, 0, 928,
2988 928, 928, 0, 0, 0, 928, 928, 0, 124, 0,
2989 124, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2990 0, 0, 928, 0, 0, 0, 0, 0, 0, 0,
2991 0, 289, 0, 0, 0, 0, 0, 102, 0, 0,
2992 0, 0, 0, 0, 0, 0, 87, 0, 125, 0,
2993 0, 0, 929, 0, 0, 0, 929, 0, 125, 0,
2994 125, 0, 124, 0, 0, 0, 0, 124, 929, 929,
2995 929, 0, 0, 124, 929, 929, 928, 124, 121, 0,
2996 121, 0, 0, 928, 0, 0, 0, 0, 0, 124,
2997 0, 929, 0, 0, 0, 0, 776, 776, 0, 0,
2998 121, 776, 776, 0, 0, 125, 0, 0, 0, 0,
2999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3000 0, 125, 930, 930, 0, 0, 0, 0, 124, 0,
3001 0, 0, 124, 0, 124, 0, 0, 0, 0, 0,
3002 0, 0, 0, 0, 0, 929, 289, 0, 0, 770,
3003 928, 0, 929, 0, 0, 0, 0, 1089, 0, 0,
3004 0, 125, 0, 0, 125, 0, 0, 125, 0, 0,
3005 0, 928, 776, 0, 0, 0, 0, 0, 0, 0,
3006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3007 0, 0, 0, 87, 0, 87, 0, 0, 0, 0,
3008 0, 0, 0, 928, 0, 928, 0, 0, 0, 0,
3009 0, 0, 0, 776, 0, 87, 0, 289, 0, 929,
3010 0, 0, 0, 770, 770, 0, 125, 0, 124, 931,
3011 931, 0, 0, 928, 125, 125, 0, 928, 0, 0,
3012 929, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3013 125, 0, 0, 930, 930, 0, 0, 930, 407, 0,
3014 0, 0, 0, 0, 121, 0, 0, 121, 0, 0,
3015 0, 0, 929, -773, 929, 276, 0, 0, 0, 0,
3016 0, -773, -773, -773, 0, 0, -773, -773, -773, 0,
3017 -773, 0, 0, 0, 0, 0, 0, 0, -773, -773,
3018 -773, 0, 929, 0, 0, 125, 929, 0, 0, 0,
3019 -773, -773, 0, -773, -773, -773, -773, -773, 0, 0,
3020 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3021 0, 124, 0, 0, 0, 0, 407, 0, 0, 121,
3022 0, -773, 0, 0, 0, 0, 0, 0, 0, 121,
3023 0, 121, 0, 0, 0, 0, 0, 0, 0, 0,
3024 931, 931, 0, 0, 931, 0, 0, 0, 930, -773,
3025 -773, 0, 930, 0, 0, 124, 0, 124, 0, 87,
3026 0, 0, 87, 0, 930, 930, 930, 0, 0, 0,
3027 930, 930, 0, -773, 0, 0, 121, 124, 0, 0,
3028 0, 0, 0, 0, 0, 124, 124, 930, 0, 0,
3029 125, 0, 121, 0, 0, 0, -773, -773, 0, 0,
3030 0, 236, -773, 0, -773, 0, -773, 0, 0, 432,
3031 0, 0, 434, 435, 436, 0, 0, 0, 0, 0,
3032 0, 0, 0, 0, 0, 0, 0, 0, 1087, 0,
3033 0, 0, 121, 0, 87, 121, 0, 0, 121, 0,
3034 0, 930, 0, 0, 87, 0, 87, 0, 930, 0,
3035 0, 0, 0, 0, 0, 931, 0, 0, 0, 931,
3036 0, 0, 932, 932, 0, 0, 0, 0, 0, 0,
3037 0, 931, 931, 931, 0, 0, 0, 931, 931, 0,
3038 0, 0, 770, 770, 0, 0, 0, 770, 770, 0,
3039 0, 87, 0, 0, 931, 0, 0, 121, 0, 220,
3040 220, 0, 0, 0, 0, 121, 121, 87, 0, 0,
3041 0, 0, 0, 0, 0, 930, 0, 0, 0, 0,
3042 0, 121, 0, 0, 0, 0, 0, 0, 0, 405,
3043 0, 253, 256, 257, 258, 0, 930, 0, 220, 220,
3044 0, 124, 0, 1085, 124, 0, 0, 87, 931, 0,
3045 87, 308, 309, 87, 0, 931, 0, 0, 770, 0,
3046 0, 0, 0, 0, 0, 0, 0, 0, 930, 0,
3047 930, 0, 0, 0, 0, 0, 121, 0, 0, 0,
3048 0, 0, 0, 0, 0, 220, 0, 0, 0, 0,
3049 0, 121, 0, 932, 932, 0, 0, 932, 930, 770,
3050 0, 0, 930, 0, 0, 0, 0, 405, 0, 0,
3051 0, 0, 87, 0, 0, 0, 124, 0, 0, 0,
3052 87, 87, 931, 0, 0, 0, 124, 0, 124, 0,
3053 0, 0, 0, 0, 0, 0, 87, 0, 662, 664,
3054 0, 0, 0, 931, 0, 0, 0, 276, 0, 0,
3055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3056 0, 0, 0, 0, 124, 124, 0, 0, 0, 124,
3057 124, 0, 0, 124, 0, 931, 0, 931, 0, 0,
3058 0, 121, 0, 0, 664, 0, 0, 276, 0, 124,
3059 0, 87, 0, 220, 0, 0, 220, 220, 220, 0,
3060 308, 0, 0, 0, 0, 931, 87, 0, 932, 931,
3061 0, 0, 932, 0, 0, 0, 220, 0, 220, 220,
3062 0, 0, 0, 0, 932, 932, 932, 0, 0, 124,
3063 932, 932, 124, 0, 0, 124, 0, 0, 0, 0,
3064 124, 0, 0, 0, 0, 0, 0, 932, 0, 730,
3065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3067 0, 0, 0, 0, 0, 0, 760, 0, 0, 0,
3068 0, 124, 772, 0, 0, 0, 0, 0, 0, 0,
3069 0, 0, 0, 0, 124, 0, 87, 0, 0, 0,
3070 0, 932, 124, 124, 0, 0, 0, 0, 932, 0,
3071 0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
3072 0, 0, 0, 0, 0, 0, 0, 0, 0, 585,
3073 586, 587, 588, 589, 0, 0, 590, 591, 592, 593,
3074 594, 595, 596, 597, 0, 599, 0, 0, 600, 601,
3075 602, 603, 604, 605, 606, 607, 608, 609, 0, 832,
3076 0, 220, 833, 0, 0, 0, 0, 0, 0, 0,
3077 0, 0, 0, 124, 0, 932, 0, 664, 0, 276,
3078 0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
3079 0, 0, 0, 0, 0, 0, 932, 0, 0, 0,
3080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3082 0, 0, 220, 220, 0, 0, 867, 220, 932, 0,
3083 932, 220, 0, 0, 0, 0, 0, 258, 0, 0,
3084 0, 0, 0, 0, 882, 0, 0, 0, 0, 0,
3085 0, 0, 684, 0, 0, 0, 0, 896, 932, 0,
3086 0, 0, 932, 0, 0, 0, 0, 0, 220, 0,
3087 0, 220, 0, 0, 0, 0, 0, 0, 124, 0,
3088 0, 0, 0, 220, 0, 664, 0, 0, 0, 0,
3089 0, 23, 24, 25, 26, 0, 0, 0, 0, 0,
3090 714, 0, 0, 0, 0, 956, 0, 32, 33, 34,
3091 906, 0, 0, 0, 907, 0, 0, 41, 42, 43,
3092 44, 45, 0, 0, 0, 346, -774, -774, -774, -774,
3093 351, 352, 0, 220, -774, -774, 0, 0, 0, 0,
3094 0, 0, 359, 360, 0, 741, 0, 0, 908, 909,
3095 750, 0, 0, 0, 0, 0, 910, 0, 0, 911,
3096 220, 0, 912, 913, 0, 1024, 771, 0, 58, 59,
3097 60, 61, 62, 63, 64, 65, 66, 363, 364, 365,
3098 366, 367, 368, 369, 370, 371, 372, 0, 0, 0,
3099 914, 0, 0, 0, 0, 0, 1009, 282, 0, 0,
3100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3101 0, 240, 0, 0, 0, 0, 0, 0, 0, 0,
3102 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3103 220, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3104 827, 827, 0, 220, 827, 0, 220, 0, 0, 0,
3105 0, 0, 0, 0, 1064, 827, 827, 0, 0, 0,
3106 0, 220, 0, 220, 0, 0, 0, 0, 23, 24,
3107 25, 26, 827, 0, 0, 276, 0, 0, 0, 0,
3108 0, 0, 0, 0, 32, 33, 34, 906, 0, 0,
3109 0, 907, 0, 1118, 41, 42, 43, 44, 45, 0,
3110 0, 0, 0, 0, 0, 0, 0, 1107, 0, 0,
3111 220, 0, 533, 0, 0, 0, 0, 0, 0, 0,
3112 0, 0, 0, 0, 0, 908, 909, 0, 220, 0,
3113 0, 0, 0, 910, 0, 0, 911, 0, 0, 912,
3114 913, 220, 1024, 537, 0, 58, 59, 1136, 61, 62,
3115 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3116 0, 0, 0, 0, 1153, 0, 0, 914, 0, 220,
3117 0, 0, 0, 0, 282, 0, 0, 0, 0, 0,
3118 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
3119 0, 0, 0, -773, 4, 0, 5, 6, 7, 8,
3120 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3121 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3122 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3123 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3124 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3125 40, 1212, 41, 42, 43, 44, 45, 46, 47, 0,
3126 0, 0, 0, 0, 996, 0, 0, 0, 48, 49,
3127 0, 0, 0, 0, 0, 1002, 0, 0, 0, 0,
3128 220, 0, 0, 50, 51, 1013, 0, 220, 0, 0,
3129 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3130 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3131 65, 66, 0, 0, 0, 0, 0, 0, 1048, 827,
3132 827, 0, 0, 0, 827, 827, 0, 0, 0, 0,
3133 0, 0, 67, 68, 69, 0, 0, 0, 220, 0,
3134 0, 0, 0, 0, -773, 0, -773, 0, 0, 0,
3135 0, 0, 0, 827, 827, 0, 827, 827, 0, 220,
3136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3137 0, 0, 0, 0, 0, 0, 0, 0, 0, -750,
3138 0, 0, 0, 0, 0, 0, 0, -750, -750, -750,
3139 0, 220, -750, -750, -750, 827, -750, 0, 0, 0,
3140 0, 0, 0, 0, -750, -750, -750, -750, -750, 0,
3141 0, 0, 0, 0, 0, 0, -750, -750, 0, -750,
3142 -750, -750, -750, -750, 0, 0, 0, 0, 0, 0,
3143 0, 0, 0, 0, 0, 0, 827, 0, 0, 0,
3144 0, 0, 0, 0, 0, 0, 0, -750, 220, 0,
3145 0, 0, 0, 0, 827, 0, -750, -750, -750, -750,
3146 -750, -750, -750, -750, -750, -750, -750, -750, -750, 0,
3147 0, 0, 0, -750, -750, -750, -750, 0, 835, -750,
3148 0, 0, 0, 0, 0, -750, 0, 0, 0, 0,
3149 0, 0, 0, 0, 0, 0, 0, 0, 0, -750,
3150 0, 0, -750, 0, 0, -124, -750, -750, -750, -750,
3151 -750, -750, -750, -750, -750, -750, -750, -750, 0, 0,
3152 0, 0, -750, -750, -750, -750, 0, 0, -750, -750,
3153 -750, -641, -750, 0, 0, 220, 0, 0, 0, -641,
3154 -641, -641, 0, 0, -641, -641, -641, 0, -641, 0,
3155 0, 0, 220, 902, 0, 0, -641, 0, -641, -641,
3156 -641, 0, 0, 0, 0, 0, 0, 0, -641, -641,
3157 0, -641, -641, -641, -641, -641, 0, 0, 0, 0,
3158 0, 0, 0, 0, 0, 0, 346, 347, 348, 349,
3159 350, 351, 352, 353, 354, 355, 356, 357, 358, -641,
3160 0, 0, 0, 359, 360, 0, 0, 0, -641, -641,
3161 -641, -641, -641, -641, -641, -641, -641, -641, -641, -641,
3162 -641, 0, 0, 0, 0, -641, -641, -641, -641, 0,
3163 -641, -641, 0, 0, 0, 0, 362, -641, 363, 364,
3164 365, 366, 367, 368, 369, 370, 371, 372, 0, 0,
3165 0, -641, 0, 0, -641, -271, 0, -641, -641, -641,
3166 -641, -641, -641, -641, -641, -641, -641, -641, -641, -641,
3167 0, 0, 0, 0, 0, -641, -641, -641, -644, 0,
3168 -641, -641, -641, 0, -641, 0, -644, -644, -644, 0,
3169 0, -644, -644, -644, 0, -644, 0, 0, 0, 0,
3170 881, 0, 0, -644, 0, -644, -644, -644, 0, 0,
3171 0, 0, 0, 0, 0, -644, -644, 0, -644, -644,
3172 -644, -644, -644, 0, 0, 0, 0, 0, 0, 0,
3173 0, 0, 0, 346, 347, 348, 349, 350, 351, 352,
3174 353, 354, 355, 356, 357, 358, -644, 0, 0, 0,
3175 359, 360, 0, 0, 0, -644, -644, -644, -644, -644,
3176 -644, -644, -644, -644, -644, -644, -644, -644, 0, 0,
3177 0, 0, -644, -644, -644, -644, 0, -644, -644, 0,
3178 0, 0, 0, 362, -644, 363, 364, 365, 366, 367,
3179 368, 369, 370, 371, 372, 0, 0, 0, -644, 0,
3180 0, -644, 0, 0, -644, -644, -644, -644, -644, -644,
3181 -644, -644, -644, -644, -644, -644, -644, 0, 0, 0,
3182 0, 0, -644, -644, -644, -751, 0, -644, -644, -644,
3183 0, -644, 0, -751, -751, -751, 0, 0, -751, -751,
3184 -751, 0, -751, 0, 0, 0, 0, 892, 0, 0,
3185 -751, -751, -751, -751, -751, 0, 0, 0, 0, 0,
3186 0, 0, -751, -751, 0, -751, -751, -751, -751, -751,
3187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3188 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
3189 356, 357, 358, -751, 0, 0, 0, 359, 360, 0,
3190 0, 0, -751, -751, -751, -751, -751, -751, -751, -751,
3191 -751, -751, -751, -751, -751, 0, 0, 0, 0, -751,
3192 -751, -751, -751, 0, 0, -751, 0, 0, 0, 0,
3193 362, -751, 363, 364, 365, 366, 367, 368, 369, 370,
3194 371, 372, 0, 0, 0, -751, 0, 0, -751, 0,
3195 0, 0, -751, -751, -751, -751, -751, -751, -751, -751,
3196 -751, -751, -751, -751, 0, 0, 0, 0, -751, -751,
3197 -751, -751, -752, 0, -751, -751, -751, 0, -751, 0,
3198 -752, -752, -752, 0, 0, -752, -752, -752, 0, -752,
3199 0, 0, 0, 0, 902, 0, 0, -752, -752, -752,
3200 -752, -752, 0, 0, 0, 0, 0, 0, 0, -752,
3201 -752, 0, -752, -752, -752, -752, -752, 0, 0, 0,
3202 0, 0, 0, 0, 0, 0, 0, 346, 347, 348,
3203 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
3204 -752, 0, 0, 0, 359, 360, 0, 0, 0, -752,
3205 -752, -752, -752, -752, -752, -752, -752, -752, -752, -752,
3206 -752, -752, 0, 0, 0, 0, -752, -752, -752, -752,
3207 0, 0, -752, 0, 0, 0, 0, 362, -752, 363,
3208 364, 365, 366, 367, 368, 369, 370, 371, 372, 0,
3209 0, 0, -752, 0, 0, -752, 0, 0, 0, -752,
3210 -752, -752, -752, -752, -752, -752, -752, -752, -752, -752,
3211 -752, 0, 0, 0, 0, -752, -752, -752, -752, -325,
3212 0, -752, -752, -752, 0, -752, 0, -325, -325, -325,
3213 0, 0, -325, -325, -325, 0, -325, 0, 0, 0,
3214 0, 0, 0, 0, -325, 0, -325, -325, -325, 0,
3215 0, 0, 0, 0, 0, 0, -325, -325, 0, -325,
3216 -325, -325, -325, -325, 0, 0, 0, 0, 0, 0,
3217 0, 0, 0, 0, 346, 347, 348, 349, 350, 351,
3218 352, 353, 354, 355, 356, 357, 358, -325, 0, 0,
3219 0, 359, 360, 0, 0, 0, -325, -325, -325, -325,
3220 -325, -325, -325, -325, -325, -325, -325, -325, -325, 0,
3221 0, 0, 0, -325, -325, -325, -325, 0, 836, -325,
3222 0, 0, 0, 0, 362, -325, 363, 364, 365, 366,
3223 367, 368, 369, 370, 371, 372, 0, 0, 0, -325,
3224 0, 0, -325, 0, 0, -126, -325, -325, -325, -325,
3225 -325, -325, -325, -325, -325, -325, -325, -325, 0, 0,
3226 0, 0, 0, -325, -325, -325, -460, 0, -325, -325,
3227 -325, 0, -325, 0, -460, -460, -460, 0, 0, -460,
3228 -460, -460, 0, -460, 0, 0, 0, 0, 0, 0,
3229 0, -460, -460, -460, -460, 0, 0, 0, 0, 0,
3230 0, 0, 0, -460, -460, 0, -460, -460, -460, -460,
3231 -460, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3232 0, 346, 347, 348, 349, 350, 351, 352, 353, 354,
3233 355, 356, -774, -774, -460, 0, 0, 0, 359, 360,
3234 0, 0, 0, -460, -460, -460, -460, -460, -460, -460,
3235 -460, -460, -460, -460, -460, -460, 0, 0, 0, 0,
3236 -460, -460, -460, -460, 0, 0, -460, 0, 0, 0,
3237 0, 0, -460, 363, 364, 365, 366, 367, 368, 369,
3238 370, 371, 372, 0, 0, 0, -460, 0, 0, 0,
3239 0, 0, 0, -460, 0, -460, -460, -460, -460, -460,
3240 -460, -460, -460, -460, -460, 0, 0, 0, 0, -460,
3241 -460, -460, -460, -317, 236, -460, -460, -460, 0, -460,
3242 0, -317, -317, -317, 0, 0, -317, -317, -317, 0,
3243 -317, 0, 0, 0, 0, 0, 0, 0, -317, 0,
3244 -317, -317, -317, 0, 0, 0, 0, 0, 0, 0,
3245 -317, -317, 0, -317, -317, -317, -317, -317, 0, 0,
3246 0, 0, 0, 0, 0, 0, 0, 0, 346, 347,
3247 348, 349, 350, 351, 352, 0, 0, 355, 356, 0,
3248 0, -317, 0, 0, 0, 359, 360, 0, 0, 0,
3249 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
3250 -317, -317, -317, 0, 0, 0, 0, -317, -317, -317,
3251 -317, 0, 0, -317, 0, 0, 0, 0, 0, -317,
3252 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
3253 0, 0, 0, -317, 0, 0, -317, 0, 0, 0,
3254 -317, -317, -317, -317, -317, -317, -317, -317, -317, -317,
3255 -317, -317, 0, 0, 0, 0, 0, -317, -317, -317,
3256 -773, 0, -317, -317, -317, 0, -317, 0, -773, -773,
3257 -773, 0, 0, -773, -773, -773, 0, -773, 0, 0,
3258 0, 0, 0, 0, 0, -773, -773, -773, -773, 0,
3259 0, 0, 0, 0, 0, 0, 0, -773, -773, 0,
3260 -773, -773, -773, -773, -773, 0, 0, 0, 0, 0,
3261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3262 0, 0, 0, 0, 0, 0, 0, 0, -773, 0,
3263 0, 0, 0, 0, 0, 0, 0, -773, -773, -773,
3264 -773, -773, -773, -773, -773, -773, -773, -773, -773, -773,
3265 0, 0, 0, 0, -773, -773, -773, -773, 0, 0,
3266 -773, 0, 0, 0, 0, 0, -773, 0, 0, 0,
3267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3268 -773, 0, 0, 0, 0, 0, 0, -773, 0, -773,
3269 -773, -773, -773, -773, -773, -773, -773, -773, -773, 0,
3270 0, 0, 0, -773, -773, -773, -773, -332, 236, -773,
3271 -773, -773, 0, -773, 0, -332, -332, -332, 0, 0,
3272 -332, -332, -332, 0, -332, 0, 0, 0, 0, 0,
3273 0, 0, -332, 0, -332, -332, 0, 0, 0, 0,
3274 0, 0, 0, 0, -332, -332, 0, -332, -332, -332,
3275 -332, -332, 0, 0, 0, 0, 0, 0, 0, 0,
3276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3277 0, 0, 0, 0, 0, -332, 0, 0, 0, 0,
3278 0, 0, 0, 0, -332, -332, -332, -332, -332, -332,
3279 -332, -332, -332, -332, -332, -332, -332, 0, 0, 0,
3280 0, -332, -332, -332, -332, 0, 0, -332, 0, 0,
3281 0, 0, 0, -332, 0, 0, 0, 0, 0, 0,
3282 0, 0, 0, 0, 0, 0, 0, -332, 0, 0,
3283 0, 0, 0, 0, -332, 0, -332, -332, -332, -332,
3284 -332, -332, -332, -332, -332, -332, 0, 0, 0, 0,
3285 0, -332, -332, -332, -750, 233, -332, -332, -332, 0,
3286 -332, 0, -750, -750, -750, 0, 0, 0, -750, -750,
3287 0, -750, 0, 0, 0, 0, 0, 0, 0, -750,
3288 -750, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3289 0, -750, -750, 0, -750, -750, -750, -750, -750, 0,
3290 0, 0, 0, 0, 0, 0, 346, 347, 348, 349,
3291 350, 351, 352, 353, 354, 355, 356, 357, 358, 0,
3292 0, 0, -750, 359, 360, 0, 0, 0, 0, 0,
3293 0, -750, -750, -750, -750, -750, -750, -750, -750, -750,
3294 -750, -750, -750, -750, 0, 0, 0, 0, -750, -750,
3295 -750, -750, 0, 780, -750, 0, 362, 0, 363, 364,
3296 365, 366, 367, 368, 369, 370, 371, 372, 0, 0,
3297 0, 0, 0, 0, -750, 0, 0, 0, 0, 0,
3298 -124, -750, 240, -750, -750, -750, -750, -750, -750, -750,
3299 -750, -750, -750, 0, 0, 0, 0, -750, -750, -750,
3300 -115, -750, 0, -750, 0, -750, 0, -750, 0, -750,
3301 -750, -750, 0, 0, 0, -750, -750, 0, -750, 0,
3302 0, 0, 0, 0, 0, 0, -750, -750, 0, 0,
3303 0, 0, 0, 0, 0, 0, 0, 0, -750, -750,
3304 0, -750, -750, -750, -750, -750, 0, 0, 0, 0,
3305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3306 0, 0, 0, 0, 0, 0, 0, 0, 0, -750,
3307 0, 0, 0, 0, 0, 0, 0, 0, -750, -750,
3308 -750, -750, -750, -750, -750, -750, -750, -750, -750, -750,
3309 -750, 0, 0, 0, 0, -750, -750, -750, -750, 0,
3310 780, -750, 0, 0, 0, 0, 0, 0, 0, 0,
3311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3312 0, -750, 0, 0, 0, 0, 0, -124, -750, 0,
3313 -750, -750, -750, -750, -750, -750, -750, -750, -750, -750,
3314 0, 0, 0, 0, -750, -750, -750, -750, -325, 0,
3315 -750, 0, -750, 0, -750, 0, -325, -325, -325, 0,
3316 0, 0, -325, -325, 0, -325, 0, 0, 0, 0,
3317 0, 0, 0, -325, 0, 0, 0, 0, 0, 0,
3318 0, 0, 0, 0, 0, -325, -325, 0, -325, -325,
3319 -325, -325, -325, 0, 0, 0, 0, 0, 0, 0,
3320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3321 0, 0, 0, 0, 0, 0, -325, 0, 0, 0,
3322 0, 0, 0, 0, 0, -325, -325, -325, -325, -325,
3323 -325, -325, -325, -325, -325, -325, -325, -325, 0, 0,
3324 0, 0, -325, -325, -325, -325, 0, 781, -325, 0,
3325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3326 0, 0, 0, 0, 0, 0, 0, 0, -325, 0,
3327 0, 0, 0, 0, -126, -325, 0, -325, -325, -325,
3328 -325, -325, -325, -325, -325, -325, -325, 0, 0, 0,
3329 0, 0, -325, -325, -117, -325, 0, -325, 0, -325,
3330 0, -325, 0, -325, -325, -325, 0, 0, 0, -325,
3331 -325, 0, -325, 0, 0, 0, 0, 0, 0, 0,
3332 -325, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3333 0, 0, -325, -325, 0, -325, -325, -325, -325, -325,
3334 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3336 0, 0, 0, -325, 0, 0, 0, 0, 0, 0,
3337 0, 0, -325, -325, -325, -325, -325, -325, -325, -325,
3338 -325, -325, -325, -325, -325, 0, 0, 0, 0, -325,
3339 -325, -325, -325, 0, 781, -325, 0, 0, 0, 0,
3340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3341 0, 0, 0, 0, 0, -325, 0, 0, 0, 0,
3342 0, -126, -325, 0, -325, -325, -325, -325, -325, -325,
3343 -325, -325, -325, -325, 0, 0, 0, 0, 0, -325,
3344 -325, -325, 0, 0, -325, 0, -325, 260, -325, 5,
3345 6, 7, 8, 9, -773, -773, -773, 10, 11, 0,
3346 0, -773, 12, 0, 13, 14, 15, 16, 17, 18,
3347 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3348 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3349 0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
3350 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3351 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3352 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3353 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3354 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3355 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3356 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3358 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
3359 0, 0, 0, 0, 0, 0, 0, -773, 260, -773,
3360 5, 6, 7, 8, 9, 0, 0, -773, 10, 11,
3361 0, -773, -773, 12, 0, 13, 14, 15, 16, 17,
3362 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3363 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3364 0, 0, 28, 29, 261, 31, 32, 33, 34, 35,
3365 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3366 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3367 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3369 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3370 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3371 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3372 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3373 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
3374 0, 0, 0, 0, 0, 0, 0, 0, -773, 260,
3375 -773, 5, 6, 7, 8, 9, 0, 0, -773, 10,
3376 11, 0, 0, -773, 12, -773, 13, 14, 15, 16,
3377 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3378 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3379 0, 0, 0, 28, 29, 261, 31, 32, 33, 34,
3380 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3381 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3382 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3383 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3384 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3385 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3386 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
3389 0, 0, 0, 0, 0, 0, 0, 0, 0, -773,
3390 260, -773, 5, 6, 7, 8, 9, 0, 0, -773,
3391 10, 11, 0, 0, -773, 12, 0, 13, 14, 15,
3392 16, 17, 18, 19, -773, 0, 0, 0, 0, 20,
3393 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3394 0, 0, 0, 0, 28, 29, 261, 31, 32, 33,
3395 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3396 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3398 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3399 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3400 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3401 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3403 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
3404 69, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3405 -773, 260, -773, 5, 6, 7, 8, 9, 0, 0,
3406 -773, 10, 11, 0, 0, -773, 12, 0, 13, 14,
3407 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3408 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3409 0, 0, 0, 0, 0, 28, 29, 261, 31, 32,
3410 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3411 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3412 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3413 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3414 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3415 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3416 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3417 0, 0, 0, 0, 0, 0, 0, 260, 0, 5,
3418 6, 7, 8, 9, 0, -773, -773, 10, 11, 67,
3419 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3420 19, -773, 0, -773, 0, 0, 20, 21, 22, 23,
3421 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3422 0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
3423 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3424 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3425 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3426 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3427 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3428 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3429 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3430 0, 0, 0, 260, 0, 5, 6, 7, 8, 9,
3431 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3432 13, 14, 15, 16, 17, 18, 19, -773, 0, -773,
3433 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3434 0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
3435 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3436 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3437 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3439 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3440 52, 0, 0, 262, 54, 0, 55, 56, 0, 57,
3441 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3442 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3444 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
3445 0, -773, 0, -773, 260, -773, 5, 6, 7, 8,
3446 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3447 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3448 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3449 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3450 261, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3451 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3452 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3454 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3455 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3456 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3457 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3459 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
3460 0, 0, -773, 0, -773, 4, -773, 5, 6, 7,
3461 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3462 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3463 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3464 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3465 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
3466 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3467 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3468 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3469 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3470 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3471 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3472 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3474 0, 0, 0, 67, 68, 69, 0, 0, -773, 0,
3475 0, 0, 0, 0, 0, -773, 260, -773, 5, 6,
3476 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
3477 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3478 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3479 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3480 28, 29, 261, 31, 32, 33, 34, 35, 36, 37,
3481 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3482 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3483 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3484 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3485 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3486 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3487 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3489 0, 0, 0, 0, 67, 68, 69, 0, 0, -773,
3490 0, 0, 0, 0, 0, 0, -773, 260, -773, 5,
3491 6, 7, 8, 9, 0, 0, -773, 10, 11, 0,
3492 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
3493 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3494 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3495 0, 28, 29, 261, 31, 32, 33, 34, 35, 36,
3496 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3497 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3498 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3499 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3500 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3501 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3502 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3503 0, 0, 0, 260, 0, 5, 6, 7, 8, 9,
3504 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3505 13, 14, 15, 16, 17, 18, 19, -773, 0, -773,
3506 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3507 0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
3508 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3509 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3510 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3512 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3513 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3514 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3515 66, 0, -773, 0, 0, 0, 0, 0, 0, 0,
3516 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3517 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3518 17, 18, 19, -773, 0, -773, 0, 0, 20, 21,
3519 22, 23, 24, 25, 26, 0, 0, 209, 0, 0,
3520 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3521 35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
3522 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3523 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3524 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3525 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
3526 54, 0, 55, 56, 0, 213, 214, 215, 58, 59,
3527 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3528 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3529 0, 9, 0, 0, 0, 10, 11, 67, 217, 69,
3530 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3531 0, 240, 0, 0, 20, 21, 22, 23, 24, 25,
3532 26, 0, 0, 27, 0, 0, 0, 0, 0, 0,
3533 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3534 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3535 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3536 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3537 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3538 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
3539 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
3540 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3541 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3542 0, 10, 11, 67, 68, 69, 12, 0, 13, 14,
3543 15, 16, 17, 18, 19, 310, 0, 311, 0, 0,
3544 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3545 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3546 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3547 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3548 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3550 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
3551 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
3552 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3553 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3554 6, 7, 8, 9, 0, 0, 0, 10, 11, 67,
3555 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3556 19, 0, 0, 240, 0, 0, 20, 21, 22, 23,
3557 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3558 0, 28, 29, 30, 31, 32, 33, 34, 35, 36,
3559 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3560 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3561 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3562 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3563 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3564 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3565 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3566 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
3567 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3568 13, 14, 15, 16, 17, 18, 19, 518, 0, 0,
3569 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3570 0, 27, 0, 0, 0, 0, 0, 28, 29, 261,
3571 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3572 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3573 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3575 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3576 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3577 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3578 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3580 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
3581 0, 0, 0, 518, 129, 130, 131, 132, 133, 134,
3582 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
3583 145, 146, 147, 148, 149, 150, 151, 152, 0, 0,
3584 0, 153, 154, 155, 409, 410, 411, 412, 160, 161,
3585 162, 0, 0, 0, 0, 0, 163, 164, 165, 166,
3586 413, 414, 415, 416, 171, 37, 38, 417, 40, 0,
3587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3588 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
3589 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
3590 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
3591 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
3592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3594 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
3595 0, 200, 201, 0, 0, 0, 0, 0, 202, 418,
3596 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3597 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
3598 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
3599 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
3600 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
3601 171, 293, 294, 172, 295, 0, 0, 0, 0, 0,
3602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3603 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3604 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3605 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3606 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
3607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3608 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3609 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3610 0, 0, 0, 0, 202, 129, 130, 131, 132, 133,
3611 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3612 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
3613 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
3614 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
3615 166, 167, 168, 169, 170, 171, 242, 0, 172, 0,
3616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3617 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
3618 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
3619 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
3620 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
3621 189, 0, 0, 59, 0, 0, 0, 0, 0, 0,
3622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3623 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
3624 199, 0, 200, 201, 0, 0, 0, 0, 0, 202,
3625 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3626 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
3627 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
3628 156, 157, 158, 159, 160, 161, 162, 0, 0, 0,
3629 0, 0, 163, 164, 165, 166, 167, 168, 169, 170,
3630 171, 0, 0, 172, 0, 0, 0, 0, 0, 0,
3631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3632 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3633 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3634 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3635 0, 0, 0, 0, 188, 189, 0, 0, 59, 0,
3636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3637 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3638 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3639 0, 0, 0, 0, 202, 129, 130, 131, 132, 133,
3640 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3641 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
3642 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
3643 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
3644 166, 167, 168, 169, 170, 171, 0, 0, 172, 0,
3645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3646 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
3647 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
3648 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
3649 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
3650 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3652 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
3653 199, 0, 200, 201, 5, 6, 7, 0, 9, 202,
3654 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
3655 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3656 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3657 209, 0, 0, 0, 0, 0, 0, 280, 0, 0,
3658 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3659 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3662 0, 0, 0, 0, 0, 0, 0, 0, 0, 281,
3663 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3664 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3666 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3667 282, 10, 11, 0, 0, 0, 12, 283, 13, 14,
3668 15, 248, 249, 18, 19, 0, 0, 0, 0, 0,
3669 20, 250, 251, 23, 24, 25, 26, 0, 0, 209,
3670 0, 0, 0, 0, 0, 0, 280, 0, 0, 32,
3671 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3672 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3675 0, 0, 0, 0, 0, 0, 0, 0, 281, 0,
3676 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
3677 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3679 0, 0, 5, 6, 7, 8, 9, 0, 0, 282,
3680 10, 11, 0, 0, 0, 12, 580, 13, 14, 15,
3681 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3682 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3683 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
3684 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3685 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3686 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3687 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3688 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3689 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3690 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3691 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3692 7, 0, 9, 0, 0, 0, 10, 11, 67, 68,
3693 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3694 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3695 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3696 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3697 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
3698 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3699 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3700 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3701 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3702 56, 0, 213, 214, 215, 58, 59, 216, 61, 62,
3703 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3704 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
3705 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3706 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3707 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3708 27, 0, 0, 0, 0, 0, 28, 29, 0, 31,
3709 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3710 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3711 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3713 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3714 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3715 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3717 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3718 67, 68, 69, 12, 0, 13, 14, 15, 16, 17,
3719 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3720 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3721 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3722 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3723 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3724 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3725 0, 0, 0, 0, 0, 0, 0, 50, 454, 0,
3726 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3727 0, 55, 56, 0, 213, 214, 215, 58, 59, 216,
3728 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3729 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3730 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3731 0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3732 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3733 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3734 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3735 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3736 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3738 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3739 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3740 663, 214, 215, 58, 59, 216, 61, 62, 63, 64,
3741 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3742 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3743 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3744 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3745 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3746 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3747 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
3748 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3749 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3750 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3751 454, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3752 212, 54, 0, 55, 56, 0, 663, 214, 215, 58,
3753 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
3754 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3755 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3756 69, 12, 0, 13, 14, 15, 248, 249, 18, 19,
3757 0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
3758 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3759 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3760 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
3761 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3762 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3763 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3764 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3765 56, 0, 213, 214, 0, 58, 59, 216, 61, 62,
3766 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3767 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3768 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3769 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3770 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3771 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3772 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
3773 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3774 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3776 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3777 0, 0, 212, 54, 0, 55, 56, 0, 0, 214,
3778 215, 58, 59, 216, 61, 62, 63, 64, 65, 66,
3779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3780 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3781 67, 217, 69, 12, 0, 13, 14, 15, 248, 249,
3782 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3783 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3784 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3785 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3786 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3787 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3788 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3789 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3790 0, 55, 56, 0, 663, 214, 0, 58, 59, 216,
3791 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3792 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3793 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3794 0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3795 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3796 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3797 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3798 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3799 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3801 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3802 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3803 0, 214, 0, 58, 59, 216, 61, 62, 63, 64,
3804 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3805 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3806 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3807 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3808 21, 22, 23, 24, 25, 26, 0, 0, 209, 0,
3809 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3810 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3811 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3812 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3813 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3814 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3815 212, 54, 0, 55, 56, 0, 758, 0, 0, 58,
3816 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3817 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3818 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3819 69, 12, 0, 13, 14, 15, 248, 249, 18, 19,
3820 0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
3821 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3822 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3823 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3824 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3825 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3826 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3827 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3828 56, 0, 758, 0, 0, 58, 59, 60, 61, 62,
3829 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3830 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3831 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3832 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3833 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3834 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3835 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3836 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3837 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3839 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3840 0, 0, 212, 54, 0, 55, 56, 0, 955, 0,
3841 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3843 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3844 67, 217, 69, 12, 0, 13, 14, 15, 248, 249,
3845 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3846 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3847 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3848 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3849 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3850 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3851 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3852 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3853 0, 55, 56, 0, 1008, 0, 0, 58, 59, 60,
3854 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3855 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3856 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3857 0, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3858 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3859 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3860 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3861 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3862 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3864 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3865 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3866 1152, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3867 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3868 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3869 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3870 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3871 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3872 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3873 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3874 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3875 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3876 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3877 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3878 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3879 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3880 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3881 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3882 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3883 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3884 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3885 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3886 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3887 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3888 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3889 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3890 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3891 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3892 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3893 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3894 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3895 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3896 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3897 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3898 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3899 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3900 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3902 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3903 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3904 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3905 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3906 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3907 67, 68, 69, 12, 0, 13, 14, 15, 248, 249,
3908 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3909 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3910 0, 0, 0, 280, 0, 0, 32, 33, 34, 35,
3911 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3912 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3915 0, 0, 0, 0, 0, 281, 0, 0, 341, 54,
3916 0, 55, 56, 0, 342, 0, 0, 58, 59, 60,
3917 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3918 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3919 10, 11, 0, 0, 0, 12, 282, 13, 14, 15,
3920 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3921 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3922 0, 0, 0, 0, 0, 280, 0, 0, 32, 33,
3923 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3924 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3927 0, 0, 0, 0, 0, 0, 0, 390, 0, 0,
3928 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3929 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3930 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3931 0, 0, 10, 11, 0, 0, 0, 12, 282, 13,
3932 14, 15, 248, 249, 18, 19, 0, 0, 0, 0,
3933 0, 20, 250, 251, 23, 24, 25, 26, 0, 0,
3934 209, 0, 0, 0, 0, 0, 0, 280, 0, 0,
3935 32, 33, 34, 398, 36, 37, 38, 399, 40, 0,
3936 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3939 0, 0, 0, 0, 0, 400, 0, 0, 0, 401,
3940 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3941 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3942 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3943 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
3944 282, 13, 14, 15, 248, 249, 18, 19, 0, 0,
3945 0, 0, 0, 20, 250, 251, 23, 24, 25, 26,
3946 0, 0, 209, 0, 0, 0, 0, 0, 0, 280,
3947 0, 0, 32, 33, 34, 398, 36, 37, 38, 399,
3948 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3952 0, 401, 0, 0, 212, 54, 0, 55, 56, 0,
3953 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3954 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
3955 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3956 0, 12, 282, 13, 14, 15, 248, 249, 18, 19,
3957 0, 0, 0, 0, 0, 20, 250, 251, 23, 24,
3958 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3959 0, 280, 0, 0, 32, 33, 34, 35, 36, 37,
3960 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3961 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3964 0, 0, 0, 281, 0, 0, 341, 54, 0, 55,
3965 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3966 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3967 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3968 0, 0, 0, 12, 282, 13, 14, 15, 248, 249,
3969 18, 19, 0, 0, 0, 0, 0, 20, 250, 251,
3970 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3971 0, 0, 0, 280, 0, 0, 32, 33, 34, 35,
3972 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3973 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3974 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3976 0, 0, 0, 0, 0, 1084, 0, 0, 212, 54,
3977 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3978 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3979 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3980 10, 11, 0, 0, 0, 12, 282, 13, 14, 15,
3981 248, 249, 18, 19, 0, 0, 0, 0, 0, 20,
3982 250, 251, 23, 24, 25, 26, 0, 0, 209, 0,
3983 0, 0, 0, 0, 0, 280, 0, 0, 32, 33,
3984 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3985 43, 44, 45, 46, 47, 23, 24, 25, 26, 0,
3986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3987 0, 32, 33, 34, 906, 0, 0, 0, 907, 0,
3988 0, 41, 42, 43, 44, 45, 0, 1180, 0, 0,
3989 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3990 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3991 0, 0, 908, 909, 0, 0, 0, 0, 0, 0,
3992 910, 0, 0, 911, 0, 0, 912, 913, 282, 1112,
3993 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3994 66, 23, 24, 25, 26, 0, 0, 0, 0, 0,
3995 0, 0, 0, 0, 914, 0, 0, 32, 33, 34,
3996 906, 282, 0, 0, 907, 0, 0, 41, 42, 43,
3997 44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
3998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3999 0, 0, 0, 0, 0, 0, 0, 0, 908, 909,
4000 0, 0, 0, 0, 0, 0, 910, 0, 0, 911,
4001 0, 0, 912, 913, 0, 1024, 0, 0, 58, 59,
4002 60, 61, 62, 63, 64, 65, 66, 610, 611, 0,
4003 0, 612, 0, 0, 0, 0, 0, 0, 0, 0,
4004 914, 0, 0, 0, 0, 0, 0, 282, 0, 0,
4005 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4006 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4007 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4008 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4010 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4011 196, 197, 198, 199, 0, 200, 201, 619, 620, 0,
4012 0, 621, 202, 236, 0, 0, 0, 0, 0, 0,
4013 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4014 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4015 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4016 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4017 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4019 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4020 196, 197, 198, 199, 0, 200, 201, 667, 611, 0,
4021 0, 668, 202, 236, 0, 0, 0, 0, 0, 0,
4022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4023 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4024 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4025 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4026 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4028 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4029 196, 197, 198, 199, 0, 200, 201, 670, 620, 0,
4030 0, 671, 202, 236, 0, 0, 0, 0, 0, 0,
4031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4032 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4033 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4034 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4035 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4037 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4038 196, 197, 198, 199, 0, 200, 201, 697, 611, 0,
4039 0, 698, 202, 236, 0, 0, 0, 0, 0, 0,
4040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4041 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4042 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4043 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4044 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4046 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4047 196, 197, 198, 199, 0, 200, 201, 700, 620, 0,
4048 0, 701, 202, 236, 0, 0, 0, 0, 0, 0,
4049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4050 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4051 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4052 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4053 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4055 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4056 196, 197, 198, 199, 0, 200, 201, 808, 611, 0,
4057 0, 809, 202, 236, 0, 0, 0, 0, 0, 0,
4058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4059 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4060 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4061 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4062 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4064 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4065 196, 197, 198, 199, 0, 200, 201, 811, 620, 0,
4066 0, 812, 202, 236, 0, 0, 0, 0, 0, 0,
4067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4068 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4069 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4070 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4071 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4073 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4074 196, 197, 198, 199, 0, 200, 201, 817, 611, 0,
4075 0, 818, 202, 236, 0, 0, 0, 0, 0, 0,
4076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4077 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4078 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4079 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4080 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4082 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4083 196, 197, 198, 199, 0, 200, 201, 654, 620, 0,
4084 0, 655, 202, 236, 0, 0, 0, 0, 0, 0,
4085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4086 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4087 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4088 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4089 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4091 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4092 196, 197, 198, 199, 0, 200, 201, 1014, 611, 0,
4093 0, 1015, 202, 236, 0, 0, 0, 0, 0, 0,
4094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4095 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4096 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4097 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4098 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4100 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4101 196, 197, 198, 199, 0, 200, 201, 1017, 620, 0,
4102 0, 1018, 202, 236, 0, 0, 0, 0, 0, 0,
4103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4104 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4105 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4106 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4107 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4109 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4110 196, 197, 198, 199, 0, 200, 201, 1224, 611, 0,
4111 0, 1225, 202, 236, 0, 0, 0, 0, 0, 0,
4112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4113 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4114 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4115 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4116 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4118 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4119 196, 197, 198, 199, 0, 200, 201, 1227, 620, 0,
4120 0, 1228, 202, 236, 0, 0, 0, 0, 0, 0,
4121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4122 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4123 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4124 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4125 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4127 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4128 196, 197, 198, 199, 0, 200, 201, 1264, 611, 0,
4129 0, 1265, 202, 236, 0, 0, 0, 0, 0, 0,
4130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4131 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4132 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4133 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4134 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4136 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4137 196, 197, 198, 199, 0, 200, 201, 654, 620, 0,
4138 0, 655, 202, 236, 0, 0, 0, 0, 0, 0,
4139 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4140 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4141 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4142 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4143 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4145 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4146 196, 197, 198, 199, 0, 200, 201, 0, 0, 0,
4152 2, 105, 4, 60, 59, 28, 91, 383, 96, 8,
4153 2, 329, 796, 53, 27, 57, 29, 401, 322, 104,
4154 274, 8, 326, 85, 278, 552, 731, 4, 378, 28,
4155 57, 16, 17, 57, 71, 735, 803, 326, 448, 230,
4156 731, 28, 377, 85, 379, 97, 101, 22, 68, 93,
4157 94, 53, 54, 97, 322, 57, 98, 99, 100, 863,
4158 97, 85, 380, 55, 56, 27, 22, 67, 71, 583,
4159 498, 2, 59, 4, 98, 99, 100, 322, 488, 865,
4160 13, 326, 728, 85, 76, 77, 77, 16, 17, 53,
4161 13, 426, 26, 557, 444, 559, 98, 99, 100, 101,
4162 1045, 1046, 13, 749, 1157, 80, 57, 26, 443, 13,
4163 445, 1190, 25, 68, 101, 25, 13, 102, 25, 322,
4164 657, 658, 262, 54, 80, 52, 55, 66, 568, 99,
4165 99, 25, 68, 573, 85, 575, 94, 669, 473, 97,
4166 225, 535, 97, 25, 728, 13, 109, 98, 99, 100,
4167 500, 735, 580, 300, 301, 0, 126, 126, 25, 216,
4168 1211, 97, 100, 440, 1243, 749, 501, 699, 56, 254,
4169 133, 448, 212, 102, 37, 38, 66, 16, 17, 728,
4170 119, 25, 121, 122, 143, 625, 13, 908, 909, 151,
4171 630, 153, 632, 1184, 1245, 239, 13, 241, 1277, 29,
4172 749, 341, 1255, 288, 25, 16, 17, 247, 1003, 143,
4173 212, 13, 264, 146, 148, 153, 55, 56, 151, 146,
4174 153, 283, 262, 13, 143, 148, 143, 264, 151, 119,
4175 153, 745, 224, 146, 13, 148, 146, 148, 230, 146,
4176 151, 283, 153, 245, 236, 247, 722, 151, 233, 153,
4177 235, 236, 146, 245, 151, 731, 153, 66, 260, 283,
4178 262, 264, 646, 102, 146, 100, 1211, 280, 459, 1260,
4179 680, 315, 316, 317, 318, 1079, 320, 321, 810, 146,
4180 153, 283, 282, 151, 1027, 153, 986, 637, 820, 1003,
4181 153, 102, 1078, 123, 285, 251, 252, 647, 262, 1094,
4182 342, 341, 146, 638, 233, 25, 235, 236, 393, 25,
4183 119, 146, 314, 648, 245, 342, 152, 319, 342, 1040,
4184 1041, 715, 716, 325, 151, 146, 153, 329, 97, 260,
4185 150, 649, 283, 153, 151, 387, 153, 314, 766, 341,
4186 342, 385, 1033, 100, 384, 991, 386, 339, 875, 151,
4187 387, 153, 344, 126, 1045, 1046, 400, 315, 316, 317,
4188 318, 151, 66, 153, 804, 66, 513, 807, 515, 152,
4189 1154, 1062, 151, 1116, 153, 148, 145, 341, 380, 148,
4190 912, 821, 384, 314, 386, 15, 378, 1154, 319, 146,
4191 146, 342, 379, 378, 233, 25, 235, 153, 702, 936,
4192 937, 678, 986, 680, 941, 942, 126, 871, 872, 152,
4193 678, 126, 876, 702, 878, 99, 880, 121, 122, 1003,
4194 121, 122, 233, 379, 235, 34, 146, 385, 148, 149,
4195 146, 146, 148, 153, 777, 778, 498, 429, 430, 426,
4196 694, 152, 126, 52, 467, 58, 438, 1190, 152, 99,
4197 68, 152, 444, 28, 446, 447, 498, 702, 445, 444,
4198 728, 99, 146, 1177, 77, 457, 66, 459, 467, 863,
4199 1184, 865, 1186, 126, 498, 666, 126, 1182, 480, 97,
4200 467, 66, 474, 728, 1016, 783, 473, 146, 126, 445,
4201 735, 1182, 1276, 791, 1026, 108, 498, 1029, 816, 112,
4202 1243, 148, 1245, 126, 749, 1196, 153, 947, 500, 786,
4203 950, 1043, 68, 953, 501, 500, 1053, 473, 580, 119,
4204 960, 121, 122, 963, 77, 52, 910, 1003, 565, 56,
4205 1273, 1177, 735, 68, 1277, 738, 121, 122, 580, 124,
4206 96, 97, 1003, 847, 99, 501, 1260, 498, 1262, 541,
4207 99, 639, 99, 1267, 904, 1269, 580, 577, 847, 706,
4208 552, 68, 97, 583, 711, 1092, 976, 68, 903, 912,
4209 905, 126, 564, 1100, 1288, 66, 67, 126, 580, 126,
4210 99, 957, 68, 136, 137, 138, 599, 627, 99, 629,
4211 97, 146, 9, 1177, 631, 96, 97, 146, 15, 146,
4212 1184, 440, 847, 112, 617, 68, 650, 126, 1140, 1141,
4213 1142, 97, 25, 68, 144, 126, 1080, 1081, 1082, 1083,
4214 52, 1267, 998, 153, 56, 627, 618, 629, 1068, 580,
4215 121, 122, 624, 695, 97, 146, 659, 657, 658, 683,
4216 615, 68, 97, 961, 145, 637, 485, 649, 577, 624,
4217 841, 638, 637, 695, 583, 647, 669, 99, 1042, 615,
4218 659, 648, 647, 151, 656, 153, 146, 54, 624, 77,
4219 97, 695, 659, 34, 666, 149, 1260, 64, 65, 153,
4220 1023, 656, 638, 1059, 1078, 1079, 699, 148, 58, 1007,
4221 775, 52, 648, 695, 1226, 66, 688, 25, 56, 976,
4222 656, 1177, 1045, 1046, 766, 68, 1182, 77, 1184, 25,
4223 1186, 1238, 126, 126, 82, 83, 1177, 100, 1158, 1062,
4224 824, 1182, 99, 1184, 766, 1186, 134, 135, 136, 137,
4225 138, 687, 688, 146, 97, 15, 149, 17, 108, 109,
4226 153, 986, 766, 146, 695, 99, 99, 99, 119, 126,
4227 121, 122, 26, 745, 746, 99, 1074, 146, 1003, 1223,
4228 99, 129, 130, 133, 766, 37, 38, 148, 823, 146,
4229 1146, 815, 126, 813, 126, 777, 778, 814, 99, 148,
4230 1123, 148, 126, 986, 1260, 988, 1262, 126, 780, 781,
4231 993, 1267, 146, 1269, 68, 787, 788, 810, 126, 1260,
4232 1003, 1262, 794, 149, 796, 126, 1267, 820, 1269, 66,
4233 126, 813, 1288, 68, 816, 766, 745, 66, 146, 1169,
4234 126, 149, 96, 97, 99, 153, 99, 1288, 1045, 1046,
4235 146, 68, 77, 149, 56, 1170, 823, 153, 68, 678,
4236 150, 96, 97, 835, 836, 1062, 838, 839, 888, 841,
4237 144, 126, 148, 126, 146, 146, 68, 815, 77, 96,
4238 97, 153, 119, 126, 121, 122, 96, 97, 1211, 143,
4239 119, 145, 121, 122, 148, 124, 14, 15, 583, 2,
4240 126, 4, 66, 875, 96, 97, 888, 26, 88, 89,
4241 145, 126, 884, 16, 17, 68, 898, 106, 900, 912,
4242 913, 893, 946, 895, 70, 945, 908, 909, 145, 901,
4243 912, 148, 904, 146, 146, 145, 936, 937, 905, 904,
4244 153, 941, 942, 96, 97, 962, 151, 1045, 1046, 68,
4245 53, 54, 1177, 145, 57, 119, 56, 121, 122, 1184,
4246 124, 40, 41, 945, 1062, 68, 344, 786, 940, 905,
4247 284, 285, 657, 658, 25, 997, 130, 96, 97, 961,
4248 1163, 1001, 85, 149, 1004, 978, 146, 898, 68, 900,
4249 93, 94, 145, 997, 97, 98, 99, 100, 146, 102,
4250 972, 1184, 52, 1186, 54, 55, 56, 57, 946, 144,
4251 1003, 144, 1012, 126, 68, 997, 96, 97, 146, 1001,
4252 68, 1086, 1004, 1016, 143, 1007, 145, 54, 55, 148,
4253 57, 146, 66, 1026, 146, 1260, 1029, 64, 65, 777,
4254 778, 1023, 96, 97, 68, 1027, 1066, 146, 96, 97,
4255 1043, 429, 430, 1053, 146, 1075, 146, 1039, 1040, 1041,
4256 438, 52, 146, 1045, 1046, 145, 997, 10, 446, 447,
4257 1090, 52, 96, 97, 8, 146, 1098, 1260, 68, 1262,
4258 1062, 144, 1119, 68, 1066, 119, 1269, 121, 122, 146,
4259 146, 145, 1074, 1075, 1098, 13, 474, 145, 25, 1136,
4260 2, 1094, 4, 17, 144, 1288, 96, 97, 1090, 212,
4261 152, 96, 97, 152, 16, 17, 1098, 146, 146, 1091,
4262 1092, 145, 44, 146, 146, 1145, 126, 1120, 1100, 44,
4263 233, 26, 235, 236, 1116, 128, 239, 150, 241, 15,
4264 1160, 1123, 245, 146, 247, 146, 52, 1140, 1141, 1142,
4265 146, 53, 54, 100, 1176, 145, 131, 260, 146, 262,
4266 145, 100, 146, 1145, 146, 131, 68, 1098, 52, 146,
4267 908, 909, 1176, 68, 912, 146, 146, 68, 1160, 52,
4268 283, 68, 1154, 146, 146, 1209, 1210, 59, 60, 61,
4269 62, 93, 94, 144, 1176, 97, 52, 1169, 151, 1171,
4270 102, 96, 97, 1170, 1169, 96, 97, 149, 1190, 96,
4271 97, 314, 315, 316, 317, 318, 319, 320, 321, 56,
4272 146, 9, 325, 131, 1217, 126, 329, 239, 144, 1211,
4273 1250, 56, 120, 1226, 1170, 1207, 68, 146, 341, 342,
4274 777, 778, 146, 146, 476, 1176, 146, 146, 143, 146,
4275 145, 936, 937, 148, 145, 267, 941, 942, 145, 271,
4276 146, 1243, 77, 1245, 96, 97, 1238, 131, 1250, 146,
4277 148, 1209, 1210, 148, 480, 378, 146, 380, 146, 94,
4278 95, 384, 385, 386, 146, 1023, 146, 146, 146, 1027,
4279 245, 1273, 146, 146, 98, 1277, 89, 400, 823, 100,
4280 656, 1039, 1040, 1041, 1276, 1207, 746, 1045, 1046, 715,
4281 212, 863, 895, 145, 1003, 1255, 1102, 1103, 133, 134,
4282 135, 136, 137, 138, 1062, 825, 571, 1012, 337, 1276,
4283 1039, 233, 1062, 235, 236, 1196, 1196, 239, 1037, 241,
4284 1171, 444, 108, 245, 1091, 247, 515, 101, 657, 658,
4285 77, 52, 731, 54, 55, 56, 57, 58, 260, 1182,
4286 262, -1, 1120, 672, 673, 1177, -1, -1, 1053, -1,
4287 -1, 908, 909, -1, -1, 912, 77, 480, 1116, 52,
4288 689, 54, 55, 56, 57, 1123, -1, -1, -1, 52,
4289 91, 54, 55, 56, 57, 498, -1, 500, -1, -1,
4290 101, -1, 780, 781, -1, -1, 107, 108, 109, 787,
4291 788, -1, 314, 315, 316, 317, 318, 319, 320, 321,
4292 -1, -1, -1, 325, -1, -1, -1, 329, 101, -1,
4293 -1, -1, 133, -1, 107, 136, -1, -1, 450, 341,
4294 -1, -1, -1, 455, -1, -1, 458, 1233, 1234, 461,
4295 -1, -1, 1190, 1239, -1, 1241, 1242, 835, 836, -1,
4296 838, 839, -1, -1, 52, 477, 54, 55, 56, 57,
4297 482, -1, -1, 1211, 577, -1, 378, 580, 380, -1,
4298 583, -1, 384, 385, 386, -1, 1023, -1, -1, -1,
4299 1027, -1, -1, 1279, 1280, 1281, 1282, -1, 400, -1,
4300 -1, -1, 1039, 1040, 1041, 1243, 1292, 1245, 1045, 1046,
4301 -1, -1, 52, 101, 54, 55, 56, 57, 58, -1,
4302 -1, -1, -1, 901, 627, 1062, 629, -1, -1, -1,
4303 -1, 543, 544, -1, 637, 1273, -1, 77, -1, 1277,
4304 -1, -1, 444, -1, 647, -1, 649, 650, 77, 2,
4305 -1, 4, -1, 77, 657, 658, 777, 778, -1, -1,
4306 -1, 101, 940, 16, 17, 94, 95, 579, 108, 109,
4307 94, 95, 40, 41, 42, 43, 44, -1, 480, 1116,
4308 683, -1, -1, -1, -1, -1, 1123, -1, -1, -1,
4309 -1, -1, 695, 133, 972, -1, -1, -1, 500, -1,
4310 53, 54, 131, 132, 133, 134, 135, 136, 137, 138,
4311 134, 135, 136, 137, 138, 68, -1, -1, -1, -1,
4312 -1, -1, -1, -1, -1, -1, -1, 936, 937, -1,
4313 -1, -1, 941, 942, -1, -1, -1, -1, -1, -1,
4314 93, 94, -1, -1, 97, -1, -1, -1, -1, 102,
4315 -1, -1, -1, 1190, -1, -1, -1, -1, -1, -1,
4316 -1, 970, 971, 766, 973, 974, -1, -1, -1, -1,
4317 -1, -1, -1, -1, 1211, 577, -1, -1, -1, -1,
4318 -1, 583, -1, -1, -1, -1, -1, 908, 909, -1,
4319 -1, 912, -1, -1, 52, -1, 54, 55, 56, 57,
4320 58, -1, -1, -1, -1, -1, 1243, 719, 1245, -1,
4321 813, -1, 815, 816, -1, -1, -1, -1, -1, 77,
4322 -1, -1, -1, -1, -1, 627, -1, 629, -1, -1,
4323 -1, -1, -1, -1, -1, 637, 1273, -1, -1, -1,
4324 1277, -1, -1, 101, 1053, 647, -1, 649, 650, 107,
4325 108, 109, -1, -1, -1, 657, 658, -1, -1, 212,
4326 -1, -1, 1071, -1, -1, -1, 52, -1, 54, 55,
4327 56, 57, 58, -1, -1, 133, -1, -1, 136, -1,
4328 233, 683, 235, 236, -1, 888, 239, -1, 241, -1,
4329 148, 77, 245, -1, 247, 898, -1, 900, -1, -1,
4330 -1, 904, 1023, -1, -1, -1, 1027, 260, -1, 262,
4331 822, -1, -1, -1, -1, 101, -1, -1, 1039, 1040,
4332 1041, 107, 108, 109, 1045, 1046, -1, -1, 840, -1,
4333 842, -1, -1, 936, 937, -1, -1, -1, 941, 942,
4334 -1, 1062, 945, 946, -1, -1, -1, 133, -1, 861,
4335 136, -1, -1, -1, -1, -1, -1, 869, 961, -1,
4336 -1, 314, 315, 316, 317, 318, 319, 320, 321, -1,
4337 -1, -1, 325, -1, -1, -1, 329, -1, -1, -1,
4338 52, -1, 54, 55, 56, 57, 58, -1, 341, -1,
4339 -1, -1, -1, -1, 997, 1116, -1, -1, 1001, -1,
4340 -1, 1004, 1123, -1, 1007, 77, -1, -1, -1, 1012,
4341 -1, 813, -1, 815, 816, -1, -1, -1, -1, -1,
4342 -1, -1, 2, -1, 4, 378, -1, 380, -1, 101,
4343 -1, 384, 385, 386, -1, 107, 108, 109, -1, -1,
4344 -1, -1, -1, -1, -1, -1, -1, 400, -1, -1,
4345 1053, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4346 -1, 133, -1, 1066, 136, -1, -1, -1, -1, 1190,
4347 -1, 1074, 1075, 53, 54, -1, -1, 57, -1, -1,
4348 -1, 153, -1, -1, -1, -1, 888, 1090, -1, -1,
4349 1211, 444, -1, -1, -1, 1098, 898, -1, 900, -1,
4350 -1, -1, 904, -1, -1, 85, -1, -1, -1, -1,
4351 -1, -1, -1, -1, -1, -1, -1, -1, 98, 99,
4352 100, -1, 1243, -1, 1245, -1, -1, 480, -1, -1,
4353 -1, -1, 1044, -1, 936, 937, -1, -1, -1, 941,
4354 942, -1, 1145, 945, 946, -1, -1, 500, -1, -1,
4355 -1, -1, 1273, -1, -1, -1, 1277, 1160, -1, 961,
4356 33, 34, 35, 36, -1, -1, 1169, -1, -1, -1,
4357 -1, -1, -1, 1176, -1, -1, 49, 50, 51, -1,
4358 -1, -1, -1, -1, -1, -1, 59, 60, 61, 62,
4359 63, -1, -1, -1, -1, -1, -1, 1109, -1, 1001,
4360 -1, -1, 1004, -1, -1, 1007, 1209, 1210, -1, -1,
4361 1012, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4362 -1, -1, -1, -1, 577, 1137, 1138, 1139, -1, -1,
4363 583, -1, 212, -1, -1, -1, -1, 110, 111, 112,
4364 113, 114, 115, 116, 117, 118, -1, 1250, -1, -1,
4365 -1, 1053, -1, -1, -1, -1, -1, -1, -1, -1,
4366 -1, -1, -1, -1, 1066, 245, 139, 247, -1, -1,
4367 777, 778, 1074, 1075, 627, -1, 629, -1, -1, -1,
4368 260, -1, 262, -1, 637, -1, -1, -1, 1090, -1,
4369 -1, -1, -1, -1, 647, -1, 649, 650, -1, -1,
4370 -1, -1, -1, 283, 657, 658, -1, -1, -1, -1,
4371 -1, -1, -1, 2, -1, 4, -1, -1, 77, 78,
4372 79, 80, 81, 82, 83, 84, -1, 86, 87, -1,
4373 683, -1, -1, -1, 314, 94, 95, -1, -1, 319,
4374 -1, -1, -1, 1145, -1, 325, -1, -1, -1, 329,
4375 -1, -1, -1, -1, -1, -1, -1, -1, 1160, -1,
4376 -1, 341, 342, 25, 53, 54, -1, 1169, 57, -1,
4377 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4378 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4379 -1, -1, -1, -1, -1, -1, 85, -1, -1, -1,
4380 380, 908, 909, -1, 384, 912, 386, 1209, 1210, 98,
4381 99, 100, 101, -1, -1, 77, 78, 79, 80, 81,
4382 82, 83, 84, 85, 86, 87, 88, 89, 2, -1,
4383 4, -1, 94, 95, -1, -1, -1, -1, 100, -1,
4384 -1, -1, -1, -1, -1, -1, -1, -1, 1250, -1,
4385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4386 813, -1, 815, 816, -1, 127, -1, 129, 130, 131,
4387 132, 133, 134, 135, 136, 137, 138, -1, -1, 53,
4388 54, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4390 480, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4391 -1, -1, -1, -1, -1, -1, 1023, -1, 498, -1,
4392 1027, -1, -1, 212, 98, -1, -1, -1, -1, -1,
4393 -1, -1, 1039, 1040, 1041, 888, -1, -1, 1045, 1046,
4394 -1, -1, -1, -1, -1, 898, -1, 900, -1, -1,
4395 -1, 904, -1, -1, -1, 1062, 245, -1, 247, -1,
4396 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4397 -1, 260, -1, 262, -1, -1, -1, -1, -1, -1,
4398 -1, -1, -1, 936, 937, -1, -1, -1, 941, 942,
4399 -1, -1, 945, 946, 283, -1, -1, 777, 778, -1,
4400 580, -1, -1, 583, -1, -1, -1, -1, 961, 1116,
4401 2, -1, 4, -1, -1, -1, 1123, -1, -1, -1,
4402 -1, -1, -1, -1, -1, 314, -1, -1, -1, -1,
4403 319, -1, -1, -1, -1, -1, 325, -1, 212, -1,
4404 329, -1, -1, -1, -1, -1, -1, 627, 1001, 629,
4405 -1, 1004, 341, 342, 1007, -1, -1, -1, -1, 1012,
4406 -1, 53, 54, -1, -1, -1, 777, 778, -1, 649,
4407 -1, 245, -1, 247, -1, -1, -1, 657, 658, -1,
4408 -1, -1, -1, 1190, -1, -1, 260, -1, 262, -1,
4409 -1, 380, -1, -1, -1, 384, -1, 386, -1, -1,
4410 1053, -1, -1, -1, 1211, -1, -1, -1, -1, -1,
4411 -1, -1, -1, 1066, -1, 695, -1, -1, -1, -1,
4412 -1, 1074, 1075, -1, 704, -1, -1, -1, 908, 909,
4413 -1, -1, 912, -1, -1, -1, 1243, 1090, 1245, -1,
4414 314, -1, -1, -1, -1, 319, 33, 34, 35, 36,
4415 -1, 325, -1, -1, -1, 329, -1, -1, -1, -1,
4416 -1, -1, 49, 50, 51, 52, 1273, 341, -1, 56,
4417 1277, -1, 59, 60, 61, 62, 63, -1, -1, -1,
4418 -1, -1, -1, -1, -1, -1, 766, -1, -1, -1,
4419 -1, 480, 1145, -1, -1, -1, -1, 908, 909, -1,
4420 -1, 912, -1, 90, 91, -1, 380, 1160, -1, 498,
4421 384, 98, 386, -1, 101, -1, 1169, 104, 105, -1,
4422 212, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4423 117, 118, -1, 813, -1, -1, 816, -1, -1, -1,
4424 -1, -1, -1, 1023, -1, 132, -1, 1027, -1, -1,
4425 -1, -1, 139, 245, -1, 247, 1209, 1210, -1, 1039,
4426 1040, 1041, -1, -1, -1, 1045, 1046, -1, 260, -1,
4427 262, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4428 -1, -1, 1062, -1, -1, -1, -1, -1, -1, -1,
4429 -1, 580, -1, -1, -1, -1, -1, 1250, -1, -1,
4430 -1, -1, -1, -1, -1, -1, 480, -1, 888, -1,
4431 -1, -1, 1023, -1, -1, -1, 1027, -1, 898, -1,
4432 900, -1, 314, -1, -1, -1, -1, 319, 1039, 1040,
4433 1041, -1, -1, 325, 1045, 1046, 1116, 329, 627, -1,
4434 629, -1, -1, 1123, -1, -1, -1, -1, -1, 341,
4435 -1, 1062, -1, -1, -1, -1, 936, 937, -1, -1,
4436 649, 941, 942, -1, -1, 945, -1, -1, -1, -1,
4437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4438 -1, 961, 777, 778, -1, -1, -1, -1, 380, -1,
4439 -1, -1, 384, -1, 386, -1, -1, -1, -1, -1,
4440 -1, -1, -1, -1, -1, 1116, 695, -1, -1, 583,
4441 1190, -1, 1123, -1, -1, -1, -1, 997, -1, -1,
4442 -1, 1001, -1, -1, 1004, -1, -1, 1007, -1, -1,
4443 -1, 1211, 1012, -1, -1, -1, -1, -1, -1, -1,
4444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4445 -1, -1, -1, 627, -1, 629, -1, -1, -1, -1,
4446 -1, -1, -1, 1243, -1, 1245, -1, -1, -1, -1,
4447 -1, -1, -1, 1053, -1, 649, -1, 766, -1, 1190,
4448 -1, -1, -1, 657, 658, -1, 1066, -1, 480, 777,
4449 778, -1, -1, 1273, 1074, 1075, -1, 1277, -1, -1,
4450 1211, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4451 1090, -1, -1, 908, 909, -1, -1, 912, 1098, -1,
4452 -1, -1, -1, -1, 813, -1, -1, 816, -1, -1,
4453 -1, -1, 1243, 0, 1245, 56, -1, -1, -1, -1,
4454 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4455 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
4456 27, -1, 1273, -1, -1, 1145, 1277, -1, -1, -1,
4457 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4458 1160, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4459 -1, 583, -1, -1, -1, -1, 1176, -1, -1, 888,
4460 -1, 68, -1, -1, -1, -1, -1, -1, -1, 898,
4461 -1, 900, -1, -1, -1, -1, -1, -1, -1, -1,
4462 908, 909, -1, -1, 912, -1, -1, -1, 1023, 96,
4463 97, -1, 1027, -1, -1, 627, -1, 629, -1, 813,
4464 -1, -1, 816, -1, 1039, 1040, 1041, -1, -1, -1,
4465 1045, 1046, -1, 120, -1, -1, 945, 649, -1, -1,
4466 -1, -1, -1, -1, -1, 657, 658, 1062, -1, -1,
4467 1250, -1, 961, -1, -1, -1, 143, 144, -1, -1,
4468 -1, 148, 149, -1, 151, -1, 153, -1, -1, 210,
4469 -1, -1, 213, 214, 215, -1, -1, -1, -1, -1,
4470 -1, -1, -1, -1, -1, -1, -1, -1, 997, -1,
4471 -1, -1, 1001, -1, 888, 1004, -1, -1, 1007, -1,
4472 -1, 1116, -1, -1, 898, -1, 900, -1, 1123, -1,
4473 -1, -1, -1, -1, -1, 1023, -1, -1, -1, 1027,
4474 -1, -1, 777, 778, -1, -1, -1, -1, -1, -1,
4475 -1, 1039, 1040, 1041, -1, -1, -1, 1045, 1046, -1,
4476 -1, -1, 936, 937, -1, -1, -1, 941, 942, -1,
4477 -1, 945, -1, -1, 1062, -1, -1, 1066, -1, 16,
4478 17, -1, -1, -1, -1, 1074, 1075, 961, -1, -1,
4479 -1, -1, -1, -1, -1, 1190, -1, -1, -1, -1,
4480 -1, 1090, -1, -1, -1, -1, -1, -1, -1, 1098,
4481 -1, 48, 49, 50, 51, -1, 1211, -1, 55, 56,
4482 -1, 813, -1, 997, 816, -1, -1, 1001, 1116, -1,
4483 1004, 68, 69, 1007, -1, 1123, -1, -1, 1012, -1,
4484 -1, -1, -1, -1, -1, -1, -1, -1, 1243, -1,
4485 1245, -1, -1, -1, -1, -1, 1145, -1, -1, -1,
4486 -1, -1, -1, -1, -1, 102, -1, -1, -1, -1,
4487 -1, 1160, -1, 908, 909, -1, -1, 912, 1273, 1053,
4488 -1, -1, 1277, -1, -1, -1, -1, 1176, -1, -1,
4489 -1, -1, 1066, -1, -1, -1, 888, -1, -1, -1,
4490 1074, 1075, 1190, -1, -1, -1, 898, -1, 900, -1,
4491 -1, -1, -1, -1, -1, -1, 1090, -1, 439, 440,
4492 -1, -1, -1, 1211, -1, -1, -1, 448, -1, -1,
4493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4494 -1, -1, -1, -1, 936, 937, -1, -1, -1, 941,
4495 942, -1, -1, 945, -1, 1243, -1, 1245, -1, -1,
4496 -1, 1250, -1, -1, 485, -1, -1, 488, -1, 961,
4497 -1, 1145, -1, 210, -1, -1, 213, 214, 215, -1,
4498 217, -1, -1, -1, -1, 1273, 1160, -1, 1023, 1277,
4499 -1, -1, 1027, -1, -1, -1, 233, -1, 235, 236,
4500 -1, -1, -1, -1, 1039, 1040, 1041, -1, -1, 1001,
4501 1045, 1046, 1004, -1, -1, 1007, -1, -1, -1, -1,
4502 1012, -1, -1, -1, -1, -1, -1, 1062, -1, 550,
4503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4505 -1, -1, -1, -1, -1, -1, 577, -1, -1, -1,
4506 -1, 1053, 583, -1, -1, -1, -1, -1, -1, -1,
4507 -1, -1, -1, -1, 1066, -1, 1250, -1, -1, -1,
4508 -1, 1116, 1074, 1075, -1, -1, -1, -1, 1123, -1,
4509 -1, -1, -1, -1, -1, -1, -1, -1, 1090, -1,
4510 -1, -1, -1, -1, -1, -1, -1, -1, -1, 346,
4511 347, 348, 349, 350, -1, -1, 353, 354, 355, 356,
4512 357, 358, 359, 360, -1, 362, -1, -1, 365, 366,
4513 367, 368, 369, 370, 371, 372, 373, 374, -1, 660,
4514 -1, 378, 663, -1, -1, -1, -1, -1, -1, -1,
4515 -1, -1, -1, 1145, -1, 1190, -1, 678, -1, 680,
4516 -1, -1, -1, -1, -1, -1, -1, -1, 1160, -1,
4517 -1, -1, -1, -1, -1, -1, 1211, -1, -1, -1,
4518 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4520 -1, -1, 439, 440, -1, -1, 727, 444, 1243, -1,
4521 1245, 448, -1, -1, -1, -1, -1, 454, -1, -1,
4522 -1, -1, -1, -1, 745, -1, -1, -1, -1, -1,
4523 -1, -1, 469, -1, -1, -1, -1, 758, 1273, -1,
4524 -1, -1, 1277, -1, -1, -1, -1, -1, 485, -1,
4525 -1, 488, -1, -1, -1, -1, -1, -1, 1250, -1,
4526 -1, -1, -1, 500, -1, 786, -1, -1, -1, -1,
4527 -1, 33, 34, 35, 36, -1, -1, -1, -1, -1,
4528 517, -1, -1, -1, -1, 806, -1, 49, 50, 51,
4529 52, -1, -1, -1, 56, -1, -1, 59, 60, 61,
4530 62, 63, -1, -1, -1, 77, 78, 79, 80, 81,
4531 82, 83, -1, 550, 86, 87, -1, -1, -1, -1,
4532 -1, -1, 94, 95, -1, 562, -1, -1, 90, 91,
4533 567, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4534 577, -1, 104, 105, -1, 107, 583, -1, 110, 111,
4535 112, 113, 114, 115, 116, 117, 118, 129, 130, 131,
4536 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4537 132, -1, -1, -1, -1, -1, 897, 139, -1, -1,
4538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4539 -1, 153, -1, -1, -1, -1, -1, -1, -1, -1,
4540 637, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4541 647, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4542 657, 658, -1, 660, 661, -1, 663, -1, -1, -1,
4543 -1, -1, -1, -1, 955, 672, 673, -1, -1, -1,
4544 -1, 678, -1, 680, -1, -1, -1, -1, 33, 34,
4545 35, 36, 689, -1, -1, 976, -1, -1, -1, -1,
4546 -1, -1, -1, -1, 49, 50, 51, 52, -1, -1,
4547 -1, 56, -1, 58, 59, 60, 61, 62, 63, -1,
4548 -1, -1, -1, -1, -1, -1, -1, 1008, -1, -1,
4549 727, -1, 77, -1, -1, -1, -1, -1, -1, -1,
4550 -1, -1, -1, -1, -1, 90, 91, -1, 745, -1,
4551 -1, -1, -1, 98, -1, -1, 101, -1, -1, 104,
4552 105, 758, 107, 108, -1, 110, 111, 112, 113, 114,
4553 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4554 -1, -1, -1, -1, 1065, -1, -1, 132, -1, 786,
4555 -1, -1, -1, -1, 139, -1, -1, -1, -1, -1,
4556 -1, -1, -1, -1, -1, -1, -1, -1, -1, 806,
4557 -1, -1, -1, 0, 1, -1, 3, 4, 5, 6,
4558 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4559 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4560 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4561 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4562 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4563 57, 1152, 59, 60, 61, 62, 63, 64, 65, -1,
4564 -1, -1, -1, -1, 881, -1, -1, -1, 75, 76,
4565 -1, -1, -1, -1, -1, 892, -1, -1, -1, -1,
4566 897, -1, -1, 90, 91, 902, -1, 904, -1, -1,
4567 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4568 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4569 117, 118, -1, -1, -1, -1, -1, -1, 935, 936,
4570 937, -1, -1, -1, 941, 942, -1, -1, -1, -1,
4571 -1, -1, 139, 140, 141, -1, -1, -1, 955, -1,
4572 -1, -1, -1, -1, 151, -1, 153, -1, -1, -1,
4573 -1, -1, -1, 970, 971, -1, 973, 974, -1, 976,
4574 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4575 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
4576 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
4577 -1, 1008, 13, 14, 15, 1012, 17, -1, -1, -1,
4578 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
4579 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4580 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4581 -1, -1, -1, -1, -1, -1, 1053, -1, -1, -1,
4582 -1, -1, -1, -1, -1, -1, -1, 68, 1065, -1,
4583 -1, -1, -1, -1, 1071, -1, 77, 78, 79, 80,
4584 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4585 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4586 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
4587 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4588 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
4589 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4590 -1, -1, 143, 144, 145, 146, -1, -1, 149, 150,
4591 151, 0, 153, -1, -1, 1152, -1, -1, -1, 8,
4592 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4593 -1, -1, 1169, 44, -1, -1, 25, -1, 27, 28,
4594 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4595 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4596 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4597 81, 82, 83, 84, 85, 86, 87, 88, 89, 68,
4598 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4599 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4600 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4601 99, 100, -1, -1, -1, -1, 127, 106, 129, 130,
4602 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4603 -1, 120, -1, -1, 123, 146, -1, 126, 127, 128,
4604 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4605 -1, -1, -1, -1, -1, 144, 145, 146, 0, -1,
4606 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4607 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4608 44, -1, -1, 25, -1, 27, 28, 29, -1, -1,
4609 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4610 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4611 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4612 84, 85, 86, 87, 88, 89, 68, -1, -1, -1,
4613 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
4614 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4615 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
4616 -1, -1, -1, 127, 106, 129, 130, 131, 132, 133,
4617 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
4618 -1, 123, -1, -1, 126, 127, 128, 129, 130, 131,
4619 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4620 -1, -1, 144, 145, 146, 0, -1, 149, 150, 151,
4621 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4622 15, -1, 17, -1, -1, -1, -1, 44, -1, -1,
4623 25, 26, 27, 28, 29, -1, -1, -1, -1, -1,
4624 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4626 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4627 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
4628 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4629 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4630 95, 96, 97, -1, -1, 100, -1, -1, -1, -1,
4631 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
4632 137, 138, -1, -1, -1, 120, -1, -1, 123, -1,
4633 -1, -1, 127, 128, 129, 130, 131, 132, 133, 134,
4634 135, 136, 137, 138, -1, -1, -1, -1, 143, 144,
4635 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
4636 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
4637 -1, -1, -1, -1, 44, -1, -1, 25, 26, 27,
4638 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
4639 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4640 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4641 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4642 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
4643 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4644 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4645 -1, -1, 100, -1, -1, -1, -1, 127, 106, 129,
4646 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4647 -1, -1, 120, -1, -1, 123, -1, -1, -1, 127,
4648 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4649 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4650 -1, 149, 150, 151, -1, 153, -1, 8, 9, 10,
4651 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4652 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
4653 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4654 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4655 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4656 83, 84, 85, 86, 87, 88, 89, 68, -1, -1,
4657 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
4658 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4659 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4660 -1, -1, -1, -1, 127, 106, 129, 130, 131, 132,
4661 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
4662 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
4663 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4664 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
4665 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
4666 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4667 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
4668 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4669 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4670 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4671 86, 87, 88, 89, 68, -1, -1, -1, 94, 95,
4672 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4673 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4674 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
4675 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
4676 136, 137, 138, -1, -1, -1, 120, -1, -1, -1,
4677 -1, -1, -1, 127, -1, 129, 130, 131, 132, 133,
4678 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
4679 144, 145, 146, 0, 148, 149, 150, 151, -1, 153,
4680 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4681 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4682 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
4683 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4684 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4685 79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
4686 -1, 68, -1, -1, -1, 94, 95, -1, -1, -1,
4687 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4688 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4689 97, -1, -1, 100, -1, -1, -1, -1, -1, 106,
4690 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4691 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
4692 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
4693 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4694 0, -1, 149, 150, 151, -1, 153, -1, 8, 9,
4695 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
4696 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
4697 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
4698 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4700 -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
4701 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4702 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4703 -1, -1, -1, -1, 94, 95, 96, 97, -1, -1,
4704 100, -1, -1, -1, -1, -1, 106, -1, -1, -1,
4705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4706 120, -1, -1, -1, -1, -1, -1, 127, -1, 129,
4707 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4708 -1, -1, -1, 143, 144, 145, 146, 0, 148, 149,
4709 150, 151, -1, 153, -1, 8, 9, 10, -1, -1,
4710 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
4711 -1, -1, 25, -1, 27, 28, -1, -1, -1, -1,
4712 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4713 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4715 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
4716 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4717 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4718 -1, 94, 95, 96, 97, -1, -1, 100, -1, -1,
4719 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
4720 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
4721 -1, -1, -1, -1, 127, -1, 129, 130, 131, 132,
4722 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4723 -1, 144, 145, 146, 0, 148, 149, 150, 151, -1,
4724 153, -1, 8, 9, 10, -1, -1, -1, 14, 15,
4725 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4726 26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4727 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4728 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4729 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4730 -1, -1, 68, 94, 95, -1, -1, -1, -1, -1,
4731 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4732 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4733 96, 97, -1, 99, 100, -1, 127, -1, 129, 130,
4734 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4735 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4736 126, 127, 153, 129, 130, 131, 132, 133, 134, 135,
4737 136, 137, 138, -1, -1, -1, -1, 143, 144, 145,
4738 146, 0, -1, 149, -1, 151, -1, 153, -1, 8,
4739 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
4740 -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
4741 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4742 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4744 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4745 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4746 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4747 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4748 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
4749 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4750 -1, 120, -1, -1, -1, -1, -1, 126, 127, -1,
4751 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4752 -1, -1, -1, -1, 143, 144, 145, 146, 0, -1,
4753 149, -1, 151, -1, 153, -1, 8, 9, 10, -1,
4754 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
4755 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
4756 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4757 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4759 -1, -1, -1, -1, -1, -1, 68, -1, -1, -1,
4760 -1, -1, -1, -1, -1, 77, 78, 79, 80, 81,
4761 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4762 -1, -1, 94, 95, 96, 97, -1, 99, 100, -1,
4763 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4764 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
4765 -1, -1, -1, -1, 126, 127, -1, 129, 130, 131,
4766 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4767 -1, -1, 144, 145, 146, 0, -1, 149, -1, 151,
4768 -1, 153, -1, 8, 9, 10, -1, -1, -1, 14,
4769 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4770 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4771 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4774 -1, -1, -1, 68, -1, -1, -1, -1, -1, -1,
4775 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4776 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4777 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
4778 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4779 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
4780 -1, 126, 127, -1, 129, 130, 131, 132, 133, 134,
4781 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4782 145, 146, -1, -1, 149, -1, 151, 1, 153, 3,
4783 4, 5, 6, 7, 8, 9, 10, 11, 12, -1,
4784 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
4785 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4786 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4787 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4788 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4789 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4790 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4791 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4792 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4793 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4794 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4796 -1, -1, -1, -1, -1, 139, 140, 141, -1, -1,
4797 -1, -1, -1, -1, -1, -1, -1, 151, 1, 153,
4798 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
4799 -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
4800 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
4801 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
4802 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
4803 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
4804 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
4805 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
4806 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
4807 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
4808 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
4809 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
4810 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4811 -1, -1, -1, -1, -1, -1, 139, 140, 141, -1,
4812 -1, -1, -1, -1, -1, -1, -1, -1, 151, 1,
4813 153, 3, 4, 5, 6, 7, -1, -1, 10, 11,
4814 12, -1, -1, 15, 16, 17, 18, 19, 20, 21,
4815 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
4816 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4817 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
4818 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
4819 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4820 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4821 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4822 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4823 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
4824 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4825 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4826 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
4827 -1, -1, -1, -1, -1, -1, -1, -1, -1, 151,
4828 1, 153, 3, 4, 5, 6, 7, -1, -1, 10,
4829 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
4830 21, 22, 23, 24, 25, -1, -1, -1, -1, 30,
4831 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
4832 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
4833 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
4834 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
4835 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
4836 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
4837 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
4838 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
4839 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
4840 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4841 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
4842 141, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4843 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
4844 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
4845 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
4846 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4847 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
4848 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4849 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4850 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4851 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4852 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4853 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4854 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4855 -1, -1, -1, -1, -1, -1, -1, 1, -1, 3,
4856 4, 5, 6, 7, -1, 9, 10, 11, 12, 139,
4857 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4858 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
4859 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4860 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4861 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4862 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4863 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4864 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4865 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4866 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4867 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4868 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
4869 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4870 18, 19, 20, 21, 22, 23, 24, 151, -1, 153,
4871 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4872 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4873 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4874 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4875 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4877 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4878 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4879 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4880 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4881 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4882 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
4883 -1, 149, -1, 151, 1, 153, 3, 4, 5, 6,
4884 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
4885 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4886 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4887 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4888 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4889 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4890 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4891 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4892 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4893 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4894 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4895 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4896 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4897 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4898 -1, -1, 149, -1, 151, 1, 153, 3, 4, 5,
4899 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
4900 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4901 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4902 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4903 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4904 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4905 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4906 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4907 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4908 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4909 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4910 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4912 -1, -1, -1, 139, 140, 141, -1, -1, 144, -1,
4913 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
4914 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
4915 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4916 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
4917 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
4918 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4919 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4920 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4921 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
4922 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
4923 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
4924 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
4925 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
4926 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4927 -1, -1, -1, -1, 139, 140, 141, -1, -1, 144,
4928 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
4929 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
4930 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
4931 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
4932 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4933 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4934 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4935 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4936 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
4937 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
4938 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
4939 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
4940 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
4941 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
4942 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
4943 18, 19, 20, 21, 22, 23, 24, 151, -1, 153,
4944 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4945 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4946 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4947 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4948 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4950 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4951 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4952 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4953 118, -1, 120, -1, -1, -1, -1, -1, -1, -1,
4954 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
4955 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
4956 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
4957 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
4958 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
4959 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4960 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
4961 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
4962 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
4963 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
4964 102, -1, 104, 105, -1, 107, 108, 109, 110, 111,
4965 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
4966 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
4967 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
4968 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
4969 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
4970 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
4971 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
4972 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4973 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4974 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4975 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4976 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4977 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
4978 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4979 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
4980 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
4981 20, 21, 22, 23, 24, 151, -1, 153, -1, -1,
4982 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4983 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
4984 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4985 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
4986 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4988 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4989 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
4990 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4991 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
4992 4, 5, 6, 7, -1, -1, -1, 11, 12, 139,
4993 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
4994 24, -1, -1, 153, -1, -1, 30, 31, 32, 33,
4995 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
4996 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
4997 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
4998 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
4999 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
5000 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
5001 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5002 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
5003 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5004 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
5005 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
5006 18, 19, 20, 21, 22, 23, 24, 151, -1, -1,
5007 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5008 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5009 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5010 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5011 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5012 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5013 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5014 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5015 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5016 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5017 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5018 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
5019 -1, -1, -1, 151, 3, 4, 5, 6, 7, 8,
5020 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
5021 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
5022 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5023 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5024 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5025 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5026 -1, -1, -1, -1, -1, -1, 75, 76, 77, 78,
5027 79, 80, 81, 82, 83, -1, -1, 86, 87, -1,
5028 -1, -1, -1, 92, 93, 94, 95, -1, -1, -1,
5029 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
5030 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5031 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5032 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
5033 -1, 140, 141, -1, -1, -1, -1, -1, 147, 148,
5034 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5035 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5036 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5037 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5038 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5039 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5041 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
5042 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
5043 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
5044 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
5045 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5046 -1, -1, -1, -1, -1, -1, 129, 130, 131, 132,
5047 133, 134, 135, 136, 137, 138, -1, 140, 141, -1,
5048 -1, -1, -1, -1, 147, 3, 4, 5, 6, 7,
5049 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5050 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5051 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5052 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5053 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
5054 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5055 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
5056 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
5057 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
5058 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
5059 108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
5060 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5061 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
5062 138, -1, 140, 141, -1, -1, -1, -1, -1, 147,
5063 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5064 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5065 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5066 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5067 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5068 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
5069 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5070 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
5071 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
5072 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
5073 -1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
5074 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5075 -1, -1, -1, -1, -1, -1, 129, 130, 131, 132,
5076 133, 134, 135, 136, 137, 138, -1, 140, 141, -1,
5077 -1, -1, -1, -1, 147, 3, 4, 5, 6, 7,
5078 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5079 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5080 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5081 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5082 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
5083 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5084 -1, -1, -1, -1, -1, -1, -1, 75, 76, 77,
5085 78, 79, 80, 81, 82, 83, -1, -1, 86, 87,
5086 -1, -1, -1, -1, 92, 93, 94, 95, -1, -1,
5087 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
5088 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5089 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5090 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
5091 138, -1, 140, 141, 3, 4, 5, -1, 7, 147,
5092 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5093 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5094 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5095 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5096 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5097 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5099 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5100 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
5101 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5102 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5104 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5105 139, 11, 12, -1, -1, -1, 16, 146, 18, 19,
5106 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5107 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5108 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5109 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5110 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5111 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5112 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5113 -1, -1, -1, -1, -1, -1, -1, -1, 98, -1,
5114 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
5115 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
5116 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5117 -1, -1, 3, 4, 5, 6, 7, -1, -1, 139,
5118 11, 12, -1, -1, -1, 16, 146, 18, 19, 20,
5119 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5120 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5121 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5122 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5123 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5124 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5125 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5126 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5127 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5128 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5129 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5130 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5131 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5132 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5133 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5134 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5135 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5136 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5137 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5138 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5139 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5140 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
5141 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5142 -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
5143 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5144 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5145 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5146 39, -1, -1, -1, -1, -1, 45, 46, -1, 48,
5147 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5148 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5149 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5150 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5151 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5152 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5153 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5154 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5155 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5156 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5157 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5158 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5159 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5160 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5161 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5162 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5163 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5164 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5165 -1, 104, 105, -1, 107, 108, 109, 110, 111, 112,
5166 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5167 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5168 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5169 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5170 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5171 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5172 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5173 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5174 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5176 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5177 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5178 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
5179 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5180 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5181 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5182 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5183 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5184 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5185 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5186 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5187 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5188 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5189 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5190 101, 102, -1, 104, 105, -1, 107, 108, 109, 110,
5191 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5192 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5193 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5194 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5195 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5196 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5197 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5198 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5199 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5200 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5201 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5202 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5203 105, -1, 107, 108, -1, 110, 111, 112, 113, 114,
5204 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5205 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5206 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5207 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5208 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5209 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5210 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5211 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5212 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5213 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5214 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5215 -1, -1, 101, 102, -1, 104, 105, -1, -1, 108,
5216 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5217 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5218 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5219 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5220 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5221 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5222 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5223 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5224 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5225 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5226 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5227 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5228 -1, 104, 105, -1, 107, 108, -1, 110, 111, 112,
5229 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5230 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5231 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5232 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5233 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5234 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5235 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5236 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5237 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5239 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5240 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5241 -1, 108, -1, 110, 111, 112, 113, 114, 115, 116,
5242 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5243 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5244 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5245 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5246 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5247 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5248 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5249 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5250 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5251 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5252 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5253 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5254 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5255 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5256 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5257 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5258 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5259 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5260 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5261 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5262 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5263 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5264 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5265 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5266 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5267 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5268 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5269 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5270 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5271 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5272 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5273 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5274 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5275 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5277 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5278 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5279 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5280 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5281 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5282 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5283 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5284 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5285 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5286 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5287 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5288 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5289 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5290 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5291 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5292 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5293 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5294 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5295 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5296 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5297 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5298 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5299 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5300 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5302 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5303 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5304 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5305 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5306 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5307 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5308 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5309 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5310 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5311 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5312 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5313 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5314 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5315 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5316 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5317 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5318 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5319 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5320 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5321 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5322 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5323 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5324 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5325 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5326 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5327 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5328 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5329 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5330 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5331 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5332 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5333 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5334 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5335 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5336 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5337 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5338 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5339 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5340 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5341 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5342 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5344 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5345 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5346 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5347 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5348 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5349 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5350 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5351 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5353 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5354 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5355 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5356 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5357 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5358 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5359 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5360 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5361 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5362 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5363 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5364 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5365 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5366 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5367 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5368 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5369 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
5370 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5371 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5372 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5373 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5374 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5377 -1, -1, -1, -1, -1, 94, -1, -1, -1, 98,
5378 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5379 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5380 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5381 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5382 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5383 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5384 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5385 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5386 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5387 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5390 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5391 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5392 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5393 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5394 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5395 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5396 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5397 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5398 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5399 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5402 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5403 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5404 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5405 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5406 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5407 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5408 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5409 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5410 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5411 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5414 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5415 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5416 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5417 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5418 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5419 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5420 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5421 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5422 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5423 61, 62, 63, 64, 65, 33, 34, 35, 36, -1,
5424 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5425 -1, 49, 50, 51, 52, -1, -1, -1, 56, -1,
5426 -1, 59, 60, 61, 62, 63, -1, 98, -1, -1,
5427 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5428 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5429 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5430 98, -1, -1, 101, -1, -1, 104, 105, 139, 107,
5431 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5432 118, 33, 34, 35, 36, -1, -1, -1, -1, -1,
5433 -1, -1, -1, -1, 132, -1, -1, 49, 50, 51,
5434 52, 139, -1, -1, 56, -1, -1, 59, 60, 61,
5435 62, 63, -1, -1, -1, -1, -1, -1, -1, -1,
5436 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5437 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5438 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5439 -1, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5440 112, 113, 114, 115, 116, 117, 118, 52, 53, -1,
5441 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
5442 132, -1, -1, -1, -1, -1, -1, 139, -1, -1,
5443 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5444 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5445 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5446 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5448 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5449 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5450 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5452 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5453 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5454 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5455 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5457 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5458 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5459 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5461 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5462 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5463 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5464 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5465 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5466 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5467 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5468 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5470 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5471 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5472 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5473 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5475 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5476 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5477 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5478 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5479 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5480 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5481 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5482 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5483 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5484 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5485 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5486 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5487 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5488 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5489 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5490 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5491 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5493 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5494 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5495 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5496 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5497 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5498 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5499 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5500 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5502 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5503 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5504 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5506 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5507 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5508 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5509 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5511 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5512 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5513 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5515 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5516 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5517 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5518 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5520 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5521 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5522 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5523 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5524 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5525 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5526 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5527 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5528 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5529 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5530 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5531 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5533 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5534 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5535 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5536 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5537 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5538 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5539 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5540 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5541 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5542 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5543 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5544 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5545 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5546 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5547 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5548 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5549 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5551 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5552 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5553 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5554 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5555 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5556 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5557 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5558 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5559 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5560 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5561 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5562 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5563 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5564 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5565 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5566 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5567 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5568 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5569 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5570 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5571 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5572 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5574 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5575 135, 136, 137, 138, -1, 140, 141, 52, 53, -1,
5576 -1, 56, 147, 148, -1, -1, -1, -1, -1, -1,
5577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5578 75, 76, 77, 78, 79, 80, 81, 82, 83, -1,
5579 -1, 86, 87, -1, -1, -1, -1, 92, 93, 94,
5580 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5581 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
5582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5583 -1, -1, -1, -1, 129, 130, 131, 132, 133, 134,
5584 135, 136, 137, 138, -1, 140, 141, -1, -1, -1,
5592 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
5593 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
5594 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
5595 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5596 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
5597 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
5598 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
5599 157, 158, 159, 167, 169, 171, 179, 180, 186, 187,
5600 189, 190, 191, 193, 194, 195, 197, 198, 207, 210,
5601 226, 236, 237, 238, 239, 240, 241, 242, 243, 244,
5602 245, 246, 255, 275, 283, 284, 335, 336, 337, 338,
5603 339, 340, 341, 344, 346, 347, 361, 362, 364, 365,
5604 366, 367, 368, 369, 370, 371, 409, 423, 159, 3,
5605 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
5606 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
5607 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
5608 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
5609 52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
5610 82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
5611 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
5612 140, 141, 147, 201, 202, 203, 205, 206, 361, 39,
5613 58, 98, 101, 107, 108, 109, 112, 140, 190, 198,
5614 207, 212, 218, 221, 223, 236, 367, 368, 370, 371,
5615 407, 408, 218, 148, 219, 220, 148, 215, 219, 148,
5616 153, 416, 54, 202, 416, 143, 160, 143, 21, 22,
5617 31, 32, 189, 207, 236, 255, 207, 207, 207, 56,
5618 1, 47, 101, 163, 164, 165, 167, 192, 193, 423,
5619 167, 228, 213, 223, 407, 423, 212, 406, 407, 423,
5620 46, 98, 139, 146, 179, 180, 197, 226, 236, 367,
5621 368, 371, 276, 54, 55, 57, 201, 350, 363, 350,
5622 351, 352, 152, 152, 152, 152, 366, 186, 207, 207,
5623 151, 153, 415, 421, 422, 40, 41, 42, 43, 44,
5624 37, 38, 148, 374, 375, 376, 377, 423, 374, 376,
5625 26, 143, 215, 219, 247, 285, 28, 248, 282, 126,
5626 146, 101, 107, 194, 126, 25, 77, 78, 79, 80,
5627 81, 82, 83, 84, 85, 86, 87, 88, 89, 94,
5628 95, 100, 127, 129, 130, 131, 132, 133, 134, 135,
5629 136, 137, 138, 209, 209, 68, 96, 97, 145, 413,
5630 227, 171, 182, 182, 183, 184, 183, 182, 415, 422,
5631 98, 191, 198, 236, 260, 367, 368, 371, 52, 56,
5632 94, 98, 199, 200, 236, 367, 368, 371, 200, 33,
5633 34, 35, 36, 49, 50, 51, 52, 56, 148, 178,
5634 201, 369, 404, 218, 97, 413, 414, 285, 338, 99,
5635 99, 146, 212, 56, 212, 212, 212, 350, 126, 100,
5636 146, 222, 423, 97, 145, 413, 99, 99, 146, 222,
5637 218, 416, 417, 218, 91, 217, 218, 223, 381, 407,
5638 423, 171, 417, 171, 54, 64, 65, 168, 148, 208,
5639 157, 163, 97, 413, 99, 167, 166, 192, 149, 415,
5640 422, 417, 229, 417, 150, 146, 153, 420, 146, 420,
5641 144, 420, 416, 56, 366, 194, 196, 375, 146, 97,
5642 145, 413, 277, 66, 119, 121, 122, 353, 119, 119,
5643 353, 67, 353, 342, 348, 345, 349, 77, 151, 159,
5644 182, 182, 182, 182, 167, 171, 171, 52, 54, 55,
5645 56, 57, 58, 77, 91, 101, 107, 108, 109, 133,
5646 136, 265, 378, 380, 381, 382, 383, 384, 385, 386,
5647 387, 388, 391, 392, 393, 394, 395, 398, 399, 400,
5648 401, 402, 126, 161, 163, 380, 386, 126, 161, 286,
5649 287, 106, 188, 290, 291, 290, 70, 211, 423, 192,
5650 146, 197, 146, 211, 175, 207, 207, 207, 207, 207,
5651 207, 207, 207, 207, 207, 207, 207, 207, 172, 207,
5652 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5653 52, 53, 56, 205, 215, 410, 411, 217, 223, 52,
5654 53, 56, 205, 215, 410, 161, 13, 256, 421, 256,
5655 163, 182, 163, 415, 232, 56, 97, 145, 413, 25,
5656 171, 52, 56, 199, 130, 372, 97, 145, 413, 235,
5657 405, 68, 97, 412, 52, 56, 410, 211, 211, 204,
5658 124, 211, 212, 107, 212, 221, 407, 52, 56, 217,
5659 52, 56, 211, 211, 408, 417, 149, 417, 146, 417,
5660 146, 417, 202, 230, 207, 144, 144, 410, 410, 211,
5661 160, 417, 165, 417, 407, 146, 196, 52, 56, 217,
5662 52, 56, 278, 355, 354, 119, 343, 353, 66, 119,
5663 119, 343, 66, 119, 207, 101, 107, 261, 262, 263,
5664 264, 383, 146, 403, 423, 417, 417, 126, 146, 379,
5665 212, 146, 403, 34, 52, 146, 379, 52, 146, 379,
5666 52, 207, 10, 254, 8, 249, 331, 423, 421, 146,
5667 207, 254, 144, 288, 286, 254, 292, 254, 107, 186,
5668 212, 223, 224, 225, 417, 196, 146, 169, 170, 186,
5669 198, 207, 212, 214, 225, 236, 371, 176, 173, 416,
5670 99, 99, 215, 219, 416, 418, 146, 99, 99, 215,
5671 216, 219, 423, 254, 163, 13, 163, 254, 27, 257,
5672 421, 254, 25, 231, 297, 17, 251, 295, 52, 56,
5673 217, 52, 56, 183, 234, 373, 233, 52, 56, 199,
5674 217, 161, 171, 181, 216, 219, 170, 207, 214, 170,
5675 214, 202, 212, 212, 222, 99, 99, 418, 99, 99,
5676 381, 407, 171, 214, 420, 194, 418, 148, 280, 380,
5677 356, 54, 55, 57, 360, 371, 152, 353, 152, 152,
5678 152, 263, 383, 146, 417, 146, 402, 212, 378, 381,
5679 385, 398, 400, 388, 392, 394, 386, 395, 400, 384,
5680 386, 44, 212, 225, 332, 423, 9, 15, 250, 252,
5681 334, 423, 44, 289, 144, 293, 212, 146, 44, 196,
5682 44, 126, 44, 97, 145, 413, 52, 56, 90, 91,
5683 98, 101, 104, 105, 132, 275, 304, 305, 306, 309,
5684 326, 327, 328, 329, 330, 335, 336, 339, 340, 341,
5685 344, 346, 347, 368, 304, 128, 211, 211, 188, 150,
5686 99, 211, 211, 188, 14, 252, 253, 258, 259, 423,
5687 259, 185, 298, 295, 254, 107, 212, 294, 254, 418,
5688 163, 421, 182, 161, 418, 254, 417, 178, 285, 282,
5689 211, 211, 99, 211, 211, 417, 146, 417, 380, 279,
5690 357, 417, 261, 264, 262, 417, 146, 379, 146, 379,
5691 403, 146, 379, 146, 379, 379, 207, 100, 333, 423,
5692 163, 162, 207, 131, 270, 271, 423, 270, 107, 212,
5693 167, 167, 211, 207, 52, 56, 217, 52, 56, 327,
5694 327, 56, 199, 311, 107, 304, 312, 313, 314, 315,
5695 316, 318, 418, 310, 416, 419, 52, 100, 177, 131,
5696 88, 89, 97, 145, 148, 307, 308, 174, 207, 170,
5697 214, 170, 214, 211, 170, 214, 170, 214, 163, 182,
5698 254, 254, 299, 254, 212, 146, 256, 254, 161, 421,
5699 254, 211, 272, 416, 29, 123, 281, 358, 146, 146,
5700 386, 400, 386, 386, 98, 198, 236, 367, 368, 371,
5701 256, 163, 265, 266, 269, 272, 384, 386, 387, 389,
5702 390, 396, 397, 400, 402, 163, 161, 212, 418, 304,
5703 52, 418, 107, 304, 318, 418, 146, 146, 58, 112,
5704 319, 320, 321, 322, 323, 324, 325, 392, 144, 328,
5705 309, 327, 327, 199, 418, 417, 112, 312, 315, 319,
5706 312, 315, 319, 170, 214, 256, 302, 303, 304, 314,
5707 315, 319, 107, 212, 163, 254, 149, 151, 161, 163,
5708 359, 262, 379, 146, 379, 379, 379, 56, 97, 145,
5709 413, 163, 334, 403, 272, 131, 126, 146, 267, 268,
5710 98, 236, 146, 403, 146, 267, 146, 267, 417, 52,
5711 146, 146, 317, 318, 350, 419, 146, 304, 34, 52,
5712 350, 417, 417, 417, 418, 418, 418, 163, 256, 40,
5713 41, 146, 212, 259, 295, 296, 52, 273, 274, 382,
5714 254, 144, 163, 386, 52, 56, 217, 52, 56, 331,
5715 131, 236, 266, 397, 400, 56, 97, 389, 394, 386,
5716 396, 400, 386, 146, 317, 146, 124, 321, 325, 258,
5717 300, 182, 182, 312, 316, 146, 416, 120, 379, 418,
5718 146, 267, 146, 267, 52, 56, 403, 146, 267, 146,
5719 267, 267, 317, 146, 316, 318, 163, 146, 274, 386,
5720 400, 386, 386, 259, 297, 301, 317, 267, 146, 267,
5727 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5728 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5729 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5730 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5731 167, 169, 169, 169, 169, 169, 169, 169, 169, 170,
5732 170, 170, 171, 171, 171, 171, 171, 172, 173, 174,
5733 171, 175, 176, 177, 171, 171, 178, 179, 181, 180,
5734 182, 184, 185, 183, 186, 186, 187, 187, 188, 189,
5735 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
5736 190, 191, 191, 192, 192, 193, 193, 193, 193, 193,
5737 193, 193, 193, 193, 193, 194, 194, 195, 195, 196,
5738 196, 197, 197, 197, 197, 197, 197, 197, 197, 197,
5739 198, 198, 198, 198, 198, 198, 198, 198, 198, 199,
5740 199, 200, 200, 200, 201, 201, 201, 201, 201, 202,
5741 202, 203, 204, 203, 205, 205, 205, 205, 205, 205,
5742 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5743 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5744 205, 205, 205, 205, 206, 206, 206, 206, 206, 206,
5745 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
5746 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
5747 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
5748 206, 206, 206, 206, 206, 207, 207, 207, 207, 207,
5749 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5750 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5751 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
5752 207, 207, 207, 207, 207, 208, 207, 207, 207, 207,
5753 207, 207, 207, 209, 209, 209, 209, 210, 210, 211,
5754 211, 212, 213, 213, 213, 213, 214, 214, 215, 215,
5755 215, 216, 216, 217, 217, 217, 217, 217, 218, 218,
5756 218, 218, 218, 220, 219, 221, 222, 222, 223, 223,
5757 223, 223, 224, 224, 225, 225, 225, 226, 226, 226,
5758 226, 226, 226, 226, 226, 226, 226, 226, 227, 226,
5759 228, 226, 229, 226, 226, 226, 226, 226, 226, 226,
5760 226, 226, 226, 230, 226, 226, 226, 226, 226, 226,
5761 226, 226, 226, 226, 226, 231, 226, 232, 226, 226,
5762 226, 233, 226, 234, 226, 235, 226, 226, 226, 226,
5763 226, 226, 226, 236, 237, 238, 239, 240, 241, 242,
5764 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
5765 253, 254, 255, 256, 256, 256, 257, 257, 258, 258,
5766 259, 259, 260, 260, 261, 261, 262, 262, 263, 263,
5767 263, 263, 263, 264, 264, 265, 265, 266, 266, 266,
5768 266, 267, 267, 268, 269, 269, 269, 269, 269, 269,
5769 269, 269, 269, 269, 269, 269, 269, 269, 269, 270,
5770 270, 271, 271, 272, 272, 273, 273, 274, 274, 276,
5771 277, 278, 279, 275, 280, 280, 281, 281, 282, 283,
5772 283, 283, 283, 284, 284, 284, 284, 284, 284, 284,
5773 284, 284, 285, 285, 287, 288, 289, 286, 291, 292,
5774 293, 290, 294, 294, 294, 294, 295, 296, 296, 298,
5775 299, 300, 297, 301, 301, 302, 302, 302, 303, 303,
5776 303, 303, 303, 303, 304, 305, 305, 306, 306, 307,
5777 308, 309, 309, 309, 309, 309, 309, 309, 309, 309,
5778 309, 309, 309, 310, 309, 309, 311, 309, 312, 312,
5779 312, 312, 312, 312, 312, 312, 313, 313, 314, 314,
5780 315, 316, 316, 317, 317, 318, 319, 319, 319, 319,
5781 320, 320, 321, 321, 322, 322, 323, 323, 324, 325,
5782 325, 326, 326, 326, 326, 326, 326, 326, 326, 326,
5783 326, 327, 327, 327, 327, 327, 327, 327, 327, 327,
5784 327, 328, 329, 330, 330, 330, 331, 331, 332, 332,
5785 332, 333, 333, 334, 334, 335, 335, 336, 337, 337,
5786 337, 338, 339, 340, 341, 342, 342, 343, 343, 344,
5787 345, 345, 346, 347, 348, 348, 349, 349, 350, 350,
5788 351, 351, 352, 352, 353, 354, 353, 355, 356, 357,
5789 358, 359, 353, 360, 360, 360, 360, 361, 361, 362,
5790 363, 363, 363, 363, 364, 365, 365, 366, 366, 366,
5791 366, 367, 367, 367, 367, 367, 368, 368, 368, 368,
5792 368, 368, 368, 369, 369, 370, 370, 371, 371, 373,
5793 372, 372, 374, 374, 375, 375, 375, 376, 377, 376,
5794 378, 378, 378, 378, 379, 379, 380, 380, 380, 380,
5795 380, 380, 380, 380, 380, 380, 380, 380, 380, 380,
5796 380, 381, 382, 382, 382, 382, 383, 383, 384, 385,
5797 385, 386, 386, 387, 388, 388, 389, 389, 390, 390,
5798 391, 391, 392, 392, 393, 394, 394, 395, 396, 397,
5799 397, 398, 398, 399, 399, 400, 400, 401, 401, 402,
5800 403, 403, 404, 405, 404, 406, 406, 407, 407, 408,
5801 408, 408, 408, 409, 409, 409, 410, 410, 410, 410,
5802 411, 411, 411, 412, 412, 413, 413, 414, 414, 415,
5803 415, 416, 416, 417, 418, 419, 420, 420, 420, 421,
5810 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5811 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5812 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5813 3, 3, 3, 3, 4, 1, 4, 4, 6, 4,
5814 1, 4, 4, 7, 6, 6, 6, 6, 4, 1,
5815 3, 1, 1, 3, 3, 3, 2, 0, 0, 0,
5816 6, 0, 0, 0, 6, 1, 1, 2, 0, 5,
5817 1, 0, 0, 4, 1, 1, 1, 4, 3, 1,
5818 2, 3, 4, 5, 4, 5, 2, 2, 2, 2,
5819 2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
5820 4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
5821 3, 1, 1, 4, 3, 3, 3, 3, 2, 1,
5822 1, 1, 4, 3, 3, 3, 3, 2, 1, 1,
5823 1, 2, 1, 3, 1, 1, 1, 1, 1, 1,
5824 1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
5825 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5826 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5827 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5828 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5829 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5830 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5831 1, 1, 1, 1, 1, 4, 4, 7, 6, 6,
5832 6, 6, 5, 4, 3, 3, 2, 2, 2, 2,
5833 3, 3, 3, 3, 3, 3, 4, 2, 2, 3,
5834 3, 3, 3, 1, 3, 3, 3, 3, 3, 2,
5835 2, 3, 3, 3, 3, 0, 4, 6, 4, 6,
5836 4, 6, 1, 1, 1, 1, 1, 3, 3, 1,
5837 1, 1, 1, 2, 4, 2, 1, 3, 3, 5,
5838 3, 1, 1, 1, 1, 2, 4, 2, 1, 2,
5839 2, 4, 1, 0, 2, 2, 2, 1, 1, 2,
5840 3, 4, 1, 1, 3, 4, 2, 1, 1, 1,
5841 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
5842 0, 3, 0, 4, 3, 3, 2, 3, 3, 1,
5843 4, 3, 1, 0, 6, 4, 3, 2, 1, 2,
5844 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
5845 6, 0, 6, 0, 7, 0, 5, 4, 4, 1,
5846 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5847 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5848 1, 1, 1, 1, 1, 2, 1, 1, 1, 5,
5849 1, 2, 1, 1, 1, 3, 1, 3, 1, 3,
5850 5, 1, 3, 2, 1, 1, 1, 4, 2, 2,
5851 1, 2, 0, 1, 6, 8, 4, 6, 4, 2,
5852 6, 2, 4, 6, 2, 4, 2, 4, 1, 1,
5853 1, 3, 4, 1, 4, 1, 3, 1, 1, 0,
5854 0, 0, 0, 7, 4, 1, 3, 3, 3, 2,
5855 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
5856 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
5857 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
5858 0, 0, 8, 1, 1, 1, 3, 3, 1, 2,
5859 3, 1, 1, 1, 1, 3, 1, 3, 1, 1,
5860 1, 1, 4, 4, 4, 3, 4, 4, 4, 3,
5861 3, 3, 2, 0, 4, 2, 0, 4, 1, 1,
5862 2, 3, 5, 2, 4, 1, 2, 3, 1, 3,
5863 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
5864 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
5865 1, 1, 3, 3, 2, 2, 1, 1, 1, 2,
5866 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5867 1, 1, 2, 2, 3, 1, 6, 1, 1, 1,
5868 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
5869 2, 3, 3, 3, 4, 0, 3, 1, 2, 4,
5870 0, 3, 4, 4, 0, 3, 0, 3, 0, 2,
5871 0, 2, 0, 2, 1, 0, 3, 0, 0, 0,
5872 0, 0, 8, 1, 1, 1, 1, 1, 1, 2,
5873 1, 1, 1, 1, 3, 1, 2, 1, 1, 1,
5874 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5875 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5876 4, 0, 1, 1, 3, 5, 3, 1, 0, 3,
5877 4, 2, 2, 1, 2, 0, 6, 8, 4, 6,
5878 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
5879 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
5880 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
5881 1, 3, 1, 1, 2, 2, 1, 3, 3, 1,
5882 3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
5883 2, 1, 1, 0, 4, 1, 2, 1, 3, 3,
5884 2, 4, 2, 1, 1, 1, 1, 1, 1, 1,
5885 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
5886 1, 0, 1, 2, 2, 2, 0, 1, 1, 1,
5893#define yyerrok (yyerrstatus = 0)
5894#define yyclearin (yychar = YYEMPTY)
5896#define YYACCEPT goto yyacceptlab
5897#define YYABORT goto yyabortlab
5898#define YYERROR goto yyerrorlab
5899#define YYNOMEM goto yyexhaustedlab
5902#define YYRECOVERING() (!!yyerrstatus)
5904#define YYBACKUP(Token, Value) \
5906 if (yychar == YYEMPTY) \
5910 YYPOPSTACK (yylen); \
5916 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
5923#define YYERRCODE YYUNDEF
5929#ifndef YYLLOC_DEFAULT
5930# define YYLLOC_DEFAULT(Current, Rhs, N) \
5934 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
5935 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
5936 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
5937 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
5941 (Current).first_line = (Current).last_line = \
5942 YYRHSLOC (Rhs, 0).last_line; \
5943 (Current).first_column = (Current).last_column = \
5944 YYRHSLOC (Rhs, 0).last_column; \
5949#define YYRHSLOC(Rhs, K) ((Rhs)[K])
5957# define YYFPRINTF fprintf
5960# define YYDPRINTF(Args) \
5971# ifndef YYLOCATION_PRINT
5973# if defined YY_LOCATION_PRINT
5977# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
5979# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
5985yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6003 else if (0 <= end_col && yylocp->
first_column < end_col)
6009# define YYLOCATION_PRINT yy_location_print_
6013# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
6017# define YYLOCATION_PRINT(File, Loc) ((void) 0)
6020# define YY_LOCATION_PRINT YYLOCATION_PRINT
6026# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
6030 YYFPRINTF (p, "%s ", Title); \
6031 yy_symbol_print (stderr, \
6032 Kind, Value, Location, p); \
6033 YYFPRINTF (p, "\n"); \
6043yy_symbol_value_print (
FILE *yyo,
6046 FILE *yyoutput = yyo;
6259yy_symbol_print (
FILE *yyo,
6263 yykind <
YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
6265 YYLOCATION_PRINT (yyo, yylocationp);
6267 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6278#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
6281 for (; yybottom <= yytop; yybottom++)
6283 int yybot = *yybottom;
6289# define YY_STACK_PRINT(Bottom, Top) \
6292 yy_stack_print ((Bottom), (Top)); \
6304 int yylno = yyrline[yyrule];
6305 int yynrhs = yyr2[yyrule];
6307 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
6310 for (yyi = 0; yyi < yynrhs; yyi++)
6313 yy_symbol_print (stderr,
6315 &yyvsp[(yyi + 1) - (yynrhs)],
6316 &(yylsp[(yyi + 1) - (yynrhs)]), p);
6321# define YY_REDUCE_PRINT(Rule) \
6324 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6333# define YYDPRINTF(Args) ((void) 0)
6334# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
6335# define YY_STACK_PRINT(Bottom, Top)
6336# define YY_REDUCE_PRINT(Rule)
6342# define YYINITDEPTH 200
6353# define YYMAXDEPTH 10000
6377 int yyn = yypact[+*yyctx->
yyssp];
6383 int yyxbegin = yyn < 0 ? -yyn : 0;
6385 int yychecklim =
YYLAST - yyn + 1;
6388 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6394 else if (yycount == yyargn)
6400 if (yyarg && yycount == 0 && 0 < yyargn)
6409# if defined __GLIBC__ && defined _STRING_H
6410# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6414yystrlen (
const char *yystr)
6417 for (yylen = 0; yystr[yylen]; yylen++)
6425# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6426# define yystpcpy stpcpy
6431yystpcpy (
char *yydest,
const char *yysrc)
6434 const char *yys = yysrc;
6436 while ((*yyd++ = *yys++) !=
'\0')
6453yytnamerr (
char *yyres,
const char *yystr)
6458 char const *yyp = yystr;
6464 goto do_not_strip_quotes;
6468 goto do_not_strip_quotes;
6484 do_not_strip_quotes: ;
6488 return yystpcpy (yyres, yystr) - yyres;
6490 return yystrlen (yystr);
6528 yyarg[yycount] = yyctx->
yytoken;
6530 yyn = yypcontext_expected_tokens (yyctx,
6531 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6552 enum { YYARGS_MAX = 5 };
6562 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6568#define YYCASE_(N, S) \
6574 YYCASE_(1,
YY_(
"syntax error, unexpected %s"));
6575 YYCASE_(2,
YY_(
"syntax error, unexpected %s, expecting %s"));
6576 YYCASE_(3,
YY_(
"syntax error, unexpected %s, expecting %s or %s"));
6577 YYCASE_(4,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
6578 YYCASE_(5,
YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6584 yysize = yystrlen (yyformat) - 2 * yycount + 1;
6587 for (yyi = 0; yyi < yycount; ++yyi)
6598 if (*yymsg_alloc < yysize)
6600 *yymsg_alloc = 2 * yysize;
6601 if (! (yysize <= *yymsg_alloc
6613 while ((*yyp = *yyformat) !=
'\0')
6614 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
6616 yyp +=
yytnamerr (yyp, yytname[yyarg[yyi++]]);
6634yydestruct (
const char *yymsg,
6673# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6677YYLTYPE yylloc = yyloc_default;
6684 int yyerrstatus = 0;
6722 char *yymsg = yymsgbuf;
6725#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6761 YYDPRINTF ((p,
"Entering state %d\n", yystate));
6768 if (yyss + yystacksize - 1 <= yyssp)
6769#if !defined yyoverflow && !defined YYSTACK_RELOCATE
6776# if defined yyoverflow
6789 yyoverflow (
YY_(
"memory exhausted"),
6790 &yyss1, yysize *
YYSIZEOF (*yyssp),
6791 &yyvs1, yysize *
YYSIZEOF (*yyvsp),
6792 &yyls1, yysize *
YYSIZEOF (*yylsp),
6808 union yyalloc *yyptr =
6813 YYSTACK_RELOCATE (yyss_alloc, yyss);
6814 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
6815 YYSTACK_RELOCATE (yyls_alloc, yyls);
6816# undef YYSTACK_RELOCATE
6822 yyssp = yyss + yysize - 1;
6823 yyvsp = yyvs + yysize - 1;
6824 yylsp = yyls + yysize - 1;
6827 YYDPRINTF ((p,
"Stack size increased to %ld\n",
6828 YY_CAST (
long, yystacksize)));
6831 if (yyss + yystacksize - 1 <= yyssp)
6851 yyn = yypact[yystate];
6861 yychar = yylex (&
yylval, &yylloc, p);
6868 YYDPRINTF ((p,
"Now at end of input.\n"));
6878 yyerror_range[1] = yylloc;
6890 if (yyn < 0 ||
YYLAST < yyn || yycheck[yyn] != yytoken)
6923 yyn = yydefact[yystate];
6944 yyval = yyvsp[1-yylen];
6948 yyerror_range[1] = yyloc;
6969 while (node->nd_next) {
6970 node = node->nd_next;
6972 node = node->nd_head;
6974 node = remove_begin(node);
6988 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
7008 (yyval.
node) = newline_node((yyvsp[0].node));
7019 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
7029 (yyval.
node) = remove_begin((yyvsp[0].node));
7037 (yyval.
node) = (yyvsp[0].node);
7057 {
if (!(yyvsp[-1].node)) {
yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
7065 (yyval.
node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].
node), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
7076 (yyval.
node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].
node), 0, (yyvsp[0].node), &(yyloc));
7086 (yyval.
node) = void_stmts(p, (yyvsp[-1].node));
7106 (yyval.
node) = newline_node((yyvsp[0].node));
7117 (yyval.
node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
7127 (yyval.
node) = remove_begin((yyvsp[0].node));
7135 (yyval.
node) = (yyvsp[0].node);
7143 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
7151 (yyval.
node) = (yyvsp[0].node);
7190 buf[1] = (char)(yyvsp[0].node)->nd_nth;
7201 static const char mesg[] =
"can't make alias for the number variables";
7215 (yyval.
node) = (yyvsp[0].node);
7226 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
7227 fixpos((yyval.
node), (yyvsp[0].
node));
7238 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
7239 fixpos((yyval.
node), (yyvsp[0].
node));
7254 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].
node), 1, &(yyloc));
7270 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].
node), 1, &(yyloc));
7283 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7284 resq =
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
7285 (yyval.
node) =
NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
7296 rb_warn0(
"END in method; use at_exit");
7301 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
7315 (yyval.
node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].
node), (yyvsp[-1].ctxt), &(yyloc));
7327 (yyval.
node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].
node), (yyvsp[-1].ctxt), &(yyloc));
7338 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7340 (yyval.
node) = node_assign(p, (yyvsp[-5].node),
NEW_RESCUE((yyvsp[-2].node),
NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc)), (yyvsp[-3].
ctxt), &(yyloc));
7351 (yyval.
node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].
node), (yyvsp[-1].ctxt), &(yyloc));
7362 (yyval.
node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].
node), (yyvsp[-1].ctxt), &(yyloc));
7373 (yyval.
node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].
ctxt), &(yyloc));
7384 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[0].
node), &(yylsp[-4]), &(yyloc));
7396 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
7407 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
7418 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
7419 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].
ctxt), &(yyloc));
7430 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-5].node),
ID2VAL(
idCOLON2), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].
node), &(yyloc));
7441 rb_backref_error(p, (yyvsp[-3].node));
7453 (yyval.
node) = (yyvsp[0].node);
7462 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7474 (yyval.
node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
7482 (yyval.
node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
7490 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
7498 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7517 {(yyval.
tbl) = push_pvtbl(p);}
7523 {pop_pvtbl(p, (yyvsp[-1].tbl));}
7532 (yyval.
node) =
NEW_CASE3((yyvsp[-5].node),
NEW_IN((yyvsp[-1].node), 0, 0, &(yylsp[-1])), &(yyloc));
7533 warn_one_line_pattern_matching(p, (yyval.
node), (yyvsp[-1].
node),
true);
7554 {(yyval.
tbl) = push_pvtbl(p);}
7560 {pop_pvtbl(p, (yyvsp[-1].tbl));}
7570 warn_one_line_pattern_matching(p, (yyval.
node), (yyvsp[-1].
node),
false);
7583 numparam_name(p, fname);
7599 (yyval.
node) = (yyvsp[0].node);
7617 (yyval.
node) = (yyvsp[0].node);
7633 (yyval.
node) = (yyvsp[0].node);
7653 (yyval.
node) = (yyvsp[-2].node);
7662 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
7672 (yyval.
node) = (yyvsp[-1].node);
7674 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
7699 (yyval.
node) = (yyvsp[-1].node);
7710 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
7712 (yyval.
node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
7713 fixpos((yyval.
node), (yyvsp[-2].
node));
7725 (yyval.
node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node),
Qnull, &(yylsp[-1]), &(yyloc));
7736 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
7758 (yyval.
node) = new_command_qcall(p,
ID2VAL(
idCOLON2), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
7770 fixpos((yyval.
node), (yyvsp[0].
node));
7781 (yyval.
node) = new_yield(p, (yyvsp[0].node), &(yyloc));
7782 fixpos((yyval.
node), (yyvsp[0].
node));
7793 (yyval.
node) =
NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
7804 (yyval.
node) =
NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
7815 (yyval.
node) =
NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
7826 (yyval.
node) = (yyvsp[-1].node);
7859 (yyval.
node) =
NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].
node)), 0, &(yyloc));
7958 (yyval.
node) = (yyvsp[-1].node);
7969 (yyval.
node) =
NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
7980 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].
node));
8002 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].
node));
8013 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8024 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8035 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
8045 if ((yyvsp[-1].
id) ==
tANDDOT) {
8046 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8049 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
8060 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].
id), &(yyloc));
8070 if ((yyvsp[-1].
id) ==
tANDDOT) {
8071 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8074 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
8085 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
8096 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
8107 rb_backref_error(p, (yyvsp[0].node));
8119 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8130 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8141 (yyval.
node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
8152 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
8163 (yyval.
node) = attrset(p, (yyvsp[-2].node),
idCOLON2, (yyvsp[0].
id), &(yyloc));
8174 (yyval.
node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
8185 (yyval.
node) = const_decl(p,
NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
8196 (yyval.
node) = const_decl(p,
NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
8207 rb_backref_error(p, (yyvsp[0].node));
8218 static const char mesg[] =
"class/module name must be CONSTANT";
8264 (yyval.
id) = (yyvsp[0].
id);
8302 (yyval.
node) = block_append(p, (yyvsp[-3].node), undef);
8493 (yyval.
node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].
node), (yyvsp[-1].ctxt), &(yyloc));
8504 (yyval.
node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].
ctxt), &(yyloc));
8515 (yyval.
node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[0].
node), &(yylsp[-4]), &(yyloc));
8526 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
8537 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].
id), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
8548 (yyval.
node) = new_attr_op_assign(p, (yyvsp[-5].node),
ID2VAL(
idCOLON2), (yyvsp[-3].
id), (yyvsp[-2].
id), (yyvsp[0].
node), &(yyloc));
8559 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
8560 (yyval.
node) = new_const_op_assign(p,
NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].
ctxt), &(yyloc));
8571 (yyval.
node) = new_const_op_assign(p,
NEW_COLON3((yyvsp[-3].
id), &(yyloc)), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].
ctxt), &(yyloc));
8582 rb_backref_error(p, (yyvsp[-3].node));
8621 (yyval.
node) =
NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8633 (yyval.
node) =
NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8645 (yyval.
node) =
NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
node), &(yyloc));
8657 (yyval.
node) =
NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
node), &(yyloc));
8667 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8675 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8683 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8691 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8699 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8707 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8715 (yyval.
node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node),
idPow, (yyvsp[0].
node), &(yylsp[-2]), &(yyloc)),
idUMinus, &(yylsp[-3]), &(yyloc));
8723 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUPlus, &(yylsp[-1]), &(yyloc));
8731 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
idUMinus, &(yylsp[-1]), &(yyloc));
8739 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8747 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8755 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8763 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idCmp, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8771 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEq, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8779 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idEqq, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8787 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeq, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8795 (yyval.
node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8803 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idNeqTilde, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8811 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
8819 (yyval.
node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
8827 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idLTLT, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8835 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node),
idGTGT, (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8843 (yyval.
node) = logop(p,
idANDOP, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8851 (yyval.
node) = logop(p,
idOROP, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
8866 (yyval.
node) = new_defined(p, (yyvsp[0].node), &(yyloc));
8876 (yyval.
node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[0].node), &(yyloc));
8877 fixpos((yyval.
node), (yyvsp[-5].
node));
8887 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
8888 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
8890 (yyval.
node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].
node), (yyvsp[0].node), &(yyloc));
8901 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
8902 restore_defun(p, (yyvsp[-5].node)->
nd_defn);
8904 (yyvsp[-2].
node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
8905 (yyval.
node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].
node), (yyvsp[-2].node), &(yyloc));
8916 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
8917 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
8919 (yyval.
node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].
node), (yyvsp[0].node), &(yyloc));
8932 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
8933 restore_defun(p, (yyvsp[-5].node)->
nd_defn);
8935 (yyvsp[-2].
node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
8936 (yyval.
node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].
node), (yyvsp[-2].node), &(yyloc));
8949 (yyval.
node) = (yyvsp[0].node);
8981 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8990 (yyval.
node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9015 (yyval.
node) = (yyvsp[0].node);
9023 (yyval.
node) = (yyvsp[-1].node);
9032 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
node);
9043 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
9054 (yyval.
node) = (yyvsp[0].node);
9064 (yyval.
node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9075 (yyval.
node) = (yyvsp[-1].node);
9085 if (!check_forwarding_args(p)) {
9090 (yyval.
node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
9101 if (!check_forwarding_args(p)) {
9106 (yyval.
node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
9117 (yyval.
node) = (yyvsp[-1].node);
9126 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
node);
9137 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
9160 (yyval.
node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].
node));
9171 (yyval.
node) = (yyvsp[-1].node) ?
NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
9172 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].
node));
9183 (yyval.
node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].
node);
9184 (yyval.
node) = arg_blk_pass((yyval.
node), (yyvsp[0].
node));
9230 (yyval.
node) = (yyvsp[0].node);
9249 (yyval.
node) = (yyvsp[0].node);
9288 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
9299 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].
node), &(yyloc));
9310 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
9321 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].
node), &(yyloc));
9363 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9400 (yyval.
node) = (yyvsp[-2].node);
9412 (yyval.
node) = (yyvsp[-1].node);
9456 (yyval.
node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
9479 (yyval.
node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
9518 (yyval.
node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
9526 (yyval.
node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-3]), &(yyloc));
9534 (yyval.
node) = call_uni_op(p, method_cond(p,
new_nil(&(yylsp[-1])), &(yylsp[-1])),
METHOD_NOT, &(yylsp[-2]), &(yyloc));
9543 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
9554 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
9555 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
9566 (yyval.
node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].
node), (yyvsp[-1].node), &(yyloc));
9567 fixpos((yyval.
node), (yyvsp[-4].
node));
9578 (yyval.
node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].
node), (yyvsp[-1].node), &(yyloc));
9579 fixpos((yyval.
node), (yyvsp[-4].
node));
9590 (yyval.
node) =
NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].
node), 1, &(yyloc));
9591 fixpos((yyval.
node), (yyvsp[-2].
node));
9602 (yyval.
node) =
NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].
node), 1, &(yyloc));
9603 fixpos((yyval.
node), (yyvsp[-2].
node));
9626 fixpos((yyval.
node), (yyvsp[-4].
node));
9679 ID id = internal_id(p);
9681 NODE *args, *scope, *internal_var =
NEW_DVAR(
id, &(yylsp[-4]));
9683 tbl[0] = 1 ; tbl[1] =
id ;
9686 switch (
nd_type((yyvsp[-4].node))) {
9693 m->nd_next = (yyvsp[-4].
node);
9696 m->nd_next = node_assign(p, (yyvsp[-4].node),
NEW_FOR_MASGN(internal_var, &(yylsp[-4])),
NO_LEX_CTXT, &(yylsp[-4]));
9699 m->nd_next = node_assign(p,
NEW_MASGN(
NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var,
NO_LEX_CTXT, &(yylsp[-4]));
9702 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
9704 (yyval.
node) =
NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
9705 fixpos((yyval.
node), (yyvsp[-4].
node));
9716 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
9717 yyerror1(&loc,
"class definition in method body");
9729 (yyval.
node) =
NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].
node), (yyvsp[-3].node), &(yyloc));
9731 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9737 p->
ctxt.shareable_constant_value = (yyvsp[-5].
ctxt).shareable_constant_value;
9758 set_line_body((yyvsp[-1].node),
nd_line((yyvsp[-4].node)));
9759 fixpos((yyval.
node), (yyvsp[-4].
node));
9765 p->
ctxt.shareable_constant_value = (yyvsp[-6].
ctxt).shareable_constant_value;
9774 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9775 yyerror1(&loc,
"module definition in method body");
9789 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9795 p->
ctxt.shareable_constant_value = (yyvsp[-4].
ctxt).shareable_constant_value;
9803 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
9805 (yyval.
node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].
node), (yyvsp[-1].node), &(yyloc));
9816 restore_defun(p, (yyvsp[-3].node)->
nd_defn);
9818 (yyval.
node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].
node), (yyvsp[-1].node), &(yyloc));
9876 (yyval.
node) = (yyvsp[0].node);
9884 token_info_push(p,
"begin", &(yyloc));
9893 token_info_push(p,
"if", &(yyloc));
9911 token_info_push(p,
"unless", &(yyloc));
9919 token_info_push(p,
"while", &(yyloc));
9927 token_info_push(p,
"until", &(yyloc));
9935 token_info_push(p,
"case", &(yyloc));
9943 token_info_push(p,
"for", &(yyloc));
9951 token_info_push(p,
"class", &(yyloc));
9960 token_info_push(p,
"module", &(yyloc));
9969 token_info_push(p,
"def", &(yyloc));
9977 token_info_push(p,
"do", &(yyloc));
9985 token_info_push(p,
"do", &(yyloc));
9993 token_info_warn(p,
"rescue", p->
token_info, 1, &(yyloc));
10001 token_info_warn(p,
"ensure", p->
token_info, 1, &(yyloc));
10003#line 9999 "parse.c"
10007#line 3360 "parse.y"
10009 token_info_warn(p,
"when", p->
token_info, 0, &(yyloc));
10011#line 10007 "parse.c"
10015#line 3366 "parse.y"
10018 int same = ptinfo_beg && strcmp(ptinfo_beg->
token,
"case") != 0;
10019 token_info_warn(p,
"else", p->
token_info, same, &(yyloc));
10024 token_info_setup(&e, p->
lex.
pbeg, &(yyloc));
10025 if (!e.
nonspc) *ptinfo_beg = e;
10028#line 10024 "parse.c"
10032#line 3381 "parse.y"
10035 token_info_warn(p,
"elsif", p->
token_info, 1, &(yyloc));
10037#line 10033 "parse.c"
10041#line 3388 "parse.y"
10043 token_info_pop(p,
"end", &(yyloc));
10045#line 10041 "parse.c"
10049#line 3394 "parse.y"
10052 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
10054#line 10050 "parse.c"
10058#line 3413 "parse.y"
10061 (yyval.
node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10062 fixpos((yyval.
node), (yyvsp[-3].
node));
10066#line 10062 "parse.c"
10070#line 3424 "parse.y"
10073 (yyval.
node) = (yyvsp[0].node);
10077#line 10073 "parse.c"
10081#line 3437 "parse.y"
10084 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10085 mark_lvar_used(p, (yyval.
node));
10089#line 10085 "parse.c"
10093#line 3445 "parse.y"
10096 (yyval.
node) = (yyvsp[-1].node);
10100#line 10096 "parse.c"
10104#line 3454 "parse.y"
10111#line 10107 "parse.c"
10115#line 3461 "parse.y"
10118 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].
node));
10122#line 10118 "parse.c"
10126#line 3470 "parse.y"
10133#line 10129 "parse.c"
10137#line 3477 "parse.y"
10144#line 10140 "parse.c"
10148#line 3484 "parse.y"
10155#line 10151 "parse.c"
10159#line 3491 "parse.y"
10166#line 10162 "parse.c"
10170#line 3498 "parse.y"
10177#line 10173 "parse.c"
10181#line 3507 "parse.y"
10184 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10185 mark_lvar_used(p, (yyval.
node));
10189#line 10185 "parse.c"
10193#line 3515 "parse.y"
10200#line 10196 "parse.c"
10204#line 3524 "parse.y"
10206#line 10202 "parse.c"
10210#line 3528 "parse.y"
10212 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
10214#line 10210 "parse.c"
10218#line 3532 "parse.y"
10220 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].
id), &(yylsp[-1]));
10222#line 10218 "parse.c"
10226#line 3536 "parse.y"
10228 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
10230#line 10226 "parse.c"
10234#line 3540 "parse.y"
10236 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
10238#line 10234 "parse.c"
10242#line 3546 "parse.y"
10244 (yyval.
node) = (yyvsp[0].node);
10246#line 10242 "parse.c"
10250#line 3550 "parse.y"
10254#line 10250 "parse.c"
10258#line 3556 "parse.y"
10266#line 10262 "parse.c"
10270#line 3566 "parse.y"
10272 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].
node), &(yyloc));
10274#line 10270 "parse.c"
10278#line 3570 "parse.y"
10280 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].
node), (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10282#line 10278 "parse.c"
10286#line 3574 "parse.y"
10288 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].
node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
10290#line 10286 "parse.c"
10294#line 3578 "parse.y"
10296 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node),
Qnone, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10298#line 10294 "parse.c"
10302#line 3582 "parse.y"
10304 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
10306#line 10302 "parse.c"
10310#line 3586 "parse.y"
10313 (yyval.
node) = new_args(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].
id),
Qnone, (yyval.
node), &(yyloc));
10315#line 10311 "parse.c"
10319#line 3591 "parse.y"
10321 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10323#line 10319 "parse.c"
10327#line 3595 "parse.y"
10331#line 10327 "parse.c"
10335#line 3599 "parse.y"
10337 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
10339#line 10335 "parse.c"
10343#line 3603 "parse.y"
10345 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10347#line 10343 "parse.c"
10351#line 3607 "parse.y"
10355#line 10351 "parse.c"
10359#line 3611 "parse.y"
10361 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10363#line 10359 "parse.c"
10367#line 3615 "parse.y"
10371#line 10367 "parse.c"
10375#line 3619 "parse.y"
10377 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10379#line 10375 "parse.c"
10383#line 3623 "parse.y"
10387#line 10383 "parse.c"
10391#line 3630 "parse.y"
10395#line 10391 "parse.c"
10399#line 3636 "parse.y"
10408#line 10404 "parse.c"
10412#line 3645 "parse.y"
10417 (yyval.
node) = (yyvsp[-2].node);
10421#line 10417 "parse.c"
10425#line 3657 "parse.y"
10429#line 10425 "parse.c"
10433#line 3661 "parse.y"
10440#line 10436 "parse.c"
10444#line 3676 "parse.y"
10446 new_bv(p,
get_id((yyvsp[0].
id)));
10449#line 10445 "parse.c"
10453#line 3681 "parse.y"
10457#line 10453 "parse.c"
10461#line 3687 "parse.y"
10463 token_info_push(p,
"->", &(yylsp[0]));
10464 (yyvsp[0].
vars) = dyna_push(p);
10468#line 10464 "parse.c"
10472#line 3693 "parse.y"
10477#line 10473 "parse.c"
10481#line 3697 "parse.y"
10483 (yyval.
node) = numparam_push(p);
10485#line 10481 "parse.c"
10489#line 3701 "parse.y"
10493#line 10489 "parse.c"
10497#line 3705 "parse.y"
10503 (yyvsp[-2].
node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
10506 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10514 numparam_pop(p, (yyvsp[-3].node));
10515 dyna_pop(p, (yyvsp[-6].vars));
10517#line 10513 "parse.c"
10521#line 3727 "parse.y"
10524 (yyval.
node) = (yyvsp[-2].node);
10529#line 10525 "parse.c"
10533#line 3735 "parse.y"
10536 if (!args_info_empty_p((yyvsp[0].node)->
nd_ainfo))
10541#line 10537 "parse.c"
10545#line 3745 "parse.y"
10547 token_info_pop(p,
"}", &(yylsp[0]));
10548 (yyval.
node) = (yyvsp[-1].node);
10550#line 10546 "parse.c"
10554#line 3750 "parse.y"
10556 (yyval.
node) = (yyvsp[-1].node);
10558#line 10554 "parse.c"
10562#line 3756 "parse.y"
10564 (yyval.
node) = (yyvsp[-1].node);
10566 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10570#line 10566 "parse.c"
10574#line 3766 "parse.y"
10581 block_dup_check(p, (yyvsp[-1].node)->
nd_args, (yyvsp[0].node));
10583 (yyval.
node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
10584 fixpos((yyval.
node), (yyvsp[-1].
node));
10588#line 10584 "parse.c"
10592#line 3780 "parse.y"
10595 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
10599#line 10595 "parse.c"
10603#line 3787 "parse.y"
10606 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10610#line 10606 "parse.c"
10614#line 3794 "parse.y"
10617 (yyval.
node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].
node), (yyvsp[-2].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10621#line 10617 "parse.c"
10625#line 3803 "parse.y"
10628 (yyval.
node) = (yyvsp[-1].node);
10634#line 10630 "parse.c"
10638#line 3812 "parse.y"
10641 (yyval.
node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].
node), (yyvsp[-1].
id), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
10646#line 10642 "parse.c"
10650#line 3820 "parse.y"
10658#line 10654 "parse.c"
10662#line 3828 "parse.y"
10669#line 10665 "parse.c"
10673#line 3835 "parse.y"
10676 (yyval.
node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].
node),
ID2VAL(idCall), (yyvsp[0].
node), &(yylsp[-1]), &(yyloc));
10681#line 10677 "parse.c"
10685#line 3843 "parse.y"
10693#line 10689 "parse.c"
10697#line 3851 "parse.y"
10704#line 10700 "parse.c"
10708#line 3858 "parse.y"
10715#line 10711 "parse.c"
10719#line 3865 "parse.y"
10726 fixpos((yyval.
node), (yyvsp[-3].
node));
10730#line 10726 "parse.c"
10734#line 3878 "parse.y"
10736 (yyval.
node) = (yyvsp[-1].node);
10738 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10742#line 10738 "parse.c"
10746#line 3886 "parse.y"
10748 (yyval.
node) = (yyvsp[-1].node);
10750 (yyval.
node)->
nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10754#line 10750 "parse.c"
10758#line 3895 "parse.y"
10759 {(yyval.
vars) = dyna_push(p);}
10760#line 10756 "parse.c"
10764#line 3896 "parse.y"
10769#line 10765 "parse.c"
10773#line 3900 "parse.y"
10775 (yyval.
node) = numparam_push(p);
10777#line 10773 "parse.c"
10781#line 3904 "parse.y"
10785 (yyvsp[-1].
node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
10790 numparam_pop(p, (yyvsp[-2].node));
10791 dyna_pop(p, (yyvsp[-4].vars));
10793#line 10789 "parse.c"
10797#line 3917 "parse.y"
10798 {(yyval.
vars) = dyna_push(p);}
10799#line 10795 "parse.c"
10803#line 3918 "parse.y"
10808#line 10804 "parse.c"
10812#line 3922 "parse.y"
10814 (yyval.
node) = numparam_push(p);
10817#line 10813 "parse.c"
10821#line 3927 "parse.y"
10825 (yyvsp[-1].
node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
10831 numparam_pop(p, (yyvsp[-2].node));
10832 dyna_pop(p, (yyvsp[-4].vars));
10834#line 10830 "parse.c"
10838#line 3942 "parse.y"
10841 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
10846#line 10842 "parse.c"
10850#line 3950 "parse.y"
10857#line 10853 "parse.c"
10861#line 3957 "parse.y"
10864 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
10865 (yyval.
node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].
node), &(yyloc));
10869#line 10865 "parse.c"
10873#line 3965 "parse.y"
10876 (yyval.
node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].
node), &(yyloc));
10880#line 10876 "parse.c"
10884#line 3976 "parse.y"
10887 (yyval.
node) =
NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10888 fixpos((yyval.
node), (yyvsp[-3].
node));
10892#line 10888 "parse.c"
10896#line 3990 "parse.y"
10902 (yyval.
tbl) = push_pvtbl(p);
10904#line 10900 "parse.c"
10908#line 3997 "parse.y"
10910 (yyval.
tbl) = push_pktbl(p);
10912#line 10908 "parse.c"
10916#line 4001 "parse.y"
10918 pop_pktbl(p, (yyvsp[-2].tbl));
10919 pop_pvtbl(p, (yyvsp[-3].tbl));
10922#line 10918 "parse.c"
10926#line 4008 "parse.y"
10929 (yyval.
node) =
NEW_IN((yyvsp[-4].node), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
10933#line 10929 "parse.c"
10937#line 4022 "parse.y"
10940 (yyval.
node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10941 fixpos((yyval.
node), (yyvsp[0].
node));
10945#line 10941 "parse.c"
10949#line 4030 "parse.y"
10952 (yyval.
node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10953 fixpos((yyval.
node), (yyvsp[0].
node));
10957#line 10953 "parse.c"
10961#line 4041 "parse.y"
10963 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, 0,
Qnone, &(yyloc));
10966#line 10962 "parse.c"
10970#line 4046 "parse.y"
10972 (yyval.
node) = new_array_pattern(p,
Qnone,
get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
10978#line 10974 "parse.c"
10982#line 4054 "parse.y"
10984 (yyval.
node) = new_find_pattern(p,
Qnone, (yyvsp[0].node), &(yyloc));
10986#line 10982 "parse.c"
10990#line 4058 "parse.y"
10992 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
10994#line 10990 "parse.c"
10998#line 4062 "parse.y"
11000 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[0].node), &(yyloc));
11002#line 10998 "parse.c"
11006#line 4071 "parse.y"
11010 n = list_append(p, n, (yyvsp[0].node));
11011 (yyval.
node) = new_hash(p, n, &(yyloc));
11015#line 11011 "parse.c"
11019#line 4083 "parse.y"
11026#line 11022 "parse.c"
11030#line 4092 "parse.y"
11031 {(yyval.
tbl) = push_pktbl(p);}
11032#line 11028 "parse.c"
11036#line 4093 "parse.y"
11037 {(yyval.
tbl) = push_pktbl(p);}
11038#line 11034 "parse.c"
11042#line 4097 "parse.y"
11044 pop_pktbl(p, (yyvsp[-2].tbl));
11045 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), &(yyloc));
11051#line 11047 "parse.c"
11055#line 4106 "parse.y"
11057 pop_pktbl(p, (yyvsp[-2].tbl));
11058 (yyval.
node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
11064#line 11060 "parse.c"
11068#line 4115 "parse.y"
11070 pop_pktbl(p, (yyvsp[-2].tbl));
11071 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
11077#line 11073 "parse.c"
11081#line 4124 "parse.y"
11083 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
11084 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
11086#line 11082 "parse.c"
11090#line 4129 "parse.y"
11092 pop_pktbl(p, (yyvsp[-2].tbl));
11093 (yyval.
node) = new_array_pattern(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), &(yyloc));
11099#line 11095 "parse.c"
11103#line 4138 "parse.y"
11105 pop_pktbl(p, (yyvsp[-2].tbl));
11106 (yyval.
node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
11112#line 11108 "parse.c"
11116#line 4147 "parse.y"
11118 pop_pktbl(p, (yyvsp[-2].tbl));
11119 (yyval.
node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].
node), &(yyloc));
11125#line 11121 "parse.c"
11129#line 4156 "parse.y"
11131 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
11132 (yyval.
node) = new_array_pattern(p, (yyvsp[-2].node),
Qnone, (yyval.
node), &(yyloc));
11134#line 11130 "parse.c"
11138#line 4161 "parse.y"
11140 (yyval.
node) = new_array_pattern(p,
Qnone,
Qnone, (yyvsp[-1].node), &(yyloc));
11142#line 11138 "parse.c"
11146#line 4165 "parse.y"
11148 (yyval.
node) = new_find_pattern(p,
Qnone, (yyvsp[-1].node), &(yyloc));
11150#line 11146 "parse.c"
11154#line 4169 "parse.y"
11156 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 0, 0,
Qnone, &(yyloc));
11159#line 11155 "parse.c"
11163#line 4174 "parse.y"
11165 (yyval.
tbl) = push_pktbl(p);
11169#line 11165 "parse.c"
11173#line 4180 "parse.y"
11175 pop_pktbl(p, (yyvsp[-2].tbl));
11177 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyvsp[-1].node), &(yyloc));
11179#line 11175 "parse.c"
11183#line 4186 "parse.y"
11185 (yyval.
node) = new_hash_pattern_tail(p,
Qnone, 0, &(yyloc));
11186 (yyval.
node) = new_hash_pattern(p,
Qnone, (yyval.
node), &(yyloc));
11188#line 11184 "parse.c"
11192#line 4190 "parse.y"
11193 {(yyval.
tbl) = push_pktbl(p);}
11194#line 11190 "parse.c"
11198#line 4191 "parse.y"
11200 pop_pktbl(p, (yyvsp[-2].tbl));
11201 (yyval.
node) = (yyvsp[-1].node);
11203#line 11199 "parse.c"
11207#line 4198 "parse.y"
11211 (yyval.
node) = new_array_pattern_tail(p, pre_args, 0, 0,
Qnone, &(yyloc));
11216#line 11212 "parse.c"
11220#line 4207 "parse.y"
11222 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0,
Qnone, &(yyloc));
11224#line 11220 "parse.c"
11228#line 4211 "parse.y"
11231 (yyval.
node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].
node)), 0, 0,
Qnone, &(yyloc));
11237#line 11233 "parse.c"
11241#line 4220 "parse.y"
11243 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-2].node), 1, (yyvsp[0].
id),
Qnone, &(yyloc));
11245#line 11241 "parse.c"
11249#line 4224 "parse.y"
11251 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-4].node), 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11253#line 11249 "parse.c"
11257#line 4228 "parse.y"
11259 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, 0,
Qnone, &(yyloc));
11261#line 11257 "parse.c"
11265#line 4232 "parse.y"
11267 (yyval.
node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, 0, (yyvsp[0].
node), &(yyloc));
11269#line 11265 "parse.c"
11273#line 4239 "parse.y"
11275 (yyval.
node) = (yyvsp[-1].node);
11277#line 11273 "parse.c"
11281#line 4243 "parse.y"
11284 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[-1].
node));
11288#line 11284 "parse.c"
11292#line 4252 "parse.y"
11294 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[0].
id),
Qnone, &(yyloc));
11296#line 11292 "parse.c"
11300#line 4256 "parse.y"
11302 (yyval.
node) = new_array_pattern_tail(p,
Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].
node), &(yyloc));
11304#line 11300 "parse.c"
11308#line 4262 "parse.y"
11310 (yyval.
node) = new_find_pattern_tail(p, (yyvsp[-4].
id), (yyvsp[-2].
node), (yyvsp[0].
id), &(yyloc));
11315#line 11311 "parse.c"
11319#line 4272 "parse.y"
11321 (yyval.
id) = (yyvsp[0].
id);
11323#line 11319 "parse.c"
11327#line 4276 "parse.y"
11331#line 11327 "parse.c"
11335#line 4283 "parse.y"
11338 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].
node));
11342#line 11338 "parse.c"
11346#line 4292 "parse.y"
11353#line 11349 "parse.c"
11357#line 4301 "parse.y"
11359 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].
id), &(yyloc));
11361#line 11357 "parse.c"
11365#line 4305 "parse.y"
11367 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
11369#line 11365 "parse.c"
11373#line 4309 "parse.y"
11375 (yyval.
node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
11377#line 11373 "parse.c"
11381#line 4313 "parse.y"
11383 (yyval.
node) = new_hash_pattern_tail(p, new_hash(p,
Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
11385#line 11381 "parse.c"
11389#line 4321 "parse.y"
11392 (yyval.
node) = list_concat((yyvsp[-2].node), (yyvsp[0].
node));
11396#line 11392 "parse.c"
11400#line 4330 "parse.y"
11402 error_duplicate_pattern_key(p,
get_id((yyvsp[-1].
id)), &(yylsp[-1]));
11408#line 11404 "parse.c"
11412#line 4338 "parse.y"
11414 error_duplicate_pattern_key(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
11416 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
11418 error_duplicate_pattern_variable(p,
get_id((yyvsp[0].
id)), &(yylsp[0]));
11420 (yyval.
node) = list_append(p,
NEW_LIST(
NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
11424#line 11420 "parse.c"
11428#line 4353 "parse.y"
11430 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11433 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
11434 (yyval.
id) =
SYM2ID(node->nd_lit);
11445 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
11449#line 11445 "parse.c"
11453#line 4376 "parse.y"
11455 (yyval.
id) = (yyvsp[0].
id);
11457#line 11453 "parse.c"
11461#line 4380 "parse.y"
11465#line 11461 "parse.c"
11469#line 4386 "parse.y"
11473#line 11469 "parse.c"
11477#line 4392 "parse.y"
11479#line 11475 "parse.c"
11483#line 4397 "parse.y"
11492#line 11488 "parse.c"
11496#line 4406 "parse.y"
11505#line 11501 "parse.c"
11509#line 4415 "parse.y"
11513 (yyval.
node) =
NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11517#line 11513 "parse.c"
11521#line 4423 "parse.y"
11525 (yyval.
node) =
NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11529#line 11525 "parse.c"
11533#line 4434 "parse.y"
11537 (yyval.
node) =
NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
node), &(yyloc));
11541#line 11537 "parse.c"
11545#line 4442 "parse.y"
11549 (yyval.
node) =
NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].
node), &(yyloc));
11553#line 11549 "parse.c"
11557#line 4460 "parse.y"
11560 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
11564#line 11560 "parse.c"
11568#line 4470 "parse.y"
11571 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
11572 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11576#line 11572 "parse.c"
11580#line 4480 "parse.y"
11583 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
11591#line 11587 "parse.c"
11595#line 4493 "parse.y"
11602#line 11598 "parse.c"
11606#line 4500 "parse.y"
11613#line 11609 "parse.c"
11617#line 4507 "parse.y"
11620 (yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc));
11624#line 11620 "parse.c"
11628#line 4518 "parse.y"
11633 (yyvsp[0].node), &(yyloc));
11638#line 11634 "parse.c"
11642#line 4531 "parse.y"
11649#line 11645 "parse.c"
11653#line 4538 "parse.y"
11656 if (!((yyval.
node) = splat_array((yyvsp[0].node)))) (yyval.
node) = (yyvsp[0].node);
11660#line 11656 "parse.c"
11664#line 4548 "parse.y"
11666 (yyval.
node) = (yyvsp[0].node);
11668#line 11664 "parse.c"
11672#line 4555 "parse.y"
11675 (yyval.
node) = (yyvsp[0].node);
11679#line 11675 "parse.c"
11683#line 4569 "parse.y"
11692 node = evstr2dstr(p, node);
11694 (yyval.
node) = node;
11698#line 11694 "parse.c"
11702#line 4588 "parse.y"
11705 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11709#line 11705 "parse.c"
11713#line 4597 "parse.y"
11716 (yyval.
node) = heredoc_dedent(p, (yyvsp[-1].node));
11717 if ((yyval.
node)) nd_set_loc((yyval.
node), &(yyloc));
11721#line 11717 "parse.c"
11725#line 4607 "parse.y"
11728 (yyval.
node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
11732#line 11728 "parse.c"
11736#line 4616 "parse.y"
11738 (yyval.
node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].
num), &(yyloc));
11740#line 11736 "parse.c"
11744#line 4622 "parse.y"
11751#line 11747 "parse.c"
11755#line 4631 "parse.y"
11762#line 11758 "parse.c"
11766#line 4638 "parse.y"
11769 (yyval.
node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
11773#line 11769 "parse.c"
11777#line 4649 "parse.y"
11780 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11784#line 11780 "parse.c"
11788#line 4658 "parse.y"
11795#line 11791 "parse.c"
11799#line 4667 "parse.y"
11806#line 11802 "parse.c"
11810#line 4674 "parse.y"
11813 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
11817#line 11813 "parse.c"
11821#line 4683 "parse.y"
11828#line 11824 "parse.c"
11832#line 4692 "parse.y"
11839#line 11835 "parse.c"
11843#line 4701 "parse.y"
11850#line 11846 "parse.c"
11854#line 4708 "parse.y"
11857 (yyval.
node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].
node));
11861#line 11857 "parse.c"
11865#line 4717 "parse.y"
11872#line 11868 "parse.c"
11876#line 4724 "parse.y"
11879 (yyval.
node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].
node));
11883#line 11879 "parse.c"
11887#line 4733 "parse.y"
11898#line 11894 "parse.c"
11902#line 4744 "parse.y"
11905 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11918#line 11914 "parse.c"
11922#line 4762 "parse.y"
11929#line 11925 "parse.c"
11933#line 4769 "parse.y"
11936 (yyval.
node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
11940#line 11936 "parse.c"
11944#line 4778 "parse.y"
11955#line 11951 "parse.c"
11959#line 4789 "parse.y"
11962 NODE *head = (yyvsp[-1].
node), *tail = (yyvsp[0].node);
11964 (yyval.
node) = tail;
11967 (yyval.
node) = head;
11977 head = list_append(p,
NEW_DSTR(
Qnil, &(yyloc)), head);
11980 (yyval.
node) = list_append(p, head, tail);
11998#line 11994 "parse.c"
12002#line 4832 "parse.y"
12009#line 12005 "parse.c"
12013#line 4839 "parse.y"
12022#line 12018 "parse.c"
12026#line 4848 "parse.y"
12031#line 12027 "parse.c"
12035#line 4852 "parse.y"
12041#line 12037 "parse.c"
12045#line 4857 "parse.y"
12050#line 12046 "parse.c"
12054#line 4861 "parse.y"
12059#line 12055 "parse.c"
12063#line 4865 "parse.y"
12068#line 12064 "parse.c"
12072#line 4870 "parse.y"
12082 if ((yyvsp[-1].node)) (yyvsp[-1].node)->flags &= ~NODE_FL_NEWLINE;
12083 (yyval.
node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
12087#line 12083 "parse.c"
12091#line 4887 "parse.y"
12098#line 12094 "parse.c"
12102#line 4894 "parse.y"
12109#line 12105 "parse.c"
12113#line 4901 "parse.y"
12120#line 12116 "parse.c"
12124#line 4915 "parse.y"
12132#line 12128 "parse.c"
12136#line 4931 "parse.y"
12140 (yyval.
node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
12144#line 12140 "parse.c"
12148#line 4942 "parse.y"
12151 (yyval.
node) = (yyvsp[0].node);
12156#line 12152 "parse.c"
12160#line 4964 "parse.y"
12161 {(yyval.
id) =
KWD2EID(nil, (yyvsp[0].
id));}
12162#line 12158 "parse.c"
12166#line 4965 "parse.y"
12167 {(yyval.
id) =
KWD2EID(self, (yyvsp[0].
id));}
12168#line 12164 "parse.c"
12172#line 4966 "parse.y"
12173 {(yyval.
id) =
KWD2EID(
true, (yyvsp[0].
id));}
12174#line 12170 "parse.c"
12178#line 4967 "parse.y"
12179 {(yyval.
id) =
KWD2EID(
false, (yyvsp[0].
id));}
12180#line 12176 "parse.c"
12184#line 4968 "parse.y"
12185 {(yyval.
id) =
KWD2EID(_FILE__, (yyvsp[0].
id));}
12186#line 12182 "parse.c"
12190#line 4969 "parse.y"
12191 {(yyval.
id) =
KWD2EID(_LINE__, (yyvsp[0].
id));}
12192#line 12188 "parse.c"
12196#line 4970 "parse.y"
12197 {(yyval.
id) =
KWD2EID(_ENCODING__, (yyvsp[0].
id));}
12198#line 12194 "parse.c"
12202#line 4974 "parse.y"
12205 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
12215#line 12211 "parse.c"
12219#line 4987 "parse.y"
12222 if (!((yyval.
node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.
node) =
NEW_BEGIN(0, &(yyloc));
12226#line 12222 "parse.c"
12230#line 4996 "parse.y"
12233 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12237#line 12233 "parse.c"
12241#line 5003 "parse.y"
12244 (yyval.
node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12248#line 12244 "parse.c"
12252#line 5016 "parse.y"
12257#line 12253 "parse.c"
12261#line 5021 "parse.y"
12263 (yyval.
node) = (yyvsp[-1].node);
12265#line 12261 "parse.c"
12269#line 5025 "parse.y"
12276#line 12272 "parse.c"
12280#line 5036 "parse.y"
12283 (yyval.
node) = (yyvsp[-1].node);
12289#line 12285 "parse.c"
12293#line 5045 "parse.y"
12295 add_forwarding_args(p);
12297 (yyval.
node) = new_args_forward_def(p, (yyvsp[-3].node), &(yyloc));
12303#line 12299 "parse.c"
12307#line 5055 "parse.y"
12309 add_forwarding_args(p);
12311 (yyval.
node) = new_args_forward_def(p, 0, &(yyloc));
12317#line 12313 "parse.c"
12321#line 5067 "parse.y"
12327#line 12323 "parse.c"
12331#line 5073 "parse.y"
12334 (yyval.
node) = (yyvsp[-1].node);
12338#line 12334 "parse.c"
12342#line 5082 "parse.y"
12344 (yyval.
node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
12346#line 12342 "parse.c"
12350#line 5086 "parse.y"
12352 (yyval.
node) = new_args_tail(p, (yyvsp[-1].node),
Qnone, (yyvsp[0].
id), &(yylsp[-1]));
12354#line 12350 "parse.c"
12358#line 5090 "parse.y"
12360 (yyval.
node) = new_args_tail(p,
Qnone, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
12362#line 12358 "parse.c"
12366#line 5094 "parse.y"
12368 (yyval.
node) = new_args_tail(p,
Qnone,
Qnone, (yyvsp[0].
id), &(yylsp[0]));
12370#line 12366 "parse.c"
12374#line 5100 "parse.y"
12376 (yyval.
node) = (yyvsp[0].node);
12378#line 12374 "parse.c"
12382#line 5104 "parse.y"
12386#line 12382 "parse.c"
12390#line 5110 "parse.y"
12392 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].
node), &(yyloc));
12394#line 12390 "parse.c"
12398#line 5114 "parse.y"
12400 (yyval.
node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].
node), (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
12402#line 12398 "parse.c"
12406#line 5118 "parse.y"
12408 (yyval.
node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].
node),
Qnone,
Qnone, (yyvsp[0].node), &(yyloc));
12410#line 12406 "parse.c"
12414#line 5122 "parse.y"
12416 (yyval.
node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].
node),
Qnone, (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
12418#line 12414 "parse.c"
12422#line 5126 "parse.y"
12424 (yyval.
node) = new_args(p, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
12426#line 12422 "parse.c"
12430#line 5130 "parse.y"
12432 (yyval.
node) = new_args(p, (yyvsp[-5].node),
Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
12434#line 12430 "parse.c"
12438#line 5134 "parse.y"
12442#line 12438 "parse.c"
12446#line 5138 "parse.y"
12448 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node), (yyvsp[-1].
id),
Qnone, (yyvsp[0].node), &(yyloc));
12450#line 12446 "parse.c"
12454#line 5142 "parse.y"
12456 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].
node), &(yyloc));
12458#line 12454 "parse.c"
12462#line 5146 "parse.y"
12466#line 12462 "parse.c"
12470#line 5150 "parse.y"
12472 (yyval.
node) = new_args(p,
Qnone, (yyvsp[-3].node),
Qnone, (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
12474#line 12470 "parse.c"
12478#line 5154 "parse.y"
12482#line 12478 "parse.c"
12486#line 5158 "parse.y"
12488 (yyval.
node) = new_args(p,
Qnone,
Qnone, (yyvsp[-3].
id), (yyvsp[-1].
node), (yyvsp[0].node), &(yyloc));
12490#line 12486 "parse.c"
12494#line 5162 "parse.y"
12498#line 12494 "parse.c"
12502#line 5166 "parse.y"
12507#line 12503 "parse.c"
12511#line 5173 "parse.y"
12518#line 12514 "parse.c"
12522#line 5182 "parse.y"
12524 static const char mesg[] =
"formal argument cannot be a constant";
12531#line 12527 "parse.c"
12535#line 5191 "parse.y"
12537 static const char mesg[] =
"formal argument cannot be an instance variable";
12544#line 12540 "parse.c"
12548#line 5200 "parse.y"
12550 static const char mesg[] =
"formal argument cannot be a global variable";
12557#line 12553 "parse.c"
12561#line 5209 "parse.y"
12563 static const char mesg[] =
"formal argument cannot be a class variable";
12570#line 12566 "parse.c"
12574#line 5221 "parse.y"
12576 formal_argument(p, (yyvsp[0].
id));
12578 (yyval.
id) = (yyvsp[0].
id);
12580#line 12576 "parse.c"
12584#line 5229 "parse.y"
12589 (yyval.
id) = (yyvsp[0].
id);
12591#line 12587 "parse.c"
12595#line 5238 "parse.y"
12603#line 12599 "parse.c"
12607#line 5246 "parse.y"
12610 ID tid = internal_id(p);
12612 loc.beg_pos = (yylsp[-1]).beg_pos;
12613 loc.end_pos = (yylsp[-1]).beg_pos;
12615 if (dyna_in_block(p)) {
12626#line 12622 "parse.c"
12630#line 5269 "parse.y"
12633 (yyval.
node) = (yyvsp[-2].node);
12636 rb_discard_node(p, (yyvsp[0].node));
12640#line 12636 "parse.c"
12644#line 5282 "parse.y"
12646 arg_var(p, formal_argument(p, (yyvsp[0].
id)));
12649 (yyval.
id) = (yyvsp[0].
id);
12651#line 12647 "parse.c"
12655#line 5291 "parse.y"
12659 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].
node), &(yyloc)), &(yyloc));
12663#line 12659 "parse.c"
12667#line 5299 "parse.y"
12675#line 12671 "parse.c"
12679#line 5309 "parse.y"
12682 (yyval.
node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].
node), &(yyloc)), &(yyloc));
12686#line 12682 "parse.c"
12690#line 5316 "parse.y"
12697#line 12693 "parse.c"
12701#line 5325 "parse.y"
12704 (yyval.
node) = (yyvsp[0].node);
12708#line 12704 "parse.c"
12712#line 5332 "parse.y"
12715 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].
node));
12719#line 12715 "parse.c"
12723#line 5342 "parse.y"
12726 (yyval.
node) = (yyvsp[0].node);
12730#line 12726 "parse.c"
12734#line 5349 "parse.y"
12737 (yyval.
node) = kwd_append((yyvsp[-2].node), (yyvsp[0].
node));
12741#line 12737 "parse.c"
12745#line 5362 "parse.y"
12751#line 12747 "parse.c"
12755#line 5370 "parse.y"
12757 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
12759 (yyval.
id) = (yyvsp[0].
id);
12763#line 12759 "parse.c"
12767#line 5378 "parse.y"
12770 (yyval.
id) = internal_id(p);
12771 arg_var(p, (yyval.
id));
12775#line 12771 "parse.c"
12779#line 5388 "parse.y"
12783 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
12787#line 12783 "parse.c"
12791#line 5398 "parse.y"
12795 (yyval.
node) =
NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].
node), &(yyloc)), &(yyloc));
12799#line 12795 "parse.c"
12803#line 5408 "parse.y"
12806 (yyval.
node) = (yyvsp[0].node);
12810#line 12806 "parse.c"
12814#line 5415 "parse.y"
12817 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].
node));
12821#line 12817 "parse.c"
12825#line 5424 "parse.y"
12828 (yyval.
node) = (yyvsp[0].node);
12832#line 12828 "parse.c"
12836#line 5431 "parse.y"
12839 (yyval.
node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].
node));
12843#line 12839 "parse.c"
12847#line 5444 "parse.y"
12849 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
12851 (yyval.
id) = (yyvsp[0].
id);
12855#line 12851 "parse.c"
12859#line 5452 "parse.y"
12862 (yyval.
id) = internal_id(p);
12863 arg_var(p, (yyval.
id));
12867#line 12863 "parse.c"
12871#line 5466 "parse.y"
12873 arg_var(p, shadowing_lvar(p,
get_id((yyvsp[0].
id))));
12875 (yyval.
id) = (yyvsp[0].
id);
12879#line 12875 "parse.c"
12883#line 5476 "parse.y"
12885 (yyval.
id) = (yyvsp[0].
id);
12887#line 12883 "parse.c"
12891#line 5480 "parse.y"
12895#line 12891 "parse.c"
12899#line 5486 "parse.y"
12902 (yyval.
node) = (yyvsp[0].node);
12904#line 12900 "parse.c"
12908#line 5490 "parse.y"
12910#line 12906 "parse.c"
12914#line 5491 "parse.y"
12917 switch (
nd_type((yyvsp[-1].node))) {
12926 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
12932 (yyval.
node) = (yyvsp[-1].node);
12936#line 12932 "parse.c"
12940#line 5516 "parse.y"
12943 (yyval.
node) = (yyvsp[-1].node);
12947#line 12943 "parse.c"
12951#line 5527 "parse.y"
12960 if (assocs->nd_head &&
12964 tail = tail->nd_next->nd_head->nd_head;
12966 assocs = list_concat(assocs, tail);
12968 (yyval.
node) = assocs;
12972#line 12968 "parse.c"
12976#line 5550 "parse.y"
12983 (yyval.
node) = list_append(p,
NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].
node));
12987#line 12983 "parse.c"
12991#line 5561 "parse.y"
12998#line 12994 "parse.c"
13002#line 5568 "parse.y"
13005 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
13006 (yyval.
node) = list_append(p,
NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].
node));
13010#line 13006 "parse.c"
13014#line 5576 "parse.y"
13018 !((yyvsp[0].node)->nd_head && (yyvsp[0].
node)->
nd_head->nd_alen)) {
13019 static VALUE empty_hash;
13027 (yyval.
node) = list_append(p,
NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
13031#line 13027 "parse.c"
13035#line 5644 "parse.y"
13037#line 13033 "parse.c"
13041#line 5645 "parse.y"
13043#line 13039 "parse.c"
13047#line 5649 "parse.y"
13049#line 13045 "parse.c"
13053#line 5653 "parse.y"
13057#line 13053 "parse.c"
13061#line 13057 "parse.c"
13088 const int yylhs = yyr1[yyn] -
YYNTOKENS;
13089 const int yyi = yypgoto[yylhs] + *yyssp;
13090 yystate = (0 <= yyi && yyi <=
YYLAST && yycheck[yyi] == *yyssp
13092 : yydefgoto[yylhs]);
13111 = {yyssp, yytoken, &yylloc};
13112 char const *yymsgp =
YY_(
"syntax error");
13113 int yysyntax_error_status;
13114 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13115 if (yysyntax_error_status == 0)
13117 else if (yysyntax_error_status == -1)
13119 if (yymsg != yymsgbuf)
13125 yysyntax_error_status
13126 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13132 yymsg_alloc =
sizeof yymsgbuf;
13136 yyerror (&yylloc, p, yymsgp);
13137 if (yysyntax_error_status ==
YYENOMEM)
13142 yyerror_range[1] = yylloc;
13143 if (yyerrstatus == 3)
13156 yydestruct (
"Error: discarding",
13157 yytoken, &
yylval, &yylloc, p);
13195 yyn = yypact[yystate];
13201 yyn = yytable[yyn];
13211 yyerror_range[1] = *yylsp;
13212 yydestruct (
"Error: popping",
13223 yyerror_range[2] = yylloc;
13254 yyerror (&yylloc, p,
YY_(
"memory exhausted"));
13268 yydestruct (
"Cleanup: discarding lookahead",
13269 yytoken, &
yylval, &yylloc, p);
13275 while (yyssp != yyss)
13277 yydestruct (
"Cleanup: popping",
13285 if (yymsg != yymsgbuf)
13290#line 5657 "parse.y"
13295# define yylval (*p->lval)
13304# define set_yylval_node(x) { \
13305 YYLTYPE _cur_loc; \
13306 rb_parser_set_location(p, &_cur_loc); \
13307 yylval.node = (x); \
13309# define set_yylval_str(x) \
13311 set_yylval_node(NEW_STR(x, &_cur_loc)); \
13312 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13314# define set_yylval_literal(x) \
13316 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
13317 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13319# define set_yylval_num(x) (yylval.num = (x))
13320# define set_yylval_id(x) (yylval.id = (x))
13321# define set_yylval_name(x) (yylval.id = (x))
13322# define yylval_id() (yylval.id)
13327 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
13329# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
13330# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
13331# define set_yylval_id(x) (void)(x)
13332# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
13333# define set_yylval_literal(x) add_mark_object(p, (x))
13334# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
13335# define yylval_id() yylval.id
13336# define _cur_loc NULL_LOC
13339#define set_yylval_noname() set_yylval_id(keyword_nil)
13342#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
13343#define dispatch_scan_event(p, t) ((void)0)
13344#define dispatch_delayed_token(p, t) ((void)0)
13345#define has_delayed_token(p) (0)
13347#define literal_flush(p, ptr) ((void)(ptr))
13349#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
13352intern_sym(
const char *
name)
13354 ID id = rb_intern_const(
name);
13369 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(
t),
str);
13377 if (!ripper_has_scan_event(p))
return;
13378 add_mark_object(p, yylval_rval = ripper_scan_event_val(p,
t));
13380#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
13386 const char *saved_tokp = p->
lex.
ptok;
13388 if (
NIL_P(p->delayed.token))
return;
13391 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(
t), p->delayed.token));
13392 p->delayed.token =
Qnil;
13396#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
13397#define has_delayed_token(p) (!NIL_P(p->delayed.token))
13421 int column = 1, nonspc = 0, i;
13423 if (*
ptr ==
'\t') {
13427 if (*
ptr !=
' ' && *
ptr !=
'\t') {
13433 ptinfo->
indent = column;
13434 ptinfo->
nonspc = nonspc;
13446 token_info_setup(ptinfo, p->
lex.
pbeg, loc);
13456 if (!ptinfo_beg)
return;
13460 token_info_warn(p,
token, ptinfo_beg, 1, loc);
13469 if (!ptinfo_beg)
return;
13475 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
13478 ptinfo_beg->
token);
13487 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
13489 if (!ptinfo_beg)
return;
13490 token_info_setup(ptinfo_end, p->
lex.
pbeg, loc);
13494 if (!same && ptinfo_beg->
indent < ptinfo_end->
indent)
return;
13496 "mismatched indentations at '%s' with '%s' at %d",
13522 else if (yylloc->beg_pos.lineno == lineno) {
13541 (yylloc->beg_pos.lineno == yylloc->end_pos.lineno &&
13542 yylloc->beg_pos.column == yylloc->end_pos.column)) {
13546 parser_show_error_line(p, yylloc);
13554 const int max_line_margin = 30;
13555 const char *
ptr, *ptr_end, *pt, *pb;
13556 const char *pre =
"", *post =
"", *pend;
13557 const char *
code =
"", *caret =
"";
13564 if (!yylloc)
return;
13565 pend = RSTRING_END(
str);
13566 if (pend > pbeg && pend[-1] ==
'\n') {
13567 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
13571 if (lineno == yylloc->end_pos.lineno &&
13572 (pend - pbeg) > yylloc->end_pos.column) {
13573 pt = pbeg + yylloc->end_pos.column;
13576 ptr = ptr_end = pt;
13577 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
13578 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
13580 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
13581 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
13587 if (
ptr > pbeg) pre =
"...";
13589 if (ptr_end < pend) {
13591 if (ptr_end < pend) post =
"...";
13595 if (lineno == yylloc->beg_pos.lineno) {
13596 pb += yylloc->beg_pos.column;
13597 if (pb > pt) pb = pt;
13600 if (len <= 4 && yylloc->beg_pos.
lineno == yylloc->end_pos.lineno) {
13603 if (
RTEST(errbuf)) {
13605 if (
RSTRING_LEN(mesg) > 0 && *(RSTRING_END(mesg)-1) !=
'\n')
13612#define CSI_BEGIN "\033["
13623 (
int)(pt - pb), pb,
13624 (
int)(ptr_end - pt), pt,
13631 lim = pt < pend ? pt : pend;
13638 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
13644 memset(p2,
'~', (lim -
ptr));
13658 const char *pcur = 0, *ptok = 0;
13667 dispatch1(parse_error,
STR_NEW2(msg));
13684vtable_size(
const struct vtable *tbl)
13710#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
13728#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
13744 if (
tbl->pos ==
tbl->capa) {
13745 tbl->capa =
tbl->capa * 2;
13750#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
13761 if (
tbl->pos < n) {
13767#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
13776 for (i = 0; i <
tbl->pos; i++) {
13777 if (
tbl->tbl[i] ==
id) {
13791debug_lines(
VALUE fname)
13794 CONST_ID(script_lines,
"SCRIPT_LINES__");
13797 if (RB_TYPE_P(hash,
T_HASH)) {
13813yycompile0(
VALUE arg)
13830 if (!e_option_supplied(p)) {
13836#define RUBY_DTRACE_PARSE_HOOK(name) \
13837 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
13838 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
13863 NODE *body = parser_append_options(p, tree->nd_body);
13867 tree->nd_body = prelude;
13879 if (
NIL_P(fname)) {
13899must_be_ascii_compatible(
VALUE s)
13911 char *beg, *end, *start;
13922 end = memchr(beg,
'\n',
len);
13923 if (end)
len = ++end - beg;
13932 if (
NIL_P(line))
return line;
13933 must_be_ascii_compatible(line);
13959 return yycompile(vparser, p, fname, line);
13971 must_be_ascii_compatible(s);
13972 return parser_compile_string(vparser,
f, s, line);
13994 return yycompile(vparser, p, fname, start);
14010 p->
lex.
gets = lex_generic_gets;
14015 return yycompile(vparser, p, fname, start);
14019#define STR_FUNC_ESCAPE 0x01
14020#define STR_FUNC_EXPAND 0x02
14021#define STR_FUNC_REGEXP 0x04
14022#define STR_FUNC_QWORDS 0x08
14023#define STR_FUNC_SYMBOL 0x10
14024#define STR_FUNC_INDENT 0x20
14025#define STR_FUNC_LABEL 0x40
14026#define STR_FUNC_LIST 0x4000
14027#define STR_FUNC_TERM 0x8000
14058#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
14059#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
14060#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
14061#define peek(p,c) peek_n(p, (c), 0)
14062#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
14063#define peekc(p) peekc_n(p, 0)
14064#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
14082#define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
14106 else if (
NIL_P(v)) {
14127 if (
peek(p,
'\n')) {
14142 c = (
unsigned char)*p->
lex.
pcur++;
14144 c = parser_cr(p, c);
14153 if (c == -1)
return;
14160#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
14162#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
14163#define tok(p) (p)->tokenbuf
14164#define toklen(p) (p)->tokidx
14170 while (ptr < p->
lex.pend) {
14171 int c = (
unsigned char)*
ptr++;
14172 int eol = (c ==
'\n' || c ==
'#');
14233#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
14236escaped_control_code(
int c)
14262#define WARN_SPACE_CHAR(c, prefix) \
14263 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
14267 int regexp_literal,
int wide)
14273 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
14274 yyerror0(
"invalid Unicode escape");
14275 return wide && numlen > 0;
14277 if (codepoint > 0x10ffff) {
14278 yyerror0(
"invalid Unicode codepoint (too large)");
14281 if ((codepoint & 0xfffff800) == 0xd800) {
14282 yyerror0(
"invalid Unicode codepoint");
14285 if (regexp_literal) {
14288 else if (codepoint >= 0x80) {
14290 if (*encp && utf8 != *encp) {
14293 parser_show_error_line(p, &loc);
14297 tokaddmbc(p, codepoint, *encp);
14300 tokadd(p, codepoint);
14308 int term,
int symbol_literal,
int regexp_literal)
14315 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
14317 const int open_brace =
'{', close_brace =
'}';
14319 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
14321 if (
peek(p, open_brace)) {
14322 const char *second =
NULL;
14323 int c,
last = nextc(p);
14326 while (c != close_brace) {
14327 if (c ==
term)
goto unterminated;
14328 if (second == multiple_codepoints)
14330 if (regexp_literal) tokadd(p,
last);
14331 if (!tokadd_codepoint(p, encp, regexp_literal,
TRUE)) {
14338 if (
term == -1 && !second)
14339 second = multiple_codepoints;
14342 if (c != close_brace) {
14345 yyerror0(
"unterminated Unicode escape");
14348 if (second && second != multiple_codepoints) {
14358 if (regexp_literal) tokadd(p, close_brace);
14362 if (!tokadd_codepoint(p, encp, regexp_literal,
FALSE)) {
14369#define ESCAPE_CONTROL 1
14370#define ESCAPE_META 2
14378 switch (c = nextc(p)) {
14403 case '0':
case '1':
case '2':
case '3':
14404 case '4':
case '5':
case '6':
case '7':
14411 c = tok_hex(p, &numlen);
14412 if (numlen == 0)
return 0;
14423 if ((c = nextc(p)) !=
'-') {
14426 if ((c = nextc(p)) ==
'\\') {
14427 switch (
peekc(p)) {
14428 case 'u':
case 'U':
14432 return read_escape(p, flags|
ESCAPE_META, encp) | 0x80;
14434 else if (c == -1 || !
ISASCII(c))
goto eof;
14436 int c2 = escaped_control_code(c);
14445 else if (
ISCNTRL(c))
goto eof;
14446 return ((c & 0xff) | 0x80);
14450 if ((c = nextc(p)) !=
'-') {
14455 if ((c = nextc(p))==
'\\') {
14456 switch (
peekc(p)) {
14457 case 'u':
case 'U':
14465 else if (c == -1 || !
ISASCII(c))
goto eof;
14467 int c2 = escaped_control_code(c);
14486 else if (
ISCNTRL(c))
goto eof;
14492 yyerror0(
"Invalid escape character syntax");
14516 switch (c = nextc(p)) {
14520 case '0':
case '1':
case '2':
case '3':
14521 case '4':
case '5':
case '6':
case '7':
14524 if (numlen == 0)
goto eof;
14532 tok_hex(p, &numlen);
14533 if (numlen == 0)
return -1;
14540 if ((c = nextc(p)) !=
'-') {
14550 if ((c = nextc(p)) !=
'-') {
14562 if ((c = nextc(p)) ==
'\\') {
14565 else if (c == -1)
goto eof;
14571 yyerror0(
"Invalid escape character syntax");
14591 while (c = nextc(p),
ISALPHA(c)) {
14615 parser_show_error_line(p, &loc);
14623 int len = parser_precise_mbclen(p, p->
lex.
pcur-1);
14624 if (
len < 0)
return -1;
14632simple_re_meta(
int c)
14635 case '$':
case '*':
case '+':
case '.':
14636 case '?':
case '^':
case '|':
14637 case ')':
case ']':
case '}':
case '>':
14645parser_update_heredoc_indent(
struct parser_params *p,
int c)
14655 else if (c ==
'\t') {
14660 else if (c !=
'\n') {
14676 parser_show_error_line(p, &loc);
14682 const char *pos = p->
lex.
pcur;
14684 parser_mixed_error(p, enc1, enc2);
14690 int func,
int term,
int paren,
long *nest,
14694 bool erred =
false;
14696#define mixed_error(enc1, enc2) \
14697 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
14698#define mixed_escape(beg, enc1, enc2) \
14699 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
14701 while ((c = nextc(p)) != -1) {
14703 parser_update_heredoc_indent(p, c);
14706 if (paren && c == paren) {
14709 else if (c ==
term) {
14710 if (!nest || !*nest) {
14718 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
14723 else if (c ==
'\\') {
14755 if (c == -1)
return -1;
14761 if (c ==
term && !simple_re_meta(c)) {
14766 if ((c = tokadd_escape(p,
enc)) < 0)
14768 if (*
enc && *
enc != *encp) {
14776 c = read_escape(p, 0,
enc);
14781 else if (c !=
term && !(paren && c == paren)) {
14788 else if (!parser_isascii(p)) {
14793 else if (*
enc != *encp) {
14797 if (tokadd_mbchar(p, c) == -1)
return -1;
14808 else if (*
enc != *encp) {
14827#define NEW_STRTERM(func, term, paren) \
14828 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
14835 if (!ripper_is_node_yylval(content))
14836 content = ripper_new_yylval(p, 0, 0, content);
14847 if (
yylval.val != content)
14852#define flush_string_content(p, enc) ((void)(enc))
14859#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
14860#define SPECIAL_PUNCT(idx) ( \
14861 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
14862 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
14863 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
14864 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
14865 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
14867const unsigned int ruby_global_name_punct_bits[] = {
14873#undef SPECIAL_PUNCT
14876static enum yytokentype
14877parser_peek_variable_name(struct parser_params *p)
14880 const char *ptr = p->lex.pcur;
14882 if (ptr + 1 >= p->lex.pend) return 0;
14886 if ((c = *ptr) == '-') {
14887 if (++ptr >= p->lex.pend) return 0;
14890 else if (is_global_name_punct(c) || ISDIGIT(c)) {
14891 return tSTRING_DVAR;
14895 if ((c = *ptr) == '@') {
14896 if (++ptr >= p->lex.pend) return 0;
14902 p->command_start = TRUE;
14903 return tSTRING_DBEG;
14907 if (!ISASCII(c) || c == '_' || ISALPHA(c))
14908 return tSTRING_DVAR;
14912#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
14913#define IS_END() IS_lex_state(EXPR_END_ANY)
14914#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
14915#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
14916#define IS_LABEL_POSSIBLE() (\
14917 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
14919#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
14920#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
14922static inline enum yytokentype
14923parser_string_term(struct parser_params *p, int func)
14925 p->lex.strterm = 0;
14926 if (func & STR_FUNC_REGEXP) {
14927 set_yylval_num(regx_options(p));
14928 dispatch_scan_event(p, tREGEXP_END);
14929 SET_LEX_STATE(EXPR_END);
14930 return tREGEXP_END;
14932 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
14934 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14937 SET_LEX_STATE(EXPR_END);
14938 return tSTRING_END;
14941static enum yytokentype
14942parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
14944 int func = (int)quote->u1.func;
14945 int term = (int)quote->u3.term;
14946 int paren = (int)quote->u2.paren;
14948 rb_encoding *enc = p->enc;
14949 rb_encoding *base_enc = 0;
14952 if (func & STR_FUNC_TERM) {
14953 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
14954 SET_LEX_STATE(EXPR_END);
14955 p->lex.strterm = 0;
14956 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
14959 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
14960 do {c = nextc(p);} while (ISSPACE(c));
14963 if (func & STR_FUNC_LIST) {
14964 quote->u1.func &= ~STR_FUNC_LIST;
14967 if (c == term && !quote->u0.nest) {
14968 if (func & STR_FUNC_QWORDS) {
14969 quote->u1.func |= STR_FUNC_TERM;
14970 pushback(p, c); /* dispatch the term at tSTRING_END */
14971 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14974 return parser_string_term(p, func);
14978 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
14982 if ((func & STR_FUNC_EXPAND) && c == '#') {
14983 int t = parser_peek_variable_name(p);
14989 if (tokadd_string(p, func, term, paren, "e->u0.nest,
14990 &enc, &base_enc) == -1) {
14993# define unterminated_literal(mesg) yyerror0(mesg)
14995# define unterminated_literal(mesg) compile_error(p, mesg)
14997 literal_flush(p, p->lex.pcur);
14998 if (func & STR_FUNC_QWORDS) {
14999 /* no content to add, bailing out here */
15000 unterminated_literal("unterminated list meets end of file");
15001 p->lex.strterm = 0;
15002 return tSTRING_END;
15004 if (func & STR_FUNC_REGEXP) {
15005 unterminated_literal("unterminated regexp meets end of file");
15008 unterminated_literal("unterminated string meets end of file");
15010 quote->u1.func |= STR_FUNC_TERM;
15015 lit = STR_NEW3(tok(p), toklen(p), enc, func);
15016 set_yylval_str(lit);
15017 flush_string_content(p, enc);
15019 return tSTRING_CONTENT;
15022static enum yytokentype
15023heredoc_identifier(struct parser_params *p)
15026 * term_len is length of `<<"END"` except `END`,
15027 * in this case term_len is 4 (<, <, " and ").
15029 long len, offset = p->lex.pcur - p->lex.pbeg;
15030 int c = nextc(p), term, func = 0, quote = 0;
15031 enum yytokentype token = tSTRING_BEG;
15036 func = STR_FUNC_INDENT;
15039 else if (c == '~') {
15041 func = STR_FUNC_INDENT;
15047 func |= str_squote; goto quoted;
15059 while ((c = nextc(p)) !=
term) {
15060 if (c == -1 || c ==
'\r' || c ==
'\n') {
15061 yyerror(
NULL, p,
"unterminated here document identifier");
15068 if (!parser_is_identchar(p)) {
15071 pushback(p, indent > 0 ?
'~' :
'-');
15077 int n = parser_precise_mbclen(p, p->
lex.
pcur-1);
15078 if (n < 0)
return 0;
15080 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
15087 yyerror(
NULL, p,
"too long here document identifier");
15096 here->length = (
int)
len;
15097 here->
quote = quote;
15125dedent_string(
VALUE string,
int width)
15132 for (i = 0; i <
len && col < width; i++) {
15133 if (
str[i] ==
' ') {
15136 else if (
str[i] ==
'\t') {
15138 if (n > width)
break;
15159 NODE *node, *str_node, *prev_node;
15161 VALUE prev_lit = 0;
15163 if (indent <= 0)
return root;
15167 prev_node = node = str_node =
root;
15171 VALUE lit = str_node->nd_lit;
15173 dedent_string(lit, indent);
15178 else if (!literal_concat0(p, prev_lit, lit)) {
15182 NODE *end = node->nd_end;
15183 node = prev_node->nd_next = node->nd_next;
15189 node->nd_end = end;
15194 while ((node = (prev_node = node)->
nd_next) != 0) {
15197 if ((str_node = node->nd_head) != 0) {
15213 if (indent <= 0)
return array;
15215 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
15235 col = dedent_string(
input, wid);
15241whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
15250 if (n < 0)
return FALSE;
15251 if (n > 0 &&
ptr[
len] !=
'\n') {
15255 return strncmp(eos,
ptr,
len) == 0;
15261 if (strncmp(p->
lex.
pcur, word,
len))
return 0;
15266 case '\0':
case '\004':
case '\032':
return 1;
15271#define NUM_SUFFIX_R (1<<0)
15272#define NUM_SUFFIX_I (1<<1)
15273#define NUM_SUFFIX_ALL 3
15279 const char *lastp = p->
lex.
pcur;
15281 while ((c = nextc(p)) != -1) {
15284 mask &= ~NUM_SUFFIX_I;
15286 mask &= ~NUM_SUFFIX_R;
15291 mask &= ~NUM_SUFFIX_R;
15326 return set_number_literal(p, v,
type,
suffix);
15343#define dispatch_heredoc_end(p) ((void)0)
15349 int c, func, indent = 0;
15350 const char *eos, *
ptr, *ptr_end;
15358 len = here->length;
15361 if ((c = nextc(p)) == -1) {
15385 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
15403 else if (whole_match_p(p, eos,
len, indent)) {
15417 if (ptr_end >
ptr) {
15418 switch (ptr_end[-1]) {
15420 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
15431 while (
ptr + i < ptr_end && parser_update_heredoc_indent(p,
ptr[i]))
15445 if (nextc(p) == -1) {
15451 }
while (!whole_match_p(p, eos,
len, indent));
15457 int t = parser_peek_variable_name(p);
15471 if ((c = tokadd_string(p, func,
'\n', 0,
NULL, &
enc, &base_enc)) == -1) {
15487 tokadd(p, nextc(p));
15493 if ((c = nextc(p)) == -1)
goto error;
15494 }
while (!whole_match_p(p, eos,
len, indent));
15519 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator",
WARN_I(c));
15522 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator",
WARN_I(c));
15537 switch (id_type(
get_id(lhs))) {
15541# define ERR(mesg) yyerror0(mesg)
15543# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
15546 ERR(
"formal argument cannot be a constant");
15549 ERR(
"formal argument cannot be an instance variable");
15552 ERR(
"formal argument cannot be a global variable");
15555 ERR(
"formal argument cannot be a class variable");
15558 ERR(
"formal argument must be local variable");
15562 shadowing_lvar(p, lhs);
15569 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
15578 if (
len > 5 &&
name[nlen =
len - 5] ==
'-') {
15582 if (
len > 4 &&
name[nlen =
len - 4] ==
'-') {
15618 for (i = 0; i < n; ++i) {
15630 while (
ptr < ptr_end) {
15640static int parser_invalid_pragma_value(
struct parser_params *p,
const char *
name,
const char *val);
15643magic_comment_encoding(
struct parser_params *p,
const char *
name,
const char *val)
15645 if (!comment_at_top(p)) {
15648 parser_set_encode(p, val);
15655 case 't':
case 'T':
15660 case 'f':
case 'F':
15666 return parser_invalid_pragma_value(p,
name, val);
15670parser_invalid_pragma_value(
struct parser_params *p,
const char *
name,
const char *val)
15677parser_set_token_info(
struct parser_params *p,
const char *
name,
const char *val)
15679 int b = parser_get_bool(p,
name, val);
15684parser_set_compile_option_flag(
struct parser_params *p,
const char *
name,
const char *val)
15693 b = parser_get_bool(p,
name, val);
15703parser_set_shareable_constant_value(
struct parser_params *p,
const char *
name,
const char *val)
15705 for (
const char *s = p->
lex.
pbeg, *e = p->
lex.
pcur; s < e; ++s) {
15706 if (*s ==
' ' || *s ==
'\t')
continue;
15707 if (*s ==
'#')
break;
15713 case 'n':
case 'N':
15719 case 'l':
case 'L':
15725 case 'e':
case 'E':
15726 if (
STRCASECMP(val,
"experimental_copy") == 0) {
15730 if (
STRCASECMP(val,
"experimental_everything") == 0) {
15736 parser_invalid_pragma_value(p,
name, val);
15739# if WARN_PAST_SCOPE
15741parser_set_past_scope(
struct parser_params *p,
const char *
name,
const char *val)
15743 int b = parser_get_bool(p,
name, val);
15744 if (b >= 0) p->past_scope_enabled = b;
15755 {
"coding", magic_comment_encoding, parser_encode_length},
15756 {
"encoding", magic_comment_encoding, parser_encode_length},
15757 {
"frozen_string_literal", parser_set_compile_option_flag},
15758 {
"shareable_constant_value", parser_set_shareable_constant_value},
15759 {
"warn_indent", parser_set_token_info},
15760# if WARN_PAST_SCOPE
15761 {
"warn_past_scope", parser_set_past_scope},
15766magic_comment_marker(
const char *
str,
long len)
15773 if (
str[i-1] ==
'*' &&
str[i-2] ==
'-') {
15774 return str + i + 1;
15779 if (i + 1 >=
len)
return 0;
15780 if (
str[i+1] !=
'-') {
15783 else if (
str[i-1] !=
'-') {
15787 return str + i + 2;
15803 const char *beg, *end, *vbeg, *vend;
15804#define str_copy(_s, _p, _n) ((_s) \
15805 ? (void)(rb_str_resize((_s), (_n)), \
15806 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
15807 : (void)((_s) = STR_NEW((_p), (_n))))
15810 if (!!(beg = magic_comment_marker(
str,
len))) {
15811 if (!(end = magic_comment_marker(beg,
str +
len - beg)))
15815 len = end - beg - 3;
15827 case '\'':
case '"':
case ':':
case ';':
15834 case '\'':
case '"':
case ':':
case ';':
15845 if (!indicator)
return FALSE;
15853 if (*
str ==
'\\') {
15879 for (i = 0; i < n; ++i) {
15880 if (s[i] ==
'-') s[i] =
'_';
15886 n = (*mc->
length)(p, vbeg, n);
15892 }
while (++mc < magic_comments +
numberof(magic_comments));
15903set_file_encoding(
struct parser_params *p,
const char *
str,
const char *send)
15906 const char *beg =
str;
15910 if (send -
str <= 6)
return;
15912 case 'C':
case 'c':
str += 6;
continue;
15913 case 'O':
case 'o':
str += 5;
continue;
15914 case 'D':
case 'd':
str += 4;
continue;
15915 case 'I':
case 'i':
str += 3;
continue;
15916 case 'N':
case 'n':
str += 2;
continue;
15917 case 'G':
case 'g':
str += 1;
continue;
15918 case '=':
case ':':
15931 if (++
str >= send)
return;
15934 if (*
str !=
'=' && *
str !=
':')
return;
15940 s =
rb_str_new(beg, parser_encode_length(p, beg,
str - beg));
15956 (
unsigned char)p->
lex.
pcur[0] == 0xbb &&
15957 (
unsigned char)p->
lex.
pcur[1] == 0xbf) {
15972#define ambiguous_operator(tok, op, syn) ( \
15973 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
15974 rb_warning0("even though it seems like "syn""))
15976#define ambiguous_operator(tok, op, syn) \
15977 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
15979#define warn_balanced(tok, op, syn) ((void) \
15980 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
15981 space_seen && !ISSPACE(c) && \
15982 (ambiguous_operator(tok, op, syn), 0)), \
15983 (enum yytokentype)(tok))
15990 size_t fraclen =
len-seen_point-1;
15999 yyerror0(
"numeric literal without digits");
16000 if (
peek(p,
'_')) nextc(p);
16002 return set_integer_literal(p,
INT2FIX(0), 0);
16008 int is_float, seen_point, seen_e, nondigit;
16011 is_float = seen_point = seen_e = nondigit = 0;
16014 if (c ==
'-' || c ==
'+') {
16021 if (c ==
'x' || c ==
'X') {
16027 if (nondigit)
break;
16034 }
while ((c = nextc(p)) != -1);
16038 if (
toklen(p) == start) {
16039 return no_digits(p);
16041 else if (nondigit)
goto trailing_uc;
16045 if (c ==
'b' || c ==
'B') {
16048 if (c ==
'0' || c ==
'1') {
16051 if (nondigit)
break;
16055 if (c !=
'0' && c !=
'1')
break;
16058 }
while ((c = nextc(p)) != -1);
16062 if (
toklen(p) == start) {
16063 return no_digits(p);
16065 else if (nondigit)
goto trailing_uc;
16069 if (c ==
'd' || c ==
'D') {
16075 if (nondigit)
break;
16082 }
while ((c = nextc(p)) != -1);
16086 if (
toklen(p) == start) {
16087 return no_digits(p);
16089 else if (nondigit)
goto trailing_uc;
16097 if (c ==
'o' || c ==
'O') {
16100 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
16101 return no_digits(p);
16104 if (c >=
'0' && c <=
'7') {
16109 if (nondigit)
break;
16113 if (c < '0' || c >
'9')
break;
16114 if (c >
'7')
goto invalid_octal;
16117 }
while ((c = nextc(p)) != -1);
16118 if (
toklen(p) > start) {
16121 if (nondigit)
goto trailing_uc;
16130 if (c >
'7' && c <=
'9') {
16134 else if (c ==
'.' || c ==
'e' || c ==
'E') {
16146 case '0':
case '1':
case '2':
case '3':
case '4':
16147 case '5':
case '6':
case '7':
case '8':
case '9':
16153 if (nondigit)
goto trailing_uc;
16154 if (seen_point || seen_e) {
16159 if (c0 == -1 || !
ISDIGIT(c0)) {
16184 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
16189 tokadd(p, nondigit);
16193 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
16197 if (nondigit)
goto decode_num;
16214 parser_show_error_line(p, &loc);
16224 v = parse_rational(p,
tok(p),
toklen(p), seen_point);
16228 if (errno == ERANGE) {
16234 return set_number_literal(p, v,
type,
suffix);
16258 int c2 = escaped_control_code(c);
16270 if (!parser_isascii(p)) {
16271 if (tokadd_mbchar(p, c) == -1)
return 0;
16276 const char *start = p->
lex.
pcur - 1, *
ptr = start;
16278 int n = parser_precise_mbclen(p,
ptr);
16279 if (n < 0)
return -1;
16282 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
16283 " a conditional operator, put a space after `?'",
16288 else if (c ==
'\\') {
16289 if (
peek(p,
'u')) {
16292 tokadd_utf8(p, &enc, -1, 0, 0);
16296 if (tokadd_mbchar(p, c) == -1)
return 0;
16299 c = read_escape(p, 0, &enc);
16317 const char *ptok = p->
lex.
pcur;
16325 if (c == -1 || !
ISALNUM(c)) {
16327 if (!
ISASCII(c))
goto unknown;
16335 c = parser_precise_mbclen(p, p->
lex.
pcur);
16336 if (c < 0)
return 0;
16338 yyerror0(
"unknown type of %string");
16343 compile_error(p,
"unterminated quoted string meets end of file");
16393 yyerror0(
"unknown type of %string");
16397 if ((c = nextc(p)) ==
'=') {
16414 if (tokadd_mbchar(p, c) == -1)
return -1;
16416 }
while (parser_is_identchar(p));
16437 const unsigned long nth_ref_max =
16438 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
16442 if (overflow || n > nth_ref_max) {
16465 if (parser_is_identchar(p)) {
16497 if (parser_is_identchar(p)) {
16498 if (tokadd_mbchar(p, c) == -1)
return 0;
16521 case '1':
case '2':
case '3':
16522 case '4':
case '5':
case '6':
16523 case '7':
case '8':
case '9':
16528 }
while (c != -1 &&
ISDIGIT(c));
16532 c = parse_numvar(p);
16537 if (!parser_is_identchar(p)) {
16540 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
16544 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
16546 parser_show_error_line(p, &loc);
16555 if (tokadd_ident(p, c))
return 0;
16557 tokenize_ident(p, last_state);
16565 if (n < 0)
return false;
16578 while (n > args->
pos) {
16590 register int c = nextc(p);
16602 if (c == -1 || !parser_is_identchar(p)) {
16605 if (result ==
tIVAR) {
16606 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
16609 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
16611 parser_show_error_line(p, &loc);
16619 if (result ==
tIVAR) {
16620 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
16623 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
16625 parser_show_error_line(p, &loc);
16631 if (tokadd_ident(p, c))
return 0;
16632 tokenize_ident(p, last_state);
16646 if (tokadd_mbchar(p, c) == -1)
return 0;
16648 }
while (parser_is_identchar(p));
16649 if ((c ==
'!' || c ==
'?') && !
peek(p,
'=')) {
16701 if (kw->
id[0] != kw->
id[1])
16716 else if (p->
lex.
state == EXPR_FNAME) {
16723 ident = tokenize_ident(p, last_state);
16727 lvar_defined(p, ident)) {
16737 int space_seen = 0;
16741 int fallthru =
FALSE;
16761 switch (c = nextc(p)) {
16773 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
16776 case ' ':
case '\t':
case '\f':
16780 while ((c = nextc(p))) {
16782 case ' ':
case '\t':
case '\f':
case '\r':
16799 if (comment_at_top(p)) {
16809 c = (
IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
16817 goto normal_newline;
16822 switch (c = nextc(p)) {
16823 case ' ':
case '\t':
case '\f':
case '\r':
16834 if (
peek(p,
'.') == (c ==
'&')) {
16856 goto normal_newline;
16865 if ((c = nextc(p)) ==
'*') {
16866 if ((c = nextc(p)) ==
'=') {
16873 rb_warning0(
"`**' interpreted as argument prefix");
16891 rb_warning0(
"`*' interpreted as argument prefix");
16927 if (word_match_p(p,
"begin", 5)) {
16928 int first_p =
TRUE;
16943 if (c ==
'=' && word_match_p(p,
"end", 3)) {
16955 if ((c = nextc(p)) ==
'=') {
16956 if ((c = nextc(p)) ==
'=') {
16965 else if (c ==
'>') {
16977 int token = heredoc_identifier(p);
16989 if ((c = nextc(p)) ==
'>') {
16996 if ((c = nextc(p)) ==
'=') {
17009 if ((c = nextc(p)) ==
'=') {
17013 if ((c = nextc(p)) ==
'=') {
17052 return parse_qmark(p, space_seen);
17055 if ((c = nextc(p)) ==
'&') {
17057 if ((c = nextc(p)) ==
'=') {
17065 else if (c ==
'=') {
17070 else if (c ==
'.') {
17079 !(c ==
'\'' || c ==
'"' ||
17081 rb_warning0(
"`&' interpreted as argument prefix");
17095 if ((c = nextc(p)) ==
'|') {
17097 if ((c = nextc(p)) ==
'=') {
17138 return parse_numeric(p,
'+');
17180 if ((c = nextc(p)) ==
'.') {
17181 if ((c = nextc(p)) ==
'.') {
17183 rb_warn0(
"... at EOL, should be parenthesized?");
17197 parse_numeric(p,
'.');
17199 yyerror0(
"unexpected fraction part after numeric literal");
17202 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
17213 case '0':
case '1':
case '2':
case '3':
case '4':
17214 case '5':
case '6':
case '7':
case '8':
case '9':
17215 return parse_numeric(p, c);
17276 if ((c = nextc(p)) ==
'=') {
17283 arg_ambiguous(p,
'/');
17291 if ((c = nextc(p)) ==
'=') {
17311 if ((c = nextc(p)) !=
'@') {
17325 else if (!space_seen) {
17332 rb_warning0(
"parentheses after method name is interpreted as "
17333 "an argument list, not a decomposed argument");
17344 if ((c = nextc(p)) ==
']') {
17347 if ((c = nextc(p)) ==
'=') {
17399 if (c ==
' ')
return tSP;
17405 return parse_percent(p, space_seen, last_state);
17408 return parse_gvar(p, last_state);
17411 return parse_atmark(p, last_state);
17414 if (
was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
17429 if (!parser_is_identchar(p)) {
17430 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
17439 return parse_ident(p, c, cmd_state);
17449 t = parser_yylex(p);
17464#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
17473 nd_set_loc(n, loc);
17488nodetype(
NODE *node)
17494nodeline(
NODE *node)
17500newline_node(
NODE *node)
17503 node = remove_begin(node);
17532 NODE *end, *h = head, *nd;
17534 if (tail == 0)
return head;
17536 if (h == 0)
return tail;
17544 parser_warning(p, h,
"unused literal ignored");
17564 parser_warning(p, tail,
"statement not reached");
17574 tail->nd_end = tail;
17576 end->nd_next = tail;
17577 h->nd_end = tail->nd_end;
17589 if (list->nd_next) {
17590 last = list->nd_next->nd_end;
17596 list->nd_alen += 1;
17598 list->nd_next->nd_end =
last->nd_next;
17607list_concat(
NODE *head,
NODE *tail)
17611 if (head->nd_next) {
17612 last = head->nd_next->nd_end;
17618 head->nd_alen += tail->nd_alen;
17619 last->nd_next = tail;
17620 if (tail->nd_next) {
17621 head->nd_next->nd_end = tail->nd_next->nd_end;
17624 head->nd_next->nd_end = tail;
17635 if (
NIL_P(tail))
return 1;
17637 compile_error(p,
"string literal encodings differ (%s / %s)",
17652 if (head->nd_next) {
17653 head = head->nd_next->nd_end->nd_head;
17656 const VALUE lit = head->nd_lit;
17668 if (!head)
return tail;
17669 if (!tail)
return head;
17673 head = new_dstr(p, head, loc);
17681 return list_append(p, head, tail);
17688 if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
17692 lit = head->nd_lit;
17695 if (!literal_concat0(p, lit, tail->nd_lit)) {
17697 rb_discard_node(p, head);
17698 rb_discard_node(p, tail);
17701 rb_discard_node(p, tail);
17704 list_append(p, head, tail);
17710 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
17712 tail->nd_lit = head->nd_lit;
17713 rb_discard_node(p, head);
17716 else if (
NIL_P(tail->nd_lit)) {
17718 head->nd_alen += tail->nd_alen - 1;
17719 if (!head->nd_next) {
17720 head->nd_next = tail->nd_next;
17722 else if (tail->nd_next) {
17723 head->nd_next->nd_end->nd_next = tail->nd_next;
17724 head->nd_next->nd_end = tail->nd_next->nd_end;
17726 rb_discard_node(p, tail);
17728 else if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
17729 if (!literal_concat0(p, lit, tail->nd_lit))
17731 tail->nd_lit =
Qnil;
17744 list_append(p, head, tail);
17754 node = new_dstr(p, node, &node->
nd_loc);
17781 return list_append(p, dstr, node);
17818 if (block) block_dup_check(p, args, block);
17819 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
17820 if (block) ret = method_add_block(p, ret, block, loc);
17825#define nd_once_body(node) (nd_type(node) == NODE_ONCE ? (node)->nd_body : node)
17830 int line = op_loc->beg_pos.lineno;
17844 if (RB_TYPE_P(n->nd_lit,
T_REGEXP)) {
17845 const VALUE lit = n->nd_lit;
17847 match->nd_args = reg_named_capture_assign(p, lit, loc);
17859 if (!RB_TYPE_P(n->nd_lit,
T_REGEXP))
break;
17872# if WARN_PAST_SCOPE
17878 if (vtable_included(past,
id))
return 1;
17894 "%s:%d: %s block here",
17896 outer ?
"outer" :
"inner");
17897 parser_show_error_line(p, &
used->nd_loc);
17936 switch (id_type(
id)) {
17938 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
17948 if (local_id_ref(p,
id, &vidp)) {
17959 if (numparam_nested_p(p))
return 0;
17962 if (!
local->numparam.current)
local->numparam.current = node;
17965# if WARN_PAST_SCOPE
17986opt_arg_append(
NODE *opt_list,
NODE *opt)
17988 NODE *opts = opt_list;
17991 while (opts->nd_next) {
17992 opts = opts->nd_next;
17995 opts->nd_next = opt;
18004 NODE *kws = kwlist;
18006 while (kws->nd_next) {
18007 kws = kws->nd_next;
18036 return list_append(p, symbols, symbol);
18053 VALUE src = node->nd_lit;
18055 nd_set_loc(node, loc);
18066 nd_set_loc(node, loc);
18068 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
18069 for (list = (
prev = node)->
nd_next; list; list = list->nd_next) {
18070 NODE *frag = list->nd_head;
18073 VALUE tail = frag->nd_lit;
18074 if (reg_fragment_check(p, tail, options) &&
prev && !
NIL_P(
prev->nd_lit)) {
18076 if (!literal_concat0(p, lit, tail)) {
18080 prev->nd_next = list->nd_next;
18081 rb_discard_node(p, list->nd_head);
18082 rb_discard_node(p, list);
18093 if (!node->nd_next) {
18094 VALUE src = node->nd_lit;
18125 nd_set_loc(node, loc);
18129 nd_set_loc(node, loc);
18146 if (lit ==
Qundef)
return;
18156 if (!
NIL_P(line)) {
18157 rb_warning1(
"duplicated `when' clause with line %d is ignored",
18174 if (dyna_in_block(p)) {
18177 if (local_id(p,
id))
return 1;
18191 if (ripper_is_node_yylval(re)) {
18192 src =
RNODE(re)->nd_cval;
18193 re =
RNODE(re)->nd_rval;
18195 if (ripper_is_node_yylval(opt)) {
18196 options = (
int)
RNODE(opt)->nd_tag;
18197 opt =
RNODE(opt)->nd_rval;
18199 if (src &&
NIL_P(parser_reg_compile(p, src, options, &
err))) {
18202 return dispatch2(regexp_literal, re, opt);
18208static const char rb_parser_lex_state_names[][8] = {
18209 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
18210 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
18211 "LABEL",
"LABELED",
"FITEM",
18218 unsigned int mask = 1;
18219 static const char none[] =
"NONE";
18256 append_lex_state_name(from, mesg);
18258 append_lex_state_name(to, mesg);
18285 const char *
name,
int line)
18288 append_bitstack_value(stack, mesg);
18306 append_lex_state_name(p->
lex.
state, mesg);
18327 yylloc->beg_pos.lineno = sourceline;
18328 yylloc->beg_pos.column = beg_pos;
18329 yylloc->end_pos.lineno = sourceline;
18330 yylloc->end_pos.column = end_pos;
18366 v = valp->
node->nd_rval;
18373 v = valp->
node->nd_lit;
18401 if (!
id)
return -1;
18404 *
err =
"Can't change the value of self";
18407 *
err =
"Can't assign to nil";
18410 *
err =
"Can't assign to true";
18413 *
err =
"Can't assign to false";
18416 *
err =
"Can't assign to __FILE__";
18419 *
err =
"Can't assign to __LINE__";
18422 *
err =
"Can't assign to __ENCODING__";
18425 switch (id_type(
id)) {
18427 if (dyna_in_block(p)) {
18440 if (!local_id(p,
id)) local_var(p,
id);
18448 *
err =
"dynamic constant assignment";
18461 const char *
err = 0;
18479 const char *
err = 0;
18481 if (
err) lhs = assign_error(p,
err, lhs);
18487is_private_local_id(
ID name)
18490 if (
name == idUScore)
return 1;
18500 if (is_private_local_id(
name))
return 1;
18501 if (dyna_in_block(p)) {
18502 if (dvar_curr(p,
name)) {
18503 yyerror0(
"duplicated argument name");
18505 else if (dvar_defined(p,
name) || local_id(p,
name)) {
18514 if (local_id(p,
name)) {
18515 yyerror0(
"duplicated argument name");
18524 shadowing_lvar_0(p,
name);
18537 if (!shadowing_lvar_0(p,
name))
return;
18571 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
18581 return dispatch2(assign_error, mesg, expr);
18592 return list_append(p, node1, node2);
18594 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
18598 node1->nd_body = list_append(p,
NEW_LIST(node1->nd_body, &node1->nd_body->
nd_loc), node2);
18604 node1->nd_body = list_append(p, node1->nd_body, node2);
18614 if (!node2)
return node1;
18617 if (node1->nd_head)
18618 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
18620 node1->nd_head =
NEW_LIST(node2, loc);
18624 node1->nd_body = list_concat(
NEW_LIST(node1->nd_body, loc), node2);
18630 node1->nd_body = list_concat(node1->nd_body, node2);
18640 if ((n1 = splat_array(
args)) != 0) {
18641 return list_append(p, n1, last_arg);
18643 return arg_append(p,
args, last_arg, loc);
18651 return list_concat(n1, rest_arg);
18653 return arg_concat(p,
args, rest_arg, loc);
18657splat_array(
NODE* node)
18671 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
18677 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
18683 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
18684 mark_lvar_used(p, rhs->nd_head);
18722 *dest = n =
NEW_LIT(path, loc);
18749 args = list_append(p,
args, const_decl_path(p, dest));
18753static int is_static_content(
NODE *node);
18756shareable_literal_value(
NODE *node)
18758 if (!node)
return Qnil;
18768 return node->nd_lit;
18774#ifndef SHAREABLE_BARE_EXPRESSION
18775#define SHAREABLE_BARE_EXPRESSION 1
18782# define shareable_literal_constant_next(n) \
18783 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
18786 if (!value)
return 0;
18814 for (
NODE *n = value; n; n = n->nd_next) {
18815 NODE *elt = n->nd_head;
18821 else if (
RTEST(lit)) {
18827 VALUE e = shareable_literal_value(elt);
18840 if (!value->nd_brace)
return 0;
18842 for (
NODE *n = value->nd_head; n; n = n->nd_next->nd_next) {
18844 NODE *val = n->nd_next->nd_head;
18850 else if (
RTEST(lit)) {
18858 n->nd_next->nd_head = val;
18860 else if (
RTEST(lit)) {
18866 VALUE k = shareable_literal_value(
key);
18867 VALUE v = shareable_literal_value(val);
18882 return ensure_shareable_node(p, dest, value, loc);
18888 if (!lit)
return 0;
18892 value = make_shareable_node(p, value,
false, loc);
18899# undef shareable_literal_constant_next
18906 if (!value)
return 0;
18907 switch (shareable) {
18913 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
18914 if (lit)
return lit;
18922 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
18923 if (lit)
return lit;
18924 return make_shareable_node(p, value, shareable ==
shareable_copy, loc);
18936 if (!lhs)
return 0;
18940 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
18950 lhs->nd_value = rhs;
18951 nd_set_loc(lhs, loc);
18955 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
18956 nd_set_loc(lhs, loc);
18970 NODE *void_node = 0, *vn;
18982 return void_node ? void_node : node;
18989 if (node->nd_body->nd_body) {
18993 return void_node ? void_node : node;
18996 while (node->nd_next) {
18997 node = node->nd_next;
18999 node = node->nd_head;
19003 node = node->nd_body;
19008 if (!node->nd_body) {
19011 else if (!node->nd_else) {
19014 vn = value_expr_check(p, node->nd_body);
19015 if (!vn)
return NULL;
19016 if (!void_node) void_node = vn;
19017 node = node->nd_else;
19022 node = node->nd_1st;
19029 mark_lvar_used(p, node);
19043 NODE *void_node = value_expr_check(p, node);
19054 const char *useless = 0;
19061 switch (node->nd_mid) {
19092 useless =
"a variable";
19095 useless =
"a constant";
19101 useless =
"a literal";
19126 useless =
"defined?";
19138 NODE *
const n = node;
19140 if (!node)
return n;
19143 while (node->nd_next) {
19144 void_expr(p, node->nd_head);
19145 node = node->nd_next;
19151remove_begin(
NODE *node)
19153 NODE **n = &node, *n1 = node;
19155 *n = n1 = n1->nd_body;
19161remove_begin_all(
NODE *node)
19163 NODE **n = &node, *n1 = node;
19165 *n = n1 = n1->nd_body;
19173 NODE *node = *body;
19179#define subnodes(n1, n2) \
19180 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
19181 (!node->n2) ? (body = &node->n1, 1) : \
19182 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
19192 *body = node = node->nd_stts;
19196 *body = node = node->nd_body;
19200 body = &node->nd_end->nd_head;
19207 body = &node->nd_body;
19216 if (node->nd_else) {
19217 body = &node->nd_resq;
19233is_static_content(
NODE *node)
19235 if (!node)
return 1;
19238 if (!(node = node->nd_head))
break;
19241 if (!is_static_content(node->nd_head))
return 0;
19242 }
while ((node = node->nd_next) != 0);
19272 if (!node->nd_value)
return 1;
19273 if (is_static_content(node->nd_value)) {
19275 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
19286#define SWITCH_BY_COND_TYPE(t, w, arg) \
19288 case COND_IN_OP: break; \
19289 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
19290 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
19300 if (node == 0)
return 0;
19305 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
19315 if (node == 0)
return 0;
19317 assign_in_cond(p, node);
19370 if (node == 0)
return 0;
19377 if (node == 0)
return 0;
19391 if (!cc)
return right;
19393 return newline_node(
NEW_IF(cc, left, right, loc));
19399 if (!cc)
return right;
19401 return newline_node(
NEW_UNLESS(cc, left, right, loc));
19412 NODE *node = left, *second;
19417 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
19438 no_blockarg(p, node);
19440 if (node->nd_next == 0) {
19441 node = node->nd_head;
19454 if (node) no_blockarg(p, node);
19467 if (FLONUM_P(lit)) {
19475 BIGNUM_NEGATE(lit);
19479 RATIONAL_SET_NUM(lit, negate_lit(p,
RRATIONAL(lit)->
num));
19498arg_blk_pass(
NODE *node1,
NODE *node2)
19501 if (!node1)
return node2;
19502 node2->nd_head = node1;
19513 if (
args->pre_args_num)
return false;
19514 if (
args->post_args_num)
return false;
19515 if (
args->rest_arg)
return false;
19516 if (
args->opt_args)
return false;
19517 if (
args->block_arg)
return false;
19518 if (
args->kw_args)
return false;
19519 if (
args->kw_rest_arg)
return false;
19530 args->
pre_init = pre_args ? pre_args->nd_next : 0;
19533 args->
post_init = post_args ? post_args->nd_next : 0;
19543 nd_set_loc(tail, loc);
19553 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19555 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
19556 args->
imemo = tmpbuf;
19571 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
19573 NODE *kwn = kw_args;
19575 vtable_pop(vtargs, !!block + !!kw_rest_arg);
19576 required_kw_vars = kw_vars = &vtargs->
tbl[vtargs->
pos];
19580 --required_kw_vars;
19581 kwn = kwn->nd_next;
19584 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
19585 ID vid = kwn->nd_body->nd_vid;
19587 *required_kw_vars++ = vid;
19594 arg_var(p, kw_bits);
19595 if (kw_rest_arg) arg_var(p, kw_rest_arg);
19596 if (block) arg_var(p, block);
19601 else if (kw_rest_arg == idNil) {
19604 else if (kw_rest_arg) {
19618 args = new_args_tail(p, 0, 0, 0, 0);
19619 nd_set_loc(args, &loc);
19621 args->nd_ainfo->pre_args_num = max_numparam;
19631 aryptn->nd_pconst = constant;
19650 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19652 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
19679 fndptn->nd_pconst = constant;
19689 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19691 rb_imemo_tmpbuf_set_ptr(tmpbuf, fpinfo);
19706 hshptn->nd_pconst = constant;
19714 NODE *node, *kw_rest_arg_node;
19716 if (kw_rest_arg == idNil) {
19719 else if (kw_rest_arg) {
19720 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
19723 kw_rest_arg_node =
NULL;
19733warn_one_line_pattern_matching(
struct parser_params *p,
NODE *node,
NODE *pattern,
bool right_assign)
19740 rb_warn0L_experimental(
nd_line(node),
"One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!");
19755 nd_set_loc(node, loc);
19758 lit = node->nd_lit;
19761 nd_set_loc(node, loc);
19776 node->nd_next->nd_end = node->nd_next;
19777 node->nd_next->nd_next = 0;
19779 list_concat(*result, node);
19791 while (hash && hash->nd_head && hash->nd_next) {
19792 NODE *head = hash->nd_head;
19793 NODE *value = hash->nd_next;
19794 NODE *next = value->nd_next;
19798 st_lookup(literal_keys, (
key = head->nd_lit), &data)) {
19800 "key %+"PRIsVALUE" is duplicated and overwritten on line %d",
19801 head->nd_lit,
nd_line(head));
19802 head = ((
NODE *)data)->nd_next;
19803 head->nd_head = block_append(p, head->nd_head, value->nd_head);
19813 if (!result) result = hash;
19814 else list_concat(result, hash);
19823 if (hash) hash = remove_duplicate_keys(p, hash);
19831 if (is_private_local_id(
id)) {
19835 yyerror1(loc,
"duplicated variable name");
19849 yyerror1(loc,
"duplicated key name");
19870 ID vid = lhs->nd_vid;
19872 int shareable = ctxt.shareable_constant_value;
19885 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->
nd_loc);
19886 lhs->nd_value = rhs;
19887 nd_set_loc(lhs, loc);
19890 switch (id_type(vid)) {
19894 asgn->nd_aid = vid;
19898 else if (op ==
tANDOP) {
19900 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->
nd_loc);
19902 lhs->nd_value = rhs;
19903 nd_set_loc(lhs, loc);
19910 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->
nd_loc);
19912 asgn->nd_value = rhs;
19913 nd_set_loc(asgn, loc);
19933 args = arg_concat(p,
args, rhs, loc);
19957 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
19971 yyerror1(loc,
"dynamic constant assignment");
19980 path = assign_error(p,
"dynamic constant assignment", path);
19988 a = dispatch2(assign_error, ERR_MESG(), a);
19996 return ripper_new_yylval(p,
get_id(a), dispatch1(var_field, a), 0);
20004 NODE *result = head;
20006 NODE *tmp = rescue_else ? rescue_else : rescue;
20009 result =
NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
20012 else if (rescue_else) {
20013 result = block_append(p, result, rescue_else);
20018 fixpos(result, head);
20028 if (!
local->used)
return;
20036 for (
int i = 0; i <
cnt; ++i) {
20037 if (!v[i] || (u[i] &
LVAR_USED))
continue;
20038 if (is_private_local_id(v[i]))
continue;
20057 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
20058 local->numparam.outer = 0;
20059 local->numparam.inner = 0;
20060 local->numparam.current = 0;
20064# if WARN_PAST_SCOPE
20077 warn_unused_var(p, p->
lvtbl);
20080# if WARN_PAST_SCOPE
20081 while (p->
lvtbl->past) {
20099 int cnt_args = vtable_size(p->
lvtbl->
args);
20100 int cnt_vars = vtable_size(p->
lvtbl->
vars);
20101 int cnt = cnt_args + cnt_vars;
20105 if (
cnt <= 0)
return 0;
20109 for (i = 0, j = cnt_args+1; i < cnt_vars; ++i) {
20111 if (!vtable_included(p->
lvtbl->
args,
id)) {
20148 numparam_name(p,
id);
20155 numparam_name(p,
id);
20165 struct vtable *vars, *args, *used;
20174 if (used) used = used->
prev;
20180 else if (vtable_included(args,
id)) {
20184 int i = vtable_included(vars,
id);
20185 if (i && used && vidrefp) *vidrefp = &used->
tbl[i-1];
20193 return local_id_ref(p,
id,
NULL);
20227 NODE *args = leading ? rest_arg_append(p, leading, splat, argsloc) : splat;
20229 args = arg_append(p, splat, new_hash(p, kwrest, loc), loc);
20231 return arg_blk_pass(args, block);
20248 if (!
local->numparam.outer) {
20249 local->numparam.outer =
local->numparam.current;
20251 local->numparam.inner = 0;
20252 local->numparam.current = 0;
20266 local->numparam.inner = prev_inner;
20268 else if (
local->numparam.current) {
20270 local->numparam.inner =
local->numparam.current;
20274 local->numparam.current =
local->numparam.outer;
20275 local->numparam.outer = 0;
20279 local->numparam.current = 0;
20284static const struct vtable *
20298 struct vtable *tmp = *vtblp;
20299 *vtblp = tmp->
prev;
20300# if WARN_PAST_SCOPE
20301 if (p->past_scope_enabled) {
20303 p->
lvtbl->past = tmp;
20316 warn_unused_var(p, p->
lvtbl);
20347 struct vtable *vars, *args, *used;
20355 if (vtable_included(args,
id)) {
20358 if ((i = vtable_included(vars,
id)) != 0) {
20359 if (used && vidrefp) *vidrefp = &used->
tbl[i-1];
20364 if (!vidrefp) used = 0;
20365 if (used) used = used->
prev;
20378 return dvar_defined_ref(p,
id,
NULL);
20384 return (vtable_included(p->
lvtbl->
args,
id) ||
20392 "regexp encoding option '%c' differs from source encoding '%s'",
20438 if (c) reg_fragment_enc_error(p,
str, c);
20445 reg_fragment_setenc(p,
str, options);
20464 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
20470 const char *s = (
const char *)
name;
20485 succ = block_append(p, succ, node);
20508 reg_fragment_setenc(p,
str, options);
20525 re = parser_reg_compile(p,
str, options);
20542 if (c) reg_fragment_enc_error(p,
str, c);
20567 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
20568 const YYLTYPE *
const LOC = &default_location;
20574 node = block_append(p, node, print);
20586 node = block_append(p, split, node);
20591 node = block_append(p, chomp, node);
20611 const ID max_id = RB_ID_SERIAL_MAX & ~0xffff;
20627 p->delayed.token =
Qnil;
20629 p->parsing_thread =
Qnil;
20639#define parser_mark ripper_parser_mark
20640#define parser_free ripper_parser_free
20644parser_mark(
void *
ptr)
20674parser_free(
void *
ptr)
20698parser_memsize(
const void *
ptr)
20702 size_t size =
sizeof(*p);
20706 size +=
sizeof(*local);
20727#undef rb_reserved_word
20732 return reserved_word(
str,
len);
20740 &parser_data_type, p);
20741 parser_initialize(p);
20758#define rb_parser_end_seen_p ripper_parser_end_seen_p
20759#define rb_parser_encoding ripper_parser_encoding
20760#define rb_parser_get_yydebug ripper_parser_get_yydebug
20761#define rb_parser_set_yydebug ripper_parser_set_yydebug
20762#define rb_parser_get_debug_output ripper_parser_get_debug_output
20763#define rb_parser_set_debug_output ripper_parser_set_debug_output
20764static VALUE ripper_parser_end_seen_p(
VALUE vparser);
20765static VALUE ripper_parser_encoding(
VALUE vparser);
20766static VALUE ripper_parser_get_yydebug(
VALUE self);
20768static VALUE ripper_parser_get_debug_output(
VALUE self);
20769static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
20778ripper_error_p(
VALUE vparser)
20825rb_parser_get_yydebug(
VALUE self)
20882#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
20885#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
20886#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
20887 (new)->cnt = (cnt), (ptr))
20934 while ((n = *prev) !=
NULL) {
20935 if (n->ptr ==
ptr) {
20956 if (RSTRING_END(mesg)[-1] ==
'\n') {
20963parser_compile_error(
struct parser_params *p,
const char *fmt, ...)
20980count_char(
const char *
str,
int c)
20983 while (
str[n] == c) ++n;
20993RUBY_FUNC_EXPORTED
size_t
20996 if (*yystr ==
'"') {
20997 size_t yyn = 0, bquote = 0;
20998 const char *yyp = yystr;
21004 bquote = count_char(yyp+1,
'`') + 1;
21005 if (yyres)
memcpy(&yyres[yyn], yyp, bquote);
21013 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
21014 if (yyres)
memcpy(yyres + yyn, yyp, bquote);
21020 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
21021 if (yyres)
memcpy(yyres + yyn, yyp, 3);
21026 goto do_not_strip_quotes;
21029 goto do_not_strip_quotes;
21032 if (*++yyp !=
'\\')
21033 goto do_not_strip_quotes;
21049 do_not_strip_quotes: ;
21052 if (!yyres)
return strlen(yystr);
21054 return (
YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
21064 if (x ==
Qfalse)
return x;
21065 if (x ==
Qtrue)
return x;
21066 if (x ==
Qnil)
return x;
21084 x = ((
NODE *)x)->nd_rval;
21098#define validate(x) ((x) = get_value(x))
21127 return rb_funcall(p->value, mid, 3, a, b, c);
21137 return rb_funcall(p->value, mid, 4, a, b, c, d);
21148 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
21161 return rb_funcall(p->value, mid, 7, a, b, c, d, e,
f,
g);
21165ripper_get_id(
VALUE v)
21168 if (!RB_TYPE_P(v,
T_NODE))
return 0;
21170 if (
nd_type(nd) != NODE_RIPPER)
return 0;
21175ripper_get_value(
VALUE v)
21179 if (!RB_TYPE_P(v,
T_NODE))
return v;
21182 return nd->nd_rval;
21192ripper_compile_error(
struct parser_params *p,
const char *fmt, ...)
21197 va_start(args, fmt);
21210 "gets returned %"PRIsVALUE" (expected String or nil)",
21223ripper_s_allocate(
VALUE klass)
21227 &parser_data_type, p);
21232#define ripper_initialized_p(r) ((r)->lex.input != 0)
21248 VALUE src, fname, lineno;
21252 if (RB_TYPE_P(src,
T_FILE)) {
21253 p->
lex.
gets = ripper_lex_io_get;
21256 p->
lex.
gets = ripper_lex_get_generic;
21264 if (
NIL_P(fname)) {
21272 parser_initialize(p);
21282ripper_parse0(
VALUE parser_v)
21289 ripper_yyparse((
void*)p);
21296ripper_ensure(
VALUE parser_v)
21301 p->parsing_thread =
Qnil;
21312ripper_parse(
VALUE self)
21317 if (!ripper_initialized_p(p)) {
21320 if (!
NIL_P(p->parsing_thread)) {
21327 rb_ensure(ripper_parse0, self, ripper_ensure, self);
21340ripper_column(
VALUE self)
21346 if (!ripper_initialized_p(p)) {
21349 if (
NIL_P(p->parsing_thread))
return Qnil;
21361ripper_filename(
VALUE self)
21366 if (!ripper_initialized_p(p)) {
21380ripper_lineno(
VALUE self)
21385 if (!ripper_initialized_p(p)) {
21388 if (
NIL_P(p->parsing_thread))
return Qnil;
21399ripper_state(
VALUE self)
21404 if (!ripper_initialized_p(p)) {
21407 if (
NIL_P(p->parsing_thread))
return Qnil;
21418ripper_token(
VALUE self)
21424 if (!ripper_initialized_p(p)) {
21427 if (
NIL_P(p->parsing_thread))
return Qnil;
21468 ripper_init_eventids1();
21469 ripper_init_eventids2();
21470 id_warn = rb_intern_const(
"warn");
21471 id_warning = rb_intern_const(
"warning");
21472 id_gets = rb_intern_const(
"gets");
21473 id_assoc = rb_intern_const(
"=>");
21514<% @exprs.each
do |expr, desc| -%>
21518 ripper_init_eventids1_table(Ripper);
21519 ripper_init_eventids2_table(Ripper);
VALUE rb_ary_reverse(VALUE ary)
VALUE rb_ary_push(VALUE ary, VALUE item)
VALUE rb_ary_unshift(VALUE ary, VALUE item)
VALUE rb_ary_clear(VALUE ary)
VALUE rb_ary_join(VALUE ary, VALUE sep)
#define PRINTF_ARGS(decl, string_index, first_to_check)
#define UNREACHABLE_RETURN
VALUE rb_big_norm(VALUE x)
VALUE rb_cstr_to_inum(const char *str, int base, int badcheck)
int rb_dvar_defined(ID id, const rb_iseq_t *iseq)
VALUE rb_node_case_when_optimizable_literal(const NODE *const node)
int rb_local_defined(ID id, const rb_iseq_t *iseq)
Internal header for the compiler.
Internal header absorbing C compipler differences.
VALUE rb_complex_raw(VALUE x, VALUE y)
Our own, locale independent, character handling routines.
#define rb_define_method(klass, mid, func, arity)
Defines klass#mid.
#define rb_define_singleton_method(klass, mid, func, arity)
Defines klass.mid.
#define rb_define_private_method(klass, mid, func, arity)
Defines klass#mid and makes it private.
VALUE rb_int_positive_pow(long x, unsigned long y)
#define rb_ascii8bit_encindex()
int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc)
VALUE rb_enc_associate(VALUE obj, rb_encoding *enc)
rb_encoding * rb_utf8_encoding(void)
rb_encoding * rb_ascii8bit_encoding(void)
rb_encoding * rb_enc_from_index(int index)
rb_encoding * rb_enc_get(VALUE obj)
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
rb_encoding * rb_usascii_encoding(void)
VALUE rb_enc_from_encoding(rb_encoding *encoding)
VALUE rb_enc_associate_index(VALUE obj, int idx)
int rb_enc_find_index(const char *name)
int rb_enc_codelen(int c, rb_encoding *enc)
char str[HTML_ESCAPE_MAX_LEN+1]
unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow)
#define RSTRING_LEN(string)
#define RSTRING_PTR(string)
void rb_gc_force_recycle(VALUE obj)
void rb_gc_mark(VALUE ptr)
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0)
void rb_gc_register_mark_object(VALUE obj)
Inform the garbage collector that object is a live Ruby object that should not be moved.
#define rb_intern_str(string)
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
VALUE rb_syntax_error_append(VALUE exc, VALUE file, int line, int column, rb_encoding *enc, const char *fmt, va_list args)
void rb_raise(VALUE exc, const char *fmt,...)
void rb_compile_warn(const char *file, int line, const char *fmt,...)
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
VALUE rb_ident_hash_new(void)
const char * rb_builtin_type_name(int t)
void rb_fatal(const char *fmt,...)
const char * rb_builtin_class_name(VALUE x)
VALUE rb_make_exception(int argc, const VALUE *argv)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
void rb_compile_warning(const char *file, int line, const char *fmt,...)
VALUE rb_ensure(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*e_proc)(VALUE), VALUE data2)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
The current exception in the current thread.
bool rb_warning_category_enabled_p(rb_warning_category_t category)
VALUE rb_cObject
Object class.
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
VALUE rb_obj_class(VALUE)
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
unsigned char suffix[65536]
unsigned char match[65280+2]
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
VALUE rb_hash_lookup(VALUE hash, VALUE key)
VALUE rb_hash_clear(VALUE hash)
IMEMO: Internal memo object.
#define ENC_CODERANGE_7BIT
#define rb_enc_mbcput(c, buf, enc)
#define rb_enc_prev_char(s, p, e, enc)
int rb_enc_str_coderange(VALUE)
#define ENC_CODERANGE_UNKNOWN
VALUE rb_enc_str_new(const char *, long, rb_encoding *)
#define ENCODING_GET(obj)
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
#define rb_enc_asciicompat(enc)
#define rb_enc_isalnum(c, enc)
int rb_char_to_option_kcode(int c, int *option, int *kcode)
long rb_str_coderange_scan_restartable(const char *, const char *, rb_encoding *, int *)
#define MBCLEN_CHARFOUND_P(ret)
#define ENCODING_SET(obj, i)
#define ENCODING_IS_ASCII8BIT(obj)
#define rb_enc_isspace(c, enc)
Thin wrapper to ruby/config.h.
@ RB_WARN_CATEGORY_EXPERIMENTAL
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
VALUE rb_funcallv_public(VALUE, ID, int, const VALUE *)
Calls a method.
VALUE rb_io_write(VALUE, VALUE)
VALUE rb_io_puts(int, const VALUE *, VALUE)
#define rb_rational_raw1(x)
VALUE rb_rational_new(VALUE, VALUE)
int rb_memcicmp(const void *, const void *, long)
VALUE rb_str_resize(VALUE, long)
#define rb_str_new(str, len)
VALUE rb_str_cat(VALUE, const char *, long)
#define rb_usascii_str_new(str, len)
void rb_str_set_len(VALUE, long)
void rb_str_modify(VALUE)
VALUE rb_str_buf_new(long)
VALUE rb_filesystem_str_new_cstr(const char *)
#define rb_usascii_str_new2
VALUE rb_str_subseq(VALUE, long, long)
#define rb_strlen_lit(str)
VALUE rb_str_append(VALUE, VALUE)
VALUE rb_str_new_frozen(VALUE)
VALUE rb_str_buf_append(VALUE, VALUE)
VALUE rb_str_intern(VALUE)
VALUE rb_obj_as_string(VALUE)
#define rb_str_cat_cstr(buf, str)
#define rb_str_new_cstr(str)
VALUE rb_thread_current(void)
int rb_const_defined_at(VALUE, ID)
VALUE rb_const_get_at(VALUE, ID)
VALUE rb_attr_get(VALUE, ID)
int rb_respond_to(VALUE, ID)
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
VALUE rb_make_backtrace(void)
const char * rb_id2name(ID)
ID rb_intern2(const char *, long)
ID rb_intern(const char *)
void rb_define_global_const(const char *, VALUE)
void rb_define_const(VALUE, const char *, VALUE)
void * memmove(void *, const void *, size_t)
unsigned long ruby_scan_oct(const char *, size_t, size_t *)
#define scan_hex(s, l, e)
#define scan_oct(s, l, e)
Internal header for Complex.
#define RCOMPLEX_SET_IMAG(cmp, i)
#define RCOMPLEX_SET_REAL(cmp, r)
#define SIZED_REALLOC_N(v, T, m, n)
Internal header for Hash.
int rb_stderr_tty_p(void)
Internal header for Numeric.
Internal header for the parser.
Internal header for Rational.
Internal header for Regexp.
VALUE rb_reg_check_preprocess(VALUE)
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
Internal header for Thread.
VALUE rb_suppress_tracing(VALUE(*func)(VALUE), VALUE arg)
Internal header corresponding util.c.
#define rb_ary_new_from_args(...)
#define rb_sym_intern_ascii_cstr(...)
typedef long(ZCALLBACK *tell_file_func) OF((voidpf opaque
typedef int(ZCALLBACK *close_file_func) OF((voidpf opaque
const char * ruby_node_name(int node)
#define rb_reserved_word(str, len)
Historical shim for <limits.h>.
#define MEMCPY(p1, p2, type, n)
#define ALLOCA_N(type, n)
#define MEMMOVE(p1, p2, type, n)
VALUE type(ANYARGS)
ANYARGS-ed function type.
void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
void rb_ast_dispose(rb_ast_t *ast)
rb_ast_t * rb_ast_new(void)
void rb_ast_add_mark_object(rb_ast_t *ast, VALUE obj)
NODE * rb_ast_newnode(rb_ast_t *ast, enum node_type type)
void rb_ast_add_local_table(rb_ast_t *ast, ID *buf)
void rb_ast_delete_node(rb_ast_t *ast, NODE *n)
#define NEW_VCALL(m, loc)
#define NEW_ITER(a, b, loc)
#define NEW_BLOCK(a, loc)
#define NEW_POSTEXE(b, loc)
#define NEW_CVASGN(v, val, loc)
#define NEW_DOT2(b, e, loc)
#define NEW_UNLESS(c, t, e, loc)
#define NEW_RETURN(s, loc)
#define NEW_ALIAS(n, o, loc)
#define NEW_MODULE(n, b, loc)
#define nd_first_lineno(n)
#define nd_set_type(n, t)
#define NEW_DOT3(b, e, loc)
#define NEW_BREAK(s, loc)
#define NEW_EVSTR(n, loc)
#define NEW_COLON2(c, i, loc)
#define NEW_IF(c, t, e, loc)
#define NEW_GASGN(v, val, loc)
#define NEW_BEGIN(b, loc)
#define NEW_OPT_ARG(i, v, loc)
#define NEW_SPLAT(a, loc)
#define NEW_IASGN(v, val, loc)
#define NEW_ARGS_AUX(r, b, loc)
#define NEW_CDECL(v, val, path, loc)
#define NEW_CALL(r, m, a, loc)
#define NEW_DASGN(v, val, loc)
#define NEW_ARGSPUSH(a, b, loc)
#define NEW_CASE(h, b, loc)
#define nd_first_column(n)
#define NEW_SUPER(a, loc)
#define nd_set_node_id(n, id)
#define NEW_LASGN(v, val, loc)
#define NEW_MATCH2(n1, n2, loc)
#define nd_set_last_loc(n, v)
#define NEW_OPCALL(r, m, a, loc)
#define NEW_SCOPE(a, b, loc)
#define NEW_MATCH3(r, n2, loc)
#define NEW_CASE2(b, loc)
#define NEW_UNTIL(c, b, n, loc)
#define NEW_OP_ASGN_OR(i, val, loc)
#define NEW_OP_ASGN1(p, id, a, loc)
#define NEW_SCLASS(r, b, loc)
#define nd_set_first_lineno(n, v)
#define NEW_DEFINED(e, loc)
#define NEW_CONST(v, loc)
#define NEW_FOR_MASGN(v, loc)
#define NODE_SPECIAL_REQUIRED_KEYWORD
#define NEW_RESCUE(b, res, e, loc)
#define NEW_YIELD(a, loc)
#define NEW_MASGN(l, r, loc)
#define NEW_BLOCK_PASS(b, loc)
#define NODE_SPECIAL_NO_REST_KEYWORD
#define NEW_FCALL(m, a, loc)
#define NEW_OP_ASGN_AND(i, val, loc)
#define NEW_CLASS(n, b, s, loc)
#define nd_set_line(n, l)
#define NEW_LAMBDA(a, b, loc)
#define NEW_WHILE(c, b, n, loc)
#define NODE_REQUIRED_KEYWORD_P(node)
#define NEW_FOR(i, b, loc)
#define NEW_RESBODY(a, ex, n, loc)
#define NEW_IN(c, t, e, loc)
#define NEW_CASE3(h, b, loc)
#define NEW_WHEN(c, t, e, loc)
#define nd_set_first_column(n, v)
#define NEW_OP_CDECL(v, op, val, loc)
#define NEW_UNDEF(i, loc)
#define NEW_COLON3(i, loc)
#define NEW_BACK_REF(n, loc)
#define NEW_VALIAS(n, o, loc)
#define nd_set_first_loc(n, v)
#define NEW_POSTARG(i, v, loc)
#define NEW_NODE(t, a0, a1, a2, loc)
#define NEW_ENSURE(b, en, loc)
#define NODE_SPECIAL_NO_NAME_REST
#define NODE_SPECIAL_EXCESSIVE_COMMA
#define NEW_KW_ARG(i, v, loc)
#define NEW_ARGSCAT(a, b, loc)
#define NEW_DASGN_CURR(v, val, loc)
#define NEW_ATTRASGN(r, m, a, loc)
#define NEW_OP_ASGN2(r, t, i, o, val, loc)
#define NEW_NTH_REF(n, loc)
ONIG_EXTERN int onig_foreach_name(OnigRegex reg, int(*func)(const OnigUChar *, const OnigUChar *, int, int *, OnigRegex, void *), void *arg)
#define RE_OPTION_ENCODING(e)
enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int)
#define HERETERM_LENGTH_BITS
void rb_parser_fatal(struct parser_params *p, const char *fmt,...)
#define dispatch_delayed_token(p, t)
#define IS_LABEL_POSSIBLE()
#define has_delayed_token(p)
#define set_yylval_name(x)
#define DVARS_TERMINAL_P(tbl)
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
VALUE rb_mRubyVMFrozenCore
VALUE rb_parser_new(void)
#define RUBY_DTRACE_PARSE_HOOK(name)
#define rb_warn0L_experimental(l, fmt)
@ YYSYMBOL_74_escaped_vertical_tab_
@ YYSYMBOL_keyword_module
@ YYSYMBOL_excessed_comma
@ YYSYMBOL_73_escaped_carriage_return_
@ YYSYMBOL_block_args_tail
@ YYSYMBOL_opt_block_args_tail
@ YYSYMBOL_modifier_unless
@ YYSYMBOL_keyword_do_LAMBDA
@ YYSYMBOL_modifier_until
@ YYSYMBOL_modifier_rescue
@ YYSYMBOL_xstring_contents
@ YYSYMBOL_p_top_expr_body
@ YYSYMBOL_block_param_def
@ YYSYMBOL_keyword__LINE__
@ YYSYMBOL_simple_numeric
@ YYSYMBOL_tSTRING_CONTENT
@ YYSYMBOL_keyword_variable
@ YYSYMBOL_regexp_contents
@ YYSYMBOL_modifier_while
@ YYSYMBOL_keyword_unless
@ YYSYMBOL_keyword_do_cond
@ YYSYMBOL_cmd_brace_block
@ YYSYMBOL_keyword__ENCODING__
@ YYSYMBOL_string_content
@ YYSYMBOL_keyword_ensure
@ YYSYMBOL_keyword_rescue
@ YYSYMBOL_f_block_optarg
@ YYSYMBOL_opt_f_block_arg
@ YYSYMBOL_f_opt_paren_args
@ YYSYMBOL_keyword_defined
@ YYSYMBOL_keyword_return
@ YYSYMBOL_opt_block_param
@ YYSYMBOL_keyword__FILE__
@ YYSYMBOL_string_contents
@ YYSYMBOL_opt_paren_args
@ YYSYMBOL_keyword_do_block
@ YYSYMBOL_72_escaped_form_feed_
@ YYSYMBOL_71_escaped_horizontal_tab_
#define add_delayed_token(p, tok, end)
#define NUMPARAM_ID_P(id)
#define str_copy(_s, _p, _n)
#define SWITCH_BY_COND_TYPE(t, w, arg)
#define make_list(list, loc)
#define rb_warn1L(l, fmt, a)
void * rb_parser_malloc(struct parser_params *p, size_t size)
#define dispatch_heredoc_end(p)
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
VALUE rb_io_gets_internal(VALUE io)
rb_ast_t * rb_parser_compile_string(VALUE vparser, const char *f, VALUE s, int line)
void(* rb_magic_comment_setter_t)(struct parser_params *p, const char *name, const char *val)
#define NEW_STRTERM(func, term, paren)
#define YY_IGNORE_USELESS_CAST_END
#define literal_flush(p, ptr)
#define yyerror(yylloc, p, msg)
void rb_parser_printf(struct parser_params *p, const char *fmt,...)
VALUE rb_parser_reg_compile(struct parser_params *p, VALUE str, int options)
YYLTYPE * rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
#define WARN_SPACE_CHAR(c, prefix)
#define YYLLOC_DEFAULT(Current, Rhs, N)
#define intern_cstr(n, l, en)
#define YY_REDUCE_PRINT(Rule)
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE f, VALUE s, int line)
#define YY_CAST(Type, Val)
void rb_parser_set_options(VALUE vparser, int print, int loop, int chomp, int split)
#define vtable_alloc(prev)
VALUE rb_parser_set_context(VALUE vparser, const struct rb_iseq_struct *base, int main)
#define IS_lex_state_for(x, ls)
#define dispatch_scan_event(p, t)
#define NEW_QCALL(q, r, m, a, loc)
long(* rb_magic_comment_length_t)(struct parser_params *p, const char *name, long len)
#define warn_balanced(tok, op, syn)
const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20+31)/32]
#define RE_OPTION_ENCODING_NONE(o)
YYLTYPE * rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
#define set_yylval_literal(x)
#define set_yylval_str(x)
rb_ast_t * rb_parser_compile_generic(VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int start)
#define RUBY_INIT_YYLLOC()
#define YY_ACCESSING_SYMBOL(State)
Accessing symbol of state STATE.
#define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
#define YY_INITIAL_VALUE(Value)
#define STR_NEW3(ptr, len, e, func)
VALUE rb_parser_encoding(VALUE vparser)
int rb_reg_fragment_setenc(struct parser_params *, VALUE, int)
#define yytnamerr(yyres, yystr)
VALUE rb_parser_get_debug_output(VALUE self)
int_least16_t yytype_int16
#define YY_STACK_PRINT(Bottom, Top)
#define rb_warning2(fmt, a, b)
#define STR_NEW(ptr, len)
#define lambda_beginning_p()
#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current)
#define YYSTACK_ALLOC_MAXIMUM
#define IS_lex_state_all(ls)
#define NUMPARAM_IDX_TO_ID(idx)
#define YY_IGNORE_USELESS_CAST_BEGIN
void rb_strterm_mark(VALUE obj)
#define rb_warn2(fmt, a, b)
uint_least16_t yytype_uint16
void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int)
#define ADD2HEAP(new, cnt, ptr)
#define SHAREABLE_BARE_EXPRESSION
#define mixed_escape(beg, enc1, enc2)
#define RE_OPTION_ENCODING_IDX(o)
#define vtable_pop(tbl, n)
#define set_yylval_noname()
size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr)
void * rb_parser_realloc(struct parser_params *p, void *ptr, size_t size)
VALUE rb_parser_set_debug_output(VALUE self, VALUE output)
#define set_yylval_node(x)
VALUE rb_parser_set_yydebug(VALUE self, VALUE flag)
VALUE rb_parser_end_seen_p(VALUE vparser)
#define RUBY_SET_YYLLOC(Current)
#define yytable_value_is_error(Yyn)
struct rb_strterm_literal_struct rb_strterm_literal_t
#define shareable_literal_constant_next(n)
#define HERETERM_LENGTH_MAX
YYLTYPE * rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc)
#define YY_ATTRIBUTE_UNUSED
void rb_parser_free(struct parser_params *p, void *ptr)
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE file, int start)
#define NUMPARAM_ID_TO_IDX(id)
#define SET_LEX_STATE(ls)
#define RUBY_SET_YYLLOC_OF_NONE(Current)
#define vtable_add(tbl, id)
#define mixed_error(enc1, enc2)
#define rb_node_newnode(type, a1, a2, a3, loc)
#define IS_LABEL_SUFFIX(n)
#define nd_once_body(node)
#define yyerror1(loc, msg)
#define yypact_value_is_default(Yyn)
#define flush_string_content(p, enc)
uint_least8_t yytype_uint8
#define rb_warn3L(l, fmt, a, b, c)
#define rb_warning1(fmt, a)
void * rb_parser_calloc(struct parser_params *p, size_t nelem, size_t size)
VALUE rb_parser_lex_state_name(enum lex_state_e state)
#define IS_AFTER_OPERATOR()
enum yytokentype yytoken_kind_t
#define RARRAY_AREF(a, i)
VALUE rb_ractor_stderr(void)
VALUE rb_ractor_stdout(void)
VALUE rb_ractor_make_shareable(VALUE obj)
#define RB_OBJ_WRITE(a, slot, b)
WB for new reference from ‘a’ to ‘b’.
#define RB_OBJ_WRITTEN(a, oldv, b)
WB for new reference from ‘a’ to ‘b’.
int_least16_t yytype_int16
uint_least8_t yytype_uint8
#define RSTRING_GETMEM(str, ptrvar, lenvar)
#define StringValueCStr(v)
#define TypedData_Get_Struct(obj, type, data_type, sval)
@ RUBY_TYPED_FREE_IMMEDIATELY
#define TypedData_Make_Struct(klass, type, data_type, sval)
const char * rb_obj_classname(VALUE)
rb_atomic_t cnt[RUBY_NSIG]
VALUE rb_vsprintf(const char *, va_list)
VALUE rb_str_vcatf(VALUE, const char *, va_list)
VALUE rb_str_catf(VALUE, const char *,...)
VALUE rb_sprintf(const char *,...)
#define st_init_numtable_with_size
#define st_is_member(table, key)
size_t strlen(const char *)
rb_code_location_t nd_loc
BITFIELD(enum shareability, shareable_constant_value, 2)
struct local_vars::@65 numparam
VALUE(* gets)(struct parser_params *, VALUE)
const char * ruby_sourcefile
unsigned int ruby__end__seen
VALUE(* call)(VALUE, int)
unsigned int command_start
struct parser_params::@66 lex
union parser_params::@66::@67 gets_
const struct rb_iseq_struct * parent_iseq
unsigned int token_info_enabled
VALUE ruby_sourcefile_string
struct local_vars * lvtbl
unsigned int ruby2_keywords
rb_code_position_t beg_pos
rb_code_position_t end_pos
struct rb_imemo_tmpbuf_struct * next
union rb_strterm_literal_struct::@68 u0
union rb_strterm_literal_struct::@71 u3
union rb_strterm_literal_struct::@70 u2
union rb_strterm_literal_struct::@69 u1
rb_strterm_literal_t literal
union rb_strterm_struct::@72 u
rb_strterm_heredoc_t heredoc
struct parser_params * parser
#define is_identchar(p, e, enc)
int rb_enc_symname_type(const char *name, long len, rb_encoding *enc, unsigned int allowed_attrset)
#define is_attrset_id(id)
struct rb_strterm_struct * strterm
const struct vtable * vars
void error(const char *msg)
if((ID)(DISPID) nameid !=nameid)
void rb_write_error_str(VALUE mesg)
#define ZALLOC(strm, items, size)