diff --git a/collects/eopl/datatype.ss b/collects/eopl/datatype.ss index a188613bba..e151cb50a8 100644 --- a/collects/eopl/datatype.ss +++ b/collects/eopl/datatype.ss @@ -81,7 +81,7 @@ ;; Also, this isn't a transformer function, so any direct ;; use of the name will trigger a syntax error. The name ;; can be found by `syntax-local-value', though. - (let ([cert (syntax-local-certifier)]) + (let ([cert (syntax-local-certifier #t)]) (make-dt (cert (syntax pred-name)) (list (make-vt (cert (syntax variant-name)) diff --git a/collects/frtime/frp-core.ss b/collects/frtime/frp-core.ss index 52ac496a50..0de560d02f 100644 --- a/collects/frtime/frp-core.ss +++ b/collects/frtime/frp-core.ss @@ -85,24 +85,25 @@ (define-syntax signal (let ([field-name-symbols (list 'value 'dependents 'stale? 'thunk 'depth 'continuation-marks 'parameterization - 'producers)]) + 'producers)] + [cert (syntax-local-certifier #t)]) (list-immutable - ((syntax-local-certifier) #'struct:signal) - ((syntax-local-certifier) #'make-signal) - ((syntax-local-certifier) #'signal?) + (cert #'struct:signal) + (cert #'make-signal) + (cert #'signal?) (apply list-immutable (map (lambda (fd) - ((syntax-local-certifier) (datum->syntax-object - #'here - (string->symbol (format "signal-~a" fd))))) + (cert (datum->syntax-object + #'here + (string->symbol (format "signal-~a" fd))))) (reverse field-name-symbols))) (apply list-immutable (map (lambda (fd) - ((syntax-local-certifier) (datum->syntax-object - #'here - (string->symbol (format "set-signal-~a!" fd))))) + (cert (datum->syntax-object + #'here + (string->symbol (format "set-signal-~a!" fd))))) (reverse field-name-symbols))) #t))) diff --git a/collects/frtime/struct.ss b/collects/frtime/struct.ss index 6ae85c082e..770111a34f 100644 --- a/collects/frtime/struct.ss +++ b/collects/frtime/struct.ss @@ -98,29 +98,30 @@ [else (loop (cdr l))])) (append base '(#f))) base))] + [cert-f (gensym)] [qs (lambda (x) (if (eq? x #t) x - (and x `((syntax-local-certifier) (quote-syntax ,x)))))]) - `(list-immutable - ,(qs (car names)) - ,(qs (cadr names)) - ,(qs (caddr names)) - (list-immutable - ,@(reverse (if omit-sel? - null - (map qs (if omit-set? flds (every-other flds))))) - ,@(map qs (add-#f omit-sel? base-getters))) - (list-immutable - ,@(reverse (if omit-set? - null - (map qs (if omit-sel? - flds - (every-other (if (null? flds) - null - (cdr flds))))))) - ,@(map qs (add-#f omit-set? base-setters))) - ,(qs base-name))))) - + (and x `(,cert-f (quote-syntax ,x)))))]) + `(let ([,cert-f (syntax-local-certifier #t)]) + (list-immutable + ,(qs (car names)) + ,(qs (cadr names)) + ,(qs (caddr names)) + (list-immutable + ,@(reverse (if omit-sel? + null + (map qs (if omit-set? flds (every-other flds))))) + ,@(map qs (add-#f omit-sel? base-getters))) + (list-immutable + ,@(reverse (if omit-set? + null + (map qs (if omit-sel? + flds + (every-other (if (null? flds) + null + (cdr flds))))))) + ,@(map qs (add-#f omit-set? base-setters))) + ,(qs base-name)))))) (define (struct-declaration-info? x) (define (identifier/#f? x) @@ -158,15 +159,16 @@ ;; if `defined-names' is #f. ;; If `expr?' is #t, then generate an expression to build the info, ;; otherwise build the info directly. - (let ([qs (if gen-expr? (lambda (x) #`((syntax-local-certifier) (quote-syntax #,x))) values)] - [every-other (lambda (l) - (let loop ([l l][r null]) - (cond - [(null? l) r] - [(null? (cdr l)) (cons (car l) r)] - [else (loop (cddr l) (cons (car l) r))])))] - [super-info (and super-id - (syntax-local-value super-id (lambda () #f)))]) + (let* ([cert-f (gensym)] + [qs (if gen-expr? (lambda (x) #`(#,cert-f (quote-syntax #,x))) values)] + [every-other (lambda (l) + (let loop ([l l][r null]) + (cond + [(null? l) r] + [(null? (cdr l)) (cons (car l) r)] + [else (loop (cddr l) (cons (car l) r))])))] + [super-info (and super-id + (syntax-local-value super-id (lambda () #f)))]) (when super-id ;; Did we get valid super-info ? (when (or (not (struct-declaration-info? super-info)) @@ -193,25 +195,26 @@ (values null null))] [(fields) (cdddr defined-names)] [(wrap) (if gen-expr? (lambda (x) #`(list-immutable #,@x)) values)]) - (wrap - (list-immutable (qs (car defined-names)) - (qs (cadr defined-names)) - (qs (caddr defined-names)) - (wrap - (apply - list-immutable - (append (map qs (every-other fields)) - initial-gets))) - (wrap - (apply - list-immutable - (append (map qs (if (null? fields) - null - (every-other (cdr fields)))) - initial-sets))) - (if super-id - (qs super-id) - #t)))) + #`(let ([#,cert-f (syntax-local-certifier #t)]) + #,(wrap + (list-immutable (qs (car defined-names)) + (qs (cadr defined-names)) + (qs (caddr defined-names)) + (wrap + (apply + list-immutable + (append (map qs (every-other fields)) + initial-gets))) + (wrap + (apply + list-immutable + (append (map qs (if (null? fields) + null + (every-other (cdr fields)))) + initial-sets))) + (if super-id + (qs super-id) + #t))))) #f)))) (define (make-core make-make-struct-type orig-stx defined-names super-info name field-names) diff --git a/collects/lang/prim.ss b/collects/lang/prim.ss index 2e79e25574..71a6f506a2 100644 --- a/collects/lang/prim.ss +++ b/collects/lang/prim.ss @@ -48,7 +48,7 @@ "this primitive operator must be applied to arguments; " "expected an open parenthesis before the operator name") stx)]))) - ((syntax-local-certifier) + ((syntax-local-certifier #t) #'impl))))])) (define-syntax (define-higher-order-primitive stx) @@ -126,7 +126,7 @@ "this primitive operator must be applied to arguments; " "expected an open parenthesis before the operator name") s)]))) - ((syntax-local-certifier) + ((syntax-local-certifier #t) #'impl))))))))])) (define-syntax (fo->ho stx) diff --git a/collects/mred/edit.ss b/collects/mred/edit.ss index 50f56344c6..01ad9763df 100644 --- a/collects/mred/edit.ss +++ b/collects/mred/edit.ss @@ -68,6 +68,15 @@ (lambda (item event) (send e save-file "" 'text)))) (make-object separator-menu-item% file-menu) + (when (can-get-page-setup-from-user?) + (make-object menu-item% "Page Setup..." file-menu + (lambda (item event) + (let ([s (get-page-setup-from-user #f f)]) + (when s + (send (current-ps-setup) copy-from s)))) + #\P + #f void + (cons 'shift (get-default-shortcut-prefix)))) (make-object menu-item% "Print..." file-menu (lambda (item event) (send e print)) diff --git a/collects/mred/private/moredialogs.ss b/collects/mred/private/moredialogs.ss index c72d35111b..9603828994 100644 --- a/collects/mred/private/moredialogs.ss +++ b/collects/mred/private/moredialogs.ss @@ -181,7 +181,7 @@ (let ([s (make-object wx:ps-setup%)]) (send s copy-from (or pss-in (wx:current-ps-setup))) (and (parameterize ([wx:current-ps-setup s]) - (wx:show-print-setup parent)) + (wx:show-print-setup (and parent (mred->wx parent)))) s)))])) (define (can-get-page-setup-from-user?) diff --git a/collects/mzlib/private/contract.ss b/collects/mzlib/private/contract.ss index 09b4852203..6b66cb7873 100644 --- a/collects/mzlib/private/contract.ss +++ b/collects/mzlib/private/contract.ss @@ -434,18 +434,19 @@ add struct contracts for immutable structs? [super-id (if (boolean? super-id) super-id (with-syntax ([super-id super-id]) - (syntax ((syntax-local-certifier) #'super-id))))]) + (syntax (cert #'super-id))))]) (syntax (begin (provide (rename id-rename struct-name)) (define-syntax id-rename - (list-immutable ((syntax-local-certifier) #'-struct:struct-name) - ((syntax-local-certifier) #'constructor-new-name) - ((syntax-local-certifier) #'predicate-new-name) - (list-immutable ((syntax-local-certifier) #'rev-selector-new-names) ... - ((syntax-local-certifier) #'rev-selector-old-names) ...) - (list-immutable ((syntax-local-certifier) #'rev-mutator-new-names) ... - ((syntax-local-certifier) #'rev-mutator-old-names) ...) - super-id)))))] + (let ([cert (syntax-local-certifier #t)]) + (list-immutable (cert #'-struct:struct-name) + (cert #'constructor-new-name) + (cert #'predicate-new-name) + (list-immutable (cert #'rev-selector-new-names) ... + (cert #'rev-selector-old-names) ...) + (list-immutable (cert #'rev-mutator-new-names) ... + (cert #'rev-mutator-old-names) ...) + super-id))))))] [struct:struct-name struct:struct-name] [-struct:struct-name -struct:struct-name] [struct-name struct-name] diff --git a/collects/syntax/struct.ss b/collects/syntax/struct.ss index f5843a03e3..8831af9705 100644 --- a/collects/syntax/struct.ss +++ b/collects/syntax/struct.ss @@ -176,28 +176,30 @@ (append base '(#f)) base) base))] + [cert-f (gensym)] [qs (lambda (x) (if (eq? x #t) x - (and x `((syntax-local-certifier) (quote-syntax ,x)))))]) - `(list-immutable - ,(qs (car names)) - ,(qs (cadr names)) - ,(qs (caddr names)) - (list-immutable - ,@(reverse (if omit-sel? - null - (map qs (if omit-set? flds (every-other flds))))) - ,@(map qs (add-#f omit-sel? base-getters))) - (list-immutable - ,@(reverse (if omit-set? - null - (map qs (if omit-sel? - flds - (every-other (if (null? flds) - null - (cdr flds))))))) - ,@(map qs (add-#f omit-set? base-setters))) - ,(qs base-name))))) + (and x `(,cert-f (quote-syntax ,x)))))]) + `(let ([,cert-f (syntax-local-certifier #t)]) + (list-immutable + ,(qs (car names)) + ,(qs (cadr names)) + ,(qs (caddr names)) + (list-immutable + ,@(reverse (if omit-sel? + null + (map qs (if omit-set? flds (every-other flds))))) + ,@(map qs (add-#f omit-sel? base-getters))) + (list-immutable + ,@(reverse (if omit-set? + null + (map qs (if omit-sel? + flds + (every-other (if (null? flds) + null + (cdr flds))))))) + ,@(map qs (add-#f omit-set? base-setters))) + ,(qs base-name)))))) (define (struct-declaration-info? x) @@ -236,15 +238,16 @@ ;; if `defined-names' is #f. ;; If `expr?' is #t, then generate an expression to build the info, ;; otherwise build the info directly. - (let ([qs (lambda (x) #`((syntax-local-certifier) (quote-syntax #,x)))] - [every-other (lambda (l) - (let loop ([l l][r null]) - (cond - [(null? l) r] - [(null? (cdr l)) (cons (car l) r)] - [else (loop (cddr l) (cons (car l) r))])))] - [super-info (and super-id - (syntax-local-value super-id (lambda () #f)))]) + (let* ([cert-f (gensym)] + [qs (lambda (x) #`(#,cert-f (quote-syntax #,x)))] + [every-other (lambda (l) + (let loop ([l l][r null]) + (cond + [(null? l) r] + [(null? (cdr l)) (cons (car l) r)] + [else (loop (cddr l) (cons (car l) r))])))] + [super-info (and super-id + (syntax-local-value super-id (lambda () #f)))]) (when super-id ;; Did we get valid super-info ? (when (or (not (struct-declaration-info? super-info)) @@ -271,25 +274,26 @@ (values null null))] [(fields) (cdddr defined-names)] [(wrap) (lambda (x) #`(list-immutable #,@x))]) - (wrap - (list-immutable (qs (car defined-names)) - (qs (cadr defined-names)) - (qs (caddr defined-names)) - (wrap - (apply - list-immutable - (append (map qs (every-other fields)) - initial-gets))) - (wrap - (apply - list-immutable - (append (map qs (if (null? fields) - null - (every-other (cdr fields)))) - initial-sets))) - (if super-id - (qs super-id) - #t)))) + #`(let ([#,cert-f (syntax-local-certifier)]) + #,(wrap + (list-immutable (qs (car defined-names)) + (qs (cadr defined-names)) + (qs (caddr defined-names)) + (wrap + (apply + list-immutable + (append (map qs (every-other fields)) + initial-gets))) + (wrap + (apply + list-immutable + (append (map qs (if (null? fields) + null + (every-other (cdr fields)))) + initial-sets))) + (if super-id + (qs super-id) + #t))))) #f)))) (define (make-core make-make-struct-type orig-stx defined-names super-info name field-names) diff --git a/collects/tests/mzscheme/file.ss b/collects/tests/mzscheme/file.ss index 30e58a81da..8c04dcf804 100644 --- a/collects/tests/mzscheme/file.ss +++ b/collects/tests/mzscheme/file.ss @@ -173,6 +173,25 @@ (test #\l read-char s) (test 3 file-position s)) +(let ([os (open-output-string)]) + (write '((0 54609) (1 32874234)) os) + (file-position os 2) + (file-position os eof) + (test #"((0 54609) (1 32874234))" get-output-bytes os)) + +(let ([os (open-output-string)]) + (write '1234 os) + (file-position os 10) + (write 'z os) + (test #"1234\0\0\0\0\0\0z" get-output-bytes os)) + +(let ([os (open-output-string)]) + (write '1234 os) + (file-position os 10) + (file-position os eof) + (write 'z os) + (test #"1234\0\0\0\0\0\0z" get-output-bytes os)) + (define s (open-output-string)) (err/rt-test (file-position 's 1)) (err/rt-test (file-position s 'one)) diff --git a/collects/tests/mzscheme/prompt-tests.ss b/collects/tests/mzscheme/prompt-tests.ss index 5e00bd8ebe..52298a924c 100644 --- a/collects/tests/mzscheme/prompt-tests.ss +++ b/collects/tests/mzscheme/prompt-tests.ss @@ -1,4 +1,33 @@ +(let ([try + (lambda (thread m-top n-top do-mid-stream do-abort) + (let ([result #f]) + (thread-wait + (thread + (lambda () + (set! result + (let pre-loop ([m m-top]) + (if (zero? m) + (list + (do-mid-stream + (lambda () + (call-with-continuation-prompt + (lambda () + (let loop ([n n-top]) + (if (zero? n) + (do-abort + (lambda () + (abort-current-continuation + (default-continuation-prompt-tag) + (lambda () 5000)))) + (+ (loop (sub1 n)))))))))) + (list (car (pre-loop (sub1 m)))))))))) + (test '(5000) values result)))]) + (try thread 5000 10000 (lambda (mid) (mid)) + (lambda (abort) (((call/cc + (lambda (k) (lambda () k)))) + (lambda () (lambda (x) 5000)))))) + (test-breaks-ok) ;;---------------------------------------- diff --git a/doc/release-notes/mred/HISTORY b/doc/release-notes/mred/HISTORY index 91f7e52ca7..5651883820 100644 --- a/doc/release-notes/mred/HISTORY +++ b/doc/release-notes/mred/HISTORY @@ -1,3 +1,9 @@ +Version 369.5 + +Mac OS X printer-dc% uses scaling specified by the current ps-setup% + +---------------------------------------------------------------------- + Version 360, November 2006 Added get-other-altgr-key-code and get-other-shift-altgr-key-code diff --git a/doc/release-notes/mzscheme/HISTORY b/doc/release-notes/mzscheme/HISTORY index 773b71554a..67f3af7872 100644 --- a/doc/release-notes/mzscheme/HISTORY +++ b/doc/release-notes/mzscheme/HISTORY @@ -1,3 +1,11 @@ +Version 369.5 +print-struct defaults to #t instead of #f +Changed make-exn to automatically convert a mutable message string + to an immutable string +Added initial custodian argument to custodian-require-memory +Added an argument to syntax-local-certifier indicating whether the + generated procedure attaches active or inactive certificates + Version 369.4 Default build uses 3m instead of CGC Added 'gc and 'so-suffix flags for system-type @@ -6,6 +14,7 @@ Changed path->directory-path, simplify-path, and split-path to include path without it Changed simplify-path for Windows paths to replace / with \ Changed current-directory to apply path->directory-path to given paths +Added port-closed? Version 369.3 Adjusted exception-handler calling to propagate any returned value diff --git a/src/mzscheme/gc2/Makefile.in b/src/mzscheme/gc2/Makefile.in index b18e927b76..fdea62a89a 100644 --- a/src/mzscheme/gc2/Makefile.in +++ b/src/mzscheme/gc2/Makefile.in @@ -121,7 +121,7 @@ XFORMDEP_NOPRECOMP = $(srcdir)/gc2.h $(srcdir)/xform.ss $(srcdir)/xform-mod.ss XFORMDEP = $(XFORMDEP_NOPRECOMP) $(XSRCDIR)/precomp.h $(XSRCDIR)/precomp.h : $(XFORMDEP_NOPRECOMP) $(srcdir)/precomp.c $(srcdir)/../src/schpriv.h $(srcdir)/../include/scheme.h \ - $(srcdir)/../sconfig.h $(srcdir)/../uconfig.h $(srcdir)/../src/schvers.h + $(srcdir)/../sconfig.h $(srcdir)/../uconfig.h $(srcdir)/../src/schvers.h $(srcdir)/../src/schemef.h env XFORM_PRECOMP=yes $(XFORM_NOPRECOMP) $(XSRCDIR)/precomp.h $(srcdir)/precomp.c $(XSRCDIR)/salloc.c: ../src/salloc.@LTO@ $(XFORMDEP) diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 33fc47db95..d0ac313e62 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -385,12 +385,28 @@ static size_t round_to_apage_size(size_t sizeb) return sizeb; } +static unsigned long custodian_single_time_limit(int set); +inline static int thread_get_owner(void *p); + /* the core allocation functions */ static void *allocate_big(size_t sizeb, int type) { unsigned long sizew; struct mpage *bpage; + if(GC_out_of_memory) { + /* We're allowed to fail. Check for allocations that exceed a single-time + limit. Otherwise, the limit doesn't work as intended, because + a program can allocate a large block that nearly exhausts memory, + and then a subsequent allocation can fail. As long as the limit + is much smaller than the actual available memory, and as long as + GC_out_of_memory protects any user-requested allocation whose size + is independent of any existing object, then we can enforce the limit. */ + if (custodian_single_time_limit(thread_get_owner(scheme_current_thread)) < sizeb) { + GC_out_of_memory(); + } + } + /* the actual size of this is the size, ceilinged to the next largest word, plus the size of the page header, plus one word for the object header. This last serves many purposes, including making sure the object is @@ -407,7 +423,11 @@ static void *allocate_big(size_t sizeb, int type) /* We not only need APAGE_SIZE alignment, we need everything consisently mapped within an APAGE_SIZE segment. So round up. */ - bpage = malloc_pages(round_to_apage_size(sizeb), APAGE_SIZE); + if (type == PAGE_ATOMIC) { + bpage = malloc_dirty_pages(round_to_apage_size(sizeb), APAGE_SIZE); + memset(bpage, 0, sizeof(struct mpage)); + } else + bpage = malloc_pages(round_to_apage_size(sizeb), APAGE_SIZE); bpage->size = sizeb; bpage->big_page = 1; bpage->page_type = type; @@ -1191,6 +1211,7 @@ inline static void register_new_thread(void *t, void *c) work = (struct thread *)malloc(sizeof(struct thread)); work->owner = current_owner((Scheme_Custodian *)c); + ((Scheme_Thread *)t)->gc_owner_set = work->owner; work->thread = t; work->next = threads; threads = work; @@ -1202,6 +1223,7 @@ inline static void register_thread(void *t, void *c) for(work = threads; work; work = work->next) if(work->thread == t) { work->owner = current_owner((Scheme_Custodian *)c); + ((Scheme_Thread *)t)->gc_owner_set = work->owner; return; } register_new_thread(t, c); @@ -1212,8 +1234,12 @@ inline static void mark_threads(int owner) struct thread *work; for(work = threads; work; work = work->next) - if(work->owner == owner) + if(work->owner == owner) { normal_thread_mark(work->thread); + if (work->thread == scheme_current_thread) { + GC_mark_variable_stack(GC_variable_stack, 0, gc_stack_base); + } + } } inline static void clean_up_thread_list(void) @@ -1238,12 +1264,7 @@ inline static void clean_up_thread_list(void) inline static int thread_get_owner(void *p) { - struct thread *work; - - for(work = threads; work; work = work->next) - if(work->thread == p) - return work->owner; - GCERR((GCOUTF, "Bad thread value for thread_get_owner!\n")); + return ((Scheme_Thread *)p)->gc_owner_set; } #endif @@ -1362,12 +1383,14 @@ inline static void reset_pointer_stack(void) /*****************************************************************************/ #ifdef NEWGC_BTC_ACCOUNT -#define OWNER_TABLE_GROW_AMT 10 +#define OWNER_TABLE_INIT_AMT 10 struct ot_entry { Scheme_Custodian *originator; Scheme_Custodian **members; unsigned long memory_use; + unsigned long single_time_limit, super_required; + char limit_set, required_set; }; static struct ot_entry **owner_table = NULL; @@ -1377,10 +1400,12 @@ static int really_doing_accounting = 0; static int current_mark_owner = 0; static int old_btc_mark = 0; static int new_btc_mark = 1; +static int reset_limits = 0, reset_required = 0; inline static int create_blank_owner_set(void) { int i; + unsigned int old_top; for(i = 1; i < owner_table_top; i++) if(!owner_table[i]) { @@ -1389,11 +1414,15 @@ inline static int create_blank_owner_set(void) return i; } - owner_table_top += OWNER_TABLE_GROW_AMT; + old_top = owner_table_top; + if (!owner_table_top) + owner_table_top = OWNER_TABLE_INIT_AMT; + else + owner_table_top *= 2; + owner_table = realloc(owner_table, owner_table_top*sizeof(struct ot_entry*)); - bzero((char*)owner_table + (sizeof(struct ot_entry*) * - (owner_table_top - OWNER_TABLE_GROW_AMT)), - OWNER_TABLE_GROW_AMT * sizeof(struct ot_entry*)); + bzero((char*)owner_table + (sizeof(struct ot_entry*) * old_top), + (owner_table_top - old_top) * sizeof(struct ot_entry*)); return create_blank_owner_set(); } @@ -1402,11 +1431,17 @@ inline static int custodian_to_owner_set(Scheme_Custodian *cust) { int i; + if (cust->gc_owner_set) + return cust->gc_owner_set; + for(i = 1; i < owner_table_top; i++) if(owner_table[i] && (owner_table[i]->originator == cust)) return i; + i = create_blank_owner_set(); owner_table[i]->originator = cust; + cust->gc_owner_set = i; + return i; } @@ -1426,6 +1461,7 @@ inline static int current_owner(Scheme_Custodian *c) if(!has_gotten_root_custodian && c) { has_gotten_root_custodian = 1; owner_table[1]->originator = c; + c->gc_owner_set = 1; return 1; } @@ -1500,7 +1536,6 @@ inline static unsigned long custodian_usage(void *custodian) return gcWORDS_TO_BYTES(retval); } - inline static void memory_account_mark(struct mpage *page, void *ptr) { GCDEBUG((DEBUGOUTF, "memory_account_mark: %p/%p\n", page, ptr)); @@ -1545,15 +1580,9 @@ inline static void mark_normal_obj(struct mpage *page, void *ptr) unless the object's owner is the current owner. In the case of threads, we already used it for roots, so we can just ignore them outright. In the case of custodians, we do need - to do the check */ + to do the check; those differences are handled by replacing + the mark procedure in mark_table. */ mark_table[*(unsigned short*)ptr](ptr); -/* unsigned short tag = *(unsigned short*)ptr; */ -/* if(tag != scheme_thread_type) { */ -/* if(tag == scheme_custodian_type) { */ -/* if(custodian_to_owner_set(ptr) == current_mark_owner) */ -/* mark_table[scheme_custodian_type](ptr); */ -/* } else mark_table[tag](ptr); */ -/* } */ break; } case PAGE_ATOMIC: break; @@ -1652,7 +1681,7 @@ static void do_btc_accounting(void) for(i = 1; i < owner_table_top; i++) if(owner_table[i]) owner_table[i]->memory_use = 0; - + /* the end of the custodian list is where we want to start */ while(SCHEME_PTR1_VAL(box)) { cur = (Scheme_Custodian*)SCHEME_PTR1_VAL(box); @@ -1704,13 +1733,20 @@ inline static void add_account_hook(int type,void *c1,void *c2,unsigned long b) c1 = park[0]; c2 = park[1]; park[0] = park[1] = NULL; } + + if (type == MZACCT_LIMIT) + reset_limits = 1; + if (type == MZACCT_REQUIRE) + reset_required = 1; + for(work = hooks; work; work = work->next) { - if((work->type == type) && (work->c2 == c2)) { + if((work->type == type) && (work->c2 == c2) && (work->c1 == c1)) { if(type == MZACCT_REQUIRE) { if(b > work->amount) work->amount = b; } else { /* (type == MZACCT_LIMIT) */ if(b < work->amount) work->amount = b; } + break; } } @@ -1726,7 +1762,7 @@ inline static void clean_up_account_hooks() struct account_hook *work = hooks, *prev = NULL; while(work) { - if(marked(work->c1) && marked(work->c2)) { + if((!work->c1 || marked(work->c1)) && marked(work->c2)) { work->c1 = GC_resolve(work->c1); work->c2 = GC_resolve(work->c2); prev = work; work = work->next; @@ -1741,13 +1777,48 @@ inline static void clean_up_account_hooks() } } +static unsigned long custodian_super_require(void *c) +{ + int set = ((Scheme_Custodian *)c)->gc_owner_set; + + if (reset_required) { + int i; + for(i = 1; i < owner_table_top; i++) + if (owner_table[i]) + owner_table[i]->required_set = 0; + reset_required = 0; + } + + if (!owner_table[set]->required_set) { + unsigned long req = 0, r; + struct account_hook *work = hooks; + + printf("check: %p\n", c); + + while(work) { + if ((work->type == MZACCT_REQUIRE) && (c == work->c2)) { + r = work->amount + custodian_super_require(work->c1); + if (r > req) + req = r; + } + work = work->next; + } + owner_table[set]->super_required = req; + owner_table[set]->required_set = 1; + } + + return owner_table[set]->super_required; +} + inline static void run_account_hooks() { struct account_hook *work = hooks, *prev = NULL; while(work) { if( ((work->type == MZACCT_REQUIRE) && - (((max_used_pages - used_pages) * APAGE_SIZE) < work->amount)) + ((used_pages > (max_used_pages / 2)) + || ((((max_used_pages / 2) - used_pages) * APAGE_SIZE) + < (work->amount + custodian_super_require(work->c1))))) || ((work->type == MZACCT_LIMIT) && (GC_get_memory_use(work->c1) > work->amount))) { @@ -1764,6 +1835,51 @@ inline static void run_account_hooks() } } +static unsigned long custodian_single_time_limit(int set) +{ + if (!set) + return (unsigned long)(long)-1; + + if (reset_limits) { + int i; + for(i = 1; i < owner_table_top; i++) + if (owner_table[i]) + owner_table[i]->limit_set = 0; + reset_limits = 0; + } + + if (!owner_table[set]->limit_set) { + /* Check for limits on this custodian or one of its ancestors: */ + unsigned long limit = (unsigned long)(long)-1; + Scheme_Custodian *orig = owner_table[set]->originator, *c; + struct account_hook *work = hooks; + + while(work) { + if ((work->type == MZACCT_LIMIT) && (work->c1 == work->c2)) { + c = orig; + while (1) { + if (work->c2 == c) { + if (work->amount < limit) + limit = work->amount; + break; + } + if (!c->parent) + break; + c = (Scheme_Custodian*)SCHEME_PTR1_VAL(c->parent); + if (!c) + break; + } + } + work = work->next; + } + owner_table[set]->single_time_limit = limit; + owner_table[set]->limit_set = 1; + } + + return owner_table[set]->single_time_limit; +} + + # define set_account_hook(a,b,c,d) { add_account_hook(a,b,c,d); return 1; } # define set_btc_mark(x) (((struct objhead *)(x))->btc_mark = old_btc_mark) #endif @@ -1778,6 +1894,10 @@ inline static void run_account_hooks() # define run_account_hooks() /* */ # define custodian_usage(cust) 0 # define set_btc_mark(x) /* */ +static unsigned long custodian_single_time_limit(int set) +{ + return (unsigned long)(long)-1; +} #endif int GC_set_account_hook(int type, void *c1, unsigned long b, void *c2) @@ -1954,9 +2074,10 @@ void GC_mark(const void *const_p) /* first check to see if this is an atomic object masquerading as a tagged object; if it is, then convert it */ - if(type == PAGE_TAGGED) - if((unsigned long)mark_table[*(unsigned short*)p] < PAGE_TYPES) + if(type == PAGE_TAGGED) { + if((unsigned long)mark_table[*(unsigned short*)p] < PAGE_TYPES) type = ohead->type = (int)(unsigned long)mark_table[*(unsigned short*)p]; + } /* now set us up for the search for where to put this thing */ work = pages[type]; @@ -2001,7 +2122,7 @@ void GC_mark(const void *const_p) ((struct objhead *)newplace)->mark = 1; /* if we're doing memory accounting, then we need the btc_mark to be set properly */ - set_btc_mark(ohead); + set_btc_mark(newplace); /* drop the new location of the object into the forwarding space and into the mark queue */ newplace = PTR(NUM(newplace) + WORD_SIZE); @@ -2711,7 +2832,7 @@ static void garbage_collect(int force_full) /* printf("Collection #li (full = %i): %i / %i / %i / %i\n", number, */ /* gc_full, force_full, !generations_available, */ /* (since_last_full > 100), (memory_in_use > (2 * last_full_mem_use))); */ - + number++; INIT_DEBUG_FILE(); DUMP_HEAP(); diff --git a/src/mzscheme/include/mzscheme.exp b/src/mzscheme/include/mzscheme.exp index 897cfe4f4e..9537e52247 100644 --- a/src/mzscheme/include/mzscheme.exp +++ b/src/mzscheme/include/mzscheme.exp @@ -427,6 +427,7 @@ scheme_host_address_strerror scheme_getnameinfo scheme_get_port_file_descriptor scheme_get_port_socket +scheme_socket_to_ports scheme_set_type_printer scheme_print_bytes scheme_print_utf8 diff --git a/src/mzscheme/include/mzscheme3m.exp b/src/mzscheme/include/mzscheme3m.exp index 5ff4cb4895..cf534bc9a0 100644 --- a/src/mzscheme/include/mzscheme3m.exp +++ b/src/mzscheme/include/mzscheme3m.exp @@ -434,6 +434,7 @@ scheme_host_address_strerror scheme_getnameinfo scheme_get_port_file_descriptor scheme_get_port_socket +scheme_socket_to_ports scheme_set_type_printer scheme_print_bytes scheme_print_utf8 diff --git a/src/mzscheme/include/mzwin.def b/src/mzscheme/include/mzwin.def index 4858b24e8d..2da54f92d7 100644 --- a/src/mzscheme/include/mzwin.def +++ b/src/mzscheme/include/mzwin.def @@ -415,6 +415,7 @@ EXPORTS scheme_getnameinfo scheme_get_port_file_descriptor scheme_get_port_socket + scheme_socket_to_ports scheme_set_type_printer scheme_print_bytes scheme_print_utf8 diff --git a/src/mzscheme/include/mzwin3m.def b/src/mzscheme/include/mzwin3m.def index d1ccf29f69..68dadd27b2 100644 --- a/src/mzscheme/include/mzwin3m.def +++ b/src/mzscheme/include/mzwin3m.def @@ -426,6 +426,7 @@ EXPORTS scheme_getnameinfo scheme_get_port_file_descriptor scheme_get_port_socket + scheme_socket_to_ports scheme_set_type_printer scheme_print_bytes scheme_print_utf8 diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index b60ca151f1..d2d7a9193a 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -1048,6 +1048,10 @@ typedef struct Scheme_Thread { Scheme_Object *transitive_resumes; /* A hash table of running-boxes */ Scheme_Object *name; + +#ifdef MZ_PRECISE_GC + int gc_owner_set; +#endif } Scheme_Thread; #if !SCHEME_DIRECT_EMBEDDED diff --git a/src/mzscheme/src/bignum.c b/src/mzscheme/src/bignum.c index 6a69d5fff9..90326cd586 100644 --- a/src/mzscheme/src/bignum.c +++ b/src/mzscheme/src/bignum.c @@ -582,7 +582,11 @@ static bigdig* allocate_bigdig_array(int length) { int i; bigdig* res; - res = (bigdig *)scheme_malloc_atomic(length * sizeof(bigdig)); + if (length > 4096) { + res = (bigdig *)scheme_malloc_fail_ok(scheme_malloc_atomic, length * sizeof(bigdig)); + } else { + res = (bigdig *)scheme_malloc_atomic(length * sizeof(bigdig)); + } for(i = 0; i < length; ++i) { res[i] = 0; } diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index e98e7d64c8..b74f0b8be2 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,5 +1,5 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,22,0,0,0,1,0,0,3,0,15,0,25,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,22,0,0,0,1,0,0,3,0,15,0,25,0, 37,0,47,0,57,0,65,0,73,0,83,0,95,0,110,0,124,0,132,0,142, 0,153,0,165,0,180,0,185,0,193,0,34,1,110,1,0,0,36,8,0,0, 29,11,11,71,105,100,101,110,116,105,102,105,101,114,63,69,115,116,120,45,110, @@ -105,7 +105,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 2147); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,106,0,0,0,1,0,0,3,0,13,0,20,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,106,0,0,0,1,0,0,3,0,13,0,20,0, 24,0,27,0,31,0,42,0,47,0,53,0,65,0,76,0,85,0,88,0,94, 0,105,0,119,0,129,0,133,0,143,0,153,0,156,0,164,0,181,0,189,0, 200,0,207,0,212,0,222,0,224,0,234,0,240,0,245,0,255,0,5,1,15, @@ -352,7 +352,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 5121); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,45,0,0,0,1,0,0,6,0,9,0,14,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,45,0,0,0,1,0,0,6,0,9,0,14,0, 19,0,25,0,30,0,42,0,52,0,62,0,72,0,77,0,83,0,93,0,104, 0,108,0,111,0,120,0,126,0,143,0,153,0,160,0,181,0,197,0,217,0, 239,0,255,0,9,1,20,1,38,1,68,1,88,1,102,1,109,1,139,1,145, @@ -422,7 +422,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 1404); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,11,0,0,0,1,0,0,3,0,18,0,24,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,11,0,0,0,1,0,0,3,0,18,0,24,0, 36,0,49,0,69,0,97,0,123,0,149,0,174,0,0,0,50,4,0,0,29, 11,11,74,105,100,101,110,116,105,102,105,101,114,47,35,102,63,65,35,37,115, 116,120,71,105,100,47,35,102,45,108,105,115,116,63,72,115,116,114,117,99,116, @@ -479,8 +479,8 @@ EVAL_ONE_SIZED_STR((char *)expr, 1115); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,7,0,0,0,1,0,0,3,0,25,0,38,0, -52,0,145,0,12,1,0,0,183,4,0,0,29,11,11,1,20,108,105,115,116, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,7,0,0,0,1,0,0,3,0,25,0,38,0, +52,0,145,0,12,1,0,0,184,4,0,0,29,11,11,1,20,108,105,115,116, 45,62,105,109,109,117,116,97,98,108,101,45,108,105,115,116,72,103,101,116,45, 115,116,120,45,105,110,102,111,73,35,37,115,116,114,117,99,116,45,105,110,102, 111,32,5,89,162,34,35,43,71,101,118,101,114,121,45,111,116,104,101,114,222, @@ -526,23 +526,23 @@ 32,0,89,162,34,35,37,64,119,114,97,112,222,249,22,57,74,108,105,115,116, 45,105,109,109,117,116,97,98,108,101,194,22,7,90,161,35,38,11,28,206,89, 162,8,36,35,42,70,116,111,116,97,108,45,119,114,97,112,223,9,250,22,65, -63,108,101,116,248,22,65,249,22,67,198,21,93,93,1,22,115,121,110,116,97, -120,45,108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,196,22,7,248, -197,248,197,253,22,66,248,23,17,248,22,58,23,23,248,23,17,248,22,84,23, -23,248,23,17,248,22,93,23,23,248,204,27,249,22,71,249,22,2,23,22,248, -2,5,23,17,204,28,248,22,63,193,9,249,22,62,248,22,58,195,27,248,22, -59,196,28,248,22,63,193,9,249,22,62,248,22,58,195,248,80,159,8,26,34, -35,248,22,59,196,248,204,27,249,22,71,249,22,2,23,22,28,248,22,63,23, -17,9,248,2,5,248,22,59,23,18,205,28,248,22,63,193,9,249,22,62,248, -22,58,195,27,248,22,59,196,28,248,22,63,193,9,249,22,62,248,22,58,195, -248,80,159,8,26,34,35,248,22,59,196,28,23,20,248,23,17,23,21,10,11, -80,159,34,35,35,97,68,35,37,107,101,114,110,101,108,65,35,37,115,116,120, -71,35,37,113,113,45,97,110,100,45,111,114,66,35,37,99,111,110,100,2,4, -9,0}; - EVAL_ONE_SIZED_STR((char *)expr, 1240); +63,108,101,116,248,22,65,249,22,67,198,21,93,94,1,22,115,121,110,116,97, +120,45,108,111,99,97,108,45,99,101,114,116,105,102,105,101,114,10,196,22,7, +248,197,248,197,253,22,66,248,23,17,248,22,58,23,23,248,23,17,248,22,84, +23,23,248,23,17,248,22,93,23,23,248,204,27,249,22,71,249,22,2,23,22, +248,2,5,23,17,204,28,248,22,63,193,9,249,22,62,248,22,58,195,27,248, +22,59,196,28,248,22,63,193,9,249,22,62,248,22,58,195,248,80,159,8,26, +34,35,248,22,59,196,248,204,27,249,22,71,249,22,2,23,22,28,248,22,63, +23,17,9,248,2,5,248,22,59,23,18,205,28,248,22,63,193,9,249,22,62, +248,22,58,195,27,248,22,59,196,28,248,22,63,193,9,249,22,62,248,22,58, +195,248,80,159,8,26,34,35,248,22,59,196,28,23,20,248,23,17,23,21,10, +11,80,159,34,35,35,97,68,35,37,107,101,114,110,101,108,65,35,37,115,116, +120,71,35,37,113,113,45,97,110,100,45,111,114,66,35,37,99,111,110,100,2, +4,9,0}; + EVAL_ONE_SIZED_STR((char *)expr, 1241); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,74,0,0,0,1,0,0,6,0,9,0,14,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,74,0,0,0,1,0,0,6,0,9,0,14,0, 21,0,29,0,43,0,50,0,65,0,75,0,82,0,88,0,100,0,105,0,117, 0,131,0,138,0,143,0,148,0,162,0,178,0,180,0,182,0,185,0,195,0, 205,0,216,0,221,0,227,0,232,0,239,0,246,0,252,0,24,1,51,1,64, @@ -703,7 +703,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 3304); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,17,0,0,0,1,0,0,4,0,9,0,14,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,17,0,0,0,1,0,0,4,0,9,0,14,0, 19,0,26,0,33,0,44,0,58,0,65,0,73,0,88,0,92,0,95,0,107, 0,122,0,129,0,0,0,48,1,0,0,63,108,101,116,64,108,101,116,42,64, 119,104,101,110,64,99,111,110,100,66,108,101,116,114,101,99,66,117,110,108,101, @@ -724,7 +724,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 357); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,116,0,0,0,1,0,0,3,0,8,0,17,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,116,0,0,0,1,0,0,3,0,8,0,17,0, 22,0,31,0,44,0,58,0,75,0,104,0,114,0,120,0,128,0,136,0,159, 0,176,0,182,0,192,0,196,0,207,0,219,0,231,0,246,0,5,1,18,1, 35,1,48,1,63,1,74,1,85,1,103,1,128,1,146,1,155,1,168,1,191, @@ -1408,335 +1408,337 @@ EVAL_ONE_SIZED_STR((char *)expr, 14287); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,139,0,0,0,1,0,0,3,0,31,0,53,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,143,0,0,0,1,0,0,3,0,31,0,53,0, 62,0,78,0,104,0,111,0,125,0,144,0,149,0,153,0,158,0,164,0,171, 0,175,0,180,0,186,0,193,0,202,0,212,0,218,0,223,0,238,0,243,0, 253,0,7,1,14,1,16,1,36,1,41,1,50,1,54,1,56,1,58,1,68, -1,78,1,83,1,93,1,107,1,111,1,124,1,132,1,142,1,159,1,169,1, -182,1,192,1,204,1,209,1,220,1,230,1,233,1,245,1,254,1,8,2,18, -2,27,2,37,2,47,2,57,2,69,2,78,2,212,2,90,3,102,3,114,3, -128,3,144,3,158,3,164,3,186,3,236,3,76,4,137,4,221,4,0,5,58, -5,74,5,90,5,106,5,126,5,154,5,190,5,225,5,244,5,250,5,0,6, -26,6,32,6,68,6,84,6,127,6,167,6,215,6,234,6,26,7,42,7,58, -7,91,7,97,7,103,7,109,7,115,7,133,7,145,7,182,7,188,7,194,7, -200,7,206,7,212,7,218,7,224,7,230,7,34,8,40,8,46,8,74,8,140, -8,164,8,170,8,176,8,241,8,247,8,253,8,81,9,186,9,202,9,247,9, -18,10,44,10,60,10,68,10,93,10,196,10,202,10,213,10,66,11,0,0,123, -25,0,0,29,11,11,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120, -45,111,98,106,101,99,116,47,115,104,97,112,101,1,20,99,97,116,99,104,45, -101,108,108,105,112,115,105,115,45,101,114,114,111,114,68,35,37,112,97,114,97, -109,122,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,1,24,97, -112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117, -116,101,66,115,121,110,116,97,120,73,115,121,110,116,97,120,45,99,97,115,101, -42,42,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101, -64,108,111,111,112,63,99,97,114,64,99,97,100,114,65,99,97,100,100,114,66, -99,97,100,100,100,114,63,99,100,114,64,99,100,100,114,65,99,100,100,100,114, -66,99,100,100,100,100,114,68,108,105,115,116,45,114,101,102,69,108,105,115,116, -45,116,97,105,108,65,35,37,115,116,120,64,104,101,114,101,74,35,37,115,109, -97,108,108,45,115,99,104,101,109,101,64,35,37,115,99,3,1,7,101,110,118, -50,56,53,50,3,1,7,101,110,118,50,56,53,51,66,108,97,109,98,100,97, -61,101,79,109,111,100,117,108,101,45,105,100,101,110,116,105,102,105,101,114,61, -63,64,116,97,105,108,68,116,114,121,45,110,101,120,116,63,97,114,103,61,120, -61,108,3,1,7,101,110,118,50,56,55,56,3,1,7,101,110,118,50,56,56, -50,64,114,115,108,116,3,1,7,101,110,118,50,56,56,54,73,112,97,116,116, -101,114,110,45,118,97,114,115,115,63,108,101,116,72,113,117,111,116,101,45,115, -121,110,116,97,120,67,112,97,116,116,101,114,110,3,1,7,101,110,118,50,56, -57,49,76,116,97,105,108,45,112,97,116,116,101,114,110,45,118,97,114,69,116, -101,109,112,45,118,97,114,115,72,112,97,116,116,101,114,110,45,118,97,114,115, -3,1,7,101,110,118,50,56,57,57,71,100,111,45,116,114,121,45,110,101,120, -116,64,109,116,99,104,70,99,97,110,116,45,102,97,105,108,63,3,1,7,101, -110,118,50,57,48,52,62,105,102,71,112,97,116,116,101,114,110,45,118,97,114, -68,116,101,109,112,45,118,97,114,3,1,7,101,110,118,50,57,48,53,3,1, -7,101,110,118,50,57,48,56,68,104,101,114,101,45,115,116,120,3,1,7,101, -110,118,50,57,49,52,3,1,7,101,110,118,50,57,50,54,3,1,7,101,110, -118,50,57,51,53,71,112,97,114,101,110,45,115,104,97,112,101,68,35,37,107, -101,114,110,101,108,32,63,89,162,8,64,36,44,2,10,222,28,248,22,63,194, -9,28,250,22,122,195,248,22,153,3,248,22,58,198,11,27,248,22,86,195,28, -248,22,63,193,9,28,250,22,122,196,248,22,153,3,248,22,58,197,11,249,2, -63,195,248,22,86,195,249,22,57,248,22,58,195,249,2,63,197,248,22,86,197, -249,22,57,248,22,58,196,27,248,22,86,197,28,248,22,63,193,9,28,250,22, -122,198,248,22,153,3,248,22,58,197,11,249,2,63,197,248,22,86,195,249,22, -57,248,22,58,195,249,2,63,199,248,22,86,197,32,64,89,162,8,64,36,44, -2,10,222,28,248,22,63,194,9,28,250,22,122,195,248,22,153,3,248,22,58, -198,11,27,248,22,86,195,28,248,22,63,193,9,28,250,22,122,196,248,22,153, -3,248,22,58,197,11,249,2,64,195,248,22,86,195,249,22,57,248,22,84,195, -249,2,64,197,248,22,86,197,249,22,57,248,22,84,196,27,248,22,86,197,28, -248,22,63,193,9,28,250,22,122,198,248,22,153,3,248,22,58,197,11,249,2, -64,197,248,22,86,195,249,22,57,248,22,84,195,249,2,64,199,248,22,86,197, -30,2,21,67,115,116,120,45,99,97,114,5,30,2,21,67,115,116,120,45,99, -100,114,6,30,2,21,69,115,116,120,45,62,108,105,115,116,4,30,2,21,71, -105,100,101,110,116,105,102,105,101,114,63,2,30,2,21,69,115,116,120,45,112, -97,105,114,63,11,95,8,193,11,16,0,97,10,35,11,95,159,2,24,9,11, -159,2,23,9,11,159,2,21,9,11,16,0,97,10,34,11,95,159,2,4,9, -11,159,2,23,9,11,159,2,21,9,11,16,14,2,2,2,1,2,6,2,1, -2,7,2,1,2,3,2,1,2,9,2,1,2,5,2,1,2,8,2,1,18, -100,2,22,8,72,8,71,8,70,16,4,11,11,63,115,116,120,3,1,7,101, -110,118,50,56,53,49,16,6,11,11,63,112,97,116,64,115,117,98,115,2,25, -2,25,16,6,11,11,69,104,116,45,99,111,109,109,111,110,66,104,116,45,109, -97,112,2,26,2,26,16,4,11,11,71,110,101,119,45,112,97,116,116,101,114, -110,3,1,7,101,110,118,50,56,54,49,32,74,89,162,8,100,35,40,2,10, -222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27, -248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3, -193,192,248,2,74,248,22,58,194,32,75,89,162,8,100,36,45,2,10,222,28, -248,22,149,3,193,193,27,248,22,58,194,27,248,22,177,2,196,28,248,22,149, -3,194,192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192, -27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192,249,2,75, -248,22,58,196,248,22,177,2,195,16,8,11,11,68,112,97,116,116,101,114,110, -115,67,102,101,110,100,101,114,115,67,97,110,115,119,101,114,115,2,36,2,36, -2,36,16,14,11,11,63,119,104,111,71,97,114,103,45,105,115,45,115,116,120, -63,64,101,120,112,114,63,107,119,115,68,108,105,116,45,99,111,109,112,67,99, -108,97,117,115,101,115,2,35,2,35,2,35,2,35,2,35,2,35,16,4,11, -11,2,34,3,1,7,101,110,118,50,56,55,55,16,4,11,11,2,34,3,1, -7,101,110,118,50,56,55,53,16,4,11,11,2,33,3,1,7,101,110,118,50, -56,55,51,18,101,2,32,8,72,8,71,8,70,8,80,8,79,8,78,8,77, -8,76,18,102,2,37,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8, -76,16,4,11,11,2,32,2,38,18,102,2,29,8,72,8,71,8,70,8,80, -8,79,8,78,8,77,8,76,16,8,11,11,2,32,2,37,2,39,2,38,2, -38,2,38,16,10,11,11,2,32,2,37,2,39,76,108,105,116,45,99,111,109, -112,45,105,115,45,109,111,100,63,2,38,2,38,2,38,2,38,101,8,72,8, -71,8,70,8,80,8,79,8,78,8,77,8,76,8,84,18,158,2,22,8,85, -18,158,2,40,8,85,18,158,1,20,100,97,116,117,109,45,62,115,121,110,116, -97,120,45,111,98,106,101,99,116,8,85,18,158,2,41,8,85,16,4,11,11, -1,20,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,115, -115,3,1,7,101,110,118,50,56,56,57,16,4,11,11,2,10,3,1,7,101, -110,118,50,56,56,56,18,104,78,114,97,105,115,101,45,115,121,110,116,97,120, -45,101,114,114,111,114,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8, -76,8,84,8,91,8,90,16,8,11,11,2,44,2,45,2,46,3,1,7,101, -110,118,50,56,57,55,3,1,7,101,110,118,50,56,57,53,3,1,7,101,110, -118,50,56,57,51,16,10,11,11,2,42,66,102,101,110,100,101,114,79,117,110, -102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,115,66,97,110,115, -119,101,114,2,43,2,43,2,43,2,43,16,4,11,11,64,114,101,115,116,3, -1,7,101,110,118,50,56,57,48,18,108,2,31,8,72,8,71,8,70,8,80, -8,79,8,78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,16, -8,11,11,2,44,2,45,2,46,2,47,2,47,2,47,16,8,11,11,2,48, -2,49,2,50,2,51,2,51,2,51,16,8,11,11,2,44,2,45,2,46,2, -47,2,47,2,47,108,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8, -76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,18,158,2,40, -8,99,18,158,2,22,8,99,18,158,2,52,8,99,18,158,2,40,8,99,16, -4,11,11,63,112,111,115,3,1,7,101,110,118,50,57,48,54,16,6,11,11, -2,53,2,54,2,55,2,55,110,8,72,8,71,8,70,8,80,8,79,8,78, -8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,8, -105,8,104,18,158,2,15,8,106,18,158,2,16,8,106,18,158,2,17,8,106, -18,158,2,18,8,106,18,158,2,11,8,106,18,158,2,12,8,106,18,158,2, -13,8,106,18,158,2,14,8,106,111,8,72,8,71,8,70,8,80,8,79,8, -78,8,77,8,76,8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97, -8,105,8,104,16,4,11,11,68,97,99,99,101,115,115,111,114,3,1,7,101, -110,118,50,57,48,55,18,158,2,20,8,115,18,158,2,19,8,115,18,158,1, -22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97,108,117, -101,115,8,99,109,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8,76, -8,84,8,91,8,90,8,95,8,94,8,93,8,98,8,97,16,8,11,11,2, -53,78,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118,97,114,2, -54,2,56,2,56,2,56,18,158,79,109,97,107,101,45,115,121,110,116,97,120, -45,109,97,112,112,105,110,103,8,119,18,158,2,41,8,119,18,158,2,52,8, -99,108,8,72,8,71,8,70,8,80,8,79,8,78,8,77,8,76,8,84,8, -91,8,90,8,95,8,94,8,93,16,8,11,11,2,44,2,45,2,46,2,47, -2,47,2,47,16,10,11,11,2,48,2,49,2,50,61,109,2,51,2,51,2, -51,2,51,18,158,2,40,8,123,18,158,2,27,8,123,32,126,89,162,8,64, -36,45,2,10,222,28,248,22,129,3,194,192,27,248,22,65,194,27,248,22,178, -2,196,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28, -248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129, -3,193,193,249,2,126,248,22,65,196,248,22,178,2,195,32,127,89,162,8,64, -36,46,2,10,222,28,248,22,63,194,9,27,27,248,22,59,195,27,248,22,59, -197,28,248,22,63,193,9,27,27,248,22,59,196,27,248,22,59,196,28,248,22, -63,193,9,27,249,2,127,248,22,59,197,248,22,59,196,28,248,22,58,194,192, -249,22,57,248,22,58,197,194,28,248,22,58,194,192,249,22,57,248,22,58,197, -194,28,248,22,58,195,192,249,22,57,248,22,58,196,194,16,4,11,11,2,33, -3,1,7,101,110,118,50,57,49,50,18,100,2,22,8,72,8,71,8,70,8, -128,2,16,4,11,11,2,57,2,58,16,4,11,11,2,57,2,58,16,4,11, -11,2,57,3,1,7,101,110,118,50,57,49,54,16,4,11,11,72,118,97,114, -45,98,105,110,100,105,110,103,115,3,1,7,101,110,118,50,57,50,48,16,4, -11,11,71,117,110,105,113,117,101,45,118,97,114,115,3,1,7,101,110,118,50, -57,49,57,16,4,11,11,2,42,3,1,7,101,110,118,50,57,49,56,16,4, -11,11,2,57,2,58,18,101,2,41,8,72,8,71,8,70,8,128,2,8,133, -2,8,132,2,8,131,2,8,130,2,103,8,72,8,71,8,70,8,128,2,8, -133,2,8,132,2,8,131,2,8,130,2,16,6,11,11,67,112,114,111,116,111, -45,114,76,110,111,110,45,112,97,116,116,101,114,110,45,118,97,114,115,2,59, -2,59,16,6,11,11,79,98,117,105,108,100,45,102,114,111,109,45,116,101,109, -112,108,97,116,101,61,114,2,60,2,60,16,4,11,11,63,108,101,110,3,1, -7,101,110,118,50,57,51,56,18,158,9,8,135,2,18,158,65,108,105,115,116, -42,8,135,2,32,138,2,89,162,8,64,37,45,65,115,108,111,111,112,222,28, -248,22,63,194,192,28,249,22,148,8,194,248,22,58,196,248,22,58,195,27,248, -22,59,195,27,248,22,59,197,28,248,22,63,194,194,28,249,22,148,8,196,248, -22,58,196,248,22,58,193,27,248,22,59,195,27,248,22,59,195,28,248,22,63, -194,196,28,249,22,148,8,198,248,22,58,196,248,22,58,193,250,2,138,2,199, -248,22,59,197,248,22,59,196,159,34,20,99,159,34,16,1,20,24,65,98,101, -103,105,110,16,0,83,158,40,20,96,114,69,35,37,115,116,120,99,97,115,101, -2,1,10,10,10,34,80,158,34,34,20,99,159,34,16,5,30,2,1,2,2, -193,30,2,1,2,3,193,30,2,4,1,21,101,120,99,101,112,116,105,111,110, -45,104,97,110,100,108,101,114,45,107,101,121,2,30,2,1,2,5,193,30,2, -1,2,6,193,16,0,11,11,16,4,2,6,2,3,2,2,2,5,38,11,16, -2,2,7,2,8,16,2,11,11,16,2,2,7,2,8,34,36,95,16,5,93, -2,9,87,94,83,158,34,16,2,89,162,8,100,37,45,2,10,223,0,28,248, -22,63,196,12,87,94,27,248,22,153,3,248,22,58,198,27,248,22,84,198,28, -28,248,80,158,37,37,193,10,28,248,80,158,37,38,193,28,249,22,77,248,22, -153,3,248,80,158,40,34,196,21,102,2,11,2,12,2,13,2,14,2,15,2, -16,2,17,2,18,2,19,2,20,28,248,80,158,37,38,248,80,158,38,35,194, -248,80,158,37,37,248,80,158,38,34,248,80,158,39,35,195,11,11,11,27,248, -22,151,3,194,27,250,22,122,200,196,11,28,192,250,22,121,201,198,195,250,22, -121,200,196,198,12,250,80,159,37,41,35,196,197,248,22,86,199,80,159,34,41, -35,89,162,8,36,35,56,9,223,0,27,248,80,158,36,34,248,80,158,37,35, -196,27,248,80,158,37,36,248,80,158,38,35,248,80,158,39,35,198,27,248,22, -116,65,101,113,117,97,108,27,247,22,116,87,94,250,80,159,41,41,35,196,195, -197,27,28,248,22,129,3,248,22,119,195,196,91,159,35,11,20,12,95,35,248, -193,198,89,162,8,64,35,42,2,10,224,2,0,28,248,22,56,195,27,248,194, -248,22,58,197,27,248,195,248,22,59,198,28,28,249,22,148,8,195,248,22,58, -199,249,22,148,8,194,248,22,59,199,11,196,249,22,57,195,194,28,248,22,47, -195,27,250,22,122,197,198,11,28,192,192,195,28,248,22,149,3,195,27,248,194, -248,22,153,3,197,28,249,22,148,8,248,22,153,3,198,194,195,251,22,152,3, -199,196,199,199,28,248,22,166,7,195,248,22,174,7,249,22,2,195,248,22,173, -7,198,28,248,22,113,195,248,22,111,248,194,248,22,114,197,194,250,22,152,3, -20,15,159,42,34,39,251,22,67,2,6,199,249,22,65,65,113,117,111,116,101, -28,248,22,63,205,9,28,250,22,122,205,248,22,153,3,248,22,58,23,17,11, -249,2,63,204,248,22,86,23,15,249,22,57,248,22,58,23,15,249,2,63,206, -248,22,86,23,17,28,248,22,63,203,9,28,250,22,122,203,248,22,153,3,248, -22,58,23,15,11,249,2,64,202,248,22,86,205,249,22,57,248,22,84,205,249, -2,64,204,248,22,86,23,15,201,34,20,99,159,35,16,5,2,65,2,66,2, -67,2,68,2,69,16,1,33,73,11,16,5,93,2,8,87,97,83,158,34,16, -2,89,162,8,36,44,8,41,2,10,223,0,28,248,22,63,200,251,22,65,20, -15,159,38,41,43,11,6,10,10,98,97,100,32,115,121,110,116,97,120,197,27, -26,10,80,159,45,8,41,35,204,205,206,23,15,23,16,23,17,248,22,59,23, -19,248,22,59,23,20,248,22,59,23,21,248,22,59,23,22,27,248,22,58,202, -27,248,22,58,204,27,248,22,58,206,27,248,22,58,23,16,91,159,37,10,90, -161,35,34,10,249,22,2,32,0,89,162,8,36,35,40,9,222,28,248,22,149, -3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28, -248,22,149,3,193,192,248,2,74,248,22,58,194,198,90,161,35,35,10,249,22, -2,32,0,89,162,8,36,35,38,9,222,250,22,152,3,195,247,22,54,11,209, -90,161,35,36,10,248,22,178,2,248,22,70,209,27,28,248,22,58,23,18,248, -22,65,20,15,159,44,42,43,200,27,252,80,158,49,41,23,19,205,205,248,80, -158,50,35,23,21,248,22,146,8,23,19,27,28,206,249,22,150,8,195,21,95, -2,27,93,2,28,2,28,249,22,150,8,195,21,95,2,27,94,2,28,2,29, -2,28,27,250,22,65,20,15,159,49,43,43,248,22,65,249,22,65,23,20,28, -199,23,19,250,22,67,250,22,152,3,20,15,159,58,44,43,206,23,22,23,22, -28,23,24,9,248,22,65,23,28,251,22,65,20,15,159,53,45,43,28,200,10, -23,21,250,22,65,20,15,159,56,46,43,250,22,2,89,162,8,36,36,47,9, -226,25,27,19,17,249,22,65,199,27,249,80,158,42,42,201,212,27,28,249,22, -188,2,214,195,28,249,22,148,8,195,34,2,30,28,249,22,148,8,195,35,20, -15,159,41,47,43,28,249,22,148,8,195,36,20,15,159,41,48,43,28,249,22, -148,8,195,37,20,15,159,41,49,43,28,249,22,148,8,195,38,20,15,159,41, -50,43,2,30,28,249,22,148,8,195,34,20,15,159,41,51,43,28,249,22,148, -8,195,35,20,15,159,41,52,43,28,249,22,148,8,195,36,20,15,159,41,53, -43,28,249,22,148,8,195,37,20,15,159,41,54,43,11,28,249,22,148,8,194, -2,30,28,248,22,129,3,194,198,250,22,65,20,15,159,44,55,43,201,196,28, -192,249,22,65,194,200,250,22,65,20,15,159,44,56,43,201,196,24,17,24,18, -251,22,65,20,15,159,8,26,57,43,251,22,2,80,159,8,30,8,42,35,24, -22,23,26,24,23,9,28,23,23,251,22,65,20,15,159,8,30,8,26,43,23, -27,23,25,23,21,23,21,202,28,201,250,22,65,20,15,159,49,8,27,43,248, -22,65,249,22,65,2,31,250,22,65,20,15,159,55,8,28,43,247,22,65,23, -20,195,192,80,159,34,8,41,35,83,158,34,16,2,89,162,8,36,37,49,9, -223,0,249,22,65,248,22,65,196,250,22,65,20,15,159,39,58,43,28,248,22, -149,3,200,34,27,248,22,58,201,28,248,22,149,3,193,35,27,248,22,58,194, -28,248,22,149,3,193,36,249,2,75,248,22,58,195,37,249,22,65,20,15,159, -41,59,43,202,80,159,34,8,42,35,83,158,34,16,2,89,162,34,35,39,9, -223,0,27,248,80,158,36,39,248,80,158,37,39,196,28,248,80,158,36,38,193, -248,80,158,36,37,193,248,80,158,36,37,248,80,158,37,39,196,80,159,34,8, -40,35,83,158,34,16,2,89,162,34,35,39,9,223,0,28,248,80,158,35,38, -248,80,158,36,39,248,80,158,37,39,196,248,80,158,35,37,248,80,158,36,39, -195,11,80,159,34,8,39,35,89,162,8,36,35,8,33,9,223,0,91,159,35, -10,90,161,35,34,10,28,248,80,158,36,34,195,248,22,59,248,80,158,37,35, -196,11,87,94,28,28,248,80,158,36,34,195,249,22,190,2,248,22,70,210,37, -11,12,250,22,176,8,11,6,8,8,98,97,100,32,102,111,114,109,197,27,248, -22,58,209,27,248,22,84,210,27,248,22,93,211,27,248,22,96,212,27,248,22, -96,248,22,59,214,27,248,22,95,248,22,59,215,87,96,28,248,80,158,42,34, -195,12,250,22,176,8,248,22,153,3,201,6,56,56,101,120,112,101,99,116,101, -100,32,97,32,112,97,114,101,110,116,104,101,115,105,122,101,100,32,115,101,113, -117,101,110,99,101,32,111,102,32,108,105,116,101,114,97,108,32,105,100,101,110, -116,105,102,105,101,114,115,197,249,22,3,89,162,34,35,41,9,224,9,7,28, -248,80,158,36,36,195,12,250,22,176,8,248,22,153,3,196,6,28,28,108,105, -116,101,114,97,108,32,105,115,32,110,111,116,32,97,110,32,105,100,101,110,116, -105,102,105,101,114,197,248,80,158,44,35,197,249,22,3,89,162,34,35,42,9, -224,9,7,28,28,248,80,158,36,34,195,250,22,191,2,36,248,22,70,248,80, -158,40,35,199,37,11,12,250,22,176,8,248,22,153,3,196,6,10,10,98,97, -100,32,99,108,97,117,115,101,197,194,27,249,22,2,80,158,44,37,195,27,249, -22,2,80,159,45,8,39,35,196,27,249,22,2,80,159,46,8,40,35,197,27, -20,15,159,45,34,43,27,20,15,159,46,35,43,27,249,22,2,89,162,34,35, -43,9,225,15,10,13,251,80,158,40,40,196,199,199,248,80,158,41,35,198,248, -80,158,50,35,200,27,28,248,80,158,49,36,201,249,22,166,3,202,20,15,159, -50,36,43,11,250,22,152,3,20,15,159,51,37,43,250,22,65,20,15,159,54, -38,43,248,22,65,249,22,65,204,28,248,22,153,3,23,21,23,19,250,22,65, -20,15,159,8,26,39,43,249,22,65,20,15,159,8,28,40,43,249,22,152,3, -23,26,2,22,23,22,26,10,80,159,8,30,8,41,35,23,19,23,18,23,16, -23,28,23,25,23,24,23,22,23,21,23,17,23,20,23,18,34,20,99,159,38, -16,9,30,2,21,69,115,116,120,45,108,105,115,116,63,8,2,67,2,68,2, -65,2,69,2,66,30,2,24,74,103,101,116,45,109,97,116,99,104,45,118,97, -114,115,0,30,2,24,74,109,97,107,101,45,109,97,116,99,104,38,101,110,118, -1,30,2,24,72,115,116,120,45,109,101,109,113,45,112,111,115,5,16,29,33, -81,33,82,33,83,33,86,33,87,33,88,33,89,33,92,33,96,33,100,33,101, -33,102,33,103,33,107,33,108,33,109,33,110,33,111,33,112,33,113,33,114,33, -116,33,117,33,118,33,120,33,121,33,122,33,124,33,125,11,16,5,93,2,7, -87,96,83,158,34,16,2,89,162,8,64,37,50,2,10,223,0,28,248,22,63, -196,9,28,248,22,58,196,249,22,57,250,22,152,3,248,22,58,200,248,22,153, -3,248,80,158,41,42,248,22,58,203,198,27,248,22,59,198,27,248,22,59,200, -28,248,22,63,193,9,28,248,22,58,193,249,22,57,250,22,152,3,248,22,58, -199,248,22,153,3,248,80,158,45,42,248,22,58,200,202,250,80,159,43,51,35, -202,248,22,59,199,248,22,59,198,250,80,159,41,51,35,200,248,22,59,197,248, -22,59,196,27,248,22,59,196,27,248,22,59,198,28,248,22,63,193,9,28,248, +1,77,1,85,1,93,1,103,1,108,1,118,1,132,1,136,1,149,1,159,1, +167,1,177,1,194,1,204,1,217,1,227,1,239,1,244,1,255,1,9,2,12, +2,24,2,33,2,43,2,53,2,62,2,72,2,82,2,92,2,104,2,113,2, +247,2,125,3,137,3,149,3,163,3,179,3,193,3,199,3,221,3,15,4,111, +4,172,4,0,5,16,5,74,5,90,5,106,5,122,5,142,5,170,5,206,5, +241,5,4,6,10,6,16,6,42,6,48,6,88,6,104,6,147,6,187,6,235, +6,254,6,46,7,62,7,78,7,111,7,117,7,123,7,129,7,135,7,153,7, +165,7,202,7,208,7,214,7,220,7,226,7,232,7,238,7,244,7,250,7,54, +8,60,8,66,8,94,8,160,8,184,8,190,8,196,8,5,9,11,9,17,9, +103,9,210,9,226,9,15,10,42,10,68,10,84,10,92,10,117,10,220,10,226, +10,237,10,90,11,0,0,151,25,0,0,29,11,11,1,26,100,97,116,117,109, +45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112,101, +1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111, +114,68,35,37,112,97,114,97,109,122,75,115,117,98,115,116,105,116,117,116,101, +45,115,116,111,112,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45, +115,117,98,115,116,105,116,117,116,101,66,115,121,110,116,97,120,73,115,121,110, +116,97,120,45,99,97,115,101,42,42,78,112,97,116,116,101,114,110,45,115,117, +98,115,116,105,116,117,116,101,64,108,111,111,112,63,99,97,114,64,99,97,100, +114,65,99,97,100,100,114,66,99,97,100,100,100,114,63,99,100,114,64,99,100, +100,114,65,99,100,100,100,114,66,99,100,100,100,100,114,68,108,105,115,116,45, +114,101,102,69,108,105,115,116,45,116,97,105,108,65,35,37,115,116,120,64,104, +101,114,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,64,35,37, +115,99,3,1,7,101,110,118,50,56,53,50,3,1,7,101,110,118,50,56,53, +51,66,108,97,109,98,100,97,61,101,79,109,111,100,117,108,101,45,105,100,101, +110,116,105,102,105,101,114,61,63,64,116,97,105,108,68,116,114,121,45,110,101, +120,116,63,97,114,103,61,120,61,108,3,1,7,101,110,118,50,56,55,56,68, +112,97,116,116,101,114,110,115,67,102,101,110,100,101,114,115,67,97,110,115,119, +101,114,115,3,1,7,101,110,118,50,56,56,50,64,114,115,108,116,3,1,7, +101,110,118,50,56,56,54,73,112,97,116,116,101,114,110,45,118,97,114,115,115, +63,108,101,116,72,113,117,111,116,101,45,115,121,110,116,97,120,3,1,7,101, +110,118,50,56,56,57,67,112,97,116,116,101,114,110,3,1,7,101,110,118,50, +56,57,49,76,116,97,105,108,45,112,97,116,116,101,114,110,45,118,97,114,69, +116,101,109,112,45,118,97,114,115,72,112,97,116,116,101,114,110,45,118,97,114, +115,3,1,7,101,110,118,50,56,57,57,71,100,111,45,116,114,121,45,110,101, +120,116,64,109,116,99,104,70,99,97,110,116,45,102,97,105,108,63,3,1,7, +101,110,118,50,57,48,52,62,105,102,71,112,97,116,116,101,114,110,45,118,97, +114,68,116,101,109,112,45,118,97,114,3,1,7,101,110,118,50,57,48,53,3, +1,7,101,110,118,50,57,48,56,68,104,101,114,101,45,115,116,120,3,1,7, +101,110,118,50,57,49,52,3,1,7,101,110,118,50,57,50,54,3,1,7,101, +110,118,50,57,51,53,71,112,97,114,101,110,45,115,104,97,112,101,68,35,37, +107,101,114,110,101,108,32,67,89,162,8,64,36,44,2,10,222,28,248,22,63, +194,9,28,250,22,122,195,248,22,153,3,248,22,58,198,11,27,248,22,86,195, +28,248,22,63,193,9,28,250,22,122,196,248,22,153,3,248,22,58,197,11,249, +2,67,195,248,22,86,195,249,22,57,248,22,58,195,249,2,67,197,248,22,86, +197,249,22,57,248,22,58,196,27,248,22,86,197,28,248,22,63,193,9,28,250, +22,122,198,248,22,153,3,248,22,58,197,11,249,2,67,197,248,22,86,195,249, +22,57,248,22,58,195,249,2,67,199,248,22,86,197,32,68,89,162,8,64,36, +44,2,10,222,28,248,22,63,194,9,28,250,22,122,195,248,22,153,3,248,22, +58,198,11,27,248,22,86,195,28,248,22,63,193,9,28,250,22,122,196,248,22, +153,3,248,22,58,197,11,249,2,68,195,248,22,86,195,249,22,57,248,22,84, +195,249,2,68,197,248,22,86,197,249,22,57,248,22,84,196,27,248,22,86,197, +28,248,22,63,193,9,28,250,22,122,198,248,22,153,3,248,22,58,197,11,249, +2,68,197,248,22,86,195,249,22,57,248,22,84,195,249,2,68,199,248,22,86, +197,30,2,21,67,115,116,120,45,99,97,114,5,30,2,21,67,115,116,120,45, +99,100,114,6,30,2,21,69,115,116,120,45,62,108,105,115,116,4,30,2,21, +71,105,100,101,110,116,105,102,105,101,114,63,2,30,2,21,69,115,116,120,45, +112,97,105,114,63,11,95,8,193,11,16,0,97,10,35,11,95,159,2,24,9, +11,159,2,23,9,11,159,2,21,9,11,16,0,97,10,34,11,95,159,2,4, +9,11,159,2,23,9,11,159,2,21,9,11,16,14,2,2,2,1,2,6,2, +1,2,7,2,1,2,3,2,1,2,9,2,1,2,5,2,1,2,8,2,1, +18,100,2,22,8,76,8,75,8,74,16,4,11,11,63,115,116,120,3,1,7, +101,110,118,50,56,53,49,16,6,11,11,63,112,97,116,64,115,117,98,115,2, +25,2,25,16,6,11,11,69,104,116,45,99,111,109,109,111,110,66,104,116,45, +109,97,112,2,26,2,26,16,4,11,11,71,110,101,119,45,112,97,116,116,101, +114,110,3,1,7,101,110,118,50,56,54,49,32,78,89,162,8,100,35,40,2, +10,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192, +27,248,22,58,194,28,248,22,149,3,193,192,27,248,22,58,194,28,248,22,149, +3,193,192,248,2,78,248,22,58,194,32,79,89,162,8,100,36,45,2,10,222, +28,248,22,149,3,193,193,27,248,22,58,194,27,248,22,177,2,196,28,248,22, +149,3,194,192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194, +192,27,248,22,58,195,27,248,22,177,2,195,28,248,22,149,3,194,192,249,2, +79,248,22,58,196,248,22,177,2,195,16,8,11,11,2,36,2,37,2,38,2, +39,2,39,2,39,16,14,11,11,63,119,104,111,71,97,114,103,45,105,115,45, +115,116,120,63,64,101,120,112,114,63,107,119,115,68,108,105,116,45,99,111,109, +112,67,99,108,97,117,115,101,115,2,35,2,35,2,35,2,35,2,35,2,35, +16,4,11,11,2,34,3,1,7,101,110,118,50,56,55,55,16,4,11,11,2, +34,3,1,7,101,110,118,50,56,55,53,16,4,11,11,2,33,3,1,7,101, +110,118,50,56,55,51,18,101,2,32,8,76,8,75,8,74,8,84,8,83,8, +82,8,81,8,80,18,102,2,40,8,76,8,75,8,74,8,84,8,83,8,82, +8,81,8,80,16,4,11,11,2,32,2,41,18,102,2,29,8,76,8,75,8, +74,8,84,8,83,8,82,8,81,8,80,16,8,11,11,2,32,2,40,2,42, +2,41,2,41,2,41,16,10,11,11,2,32,2,40,2,42,76,108,105,116,45, +99,111,109,112,45,105,115,45,109,111,100,63,2,41,2,41,2,41,2,41,101, +8,76,8,75,8,74,8,84,8,83,8,82,8,81,8,80,8,88,18,158,2, +22,8,89,18,158,2,43,8,89,18,158,1,20,100,97,116,117,109,45,62,115, +121,110,116,97,120,45,111,98,106,101,99,116,8,89,18,158,2,44,8,89,16, +10,11,11,2,36,2,37,1,20,117,110,102,108,97,116,45,112,97,116,116,101, +114,110,45,118,97,114,115,115,2,38,2,45,2,45,2,45,2,45,16,4,11, +11,2,10,3,1,7,101,110,118,50,56,56,56,18,104,78,114,97,105,115,101, +45,115,121,110,116,97,120,45,101,114,114,111,114,8,76,8,75,8,74,8,84, +8,83,8,82,8,81,8,80,8,88,8,95,8,94,16,8,11,11,2,48,2, +49,2,50,3,1,7,101,110,118,50,56,57,55,3,1,7,101,110,118,50,56, +57,53,3,1,7,101,110,118,50,56,57,51,16,10,11,11,2,46,66,102,101, +110,100,101,114,79,117,110,102,108,97,116,45,112,97,116,116,101,114,110,45,118, +97,114,115,66,97,110,115,119,101,114,2,47,2,47,2,47,2,47,16,4,11, +11,64,114,101,115,116,3,1,7,101,110,118,50,56,57,48,18,108,2,31,8, +76,8,75,8,74,8,84,8,83,8,82,8,81,8,80,8,88,8,95,8,94, +8,99,8,98,8,97,16,8,11,11,2,48,2,49,2,50,2,51,2,51,2, +51,16,8,11,11,2,52,2,53,2,54,2,55,2,55,2,55,16,8,11,11, +2,48,2,49,2,50,2,51,2,51,2,51,108,8,76,8,75,8,74,8,84, +8,83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8,98,8,97,8, +102,8,101,18,158,2,43,8,103,18,158,2,22,8,103,18,158,2,56,8,103, +18,158,2,43,8,103,16,4,11,11,63,112,111,115,3,1,7,101,110,118,50, +57,48,54,16,6,11,11,2,57,2,58,2,59,2,59,110,8,76,8,75,8, +74,8,84,8,83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8,98, +8,97,8,102,8,101,8,109,8,108,18,158,2,15,8,110,18,158,2,16,8, +110,18,158,2,17,8,110,18,158,2,18,8,110,18,158,2,11,8,110,18,158, +2,12,8,110,18,158,2,13,8,110,18,158,2,14,8,110,111,8,76,8,75, +8,74,8,84,8,83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8, +98,8,97,8,102,8,101,8,109,8,108,16,4,11,11,68,97,99,99,101,115, +115,111,114,3,1,7,101,110,118,50,57,48,55,18,158,2,20,8,119,18,158, +2,19,8,119,18,158,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120, +101,115,43,118,97,108,117,101,115,8,103,109,8,76,8,75,8,74,8,84,8, +83,8,82,8,81,8,80,8,88,8,95,8,94,8,99,8,98,8,97,8,102, +8,101,16,8,11,11,2,57,78,117,110,102,108,97,116,45,112,97,116,116,101, +114,110,45,118,97,114,2,58,2,60,2,60,2,60,18,158,79,109,97,107,101, +45,115,121,110,116,97,120,45,109,97,112,112,105,110,103,8,123,18,158,2,44, +8,123,18,158,2,56,8,103,108,8,76,8,75,8,74,8,84,8,83,8,82, +8,81,8,80,8,88,8,95,8,94,8,99,8,98,8,97,16,8,11,11,2, +48,2,49,2,50,2,51,2,51,2,51,16,10,11,11,2,52,2,53,2,54, +61,109,2,55,2,55,2,55,2,55,18,158,2,43,8,127,18,158,2,27,8, +127,32,130,2,89,162,8,64,36,45,2,10,222,28,248,22,129,3,194,192,27, +248,22,65,194,27,248,22,178,2,196,28,248,22,129,3,193,193,27,248,22,65, +195,27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248, +22,178,2,195,28,248,22,129,3,193,193,249,2,130,2,248,22,65,196,248,22, +178,2,195,32,131,2,89,162,8,64,36,46,2,10,222,28,248,22,63,194,9, +27,27,248,22,59,195,27,248,22,59,197,28,248,22,63,193,9,27,27,248,22, +59,196,27,248,22,59,196,28,248,22,63,193,9,27,249,2,131,2,248,22,59, +197,248,22,59,196,28,248,22,58,194,192,249,22,57,248,22,58,197,194,28,248, +22,58,194,192,249,22,57,248,22,58,197,194,28,248,22,58,195,192,249,22,57, +248,22,58,196,194,16,4,11,11,2,33,3,1,7,101,110,118,50,57,49,50, +18,100,2,22,8,76,8,75,8,74,8,132,2,16,4,11,11,2,61,2,62, +16,4,11,11,2,61,2,62,16,4,11,11,2,61,3,1,7,101,110,118,50, +57,49,54,16,4,11,11,72,118,97,114,45,98,105,110,100,105,110,103,115,3, +1,7,101,110,118,50,57,50,48,16,4,11,11,71,117,110,105,113,117,101,45, +118,97,114,115,3,1,7,101,110,118,50,57,49,57,16,4,11,11,2,46,3, +1,7,101,110,118,50,57,49,56,16,4,11,11,2,61,2,62,18,101,2,44, +8,76,8,75,8,74,8,132,2,8,137,2,8,136,2,8,135,2,8,134,2, +103,8,76,8,75,8,74,8,132,2,8,137,2,8,136,2,8,135,2,8,134, +2,16,6,11,11,67,112,114,111,116,111,45,114,76,110,111,110,45,112,97,116, +116,101,114,110,45,118,97,114,115,2,63,2,63,16,6,11,11,79,98,117,105, +108,100,45,102,114,111,109,45,116,101,109,112,108,97,116,101,61,114,2,64,2, +64,16,4,11,11,63,108,101,110,3,1,7,101,110,118,50,57,51,56,18,158, +9,8,139,2,18,158,65,108,105,115,116,42,8,139,2,32,142,2,89,162,8, +64,37,45,65,115,108,111,111,112,222,28,248,22,63,194,192,28,249,22,148,8, +194,248,22,58,196,248,22,58,195,27,248,22,59,195,27,248,22,59,197,28,248, +22,63,194,194,28,249,22,148,8,196,248,22,58,196,248,22,58,193,27,248,22, +59,195,27,248,22,59,195,28,248,22,63,194,196,28,249,22,148,8,198,248,22, +58,196,248,22,58,193,250,2,142,2,199,248,22,59,197,248,22,59,196,159,34, +20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,96, +114,69,35,37,115,116,120,99,97,115,101,2,1,10,10,10,34,80,158,34,34, +20,99,159,34,16,5,30,2,1,2,2,193,30,2,1,2,3,193,30,2,4, +1,21,101,120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107, +101,121,2,30,2,1,2,5,193,30,2,1,2,6,193,16,0,11,11,16,4, +2,6,2,3,2,2,2,5,38,11,16,2,2,7,2,8,16,2,11,11,16, +2,2,7,2,8,34,36,95,16,5,93,2,9,87,94,83,158,34,16,2,89, +162,8,100,37,45,2,10,223,0,28,248,22,63,196,12,87,94,27,248,22,153, +3,248,22,58,198,27,248,22,84,198,28,28,248,80,158,37,37,193,10,28,248, +80,158,37,38,193,28,249,22,77,248,22,153,3,248,80,158,40,34,196,21,102, +2,11,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,28, +248,80,158,37,38,248,80,158,38,35,194,248,80,158,37,37,248,80,158,38,34, +248,80,158,39,35,195,11,11,11,27,248,22,151,3,194,27,250,22,122,200,196, +11,28,192,250,22,121,201,198,195,250,22,121,200,196,198,12,250,80,159,37,41, +35,196,197,248,22,86,199,80,159,34,41,35,89,162,8,36,35,56,9,223,0, +27,248,80,158,36,34,248,80,158,37,35,196,27,248,80,158,37,36,248,80,158, +38,35,248,80,158,39,35,198,27,248,22,116,65,101,113,117,97,108,27,247,22, +116,87,94,250,80,159,41,41,35,196,195,197,27,28,248,22,129,3,248,22,119, +195,196,91,159,35,11,20,12,95,35,248,193,198,89,162,8,64,35,42,2,10, +224,2,0,28,248,22,56,195,27,248,194,248,22,58,197,27,248,195,248,22,59, +198,28,28,249,22,148,8,195,248,22,58,199,249,22,148,8,194,248,22,59,199, +11,196,249,22,57,195,194,28,248,22,47,195,27,250,22,122,197,198,11,28,192, +192,195,28,248,22,149,3,195,27,248,194,248,22,153,3,197,28,249,22,148,8, +248,22,153,3,198,194,195,251,22,152,3,199,196,199,199,28,248,22,166,7,195, +248,22,174,7,249,22,2,195,248,22,173,7,198,28,248,22,113,195,248,22,111, +248,194,248,22,114,197,194,250,22,152,3,20,15,159,42,34,39,251,22,67,2, +6,199,249,22,65,65,113,117,111,116,101,28,248,22,63,205,9,28,250,22,122, +205,248,22,153,3,248,22,58,23,17,11,249,2,67,204,248,22,86,23,15,249, +22,57,248,22,58,23,15,249,2,67,206,248,22,86,23,17,28,248,22,63,203, +9,28,250,22,122,203,248,22,153,3,248,22,58,23,15,11,249,2,68,202,248, +22,86,205,249,22,57,248,22,84,205,249,2,68,204,248,22,86,23,15,201,34, +20,99,159,35,16,5,2,69,2,70,2,71,2,72,2,73,16,1,33,77,11, +16,5,93,2,8,87,97,83,158,34,16,2,89,162,8,36,44,8,41,2,10, +223,0,28,248,22,63,200,251,22,65,20,15,159,38,41,43,11,6,10,10,98, +97,100,32,115,121,110,116,97,120,197,27,26,10,80,159,45,8,41,35,204,205, +206,23,15,23,16,23,17,248,22,59,23,19,248,22,59,23,20,248,22,59,23, +21,248,22,59,23,22,27,248,22,58,202,27,248,22,58,204,27,248,22,58,206, +27,248,22,58,23,16,91,159,37,10,90,161,35,34,10,249,22,2,32,0,89, +162,8,36,35,40,9,222,28,248,22,149,3,193,192,27,248,22,58,194,28,248, +22,149,3,193,192,27,248,22,58,194,28,248,22,149,3,193,192,248,2,78,248, +22,58,194,198,90,161,35,35,10,249,22,2,32,0,89,162,8,36,35,38,9, +222,250,22,152,3,195,247,22,54,11,209,90,161,35,36,10,248,22,178,2,248, +22,70,209,27,28,248,22,58,23,18,248,22,65,20,15,159,44,42,43,200,27, +252,80,158,49,41,23,19,205,205,248,80,158,50,35,23,21,248,22,146,8,23, +19,27,28,206,249,22,150,8,195,21,95,2,27,93,2,28,2,28,249,22,150, +8,195,21,95,2,27,94,2,28,2,29,2,28,27,250,22,65,20,15,159,49, +43,43,248,22,65,249,22,65,23,20,28,199,23,19,250,22,67,250,22,152,3, +20,15,159,58,44,43,206,23,22,23,22,28,23,24,9,248,22,65,23,28,251, +22,65,20,15,159,53,45,43,28,200,10,23,21,250,22,65,20,15,159,56,46, +43,250,22,2,89,162,8,36,36,47,9,226,25,27,19,17,249,22,65,199,27, +249,80,158,42,42,201,212,27,28,249,22,188,2,214,195,28,249,22,148,8,195, +34,2,30,28,249,22,148,8,195,35,20,15,159,41,47,43,28,249,22,148,8, +195,36,20,15,159,41,48,43,28,249,22,148,8,195,37,20,15,159,41,49,43, +28,249,22,148,8,195,38,20,15,159,41,50,43,2,30,28,249,22,148,8,195, +34,20,15,159,41,51,43,28,249,22,148,8,195,35,20,15,159,41,52,43,28, +249,22,148,8,195,36,20,15,159,41,53,43,28,249,22,148,8,195,37,20,15, +159,41,54,43,11,28,249,22,148,8,194,2,30,28,248,22,129,3,194,198,250, +22,65,20,15,159,44,55,43,201,196,28,192,249,22,65,194,200,250,22,65,20, +15,159,44,56,43,201,196,24,17,24,18,251,22,65,20,15,159,8,26,57,43, +251,22,2,80,159,8,30,8,42,35,24,22,23,26,24,23,9,28,23,23,251, +22,65,20,15,159,8,30,8,26,43,23,27,23,25,23,21,23,21,202,28,201, +250,22,65,20,15,159,49,8,27,43,248,22,65,249,22,65,2,31,250,22,65, +20,15,159,55,8,28,43,247,22,65,23,20,195,192,80,159,34,8,41,35,83, +158,34,16,2,89,162,8,36,37,49,9,223,0,249,22,65,248,22,65,196,250, +22,65,20,15,159,39,58,43,28,248,22,149,3,200,34,27,248,22,58,201,28, +248,22,149,3,193,35,27,248,22,58,194,28,248,22,149,3,193,36,249,2,79, +248,22,58,195,37,249,22,65,20,15,159,41,59,43,202,80,159,34,8,42,35, +83,158,34,16,2,89,162,34,35,39,9,223,0,27,248,80,158,36,39,248,80, +158,37,39,196,28,248,80,158,36,38,193,248,80,158,36,37,193,248,80,158,36, +37,248,80,158,37,39,196,80,159,34,8,40,35,83,158,34,16,2,89,162,34, +35,39,9,223,0,28,248,80,158,35,38,248,80,158,36,39,248,80,158,37,39, +196,248,80,158,35,37,248,80,158,36,39,195,11,80,159,34,8,39,35,89,162, +8,36,35,8,33,9,223,0,91,159,35,10,90,161,35,34,10,28,248,80,158, +36,34,195,248,22,59,248,80,158,37,35,196,11,87,94,28,28,248,80,158,36, +34,195,249,22,190,2,248,22,70,210,37,11,12,250,22,176,8,11,6,8,8, +98,97,100,32,102,111,114,109,197,27,248,22,58,209,27,248,22,84,210,27,248, +22,93,211,27,248,22,96,212,27,248,22,96,248,22,59,214,27,248,22,95,248, +22,59,215,87,96,28,248,80,158,42,34,195,12,250,22,176,8,248,22,153,3, +201,6,56,56,101,120,112,101,99,116,101,100,32,97,32,112,97,114,101,110,116, +104,101,115,105,122,101,100,32,115,101,113,117,101,110,99,101,32,111,102,32,108, +105,116,101,114,97,108,32,105,100,101,110,116,105,102,105,101,114,115,197,249,22, +3,89,162,34,35,41,9,224,9,7,28,248,80,158,36,36,195,12,250,22,176, +8,248,22,153,3,196,6,28,28,108,105,116,101,114,97,108,32,105,115,32,110, +111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,197,248,80,158,44, +35,197,249,22,3,89,162,34,35,42,9,224,9,7,28,28,248,80,158,36,34, +195,250,22,191,2,36,248,22,70,248,80,158,40,35,199,37,11,12,250,22,176, +8,248,22,153,3,196,6,10,10,98,97,100,32,99,108,97,117,115,101,197,194, +27,249,22,2,80,158,44,37,195,27,249,22,2,80,159,45,8,39,35,196,27, +249,22,2,80,159,46,8,40,35,197,27,20,15,159,45,34,43,27,20,15,159, +46,35,43,27,249,22,2,89,162,34,35,43,9,225,15,10,13,251,80,158,40, +40,196,199,199,248,80,158,41,35,198,248,80,158,50,35,200,27,28,248,80,158, +49,36,201,249,22,166,3,202,20,15,159,50,36,43,11,250,22,152,3,20,15, +159,51,37,43,250,22,65,20,15,159,54,38,43,248,22,65,249,22,65,204,28, +248,22,153,3,23,21,23,19,250,22,65,20,15,159,8,26,39,43,249,22,65, +20,15,159,8,28,40,43,249,22,152,3,23,26,2,22,23,22,26,10,80,159, +8,30,8,41,35,23,19,23,18,23,16,23,28,23,25,23,24,23,22,23,21, +23,17,23,20,23,18,34,20,99,159,38,16,9,30,2,21,69,115,116,120,45, +108,105,115,116,63,8,2,71,2,72,2,69,2,73,2,70,30,2,24,74,103, +101,116,45,109,97,116,99,104,45,118,97,114,115,0,30,2,24,74,109,97,107, +101,45,109,97,116,99,104,38,101,110,118,1,30,2,24,72,115,116,120,45,109, +101,109,113,45,112,111,115,5,16,29,33,85,33,86,33,87,33,90,33,91,33, +92,33,93,33,96,33,100,33,104,33,105,33,106,33,107,33,111,33,112,33,113, +33,114,33,115,33,116,33,117,33,118,33,120,33,121,33,122,33,124,33,125,33, +126,33,128,2,33,129,2,11,16,5,93,2,7,87,96,83,158,34,16,2,89, +162,8,64,37,50,2,10,223,0,28,248,22,63,196,9,28,248,22,58,196,249, +22,57,250,22,152,3,248,22,58,200,248,22,153,3,248,80,158,41,42,248,22, +58,203,198,27,248,22,59,198,27,248,22,59,200,28,248,22,63,193,9,28,248, 22,58,193,249,22,57,250,22,152,3,248,22,58,199,248,22,153,3,248,80,158, -43,42,248,22,58,200,200,250,80,159,41,51,35,200,248,22,59,199,248,22,59, -198,250,80,159,39,51,35,198,248,22,59,197,248,22,59,196,80,159,34,51,35, -83,158,34,16,2,89,162,8,64,36,58,2,10,223,0,28,248,22,63,195,9, -27,249,80,159,37,50,35,248,22,59,197,248,22,59,198,28,248,22,58,196,249, -22,57,27,248,22,58,198,27,248,80,158,40,41,248,22,58,201,28,248,22,129, -3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193, -27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22, -65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27, -248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178, -2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28, -248,22,129,3,193,193,249,2,126,248,22,65,196,248,22,178,2,195,194,192,80, -159,34,50,35,83,158,34,16,2,89,162,8,36,35,39,9,223,0,27,249,22, -168,13,196,32,0,89,162,8,44,34,34,9,222,11,28,248,80,158,36,39,193, -192,11,80,159,34,49,35,89,162,8,36,35,56,9,223,0,91,159,35,10,90, -161,35,34,10,20,15,159,35,34,44,87,94,28,28,248,80,158,36,34,195,27, -248,80,158,37,35,196,28,248,80,158,37,34,193,248,80,158,37,36,248,80,158, -38,35,194,11,11,12,250,22,176,8,11,6,8,8,98,97,100,32,102,111,114, -109,197,250,22,152,3,210,27,248,80,158,40,37,248,80,158,41,35,200,27,251, -80,158,44,38,197,11,9,11,27,249,22,2,80,159,43,49,35,195,28,28,28, -248,22,63,193,10,248,22,146,8,249,22,5,32,0,89,162,8,36,35,35,9, -222,192,195,248,80,158,42,40,195,11,249,22,65,20,15,159,43,35,44,196,27, -249,80,159,44,50,35,196,195,27,28,248,22,63,195,9,27,27,248,22,59,198, -27,248,22,59,198,28,248,22,63,193,9,27,249,2,127,248,22,59,197,248,22, -59,196,28,248,22,58,194,192,249,22,57,248,22,58,197,194,28,248,22,58,196, -192,249,22,57,248,22,58,199,194,27,251,80,158,48,38,201,198,197,201,27,28, -248,22,63,197,9,28,248,22,58,197,249,22,57,250,22,152,3,248,22,58,203, -248,22,153,3,248,80,158,52,42,248,22,58,204,23,17,250,80,159,50,51,35, -23,17,248,22,59,203,248,22,59,202,250,80,159,48,51,35,23,15,248,22,59, -201,248,22,59,200,28,248,80,158,46,43,199,248,22,58,193,249,22,65,250,22, -152,3,24,15,198,203,27,248,22,70,196,28,248,22,129,3,193,20,15,159,48, -36,44,28,249,22,188,2,194,35,248,22,58,196,249,22,57,20,15,159,50,37, -44,197,197,34,20,99,159,37,16,10,2,69,2,66,30,2,21,69,115,116,120, -45,110,117,108,108,63,10,2,65,30,2,24,72,109,97,107,101,45,112,101,120, -112,97,110,100,2,30,2,24,75,115,121,110,116,97,120,45,109,97,112,112,105, -110,103,63,8,30,2,24,72,110,111,45,101,108,108,105,112,115,101,115,63,4, -30,2,24,1,20,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,100, -101,112,116,104,6,30,2,24,1,21,115,121,110,116,97,120,45,109,97,112,112, -105,110,103,45,118,97,108,118,97,114,7,2,68,16,4,33,129,2,33,134,2, -33,136,2,33,137,2,11,96,83,158,34,16,2,32,0,89,162,8,36,36,42, -2,2,222,28,248,22,149,3,194,193,27,252,22,152,3,198,199,198,11,198,27, -249,22,161,3,196,2,61,28,192,250,22,161,3,196,2,61,195,193,80,159,34, -34,35,83,158,34,16,2,89,162,34,37,39,2,3,223,0,247,248,22,8,89, -162,8,32,35,40,9,226,1,4,3,2,20,14,159,80,158,37,36,89,162,34, -35,39,9,225,2,1,4,248,193,89,162,34,34,41,9,225,3,2,4,28,248, -22,130,11,193,248,22,134,11,193,251,22,176,8,2,7,6,47,47,105,110,99, -111,109,112,97,116,105,98,108,101,32,101,108,108,105,112,115,105,115,32,109,97, -116,99,104,32,99,111,117,110,116,115,32,102,111,114,32,116,101,109,112,108,97, -116,101,197,198,27,247,193,89,162,8,36,34,35,9,223,0,192,80,159,34,35, -35,83,158,34,16,2,65,100,117,109,109,121,80,159,34,37,35,83,158,34,16, -2,89,162,8,37,37,40,2,6,223,0,91,159,35,11,20,12,95,35,248,193, -195,89,162,8,64,35,46,2,10,226,1,4,3,0,28,248,22,56,197,27,248, -194,248,22,58,199,27,248,195,248,22,59,200,28,28,249,22,148,8,195,248,22, -58,201,249,22,148,8,194,248,22,59,201,11,198,249,22,57,195,194,28,248,22, -47,197,28,248,22,63,194,196,28,249,22,148,8,198,248,22,58,196,248,22,58, -195,27,248,22,59,195,27,248,22,59,197,28,248,22,63,194,198,28,249,22,148, -8,200,248,22,58,196,248,22,58,193,250,2,138,2,201,248,22,59,197,248,22, -59,196,28,248,22,149,3,197,27,248,194,248,22,153,3,199,28,249,22,148,8, -248,22,153,3,200,194,197,28,248,22,149,3,193,192,27,252,22,152,3,203,198, -203,11,203,27,249,22,161,3,201,2,61,28,192,250,22,161,3,196,2,61,195, -193,28,248,22,166,7,197,248,22,174,7,249,22,2,195,248,22,173,7,200,28, -248,22,113,197,248,22,111,248,194,248,22,114,199,196,80,159,34,38,35,96,2, -62,2,21,2,23,2,4,96,2,21,2,23,2,24,2,62,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6820); +45,42,248,22,58,200,202,250,80,159,43,51,35,202,248,22,59,199,248,22,59, +198,250,80,159,41,51,35,200,248,22,59,197,248,22,59,196,27,248,22,59,196, +27,248,22,59,198,28,248,22,63,193,9,28,248,22,58,193,249,22,57,250,22, +152,3,248,22,58,199,248,22,153,3,248,80,158,43,42,248,22,58,200,200,250, +80,159,41,51,35,200,248,22,59,199,248,22,59,198,250,80,159,39,51,35,198, +248,22,59,197,248,22,59,196,80,159,34,51,35,83,158,34,16,2,89,162,8, +64,36,58,2,10,223,0,28,248,22,63,195,9,27,249,80,159,37,50,35,248, +22,59,197,248,22,59,198,28,248,22,58,196,249,22,57,27,248,22,58,198,27, +248,80,158,40,41,248,22,58,201,28,248,22,129,3,193,193,27,248,22,65,195, +27,248,22,178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22, +178,2,195,28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195, +28,248,22,129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22, +129,3,193,193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193, +193,27,248,22,65,195,27,248,22,178,2,195,28,248,22,129,3,193,193,249,2, +130,2,248,22,65,196,248,22,178,2,195,194,192,80,159,34,50,35,83,158,34, +16,2,89,162,8,36,35,39,9,223,0,27,249,22,168,13,196,32,0,89,162, +8,44,34,34,9,222,11,28,248,80,158,36,39,193,192,11,80,159,34,49,35, +89,162,8,36,35,56,9,223,0,91,159,35,10,90,161,35,34,10,20,15,159, +35,34,44,87,94,28,28,248,80,158,36,34,195,27,248,80,158,37,35,196,28, +248,80,158,37,34,193,248,80,158,37,36,248,80,158,38,35,194,11,11,12,250, +22,176,8,11,6,8,8,98,97,100,32,102,111,114,109,197,250,22,152,3,210, +27,248,80,158,40,37,248,80,158,41,35,200,27,251,80,158,44,38,197,11,9, +11,27,249,22,2,80,159,43,49,35,195,28,28,28,248,22,63,193,10,248,22, +146,8,249,22,5,32,0,89,162,8,36,35,35,9,222,192,195,248,80,158,42, +40,195,11,249,22,65,20,15,159,43,35,44,196,27,249,80,159,44,50,35,196, +195,27,28,248,22,63,195,9,27,27,248,22,59,198,27,248,22,59,198,28,248, +22,63,193,9,27,249,2,131,2,248,22,59,197,248,22,59,196,28,248,22,58, +194,192,249,22,57,248,22,58,197,194,28,248,22,58,196,192,249,22,57,248,22, +58,199,194,27,251,80,158,48,38,201,198,197,201,27,28,248,22,63,197,9,28, +248,22,58,197,249,22,57,250,22,152,3,248,22,58,203,248,22,153,3,248,80, +158,52,42,248,22,58,204,23,17,250,80,159,50,51,35,23,17,248,22,59,203, +248,22,59,202,250,80,159,48,51,35,23,15,248,22,59,201,248,22,59,200,28, +248,80,158,46,43,199,248,22,58,193,249,22,65,250,22,152,3,24,15,198,203, +27,248,22,70,196,28,248,22,129,3,193,20,15,159,48,36,44,28,249,22,188, +2,194,35,248,22,58,196,249,22,57,20,15,159,50,37,44,197,197,34,20,99, +159,37,16,10,2,73,2,70,30,2,21,69,115,116,120,45,110,117,108,108,63, +10,2,69,30,2,24,72,109,97,107,101,45,112,101,120,112,97,110,100,2,30, +2,24,75,115,121,110,116,97,120,45,109,97,112,112,105,110,103,63,8,30,2, +24,72,110,111,45,101,108,108,105,112,115,101,115,63,4,30,2,24,1,20,115, +121,110,116,97,120,45,109,97,112,112,105,110,103,45,100,101,112,116,104,6,30, +2,24,1,21,115,121,110,116,97,120,45,109,97,112,112,105,110,103,45,118,97, +108,118,97,114,7,2,72,16,4,33,133,2,33,138,2,33,140,2,33,141,2, +11,96,83,158,34,16,2,32,0,89,162,8,36,36,42,2,2,222,28,248,22, +149,3,194,193,27,252,22,152,3,198,199,198,11,198,27,249,22,161,3,196,2, +65,28,192,250,22,161,3,196,2,65,195,193,80,159,34,34,35,83,158,34,16, +2,89,162,34,37,39,2,3,223,0,247,248,22,8,89,162,8,32,35,40,9, +226,1,4,3,2,20,14,159,80,158,37,36,89,162,34,35,39,9,225,2,1, +4,248,193,89,162,34,34,41,9,225,3,2,4,28,248,22,130,11,193,248,22, +134,11,193,251,22,176,8,2,7,6,47,47,105,110,99,111,109,112,97,116,105, +98,108,101,32,101,108,108,105,112,115,105,115,32,109,97,116,99,104,32,99,111, +117,110,116,115,32,102,111,114,32,116,101,109,112,108,97,116,101,197,198,27,247, +193,89,162,8,36,34,35,9,223,0,192,80,159,34,35,35,83,158,34,16,2, +65,100,117,109,109,121,80,159,34,37,35,83,158,34,16,2,89,162,8,37,37, +40,2,6,223,0,91,159,35,11,20,12,95,35,248,193,195,89,162,8,64,35, +46,2,10,226,1,4,3,0,28,248,22,56,197,27,248,194,248,22,58,199,27, +248,195,248,22,59,200,28,28,249,22,148,8,195,248,22,58,201,249,22,148,8, +194,248,22,59,201,11,198,249,22,57,195,194,28,248,22,47,197,28,248,22,63, +194,196,28,249,22,148,8,198,248,22,58,196,248,22,58,195,27,248,22,59,195, +27,248,22,59,197,28,248,22,63,194,198,28,249,22,148,8,200,248,22,58,196, +248,22,58,193,250,2,142,2,201,248,22,59,197,248,22,59,196,28,248,22,149, +3,197,27,248,194,248,22,153,3,199,28,249,22,148,8,248,22,153,3,200,194, +197,28,248,22,149,3,193,192,27,252,22,152,3,203,198,203,11,203,27,249,22, +161,3,201,2,65,28,192,250,22,161,3,196,2,65,195,193,28,248,22,166,7, +197,248,22,174,7,249,22,2,195,248,22,173,7,200,28,248,22,113,197,248,22, +111,248,194,248,22,114,199,196,80,159,34,38,35,96,2,66,2,21,2,23,2, +4,96,2,21,2,23,2,24,2,66,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6856); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,55,0,0,0,1,0,0,3,0,12,0,25,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,55,0,0,0,1,0,0,3,0,12,0,25,0, 36,0,48,0,55,0,62,0,69,0,76,0,83,0,96,0,102,0,112,0,126, 0,141,0,153,0,158,0,162,0,172,0,174,0,179,0,182,0,189,0,199,0, 206,0,213,0,220,0,227,0,237,0,247,0,254,0,5,1,12,1,19,1,29, @@ -1792,10 +1794,10 @@ 195,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158,46,35,248, 80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158,48,38,193,248,80, 158,48,39,193,11,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,252,22,67,198,202, -201,199,200,254,80,158,48,40,20,15,159,48,34,41,21,97,2,6,2,7,2, -8,2,9,2,10,248,22,84,200,248,22,93,200,248,22,95,200,248,22,96,200, -248,22,58,200,250,22,176,8,11,2,11,197,34,20,99,159,34,16,7,2,38, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,252,22,67,200,201, +198,199,202,254,80,158,48,40,20,15,159,48,34,41,21,97,2,6,2,7,2, +8,2,9,2,10,248,22,95,200,248,22,84,200,248,22,58,200,248,22,96,200, +248,22,93,200,250,22,176,8,11,2,11,197,34,20,99,159,34,16,7,2,38, 2,39,2,40,2,41,2,42,2,43,2,44,16,1,33,49,11,16,5,93,2, 5,89,162,34,35,49,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37, 35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193, @@ -1803,8 +1805,8 @@ 158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45,37, 196,28,248,80,158,45,38,193,248,80,158,45,39,193,11,11,11,11,28,192,27, 248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,27,251, -22,67,197,200,199,198,253,80,158,46,40,20,15,159,46,34,41,21,96,2,25, -2,26,2,27,2,28,248,22,84,199,248,22,93,199,248,22,94,199,248,22,58, +22,67,198,199,197,200,253,80,158,46,40,20,15,159,46,34,41,21,96,2,25, +2,26,2,27,2,28,248,22,94,199,248,22,84,199,248,22,58,199,248,22,93, 199,250,22,176,8,11,2,11,197,34,20,99,159,34,16,7,2,38,2,39,2, 40,2,41,2,42,2,43,2,44,16,1,33,51,11,16,5,93,2,4,89,162, 34,35,47,9,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80, @@ -1814,8 +1816,8 @@ 37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86, 196,28,28,248,22,47,248,22,153,3,194,248,80,158,39,40,249,22,168,13,195, 32,0,89,162,8,44,34,34,9,222,11,11,250,80,158,41,41,20,15,159,41, -34,42,21,93,2,31,195,27,249,22,67,195,196,251,80,158,43,41,20,15,159, -43,35,42,21,94,2,32,2,33,248,22,59,197,248,22,58,197,250,22,176,8, +34,42,21,93,2,31,195,27,249,22,67,196,195,251,80,158,43,41,20,15,159, +43,35,42,21,94,2,32,2,33,248,22,58,197,248,22,59,197,250,22,176,8, 11,2,11,197,34,20,99,159,34,16,8,2,38,2,39,2,40,2,41,30,2, 12,69,97,112,112,101,110,100,47,35,102,0,30,2,12,71,115,116,120,45,110, 117,108,108,47,35,102,9,30,2,17,75,115,121,110,116,97,120,45,109,97,112, @@ -1826,7 +1828,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 1816); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,55,0,0,0,1,0,0,6,0,9,0,26,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,55,0,0,0,1,0,0,6,0,9,0,26,0, 34,0,48,0,70,0,76,0,86,0,96,0,108,0,113,0,120,0,127,0,140, 0,147,0,154,0,159,0,168,0,178,0,183,0,198,0,205,0,217,0,227,0, 229,0,232,0,235,0,245,0,250,0,4,1,14,1,18,1,28,1,38,1,45, @@ -1850,8 +1852,8 @@ 11,11,61,120,3,1,7,101,110,118,51,48,50,51,95,8,193,11,16,0,97, 10,35,11,97,159,2,22,9,11,159,2,23,9,11,159,2,20,9,11,159,2, 18,9,11,159,2,19,9,11,16,0,97,10,34,11,96,159,2,19,9,11,159, -2,21,9,11,159,2,18,9,11,159,2,7,9,11,16,10,2,5,2,2,2, -6,2,2,2,4,2,2,2,10,2,2,2,3,2,2,18,97,2,17,8,40, +2,21,9,11,159,2,18,9,11,159,2,7,9,11,16,10,2,6,2,2,2, +4,2,2,2,5,2,2,2,10,2,2,2,3,2,2,18,97,2,17,8,40, 8,39,8,38,8,37,98,8,40,8,39,8,38,8,37,16,8,11,11,3,1, 4,103,53,48,56,3,1,4,103,53,48,57,3,1,4,103,53,49,48,2,24, 2,24,2,24,16,8,11,11,2,25,2,26,2,27,2,28,2,28,2,28,18, @@ -1944,7 +1946,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 2404); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,185,0,0,0,1,0,0,3,0,31,0,37,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,185,0,0,0,1,0,0,3,0,31,0,37,0, 49,0,71,0,75,0,91,0,96,0,101,0,106,0,113,0,120,0,131,0,145, 0,158,0,170,0,181,0,189,0,193,0,206,0,209,0,216,0,231,0,244,0, 0,1,7,1,21,1,32,1,48,1,59,1,71,1,86,1,96,1,105,1,112, @@ -2236,10 +2238,10 @@ 102,111,117,110,100,32,115,111,109,101,116,104,105,110,103,32,101,108,115,101,196, 198,248,22,49,248,22,50,248,22,153,3,197,248,22,159,3,249,80,158,48,45, 20,15,159,48,36,50,202,27,28,248,80,158,43,39,194,248,80,158,43,40,194, -11,28,192,249,80,158,44,46,203,27,252,22,67,202,203,200,205,206,250,80,158, +11,28,192,249,80,158,44,46,203,27,252,22,67,202,200,205,203,206,250,80,158, 48,47,89,162,34,34,46,9,224,14,3,252,80,158,40,48,20,15,159,40,37, -50,21,95,2,88,2,89,2,90,248,22,95,198,248,22,96,198,251,22,2,80, -159,44,58,35,248,22,93,202,248,22,84,202,248,22,58,202,21,95,2,91,93, +50,21,95,2,88,2,89,2,90,248,22,95,198,248,22,93,198,251,22,2,80, +159,44,58,35,248,22,84,202,248,22,96,202,248,22,58,202,21,95,2,91,93, 2,92,100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94,158,2,96, 2,97,95,2,28,2,92,2,98,2,42,20,15,159,48,39,50,248,80,158,43, 49,20,15,159,43,40,50,250,22,176,8,11,2,46,202,250,22,176,8,11,2, @@ -2260,10 +2262,10 @@ 39,40,196,28,248,22,63,193,21,93,9,248,80,158,37,43,193,11,11,11,28, 192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197, 28,249,22,4,80,158,41,44,248,22,159,3,249,80,158,44,45,20,15,159,44, -34,49,199,249,80,158,41,46,200,27,251,22,67,199,202,200,201,250,80,158,45, +34,49,199,249,80,158,41,46,200,27,251,22,67,199,200,201,202,250,80,158,45, 47,89,162,34,34,45,9,224,11,3,252,80,158,40,48,20,15,159,40,35,49, -21,95,2,109,2,110,2,111,248,22,84,198,248,22,94,198,250,22,2,80,159, -43,54,35,248,22,93,201,248,22,58,201,21,94,2,112,95,2,91,93,2,92, +21,95,2,109,2,110,2,111,248,22,94,198,248,22,93,198,250,22,2,80,159, +43,54,35,248,22,84,201,248,22,58,201,21,94,2,112,95,2,91,93,2,92, 100,2,93,2,51,10,2,92,94,2,94,2,42,2,95,94,2,97,95,2,28, 2,92,2,98,2,42,20,15,159,45,37,49,250,22,176,8,11,2,46,201,250, 22,176,8,11,2,46,197,34,20,99,159,35,16,15,2,116,2,117,2,118,2, @@ -2281,7 +2283,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 6997); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,72,0,0,0,1,0,0,3,0,23,0,29,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,72,0,0,0,1,0,0,3,0,23,0,29,0, 41,0,50,0,68,0,84,0,89,0,93,0,100,0,107,0,114,0,121,0,127, 0,130,0,143,0,148,0,165,0,174,0,179,0,189,0,193,0,203,0,213,0, 223,0,232,0,242,0,246,0,0,1,2,1,12,1,22,1,32,1,41,1,64, @@ -2375,9 +2377,9 @@ 45,107,226,7,13,10,2,27,249,22,152,3,20,15,159,40,39,43,248,22,58, 248,80,158,42,40,21,93,63,117,113,115,27,249,22,152,3,20,15,159,41,40, 43,250,22,152,3,199,2,9,199,249,198,250,22,152,3,200,250,22,67,201,20, -15,159,47,41,43,206,200,249,22,57,27,250,22,67,201,202,200,253,80,158,50, -42,20,15,159,50,42,43,21,96,2,10,2,11,2,12,2,13,248,22,58,199, -20,15,159,50,43,43,248,22,84,199,248,22,86,199,203,253,80,159,47,8,30, +15,159,47,41,43,206,200,249,22,57,27,250,22,67,202,200,201,253,80,158,50, +42,20,15,159,50,42,43,21,96,2,10,2,11,2,12,2,13,248,22,86,199, +20,15,159,50,43,43,248,22,58,199,248,22,84,199,203,253,80,159,47,8,30, 35,206,23,15,199,23,17,89,162,34,34,38,9,224,7,6,249,194,195,9,198, 253,80,159,46,8,30,35,205,206,199,248,22,178,2,23,17,89,162,34,34,50, 9,230,12,14,13,18,17,16,15,6,253,80,159,47,8,30,35,203,204,198,200, @@ -2451,336 +2453,338 @@ EVAL_ONE_SIZED_STR((char *)expr, 3492); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,159,0,0,0,1,0,0,6,0,9,0,16,0, -30,0,47,0,65,0,74,0,87,0,94,0,101,0,108,0,122,0,129,0,136, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,160,0,0,0,1,0,0,6,0,9,0,27,0, +41,0,58,0,65,0,74,0,87,0,94,0,101,0,108,0,122,0,129,0,136, 0,149,0,156,0,163,0,170,0,177,0,184,0,187,0,194,0,201,0,208,0, -214,0,224,0,252,0,22,1,39,1,44,1,52,1,56,1,66,1,68,1,78, -1,88,1,93,1,103,1,106,1,110,1,120,1,127,1,137,1,142,1,152,1, -167,1,170,1,179,1,188,1,198,1,208,1,218,1,228,1,238,1,248,1,253, -1,7,2,21,2,37,2,63,2,70,2,77,2,90,2,97,2,104,2,111,2, -118,2,125,2,132,2,142,2,147,2,157,2,167,2,177,2,179,2,189,2,199, -2,207,2,216,2,230,2,242,2,254,2,10,3,24,3,38,3,58,3,64,3, -78,3,94,3,110,3,126,3,158,3,164,3,186,3,208,3,222,3,234,3,1, -4,32,4,49,4,55,4,67,4,118,4,124,4,130,4,142,4,206,4,212,4, -188,5,205,5,211,5,223,5,229,5,48,6,58,6,90,6,96,6,102,6,108, -6,121,6,182,6,240,6,246,6,3,7,26,7,32,7,38,7,44,7,62,7, -78,7,94,7,144,7,153,7,200,7,211,7,222,7,234,7,0,8,19,8,184, -8,200,8,222,8,229,8,236,8,39,9,50,9,57,9,113,9,126,9,133,9, -192,9,220,9,247,9,50,10,61,10,68,10,131,10,154,10,0,0,12,25,0, -0,65,98,101,103,105,110,29,11,11,66,100,101,102,105,110,101,73,100,101,102, -105,110,101,45,115,121,110,116,97,120,76,98,101,103,105,110,45,102,111,114,45, -115,121,110,116,97,120,77,100,101,102,105,110,101,45,102,111,114,45,115,121,110, -116,97,120,68,116,114,121,45,110,101,120,116,6,10,10,98,97,100,32,115,121, -110,116,97,120,3,1,4,103,54,53,51,3,1,4,103,54,53,49,3,1,4, -103,54,53,50,73,103,101,110,101,114,97,108,45,112,114,111,116,111,3,1,4, -103,54,52,49,3,1,4,103,54,52,48,72,115,105,109,112,108,101,45,112,114, -111,116,111,3,1,4,103,54,50,54,3,1,4,103,54,50,53,3,1,4,103, -54,50,55,3,1,4,103,54,51,50,3,1,4,103,54,51,49,62,109,107,3, -1,4,103,54,54,55,3,1,4,103,54,54,53,3,1,4,103,54,54,54,65, -35,37,115,116,120,69,35,37,115,116,120,99,97,115,101,1,26,100,97,116,117, -109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104,97,112, -101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117,98,115, -116,105,116,117,116,101,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101, -109,101,64,104,101,114,101,67,35,37,113,113,115,116,120,63,115,116,120,3,1, -7,101,110,118,51,52,54,57,61,95,3,1,7,101,110,118,51,52,55,48,3, -1,7,101,110,118,51,52,55,56,64,100,101,115,116,3,1,7,101,110,118,51, -52,56,53,62,105,100,63,97,114,103,3,1,7,101,110,118,51,52,56,54,66, -108,97,109,98,100,97,3,1,7,101,110,118,51,53,49,53,64,114,101,115,116, -3,1,7,101,110,118,51,53,49,54,74,35,37,115,109,97,108,108,45,115,99, -104,101,109,101,29,11,11,68,104,101,114,101,45,115,116,120,3,1,6,101,110, -118,52,53,54,3,1,7,101,110,118,51,53,53,50,3,1,7,101,110,118,51, -53,53,51,3,1,7,101,110,118,51,52,55,55,3,1,7,101,110,118,51,54, -52,51,3,1,7,101,110,118,51,54,52,52,3,1,7,101,110,118,51,54,57, -49,64,101,120,112,114,3,1,7,101,110,118,51,54,57,50,73,100,101,102,105, -110,101,45,118,97,108,117,101,115,75,100,101,102,105,110,101,45,115,121,110,116, -97,120,101,115,1,24,100,101,102,105,110,101,45,118,97,108,117,101,115,45,102, -111,114,45,115,121,110,116,97,120,3,1,4,103,54,55,52,3,1,4,103,54, -55,51,72,109,111,100,117,108,101,45,98,101,103,105,110,3,1,4,103,54,56, -51,3,1,4,103,54,56,53,3,1,4,103,54,56,52,3,1,4,103,54,56, -54,3,1,4,103,54,56,55,3,1,4,103,54,56,56,3,1,7,101,110,118, -51,55,51,48,64,101,108,101,109,3,1,7,101,110,118,51,55,51,49,3,1, -7,101,110,118,51,55,52,51,3,1,7,101,110,118,51,55,52,52,61,118,3, -1,7,101,110,118,51,55,54,55,3,1,7,101,110,118,51,55,54,56,67,114, -101,113,117,105,114,101,68,35,37,107,101,114,110,101,108,30,2,25,69,115,116, -120,45,112,97,105,114,63,11,30,2,25,67,99,111,110,115,47,35,102,1,30, -2,25,67,115,116,120,45,99,97,114,5,30,2,25,67,115,116,120,45,99,100, -114,6,30,2,25,69,115,116,120,45,108,105,115,116,63,8,30,2,25,69,115, -116,120,45,62,108,105,115,116,4,30,68,35,37,115,116,120,108,111,99,68,114, -101,108,111,99,97,116,101,0,30,2,26,2,28,0,30,2,25,69,97,112,112, -101,110,100,47,35,102,0,30,2,25,71,105,100,101,110,116,105,102,105,101,114, -63,2,30,2,25,71,115,116,120,45,110,117,108,108,47,35,102,9,16,4,11, -11,2,32,3,1,7,101,110,118,51,52,53,52,16,4,11,11,77,100,101,102, -105,110,101,45,118,97,108,117,101,115,45,115,116,120,3,1,7,101,110,118,51, -52,53,51,95,8,193,11,16,0,97,10,35,11,95,159,2,31,9,11,159,2, -25,9,11,159,2,29,9,11,16,0,96,10,34,11,16,8,2,3,2,2,2, -4,2,2,2,5,2,2,2,6,2,2,18,98,2,30,8,95,8,94,8,93, -8,92,8,91,16,6,11,11,2,15,2,12,2,36,2,36,16,8,11,11,2, -34,65,112,114,111,116,111,64,98,111,100,121,2,35,2,35,2,35,16,8,11, -11,3,1,4,103,54,48,53,3,1,4,103,54,48,54,3,1,4,103,54,48, -55,2,33,2,33,2,33,100,8,95,8,94,8,93,8,92,8,91,8,99,8, -98,8,97,18,158,2,30,8,100,16,6,11,11,2,15,2,12,2,36,2,36, -102,8,95,8,94,8,93,8,92,8,91,8,99,8,98,8,102,16,6,11,11, -3,1,4,103,54,50,48,3,1,4,103,54,50,49,2,38,2,38,16,6,11, -11,2,39,2,40,2,41,2,41,18,158,2,37,8,103,18,158,2,30,8,103, -18,158,160,10,2,42,2,16,2,17,8,103,102,8,95,8,94,8,93,8,92, -8,91,8,99,8,98,8,102,16,8,11,11,3,1,4,103,54,49,55,3,1, -4,103,54,49,56,3,1,4,103,54,49,57,2,43,2,43,2,43,16,8,11, -11,2,39,2,40,2,44,2,45,2,45,2,45,18,158,2,37,8,107,102,97, -10,34,11,95,159,68,35,37,112,97,114,97,109,122,9,11,159,2,46,9,11, -159,2,25,9,11,16,14,2,27,2,47,2,28,2,47,66,115,121,110,116,97, -120,2,47,1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101, -114,114,111,114,2,47,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105, -116,117,116,101,2,47,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111, -112,2,47,73,115,121,110,116,97,120,45,99,97,115,101,42,42,2,47,97,10, -35,11,95,159,64,35,37,115,99,9,11,159,2,46,9,11,159,2,25,9,11, -16,0,95,8,193,11,16,0,16,4,11,11,61,120,3,1,6,101,110,118,52, -53,52,16,4,11,11,2,48,2,49,16,4,11,11,2,48,2,49,16,4,11, -11,2,48,3,1,6,101,110,118,52,53,56,13,16,4,35,2,47,2,26,11, -93,8,134,47,16,4,11,11,61,114,3,1,7,101,110,118,51,53,50,51,18, -16,2,158,94,10,2,18,8,109,95,9,8,134,47,2,26,18,158,2,30,8, -107,18,158,160,10,2,42,2,19,2,20,8,107,18,158,2,30,8,100,102,8, -95,8,94,8,93,8,92,8,91,8,99,8,98,8,97,16,8,11,11,3,1, -4,103,54,51,53,3,1,4,103,54,51,54,3,1,4,103,54,51,55,2,50, -2,50,2,50,16,8,11,11,69,115,111,109,101,116,104,105,110,103,64,109,111, -114,101,2,44,2,51,2,51,2,51,18,158,159,10,2,13,2,14,8,114,100, -8,95,8,94,8,93,8,92,8,91,8,99,8,98,16,6,11,11,2,39,66, -109,107,45,114,104,115,2,52,2,52,18,158,2,30,8,116,18,158,2,30,8, -116,18,158,2,30,8,116,18,158,96,10,2,9,93,2,10,2,11,8,116,18, -100,2,30,8,95,8,94,8,93,8,92,8,91,16,8,11,11,3,1,4,103, -54,49,49,3,1,4,103,54,49,50,3,1,4,103,54,49,51,2,53,2,53, -2,53,16,8,11,11,2,34,2,39,2,44,2,54,2,54,2,54,99,8,95, -8,94,8,93,8,92,8,91,16,8,11,11,3,1,4,103,54,49,52,3,1, -4,103,54,49,53,3,1,4,103,54,49,54,2,55,2,55,2,55,16,8,11, -11,2,34,2,39,2,56,2,57,2,57,2,57,18,158,2,30,8,122,18,158, -96,10,2,22,93,2,23,2,24,8,122,96,8,95,8,94,8,93,16,4,11, -11,2,21,3,1,7,101,110,118,51,52,53,50,18,158,2,58,8,125,18,158, -2,59,8,125,18,158,2,60,8,125,16,4,11,11,63,99,116,120,3,1,7, -101,110,118,51,55,49,53,16,4,11,11,2,32,3,1,7,101,110,118,51,55, -49,52,18,98,2,30,8,95,8,94,8,93,8,130,2,8,129,2,99,8,95, -8,94,8,93,8,130,2,8,129,2,16,4,11,11,3,1,4,103,54,55,50, -3,1,7,101,110,118,51,55,50,48,16,4,11,11,2,34,3,1,7,101,110, -118,51,55,50,49,18,158,94,10,2,1,8,132,2,99,8,95,8,94,8,93, -8,130,2,8,129,2,16,6,11,11,3,1,4,103,54,54,56,3,1,4,103, -54,54,57,2,70,2,70,16,6,11,11,2,34,2,71,2,72,2,72,18,158, -159,10,2,1,2,61,8,134,2,18,158,95,10,2,5,2,62,8,134,2,16, -6,11,11,2,34,2,71,2,74,2,74,16,6,11,11,3,1,4,103,54,55, -48,3,1,4,103,54,55,49,2,73,2,73,99,8,95,8,94,8,93,8,130, -2,8,129,2,8,138,2,8,137,2,18,158,111,10,2,1,2,58,2,59,2, -60,64,115,101,116,33,70,108,101,116,45,118,97,108,117,101,115,71,108,101,116, -42,45,118,97,108,117,101,115,73,108,101,116,114,101,99,45,118,97,108,117,101, -115,2,42,71,99,97,115,101,45,108,97,109,98,100,97,62,105,102,65,113,117, -111,116,101,1,22,108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43, -118,97,108,117,101,115,76,102,108,117,105,100,45,108,101,116,45,115,121,110,116, -97,120,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110, -45,109,97,114,107,65,35,37,97,112,112,65,35,37,116,111,112,67,35,37,100, -97,116,117,109,8,139,2,16,4,11,11,61,101,3,1,7,101,110,118,51,55, -52,57,100,8,95,8,94,8,93,8,130,2,8,129,2,8,138,2,8,137,2, -8,141,2,18,158,2,30,8,142,2,18,158,2,1,8,142,2,102,8,95,8, -94,8,93,8,130,2,8,129,2,8,138,2,8,137,2,8,141,2,16,4,11, -11,3,1,4,103,54,56,50,3,1,7,101,110,118,51,55,53,53,16,4,11, -11,2,75,3,1,7,101,110,118,51,55,53,54,18,158,159,10,2,5,2,64, -8,145,2,18,158,2,58,8,142,2,102,8,95,8,94,8,93,8,130,2,8, -129,2,8,138,2,8,137,2,8,141,2,16,6,11,11,3,1,4,103,54,56, -48,3,1,4,103,54,56,49,2,76,2,76,16,6,11,11,2,39,2,56,2, -77,2,77,18,158,96,10,2,60,2,65,2,66,8,148,2,18,158,2,78,8, -142,2,102,8,95,8,94,8,93,8,130,2,8,129,2,8,138,2,8,137,2, -8,141,2,16,4,11,11,3,1,4,103,54,55,57,3,1,7,101,110,118,51, -55,55,57,16,4,11,11,2,75,3,1,7,101,110,118,51,55,56,48,18,158, -159,10,78,114,101,113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120, -2,67,8,151,2,18,158,1,20,114,101,113,117,105,114,101,45,102,111,114,45, -116,101,109,112,108,97,116,101,8,142,2,102,8,95,8,94,8,93,8,130,2, -8,129,2,8,138,2,8,137,2,8,141,2,16,4,11,11,3,1,4,103,54, -55,56,3,1,7,101,110,118,51,55,56,57,16,4,11,11,2,75,3,1,7, -101,110,118,51,55,57,48,18,158,159,10,2,78,2,68,8,154,2,18,158,2, -59,8,142,2,102,8,95,8,94,8,93,8,130,2,8,129,2,8,138,2,8, -137,2,8,141,2,16,4,11,11,3,1,4,103,54,55,53,3,1,7,101,110, -118,51,56,48,56,16,4,11,11,65,111,116,104,101,114,3,1,7,101,110,118, -51,56,48,57,18,158,96,10,2,60,9,95,2,1,2,69,93,66,118,97,108, -117,101,115,8,157,2,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83, -158,40,20,96,114,68,35,37,100,101,102,105,110,101,2,2,10,10,10,34,80, -158,34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11,16,4,2,3, -2,4,2,5,2,6,16,4,11,11,11,11,16,4,2,3,2,4,2,5,2, -6,34,38,94,16,5,95,2,3,2,4,2,6,87,99,83,158,34,16,2,89, -162,34,37,59,2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35, -248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27, -28,248,22,149,3,194,193,198,249,80,158,41,35,248,80,158,42,36,196,27,248, -80,158,43,37,197,250,22,152,3,198,195,198,11,11,28,192,27,248,22,58,194, -27,248,22,84,195,27,248,22,86,196,28,248,80,158,39,45,194,250,22,176,8, -11,27,249,22,152,3,20,15,159,44,49,49,204,27,28,248,80,158,44,34,194, -249,80,158,45,35,248,80,158,46,36,196,27,248,80,158,47,37,197,28,248,80, -158,47,34,193,249,80,158,48,44,248,80,158,49,36,195,248,80,158,49,48,248, -80,158,50,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,6,46, -46,98,97,100,32,115,121,110,116,97,120,32,40,122,101,114,111,32,101,120,112, -114,101,115,115,105,111,110,115,32,97,102,116,101,114,32,105,100,101,110,116,105, -102,105,101,114,41,27,28,248,80,158,45,34,195,249,80,158,46,35,248,80,158, -47,36,197,27,248,80,158,48,37,198,28,248,80,158,48,34,193,249,80,158,49, -35,248,80,158,50,36,195,27,248,80,158,51,37,196,28,248,80,158,51,38,193, -248,80,158,51,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, -27,248,22,86,196,6,50,50,98,97,100,32,115,121,110,116,97,120,32,40,109, -117,108,116,105,112,108,101,32,101,120,112,114,101,115,115,105,111,110,115,32,97, -102,116,101,114,32,105,100,101,110,116,105,102,105,101,114,41,27,28,248,80,158, -46,34,196,249,80,158,47,35,248,80,158,48,36,198,27,248,80,158,49,37,199, -28,248,80,158,49,34,193,27,28,248,22,149,3,194,193,199,249,80,158,51,35, -248,80,158,52,36,196,27,248,80,158,53,37,197,250,22,152,3,198,195,198,11, -11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,6,31,31, -98,97,100,32,115,121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117, -115,101,32,111,102,32,96,46,39,41,250,22,176,8,11,2,8,198,201,250,80, -159,41,8,41,35,200,201,202,250,80,159,38,8,41,35,197,198,199,80,159,34, -8,42,35,83,158,34,16,2,89,162,34,37,49,2,7,223,0,27,28,248,80, -158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37, -198,28,248,80,158,39,34,193,27,28,248,22,149,3,194,193,198,249,80,158,41, -35,248,80,158,42,36,196,27,248,80,158,43,37,197,250,22,152,3,198,195,198, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248, -80,158,39,34,194,250,80,159,41,8,40,35,200,201,202,251,22,176,8,11,6, -10,10,98,97,100,32,115,121,110,116,97,120,202,197,250,80,159,38,8,40,35, -197,198,199,80,159,34,8,41,35,83,158,34,16,2,89,162,34,37,56,2,7, -223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197, -27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,149,3,194, -193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250, -22,152,3,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,202, -197,87,95,28,248,80,158,41,38,195,12,250,22,176,8,11,6,50,50,98,97, -100,32,115,121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101, -32,111,102,32,96,46,39,32,102,111,114,32,112,114,111,99,101,100,117,114,101, -32,98,111,100,121,41,203,28,248,80,158,41,47,195,250,22,176,8,11,6,46, -46,98,97,100,32,115,121,110,116,97,120,32,40,110,111,32,101,120,112,114,101, -115,115,105,111,110,115,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32, -98,111,100,121,41,203,12,27,249,22,152,3,20,15,159,43,45,49,204,27,249, -22,152,3,20,15,159,44,46,49,196,27,249,22,152,3,20,15,159,45,47,49, -248,199,200,249,80,158,45,41,205,27,250,22,67,200,198,199,252,80,158,51,42, -20,15,159,51,48,49,21,95,2,9,2,10,2,11,248,22,58,198,248,22,86, -198,248,22,84,198,250,22,176,8,11,2,8,197,80,159,34,8,40,35,83,158, -34,16,2,89,162,34,36,45,2,12,223,0,27,249,22,152,3,20,15,159,37, -43,49,197,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, -196,27,248,80,158,40,37,197,250,22,152,3,199,195,199,11,28,192,27,248,22, -58,194,27,248,22,59,195,28,248,80,158,39,45,194,249,22,7,195,249,80,159, -42,8,37,35,201,202,250,80,159,41,8,39,35,198,201,200,250,80,159,39,8, -39,35,196,199,198,80,159,34,8,38,35,83,158,34,16,2,89,162,34,37,52, -2,7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,44,27,248,80,158, -39,36,198,28,248,80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195, -27,248,80,158,42,37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80, -158,39,37,198,250,22,152,3,200,195,200,11,28,192,27,248,22,58,194,27,248, -22,84,195,27,248,22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42, -8,38,35,203,27,249,22,67,201,200,251,80,158,47,42,20,15,159,47,44,49, -21,94,2,13,2,14,248,22,58,197,248,22,59,197,27,249,80,159,43,8,37, -35,204,203,249,22,7,195,89,162,34,35,40,9,224,4,2,248,194,248,22,65, -248,195,197,27,28,248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36, -198,27,248,80,158,40,37,199,250,22,152,3,201,195,201,11,28,192,27,248,22, -58,194,27,248,22,59,195,251,22,176,8,11,6,82,82,98,97,100,32,115,121, -110,116,97,120,32,40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105, -101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,110,97,109,101, -44,32,97,110,100,32,110,111,116,32,97,32,110,101,115,116,101,100,32,112,114, -111,99,101,100,117,114,101,32,102,111,114,109,41,203,197,250,22,176,8,11,2, -8,198,80,159,34,8,39,35,83,158,34,16,2,89,162,8,100,36,57,2,15, -223,0,91,159,36,11,90,161,36,34,11,27,249,22,152,3,20,15,159,39,35, -49,199,27,28,248,80,158,39,34,194,249,80,158,40,35,248,80,158,41,36,196, -27,248,80,158,42,37,197,28,248,80,158,42,38,193,248,80,158,42,39,193,11, -11,28,192,27,248,22,58,194,27,248,22,59,195,249,22,7,248,22,159,3,249, -80,158,45,40,20,15,159,45,36,49,197,89,162,34,35,47,9,225,8,9,2, -27,249,22,152,3,20,15,159,39,37,49,198,249,80,158,39,41,196,27,249,22, -67,197,198,251,80,158,44,42,20,15,159,44,38,49,21,94,2,16,2,17,248, -22,59,197,248,22,58,197,27,28,248,80,158,40,34,195,249,80,158,41,35,248, -80,158,42,36,197,27,248,80,158,43,37,198,91,159,37,11,90,161,37,34,11, -250,80,158,48,43,198,35,11,28,194,27,28,248,22,149,3,197,196,201,249,80, -158,48,44,28,248,80,158,49,38,196,248,22,65,248,80,158,50,39,197,11,250, -22,152,3,197,199,197,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,86,196,249,22,7,248,22,159,3,27,249,22,67,199,198,249,80,158,48, -40,20,15,159,48,39,49,249,22,71,248,22,58,197,250,80,158,53,42,20,15, -159,53,40,49,21,93,2,18,248,22,59,200,89,162,34,35,50,9,226,10,11, -2,3,27,249,22,152,3,20,15,159,40,41,49,199,249,80,158,40,41,197,27, -250,22,67,199,198,200,251,80,158,45,42,20,15,159,45,42,49,21,94,2,19, -2,20,249,22,71,248,22,58,199,248,22,86,199,248,22,84,197,250,22,176,8, -11,2,8,197,87,95,249,22,3,89,162,34,35,41,9,224,4,5,28,248,80, -158,36,45,195,12,251,22,176,8,11,6,40,40,110,111,116,32,97,110,32,105, -100,101,110,116,105,102,105,101,114,32,102,111,114,32,112,114,111,99,101,100,117, -114,101,32,97,114,103,117,109,101,110,116,196,198,194,27,248,80,158,38,46,194, -28,192,251,22,176,8,11,6,29,29,100,117,112,108,105,99,97,116,101,32,97, -114,103,117,109,101,110,116,32,105,100,101,110,116,105,102,105,101,114,200,196,12, -193,80,159,34,8,37,35,27,89,162,8,36,35,36,2,21,223,1,89,162,34, -35,52,9,224,0,1,87,94,28,249,22,77,247,22,170,13,21,93,70,101,120, -112,114,101,115,115,105,111,110,250,22,176,8,11,6,36,36,110,111,116,32,97, -108,108,111,119,101,100,32,105,110,32,97,110,32,101,120,112,114,101,115,115,105, -111,110,32,99,111,110,116,101,120,116,197,12,27,249,22,152,3,20,15,159,38, -34,49,197,27,28,248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36, -196,27,248,80,158,41,37,197,28,248,80,158,41,34,193,249,80,158,42,35,248, -80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80, -158,45,44,248,80,158,46,36,195,248,80,158,46,48,248,80,158,47,37,196,11, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248, -80,158,41,45,194,27,249,22,152,3,20,15,159,43,50,49,200,249,80,158,43, -41,202,27,250,22,67,199,200,198,252,80,158,49,42,20,15,159,49,51,49,21, -95,2,22,2,23,2,24,248,22,86,198,248,22,84,198,248,22,58,198,250,80, -159,43,8,42,35,199,202,200,250,80,159,40,8,42,35,196,199,197,250,22,7, -248,196,20,15,159,39,52,49,248,196,20,15,159,39,53,49,248,196,20,15,159, -39,54,49,39,20,99,159,40,16,15,2,80,2,81,2,82,2,83,2,84,2, -85,30,2,26,2,27,2,2,86,2,87,30,2,25,74,115,112,108,105,116,45, -115,116,120,45,108,105,115,116,3,2,88,2,89,30,2,29,1,26,99,104,101, -99,107,45,100,117,112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105, -101,114,0,30,2,25,69,115,116,120,45,110,117,108,108,63,10,2,90,16,21, -33,96,33,101,33,104,33,105,33,106,33,108,33,110,33,111,33,112,33,113,33, -115,33,117,33,118,33,119,33,120,33,121,33,123,33,124,33,126,33,127,33,128, -2,11,16,5,93,2,5,87,95,83,158,34,16,2,89,162,34,36,47,2,7, -223,0,27,28,248,80,158,36,34,195,249,80,158,37,39,248,80,158,38,36,197, -27,248,80,158,39,38,198,28,248,80,158,39,40,193,248,80,158,39,41,193,11, -11,28,192,27,248,22,58,194,27,248,22,59,195,249,80,158,39,42,199,250,80, -158,42,43,20,15,159,42,36,45,21,93,2,61,249,22,2,80,159,44,8,28, -35,199,250,22,176,8,11,2,8,197,80,159,34,8,29,35,83,158,34,16,2, -89,162,35,35,40,9,223,0,250,80,158,37,43,20,15,159,37,37,45,21,93, -2,62,248,22,58,197,80,159,34,8,28,35,89,162,34,35,57,9,223,0,27, -247,22,170,13,87,94,28,249,22,77,194,21,95,66,109,111,100,117,108,101,2, -63,69,116,111,112,45,108,101,118,101,108,12,250,22,176,8,11,6,51,51,97, -108,108,111,119,101,100,32,111,110,108,121,32,97,116,32,116,104,101,32,116,111, -112,45,108,101,118,101,108,32,111,114,32,97,32,109,111,100,117,108,101,32,116, -111,112,45,108,101,118,101,108,197,27,249,22,152,3,20,15,159,38,34,45,197, -27,28,248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,248,80, -158,40,37,248,80,158,41,38,197,11,28,192,20,15,159,37,35,45,27,28,248, -80,158,39,34,195,249,80,158,40,39,248,80,158,41,36,197,27,248,80,158,42, -38,198,28,248,80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,248, -80,158,44,37,248,80,158,45,38,196,11,11,28,192,27,248,22,58,194,27,248, -22,59,195,28,249,22,148,8,199,2,63,249,80,159,42,8,29,35,198,201,27, -250,22,162,8,196,201,248,22,159,3,20,15,159,45,38,45,27,249,22,152,3, -20,15,159,44,39,45,195,27,28,248,80,158,44,34,194,28,27,248,80,158,45, -36,195,28,248,80,158,45,44,193,28,249,22,167,3,194,20,15,159,46,40,45, -9,11,11,27,248,80,158,45,38,195,28,248,80,158,45,40,193,248,80,158,45, -41,193,11,11,11,28,192,250,80,158,46,43,20,15,159,46,41,45,21,93,2, -64,195,27,28,248,80,158,45,34,195,28,27,248,80,158,46,36,196,28,248,80, -158,46,44,193,28,249,22,167,3,194,20,15,159,47,42,45,9,11,11,27,248, -80,158,46,38,196,28,248,80,158,46,34,193,249,80,158,47,35,27,248,80,158, -49,36,196,28,248,80,158,49,40,193,248,22,65,248,80,158,50,41,194,11,27, -248,80,158,49,38,196,28,248,80,158,49,34,193,249,80,158,50,35,248,80,158, -51,36,195,248,80,158,51,37,248,80,158,52,38,196,11,11,11,11,28,192,27, -248,22,58,194,27,248,22,59,195,27,249,22,67,195,196,251,80,158,51,43,20, -15,159,51,43,45,21,94,2,65,2,66,248,22,59,197,248,22,58,197,27,28, -248,80,158,46,34,196,28,27,248,80,158,47,36,197,28,248,80,158,47,44,193, -28,249,22,167,3,194,20,15,159,48,44,45,9,11,11,27,248,80,158,47,38, -197,28,248,80,158,47,40,193,248,80,158,47,41,193,11,11,11,28,192,250,80, -158,48,43,20,15,159,48,45,45,21,93,2,67,195,27,28,248,80,158,47,34, -197,28,27,248,80,158,48,36,198,28,248,80,158,48,44,193,28,249,22,167,3, -194,20,15,159,49,46,45,9,11,11,27,248,80,158,48,38,198,28,248,80,158, -48,40,193,248,80,158,48,41,193,11,11,11,28,192,250,80,158,49,43,20,15, -159,49,47,45,21,93,2,68,195,27,28,248,80,158,48,34,198,28,27,248,80, -158,49,36,199,28,248,80,158,49,44,193,28,249,22,167,3,194,20,15,159,50, -48,45,9,11,11,27,248,80,158,49,38,199,28,248,80,158,49,34,193,249,80, -158,50,35,27,248,80,158,52,36,196,28,248,80,158,52,40,193,248,22,65,248, -80,158,53,41,194,11,27,248,80,158,52,38,196,28,248,80,158,52,34,193,249, -80,158,53,35,248,80,158,54,36,195,248,80,158,54,37,248,80,158,55,38,196, -11,11,11,11,28,192,27,248,22,58,194,27,248,22,59,195,250,22,176,8,11, -6,54,54,115,121,110,116,97,120,32,100,101,102,105,110,105,116,105,111,110,115, -32,110,111,116,32,97,108,108,111,119,101,100,32,119,105,116,104,105,110,32,98, -101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,204,250,80,158,50,43, -20,15,159,50,49,45,21,93,2,69,200,249,80,159,40,8,29,35,196,199,34, -20,99,159,36,16,11,2,80,2,88,2,82,2,90,2,83,2,81,2,84,2, -85,2,86,2,87,2,89,16,16,33,131,2,33,133,2,33,135,2,33,136,2, -33,140,2,33,143,2,33,144,2,33,146,2,33,147,2,33,149,2,33,150,2, -33,152,2,33,153,2,33,155,2,33,156,2,33,158,2,11,9,93,2,79,96, -2,79,2,29,2,25,2,31,0}; - EVAL_ONE_SIZED_STR((char *)expr, 6749); +214,0,224,0,252,0,22,1,39,1,44,1,52,1,56,1,66,1,68,1,74, +1,84,1,94,1,99,1,109,1,112,1,116,1,126,1,133,1,143,1,148,1, +158,1,173,1,176,1,185,1,194,1,204,1,214,1,224,1,234,1,244,1,254, +1,3,2,13,2,27,2,43,2,69,2,76,2,83,2,96,2,103,2,110,2, +117,2,124,2,131,2,138,2,148,2,153,2,163,2,173,2,183,2,185,2,195, +2,205,2,213,2,222,2,236,2,248,2,4,3,16,3,30,3,44,3,64,3, +70,3,84,3,100,3,116,3,132,3,164,3,170,3,192,3,214,3,228,3,244, +3,0,4,19,4,50,4,72,4,125,4,131,4,137,4,149,4,215,4,221,4, +197,5,214,5,220,5,232,5,244,5,8,6,83,6,93,6,125,6,131,6,137, +6,143,6,156,6,217,6,19,7,25,7,38,7,61,7,67,7,73,7,79,7, +97,7,113,7,129,7,179,7,188,7,235,7,246,7,1,8,13,8,35,8,54, +8,219,8,235,8,1,9,8,9,15,9,74,9,85,9,92,9,148,9,161,9, +168,9,227,9,255,9,26,10,85,10,96,10,103,10,166,10,189,10,0,0,48, +25,0,0,65,98,101,103,105,110,29,11,11,77,100,101,102,105,110,101,45,102, +111,114,45,115,121,110,116,97,120,73,100,101,102,105,110,101,45,115,121,110,116, +97,120,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,66,100, +101,102,105,110,101,68,116,114,121,45,110,101,120,116,6,10,10,98,97,100,32, +115,121,110,116,97,120,3,1,4,103,54,53,51,3,1,4,103,54,53,49,3, +1,4,103,54,53,50,73,103,101,110,101,114,97,108,45,112,114,111,116,111,3, +1,4,103,54,52,49,3,1,4,103,54,52,48,72,115,105,109,112,108,101,45, +112,114,111,116,111,3,1,4,103,54,50,54,3,1,4,103,54,50,53,3,1, +4,103,54,50,55,3,1,4,103,54,51,50,3,1,4,103,54,51,49,62,109, +107,3,1,4,103,54,54,55,3,1,4,103,54,54,53,3,1,4,103,54,54, +54,65,35,37,115,116,120,69,35,37,115,116,120,99,97,115,101,1,26,100,97, +116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101,99,116,47,115,104, +97,112,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114,110,45,115,117, +98,115,116,105,116,117,116,101,76,35,37,115,116,120,99,97,115,101,45,115,99, +104,101,109,101,64,104,101,114,101,67,35,37,113,113,115,116,120,63,115,116,120, +3,1,7,101,110,118,51,52,54,57,61,95,65,112,114,111,116,111,3,1,7, +101,110,118,51,52,55,48,3,1,7,101,110,118,51,52,55,56,64,100,101,115, +116,3,1,7,101,110,118,51,52,56,53,62,105,100,63,97,114,103,3,1,7, +101,110,118,51,52,56,54,66,108,97,109,98,100,97,3,1,7,101,110,118,51, +53,49,53,64,114,101,115,116,3,1,7,101,110,118,51,53,49,54,74,35,37, +115,109,97,108,108,45,115,99,104,101,109,101,29,11,11,68,104,101,114,101,45, +115,116,120,3,1,6,101,110,118,52,53,54,3,1,7,101,110,118,51,53,53, +50,3,1,7,101,110,118,51,53,53,51,3,1,7,101,110,118,51,52,55,55, +3,1,7,101,110,118,51,54,52,51,3,1,7,101,110,118,51,54,52,52,3, +1,7,101,110,118,51,54,57,49,64,101,120,112,114,3,1,7,101,110,118,51, +54,57,50,73,100,101,102,105,110,101,45,118,97,108,117,101,115,75,100,101,102, +105,110,101,45,115,121,110,116,97,120,101,115,1,24,100,101,102,105,110,101,45, +118,97,108,117,101,115,45,102,111,114,45,115,121,110,116,97,120,3,1,4,103, +54,55,52,3,1,4,103,54,55,51,72,109,111,100,117,108,101,45,98,101,103, +105,110,3,1,4,103,54,56,51,3,1,4,103,54,56,53,3,1,4,103,54, +56,52,3,1,4,103,54,56,54,3,1,4,103,54,56,55,3,1,4,103,54, +56,56,3,1,7,101,110,118,51,55,51,48,64,101,108,101,109,3,1,7,101, +110,118,51,55,51,49,3,1,7,101,110,118,51,55,52,51,3,1,7,101,110, +118,51,55,52,52,61,118,3,1,7,101,110,118,51,55,54,55,3,1,7,101, +110,118,51,55,54,56,67,114,101,113,117,105,114,101,68,35,37,107,101,114,110, +101,108,30,2,25,69,115,116,120,45,112,97,105,114,63,11,30,2,25,67,99, +111,110,115,47,35,102,1,30,2,25,67,115,116,120,45,99,97,114,5,30,2, +25,67,115,116,120,45,99,100,114,6,30,2,25,69,115,116,120,45,108,105,115, +116,63,8,30,2,25,69,115,116,120,45,62,108,105,115,116,4,30,68,35,37, +115,116,120,108,111,99,68,114,101,108,111,99,97,116,101,0,30,2,26,2,28, +0,30,2,25,69,97,112,112,101,110,100,47,35,102,0,30,2,25,71,105,100, +101,110,116,105,102,105,101,114,63,2,30,2,25,71,115,116,120,45,110,117,108, +108,47,35,102,9,16,4,11,11,2,32,3,1,7,101,110,118,51,52,53,52, +16,4,11,11,77,100,101,102,105,110,101,45,118,97,108,117,101,115,45,115,116, +120,3,1,7,101,110,118,51,52,53,51,95,8,193,11,16,0,97,10,35,11, +95,159,2,31,9,11,159,2,25,9,11,159,2,29,9,11,16,0,96,10,34, +11,16,8,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,18,98, +2,30,8,96,8,95,8,94,8,93,8,92,16,4,11,11,2,35,3,1,7, +101,110,118,51,52,55,57,16,6,11,11,2,15,2,12,2,37,2,37,16,8, +11,11,2,34,2,35,64,98,111,100,121,2,36,2,36,2,36,16,8,11,11, +3,1,4,103,54,48,53,3,1,4,103,54,48,54,3,1,4,103,54,48,55, +2,33,2,33,2,33,18,102,2,30,8,96,8,95,8,94,8,93,8,92,8, +101,8,100,8,99,8,98,103,8,96,8,95,8,94,8,93,8,92,8,101,8, +100,8,99,8,98,16,6,11,11,3,1,4,103,54,50,48,3,1,4,103,54, +50,49,2,39,2,39,16,6,11,11,2,40,2,41,2,42,2,42,18,158,2, +38,8,103,18,158,2,30,8,103,18,158,160,10,2,43,2,16,2,17,8,103, +103,8,96,8,95,8,94,8,93,8,92,8,101,8,100,8,99,8,98,16,8, +11,11,3,1,4,103,54,49,55,3,1,4,103,54,49,56,3,1,4,103,54, +49,57,2,44,2,44,2,44,16,8,11,11,2,40,2,41,2,45,2,46,2, +46,2,46,18,158,2,38,8,107,102,97,10,34,11,95,159,68,35,37,112,97, +114,97,109,122,9,11,159,2,47,9,11,159,2,25,9,11,16,14,2,27,2, +48,2,28,2,48,66,115,121,110,116,97,120,2,48,1,20,99,97,116,99,104, +45,101,108,108,105,112,115,105,115,45,101,114,114,111,114,2,48,78,112,97,116, +116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,2,48,75,115,117,98, +115,116,105,116,117,116,101,45,115,116,111,112,2,48,73,115,121,110,116,97,120, +45,99,97,115,101,42,42,2,48,97,10,35,11,95,159,64,35,37,115,99,9, +11,159,2,47,9,11,159,2,25,9,11,16,0,95,8,193,11,16,0,16,4, +11,11,61,120,3,1,6,101,110,118,52,53,52,16,4,11,11,2,49,2,50, +16,4,11,11,2,49,2,50,16,4,11,11,2,49,3,1,6,101,110,118,52, +53,56,13,16,4,35,2,48,2,26,11,93,8,134,47,16,4,11,11,61,114, +3,1,7,101,110,118,51,53,50,51,18,16,2,158,94,10,2,18,8,109,95, +9,8,134,47,2,26,18,158,2,30,8,107,18,158,160,10,2,43,2,19,2, +20,8,107,16,6,11,11,2,15,2,12,2,37,2,37,18,101,2,30,8,96, +8,95,8,94,8,93,8,92,8,101,8,100,8,113,102,8,96,8,95,8,94, +8,93,8,92,8,101,8,100,8,113,16,8,11,11,3,1,4,103,54,51,53, +3,1,4,103,54,51,54,3,1,4,103,54,51,55,2,51,2,51,2,51,16, +8,11,11,69,115,111,109,101,116,104,105,110,103,64,109,111,114,101,2,45,2, +52,2,52,2,52,18,158,159,10,2,13,2,14,8,115,100,8,96,8,95,8, +94,8,93,8,92,8,101,8,100,16,6,11,11,2,40,66,109,107,45,114,104, +115,2,53,2,53,18,158,2,30,8,117,18,158,2,30,8,117,18,158,2,30, +8,117,18,158,96,10,2,9,93,2,10,2,11,8,117,18,100,2,30,8,96, +8,95,8,94,8,93,8,92,16,8,11,11,3,1,4,103,54,49,49,3,1, +4,103,54,49,50,3,1,4,103,54,49,51,2,54,2,54,2,54,16,8,11, +11,2,34,2,40,2,45,2,55,2,55,2,55,99,8,96,8,95,8,94,8, +93,8,92,16,8,11,11,3,1,4,103,54,49,52,3,1,4,103,54,49,53, +3,1,4,103,54,49,54,2,56,2,56,2,56,16,8,11,11,2,34,2,40, +2,57,2,58,2,58,2,58,18,158,2,30,8,123,18,158,96,10,2,22,93, +2,23,2,24,8,123,96,8,96,8,95,8,94,16,4,11,11,2,21,3,1, +7,101,110,118,51,52,53,50,18,158,2,59,8,126,18,158,2,60,8,126,18, +158,2,61,8,126,16,4,11,11,63,99,116,120,3,1,7,101,110,118,51,55, +49,53,16,4,11,11,2,32,3,1,7,101,110,118,51,55,49,52,18,98,2, +30,8,96,8,95,8,94,8,131,2,8,130,2,99,8,96,8,95,8,94,8, +131,2,8,130,2,16,4,11,11,3,1,4,103,54,55,50,3,1,7,101,110, +118,51,55,50,48,16,4,11,11,2,34,3,1,7,101,110,118,51,55,50,49, +18,158,94,10,2,1,8,133,2,99,8,96,8,95,8,94,8,131,2,8,130, +2,16,6,11,11,3,1,4,103,54,54,56,3,1,4,103,54,54,57,2,71, +2,71,16,6,11,11,2,34,2,72,2,73,2,73,18,158,159,10,2,1,2, +62,8,135,2,18,158,95,10,2,5,2,63,8,135,2,16,6,11,11,2,34, +2,72,2,75,2,75,16,6,11,11,3,1,4,103,54,55,48,3,1,4,103, +54,55,49,2,74,2,74,99,8,96,8,95,8,94,8,131,2,8,130,2,8, +139,2,8,138,2,18,158,111,10,2,1,2,59,2,60,2,61,64,115,101,116, +33,70,108,101,116,45,118,97,108,117,101,115,71,108,101,116,42,45,118,97,108, +117,101,115,73,108,101,116,114,101,99,45,118,97,108,117,101,115,2,43,71,99, +97,115,101,45,108,97,109,98,100,97,62,105,102,65,113,117,111,116,101,1,22, +108,101,116,114,101,99,45,115,121,110,116,97,120,101,115,43,118,97,108,117,101, +115,76,102,108,117,105,100,45,108,101,116,45,115,121,110,116,97,120,1,22,119, +105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107, +65,35,37,97,112,112,65,35,37,116,111,112,67,35,37,100,97,116,117,109,8, +140,2,16,4,11,11,61,101,3,1,7,101,110,118,51,55,52,57,100,8,96, +8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2,18,158, +2,30,8,143,2,18,158,2,1,8,143,2,102,8,96,8,95,8,94,8,131, +2,8,130,2,8,139,2,8,138,2,8,142,2,16,4,11,11,3,1,4,103, +54,56,50,3,1,7,101,110,118,51,55,53,53,16,4,11,11,2,76,3,1, +7,101,110,118,51,55,53,54,18,158,159,10,2,5,2,65,8,146,2,18,158, +2,59,8,143,2,102,8,96,8,95,8,94,8,131,2,8,130,2,8,139,2, +8,138,2,8,142,2,16,6,11,11,3,1,4,103,54,56,48,3,1,4,103, +54,56,49,2,77,2,77,16,6,11,11,2,40,2,57,2,78,2,78,18,158, +96,10,2,61,2,66,2,67,8,149,2,18,158,2,79,8,143,2,102,8,96, +8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2,16,4, +11,11,3,1,4,103,54,55,57,3,1,7,101,110,118,51,55,55,57,16,4, +11,11,2,76,3,1,7,101,110,118,51,55,56,48,18,158,159,10,78,114,101, +113,117,105,114,101,45,102,111,114,45,115,121,110,116,97,120,2,68,8,152,2, +18,158,1,20,114,101,113,117,105,114,101,45,102,111,114,45,116,101,109,112,108, +97,116,101,8,143,2,102,8,96,8,95,8,94,8,131,2,8,130,2,8,139, +2,8,138,2,8,142,2,16,4,11,11,3,1,4,103,54,55,56,3,1,7, +101,110,118,51,55,56,57,16,4,11,11,2,76,3,1,7,101,110,118,51,55, +57,48,18,158,159,10,2,79,2,69,8,155,2,18,158,2,60,8,143,2,102, +8,96,8,95,8,94,8,131,2,8,130,2,8,139,2,8,138,2,8,142,2, +16,4,11,11,3,1,4,103,54,55,53,3,1,7,101,110,118,51,56,48,56, +16,4,11,11,65,111,116,104,101,114,3,1,7,101,110,118,51,56,48,57,18, +158,96,10,2,61,9,95,2,1,2,70,93,66,118,97,108,117,101,115,8,158, +2,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114, +68,35,37,100,101,102,105,110,101,2,2,10,10,10,34,80,158,34,34,20,99, +159,34,16,0,16,0,11,11,16,0,34,11,16,4,2,3,2,4,2,5,2, +6,16,4,11,11,11,11,16,4,2,3,2,4,2,5,2,6,34,38,94,16, +5,95,2,6,2,4,2,3,87,99,83,158,34,16,2,89,162,34,37,59,2, +7,223,0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36, +197,27,248,80,158,39,37,198,28,248,80,158,39,34,193,27,28,248,22,149,3, +194,193,198,249,80,158,41,35,248,80,158,42,36,196,27,248,80,158,43,37,197, +250,22,152,3,198,195,198,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,86,196,28,248,80,158,39,45,194,250,22,176,8,11,27,249,22,152, +3,20,15,159,44,49,49,204,27,28,248,80,158,44,34,194,249,80,158,45,35, +248,80,158,46,36,196,27,248,80,158,47,37,197,28,248,80,158,47,34,193,249, +80,158,48,44,248,80,158,49,36,195,248,80,158,49,48,248,80,158,50,37,196, +11,11,28,192,27,248,22,58,194,27,248,22,59,195,6,46,46,98,97,100,32, +115,121,110,116,97,120,32,40,122,101,114,111,32,101,120,112,114,101,115,115,105, +111,110,115,32,97,102,116,101,114,32,105,100,101,110,116,105,102,105,101,114,41, +27,28,248,80,158,45,34,195,249,80,158,46,35,248,80,158,47,36,197,27,248, +80,158,48,37,198,28,248,80,158,48,34,193,249,80,158,49,35,248,80,158,50, +36,195,27,248,80,158,51,37,196,28,248,80,158,51,38,193,248,80,158,51,39, +193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196, +6,50,50,98,97,100,32,115,121,110,116,97,120,32,40,109,117,108,116,105,112, +108,101,32,101,120,112,114,101,115,115,105,111,110,115,32,97,102,116,101,114,32, +105,100,101,110,116,105,102,105,101,114,41,27,28,248,80,158,46,34,196,249,80, +158,47,35,248,80,158,48,36,198,27,248,80,158,49,37,199,28,248,80,158,49, +34,193,27,28,248,22,149,3,194,193,199,249,80,158,51,35,248,80,158,52,36, +196,27,248,80,158,53,37,197,250,22,152,3,198,195,198,11,11,28,192,27,248, +22,58,194,27,248,22,84,195,27,248,22,86,196,6,31,31,98,97,100,32,115, +121,110,116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102, +32,96,46,39,41,250,22,176,8,11,2,8,198,201,250,80,159,41,8,41,35, +200,201,202,250,80,159,38,8,41,35,197,198,199,80,159,34,8,42,35,83,158, +34,16,2,89,162,34,37,49,2,7,223,0,27,28,248,80,158,36,34,195,249, +80,158,37,35,248,80,158,38,36,197,27,248,80,158,39,37,198,28,248,80,158, +39,34,193,27,28,248,22,149,3,194,193,198,249,80,158,41,35,248,80,158,42, +36,196,27,248,80,158,43,37,197,250,22,152,3,198,195,198,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,39,34,194, +250,80,159,41,8,40,35,200,201,202,251,22,176,8,11,6,10,10,98,97,100, +32,115,121,110,116,97,120,202,197,250,80,159,38,8,40,35,197,198,199,80,159, +34,8,41,35,83,158,34,16,2,89,162,34,37,56,2,7,223,0,27,28,248, +80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80,158,39, +37,198,28,248,80,158,39,34,193,27,28,248,22,149,3,194,193,198,249,80,158, +41,35,248,80,158,42,36,196,27,248,80,158,43,37,197,250,22,152,3,198,195, +198,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,91, +159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,202,197,87,95,28,248, +80,158,41,38,195,12,250,22,176,8,11,6,50,50,98,97,100,32,115,121,110, +116,97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96, +46,39,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,98,111,100,121, +41,203,28,248,80,158,41,47,195,250,22,176,8,11,6,46,46,98,97,100,32, +115,121,110,116,97,120,32,40,110,111,32,101,120,112,114,101,115,115,105,111,110, +115,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,98,111,100,121,41, +203,12,27,249,22,152,3,20,15,159,43,45,49,204,27,249,22,152,3,20,15, +159,44,46,49,196,27,249,22,152,3,20,15,159,45,47,49,248,199,200,249,80, +158,45,41,205,27,250,22,67,198,199,200,252,80,158,51,42,20,15,159,51,48, +49,21,95,2,9,2,10,2,11,248,22,86,198,248,22,84,198,248,22,58,198, +250,22,176,8,11,2,8,197,80,159,34,8,40,35,83,158,34,16,2,89,162, +34,36,45,2,12,223,0,27,249,22,152,3,20,15,159,37,43,49,197,27,28, +248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158, +40,37,197,250,22,152,3,199,195,199,11,28,192,27,248,22,58,194,27,248,22, +59,195,28,248,80,158,39,45,194,249,22,7,195,249,80,159,42,8,37,35,201, +202,250,80,159,41,8,39,35,198,201,200,250,80,159,39,8,39,35,196,199,198, +80,159,34,8,38,35,83,158,34,16,2,89,162,34,37,52,2,7,223,0,27, +28,248,80,158,36,34,195,249,80,158,37,44,27,248,80,158,39,36,198,28,248, +80,158,39,34,193,249,80,158,40,35,248,80,158,41,36,195,27,248,80,158,42, +37,196,248,22,65,250,22,152,3,199,196,199,11,27,248,80,158,39,37,198,250, +22,152,3,200,195,200,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, +22,86,196,91,159,36,11,90,161,36,34,11,249,80,159,42,8,38,35,203,27, +249,22,67,201,200,251,80,158,47,42,20,15,159,47,44,49,21,94,2,13,2, +14,248,22,58,197,248,22,59,197,27,249,80,159,43,8,37,35,204,203,249,22, +7,195,89,162,34,35,40,9,224,4,2,248,194,248,22,65,248,195,197,27,28, +248,80,158,37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248,80,158, +40,37,199,250,22,152,3,201,195,201,11,28,192,27,248,22,58,194,27,248,22, +59,195,251,22,176,8,11,6,82,82,98,97,100,32,115,121,110,116,97,120,32, +40,110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,32,102,111, +114,32,112,114,111,99,101,100,117,114,101,32,110,97,109,101,44,32,97,110,100, +32,110,111,116,32,97,32,110,101,115,116,101,100,32,112,114,111,99,101,100,117, +114,101,32,102,111,114,109,41,203,197,250,22,176,8,11,2,8,198,80,159,34, +8,39,35,83,158,34,16,2,89,162,8,100,36,57,2,15,223,0,91,159,36, +11,90,161,36,34,11,27,249,22,152,3,20,15,159,39,35,49,199,27,28,248, +80,158,39,34,194,249,80,158,40,35,248,80,158,41,36,196,27,248,80,158,42, +37,197,28,248,80,158,42,38,193,248,80,158,42,39,193,11,11,28,192,27,248, +22,58,194,27,248,22,59,195,249,22,7,248,22,159,3,249,80,158,45,40,20, +15,159,45,36,49,197,89,162,34,35,47,9,225,8,9,2,27,249,22,152,3, +20,15,159,39,37,49,198,249,80,158,39,41,196,27,249,22,67,197,198,251,80, +158,44,42,20,15,159,44,38,49,21,94,2,16,2,17,248,22,59,197,248,22, +58,197,27,28,248,80,158,40,34,195,249,80,158,41,35,248,80,158,42,36,197, +27,248,80,158,43,37,198,91,159,37,11,90,161,37,34,11,250,80,158,48,43, +198,35,11,28,194,27,28,248,22,149,3,197,196,201,249,80,158,48,44,28,248, +80,158,49,38,196,248,22,65,248,80,158,50,39,197,11,250,22,152,3,197,199, +197,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,249, +22,7,248,22,159,3,27,249,22,67,199,198,249,80,158,48,40,20,15,159,48, +39,49,249,22,71,248,22,58,197,250,80,158,53,42,20,15,159,53,40,49,21, +93,2,18,248,22,59,200,89,162,34,35,50,9,226,10,11,2,3,27,249,22, +152,3,20,15,159,40,41,49,199,249,80,158,40,41,197,27,250,22,67,198,199, +200,251,80,158,45,42,20,15,159,45,42,49,21,94,2,19,2,20,249,22,71, +248,22,84,199,248,22,86,199,248,22,58,197,250,22,176,8,11,2,8,197,87, +95,249,22,3,89,162,34,35,41,9,224,4,5,28,248,80,158,36,45,195,12, +251,22,176,8,11,6,40,40,110,111,116,32,97,110,32,105,100,101,110,116,105, +102,105,101,114,32,102,111,114,32,112,114,111,99,101,100,117,114,101,32,97,114, +103,117,109,101,110,116,196,198,194,27,248,80,158,38,46,194,28,192,251,22,176, +8,11,6,29,29,100,117,112,108,105,99,97,116,101,32,97,114,103,117,109,101, +110,116,32,105,100,101,110,116,105,102,105,101,114,200,196,12,193,80,159,34,8, +37,35,27,89,162,8,36,35,36,2,21,223,1,89,162,34,35,52,9,224,0, +1,87,94,28,249,22,77,247,22,170,13,21,93,70,101,120,112,114,101,115,115, +105,111,110,250,22,176,8,11,6,36,36,110,111,116,32,97,108,108,111,119,101, +100,32,105,110,32,97,110,32,101,120,112,114,101,115,115,105,111,110,32,99,111, +110,116,101,120,116,197,12,27,249,22,152,3,20,15,159,38,34,49,197,27,28, +248,80,158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,27,248,80,158, +41,37,197,28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195, +27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,44,248,80, +158,46,36,195,248,80,158,46,48,248,80,158,47,37,196,11,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,41,45,194, +27,249,22,152,3,20,15,159,43,50,49,200,249,80,158,43,41,202,27,250,22, +67,199,200,198,252,80,158,49,42,20,15,159,49,51,49,21,95,2,22,2,23, +2,24,248,22,86,198,248,22,84,198,248,22,58,198,250,80,159,43,8,42,35, +199,202,200,250,80,159,40,8,42,35,196,199,197,250,22,7,248,196,20,15,159, +39,52,49,248,196,20,15,159,39,53,49,248,196,20,15,159,39,54,49,39,20, +99,159,40,16,15,2,81,2,82,2,83,2,84,2,85,2,86,30,2,26,2, +27,2,2,87,2,88,30,2,25,74,115,112,108,105,116,45,115,116,120,45,108, +105,115,116,3,2,89,2,90,30,2,29,1,26,99,104,101,99,107,45,100,117, +112,108,105,99,97,116,101,45,105,100,101,110,116,105,102,105,101,114,0,30,2, +25,69,115,116,120,45,110,117,108,108,63,10,2,91,16,21,33,97,33,102,33, +104,33,105,33,106,33,108,33,110,33,111,33,112,33,114,33,116,33,118,33,119, +33,120,33,121,33,122,33,124,33,125,33,127,33,128,2,33,129,2,11,16,5, +93,2,5,87,95,83,158,34,16,2,89,162,34,36,47,2,7,223,0,27,28, +248,80,158,36,34,195,249,80,158,37,39,248,80,158,38,36,197,27,248,80,158, +39,38,198,28,248,80,158,39,40,193,248,80,158,39,41,193,11,11,28,192,27, +248,22,58,194,27,248,22,59,195,249,80,158,39,42,199,250,80,158,42,43,20, +15,159,42,36,45,21,93,2,62,249,22,2,80,159,44,8,28,35,199,250,22, +176,8,11,2,8,197,80,159,34,8,29,35,83,158,34,16,2,89,162,35,35, +40,9,223,0,250,80,158,37,43,20,15,159,37,37,45,21,93,2,63,248,22, +58,197,80,159,34,8,28,35,89,162,34,35,57,9,223,0,27,247,22,170,13, +87,94,28,249,22,77,194,21,95,66,109,111,100,117,108,101,2,64,69,116,111, +112,45,108,101,118,101,108,12,250,22,176,8,11,6,51,51,97,108,108,111,119, +101,100,32,111,110,108,121,32,97,116,32,116,104,101,32,116,111,112,45,108,101, +118,101,108,32,111,114,32,97,32,109,111,100,117,108,101,32,116,111,112,45,108, +101,118,101,108,197,27,249,22,152,3,20,15,159,38,34,45,197,27,28,248,80, +158,38,34,194,249,80,158,39,35,248,80,158,40,36,196,248,80,158,40,37,248, +80,158,41,38,197,11,28,192,20,15,159,37,35,45,27,28,248,80,158,39,34, +195,249,80,158,40,39,248,80,158,41,36,197,27,248,80,158,42,38,198,28,248, +80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,248,80,158,44,37, +248,80,158,45,38,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,28, +249,22,148,8,199,2,64,249,80,159,42,8,29,35,198,201,27,250,22,162,8, +196,201,248,22,159,3,20,15,159,45,38,45,27,249,22,152,3,20,15,159,44, +39,45,195,27,28,248,80,158,44,34,194,28,27,248,80,158,45,36,195,28,248, +80,158,45,44,193,28,249,22,167,3,194,20,15,159,46,40,45,9,11,11,27, +248,80,158,45,38,195,28,248,80,158,45,40,193,248,80,158,45,41,193,11,11, +11,28,192,250,80,158,46,43,20,15,159,46,41,45,21,93,2,65,195,27,28, +248,80,158,45,34,195,28,27,248,80,158,46,36,196,28,248,80,158,46,44,193, +28,249,22,167,3,194,20,15,159,47,42,45,9,11,11,27,248,80,158,46,38, +196,28,248,80,158,46,34,193,249,80,158,47,35,27,248,80,158,49,36,196,28, +248,80,158,49,40,193,248,22,65,248,80,158,50,41,194,11,27,248,80,158,49, +38,196,28,248,80,158,49,34,193,249,80,158,50,35,248,80,158,51,36,195,248, +80,158,51,37,248,80,158,52,38,196,11,11,11,11,28,192,27,248,22,58,194, +27,248,22,59,195,27,249,22,67,195,196,251,80,158,51,43,20,15,159,51,43, +45,21,94,2,66,2,67,248,22,59,197,248,22,58,197,27,28,248,80,158,46, +34,196,28,27,248,80,158,47,36,197,28,248,80,158,47,44,193,28,249,22,167, +3,194,20,15,159,48,44,45,9,11,11,27,248,80,158,47,38,197,28,248,80, +158,47,40,193,248,80,158,47,41,193,11,11,11,28,192,250,80,158,48,43,20, +15,159,48,45,45,21,93,2,68,195,27,28,248,80,158,47,34,197,28,27,248, +80,158,48,36,198,28,248,80,158,48,44,193,28,249,22,167,3,194,20,15,159, +49,46,45,9,11,11,27,248,80,158,48,38,198,28,248,80,158,48,40,193,248, +80,158,48,41,193,11,11,11,28,192,250,80,158,49,43,20,15,159,49,47,45, +21,93,2,69,195,27,28,248,80,158,48,34,198,28,27,248,80,158,49,36,199, +28,248,80,158,49,44,193,28,249,22,167,3,194,20,15,159,50,48,45,9,11, +11,27,248,80,158,49,38,199,28,248,80,158,49,34,193,249,80,158,50,35,27, +248,80,158,52,36,196,28,248,80,158,52,40,193,248,22,65,248,80,158,53,41, +194,11,27,248,80,158,52,38,196,28,248,80,158,52,34,193,249,80,158,53,35, +248,80,158,54,36,195,248,80,158,54,37,248,80,158,55,38,196,11,11,11,11, +28,192,27,248,22,58,194,27,248,22,59,195,250,22,176,8,11,6,54,54,115, +121,110,116,97,120,32,100,101,102,105,110,105,116,105,111,110,115,32,110,111,116, +32,97,108,108,111,119,101,100,32,119,105,116,104,105,110,32,98,101,103,105,110, +45,102,111,114,45,115,121,110,116,97,120,204,250,80,158,50,43,20,15,159,50, +49,45,21,93,2,70,200,249,80,159,40,8,29,35,196,199,34,20,99,159,36, +16,11,2,81,2,89,2,83,2,91,2,84,2,82,2,85,2,86,2,87,2, +88,2,90,16,16,33,132,2,33,134,2,33,136,2,33,137,2,33,141,2,33, +144,2,33,145,2,33,147,2,33,148,2,33,150,2,33,151,2,33,153,2,33, +154,2,33,156,2,33,157,2,33,159,2,11,9,93,2,80,96,2,80,2,29, +2,25,2,31,0}; + EVAL_ONE_SIZED_STR((char *)expr, 6787); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,182,1,0,0,1,0,0,6,0,9,0,24,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,181,1,0,0,1,0,0,6,0,9,0,24,0, 37,0,46,0,56,0,71,0,77,0,103,0,112,0,137,0,159,0,187,0,207, 0,225,0,239,0,0,1,18,1,49,1,78,1,103,1,132,1,166,1,198,1, -216,1,250,1,10,2,36,2,65,2,83,2,115,2,134,2,163,2,186,2,198, -2,217,2,231,2,236,2,247,2,254,2,11,3,17,3,32,3,42,3,45,3, +216,1,250,1,10,2,36,2,65,2,83,2,115,2,134,2,163,2,186,2,191, +2,198,2,213,2,219,2,231,2,234,2,244,2,255,2,12,3,17,3,31,3, 50,3,60,3,67,3,74,3,81,3,88,3,95,3,102,3,115,3,121,3,131, 3,157,3,162,3,171,3,186,3,194,3,218,3,226,3,243,3,245,3,255,3, 1,4,3,4,13,4,19,4,29,4,39,4,46,4,53,4,60,4,67,4,74, @@ -2796,401 +2800,399 @@ 41,7,48,7,55,7,62,7,69,7,76,7,86,7,91,7,104,7,112,7,116, 7,147,7,149,7,177,7,182,7,187,7,193,7,203,7,213,7,223,7,233,7, 244,7,255,7,9,8,16,8,23,8,30,8,41,8,46,8,51,8,54,8,61, -8,68,8,75,8,82,8,89,8,99,8,109,8,116,8,123,8,130,8,140,8, -150,8,160,8,170,8,177,8,184,8,191,8,201,8,207,8,212,8,222,8,229, -8,236,8,243,8,250,8,8,9,13,9,19,9,29,9,39,9,46,9,53,9, -60,9,67,9,74,9,81,9,88,9,95,9,102,9,109,9,113,9,118,9,123, -9,136,9,146,9,156,9,166,9,176,9,183,9,190,9,200,9,210,9,214,9, -219,9,222,9,240,9,242,9,247,9,0,10,14,10,26,10,38,10,50,10,64, -10,80,10,86,10,100,10,114,10,130,10,136,10,158,10,88,11,104,11,160,11, -178,11,197,11,253,11,16,12,32,12,52,12,58,12,74,12,87,12,94,12,141, -12,158,12,168,12,241,12,0,13,86,13,109,13,142,13,254,13,39,14,72,14, -90,14,105,14,111,14,132,14,153,14,169,14,208,14,26,15,45,15,52,15,89, -15,97,15,105,15,126,15,148,15,155,15,163,15,189,15,200,15,216,15,226,15, -236,15,251,15,1,16,26,16,131,16,197,16,223,16,29,17,59,17,70,17,136, -17,162,17,230,17,250,17,10,18,26,18,79,18,96,18,106,18,113,18,120,18, -127,18,134,18,141,18,158,18,174,18,242,18,2,19,38,19,92,19,111,19,118, -19,126,19,134,19,191,19,226,19,3,20,71,20,92,20,109,20,125,20,216,20, -15,21,22,21,29,21,36,21,43,21,50,21,76,21,93,21,122,21,141,21,212, -21,228,21,5,22,59,22,81,22,88,22,96,22,103,22,111,22,209,22,216,22, -223,22,230,22,93,23,106,23,119,23,135,23,168,23,227,23,248,23,51,24,72, -24,89,24,105,24,157,24,179,24,235,24,243,24,250,24,2,25,96,25,117,25, -133,25,166,25,234,25,255,25,67,26,83,26,100,26,116,26,199,26,228,26,245, -26,5,27,105,27,131,27,164,27,181,27,197,27,9,28,25,28,58,28,112,28, -131,28,138,28,146,28,203,28,252,28,9,29,46,29,79,29,147,29,168,29,185, -29,201,29,13,30,141,30,0,0,182,67,0,0,65,98,101,103,105,110,29,11, -11,74,115,116,114,117,99,116,58,112,114,111,109,105,115,101,72,109,97,107,101, -45,112,114,111,109,105,115,101,68,112,114,111,109,105,115,101,63,69,112,114,111, -109,105,115,101,45,112,74,115,101,116,45,112,114,111,109,105,115,101,45,112,33, -65,102,111,114,99,101,1,24,99,117,114,114,101,110,116,45,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,68,35,37,112,97,114,97,109,122,1, -23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116, -105,111,110,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110, -45,107,101,121,1,26,99,97,108,108,45,119,105,116,104,45,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,79,115,116,114,117,99,116,58,98,114, -101,97,107,45,112,97,114,97,109,122,77,109,97,107,101,45,98,114,101,97,107, -45,112,97,114,97,109,122,73,98,114,101,97,107,45,112,97,114,97,109,122,63, -76,98,114,101,97,107,45,112,97,114,97,109,122,45,114,101,102,77,98,114,101, -97,107,45,112,97,114,97,109,122,45,115,101,116,33,1,29,115,116,114,117,99, -116,58,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116, -105,111,110,1,27,109,97,107,101,45,98,114,101,97,107,45,112,97,114,97,109, -101,116,101,114,105,122,97,116,105,111,110,1,23,98,114,101,97,107,45,112,97, -114,97,109,101,116,101,114,105,122,97,116,105,111,110,63,1,27,98,114,101,97, -107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,99,101, -108,108,1,32,115,101,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116, -101,114,105,122,97,116,105,111,110,45,99,101,108,108,33,1,30,99,117,114,114, -101,110,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122, -97,116,105,111,110,77,98,114,101,97,107,45,101,110,97,98,108,101,100,45,107, -101,121,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97,107,45,112, -97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,75,99,104,101,99,107, -45,102,111,114,45,98,114,101,97,107,1,24,115,101,108,101,99,116,45,104,97, -110,100,108,101,114,47,110,111,45,98,114,101,97,107,115,1,27,115,101,108,101, -99,116,45,104,97,110,100,108,101,114,47,98,114,101,97,107,115,45,97,115,45, -105,115,77,102,97,108,115,101,45,116,104,114,101,97,100,45,99,101,108,108,1, -30,99,104,101,99,107,45,119,105,116,104,45,104,97,110,100,108,101,114,115,45, -105,110,45,99,111,110,116,101,120,116,78,104,97,110,100,108,101,114,45,112,114, -111,109,112,116,45,107,101,121,1,27,99,97,108,108,45,119,105,116,104,45,101, -120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,1,21,101,120,99, -101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,71,115,101, -116,33,45,118,97,108,117,101,115,78,112,97,114,97,109,101,116,101,114,105,122, -101,45,98,114,101,97,107,73,119,105,116,104,45,104,97,110,100,108,101,114,115, -64,99,97,115,101,70,108,101,116,45,115,116,114,117,99,116,66,108,101,116,47, -99,99,72,112,97,114,97,109,101,116,101,114,105,122,101,65,100,101,108,97,121, -74,119,105,116,104,45,104,97,110,100,108,101,114,115,42,69,102,108,117,105,100, -45,108,101,116,62,100,111,64,116,105,109,101,69,99,97,115,101,45,116,101,115, -116,3,1,4,103,54,57,54,3,1,4,103,54,57,53,3,1,4,103,54,57, -56,3,1,4,103,54,57,55,3,1,4,103,55,48,48,3,1,4,103,54,57, -57,6,10,10,98,97,100,32,115,121,110,116,97,120,65,35,37,115,116,120,69, -35,37,115,116,120,99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116, -101,114,110,45,115,117,98,115,116,105,116,117,116,101,64,104,101,114,101,68,35, -37,100,101,102,105,110,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109, -101,67,112,114,111,109,105,115,101,1,22,98,114,101,97,107,45,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,67,35,37,113,113,115,116,120,76, -35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,61,120,3,1,7, -101,110,118,51,56,50,50,61,95,61,107,3,1,7,101,110,118,51,56,50,51, -65,113,117,111,116,101,3,1,7,101,110,118,51,56,51,55,3,1,7,101,110, -118,51,56,51,56,3,1,4,103,55,51,49,3,1,4,103,55,51,52,3,1, -4,103,55,51,51,3,1,4,103,55,51,50,3,1,4,103,55,51,54,3,1, -4,103,55,51,53,3,1,4,103,55,51,56,3,1,4,103,55,51,55,62,105, -102,61,118,63,46,46,46,62,101,49,62,101,50,3,1,4,103,55,51,57,3, -1,4,103,55,52,48,3,1,4,103,55,52,50,3,1,4,103,55,52,49,3, -1,4,103,55,52,52,3,1,4,103,55,52,51,63,108,101,116,62,99,49,62, -99,50,1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114, -114,111,114,3,1,7,101,110,118,51,56,53,51,3,1,7,101,110,118,51,56, -53,52,3,1,7,101,110,118,51,56,54,57,3,1,7,101,110,118,51,56,55, -48,3,1,7,101,110,118,51,56,56,57,3,1,7,101,110,118,51,56,57,48, -61,114,3,1,7,101,110,118,51,57,49,52,3,1,7,101,110,118,51,57,49, -53,3,1,4,103,55,54,54,3,1,4,103,55,54,53,3,1,4,103,55,54, -48,3,1,4,103,55,53,57,3,1,4,103,55,54,52,3,1,4,103,55,54, -49,3,1,4,103,55,54,51,3,1,4,103,55,54,50,66,100,111,108,111,111, -112,63,118,97,114,64,105,110,105,116,63,110,111,116,62,101,48,61,99,64,115, -116,101,112,3,1,4,103,55,55,50,3,1,4,103,55,55,49,3,1,4,103, -55,54,56,3,1,4,103,55,54,55,3,1,4,103,55,55,48,3,1,4,103, -55,54,57,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98, -106,101,99,116,47,115,104,97,112,101,70,35,37,119,105,116,104,45,115,116,120, -3,1,7,101,110,118,52,48,48,54,3,1,7,101,110,118,52,48,48,55,61, -115,3,1,7,101,110,118,52,48,50,52,64,100,101,115,116,29,11,11,68,104, -101,114,101,45,115,116,120,3,1,6,101,110,118,52,53,54,3,1,7,101,110, -118,52,48,53,55,3,1,7,101,110,118,52,48,54,52,3,1,7,101,110,118, -52,48,55,49,65,95,101,108,115,101,3,1,4,103,55,55,53,3,1,7,101, -110,118,52,48,56,54,3,1,7,101,110,118,52,48,56,55,66,108,97,109,98, -100,97,3,1,4,103,55,56,54,3,1,4,103,55,56,53,3,1,4,103,55, -57,48,3,1,4,103,55,57,50,3,1,4,103,55,57,49,1,22,119,105,116, -104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,1,27, -99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116, -45,102,105,114,115,116,63,112,47,118,65,101,120,112,114,49,64,101,120,112,114, -63,115,116,120,3,1,7,101,110,118,52,49,48,52,3,1,7,101,110,118,52, -49,48,53,3,1,7,101,110,118,52,49,50,52,63,118,97,108,3,1,7,101, -110,118,52,49,50,53,3,1,4,103,55,57,55,3,1,4,103,55,57,57,3, -1,4,103,55,57,56,3,1,7,101,110,118,52,49,54,51,3,1,7,101,110, -118,52,49,54,52,3,1,4,103,56,50,53,3,1,4,103,56,50,52,3,1, -4,103,56,50,49,3,1,4,103,56,50,48,3,1,4,103,56,50,51,3,1, -4,103,56,50,50,3,1,4,103,56,49,48,3,1,4,103,56,48,57,3,1, -4,103,56,51,48,3,1,4,103,56,50,55,3,1,4,103,56,50,54,3,1, -4,103,56,50,57,3,1,4,103,56,50,56,69,112,114,101,100,45,110,97,109, -101,64,112,114,101,100,72,104,97,110,100,108,101,114,45,110,97,109,101,67,104, -97,110,100,108,101,114,63,98,112,122,1,29,99,97,108,108,45,119,105,116,104, -45,99,111,110,116,105,110,117,97,116,105,111,110,45,112,114,111,109,112,116,61, -101,1,26,97,98,111,114,116,45,99,117,114,114,101,110,116,45,99,111,110,116, -105,110,117,97,116,105,111,110,64,108,105,115,116,64,99,111,110,115,65,116,104, -117,110,107,3,1,7,101,110,118,52,49,56,55,3,1,7,101,110,118,52,49, -56,56,3,1,7,101,110,118,52,50,48,55,3,1,7,101,110,118,52,50,48, -56,3,1,8,119,115,116,109,112,56,49,49,3,1,8,119,115,116,109,112,56, -49,50,3,1,7,101,110,118,52,50,50,48,3,1,4,103,56,52,52,3,1, -4,103,56,52,51,3,1,4,103,56,52,55,70,108,101,116,45,118,97,108,117, -101,115,64,116,101,109,112,64,115,101,116,33,62,105,100,3,1,4,103,56,52, -54,3,1,4,103,56,52,53,3,1,4,103,56,51,57,3,1,4,103,56,52, -57,3,1,4,103,56,52,56,3,1,7,101,110,118,52,50,55,57,3,1,7, -101,110,118,52,50,56,48,3,1,4,103,56,51,49,3,1,4,103,56,51,50, -3,1,4,103,56,51,51,3,1,7,101,110,118,52,50,57,54,3,1,7,101, -110,118,52,50,57,55,3,1,7,101,110,118,52,51,51,50,3,1,7,101,110, -118,52,51,51,51,3,1,4,103,56,53,52,3,1,4,103,56,53,54,3,1, -4,103,56,53,53,3,1,7,101,110,118,52,51,52,57,65,98,111,100,121,49, -64,98,111,100,121,3,1,7,101,110,118,52,51,53,48,3,1,4,103,56,54, -51,3,1,4,103,56,54,50,3,1,4,103,56,54,53,3,1,4,103,56,54, -52,73,100,101,102,105,110,101,45,115,116,114,117,99,116,64,98,97,115,101,65, -102,105,101,108,100,3,1,7,101,110,118,52,51,55,49,3,1,7,101,110,118, -52,51,55,50,3,1,4,103,56,56,49,3,1,4,103,56,56,50,3,1,4, -103,56,56,48,3,1,4,103,56,55,57,3,1,4,103,56,55,53,3,1,4, -103,56,55,52,3,1,4,103,56,56,56,3,1,4,103,56,56,53,3,1,4, -103,56,56,55,3,1,4,103,56,56,54,63,116,109,112,64,115,119,97,112,64, -110,97,109,101,72,100,121,110,97,109,105,99,45,119,105,110,100,3,1,7,101, -110,118,52,51,57,52,3,1,7,101,110,118,52,51,57,53,3,1,7,101,110, -118,52,52,49,52,3,1,7,101,110,118,52,52,49,53,3,1,4,103,56,57, -51,3,1,4,103,56,57,50,3,1,7,101,110,118,52,52,53,53,3,1,7, -101,110,118,52,52,53,54,63,99,112,117,64,117,115,101,114,62,103,99,6,15, -15,105,110,115,112,101,99,116,111,114,32,111,114,32,35,102,61,112,64,99,101, -108,108,68,35,37,107,101,114,110,101,108,30,2,55,69,115,116,120,45,112,97, -105,114,63,11,30,2,55,67,99,111,110,115,47,35,102,1,30,2,55,67,115, -116,120,45,99,97,114,5,30,2,55,67,115,116,120,45,99,100,114,6,30,2, -55,69,97,112,112,101,110,100,47,35,102,0,30,2,55,71,115,116,120,45,110, -117,108,108,47,35,102,9,30,2,56,2,57,0,30,2,55,69,115,116,120,45, -108,105,115,116,63,8,30,2,55,69,115,116,120,45,62,108,105,115,116,4,16, -4,11,11,2,65,3,1,7,101,110,118,51,56,49,53,95,8,193,11,16,0, -97,10,35,11,95,159,2,63,9,11,159,2,64,9,11,159,2,55,9,11,16, -0,97,10,34,11,95,159,2,10,9,11,159,2,59,9,11,159,2,60,9,11, -16,82,2,35,2,2,2,22,2,2,2,20,2,2,2,32,2,2,2,36,2, -2,2,24,2,2,2,26,2,2,2,7,2,2,2,42,2,2,2,30,2,2, -2,39,2,2,2,21,2,2,2,41,2,2,2,47,2,2,2,23,2,2,2, -44,2,2,2,15,2,2,2,19,2,2,2,5,2,2,2,28,2,2,2,16, -2,2,2,4,2,2,2,45,2,2,2,40,2,2,2,17,2,2,2,37,2, -2,2,38,2,2,2,29,2,2,2,18,2,2,2,33,2,2,2,6,2,2, -2,43,2,2,2,9,2,2,2,14,2,2,2,61,2,2,2,46,2,2,2, -31,2,2,2,8,2,2,2,62,2,2,2,13,2,2,2,3,2,2,18,97, -2,58,8,146,4,8,145,4,8,144,4,8,143,4,98,8,146,4,8,145,4, -8,144,4,8,143,4,16,8,11,11,3,1,4,103,54,57,50,3,1,4,103, -54,57,51,3,1,4,103,54,57,52,2,66,2,66,2,66,16,6,11,11,2, -67,2,68,2,69,2,69,18,158,96,10,63,101,113,63,2,48,94,2,70,2, -49,8,148,4,18,158,96,10,64,101,113,118,63,2,50,94,2,70,2,51,8, -148,4,98,8,146,4,8,145,4,8,144,4,8,143,4,16,8,11,11,3,1, -4,103,54,56,57,3,1,4,103,54,57,48,3,1,4,103,54,57,49,2,71, -2,71,2,71,16,6,11,11,2,67,2,68,2,72,2,72,18,158,96,10,64, -109,101,109,118,2,52,94,2,70,2,53,8,151,4,30,2,55,71,105,100,101, -110,116,105,102,105,101,114,63,2,30,68,35,37,115,116,120,108,111,99,68,114, -101,108,111,99,97,116,101,0,30,2,56,2,95,1,16,4,11,11,2,65,3, -1,7,101,110,118,51,56,52,56,96,8,146,4,8,145,4,8,144,4,8,156, -4,18,158,2,58,8,157,4,98,8,146,4,8,145,4,8,144,4,8,156,4, -16,6,11,11,3,1,4,103,55,50,57,3,1,4,103,55,51,48,2,96,2, -96,16,6,11,11,2,67,2,82,2,97,2,97,18,158,96,10,2,1,2,73, -93,64,99,111,110,100,8,159,4,18,158,64,101,108,115,101,8,157,4,98,8, -146,4,8,145,4,8,144,4,8,156,4,16,10,11,11,3,1,4,103,55,50, -53,3,1,4,103,55,50,54,3,1,4,103,55,50,55,3,1,4,103,55,50, -56,2,98,2,98,2,98,2,98,16,10,11,11,2,67,2,82,2,84,2,85, -2,99,2,99,2,99,2,99,18,158,161,10,2,1,2,74,2,75,2,76,8, -162,4,98,8,146,4,8,145,4,8,144,4,8,156,4,16,12,11,11,3,1, -4,103,55,50,48,3,1,4,103,55,50,49,3,1,4,103,55,50,50,3,1, -4,103,55,50,51,3,1,4,103,55,50,52,2,100,2,100,2,100,2,100,2, -100,16,12,11,11,2,67,2,82,2,68,2,84,2,85,2,101,2,101,2,101, -2,101,2,101,18,158,96,10,2,81,95,2,47,2,77,2,78,159,2,1,2, -79,2,80,8,164,4,18,16,2,95,2,83,93,8,150,51,16,4,11,11,2, -102,3,1,7,101,110,118,51,57,48,50,95,9,8,150,51,2,56,98,8,146, -4,8,145,4,8,144,4,8,156,4,16,16,11,11,3,1,4,103,55,49,51, -3,1,4,103,55,49,52,3,1,4,103,55,49,53,3,1,4,103,55,49,54, -3,1,4,103,55,49,55,3,1,4,103,55,49,56,3,1,4,103,55,49,57, -2,103,2,103,2,103,2,103,2,103,2,103,2,103,16,16,11,11,2,67,2, -82,2,68,2,84,2,85,2,93,2,94,2,104,2,104,2,104,2,104,2,104, -2,104,2,104,18,158,96,10,2,92,93,94,2,65,2,86,96,2,81,95,2, -47,2,65,2,87,159,2,1,2,88,2,89,160,2,38,2,65,2,90,2,91, -8,167,4,18,16,2,95,2,83,93,8,155,51,16,4,11,11,2,102,3,1, -7,101,110,118,51,57,51,49,95,9,8,155,51,2,56,30,2,55,73,115,116, -120,45,99,104,101,99,107,47,101,115,99,7,30,2,55,70,115,116,120,45,114, -111,116,97,116,101,12,30,2,56,2,126,2,30,2,127,76,119,105,116,104,45, -115,121,110,116,97,120,45,102,97,105,108,3,16,4,11,11,66,111,114,105,103, -45,120,3,1,7,101,110,118,51,57,56,57,18,97,2,58,8,146,4,8,145, -4,8,144,4,8,174,4,16,16,11,11,2,67,2,114,2,115,2,119,2,117, -2,84,2,118,2,129,2,2,129,2,2,129,2,2,129,2,2,129,2,2,129, -2,2,129,2,16,16,11,11,3,1,4,103,55,52,53,3,1,4,103,55,52, -54,3,1,4,103,55,52,55,3,1,4,103,55,52,56,3,1,4,103,55,52, -57,3,1,4,103,55,53,48,3,1,4,103,55,53,49,2,128,2,2,128,2, -2,128,2,2,128,2,2,128,2,2,128,2,2,128,2,98,8,146,4,8,145, -4,8,144,4,8,174,4,8,177,4,8,176,4,18,158,2,58,8,178,4,18, -100,2,58,8,146,4,8,145,4,8,144,4,8,174,4,8,177,4,8,176,4, -16,6,11,11,2,82,2,130,2,2,131,2,2,131,2,18,158,2,132,2,8, -178,4,18,158,2,132,2,8,178,4,16,4,11,11,3,1,4,103,55,53,54, -3,1,7,101,110,118,52,48,52,54,99,8,146,4,8,145,4,8,144,4,8, -174,4,8,177,4,8,176,4,8,183,4,18,158,2,58,8,184,4,18,158,2, -132,2,8,184,4,18,158,97,10,2,92,2,113,2,109,95,2,81,94,2,116, -2,110,158,2,1,2,111,8,184,4,18,158,95,10,2,107,2,108,8,184,4, -16,4,11,11,2,134,2,3,1,6,101,110,118,52,53,56,16,4,11,11,2, -134,2,2,135,2,16,4,11,11,2,134,2,2,135,2,16,4,11,11,2,65, -3,1,6,101,110,118,52,53,52,95,8,193,11,16,0,97,10,35,11,95,159, -64,35,37,115,99,9,11,159,2,60,9,11,159,2,55,9,11,16,0,97,10, -34,11,95,159,2,10,9,11,159,2,60,9,11,159,2,55,9,11,16,14,2, -126,2,133,2,2,57,2,133,2,66,115,121,110,116,97,120,2,133,2,2,95, -2,133,2,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116, -101,2,133,2,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,2, -133,2,73,115,121,110,116,97,120,45,99,97,115,101,42,42,2,133,2,18,16, -2,103,93,158,159,10,2,113,2,112,8,184,4,8,131,5,8,130,5,8,129, -5,8,128,5,8,191,4,8,190,4,8,189,4,13,16,4,35,2,133,2,2, -56,11,93,8,153,52,16,4,11,11,2,102,2,136,2,95,9,8,153,52,2, -56,18,16,2,95,2,83,93,8,153,52,16,4,11,11,2,102,2,136,2,95, -9,8,153,52,2,56,101,8,146,4,8,145,4,8,144,4,8,174,4,8,177, -4,8,176,4,8,183,4,16,6,11,11,3,1,4,103,55,53,55,3,1,4, -103,55,53,56,2,137,2,2,137,2,16,4,11,11,2,85,3,1,7,101,110, -118,52,48,54,53,18,158,97,10,2,92,2,113,2,120,96,2,81,2,121,159, -2,1,2,122,2,123,158,2,1,2,124,8,134,5,18,158,95,10,2,105,2, -106,8,134,5,18,16,2,103,93,158,159,10,2,113,2,125,8,134,5,8,131, -5,8,130,5,8,129,5,8,128,5,8,191,4,8,190,4,8,189,4,13,16, -4,35,2,133,2,2,56,11,93,8,160,52,16,4,11,11,2,102,2,138,2, -95,9,8,160,52,2,56,18,16,2,95,2,83,93,8,160,52,16,4,11,11, -2,102,2,138,2,95,9,8,160,52,2,56,96,93,8,128,52,16,4,11,11, -3,1,8,119,115,116,109,112,55,53,50,3,1,7,101,110,118,52,48,50,51, -16,4,11,11,3,1,4,103,55,53,53,3,1,7,101,110,118,52,48,55,54, -16,4,11,11,2,139,2,3,1,7,101,110,118,52,48,55,55,18,16,2,158, -95,10,2,119,2,83,8,139,5,95,9,8,128,52,2,127,16,4,11,11,2, -65,3,1,7,101,110,118,52,48,56,49,18,97,2,58,8,146,4,8,145,4, -8,144,4,8,141,5,98,8,146,4,8,145,4,8,144,4,8,141,5,16,6, -11,11,3,1,4,103,55,55,51,3,1,4,103,55,55,52,2,141,2,2,141, -2,16,6,11,11,2,42,63,101,120,112,2,142,2,2,142,2,18,158,95,10, -2,4,95,2,143,2,9,2,140,2,8,143,5,95,8,146,4,8,145,4,8, -144,4,18,158,2,3,8,145,5,18,158,2,4,8,145,5,18,158,2,5,8, -145,5,18,158,2,6,8,145,5,18,158,2,7,8,145,5,16,4,11,11,2, -154,2,3,1,7,101,110,118,52,48,57,55,18,97,2,58,8,146,4,8,145, -4,8,144,4,8,151,5,98,8,146,4,8,145,4,8,144,4,8,151,5,16, -8,11,11,3,1,4,103,55,56,50,3,1,4,103,55,56,51,3,1,4,103, -55,56,52,2,155,2,2,155,2,2,155,2,16,8,11,11,2,67,2,152,2, -2,153,2,2,156,2,2,156,2,2,156,2,18,158,161,10,2,92,9,2,144, -2,2,145,2,8,153,5,16,12,11,11,2,67,65,112,97,114,97,109,2,158, -2,2,152,2,2,153,2,2,159,2,2,159,2,2,159,2,2,159,2,2,159, -2,16,12,11,11,3,1,4,103,55,55,55,3,1,4,103,55,55,56,3,1, -4,103,55,55,57,3,1,4,103,55,56,48,3,1,4,103,55,56,49,2,157, -2,2,157,2,2,157,2,2,157,2,2,157,2,98,8,146,4,8,145,4,8, -144,4,8,151,5,8,156,5,8,155,5,18,158,2,58,8,157,5,18,158,2, -132,2,8,157,5,18,158,2,132,2,8,157,5,100,8,146,4,8,145,4,8, -144,4,8,151,5,8,156,5,8,155,5,16,4,11,11,3,1,4,103,55,56, -57,3,1,7,101,110,118,52,49,52,51,16,4,11,11,2,151,2,3,1,7, -101,110,118,52,49,52,52,18,158,97,10,2,149,2,2,12,159,2,11,95,2, -150,2,11,2,12,2,146,2,160,2,92,9,2,147,2,2,148,2,8,161,5, -18,16,2,95,2,83,93,8,162,53,16,4,11,11,2,102,3,1,7,101,110, -118,52,49,52,56,95,9,8,162,53,2,56,96,93,8,153,53,16,4,11,11, -3,1,8,119,115,116,109,112,55,56,55,3,1,7,101,110,118,52,49,51,55, -16,4,11,11,3,1,4,103,55,56,56,3,1,7,101,110,118,52,49,53,49, -16,4,11,11,2,139,2,3,1,7,101,110,118,52,49,53,50,18,16,2,158, -95,10,2,151,2,2,83,8,164,5,95,9,8,153,53,2,127,16,4,11,11, -2,154,2,3,1,7,101,110,118,52,49,53,54,18,97,2,58,8,146,4,8, -145,4,8,144,4,8,166,5,98,8,146,4,8,145,4,8,144,4,8,166,5, -16,10,11,11,3,1,4,103,55,57,51,3,1,4,103,55,57,52,3,1,4, -103,55,57,53,3,1,4,103,55,57,54,2,163,2,2,163,2,2,163,2,2, -163,2,16,10,11,11,2,67,69,98,111,111,108,45,101,120,112,114,2,152,2, -2,153,2,2,164,2,2,164,2,2,164,2,2,164,2,18,158,97,10,2,149, -2,2,25,94,76,109,97,107,101,45,116,104,114,101,97,100,45,99,101,108,108, -95,63,97,110,100,2,160,2,10,95,2,1,93,2,27,160,2,92,9,2,161, -2,2,162,2,8,168,5,18,158,2,19,8,145,5,18,158,2,20,8,145,5, -18,158,2,21,8,145,5,18,158,2,22,8,145,5,18,158,2,23,8,145,5, -30,2,127,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97, -114,105,101,115,0,16,4,11,11,2,154,2,3,1,7,101,110,118,52,49,56, -48,16,4,11,11,74,100,105,115,97,98,108,101,45,98,114,101,97,107,63,3, -1,7,101,110,118,52,49,55,57,18,98,2,58,8,146,4,8,145,4,8,144, -4,8,177,5,8,176,5,99,8,146,4,8,145,4,8,144,4,8,177,5,8, -176,5,16,8,11,11,3,1,4,103,56,48,54,3,1,4,103,56,48,55,3, -1,4,103,56,48,56,2,189,2,2,189,2,2,189,2,16,8,11,11,2,67, -2,152,2,2,153,2,2,190,2,2,190,2,2,190,2,18,158,161,10,2,92, -9,2,171,2,2,172,2,8,179,5,16,12,11,11,2,67,2,179,2,2,181, -2,2,152,2,2,153,2,2,128,3,2,128,3,2,128,3,2,128,3,2,128, -3,16,12,11,11,3,1,4,103,56,48,49,3,1,4,103,56,48,50,3,1, -4,103,56,48,51,3,1,4,103,56,48,52,3,1,4,103,56,48,53,2,191, -2,2,191,2,2,191,2,2,191,2,2,191,2,99,8,146,4,8,145,4,8, -144,4,8,177,5,8,176,5,8,182,5,8,181,5,18,158,2,58,8,183,5, -18,158,2,132,2,8,183,5,18,158,2,58,8,183,5,18,158,2,132,2,8, -183,5,103,8,146,4,8,145,4,8,144,4,8,177,5,8,176,5,8,182,5, -8,181,5,16,4,11,11,3,1,4,103,56,49,52,3,1,7,101,110,118,52, -50,50,56,16,4,11,11,2,178,2,3,1,7,101,110,118,52,50,50,57,16, -4,11,11,3,1,4,103,56,49,54,3,1,7,101,110,118,52,50,51,54,16, -4,11,11,2,180,2,3,1,7,101,110,118,52,50,51,55,18,158,2,58,8, -188,5,18,158,2,28,8,188,5,18,158,2,29,8,188,5,18,158,96,10,2, -92,2,173,2,95,2,92,93,94,2,182,2,95,2,150,2,11,2,25,96,2, -149,2,2,25,2,30,96,2,183,2,95,2,143,2,9,96,2,149,2,2,25, -2,182,2,96,2,149,2,2,34,95,2,143,2,93,2,184,2,95,2,185,2, -2,32,95,2,143,2,9,96,2,174,2,2,184,2,2,182,2,158,2,186,2, -2,175,2,160,2,92,9,2,176,2,2,177,2,2,32,95,2,143,2,93,2, -188,2,93,2,188,2,8,188,5,18,158,95,10,2,169,2,2,170,2,8,188, -5,18,158,95,10,2,167,2,2,168,2,8,188,5,18,158,96,10,2,187,2, -2,165,2,2,166,2,8,188,5,18,16,2,95,2,83,93,8,188,54,16,4, -11,11,2,102,3,1,7,101,110,118,52,50,53,52,95,9,8,188,54,2,56, -96,93,8,163,54,16,6,11,11,2,129,3,2,130,3,2,131,3,2,131,3, -16,4,11,11,3,1,4,103,56,49,53,3,1,7,101,110,118,52,50,54,51, -16,4,11,11,2,139,2,3,1,7,101,110,118,52,50,54,52,18,16,2,158, -95,10,2,180,2,2,83,8,133,6,95,9,8,163,54,2,127,96,93,8,163, -54,16,6,11,11,2,129,3,2,130,3,2,131,3,2,131,3,16,4,11,11, -3,1,4,103,56,49,51,3,1,7,101,110,118,52,50,54,56,16,4,11,11, -2,139,2,3,1,7,101,110,118,52,50,54,57,18,16,2,158,95,10,2,178, -2,2,83,8,135,6,95,9,8,163,54,2,127,16,4,11,11,2,154,2,3, -1,7,101,110,118,52,50,55,51,18,97,2,58,8,146,4,8,145,4,8,144, -4,8,137,6,98,8,146,4,8,145,4,8,144,4,8,137,6,16,6,11,11, -3,1,4,103,56,51,55,3,1,4,103,56,51,56,2,144,3,2,144,3,16, -6,11,11,2,67,2,153,2,2,145,3,2,145,3,18,158,96,10,2,135,3, -93,94,9,2,141,3,93,64,118,111,105,100,8,139,6,98,8,146,4,8,145, -4,8,144,4,8,137,6,16,8,11,11,2,146,3,2,147,3,2,148,3,2, -149,3,2,149,3,2,149,3,16,8,11,11,2,67,2,138,3,2,153,2,2, -150,3,2,150,3,2,150,3,18,158,2,132,2,8,141,6,18,158,2,58,8, -141,6,18,158,2,132,2,8,141,6,100,8,146,4,8,145,4,8,144,4,8, -137,6,16,8,11,11,2,146,3,2,147,3,2,148,3,2,149,3,2,149,3, -2,149,3,16,8,11,11,2,67,2,138,3,2,153,2,2,150,3,2,150,3, -2,150,3,16,4,11,11,3,1,4,103,56,52,50,3,1,7,101,110,118,52, +8,68,8,75,8,82,8,89,8,99,8,109,8,119,8,129,8,139,8,149,8, +156,8,163,8,170,8,180,8,186,8,191,8,201,8,208,8,215,8,222,8,229, +8,243,8,248,8,254,8,8,9,18,9,25,9,32,9,39,9,46,9,53,9, +60,9,67,9,74,9,81,9,88,9,92,9,97,9,102,9,115,9,125,9,135, +9,145,9,155,9,162,9,169,9,179,9,189,9,193,9,198,9,201,9,219,9, +221,9,226,9,235,9,249,9,5,10,17,10,29,10,43,10,59,10,65,10,79, +10,93,10,109,10,115,10,137,10,67,11,83,11,139,11,157,11,176,11,232,11, +251,11,11,12,31,12,37,12,53,12,66,12,73,12,120,12,137,12,147,12,220, +12,235,12,65,13,88,13,121,13,233,13,18,14,51,14,69,14,84,14,90,14, +111,14,132,14,148,14,187,14,5,15,24,15,31,15,68,15,76,15,84,15,105, +15,127,15,134,15,142,15,168,15,179,15,195,15,205,15,215,15,230,15,236,15, +5,16,110,16,176,16,202,16,8,17,38,17,49,17,115,17,141,17,209,17,229, +17,245,17,5,18,58,18,75,18,85,18,92,18,99,18,106,18,113,18,120,18, +137,18,153,18,221,18,237,18,17,19,71,19,90,19,97,19,105,19,113,19,170, +19,205,19,238,19,50,20,71,20,88,20,104,20,195,20,250,20,1,21,8,21, +15,21,22,21,29,21,55,21,72,21,101,21,120,21,191,21,207,21,240,21,38, +22,60,22,67,22,75,22,82,22,90,22,188,22,195,22,202,22,209,22,72,23, +85,23,98,23,114,23,147,23,206,23,227,23,30,24,51,24,68,24,84,24,136, +24,158,24,179,24,213,24,232,24,240,24,247,24,255,24,56,25,77,25,93,25, +126,25,194,25,215,25,27,26,43,26,60,26,76,26,159,26,188,26,205,26,221, +26,65,27,91,27,124,27,141,27,157,27,225,27,241,27,18,28,72,28,91,28, +98,28,106,28,163,28,212,28,225,28,6,29,39,29,107,29,128,29,145,29,161, +29,229,29,101,30,0,0,144,67,0,0,65,98,101,103,105,110,29,11,11,74, +115,116,114,117,99,116,58,112,114,111,109,105,115,101,72,109,97,107,101,45,112, +114,111,109,105,115,101,68,112,114,111,109,105,115,101,63,69,112,114,111,109,105, +115,101,45,112,74,115,101,116,45,112,114,111,109,105,115,101,45,112,33,65,102, +111,114,99,101,1,24,99,117,114,114,101,110,116,45,112,97,114,97,109,101,116, +101,114,105,122,97,116,105,111,110,68,35,37,112,97,114,97,109,122,1,23,101, +120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107, +101,121,1,26,99,97,108,108,45,119,105,116,104,45,112,97,114,97,109,101,116, +101,114,105,122,97,116,105,111,110,79,115,116,114,117,99,116,58,98,114,101,97, +107,45,112,97,114,97,109,122,77,109,97,107,101,45,98,114,101,97,107,45,112, +97,114,97,109,122,73,98,114,101,97,107,45,112,97,114,97,109,122,63,76,98, +114,101,97,107,45,112,97,114,97,109,122,45,114,101,102,77,98,114,101,97,107, +45,112,97,114,97,109,122,45,115,101,116,33,1,29,115,116,114,117,99,116,58, +98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,1,27,109,97,107,101,45,98,114,101,97,107,45,112,97,114,97,109,101,116, +101,114,105,122,97,116,105,111,110,1,23,98,114,101,97,107,45,112,97,114,97, +109,101,116,101,114,105,122,97,116,105,111,110,63,1,27,98,114,101,97,107,45, +112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,99,101,108,108, +1,32,115,101,116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114, +105,122,97,116,105,111,110,45,99,101,108,108,33,1,30,99,117,114,114,101,110, +116,45,98,114,101,97,107,45,112,97,114,97,109,101,116,101,114,105,122,97,116, +105,111,110,77,98,114,101,97,107,45,101,110,97,98,108,101,100,45,107,101,121, +1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97,107,45,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,75,99,104,101,99,107,45,102, +111,114,45,98,114,101,97,107,1,24,115,101,108,101,99,116,45,104,97,110,100, +108,101,114,47,110,111,45,98,114,101,97,107,115,1,27,115,101,108,101,99,116, +45,104,97,110,100,108,101,114,47,98,114,101,97,107,115,45,97,115,45,105,115, +77,102,97,108,115,101,45,116,104,114,101,97,100,45,99,101,108,108,1,30,99, +104,101,99,107,45,119,105,116,104,45,104,97,110,100,108,101,114,115,45,105,110, +45,99,111,110,116,101,120,116,78,104,97,110,100,108,101,114,45,112,114,111,109, +112,116,45,107,101,121,1,27,99,97,108,108,45,119,105,116,104,45,101,120,99, +101,112,116,105,111,110,45,104,97,110,100,108,101,114,1,21,101,120,99,101,112, +116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,64,116,105,109,101, +66,108,101,116,47,99,99,74,119,105,116,104,45,104,97,110,100,108,101,114,115, +42,65,100,101,108,97,121,71,115,101,116,33,45,118,97,108,117,101,115,62,100, +111,69,102,108,117,105,100,45,108,101,116,70,108,101,116,45,115,116,114,117,99, +116,72,112,97,114,97,109,101,116,101,114,105,122,101,64,99,97,115,101,73,119, +105,116,104,45,104,97,110,100,108,101,114,115,78,112,97,114,97,109,101,116,101, +114,105,122,101,45,98,114,101,97,107,69,99,97,115,101,45,116,101,115,116,3, +1,4,103,54,57,54,3,1,4,103,54,57,53,3,1,4,103,54,57,56,3, +1,4,103,54,57,55,3,1,4,103,55,48,48,3,1,4,103,54,57,57,6, +10,10,98,97,100,32,115,121,110,116,97,120,65,35,37,115,116,120,69,35,37, +115,116,120,99,97,115,101,1,24,97,112,112,108,121,45,112,97,116,116,101,114, +110,45,115,117,98,115,116,105,116,117,116,101,64,104,101,114,101,68,35,37,100, +101,102,105,110,101,74,35,37,115,109,97,108,108,45,115,99,104,101,109,101,67, +112,114,111,109,105,115,101,1,22,98,114,101,97,107,45,112,97,114,97,109,101, +116,101,114,105,122,97,116,105,111,110,67,35,37,113,113,115,116,120,76,35,37, +115,116,120,99,97,115,101,45,115,99,104,101,109,101,61,120,3,1,7,101,110, +118,51,56,50,50,61,95,61,107,3,1,7,101,110,118,51,56,50,51,65,113, +117,111,116,101,3,1,7,101,110,118,51,56,51,55,3,1,7,101,110,118,51, +56,51,56,3,1,4,103,55,51,49,3,1,4,103,55,51,52,3,1,4,103, +55,51,51,3,1,4,103,55,51,50,3,1,4,103,55,51,54,3,1,4,103, +55,51,53,3,1,4,103,55,51,56,3,1,4,103,55,51,55,62,105,102,61, +118,63,46,46,46,62,101,49,62,101,50,3,1,4,103,55,51,57,3,1,4, +103,55,52,48,3,1,4,103,55,52,50,3,1,4,103,55,52,49,3,1,4, +103,55,52,52,3,1,4,103,55,52,51,63,108,101,116,62,99,49,62,99,50, +1,20,99,97,116,99,104,45,101,108,108,105,112,115,105,115,45,101,114,114,111, +114,3,1,7,101,110,118,51,56,53,51,3,1,7,101,110,118,51,56,53,52, +3,1,7,101,110,118,51,56,54,57,3,1,7,101,110,118,51,56,55,48,3, +1,7,101,110,118,51,56,56,57,3,1,7,101,110,118,51,56,57,48,61,114, +3,1,7,101,110,118,51,57,49,52,3,1,7,101,110,118,51,57,49,53,3, +1,4,103,55,54,54,3,1,4,103,55,54,53,3,1,4,103,55,54,48,3, +1,4,103,55,53,57,3,1,4,103,55,54,52,3,1,4,103,55,54,49,3, +1,4,103,55,54,51,3,1,4,103,55,54,50,66,100,111,108,111,111,112,63, +118,97,114,64,105,110,105,116,63,110,111,116,62,101,48,61,99,64,115,116,101, +112,3,1,4,103,55,55,50,3,1,4,103,55,55,49,3,1,4,103,55,54, +56,3,1,4,103,55,54,55,3,1,4,103,55,55,48,3,1,4,103,55,54, +57,1,26,100,97,116,117,109,45,62,115,121,110,116,97,120,45,111,98,106,101, +99,116,47,115,104,97,112,101,70,35,37,119,105,116,104,45,115,116,120,3,1, +7,101,110,118,52,48,48,54,3,1,7,101,110,118,52,48,48,55,61,115,3, +1,7,101,110,118,52,48,50,52,64,100,101,115,116,29,11,11,68,104,101,114, +101,45,115,116,120,3,1,6,101,110,118,52,53,54,3,1,7,101,110,118,52, +48,53,55,3,1,7,101,110,118,52,48,54,52,3,1,7,101,110,118,52,48, +55,49,65,95,101,108,115,101,3,1,4,103,55,55,53,3,1,7,101,110,118, +52,48,56,54,3,1,7,101,110,118,52,48,56,55,66,108,97,109,98,100,97, +3,1,4,103,55,56,54,3,1,4,103,55,56,53,3,1,4,103,55,57,48, +3,1,4,103,55,57,50,3,1,4,103,55,57,49,1,22,119,105,116,104,45, +99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,1,27,99,111, +110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116,45,102, +105,114,115,116,63,112,47,118,65,101,120,112,114,49,64,101,120,112,114,63,115, +116,120,3,1,7,101,110,118,52,49,48,52,3,1,7,101,110,118,52,49,48, +53,3,1,7,101,110,118,52,49,50,52,63,118,97,108,3,1,7,101,110,118, +52,49,50,53,3,1,4,103,55,57,55,3,1,4,103,55,57,57,3,1,4, +103,55,57,56,3,1,7,101,110,118,52,49,54,51,3,1,7,101,110,118,52, +49,54,52,3,1,4,103,56,50,53,3,1,4,103,56,50,52,3,1,4,103, +56,50,49,3,1,4,103,56,50,48,3,1,4,103,56,50,51,3,1,4,103, +56,50,50,3,1,4,103,56,49,48,3,1,4,103,56,48,57,3,1,4,103, +56,51,48,3,1,4,103,56,50,55,3,1,4,103,56,50,54,3,1,4,103, +56,50,57,3,1,4,103,56,50,56,69,112,114,101,100,45,110,97,109,101,64, +112,114,101,100,72,104,97,110,100,108,101,114,45,110,97,109,101,67,104,97,110, +100,108,101,114,63,98,112,122,1,29,99,97,108,108,45,119,105,116,104,45,99, +111,110,116,105,110,117,97,116,105,111,110,45,112,114,111,109,112,116,61,101,1, +26,97,98,111,114,116,45,99,117,114,114,101,110,116,45,99,111,110,116,105,110, +117,97,116,105,111,110,64,108,105,115,116,64,99,111,110,115,65,116,104,117,110, +107,3,1,7,101,110,118,52,49,56,55,3,1,7,101,110,118,52,49,56,56, +3,1,7,101,110,118,52,50,48,55,3,1,7,101,110,118,52,50,48,56,3, +1,8,119,115,116,109,112,56,49,49,3,1,8,119,115,116,109,112,56,49,50, +3,1,7,101,110,118,52,50,50,48,3,1,4,103,56,52,52,3,1,4,103, +56,52,51,3,1,4,103,56,52,55,70,108,101,116,45,118,97,108,117,101,115, +64,116,101,109,112,64,115,101,116,33,62,105,100,3,1,4,103,56,52,54,3, +1,4,103,56,52,53,3,1,4,103,56,51,57,3,1,4,103,56,52,57,3, +1,4,103,56,52,56,3,1,7,101,110,118,52,50,55,57,3,1,7,101,110, +118,52,50,56,48,3,1,7,101,110,118,52,50,57,54,3,1,7,101,110,118, +52,50,57,55,3,1,7,101,110,118,52,51,51,50,3,1,7,101,110,118,52, +51,51,51,3,1,4,103,56,53,52,3,1,4,103,56,53,54,3,1,4,103, +56,53,53,3,1,7,101,110,118,52,51,52,57,65,98,111,100,121,49,64,98, +111,100,121,3,1,7,101,110,118,52,51,53,48,3,1,4,103,56,54,51,3, +1,4,103,56,54,50,3,1,4,103,56,54,53,3,1,4,103,56,54,52,73, +100,101,102,105,110,101,45,115,116,114,117,99,116,64,98,97,115,101,65,102,105, +101,108,100,3,1,7,101,110,118,52,51,55,49,3,1,7,101,110,118,52,51, +55,50,3,1,4,103,56,56,49,3,1,4,103,56,56,50,3,1,4,103,56, +56,48,3,1,4,103,56,55,57,3,1,4,103,56,55,53,3,1,4,103,56, +55,52,3,1,4,103,56,56,56,3,1,4,103,56,56,53,3,1,4,103,56, +56,55,3,1,4,103,56,56,54,63,116,109,112,64,115,119,97,112,64,110,97, +109,101,72,100,121,110,97,109,105,99,45,119,105,110,100,3,1,7,101,110,118, +52,51,57,52,3,1,7,101,110,118,52,51,57,53,3,1,7,101,110,118,52, +52,49,52,3,1,7,101,110,118,52,52,49,53,3,1,4,103,56,57,51,3, +1,4,103,56,57,50,3,1,7,101,110,118,52,52,53,53,3,1,7,101,110, +118,52,52,53,54,63,99,112,117,64,117,115,101,114,62,103,99,6,15,15,105, +110,115,112,101,99,116,111,114,32,111,114,32,35,102,61,112,64,99,101,108,108, +68,35,37,107,101,114,110,101,108,30,2,55,69,115,116,120,45,112,97,105,114, +63,11,30,2,55,67,99,111,110,115,47,35,102,1,30,2,55,67,115,116,120, +45,99,97,114,5,30,2,55,67,115,116,120,45,99,100,114,6,30,2,55,69, +97,112,112,101,110,100,47,35,102,0,30,2,55,71,115,116,120,45,110,117,108, +108,47,35,102,9,30,2,56,2,57,0,30,2,55,69,115,116,120,45,108,105, +115,116,63,8,30,2,55,69,115,116,120,45,62,108,105,115,116,4,16,4,11, +11,2,65,3,1,7,101,110,118,51,56,49,53,95,8,193,11,16,0,97,10, +35,11,95,159,2,63,9,11,159,2,64,9,11,159,2,55,9,11,16,0,97, +10,34,11,95,159,2,10,9,11,159,2,59,9,11,159,2,60,9,11,16,82, +2,35,2,2,2,22,2,2,2,20,2,2,2,14,2,2,2,47,2,2,2, +38,2,2,2,39,2,2,2,26,2,2,2,24,2,2,2,15,2,2,2,30, +2,2,2,61,2,2,2,42,2,2,2,5,2,2,2,4,2,2,2,8,2, +2,2,19,2,2,2,6,2,2,2,23,2,2,2,21,2,2,2,45,2,2, +2,18,2,2,2,32,2,2,2,7,2,2,2,17,2,2,2,36,2,2,2, +28,2,2,2,43,2,2,2,37,2,2,2,41,2,2,2,29,2,2,2,62, +2,2,2,33,2,2,2,3,2,2,2,9,2,2,2,40,2,2,2,16,2, +2,2,31,2,2,2,44,2,2,2,46,2,2,2,13,2,2,18,97,2,58, +8,143,4,8,142,4,8,141,4,8,140,4,98,8,143,4,8,142,4,8,141, +4,8,140,4,16,8,11,11,3,1,4,103,54,57,50,3,1,4,103,54,57, +51,3,1,4,103,54,57,52,2,66,2,66,2,66,16,6,11,11,2,67,2, +68,2,69,2,69,18,158,96,10,63,101,113,63,2,48,94,2,70,2,49,8, +145,4,18,158,96,10,64,101,113,118,63,2,50,94,2,70,2,51,8,145,4, +98,8,143,4,8,142,4,8,141,4,8,140,4,16,8,11,11,3,1,4,103, +54,56,57,3,1,4,103,54,57,48,3,1,4,103,54,57,49,2,71,2,71, +2,71,16,6,11,11,2,67,2,68,2,72,2,72,18,158,96,10,64,109,101, +109,118,2,52,94,2,70,2,53,8,148,4,30,2,55,71,105,100,101,110,116, +105,102,105,101,114,63,2,30,68,35,37,115,116,120,108,111,99,68,114,101,108, +111,99,97,116,101,0,30,2,56,2,95,1,16,4,11,11,2,65,3,1,7, +101,110,118,51,56,52,56,96,8,143,4,8,142,4,8,141,4,8,153,4,18, +158,2,58,8,154,4,98,8,143,4,8,142,4,8,141,4,8,153,4,16,6, +11,11,3,1,4,103,55,50,57,3,1,4,103,55,51,48,2,96,2,96,16, +6,11,11,2,67,2,82,2,97,2,97,18,158,96,10,2,1,2,73,93,64, +99,111,110,100,8,156,4,18,158,64,101,108,115,101,8,154,4,98,8,143,4, +8,142,4,8,141,4,8,153,4,16,10,11,11,3,1,4,103,55,50,53,3, +1,4,103,55,50,54,3,1,4,103,55,50,55,3,1,4,103,55,50,56,2, +98,2,98,2,98,2,98,16,10,11,11,2,67,2,82,2,84,2,85,2,99, +2,99,2,99,2,99,18,158,161,10,2,1,2,74,2,75,2,76,8,159,4, +98,8,143,4,8,142,4,8,141,4,8,153,4,16,12,11,11,3,1,4,103, +55,50,48,3,1,4,103,55,50,49,3,1,4,103,55,50,50,3,1,4,103, +55,50,51,3,1,4,103,55,50,52,2,100,2,100,2,100,2,100,2,100,16, +12,11,11,2,67,2,82,2,68,2,84,2,85,2,101,2,101,2,101,2,101, +2,101,18,158,96,10,2,81,95,2,47,2,77,2,78,159,2,1,2,79,2, +80,8,161,4,18,16,2,95,2,83,93,8,150,51,16,4,11,11,2,102,3, +1,7,101,110,118,51,57,48,50,95,9,8,150,51,2,56,98,8,143,4,8, +142,4,8,141,4,8,153,4,16,16,11,11,3,1,4,103,55,49,51,3,1, +4,103,55,49,52,3,1,4,103,55,49,53,3,1,4,103,55,49,54,3,1, +4,103,55,49,55,3,1,4,103,55,49,56,3,1,4,103,55,49,57,2,103, +2,103,2,103,2,103,2,103,2,103,2,103,16,16,11,11,2,67,2,82,2, +68,2,84,2,85,2,93,2,94,2,104,2,104,2,104,2,104,2,104,2,104, +2,104,18,158,96,10,2,92,93,94,2,65,2,86,96,2,81,95,2,47,2, +65,2,87,159,2,1,2,88,2,89,160,2,44,2,65,2,90,2,91,8,164, +4,18,16,2,95,2,83,93,8,155,51,16,4,11,11,2,102,3,1,7,101, +110,118,51,57,51,49,95,9,8,155,51,2,56,30,2,55,73,115,116,120,45, +99,104,101,99,107,47,101,115,99,7,30,2,55,70,115,116,120,45,114,111,116, +97,116,101,12,30,2,56,2,126,2,30,2,127,76,119,105,116,104,45,115,121, +110,116,97,120,45,102,97,105,108,3,16,4,11,11,66,111,114,105,103,45,120, +3,1,7,101,110,118,51,57,56,57,18,97,2,58,8,143,4,8,142,4,8, +141,4,8,171,4,16,16,11,11,2,67,2,114,2,115,2,119,2,117,2,84, +2,118,2,129,2,2,129,2,2,129,2,2,129,2,2,129,2,2,129,2,2, +129,2,16,16,11,11,3,1,4,103,55,52,53,3,1,4,103,55,52,54,3, +1,4,103,55,52,55,3,1,4,103,55,52,56,3,1,4,103,55,52,57,3, +1,4,103,55,53,48,3,1,4,103,55,53,49,2,128,2,2,128,2,2,128, +2,2,128,2,2,128,2,2,128,2,2,128,2,98,8,143,4,8,142,4,8, +141,4,8,171,4,8,174,4,8,173,4,18,158,2,58,8,175,4,18,100,2, +58,8,143,4,8,142,4,8,141,4,8,171,4,8,174,4,8,173,4,16,6, +11,11,2,82,2,130,2,2,131,2,2,131,2,18,158,2,132,2,8,175,4, +18,158,2,132,2,8,175,4,16,4,11,11,3,1,4,103,55,53,54,3,1, +7,101,110,118,52,48,52,54,99,8,143,4,8,142,4,8,141,4,8,171,4, +8,174,4,8,173,4,8,180,4,18,158,2,58,8,181,4,18,158,2,132,2, +8,181,4,18,158,97,10,2,92,2,113,2,109,95,2,81,94,2,116,2,110, +158,2,1,2,111,8,181,4,18,158,95,10,2,107,2,108,8,181,4,16,4, +11,11,2,134,2,3,1,6,101,110,118,52,53,56,16,4,11,11,2,134,2, +2,135,2,16,4,11,11,2,134,2,2,135,2,16,4,11,11,2,65,3,1, +6,101,110,118,52,53,52,95,8,193,11,16,0,97,10,35,11,95,159,64,35, +37,115,99,9,11,159,2,60,9,11,159,2,55,9,11,16,0,97,10,34,11, +95,159,2,10,9,11,159,2,60,9,11,159,2,55,9,11,16,14,2,126,2, +133,2,2,57,2,133,2,66,115,121,110,116,97,120,2,133,2,2,95,2,133, +2,78,112,97,116,116,101,114,110,45,115,117,98,115,116,105,116,117,116,101,2, +133,2,75,115,117,98,115,116,105,116,117,116,101,45,115,116,111,112,2,133,2, +73,115,121,110,116,97,120,45,99,97,115,101,42,42,2,133,2,18,16,2,103, +93,158,159,10,2,113,2,112,8,181,4,8,128,5,8,191,4,8,190,4,8, +189,4,8,188,4,8,187,4,8,186,4,13,16,4,35,2,133,2,2,56,11, +93,8,153,52,16,4,11,11,2,102,2,136,2,95,9,8,153,52,2,56,18, +16,2,95,2,83,93,8,153,52,16,4,11,11,2,102,2,136,2,95,9,8, +153,52,2,56,101,8,143,4,8,142,4,8,141,4,8,171,4,8,174,4,8, +173,4,8,180,4,16,6,11,11,3,1,4,103,55,53,55,3,1,4,103,55, +53,56,2,137,2,2,137,2,16,4,11,11,2,85,3,1,7,101,110,118,52, +48,54,53,18,158,97,10,2,92,2,113,2,120,96,2,81,2,121,159,2,1, +2,122,2,123,158,2,1,2,124,8,131,5,18,158,95,10,2,105,2,106,8, +131,5,18,16,2,103,93,158,159,10,2,113,2,125,8,131,5,8,128,5,8, +191,4,8,190,4,8,189,4,8,188,4,8,187,4,8,186,4,13,16,4,35, +2,133,2,2,56,11,93,8,160,52,16,4,11,11,2,102,2,138,2,95,9, +8,160,52,2,56,18,16,2,95,2,83,93,8,160,52,16,4,11,11,2,102, +2,138,2,95,9,8,160,52,2,56,96,93,8,128,52,16,4,11,11,3,1, +8,119,115,116,109,112,55,53,50,3,1,7,101,110,118,52,48,50,51,16,4, +11,11,3,1,4,103,55,53,53,3,1,7,101,110,118,52,48,55,54,16,4, +11,11,2,139,2,3,1,7,101,110,118,52,48,55,55,18,16,2,158,95,10, +2,119,2,83,8,136,5,95,9,8,128,52,2,127,16,4,11,11,2,65,3, +1,7,101,110,118,52,48,56,49,18,97,2,58,8,143,4,8,142,4,8,141, +4,8,138,5,98,8,143,4,8,142,4,8,141,4,8,138,5,16,6,11,11, +3,1,4,103,55,55,51,3,1,4,103,55,55,52,2,141,2,2,141,2,16, +6,11,11,2,38,63,101,120,112,2,142,2,2,142,2,18,158,95,10,2,4, +95,2,143,2,9,2,140,2,8,140,5,95,8,143,4,8,142,4,8,141,4, +18,158,2,3,8,142,5,18,158,2,4,8,142,5,18,158,2,5,8,142,5, +18,158,2,6,8,142,5,18,158,2,7,8,142,5,16,4,11,11,2,154,2, +3,1,7,101,110,118,52,48,57,55,18,97,2,58,8,143,4,8,142,4,8, +141,4,8,148,5,98,8,143,4,8,142,4,8,141,4,8,148,5,16,8,11, +11,3,1,4,103,55,56,50,3,1,4,103,55,56,51,3,1,4,103,55,56, +52,2,155,2,2,155,2,2,155,2,16,8,11,11,2,67,2,152,2,2,153, +2,2,156,2,2,156,2,2,156,2,18,158,161,10,2,92,9,2,144,2,2, +145,2,8,150,5,16,12,11,11,2,67,65,112,97,114,97,109,2,158,2,2, +152,2,2,153,2,2,159,2,2,159,2,2,159,2,2,159,2,2,159,2,16, +12,11,11,3,1,4,103,55,55,55,3,1,4,103,55,55,56,3,1,4,103, +55,55,57,3,1,4,103,55,56,48,3,1,4,103,55,56,49,2,157,2,2, +157,2,2,157,2,2,157,2,2,157,2,98,8,143,4,8,142,4,8,141,4, +8,148,5,8,153,5,8,152,5,18,158,2,58,8,154,5,18,158,2,132,2, +8,154,5,18,158,2,132,2,8,154,5,100,8,143,4,8,142,4,8,141,4, +8,148,5,8,153,5,8,152,5,16,4,11,11,3,1,4,103,55,56,57,3, +1,7,101,110,118,52,49,52,51,16,4,11,11,2,151,2,3,1,7,101,110, +118,52,49,52,52,18,158,97,10,2,149,2,2,12,159,2,11,95,2,150,2, +11,2,12,2,146,2,160,2,92,9,2,147,2,2,148,2,8,158,5,18,16, +2,95,2,83,93,8,162,53,16,4,11,11,2,102,3,1,7,101,110,118,52, +49,52,56,95,9,8,162,53,2,56,96,93,8,153,53,16,4,11,11,3,1, +8,119,115,116,109,112,55,56,55,3,1,7,101,110,118,52,49,51,55,16,4, +11,11,3,1,4,103,55,56,56,3,1,7,101,110,118,52,49,53,49,16,4, +11,11,2,139,2,3,1,7,101,110,118,52,49,53,50,18,16,2,158,95,10, +2,151,2,2,83,8,161,5,95,9,8,153,53,2,127,16,4,11,11,2,154, +2,3,1,7,101,110,118,52,49,53,54,18,97,2,58,8,143,4,8,142,4, +8,141,4,8,163,5,98,8,143,4,8,142,4,8,141,4,8,163,5,16,10, +11,11,3,1,4,103,55,57,51,3,1,4,103,55,57,52,3,1,4,103,55, +57,53,3,1,4,103,55,57,54,2,163,2,2,163,2,2,163,2,2,163,2, +16,10,11,11,2,67,69,98,111,111,108,45,101,120,112,114,2,152,2,2,153, +2,2,164,2,2,164,2,2,164,2,2,164,2,18,158,97,10,2,149,2,2, +25,94,76,109,97,107,101,45,116,104,114,101,97,100,45,99,101,108,108,95,63, +97,110,100,2,160,2,10,95,2,1,93,2,27,160,2,92,9,2,161,2,2, +162,2,8,165,5,18,158,2,19,8,142,5,18,158,2,20,8,142,5,18,158, +2,21,8,142,5,18,158,2,22,8,142,5,18,158,2,23,8,142,5,30,2, +127,1,20,103,101,110,101,114,97,116,101,45,116,101,109,112,111,114,97,114,105, +101,115,0,16,4,11,11,2,154,2,3,1,7,101,110,118,52,49,56,48,16, +4,11,11,74,100,105,115,97,98,108,101,45,98,114,101,97,107,63,3,1,7, +101,110,118,52,49,55,57,18,98,2,58,8,143,4,8,142,4,8,141,4,8, +174,5,8,173,5,99,8,143,4,8,142,4,8,141,4,8,174,5,8,173,5, +16,8,11,11,3,1,4,103,56,48,54,3,1,4,103,56,48,55,3,1,4, +103,56,48,56,2,189,2,2,189,2,2,189,2,16,8,11,11,2,67,2,152, +2,2,153,2,2,190,2,2,190,2,2,190,2,18,158,161,10,2,92,9,2, +171,2,2,172,2,8,176,5,16,12,11,11,2,67,2,179,2,2,181,2,2, +152,2,2,153,2,2,128,3,2,128,3,2,128,3,2,128,3,2,128,3,16, +12,11,11,3,1,4,103,56,48,49,3,1,4,103,56,48,50,3,1,4,103, +56,48,51,3,1,4,103,56,48,52,3,1,4,103,56,48,53,2,191,2,2, +191,2,2,191,2,2,191,2,2,191,2,99,8,143,4,8,142,4,8,141,4, +8,174,5,8,173,5,8,179,5,8,178,5,18,158,2,58,8,180,5,18,158, +2,132,2,8,180,5,18,158,2,58,8,180,5,18,158,2,132,2,8,180,5, +103,8,143,4,8,142,4,8,141,4,8,174,5,8,173,5,8,179,5,8,178, +5,16,4,11,11,3,1,4,103,56,49,52,3,1,7,101,110,118,52,50,50, +56,16,4,11,11,2,178,2,3,1,7,101,110,118,52,50,50,57,16,4,11, +11,3,1,4,103,56,49,54,3,1,7,101,110,118,52,50,51,54,16,4,11, +11,2,180,2,3,1,7,101,110,118,52,50,51,55,18,158,2,58,8,185,5, +18,158,2,28,8,185,5,18,158,2,29,8,185,5,18,158,96,10,2,92,2, +173,2,95,2,92,93,94,2,182,2,95,2,150,2,11,2,25,96,2,149,2, +2,25,2,30,96,2,183,2,95,2,143,2,9,96,2,149,2,2,25,2,182, +2,96,2,149,2,2,34,95,2,143,2,93,2,184,2,95,2,185,2,2,32, +95,2,143,2,9,96,2,174,2,2,184,2,2,182,2,158,2,186,2,2,175, +2,160,2,92,9,2,176,2,2,177,2,2,32,95,2,143,2,93,2,188,2, +93,2,188,2,8,185,5,18,158,95,10,2,169,2,2,170,2,8,185,5,18, +158,95,10,2,167,2,2,168,2,8,185,5,18,158,96,10,2,187,2,2,165, +2,2,166,2,8,185,5,18,16,2,95,2,83,93,8,188,54,16,4,11,11, +2,102,3,1,7,101,110,118,52,50,53,52,95,9,8,188,54,2,56,96,93, +8,163,54,16,6,11,11,2,129,3,2,130,3,2,131,3,2,131,3,16,4, +11,11,3,1,4,103,56,49,53,3,1,7,101,110,118,52,50,54,51,16,4, +11,11,2,139,2,3,1,7,101,110,118,52,50,54,52,18,16,2,158,95,10, +2,180,2,2,83,8,130,6,95,9,8,163,54,2,127,96,93,8,163,54,16, +6,11,11,2,129,3,2,130,3,2,131,3,2,131,3,16,4,11,11,3,1, +4,103,56,49,51,3,1,7,101,110,118,52,50,54,56,16,4,11,11,2,139, +2,3,1,7,101,110,118,52,50,54,57,18,16,2,158,95,10,2,178,2,2, +83,8,132,6,95,9,8,163,54,2,127,16,4,11,11,2,154,2,3,1,7, +101,110,118,52,50,55,51,18,97,2,58,8,143,4,8,142,4,8,141,4,8, +134,6,98,8,143,4,8,142,4,8,141,4,8,134,6,16,6,11,11,3,1, +4,103,56,51,55,3,1,4,103,56,51,56,2,144,3,2,144,3,16,6,11, +11,2,67,2,153,2,2,145,3,2,145,3,18,158,96,10,2,135,3,93,94, +9,2,141,3,93,64,118,111,105,100,8,136,6,16,8,11,11,2,67,2,138, +3,2,153,2,2,147,3,2,147,3,2,147,3,16,8,11,11,3,1,4,103, +56,51,49,3,1,4,103,56,51,50,3,1,4,103,56,51,51,2,146,3,2, +146,3,2,146,3,98,8,143,4,8,142,4,8,141,4,8,134,6,8,139,6, +8,138,6,18,158,2,132,2,8,140,6,18,158,2,58,8,140,6,18,158,2, +132,2,8,140,6,100,8,143,4,8,142,4,8,141,4,8,134,6,8,139,6, +8,138,6,16,4,11,11,3,1,4,103,56,52,50,3,1,7,101,110,118,52, 51,49,51,16,4,11,11,2,136,3,3,1,7,101,110,118,52,51,49,52,18, -158,160,10,2,135,3,93,94,2,132,3,2,133,3,2,134,3,8,145,6,18, -158,96,10,2,137,3,2,139,3,2,140,3,8,145,6,18,16,2,95,2,83, +158,160,10,2,135,3,93,94,2,132,3,2,133,3,2,134,3,8,144,6,18, +158,96,10,2,137,3,2,139,3,2,140,3,8,144,6,18,16,2,95,2,83, 93,8,177,55,16,4,11,11,2,102,3,1,7,101,110,118,52,51,49,56,95, 9,8,177,55,2,56,96,93,8,169,55,16,4,11,11,3,1,8,119,115,116, 109,112,56,52,48,3,1,7,101,110,118,52,51,48,56,16,4,11,11,3,1, 4,103,56,52,49,3,1,7,101,110,118,52,51,50,51,16,4,11,11,2,139, 2,3,1,7,101,110,118,52,51,50,52,18,16,2,158,95,10,2,136,3,2, -83,8,149,6,95,9,8,169,55,2,127,98,8,146,4,8,145,4,8,144,4, -8,137,6,16,8,11,11,3,1,4,103,56,51,52,3,1,4,103,56,51,53, -3,1,4,103,56,51,54,2,151,3,2,151,3,2,151,3,16,8,11,11,2, -67,2,138,3,2,153,2,2,152,3,2,152,3,2,152,3,18,158,96,10,2, -137,3,2,142,3,2,143,3,8,151,6,16,4,11,11,2,154,2,3,1,7, -101,110,118,52,51,52,50,18,97,2,58,8,146,4,8,145,4,8,144,4,8, -153,6,98,8,146,4,8,145,4,8,144,4,8,153,6,16,10,11,11,3,1, +83,8,148,6,95,9,8,169,55,2,127,98,8,143,4,8,142,4,8,141,4, +8,134,6,16,8,11,11,3,1,4,103,56,51,52,3,1,4,103,56,51,53, +3,1,4,103,56,51,54,2,148,3,2,148,3,2,148,3,16,8,11,11,2, +67,2,138,3,2,153,2,2,149,3,2,149,3,2,149,3,18,158,96,10,2, +137,3,2,142,3,2,143,3,8,150,6,16,4,11,11,2,154,2,3,1,7, +101,110,118,52,51,52,50,18,97,2,58,8,143,4,8,142,4,8,141,4,8, +152,6,98,8,143,4,8,142,4,8,141,4,8,152,6,16,10,11,11,3,1, 4,103,56,53,48,3,1,4,103,56,53,49,3,1,4,103,56,53,50,3,1, -4,103,56,53,51,2,156,3,2,156,3,2,156,3,2,156,3,16,10,11,11, -2,67,2,114,2,157,3,2,158,3,2,159,3,2,159,3,2,159,3,2,159, -3,18,158,95,10,67,99,97,108,108,47,99,99,160,2,143,2,93,2,153,3, -2,154,3,2,155,3,8,155,6,16,4,11,11,2,154,2,3,1,7,101,110, -118,52,51,54,50,18,97,2,58,8,146,4,8,145,4,8,144,4,8,157,6, -98,8,146,4,8,145,4,8,144,4,8,157,6,16,12,11,11,3,1,4,103, +4,103,56,53,51,2,153,3,2,153,3,2,153,3,2,153,3,16,10,11,11, +2,67,2,114,2,154,3,2,155,3,2,156,3,2,156,3,2,156,3,2,156, +3,18,158,95,10,67,99,97,108,108,47,99,99,160,2,143,2,93,2,150,3, +2,151,3,2,152,3,8,154,6,16,4,11,11,2,154,2,3,1,7,101,110, +118,52,51,54,50,18,97,2,58,8,143,4,8,142,4,8,141,4,8,156,6, +98,8,143,4,8,142,4,8,141,4,8,156,6,16,12,11,11,3,1,4,103, 56,53,55,3,1,4,103,56,53,56,3,1,4,103,56,53,57,3,1,4,103, -56,54,48,3,1,4,103,56,54,49,2,167,3,2,167,3,2,167,3,2,167, -3,2,167,3,16,12,11,11,2,67,2,165,3,2,166,3,2,157,3,2,158, -3,2,168,3,2,168,3,2,168,3,2,168,3,2,168,3,18,158,162,10,2, -92,9,95,2,164,3,2,160,3,2,161,3,2,162,3,2,163,3,8,159,6, +56,54,48,3,1,4,103,56,54,49,2,164,3,2,164,3,2,164,3,2,164, +3,2,164,3,16,12,11,11,2,67,2,162,3,2,163,3,2,154,3,2,155, +3,2,165,3,2,165,3,2,165,3,2,165,3,2,165,3,18,158,162,10,2, +92,9,95,2,161,3,2,157,3,2,158,3,2,159,3,2,160,3,8,158,6, 18,16,2,95,2,83,93,8,152,56,16,4,11,11,2,102,3,1,7,101,110, 118,52,51,56,52,95,9,8,152,56,2,56,16,4,11,11,2,154,2,3,1, -7,101,110,118,52,51,56,55,18,97,2,58,8,146,4,8,145,4,8,144,4, -8,162,6,98,8,146,4,8,145,4,8,144,4,8,162,6,16,8,11,11,3, +7,101,110,118,52,51,56,55,18,97,2,58,8,143,4,8,142,4,8,141,4, +8,161,6,98,8,143,4,8,142,4,8,141,4,8,161,6,16,8,11,11,3, 1,4,103,56,55,49,3,1,4,103,56,55,50,3,1,4,103,56,55,51,2, -183,3,2,183,3,2,183,3,16,8,11,11,2,67,2,157,3,2,158,3,2, -184,3,2,184,3,2,184,3,18,158,161,10,2,92,9,2,173,3,2,174,3, -8,164,6,16,12,11,11,2,67,2,181,3,2,158,2,2,157,3,2,158,3, -2,186,3,2,186,3,2,186,3,2,186,3,2,186,3,16,12,11,11,3,1, +180,3,2,180,3,2,180,3,16,8,11,11,2,67,2,154,3,2,155,3,2, +181,3,2,181,3,2,181,3,18,158,161,10,2,92,9,2,170,3,2,171,3, +8,163,6,16,12,11,11,2,67,2,178,3,2,158,2,2,154,3,2,155,3, +2,183,3,2,183,3,2,183,3,2,183,3,2,183,3,16,12,11,11,3,1, 4,103,56,54,54,3,1,4,103,56,54,55,3,1,4,103,56,54,56,3,1, -4,103,56,54,57,3,1,4,103,56,55,48,2,185,3,2,185,3,2,185,3, -2,185,3,2,185,3,98,8,146,4,8,145,4,8,144,4,8,162,6,8,167, -6,8,166,6,18,158,2,58,8,168,6,18,158,2,132,2,8,168,6,100,8, -146,4,8,145,4,8,144,4,8,162,6,8,167,6,8,166,6,16,4,11,11, +4,103,56,54,57,3,1,4,103,56,55,48,2,182,3,2,182,3,2,182,3, +2,182,3,2,182,3,98,8,143,4,8,142,4,8,141,4,8,161,6,8,166, +6,8,165,6,18,158,2,58,8,167,6,18,158,2,132,2,8,167,6,100,8, +143,4,8,142,4,8,141,4,8,161,6,8,166,6,8,165,6,16,4,11,11, 3,1,4,103,56,55,56,3,1,7,101,110,118,52,52,51,50,16,4,11,11, -2,179,3,3,1,7,101,110,118,52,52,51,51,18,158,96,10,2,92,2,175, -3,95,2,92,93,94,2,180,3,159,2,143,2,9,2,176,3,96,2,182,3, -2,180,3,160,2,143,2,9,2,177,3,2,178,3,2,180,3,8,171,6,18, -158,95,10,2,171,3,2,172,3,8,171,6,18,158,97,10,2,92,93,94,2, -130,2,2,169,3,95,2,137,3,2,169,3,2,170,3,95,2,137,3,2,170, -3,2,130,2,8,171,6,18,16,2,95,2,83,93,8,188,56,16,4,11,11, +2,176,3,3,1,7,101,110,118,52,52,51,51,18,158,96,10,2,92,2,172, +3,95,2,92,93,94,2,177,3,159,2,143,2,9,2,173,3,96,2,179,3, +2,177,3,160,2,143,2,9,2,174,3,2,175,3,2,177,3,8,170,6,18, +158,95,10,2,168,3,2,169,3,8,170,6,18,158,97,10,2,92,93,94,2, +130,2,2,166,3,95,2,137,3,2,166,3,2,167,3,95,2,137,3,2,167, +3,2,130,2,8,170,6,18,16,2,95,2,83,93,8,188,56,16,4,11,11, 2,102,3,1,7,101,110,118,52,52,51,55,95,9,8,188,56,2,56,96,93, 8,180,56,16,4,11,11,3,1,8,119,115,116,109,112,56,55,54,3,1,7, 101,110,118,52,52,50,55,16,4,11,11,3,1,4,103,56,55,55,3,1,7, 101,110,118,52,52,52,52,16,4,11,11,2,139,2,3,1,7,101,110,118,52, -52,52,53,18,16,2,158,95,10,2,179,3,2,83,8,176,6,95,9,8,180, +52,52,53,18,16,2,158,95,10,2,176,3,2,83,8,175,6,95,9,8,180, 56,2,127,16,4,11,11,2,154,2,3,1,7,101,110,118,52,52,52,57,18, -97,2,58,8,146,4,8,145,4,8,144,4,8,178,6,98,8,146,4,8,145, -4,8,144,4,8,178,6,16,8,11,11,3,1,4,103,56,56,57,3,1,4, -103,56,57,48,3,1,4,103,56,57,49,2,189,3,2,189,3,2,189,3,16, -8,11,11,2,67,2,152,2,2,153,2,2,190,3,2,190,3,2,190,3,18, -158,97,10,2,135,3,93,94,96,2,82,2,191,3,2,128,4,2,129,4,95, -70,116,105,109,101,45,97,112,112,108,121,160,2,143,2,9,2,187,3,2,188, +97,2,58,8,143,4,8,142,4,8,141,4,8,177,6,98,8,143,4,8,142, +4,8,141,4,8,177,6,16,8,11,11,3,1,4,103,56,56,57,3,1,4, +103,56,57,48,3,1,4,103,56,57,49,2,186,3,2,186,3,2,186,3,16, +8,11,11,2,67,2,152,2,2,153,2,2,187,3,2,187,3,2,187,3,18, +158,97,10,2,135,3,93,94,96,2,82,2,188,3,2,189,3,2,190,3,95, +70,116,105,109,101,45,97,112,112,108,121,160,2,143,2,9,2,184,3,2,185, 3,64,110,117,108,108,97,66,112,114,105,110,116,102,6,40,40,99,112,117,32, 116,105,109,101,58,32,126,115,32,114,101,97,108,32,116,105,109,101,58,32,126, -115,32,103,99,32,116,105,109,101,58,32,126,115,126,110,2,191,3,2,128,4, -2,129,4,95,65,97,112,112,108,121,66,118,97,108,117,101,115,2,82,8,180, +115,32,103,99,32,116,105,109,101,58,32,126,115,126,110,2,188,3,2,189,3, +2,190,3,95,65,97,112,112,108,121,66,118,97,108,117,101,115,2,82,8,179, 6,159,34,20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114, 73,35,37,109,111,114,101,45,115,99,104,101,109,101,2,2,10,10,10,48,80, 158,34,34,20,99,159,34,16,31,30,2,2,2,3,193,30,2,2,2,4,193, @@ -3227,10 +3229,10 @@ 158,47,42,193,11,248,80,158,46,39,248,80,158,47,37,196,11,11,11,28,192, 27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,67,195,196, 251,80,158,45,40,20,15,159,45,37,43,21,94,2,52,2,53,248,22,59,197, -248,22,58,197,250,22,176,8,11,2,54,197,34,20,99,159,34,16,9,2,134, -4,2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2,140,4,2,141, -4,2,142,4,16,4,33,147,4,33,149,4,33,150,4,33,152,4,11,16,5, -93,2,38,89,162,34,35,8,27,9,223,0,27,249,22,152,3,20,15,159,37, +248,22,58,197,250,22,176,8,11,2,54,197,34,20,99,159,34,16,9,2,131, +4,2,132,4,2,133,4,2,134,4,2,135,4,2,136,4,2,137,4,2,138, +4,2,139,4,16,4,33,144,4,33,146,4,33,147,4,33,149,4,11,16,5, +93,2,44,89,162,34,35,8,27,9,223,0,27,249,22,152,3,20,15,159,37, 34,46,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, 196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,38,248, 80,158,42,36,195,248,80,158,42,39,248,80,158,43,37,196,11,11,28,192,27, @@ -3256,9 +3258,9 @@ 28,248,80,158,54,42,193,248,80,158,54,43,193,11,11,11,248,80,158,47,39, 248,80,158,48,37,196,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, 27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249,80,158,45,44,204, -27,251,22,67,200,199,201,202,250,80,158,49,45,89,162,34,34,43,9,224,15, +27,251,22,67,199,200,201,202,250,80,158,49,45,89,162,34,34,43,9,224,15, 3,253,80,158,41,40,20,15,159,41,38,46,21,96,2,77,2,78,2,79,2, -80,248,22,94,199,248,22,93,199,248,22,58,199,248,22,84,199,21,95,2,81, +80,248,22,94,199,248,22,93,199,248,22,84,199,248,22,58,199,21,95,2,81, 95,2,47,2,82,94,2,68,2,83,96,2,1,2,84,2,85,2,83,20,15, 159,49,39,46,27,28,248,80,158,40,34,197,249,80,158,41,35,248,80,158,42, 36,199,27,248,80,158,43,37,200,28,248,80,158,43,34,193,249,80,158,44,35, @@ -3272,12 +3274,12 @@ 158,52,37,196,28,248,80,158,52,42,193,248,80,158,52,43,193,11,11,11,11, 11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22, 96,197,27,249,22,76,199,38,27,249,22,76,200,39,27,249,22,75,201,40,249, -80,158,48,44,23,15,27,253,22,67,204,202,203,205,201,206,250,80,158,52,45, +80,158,48,44,23,15,27,253,22,67,203,202,201,205,204,206,250,80,158,52,45, 89,162,34,34,46,9,224,18,3,26,8,80,158,43,40,20,15,159,43,40,46, 21,98,2,86,2,87,2,88,2,89,2,90,2,91,249,22,75,202,39,248,22, -96,201,248,22,58,201,248,22,93,201,248,22,84,201,249,22,76,202,38,21,95, +96,201,249,22,76,202,38,248,22,58,201,248,22,84,201,248,22,93,201,21,95, 2,92,93,94,2,65,2,82,96,2,81,95,2,47,2,65,94,2,68,2,83, -96,2,1,2,84,2,85,2,83,97,2,38,2,65,2,93,2,94,2,83,20, +96,2,1,2,84,2,85,2,83,97,2,44,2,65,2,93,2,94,2,83,20, 15,159,52,41,46,27,28,248,80,158,41,34,198,249,80,158,42,35,248,80,158, 43,36,200,27,248,80,158,44,37,201,28,248,80,158,44,34,193,27,28,248,22, 149,3,194,193,201,249,80,158,46,35,248,80,158,47,36,196,27,248,80,158,48, @@ -3304,11 +3306,11 @@ 248,22,58,194,27,248,22,59,195,28,248,22,63,248,22,153,3,194,250,22,176, 8,11,2,54,204,250,22,176,8,11,6,31,31,98,97,100,32,115,121,110,116, 97,120,32,40,105,108,108,101,103,97,108,32,117,115,101,32,111,102,32,96,46, -39,41,206,250,22,176,8,11,2,54,202,34,20,99,159,34,16,12,2,134,4, -2,135,4,2,136,4,2,137,4,2,138,4,2,139,4,2,140,4,2,153,4, -2,141,4,2,142,4,2,154,4,2,155,4,16,8,33,158,4,33,160,4,33, -161,4,33,163,4,33,165,4,33,166,4,33,168,4,33,169,4,11,16,5,93, -2,45,87,95,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38, +39,41,206,250,22,176,8,11,2,54,202,34,20,99,159,34,16,12,2,131,4, +2,132,4,2,133,4,2,134,4,2,135,4,2,136,4,2,137,4,2,150,4, +2,138,4,2,139,4,2,151,4,2,152,4,16,8,33,155,4,33,157,4,33, +158,4,33,160,4,33,162,4,33,163,4,33,165,4,33,166,4,11,16,5,93, +2,40,87,95,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38, 47,20,15,159,38,46,49,21,94,2,105,2,106,248,22,58,198,248,22,84,198, 80,159,34,8,33,35,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80, 158,38,47,20,15,159,38,42,49,21,94,2,107,2,108,248,22,58,198,248,22, @@ -3337,318 +3339,318 @@ 248,22,159,3,249,80,158,52,44,20,15,159,52,38,49,204,27,28,248,80,158, 46,39,194,248,80,158,46,41,194,11,28,192,27,249,22,152,3,20,15,159,48, 39,49,249,80,158,50,44,20,15,159,50,40,49,200,27,248,80,158,48,43,194, -28,192,249,80,158,49,45,23,16,27,252,22,67,202,204,206,23,17,23,16,250, +28,192,249,80,158,49,45,23,16,27,252,22,67,23,16,202,23,17,204,206,250, 80,158,53,46,89,162,34,34,47,9,224,19,3,252,80,158,40,47,20,15,159, 40,41,49,21,95,2,109,2,110,2,111,250,22,2,80,159,43,8,32,35,248, -22,96,201,248,22,95,201,248,22,93,198,249,22,71,248,22,84,200,250,80,158, -45,47,20,15,159,45,43,49,21,93,2,112,248,22,58,203,21,96,2,92,2, +22,93,201,248,22,58,201,248,22,95,198,249,22,71,248,22,96,200,250,80,158, +45,47,20,15,159,45,43,49,21,93,2,112,248,22,84,203,21,96,2,92,2, 113,94,94,2,114,2,115,2,83,95,2,81,94,2,116,2,117,96,2,1,2, 118,2,83,95,2,113,2,119,2,83,20,15,159,53,44,49,27,28,248,80,158, 49,34,195,249,80,158,50,35,248,80,158,51,36,197,27,248,80,158,52,37,198, 28,248,80,158,52,39,193,248,80,158,52,41,193,11,11,28,192,27,248,22,58, -194,27,248,22,59,195,249,80,158,52,45,23,19,27,254,22,67,203,23,15,23, -19,23,17,202,23,22,23,21,250,80,158,56,46,89,162,34,34,49,9,224,22, +194,27,248,22,59,195,249,80,158,52,45,23,19,27,254,22,67,23,21,23,15, +23,22,203,202,23,17,23,19,250,80,158,56,46,89,162,34,34,49,9,224,22, 3,254,80,158,42,47,20,15,159,42,45,49,21,97,2,120,2,121,2,122,2, -123,2,124,250,22,2,80,159,45,8,33,35,249,22,76,204,39,249,22,75,204, -40,248,22,93,200,248,22,58,200,249,22,76,201,38,249,22,71,248,22,96,202, +123,2,124,250,22,2,80,159,45,8,33,35,248,22,93,203,248,22,58,203,249, +22,75,201,40,248,22,96,200,249,22,76,201,38,249,22,71,249,22,76,203,39, 250,80,158,47,47,20,15,159,47,47,49,21,93,2,125,248,22,84,205,21,96, 2,92,2,113,94,94,2,114,2,115,2,83,96,2,81,2,117,96,2,1,2, 84,2,85,2,83,96,2,1,2,118,2,83,95,2,113,2,119,2,83,20,15, 159,56,48,49,250,22,176,8,11,2,54,197,248,80,158,46,48,20,15,159,46, -49,49,250,22,176,8,11,2,54,196,34,20,99,159,36,16,15,2,134,4,2, -135,4,2,136,4,2,137,4,2,138,4,2,141,4,2,170,4,2,142,4,2, -171,4,2,139,4,2,172,4,2,154,4,2,155,4,2,140,4,2,173,4,16, -16,33,175,4,33,179,4,33,180,4,33,181,4,33,182,4,33,185,4,33,186, -4,33,187,4,33,188,4,33,132,5,33,133,5,33,135,5,33,136,5,33,137, -5,33,138,5,33,140,5,11,16,5,93,2,42,89,162,34,35,45,9,223,0, +49,49,250,22,176,8,11,2,54,196,34,20,99,159,36,16,15,2,131,4,2, +132,4,2,133,4,2,134,4,2,135,4,2,138,4,2,167,4,2,139,4,2, +168,4,2,136,4,2,169,4,2,151,4,2,152,4,2,137,4,2,170,4,16, +16,33,172,4,33,176,4,33,177,4,33,178,4,33,179,4,33,182,4,33,183, +4,33,184,4,33,185,4,33,129,5,33,130,5,33,132,5,33,133,5,33,134, +5,33,135,5,33,137,5,11,16,5,93,2,38,89,162,34,35,45,9,223,0, 27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158,37,34,194,249, 80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158, 40,34,193,249,80,158,41,38,248,80,158,42,36,195,248,80,158,42,39,248,80, 158,43,37,196,11,11,28,192,27,248,22,58,194,27,248,22,59,195,249,80,158, 40,40,199,250,80,158,43,41,20,15,159,43,35,42,21,93,2,140,2,197,250, -22,176,8,11,2,54,196,34,20,99,159,34,16,8,2,134,4,2,135,4,2, -136,4,2,137,4,2,138,4,2,139,4,2,154,4,2,140,4,16,2,33,142, -5,33,144,5,11,16,5,93,2,61,27,247,22,175,13,253,22,66,248,199,20, -15,159,42,34,34,248,199,20,15,159,42,35,34,248,199,20,15,159,42,36,34, -248,22,66,248,200,20,15,159,43,37,34,248,22,66,248,200,20,15,159,43,38, -34,10,43,20,99,159,34,16,0,16,5,33,146,5,33,147,5,33,148,5,33, -149,5,33,150,5,11,16,5,93,2,41,89,162,34,35,55,9,223,0,27,249, -22,152,3,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249,80,158, -38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34, -193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80,158,41,37,194,28, -248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80,158, -44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193,11,11,11,11,11, -28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,67, -195,196,251,80,158,44,41,20,15,159,44,35,49,21,94,2,144,2,2,145,2, -248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158,39,35, -248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249, -80,158,42,42,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22,8, -89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224,4, -5,249,80,158,37,43,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158, -40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42, -35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,194, -248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,44,193, -11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35,248, -80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248,80, -158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20,15, -159,45,36,49,249,22,1,22,71,250,22,2,22,65,248,22,159,3,249,80,158, -53,45,20,15,159,53,37,49,206,248,22,159,3,249,80,158,53,45,20,15,159, -53,38,49,205,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28,192, -249,80,158,46,46,205,27,250,22,67,198,200,201,250,80,158,50,47,89,162,34, -34,42,9,224,16,3,252,80,158,40,41,20,15,159,40,39,49,21,95,2,146, -2,2,147,2,2,148,2,248,22,58,198,248,22,86,198,248,22,84,198,21,96, -2,149,2,2,12,96,2,11,95,2,150,2,11,2,12,2,151,2,2,83,97, -2,92,9,2,152,2,2,153,2,2,83,20,15,159,50,40,49,248,80,158,45, -48,20,15,159,45,41,49,250,22,176,8,11,2,54,197,34,20,99,159,34,16, -15,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4,2,142, -4,2,140,4,2,138,4,2,170,4,2,171,4,2,172,4,2,154,4,2,155, -4,2,173,4,16,8,33,152,5,33,154,5,33,158,5,33,159,5,33,160,5, -33,162,5,33,163,5,33,165,5,11,16,5,93,2,36,89,162,34,35,51,9, -223,0,27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158,37,34, -194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248, -80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158,43, -37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195,27, -248,80,158,46,37,196,28,248,80,158,46,38,193,248,80,158,46,39,193,11,11, -11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248, -22,94,197,249,80,158,42,40,201,27,250,22,67,200,198,199,252,80,158,48,41, -20,15,159,48,35,42,21,95,2,160,2,2,161,2,2,162,2,248,22,58,198, -248,22,86,198,248,22,84,198,250,22,176,8,11,2,54,196,34,20,99,159,34, -16,8,2,134,4,2,135,4,2,136,4,2,137,4,2,141,4,2,142,4,2, -154,4,2,140,4,16,2,33,167,5,33,169,5,11,16,5,93,2,62,27,247, -22,175,13,253,22,66,248,199,20,15,159,42,34,34,248,199,20,15,159,42,35, -34,248,199,20,15,159,42,36,34,248,22,66,248,200,20,15,159,43,37,34,248, -22,66,248,200,20,15,159,43,38,34,10,43,20,99,159,34,16,0,16,5,33, -170,5,33,171,5,33,172,5,33,173,5,33,174,5,11,16,5,94,2,37,2, -43,87,96,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42, -20,15,159,38,46,50,21,94,2,165,2,2,166,2,248,22,58,198,248,22,84, -198,80,159,34,8,35,35,83,158,34,16,2,89,162,35,35,41,9,223,0,251, -80,158,38,42,20,15,159,38,45,50,21,94,2,167,2,2,168,2,248,22,58, -198,248,22,84,198,80,159,34,8,34,35,83,158,34,16,2,89,162,35,35,41, -9,223,0,251,80,158,38,42,20,15,159,38,44,50,21,94,2,169,2,2,170, -2,248,22,58,198,248,22,84,198,80,159,34,8,33,35,27,89,162,8,36,35, -36,62,119,104,223,1,89,162,34,35,8,26,9,224,0,1,27,249,22,152,3, -20,15,159,38,34,50,197,27,28,248,80,158,38,34,194,249,80,158,39,35,248, -80,158,40,36,196,27,248,80,158,41,37,197,28,248,80,158,41,34,193,28,248, -80,158,41,38,248,80,158,42,36,194,27,248,80,158,42,37,194,28,248,80,158, -42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45,37,196, -28,248,80,158,45,39,193,248,80,158,45,40,193,11,11,11,11,11,28,192,27, -248,22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,42,41,201,27, -249,22,67,197,198,251,80,158,47,42,20,15,159,47,35,50,21,94,2,171,2, -2,172,2,248,22,59,197,248,22,58,197,27,28,248,80,158,39,34,195,249,80, -158,40,35,248,80,158,41,36,197,27,248,80,158,42,37,198,28,248,80,158,42, -34,193,249,80,158,43,43,27,248,80,158,45,36,196,28,248,80,158,45,39,193, -248,22,8,89,162,34,35,41,9,224,11,1,27,249,22,2,89,162,34,35,46, -9,224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35, -248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249, -80,158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196, -11,11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158, -37,45,193,11,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249,80,158, -46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158,48,39, -193,248,80,158,48,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22, -84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152, -3,20,15,159,46,36,50,248,80,158,47,46,249,22,2,32,0,89,162,8,44, -35,35,9,222,1,23,119,105,116,104,45,104,97,110,100,108,101,114,115,45,112, -114,101,100,105,99,97,116,101,248,22,159,3,249,80,158,52,47,20,15,159,52, -37,50,204,27,249,22,152,3,20,15,159,47,38,50,248,80,158,48,46,249,22, -2,32,0,89,162,8,44,35,35,9,222,1,21,119,105,116,104,45,104,97,110, -100,108,101,114,115,45,104,97,110,100,108,101,114,248,22,159,3,249,80,158,53, -47,20,15,159,53,39,50,204,27,28,248,80,158,47,39,195,248,80,158,47,40, -195,11,28,192,27,28,248,80,158,48,39,195,248,80,158,48,40,195,11,28,192, -27,249,22,152,3,20,15,159,50,40,50,28,23,15,20,15,159,50,41,50,20, -15,159,50,42,50,249,80,158,50,41,23,17,27,254,22,67,202,23,18,23,15, -23,17,204,203,23,16,250,80,158,54,48,89,162,34,34,50,9,224,20,3,254, -80,158,42,42,20,15,159,42,43,50,21,97,2,173,2,2,174,2,2,175,2, -2,176,2,2,177,2,249,22,71,250,22,2,80,159,47,8,33,35,249,22,76, -206,38,248,22,84,205,250,22,2,80,159,47,8,34,35,249,22,76,206,39,248, -22,96,205,248,22,58,200,250,22,2,80,159,45,8,35,35,249,22,76,204,38, -249,22,76,204,39,249,22,75,201,40,248,22,93,200,21,95,2,92,96,94,2, -178,2,2,179,2,2,83,94,2,180,2,2,181,2,2,83,95,2,92,93,94, -2,182,2,95,2,150,2,11,2,25,96,2,149,2,2,25,2,30,96,2,183, -2,95,2,143,2,9,96,2,149,2,2,25,2,182,2,96,2,149,2,2,34, -95,2,143,2,93,2,184,2,95,2,185,2,2,32,95,2,143,2,9,96,63, -117,113,49,2,184,2,2,182,2,95,2,186,2,95,2,187,2,2,178,2,2, -180,2,2,83,97,2,92,9,2,152,2,2,153,2,2,83,2,32,95,2,143, -2,93,2,188,2,93,2,188,2,20,15,159,54,47,50,248,80,158,48,49,20, -15,159,48,48,50,248,80,158,47,49,20,15,159,47,49,50,250,22,176,8,11, -2,54,197,249,22,7,248,195,10,248,195,11,38,20,99,159,37,16,16,2,134, -4,2,135,4,2,136,4,2,137,4,2,139,4,2,141,4,2,142,4,2,154, -4,2,140,4,2,138,4,2,170,4,2,171,4,2,175,5,2,172,4,2,155, -4,2,173,4,16,16,33,178,5,33,180,5,33,184,5,33,185,5,33,186,5, -33,187,5,33,189,5,33,190,5,33,191,5,33,128,6,33,129,6,33,130,6, -33,131,6,33,132,6,33,134,6,33,136,6,11,16,5,93,2,35,87,95,83, -158,34,16,2,89,162,34,36,49,68,116,114,121,45,110,101,120,116,223,0,27, -28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27,248,80, -158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,39,27,248,80,158,42, -36,196,28,248,80,158,42,41,193,248,22,65,248,80,158,43,42,194,11,27,248, -80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,39,248,80,158,44, -36,195,248,80,158,44,38,248,80,158,45,37,196,11,11,11,28,192,27,248,22, -58,194,27,248,22,84,195,27,248,22,86,196,28,27,248,80,158,40,42,249,80, -158,42,43,20,15,159,42,36,50,197,87,94,249,22,3,89,162,34,35,41,9, -224,7,9,28,248,80,158,36,44,195,12,251,22,176,8,11,6,17,17,110,111, -116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,196,198,194,27,248,80, -158,41,45,194,28,192,251,22,176,8,11,6,20,20,100,117,112,108,105,99,97, -116,101,32,105,100,101,110,116,105,102,105,101,114,204,196,12,27,249,22,152,3, -20,15,159,41,37,50,248,80,158,42,46,249,80,158,44,43,20,15,159,44,38, -50,199,27,28,248,80,158,41,41,194,248,80,158,41,42,194,11,28,192,249,80, -158,42,47,202,27,250,22,67,198,200,201,250,80,158,46,48,89,162,34,34,45, -9,224,12,3,252,80,158,40,40,20,15,159,40,39,50,21,95,2,132,3,2, -133,3,2,134,3,248,22,58,198,248,22,84,198,250,22,2,80,159,43,8,27, -35,248,22,86,201,248,22,58,201,21,96,2,135,3,93,94,94,2,136,3,2, -83,2,153,2,95,2,137,3,2,138,3,2,136,3,2,83,20,15,159,46,41, -50,248,80,158,41,49,20,15,159,41,42,50,250,22,176,8,11,2,54,200,250, -22,176,8,11,2,54,197,80,159,34,8,28,35,83,158,34,16,2,89,162,35, -35,41,9,223,0,251,80,158,38,40,20,15,159,38,40,50,21,94,2,139,3, -2,140,3,248,22,58,198,248,22,84,198,80,159,34,8,27,35,89,162,34,35, -49,9,223,0,27,249,22,152,3,20,15,159,37,34,50,196,27,28,248,80,158, -37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197, -28,248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248, -80,158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,39,248,80,158,43, -36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,11,11,28,192,27,248, -22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159,41,35,50,21,93, -2,141,3,195,27,28,248,80,158,38,34,195,249,80,158,39,35,248,80,158,40, -36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80,158,42,39, -27,248,80,158,44,36,196,28,248,80,158,44,34,193,249,80,158,45,35,248,80, -158,46,36,195,248,80,158,46,38,248,80,158,47,37,196,11,27,248,80,158,44, -37,196,28,248,80,158,44,34,193,249,80,158,45,39,248,80,158,46,36,195,248, -80,158,46,38,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58,194,27, -248,22,84,195,27,248,22,86,196,28,248,80,158,41,44,194,27,249,22,67,195, -196,251,80,158,45,40,20,15,159,45,43,50,21,94,2,142,3,2,143,3,248, -22,59,197,248,22,58,197,249,80,159,42,8,28,35,199,201,249,80,159,39,8, -28,35,196,198,34,20,99,159,36,16,16,2,134,4,2,135,4,2,136,4,2, -137,4,2,139,4,2,138,4,2,140,4,2,141,4,2,142,4,2,172,4,2, -153,4,30,2,64,1,26,99,104,101,99,107,45,100,117,112,108,105,99,97,116, -101,45,105,100,101,110,116,105,102,105,101,114,0,2,175,5,2,154,4,2,155, -4,2,173,4,16,10,33,138,6,33,140,6,33,142,6,33,143,6,33,144,6, -33,146,6,33,147,6,33,148,6,33,150,6,33,152,6,11,16,5,93,2,40, -89,162,34,35,51,9,223,0,27,249,22,152,3,20,15,159,37,34,42,196,27, -28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80, -158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36, -195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248, -80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,38,193,248,80, -158,46,39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, -248,22,93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22,67,200,198, -199,252,80,158,48,41,20,15,159,48,35,42,21,95,2,153,3,2,154,3,2, -155,3,248,22,58,198,248,22,86,198,248,22,84,198,250,22,176,8,11,2,54, -196,34,20,99,159,34,16,8,2,134,4,2,135,4,2,136,4,2,137,4,2, -141,4,2,142,4,2,154,4,2,140,4,16,2,33,154,6,33,156,6,11,16, -5,93,2,39,89,162,34,35,51,9,223,0,27,249,22,152,3,20,15,159,37, -34,44,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, -196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248, -80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80, -158,44,38,27,248,80,158,46,36,196,28,248,80,158,46,39,193,248,22,65,248, -80,158,47,40,194,11,27,248,80,158,46,37,196,28,248,80,158,46,34,193,249, -80,158,47,35,248,80,158,48,36,195,27,248,80,158,49,37,196,28,248,80,158, -49,39,193,248,80,158,49,40,193,11,11,11,11,11,28,192,27,248,22,58,194, -27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,249, -80,158,43,41,202,27,251,22,67,202,201,199,200,250,80,158,47,42,89,162,34, -34,43,9,224,13,3,253,80,158,41,43,20,15,159,41,35,44,21,96,2,160, -3,2,161,3,2,162,3,2,163,3,248,22,58,199,248,22,84,199,248,22,94, -199,248,22,93,199,21,98,2,92,9,95,2,164,3,2,165,3,94,2,166,3, -2,83,2,157,3,2,158,3,2,83,20,15,159,47,36,44,250,22,176,8,11, -2,54,196,34,20,99,159,34,16,10,2,134,4,2,135,4,2,136,4,2,137, -4,2,138,4,2,141,4,2,142,4,2,154,4,2,155,4,2,140,4,16,3, -33,158,6,33,160,6,33,161,6,11,16,5,93,2,44,87,95,83,158,34,16, -2,89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38,40,50,21, -94,2,169,3,2,170,3,248,22,58,198,248,22,93,198,80,159,34,8,27,35, -83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159, -38,39,50,21,94,2,171,3,2,172,3,248,22,58,198,248,22,84,198,80,159, -34,8,26,35,89,162,34,35,54,9,223,0,27,249,22,152,3,20,15,159,37, -34,50,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36, -196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80,158,40,38, -248,80,158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41,34,193,249, -80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248,80,158, -44,39,193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248,22,58,194, -27,248,22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249,22,67,197, -198,251,80,158,46,42,20,15,159,46,35,50,21,94,2,173,3,2,174,3,248, -22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158,39,35,248, -80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80, -158,42,43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22,8,89, -162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224,4,5, -249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248,80,158,40, -36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158,42,35, -248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,194,248, -80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,45,193,11, -27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35,248,80, -158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248,80,158, -47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248, -22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20,15,159, -45,36,50,248,80,158,46,46,249,80,158,48,47,20,15,159,48,37,50,201,27, -28,248,80,158,45,39,194,248,80,158,45,40,194,11,28,192,249,80,158,46,41, -205,27,252,22,67,200,204,202,203,205,250,80,158,50,48,89,162,34,34,48,9, -224,16,3,253,80,158,41,42,20,15,159,41,38,50,21,96,2,175,3,2,176, -3,2,177,3,2,178,3,250,22,2,80,159,44,8,26,35,248,22,58,202,248, -22,84,202,252,22,2,80,159,46,8,27,35,248,22,58,204,248,22,58,204,248, -22,95,204,248,22,95,204,248,22,96,199,248,22,93,199,21,95,2,92,94,94, -2,179,3,2,158,2,2,83,95,2,92,93,94,2,180,3,96,2,143,2,9, -96,2,92,93,94,2,130,2,2,179,3,95,2,137,3,2,179,3,2,181,3, -95,2,137,3,2,181,3,2,130,2,2,83,96,2,182,3,2,180,3,97,2, -143,2,9,2,157,3,2,158,3,2,83,2,180,3,20,15,159,50,41,50,248, -80,158,45,49,20,15,159,45,42,50,250,22,176,8,11,2,54,197,34,20,99, -159,36,16,16,2,134,4,2,135,4,2,136,4,2,137,4,2,139,4,2,141, -4,2,142,4,2,154,4,2,140,4,2,138,4,2,170,4,2,171,4,2,175, -5,2,172,4,2,155,4,2,173,4,16,9,33,163,6,33,165,6,33,169,6, -33,170,6,33,172,6,33,173,6,33,174,6,33,175,6,33,177,6,11,16,5, -93,2,46,89,162,34,35,49,9,223,0,27,249,22,152,3,20,15,159,37,34, -42,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196, -27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80, -158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,38,193,248,80,158, -43,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22, -86,196,249,80,158,41,40,200,27,249,22,67,197,198,251,80,158,46,41,20,15, -159,46,35,42,21,94,2,187,3,2,188,3,248,22,59,197,248,22,58,197,250, -22,176,8,11,2,54,196,34,20,99,159,34,16,8,2,134,4,2,135,4,2, -136,4,2,137,4,2,141,4,2,142,4,2,154,4,2,140,4,16,2,33,179, -6,33,181,6,11,106,83,158,34,16,6,27,247,22,190,9,87,94,28,192,28, -248,22,189,9,193,12,250,22,177,8,2,164,3,2,130,4,195,12,91,159,39, -11,90,161,39,34,11,254,22,167,9,2,61,11,35,34,11,9,204,252,22,7, -197,198,199,250,22,169,9,203,34,2,131,4,250,22,170,9,204,34,2,131,4, -80,159,34,34,35,80,159,34,35,35,80,159,34,36,35,80,159,34,37,35,80, -159,34,38,35,83,158,34,16,2,89,162,34,35,41,2,8,223,0,87,94,28, -248,80,158,35,36,194,12,250,22,177,8,2,8,6,7,7,112,114,111,109,105, -115,101,196,27,248,80,158,36,37,195,28,248,22,0,193,27,249,22,6,195,22, -65,87,94,28,248,22,0,248,80,158,38,37,197,249,80,158,38,38,197,194,12, -249,22,1,22,7,248,80,158,39,37,198,249,22,1,22,7,194,80,159,34,39, -35,83,158,34,16,2,89,162,34,34,38,2,9,223,0,248,80,158,35,41,249, -22,25,11,80,158,37,42,80,159,34,40,35,83,158,34,16,2,89,162,34,36, -42,2,13,223,0,87,95,28,248,22,170,11,194,12,252,22,177,8,2,13,6, -16,16,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,34,198,199, -28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,177,8,2,13,6,19, -19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48,41,35, -198,199,20,14,159,80,158,34,42,193,247,194,80,159,34,43,35,83,158,34,16, -6,252,22,167,9,2,62,11,35,34,11,80,159,34,44,35,80,159,34,45,35, -80,159,34,46,35,80,159,34,47,35,80,159,34,48,35,83,158,34,16,6,27, -247,22,190,9,87,94,28,192,28,248,22,146,8,248,22,189,9,194,250,22,177, -8,2,164,3,2,130,4,195,12,12,91,159,39,11,90,161,39,34,11,254,22, -167,9,2,62,11,35,34,11,9,204,252,22,7,197,198,199,250,22,169,9,203, -34,2,132,4,250,22,170,9,204,34,2,132,4,80,159,34,49,35,80,159,34, -50,35,80,159,34,51,35,80,159,34,52,35,80,159,34,53,35,83,158,34,16, -2,89,162,34,34,38,2,24,223,0,248,80,158,35,45,249,22,25,11,80,158, -37,55,80,159,34,54,35,83,158,34,16,2,89,162,38,36,42,2,26,223,0, -87,95,28,248,80,158,35,46,194,12,252,22,177,8,2,26,6,22,22,98,114, -101,97,107,32,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,34, +22,176,8,11,2,54,196,34,20,99,159,34,16,8,2,131,4,2,132,4,2, +133,4,2,134,4,2,135,4,2,136,4,2,151,4,2,137,4,16,2,33,139, +5,33,141,5,11,16,5,93,2,61,27,248,22,175,13,10,253,22,66,248,199, +20,15,159,42,34,34,248,199,20,15,159,42,35,34,248,199,20,15,159,42,36, +34,248,22,66,248,200,20,15,159,43,37,34,248,22,66,248,200,20,15,159,43, +38,34,10,43,20,99,159,34,16,0,16,5,33,143,5,33,144,5,33,145,5, +33,146,5,33,147,5,11,16,5,93,2,43,89,162,34,35,55,9,223,0,27, +249,22,152,3,20,15,159,37,34,49,196,27,28,248,80,158,37,34,194,249,80, +158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28,248,80,158,40, +34,193,28,248,80,158,40,38,248,80,158,41,36,194,27,248,80,158,41,37,194, +28,248,80,158,41,34,193,249,80,158,42,35,248,80,158,43,36,195,27,248,80, +158,44,37,196,28,248,80,158,44,39,193,248,80,158,44,40,193,11,11,11,11, +11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22, +67,196,195,251,80,158,44,41,20,15,159,44,35,49,21,94,2,144,2,2,145, +2,248,22,58,197,248,22,59,197,27,28,248,80,158,38,34,195,249,80,158,39, +35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193, +249,80,158,42,42,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22, +8,89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224, +4,5,249,80,158,37,43,28,248,80,158,38,34,197,249,80,158,39,35,248,80, +158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158, +42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11, +194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,44, +193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35, +248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248, +80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20, +15,159,45,36,49,249,22,1,22,71,250,22,2,22,65,248,22,159,3,249,80, +158,53,45,20,15,159,53,37,49,206,248,22,159,3,249,80,158,53,45,20,15, +159,53,38,49,205,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28, +192,249,80,158,46,46,205,27,250,22,67,198,201,200,250,80,158,50,47,89,162, +34,34,42,9,224,16,3,252,80,158,40,41,20,15,159,40,39,49,21,95,2, +146,2,2,147,2,2,148,2,248,22,58,198,248,22,84,198,248,22,86,198,21, +96,2,149,2,2,12,96,2,11,95,2,150,2,11,2,12,2,151,2,2,83, +97,2,92,9,2,152,2,2,153,2,2,83,20,15,159,50,40,49,248,80,158, +45,48,20,15,159,45,41,49,250,22,176,8,11,2,54,197,34,20,99,159,34, +16,15,2,131,4,2,132,4,2,133,4,2,134,4,2,136,4,2,138,4,2, +139,4,2,137,4,2,135,4,2,167,4,2,168,4,2,169,4,2,151,4,2, +152,4,2,170,4,16,8,33,149,5,33,151,5,33,155,5,33,156,5,33,157, +5,33,159,5,33,160,5,33,162,5,11,16,5,93,2,46,89,162,34,35,51, +9,223,0,27,249,22,152,3,20,15,159,37,34,42,196,27,28,248,80,158,37, +34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40,37,197,28, +248,80,158,40,34,193,249,80,158,41,35,248,80,158,42,36,195,27,248,80,158, +43,37,196,28,248,80,158,43,34,193,249,80,158,44,35,248,80,158,45,36,195, +27,248,80,158,46,37,196,28,248,80,158,46,38,193,248,80,158,46,39,193,11, +11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27, +248,22,94,197,249,80,158,42,40,201,27,250,22,67,199,198,200,252,80,158,48, +41,20,15,159,48,35,42,21,95,2,160,2,2,161,2,2,162,2,248,22,86, +198,248,22,58,198,248,22,84,198,250,22,176,8,11,2,54,196,34,20,99,159, +34,16,8,2,131,4,2,132,4,2,133,4,2,134,4,2,138,4,2,139,4, +2,151,4,2,137,4,16,2,33,164,5,33,166,5,11,16,5,93,2,62,27, +248,22,175,13,10,253,22,66,248,199,20,15,159,42,34,34,248,199,20,15,159, +42,35,34,248,199,20,15,159,42,36,34,248,22,66,248,200,20,15,159,43,37, +34,248,22,66,248,200,20,15,159,43,38,34,10,43,20,99,159,34,16,0,16, +5,33,167,5,33,168,5,33,169,5,33,170,5,33,171,5,11,16,5,94,2, +45,2,37,87,96,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158, +38,42,20,15,159,38,46,50,21,94,2,165,2,2,166,2,248,22,58,198,248, +22,84,198,80,159,34,8,35,35,83,158,34,16,2,89,162,35,35,41,9,223, +0,251,80,158,38,42,20,15,159,38,45,50,21,94,2,167,2,2,168,2,248, +22,58,198,248,22,84,198,80,159,34,8,34,35,83,158,34,16,2,89,162,35, +35,41,9,223,0,251,80,158,38,42,20,15,159,38,44,50,21,94,2,169,2, +2,170,2,248,22,58,198,248,22,84,198,80,159,34,8,33,35,27,89,162,8, +36,35,36,62,119,104,223,1,89,162,34,35,8,26,9,224,0,1,27,249,22, +152,3,20,15,159,38,34,50,197,27,28,248,80,158,38,34,194,249,80,158,39, +35,248,80,158,40,36,196,27,248,80,158,41,37,197,28,248,80,158,41,34,193, +28,248,80,158,41,38,248,80,158,42,36,194,27,248,80,158,42,37,194,28,248, +80,158,42,34,193,249,80,158,43,35,248,80,158,44,36,195,27,248,80,158,45, +37,196,28,248,80,158,45,39,193,248,80,158,45,40,193,11,11,11,11,11,28, +192,27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,42,41, +201,27,249,22,67,198,197,251,80,158,47,42,20,15,159,47,35,50,21,94,2, +171,2,2,172,2,248,22,58,197,248,22,59,197,27,28,248,80,158,39,34,195, +249,80,158,40,35,248,80,158,41,36,197,27,248,80,158,42,37,198,28,248,80, +158,42,34,193,249,80,158,43,43,27,248,80,158,45,36,196,28,248,80,158,45, +39,193,248,22,8,89,162,34,35,41,9,224,11,1,27,249,22,2,89,162,34, +35,46,9,224,4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158, +39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34, +193,249,80,158,42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44, +37,196,11,11,194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248, +80,158,37,45,193,11,27,248,80,158,45,37,196,28,248,80,158,45,34,193,249, +80,158,46,35,248,80,158,47,36,195,27,248,80,158,48,37,196,28,248,80,158, +48,39,193,248,80,158,48,40,193,11,11,11,11,28,192,27,248,22,58,194,27, +248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249, +22,152,3,20,15,159,46,36,50,248,80,158,47,46,249,22,2,32,0,89,162, +8,44,35,35,9,222,1,23,119,105,116,104,45,104,97,110,100,108,101,114,115, +45,112,114,101,100,105,99,97,116,101,248,22,159,3,249,80,158,52,47,20,15, +159,52,37,50,204,27,249,22,152,3,20,15,159,47,38,50,248,80,158,48,46, +249,22,2,32,0,89,162,8,44,35,35,9,222,1,21,119,105,116,104,45,104, +97,110,100,108,101,114,115,45,104,97,110,100,108,101,114,248,22,159,3,249,80, +158,53,47,20,15,159,53,39,50,204,27,28,248,80,158,47,39,195,248,80,158, +47,40,195,11,28,192,27,28,248,80,158,48,39,195,248,80,158,48,40,195,11, +28,192,27,249,22,152,3,20,15,159,50,40,50,28,23,15,20,15,159,50,41, +50,20,15,159,50,42,50,249,80,158,50,41,23,17,27,254,22,67,23,17,202, +23,16,23,18,204,23,15,203,250,80,158,54,48,89,162,34,34,50,9,224,20, +3,254,80,158,42,42,20,15,159,42,43,50,21,97,2,173,2,2,174,2,2, +175,2,2,176,2,2,177,2,249,22,71,250,22,2,80,159,47,8,33,35,249, +22,76,206,38,248,22,96,205,250,22,2,80,159,47,8,34,35,249,22,75,206, +40,248,22,58,205,248,22,84,200,250,22,2,80,159,45,8,35,35,249,22,76, +204,38,249,22,75,204,40,248,22,93,200,249,22,76,201,39,21,95,2,92,96, +94,2,178,2,2,179,2,2,83,94,2,180,2,2,181,2,2,83,95,2,92, +93,94,2,182,2,95,2,150,2,11,2,25,96,2,149,2,2,25,2,30,96, +2,183,2,95,2,143,2,9,96,2,149,2,2,25,2,182,2,96,2,149,2, +2,34,95,2,143,2,93,2,184,2,95,2,185,2,2,32,95,2,143,2,9, +96,63,117,113,49,2,184,2,2,182,2,95,2,186,2,95,2,187,2,2,178, +2,2,180,2,2,83,97,2,92,9,2,152,2,2,153,2,2,83,2,32,95, +2,143,2,93,2,188,2,93,2,188,2,20,15,159,54,47,50,248,80,158,48, +49,20,15,159,48,48,50,248,80,158,47,49,20,15,159,47,49,50,250,22,176, +8,11,2,54,197,249,22,7,248,195,10,248,195,11,38,20,99,159,37,16,16, +2,131,4,2,132,4,2,133,4,2,134,4,2,136,4,2,138,4,2,139,4, +2,151,4,2,137,4,2,135,4,2,167,4,2,168,4,2,172,5,2,169,4, +2,152,4,2,170,4,16,16,33,175,5,33,177,5,33,181,5,33,182,5,33, +183,5,33,184,5,33,186,5,33,187,5,33,188,5,33,189,5,33,190,5,33, +191,5,33,128,6,33,129,6,33,131,6,33,133,6,11,16,5,93,2,39,87, +95,83,158,34,16,2,89,162,34,36,49,68,116,114,121,45,110,101,120,116,223, +0,27,28,248,80,158,36,34,195,249,80,158,37,35,248,80,158,38,36,197,27, +248,80,158,39,37,198,28,248,80,158,39,34,193,249,80,158,40,39,27,248,80, +158,42,36,196,28,248,80,158,42,41,193,248,22,65,248,80,158,43,42,194,11, +27,248,80,158,42,37,196,28,248,80,158,42,34,193,249,80,158,43,39,248,80, +158,44,36,195,248,80,158,44,38,248,80,158,45,37,196,11,11,11,28,192,27, +248,22,58,194,27,248,22,84,195,27,248,22,86,196,28,27,248,80,158,40,42, +249,80,158,42,43,20,15,159,42,36,50,197,87,94,249,22,3,89,162,34,35, +41,9,224,7,9,28,248,80,158,36,44,195,12,251,22,176,8,11,6,17,17, +110,111,116,32,97,110,32,105,100,101,110,116,105,102,105,101,114,196,198,194,27, +248,80,158,41,45,194,28,192,251,22,176,8,11,6,20,20,100,117,112,108,105, +99,97,116,101,32,105,100,101,110,116,105,102,105,101,114,204,196,12,27,249,22, +152,3,20,15,159,41,37,50,248,80,158,42,46,249,80,158,44,43,20,15,159, +44,38,50,199,27,28,248,80,158,41,41,194,248,80,158,41,42,194,11,28,192, +249,80,158,42,47,202,27,250,22,67,200,201,198,250,80,158,46,48,89,162,34, +34,45,9,224,12,3,252,80,158,40,40,20,15,159,40,39,50,21,95,2,132, +3,2,133,3,2,134,3,248,22,86,198,248,22,58,198,250,22,2,80,159,43, +8,27,35,248,22,84,201,248,22,86,201,21,96,2,135,3,93,94,94,2,136, +3,2,83,2,153,2,95,2,137,3,2,138,3,2,136,3,2,83,20,15,159, +46,41,50,248,80,158,41,49,20,15,159,41,42,50,250,22,176,8,11,2,54, +200,250,22,176,8,11,2,54,197,80,159,34,8,28,35,83,158,34,16,2,89, +162,35,35,41,9,223,0,251,80,158,38,40,20,15,159,38,40,50,21,94,2, +139,3,2,140,3,248,22,58,198,248,22,84,198,80,159,34,8,27,35,89,162, +34,35,49,9,223,0,27,249,22,152,3,20,15,159,37,34,50,196,27,28,248, +80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27,248,80,158,40, +37,197,28,248,80,158,40,34,193,28,248,80,158,40,38,248,80,158,41,36,194, +27,248,80,158,41,37,194,28,248,80,158,41,34,193,249,80,158,42,39,248,80, +158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11,11,11,28,192, +27,248,22,58,194,27,248,22,59,195,250,80,158,41,40,20,15,159,41,35,50, +21,93,2,141,3,195,27,28,248,80,158,38,34,195,249,80,158,39,35,248,80, +158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193,249,80,158, +42,39,27,248,80,158,44,36,196,28,248,80,158,44,34,193,249,80,158,45,35, +248,80,158,46,36,195,248,80,158,46,38,248,80,158,47,37,196,11,27,248,80, +158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,39,248,80,158,46,36, +195,248,80,158,46,38,248,80,158,47,37,196,11,11,11,28,192,27,248,22,58, +194,27,248,22,84,195,27,248,22,86,196,28,248,80,158,41,44,194,27,249,22, +67,195,196,251,80,158,45,40,20,15,159,45,43,50,21,94,2,142,3,2,143, +3,248,22,59,197,248,22,58,197,249,80,159,42,8,28,35,199,201,249,80,159, +39,8,28,35,196,198,34,20,99,159,36,16,16,2,131,4,2,132,4,2,133, +4,2,134,4,2,136,4,2,135,4,2,137,4,2,138,4,2,139,4,2,169, +4,2,150,4,30,2,64,1,26,99,104,101,99,107,45,100,117,112,108,105,99, +97,116,101,45,105,100,101,110,116,105,102,105,101,114,0,2,172,5,2,151,4, +2,152,4,2,170,4,16,10,33,135,6,33,137,6,33,141,6,33,142,6,33, +143,6,33,145,6,33,146,6,33,147,6,33,149,6,33,151,6,11,16,5,93, +2,36,89,162,34,35,51,9,223,0,27,249,22,152,3,20,15,159,37,34,42, +196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39,36,196,27, +248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35,248,80,158, +42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193,249,80,158,44, +35,248,80,158,45,36,195,27,248,80,158,46,37,196,28,248,80,158,46,38,193, +248,80,158,46,39,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84, +195,27,248,22,93,196,27,248,22,94,197,249,80,158,42,40,201,27,250,22,67, +200,198,199,252,80,158,48,41,20,15,159,48,35,42,21,95,2,150,3,2,151, +3,2,152,3,248,22,58,198,248,22,86,198,248,22,84,198,250,22,176,8,11, +2,54,196,34,20,99,159,34,16,8,2,131,4,2,132,4,2,133,4,2,134, +4,2,138,4,2,139,4,2,151,4,2,137,4,16,2,33,153,6,33,155,6, +11,16,5,93,2,42,89,162,34,35,51,9,223,0,27,249,22,152,3,20,15, +159,37,34,44,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158, +39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41, +35,248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,34,193, +249,80,158,44,38,27,248,80,158,46,36,196,28,248,80,158,46,39,193,248,22, +65,248,80,158,47,40,194,11,27,248,80,158,46,37,196,28,248,80,158,46,34, +193,249,80,158,47,35,248,80,158,48,36,195,27,248,80,158,49,37,196,28,248, +80,158,49,39,193,248,80,158,49,40,193,11,11,11,11,11,28,192,27,248,22, +58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95, +198,249,80,158,43,41,202,27,251,22,67,202,201,199,200,250,80,158,47,42,89, +162,34,34,43,9,224,13,3,253,80,158,41,43,20,15,159,41,35,44,21,96, +2,157,3,2,158,3,2,159,3,2,160,3,248,22,58,199,248,22,84,199,248, +22,94,199,248,22,93,199,21,98,2,92,9,95,2,161,3,2,162,3,94,2, +163,3,2,83,2,154,3,2,155,3,2,83,20,15,159,47,36,44,250,22,176, +8,11,2,54,196,34,20,99,159,34,16,10,2,131,4,2,132,4,2,133,4, +2,134,4,2,135,4,2,138,4,2,139,4,2,151,4,2,152,4,2,137,4, +16,3,33,157,6,33,159,6,33,160,6,11,16,5,93,2,41,87,95,83,158, +34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42,20,15,159,38,40, +50,21,94,2,166,3,2,167,3,248,22,58,198,248,22,93,198,80,159,34,8, +27,35,83,158,34,16,2,89,162,35,35,41,9,223,0,251,80,158,38,42,20, +15,159,38,39,50,21,94,2,168,3,2,169,3,248,22,58,198,248,22,84,198, +80,159,34,8,26,35,89,162,34,35,54,9,223,0,27,249,22,152,3,20,15, +159,37,34,50,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158, +39,36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,28,248,80,158, +40,38,248,80,158,41,36,194,27,248,80,158,41,37,194,28,248,80,158,41,34, +193,249,80,158,42,35,248,80,158,43,36,195,27,248,80,158,44,37,196,28,248, +80,158,44,39,193,248,80,158,44,40,193,11,11,11,11,11,28,192,27,248,22, +58,194,27,248,22,84,195,27,248,22,86,196,249,80,158,41,41,200,27,249,22, +67,197,198,251,80,158,46,42,20,15,159,46,35,50,21,94,2,170,3,2,171, +3,248,22,59,197,248,22,58,197,27,28,248,80,158,38,34,195,249,80,158,39, +35,248,80,158,40,36,197,27,248,80,158,41,37,198,28,248,80,158,41,34,193, +249,80,158,42,43,27,248,80,158,44,36,196,28,248,80,158,44,39,193,248,22, +8,89,162,34,35,41,9,224,10,1,27,249,22,2,89,162,34,35,46,9,224, +4,5,249,80,158,37,44,28,248,80,158,38,34,197,249,80,158,39,35,248,80, +158,40,36,199,27,248,80,158,41,37,200,28,248,80,158,41,34,193,249,80,158, +42,35,248,80,158,43,36,195,248,80,158,43,38,248,80,158,44,37,196,11,11, +194,248,80,158,39,40,196,28,248,22,63,193,21,94,9,9,248,80,158,37,45, +193,11,27,248,80,158,44,37,196,28,248,80,158,44,34,193,249,80,158,45,35, +248,80,158,46,36,195,27,248,80,158,47,37,196,28,248,80,158,47,39,193,248, +80,158,47,40,193,11,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195, +27,248,22,93,196,27,248,22,96,197,27,248,22,95,198,27,249,22,152,3,20, +15,159,45,36,50,248,80,158,46,46,249,80,158,48,47,20,15,159,48,37,50, +201,27,28,248,80,158,45,39,194,248,80,158,45,40,194,11,28,192,249,80,158, +46,41,205,27,252,22,67,204,200,205,202,203,250,80,158,50,48,89,162,34,34, +48,9,224,16,3,253,80,158,41,42,20,15,159,41,38,50,21,96,2,172,3, +2,173,3,2,174,3,2,175,3,250,22,2,80,159,44,8,26,35,248,22,84, +202,248,22,58,202,252,22,2,80,159,46,8,27,35,248,22,84,204,248,22,84, +204,248,22,93,204,248,22,93,204,248,22,95,199,248,22,96,199,21,95,2,92, +94,94,2,176,3,2,158,2,2,83,95,2,92,93,94,2,177,3,96,2,143, +2,9,96,2,92,93,94,2,130,2,2,176,3,95,2,137,3,2,176,3,2, +178,3,95,2,137,3,2,178,3,2,130,2,2,83,96,2,179,3,2,177,3, +97,2,143,2,9,2,154,3,2,155,3,2,83,2,177,3,20,15,159,50,41, +50,248,80,158,45,49,20,15,159,45,42,50,250,22,176,8,11,2,54,197,34, +20,99,159,36,16,16,2,131,4,2,132,4,2,133,4,2,134,4,2,136,4, +2,138,4,2,139,4,2,151,4,2,137,4,2,135,4,2,167,4,2,168,4, +2,172,5,2,169,4,2,152,4,2,170,4,16,9,33,162,6,33,164,6,33, +168,6,33,169,6,33,171,6,33,172,6,33,173,6,33,174,6,33,176,6,11, +16,5,93,2,35,89,162,34,35,49,9,223,0,27,249,22,152,3,20,15,159, +37,34,42,196,27,28,248,80,158,37,34,194,249,80,158,38,35,248,80,158,39, +36,196,27,248,80,158,40,37,197,28,248,80,158,40,34,193,249,80,158,41,35, +248,80,158,42,36,195,27,248,80,158,43,37,196,28,248,80,158,43,38,193,248, +80,158,43,39,193,11,11,11,28,192,27,248,22,58,194,27,248,22,84,195,27, +248,22,86,196,249,80,158,41,40,200,27,249,22,67,198,197,251,80,158,46,41, +20,15,159,46,35,42,21,94,2,184,3,2,185,3,248,22,58,197,248,22,59, +197,250,22,176,8,11,2,54,196,34,20,99,159,34,16,8,2,131,4,2,132, +4,2,133,4,2,134,4,2,138,4,2,139,4,2,151,4,2,137,4,16,2, +33,178,6,33,180,6,11,106,83,158,34,16,6,27,247,22,190,9,87,94,28, +192,28,248,22,189,9,193,12,250,22,177,8,2,161,3,2,191,3,195,12,91, +159,39,11,90,161,39,34,11,254,22,167,9,2,61,11,35,34,11,9,204,252, +22,7,197,198,199,250,22,169,9,203,34,2,128,4,250,22,170,9,204,34,2, +128,4,80,159,34,34,35,80,159,34,35,35,80,159,34,36,35,80,159,34,37, +35,80,159,34,38,35,83,158,34,16,2,89,162,34,35,41,2,8,223,0,87, +94,28,248,80,158,35,36,194,12,250,22,177,8,2,8,6,7,7,112,114,111, +109,105,115,101,196,27,248,80,158,36,37,195,28,248,22,0,193,27,249,22,6, +195,22,65,87,94,28,248,22,0,248,80,158,38,37,197,249,80,158,38,38,197, +194,12,249,22,1,22,7,248,80,158,39,37,198,249,22,1,22,7,194,80,159, +34,39,35,83,158,34,16,2,89,162,34,34,38,2,9,223,0,248,80,158,35, +41,249,22,25,11,80,158,37,42,80,159,34,40,35,83,158,34,16,2,89,162, +34,36,42,2,13,223,0,87,95,28,248,22,170,11,194,12,252,22,177,8,2, +13,6,16,16,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,34, 198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,177,8,2,13, 6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121,32,48, -41,35,198,199,83,158,38,20,94,94,20,14,159,80,158,34,55,249,80,158,36, -47,195,34,87,94,247,80,158,34,57,247,194,247,80,158,34,57,80,159,34,56, -35,83,158,34,16,2,89,162,34,37,42,2,28,223,0,28,248,22,63,196,248, -22,134,11,194,28,248,248,22,83,197,194,83,158,38,20,94,94,248,248,22,85, -197,194,20,14,159,80,158,34,55,194,247,80,158,34,57,250,80,158,37,58,196, -197,248,22,59,199,80,159,34,58,35,83,158,34,16,2,89,162,34,37,42,2, -29,223,0,28,248,22,63,196,248,22,134,11,194,28,248,248,22,83,197,194,20, -14,159,80,158,34,55,194,87,94,247,80,158,34,57,248,248,22,85,197,194,250, -80,158,37,59,196,197,248,22,59,199,80,159,34,59,35,83,158,34,16,2,248, -22,172,11,11,80,159,34,8,26,35,83,158,34,16,2,32,0,89,162,34,35, -37,2,31,222,28,248,22,16,193,12,249,22,174,8,2,37,6,37,37,101,120, -99,101,112,116,105,111,110,32,104,97,110,100,108,101,114,32,117,115,101,100,32, -111,117,116,32,111,102,32,99,111,110,116,101,120,116,80,159,34,8,27,35,83, -158,34,16,2,247,22,17,80,159,34,8,28,35,83,158,34,16,2,89,162,34, -36,37,2,33,223,0,20,14,159,80,158,34,8,30,193,247,194,80,159,34,8, -29,35,96,2,133,4,2,60,2,59,2,10,96,2,133,4,2,55,2,64,2, -63,0}; - EVAL_ONE_SIZED_STR((char *)expr, 18229); +41,35,198,199,20,14,159,80,158,34,42,193,247,194,80,159,34,43,35,83,158, +34,16,6,252,22,167,9,2,62,11,35,34,11,80,159,34,44,35,80,159,34, +45,35,80,159,34,46,35,80,159,34,47,35,80,159,34,48,35,83,158,34,16, +6,27,247,22,190,9,87,94,28,192,28,248,22,146,8,248,22,189,9,194,250, +22,177,8,2,161,3,2,191,3,195,12,12,91,159,39,11,90,161,39,34,11, +254,22,167,9,2,62,11,35,34,11,9,204,252,22,7,197,198,199,250,22,169, +9,203,34,2,129,4,250,22,170,9,204,34,2,129,4,80,159,34,49,35,80, +159,34,50,35,80,159,34,51,35,80,159,34,52,35,80,159,34,53,35,83,158, +34,16,2,89,162,34,34,38,2,24,223,0,248,80,158,35,45,249,22,25,11, +80,158,37,55,80,159,34,54,35,83,158,34,16,2,89,162,38,36,42,2,26, +223,0,87,95,28,248,80,158,35,46,194,12,252,22,177,8,2,26,6,22,22, +98,114,101,97,107,32,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, +110,34,198,199,28,28,248,22,0,195,249,22,40,196,34,11,12,252,22,177,8, +2,13,6,19,19,112,114,111,99,101,100,117,114,101,32,40,97,114,105,116,121, +32,48,41,35,198,199,83,158,38,20,94,94,20,14,159,80,158,34,55,249,80, +158,36,47,195,34,87,94,247,80,158,34,57,247,194,247,80,158,34,57,80,159, +34,56,35,83,158,34,16,2,89,162,34,37,42,2,28,223,0,28,248,22,63, +196,248,22,134,11,194,28,248,248,22,83,197,194,83,158,38,20,94,94,248,248, +22,85,197,194,20,14,159,80,158,34,55,194,247,80,158,34,57,250,80,158,37, +58,196,197,248,22,59,199,80,159,34,58,35,83,158,34,16,2,89,162,34,37, +42,2,29,223,0,28,248,22,63,196,248,22,134,11,194,28,248,248,22,83,197, +194,20,14,159,80,158,34,55,194,87,94,247,80,158,34,57,248,248,22,85,197, +194,250,80,158,37,59,196,197,248,22,59,199,80,159,34,59,35,83,158,34,16, +2,248,22,172,11,11,80,159,34,8,26,35,83,158,34,16,2,32,0,89,162, +34,35,37,2,31,222,28,248,22,16,193,12,249,22,174,8,2,45,6,37,37, +101,120,99,101,112,116,105,111,110,32,104,97,110,100,108,101,114,32,117,115,101, +100,32,111,117,116,32,111,102,32,99,111,110,116,101,120,116,80,159,34,8,27, +35,83,158,34,16,2,247,22,17,80,159,34,8,28,35,83,158,34,16,2,89, +162,34,36,37,2,33,223,0,20,14,159,80,158,34,8,30,193,247,194,80,159, +34,8,29,35,96,2,130,4,2,60,2,59,2,10,96,2,130,4,2,55,2, +64,2,63,0}; + EVAL_ONE_SIZED_STR((char *)expr, 18189); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,112,0,0,0,1,0,0,3,0,16,0,27,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,112,0,0,0,1,0,0,3,0,16,0,27,0, 47,0,52,0,69,0,81,0,103,0,111,0,117,0,131,0,156,0,185,0,207, 0,222,0,240,0,250,0,5,1,16,1,43,1,52,1,68,1,86,1,94,1, 103,1,118,1,144,1,156,1,174,1,186,1,202,1,238,1,13,2,19,2,32, @@ -3717,15 +3719,15 @@ 16,4,11,11,61,120,3,1,7,101,110,118,52,52,57,57,95,8,193,11,16, 0,97,10,35,11,94,159,2,60,9,11,159,2,54,9,11,16,0,97,10,34, 11,96,159,2,56,9,11,159,2,57,9,11,159,2,58,9,11,159,2,59,9, -11,16,92,2,41,2,1,2,27,2,1,2,31,2,1,2,38,2,1,2,29, -2,1,2,39,2,1,2,5,2,1,2,32,2,1,2,8,2,1,2,16,2, -1,2,15,2,1,2,11,2,1,2,9,2,1,2,2,2,1,2,14,2,1, -2,37,2,1,2,13,2,1,2,48,2,1,2,3,2,1,2,36,2,1,2, -10,2,1,2,17,2,1,2,42,2,1,2,20,2,1,2,26,2,1,2,6, -2,1,2,22,2,1,2,25,2,1,2,33,2,1,2,47,2,1,2,18,2, -1,2,7,2,1,2,24,2,1,2,46,2,1,2,45,2,1,2,43,2,1, -2,28,2,1,2,40,2,1,2,12,2,1,2,19,2,1,2,44,2,1,2, -30,2,1,2,34,2,1,2,23,2,1,2,35,2,1,2,4,2,1,18,97, +11,16,92,2,41,2,1,2,27,2,1,2,31,2,1,2,24,2,1,2,14, +2,1,2,33,2,1,2,39,2,1,2,46,2,1,2,32,2,1,2,8,2, +1,2,15,2,1,2,35,2,1,2,11,2,1,2,47,2,1,2,13,2,1, +2,48,2,1,2,22,2,1,2,36,2,1,2,44,2,1,2,16,2,1,2, +9,2,1,2,17,2,1,2,42,2,1,2,20,2,1,2,38,2,1,2,45, +2,1,2,6,2,1,2,25,2,1,2,5,2,1,2,2,2,1,2,18,2, +1,2,23,2,1,2,26,2,1,2,3,2,1,2,10,2,1,2,43,2,1, +2,28,2,1,2,40,2,1,2,29,2,1,2,34,2,1,2,19,2,1,2, +12,2,1,2,30,2,1,2,7,2,1,2,37,2,1,2,4,2,1,18,97, 2,55,8,90,8,89,8,88,8,87,16,8,11,11,61,95,64,97,114,103,115, 64,98,111,100,121,2,62,2,62,2,62,16,8,11,11,3,1,4,103,56,57, 52,3,1,4,103,56,57,53,3,1,4,103,56,57,54,2,61,2,61,2,61, @@ -3828,9 +3830,9 @@ 27,248,22,58,194,27,248,22,84,195,27,248,22,86,196,27,249,22,152,3,20, 15,159,42,35,41,249,22,152,3,203,247,22,54,27,249,22,152,3,20,15,159, 43,36,41,249,22,152,3,204,247,22,54,27,249,22,152,3,20,15,159,44,37, -41,249,22,152,3,205,247,22,54,27,252,22,67,199,200,198,201,202,254,80,158, +41,249,22,152,3,205,247,22,54,27,252,22,67,202,199,200,198,201,254,80,158, 50,40,20,15,159,50,38,41,21,97,2,49,2,50,2,51,2,52,2,53,248, -22,84,200,248,22,58,200,248,22,95,200,248,22,93,200,248,22,96,200,250,22, +22,93,200,248,22,84,200,248,22,58,200,248,22,96,200,248,22,95,200,250,22, 176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,196,34,20,99,159, 34,16,7,30,2,54,69,115,116,120,45,112,97,105,114,63,11,30,2,54,67, 99,111,110,115,47,35,102,1,30,2,54,67,115,116,120,45,99,97,114,5,30, @@ -4246,12 +4248,12 @@ EVAL_ONE_SIZED_STR((char *)expr, 12485); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,15,0,0,0,1,0,0,3,0,12,0,29,0, -59,0,77,0,99,0,108,0,114,0,159,0,171,0,209,0,217,0,222,0,244, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,15,0,0,0,1,0,0,3,0,12,0,29,0, +47,0,77,0,99,0,108,0,114,0,159,0,171,0,209,0,217,0,222,0,244, 0,0,0,36,2,0,0,29,11,11,68,35,37,100,101,102,105,110,101,76,35, -37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,1,28,109,122,115,99, -104,101,109,101,45,105,110,45,115,116,120,45,109,111,100,117,108,101,45,98,101, -103,105,110,77,35,37,116,111,112,45,105,110,116,101,114,97,99,116,105,111,110, +37,115,116,120,99,97,115,101,45,115,99,104,101,109,101,77,35,37,116,111,112, +45,105,110,116,101,114,97,99,116,105,111,110,1,28,109,122,115,99,104,101,109, +101,45,105,110,45,115,116,120,45,109,111,100,117,108,101,45,98,101,103,105,110, 1,20,35,37,112,108,97,105,110,45,109,111,100,117,108,101,45,98,101,103,105, 110,68,35,37,107,101,114,110,101,108,65,35,37,115,116,120,97,10,34,11,94, 159,2,2,9,11,159,2,3,9,11,16,6,2,4,2,1,2,5,2,1,2, @@ -4263,13 +4265,13 @@ 34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, 96,114,72,35,37,115,116,120,109,122,45,98,111,100,121,2,1,18,94,11,43, 10,10,34,80,158,34,34,20,99,159,34,16,0,16,0,11,11,16,0,34,11, -16,2,2,4,2,5,16,2,11,11,16,2,2,4,2,5,34,36,94,16,5, -93,2,4,89,162,34,35,46,9,223,0,28,248,80,158,35,34,194,250,22,152, +16,2,2,5,2,4,16,2,11,11,16,2,2,5,2,4,34,36,94,16,5, +93,2,5,89,162,34,35,46,9,223,0,28,248,80,158,35,34,194,250,22,152, 3,20,15,159,37,34,36,250,22,67,20,15,159,40,35,36,249,22,152,3,201, 249,22,65,20,15,159,44,36,36,68,109,122,115,99,104,101,109,101,248,80,158, 41,35,200,196,250,22,176,8,11,6,10,10,98,97,100,32,115,121,110,116,97, 120,196,34,20,99,159,34,16,2,30,2,8,69,115,116,120,45,112,97,105,114, -63,11,2,10,16,3,33,12,33,13,33,14,11,16,5,93,2,5,89,162,8, +63,11,2,10,16,3,33,12,33,13,33,14,11,16,5,93,2,4,89,162,8, 36,35,41,9,223,0,87,94,28,249,22,148,8,69,116,111,112,45,108,101,118, 101,108,247,22,170,13,62,111,107,250,22,176,8,11,6,16,16,110,111,116,32, 97,116,32,116,111,112,32,108,101,118,101,108,196,251,22,152,3,197,248,80,158, @@ -4278,16 +4280,16 @@ EVAL_ONE_SIZED_STR((char *)expr, 597); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,90,0,0,0,1,0,0,15,0,49,0,78,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,90,0,0,0,1,0,0,15,0,49,0,78,0, 106,0,118,0,130,0,146,0,174,0,190,0,222,0,249,0,19,1,41,1,72, 1,78,1,100,1,110,1,122,1,147,1,161,1,186,1,194,1,212,1,229,1, 246,1,19,2,39,2,52,2,58,2,67,2,79,2,101,2,128,2,140,2,158, -2,172,2,190,2,203,2,216,2,232,2,244,2,255,2,9,3,21,3,28,3, -44,3,58,3,71,3,82,3,98,3,115,3,119,3,124,3,144,3,158,3,165, -3,177,3,181,3,199,3,202,3,207,3,218,3,233,3,236,3,242,3,249,3, -254,3,7,4,14,4,33,4,44,4,49,4,63,4,68,4,75,4,88,4,95, -4,109,4,116,4,133,4,144,4,150,4,158,4,173,4,186,4,195,4,204,4, -216,4,225,4,0,0,84,7,0,0,74,35,37,109,111,100,117,108,101,45,98, +2,172,2,179,2,192,2,205,2,217,2,232,2,243,2,253,2,13,3,26,3, +33,3,44,3,60,3,65,3,82,3,86,3,106,3,120,3,132,3,138,3,145, +3,163,3,168,3,180,3,184,3,202,3,221,3,224,3,238,3,249,3,9,4, +18,4,25,4,36,4,41,4,46,4,49,4,63,4,68,4,75,4,88,4,95, +4,109,4,116,4,133,4,144,4,150,4,158,4,173,4,182,4,191,4,200,4, +212,4,225,4,0,0,84,7,0,0,74,35,37,109,111,100,117,108,101,45,98, 101,103,105,110,1,32,99,97,108,108,45,119,105,116,104,45,98,114,101,97,107, 45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,1,27,99,97, 108,108,45,119,105,116,104,45,101,120,99,101,112,116,105,111,110,45,104,97,110, @@ -4320,70 +4322,70 @@ 101,45,114,101,112,111,114,116,45,101,110,118,105,114,111,110,109,101,110,116,71, 119,105,116,104,45,115,121,110,116,97,120,77,117,110,115,121,110,116,97,120,45, 115,112,108,105,99,105,110,103,73,100,101,102,105,110,101,45,115,116,114,117,99, -116,77,35,37,116,111,112,45,105,110,116,101,114,97,99,116,105,111,110,72,112, -97,114,97,109,101,116,101,114,105,122,101,72,115,121,110,116,97,120,45,99,97, -115,101,42,75,113,117,97,115,105,115,121,110,116,97,120,47,108,111,99,71,115, -101,116,33,45,118,97,108,117,101,115,70,108,101,116,45,115,116,114,117,99,116, -69,102,108,117,105,100,45,108,101,116,71,113,117,97,115,105,115,121,110,116,97, -120,66,100,101,102,105,110,101,75,108,101,116,114,101,99,45,115,121,110,116,97, -120,101,115,73,119,105,116,104,45,104,97,110,100,108,101,114,115,72,108,101,116, -45,115,121,110,116,97,120,101,115,70,108,101,116,45,115,121,110,116,97,120,75, -115,121,110,116,97,120,45,105,100,45,114,117,108,101,115,76,98,101,103,105,110, -45,102,111,114,45,115,121,110,116,97,120,63,97,110,100,64,99,111,110,100,79, -109,101,109,111,114,121,45,116,114,97,99,101,45,108,97,109,98,100,97,73,100, -101,102,105,110,101,45,115,121,110,116,97,120,66,115,121,110,116,97,120,71,115, -121,110,116,97,120,45,99,97,115,101,63,108,101,116,77,100,101,102,105,110,101, -45,102,111,114,45,115,121,110,116,97,120,62,111,114,64,99,97,115,101,70,115, -121,110,116,97,120,47,108,111,99,74,119,105,116,104,45,104,97,110,100,108,101, -114,115,42,62,100,111,65,100,101,108,97,121,66,108,101,116,47,99,99,64,116, -105,109,101,68,117,110,115,121,110,116,97,120,66,108,101,116,114,101,99,78,112, -97,114,97,109,101,116,101,114,105,122,101,45,98,114,101,97,107,70,113,117,97, -115,105,113,117,111,116,101,64,108,101,116,42,73,108,101,116,114,101,99,45,115, +116,66,100,101,102,105,110,101,72,115,121,110,116,97,120,45,99,97,115,101,42, +72,112,97,114,97,109,101,116,101,114,105,122,101,71,113,117,97,115,105,115,121, +110,116,97,120,74,119,105,116,104,45,104,97,110,100,108,101,114,115,42,70,108, +101,116,45,115,116,114,117,99,116,69,102,108,117,105,100,45,108,101,116,75,108, +101,116,114,101,99,45,115,121,110,116,97,120,101,115,72,108,101,116,45,115,121, +110,116,97,120,101,115,66,108,101,116,47,99,99,70,108,101,116,45,115,121,110, +116,97,120,75,115,121,110,116,97,120,45,105,100,45,114,117,108,101,115,64,116, +105,109,101,76,98,101,103,105,110,45,102,111,114,45,115,121,110,116,97,120,63, +97,110,100,79,109,101,109,111,114,121,45,116,114,97,99,101,45,108,97,109,98, +100,97,73,119,105,116,104,45,104,97,110,100,108,101,114,115,71,115,101,116,33, +45,118,97,108,117,101,115,65,100,101,108,97,121,66,115,121,110,116,97,120,77, +35,37,116,111,112,45,105,110,116,101,114,97,99,116,105,111,110,64,99,111,110, +100,71,115,121,110,116,97,120,45,99,97,115,101,63,108,101,116,77,100,101,102, +105,110,101,45,102,111,114,45,115,121,110,116,97,120,78,112,97,114,97,109,101, +116,101,114,105,122,101,45,98,114,101,97,107,62,111,114,73,100,101,102,105,110, +101,45,115,121,110,116,97,120,70,115,121,110,116,97,120,47,108,111,99,75,113, +117,97,115,105,115,121,110,116,97,120,47,108,111,99,68,117,110,115,121,110,116, +97,120,66,108,101,116,114,101,99,70,113,117,97,115,105,113,117,111,116,101,64, +99,97,115,101,64,108,101,116,42,62,100,111,73,108,101,116,114,101,99,45,115, 121,110,116,97,120,64,119,104,101,110,66,117,110,108,101,115,115,72,115,121,110, 116,97,120,45,114,117,108,101,115,66,108,101,116,47,101,99,73,35,37,109,111, 114,101,45,115,99,104,101,109,101,66,35,37,109,105,115,99,76,35,37,115,116, 120,99,97,115,101,45,115,99,104,101,109,101,70,35,37,119,105,116,104,45,115, 116,120,65,35,37,115,116,120,67,35,37,113,113,115,116,120,74,35,37,100,101, -102,105,110,101,45,101,116,45,97,108,72,35,37,115,116,120,109,122,45,98,111, -100,121,68,35,37,115,116,120,108,111,99,68,35,37,100,101,102,105,110,101,71, -35,37,113,113,45,97,110,100,45,111,114,68,35,37,107,101,114,110,101,108,159, +102,105,110,101,45,101,116,45,97,108,68,35,37,100,101,102,105,110,101,68,35, +37,107,101,114,110,101,108,68,35,37,115,116,120,108,111,99,71,35,37,113,113, +45,97,110,100,45,111,114,72,35,37,115,116,120,109,122,45,98,111,100,121,159, 34,20,99,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20, 96,114,68,109,122,115,99,104,101,109,101,29,11,11,10,10,10,34,80,158,34, 34,20,99,159,34,16,0,16,0,2,1,10,16,0,34,11,16,78,2,2,2, 3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, 2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2, 24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34, -2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2, -45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54,2,55, -2,56,2,57,1,28,109,122,115,99,104,101,109,101,45,105,110,45,115,116,120, -45,109,111,100,117,108,101,45,98,101,103,105,110,2,58,2,59,2,60,2,61, -2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,1,2,69,2,70,2, +2,35,2,36,2,37,2,1,2,38,2,39,2,40,2,41,2,42,2,43,2, +44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54, +2,55,2,56,2,57,2,58,2,59,1,28,109,122,115,99,104,101,109,101,45, +105,110,45,115,116,120,45,109,111,100,117,108,101,45,98,101,103,105,110,2,60, +2,61,2,62,2,63,2,64,2,65,2,66,2,67,2,68,2,69,2,70,2, 71,2,72,2,73,2,74,2,75,2,76,2,77,16,78,2,78,2,78,2,78, 2,79,2,79,2,79,2,80,2,79,2,78,2,79,2,78,2,79,2,79,2, 78,2,81,2,79,2,82,2,79,2,79,2,79,2,79,2,79,2,79,2,79, 2,79,2,79,2,79,2,79,2,78,2,79,2,79,2,79,2,81,2,83,2, -84,2,85,2,78,2,86,2,83,2,78,2,78,2,78,2,83,2,87,2,80, -2,78,2,80,2,80,2,80,2,87,2,88,66,35,37,99,111,110,100,2,79, -2,87,69,35,37,115,116,120,99,97,115,101,2,86,2,85,2,88,2,87,2, -88,2,78,2,86,2,78,2,78,2,78,2,78,2,78,2,83,2,89,2,88, -2,78,2,88,2,88,2,80,2,84,2,84,2,80,2,84,16,78,2,2,2, +84,2,85,2,86,2,87,2,78,2,83,2,78,2,78,2,78,2,80,2,80, +2,78,2,80,2,80,2,78,2,85,2,88,2,79,2,78,2,78,2,78,69, +35,37,115,116,120,99,97,115,101,2,89,66,35,37,99,111,110,100,2,87,2, +89,2,88,2,85,2,78,2,88,2,85,2,87,2,83,2,83,2,88,2,88, +2,78,2,88,2,78,2,80,2,84,2,84,2,80,2,84,16,78,2,2,2, 3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13, 2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2, 24,2,25,2,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34, -2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2, -45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54,2,55, -2,56,2,57,2,1,2,58,2,59,2,60,2,61,2,62,2,63,2,64,2, -65,2,66,2,67,2,68,1,20,35,37,112,108,97,105,110,45,109,111,100,117, -108,101,45,98,101,103,105,110,2,69,2,70,2,71,2,72,2,73,2,74,2, -75,2,76,2,77,8,32,8,78,9,9,101,2,89,2,78,2,79,2,80,2, -82,2,85,2,83,2,87,68,35,37,101,120,112,111,98,115,9,0}; +2,35,2,36,2,37,1,20,35,37,112,108,97,105,110,45,109,111,100,117,108, +101,45,98,101,103,105,110,2,38,2,39,2,40,2,41,2,42,2,43,2,44, +2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,52,2,53,2,54,2, +55,2,56,2,57,2,58,2,59,2,1,2,60,2,61,2,62,2,63,2,64, +2,65,2,66,2,67,2,68,2,69,2,70,2,71,2,72,2,73,2,74,2, +75,2,76,2,77,8,32,8,78,9,9,101,2,86,2,78,2,79,2,80,2, +82,2,89,2,83,2,85,68,35,37,101,120,112,111,98,115,9,0}; EVAL_ONE_SIZED_STR((char *)expr, 2075); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,99,0,0,0,1,0,0,6,0,9,0,19,0, -24,0,27,0,35,0,39,0,46,0,51,0,56,0,70,0,75,0,86,0,98, -0,104,0,118,0,124,0,135,0,139,0,142,0,145,0,153,0,170,0,177,0, -195,0,201,0,207,0,221,0,230,0,242,0,3,1,12,1,19,1,26,1,33, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,99,0,0,0,1,0,0,6,0,9,0,19,0, +37,0,45,0,49,0,56,0,61,0,66,0,80,0,86,0,89,0,101,0,107, +0,112,0,115,0,121,0,125,0,128,0,139,0,147,0,164,0,175,0,180,0, +194,0,200,0,207,0,216,0,228,0,245,0,3,1,12,1,19,1,26,1,33, 1,40,1,47,1,54,1,61,1,68,1,75,1,82,1,89,1,96,1,118,1, 123,1,127,1,133,1,138,1,145,1,152,1,159,1,166,1,172,1,179,1,186, 1,193,1,200,1,222,1,224,1,232,1,237,1,243,1,253,1,19,2,45,2, @@ -4391,18 +4393,18 @@ 2,144,2,154,2,164,2,170,2,182,2,202,2,0,3,17,3,27,3,60,3, 127,3,144,3,154,3,164,3,176,3,171,4,196,4,33,5,54,5,64,5,97, 5,0,0,91,13,0,0,65,98,101,103,105,110,29,11,11,69,117,110,100,101, -102,105,110,101,100,64,99,97,115,101,62,105,102,67,35,37,100,97,116,117,109, -63,108,101,116,66,108,97,109,98,100,97,64,115,101,116,33,64,108,101,116,42, -73,108,101,116,114,101,99,45,115,121,110,116,97,120,64,99,111,110,100,70,113, -117,97,115,105,113,117,111,116,101,71,114,53,114,115,58,108,101,116,114,101,99, -65,113,117,111,116,101,73,100,101,102,105,110,101,45,115,121,110,116,97,120,65, -35,37,116,111,112,70,108,101,116,45,115,121,110,116,97,120,63,97,110,100,62, -111,114,62,100,111,67,117,110,113,117,111,116,101,76,117,110,113,117,111,116,101, -45,115,112,108,105,99,105,110,103,66,100,101,102,105,110,101,77,35,37,116,111, -112,45,105,110,116,101,114,97,99,116,105,111,110,65,100,101,108,97,121,65,35, -37,97,112,112,73,35,37,109,111,114,101,45,115,99,104,101,109,101,68,35,37, -107,101,114,110,101,108,71,35,37,113,113,45,97,110,100,45,111,114,76,35,37, -115,116,120,99,97,115,101,45,115,99,104,101,109,101,68,35,37,100,101,102,105, +102,105,110,101,100,77,35,37,116,111,112,45,105,110,116,101,114,97,99,116,105, +111,110,67,35,37,100,97,116,117,109,63,108,101,116,66,108,97,109,98,100,97, +64,115,101,116,33,64,108,101,116,42,73,108,101,116,114,101,99,45,115,121,110, +116,97,120,65,100,101,108,97,121,62,100,111,71,114,53,114,115,58,108,101,116, +114,101,99,65,113,117,111,116,101,64,99,111,110,100,62,105,102,65,35,37,116, +111,112,63,97,110,100,62,111,114,70,108,101,116,45,115,121,110,116,97,120,67, +117,110,113,117,111,116,101,76,117,110,113,117,111,116,101,45,115,112,108,105,99, +105,110,103,70,113,117,97,115,105,113,117,111,116,101,64,99,97,115,101,73,100, +101,102,105,110,101,45,115,121,110,116,97,120,65,35,37,97,112,112,66,100,101, +102,105,110,101,68,35,37,107,101,114,110,101,108,71,35,37,113,113,45,97,110, +100,45,111,114,76,35,37,115,116,120,99,97,115,101,45,115,99,104,101,109,101, +73,35,37,109,111,114,101,45,115,99,104,101,109,101,68,35,37,100,101,102,105, 110,101,3,1,4,103,57,53,50,3,1,4,103,57,53,49,3,1,4,103,57, 52,54,3,1,4,103,57,52,53,3,1,4,103,57,52,51,3,1,4,103,57, 52,50,3,1,4,103,57,52,49,3,1,4,103,57,51,55,3,1,4,103,57, @@ -4424,18 +4426,18 @@ 53,54,3,1,7,101,110,118,52,56,53,54,3,1,7,101,110,118,52,56,56, 48,3,1,7,101,110,118,52,56,56,49,95,8,193,11,16,0,97,10,35,11, 93,159,2,67,9,11,16,0,97,10,34,11,93,159,2,67,9,11,16,4,2, -3,2,2,2,14,2,2,97,8,83,8,82,8,81,16,8,11,11,3,1,4, +3,2,2,2,13,2,2,97,8,83,8,82,8,81,16,8,11,11,3,1,4, 103,57,51,51,3,1,4,103,57,51,52,3,1,4,103,57,51,53,2,68,2, 68,2,68,16,8,11,11,2,46,2,48,2,49,2,69,2,69,2,69,18,158, -163,10,2,14,2,45,2,42,9,2,43,2,44,8,84,18,158,95,10,2,40, +163,10,2,13,2,45,2,42,9,2,43,2,44,8,84,18,158,95,10,2,40, 2,41,8,84,18,16,2,95,2,47,93,8,155,63,16,4,11,11,2,70,3, 1,7,101,110,118,52,56,50,53,95,9,8,155,63,2,64,97,8,83,8,82, 8,81,16,10,11,11,3,1,4,103,57,50,56,3,1,4,103,57,50,57,3, 1,4,103,57,51,48,3,1,4,103,57,51,49,2,71,2,71,2,71,2,71, 16,10,11,11,2,54,2,46,2,48,2,49,2,72,2,72,2,72,2,72,18, -158,96,10,2,7,2,50,159,2,7,2,51,2,52,8,88,18,158,95,10,2, -39,2,3,8,88,18,158,95,10,2,37,2,38,8,88,18,158,96,10,2,9, -2,35,2,36,8,88,18,16,2,103,93,158,160,10,2,7,9,2,53,8,88, +158,96,10,2,6,2,50,159,2,6,2,51,2,52,8,88,18,158,95,10,2, +39,2,3,8,88,18,158,95,10,2,37,2,38,8,88,18,158,96,10,2,8, +2,35,2,36,8,88,18,16,2,103,93,158,160,10,2,6,9,2,53,8,88, 97,10,34,11,95,159,68,35,37,112,97,114,97,109,122,9,11,159,2,73,9, 11,159,2,63,9,11,16,14,1,26,100,97,116,117,109,45,62,115,121,110,116, 97,120,45,111,98,106,101,99,116,47,115,104,97,112,101,2,74,2,66,2,74, @@ -4453,21 +4455,21 @@ 1,4,103,57,50,52,3,1,4,103,57,50,53,3,1,4,103,57,50,54,2, 79,2,79,2,79,2,79,2,79,2,79,16,14,11,11,2,75,2,60,2,62, 2,46,2,48,2,49,2,80,2,80,2,80,2,80,2,80,2,80,18,158,163, -10,2,14,2,59,2,55,158,2,61,2,56,2,57,2,58,8,95,18,158,95, +10,2,13,2,59,2,55,158,2,61,2,56,2,57,2,58,8,95,18,158,95, 10,2,33,2,34,8,95,18,16,2,95,2,47,93,8,175,63,16,4,11,11, 2,70,3,1,7,101,110,118,52,56,57,55,95,9,8,175,63,2,64,159,34, 20,99,159,34,16,1,20,24,2,1,16,0,83,158,40,20,96,114,66,35,37, 114,53,114,115,2,2,10,10,10,35,80,158,34,34,20,99,159,34,16,1,30, 2,2,2,3,193,16,0,11,11,16,1,2,3,35,11,16,25,2,4,2,5, 2,6,2,7,2,8,2,9,2,10,2,11,2,12,2,13,2,14,2,15,2, -16,2,17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,1, -2,26,2,27,16,25,2,28,2,29,2,29,2,30,2,29,2,29,2,30,2, -31,66,35,37,99,111,110,100,2,30,11,2,29,2,32,2,29,2,31,2,30, -2,30,2,28,2,29,2,29,2,32,72,35,37,115,116,120,109,122,45,98,111, -100,121,2,29,2,28,2,29,16,25,2,4,2,5,2,6,2,7,2,8,2, -9,2,10,2,11,2,12,2,13,66,108,101,116,114,101,99,2,15,2,16,2, -17,2,18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,2,1,2,26, -2,27,34,59,93,16,5,93,2,14,87,98,83,158,34,16,2,89,162,35,35, +16,2,17,2,18,2,19,2,20,2,21,2,22,2,1,2,23,2,24,2,25, +2,26,2,27,16,25,72,35,37,115,116,120,109,122,45,98,111,100,121,2,28, +2,29,2,28,2,28,2,29,2,30,2,31,2,31,11,2,28,66,35,37,99, +111,110,100,2,28,2,28,2,29,2,29,2,30,2,28,2,28,2,28,2,29, +2,31,2,32,2,28,2,32,16,25,2,4,2,5,2,6,2,7,2,8,2, +9,2,10,2,11,2,12,66,108,101,116,114,101,99,2,14,2,15,2,16,2, +17,2,18,2,19,2,20,2,21,2,22,2,1,2,23,2,24,2,25,2,26, +2,27,34,59,93,16,5,93,2,13,87,98,83,158,34,16,2,89,162,35,35, 41,9,223,0,251,80,158,38,46,20,15,159,38,44,47,21,94,2,33,2,34, 248,22,58,198,248,22,84,198,80,159,34,8,30,35,83,158,34,16,2,89,162, 35,35,41,9,223,0,251,80,158,38,46,20,15,159,38,40,47,21,94,2,35, @@ -4488,10 +4490,10 @@ 196,28,248,22,63,193,21,94,9,9,248,80,158,37,43,193,11,27,248,80,158, 42,37,196,28,248,80,158,42,39,193,248,80,158,42,42,193,11,11,11,28,192, 27,248,22,58,194,27,248,22,84,195,27,248,22,93,196,27,248,22,94,197,249, -80,158,41,44,200,27,250,22,67,198,199,200,250,80,158,45,45,89,162,34,34, +80,158,41,44,200,27,250,22,67,199,198,200,250,80,158,45,45,89,162,34,34, 45,9,224,11,3,252,80,158,40,46,20,15,159,40,34,47,21,95,2,42,2, 43,2,44,248,22,86,198,250,22,2,80,159,43,8,26,35,248,22,86,201,248, -22,84,201,248,22,58,198,21,99,2,14,2,45,94,2,46,2,47,9,94,94, +22,58,201,248,22,84,198,21,99,2,13,2,45,94,2,46,2,47,9,94,94, 2,46,2,48,2,47,2,49,2,47,20,15,159,45,36,47,27,28,248,80,158, 37,34,196,249,80,158,38,35,248,80,158,39,36,198,27,248,80,158,40,37,199, 28,248,80,158,40,34,193,28,27,248,80,158,41,36,194,28,249,22,150,8,6, @@ -4509,14 +4511,14 @@ 9,248,80,158,37,43,193,11,27,248,80,158,48,37,196,28,248,80,158,48,39, 193,248,80,158,48,42,193,11,11,11,11,11,11,11,11,28,192,27,248,22,58, 194,27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,248,22,95,198, -249,80,158,43,44,202,27,251,22,67,202,199,200,201,250,80,158,47,45,89,162, +249,80,158,43,44,202,27,251,22,67,199,201,200,202,250,80,158,47,45,89,162, 34,34,47,9,224,13,3,252,80,158,40,46,20,15,159,40,37,47,21,95,2, -50,2,51,2,52,249,22,2,80,159,42,8,27,35,248,22,94,200,250,22,2, -80,159,43,8,28,35,248,22,58,201,248,22,93,201,249,22,71,250,22,2,80, -159,45,8,29,35,248,22,94,203,248,22,58,203,250,80,158,45,46,20,15,159, -45,41,47,21,93,2,53,248,22,84,203,21,95,2,7,94,94,2,46,2,3, -2,47,97,2,7,94,94,2,54,2,48,2,47,95,2,9,2,46,2,54,2, -47,96,2,7,9,2,49,2,47,20,15,159,47,42,47,27,28,248,80,158,38, +50,2,51,2,52,249,22,2,80,159,42,8,27,35,248,22,84,200,250,22,2, +80,159,43,8,28,35,248,22,94,201,248,22,93,201,249,22,71,250,22,2,80, +159,45,8,29,35,248,22,84,203,248,22,94,203,250,80,158,45,46,20,15,159, +45,41,47,21,93,2,53,248,22,58,203,21,95,2,6,94,94,2,46,2,3, +2,47,97,2,6,94,94,2,54,2,48,2,47,95,2,8,2,46,2,54,2, +47,96,2,6,9,2,49,2,47,20,15,159,47,42,47,27,28,248,80,158,38, 34,197,249,80,158,39,35,248,80,158,40,36,199,27,248,80,158,41,37,200,28, 248,80,158,41,34,193,28,27,248,80,158,42,36,194,28,249,22,150,8,6,19, 19,103,101,110,101,114,97,116,101,95,116,101,109,112,95,110,97,109,101,115,248, @@ -4536,10 +4538,10 @@ 193,248,80,158,51,42,193,11,11,11,11,11,11,11,28,192,27,248,22,58,194, 27,248,22,84,195,27,248,22,93,196,27,248,22,96,197,27,249,22,76,199,38, 27,249,22,76,200,39,27,249,22,75,201,40,249,80,158,46,44,205,27,252,22, -67,203,204,200,201,202,250,80,158,50,45,89,162,34,34,46,9,224,16,3,253, +67,202,200,204,201,203,250,80,158,50,45,89,162,34,34,46,9,224,16,3,253, 80,158,41,46,20,15,159,41,43,47,21,96,2,55,2,56,2,57,2,58,248, -22,84,199,248,22,58,199,250,22,2,80,159,44,8,30,35,248,22,95,202,248, -22,96,202,248,22,93,199,21,99,2,14,2,59,94,2,60,2,47,95,2,61, +22,93,199,248,22,95,199,250,22,2,80,159,44,8,30,35,248,22,58,202,248, +22,96,202,248,22,84,199,21,99,2,13,2,59,94,2,60,2,47,95,2,61, 2,62,2,47,94,94,2,46,2,48,2,47,2,49,2,47,20,15,159,50,45, 47,250,22,176,8,11,6,10,10,98,97,100,32,115,121,110,116,97,120,199,34, 20,99,159,39,16,13,30,2,63,69,115,116,120,45,112,97,105,114,63,11,30, @@ -4557,7 +4559,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 3636); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,2,0,0,0,1,0,0,3,0,0,0,81,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,2,0,0,0,1,0,0,3,0,0,0,81,0, 0,0,94,10,11,159,34,20,99,159,34,16,1,20,24,65,98,101,103,105,110, 16,0,83,160,41,80,158,34,34,34,18,158,95,10,67,114,101,113,117,105,114, 101,95,64,111,110,108,121,68,109,122,115,99,104,101,109,101,1,22,110,97,109, @@ -4565,7 +4567,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 104); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,3,0,0,0,1,0,0,9,0,12,0,0,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,3,0,0,0,1,0,0,9,0,12,0,0,0, 75,0,0,0,68,109,122,115,99,104,101,109,101,94,10,11,159,35,20,99,159, 34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,45,87,94,248,22,184, 3,2,1,83,160,41,80,158,34,34,35,18,158,95,10,78,114,101,113,117,105, @@ -4573,7 +4575,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 100); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,52,1,0,0,0,1,0,0,0,0,66,0,0,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,5,51,54,57,46,53,1,0,0,0,1,0,0,0,0,66,0,0,0, 159,38,20,99,159,34,16,0,16,0,248,22,176,3,248,249,22,178,3,66,35, 37,109,105,115,99,1,34,109,97,107,101,45,115,116,97,110,100,97,114,100,45, 109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,247, diff --git a/src/mzscheme/src/env.c b/src/mzscheme/src/env.c index 680c610f78..e4cc5e7ada 100644 --- a/src/mzscheme/src/env.c +++ b/src/mzscheme/src/env.c @@ -520,7 +520,7 @@ static void make_init_env(void) scheme_add_global_constant("syntax-local-certifier", scheme_make_prim_w_arity(local_certify, "syntax-local-certifier", - 0, 0), + 0, 1), env); scheme_add_global_constant("make-set!-transformer", @@ -3873,18 +3873,19 @@ certifier(void *_data, int argc, Scheme_Object **argv) } if (cert_data[0] || cert_data[1] || cert_data[2]) { + int as_active = SCHEME_TRUEP(cert_data[3]); s = scheme_stx_cert(s, mark, (Scheme_Env *)(cert_data[1] ? cert_data[1] : cert_data[2]), cert_data[0], ((argc > 1) && SCHEME_TRUEP(argv[1])) ? argv[1] : NULL, - 0 /* inactive cert */); + as_active); if (cert_data[1] && cert_data[2] && !SAME_OBJ(cert_data[1], cert_data[2])) { /* Have module we're expanding, in addition to module that bound the expander. */ s = scheme_stx_cert(s, mark, (Scheme_Env *)cert_data[2], NULL, ((argc > 1) && SCHEME_TRUEP(argv[1])) ? argv[1] : NULL, - 0 /* inactive cert */); + as_active); } } @@ -3896,19 +3897,24 @@ local_certify(int argc, Scheme_Object *argv[]) { Scheme_Object **cert_data; Scheme_Env *menv; + int active = 0; if (!scheme_current_thread->current_local_env) scheme_raise_exn(MZEXN_FAIL_CONTRACT, "syntax-local-certifier: not currently transforming"); menv = scheme_current_thread->current_local_menv; - cert_data = MALLOC_N(Scheme_Object*, 3); + if (argc) + active = SCHEME_TRUEP(argv[0]); + + cert_data = MALLOC_N(Scheme_Object*, 4); cert_data[0] = scheme_current_thread->current_local_certs; /* Module that bound the macro we're now running: */ cert_data[1] = (Scheme_Object *)((menv && menv->module) ? menv : NULL); /* Module that we're currently expanding: */ menv = scheme_current_thread->current_local_env->genv; cert_data[2] = (Scheme_Object *)((menv && menv->module) ? menv : NULL); + cert_data[3] = (active ? scheme_true : scheme_false); return scheme_make_closed_prim_w_arity(certifier, cert_data, diff --git a/src/mzscheme/src/error.c b/src/mzscheme/src/error.c index b81006eb08..5081c41b75 100644 --- a/src/mzscheme/src/error.c +++ b/src/mzscheme/src/error.c @@ -2583,12 +2583,24 @@ typedef Scheme_Object (*Scheme_Struct_Field_Guard_Proc)(int argc, Scheme_Object static Scheme_Object *exn_field_check(int argc, Scheme_Object **argv) { - if (!SCHEME_IMMUTABLE_CHAR_STRINGP(argv[0])) - scheme_wrong_field_type(argv[2], "immutable string", argv[0]); + Scheme_Object *a[2], *v; + + if (!SCHEME_CHAR_STRINGP(argv[0])) + scheme_wrong_field_type(argv[2], "string", argv[0]); if (!SAME_OBJ(argv[1], TMP_CMARK_VALUE) && !SCHEME_CONT_MARK_SETP(argv[1])) scheme_wrong_field_type(argv[2], "continuation mark set", argv[1]); - return scheme_values(2, argv); + a[0] = argv[0]; + a[1] = argv[1]; + + if (!SCHEME_IMMUTABLE_CHAR_STRINGP(a[0])) { + v = scheme_make_immutable_sized_char_string(SCHEME_CHAR_STR_VAL(a[0]), + SCHEME_CHAR_STRLEN_VAL(a[0]), + 1); + a[0] = v; + } + + return scheme_values(2, a); } static Scheme_Object *variable_field_check(int argc, Scheme_Object **argv) diff --git a/src/mzscheme/src/eval.c b/src/mzscheme/src/eval.c index f7b5ab87ec..1dc7289847 100644 --- a/src/mzscheme/src/eval.c +++ b/src/mzscheme/src/eval.c @@ -6309,25 +6309,8 @@ scheme_do_eval(Scheme_Object *obj, int num_rands, Scheme_Object **rands, capturing the continuation, so we can jump directly. */ scheme_drop_prompt_meta_continuations(c->prompt_tag); c->shortcut_prompt = prompt; - if ((!prompt->boundary_overflow_id && !p->overflow) - || (prompt->boundary_overflow_id - && (prompt->boundary_overflow_id == p->overflow->id))) { - scheme_longjmpup(&c->buf); - } else { - /* Need to unwind overflows... */ - Scheme_Overflow *overflow; - overflow = p->overflow; - while (overflow->prev - && (!overflow->prev->id - || (overflow->prev->id != prompt->boundary_overflow_id))) { - overflow = overflow->prev; - } - /* Immediate destination is in scheme_handle_stack_overflow(). */ - p->cjs.jumping_to_continuation = (Scheme_Object *)c; - p->overflow = overflow; - p->stack_start = overflow->stack_start; - scheme_longjmpup(&overflow->jmp->cont); - } + p->stack_start = c->stack_start; + scheme_longjmpup(&c->buf); } else { p->cjs.jumping_to_continuation = (Scheme_Object *)prompt; p->cjs.num_vals = 1; diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index 45884cf2a4..0ade9793bc 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -4296,7 +4296,19 @@ static void restore_continuation(Scheme_Cont *cont, Scheme_Thread *p, int for_pr if (do_reset_cjs) copy_cjs(&p->cjs, &cont->cjs); - p->overflow = cont->save_overflow; + if (shortcut_prompt) { + Scheme_Overflow *overflow; + overflow = p->overflow; + while (overflow + && (!overflow->id + || (overflow->id != shortcut_prompt->boundary_overflow_id))) { + overflow = overflow->prev; + } + overflow = clone_overflows(cont->save_overflow, NULL, overflow); + p->overflow = overflow; + } else { + p->overflow = cont->save_overflow; + } { Scheme_Meta_Continuation *mc, *resume_mc; if (resume) { diff --git a/src/mzscheme/src/network.c b/src/mzscheme/src/network.c index e3034051a1..ea6e4c31bd 100644 --- a/src/mzscheme/src/network.c +++ b/src/mzscheme/src/network.c @@ -2494,6 +2494,25 @@ int scheme_get_port_socket(Scheme_Object *p, long *_s) #endif } +void scheme_socket_to_ports(long s, const char *name, int takeover, + Scheme_Object **_inp, Scheme_Object **_outp) +{ + Scheme_Tcp *tcp; + Scheme_Object *v; + + tcp = make_tcp_port_data(s, takeover ? 2 : 3); + + v = make_tcp_input_port(tcp, name); + *_inp = v; + v = make_tcp_output_port(tcp, name); + *_outp = v; + + if (takeover) { + scheme_file_open_count++; + REGISTER_SOCKET(s); + } +} + /*========================================================================*/ /* UDP */ /*========================================================================*/ diff --git a/src/mzscheme/src/port.c b/src/mzscheme/src/port.c index ee89f219b5..42d8f30c3f 100644 --- a/src/mzscheme/src/port.c +++ b/src/mzscheme/src/port.c @@ -4201,26 +4201,31 @@ scheme_file_position(int argc, Scheme_Object *argv[]) #endif } else { if (whence == SEEK_END) { - n = is->size; + if (wis) + n = is->u.hot; + else + n = is->size; } if (wis) { if (is->index > is->u.hot) is->u.hot = is->index; - if (is->size < is->index + n) { + if (is->size < n) { /* Expand string up to n: */ char *old; old = is->string; - is->size = is->index + n; { char *ca; - ca = (char *)scheme_malloc_atomic(is->size + 1); + ca = (char *)scheme_malloc_fail_ok(scheme_malloc_atomic, n + 1); is->string = ca; - } - memcpy(is->string, old, is->index); + } + is->size = n; + memcpy(is->string, old, is->u.hot); } - if (n > is->u.hot) + if (n > is->u.hot) { memset(is->string + is->u.hot, 0, n - is->u.hot); + is->u.hot = n; + } } else { /* Can't really move past end of read string, but pretend we do: */ if (n > is->size) { diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index d42e158a6b..d5a2f05d42 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -4848,7 +4848,7 @@ static Scheme_Object *read_compiled(Scheme_Object *port, /* Load table mapping symtab indices to stream positions: */ all_short = scheme_get_byte(port); - so = (long *)scheme_malloc_atomic(sizeof(long) * symtabsize); + so = (long *)scheme_malloc_fail_ok(scheme_malloc_atomic, sizeof(long) * symtabsize); if ((got = scheme_get_bytes(port, (all_short ? 2 : 4) * (symtabsize - 1), (char *)so, 0)) != ((all_short ? 2 : 4) * (symtabsize - 1))) scheme_read_err(port, NULL, -1, -1, -1, -1, 0, NULL, @@ -4892,7 +4892,7 @@ static Scheme_Object *read_compiled(Scheme_Object *port, SET_REQUIRED_TAG(rp->type = scheme_rt_compact_port); { unsigned char *st; - st = (unsigned char *)scheme_malloc_atomic(size + 1); + st = (unsigned char *)scheme_malloc_fail_ok(scheme_malloc_atomic, size + 1); rp->start = st; } rp->pos = 0; diff --git a/src/mzscheme/src/schemef.h b/src/mzscheme/src/schemef.h index ac557ab88c..283d411958 100644 --- a/src/mzscheme/src/schemef.h +++ b/src/mzscheme/src/schemef.h @@ -835,6 +835,8 @@ MZ_EXTERN void scheme_getnameinfo(void *sa, int salen, MZ_EXTERN int scheme_get_port_file_descriptor(Scheme_Object *p, long *_fd); MZ_EXTERN int scheme_get_port_socket(Scheme_Object *p, long *_s); +MZ_EXTERN void scheme_socket_to_ports(long s, const char *name, int takeover, + Scheme_Object **_inp, Scheme_Object **_outp); MZ_EXTERN void scheme_set_type_printer(Scheme_Type stype, Scheme_Type_Printer printer); MZ_EXTERN void scheme_print_bytes(Scheme_Print_Params *pp, const char *str, int offset, int len); diff --git a/src/mzscheme/src/schemex.h b/src/mzscheme/src/schemex.h index ab14d1c631..af6eef6f4e 100644 --- a/src/mzscheme/src/schemex.h +++ b/src/mzscheme/src/schemex.h @@ -699,6 +699,8 @@ void (*scheme_getnameinfo)(void *sa, int salen, char *serv, int servlen); int (*scheme_get_port_file_descriptor)(Scheme_Object *p, long *_fd); int (*scheme_get_port_socket)(Scheme_Object *p, long *_s); +void (*scheme_socket_to_ports)(long s, const char *name, int takeover, + Scheme_Object **_inp, Scheme_Object **_outp); void (*scheme_set_type_printer)(Scheme_Type stype, Scheme_Type_Printer printer); void (*scheme_print_bytes)(Scheme_Print_Params *pp, const char *str, int offset, int len); void (*scheme_print_utf8)(Scheme_Print_Params *pp, const char *str, int offset, int len); diff --git a/src/mzscheme/src/schemex.inc b/src/mzscheme/src/schemex.inc index 908ebc6192..8732a5bf4e 100644 --- a/src/mzscheme/src/schemex.inc +++ b/src/mzscheme/src/schemex.inc @@ -476,6 +476,7 @@ scheme_extension_table->scheme_getnameinfo = scheme_getnameinfo; scheme_extension_table->scheme_get_port_file_descriptor = scheme_get_port_file_descriptor; scheme_extension_table->scheme_get_port_socket = scheme_get_port_socket; + scheme_extension_table->scheme_socket_to_ports = scheme_socket_to_ports; scheme_extension_table->scheme_set_type_printer = scheme_set_type_printer; scheme_extension_table->scheme_print_bytes = scheme_print_bytes; scheme_extension_table->scheme_print_utf8 = scheme_print_utf8; diff --git a/src/mzscheme/src/schemexm.h b/src/mzscheme/src/schemexm.h index b4207b9425..cd6b790a0a 100644 --- a/src/mzscheme/src/schemexm.h +++ b/src/mzscheme/src/schemexm.h @@ -476,6 +476,7 @@ #define scheme_getnameinfo (scheme_extension_table->scheme_getnameinfo) #define scheme_get_port_file_descriptor (scheme_extension_table->scheme_get_port_file_descriptor) #define scheme_get_port_socket (scheme_extension_table->scheme_get_port_socket) +#define scheme_socket_to_ports (scheme_extension_table->scheme_socket_to_ports) #define scheme_set_type_printer (scheme_extension_table->scheme_set_type_printer) #define scheme_print_bytes (scheme_extension_table->scheme_print_bytes) #define scheme_print_utf8 (scheme_extension_table->scheme_print_utf8) diff --git a/src/mzscheme/src/schpriv.h b/src/mzscheme/src/schpriv.h index 058fdc3438..41fe6578aa 100644 --- a/src/mzscheme/src/schpriv.h +++ b/src/mzscheme/src/schpriv.h @@ -358,6 +358,10 @@ struct Scheme_Custodian { Scheme_Custodian_Reference *global_next; Scheme_Custodian_Reference *global_prev; + +#ifdef MZ_PRECISE_GC + int gc_owner_set; +#endif }; Scheme_Thread *scheme_do_close_managed(Scheme_Custodian *m, Scheme_Exit_Closer_Func f); diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 526b7d9cbe..e96a6f54af 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -9,6 +9,6 @@ #define MZSCHEME_VERSION_MAJOR 369 -#define MZSCHEME_VERSION_MINOR 4 +#define MZSCHEME_VERSION_MINOR 5 -#define MZSCHEME_VERSION "369.4" _MZ_SPECIAL_TAG +#define MZSCHEME_VERSION "369.5" _MZ_SPECIAL_TAG diff --git a/src/mzscheme/src/startup.inc b/src/mzscheme/src/startup.inc index 9e0c47972d..24d0bd34c6 100644 --- a/src/mzscheme/src/startup.inc +++ b/src/mzscheme/src/startup.inc @@ -652,7 +652,7 @@ "((fields)(cdddr defined-names))" "((wrap)(if gen-expr?(lambda(x)(cons 'list-immutable x)) values))" "((total-wrap)(if gen-expr?" -"(lambda(x) `(let((,cert-id(syntax-local-certifier))) ,x))" +"(lambda(x) `(let((,cert-id(syntax-local-certifier #t))) ,x))" " values)))" "(total-wrap" "(wrap" diff --git a/src/mzscheme/src/startup.ss b/src/mzscheme/src/startup.ss index a1d78ca49b..691d1cbb56 100644 --- a/src/mzscheme/src/startup.ss +++ b/src/mzscheme/src/startup.ss @@ -761,7 +761,7 @@ [(fields) (cdddr defined-names)] [(wrap) (if gen-expr? (lambda (x) (cons 'list-immutable x)) values)] [(total-wrap) (if gen-expr? - (lambda (x) `(let ([,cert-id (syntax-local-certifier)]) ,x)) + (lambda (x) `(let ([,cert-id (syntax-local-certifier #t)]) ,x)) values)]) (total-wrap (wrap diff --git a/src/mzscheme/src/thread.c b/src/mzscheme/src/thread.c index d4d24127e0..b557438947 100644 --- a/src/mzscheme/src/thread.c +++ b/src/mzscheme/src/thread.c @@ -241,6 +241,25 @@ static int recycle_cc_count; static mz_jmp_buf main_init_error_buf; +#ifdef MZ_PRECISE_GC +/* This is a trick to get the types right. Note that + the layout of the weak box is defined by the + GC spec. */ +typedef struct { + short type; + short hash_key; + Scheme_Custodian *val; +} Scheme_Custodian_Weak_Box; + +# define MALLOC_MREF() (Scheme_Custodian_Reference *)scheme_make_weak_box(NULL) +# define CUSTODIAN_FAM(x) ((Scheme_Custodian_Weak_Box *)x)->val +# define xCUSTODIAN_FAM(x) SCHEME_BOX_VAL(x) +#else +# define MALLOC_MREF() MALLOC_ONE_WEAK(Scheme_Custodian_Reference) +# define CUSTODIAN_FAM(x) (*(x)) +# define xCUSTODIAN_FAM(x) (*(x)) +#endif + #ifdef MZ_PRECISE_GC static void register_traversers(void); #endif @@ -670,12 +689,12 @@ void scheme_init_thread(Scheme_Env *env) scheme_add_global_constant("custodian-require-memory", scheme_make_prim_w_arity(custodian_require_mem, "custodian-require-memory", - 2, 2), + 3, 3), env); scheme_add_global_constant("custodian-limit-memory", scheme_make_prim_w_arity(custodian_limit_mem, "custodian-limit-memory", - 3, 3), + 2, 3), env); @@ -836,23 +855,45 @@ static Scheme_Object *current_memory_use(int argc, Scheme_Object *args[]) static Scheme_Object *custodian_require_mem(int argc, Scheme_Object *args[]) { long lim; + Scheme_Custodian *c1, *c2, *cx; - if (SCHEME_INTP(args[0]) && (SCHEME_INT_VAL(args[0]) > 0)) { - lim = SCHEME_INT_VAL(args[0]); - } else if (SCHEME_BIGNUMP(args[0]) && SCHEME_BIGPOS(args[0])) { - lim = 0x3fffffff; /* more memory than we actually have */ - } else { - scheme_wrong_type("custodian-require-memory", "positive exact integer", 0, argc, args); + if(NOT_SAME_TYPE(SCHEME_TYPE(args[0]), scheme_custodian_type)) { + scheme_wrong_type("custodian-require-memory", "custodian", 0, argc, args); return NULL; } - if(NOT_SAME_TYPE(SCHEME_TYPE(args[1]), scheme_custodian_type)) { - scheme_wrong_type("custodian-require-memory", "custodian", 1, argc, args); + if (SCHEME_INTP(args[1]) && (SCHEME_INT_VAL(args[1]) > 0)) { + lim = SCHEME_INT_VAL(args[1]); + } else if (SCHEME_BIGNUMP(args[1]) && SCHEME_BIGPOS(args[1])) { + lim = 0x3fffffff; /* more memory than we actually have */ + } else { + scheme_wrong_type("custodian-require-memory", "positive exact integer", 1, argc, args); return NULL; } + if(NOT_SAME_TYPE(SCHEME_TYPE(args[2]), scheme_custodian_type)) { + scheme_wrong_type("custodian-require-memory", "custodian", 2, argc, args); + return NULL; + } + + c1 = (Scheme_Custodian *)args[0]; + c2 = (Scheme_Custodian *)args[2]; + + /* Check whether c1 is super to c2: */ + if (c1 == c2) { + cx = NULL; + } else { + for (cx = c2; cx && NOT_SAME_OBJ(cx, c1); ) { + cx = CUSTODIAN_FAM(cx->parent); + } + } + if (!cx) { + scheme_raise_exn(MZEXN_FAIL_CONTRACT, + "custodian-require-memory: second custodian is not a sub-custodian of the first custodian"); + } + #ifdef MZ_PRECISE_GC - if (GC_set_account_hook(MZACCT_REQUIRE, NULL, lim, args[1])) + if (GC_set_account_hook(MZACCT_REQUIRE, c1, lim, c2)) return scheme_void; #endif @@ -876,15 +917,18 @@ static Scheme_Object *custodian_limit_mem(int argc, Scheme_Object *args[]) lim = 0x3fffffff; /* more memory than we actually have */ } else { scheme_wrong_type("custodian-limit-memory", "positive exact integer", 1, argc, args); - } - - if(NOT_SAME_TYPE(SCHEME_TYPE(args[2]), scheme_custodian_type)) { - scheme_wrong_type("custodian-require-memory", "custodian", 2, argc, args); return NULL; } + if (argc > 2) { + if (NOT_SAME_TYPE(SCHEME_TYPE(args[2]), scheme_custodian_type)) { + scheme_wrong_type("custodian-require-memory", "custodian", 2, argc, args); + return NULL; + } + } + #ifdef MZ_PRECISE_GC - if (GC_set_account_hook(MZACCT_LIMIT, args[0], SCHEME_INT_VAL(args[1]), args[2])) + if (GC_set_account_hook(MZACCT_LIMIT, args[0], lim, (argc > 2) ? args[2] : args[0])) return scheme_void; #endif @@ -979,25 +1023,6 @@ static void add_managed_box(Scheme_Custodian *m, m->count++; } -#ifdef MZ_PRECISE_GC -/* This is a trick to get the types right. Note that - the layout of the weak box is defined by the - GC spec. */ -typedef struct { - short type; - short hash_key; - Scheme_Custodian *val; -} Scheme_Custodian_Weak_Box; - -# define MALLOC_MREF() (Scheme_Custodian_Reference *)scheme_make_weak_box(NULL) -# define CUSTODIAN_FAM(x) ((Scheme_Custodian_Weak_Box *)x)->val -# define xCUSTODIAN_FAM(x) SCHEME_BOX_VAL(x) -#else -# define MALLOC_MREF() MALLOC_ONE_WEAK(Scheme_Custodian_Reference) -# define CUSTODIAN_FAM(x) (*(x)) -# define xCUSTODIAN_FAM(x) (*(x)) -#endif - static void remove_managed(Scheme_Custodian_Reference *mr, Scheme_Object *o, Scheme_Close_Custodian_Client **old_f, void **old_data) { @@ -5924,7 +5949,7 @@ static void make_initial_config(Scheme_Thread *p) init_param(cells, paramz, MZCONFIG_DELAY_LOAD_INFO, scheme_false); init_param(cells, paramz, MZCONFIG_PRINT_GRAPH, scheme_false); - init_param(cells, paramz, MZCONFIG_PRINT_STRUCT, scheme_false); + init_param(cells, paramz, MZCONFIG_PRINT_STRUCT, scheme_true); init_param(cells, paramz, MZCONFIG_PRINT_BOX, scheme_true); init_param(cells, paramz, MZCONFIG_PRINT_VEC_SHORTHAND, scheme_true); init_param(cells, paramz, MZCONFIG_PRINT_HASH_TABLE, scheme_false); @@ -5947,7 +5972,7 @@ static void make_initial_config(Scheme_Thread *p) init_param(cells, paramz, MZCONFIG_CURLY_BRACES_ARE_PARENS, (scheme_curly_braces_are_parens ? scheme_true : scheme_false)); - init_param(cells, paramz, MZCONFIG_ERROR_PRINT_WIDTH, scheme_make_integer(100)); + init_param(cells, paramz, MZCONFIG_ERROR_PRINT_WIDTH, scheme_make_integer(256)); init_param(cells, paramz, MZCONFIG_ERROR_PRINT_CONTEXT_LENGTH, scheme_make_integer(16)); init_param(cells, paramz, MZCONFIG_ERROR_PRINT_SRCLOC, scheme_true); @@ -6733,6 +6758,7 @@ static void done_with_GC() #ifdef RUNSTACK_IS_GLOBAL # ifdef MZ_PRECISE_GC MZ_RUNSTACK = scheme_current_thread->runstack; + MZ_RUNSTACK_START = scheme_current_thread->runstack_start; # endif #endif #ifdef WINDOWS_PROCESSES diff --git a/src/wxcommon/PSDC.cxx b/src/wxcommon/PSDC.cxx index 8178a49d1c..39cefafb22 100644 --- a/src/wxcommon/PSDC.cxx +++ b/src/wxcommon/PSDC.cxx @@ -2324,6 +2324,7 @@ Bool wxPrintSetupData::ShowNative(wxWindow *parent) if (!native) { native = new WXGC_PTRS wxPrintData(); native->SetLandscape(printer_orient == PS_LANDSCAPE); + native->SetScale(printer_scale_y); } d = new WXGC_PTRS wxPrintDialog(parent, native); @@ -2333,6 +2334,8 @@ Bool wxPrintSetupData::ShowNative(wxWindow *parent) if (ok) { ls = native->GetLandscape(); printer_orient = (ls ? PS_LANDSCAPE : PS_PORTRAIT); + printer_scale_y = native->GetScale(); + printer_scale_x = printer_scale_y; } return ok; #else diff --git a/src/wxmac/include/mac/wx_print.h b/src/wxmac/include/mac/wx_print.h index 15e605ddc3..87ff03b297 100644 --- a/src/wxmac/include/mac/wx_print.h +++ b/src/wxmac/include/mac/wx_print.h @@ -102,6 +102,9 @@ class wxPrintData: public wxObject void SetLandscape(Bool); Bool GetLandscape(); + + void SetScale(double s); + double GetScale(); wxPrintData *copy(); }; diff --git a/src/wxmac/src/mac/wx_dcpr1.cc b/src/wxmac/src/mac/wx_dcpr1.cc index afd276f66e..6fb2e1e783 100644 --- a/src/wxmac/src/mac/wx_dcpr1.cc +++ b/src/wxmac/src/mac/wx_dcpr1.cc @@ -35,6 +35,11 @@ wxPrinterDC::wxPrinterDC(wxPrintData *printData, Bool interactive) : wxCanvasDC( printData = new WXGC_PTRS wxPrintData(); if (ps->GetPrinterOrientation() == PS_LANDSCAPE) printData->SetLandscape(TRUE); + { + double sx, sy; + ps->GetPrinterScaling(&sx, &sy); + printData->SetScale(sy); + } } } diff --git a/src/wxmac/src/mac/wx_print.cc b/src/wxmac/src/mac/wx_print.cc index 2037da6967..a95653e6b3 100644 --- a/src/wxmac/src/mac/wx_print.cc +++ b/src/wxmac/src/mac/wx_print.cc @@ -261,6 +261,18 @@ Bool wxPrintData::GetLandscape() return ((o == kPMLandscape) || (o == kPMReverseLandscape)); } +void wxPrintData::SetScale(double s) +{ + PMSetScale(cPageFormat, s * 100); +} + +double wxPrintData::GetScale() +{ + double s; + PMGetScale(cPageFormat, &s); + return s / 100; +} + wxPrintData *wxPrintData::copy(void) { wxPrintData *pd; @@ -303,11 +315,24 @@ Bool wxPrinter::Print(wxWindow *parent, wxPrintout *printout, Bool prompt) int copyCount; double w, h; wxDC* dc; + wxPrintSetupData *ps; if (!printout) return FALSE; - printData = new WXGC_PTRS wxPrintData(); + ps = wxGetThePrintSetupData(); + if (ps->native) { + printData = ps->native->copy(); + } else { + printData = new WXGC_PTRS wxPrintData(); + if (ps->GetPrinterOrientation() == PS_LANDSCAPE) + printData->SetLandscape(TRUE); + { + double sx, sy; + ps->GetPrinterScaling(&sx, &sy); + printData->SetScale(sy); + } + } printout->SetIsPreview(FALSE); printout->OnPreparePrinting();