diff options
-rw-r--r-- | ChangeLog | 35 | ||||
-rw-r--r-- | ToDo | 3 | ||||
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | bignum.c | 2 | ||||
-rw-r--r-- | class.c | 4 | ||||
-rw-r--r-- | configure | 2 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | error.c | 43 | ||||
-rw-r--r-- | eval.c | 62 | ||||
-rw-r--r-- | ext/curses/curses.c | 12 | ||||
-rw-r--r-- | ext/dbm/dbm.c | 2 | ||||
-rw-r--r-- | ext/md5/md5init.c | 2 | ||||
-rw-r--r-- | ext/nkf/orig/nkf.c | 20 | ||||
-rw-r--r-- | ext/socket/socket.c | 2 | ||||
-rw-r--r-- | file.c | 4 | ||||
-rw-r--r-- | glob.c | 6 | ||||
-rw-r--r-- | hash.c | 51 | ||||
-rw-r--r-- | intern.h | 3 | ||||
-rw-r--r-- | io.c | 21 | ||||
-rw-r--r-- | lib/cgi-lib.rb | 270 | ||||
-rw-r--r-- | marshal.c | 2 | ||||
-rw-r--r-- | misc/ruby-mode.el | 28 | ||||
-rw-r--r-- | missing/fnmatch.c | 15 | ||||
-rw-r--r-- | missing/fnmatch.h | 2 | ||||
-rw-r--r-- | object.c | 123 | ||||
-rw-r--r-- | parse.c | 1883 | ||||
-rw-r--r-- | parse.y | 23 | ||||
-rw-r--r-- | process.c | 2 | ||||
-rw-r--r-- | range.c | 7 | ||||
-rw-r--r-- | re.c | 2 | ||||
-rw-r--r-- | regex.c | 3 | ||||
-rw-r--r-- | sample/mine.rb | 4 | ||||
-rw-r--r-- | signal.c | 8 | ||||
-rw-r--r-- | string.c | 14 | ||||
-rw-r--r-- | struct.c | 4 | ||||
-rw-r--r-- | time.c | 143 | ||||
-rw-r--r-- | util.h | 1 | ||||
-rw-r--r-- | variable.c | 11 | ||||
-rw-r--r-- | version.h | 2 | ||||
-rw-r--r-- | win32/Makefile | 15 |
40 files changed, 1466 insertions, 1374 deletions
@@ -1,3 +1,38 @@ +Thu Feb 25 12:50:25 1999 Yukihiro Matsumoto <matz@netlab.co.jp> + + * time.c (make_time_t): add `future check' in loops. + + * object.c (rb_num2dbl): forbid implicit conversion from nil, or + strings. thus `Time.now + str' should raise error. + + * object.c (rb_Float): convert nil into 0.0. + + * object.c (rb_Integer): conversion method improved. + +Thu Feb 25 03:27:50 1999 Shugo Maeda <shugo@netlab.co.jp> + + * eval.c (rb_call): should handle T_ICLASS properly. + +Thu Feb 25 00:04:00 1999 Yukihiro Matsumoto <matz@netlab.co.jp> + + * error.c (Init_Exception): global function Exception() removed. + + * variable.c (rb_class2name): returns "nil"/"true"/"false" for them. + + * time.c (time_dump): time marshaling format compressed size from + 11 bytes to 8 bytes. thanx to tadf@kt.rim.or.jp. + + * eval.c (rb_obj_call_init): should specify arguments explicitly. + +Wed Feb 24 15:43:28 1999 Yukihiro Matsumoto <matz@netlab.co.jp> + + * parse.y (yylex): comment concatenation requires preceding space + before backslash at the end of line. + + * io.c (rb_f_pipe): global pipe is obsolete now. + + * object.c (Init_Object): remove true.to_i, false.to_i. + Tue Feb 23 14:21:41 1999 Yukihiro Matsumoto <matz@netlab.co.jp> * parse.y (yylex): warn if identifier! immediately followed by `='. @@ -20,7 +20,7 @@ Standard Libraries * String#scanf(?) * Object#fmt(?) -* Integer[num], Float[num] (String[str]??) +* Integer[num], Float[num] (String[str]?, Array[obj]??) * Stream or Port, abstract superclass of IO. Extension Libraries @@ -39,6 +39,7 @@ Tools * extension library maker like XS or SWIG * freeze or undump to bundle everything +* eruby - embedded ruby Misc @@ -194,7 +194,7 @@ rb_ary_s_new(argc, argv, klass) ary->ptr = ALLOC_N(VALUE, ary->capa); memfill(ary->ptr, len, val); ary->len = len; - rb_obj_call_init((VALUE)ary); + rb_obj_call_init((VALUE)ary, argc, argv); return (VALUE)ary; } @@ -1231,7 +1231,7 @@ rb_big_coerce(x, y) return rb_assoc_new(rb_int2big(FIX2LONG(y)), x); } else { - rb_raise(rb_eTypeError, "can't coerce %s to Bignum", + rb_raise(rb_eTypeError, "Can't coerce %s to Bignum", rb_class2name(CLASS_OF(y))); } /* not reached */ @@ -508,7 +508,7 @@ rb_singleton_class(obj) VALUE obj; { if (rb_special_const_p(obj)) { - rb_raise(rb_eTypeError, "cannot define singleton"); + rb_raise(rb_eTypeError, "can't define singleton"); } if (FL_TEST(RBASIC(obj)->klass, FL_SINGLETON)) { return RBASIC(obj)->klass; @@ -636,7 +636,7 @@ rb_scan_args(argc, argv, fmt, va_alist) } else if (*p == '\0') { if (argc > i) { - rb_raise(rb_eArgError, "Wrong # of arguments(%d for %d)", argc, i); + rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, i); } } else { @@ -2120,7 +2120,7 @@ fi for ac_hdr in stdlib.h unistd.h limits.h sys/file.h sys/ioctl.h pwd.h \ sys/select.h sys/time.h sys/times.h sys/param.h sys/wait.h\ - syscall.h a.out.h string.h utime.h memory.h direct.h + syscall.h a.out.h string.h utime.h memory.h direct.h fnmatch.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 diff --git a/configure.in b/configure.in index 8894cd612c..0b107e093c 100644 --- a/configure.in +++ b/configure.in @@ -169,7 +169,7 @@ AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS(stdlib.h unistd.h limits.h sys/file.h sys/ioctl.h pwd.h \ sys/select.h sys/time.h sys/times.h sys/param.h sys/wait.h\ - syscall.h a.out.h string.h utime.h memory.h direct.h) + syscall.h a.out.h string.h utime.h memory.h direct.h fnmatch.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_TYPE_UID_T @@ -297,7 +297,7 @@ exc_exception(argc, argv, self) etype = RCLASS(etype)->super; } exc = rb_obj_alloc(etype); - rb_obj_call_init(exc); + rb_obj_call_init(exc, argc, argv); return exc; } @@ -374,45 +374,6 @@ exc_set_backtrace(exc, bt) return rb_iv_set(exc, "bt", check_backtrace(bt)); } -static VALUE -exception(argc, argv) - int argc; - VALUE *argv; -{ - VALUE v = Qnil; - VALUE etype = rb_eStandardError; - int i; - ID id; - - if (argc == 0) { - rb_raise(rb_eArgError, "wrong # of arguments"); - } - rb_warn("Exception() is now obsolete"); - if (TYPE(argv[argc-1]) == T_CLASS) { - etype = argv[argc-1]; - argc--; - if (!rb_funcall(etype, '<', 1, rb_eException)) { - rb_raise(rb_eTypeError, "exception should be subclass of Exception"); - } - } - for (i=0; i<argc; i++) { /* argument check */ - id = rb_to_id(argv[i]); - if (!rb_id2name(id)) { - rb_raise(rb_eArgError, "argument needs to be symbol or string"); - } - if (!rb_is_const_id(id)) { - rb_raise(rb_eArgError, "identifier `%s' needs to be constant", - rb_id2name(id)); - } - } - for (i=0; i<argc; i++) { - v = rb_define_class_under(ruby_class, - rb_id2name(rb_to_id(argv[i])), - rb_eStandardError); - } - return v; -} - #ifdef __BEOS__ typedef struct { VALUE *list; @@ -564,8 +525,6 @@ Init_Exception() rb_eNotImpError = rb_define_class("NotImplementError", rb_eException); init_syserr(); - - rb_define_global_function("Exception", exception, -1); } void @@ -2527,7 +2527,7 @@ rb_eval(self, node) case NODE_ATTRSET: if (ruby_frame->argc != 1) - rb_raise(rb_eArgError, "Wrong # of arguments(%d for 1)", + rb_raise(rb_eArgError, "wrong # of arguments(%d for 1)", ruby_frame->argc); result = rb_ivar_set(self, node->nd_vid, ruby_frame->argv[0]); break; @@ -2595,18 +2595,11 @@ rb_eval(self, node) VALUE klass; NODE *body = 0; - if (FIXNUM_P(recv)) { - rb_raise(rb_eTypeError, "Can't define method \"%s\" for Fixnum", - rb_id2name(node->nd_mid)); - } - if (NIL_P(recv)) { - rb_raise(rb_eTypeError, "Can't define method \"%s\" for nil", - rb_id2name(node->nd_mid)); - } if (rb_special_const_p(recv)) { rb_raise(rb_eTypeError, - "Can't define method \"%s\" for special constants", - rb_id2name(node->nd_mid)); + "can't define method \"%s\" for %s", + rb_id2name(node->nd_mid), + rb_class2name(CLASS_OF(recv))); } if (rb_safe_level() >= 4 && !FL_TEST(recv, FL_TAINT)) { @@ -2729,7 +2722,7 @@ rb_eval(self, node) klass = rb_define_class_id(node->nd_cname, super); rb_const_set(ruby_class, node->nd_cname, klass); rb_set_class_path(klass,ruby_class,rb_id2name(node->nd_cname)); - rb_obj_call_init(klass); + rb_obj_call_init(klass, 0, 0); } if (ruby_wrapper) { rb_extend_object(klass, ruby_wrapper); @@ -2769,7 +2762,7 @@ rb_eval(self, node) module = rb_define_module_id(node->nd_cname); rb_const_set(ruby_class, node->nd_cname, module); rb_set_class_path(module,ruby_class,rb_id2name(node->nd_cname)); - rb_obj_call_init(module); + rb_obj_call_init(module, 0, 0); } if (ruby_wrapper) { rb_extend_object(module, ruby_wrapper); @@ -2785,14 +2778,9 @@ rb_eval(self, node) VALUE klass; klass = rb_eval(self, node->nd_recv); - if (FIXNUM_P(klass)) { - rb_raise(rb_eTypeError, "No virtual class for Fixnums"); - } - if (NIL_P(klass)) { - rb_raise(rb_eTypeError, "No virtual class for nil"); - } if (rb_special_const_p(klass)) { - rb_raise(rb_eTypeError, "No virtual class for special constants"); + rb_raise(rb_eTypeError, "no virtual class for %s", + rb_class2name(CLASS_OF(klass))); } if (FL_TEST(CLASS_OF(klass), FL_SINGLETON)) { rb_clear_cache(); @@ -3607,7 +3595,7 @@ call_cfunc(func, recv, len, argc, argv) VALUE *argv; { if (len >= 0 && argc != len) { - rb_raise(rb_eArgError, "Wrong # of arguments(%d for %d)", + rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, len); } @@ -3811,7 +3799,7 @@ rb_call0(klass, recv, id, argc, argv, body, nosuper) i = node->nd_cnt; if (i > argc) { - rb_raise(rb_eArgError, "Wrong # of arguments(%d for %d)", + rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, i); } if (node->nd_rest == -1) { @@ -3823,7 +3811,7 @@ rb_call0(klass, recv, id, argc, argv, body, nosuper) optnode = optnode->nd_next; } if (opt > 0) { - rb_raise(rb_eArgError, "Wrong # of arguments(%d for %d)", + rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, argc-opt); } } @@ -3937,8 +3925,13 @@ rb_call(klass, recv, mid, argc, argv, scope) return rb_undefined(recv, mid, argc, argv, CSTAT_PRIV); /* self must be kind of a specified form for private method */ - if ((noex & NOEX_PROTECTED) && !rb_obj_is_kind_of(ruby_frame->self, klass)) - return rb_undefined(recv, mid, argc, argv, CSTAT_PROT); + if ((noex & NOEX_PROTECTED)) { + VALUE defined_class = klass; + while (TYPE(defined_class) == T_ICLASS) + defined_class = RBASIC(defined_class)->klass; + if (!rb_obj_is_kind_of(ruby_frame->self, defined_class)) + return rb_undefined(recv, mid, argc, argv, CSTAT_PROT); + } return rb_call0(klass, recv, id, argc, argv, body, noex & NOEX_UNDEF); } @@ -4368,7 +4361,7 @@ rb_obj_instance_eval(argc, argv, self) if (argc > 2) line = NUM2INT(argv[2]); } else { - rb_raise(rb_eArgError, "Wrong # of arguments: %s(src) or %s{..}", + rb_raise(rb_eArgError, "wrong # of arguments: %s(src) or %s{..}", rb_id2name(ruby_frame->last_func), rb_id2name(ruby_frame->last_func)); } @@ -4407,7 +4400,7 @@ rb_mod_module_eval(argc, argv, mod) if (argc > 2) line = NUM2INT(argv[2]); } else { - rb_raise(rb_eArgError, "Wrong # of arguments: %s(src) or %s{..}", + rb_raise(rb_eArgError, "wrong # of arguments: %s(src) or %s{..}", rb_id2name(ruby_frame->last_func), rb_id2name(ruby_frame->last_func)); } @@ -4921,16 +4914,7 @@ rb_mod_include(argc, argv, module) } void -rb_obj_call_init(obj) - VALUE obj; -{ - PUSH_ITER(rb_iterator_p()?ITER_PRE:ITER_NOT); - rb_funcall2(obj, init, ruby_frame->argc, ruby_frame->argv); - POP_ITER(); -} - -void -rb_obj_call_init2(obj, argc, argv) +rb_obj_call_init(obj, argc, argv) VALUE obj; int argc; VALUE *argv; @@ -4952,7 +4936,7 @@ rb_class_new_instance(argc, argv, klass) rb_raise(rb_eTypeError, "can't create instance of virtual class"); } obj = rb_obj_alloc(klass); - rb_obj_call_init(obj); + rb_obj_call_init(obj, argc, argv); return obj; } @@ -5420,7 +5404,7 @@ proc_s_new(klass) scope_dup(data->scope); proc_save_safe_level(proc); - rb_obj_call_init(proc); + rb_obj_call_init(proc, 0, 0); return proc; } diff --git a/ext/curses/curses.c b/ext/curses/curses.c index 89396a805f..49fa07bd5c 100644 --- a/ext/curses/curses.c +++ b/ext/curses/curses.c @@ -412,11 +412,13 @@ window_s_new(class, lines, cols, top, left) { VALUE w; WINDOW *window; + VALUE args[4]; window = newwin(NUM2INT(lines), NUM2INT(cols), NUM2INT(top), NUM2INT(left)); wclear(window); w = prep_window(class, window); - rb_obj_call_init(w); + args[0] = lines; args[1] = cols; args[2] = top; args[3] = left; + rb_obj_call_init(w, 4, args); return w; } @@ -432,11 +434,17 @@ window_subwin(obj, lines, cols, top, left) { struct windata *winp; WINDOW *window; + VALUE w; + VALUE args[4]; GetWINDOW(obj, winp); window = subwin(winp->window, NUM2INT(lines), NUM2INT(cols), NUM2INT(top), NUM2INT(left)); - return prep_window(cWindow, window); + w = prep_window(cWindow, window); + args[0] = lines; args[1] = cols; args[2] = top; args[3] = left; + rb_obj_call_init(w, 4, args); + + return w; } /* def close */ diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c index 2764a325e1..c4a47e8004 100644 --- a/ext/dbm/dbm.c +++ b/ext/dbm/dbm.c @@ -84,7 +84,7 @@ fdbm_s_open(argc, argv, klass) obj = Data_Make_Struct(klass,struct dbmdata,0,free_dbm,dbmp); dbmp->di_dbm = dbm; dbmp->di_size = -1; - rb_obj_call_init(obj); + rb_obj_call_init(obj, argc, argv); return obj; } diff --git a/ext/md5/md5init.c b/ext/md5/md5init.c index a825f96d47..e95e135812 100644 --- a/ext/md5/md5init.c +++ b/ext/md5/md5init.c @@ -77,7 +77,7 @@ md5_new(argc, argv, class) if (!NIL_P(arg)) { md5_update(obj, arg); } - rb_obj_call_init(obj); + rb_obj_call_init(obj, argc, argv); return obj; } diff --git a/ext/nkf/orig/nkf.c b/ext/nkf/orig/nkf.c index 8de08a8b36..5a350ae666 100644 --- a/ext/nkf/orig/nkf.c +++ b/ext/nkf/orig/nkf.c @@ -257,9 +257,9 @@ int line_fold(); # define DEFAULT_CONV e_oconv #endif -static void (*iconv)(int c2,int c1); +static void (*iconv) _((int c2,int c1)); /* s_iconv or oconv */ -static void (*oconv)(int c2,int c1) = DEFAULT_CONV; +static void (*oconv) _((int c2,int c1)) = DEFAULT_CONV; /* [ejs]_oconv */ /* Global states */ @@ -464,7 +464,7 @@ main(argc, argv) } #endif -void +static void arguments(cp) char *cp; { @@ -1049,7 +1049,7 @@ h_conv(f, c2, c1) -int +static int push_hold_buf(c2, c1) int c2, c1; { @@ -1323,7 +1323,7 @@ j_oconv(c2, c1) This is the main difference from fmt. */ -int +static int line_fold(c2,c1) int c2,c1; { @@ -1446,7 +1446,7 @@ int c2,c1; } } -int +static int pre_convert(c1,c2) int c1,c2; { @@ -1513,7 +1513,7 @@ int iso8859_f_save; #define nkf_toupper(c) (('a'<=c && c<='z')?(c-('a'-'A')):c) /* I don't trust portablity of toupper */ -int +static int mime_begin(f) FILE *f; { @@ -1620,7 +1620,7 @@ FILE *f; #endif -int +static int mime_getc(f) FILE *f; { @@ -1778,7 +1778,7 @@ mime_integrity(f,p) } #endif -int +static int base64decode(c) int c; { @@ -1797,7 +1797,7 @@ base64decode(c) return (i); } -void +static void reinit() { unbuf_f = FALSE; diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 875c8aa5fb..66bf56a251 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -102,7 +102,7 @@ sock_new(class, fd) fp->f2 = rb_fdopen(fd, "w"); fp->mode = FMODE_READWRITE; rb_io_unbuffered(fp); - rb_obj_call_init((VALUE)sock); + rb_obj_call_init((VALUE)sock, 0, 0); return (VALUE)sock; } @@ -1363,7 +1363,7 @@ test_check(n, argc, argv) int i; n+=1; - if (n < argc) rb_raise(rb_eArgError, "Wrong # of arguments(%d for %d)", argc, n); + if (n < argc) rb_raise(rb_eArgError, "wrong # of arguments(%d for %d)", argc, n); for (i=1; i<n; i++) { switch (TYPE(argv[i])) { case T_STRING: @@ -1387,7 +1387,7 @@ rb_f_test(argc, argv) { int cmd; - if (argc == 0) rb_raise(rb_eArgError, "Wrong # of arguments"); + if (argc == 0) rb_raise(rb_eArgError, "wrong # of arguments"); cmd = NUM2CHR(argv[0]); if (cmd == 0) return Qfalse; if (strchr("bcdefgGkloOprRsSuwWxXz", cmd)) { @@ -95,7 +95,11 @@ # endif /* !SHELL */ #endif /* OPENDIR_NOT_ROBUST */ -#include "fnmatch.h" +#ifdef HAVE_FNMATCH_H +#include <fnmatch.h> +#else +#include "missing/fnmatch.h" +#endif extern void *xmalloc (), *xrealloc (); #if !defined (HAVE_STDLIB_H) @@ -192,7 +192,7 @@ rb_hash_s_new(argc, argv, klass) VALUE *argv; VALUE klass; { - VALUE sz, ifnone; + VALUE ifnone; int size; NEWOBJ(hash, struct RHash); @@ -202,15 +202,11 @@ rb_hash_s_new(argc, argv, klass) hash->ifnone = Qnil; hash->tbl = 0; /* avoid GC crashing */ - rb_scan_args(argc, argv, "02", &ifnone, &sz); - if (NIL_P(sz)) { - size = 0; - } - else size = NUM2INT(sz); + rb_scan_args(argc, argv, "01", &ifnone); hash->ifnone = ifnone; - hash->tbl = st_init_table_with_size(&objhash, size); - rb_obj_call_init((VALUE)hash); + hash->tbl = st_init_table(&objhash); + rb_obj_call_init((VALUE)hash, argc, argv); return (VALUE)hash; } @@ -246,18 +242,16 @@ rb_hash_s_create(argc, argv, klass) int i; if (argc == 1 && TYPE(argv[0]) == T_HASH) { - if (klass == CLASS_OF(argv[0])) return argv[0]; - else { - NEWOBJ(hash, struct RHash); - OBJSETUP(hash, klass, T_HASH); + NEWOBJ(hash, struct RHash); + OBJSETUP(hash, klass, T_HASH); - hash->iter_lev = 0; - hash->ifnone = Qnil; - hash->tbl = 0; /* avoid GC crashing */ - hash->tbl = (st_table*)st_copy(RHASH(argv[0])->tbl); - rb_obj_call_init((VALUE)hash); - return (VALUE)hash; - } + hash->iter_lev = 0; + hash->ifnone = Qnil; + hash->tbl = 0; /* avoid GC crashing */ + hash->tbl = (st_table*)st_copy(RHASH(argv[0])->tbl); + rb_obj_call_init((VALUE)hash, argc, argv); + + return (VALUE)hash; } if (argc % 2 != 0) { @@ -268,7 +262,7 @@ rb_hash_s_create(argc, argv, klass) for (i=0; i<argc; i+=2) { st_insert(RHASH(hash)->tbl, argv[i], argv[i+1]); } - rb_obj_call_init(hash); + rb_obj_call_init(hash, argc, argv); return hash; } @@ -918,7 +912,7 @@ rb_f_getenv(obj, name) nam = str2cstr(name, &len); if (strlen(nam) != len) { - rb_raise(rb_eArgError, "Bad environment variable name"); + rb_raise(rb_eArgError, "bad environment variable name"); } env = getenv(nam); if (env) { @@ -1119,17 +1113,6 @@ ruby_setenv(name, value) #endif /* WIN32 */ } -void -ruby_setenv2(name, value) - char *name; - char *value; -{ - if (value == NULL) { - ruby_unsetenv(name); - } - ruby_setenv(name, value); -} - static VALUE rb_f_setenv(obj, nm, val) VALUE obj, nm, val; @@ -1149,9 +1132,9 @@ rb_f_setenv(obj, nm, val) name = str2cstr(nm, &nlen); value = str2cstr(val, &vlen); if (strlen(name) != nlen) - rb_raise(rb_eArgError, "Bad environment name"); + rb_raise(rb_eArgError, "bad environment variable name"); if (strlen(value) != vlen) - rb_raise(rb_eArgError, "Bad environment value"); + rb_raise(rb_eArgError, "bad environment variable value"); ruby_setenv(name, value); if (strcmp(name, "PATH") == 0) { @@ -117,8 +117,7 @@ void rb_load_protect _((VALUE, int, int*)); void rb_jump_tag _((int)) NORETURN; void rb_provide _((char*)); VALUE rb_f_require _((VALUE, VALUE)); -void rb_obj_call_init _((VALUE)); -void rb_obj_call_init2 _((VALUE, int, VALUE*)); +void rb_obj_call_init _((VALUE, int, VALUE*)); VALUE rb_class_new_instance _((int, VALUE*, VALUE)); VALUE rb_f_lambda _((void)); VALUE rb_protect _((VALUE (*)(), VALUE, int*)); @@ -1208,7 +1208,7 @@ rb_file_open(fname, mode) fptr->mode = rb_io_mode_flags(mode); fptr->f = rb_fopen(fname, mode); fptr->path = strdup(fname); - rb_obj_call_init((VALUE)port); + rb_obj_call_init((VALUE)port, 0, 0); return (VALUE)port; } @@ -1236,7 +1236,7 @@ rb_file_sysopen(fname, flags, mode) fptr->mode = rb_io_mode_flags2(flags); fptr->f = rb_fdopen(fd, m); fptr->path = strdup(fname); - rb_obj_call_init((VALUE)port); + rb_obj_call_init((VALUE)port, 0, 0); return (VALUE)port; #endif @@ -1351,7 +1351,7 @@ pipe_open(pname, mode) fptr->f2 = f; rb_io_unbuffered(fptr); } - rb_obj_call_init((VALUE)port); + rb_obj_call_init((VALUE)port, 0, 0); return (VALUE)port; } #else @@ -1439,7 +1439,7 @@ pipe_open(pname, mode) fptr->finalize = pipe_finalize; pipe_add_fptr(fptr); #endif - rb_obj_call_init((VALUE)port); + rb_obj_call_init((VALUE)port, 0, 0); return (VALUE)port; } } @@ -1504,7 +1504,7 @@ rb_file_s_open(argc, argv, klass) } RBASIC(file)->klass = klass; - rb_obj_call_init(file); + rb_obj_call_init(file, 0, 0); if (rb_iterator_p()) { return rb_ensure(rb_yield, file, rb_io_close, file); } @@ -2016,7 +2016,7 @@ prep_stdio(f, mode, klass) MakeOpenFile(io, fp); fp->f = f; fp->mode = mode; - rb_obj_call_init((VALUE)io); + rb_obj_call_init((VALUE)io, 0, 0); return (VALUE)io; } @@ -2655,6 +2655,13 @@ rb_io_s_pipe() #endif } +static VALUE +rb_f_pipe() +{ + rb_warn("pipe is obsolete; use IO::pipe instead"); + return rb_io_s_pipe(); +} + struct foreach_arg { int argc; VALUE sep; @@ -2954,7 +2961,7 @@ Init_IO() rb_define_global_function("readlines", rb_f_readlines, -1); rb_define_global_function("`", rb_f_backquote, 1); - rb_define_global_function("pipe", rb_io_s_pipe, 0); + rb_define_global_function("pipe", rb_f_pipe, 0); rb_define_global_function("p", rb_f_p, -1); rb_define_method(rb_mKernel, "display", rb_obj_display, -1); diff --git a/lib/cgi-lib.rb b/lib/cgi-lib.rb index 83ea6118b9..12c850240b 100644 --- a/lib/cgi-lib.rb +++ b/lib/cgi-lib.rb @@ -1,54 +1,113 @@ -# -# Get CGI String -# -# EXAMPLE: -# require "cgi-lib.rb" -# foo = CGI.new -# foo['field'] <== value of 'field' -# foo.keys <== array of fields -# and foo has Hash class methods -# -# foo.cookie['name'] <== cookie value of 'name' -# foo.cookie.keys <== all cookie names -# and foo.cookie has Hash class methods -# -# make raw cookie string -# cookie1 = CGI.cookie({'name' => 'name', -# 'value' => 'value', -# 'path' => 'path', # optional -# 'domain' => 'domain', # optional -# 'expires' => Time.now, # optional -# 'secure' => true # optional -# }) -# -# print CGI.header("Content-Type: text/html", cookie1, cookie2) -# -# print CGI.header("HTTP/1.0 200 OK", "Content-Type: text/html") -# print CGI.header # == print CGI.header("Content-Type: text/html") -# -# make HTML tag string -# CGI.tag("element", {"attribute_name"=>"attribute_value"}){"content"} -# -# print CGI.tag("HTML"){ -# CGI.tag("HEAD"){ CGI.tag("TITLE"){"TITLE"} } + -# CGI.tag("BODY"){ -# CGI.tag("FORM", {"ACTION"=>"test.rb", "METHOD"=>"POST"}){ -# CGI.tag("INPUT", {"TYPE"=>"submit", "VALUE"=>"submit"}) -# } + -# CGI.tag("HR") -# } -# } -# -# print HTTP header and strings to STDOUT -# CGI.print{ "string" } # add HTTP header "Content-Type: text/html" -# CGI.print("Content-Type: text/plain"){ "string" } -# CGI.print("HTTP/1.0 200 OK", "Content-Type: text/html"){ "string" } - - -# if running on Windows(IIS or PWS) then change cwd. -if ENV['SERVER_SOFTWARE'] =~ /^Microsoft-/ then - Dir.chdir ENV['PATH_TRANSLATED'].sub(/[^\\]+$/, '') -end +=begin + += simple CGI support library + += example + +== get form values + + require "cgi-lib.rb" + query = CGI.new + query['field'] # <== value of 'field' + query.keys # <== array of fields + +and query has Hash class methods + + +== get cookie values + + require "cgi-lib.rb" + query = CGI.new + query.cookie['name'] # <== cookie value of 'name' + query.cookie.keys # <== all cookie names + +and query.cookie has Hash class methods + + +== print HTTP header and HTML string to $> + + require "cgi-lib.rb" + CGI.print{ + CGI.tag("HTML"){ + CGI.tag("HEAD"){ CGI.tag("TITLE"){"TITLE"} } + + CGI.tag("BODY"){ + CGI.tag("FORM", {"ACTION"=>"test.rb", "METHOD"=>"POST"}){ + CGI.tag("INPUT", {"TYPE"=>"submit", "VALUE"=>"submit"}) + } + + CGI.tag("HR") + } + } + } + + +== make raw cookie string + + require "cgi-lib.rb" + cookie1 = CGI.cookie({'name' => 'name', + 'value' => 'value', + 'path' => 'path', # optional + 'domain' => 'domain', # optional + 'expires' => Time.now, # optional + 'secure' => true # optional + }) + + CGI.print("Content-Type: text/html", cookie1, cookie2){ "string" } + + +== print HTTP header and string to $> + + require "cgi-lib.rb" + CGI.print{ "string" } + # == CGI.print("Content-Type: text/html"){ "string" } + CGI.print("Content-Type: text/html", cookie1, cookie2){ "string" } + + +=== NPH (no-parse-header) mode + + require "cgi-lib.rb" + CGI.print("nph"){ "string" } + # == CGI.print("nph", "Content-Type: text/html"){ "string" } + CGI.print("nph", "Content-Type: text/html", cookie1, cookie2){ "string" } + + +== make HTML tag string + + require "cgi-lib.rb" + CGI.tag("element", {"attribute_name"=>"attribute_value"}){"content"} + + +== make HTTP header string + + require "cgi-lib.rb" + CGI.header # == CGI.header("Content-Type: text/html") + CGI.header("Content-Type: text/html", cookie1, cookie2) + + +=== NPH (no-parse-header) mode + + CGI.header("nph") # == CGI.header("nph", "Content-Type: text/html") + CGI.header("nph", "Content-Type: text/html", cookie1, cookie2) + + +== escape url encode + + require "cgi-lib.rb" + url_encoded_string = CGI.escape("string") + + +== unescape url encoded + + require "cgi-lib.rb" + string = CGI.unescape("url encoded string") + + +== escape HTML &"<> + + require "cgi-lib.rb" + CGI.escapeHTML("string") + + +=end require "delegate" @@ -58,33 +117,19 @@ class CGI < SimpleDelegator LF = "\012" EOL = CR + LF - attr("inputs") - attr("cookie") - - # original is CGI.pm - def read_from_cmdline - require "shellwords.rb" - words = Shellwords.shellwords(if not ARGV.empty? then - ARGV.join(' ') - else - STDERR.print "(offline mode: enter name=value pairs on standard input)\n" if STDIN.tty? - readlines.join(' ').gsub(/\n/, '') - end.gsub(/\\=/, '%3D').gsub(/\\&/, '%26')) - - if words.find{|x| x =~ /=/} then words.join('&') else words.join('+') end + # if running on Windows(IIS or PWS) then change cwd. + if ENV['SERVER_SOFTWARE'] =~ /^Microsoft-/ + Dir.chdir(ENV['PATH_TRANSLATED'].sub(/[^\\]+$/, '')) end - + # escape url encode def escape(str) - str.gsub!(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) } - str + str.gsub(/[^a-zA-Z0-9_\-.]/n){ sprintf("%%%02X", $&.unpack("C")[0]) } end # unescape url encoded def unescape(str) - str.gsub!(/\+/, ' ') - str.gsub!(/%([0-9a-fA-F]{2})/){ [$1.hex].pack("c") } - str + str.gsub(/\+/, ' ').gsub(/%([0-9a-fA-F]{2})/){ [$1.hex].pack("c") } end # escape HTML @@ -94,17 +139,33 @@ class CGI < SimpleDelegator module_function :escape, :unescape, :escapeHTML + # offline mode. read name=value pairs on standard input. + def read_from_cmdline + require "shellwords.rb" + words = Shellwords.shellwords( + if not ARGV.empty? + ARGV.join(' ') + else + STDERR.print "(offline mode: enter name=value pairs on standard input)\n" if STDIN.tty? + readlines.join(' ').gsub(/\n/, '') + end.gsub(/\\=/, '%3D').gsub(/\\&/, '%26')) + + if words.find{|x| x =~ /=/} then words.join('&') else words.join('+') end + end + def initialize(input = $stdin) @inputs = {} + @cookie = {} + case ENV['REQUEST_METHOD'] when "GET" # exception messages should be printed to stdout. - STDERR.reopen(STDOUT) + STDERR.reopen($>) ENV['QUERY_STRING'] or "" when "POST" # exception messages should be printed to stdout. - STDERR.reopen(STDOUT) + STDERR.reopen($>) input.read Integer(ENV['CONTENT_LENGTH']) else read_from_cmdline @@ -119,27 +180,32 @@ class CGI < SimpleDelegator super(@inputs) - if ENV.has_key?('HTTP_COOKIE') - @cookie = {} - ENV['HTTP_COOKIE'].split("; ").each do |x| - key, val = x.split(/=/,2).collect{|x|unescape(x)} + if ENV.has_key?('HTTP_COOKIE') or ENV.has_key?('COOKIE') + (ENV['HTTP_COOKIE'] or ENV['COOKIE']).split("; ").each do |x| + key, val = x.split(/=/,2) + key = unescape(key) + val = val.split(/&/).collect{|x|unescape(x)}.join("\0") if @cookie.include?(key) - @cookie[key] += "\0" + (val or "") + @cookie[key] += "\0" + val else - @cookie[key] = (val or "") + @cookie[key] = val end end end end - def CGI.header(*options) - options.push("Content-Type: text/html") if options.empty? - if options.find{|item| /^Expires: |^Set-Cookie: /i === item} - options.push("Date: " + Time.now.gmtime.strftime("%a, %d %b %Y %X %Z")) - end - options.join(EOL) + EOL + EOL + attr("inputs") + attr("cookie") + + # make HTML tag string + def CGI.tag(element, attributes = {}) + "<" + escapeHTML(element) + attributes.collect{|name, value| + " " + escapeHTML(name) + '="' + escapeHTML(value) + '"' + }.to_s + ">" + + (iterator? ? yield.to_s + "</" + escapeHTML(element) + ">" : "") end + # make raw cookie string def CGI.cookie(options) "Set-Cookie: " + options['name'] + '=' + escape(options['value']) + (options['domain'] ? '; domain=' + options['domain'] : '') + @@ -148,18 +214,35 @@ class CGI < SimpleDelegator (options['secure'] ? '; secure' : '') end - def CGI.tag(element, attributes = {}) - "<" + escapeHTML(element) + attributes.collect{|name, value| - " " + escapeHTML(name) + '="' + escapeHTML(value) + '"' - }.to_s + ">" + - (iterator? ? yield.to_s + "</" + escapeHTML(element) + ">" : "") + # make HTTP header string + def CGI.header(*options) + if ENV['MOD_RUBY'] + options.each{|option| + option.sub(/(.*?): (.*)/){ + Apache::request[$1] = $2 + } + } + Apache::request.send_http_header + '' + else + if options.delete("nph") or (ENV['SERVER_SOFTWARE'] =~ /IIS/) + [(ENV['SERVER_PROTOCOL'] or "HTTP/1.0") + " 200 OK", + "Date: " + Time.now.gmtime.strftime("%a, %d %b %Y %X %Z"), + "Server: " + (ENV['SERVER_SOFTWARE'] or ""), + "Connection: close"] + + (options.empty? ? ["Content-Type: text/html"] : options) + else + options.empty? ? ["Content-Type: text/html"] : options + end.join(EOL) + EOL + EOL + end end - def CGI.print(*header) - header.push("Content-Type: text/html") if header.empty? - STDOUT.print CGI.header(*header) + yield.to_s + # print HTTP header and string to $> + def CGI.print(*options) + $>.print CGI.header(*options) + yield.to_s end + # print message to $> def CGI.message(message, title = "", header = ["Content-Type: text/html"]) if message.kind_of?(Hash) title = message['title'] @@ -175,6 +258,7 @@ class CGI < SimpleDelegator TRUE end + # print error message to $> and exit def CGI.error CGI.message({'title'=>'ERROR', 'body'=> CGI.tag("PRE"){ @@ -851,7 +851,7 @@ marshal_load(argc, argv) v = rb_ensure(load, (VALUE)&arg, load_ensure, (VALUE)&arg); } else { - rb_raise(rb_eTypeError, "Old marshal file format (can't read)"); + rb_raise(rb_eTypeError, "old marshal file format (can't read)"); } return v; diff --git a/misc/ruby-mode.el b/misc/ruby-mode.el index af59f709a6..e27102f212 100644 --- a/misc/ruby-mode.el +++ b/misc/ruby-mode.el @@ -217,7 +217,7 @@ The variable ruby-indent-level controls the amount of indentation. (progn (goto-char (match-end 0)) (looking-at "\\>")) - (looking-at "[a-zA-Z][a-zA-z0-9_]* /[^ \t]")))))))) + (looking-at "[a-zA-Z][a-zA-z0-9_]* +/[^ \t]")))))))) (defun ruby-parse-region (start end) (let ((indent-point end) @@ -250,7 +250,6 @@ The variable ruby-indent-level controls the amount of indentation. (setq in-string (point)) (goto-char indent-point)))) ((looking-at "/") - (echo "here %s" (ruby-expr-beg)) (cond ((and (not (eobp)) (ruby-expr-beg)) (if (re-search-forward "[^\\]/" indent-point t) @@ -686,20 +685,15 @@ An end of a defun is found by moving forward from the beginning of one." '("^\\s *def\\s *\\<\\(\\(\\w\\|\\s_\\)+\\.\\)?\\(\\(\\w\\|\\s_\\)+\\)\\>" 3 font-lock-function-name-face t)) "*Additional expressions to highlight in ruby mode.") - (if (and (>= (string-to-int emacs-version) 19) - (not (featurep 'xemacs))) - (add-hook - 'ruby-mode-hook - (lambda () - (make-local-variable 'font-lock-syntactic-keywords) - (setq font-lock-syntactic-keywords - '(("\\$\\([#\"'$\\]\\)" 1 (1 . nil)) - ("\\(#\\)[{$@]" 1 (1 . nil)))) - (make-local-variable 'font-lock-defaults) - (setq font-lock-defaults - '((ruby-font-lock-keywords) nil nil ((?\_ . "w") (?$ . "/")))))) - (add-hook 'ruby-mode-hook - (lambda () - (setq font-lock-keywords ruby-font-lock-keywords)))))) + (add-hook + 'ruby-mode-hook + (lambda () + (make-local-variable 'font-lock-syntactic-keywords) + (setq font-lock-syntactic-keywords + '(("\\$\\([#\"'$\\]\\)" 1 (1 . nil)) + ("\\(#\\)[{$@]" 1 (1 . nil)))) + (make-local-variable 'font-lock-defaults) + (setq font-lock-defaults '((ruby-font-lock-keywords) nil nil)) + (setq font-lock-keywords ruby-font-lock-keywords))))) (provide 'ruby-mode) diff --git a/missing/fnmatch.c b/missing/fnmatch.c index 5bc8d7d402..09f474b0ec 100644 --- a/missing/fnmatch.c +++ b/missing/fnmatch.c @@ -48,11 +48,15 @@ static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94"; #define EOS '\0' -static const char *rangematch(const char *, int, int); +static char *rangematch(const char *, int, int); -int fnmatch(const char *pattern, const char *string, int flags) +int +fnmatch(pattern, string, flags) + char *pattern; + char *string; + int flags; { - const char *stringstart; + char *stringstart; char c, test; for (stringstart = string;;) { @@ -149,7 +153,10 @@ int fnmatch(const char *pattern, const char *string, int flags) } } -static const char *rangematch(const char *pattern, int test, int flags) +static char* +rangematch(pattern, test, flags) + char *pattern; + int test, flags; { int negate, ok; char c, c2; diff --git a/missing/fnmatch.h b/missing/fnmatch.h index 66f36a1537..773851625a 100644 --- a/missing/fnmatch.h +++ b/missing/fnmatch.h @@ -48,7 +48,7 @@ extern "C" { #define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ #define FNM_PERIOD 0x04 /* Period must be matched by period. */ -int fnmatch(const char *, const char *, int); +int fnmatch(); #ifdef __cplusplus } @@ -368,13 +368,6 @@ true_to_s(obj) } static VALUE -true_to_i(obj) - VALUE obj; -{ - return INT2FIX(1); -} - -static VALUE true_type(obj) VALUE obj; { @@ -410,13 +403,6 @@ false_to_s(obj) } static VALUE -false_to_i(obj) - VALUE obj; -{ - return INT2FIX(0); -} - -static VALUE false_type(obj) VALUE obj; { @@ -579,7 +565,7 @@ rb_module_s_new(klass) VALUE mod = rb_module_new(); RBASIC(mod)->klass = klass; - rb_obj_call_init(mod); + rb_obj_call_init(mod, 0, 0); return mod; } @@ -601,7 +587,7 @@ rb_class_s_new(argc, argv) /* make metaclass */ RBASIC(klass)->klass = rb_singleton_class_new(RBASIC(super)->klass); rb_singleton_class_attached(RBASIC(klass)->klass, klass); - rb_obj_call_init(klass); + rb_obj_call_init(klass, argc, argv); return klass; } @@ -752,43 +738,6 @@ rb_obj_private_methods(obj) return rb_class_private_instance_methods(1, argv, CLASS_OF(obj)); } -VALUE -rb_Integer(val) - VALUE val; -{ - long i; - - switch (TYPE(val)) { - case T_FLOAT: - if (RFLOAT(val)->value <= (double)FIXNUM_MAX - && RFLOAT(val)->value >= (double)FIXNUM_MIN) { - i = (long)RFLOAT(val)->value; - break; - } - return rb_dbl2big(RFLOAT(val)->value); - - case T_BIGNUM: - return val; - - case T_STRING: - return rb_str2inum(RSTRING(val)->ptr, 0); - - case T_NIL: - return INT2FIX(0); - - default: - i = NUM2LONG(val); - } - return INT2NUM(i); -} - -static VALUE -rb_f_integer(obj, arg) - VALUE obj, arg; -{ - return rb_Integer(arg); -} - struct arg_to { VALUE val; char *s; @@ -830,6 +779,50 @@ rb_convert_type(val, type, tname, method) return val; } +VALUE +rb_Integer(val) + VALUE val; +{ + struct arg_to arg1, arg2; + + switch (TYPE(val)) { + case T_FLOAT: + if (RFLOAT(val)->value <= (double)FIXNUM_MAX + && RFLOAT(val)->value >= (double)FIXNUM_MIN) { + break; + } + return rb_dbl2big(RFLOAT(val)->value); + + case T_BIGNUM: + return val; + + case T_STRING: + return rb_str2inum(RSTRING(val)->ptr, 0); + + case T_NIL: + return INT2FIX(0); + + default: + break; + } + + arg1.val = arg2.val = val; + arg1.s = "to_i"; + arg2.s = "Integer"; + val = rb_rescue(to_type, (VALUE)&arg1, fail_to_type, (VALUE)&arg2); + if (!rb_obj_is_kind_of(val, rb_cInteger)) { + rb_raise(rb_eTypeError, "to_i should return Integer"); + } + return val; +} + +static VALUE +rb_f_integer(obj, arg) + VALUE obj, arg; +{ + return rb_Integer(arg); +} + double rb_big2dbl _((VALUE)); VALUE @@ -846,6 +839,9 @@ rb_Float(val) case T_BIGNUM: return rb_float_new(rb_big2dbl(val)); + case T_NIL: + return rb_float_new(0.0); + default: return rb_convert_type(val, T_FLOAT, "Float", "to_f"); } @@ -862,8 +858,23 @@ double rb_num2dbl(val) VALUE val; { - VALUE v = rb_Float(val); - return RFLOAT(v)->value; + switch (TYPE(val)) { + case T_FLOAT: + return RFLOAT(val)->value; + + case T_STRING: + rb_raise(rb_eTypeError, "no implicit conversion from String"); + break; + + case T_NIL: + rb_raise(rb_eTypeError, "no implicit conversion from nil"); + break; + + default: + break; + } + + return RFLOAT(rb_Float(val))->value; } char* @@ -1081,7 +1092,6 @@ Init_Object() rb_cTrueClass = rb_define_class("TrueClass", rb_cObject); rb_define_method(rb_cTrueClass, "to_s", true_to_s, 0); - rb_define_method(rb_cTrueClass, "to_i", true_to_i, 0); rb_define_method(rb_cTrueClass, "type", true_type, 0); rb_define_method(rb_cTrueClass, "&", true_and, 1); rb_define_method(rb_cTrueClass, "|", true_or, 1); @@ -1091,7 +1101,6 @@ Init_Object() rb_cFalseClass = rb_define_class("FalseClass", rb_cObject); rb_define_method(rb_cFalseClass, "to_s", false_to_s, 0); - rb_define_method(rb_cFalseClass, "to_i", false_to_i, 0); rb_define_method(rb_cFalseClass, "type", false_type, 0); rb_define_method(rb_cFalseClass, "&", false_and, 1); rb_define_method(rb_cFalseClass, "|", false_or, 1); @@ -399,7 +399,7 @@ static const short yyrhs[] = { -1, 0, 191, 194, 0, 192, 194, 0, 193, 0, 0, 47, 0, 189, 111, 47, 0, 47, 91, 140, 0, 190, 0, 191, 111, 190, 0, 88, 47, 0, 89, - 47, 0, 111, 193, 0, 0, 183, 0, 85, 125, + 47, 0, 111, 193, 0, 0, 183, 0, 115, 125, 202, 110, 0, 0, 197, 203, 0, 150, 203, 0, 198, 0, 197, 111, 198, 0, 140, 84, 140, 0, 47, 0, 51, 0, 48, 0, 109, 0, 81, 0, @@ -575,9 +575,9 @@ static const short yydefact[] = { 1, 111, 103, 120, 130, 122, 121, 114, 124, 108, 96, 116, 115, 110, 126, 129, 127, 95, 102, 93, 94, 91, 92, 56, 58, 57, 86, 87, 84, 68, 69, - 70, 73, 75, 71, 64, 88, 89, 76, 77, 0, - 81, 72, 74, 65, 66, 67, 78, 79, 80, 82, - 83, 85, 90, 244, 59, 60, 311, 338, 0, 121, + 70, 73, 75, 71, 64, 88, 89, 76, 77, 81, + 72, 74, 65, 66, 67, 78, 79, 80, 82, 83, + 85, 90, 0, 244, 59, 60, 311, 338, 0, 121, 114, 124, 108, 91, 92, 56, 57, 61, 14, 290, 301, 226, 304, 0, 26, 228, 0, 0, 0, 0, 220, 223, 282, 353, 263, 262, 0, 0, 50, 53, @@ -639,311 +639,286 @@ static const short yydefgoto[] = { 615, }; static const short yypact[] = {-32768, - 1581, 4673, 29, 135, 4070, 4379, 2015, 4763, 4763, 2487, - 4763, 4763, 5841,-32768,-32768,-32768,-32768, 3427, 3517, 3607, --32768,-32768,-32768,-32768, 4763, 4276, -45,-32768, 39,-32768, --32768, 1679, 1898,-32768,-32768, 1793,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 5573, 5573, 135, 2578, - 5573, 5573, 6105, 4173, 5663, 5573,-32768, -25, 338, 93, - 136, 64,-32768, 59, 5929,-32768, 6104, 0, 147, 22, --32768,-32768, 122,-32768, 168, 3067, 338,-32768,-32768, 4763, - 41,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 1422, 4530, 39, 164, 2922, 4236, 1856, 4620, 4620, 2328, + 4620, 4620, 5698,-32768,-32768,-32768,-32768, 3387, 3477, 3567, +-32768,-32768,-32768,-32768, 4620, 4133, -53,-32768, -41,-32768, +-32768, 1520, 1739,-32768,-32768, 1634,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 5430, 5430, 164, 2419, + 5430, 5430, 5962, 4030, 5520, 5430,-32768, 158, 420, 322, + 88, 86,-32768, 82, 5786,-32768, 6041, -8, 160, 27, +-32768,-32768, 105,-32768, 168, 3027, 420,-32768,-32768, 4620, + 50,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768, -9, 1, 2, 12,-32768, +-32768,-32768,-32768,-32768,-32768, 1, 94, 146, 182,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 79, 85, 125,-32768, 130,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 4763, + 183, 196, 200,-32768, 201,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 175,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 74, 212, - 3157, 3247, 3337, 33,-32768, 118, 33, 221, 21, 21, - 155, 172, 177, -45,-32768, 192, 62, 285, 71, 78, - -17, 2686, 5573, 5573, 5573, 4483,-32768, 1089,-32768,-32768, - 205,-32768, 80, 210, 222, 211,-32768, 4578,-32768, 4853, --32768,-32768, 36,-32768,-32768, 215, 230, 2794, 284, 143, - 284,-32768, 2578, 251, 257, 258, 6104, -22, 243, -22, - 264, 92,-32768,-32768,-32768,-32768,-32768,-32768, 284, 284, --32768,-32768,-32768,-32768, 2976, 4763, 4763, 4763, 4763, 4763, - 4763, 5213,-32768, 2578, 6105,-32768, 268, 5573, 5573, 5573, - 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, - 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, 5573, - 5573, 5573, 5573, 235, 280, 4853,-32768,-32768,-32768,-32768, --32768,-32768, 5573, 5573, 4853,-32768,-32768, 31, -25,-32768, --32768,-32768, 2885, 28, -2,-32768,-32768,-32768,-32768, 5573, - 365,-32768, 2123, 382, 2305, 5303, 387,-32768, 2885,-32768, - 2885, 215, 235, 306, 4853, 4763, 749, 6104,-32768, 288, - 5573, 4943,-32768, 311, 4853, 5033,-32768,-32768, 290, 293, - -45,-32768,-32768,-32768, 4379,-32768, 5573, 2794, 297, 311, - 298,-32768, 299, 5573,-32768,-32768,-32768,-32768,-32768, 5573, --32768,-32768, 338, 93, 93, 93, 93,-32768,-32768, 5573, - 300,-32768, 302,-32768, 6017, 284, 670, 670, 670, 670, - 286, 286, 1385, 6184, 670, 670, 6144, 6144, 129, 129, - 1339, 286, 286, 99, 99, 291, 66, 66, 284, 284, - 284, 3697,-32768, 3787, 3877, 197, 226, 3967, 296,-32768, - 68, 68, 5573, 5573, 6104, 6104, 304,-32768,-32768, 4763, - 2885, 391, 305, 326, 375, 376, 13, 2885, -25, 313, --32768, 314, 315,-32768, 4379, 4379, 15, 318, 2396, 422, - 246,-32768, 365, 5573, 321, 25,-32768, 423, 425, 322, - 103,-32768, 324, 327, 21, 352,-32768,-32768, 6104, 5573, - 1089,-32768, 333, 232, 332, 5573, 1089,-32768,-32768,-32768, --32768,-32768, 4763, 6104, 339,-32768, 253, 6104, 6104, 5393, --32768, 6105,-32768, 5573, 4853,-32768, 5573, 5573, 5573, 5573, - 4853,-32768, 208,-32768, 5753, 2885, 2794, 6104, 6104,-32768, - 2885, 31, 439,-32768,-32768, 5573,-32768,-32768, -45, 440, --32768, 26,-32768, 30,-32768, 362,-32768,-32768,-32768, 2015, - 5573,-32768, 2885, 443, 4763, 444,-32768, 445, 6104, 5483, - 2214,-32768,-32768, 160, 2885, 749, 5123,-32768, 238, 749, - 23,-32768, 5573,-32768, 6104, 346, 6104, 6104, 6104, 6104, - 347, 5573, 5573,-32768, 363, 448, 353, 450,-32768,-32768, - 6104, 355,-32768, 326, 351, 315,-32768, 326,-32768, 315, - -2, 212,-32768,-32768, 33,-32768,-32768, 5573, 206, 457, --32768, 5573,-32768,-32768, 6104,-32768,-32768, 6104, 6104,-32768, --32768,-32768,-32768,-32768, 30,-32768,-32768,-32768, 2885,-32768, - 2123, 6104,-32768,-32768,-32768,-32768, 749, 315, 458, 246, --32768,-32768,-32768,-32768, 469, 470,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 4620,-32768,-32768,-32768,-32768,-32768, 235,-32768, +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 127, 244, + 3117, 3207, 3297, 46,-32768, 149, 46, 273, 42, 42, + 198, 202, 206, -53,-32768, 150, 10, 286, 92, 93, + 74, 2527, 5430, 5430, 5430, 4340,-32768, 5961,-32768,-32768, + 204,-32768, 111, 37, 44, 218,-32768, 4435,-32768, 4710, +-32768,-32768, 270,-32768,-32768, 222, 242, 2635, 294, 116, + 294,-32768, 2419, 272, 275, 276, 6041, -27, 274, -27, + 282, 60,-32768,-32768,-32768,-32768,-32768,-32768, 294, 294, +-32768,-32768,-32768,-32768, 2817, 4620, 4620, 4620, 4620, 4620, + 4620, 5070,-32768, 2419, 5962,-32768, 280, 5430, 5430, 5430, + 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, + 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, 5430, + 5430, 5430, 5430, 249, 285, 4710,-32768,-32768,-32768,-32768, +-32768,-32768, 5430, 5430, 4710,-32768,-32768, 13, 158,-32768, +-32768,-32768, 2726, 35, 18,-32768,-32768,-32768,-32768, 5430, + 368,-32768, 1964, 380, 2146, 5160, 391,-32768, 2726,-32768, + 2726, 222, 249, 303, 4710, 4620, 1206, 6041,-32768, 292, + 5430, 4800,-32768, 320, 4710, 4890,-32768,-32768, 295, 298, + -53,-32768,-32768,-32768, 4236,-32768, 5430, 2635, 301, 320, + 300,-32768, 306, 5430,-32768,-32768,-32768,-32768,-32768, 5430, +-32768,-32768, 420, 322, 322, 322, 322,-32768,-32768, 5430, + 307,-32768, 312,-32768, 5874, 294, 6161, 6161, 6161, 6161, + 263, 263, 6201, 6121, 6161, 6161, 6081, 6081, -6, -6, + 6001, 263, 263, 134, 134, 475, 14, 14, 294, 294, + 294, 3657,-32768, 3747, 3837, 195, 117, 3927, 310,-32768, + 98, 98, 5430, 5430, 6041, 6041, 316,-32768,-32768, 4620, + 2726, 418, 324, 339, 388, 389, 20, 2726, 158, 330, +-32768, 331, 333,-32768, 4236, 4236, 48, 335, 2237, 438, + 355,-32768, 368, 5430, 337, 30,-32768, 440, 451, 347, + 75,-32768, 348, 353, 42, 379,-32768,-32768, 6041, 5430, + 5961,-32768, 358, 135, 357, 5430, 5961,-32768,-32768,-32768, +-32768,-32768, 4620, 6041, 363,-32768, 262, 6041, 6041, 5250, +-32768, 5962,-32768, 5430, 4710,-32768, 5430, 5430, 5430, 5430, + 4710,-32768, 197,-32768, 5610, 2726, 2635, 6041, 6041,-32768, + 2726, 13, 463,-32768,-32768, 5430,-32768,-32768, -53, 464, +-32768, 24,-32768, 36,-32768, 386,-32768,-32768,-32768, 1856, + 5430,-32768, 2726, 467, 4620, 469,-32768, 472, 6041, 5340, + 2055,-32768,-32768, 148, 2726, 1206, 4980,-32768, 216, 1206, + 26,-32768, 5430,-32768, 6041, 373, 6041, 6041, 6041, 6041, + 377, 5430, 5430,-32768, 392, 479, 383, 483,-32768,-32768, + 6041, 393,-32768, 339, 390, 333,-32768, 339,-32768, 333, + 18, 244,-32768,-32768, 46,-32768,-32768, 5430, 83, 487, +-32768, 5430,-32768,-32768, 6041,-32768,-32768, 6041, 6041,-32768, +-32768,-32768,-32768,-32768, 36,-32768,-32768,-32768, 2726,-32768, + 1964, 6041,-32768,-32768,-32768,-32768, 1206, 333, 489, 355, +-32768,-32768,-32768,-32768, 502, 506,-32768 }; static const short yypgoto[] = {-32768, --32768, 479,-32768, 32,-32768,-32768, 95, 1321, -10, -149, - -27, -49,-32768,-32768, 16, 46, 7,-32768,-32768,-32768, --32768, 1012,-32768,-32768,-32768, -247, -196, 8, -300, -201, --32768, -12,-32768, 18,-32768, -1,-32768,-32768,-32768,-32768, --32768,-32768,-32768, -173, -159, -139, -289, -20, 61,-32768, --32768, -46,-32768,-32768, 115, -103,-32768,-32768, -95,-32768, --32768,-32768,-32768, 616, 473, 698,-32768,-32768, -89, 56, --32768, -444, -24, -461, -274, -389,-32768,-32768, -32, -301, - 256,-32768,-32768, -169, 119, -56,-32768 +-32768, 345,-32768, 31,-32768,-32768, 19, 1162, -9, -151, + -24, -52,-32768,-32768, 3, 53, -4,-32768,-32768,-32768, +-32768, 853,-32768,-32768,-32768, -214, -190, 16, -295, -201, +-32768, -12,-32768, 23,-32768, -1,-32768,-32768,-32768,-32768, +-32768,-32768,-32768, -162, -166, -103, -286, 22, 96,-32768, +-32768, -47,-32768,-32768, 644, -70,-32768,-32768, -54,-32768, +-32768,-32768,-32768, 387, 515, 503,-32768,-32768, -50, 99, +-32768, -426, 15, -427, -284, -387,-32768,-32768, -29, -298, + 130,-32768,-32768, -181, 11, -26,-32768 }; -#define YYLAST 6287 +#define YYLAST 6304 static const short yytable[] = { 68, - 68, 244, 185, 315, 337, 68, 68, 68, 68, 68, - 68, 187, 168, 340, 322, 256, 203, 203, 203, 232, - 321, 440, 226, 68, 302, 199, 199, 211, 186, 297, - 434, 462, 214, 77, 468, 462, 209, 312, 228, 230, - 318, 299, 515, 517, 424, 312, 318, -275, 68, 82, - 566, 187, 570, 203, 250, 251, 250, 251, 468, 424, - 236, 250, 251, 187, 250, 251, 250, 251, 233, 569, - 215, -306, 564, 351, 203, 78, 568, 454, 68, 79, - 284, -305, -307, 296, 342, 425, 426, 465, 354, 289, - 241, 242, -308, 355, 222, 343, 344, 295, 417, -306, - 425, 426, 174, 177, 373, 179, 180, 80, 285, -305, - -307, 286, 427, 425, 426, 70, 70, 425, 426, 212, - -308, 70, 320, 320, 70, 457, 250, 251, 289, 258, - 241, 242, 584, 608, 423, 300, 241, 242, 68, 494, - 241, 242, 323, 215, 297, 218, 241, 242, 241, 242, - 569, -311, 434, 528, 252, 462, 241, 242, -214, -310, - 284, -276, 258, 495, 70, -309, 281, 282, 283, 253, - 324, 471, 287, 325, 298, 596, 597, 271, 272, -311, - 598, 78, -311, -346, 309, 79, -214, -310, 334, -214, - 68, 335, 258, -309, 203, 226, 278, 279, 280, 281, - 282, 283, 360, 199, 291, -301, 203, 355, 203, -346, - -304, -346, 292, 330, -346, 199, 68, -346, 612, 310, - 439, 68, 316, 323, 289, 339, 226, 279, 280, 281, - 282, 283, -50, -301, 304, 468, 462, 316, -304, 371, - -215, 418, 419, 68, 68, 68, 68, 68, 68, 68, - 293, 350, 68, 187, 335, 306, 76, 76, 294, 525, - 439, 538, 76, 76, 76, 76, 76, 76, -215, 196, - 374, -215, 531, 76, 76, 76, 363, 520, -53, 487, - 76, 402, 403, 307, 203, 404, 208, 488, 546, 603, - 552, 210, 291, 203, 551, 535, 434, 438, 553, 463, - 292, 68, -45, 445, 293, 76, 70, -52, 489, 326, - 76, 68, 294, 68, 487, 332, 490, 68, -51, 68, - 552, 336, 488, 203, 68, 483, 406, 403, 553, 346, - 407, 76, 70, 203, 581, 76, 348, 70, 583, 562, - 364, 365, 366, 367, 368, 369, 68, 258, 358, 258, - 361, 472, 451, 403, 258, 357, 452, 464, 403, 70, - 352, 407, -39, -46, 271, 272, 353, -38, 70, 271, - 272, 359, 511, 187, 246, 247, 248, 249, 375, 439, - 320, 276, 277, 278, 279, 280, 281, 282, 283, 279, - 280, 281, 282, 283, 442, 76, 447, 458, 320, 469, - 504, 601, 470, 203, 476, 611, 203, 477, 493, -46, - 480, 481, 486, 500, 505, 492, 506, 70, 68, 68, - 455, 507, 508, 512, 514, 516, 68, 70, 521, 70, - 523, 530, 532, 70, 533, 70, 485, 68, 491, 534, - 194, 518, 519, 537, 539, 559, 542, 76, 560, 563, - 426, 76, 574, 576, 577, 586, 587, 591, 590, 593, - 592, 595, 70, 76, 594, 76, 606, 613, 616, 617, - 614, 68, 497, 76, 555, 604, 600, 158, 76, 57, - 187, 599, 509, 203, 185, 170, 0, 565, 178, 203, - 0, 0, 0, 187, 68, 68, 0, 544, 0, 68, - 76, 76, 76, 76, 76, 76, 76, 0, 0, 76, - 186, 0, 0, 0, 502, 0, 0, 0, 68, 0, - 0, 68, 0, 68, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 68, 0, 70, 0, 0, 0, 405, - 408, 76, 70, 0, 0, 0, 0, 0, 0, 0, - 76, 0, 0, 70, 0, 0, 0, 0, 76, 0, - 0, 0, 0, 0, 0, 0, 0, 541, 76, 0, - 76, 0, 0, 0, 76, 0, 76, 0, 450, 453, - 76, 76, 0, 0, 0, 0, 0, 0, 0, 408, - 76, 0, 0, 0, 0, 0, 0, 68, 0, 68, - 0, 0, 0, 76, 0, 453, 0, 0, 0, 0, - 70, 70, 0, 0, 0, 70, 73, 73, 0, 575, - 157, 0, 73, 73, 73, 73, 73, 73, 189, 0, - 0, 0, 0, 0, 70, 0, 0, 70, 0, 0, - 73, 0, 0, 0, 0, 70, 0, 0, 0, 70, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 0, 0, 76, 0, 73, 0, 0, 189, 0, - 0, 0, 0, 0, 0, 76, 76, 0, 0, 0, - 189, 0, 0, 76, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 73, 349, 0, 75, 75, - 0, 0, 0, 0, 75, 75, 75, 75, 75, 75, - 190, 0, 0, 70, 0, 70, 0, 0, 0, 0, - 0, 0, 75, 0, 0, 0, 0, 0, 76, 0, - 0, 0, 0, 258,-32768,-32768,-32768,-32768, 263, 264, - 76, 0,-32768,-32768, 0, 0, 76, 75, 271, 272, - 190, 76, 76, 0, 0, 73, 76, 0, 0, 0, - 0, 0, 190, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 0, 0, 76, 0, 75, 76, 0, - 76, 422, 0, 0, 0, 0, 76, 0, 0, 0, - 76, 441, 0, 443, 0, 0, 0, 448, 0, 449, - 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, - 0, 0, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 0, 475, 271, 272, 0, - 0, 0, 0, 73, 0, 0, 0, 75, 73, 0, - 273, 0, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 76, 0, 76, 0, 0, 456, - 73, 73, 73, 73, 73, 73, 73, 0, 0, 73, - 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 503, - 0, 0, 0, 0, 0, 0, 510, 0, 0, 0, - 0, 0, 0, 0, 0, 75, 0, 522, 73, 0, - 75, 0, 0, 0, 0, 0, 0, 0, 73, 0, - 73, 0, 0, 0, 73, 0, 73, 0, 0, 0, - 0, 73, 75, 75, 75, 75, 75, 75, 75, 0, - 0, 75, 190, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 556, 557, 0, 0, 0, 558, + 68, 168, 322, 185, 337, 68, 68, 68, 68, 68, + 68, 187, 256, 321, 315, 186, 203, 203, 203, 340, + 434, 214, 232, 68, 440, 226, 174, 177, 297, 179, + 180, 244, 77, 199, 199, 211, 462, 468, 228, 230, + 462, 209, 312, 212, 515, 517, 250, 251, 68, 236, + 299, 187, -275, 203, 302, 233, 82, 258, 312, 250, + 251, 468, 215, 187, 424, 218, 424, 318, 250, 251, + 564, 351, 284, 318, 203, 250, 251, 258, 68, 250, + 251, -306, 568, 354, 566, 78, 570, 569, 355, 79, + 323, 296, 279, 280, 281, 282, 283, 439, 298, 316, + 285, 222, 373, 286, 417, 425, 426, 425, 426, -306, + 454, 425, 426, -276, 281, 282, 283, 80, 324, 291, + 465, 325, 423, 425, 426, 457, 293, 292, 241, 242, + 76, 76, 427, 289, 294, 584, 76, 76, 76, 76, + 76, 76, 434, 297, 300, 241, 242, 76, 76, 76, + 215, 68, 320, 320, 76, -346, 528, 241, 242, 471, + 462, 241, 242, 241, 242, 241, 242, 608, 569, 494, + 360, 304, -311, -214, -305, 355, 252, 596, 597, 76, + 289, -346, 598, -346, 76, 287, -346, 291, 295, -346, + 68, 284, 253, 495, 203, 292, 323, 258, 226, 489, + -311, -214, -305, -311, -214, 76, 203, 490, 203, 76, + 78, 199, 271, 272, 79, -50, 68, 487, 330, 334, + 612, 68, 335, 199, 350, 488, -307, 335, -215, 226, + 339, 278, 279, 280, 281, 282, 283, 309, 468, 371, + 358, 462, 361, 68, 68, 68, 68, 68, 68, 68, + 293, 310, 68, 187, -307, 289, -215, 374, 294, -215, + -45, 538, -308, -310, 364, 365, 366, 367, 368, 369, + 520, 418, 419, 241, 242, 363, -309, 487, -53, 552, + -301, -304, 76, 531, 203, 488, 434, 553, 535, 316, + -308, -310, 603, 203, 546, 402, 403, 438, 552, 404, + 551, 68, 463, 445, -309, -52, 553, -51, -301, -304, + 326, 68, 196, 68, 332, 306, 208, 68, 342, 68, + 210, 76, 483, 203, 68, 76, 258, 562, 336, 343, + 344, 406, 403, 203, 581, 407, 346, 76, 583, 76, + 472, 271, 272, 307, 455, 57, 68, 76, 348, 451, + 403, 170, 76, 452, 178, 250, 251, 258, 276, 277, + 278, 279, 280, 281, 282, 283, 464, 403, 525, 439, + 407, -39, -46, 187, 76, 76, 76, 76, 76, 76, + 76, 352, 439, 76, 353, -38, 357, 73, 73, 359, + 375, 157, 442, 73, 73, 73, 73, 73, 73, 189, + 447, 458, 511, 203, 469, 611, 203, 470, 476, 477, + 320, 73, 601, 405, 408, 76, -46, 480, 68, 68, + 486, 481, 493, 492, 76, 500, 68, 504, 320, 506, + 518, 519, 76, 505, 507, 508, 73, 68, 502, 189, + 512, 514, 76, 516, 76, 521, 523, 530, 76, 532, + 76, 189, 450, 453, 76, 76, 246, 247, 248, 249, + 533, 485, 491, 408, 76, 534, 73, 194, 537, 539, + 542, 68, 560, 563, 426, 559, 574, 76, 576, 453, + 187, 577, 586, 203, 544, 185, 587, 590, 591, 203, + 592, 541, 593, 187, 68, 68, 606, 186, 613, 68, + 595, 616, 594, 75, 75, 617, 614, 497, 604, 75, + 75, 75, 75, 75, 75, 190, 555, 600, 68, 158, + 599, 68, 0, 68, 0, 509, 565, 75, 0, 68, + 0, 0, 0, 68, 76, 0, 0, 76, 258, 73, + 0, 0, 0, 575, 0, 0, 0, 0, 0, 76, + 76, 0, 75, 271, 272, 190, 0, 76, 0, 0, + 0, 0, 349, 0, 0, 0, 0, 190, 76, 0, + 0, 0, 0, 279, 280, 281, 282, 283, 73, 0, + 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 68, 0, 68, + 0, 0, 76, 0, 73, 0, 0, 0, 0, 73, + 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, + 76, 0, 0, 0, 0, 76, 76, 0, 0, 0, + 76, 73, 73, 73, 73, 73, 73, 73, 0, 0, + 73, 189, 0, 0, 70, 70, 0, 422, 0, 76, + 70, 0, 76, 70, 76, 75, 0, 441, 0, 443, + 76, 0, 0, 448, 76, 449, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 0, 0, 0, 0, 0, 0, 0, 572, 0, - 75, 573, 0, 0, 0, 0, 0, 0, 0, 579, - 75, 0, 75, 580, 0, 0, 75, 0, 75, 0, - 0, 0, 0, 75, 0, 0, 0, 0, 0, 198, - 198, 198, 0, 0, 0, 73, 73, 0, 0, 0, - 0, 0, 0, 73, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 73, 0, 0, 0, 219, 221, - 0, 0, 227, 198, 0, 0, 239, 240, 0, 0, - 0, 0, 190, 0, 0, 0, 0, 609, 0, 610, - 0, 0, 0, 0, 0, 0, 0, 198, 73, 0, - 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, + 0, 0, 475, 70, 75, 0, 0, 0, 0, 73, + 0, 73, 0, 0, 0, 73, 0, 73, 0, 0, + 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, + 75, 0, 0, 0, 0, 75, 0, 0, 76, 0, + 76, 0, 0, 0, 73, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 75, 75, 75, + 75, 75, 75, 75, 0, 0, 75, 190, 0, 0, + 0, 189, 0, 0, 0, 503, 0, 0, 0, 0, + 0, 0, 510, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 73, 73, 0, 0, 0, 73, 75, 75, 0, + 0, 0, 0, 0, 0, 75, 73, 73, 0, 0, + 0, 0, 0, 0, 73, 75, 0, 75, 0, 0, + 0, 75, 0, 75, 0, 73, 0, 0, 75, 0, + 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + 556, 557, 0, 0, 0, 558, 0, 0, 0, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 73, + 0, 70, 0, 0, 572, 0, 70, 573, 189, 0, + 198, 198, 198, 0, 0, 579, 0, 190, 0, 580, + 0, 189, 73, 73, 0, 0, 0, 73, 70, 0, + 0, 0, 0, 0, 0, 0, 0, 70, 0, 219, + 221, 0, 0, 227, 198, 0, 73, 239, 240, 73, + 0, 73, 0, 0, 0, 0, 0, 73, 0, 0, + 0, 73, 75, 75, 0, 0, 0, 0, 198, 0, + 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 0, 609, 0, 610, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 70, 0, 70, 0, + 0, 0, 70, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 73, 75, 0, 73, 0, - 73, 0, 0, 0, 0, 0, 73, 0, 0, 0, - 73, 0, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 0, 0, 271, 272, 0, - 75, 0, 331, 0, 0, 0, 0, 0, 0, 190, - 273, 0, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 190, 75, 75, 0, 0, 0, 75, 0, - 0, 0, 0, 0, 327, 328, 239, 198, 0, 0, - 0, 0, 0, 0, 73, 0, 73, 75, 0, 198, - 75, 198, 75, 0, 0, 0, 0, 0, 75, 0, - 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 190, 73, 0, 73, 0, 0, + 0, 70, 0, 0, 0, 0, 0, 190, 75, 75, + 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 75, 0, 0, 75, 0, 75, 0, 0, + 0, 0, 0, 75, 0, 0, 0, 75, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 239, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 227, 0, 0, 0, 0, 0, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 0, 75, 198, 75, 0, - 0, 0, 0, 0, 415, 416, 198, 0, 0, 0, + 198, 0, 198, 0, 70, 0, 0, 0, 0, 0, + 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 75, 0, 75, 227, 0, 0, 0, 0, 0, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 0, 0, 198, 70, + 70, 0, 0, 0, 70, 415, 416, 198, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 227, 70, 0, 0, 70, 0, 227, 175, + 175, 0, 175, 175, 70, 0, 0, 198, 70, 197, + 197, 197, 0, 459, 461, 0, 175, 198, 467, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 474, + 0, 0, 0, 0, 0, 0, 478, 0, 0, 0, + 0, 0, 467, 0, 0, 0, 238, 0, 0, 0, + 0, 0, 479, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, + 0, 175, 70, 0, 70, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, + 198, 0, 0, 0, 0, 498, 499, 0, 0, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 0, 0, 271, 272, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 529, 273, 0, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 0, + 0, 0, 536, 0, 175, 0, 456, 0, 540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 227, 0, 0, 0, 0, 0, 227, 175, 175, - 0, 175, 175, 0, 0, 0, 198, 0, 197, 197, - 197, 0, 459, 461, 0, 175, 198, 467, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 474, 0, - 0, 0, 0, 0, 0, 478, 0, 0, 0, 0, - 0, 467, 0, 0, 0, 238, 0, 0, 0, 0, - 0, 479, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 478, 0, 0, 0, 545, 198, 0, 547, + 548, 549, 550, 198, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 197, 561, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, + 0, 197, 0, 478, 0, 0, 0, 0, 0, 0, + 0, 0, 478, 0, 0, 0, 0, 0, 0, 467, + 0, 0, 0, 0, 0, 585, 0, 0, 0, 0, + 0, 0, 0, 0, 588, 589, 0, 175, 175, 175, + 175, 175, 175, 0, 0, 0, 0, 0, 0, 0, + 0, -4, 2, 0, 3, 4, 5, 6, 7, 0, + 602, 0, 8, 9, 607, 0, 0, 10, 0, 11, + 12, 13, 14, 15, 16, 17, 0, 197, 18, 19, + 20, 21, 22, 23, 24, 0, 197, 25, 0, 0, + 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 0, 197, 175, 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, - 175, 0, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 0, 198, 271, 272, 198, - 0, 0, 0, 0, 498, 499, 0, 0, 0, 0, - 273, 484, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 0, 0, 0, 0, 0, 0, 258, 259, - 260, 261, 262, 263, 264, 529, 0, 267, 268, 0, - 175, 0, 0, 271, 272, 0, 0, 0, 0, 0, - 0, 536, 0, 0, 0, 0, 0, 540, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 0, 0, - 0, 478, 0, 0, 0, 545, 198, 0, 547, 548, - 549, 550, 198, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 197, 561, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, - 197, 0, 478, 0, 0, 0, 0, 0, 0, 0, - 0, 478, 0, 0, 0, 0, 0, 0, 467, 0, - 0, 0, 0, 0, 585, 0, 0, 0, 0, 0, - 0, 0, 0, 588, 589, 0, 175, 175, 175, 175, - 175, 175, 0, 0, 0, 0, 0, 0, 0, 0, - -4, 2, 0, 3, 4, 5, 6, 7, 0, 602, - 0, 8, 9, 607, 0, 0, 10, 0, 11, 12, - 13, 14, 15, 16, 17, 0, 197, 18, 19, 20, - 21, 22, 23, 24, 0, 197, 25, 0, 0, 0, - 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 0, 197, 175, 0, 0, 0, - 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, - 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, - 54, 0, 0, 0, 0, 0, 0, 0, -301, 0, - 0, 0, 0, 0, 55, 56, -301, -301, -301, 0, - 0, 0, -301, -301, 0, -301, -4, -4, 0, 0, - 0, 0, 0, 0, -272, 0, 0, 0, 0, 0, - 0, 0, -301, -301, 0, -301, -301, -301, -301, 0, - 0, 0, 0, 0, 0, 197, 0, 0, 197, 0, + 0, 0, 0, 49, 0, 0, 50, 51, 52, 53, + 0, 54, 0, 0, 0, 0, 0, 0, 0, -301, + 0, 0, 0, 0, 0, 55, 56, -301, -301, -301, + 0, 0, 0, -301, -301, 0, -301, -4, -4, 0, + 0, 0, 0, 0, 0, -272, 0, 0, 0, 0, + 0, 0, 0, -301, -301, 0, -301, -301, -301, -301, + 0, 0, 0, 0, 0, 0, 197, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 175, 0, -301, -301, -301, -301, -301, -301, -301, -301, - -301, -301, -301, -301, -301, 0, 0, -301, -301, -301, - 0, -301, 0, 0, 0, 0, 0, 0, 0, -301, - -301, 0, -301, -301, -301, -301, -301, -301, -301, -301, - -301, -301, 0, 0, 0, 0, -301, -301, -301, -301, - -301, 0, -304, 175, -301, -301, 0, 0, 0, 0, - -304, -304, -304, 0, 0, 197, -304, -304, 0, -304, - 0, 197, 0, 0, 0, 0, 0, 0, -273, 0, - 0, 0, 0, 0, 0, 0, -304, -304, 0, -304, - -304, -304, -304, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 175, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -304, -304, -304, -304, - -304, -304, -304, -304, -304, -304, -304, -304, -304, 0, - 0, -304, -304, -304, 0, -304, 0, 0, 0, 0, - 0, 0, 0, -304, -304, 0, -304, -304, -304, -304, - -304, -304, -304, -304, -304, -304, 0, -226, 0, 0, - -304, -304, -304, -304, -304, -226, -226, -226, -304, -304, - 0, -226, -226, 0, -226, 0, 0, 0, 0, 0, - 0, 0, 0, -274, 0, 0, 0, 0, 0, 0, - 0, -226, -226, 0, -226, -226, -226, -226, 0, 0, + 0, 175, 0, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, -301, -301, -301, 0, 0, -301, -301, + -301, 0, -301, 0, 0, 0, 0, 0, 0, 0, + -301, -301, 0, -301, -301, -301, -301, -301, -301, -301, + -301, -301, -301, 0, 0, 0, 0, -301, -301, -301, + -301, -301, 0, -304, 175, -301, -301, 0, 0, 0, + 0, -304, -304, -304, 0, 0, 197, -304, -304, 0, + -304, 0, 197, 0, 0, 0, 0, 0, 0, -273, + 0, 0, 0, 0, 0, 0, 0, -304, -304, 0, + -304, -304, -304, -304, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 175, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, -304, -304, -304, + 0, 0, -304, -304, -304, 0, -304, 0, 0, 0, + 0, 0, 0, 0, -304, -304, 0, -304, -304, -304, + -304, -304, -304, -304, -304, -304, -304, 0, -226, 0, + 0, -304, -304, -304, -304, -304, -226, -226, -226, -304, + -304, 0, -226, -226, 0, -226, 0, 0, 0, 0, + 0, 0, 0, 0, -274, 0, 0, 0, 0, 0, + 0, 0, -226, -226, 0, -226, -226, -226, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, -226, -226, -226, -226, -226, -226, -226, -226, -226, - -226, -226, -226, -226, 0, 0, -226, -226, -226, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -226, - 0, -226, -226, -226, -226, -226, -226, -226, -226, -226, - -226, 0, 0, 0, 0, -226, -226, -226, 0, -226, - 0, 0, 0, -226, -226, 2, 0, 3, 4, 5, - 6, 7, -4, -4, -4, 8, 9, 0, 0, -4, - 10, 0, 11, 12, 13, 14, 15, 16, 17, 0, - 0, 18, 19, 20, 21, 22, 23, 24, 0, 0, - 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, + 0, 0, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, -226, -226, -226, 0, 0, -226, -226, -226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, - 51, 52, 53, 0, 54, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, - 0, 0, 0, 2, 0, 3, 4, 5, 6, 7, - -4, -4, -4, 8, 9, 0, -4, -4, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 18, - 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, - 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + -226, 0, -226, -226, -226, -226, -226, -226, -226, -226, + -226, -226, 0, 0, 0, 0, -226, -226, -226, 0, + -226, 0, 0, 0, -226, -226, 2, 0, 3, 4, + 5, 6, 7, -4, -4, -4, 8, 9, 0, 0, + -4, 10, 0, 11, 12, 13, 14, 15, 16, 17, + 0, 0, 18, 19, 20, 21, 22, 23, 24, 0, + 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, - 53, 0, 54, 0, 2, 0, 3, 4, 5, 6, - 7, 0, 0, -4, 8, 9, 55, 56, -4, 10, - -4, 11, 12, 13, 14, 15, 16, 17, -4, -4, + 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, + 50, 51, 52, 53, 0, 54, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, + 56, 0, 0, 0, 2, 0, 3, 4, 5, 6, + 7, -4, -4, -4, 8, 9, 0, -4, -4, 10, + 0, 11, 12, 13, 14, 15, 16, 17, 0, 0, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -952,7 +927,7 @@ static const short yytable[] = { 68, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, 0, 2, 0, 3, 4, 5, 6, 7, 0, 0, -4, 8, 9, 55, 56, -4, - 10, 0, 11, 12, 13, 14, 15, 16, 17, -4, + 10, -4, 11, 12, 13, 14, 15, 16, 17, -4, -4, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, @@ -960,8 +935,8 @@ static const short yytable[] = { 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, 0, 2, 0, 3, 4, - 5, 6, 7, 0, -4, -4, 8, 9, 55, 56, - 0, 10, 0, 11, 12, 13, 14, 15, 16, 17, + 5, 6, 7, 0, 0, -4, 8, 9, 55, 56, + -4, 10, 0, 11, 12, 13, 14, 15, 16, 17, -4, -4, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -969,8 +944,8 @@ static const short yytable[] = { 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, 0, 2, 0, 3, - 4, 5, 6, 7, 0, 0, 0, 8, 9, 55, - 56, 0, 10, -4, 11, 12, 13, 14, 15, 16, + 4, 5, 6, 7, 0, -4, -4, 8, 9, 55, + 56, 0, 10, 0, 11, 12, 13, 14, 15, 16, 17, -4, -4, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -979,47 +954,47 @@ static const short yytable[] = { 68, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, 0, 2, 0, 3, 4, 5, 6, 7, 0, 0, 0, 8, 9, - 55, 56, 0, 10, 0, 11, 12, 13, 14, 15, + 55, 56, 0, 10, -4, 11, 12, 13, 14, 15, 16, 17, -4, -4, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 0, 0, 223, 51, 52, 53, 0, 54, 0, 0, + 0, 0, 50, 51, 52, 53, 0, 54, 0, 2, + 0, 3, 4, 5, 6, 7, 0, 0, 0, 8, + 9, 55, 56, 0, 10, 0, 11, 12, 13, 14, + 15, 16, 17, -4, -4, 18, 19, 20, 21, 22, + 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 55, 56, 0, 0, 0, 2, -4, 3, 4, - 5, 6, 7, -4, -4, 0, 8, 9, 0, 0, - 0, 10, 0, 11, 12, 13, 14, 15, 16, 17, - 0, 0, 18, 19, 20, 21, 22, 23, 24, 0, - 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, + 49, 0, 0, 223, 51, 52, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, - 50, 51, 52, 53, 0, 54, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, - 56, 0, 0, 0, 2, -4, 3, 4, 5, 6, - 7, -4, -4, 0, 8, 9, 0, 0, 0, 10, - 0, 11, 12, 13, 14, 15, 16, 17, 0, 0, - 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, - 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, + 0, 0, 55, 56, 0, 0, 0, 2, -4, 3, + 4, 5, 6, 7, -4, -4, 0, 8, 9, 0, + 0, 0, 10, 0, 11, 12, 13, 14, 15, 16, + 17, 0, 0, 18, 19, 20, 21, 22, 23, 24, + 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, - 52, 53, 0, 54, 0, 2, 0, 3, 4, 5, - 6, 7, 0, 0, -4, 8, 9, 55, 56, 0, - 10, -4, 11, 12, 13, 14, 15, 16, 17, -4, - -4, 18, 19, 20, 21, 22, 23, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 0, 50, 51, 52, 53, 0, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 56, 0, 0, 0, 2, -4, 3, 4, 5, + 6, 7, -4, -4, 0, 8, 9, 0, 0, 0, + 10, 0, 11, 12, 13, 14, 15, 16, 17, 0, + 0, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, - 51, 52, 53, 0, 54, 0, 0, 0, 3, 4, - 5, 6, 7, 0, 0, 0, 8, 9, 55, 56, - 0, 10, 0, 11, 12, 13, 14, 15, 16, 17, + 51, 52, 53, 0, 54, 0, 2, 0, 3, 4, + 5, 6, 7, 0, 0, -4, 8, 9, 55, 56, + 0, 10, -4, 11, 12, 13, 14, 15, 16, 17, -4, -4, 18, 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -1027,9 +1002,30 @@ static const short yytable[] = { 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, 0, 0, 0, 3, - 4, 5, 0, 7, 0, 0, 0, 8, 9, 55, + 4, 5, 6, 7, 0, 0, 0, 8, 9, 55, 56, 0, 10, 0, 11, 12, 13, 14, 15, 16, - 17, 0, 362, 181, 182, 20, 21, 22, 23, 24, + 17, -4, -4, 18, 19, 20, 21, 22, 23, 24, + 0, 0, 25, 0, 0, 0, 0, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, + 0, 50, 51, 52, 53, 0, 54, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 55, 56, 0, 0, 83, 84, 85, 86, 87, 88, + 89, 90, 0, 362, 91, 92, 93, 94, 95, 0, + 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 34, 35, 125, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 126, 127, 128, 129, 130, 131, 0, + 132, 133, 0, 0, 134, 0, 135, 0, 136, 137, + 138, 139, 0, 0, 0, 0, 0, 0, 0, 140, + 0, 0, 0, 0, 0, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 0, 151, 0, 0, 3, + 4, 5, 0, 7, 0, 152, 153, 8, 9, 0, + 0, 0, 10, 0, 11, 12, 13, 14, 15, 16, + 17, 0, 0, 181, 182, 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, @@ -1129,453 +1125,434 @@ static const short yytable[] = { 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 195, 56, 83, 84, 85, 86, 87, 88, 89, 90, 0, 491, 91, 92, 93, 94, 95, 0, 0, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 34, 35, - 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 160, + 161, 162, 163, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 164, 165, 166, 124, 234, 235, + 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 0, 134, 0, 135, 0, 136, 137, 138, 139, - 0, 0, 0, 0, 140, 0, 0, 141, 0, 0, - 0, 0, 0, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 0, 152, 83, 84, 85, 86, 87, - 88, 89, 90, 153, 0, 91, 92, 93, 94, 95, + 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, + 0, 0, 0, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 0, 151, 83, 84, 85, 86, 87, + 88, 89, 90, 152, 0, 91, 92, 93, 94, 95, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 160, 161, 162, 163, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 164, 165, 166, - 124, 234, 235, 167, 0, 0, 0, 0, 0, 0, + 124, 213, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 0, 134, 0, 135, 0, 136, 137, 138, 139, 0, 0, 0, 0, 0, 0, 0, - 141, 0, 0, 0, 0, 0, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 0, 152, 83, 84, - 85, 86, 87, 88, 89, 90, 153, 0, 91, 92, + 140, 0, 0, 0, 0, 0, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 0, 151, 83, 84, + 85, 86, 87, 88, 89, 90, 152, 0, 91, 92, 93, 94, 95, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 160, 161, 162, 163, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 164, 165, 166, 124, 213, 0, 167, 0, 0, 0, + 164, 165, 166, 124, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 0, 134, 0, 135, 0, 136, 137, 138, 139, 0, 0, 0, 0, - 0, 0, 0, 141, 0, 0, 0, 0, 0, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 0, - 152, 83, 84, 85, 86, 87, 88, 89, 90, 153, - 0, 91, 92, 93, 94, 95, 0, 0, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 160, 161, - 162, 163, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 164, 165, 166, 124, 0, 0, 167, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, - 0, 134, 0, 135, 0, 136, 137, 138, 139, 0, - 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, - 0, 0, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 0, 152, 0, 3, 4, 5, 0, 7, - 0, 0, 153, 8, 9, 0, 0, 0, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 20, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 0, 0, 140, 0, 0, 0, 0, 0, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 0, + 151, 0, 3, 4, 5, 0, 7, 0, 0, 152, + 8, 9, 0, 0, 0, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 20, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 193, 194, 54, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 5, 0, 7, 0, 195, 56, 8, 9, - 0, 0, 329, 10, 0, 11, 12, 13, 14, 15, - 16, 17, 0, 0, 181, 182, 20, 21, 22, 23, - 24, 0, 0, 0, 0, 0, 0, 0, 0, 27, - 0, 0, 30, 31, 171, 172, 34, 35, 173, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, - 0, 0, 192, 51, 52, 193, 194, 54, 0, 0, - 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, - 0, 195, 56, 8, 9, 0, 0, 338, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 18, - 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, - 0, 0, 0, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 193, 194, 54, + 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, + 0, 7, 0, 195, 56, 8, 9, 0, 0, 329, + 10, 0, 11, 12, 13, 14, 15, 16, 17, 0, + 0, 181, 182, 20, 21, 22, 23, 24, 0, 0, + 0, 0, 0, 0, 0, 0, 27, 0, 0, 30, + 31, 171, 172, 34, 35, 173, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, - 53, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 55, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 18, - 19, 20, 21, 22, 23, 24, 0, 0, 25, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 49, 0, 0, 192, + 51, 52, 193, 194, 54, 0, 0, 0, 0, 0, + 0, 0, 3, 4, 5, 6, 7, 0, 195, 56, + 8, 9, 0, 0, 338, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 18, 19, 20, 21, + 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, - 53, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 55, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 20, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 55, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 18, 19, 20, 21, + 22, 23, 24, 0, 0, 25, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 193, 194, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 55, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 20, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 460, 194, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 193, 194, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 466, 194, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 460, 194, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 582, 194, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 466, 194, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 370, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 582, 194, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 444, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 370, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 543, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 444, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 578, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 543, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 0, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 20, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 27, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 578, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 192, 51, 52, - 0, 0, 54, 0, 0, 3, 4, 5, 0, 7, - 0, 0, 0, 8, 9, 0, 195, 56, 10, 0, - 11, 12, 13, 14, 15, 16, 17, 0, 0, 181, - 182, 183, 21, 22, 23, 24, 0, 0, 0, 0, - 0, 0, 0, 0, 184, 0, 0, 30, 31, 171, - 172, 34, 35, 173, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 0, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 20, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 27, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 49, 0, 0, 50, 51, 52, - 53, 0, 54, 3, 4, 5, 0, 7, 554, 0, - 0, 8, 9, 0, 0, 0, 10, 0, 11, 12, - 13, 14, 15, 16, 17, 0, 0, 181, 182, 183, - 21, 22, 23, 24, 0, 0, 0, 0, 0, 0, - 0, 0, 184, 0, 0, 30, 31, 171, 172, 34, - 35, 173, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 49, 0, 0, 192, 51, 52, 0, 0, 54, + 0, 0, 3, 4, 5, 0, 7, 0, 0, 0, + 8, 9, 0, 195, 56, 10, 0, 11, 12, 13, + 14, 15, 16, 17, 0, 0, 181, 182, 183, 21, + 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 184, 0, 0, 30, 31, 171, 172, 34, 35, + 173, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 49, 0, 0, 50, 51, 52, 53, 0, - 54, 3, 4, 5, 0, 7, 0, 0, 0, 8, - 9, 0, 0, 0, 10, 0, 11, 12, 13, 14, - 15, 16, 17, 0, 0, 181, 182, 183, 21, 22, - 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, - 184, 0, 0, 30, 31, 171, 172, 34, 35, 173, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 0, 49, 0, 0, 50, 51, 52, 53, 0, 54, + 3, 4, 5, 0, 7, 554, 0, 0, 8, 9, + 0, 0, 0, 10, 0, 11, 12, 13, 14, 15, + 16, 17, 0, 0, 181, 182, 183, 21, 22, 23, + 24, 0, 0, 0, 0, 0, 0, 0, 0, 184, + 0, 0, 30, 31, 171, 172, 34, 35, 173, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, + 0, 0, 50, 51, 52, 53, 0, 54, 3, 4, + 5, 0, 7, 0, 0, 0, 8, 9, 0, 0, + 0, 10, 0, 11, 12, 13, 14, 15, 16, 17, + 0, 0, 181, 182, 183, 21, 22, 23, 24, 0, + 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, + 30, 31, 171, 172, 34, 35, 173, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 0, 0, 254, 51, 52, 255, 0, 54, 3, - 4, 5, 0, 7, 0, 0, 0, 8, 9, 0, - 0, 0, 10, 0, 11, 12, 13, 14, 15, 16, - 17, 0, 0, 181, 182, 183, 21, 22, 23, 24, - 0, 0, 0, 0, 0, 0, 0, 0, 184, 0, - 0, 30, 31, 171, 172, 34, 35, 173, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, + 254, 51, 52, 255, 0, 54, 3, 4, 5, 0, + 7, 0, 0, 0, 8, 9, 0, 0, 0, 10, + 0, 11, 12, 13, 14, 15, 16, 17, 0, 0, + 181, 182, 183, 21, 22, 23, 24, 0, 0, 0, + 0, 0, 0, 0, 0, 184, 0, 0, 30, 31, + 171, 172, 34, 35, 173, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, - 0, 254, 51, 52, 482, 0, 54, 3, 4, 5, - 0, 7, 0, 0, 0, 8, 9, 0, 0, 0, - 10, 0, 11, 12, 13, 14, 15, 16, 17, 0, - 0, 181, 182, 183, 21, 22, 23, 24, 0, 0, - 0, 0, 0, 0, 0, 0, 184, 0, 0, 30, - 31, 171, 172, 34, 35, 173, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 0, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 0, 0, 271, 272, 0, 0, 49, 0, 0, 192, - 51, 52, 0, 0, 54, 273, 0, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268,-32768,-32768, - 0, 0, 271, 272, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 258, 259, 260, - 261, 262, 263, 264, 265, 0, 267, 268, 0, 0, - 0, 0, 271, 272, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283 + 0, 0, 0, 0, 0, 49, 0, 0, 254, 51, + 52, 482, 0, 54, 3, 4, 5, 0, 7, 0, + 0, 0, 8, 9, 0, 0, 0, 10, 0, 11, + 12, 13, 14, 15, 16, 17, 0, 0, 181, 182, + 183, 21, 22, 23, 24, 0, 0, 0, 0, 0, + 0, 0, 0, 184, 0, 0, 30, 31, 171, 172, + 34, 35, 173, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 0, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 0, 0, 271, + 272, 0, 0, 49, 331, 0, 192, 51, 52, 0, + 0, 54, 273, 0, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 0, 0, 271, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 273, 484, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 0, 0, 271, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 273, 0, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268,-32768,-32768, 0, 0, 271, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 258, 259, 260, 261, 262, 263, + 264, 265, 0, 267, 268, 0, 0, 0, 0, 271, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 258,-32768,-32768,-32768,-32768, 263, + 264, 0, 0,-32768,-32768, 0, 0, 0, 0, 271, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 258, 259, 260, 261, 262, 263, + 264, 0, 0, 267, 268, 0, 0, 0, 0, 271, + 272, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283 }; static const short yycheck[] = { 1, - 2, 58, 13, 177, 206, 7, 8, 9, 10, 11, - 12, 13, 6, 210, 184, 65, 18, 19, 20, 52, - 180, 311, 50, 25, 81, 18, 19, 20, 13, 76, - 305, 332, 26, 2, 336, 336, 19, 13, 51, 52, - 26, 1, 432, 433, 47, 13, 26, 26, 50, 4, - 512, 53, 514, 55, 34, 35, 34, 35, 360, 47, - 54, 34, 35, 65, 34, 35, 34, 35, 53, 514, - 116, 81, 47, 223, 76, 47, 47, 325, 80, 51, - 81, 81, 81, 76, 49, 88, 89, 335, 111, 107, - 116, 117, 81, 116, 49, 60, 61, 115, 295, 109, - 88, 89, 8, 9, 254, 11, 12, 79, 109, 109, - 109, 112, 115, 88, 89, 1, 2, 88, 89, 25, - 109, 7, 179, 180, 10, 327, 34, 35, 107, 64, - 116, 117, 110, 595, 304, 95, 116, 117, 140, 72, - 116, 117, 81, 116, 191, 107, 116, 117, 116, 117, - 595, 81, 427, 443, 91, 456, 116, 117, 81, 81, - 81, 26, 64, 96, 50, 81, 101, 102, 103, 111, - 109, 341, 26, 112, 80, 565, 566, 79, 80, 109, - 570, 47, 112, 81, 111, 51, 109, 109, 109, 112, - 192, 112, 64, 109, 196, 223, 98, 99, 100, 101, - 102, 103, 111, 196, 83, 81, 208, 116, 210, 107, - 81, 109, 91, 196, 112, 208, 218, 115, 608, 8, - 15, 223, 17, 81, 107, 208, 254, 99, 100, 101, - 102, 103, 111, 109, 140, 537, 537, 17, 109, 252, - 81, 298, 299, 245, 246, 247, 248, 249, 250, 251, - 83, 109, 254, 255, 112, 81, 1, 2, 91, 14, - 15, 463, 7, 8, 9, 10, 11, 12, 109, 115, - 255, 112, 446, 18, 19, 20, 245, 437, 111, 83, - 25, 47, 48, 109, 286, 51, 115, 91, 485, 579, - 83, 115, 83, 295, 491, 455, 571, 310, 91, 332, - 91, 303, 111, 316, 83, 50, 192, 111, 83, 25, - 55, 313, 91, 315, 83, 111, 91, 319, 111, 321, - 83, 111, 91, 325, 326, 375, 47, 48, 91, 115, - 51, 76, 218, 335, 536, 80, 107, 223, 540, 509, - 246, 247, 248, 249, 250, 251, 348, 64, 230, 64, - 232, 345, 47, 48, 64, 113, 51, 47, 48, 245, - 110, 51, 110, 111, 79, 80, 110, 110, 254, 79, - 80, 108, 429, 375, 37, 38, 39, 40, 111, 15, - 437, 96, 97, 98, 99, 100, 101, 102, 103, 99, - 100, 101, 102, 103, 13, 140, 10, 110, 455, 110, - 10, 575, 110, 405, 108, 607, 408, 110, 113, 111, - 111, 110, 405, 110, 110, 408, 91, 303, 420, 421, - 326, 47, 47, 111, 111, 111, 428, 313, 111, 315, - 9, 111, 10, 319, 10, 321, 115, 439, 115, 113, - 89, 435, 436, 111, 113, 502, 108, 192, 10, 10, - 89, 196, 10, 10, 10, 110, 110, 10, 96, 10, - 108, 111, 348, 208, 110, 210, 10, 10, 0, 0, - 610, 473, 412, 218, 495, 579, 572, 5, 223, 1, - 482, 571, 427, 485, 495, 7, -1, 512, 10, 491, - -1, -1, -1, 495, 496, 497, -1, 482, -1, 501, - 245, 246, 247, 248, 249, 250, 251, -1, -1, 254, - 495, -1, -1, -1, 420, -1, -1, -1, 520, -1, - -1, 523, -1, 525, -1, -1, -1, -1, -1, 531, - -1, -1, -1, 535, -1, 421, -1, -1, -1, 284, - 285, 286, 428, -1, -1, -1, -1, -1, -1, -1, - 295, -1, -1, 439, -1, -1, -1, -1, 303, -1, - -1, -1, -1, -1, -1, -1, -1, 473, 313, -1, - 315, -1, -1, -1, 319, -1, 321, -1, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, 334, - 335, -1, -1, -1, -1, -1, -1, 599, -1, 601, - -1, -1, -1, 348, -1, 350, -1, -1, -1, -1, - 496, 497, -1, -1, -1, 501, 1, 2, -1, 525, - 5, -1, 7, 8, 9, 10, 11, 12, 13, -1, - -1, -1, -1, -1, 520, -1, -1, 523, -1, -1, - 25, -1, -1, -1, -1, 531, -1, -1, -1, 535, + 2, 6, 184, 13, 206, 7, 8, 9, 10, 11, + 12, 13, 65, 180, 177, 13, 18, 19, 20, 210, + 305, 26, 52, 25, 311, 50, 8, 9, 76, 11, + 12, 58, 2, 18, 19, 20, 332, 336, 51, 52, + 336, 19, 13, 25, 432, 433, 34, 35, 50, 54, + 1, 53, 26, 55, 81, 53, 4, 64, 13, 34, + 35, 360, 116, 65, 47, 107, 47, 26, 34, 35, + 47, 223, 81, 26, 76, 34, 35, 64, 80, 34, + 35, 81, 47, 111, 512, 47, 514, 514, 116, 51, + 81, 76, 99, 100, 101, 102, 103, 15, 80, 17, + 109, 49, 254, 112, 295, 88, 89, 88, 89, 109, + 325, 88, 89, 26, 101, 102, 103, 79, 109, 83, + 335, 112, 304, 88, 89, 327, 83, 91, 116, 117, + 1, 2, 115, 107, 91, 110, 7, 8, 9, 10, + 11, 12, 427, 191, 95, 116, 117, 18, 19, 20, + 116, 153, 179, 180, 25, 81, 443, 116, 117, 341, + 456, 116, 117, 116, 117, 116, 117, 595, 595, 72, + 111, 153, 81, 81, 81, 116, 91, 565, 566, 50, + 107, 107, 570, 109, 55, 26, 112, 83, 115, 115, + 192, 81, 111, 96, 196, 91, 81, 64, 223, 83, + 109, 109, 109, 112, 112, 76, 208, 91, 210, 80, + 47, 196, 79, 80, 51, 111, 218, 83, 196, 109, + 608, 223, 112, 208, 109, 91, 81, 112, 81, 254, + 208, 98, 99, 100, 101, 102, 103, 111, 537, 252, + 230, 537, 232, 245, 246, 247, 248, 249, 250, 251, + 83, 8, 254, 255, 109, 107, 109, 255, 91, 112, + 111, 463, 81, 81, 246, 247, 248, 249, 250, 251, + 437, 298, 299, 116, 117, 245, 81, 83, 111, 83, + 81, 81, 153, 446, 286, 91, 571, 91, 455, 17, + 109, 109, 579, 295, 485, 47, 48, 310, 83, 51, + 491, 303, 332, 316, 109, 111, 91, 111, 109, 109, + 25, 313, 115, 315, 111, 81, 115, 319, 49, 321, + 115, 192, 375, 325, 326, 196, 64, 509, 111, 60, + 61, 47, 48, 335, 536, 51, 115, 208, 540, 210, + 345, 79, 80, 109, 326, 1, 348, 218, 107, 47, + 48, 7, 223, 51, 10, 34, 35, 64, 96, 97, + 98, 99, 100, 101, 102, 103, 47, 48, 14, 15, + 51, 110, 111, 375, 245, 246, 247, 248, 249, 250, + 251, 110, 15, 254, 110, 110, 113, 1, 2, 108, + 111, 5, 13, 7, 8, 9, 10, 11, 12, 13, + 10, 110, 429, 405, 110, 607, 408, 110, 108, 110, + 437, 25, 575, 284, 285, 286, 111, 111, 420, 421, + 405, 110, 113, 408, 295, 110, 428, 10, 455, 91, + 435, 436, 303, 110, 47, 47, 50, 439, 420, 53, + 111, 111, 313, 111, 315, 111, 9, 111, 319, 10, + 321, 65, 323, 324, 325, 326, 37, 38, 39, 40, + 10, 115, 115, 334, 335, 113, 80, 89, 111, 113, + 108, 473, 10, 10, 89, 502, 10, 348, 10, 350, + 482, 10, 110, 485, 482, 495, 110, 96, 10, 491, + 108, 473, 10, 495, 496, 497, 10, 495, 10, 501, + 111, 0, 110, 1, 2, 0, 610, 412, 579, 7, + 8, 9, 10, 11, 12, 13, 495, 572, 520, 5, + 571, 523, -1, 525, -1, 427, 512, 25, -1, 531, + -1, -1, -1, 535, 405, -1, -1, 408, 64, 153, + -1, -1, -1, 525, -1, -1, -1, -1, -1, 420, + 421, -1, 50, 79, 80, 53, -1, 428, -1, -1, + -1, -1, 218, -1, -1, -1, -1, 65, 439, -1, + -1, -1, -1, 99, 100, 101, 102, 103, 192, -1, + -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 599, -1, 601, + -1, -1, 473, -1, 218, -1, -1, -1, -1, 223, + -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, + 491, -1, -1, -1, -1, 496, 497, -1, -1, -1, + 501, 245, 246, 247, 248, 249, 250, 251, -1, -1, + 254, 255, -1, -1, 1, 2, -1, 303, -1, 520, + 7, -1, 523, 10, 525, 153, -1, 313, -1, 315, + 531, -1, -1, 319, 535, 321, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 405, -1, -1, 408, -1, 50, -1, -1, 53, -1, - -1, -1, -1, -1, -1, 420, 421, -1, -1, -1, - 65, -1, -1, 428, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 439, 80, 218, -1, 1, 2, - -1, -1, -1, -1, 7, 8, 9, 10, 11, 12, - 13, -1, -1, 599, -1, 601, -1, -1, -1, -1, - -1, -1, 25, -1, -1, -1, -1, -1, 473, -1, - -1, -1, -1, 64, 65, 66, 67, 68, 69, 70, - 485, -1, 73, 74, -1, -1, 491, 50, 79, 80, - 53, 496, 497, -1, -1, 140, 501, -1, -1, -1, - -1, -1, 65, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, -1, -1, 520, -1, 80, 523, -1, - 525, 303, -1, -1, -1, -1, 531, -1, -1, -1, - 535, 313, -1, 315, -1, -1, -1, 319, -1, 321, - -1, -1, -1, -1, -1, -1, -1, 192, -1, -1, - -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, -1, 348, 79, 80, -1, - -1, -1, -1, 218, -1, -1, -1, 140, 223, -1, - 92, -1, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, -1, -1, 599, -1, 601, -1, -1, 111, - 245, 246, 247, 248, 249, 250, 251, -1, -1, 254, - 255, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 192, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 421, - -1, -1, -1, -1, -1, -1, 428, -1, -1, -1, - -1, -1, -1, -1, -1, 218, -1, 439, 303, -1, - 223, -1, -1, -1, -1, -1, -1, -1, 313, -1, - 315, -1, -1, -1, 319, -1, 321, -1, -1, -1, - -1, 326, 245, 246, 247, 248, 249, 250, 251, -1, - -1, 254, 255, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 496, 497, -1, -1, -1, 501, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 303, + -1, -1, 348, 50, 192, -1, -1, -1, -1, 313, + -1, 315, -1, -1, -1, 319, -1, 321, -1, -1, + -1, -1, 326, -1, -1, -1, -1, -1, -1, -1, + 218, -1, -1, -1, -1, 223, -1, -1, 599, -1, + 601, -1, -1, -1, 348, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 245, 246, 247, + 248, 249, 250, 251, -1, -1, 254, 255, -1, -1, + -1, 375, -1, -1, -1, 421, -1, -1, -1, -1, + -1, -1, 428, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 439, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 375, -1, -1, -1, -1, -1, -1, -1, 520, -1, - 303, 523, -1, -1, -1, -1, -1, -1, -1, 531, - 313, -1, 315, 535, -1, -1, 319, -1, 321, -1, - -1, -1, -1, 326, -1, -1, -1, -1, -1, 18, - 19, 20, -1, -1, -1, 420, 421, -1, -1, -1, - -1, -1, -1, 428, -1, 348, -1, -1, -1, -1, - -1, -1, -1, -1, 439, -1, -1, -1, 47, 48, - -1, -1, 51, 52, -1, -1, 55, 56, -1, -1, - -1, -1, 375, -1, -1, -1, -1, 599, -1, 601, - -1, -1, -1, -1, -1, -1, -1, 76, 473, -1, - -1, -1, -1, -1, -1, -1, -1, 482, -1, -1, + -1, -1, -1, -1, -1, 303, 420, 421, -1, -1, + -1, -1, -1, -1, 428, 313, -1, 315, -1, -1, + -1, 319, -1, 321, -1, 439, -1, -1, 326, -1, + -1, -1, -1, -1, -1, 192, -1, -1, -1, -1, + 496, 497, -1, -1, -1, 501, -1, -1, -1, -1, + 348, -1, -1, -1, -1, -1, -1, -1, -1, 473, + -1, 218, -1, -1, 520, -1, 223, 523, 482, -1, + 18, 19, 20, -1, -1, 531, -1, 375, -1, 535, + -1, 495, 496, 497, -1, -1, -1, 501, 245, -1, + -1, -1, -1, -1, -1, -1, -1, 254, -1, 47, + 48, -1, -1, 51, 52, -1, 520, 55, 56, 523, + -1, 525, -1, -1, -1, -1, -1, 531, -1, -1, + -1, 535, 420, 421, -1, -1, -1, -1, 76, -1, + 428, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 439, -1, 599, -1, 601, 303, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 313, -1, 315, -1, + -1, -1, 319, -1, 321, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 473, -1, -1, -1, -1, + -1, -1, -1, -1, 482, 599, -1, 601, -1, -1, + -1, 348, -1, -1, -1, -1, -1, 495, 496, 497, + -1, -1, -1, 501, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 495, 496, 497, -1, -1, -1, 501, 420, 421, -1, - -1, -1, -1, -1, -1, 428, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 520, 439, -1, 523, -1, - 525, -1, -1, -1, -1, -1, 531, -1, -1, -1, - 535, -1, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, -1, -1, 79, 80, -1, - 473, -1, 84, -1, -1, -1, -1, -1, -1, 482, - 92, -1, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 495, 496, 497, -1, -1, -1, 501, -1, - -1, -1, -1, -1, 193, 194, 195, 196, -1, -1, - -1, -1, -1, -1, 599, -1, 601, 520, -1, 208, - 523, 210, 525, -1, -1, -1, -1, -1, 531, -1, - -1, -1, 535, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 520, -1, -1, 523, -1, 525, -1, -1, + -1, -1, -1, 531, -1, -1, -1, 535, -1, -1, + -1, -1, -1, -1, -1, 193, 194, 195, 196, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 208, -1, 210, -1, 421, -1, -1, -1, -1, -1, + -1, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 439, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 252, -1, -1, -1, -1, -1, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, -1, 599, 286, 601, -1, - -1, -1, -1, -1, 293, 294, 295, -1, -1, -1, + -1, 599, -1, 601, 252, -1, -1, -1, -1, -1, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, -1, -1, 286, 496, + 497, -1, -1, -1, 501, 293, 294, 295, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 310, -1, -1, -1, -1, -1, 316, 8, 9, - -1, 11, 12, -1, -1, -1, 325, -1, 18, 19, - 20, -1, 331, 332, -1, 25, 335, 336, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 347, -1, - -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, - -1, 360, -1, -1, -1, 55, -1, -1, -1, -1, - -1, 370, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 76, -1, -1, -1, - 80, -1, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, -1, 405, 79, 80, 408, - -1, -1, -1, -1, 413, 414, -1, -1, -1, -1, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, -1, -1, -1, -1, -1, -1, 64, 65, - 66, 67, 68, 69, 70, 444, -1, 73, 74, -1, - 140, -1, -1, 79, 80, -1, -1, -1, -1, -1, - -1, 460, -1, -1, -1, -1, -1, 466, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, -1, -1, - -1, 480, -1, -1, -1, 484, 485, -1, 487, 488, - 489, 490, 491, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 196, 506, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 208, -1, - 210, -1, 521, -1, -1, -1, -1, -1, -1, -1, - -1, 530, -1, -1, -1, -1, -1, -1, 537, -1, - -1, -1, -1, -1, 543, -1, -1, -1, -1, -1, - -1, -1, -1, 552, 553, -1, 246, 247, 248, 249, - 250, 251, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 1, -1, 3, 4, 5, 6, 7, -1, 578, - -1, 11, 12, 582, -1, -1, 16, -1, 18, 19, - 20, 21, 22, 23, 24, -1, 286, 27, 28, 29, - 30, 31, 32, 33, -1, 295, 36, -1, -1, -1, - -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, -1, 325, 326, -1, -1, -1, - -1, -1, -1, -1, -1, 335, -1, -1, -1, -1, - -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, - 90, -1, -1, -1, -1, -1, -1, -1, 0, -1, - -1, -1, -1, -1, 104, 105, 8, 9, 10, -1, - -1, -1, 14, 15, -1, 17, 116, 117, -1, -1, + -1, -1, 310, 520, -1, -1, 523, -1, 316, 8, + 9, -1, 11, 12, 531, -1, -1, 325, 535, 18, + 19, 20, -1, 331, 332, -1, 25, 335, 336, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 347, + -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, + -1, -1, 360, -1, -1, -1, 55, -1, -1, -1, + -1, -1, 370, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 76, -1, -1, + -1, 80, 599, -1, 601, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 405, -1, -1, + 408, -1, -1, -1, -1, 413, 414, -1, -1, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, -1, -1, 79, 80, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 444, 92, -1, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, + -1, -1, 460, -1, 153, -1, 111, -1, 466, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 480, -1, -1, -1, 484, 485, -1, 487, + 488, 489, 490, 491, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 196, 506, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 208, + -1, 210, -1, 521, -1, -1, -1, -1, -1, -1, + -1, -1, 530, -1, -1, -1, -1, -1, -1, 537, + -1, -1, -1, -1, -1, 543, -1, -1, -1, -1, + -1, -1, -1, -1, 552, 553, -1, 246, 247, 248, + 249, 250, 251, -1, -1, -1, -1, -1, -1, -1, + -1, 0, 1, -1, 3, 4, 5, 6, 7, -1, + 578, -1, 11, 12, 582, -1, -1, 16, -1, 18, + 19, 20, 21, 22, 23, 24, -1, 286, 27, 28, + 29, 30, 31, 32, 33, -1, 295, 36, -1, -1, + -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, -1, 325, 326, -1, -1, + -1, -1, -1, -1, -1, -1, 335, -1, -1, -1, + -1, -1, -1, 82, -1, -1, 85, 86, 87, 88, + -1, 90, -1, -1, -1, -1, -1, -1, -1, 0, + -1, -1, -1, -1, -1, 104, 105, 8, 9, 10, + -1, -1, -1, 14, 15, -1, 17, 116, 117, -1, + -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, + -1, -1, -1, 34, 35, -1, 37, 38, 39, 40, + -1, -1, -1, -1, -1, -1, 405, -1, -1, 408, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 420, -1, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, -1, -1, 79, 80, + 81, -1, 83, -1, -1, -1, -1, -1, -1, -1, + 91, 92, -1, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, -1, -1, -1, -1, 108, 109, 110, + 111, 112, -1, 0, 473, 116, 117, -1, -1, -1, + -1, 8, 9, 10, -1, -1, 485, 14, 15, -1, + 17, -1, 491, -1, -1, -1, -1, -1, -1, 26, + -1, -1, -1, -1, -1, -1, -1, 34, 35, -1, + 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 525, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + -1, -1, 79, 80, 81, -1, 83, -1, -1, -1, + -1, -1, -1, -1, 91, 92, -1, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, -1, 0, -1, + -1, 108, 109, 110, 111, 112, 8, 9, 10, 116, + 117, -1, 14, 15, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, -1, 34, 35, -1, 37, 38, 39, 40, -1, - -1, -1, -1, -1, -1, 405, -1, -1, 408, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 420, -1, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, -1, -1, 79, 80, 81, - -1, 83, -1, -1, -1, -1, -1, -1, -1, 91, - 92, -1, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, -1, -1, -1, -1, 108, 109, 110, 111, - 112, -1, 0, 473, 116, 117, -1, -1, -1, -1, - 8, 9, 10, -1, -1, 485, 14, 15, -1, 17, - -1, 491, -1, -1, -1, -1, -1, -1, 26, -1, - -1, -1, -1, -1, -1, -1, 34, 35, -1, 37, - 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 525, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, -1, - -1, 79, 80, 81, -1, 83, -1, -1, -1, -1, - -1, -1, -1, 91, 92, -1, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, -1, 0, -1, -1, - 108, 109, 110, 111, 112, 8, 9, 10, 116, 117, - -1, 14, 15, -1, 17, -1, -1, -1, -1, -1, - -1, -1, -1, 26, -1, -1, -1, -1, -1, -1, - -1, 34, 35, -1, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, -1, -1, 79, 80, 81, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 92, - -1, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, -1, -1, -1, -1, 108, 109, 110, -1, 112, - -1, -1, -1, 116, 117, 1, -1, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, -1, -1, 15, - 16, -1, 18, 19, 20, 21, 22, 23, 24, -1, - -1, 27, 28, 29, 30, 31, 32, 33, -1, -1, - 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, + -1, -1, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, -1, -1, 79, 80, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, - 86, 87, 88, -1, 90, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 104, 105, - -1, -1, -1, 1, -1, 3, 4, 5, 6, 7, - 116, 117, 10, 11, 12, -1, 14, 15, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, - -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + 92, -1, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, -1, -1, -1, -1, 108, 109, 110, -1, + 112, -1, -1, -1, 116, 117, 1, -1, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, -1, -1, + 15, 16, -1, 18, 19, 20, 21, 22, 23, 24, + -1, -1, 27, 28, 29, 30, 31, 32, 33, -1, + -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, 1, -1, 3, 4, 5, 6, - 7, -1, -1, 10, 11, 12, 104, 105, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 116, 117, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + 85, 86, 87, 88, -1, 90, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, + 105, -1, -1, -1, 1, -1, 3, 4, 5, 6, + 7, 116, 117, 10, 11, 12, -1, 14, 15, 16, + -1, 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, @@ -1584,7 +1561,7 @@ static const short yycheck[] = { 1, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, -1, 1, -1, 3, 4, 5, 6, 7, -1, -1, 10, 11, 12, 104, 105, 15, - 16, -1, 18, 19, 20, 21, 22, 23, 24, 116, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 116, 117, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, @@ -1592,8 +1569,8 @@ static const short yycheck[] = { 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, -1, 1, -1, 3, 4, - 5, 6, 7, -1, 9, 10, 11, 12, 104, 105, - -1, 16, -1, 18, 19, 20, 21, 22, 23, 24, + 5, 6, 7, -1, -1, 10, 11, 12, 104, 105, + 15, 16, -1, 18, 19, 20, 21, 22, 23, 24, 116, 117, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, @@ -1601,8 +1578,8 @@ static const short yycheck[] = { 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, -1, 1, -1, 3, - 4, 5, 6, 7, -1, -1, -1, 11, 12, 104, - 105, -1, 16, 17, 18, 19, 20, 21, 22, 23, + 4, 5, 6, 7, -1, 9, 10, 11, 12, 104, + 105, -1, 16, -1, 18, 19, 20, 21, 22, 23, 24, 116, 117, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, @@ -1611,47 +1588,47 @@ static const short yycheck[] = { 1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, -1, 1, -1, 3, 4, 5, 6, 7, -1, -1, -1, 11, 12, - 104, 105, -1, 16, -1, 18, 19, 20, 21, 22, + 104, 105, -1, 16, 17, 18, 19, 20, 21, 22, 23, 24, 116, 117, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, 85, 86, 87, 88, -1, 90, -1, -1, + -1, -1, 85, 86, 87, 88, -1, 90, -1, 1, + -1, 3, 4, 5, 6, 7, -1, -1, -1, 11, + 12, 104, 105, -1, 16, -1, 18, 19, 20, 21, + 22, 23, 24, 116, 117, 27, 28, 29, 30, 31, + 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 104, 105, -1, -1, -1, 1, 110, 3, 4, - 5, 6, 7, 116, 117, -1, 11, 12, -1, -1, - -1, 16, -1, 18, 19, 20, 21, 22, 23, 24, - -1, -1, 27, 28, 29, 30, 31, 32, 33, -1, - -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, + 82, -1, -1, 85, 86, 87, 88, -1, 90, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, - 85, 86, 87, 88, -1, 90, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 104, - 105, -1, -1, -1, 1, 110, 3, 4, 5, 6, - 7, 116, 117, -1, 11, 12, -1, -1, -1, 16, - -1, 18, 19, 20, 21, 22, 23, 24, -1, -1, - 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, - -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, + -1, -1, 104, 105, -1, -1, -1, 1, 110, 3, + 4, 5, 6, 7, 116, 117, -1, 11, 12, -1, + -1, -1, 16, -1, 18, 19, 20, 21, 22, 23, + 24, -1, -1, 27, 28, 29, 30, 31, 32, 33, + -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, - 87, 88, -1, 90, -1, 1, -1, 3, 4, 5, - 6, 7, -1, -1, 10, 11, 12, 104, 105, -1, - 16, 108, 18, 19, 20, 21, 22, 23, 24, 116, - 117, 27, 28, 29, 30, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, 85, 86, 87, 88, -1, 90, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 104, 105, -1, -1, -1, 1, 110, 3, 4, 5, + 6, 7, 116, 117, -1, 11, 12, -1, -1, -1, + 16, -1, 18, 19, 20, 21, 22, 23, 24, -1, + -1, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, - 86, 87, 88, -1, 90, -1, -1, -1, 3, 4, - 5, 6, 7, -1, -1, -1, 11, 12, 104, 105, - -1, 16, -1, 18, 19, 20, 21, 22, 23, 24, + 86, 87, 88, -1, 90, -1, 1, -1, 3, 4, + 5, 6, 7, -1, -1, 10, 11, 12, 104, 105, + -1, 16, 108, 18, 19, 20, 21, 22, 23, 24, 116, 117, 27, 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, @@ -1659,9 +1636,30 @@ static const short yycheck[] = { 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, -1, -1, -1, 3, - 4, 5, -1, 7, -1, -1, -1, 11, 12, 104, + 4, 5, 6, 7, -1, -1, -1, 11, 12, 104, 105, -1, 16, -1, 18, 19, 20, 21, 22, 23, - 24, -1, 117, 27, 28, 29, 30, 31, 32, 33, + 24, 116, 117, 27, 28, 29, 30, 31, 32, 33, + -1, -1, 36, -1, -1, -1, -1, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, + -1, 85, 86, 87, 88, -1, 90, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 104, 105, -1, -1, 3, 4, 5, 6, 7, 8, + 9, 10, -1, 117, 13, 14, 15, 16, 17, -1, + -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 62, 63, 64, 65, 66, 67, -1, + 69, 70, -1, -1, 73, -1, 75, -1, 77, 78, + 79, 80, -1, -1, -1, -1, -1, -1, -1, 88, + -1, -1, -1, -1, -1, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, -1, 105, -1, -1, 3, + 4, 5, -1, 7, -1, 114, 115, 11, 12, -1, + -1, -1, 16, -1, 18, 19, 20, 21, 22, 23, + 24, -1, -1, 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, @@ -1767,14 +1765,14 @@ static const short yycheck[] = { 1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 63, 64, 65, 66, 67, -1, 69, 70, -1, -1, 73, -1, 75, -1, 77, 78, 79, 80, - -1, -1, -1, -1, 85, -1, -1, 88, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, 105, 3, 4, 5, 6, 7, 8, 9, 10, 114, -1, 13, 14, 15, 16, 17, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, -1, -1, -1, -1, -1, -1, + 48, 49, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 63, 64, 65, 66, 67, -1, 69, 70, -1, -1, 73, -1, 75, -1, 77, 78, 79, 80, -1, -1, -1, -1, -1, -1, -1, @@ -1784,203 +1782,209 @@ static const short yycheck[] = { 1, 15, 16, 17, -1, -1, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, -1, 51, -1, -1, -1, + 45, 46, 47, 48, -1, -1, 51, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 63, 64, 65, 66, 67, -1, 69, 70, -1, -1, 73, -1, 75, -1, 77, 78, 79, 80, -1, -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, -1, - 105, 3, 4, 5, 6, 7, 8, 9, 10, 114, - -1, 13, 14, 15, 16, 17, -1, -1, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, -1, -1, 51, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 62, 63, 64, 65, 66, 67, -1, 69, 70, -1, - -1, 73, -1, 75, -1, 77, 78, 79, 80, -1, - -1, -1, -1, -1, -1, -1, 88, -1, -1, -1, - -1, -1, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, -1, 105, -1, 3, 4, 5, -1, 7, - -1, -1, 114, 11, 12, -1, -1, -1, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + 105, -1, 3, 4, 5, -1, 7, -1, -1, 114, + 11, 12, -1, -1, -1, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, 89, 90, -1, -1, -1, -1, -1, -1, -1, - 3, 4, 5, -1, 7, -1, 104, 105, 11, 12, - -1, -1, 110, 16, -1, 18, 19, 20, 21, 22, - 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, - 33, -1, -1, -1, -1, -1, -1, -1, -1, 42, - -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, - -1, -1, 85, 86, 87, 88, 89, 90, -1, -1, - -1, -1, -1, -1, -1, 3, 4, 5, 6, 7, - -1, 104, 105, 11, 12, -1, -1, 110, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, - -1, -1, -1, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, 89, 90, + -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, + -1, 7, -1, 104, 105, 11, 12, -1, -1, 110, + 16, -1, 18, 19, 20, 21, 22, 23, 24, -1, + -1, 27, 28, 29, 30, 31, 32, 33, -1, -1, + -1, -1, -1, -1, -1, -1, 42, -1, -1, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, 36, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 82, -1, -1, 85, + 86, 87, 88, 89, 90, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, -1, 104, 105, + 11, 12, -1, -1, 110, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, 36, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, 89, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, 89, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, 89, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, 89, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, 89, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, 89, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, 89, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, 89, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - -1, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - -1, -1, 90, -1, -1, 3, 4, 5, -1, 7, - -1, -1, -1, 11, 12, -1, 104, 105, 16, -1, - 18, 19, 20, 21, 22, 23, 24, -1, -1, 27, - 28, 29, 30, 31, 32, 33, -1, -1, -1, -1, - -1, -1, -1, -1, 42, -1, -1, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, -1, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 82, -1, -1, 85, 86, 87, - 88, -1, 90, 3, 4, 5, -1, 7, 96, -1, - -1, 11, 12, -1, -1, -1, 16, -1, 18, 19, - 20, 21, 22, 23, 24, -1, -1, 27, 28, 29, - 30, 31, 32, 33, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, -1, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 82, -1, -1, 85, 86, 87, -1, -1, 90, + -1, -1, 3, 4, 5, -1, 7, -1, -1, -1, + 11, 12, -1, 104, 105, 16, -1, 18, 19, 20, + 21, 22, 23, 24, -1, -1, 27, 28, 29, 30, + 31, 32, 33, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 82, -1, -1, 85, 86, 87, 88, -1, - 90, 3, 4, 5, -1, 7, -1, -1, -1, 11, - 12, -1, -1, -1, 16, -1, 18, 19, 20, 21, - 22, 23, 24, -1, -1, 27, 28, 29, 30, 31, - 32, 33, -1, -1, -1, -1, -1, -1, -1, -1, - 42, -1, -1, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + -1, 82, -1, -1, 85, 86, 87, 88, -1, 90, + 3, 4, 5, -1, 7, 96, -1, -1, 11, 12, + -1, -1, -1, 16, -1, 18, 19, 20, 21, 22, + 23, 24, -1, -1, 27, 28, 29, 30, 31, 32, + 33, -1, -1, -1, -1, -1, -1, -1, -1, 42, + -1, -1, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, + -1, -1, 85, 86, 87, 88, -1, 90, 3, 4, + 5, -1, 7, -1, -1, -1, 11, 12, -1, -1, + -1, 16, -1, 18, 19, 20, 21, 22, 23, 24, + -1, -1, 27, 28, 29, 30, 31, 32, 33, -1, + -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 82, -1, -1, 85, 86, 87, 88, -1, 90, 3, - 4, 5, -1, 7, -1, -1, -1, 11, 12, -1, - -1, -1, 16, -1, 18, 19, 20, 21, 22, 23, - 24, -1, -1, 27, 28, 29, 30, 31, 32, 33, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - -1, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, + 85, 86, 87, 88, -1, 90, 3, 4, 5, -1, + 7, -1, -1, -1, 11, 12, -1, -1, -1, 16, + -1, 18, 19, 20, 21, 22, 23, 24, -1, -1, + 27, 28, 29, 30, 31, 32, 33, -1, -1, -1, + -1, -1, -1, -1, -1, 42, -1, -1, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, - -1, 85, 86, 87, 88, -1, 90, 3, 4, 5, - -1, 7, -1, -1, -1, 11, 12, -1, -1, -1, - 16, -1, 18, 19, 20, 21, 22, 23, 24, -1, - -1, 27, 28, 29, 30, 31, 32, 33, -1, -1, - -1, -1, -1, -1, -1, -1, 42, -1, -1, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, -1, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - -1, -1, 79, 80, -1, -1, 82, -1, -1, 85, - 86, 87, -1, -1, 90, 92, -1, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - -1, -1, 79, 80, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 64, 65, 66, - 67, 68, 69, 70, 71, -1, 73, 74, -1, -1, - -1, -1, 79, 80, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103 + -1, -1, -1, -1, -1, 82, -1, -1, 85, 86, + 87, 88, -1, 90, 3, 4, 5, -1, 7, -1, + -1, -1, 11, 12, -1, -1, -1, 16, -1, 18, + 19, 20, 21, 22, 23, 24, -1, -1, 27, 28, + 29, 30, 31, 32, 33, -1, -1, -1, -1, -1, + -1, -1, -1, 42, -1, -1, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, -1, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, 79, + 80, -1, -1, 82, 84, -1, 85, 86, 87, -1, + -1, 90, 92, -1, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 92, -1, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, -1, -1, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 64, 65, 66, 67, 68, 69, + 70, 71, -1, 73, 74, -1, -1, -1, -1, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 64, 65, 66, 67, 68, 69, + 70, -1, -1, 73, 74, -1, -1, -1, -1, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 64, 65, 66, 67, 68, 69, + 70, -1, -1, 73, 74, -1, -1, -1, -1, 79, + 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ #line 3 "/usr/share/misc/bison.simple" @@ -4237,7 +4241,7 @@ case 339: case NODE_LIT: case NODE_ARRAY: case NODE_ZARRAY: - yyerror("Can't define single method for literals."); + yyerror("can't define single method for literals."); default: break; } @@ -4694,7 +4698,9 @@ nextc() normalize_newline(v); while (RSTRING(v)->len >= 2 && RSTRING(v)->ptr[RSTRING(v)->len-1] == '\n' && - RSTRING(v)->ptr[RSTRING(v)->len-2] == '\\') { + RSTRING(v)->ptr[RSTRING(v)->len-2] == '\\' && + (RSTRING(v)->len == 2 || + RSTRING(v)->ptr[RSTRING(v)->len-3] != '\\')) { VALUE v2 = (*lex_gets)(lex_input); if (!NIL_P(v2)) { @@ -5297,8 +5303,7 @@ here_document(term, indent) case 0: goto error; } - if (lex_lastline != line) { - line = lex_lastline; + if (lex_p != lex_pend) { goto retry; } } @@ -5371,10 +5376,6 @@ retry: while ((c = nextc()) != '\n') { if (c == -1) return 0; - if (c == '\\') { /* skip a char */ - c = nextc(); - if (c == '\n') ruby_sourceline++; - } if (ismbchar(c)) { int i, len = mbclen(c)-1; @@ -5386,8 +5387,12 @@ retry: } } } - else if (c >= 0x80) { - if ((c = nextc()) != '\\') { + else if (c == ' ') { + if ((c = nextc()) == '\\') { + c = nextc(); + if (c == '\n') ruby_sourceline++; + } + else { pushback(c); } } @@ -1530,7 +1530,7 @@ singleton : var_ref $$ = $1; } } - | tLPAREN expr opt_nl ')' + | '(' expr opt_nl ')' { switch (nd_type($2)) { case NODE_STR: @@ -1541,7 +1541,7 @@ singleton : var_ref case NODE_LIT: case NODE_ARRAY: case NODE_ZARRAY: - yyerror("Can't define single method for literals."); + yyerror("can't define single method for literals."); default: break; } @@ -1783,7 +1783,9 @@ nextc() normalize_newline(v); while (RSTRING(v)->len >= 2 && RSTRING(v)->ptr[RSTRING(v)->len-1] == '\n' && - RSTRING(v)->ptr[RSTRING(v)->len-2] == '\\') { + RSTRING(v)->ptr[RSTRING(v)->len-2] == '\\' && + (RSTRING(v)->len == 2 || + RSTRING(v)->ptr[RSTRING(v)->len-3] != '\\')) { VALUE v2 = (*lex_gets)(lex_input); if (!NIL_P(v2)) { @@ -2386,8 +2388,7 @@ here_document(term, indent) case 0: goto error; } - if (lex_lastline != line) { - line = lex_lastline; + if (lex_p != lex_pend) { goto retry; } } @@ -2460,10 +2461,6 @@ retry: while ((c = nextc()) != '\n') { if (c == -1) return 0; - if (c == '\\') { /* skip a char */ - c = nextc(); - if (c == '\n') ruby_sourceline++; - } if (ismbchar(c)) { int i, len = mbclen(c)-1; @@ -2475,8 +2472,12 @@ retry: } } } - else if (c >= 0x80) { - if ((c = nextc()) != '\\') { + else if (c == ' ') { + if ((c = nextc()) == '\\') { + c = nextc(); + if (c == '\n') ruby_sourceline++; + } + else { pushback(c); } } @@ -117,7 +117,7 @@ rb_waitpid(pid, flags, st) } if (flags) { - rb_raise(rb_eArgError, "Can't do waitpid with flags"); + rb_raise(rb_eArgError, "can't do waitpid with flags"); } for (;;) { @@ -35,11 +35,10 @@ range_s_new(klass, beg, end) VALUE klass, beg, end; { VALUE obj; + VALUE args[2]; + args[0] = beg; args[1] = end; if (!FIXNUM_P(beg) || !FIXNUM_P(end)) { - VALUE args[2]; - - args[0] = beg; args[1] = end; rb_rescue(range_check, (VALUE)args, range_failed, 0); } @@ -47,7 +46,7 @@ range_s_new(klass, beg, end) rb_ivar_set(obj, id_beg, beg); rb_ivar_set(obj, id_end, end); - rb_obj_call_init(obj); + rb_obj_call_init(obj, 2, args); return obj; } @@ -720,7 +720,7 @@ rb_reg_new_1(klass, s, len, options) if (options & ~0x3) { kcode_reset_option(); } - rb_obj_call_init((VALUE)re); + rb_obj_call_init((VALUE)re, 0, 0); return (VALUE)re; } @@ -17,6 +17,9 @@ Boston, MA 02111-1307, USA. */ /* Multi-byte extension added May, 1993 by t^2 (Takahiro Tanimoto) Last change: May 21, 1993 by t^2 */ +/* removed gapped buffer support, multiple syntax support by matz <matz@nts.co.jp> */ +/* Perl5 extension added by matz <matz@caelum.co.jp> */ +/* UTF-8 extension added Jan 16 1999 by Yoshida Masato <yoshidam@tau.bekkoame.ne.jp> */ #include "config.h" #ifdef RUBY_PLATFORM diff --git a/sample/mine.rb b/sample/mine.rb index 96af32e7e4..f18d6c6b03 100644 --- a/sample/mine.rb +++ b/sample/mine.rb @@ -143,7 +143,7 @@ bd=Board.new(10,10,10) system("stty raw -echo") begin loop do - case getc + case STDIN.getc when ?n # new game bd.reset when ?m # mark @@ -163,7 +163,7 @@ begin break end if bd.over? - if getc == ?q then break end + if STDIN.getc == ?q then break end bd.reset end end @@ -200,7 +200,7 @@ rb_f_kill(argc, argv) sig = FIX2UINT(argv[0]); if (sig >= NSIG) { s = rb_id2name(sig); - if (!s) rb_raise(rb_eArgError, "Bad signal"); + if (!s) rb_raise(rb_eArgError, "bad signal"); goto str_signal; } break; @@ -216,7 +216,7 @@ rb_f_kill(argc, argv) if (strncmp("SIG", s, 3) == 0) s += 3; if((sig = signm2signo(s)) == 0) - rb_raise(rb_eArgError, "Unrecognized signal name `%s'", s); + rb_raise(rb_eArgError, "unrecognized signal name `%s'", s); if (negative) sig = -sig; @@ -438,13 +438,13 @@ trap(arg) s += 3; sig = signm2signo(s); if (sig == 0 && strcmp(s, "EXIT") != 0) - rb_raise(rb_eArgError, "Invalid signal SIG%s", s); + rb_raise(rb_eArgError, "invalid signal SIG%s", s); } else { sig = NUM2INT(arg->sig); } if (sig < 0 || sig > NSIG) { - rb_raise(rb_eArgError, "Invalid signal no %d", sig); + rb_raise(rb_eArgError, "invalid signal number (%d)", sig); } #if defined(USE_THREAD) && defined(HAVE_SETITIMER) && !defined(__BOW__) if (sig == SIGVTALRM) { @@ -214,7 +214,7 @@ rb_str_s_new(klass, orig) if (rb_safe_level() >= 3) { FL_SET(str, FL_TAINT); } - rb_obj_call_init((VALUE)str); + rb_obj_call_init((VALUE)str, 1, &orig); return (VALUE)str; } @@ -625,7 +625,7 @@ rb_str_index_method(argc, argv, str) } default: - rb_raise(rb_eTypeError, "Type mismatch: %s given", + rb_raise(rb_eTypeError, "type mismatch: %s given", rb_class2name(CLASS_OF(sub))); } @@ -684,7 +684,7 @@ rb_str_rindex(argc, argv, str) } default: - rb_raise(rb_eTypeError, "Type mismatch: %s given", + rb_raise(rb_eTypeError, "type mismatch: %s given", rb_class2name(CLASS_OF(sub))); } return Qnil; @@ -818,7 +818,7 @@ rb_str_aref(str, indx) return rb_str_subseq(str, beg, end); } } - rb_raise(rb_eIndexError, "Invalid index for string"); + rb_raise(rb_eIndexError, "invalid index for string"); } return Qnil; /* not reached */ } @@ -947,7 +947,7 @@ rb_str_aset(str, indx, val) return val; } } - rb_raise(rb_eIndexError, "Invalid index for string"); + rb_raise(rb_eIndexError, "invalid index for string"); } } @@ -1019,7 +1019,7 @@ rb_str_sub_bang(argc, argv, str) repl = rb_obj_as_string(argv[1]);; } else { - rb_raise(rb_eArgError, "Wrong # of arguments(%d for 2)", argc); + rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)", argc); } pat = get_pat(argv[0]); @@ -1088,7 +1088,7 @@ rb_str_gsub_bang(argc, argv, str) repl = rb_obj_as_string(argv[1]);; } else { - rb_raise(rb_eArgError, "Wrong # of arguments(%d for 2)", argc); + rb_raise(rb_eArgError, "wrong # of arguments(%d for 2)", argc); } pat = get_pat(argv[0]); @@ -218,7 +218,7 @@ rb_struct_s_def(argc, argv, klass) RARRAY(rest)->ptr[i] = INT2FIX(id); } st = make_struct(name, rest, klass); - rb_obj_call_init(st); + rb_obj_call_init(st, argc, argv); return st; } @@ -259,7 +259,7 @@ struct_alloc(argc, argv, klass) st->ptr = ALLOC_N(VALUE, n); rb_mem_clear(st->ptr, n); st->len = n; - rb_obj_call_init2((VALUE)st, argc, argv); + rb_obj_call_init((VALUE)st, argc, argv); return (VALUE)st; } @@ -18,9 +18,10 @@ #ifdef HAVE_SYS_TIME_H # include <sys/time.h> #else +#define time_t long struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ + time_t tv_sec; /* seconds */ + time_t tv_usec; /* and microseconds */ }; #endif #endif /* NT */ @@ -30,9 +31,9 @@ struct timeval { #endif #ifdef USE_CWGUSI -typedef int time_t; -time_t gettimeofday(struct timeval*, struct timezone*); -time_t strcasecmp(char*, char*); +#define time_t long +int gettimeofday(struct timeval*, struct timezone*); +int strcasecmp(char*, char*); #endif #if 0 @@ -70,7 +71,7 @@ time_s_now(klass) if (gettimeofday(&(tobj->tv), 0) < 0) { rb_sys_fail("gettimeofday"); } - rb_obj_call_init(obj); + rb_obj_call_init(obj, 0, 0); return obj; } @@ -120,8 +121,8 @@ rb_time_timeval(time) case T_FLOAT: if (RFLOAT(time)->value < 0.0) rb_raise(rb_eArgError, "time must be positive"); - t.tv_sec = (long)floor(RFLOAT(time)->value); - t.tv_usec = (long)((RFLOAT(time)->value - t.tv_sec) * 1000000.0); + t.tv_sec = (time_t)RFLOAT(time)->value; + t.tv_usec = (time_t)((RFLOAT(time)->value - (double)t.tv_sec)*1e6); break; case T_BIGNUM: @@ -133,7 +134,7 @@ rb_time_timeval(time) default: if (!rb_obj_is_kind_of(time, rb_cTime)) { - rb_raise(rb_eTypeError, "Can't convert %s into Time", + rb_raise(rb_eTypeError, "can't convert %s into Time", rb_class2name(CLASS_OF(time))); } GetTimeval(time, tobj); @@ -259,12 +260,14 @@ make_time_t(tptr, fn) t = tptr->tm_year; while (diff = t - (tm->tm_year)) { guess += diff * 364 * 24 * 3600; + if (guess < 0) goto too_future; tm = (*fn)(&guess); if (!tm) goto error; } t = tptr->tm_mon; while (diff = t - tm->tm_mon) { guess += diff * 27 * 24 * 3600; + if (guess < 0) goto too_future; tm = (*fn)(&guess); if (!tm) goto error; } @@ -272,10 +275,13 @@ make_time_t(tptr, fn) guess += (tptr->tm_hour - tm->tm_hour) * 3600; guess += (tptr->tm_min - tm->tm_min) * 60; guess += tptr->tm_sec - tm->tm_sec; - if (guess < 0) rb_raise(rb_eArgError, "too far future"); + if (guess < 0) goto too_future; return guess; + too_future: + rb_raise(rb_eArgError, "too far future"); + error: rb_raise(rb_eArgError, "gmtime/localtime error"); return Qnil; /* not reached */ @@ -367,10 +373,13 @@ time_cmp(time1, time2) { double t; - if (tobj1->tv.tv_sec == (long)RFLOAT(time2)->value) return INT2FIX(0); + if (tobj1->tv.tv_sec == (time_t)RFLOAT(time2)->value) + return INT2FIX(0); t = (double)tobj1->tv.tv_sec + (double)tobj1->tv.tv_usec*1e-6; - if (tobj1->tv.tv_sec == RFLOAT(time2)->value) return INT2FIX(0); - if (tobj1->tv.tv_sec > RFLOAT(time2)->value) return INT2FIX(1); + if (tobj1->tv.tv_sec == (time_t)RFLOAT(time2)->value) + return INT2FIX(0); + if (tobj1->tv.tv_sec > (time_t)RFLOAT(time2)->value) + return INT2FIX(1); return FIX2INT(-1); } } @@ -499,14 +508,19 @@ time_plus(time1, time2) VALUE time1, time2; { struct time_object *tobj1, *tobj2; - long sec, usec; + time_t sec, usec; double f; GetTimeval(time1, tobj1); +#if 0 + if (rb_obj_is_kind_of(time2, rb_cTime)) { + rb_raise(rb_eTypeError, "time + time?"); + } +#endif f = NUM2DBL(time2); - sec = (long)f; - usec = tobj1->tv.tv_usec + (long)((f - (double)sec)*1e6); + sec = (time_t)f; + usec = tobj1->tv.tv_usec + (time_t)((f - (double)sec)*1e6); sec = tobj1->tv.tv_sec + sec; if (usec >= 1000000) { /* usec overflow */ @@ -521,7 +535,7 @@ time_minus(time1, time2) VALUE time1, time2; { struct time_object *tobj1, *tobj2; - long sec, usec; + time_t sec, usec; double f; GetTimeval(time1, tobj1); @@ -535,8 +549,8 @@ time_minus(time1, time2) } else { f = NUM2DBL(time2); - sec = (long)f; - usec = tobj1->tv.tv_usec - (long)((f - (double)sec)*1e6); + sec = (time_t)f; + usec = tobj1->tv.tv_usec - (time_t)((f - (double)sec)*1e6); sec = tobj1->tv.tv_sec - sec; } @@ -714,7 +728,7 @@ rb_strftime(buf, format, time) volatile int size; int len, flen; - buf[0] = '\0'; + (*buf)[0] = '\0'; flen = strlen(format); if (flen == 0) { return 0; @@ -723,7 +737,7 @@ rb_strftime(buf, format, time) if (len != 0) return len; for (size=1024; ; size*=2) { *buf = xmalloc(size); - buf[0] = '\0'; + (*buf)[0] = '\0'; len = strftime(*buf, size, format, time); /* * buflen can be zero EITHER because there's not enough @@ -820,87 +834,74 @@ time_dump(argc, argv, time) { VALUE dummy; struct time_object *tobj; - time_t sec, usec; struct tm *tm; - unsigned char buf[11]; + unsigned long p, s; + unsigned char buf[8]; int i; rb_scan_args(argc, argv, "01", &dummy); GetTimeval(time, tobj); - sec = tobj->tv.tv_sec; - usec = tobj->tv.tv_usec; - - tm = gmtime(&sec); - i = tm->tm_year; - buf[0] = i & 0xff; - i = RSHIFT(i, 8); - buf[1] = i & 0xff; + tm = gmtime(&tobj->tv.tv_sec); - buf[2] = tm->tm_mon; - buf[3] = tm->tm_mday; - buf[4] = tm->tm_hour; - buf[5] = tm->tm_min; - buf[6] = tm->tm_sec; + p = 0x1 << 31 | /* 1 */ + tm->tm_year << 14 | /* 17 */ + tm->tm_mon << 10 | /* 4 */ + tm->tm_mday << 5 | /* 5 */ + tm->tm_hour; /* 5 */ + s = tm->tm_min << 26 | /* 6 */ + tm->tm_sec << 20 | /* 6 */ + tobj->tv.tv_usec; /* 20 */ - for (i=7; i<11; i++) { - buf[i] = usec & 0xff; - usec = RSHIFT(usec, 8); - } - return rb_str_new(buf, 11); -} - -static VALUE -time_old_load(klass, buf) - VALUE klass; - unsigned char *buf; -{ - time_t sec, usec; - int i; - - sec = usec = 0; for (i=0; i<4; i++) { - sec |= buf[i]<<(8*i); + buf[i] = p & 0xff; + p = RSHIFT(p, 8); } for (i=4; i<8; i++) { - usec |= buf[i]<<(8*(i-4)); + buf[i] = s & 0xff; + s = RSHIFT(s, 8); } - return time_new_internal(klass, sec, usec); + return rb_str_new(buf, 8); } static VALUE time_load(klass, str) VALUE klass, str; { + unsigned long p, s; time_t sec, usec; unsigned char *buf; struct tm tm; int i; buf = str2cstr(str, &i); - if (i == 8) { - return time_old_load(klass, buf); - } - if (i != 11) { + if (i != 8) { rb_raise(rb_eTypeError, "marshaled time format differ"); } - tm.tm_year = buf[0]; - tm.tm_year |= buf[1]<<8; - tm.tm_mon = buf[2]; - tm.tm_mday = buf[3]; - tm.tm_hour = buf[4]; - tm.tm_min = buf[5]; - tm.tm_sec = buf[6]; - - sec = make_time_t(&tm, gmtime); - - usec = 0; + p = s = 0; for (i=0; i<4; i++) { - usec |= buf[i+7]<<(8*i); + p |= buf[i]<<(8*i); + } + for (i=4; i<8; i++) { + s |= buf[i]<<(8*(i-4)); } + if ((p & (1<<31)) == 0) { + return time_new_internal(klass, sec, usec); + } + p &= ~(1<<31); + tm.tm_year = (p >> 14) & 0x3ffff; + tm.tm_mon = (p >> 10) & 0xf; + tm.tm_mday = (p >> 5) & 0x1f; + tm.tm_hour = p & 0x1f; + tm.tm_min = (s >> 26) & 0x3f; + tm.tm_sec = (s >> 20) & 0x3f; + + sec = make_time_t(&tm, gmtime); + usec = (time_t) s & 0xfffff; + return time_new_internal(klass, sec, usec); } @@ -36,7 +36,6 @@ void ruby_qsort _((void*, int, int, int (*)())); #define qsort(b,n,s,c) ruby_qsort(b,n,s,c) void ruby_setenv _((char*, char*)); -void ruby_setenv2 _((char*, char*)); void ruby_unsetenv _((char*)); #endif /* UTIL_H */ diff --git a/variable.c b/variable.c index a8322b7478..348b4d5989 100644 --- a/variable.c +++ b/variable.c @@ -246,6 +246,9 @@ char * rb_class2name(klass) VALUE klass; { + if (klass == rb_cNilClass) return "nil"; + if (klass == rb_cTrueClass) return "true"; + if (klass == rb_cFalseClass) return "false"; return RSTRING(rb_class_path(klass))->ptr; } @@ -384,7 +387,7 @@ readonly_setter(val, id, var) ID id; void *var; { - rb_raise(rb_eNameError, "Can't set variable %s", rb_id2name(id)); + rb_raise(rb_eNameError, "can't set variable %s", rb_id2name(id)); } static int @@ -977,7 +980,7 @@ rb_const_get_at(klass, id) if (klass == rb_cObject) { return rb_const_get(klass, id); } - rb_raise(rb_eNameError, "Uninitialized constant %s::%s", + rb_raise(rb_eNameError, "uninitialized constant %s::%s", RSTRING(rb_class_path(klass))->ptr, rb_id2name(id)); return Qnil; /* not reached */ @@ -1020,11 +1023,11 @@ rb_const_get(klass, id) /* Uninitialized constant */ if (klass && klass != rb_cObject) - rb_raise(rb_eNameError, "Uninitialized constant %s::%s", + rb_raise(rb_eNameError, "uninitialized constant %s::%s", RSTRING(rb_class_path(klass))->ptr, rb_id2name(id)); else { - rb_raise(rb_eNameError, "Uninitialized constant %s",rb_id2name(id)); + rb_raise(rb_eNameError, "uninitialized constant %s",rb_id2name(id)); } return Qnil; /* not reached */ } @@ -1,2 +1,2 @@ #define RUBY_VERSION "1.3.1" -#define VERSION_DATE "99/02/24" +#define VERSION_DATE "99/02/25" diff --git a/win32/Makefile b/win32/Makefile index ce9dbe6d20..b0d6ffe723 100644 --- a/win32/Makefile +++ b/win32/Makefile @@ -20,7 +20,7 @@ LDFLAGS = $(CFLAGS) -Fm #CFLAGS = -nologo -DNT=1 -Zi -MD #LDFLAGS = $(CFLAGS) -Fm -MD LIBS = $(EXTLIBS) advapi32.lib wsock32.lib -MISSING = crypt.obj alloca.obj win32.obj +MISSING = crypt.obj alloca.obj win32.obj fnmatch.obj isinf.obj isnan.obj prefix = binprefix = @@ -50,7 +50,6 @@ OBJS = array.obj \ error.obj \ eval.obj \ file.obj \ - fnmatch.obj \ gc.obj \ glob.obj \ hash.obj \ @@ -175,6 +174,15 @@ strtol.obj: missing/strtol.c strtoul.obj: missing/strtoul.c $(CC) $(CFLAGS) $(CPPFLAGS) -c missing/strtoul.c +fnmatch.obj: missing/fnmatch.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c missing/fnmatch.c + +isinf.obj: missing/isinf.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c missing/isinf.c + +isnan.obj: missing/isnan.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c missing/isnan.c + # when I use -I., there is confliction at "OpenFile" # so, set . into environment varible "include" win32.obj: win32/win32.c @@ -202,9 +210,8 @@ enum.obj: enum.c ruby.h config.h defines.h error.obj: error.c ruby.h config.h defines.h env.h eval.obj: eval.c ruby.h config.h defines.h env.h node.h rubysig.h st.h dln.h file.obj: file.c ruby.h config.h defines.h rubyio.h rubysig.h -fnmatch.obj: fnmatch.c config.h fnmatch.h gc.obj: gc.c ruby.h config.h defines.h env.h rubysig.h st.h node.h re.h regex.h -glob.obj: glob.c config.h fnmatch.h +glob.obj: glob.c config.h missing/fnmatch.h hash.obj: hash.c ruby.h config.h defines.h st.h inits.obj: inits.c ruby.h config.h defines.h io.obj: io.c ruby.h config.h defines.h rubyio.h rubysig.h |