diff --git a/collects/racket/main.rkt b/collects/racket/main.rkt index b0b9bc0dfa..5a22f7dece 100644 --- a/collects/racket/main.rkt +++ b/collects/racket/main.rkt @@ -20,6 +20,7 @@ racket/function racket/path racket/file + racket/place racket/port racket/cmdline racket/promise @@ -49,6 +50,7 @@ racket/function racket/path racket/file + racket/place racket/port racket/cmdline racket/promise diff --git a/collects/racket/place.rkt b/collects/racket/place.rkt index 4f39c4f82a..145df17342 100644 --- a/collects/racket/place.rkt +++ b/collects/racket/place.rkt @@ -1,10 +1,14 @@ -#lang scheme/base -(require '#%place) -(require '#%futures) - -(define (place-channel-send/recv ch msg) - (place-channel-send ch msg) - (place-channel-recv ch)) +#lang racket/base +(require (prefix-in pl- '#%place) + '#%boot + (only-in '#%paramz parameterization-key make-custodian-from-main) + (only-in '#%futures processor-count) + '#%place-struct + racket/fixnum + racket/flonum + racket/vector + (only-in unstable/struct struct->list) + (for-syntax racket/base)) (provide place place-sleep @@ -15,4 +19,97 @@ place-channel? place? place-channel-send/recv - processor-count) + processor-count + (rename-out [pl-place-enabled? place-enabled?])) + +(define-struct TH-place (th ch) #:property prop:evt (lambda (x) (TH-place-channel-out (TH-place-ch x)))) + +(define (place-channel-send/recv ch msg) + (place-channel-send ch msg) + (place-channel-recv ch)) + +(define (make-th-async-channel) + (define ch (make-channel)) + (values + (thread + (lambda () + (let loop () + (channel-put ch (thread-receive)) + (loop)))) + ch)) + +(define (th-place mod funcname) + (define-values (pch cch) (th-place-channel)) + (define th (thread (lambda () + (with-continuation-mark + parameterization-key + orig-paramz + (parameterize ([current-namespace (make-base-namespace)] + [current-custodian (make-custodian-from-main)]) + ((dynamic-require mod funcname) cch)))))) + (TH-place th pch)) + +(define (th-place-sleep n) (sleep n)) +(define (th-place-wait pl) (thread-wait (TH-place-th pl))) +(define (th-place-channel) + (define-values (as ar) (make-th-async-channel)) + (define-values (bs br) (make-th-async-channel)) + (define pch (TH-place-channel ar bs)) + (define cch (TH-place-channel br as)) + (values pch cch)) + +(define (deep-copy x) + (define (dcw o) + (cond + [(ormap (lambda (x) (x o)) (list number? char? boolean? null? void? string? symbol? TH-place-channel?)) o] + [(cond + [(path? o) (path->bytes o)] + [(bytes? o) (if (pl-place-shared? o) o (bytes-copy o))] + [(fxvector? o) (if (pl-place-shared? o) o (fxvector-copy o))] + [(flvector? o) (if (pl-place-shared? o) o (flvector-copy o))] + [else #f]) + => values] + [(TH-place? o) (dcw (TH-place-ch o))] + [(pair? o) (cons (dcw (car o)) (dcw (cdr o)))] + [(vector? o) (vector-map! dcw (vector-copy o))] + [(struct? o) + (define key (prefab-struct-key o)) + (when (not key) + (error "Must be a prefab struct")) + (apply make-prefab-struct key (map dcw (struct->list o)))] + [else (error "Error not place serializable ~a" o)])) + + (dcw x)) + + +(define (th-place-channel-send pl msg) + (define th + (cond + [(TH-place? pl) (TH-place-channel-out (TH-place-ch pl))] + [(TH-place-channel? pl) (TH-place-channel-out pl)] + [else (raise-type-error 'place-channel-send "expect a place? or place-channel?" pl)])) + (sync (thread-resume-evt th)) + (thread-send th + (deep-copy msg))) + +(define (th-place-channel-recv pl) + (channel-get + (cond + [(TH-place? pl) (TH-place-channel-in (TH-place-ch pl))] + [(TH-place-channel? pl) (TH-place-channel-in pl)] + [else (raise-type-error 'place-channel-recv "expect a place? or place-channel?" pl)]))) + +(define (th-place-channel? pl) + (or (TH-place? pl) + (TH-place-channel? pl))) + +(define-syntax-rule (define-pl x p t) (define x (if (pl-place-enabled?) p t))) + +(define-pl place pl-place th-place) +(define-pl place-sleep pl-place-sleep th-place-sleep) +(define-pl place-wait pl-place-wait th-place-wait) +(define-pl place-channel pl-place-channel th-place-channel) +(define-pl place-channel-send pl-place-channel-send th-place-channel-send) +(define-pl place-channel-recv pl-place-channel-recv th-place-channel-recv) +(define-pl place-channel? pl-place-channel? th-place-channel?) +(define-pl place? pl-place? TH-place?) diff --git a/src/racket/include/scheme.h b/src/racket/include/scheme.h index 1a7258a986..0542fb604e 100644 --- a/src/racket/include/scheme.h +++ b/src/racket/include/scheme.h @@ -308,11 +308,9 @@ typedef struct Scheme_Vector { Scheme_Object *els[1]; } Scheme_Vector; -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) # define SHARED_ALLOCATED 0x2 # define SHARED_ALLOCATEDP(so) (MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(so)) & SHARED_ALLOCATED) # define SHARED_ALLOCATED_SET(so) (MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(so)) |= SHARED_ALLOCATED) -#endif typedef struct Scheme_Double_Vector { Scheme_Inclhash_Object iso; /* & 0x2 indicates allocated in the MASTERGC */ diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index b9d23c8273..928059308d 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,668 +1,678 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,48,46,57,57,46,56,51,0,0,0,1,0,0,10,0,13, -0,22,0,35,0,40,0,43,0,50,0,57,0,61,0,68,0,73,0,78,0, -82,0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158, -0,165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1, -144,1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177, -3,243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35, -37,109,105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,72, -112,97,114,97,109,101,116,101,114,105,122,101,64,99,111,110,100,62,111,114,66, -108,101,116,114,101,99,66,117,110,108,101,115,115,63,108,101,116,66,100,101,102, -105,110,101,64,119,104,101,110,64,108,101,116,42,63,97,110,100,65,113,117,111, -116,101,29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68, -35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116, -120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114, -101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114, -97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100, -101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,79,82,0,0, -95,159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2, -2,2,5,2,2,2,7,2,2,2,8,2,2,2,9,2,2,2,10,2,2, -2,11,2,2,2,6,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240, -79,82,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2, -2,2,3,96,38,11,8,240,79,82,0,0,16,0,96,11,11,8,240,79,82, -0,0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101, -114,101,8,32,8,31,8,30,8,29,8,28,93,8,224,86,82,0,0,95,9, -8,224,86,82,0,0,2,2,27,248,22,155,4,195,249,22,148,4,80,158,39, -36,251,22,83,2,17,248,22,98,199,12,249,22,73,2,18,248,22,100,201,27, -248,22,155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,98, -199,249,22,73,2,18,248,22,100,201,12,27,248,22,75,248,22,155,4,196,28, -248,22,81,193,20,15,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74, -193,249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,74,199,249,22,73, -2,13,248,22,75,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8, -28,16,4,11,11,2,19,3,1,8,101,110,118,49,51,52,53,52,16,4,11, -11,2,20,3,1,8,101,110,118,49,51,52,53,53,93,8,224,87,82,0,0, -95,9,8,224,87,82,0,0,2,2,27,248,22,75,248,22,155,4,196,28,248, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,50,51,0,0,0,1,0,0,10,0,13,0, +22,0,29,0,34,0,38,0,41,0,46,0,59,0,66,0,70,0,75,0,82, +0,88,0,102,0,116,0,119,0,125,0,129,0,131,0,142,0,144,0,158,0, +165,0,187,0,189,0,203,0,14,1,43,1,54,1,65,1,75,1,111,1,144, +1,177,1,236,1,46,2,124,2,190,2,195,2,215,2,106,3,126,3,177,3, +243,3,128,4,14,5,66,5,89,5,168,5,0,0,109,7,0,0,69,35,37, +109,105,110,45,115,116,120,29,11,11,68,104,101,114,101,45,115,116,120,66,108, +101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,111,114,64,119,104,101, +110,72,112,97,114,97,109,101,116,101,114,105,122,101,66,100,101,102,105,110,101, +63,108,101,116,64,99,111,110,100,66,117,110,108,101,115,115,65,113,117,111,116, +101,29,94,2,14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35, +37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,105,110,63,115,116,120, +61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,73,108,101,116,114,101, +99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,1,20,112,97,114,97, +109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,61,118,73,100,101, +102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,240,144,82,0,0,95, +159,2,16,36,36,159,2,15,36,36,159,2,15,36,36,16,20,2,4,2,2, +2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2,9,2,2,2, +10,2,2,2,11,2,2,2,12,2,2,2,13,2,2,97,37,11,8,240,144, +82,0,0,93,159,2,15,36,37,16,2,2,3,161,2,2,37,2,3,2,2, +2,3,96,38,11,8,240,144,82,0,0,16,0,96,11,11,8,240,144,82,0, +0,16,0,13,16,4,36,29,11,11,2,2,11,18,16,2,99,64,104,101,114, +101,8,32,8,31,8,30,8,29,8,28,93,8,224,151,82,0,0,95,9,8, +224,151,82,0,0,2,2,27,248,22,155,4,195,249,22,148,4,80,158,39,36, +251,22,83,2,17,248,22,98,199,12,249,22,73,2,18,248,22,100,201,27,248, +22,155,4,195,249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,98,199, +249,22,73,2,18,248,22,100,201,12,27,248,22,75,248,22,155,4,196,28,248, 22,81,193,20,15,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193, -249,22,148,4,80,158,39,36,250,22,83,2,21,248,22,83,249,22,83,248,22, -83,2,22,248,22,74,201,251,22,83,2,17,2,22,2,22,249,22,73,2,6, -248,22,75,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4, -11,11,2,19,3,1,8,101,110,118,49,51,52,53,55,16,4,11,11,2,20, -3,1,8,101,110,118,49,51,52,53,56,93,8,224,88,82,0,0,95,9,8, -224,88,82,0,0,2,2,248,22,155,4,193,27,248,22,155,4,194,249,22,73, -248,22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197, -1,249,22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74,23, -198,2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,155, -4,248,22,98,23,200,2,250,22,83,2,23,248,22,83,249,22,83,248,22,83, -248,22,74,23,204,2,250,22,84,2,24,249,22,2,22,74,23,204,2,248,22, -100,23,206,2,249,22,73,248,22,74,23,202,1,249,22,2,22,98,23,200,1, -250,22,84,2,21,249,22,2,32,0,89,162,8,44,37,47,9,222,33,41,248, -22,155,4,248,22,74,201,248,22,75,198,27,248,22,155,4,194,249,22,73,248, +249,22,148,4,80,158,39,36,251,22,83,2,17,248,22,74,199,249,22,73,2, +6,248,22,75,201,11,18,16,2,101,10,8,32,8,31,8,30,8,29,8,28, +16,4,11,11,2,19,3,1,8,101,110,118,49,51,52,54,49,16,4,11,11, +2,20,3,1,8,101,110,118,49,51,52,54,50,93,8,224,152,82,0,0,95, +9,8,224,152,82,0,0,2,2,27,248,22,75,248,22,155,4,196,28,248,22, +81,193,20,15,159,37,36,37,28,248,22,81,248,22,75,194,248,22,74,193,249, +22,148,4,80,158,39,36,250,22,83,2,21,248,22,83,249,22,83,248,22,83, +2,22,248,22,74,201,251,22,83,2,17,2,22,2,22,249,22,73,2,7,248, +22,75,204,18,16,2,101,11,8,32,8,31,8,30,8,29,8,28,16,4,11, +11,2,19,3,1,8,101,110,118,49,51,52,54,52,16,4,11,11,2,20,3, +1,8,101,110,118,49,51,52,54,53,93,8,224,153,82,0,0,95,9,8,224, +153,82,0,0,2,2,248,22,155,4,193,27,248,22,155,4,194,249,22,73,248, 22,83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197,1, -249,22,148,4,80,158,39,36,250,22,84,2,23,249,22,2,32,0,89,162,8, -44,37,47,9,222,33,43,248,22,155,4,248,22,74,201,248,22,75,198,27,248, -22,75,248,22,155,4,196,27,248,22,155,4,248,22,74,195,249,22,148,4,80, -158,40,36,28,248,22,81,195,250,22,84,2,21,9,248,22,75,199,250,22,83, -2,9,248,22,83,248,22,74,199,250,22,84,2,12,248,22,75,201,248,22,75, -202,27,248,22,75,248,22,155,4,23,197,1,27,249,22,1,22,87,249,22,2, -22,155,4,248,22,155,4,248,22,74,199,249,22,148,4,80,158,40,36,251,22, -83,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45, -109,97,114,107,2,25,250,22,84,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,21,95,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,11,2,25,201,250,22,84,2,21,9,248,22,75,203,27,248,22,75,248, -22,155,4,196,28,248,22,81,193,20,15,159,37,36,37,249,22,148,4,80,158, -39,36,27,248,22,155,4,248,22,74,197,28,249,22,134,9,62,61,62,248,22, -149,4,248,22,98,196,250,22,83,2,21,248,22,83,249,22,83,21,93,2,26, -248,22,74,199,250,22,84,2,5,249,22,83,2,26,249,22,83,248,22,107,203, -2,26,248,22,75,202,251,22,83,2,17,28,249,22,134,9,248,22,149,4,248, -22,74,200,64,101,108,115,101,10,248,22,74,197,250,22,84,2,21,9,248,22, -75,200,249,22,73,2,5,248,22,75,202,100,8,32,8,31,8,30,8,29,8, -28,16,4,11,11,2,19,3,1,8,101,110,118,49,51,52,56,48,16,4,11, -11,2,20,3,1,8,101,110,118,49,51,52,56,49,93,8,224,89,82,0,0, -18,16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,89,82,0,0, -2,2,27,248,22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28,248, -22,58,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83,248,22,74, -199,248,22,98,198,27,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22, -83,248,22,74,197,250,22,84,2,24,248,22,75,199,248,22,75,202,159,36,20, -105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,2,2,11, -11,11,10,36,80,158,36,36,20,105,159,36,16,0,16,0,16,1,2,3,37, -16,0,36,16,0,36,11,11,39,36,11,11,11,16,10,2,4,2,5,2,6, -2,7,2,8,2,9,2,10,2,11,2,12,2,13,16,10,11,11,11,11,11, -11,11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10, -2,11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11, -11,11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36, -36,36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,8,89,162,8, -44,37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16, -5,2,11,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1, -2,3,16,0,11,16,5,2,13,89,162,8,44,37,53,9,223,0,33,36,36, -20,105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,6,89,162,8,44, -37,56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11, -16,5,2,9,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16, -1,2,3,16,0,11,16,5,2,7,89,162,8,44,37,53,9,223,0,33,44, -36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,12,89,162,8,44,37, -54,9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2, -4,89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3, -16,0,11,16,5,2,5,89,162,8,44,37,58,9,223,0,33,47,36,20,105, -159,36,16,1,2,3,16,1,33,49,11,16,5,2,10,89,162,8,44,37,54, -9,223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2, -15,2,16,93,2,15,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 2025); +249,22,148,4,80,158,39,36,28,248,22,58,248,22,149,4,248,22,74,23,198, +2,27,249,22,2,32,0,89,162,8,44,37,43,9,222,33,40,248,22,155,4, +248,22,98,23,200,2,250,22,83,2,23,248,22,83,249,22,83,248,22,83,248, +22,74,23,204,2,250,22,84,2,24,249,22,2,22,74,23,204,2,248,22,100, +23,206,2,249,22,73,248,22,74,23,202,1,249,22,2,22,98,23,200,1,250, +22,84,2,21,249,22,2,32,0,89,162,8,44,37,47,9,222,33,41,248,22, +155,4,248,22,74,201,248,22,75,198,27,248,22,155,4,194,249,22,73,248,22, +83,248,22,74,196,248,22,75,195,27,248,22,75,248,22,155,4,23,197,1,249, +22,148,4,80,158,39,36,250,22,84,2,23,249,22,2,32,0,89,162,8,44, +37,47,9,222,33,43,248,22,155,4,248,22,74,201,248,22,75,198,27,248,22, +75,248,22,155,4,196,27,248,22,155,4,248,22,74,195,249,22,148,4,80,158, +40,36,28,248,22,81,195,250,22,84,2,21,9,248,22,75,199,250,22,83,2, +11,248,22,83,248,22,74,199,250,22,84,2,5,248,22,75,201,248,22,75,202, +27,248,22,75,248,22,155,4,23,197,1,27,249,22,1,22,87,249,22,2,22, +155,4,248,22,155,4,248,22,74,199,249,22,148,4,80,158,40,36,251,22,83, +1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,110,45,109, +97,114,107,2,25,250,22,84,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,21,95,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,11,2,25,201,250,22,84,2,21,9,248,22,75,203,27,248,22,75,248,22, +155,4,196,28,248,22,81,193,20,15,159,37,36,37,249,22,148,4,80,158,39, +36,27,248,22,155,4,248,22,74,197,28,249,22,134,9,62,61,62,248,22,149, +4,248,22,98,196,250,22,83,2,21,248,22,83,249,22,83,21,93,2,26,248, +22,74,199,250,22,84,2,12,249,22,83,2,26,249,22,83,248,22,107,203,2, +26,248,22,75,202,251,22,83,2,17,28,249,22,134,9,248,22,149,4,248,22, +74,200,64,101,108,115,101,10,248,22,74,197,250,22,84,2,21,9,248,22,75, +200,249,22,73,2,12,248,22,75,202,100,8,32,8,31,8,30,8,29,8,28, +16,4,11,11,2,19,3,1,8,101,110,118,49,51,52,56,55,16,4,11,11, +2,20,3,1,8,101,110,118,49,51,52,56,56,93,8,224,154,82,0,0,18, +16,2,158,94,10,64,118,111,105,100,8,48,95,9,8,224,154,82,0,0,2, +2,27,248,22,75,248,22,155,4,196,249,22,148,4,80,158,39,36,28,248,22, +58,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83,248,22,74,199, +248,22,98,198,27,248,22,149,4,248,22,74,197,250,22,83,2,27,248,22,83, +248,22,74,197,250,22,84,2,24,248,22,75,199,248,22,75,202,159,36,20,105, +159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,2,2,11,11, +11,10,36,80,158,36,36,20,105,159,36,16,0,16,0,16,1,2,3,37,16, +0,36,16,0,36,11,11,39,36,11,11,11,16,10,2,4,2,5,2,6,2, +7,2,8,2,9,2,10,2,11,2,12,2,13,16,10,11,11,11,11,11,11, +11,11,11,11,16,10,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2, +11,2,12,2,13,36,46,37,11,11,11,16,0,16,0,16,0,36,36,11,11, +11,11,16,0,16,0,16,0,36,36,16,11,16,5,2,3,20,15,159,36,36, +36,36,20,105,159,36,16,0,16,1,33,33,10,16,5,2,13,89,162,8,44, +37,53,9,223,0,33,34,36,20,105,159,36,16,1,2,3,16,0,11,16,5, +2,8,89,162,8,44,37,53,9,223,0,33,35,36,20,105,159,36,16,1,2, +3,16,0,11,16,5,2,6,89,162,8,44,37,53,9,223,0,33,36,36,20, +105,159,36,16,1,2,3,16,1,33,37,11,16,5,2,7,89,162,8,44,37, +56,9,223,0,33,38,36,20,105,159,36,16,1,2,3,16,1,33,39,11,16, +5,2,11,89,162,8,44,37,58,9,223,0,33,42,36,20,105,159,36,16,1, +2,3,16,0,11,16,5,2,4,89,162,8,44,37,53,9,223,0,33,44,36, +20,105,159,36,16,1,2,3,16,0,11,16,5,2,5,89,162,8,44,37,54, +9,223,0,33,45,36,20,105,159,36,16,1,2,3,16,0,11,16,5,2,9, +89,162,8,44,37,55,9,223,0,33,46,36,20,105,159,36,16,1,2,3,16, +0,11,16,5,2,12,89,162,8,44,37,58,9,223,0,33,47,36,20,105,159, +36,16,1,2,3,16,1,33,49,11,16,5,2,10,89,162,8,44,37,54,9, +223,0,33,50,36,20,105,159,36,16,1,2,3,16,0,11,16,0,94,2,15, +2,16,93,2,15,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 2024); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,48,46,57,57,46,56,74,0,0,0,1,0,0,8,0,21, -0,26,0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0, -200,0,231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111, -1,143,1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,63,2, -229,2,63,4,104,4,177,5,7,6,93,6,192,6,20,7,33,7,166,7,139, -8,223,8,236,8,1,10,204,10,217,10,109,15,124,16,13,17,254,17,236,18, -243,18,251,18,3,19,128,19,142,19,152,19,217,21,142,24,164,24,180,24,128, -26,231,26,245,26,71,28,8,30,17,30,26,30,52,30,181,30,0,0,200,33, -0,0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110, -103,63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112, -97,116,104,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99, -104,101,99,107,45,99,111,108,108,101,99,116,105,111,110,75,99,111,108,108,101, -99,116,105,111,110,45,112,97,116,104,73,102,105,110,100,45,99,111,108,45,102, -105,108,101,1,20,99,111,108,108,101,99,116,105,111,110,45,102,105,108,101,45, -112,97,116,104,77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108, -108,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120, -75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108,111,97,100, -47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110,100,45,108, -105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116, -104,115,1,27,112,97,116,104,45,108,105,115,116,45,115,116,114,105,110,103,45, -62,112,97,116,104,45,108,105,115,116,1,20,102,105,110,100,45,101,120,101,99, -117,116,97,98,108,101,45,112,97,116,104,73,101,109,98,101,100,100,101,100,45, -108,111,97,100,65,113,117,111,116,101,29,94,2,18,68,35,37,112,97,114,97, -109,122,11,64,108,111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105, -110,100,111,119,115,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100, -45,112,97,116,104,32,115,116,114,105,110,103,6,29,29,126,97,58,32,105,110, -118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32, -126,115,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110, -111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111, -102,58,32,126,115,65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3, -46,115,115,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115, -121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32, -115,116,114,105,110,103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121, -116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100, -100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32, -112,97,116,104,58,32,5,0,5,0,27,20,14,159,80,159,37,52,38,250,80, -159,40,53,38,249,22,27,11,80,159,42,52,38,22,177,13,10,248,22,184,5, -23,196,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1, -27,20,14,159,80,159,38,52,38,250,80,159,41,53,38,249,22,27,11,80,159, -43,52,38,22,177,13,10,248,22,184,5,23,197,2,28,248,22,183,6,23,194, -2,12,87,94,248,22,142,9,23,194,1,27,20,14,159,80,159,39,52,38,250, -80,159,42,53,38,249,22,27,11,80,159,44,52,38,22,177,13,10,248,22,184, -5,23,198,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194, -1,248,80,159,40,55,37,197,28,248,22,81,23,195,2,9,27,248,22,74,23, -196,2,27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23,195, -2,249,22,164,14,23,196,1,250,80,158,43,50,248,22,179,14,2,21,11,10, -250,80,158,41,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22, -73,248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,27,248,22,75,23, -200,1,28,248,22,81,23,194,2,9,27,248,22,74,23,195,2,27,28,248,22, -163,14,23,195,2,23,194,1,28,248,22,162,14,23,195,2,249,22,164,14,23, -196,1,250,80,158,48,50,248,22,179,14,2,21,11,10,250,80,158,46,50,248, -22,179,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,166,14,249, -22,164,14,23,198,1,247,22,180,14,248,80,159,46,54,37,248,22,75,23,199, -1,87,94,23,193,1,248,80,159,44,54,37,248,22,75,23,197,1,87,94,23, -193,1,27,248,22,75,23,198,1,28,248,22,81,23,194,2,9,27,248,22,74, -23,195,2,27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23, -195,2,249,22,164,14,23,196,1,250,80,158,46,50,248,22,179,14,2,21,11, -10,250,80,158,44,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249, -22,73,248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,248,80,159,44, -54,37,248,22,75,23,199,1,248,80,159,42,54,37,248,22,75,196,27,248,22, -139,14,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,188,6,23, -195,2,27,248,22,161,14,195,28,192,192,248,22,162,14,195,11,87,94,28,28, -248,22,140,14,23,195,2,10,28,248,22,139,14,23,195,2,10,28,248,22,188, -6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162,14,23,195,2,11, -12,250,22,170,9,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115, -101,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115, -116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116, -114,105,110,103,23,197,2,28,28,248,22,140,14,23,195,2,249,22,134,9,248, -22,141,14,23,197,2,2,22,249,22,134,9,247,22,146,8,2,22,27,28,248, -22,188,6,23,196,2,23,195,2,248,22,136,8,248,22,144,14,23,197,2,28, -249,22,130,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63, -93,91,92,92,93,34,23,195,2,28,248,22,188,6,195,248,22,147,14,195,194, -27,248,22,163,7,23,195,1,249,22,148,14,248,22,139,8,250,22,138,15,0, -6,35,114,120,34,47,34,28,249,22,130,15,0,22,35,114,120,34,91,47,92, -92,93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1, -250,22,138,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93, -42,41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,22,28,248, -22,188,6,194,248,22,147,14,194,193,87,94,28,28,248,22,139,14,23,195,2, -10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162, -14,23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248,22, -161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172, -7,2,24,23,200,1,23,201,1,247,22,23,87,94,28,28,248,22,139,14,23, -195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248, -22,162,14,23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28, -248,22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250, -22,172,7,2,24,23,200,1,23,201,1,247,22,23,87,94,87,94,28,28,248, -22,139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23, -195,2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,195,2,23,23,197, -2,28,248,22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153, -7,250,22,172,7,2,24,199,23,201,1,247,22,23,249,22,3,89,162,8,44, -37,50,9,223,2,33,39,196,87,94,28,28,248,22,139,14,23,194,2,10,28, -248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23, -194,2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161,14,23, -194,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24, -2,7,23,200,1,247,22,23,32,42,89,162,8,44,41,56,2,26,222,33,43, -28,248,22,81,23,197,2,87,94,23,196,1,28,23,197,2,196,87,94,23,197, -1,248,22,153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81, -23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23, -205,1,23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,200,2,23,197, -2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28, -248,22,152,14,193,192,252,2,42,199,200,201,248,22,75,203,203,252,2,42,198, -199,200,248,22,75,202,202,87,94,87,94,87,94,28,28,248,22,139,14,23,194, -2,10,28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22, -162,14,23,194,2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22, -161,14,23,194,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172, -7,2,24,2,7,23,200,2,247,22,23,249,22,3,32,0,89,162,8,44,37, -49,9,222,33,41,23,196,2,27,247,22,181,14,28,248,22,81,23,194,2,248, -22,153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23,203, -2,87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1, -23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,197,2,23,197,2,28, -248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248,22, -152,14,193,192,252,2,42,199,200,201,248,22,75,200,11,252,2,42,198,199,200, -248,22,75,199,11,87,94,28,28,248,22,139,14,23,194,2,10,28,248,22,188, -6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194,2,11, -12,250,22,170,9,2,9,2,23,23,196,2,28,248,22,161,14,23,194,2,12, -248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2,9,23, -200,1,247,22,23,32,46,89,162,8,44,42,59,2,26,222,33,47,28,248,22, -81,23,198,2,87,95,23,197,1,23,194,1,28,23,198,2,197,87,94,23,198, -1,248,22,153,12,249,22,128,12,251,22,172,7,2,25,2,9,28,248,22,81, -23,204,2,87,94,23,203,1,23,202,1,250,22,1,22,157,14,23,205,1,23, -206,1,23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,201,2,23,198, -2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23,201, -2,28,248,22,152,14,23,194,2,28,23,196,2,28,28,248,22,151,14,249,22, -157,14,195,198,10,27,28,248,22,139,14,197,248,22,143,14,197,196,27,248,22, -191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7,2, -27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7,250, -22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23,195, -1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23,196, -1,11,192,253,2,46,200,201,202,203,248,22,75,205,28,205,205,198,192,253,2, -46,200,201,202,203,248,22,75,205,205,253,2,46,199,200,201,202,248,22,75,204, -204,87,95,87,94,28,28,248,22,139,14,193,10,28,248,22,188,6,193,28,248, -22,161,14,193,10,248,22,162,14,193,11,12,250,22,170,9,2,9,2,23,195, -28,248,22,161,14,193,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22, -172,7,2,24,2,9,199,247,22,23,87,94,87,94,28,28,248,22,139,14,23, -195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248, -22,162,14,23,195,2,11,12,250,22,170,9,2,9,2,23,23,197,2,28,248, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,50,74,0,0,0,1,0,0,8,0,21,0, +26,0,43,0,58,0,76,0,92,0,106,0,128,0,146,0,166,0,182,0,200, +0,231,0,4,1,26,1,40,1,46,1,60,1,65,1,75,1,83,1,111,1, +143,1,188,1,194,1,201,1,207,1,252,1,20,2,59,2,61,2,63,2,229, +2,63,4,104,4,177,5,7,6,93,6,192,6,20,7,33,7,166,7,139,8, +223,8,236,8,1,10,204,10,217,10,109,15,124,16,13,17,254,17,236,18,243, +18,251,18,3,19,128,19,142,19,152,19,217,21,142,24,164,24,180,24,128,26, +231,26,245,26,71,28,8,30,17,30,26,30,52,30,181,30,0,0,200,33,0, +0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,103, +63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,97, +116,104,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104,77,45,99,104, +101,99,107,45,99,111,108,108,101,99,116,105,111,110,75,99,111,108,108,101,99, +116,105,111,110,45,112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105, +108,101,1,20,99,111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112, +97,116,104,77,99,104,101,99,107,45,115,117,102,102,105,120,45,99,97,108,108, +79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,75, +112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108,111,97,100,47, +117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110,100,45,108,105, +98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104, +115,1,27,112,97,116,104,45,108,105,115,116,45,115,116,114,105,110,103,45,62, +112,97,116,104,45,108,105,115,116,1,20,102,105,110,100,45,101,120,101,99,117, +116,97,98,108,101,45,112,97,116,104,73,101,109,98,101,100,100,101,100,45,108, +111,97,100,65,113,117,111,116,101,29,94,2,18,68,35,37,112,97,114,97,109, +122,11,64,108,111,111,112,69,101,120,101,99,45,102,105,108,101,67,119,105,110, +100,111,119,115,6,25,25,112,97,116,104,32,111,114,32,118,97,108,105,100,45, +112,97,116,104,32,115,116,114,105,110,103,6,29,29,126,97,58,32,105,110,118, +97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,58,32,126, +115,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105,111,110,32,110,111, +116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97,110,121,32,111,102, +58,32,126,115,65,99,108,111,111,112,6,4,4,46,114,107,116,6,3,3,46, +115,115,6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121, +115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115, +116,114,105,110,103,6,21,21,115,116,114,105,110,103,32,111,114,32,98,121,116, +101,32,115,116,114,105,110,103,6,36,36,99,97,110,110,111,116,32,97,100,100, +32,97,32,115,117,102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112, +97,116,104,58,32,5,0,5,0,27,20,14,159,80,159,37,52,38,250,80,159, +40,53,38,249,22,27,11,80,159,42,52,38,22,177,13,10,248,22,184,5,23, +196,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1,27, +20,14,159,80,159,38,52,38,250,80,159,41,53,38,249,22,27,11,80,159,43, +52,38,22,177,13,10,248,22,184,5,23,197,2,28,248,22,183,6,23,194,2, +12,87,94,248,22,142,9,23,194,1,27,20,14,159,80,159,39,52,38,250,80, +159,42,53,38,249,22,27,11,80,159,44,52,38,22,177,13,10,248,22,184,5, +23,198,2,28,248,22,183,6,23,194,2,12,87,94,248,22,142,9,23,194,1, +248,80,159,40,55,37,197,28,248,22,81,23,195,2,9,27,248,22,74,23,196, +2,27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23,195,2, +249,22,164,14,23,196,1,250,80,158,43,50,248,22,179,14,2,21,11,10,250, +80,158,41,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22,73, +248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,27,248,22,75,23,200, +1,28,248,22,81,23,194,2,9,27,248,22,74,23,195,2,27,28,248,22,163, +14,23,195,2,23,194,1,28,248,22,162,14,23,195,2,249,22,164,14,23,196, +1,250,80,158,48,50,248,22,179,14,2,21,11,10,250,80,158,46,50,248,22, +179,14,2,21,23,197,1,10,28,23,193,2,249,22,73,248,22,166,14,249,22, +164,14,23,198,1,247,22,180,14,248,80,159,46,54,37,248,22,75,23,199,1, +87,94,23,193,1,248,80,159,44,54,37,248,22,75,23,197,1,87,94,23,193, +1,27,248,22,75,23,198,1,28,248,22,81,23,194,2,9,27,248,22,74,23, +195,2,27,28,248,22,163,14,23,195,2,23,194,1,28,248,22,162,14,23,195, +2,249,22,164,14,23,196,1,250,80,158,46,50,248,22,179,14,2,21,11,10, +250,80,158,44,50,248,22,179,14,2,21,23,197,1,10,28,23,193,2,249,22, +73,248,22,166,14,249,22,164,14,23,198,1,247,22,180,14,248,80,159,44,54, +37,248,22,75,23,199,1,248,80,159,42,54,37,248,22,75,196,27,248,22,139, +14,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,188,6,23,195, +2,27,248,22,161,14,195,28,192,192,248,22,162,14,195,11,87,94,28,28,248, +22,140,14,23,195,2,10,28,248,22,139,14,23,195,2,10,28,248,22,188,6, +23,195,2,28,248,22,161,14,23,195,2,10,248,22,162,14,23,195,2,11,12, +250,22,170,9,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101, +6,42,42,112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116, +101,109,41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114, +105,110,103,23,197,2,28,28,248,22,140,14,23,195,2,249,22,134,9,248,22, +141,14,23,197,2,2,22,249,22,134,9,247,22,146,8,2,22,27,28,248,22, +188,6,23,196,2,23,195,2,248,22,136,8,248,22,144,14,23,197,2,28,249, +22,130,15,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93, +91,92,92,93,34,23,195,2,28,248,22,188,6,195,248,22,147,14,195,194,27, +248,22,163,7,23,195,1,249,22,148,14,248,22,139,8,250,22,138,15,0,6, +35,114,120,34,47,34,28,249,22,130,15,0,22,35,114,120,34,91,47,92,92, +93,91,46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250, +22,138,15,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42, +41,36,34,23,202,1,6,2,2,92,49,80,159,44,37,38,2,22,28,248,22, +188,6,194,248,22,147,14,194,193,87,94,28,28,248,22,139,14,23,195,2,10, +28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22,162,14, +23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248,22,161, +14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7, +2,24,23,200,1,23,201,1,247,22,23,87,94,28,28,248,22,139,14,23,195, +2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22, +162,14,23,195,2,11,12,250,22,170,9,23,196,2,2,23,23,197,2,28,248, 22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22, -172,7,2,24,2,9,23,201,2,247,22,23,249,22,3,32,0,89,162,8,44, -37,49,9,222,33,45,23,197,2,249,22,157,14,27,247,22,181,14,253,2,46, -23,199,2,201,23,203,1,23,204,1,23,199,1,11,194,32,49,89,162,44,44, -8,29,2,26,222,33,50,28,248,22,81,23,200,2,87,95,23,199,1,23,198, -1,28,23,200,2,199,87,94,23,200,1,248,23,196,1,251,22,172,7,2,25, -23,199,1,28,248,22,81,23,203,2,87,94,23,202,1,23,201,1,250,22,1, -22,157,14,23,204,1,23,205,1,23,198,1,27,249,22,157,14,248,22,74,23, -203,2,23,199,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23, -197,1,23,202,2,28,248,22,152,14,23,194,2,28,23,200,2,28,28,248,22, -151,14,249,22,157,14,23,196,2,23,203,2,10,27,28,248,22,139,14,23,202, -2,248,22,143,14,23,202,2,23,201,2,27,248,22,191,6,23,195,2,27,28, -249,22,188,3,23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199, -2,249,22,176,3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36, -249,22,176,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28, -23,193,2,248,22,151,14,249,22,157,14,23,199,2,23,196,1,11,192,27,248, -22,75,23,203,1,27,28,23,204,2,87,94,23,195,1,23,204,1,87,94,23, -204,1,23,195,1,28,248,22,81,23,195,2,87,95,23,202,1,23,194,1,28, -23,193,2,192,87,94,23,193,1,248,23,200,1,251,22,172,7,2,25,23,203, -1,28,248,22,81,23,207,2,87,94,23,206,1,23,205,1,250,22,1,22,157, -14,23,208,1,23,209,1,23,202,1,27,249,22,157,14,248,22,74,23,198,2, -23,203,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1, -23,206,2,28,248,22,152,14,23,194,2,28,23,204,2,28,28,248,22,151,14, -249,22,157,14,195,206,10,27,28,248,22,139,14,205,248,22,143,14,205,204,27, -248,22,191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130, -7,2,27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147, -7,250,22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95, -23,195,1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198, -23,196,1,11,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23,19,248, -22,75,204,28,202,202,200,192,26,8,2,49,206,23,15,23,16,23,17,23,18, -23,19,248,22,75,204,202,26,8,2,49,205,206,23,15,23,16,23,17,23,18, -248,22,75,203,201,192,27,248,22,75,23,203,1,28,248,22,81,23,194,2,87, -95,23,201,1,23,193,1,28,23,203,2,202,87,94,23,203,1,248,23,199,1, -251,22,172,7,2,25,23,202,1,28,248,22,81,23,206,2,87,94,23,205,1, -23,204,1,250,22,1,22,157,14,23,207,1,23,208,1,23,201,1,27,249,22, -157,14,248,22,74,23,197,2,23,202,2,28,248,22,152,14,23,194,2,27,250, -22,1,22,157,14,23,197,1,23,205,2,28,248,22,152,14,23,194,2,28,23, -203,2,28,28,248,22,151,14,249,22,157,14,195,205,10,27,28,248,22,139,14, -204,248,22,143,14,204,203,27,248,22,191,6,23,195,2,27,28,249,22,188,3, -23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249,22,176, -3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22,176,3, -23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248, -22,151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,205,206,23,15, -23,16,23,17,23,18,248,22,75,203,28,23,20,23,20,200,192,26,8,2,49, -205,206,23,15,23,16,23,17,23,18,248,22,75,203,23,20,26,8,2,49,204, -205,206,23,15,23,16,23,17,248,22,75,202,23,19,87,94,23,193,1,27,248, -22,75,23,202,1,28,248,22,81,23,194,2,87,95,23,200,1,23,193,1,28, -23,202,2,201,87,94,23,202,1,248,23,198,1,251,22,172,7,2,25,23,201, -1,28,248,22,81,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,157, -14,23,206,1,23,207,1,23,200,1,27,249,22,157,14,248,22,74,23,197,2, -23,201,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1, -23,204,2,28,248,22,152,14,23,194,2,28,23,202,2,28,28,248,22,151,14, -249,22,157,14,195,204,10,27,28,248,22,139,14,203,248,22,143,14,203,202,27, -248,22,191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130, -7,2,27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147, -7,250,22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95, -23,195,1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198, -23,196,1,11,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248,22,75, -203,28,23,19,23,19,200,192,26,8,2,49,204,205,206,23,15,23,16,23,17, -248,22,75,203,23,19,26,8,2,49,203,204,205,206,23,15,23,16,248,22,75, -202,23,18,27,247,22,181,14,28,248,22,81,23,194,2,87,94,23,198,1,248, -23,196,1,251,22,172,7,2,25,23,199,1,28,248,22,81,23,203,2,87,94, -23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23,198,1, -27,249,22,157,14,248,22,74,23,197,2,23,199,2,28,248,22,152,14,23,194, -2,27,250,22,1,22,157,14,23,197,1,23,202,2,28,248,22,152,14,23,194, -2,28,23,200,2,28,28,248,22,151,14,249,22,157,14,195,202,10,27,28,248, -22,139,14,201,248,22,143,14,201,200,27,248,22,191,6,23,195,2,27,28,249, +172,7,2,24,23,200,1,23,201,1,247,22,23,87,94,87,94,28,28,248,22, +139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195, +2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,195,2,23,23,197,2, +28,248,22,161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7, +250,22,172,7,2,24,199,23,201,1,247,22,23,249,22,3,89,162,8,44,37, +50,9,223,2,33,39,196,87,94,28,28,248,22,139,14,23,194,2,10,28,248, +22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194, +2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161,14,23,194, +2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2, +7,23,200,1,247,22,23,32,42,89,162,8,44,41,56,2,26,222,33,43,28, +248,22,81,23,197,2,87,94,23,196,1,28,23,197,2,196,87,94,23,197,1, +248,22,153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23, +203,2,87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205, +1,23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,200,2,23,197,2, +28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248, +22,152,14,193,192,252,2,42,199,200,201,248,22,75,203,203,252,2,42,198,199, +200,248,22,75,202,202,87,94,87,94,87,94,28,28,248,22,139,14,23,194,2, +10,28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162, +14,23,194,2,11,12,250,22,170,9,2,7,2,23,23,196,2,28,248,22,161, +14,23,194,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172,7, +2,24,2,7,23,200,2,247,22,23,249,22,3,32,0,89,162,8,44,37,49, +9,222,33,41,23,196,2,27,247,22,181,14,28,248,22,81,23,194,2,248,22, +153,12,249,22,128,12,251,22,172,7,2,25,2,7,28,248,22,81,23,203,2, +87,94,23,202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23, +200,1,247,22,23,27,249,22,157,14,248,22,74,23,197,2,23,197,2,28,248, +22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,199,28,248,22,152, +14,193,192,252,2,42,199,200,201,248,22,75,200,11,252,2,42,198,199,200,248, +22,75,199,11,87,94,28,28,248,22,139,14,23,194,2,10,28,248,22,188,6, +23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14,23,194,2,11,12, +250,22,170,9,2,9,2,23,23,196,2,28,248,22,161,14,23,194,2,12,248, +22,153,12,249,22,159,11,248,22,153,7,250,22,172,7,2,24,2,9,23,200, +1,247,22,23,32,46,89,162,8,44,42,59,2,26,222,33,47,28,248,22,81, +23,198,2,87,95,23,197,1,23,194,1,28,23,198,2,197,87,94,23,198,1, +248,22,153,12,249,22,128,12,251,22,172,7,2,25,2,9,28,248,22,81,23, +204,2,87,94,23,203,1,23,202,1,250,22,1,22,157,14,23,205,1,23,206, +1,23,200,1,247,22,23,27,249,22,157,14,248,22,74,23,201,2,23,198,2, +28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23,201,2, +28,248,22,152,14,23,194,2,28,23,196,2,28,28,248,22,151,14,249,22,157, +14,195,198,10,27,28,248,22,139,14,197,248,22,143,14,197,196,27,248,22,191, +6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7,2,27, +249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7,250,22, +146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23,195,1, +23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23,196,1, +11,192,253,2,46,200,201,202,203,248,22,75,205,28,205,205,198,192,253,2,46, +200,201,202,203,248,22,75,205,205,253,2,46,199,200,201,202,248,22,75,204,204, +87,95,87,94,28,28,248,22,139,14,193,10,28,248,22,188,6,193,28,248,22, +161,14,193,10,248,22,162,14,193,11,12,250,22,170,9,2,9,2,23,195,28, +248,22,161,14,193,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172, +7,2,24,2,9,199,247,22,23,87,94,87,94,28,28,248,22,139,14,23,195, +2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23,195,2,10,248,22, +162,14,23,195,2,11,12,250,22,170,9,2,9,2,23,23,197,2,28,248,22, +161,14,23,195,2,12,248,22,153,12,249,22,159,11,248,22,153,7,250,22,172, +7,2,24,2,9,23,201,2,247,22,23,249,22,3,32,0,89,162,8,44,37, +49,9,222,33,45,23,197,2,249,22,157,14,27,247,22,181,14,253,2,46,23, +199,2,201,23,203,1,23,204,1,23,199,1,11,194,32,49,89,162,44,44,8, +29,2,26,222,33,50,28,248,22,81,23,200,2,87,95,23,199,1,23,198,1, +28,23,200,2,199,87,94,23,200,1,248,23,196,1,251,22,172,7,2,25,23, +199,1,28,248,22,81,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22, +157,14,23,204,1,23,205,1,23,198,1,27,249,22,157,14,248,22,74,23,203, +2,23,199,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197, +1,23,202,2,28,248,22,152,14,23,194,2,28,23,200,2,28,28,248,22,151, +14,249,22,157,14,23,196,2,23,203,2,10,27,28,248,22,139,14,23,202,2, +248,22,143,14,23,202,2,23,201,2,27,248,22,191,6,23,195,2,27,28,249, 22,188,3,23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2, 249,22,176,3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249, 22,176,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23, -193,2,248,22,151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,202, -203,204,205,206,23,15,248,22,75,203,200,192,26,8,2,49,202,203,204,205,206, -23,15,248,22,75,203,11,26,8,2,49,201,202,203,204,205,206,248,22,75,202, -11,87,95,28,28,248,22,140,14,23,194,2,10,28,248,22,139,14,23,194,2, -10,28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162, -14,23,194,2,11,12,252,22,170,9,23,200,2,2,29,36,23,198,2,23,199, -2,28,28,248,22,188,6,23,195,2,10,248,22,177,7,23,195,2,87,94,23, -194,1,12,252,22,170,9,23,200,2,2,30,37,23,198,2,23,199,1,91,159, -39,11,90,161,39,36,11,248,22,160,14,23,197,2,87,94,23,195,1,87,94, -28,192,12,250,22,171,9,23,201,1,2,31,23,199,1,249,22,7,194,195,91, -159,38,11,90,161,38,36,11,87,95,28,28,248,22,140,14,23,196,2,10,28, -248,22,139,14,23,196,2,10,28,248,22,188,6,23,196,2,28,248,22,161,14, -23,196,2,10,248,22,162,14,23,196,2,11,12,252,22,170,9,2,11,2,29, -36,23,200,2,23,201,2,28,28,248,22,188,6,23,197,2,10,248,22,177,7, -23,197,2,12,252,22,170,9,2,11,2,30,37,23,200,2,23,201,2,91,159, -39,11,90,161,39,36,11,248,22,160,14,23,199,2,87,94,23,195,1,87,94, -28,192,12,250,22,171,9,2,11,2,31,23,201,2,249,22,7,194,195,27,249, -22,149,14,250,22,137,15,0,20,35,114,120,35,34,40,63,58,91,46,93,91, -94,46,93,42,124,41,36,34,248,22,145,14,23,201,1,28,248,22,188,6,23, -203,2,249,22,139,8,23,204,1,8,63,23,202,1,28,248,22,140,14,23,199, -2,248,22,141,14,23,199,1,87,94,23,198,1,247,22,142,14,28,248,22,139, -14,194,249,22,157,14,195,194,192,91,159,38,11,90,161,38,36,11,87,95,28, -28,248,22,140,14,23,196,2,10,28,248,22,139,14,23,196,2,10,28,248,22, -188,6,23,196,2,28,248,22,161,14,23,196,2,10,248,22,162,14,23,196,2, -11,12,252,22,170,9,2,12,2,29,36,23,200,2,23,201,2,28,28,248,22, -188,6,23,197,2,10,248,22,177,7,23,197,2,12,252,22,170,9,2,12,2, -30,37,23,200,2,23,201,2,91,159,39,11,90,161,39,36,11,248,22,160,14, -23,199,2,87,94,23,195,1,87,94,28,192,12,250,22,171,9,2,12,2,31, -23,201,2,249,22,7,194,195,27,249,22,149,14,249,22,189,7,250,22,138,15, -0,9,35,114,120,35,34,91,46,93,34,248,22,145,14,23,203,1,6,1,1, -95,28,248,22,188,6,23,202,2,249,22,139,8,23,203,1,8,63,23,201,1, -28,248,22,140,14,23,199,2,248,22,141,14,23,199,1,87,94,23,198,1,247, -22,142,14,28,248,22,139,14,194,249,22,157,14,195,194,192,249,247,22,153,5, -194,11,249,80,159,38,48,37,9,9,249,80,159,38,48,37,195,9,27,247,22, -183,14,249,80,158,39,49,28,23,195,2,27,248,22,144,8,6,11,11,80,76, -84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,23, -196,1,250,22,157,14,248,22,179,14,69,97,100,100,111,110,45,100,105,114,247, -22,142,8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,42,54, -37,250,22,87,23,203,1,248,22,83,248,22,179,14,72,99,111,108,108,101,99, -116,115,45,100,105,114,23,204,1,28,193,249,22,73,195,194,192,32,59,89,162, -8,44,39,8,29,2,20,222,33,61,0,8,35,114,120,35,34,92,34,34,27, -249,22,190,14,23,197,2,23,198,2,28,23,193,2,87,94,23,196,1,27,248, -22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2, -23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27, -248,22,107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2, -87,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27, -249,22,190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248, -22,98,23,195,2,27,250,2,59,23,211,2,23,212,1,248,22,107,23,199,1, -28,249,22,185,7,23,196,2,2,32,249,22,87,23,210,2,194,249,22,73,248, +193,2,248,22,151,14,249,22,157,14,23,199,2,23,196,1,11,192,27,248,22, +75,23,203,1,27,28,23,204,2,87,94,23,195,1,23,204,1,87,94,23,204, +1,23,195,1,28,248,22,81,23,195,2,87,95,23,202,1,23,194,1,28,23, +193,2,192,87,94,23,193,1,248,23,200,1,251,22,172,7,2,25,23,203,1, +28,248,22,81,23,207,2,87,94,23,206,1,23,205,1,250,22,1,22,157,14, +23,208,1,23,209,1,23,202,1,27,249,22,157,14,248,22,74,23,198,2,23, +203,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23, +206,2,28,248,22,152,14,23,194,2,28,23,204,2,28,28,248,22,151,14,249, +22,157,14,195,206,10,27,28,248,22,139,14,205,248,22,143,14,205,204,27,248, +22,191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7, +2,27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7, +250,22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23, +195,1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23, +196,1,11,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23,19,248,22, +75,204,28,202,202,200,192,26,8,2,49,206,23,15,23,16,23,17,23,18,23, +19,248,22,75,204,202,26,8,2,49,205,206,23,15,23,16,23,17,23,18,248, +22,75,203,201,192,27,248,22,75,23,203,1,28,248,22,81,23,194,2,87,95, +23,201,1,23,193,1,28,23,203,2,202,87,94,23,203,1,248,23,199,1,251, +22,172,7,2,25,23,202,1,28,248,22,81,23,206,2,87,94,23,205,1,23, +204,1,250,22,1,22,157,14,23,207,1,23,208,1,23,201,1,27,249,22,157, +14,248,22,74,23,197,2,23,202,2,28,248,22,152,14,23,194,2,27,250,22, +1,22,157,14,23,197,1,23,205,2,28,248,22,152,14,23,194,2,28,23,203, +2,28,28,248,22,151,14,249,22,157,14,195,205,10,27,28,248,22,139,14,204, +248,22,143,14,204,203,27,248,22,191,6,23,195,2,27,28,249,22,188,3,23, +196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249,22,176,3, +23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22,176,3,23, +201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22, +151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,205,206,23,15,23, +16,23,17,23,18,248,22,75,203,28,23,20,23,20,200,192,26,8,2,49,205, +206,23,15,23,16,23,17,23,18,248,22,75,203,23,20,26,8,2,49,204,205, +206,23,15,23,16,23,17,248,22,75,202,23,19,87,94,23,193,1,27,248,22, +75,23,202,1,28,248,22,81,23,194,2,87,95,23,200,1,23,193,1,28,23, +202,2,201,87,94,23,202,1,248,23,198,1,251,22,172,7,2,25,23,201,1, +28,248,22,81,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,157,14, +23,206,1,23,207,1,23,200,1,27,249,22,157,14,248,22,74,23,197,2,23, +201,2,28,248,22,152,14,23,194,2,27,250,22,1,22,157,14,23,197,1,23, +204,2,28,248,22,152,14,23,194,2,28,23,202,2,28,28,248,22,151,14,249, +22,157,14,195,204,10,27,28,248,22,139,14,203,248,22,143,14,203,202,27,248, +22,191,6,23,195,2,27,28,249,22,188,3,23,196,2,40,28,249,22,130,7, +2,27,249,22,146,7,23,199,2,249,22,176,3,23,200,2,40,249,22,147,7, +250,22,146,7,23,200,1,36,249,22,176,3,23,201,1,40,2,28,87,95,23, +195,1,23,194,1,11,11,28,23,193,2,248,22,151,14,249,22,157,14,198,23, +196,1,11,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248,22,75,203, +28,23,19,23,19,200,192,26,8,2,49,204,205,206,23,15,23,16,23,17,248, +22,75,203,23,19,26,8,2,49,203,204,205,206,23,15,23,16,248,22,75,202, +23,18,27,247,22,181,14,28,248,22,81,23,194,2,87,94,23,198,1,248,23, +196,1,251,22,172,7,2,25,23,199,1,28,248,22,81,23,203,2,87,94,23, +202,1,23,201,1,250,22,1,22,157,14,23,204,1,23,205,1,23,198,1,27, +249,22,157,14,248,22,74,23,197,2,23,199,2,28,248,22,152,14,23,194,2, +27,250,22,1,22,157,14,23,197,1,23,202,2,28,248,22,152,14,23,194,2, +28,23,200,2,28,28,248,22,151,14,249,22,157,14,195,202,10,27,28,248,22, +139,14,201,248,22,143,14,201,200,27,248,22,191,6,23,195,2,27,28,249,22, +188,3,23,196,2,40,28,249,22,130,7,2,27,249,22,146,7,23,199,2,249, +22,176,3,23,200,2,40,249,22,147,7,250,22,146,7,23,200,1,36,249,22, +176,3,23,201,1,40,2,28,87,95,23,195,1,23,194,1,11,11,28,23,193, +2,248,22,151,14,249,22,157,14,198,23,196,1,11,192,26,8,2,49,202,203, +204,205,206,23,15,248,22,75,203,200,192,26,8,2,49,202,203,204,205,206,23, +15,248,22,75,203,11,26,8,2,49,201,202,203,204,205,206,248,22,75,202,11, +87,95,28,28,248,22,140,14,23,194,2,10,28,248,22,139,14,23,194,2,10, +28,248,22,188,6,23,194,2,28,248,22,161,14,23,194,2,10,248,22,162,14, +23,194,2,11,12,252,22,170,9,23,200,2,2,29,36,23,198,2,23,199,2, +28,28,248,22,188,6,23,195,2,10,248,22,177,7,23,195,2,87,94,23,194, +1,12,252,22,170,9,23,200,2,2,30,37,23,198,2,23,199,1,91,159,39, +11,90,161,39,36,11,248,22,160,14,23,197,2,87,94,23,195,1,87,94,28, +192,12,250,22,171,9,23,201,1,2,31,23,199,1,249,22,7,194,195,91,159, +38,11,90,161,38,36,11,87,95,28,28,248,22,140,14,23,196,2,10,28,248, +22,139,14,23,196,2,10,28,248,22,188,6,23,196,2,28,248,22,161,14,23, +196,2,10,248,22,162,14,23,196,2,11,12,252,22,170,9,2,11,2,29,36, +23,200,2,23,201,2,28,28,248,22,188,6,23,197,2,10,248,22,177,7,23, +197,2,12,252,22,170,9,2,11,2,30,37,23,200,2,23,201,2,91,159,39, +11,90,161,39,36,11,248,22,160,14,23,199,2,87,94,23,195,1,87,94,28, +192,12,250,22,171,9,2,11,2,31,23,201,2,249,22,7,194,195,27,249,22, +149,14,250,22,137,15,0,20,35,114,120,35,34,40,63,58,91,46,93,91,94, +46,93,42,124,41,36,34,248,22,145,14,23,201,1,28,248,22,188,6,23,203, +2,249,22,139,8,23,204,1,8,63,23,202,1,28,248,22,140,14,23,199,2, +248,22,141,14,23,199,1,87,94,23,198,1,247,22,142,14,28,248,22,139,14, +194,249,22,157,14,195,194,192,91,159,38,11,90,161,38,36,11,87,95,28,28, +248,22,140,14,23,196,2,10,28,248,22,139,14,23,196,2,10,28,248,22,188, +6,23,196,2,28,248,22,161,14,23,196,2,10,248,22,162,14,23,196,2,11, +12,252,22,170,9,2,12,2,29,36,23,200,2,23,201,2,28,28,248,22,188, +6,23,197,2,10,248,22,177,7,23,197,2,12,252,22,170,9,2,12,2,30, +37,23,200,2,23,201,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23, +199,2,87,94,23,195,1,87,94,28,192,12,250,22,171,9,2,12,2,31,23, +201,2,249,22,7,194,195,27,249,22,149,14,249,22,189,7,250,22,138,15,0, +9,35,114,120,35,34,91,46,93,34,248,22,145,14,23,203,1,6,1,1,95, +28,248,22,188,6,23,202,2,249,22,139,8,23,203,1,8,63,23,201,1,28, +248,22,140,14,23,199,2,248,22,141,14,23,199,1,87,94,23,198,1,247,22, +142,14,28,248,22,139,14,194,249,22,157,14,195,194,192,249,247,22,153,5,194, +11,249,80,159,38,48,37,9,9,249,80,159,38,48,37,195,9,27,247,22,183, +14,249,80,158,39,49,28,23,195,2,27,248,22,144,8,6,11,11,80,76,84, +67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27,28,23,196, +1,250,22,157,14,248,22,179,14,69,97,100,100,111,110,45,100,105,114,247,22, +142,8,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159,42,54,37, +250,22,87,23,203,1,248,22,83,248,22,179,14,72,99,111,108,108,101,99,116, +115,45,100,105,114,23,204,1,28,193,249,22,73,195,194,192,32,59,89,162,8, +44,39,8,29,2,20,222,33,61,0,8,35,114,120,35,34,92,34,34,27,249, +22,190,14,23,197,2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22, +98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2,23, +196,2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27,248, +22,107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2,87, +94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, +22,190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22, +98,23,195,2,27,250,2,59,23,211,2,23,212,1,248,22,107,23,199,1,28, +249,22,185,7,23,196,2,2,32,249,22,87,23,210,2,194,249,22,73,248,22, +148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200, +1,2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7,23, +196,2,2,32,249,22,87,23,208,2,9,249,22,73,248,22,148,14,28,249,22, +134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, +1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,206,2,194,249,22, +73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, +60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, +196,2,2,32,249,22,87,23,204,2,9,249,22,73,248,22,148,14,28,249,22, +134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, +1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,202,2,194,249,22, +73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, +60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, +196,2,2,32,249,22,87,23,200,2,9,249,22,73,248,22,148,14,28,249,22, +134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, +1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,197,194,87,94,23,196, +1,249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22, +138,15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22, +185,7,23,198,2,2,32,249,22,87,195,9,87,94,23,194,1,249,22,73,248, 22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23, -200,1,2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7, -23,196,2,2,32,249,22,87,23,208,2,9,249,22,73,248,22,148,14,28,249, -22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23, -197,1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,206,2,194,249, -22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15, -2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7, -23,196,2,2,32,249,22,87,23,204,2,9,249,22,73,248,22,148,14,28,249, -22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23, -197,1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,202,2,194,249, -22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15, -2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7, -23,196,2,2,32,249,22,87,23,200,2,9,249,22,73,248,22,148,14,28,249, -22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23, -197,1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,197,194,87,94,23, -196,1,249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250, -22,138,15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249, -22,185,7,23,198,2,2,32,249,22,87,195,9,87,94,23,194,1,249,22,73, -248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60, -23,202,1,2,33,23,199,1,9,87,95,28,28,248,22,177,7,23,195,2,10, -248,22,188,6,23,195,2,12,250,22,170,9,2,15,6,21,21,98,121,116,101, -32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,23,197,2,28, -28,248,22,82,23,196,2,249,22,4,22,139,14,23,197,2,11,12,250,22,170, -9,2,15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,23,198, -2,27,28,248,22,188,6,23,196,2,248,22,138,8,23,196,1,23,195,1,27, -249,22,190,14,23,197,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248, -22,98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2, -23,196,2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27, -248,22,107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2, -87,94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27, -249,22,190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248, -22,98,23,195,2,27,250,2,59,23,214,2,23,212,1,248,22,107,23,199,1, -28,249,22,185,7,23,196,2,2,32,249,22,87,23,213,2,194,249,22,73,248, +202,1,2,33,23,199,1,9,87,95,28,28,248,22,177,7,23,195,2,10,248, +22,188,6,23,195,2,12,250,22,170,9,2,15,6,21,21,98,121,116,101,32, +115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103,23,197,2,28,28, +248,22,82,23,196,2,249,22,4,22,139,14,23,197,2,11,12,250,22,170,9, +2,15,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,23,198,2, +27,28,248,22,188,6,23,196,2,248,22,138,8,23,196,1,23,195,1,27,249, +22,190,14,23,197,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22, +98,23,195,2,27,27,248,22,107,23,197,1,27,249,22,190,14,23,201,2,23, +196,2,28,23,193,2,87,94,23,194,1,27,248,22,98,23,195,2,27,27,248, +22,107,23,197,1,27,249,22,190,14,23,205,2,23,196,2,28,23,193,2,87, +94,23,194,1,27,248,22,98,23,195,2,27,27,248,22,107,23,197,1,27,249, +22,190,14,23,209,2,23,196,2,28,23,193,2,87,94,23,194,1,27,248,22, +98,23,195,2,27,250,2,59,23,214,2,23,212,1,248,22,107,23,199,1,28, +249,22,185,7,23,196,2,2,32,249,22,87,23,213,2,194,249,22,73,248,22, +148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200, +1,2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7,23, +196,2,2,32,249,22,87,23,211,2,9,249,22,73,248,22,148,14,28,249,22, +134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, +1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,209,2,194,249,22, +73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, +60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, +196,2,2,32,249,22,87,23,207,2,9,249,22,73,248,22,148,14,28,249,22, +134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, +1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,205,2,194,249,22, +73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2, +60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7,23, +196,2,2,32,249,22,87,23,203,2,9,249,22,73,248,22,148,14,28,249,22, +134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23,197, +1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,200,194,87,94,23,199, +1,249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22, +138,15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22, +185,7,23,196,2,2,32,249,22,87,198,9,87,94,23,197,1,249,22,73,248, 22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23, -200,1,2,33,23,197,1,194,87,95,23,207,1,23,193,1,28,249,22,185,7, -23,196,2,2,32,249,22,87,23,211,2,9,249,22,73,248,22,148,14,28,249, -22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23, -197,1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,209,2,194,249, -22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15, -2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7, -23,196,2,2,32,249,22,87,23,207,2,9,249,22,73,248,22,148,14,28,249, -22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23, -197,1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,23,205,2,194,249, -22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15, -2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249,22,185,7, -23,196,2,2,32,249,22,87,23,203,2,9,249,22,73,248,22,148,14,28,249, -22,134,9,247,22,146,8,2,22,250,22,138,15,2,60,23,200,1,2,33,23, -197,1,9,28,249,22,185,7,23,196,2,2,32,249,22,87,200,194,87,94,23, -199,1,249,22,73,248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250, -22,138,15,2,60,23,200,1,2,33,23,197,1,194,87,94,23,193,1,28,249, -22,185,7,23,196,2,2,32,249,22,87,198,9,87,94,23,197,1,249,22,73, -248,22,148,14,28,249,22,134,9,247,22,146,8,2,22,250,22,138,15,2,60, -23,200,1,2,33,23,197,1,9,32,63,89,162,8,44,39,53,70,102,111,117, -110,100,45,101,120,101,99,222,33,66,32,64,89,162,8,44,40,58,64,110,101, -120,116,222,33,65,27,248,22,165,14,23,196,2,28,249,22,136,9,23,195,2, -23,197,1,11,28,248,22,161,14,23,194,2,27,249,22,157,14,23,197,1,23, -196,1,28,23,197,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197, -2,87,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,165,14,23,199, -2,28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23,194,2, -250,2,63,23,205,2,23,206,2,249,22,157,14,23,200,2,23,198,1,250,2, -63,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1, -27,28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,205,2,28, -28,248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2,192,87, -94,23,193,1,28,23,203,2,11,27,248,22,165,14,23,200,2,28,249,22,136, -9,23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63,23,206, -1,23,207,1,249,22,157,14,23,201,1,23,198,1,250,2,63,205,206,195,192, -87,94,23,194,1,28,23,196,2,91,159,39,11,90,161,39,36,11,248,22,160, -14,23,197,2,87,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,165, -14,23,199,2,28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14, -23,194,2,250,2,63,23,204,2,23,205,2,249,22,157,14,23,200,2,23,198, -1,250,2,63,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,87,94, -23,193,1,27,28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23, -204,2,28,28,248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193, -2,192,87,94,23,193,1,28,23,202,2,11,27,248,22,165,14,23,200,2,28, -249,22,136,9,23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2, -63,23,205,1,23,206,1,249,22,157,14,23,201,1,23,198,1,250,2,63,204, -205,195,192,28,23,193,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23, -199,2,87,95,23,195,1,23,194,1,27,28,23,198,2,251,2,64,23,198,2, -23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,87,94,23,193,1,27, -28,248,22,139,14,195,27,249,22,157,14,197,200,28,28,248,22,152,14,193,10, -248,22,151,14,193,192,11,11,28,192,192,28,198,11,251,2,64,198,203,201,202, -194,32,67,89,162,8,44,40,8,31,2,20,222,33,68,28,248,22,81,23,197, -2,11,27,248,22,164,14,248,22,74,23,199,2,27,249,22,157,14,23,196,1, -23,197,2,28,248,22,151,14,23,194,2,250,2,63,198,199,195,87,94,23,193, -1,27,248,22,75,23,200,1,28,248,22,81,23,194,2,11,27,248,22,164,14, -248,22,74,23,196,2,27,249,22,157,14,23,196,1,23,200,2,28,248,22,151, -14,23,194,2,250,2,63,201,202,195,87,94,23,193,1,27,248,22,75,23,197, -1,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,23,196,2,27, -249,22,157,14,23,196,1,23,203,2,28,248,22,151,14,23,194,2,250,2,63, -204,205,195,87,94,23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194, -2,11,27,248,22,164,14,248,22,74,23,196,2,27,249,22,157,14,23,196,1, -23,206,2,28,248,22,151,14,23,194,2,250,2,63,23,15,23,16,195,87,94, -23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22, -164,14,248,22,74,23,196,2,27,249,22,157,14,23,196,1,23,209,2,28,248, -22,151,14,23,194,2,250,2,63,23,18,23,19,195,87,94,23,193,1,27,248, -22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74, -195,27,249,22,157,14,23,196,1,23,19,28,248,22,151,14,193,250,2,63,23, -21,23,22,195,251,2,67,23,21,23,22,23,23,248,22,75,199,87,95,28,28, -248,22,139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14, -23,195,2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,2,16,6,25, -25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115, -32,110,117,108,41,23,197,2,28,28,23,195,2,28,28,248,22,139,14,23,196, -2,10,28,248,22,188,6,23,196,2,28,248,22,161,14,23,196,2,10,248,22, -162,14,23,196,2,11,248,22,161,14,23,196,2,11,10,12,250,22,170,9,2, -16,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97, -116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,161,14, -23,195,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,198,2,249,22, -134,9,194,68,114,101,108,97,116,105,118,101,11,27,248,22,144,8,6,4,4, -80,65,84,72,27,28,23,194,2,27,249,80,159,41,49,38,23,197,1,9,28, -249,22,134,9,247,22,146,8,2,22,249,22,73,248,22,148,14,5,1,46,194, -192,87,94,23,194,1,9,28,248,22,81,23,194,2,11,27,248,22,164,14,248, +200,1,2,33,23,197,1,9,32,63,89,162,8,44,39,53,70,102,111,117,110, +100,45,101,120,101,99,222,33,66,32,64,89,162,8,44,40,58,64,110,101,120, +116,222,33,65,27,248,22,165,14,23,196,2,28,249,22,136,9,23,195,2,23, +197,1,11,28,248,22,161,14,23,194,2,27,249,22,157,14,23,197,1,23,196, +1,28,23,197,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197,2, +87,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,165,14,23,199,2, +28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23,194,2,250, +2,63,23,205,2,23,206,2,249,22,157,14,23,200,2,23,198,1,250,2,63, +23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,27, +28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,205,2,28,28, +248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2,192,87,94, +23,193,1,28,23,203,2,11,27,248,22,165,14,23,200,2,28,249,22,136,9, +23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63,23,206,1, +23,207,1,249,22,157,14,23,201,1,23,198,1,250,2,63,205,206,195,192,87, +94,23,194,1,28,23,196,2,91,159,39,11,90,161,39,36,11,248,22,160,14, +23,197,2,87,95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,165,14, +23,199,2,28,249,22,136,9,23,195,2,23,200,2,11,28,248,22,161,14,23, +194,2,250,2,63,23,204,2,23,205,2,249,22,157,14,23,200,2,23,198,1, +250,2,63,23,204,2,23,205,2,23,196,1,11,28,23,193,2,192,87,94,23, +193,1,27,28,248,22,139,14,23,196,2,27,249,22,157,14,23,198,2,23,204, +2,28,28,248,22,152,14,193,10,248,22,151,14,193,192,11,11,28,23,193,2, +192,87,94,23,193,1,28,23,202,2,11,27,248,22,165,14,23,200,2,28,249, +22,136,9,23,195,2,23,201,1,11,28,248,22,161,14,23,194,2,250,2,63, +23,205,1,23,206,1,249,22,157,14,23,201,1,23,198,1,250,2,63,204,205, +195,192,28,23,193,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,199, +2,87,95,23,195,1,23,194,1,27,28,23,198,2,251,2,64,23,198,2,23, +203,2,23,201,2,23,202,2,11,28,23,193,2,192,87,94,23,193,1,27,28, +248,22,139,14,195,27,249,22,157,14,197,200,28,28,248,22,152,14,193,10,248, +22,151,14,193,192,11,11,28,192,192,28,198,11,251,2,64,198,203,201,202,194, +32,67,89,162,8,44,40,8,31,2,20,222,33,68,28,248,22,81,23,197,2, +11,27,248,22,164,14,248,22,74,23,199,2,27,249,22,157,14,23,196,1,23, +197,2,28,248,22,151,14,23,194,2,250,2,63,198,199,195,87,94,23,193,1, +27,248,22,75,23,200,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248, 22,74,23,196,2,27,249,22,157,14,23,196,1,23,200,2,28,248,22,151,14, 23,194,2,250,2,63,201,202,195,87,94,23,193,1,27,248,22,75,23,197,1, 28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,23,196,2,27,249, 22,157,14,23,196,1,23,203,2,28,248,22,151,14,23,194,2,250,2,63,204, 205,195,87,94,23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2, -11,27,248,22,164,14,248,22,74,195,27,249,22,157,14,23,196,1,205,28,248, -22,151,14,193,250,2,63,23,15,23,16,195,251,2,67,23,15,23,16,23,17, -248,22,75,199,27,248,22,164,14,23,196,1,28,248,22,151,14,193,250,2,63, -198,199,195,11,250,80,159,39,50,37,196,197,11,250,80,159,39,50,37,196,11, -11,87,94,249,22,177,6,247,22,149,5,195,248,22,139,6,249,22,128,4,36, -249,22,176,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197, -1,87,94,23,197,1,27,248,22,179,14,2,21,27,249,80,159,41,50,37,23, -196,1,11,27,248,22,131,4,23,199,1,27,28,23,194,2,23,194,1,87,94, -23,194,1,36,27,248,22,131,4,23,202,1,27,28,23,194,2,23,194,1,87, -94,23,194,1,36,249,22,180,5,23,199,1,83,158,40,20,100,95,89,162,8, -44,36,48,9,224,4,2,33,72,23,195,1,23,197,1,27,248,22,165,5,23, -195,1,248,80,159,39,55,37,193,159,36,20,105,159,36,16,1,11,16,0,83, -158,42,20,103,145,2,1,2,1,29,11,11,11,11,11,10,43,80,158,36,36, -20,105,159,38,16,18,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,30,2,19,1, -20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121, -4,30,2,19,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,3,16,0,16,0,36,16,0,36,16,4,2,6, -2,5,2,3,2,10,40,11,11,39,36,11,11,11,16,12,2,9,2,7,2, -17,2,8,2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,16,12, -11,11,11,11,11,11,11,11,11,11,11,11,16,12,2,9,2,7,2,17,2, -8,2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,48,48,37,11, -11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36, -36,16,0,16,18,83,158,36,16,2,89,162,8,44,37,51,2,20,223,0,33, -34,80,159,36,55,37,83,158,36,16,2,89,162,8,44,37,56,2,20,223,0, -33,35,80,159,36,54,37,83,158,36,16,2,32,0,89,162,44,37,45,2,2, -222,33,36,80,159,36,36,37,83,158,36,16,2,249,22,190,6,7,92,7,92, -80,159,36,37,37,83,158,36,16,2,89,162,44,37,54,2,4,223,0,33,37, -80,159,36,38,37,83,158,36,16,2,32,0,89,162,8,44,38,50,2,5,222, -33,38,80,159,36,39,37,83,158,36,16,2,32,0,89,162,8,44,39,51,2, -6,222,33,40,80,159,36,40,37,83,158,36,16,2,32,0,89,162,8,45,38, -54,2,7,222,33,44,80,159,36,41,37,83,158,36,16,2,32,0,89,162,45, -39,53,2,9,222,33,48,80,159,36,43,37,83,158,36,16,2,32,0,89,162, -44,41,59,2,8,222,33,51,80,159,36,42,37,83,158,36,16,2,32,0,89, -162,44,39,50,2,10,222,33,52,80,159,36,44,37,83,158,36,16,2,32,0, -89,162,44,38,53,2,11,222,33,53,80,159,36,45,37,83,158,36,16,2,32, -0,89,162,44,38,54,2,12,222,33,54,80,159,36,46,37,83,158,36,16,2, -32,0,89,162,44,37,44,2,13,222,33,55,80,159,36,47,37,83,158,36,16, -2,83,158,39,20,99,96,2,14,89,162,44,36,44,9,223,0,33,56,89,162, -44,37,45,9,223,0,33,57,89,162,44,38,55,9,223,0,33,58,80,159,36, -48,37,83,158,36,16,2,27,248,22,186,14,248,22,138,8,27,28,249,22,134, -9,247,22,146,8,2,22,6,1,1,59,6,1,1,58,250,22,172,7,6,14, -14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1, -89,162,8,44,38,8,30,2,15,223,0,33,62,80,159,36,49,37,83,158,36, -16,2,83,158,39,20,99,96,2,16,89,162,8,44,39,8,24,9,223,0,33, -69,89,162,44,38,47,9,223,0,33,70,89,162,44,37,46,9,223,0,33,71, -80,159,36,50,37,83,158,36,16,2,89,162,8,44,39,54,2,17,223,0,33, -73,80,159,36,51,37,94,29,94,2,18,68,35,37,107,101,114,110,101,108,11, -29,94,2,18,69,35,37,109,105,110,45,115,116,120,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 8818); +11,27,248,22,164,14,248,22,74,23,196,2,27,249,22,157,14,23,196,1,23, +206,2,28,248,22,151,14,23,194,2,250,2,63,23,15,23,16,195,87,94,23, +193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,164, +14,248,22,74,23,196,2,27,249,22,157,14,23,196,1,23,209,2,28,248,22, +151,14,23,194,2,250,2,63,23,18,23,19,195,87,94,23,193,1,27,248,22, +75,23,197,1,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,195, +27,249,22,157,14,23,196,1,23,19,28,248,22,151,14,193,250,2,63,23,21, +23,22,195,251,2,67,23,21,23,22,23,23,248,22,75,199,87,95,28,28,248, +22,139,14,23,195,2,10,28,248,22,188,6,23,195,2,28,248,22,161,14,23, +195,2,10,248,22,162,14,23,195,2,11,12,250,22,170,9,2,16,6,25,25, +112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32, +110,117,108,41,23,197,2,28,28,23,195,2,28,28,248,22,139,14,23,196,2, +10,28,248,22,188,6,23,196,2,28,248,22,161,14,23,196,2,10,248,22,162, +14,23,196,2,11,248,22,161,14,23,196,2,11,10,12,250,22,170,9,2,16, +6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97,116, +104,32,111,114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,161,14,23, +195,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,198,2,249,22,134, +9,194,68,114,101,108,97,116,105,118,101,11,27,248,22,144,8,6,4,4,80, +65,84,72,27,28,23,194,2,27,249,80,159,41,49,38,23,197,1,9,28,249, +22,134,9,247,22,146,8,2,22,249,22,73,248,22,148,14,5,1,46,194,192, +87,94,23,194,1,9,28,248,22,81,23,194,2,11,27,248,22,164,14,248,22, +74,23,196,2,27,249,22,157,14,23,196,1,23,200,2,28,248,22,151,14,23, +194,2,250,2,63,201,202,195,87,94,23,193,1,27,248,22,75,23,197,1,28, +248,22,81,23,194,2,11,27,248,22,164,14,248,22,74,23,196,2,27,249,22, +157,14,23,196,1,23,203,2,28,248,22,151,14,23,194,2,250,2,63,204,205, +195,87,94,23,193,1,27,248,22,75,23,197,1,28,248,22,81,23,194,2,11, +27,248,22,164,14,248,22,74,195,27,249,22,157,14,23,196,1,205,28,248,22, +151,14,193,250,2,63,23,15,23,16,195,251,2,67,23,15,23,16,23,17,248, +22,75,199,27,248,22,164,14,23,196,1,28,248,22,151,14,193,250,2,63,198, +199,195,11,250,80,159,39,50,37,196,197,11,250,80,159,39,50,37,196,11,11, +87,94,249,22,177,6,247,22,149,5,195,248,22,139,6,249,22,128,4,36,249, +22,176,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195,1,23,197,1, +87,94,23,197,1,27,248,22,179,14,2,21,27,249,80,159,41,50,37,23,196, +1,11,27,248,22,131,4,23,199,1,27,28,23,194,2,23,194,1,87,94,23, +194,1,36,27,248,22,131,4,23,202,1,27,28,23,194,2,23,194,1,87,94, +23,194,1,36,249,22,180,5,23,199,1,83,158,40,20,100,95,89,162,8,44, +36,48,9,224,4,2,33,72,23,195,1,23,197,1,27,248,22,165,5,23,195, +1,248,80,159,39,55,37,193,159,36,20,105,159,36,16,1,11,16,0,83,158, +42,20,103,145,2,1,2,1,29,11,11,11,11,11,10,43,80,158,36,36,20, +105,159,38,16,18,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,30,2,19,1,20, +112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,5, +30,2,19,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,3,16,0,16,0,36,16,0,36,16,4,2,6,2, +5,2,3,2,10,40,11,11,39,36,11,11,11,16,12,2,9,2,7,2,17, +2,8,2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,16,12,11, +11,11,11,11,11,11,11,11,11,11,11,16,12,2,9,2,7,2,17,2,8, +2,16,2,14,2,13,2,4,2,12,2,15,2,11,2,2,48,48,37,11,11, +11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36, +16,0,16,18,83,158,36,16,2,89,162,8,44,37,51,2,20,223,0,33,34, +80,159,36,55,37,83,158,36,16,2,89,162,8,44,37,56,2,20,223,0,33, +35,80,159,36,54,37,83,158,36,16,2,32,0,89,162,44,37,45,2,2,222, +33,36,80,159,36,36,37,83,158,36,16,2,249,22,190,6,7,92,7,92,80, +159,36,37,37,83,158,36,16,2,89,162,44,37,54,2,4,223,0,33,37,80, +159,36,38,37,83,158,36,16,2,32,0,89,162,8,44,38,50,2,5,222,33, +38,80,159,36,39,37,83,158,36,16,2,32,0,89,162,8,44,39,51,2,6, +222,33,40,80,159,36,40,37,83,158,36,16,2,32,0,89,162,8,45,38,54, +2,7,222,33,44,80,159,36,41,37,83,158,36,16,2,32,0,89,162,45,39, +53,2,9,222,33,48,80,159,36,43,37,83,158,36,16,2,32,0,89,162,44, +41,59,2,8,222,33,51,80,159,36,42,37,83,158,36,16,2,32,0,89,162, +44,39,50,2,10,222,33,52,80,159,36,44,37,83,158,36,16,2,32,0,89, +162,44,38,53,2,11,222,33,53,80,159,36,45,37,83,158,36,16,2,32,0, +89,162,44,38,54,2,12,222,33,54,80,159,36,46,37,83,158,36,16,2,32, +0,89,162,44,37,44,2,13,222,33,55,80,159,36,47,37,83,158,36,16,2, +83,158,39,20,99,96,2,14,89,162,44,36,44,9,223,0,33,56,89,162,44, +37,45,9,223,0,33,57,89,162,44,38,55,9,223,0,33,58,80,159,36,48, +37,83,158,36,16,2,27,248,22,186,14,248,22,138,8,27,28,249,22,134,9, +247,22,146,8,2,22,6,1,1,59,6,1,1,58,250,22,172,7,6,14,14, +40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89, +162,8,44,38,8,30,2,15,223,0,33,62,80,159,36,49,37,83,158,36,16, +2,83,158,39,20,99,96,2,16,89,162,8,44,39,8,24,9,223,0,33,69, +89,162,44,38,47,9,223,0,33,70,89,162,44,37,46,9,223,0,33,71,80, +159,36,50,37,83,158,36,16,2,89,162,8,44,39,54,2,17,223,0,33,73, +80,159,36,51,37,94,29,94,2,18,68,35,37,107,101,114,110,101,108,11,29, +94,2,18,69,35,37,109,105,110,45,115,116,120,11,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8817); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,48,46,57,57,46,56,9,0,0,0,1,0,0,10,0,16, -0,29,0,44,0,58,0,72,0,86,0,128,0,0,0,57,1,0,0,69,35, -37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2,67,35,37, -117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111,114,107,11, -29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2,68,35,37, -101,120,112,111,98,115,11,29,94,2,2,68,35,37,107,101,114,110,101,108,11, -97,36,11,8,240,227,82,0,0,98,159,2,3,36,36,159,2,4,36,36,159, -2,5,36,36,159,2,6,36,36,159,2,7,36,36,159,2,7,36,36,16,0, -159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1, -29,11,11,11,11,11,18,96,11,44,44,44,36,80,158,36,36,20,105,159,36, -16,0,16,0,16,0,36,16,0,36,16,0,36,11,11,39,36,11,11,11,16, -0,16,0,16,0,36,36,37,11,11,11,16,0,16,0,16,0,36,36,11,11, -11,11,16,0,16,0,16,0,36,36,16,0,16,0,102,2,7,2,6,29,94, -2,2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68,35,37,117, -110,115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110,117,109,11, -2,5,2,4,2,3,29,94,2,2,67,35,37,112,108,97,99,101,11,29,94, -2,2,69,35,37,102,117,116,117,114,101,115,11,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 353); + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,50,12,0,0,0,1,0,0,15,0,40,0, +57,0,75,0,97,0,120,0,140,0,162,0,169,0,176,0,183,0,0,0,183, +1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,1,23,115, +116,114,117,99,116,58,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101, +108,76,84,72,45,112,108,97,99,101,45,99,104,97,110,110,101,108,77,84,72, +45,112,108,97,99,101,45,99,104,97,110,110,101,108,63,1,20,84,72,45,112, +108,97,99,101,45,99,104,97,110,110,101,108,45,114,101,102,1,21,84,72,45, +112,108,97,99,101,45,99,104,97,110,110,101,108,45,115,101,116,33,79,84,72, +45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,105,110,1,20,84,72, +45,112,108,97,99,101,45,99,104,97,110,110,101,108,45,111,117,116,249,80,158, +38,39,195,36,249,80,158,38,39,195,36,249,80,158,38,39,195,37,159,36,20, +105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11, +11,11,11,10,45,80,158,36,36,20,105,159,36,16,7,2,2,2,3,2,4, +2,5,2,6,2,7,2,8,16,0,16,0,36,16,0,36,16,2,2,5,2, +6,38,11,11,39,36,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2, +16,5,11,11,11,11,11,16,5,2,3,2,7,2,8,2,4,2,2,41,41, +37,11,11,11,16,0,16,0,16,0,36,36,11,11,11,11,16,0,16,0,16, +0,36,36,16,0,16,2,83,158,36,16,6,253,22,167,10,2,3,11,38,36, +11,248,22,83,249,22,73,22,158,10,89,162,44,37,45,9,223,9,33,9,80, +159,36,36,37,80,159,36,37,37,80,159,36,38,37,80,159,36,39,37,80,159, +36,40,37,83,158,36,16,3,249,22,7,89,162,44,37,45,9,223,2,33,10, +89,162,44,37,45,9,223,2,33,11,80,159,36,41,37,80,159,36,42,37,93, +29,94,65,113,117,111,116,101,68,35,37,107,101,114,110,101,108,11,9,9,9, +36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 484); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,48,46,57,57,46,56,74,0,0,0,1,0,0,7,0,18, -0,45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0, -200,0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65, -1,70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1, -166,1,196,1,226,1,27,2,84,2,132,2,180,2,110,8,129,8,142,8,44, -9,57,9,243,10,81,13,204,13,210,13,224,13,237,13,79,15,92,15,211,15, -224,15,66,17,79,17,198,17,225,17,238,17,251,17,93,19,106,19,225,19,238, -19,101,20,109,20,196,20,198,20,11,21,57,29,109,29,132,29,0,0,38,32, -0,0,66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,1, -25,100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109, -112,105,108,101,100,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105, -108,115,11,68,35,37,112,97,114,97,109,122,29,94,2,4,2,6,11,1,20, -112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1, -20,100,101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100, -1,24,45,109,111,100,117,108,101,45,104,97,115,104,45,116,97,98,108,101,45, -116,97,98,108,101,71,45,112,97,116,104,45,99,97,99,104,101,77,45,108,111, -97,100,105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97,100,105, -110,103,45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118,45,114, -101,108,116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114,1, -21,115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110, -103,71,111,114,105,103,45,112,97,114,97,109,122,1,29,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,29,94,2,4,2,6,11,64,98,111,111,116,64,115,101,97,108,64,115, -97,109,101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118, -101,64,108,111,111,112,63,108,105,98,6,3,3,46,115,115,6,4,4,46,114, -107,116,5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80, -159,38,46,38,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23, -198,1,2,23,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23, -198,1,2,24,252,22,157,14,23,199,1,23,201,1,2,25,247,22,147,8,249, -80,159,45,39,38,23,200,1,80,159,45,36,38,252,22,157,14,23,199,1,23, -201,1,2,25,247,22,147,8,249,80,159,45,39,38,23,200,1,80,159,45,36, -38,27,252,22,157,14,23,200,1,23,202,1,2,25,247,22,147,8,249,80,159, -46,39,38,23,201,1,80,159,46,36,38,27,250,22,174,14,196,11,32,0,89, -162,8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,252,22,157,14, -23,200,1,23,202,1,2,25,247,22,147,8,249,80,159,46,39,38,23,201,1, -80,159,46,36,38,27,250,22,174,14,196,11,32,0,89,162,8,44,36,41,9, -222,11,28,192,249,22,73,195,194,11,27,250,22,157,14,23,198,1,23,200,1, -249,80,159,44,39,38,23,199,1,2,23,27,250,22,174,14,196,11,32,0,89, -162,8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,250,22,157,14, -23,198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,174, -14,196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,73,195,194, -11,87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,170,9,77,108,111, -97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,116, -104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110, -103,23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,163,14,23,205,2, -23,204,2,27,247,22,154,5,28,23,193,2,249,22,164,14,23,207,2,23,195, -1,23,205,2,90,161,39,37,11,248,22,160,14,23,205,1,87,94,23,196,1, -90,161,38,40,11,28,23,205,2,27,248,22,144,14,23,197,2,27,248,22,182, -7,23,195,2,28,28,249,22,188,3,23,195,2,40,249,22,185,7,5,4,46, -114,107,116,249,22,188,7,23,198,2,249,22,176,3,23,199,2,40,11,249,22, -7,23,199,2,248,22,148,14,249,22,189,7,250,22,188,7,23,202,1,36,249, -22,176,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22, -7,23,197,2,11,90,161,37,42,11,28,249,22,134,9,23,199,2,23,197,2, -23,193,2,249,22,157,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198, -2,28,249,22,134,9,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249, -22,157,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28, -249,22,134,9,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1, -2,22,23,194,1,90,161,37,45,11,247,22,182,14,27,250,22,174,14,23,203, -2,11,32,0,89,162,8,44,36,41,9,222,11,27,28,23,194,2,249,22,73, -23,203,2,23,196,1,87,94,23,194,1,11,27,28,23,203,2,28,23,194,2, -11,27,250,22,174,14,23,207,2,11,32,0,89,162,8,44,36,41,9,222,11, -28,192,249,22,73,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194, -2,27,89,162,44,37,50,62,122,111,225,15,13,9,33,33,27,89,162,44,37, -50,66,97,108,116,45,122,111,225,16,14,11,33,34,27,89,162,44,37,52,9, -225,17,15,11,33,35,27,89,162,44,37,52,9,225,18,16,13,33,36,27,28, -23,200,2,23,200,2,248,22,132,9,23,200,2,27,28,23,208,2,28,23,200, -2,87,94,23,201,1,23,200,2,248,22,132,9,23,202,1,11,27,28,23,195, -2,28,23,197,1,27,249,22,5,89,162,8,44,37,53,9,225,24,22,18,33, -37,23,216,2,27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28, -249,22,188,3,248,22,75,196,248,22,75,23,205,2,193,11,11,11,11,87,94, -23,197,1,11,28,23,193,2,87,105,23,213,1,23,211,1,23,210,1,23,209, -1,23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195, -1,23,194,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22, -27,11,80,159,8,26,40,38,22,176,4,11,20,14,159,80,159,57,40,38,250, -80,159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,154,5,28,248, -22,139,14,23,216,2,23,215,1,87,94,23,215,1,247,22,180,14,249,247,22, -185,14,248,22,74,195,23,25,87,94,23,193,1,27,28,23,195,2,28,23,197, -1,27,249,22,5,89,162,8,44,37,53,9,225,25,23,20,33,38,23,217,2, -27,28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,188,3,248,22, -75,196,248,22,75,206,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2, -87,102,23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23, -199,1,23,196,1,23,195,1,20,14,159,80,159,58,40,38,250,80,159,8,25, -41,38,249,22,27,11,80,159,8,27,40,38,22,176,4,23,215,1,20,14,159, -80,159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40, -38,22,154,5,28,248,22,139,14,23,217,2,23,216,1,87,94,23,216,1,247, -22,180,14,249,247,22,185,14,248,22,74,195,23,26,87,94,23,193,1,27,28, -23,197,2,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44, -37,51,9,225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11, -193,28,192,192,28,193,28,23,204,2,28,249,22,188,3,248,22,75,196,248,22, -75,23,207,2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28, -23,193,2,87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23, -200,1,23,197,1,23,196,1,20,14,159,80,159,59,40,38,250,80,159,8,26, -41,38,249,22,27,11,80,159,8,28,40,38,22,176,4,11,20,14,159,80,159, -59,40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22, -154,5,28,248,22,139,14,23,218,2,23,217,1,87,94,23,217,1,247,22,180, -14,249,247,22,152,5,248,22,74,195,23,27,87,94,23,193,1,27,28,23,197, -1,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51, -9,225,27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2,11,193,28, -192,192,28,193,28,204,28,249,22,188,3,248,22,75,196,248,22,75,23,15,193, -11,11,11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11,28,23,193, -2,87,95,23,213,1,23,198,1,20,14,159,80,159,8,24,40,38,250,80,159, -8,27,41,38,249,22,27,11,80,159,8,29,40,38,22,176,4,23,217,1,20, -14,159,80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159, -8,29,40,38,22,154,5,28,248,22,139,14,23,219,2,23,218,1,87,94,23, -218,1,247,22,180,14,249,247,22,152,5,248,22,74,195,23,28,87,94,23,193, -1,27,28,23,199,2,87,94,23,215,1,23,214,1,87,94,23,214,1,23,215, -1,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11, -80,159,8,30,40,38,22,176,4,28,23,30,28,23,202,1,11,195,87,94,23, -202,1,11,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22, -27,11,80,159,8,30,40,38,22,154,5,28,248,22,139,14,23,220,2,23,219, -1,87,94,23,219,1,247,22,180,14,249,247,22,152,5,194,23,29,0,17,35, -114,120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,43,89,162,8, -44,37,59,2,26,222,33,44,27,249,22,190,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197, -1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2, -42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196, -2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,43,248,22,107, -23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83,194,32,45, -89,162,44,37,8,40,2,26,222,33,46,28,248,22,81,248,22,75,23,195,2, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,50,74,0,0,0,1,0,0,7,0,18,0, +45,0,51,0,64,0,73,0,80,0,102,0,124,0,150,0,162,0,180,0,200, +0,212,0,228,0,251,0,7,1,38,1,45,1,50,1,55,1,60,1,65,1, +70,1,79,1,84,1,88,1,94,1,101,1,107,1,115,1,124,1,145,1,166, +1,196,1,226,1,27,2,84,2,132,2,180,2,110,8,129,8,142,8,44,9, +57,9,243,10,81,13,204,13,210,13,224,13,237,13,79,15,92,15,211,15,224, +15,66,17,79,17,198,17,225,17,238,17,251,17,93,19,106,19,225,19,238,19, +101,20,109,20,196,20,198,20,11,21,57,29,109,29,132,29,0,0,41,32,0, +0,66,35,37,98,111,111,116,70,100,108,108,45,115,117,102,102,105,120,1,25, +100,101,102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112, +105,108,101,100,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108, +115,11,68,35,37,112,97,114,97,109,122,29,94,2,4,2,6,11,1,20,112, +97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,1,20, +100,101,102,97,117,108,116,45,114,101,97,100,101,114,45,103,117,97,114,100,1, +24,45,109,111,100,117,108,101,45,104,97,115,104,45,116,97,98,108,101,45,116, +97,98,108,101,71,45,112,97,116,104,45,99,97,99,104,101,77,45,108,111,97, +100,105,110,103,45,102,105,108,101,110,97,109,101,79,45,108,111,97,100,105,110, +103,45,112,114,111,109,112,116,45,116,97,103,71,45,112,114,101,118,45,114,101, +108,116,111,75,45,112,114,101,118,45,114,101,108,116,111,45,100,105,114,1,21, +115,112,108,105,116,45,114,101,108,97,116,105,118,101,45,115,116,114,105,110,103, +71,111,114,105,103,45,112,97,114,97,109,122,1,29,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,29,94,2,4,2,6,11,64,98,111,111,116,64,115,101,97,108,64,115,97, +109,101,5,3,46,122,111,5,3,46,122,111,6,6,6,110,97,116,105,118,101, +64,108,111,111,112,63,108,105,98,6,3,3,46,115,115,6,4,4,46,114,107, +116,5,4,46,114,107,116,67,105,103,110,111,114,101,100,249,22,14,195,80,159, +38,46,38,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198, +1,2,23,250,22,157,14,23,197,1,23,199,1,249,80,159,43,39,38,23,198, +1,2,24,252,22,157,14,23,199,1,23,201,1,2,25,247,22,147,8,249,80, +159,45,39,38,23,200,1,80,159,45,36,38,252,22,157,14,23,199,1,23,201, +1,2,25,247,22,147,8,249,80,159,45,39,38,23,200,1,80,159,45,36,38, +27,252,22,157,14,23,200,1,23,202,1,2,25,247,22,147,8,249,80,159,46, +39,38,23,201,1,80,159,46,36,38,27,250,22,174,14,196,11,32,0,89,162, +8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,252,22,157,14,23, +200,1,23,202,1,2,25,247,22,147,8,249,80,159,46,39,38,23,201,1,80, +159,46,36,38,27,250,22,174,14,196,11,32,0,89,162,8,44,36,41,9,222, +11,28,192,249,22,73,195,194,11,27,250,22,157,14,23,198,1,23,200,1,249, +80,159,44,39,38,23,199,1,2,23,27,250,22,174,14,196,11,32,0,89,162, +8,44,36,41,9,222,11,28,192,249,22,73,195,194,11,27,250,22,157,14,23, +198,1,23,200,1,249,80,159,44,39,38,23,199,1,2,24,27,250,22,174,14, +196,11,32,0,89,162,8,44,36,41,9,222,11,28,192,249,22,73,195,194,11, +87,94,28,248,80,159,37,38,38,23,195,2,12,250,22,170,9,77,108,111,97, +100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,116,104, +32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103, +23,197,2,91,159,46,11,90,161,37,36,11,28,248,22,163,14,23,205,2,23, +204,2,27,247,22,154,5,28,23,193,2,249,22,164,14,23,207,2,23,195,1, +23,205,2,90,161,39,37,11,248,22,160,14,23,205,1,87,94,23,196,1,90, +161,38,40,11,28,23,205,2,27,248,22,144,14,23,197,2,27,248,22,182,7, +23,195,2,28,28,249,22,188,3,23,195,2,40,249,22,185,7,5,4,46,114, +107,116,249,22,188,7,23,198,2,249,22,176,3,23,199,2,40,11,249,22,7, +23,199,2,248,22,148,14,249,22,189,7,250,22,188,7,23,202,1,36,249,22, +176,3,23,203,1,40,5,3,46,115,115,249,22,7,23,199,2,11,249,22,7, +23,197,2,11,90,161,37,42,11,28,249,22,134,9,23,199,2,23,197,2,23, +193,2,249,22,157,14,23,196,2,23,199,2,90,161,37,43,11,28,23,198,2, +28,249,22,134,9,23,200,2,23,197,1,23,193,1,87,94,23,193,1,249,22, +157,14,23,196,2,23,200,2,87,94,23,195,1,11,90,161,37,44,11,28,249, +22,134,9,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194,1,2, +22,23,194,1,90,161,37,45,11,247,22,182,14,27,250,22,174,14,23,203,2, +11,32,0,89,162,8,44,36,41,9,222,11,27,28,23,194,2,249,22,73,23, +203,2,23,196,1,87,94,23,194,1,11,27,28,23,203,2,28,23,194,2,11, +27,250,22,174,14,23,207,2,11,32,0,89,162,8,44,36,41,9,222,11,28, +192,249,22,73,23,206,2,194,11,11,27,28,23,195,2,23,195,2,23,194,2, +27,89,162,44,37,50,62,122,111,225,15,13,9,33,33,27,89,162,44,37,50, +66,97,108,116,45,122,111,225,16,14,11,33,34,27,89,162,44,37,52,9,225, +17,15,11,33,35,27,89,162,44,37,52,9,225,18,16,13,33,36,27,28,23, +200,2,23,200,2,248,22,132,9,23,200,2,27,28,23,208,2,28,23,200,2, +87,94,23,201,1,23,200,2,248,22,132,9,23,202,1,11,27,28,23,195,2, +28,23,197,1,27,249,22,5,89,162,8,44,37,53,9,225,24,22,18,33,37, +23,216,2,27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249, +22,188,3,248,22,75,196,248,22,75,23,205,2,193,11,11,11,11,87,94,23, +197,1,11,28,23,193,2,87,105,23,213,1,23,211,1,23,210,1,23,209,1, +23,208,1,23,201,1,23,200,1,23,199,1,23,198,1,23,196,1,23,195,1, +23,194,1,20,14,159,80,159,57,40,38,250,80,159,8,24,41,38,249,22,27, +11,80,159,8,26,40,38,22,176,4,11,20,14,159,80,159,57,40,38,250,80, +159,8,24,41,38,249,22,27,11,80,159,8,26,40,38,22,154,5,28,248,22, +139,14,23,216,2,23,215,1,87,94,23,215,1,247,22,180,14,249,247,22,185, +14,248,22,74,195,23,25,87,94,23,193,1,27,28,23,195,2,28,23,197,1, +27,249,22,5,89,162,8,44,37,53,9,225,25,23,20,33,38,23,217,2,27, +28,23,204,2,11,193,28,192,192,28,193,28,203,28,249,22,188,3,248,22,75, +196,248,22,75,206,193,11,11,11,11,87,94,23,197,1,11,28,23,193,2,87, +102,23,214,1,23,211,1,23,210,1,23,209,1,23,201,1,23,200,1,23,199, +1,23,196,1,23,195,1,20,14,159,80,159,58,40,38,250,80,159,8,25,41, +38,249,22,27,11,80,159,8,27,40,38,22,176,4,23,215,1,20,14,159,80, +159,58,40,38,250,80,159,8,25,41,38,249,22,27,11,80,159,8,27,40,38, +22,154,5,28,248,22,139,14,23,217,2,23,216,1,87,94,23,216,1,247,22, +180,14,249,247,22,185,14,248,22,74,195,23,26,87,94,23,193,1,27,28,23, +197,2,28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37, +51,9,225,26,24,20,33,39,23,213,1,23,218,2,27,28,23,204,2,11,193, +28,192,192,28,193,28,23,204,2,28,249,22,188,3,248,22,75,196,248,22,75, +23,207,2,193,11,11,11,87,94,23,210,1,11,87,94,23,201,1,11,28,23, +193,2,87,101,23,215,1,23,213,1,23,212,1,23,211,1,23,202,1,23,200, +1,23,197,1,23,196,1,20,14,159,80,159,59,40,38,250,80,159,8,26,41, +38,249,22,27,11,80,159,8,28,40,38,22,176,4,11,20,14,159,80,159,59, +40,38,250,80,159,8,26,41,38,249,22,27,11,80,159,8,28,40,38,22,154, +5,28,248,22,139,14,23,218,2,23,217,1,87,94,23,217,1,247,22,180,14, +249,247,22,152,5,248,22,74,195,23,27,87,94,23,193,1,27,28,23,197,1, +28,23,201,1,27,249,22,5,83,158,40,20,100,94,89,162,8,44,37,51,9, +225,27,25,22,33,40,23,215,1,23,219,1,27,28,23,205,2,11,193,28,192, +192,28,193,28,204,28,249,22,188,3,248,22,75,196,248,22,75,23,15,193,11, +11,11,87,95,23,216,1,23,212,1,11,87,94,23,201,1,11,28,23,193,2, +87,95,23,213,1,23,198,1,20,14,159,80,159,8,24,40,38,250,80,159,8, +27,41,38,249,22,27,11,80,159,8,29,40,38,22,176,4,23,217,1,20,14, +159,80,159,8,24,40,38,250,80,159,8,27,41,38,249,22,27,11,80,159,8, +29,40,38,22,154,5,28,248,22,139,14,23,219,2,23,218,1,87,94,23,218, +1,247,22,180,14,249,247,22,152,5,248,22,74,195,23,28,87,94,23,193,1, +27,28,23,199,2,87,94,23,215,1,23,214,1,87,94,23,214,1,23,215,1, +20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27,11,80, +159,8,30,40,38,22,176,4,28,23,30,28,23,202,1,11,195,87,94,23,202, +1,11,20,14,159,80,159,8,25,40,38,250,80,159,8,28,41,38,249,22,27, +11,80,159,8,30,40,38,22,154,5,28,248,22,139,14,23,220,2,23,219,1, +87,94,23,219,1,247,22,180,14,249,247,22,152,5,194,23,29,0,17,35,114, +120,34,94,40,46,42,63,41,47,40,46,42,41,36,34,32,43,89,162,8,44, +37,59,2,26,222,33,44,27,249,22,190,14,2,42,23,196,2,28,23,193,2, +87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1, +27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, +73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42, +23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2, +27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2, +87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,43,248,22,107,23, +197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22,83,194,32,45,89, +162,44,37,8,40,2,26,222,33,46,28,248,22,81,248,22,75,23,195,2,249, +22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11, +28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38, +11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2, 249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36, 11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159, 38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195, @@ -674,25 +684,25 @@ 91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75, 23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90, 161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74, -197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22, -75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11, -90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22, -74,197,91,159,38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7, -249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195, -249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74, -200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73, -248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7, -249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195, -249,22,7,249,22,73,248,22,74,200,196,195,27,27,249,22,190,14,2,42,23, -197,2,28,23,193,2,87,94,23,195,1,249,22,73,248,22,98,23,196,2,27, -248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87, -94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27, -249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73, -248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23, -196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248, -2,43,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248, -22,83,195,28,23,195,1,192,28,248,22,81,248,22,75,23,195,2,249,22,7, -9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248, +197,91,159,38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249, +22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249, +22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200, +196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248, +22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249, +22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249, +22,7,249,22,73,248,22,74,200,196,195,27,27,249,22,190,14,2,42,23,197, +2,28,23,193,2,87,94,23,195,1,249,22,73,248,22,98,23,196,2,27,248, +22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94, +23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249, +22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248, +22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196, +2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2, +43,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,248,22, +83,195,28,23,195,1,192,28,248,22,81,248,22,75,23,195,2,249,22,7,9, +248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22, +81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22,75,196,91, +159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7, +9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36,11,28,248, 22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22,75,196, 91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22, 7,9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36,11,28, @@ -702,24 +712,24 @@ 28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248,22, 75,196,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2, 249,22,7,9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38,36, -11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,27,248, -22,75,196,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197, -2,249,22,7,9,248,22,74,197,27,248,22,75,196,91,159,38,11,90,161,38, -36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91, -159,38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249,22,73, -248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7, -249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195, -249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74, -202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73, -248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7, -249,22,73,248,22,74,200,196,195,87,95,28,248,22,130,5,195,12,250,22,170, -9,2,18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101, -45,112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12, -27,250,22,153,2,80,159,41,43,38,248,22,151,15,247,22,181,12,11,27,28, -23,194,2,193,87,94,23,194,1,27,247,22,133,2,87,94,250,22,151,2,80, -159,43,43,38,248,22,151,15,247,22,181,12,195,192,250,22,151,2,195,199,66, -97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,169,9,11,196,195, -248,22,167,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22, +11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159, +38,11,90,161,38,36,11,248,2,45,248,22,75,198,249,22,7,249,22,73,248, +22,74,201,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249, +22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249, +22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248,22,74,202, +196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249,22,73,248, +22,74,202,196,195,249,22,7,249,22,73,248,22,74,202,196,195,249,22,7,249, +22,73,248,22,74,200,196,195,87,95,28,248,22,130,5,195,12,250,22,170,9, +2,18,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,117,108,101,45, +112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23,193,1,12,27, +250,22,153,2,80,159,41,43,38,248,22,151,15,247,22,181,12,11,27,28,23, +194,2,193,87,94,23,194,1,27,247,22,133,2,87,94,250,22,151,2,80,159, +43,43,38,248,22,151,15,247,22,181,12,195,192,250,22,151,2,195,199,66,97, +116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,169,9,11,196,195,248, +22,167,9,194,32,51,89,162,44,37,8,34,2,26,222,33,52,28,248,22,81, +248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159, +38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9, +248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22, 81,248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91, 159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7, 9,248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248, @@ -728,22 +738,22 @@ 7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28, 248,22,81,248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75, 194,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249, -22,7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198, -28,248,22,81,248,22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22, -75,194,91,159,38,11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2, -249,22,7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,248,2,51,248, -22,75,198,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73, -248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7, -249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195, -249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74, -201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,32,53,89,162,8,44, -37,55,2,26,222,33,54,27,249,22,190,14,2,42,23,196,2,28,23,193,2, -87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1, -27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, -73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42, -23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2, -248,2,53,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194, -32,55,89,162,44,37,8,34,2,26,222,33,56,28,248,22,81,248,22,75,23, +22,7,9,248,22,74,197,91,159,38,11,90,161,38,36,11,248,2,51,248,22, +75,198,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248, +22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249, +22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249, +22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201, +196,195,249,22,7,249,22,73,248,22,74,200,196,195,32,53,89,162,8,44,37, +55,2,26,222,33,54,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87, +94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27, +249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73, +248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23, +196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248, +2,53,248,22,107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,32, +55,89,162,44,37,8,34,2,26,222,33,56,28,248,22,81,248,22,75,23,195, +2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38, +36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91, +159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23, 195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161, 38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197, 91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75, @@ -752,24 +762,24 @@ 197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248,22, 75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38,11, 90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248,22, -74,197,91,159,38,11,90,161,38,36,11,27,248,22,75,198,28,248,22,81,248, -22,75,23,195,2,249,22,7,9,248,22,74,195,27,248,22,75,194,91,159,38, -11,90,161,38,36,11,28,248,22,81,248,22,75,23,197,2,249,22,7,9,248, -22,74,197,91,159,38,11,90,161,38,36,11,248,2,55,248,22,75,198,249,22, -7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196, -195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22, -74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22, -73,248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22, -7,249,22,73,248,22,74,200,196,195,32,57,89,162,8,44,37,55,2,26,222, -33,58,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1, -249,22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14, -2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23, -196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23, -193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,57,248,22, -107,23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,28,249,22,130,7, -194,6,1,1,46,2,22,28,249,22,130,7,194,6,2,2,46,46,62,117,112, -192,0,11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37,8, -34,2,26,222,33,62,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248, +74,197,91,159,38,11,90,161,38,36,11,248,2,55,248,22,75,198,249,22,7, +249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195, +249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74, +200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73, +248,22,74,200,196,195,249,22,7,249,22,73,248,22,74,201,196,195,249,22,7, +249,22,73,248,22,74,200,196,195,32,57,89,162,8,44,37,55,2,26,222,33, +58,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, +22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2, +42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196, +2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193, +2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,57,248,22,107, +23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,28,249,22,130,7,194, +6,1,1,46,2,22,28,249,22,130,7,194,6,2,2,46,46,62,117,112,192, +0,11,35,114,120,34,91,46,93,115,115,36,34,32,61,89,162,44,37,8,34, +2,26,222,33,62,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248,22, +74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22,81,248, +22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90,161,38,36, +11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7,9,248, 22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248,22,81, 248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90,161,38, 36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7,9, @@ -778,170 +788,190 @@ 38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22,7, 9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28,248, 22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11,90, -161,38,36,11,27,248,22,75,198,28,248,22,81,248,22,75,23,195,2,249,22, -7,9,248,22,74,195,27,248,22,75,194,91,159,38,11,90,161,38,36,11,28, -248,22,81,248,22,75,23,197,2,249,22,7,9,248,22,74,197,91,159,38,11, -90,161,38,36,11,248,2,61,248,22,75,198,249,22,7,249,22,73,248,22,74, -201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73, -248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7, -249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195, -249,22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74, -200,196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,190,14, -2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23, -196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23, -193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23, -197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1, -249,22,73,248,22,98,23,196,2,248,2,63,248,22,107,23,197,1,248,22,83, -194,248,22,83,194,248,22,83,194,32,65,89,162,8,44,37,55,2,26,222,33, -66,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, -22,73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2, +161,38,36,11,248,2,61,248,22,75,198,249,22,7,249,22,73,248,22,74,201, +196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249,22,73,248, +22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249,22,7,249, +22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200,196,195,249, +22,7,249,22,73,248,22,74,201,196,195,249,22,7,249,22,73,248,22,74,200, +196,195,32,63,89,162,8,44,37,55,2,26,222,33,64,27,249,22,190,14,2, 42,23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196, 2,27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193, -2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,65,248,22,107, -23,197,1,248,22,83,194,248,22,83,194,248,22,83,194,27,248,2,65,23,195, -1,192,28,249,22,136,9,248,22,75,23,200,2,23,197,1,28,249,22,134,9, -248,22,74,23,200,2,23,196,1,251,22,167,9,2,18,6,28,28,99,121,99, -108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58, -32,126,46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73,23,206,1, -23,202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,73,248,22,151, -15,247,22,181,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41, -38,249,22,27,11,80,159,45,40,38,22,175,4,23,196,1,249,247,22,153,5, -23,198,1,248,22,61,248,22,143,14,23,198,1,87,94,28,28,248,22,139,14, -23,196,2,10,248,22,138,5,23,196,2,12,28,23,197,2,250,22,169,9,11, -6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2, -250,22,170,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32, -111,114,32,112,97,116,104,23,198,2,28,28,248,22,71,23,196,2,249,22,134, -9,248,22,74,23,198,2,2,4,11,248,22,131,5,248,22,98,196,28,28,248, -22,71,23,196,2,249,22,134,9,248,22,74,23,198,2,66,112,108,97,110,101, -116,11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161, -37,36,10,249,22,177,4,21,94,2,27,6,19,19,112,108,97,110,101,116,47, -114,101,115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45, -109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12, -252,212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37, -46,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114, -223,5,33,50,27,28,248,22,58,23,198,2,27,250,22,153,2,80,159,43,44, -38,249,22,73,23,203,2,247,22,181,14,11,28,23,193,2,192,87,94,23,193, -1,91,159,38,11,90,161,38,36,11,27,248,22,64,23,202,2,248,2,51,248, -2,53,23,195,1,27,28,248,22,81,23,195,2,6,8,8,109,97,105,110,46, -114,107,116,249,22,147,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159, -49,54,38,2,18,23,204,1,28,248,22,81,23,201,2,23,201,1,87,94,23, -201,1,248,22,74,23,201,2,28,248,22,81,23,201,2,87,94,23,200,1,9, -248,22,75,23,201,1,23,199,2,249,22,157,14,23,195,1,23,196,1,28,248, -22,188,6,23,198,2,87,94,23,194,1,27,28,23,199,2,28,249,22,134,9, -23,201,2,80,158,42,47,80,158,40,48,27,248,22,132,5,23,201,2,28,248, -22,139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197, -1,87,95,83,160,38,11,80,158,44,47,23,203,2,83,160,38,11,80,158,44, -48,192,192,11,11,27,28,23,194,2,23,194,1,87,94,23,194,1,27,247,22, -154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,27,250,22,153,2, -80,159,45,44,38,249,22,73,23,205,2,23,199,2,11,28,23,193,2,192,87, -94,23,193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,204, -2,250,22,1,22,157,14,23,199,1,249,22,87,249,22,2,32,0,89,162,8, -44,37,44,9,222,33,59,23,200,1,248,22,83,27,248,22,191,6,23,202,2, -28,249,22,188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,204,249,22, -176,3,198,39,249,22,147,7,250,22,146,7,205,36,249,22,176,3,199,39,2, -29,200,200,28,248,22,139,14,23,198,2,87,94,23,194,1,28,248,22,162,14, -23,198,2,27,248,22,166,14,23,199,2,91,159,39,11,90,161,39,36,11,248, -22,160,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,190,14,2,60, -248,22,144,14,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22, -83,6,26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32, -97,98,115,111,108,117,116,101,41,28,249,22,134,9,248,22,74,23,200,2,2, -27,27,250,22,153,2,80,159,43,44,38,249,22,73,23,203,2,247,22,181,14, -11,28,23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27, -248,22,98,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28, -248,22,81,248,22,100,23,203,2,28,248,22,81,23,194,2,249,22,130,15,0, -8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248, -22,191,6,23,197,2,28,249,22,188,3,194,39,28,249,22,130,7,2,28,249, -22,146,7,23,200,2,249,22,176,3,198,39,249,22,147,7,250,22,146,7,23, -201,2,36,249,22,176,3,199,39,2,29,23,196,2,23,196,2,28,248,22,81, -23,195,2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,130,15,0,8, -35,114,120,34,91,46,93,34,23,197,2,27,248,22,191,6,23,197,2,28,249, -22,188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,23,200,2,249,22, -176,3,198,39,249,22,147,7,250,22,146,7,23,201,2,36,249,22,176,3,199, -39,2,29,23,196,2,23,196,2,249,22,147,7,23,197,2,6,4,4,46,114, -107,116,27,28,23,197,1,87,94,23,196,1,249,22,87,28,248,22,81,248,22, -100,23,207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,87,249,22, -2,32,0,89,162,8,44,37,44,9,222,33,67,248,22,100,23,210,2,23,197, -1,28,248,22,81,23,196,2,87,94,23,195,1,248,22,83,23,197,1,87,94, -23,196,1,23,195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,74, -23,200,2,248,22,75,23,200,1,23,200,2,249,22,157,14,23,195,1,23,197, -1,28,249,22,134,9,248,22,74,23,200,2,64,102,105,108,101,27,248,22,166, -14,249,22,164,14,248,22,168,14,248,22,98,23,203,2,27,28,23,203,2,28, -249,22,134,9,23,205,2,80,158,46,47,80,158,44,48,27,248,22,132,5,23, -205,2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22, -160,14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38, -11,80,158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247, -22,154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,91,159,39,11, -90,161,39,36,11,248,22,160,14,23,197,2,87,95,23,195,1,23,193,1,28, -249,22,190,14,2,60,248,22,144,14,23,197,1,249,80,159,45,53,38,23,198, -1,2,30,195,12,87,94,28,28,248,22,139,14,23,194,2,10,248,22,149,8, -23,194,2,87,94,23,199,1,12,28,23,199,2,250,22,169,9,67,114,101,113, -117,105,114,101,249,22,172,7,6,17,17,98,97,100,32,109,111,100,117,108,101, -32,112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2,6,0,0,23, -202,1,87,94,23,199,1,250,22,170,9,2,18,249,22,172,7,6,13,13,109, -111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23,199, -2,6,0,0,23,200,2,27,28,248,22,149,8,23,195,2,249,22,154,8,23, -196,2,36,249,22,166,14,248,22,167,14,23,197,2,11,27,28,248,22,149,8, -23,196,2,249,22,154,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91, -159,39,11,90,161,39,36,11,28,248,22,149,8,23,199,2,250,22,7,2,31, -249,22,154,8,23,203,2,38,2,31,248,22,160,14,23,198,2,87,95,23,195, -1,23,193,1,27,28,248,22,149,8,23,200,2,249,22,154,8,23,201,2,39, -249,80,159,47,53,38,23,197,2,5,0,27,28,248,22,149,8,23,201,2,249, -22,154,8,23,202,2,40,248,22,131,5,23,200,2,27,27,250,22,153,2,80, -159,51,43,38,248,22,151,15,247,22,181,12,11,28,23,193,2,192,87,94,23, -193,1,27,247,22,133,2,87,94,250,22,151,2,80,159,52,43,38,248,22,151, -15,247,22,181,12,195,192,87,95,28,23,208,1,27,250,22,153,2,23,197,2, -197,11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80, -159,50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38, -23,196,1,27,248,22,151,15,247,22,181,12,249,22,3,83,158,40,20,100,94, -89,162,8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248, -28,248,22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80, -159,49,59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,151, -2,23,197,1,197,10,12,28,28,248,22,149,8,23,202,1,11,28,248,22,188, -6,23,206,2,10,28,248,22,58,23,206,2,10,28,248,22,71,23,206,2,249, -22,134,9,248,22,74,23,208,2,2,27,11,250,22,151,2,80,159,50,44,38, -28,248,22,188,6,23,209,2,249,22,73,23,210,1,27,28,23,212,2,28,249, -22,134,9,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248, -22,132,5,23,214,2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39, -36,11,248,22,160,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23, -83,160,38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193, -1,27,247,22,154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,249, -22,73,23,210,1,247,22,181,14,252,22,151,8,23,208,1,23,207,1,23,205, -1,23,203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37, -58,38,249,22,27,11,80,159,39,52,38,248,22,174,4,80,159,37,51,38,248, -22,153,5,80,159,37,37,37,248,22,172,13,80,159,37,42,37,83,160,38,11, -80,158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36, -20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11, -11,11,11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30, -2,5,72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112, -97,116,104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,4, -30,2,7,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,3,2,9,2,10,2,11,2,12,2,13,2,14,2, -15,2,16,2,17,2,18,30,2,19,2,8,4,30,2,5,79,112,97,116,104, -45,114,101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102, -105,110,100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109, -97,108,45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74, -114,101,112,97,114,97,109,101,116,101,114,105,122,101,5,16,0,16,0,36,16, -0,36,16,12,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2, -2,2,17,2,16,2,18,48,11,11,39,36,11,11,11,16,2,2,20,2,21, -16,2,11,11,16,2,2,20,2,21,38,38,37,11,11,11,16,0,16,0,16, -0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15,83,158, -36,16,2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83,158,36, -16,2,248,22,146,8,69,115,111,45,115,117,102,102,105,120,80,159,36,36,37, -83,158,36,16,2,89,162,44,38,8,38,2,3,223,0,33,41,80,159,36,37, -37,83,158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80,159,36, -42,37,83,158,36,16,2,247,22,136,2,80,159,36,43,37,83,158,36,16,2, -247,22,135,2,80,159,36,44,37,83,158,36,16,2,247,22,69,80,159,36,45, -37,83,158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111,97,100, -105,110,103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83,158,36, -16,2,11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8,42,2, -16,222,33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50,83,158, -36,16,2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83,158,39, -20,99,96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162,44,39, -49,9,223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208,80,159, -36,51,37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72,80,159, -36,56,37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33,73,80, -159,36,57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11,29,94, -2,4,69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9,9,36, -0}; - EVAL_ONE_SIZED_STR((char *)expr, 8400); +2,87,94,23,194,1,249,22,73,248,22,98,23,196,2,27,248,22,107,23,197, +1,27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249, +22,73,248,22,98,23,196,2,248,2,63,248,22,107,23,197,1,248,22,83,194, +248,22,83,194,248,22,83,194,32,65,89,162,8,44,37,55,2,26,222,33,66, +27,249,22,190,14,2,42,23,196,2,28,23,193,2,87,94,23,194,1,249,22, +73,248,22,98,23,196,2,27,248,22,107,23,197,1,27,249,22,190,14,2,42, +23,196,2,28,23,193,2,87,94,23,194,1,249,22,73,248,22,98,23,196,2, +27,248,22,107,23,197,1,27,249,22,190,14,2,42,23,196,2,28,23,193,2, +87,94,23,194,1,249,22,73,248,22,98,23,196,2,248,2,65,248,22,107,23, +197,1,248,22,83,194,248,22,83,194,248,22,83,194,27,248,2,65,23,195,1, +192,28,249,22,136,9,248,22,75,23,200,2,23,197,1,28,249,22,134,9,248, +22,74,23,200,2,23,196,1,251,22,167,9,2,18,6,28,28,99,121,99,108, +101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,46,115,58,32, +126,46,115,23,200,1,249,22,2,22,75,248,22,88,249,22,73,23,206,1,23, +202,1,12,12,247,192,20,14,159,80,159,40,45,38,249,22,73,248,22,151,15, +247,22,181,12,23,197,1,20,14,159,80,159,40,40,38,250,80,159,43,41,38, +249,22,27,11,80,159,45,40,38,22,175,4,23,196,1,249,247,22,153,5,23, +198,1,248,22,61,248,22,143,14,23,198,1,87,94,28,28,248,22,139,14,23, +196,2,10,248,22,138,5,23,196,2,12,28,23,197,2,250,22,169,9,11,6, +15,15,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,200,2,250, +22,170,9,2,18,6,19,19,109,111,100,117,108,101,45,112,97,116,104,32,111, +114,32,112,97,116,104,23,198,2,28,28,248,22,71,23,196,2,249,22,134,9, +248,22,74,23,198,2,2,4,11,248,22,131,5,248,22,98,196,28,28,248,22, +71,23,196,2,249,22,134,9,248,22,74,23,198,2,66,112,108,97,110,101,116, +11,87,94,28,207,12,20,14,159,80,159,37,52,38,80,158,37,50,90,161,37, +36,10,249,22,177,4,21,94,2,27,6,19,19,112,108,97,110,101,116,47,114, +101,115,111,108,118,101,114,46,114,107,116,1,27,112,108,97,110,101,116,45,109, +111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,12,252, +212,199,200,201,202,80,158,42,50,87,94,23,193,1,27,89,162,8,44,37,46, +79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223, +5,33,50,27,28,248,22,58,23,198,2,27,250,22,153,2,80,159,43,44,38, +249,22,73,23,203,2,247,22,181,14,11,28,23,193,2,192,87,94,23,193,1, +91,159,38,11,90,161,38,36,11,27,248,22,64,23,202,2,248,2,51,248,2, +53,23,195,1,27,28,248,22,81,23,195,2,6,8,8,109,97,105,110,46,114, +107,116,249,22,147,7,23,197,2,6,4,4,46,114,107,116,27,252,80,159,49, +54,38,2,18,23,204,1,28,248,22,81,23,201,2,23,201,1,87,94,23,201, +1,248,22,74,23,201,2,28,248,22,81,23,201,2,87,94,23,200,1,9,248, +22,75,23,201,1,23,199,2,249,22,157,14,23,195,1,23,196,1,28,248,22, +188,6,23,198,2,87,94,23,194,1,27,28,23,199,2,28,249,22,134,9,23, +201,2,80,158,42,47,80,158,40,48,27,248,22,132,5,23,201,2,28,248,22, +139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160,14,23,197,1, +87,95,83,160,38,11,80,158,44,47,23,203,2,83,160,38,11,80,158,44,48, +192,192,11,11,27,28,23,194,2,23,194,1,87,94,23,194,1,27,247,22,154, +5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,27,250,22,153,2,80, +159,45,44,38,249,22,73,23,205,2,23,199,2,11,28,23,193,2,192,87,94, +23,193,1,91,159,38,11,90,161,38,36,11,248,2,55,248,2,57,23,204,2, +250,22,1,22,157,14,23,199,1,249,22,87,249,22,2,32,0,89,162,8,44, +37,44,9,222,33,59,23,200,1,248,22,83,27,248,22,191,6,23,202,2,28, +249,22,188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,204,249,22,176, +3,198,39,249,22,147,7,250,22,146,7,205,36,249,22,176,3,199,39,2,29, +200,200,28,248,22,139,14,23,198,2,87,94,23,194,1,28,248,22,162,14,23, +198,2,27,248,22,166,14,23,199,2,91,159,39,11,90,161,39,36,11,248,22, +160,14,23,197,2,87,95,23,195,1,23,193,1,28,249,22,190,14,2,60,248, +22,144,14,23,197,1,249,80,159,45,53,38,23,198,1,2,30,195,248,22,83, +6,26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97, +98,115,111,108,117,116,101,41,28,249,22,134,9,248,22,74,23,200,2,2,27, +27,250,22,153,2,80,159,43,44,38,249,22,73,23,203,2,247,22,181,14,11, +28,23,193,2,192,87,94,23,193,1,91,159,39,11,90,161,38,36,11,27,248, +22,98,23,203,2,248,2,61,248,2,63,23,195,1,90,161,37,38,11,28,248, +22,81,248,22,100,23,203,2,28,248,22,81,23,194,2,249,22,130,15,0,8, +35,114,120,34,91,46,93,34,23,196,2,11,10,27,28,23,196,2,27,248,22, +191,6,23,197,2,28,249,22,188,3,194,39,28,249,22,130,7,2,28,249,22, +146,7,23,200,2,249,22,176,3,198,39,249,22,147,7,250,22,146,7,23,201, +2,36,249,22,176,3,199,39,2,29,23,196,2,23,196,2,28,248,22,81,23, +195,2,6,8,8,109,97,105,110,46,114,107,116,28,249,22,130,15,0,8,35, +114,120,34,91,46,93,34,23,197,2,27,248,22,191,6,23,197,2,28,249,22, +188,3,194,39,28,249,22,130,7,2,28,249,22,146,7,23,200,2,249,22,176, +3,198,39,249,22,147,7,250,22,146,7,23,201,2,36,249,22,176,3,199,39, +2,29,23,196,2,23,196,2,249,22,147,7,23,197,2,6,4,4,46,114,107, +116,27,28,23,197,1,87,94,23,196,1,249,22,87,28,248,22,81,248,22,100, +23,207,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,87,249,22,2, +32,0,89,162,8,44,37,44,9,222,33,67,248,22,100,23,210,2,23,197,1, +28,248,22,81,23,196,2,87,94,23,195,1,248,22,83,23,197,1,87,94,23, +196,1,23,195,1,27,252,80,159,51,54,38,2,18,23,206,1,248,22,74,23, +200,2,248,22,75,23,200,1,23,200,2,249,22,157,14,23,195,1,23,197,1, +28,249,22,134,9,248,22,74,23,200,2,64,102,105,108,101,27,248,22,166,14, +249,22,164,14,248,22,168,14,248,22,98,23,203,2,27,28,23,203,2,28,249, +22,134,9,23,205,2,80,158,46,47,80,158,44,48,27,248,22,132,5,23,205, +2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36,11,248,22,160, +14,23,197,1,87,95,83,160,38,11,80,158,48,47,23,207,2,83,160,38,11, +80,158,48,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22, +154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,91,159,39,11,90, +161,39,36,11,248,22,160,14,23,197,2,87,95,23,195,1,23,193,1,28,249, +22,190,14,2,60,248,22,144,14,23,197,1,249,80,159,45,53,38,23,198,1, +2,30,195,12,87,94,28,28,248,22,139,14,23,194,2,10,248,22,149,8,23, +194,2,87,94,23,199,1,12,28,23,199,2,250,22,169,9,67,114,101,113,117, +105,114,101,249,22,172,7,6,17,17,98,97,100,32,109,111,100,117,108,101,32, +112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2,6,0,0,23,202, +1,87,94,23,199,1,250,22,170,9,2,18,249,22,172,7,6,13,13,109,111, +100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,74,23,199,2, +6,0,0,23,200,2,27,28,248,22,149,8,23,195,2,249,22,154,8,23,196, +2,36,249,22,166,14,248,22,167,14,23,197,2,11,27,28,248,22,149,8,23, +196,2,249,22,154,8,23,197,2,37,248,80,159,42,55,38,23,195,2,91,159, +39,11,90,161,39,36,11,28,248,22,149,8,23,199,2,250,22,7,2,31,249, +22,154,8,23,203,2,38,2,31,248,22,160,14,23,198,2,87,95,23,195,1, +23,193,1,27,28,248,22,149,8,23,200,2,249,22,154,8,23,201,2,39,249, +80,159,47,53,38,23,197,2,5,0,27,28,248,22,149,8,23,201,2,249,22, +154,8,23,202,2,40,248,22,131,5,23,200,2,27,27,250,22,153,2,80,159, +51,43,38,248,22,151,15,247,22,181,12,11,28,23,193,2,192,87,94,23,193, +1,27,247,22,133,2,87,94,250,22,151,2,80,159,52,43,38,248,22,151,15, +247,22,181,12,195,192,87,95,28,23,208,1,27,250,22,153,2,23,197,2,197, +11,28,23,193,1,12,87,95,27,27,28,248,22,17,80,159,51,46,38,80,159, +50,46,38,247,22,19,250,22,25,248,22,23,23,197,2,80,159,53,45,38,23, +196,1,27,248,22,151,15,247,22,181,12,249,22,3,83,158,40,20,100,94,89, +162,8,44,37,55,9,226,12,11,2,3,33,68,23,195,1,23,196,1,248,28, +248,22,17,80,159,50,46,38,32,0,89,162,44,37,42,9,222,33,69,80,159, +49,59,37,89,162,44,36,51,9,227,13,9,8,4,3,33,70,250,22,151,2, +23,197,1,197,10,12,28,28,248,22,149,8,23,202,1,11,28,248,22,188,6, +23,206,2,10,28,248,22,58,23,206,2,10,28,248,22,71,23,206,2,249,22, +134,9,248,22,74,23,208,2,2,27,11,250,22,151,2,80,159,50,44,38,28, +248,22,188,6,23,209,2,249,22,73,23,210,1,27,28,23,212,2,28,249,22, +134,9,23,214,2,80,158,55,47,87,94,23,212,1,80,158,53,48,27,248,22, +132,5,23,214,2,28,248,22,139,14,23,194,2,91,159,39,11,90,161,39,36, +11,248,22,160,14,23,197,1,87,95,83,160,38,11,80,158,57,47,23,23,83, +160,38,11,80,158,57,48,192,192,11,11,28,23,193,2,192,87,94,23,193,1, +27,247,22,154,5,28,23,193,2,192,87,94,23,193,1,247,22,180,14,249,22, +73,23,210,1,247,22,181,14,252,22,151,8,23,208,1,23,207,1,23,205,1, +23,203,1,201,12,193,87,96,83,160,38,11,80,158,36,50,248,80,159,37,58, +38,249,22,27,11,80,159,39,52,38,248,22,174,4,80,159,37,51,38,248,22, +153,5,80,159,37,37,37,248,22,172,13,80,159,37,42,37,83,160,38,11,80, +158,36,50,248,80,159,37,58,38,249,22,27,11,80,159,39,52,38,159,36,20, +105,159,36,16,1,11,16,0,83,158,42,20,103,145,2,1,2,1,29,11,11, +11,11,11,10,38,80,158,36,36,20,105,159,37,16,23,2,2,2,3,30,2, +5,72,112,97,116,104,45,115,116,114,105,110,103,63,11,30,2,5,75,112,97, +116,104,45,97,100,100,45,115,117,102,102,105,120,8,30,2,7,2,8,5,30, +2,7,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,3,2,9,2,10,2,11,2,12,2,13,2,14,2,15, +2,16,2,17,2,18,30,2,19,2,8,5,30,2,5,79,112,97,116,104,45, +114,101,112,108,97,99,101,45,115,117,102,102,105,120,10,30,2,5,73,102,105, +110,100,45,99,111,108,45,102,105,108,101,3,30,2,5,76,110,111,114,109,97, +108,45,99,97,115,101,45,112,97,116,104,7,2,20,2,21,30,2,19,74,114, +101,112,97,114,97,109,101,116,101,114,105,122,101,6,16,0,16,0,36,16,0, +36,16,11,2,12,2,13,2,10,2,11,2,14,2,15,2,3,2,9,2,2, +2,16,2,18,47,11,11,39,36,11,11,11,16,3,2,20,2,17,2,21,16, +3,11,11,11,16,3,2,20,2,17,2,21,39,39,37,11,11,11,16,0,16, +0,16,0,36,36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,15, +83,158,36,16,2,89,162,44,37,45,9,223,0,33,32,80,159,36,59,37,83, +158,36,16,2,248,22,146,8,69,115,111,45,115,117,102,102,105,120,80,159,36, +36,37,83,158,36,16,2,89,162,44,38,8,38,2,3,223,0,33,41,80,159, +36,37,37,83,158,36,16,2,32,0,89,162,8,44,37,42,2,9,222,192,80, +159,36,42,37,83,158,36,16,2,247,22,136,2,80,159,36,43,37,83,158,36, +16,2,247,22,135,2,80,159,36,44,37,83,158,36,16,2,247,22,69,80,159, +36,45,37,83,158,36,16,2,248,22,18,74,109,111,100,117,108,101,45,108,111, +97,100,105,110,103,80,159,36,46,37,83,158,36,16,2,11,80,158,36,47,83, +158,36,16,2,11,80,158,36,48,83,158,36,16,2,32,0,89,162,44,38,8, +42,2,16,222,33,47,80,159,36,49,37,83,158,36,16,2,11,80,158,36,50, +83,158,36,16,2,91,159,38,10,90,161,37,36,10,11,90,161,37,37,10,83, +158,39,20,99,96,2,18,89,162,8,44,37,51,9,224,2,0,33,48,89,162, +44,39,49,9,223,1,33,49,89,162,44,40,8,32,9,224,2,0,33,71,208, +80,159,36,51,37,83,158,36,16,2,89,162,44,36,45,2,20,223,0,33,72, +80,159,36,56,37,83,158,36,16,2,89,162,8,44,36,45,2,21,223,0,33, +73,80,159,36,57,37,96,29,94,2,4,68,35,37,107,101,114,110,101,108,11, +29,94,2,4,69,35,37,109,105,110,45,115,116,120,11,2,5,2,19,9,9, +9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 8402); + } + { + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,49,46,48,46,50,11,0,0,0,1,0,0,10,0,16,0, +29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,103,1,0, +0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, +67,35,37,117,116,105,108,115,11,29,94,2,2,69,35,37,110,101,116,119,111, +114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,2, +74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,66, +35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,11, +29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,252,83, +0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,6, +36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,36, +36,16,0,159,36,20,105,159,36,16,1,11,16,0,83,158,42,20,103,145,2, +1,2,1,29,11,11,11,11,11,18,96,11,46,46,46,36,80,158,36,36,20, +105,159,36,16,0,16,0,16,0,36,16,0,36,16,0,36,11,11,39,36,11, +11,11,16,0,16,0,16,0,36,36,37,11,11,11,16,0,16,0,16,0,36, +36,11,11,11,11,16,0,16,0,16,0,36,36,16,0,16,0,104,2,9,2, +8,29,94,2,2,69,35,37,102,111,114,101,105,103,110,11,29,94,2,2,68, +35,37,117,110,115,97,102,101,11,29,94,2,2,69,35,37,102,108,102,120,110, +117,109,11,2,7,2,6,2,5,2,4,2,3,29,94,2,2,67,35,37,112, +108,97,99,101,11,29,94,2,2,69,35,37,102,117,116,117,114,101,115,11,9, +9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 402); } diff --git a/src/racket/src/number.c b/src/racket/src/number.c index c0a2c7faee..5540cd7020 100644 --- a/src/racket/src/number.c +++ b/src/racket/src/number.c @@ -100,19 +100,15 @@ static Scheme_Object *flvector (int argc, Scheme_Object *argv[]); static Scheme_Object *flvector_p (int argc, Scheme_Object *argv[]); static Scheme_Object *flvector_length (int argc, Scheme_Object *argv[]); static Scheme_Object *make_flvector (int argc, Scheme_Object *argv[]); -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *shared_flvector (int argc, Scheme_Object *argv[]); static Scheme_Object *make_shared_flvector (int argc, Scheme_Object *argv[]); -#endif static Scheme_Object *fxvector (int argc, Scheme_Object *argv[]); static Scheme_Object *fxvector_p (int argc, Scheme_Object *argv[]); static Scheme_Object *fxvector_length (int argc, Scheme_Object *argv[]); static Scheme_Object *make_fxvector (int argc, Scheme_Object *argv[]); -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *shared_fxvector (int argc, Scheme_Object *argv[]); static Scheme_Object *make_shared_fxvector (int argc, Scheme_Object *argv[]); -#endif static Scheme_Object *integer_to_fl (int argc, Scheme_Object *argv[]); static Scheme_Object *fl_to_integer (int argc, Scheme_Object *argv[]); @@ -604,13 +600,8 @@ void scheme_init_flfxnum_number(Scheme_Env *env) 1, 2), env); -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) GLOBAL_PRIM_W_ARITY("shared-flvector", shared_flvector, 0, -1, env); GLOBAL_PRIM_W_ARITY("make-shared-flvector", make_shared_flvector, 1, 2, env); -#else - GLOBAL_PRIM_W_ARITY("shared-flvector", flvector, 0, -1, env); - GLOBAL_PRIM_W_ARITY("make-shared-flvector", make_flvector, 1, 2, env); -#endif p = scheme_make_immed_prim(flvector_length, "flvector-length", 1, 1); SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; @@ -647,13 +638,8 @@ void scheme_init_flfxnum_number(Scheme_Env *env) 1, 2), env); -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) GLOBAL_PRIM_W_ARITY("shared-fxvector", shared_fxvector, 0, -1, env); GLOBAL_PRIM_W_ARITY("make-shared-fxvector", make_shared_fxvector, 1, 2, env); -#else - GLOBAL_PRIM_W_ARITY("shared-fxvector", fxvector, 0, -1, env); - GLOBAL_PRIM_W_ARITY("make-shared-fxvector", make_fxvector, 1, 2, env); -#endif p = scheme_make_immed_prim(fxvector_length, "fxvector-length", 1, 1); SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; @@ -3347,20 +3333,22 @@ Scheme_Double_Vector *scheme_alloc_flvector(intptr_t size) return vec; } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Double_Vector *alloc_shared_flvector(intptr_t size) { Scheme_Double_Vector *vec; +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) void *original_gc; original_gc = GC_switch_to_master_gc(); +#endif vec = scheme_alloc_flvector(size); SHARED_ALLOCATED_SET(vec); +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) GC_switch_back_from_master(original_gc); +#endif return vec; } -#endif static Scheme_Object *do_flvector (const char *name, Scheme_Double_Vector *vec, int argc, Scheme_Object *argv[]) { @@ -3382,12 +3370,10 @@ static Scheme_Object *flvector (int argc, Scheme_Object *argv[]) return do_flvector("flvector", scheme_alloc_flvector(argc), argc, argv); } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *shared_flvector (int argc, Scheme_Object *argv[]) { return do_flvector("shared-flvector", alloc_shared_flvector(argc), argc, argv); } -#endif static Scheme_Object *flvector_p (int argc, Scheme_Object *argv[]) { @@ -3423,11 +3409,9 @@ static Scheme_Object *do_make_flvector (const char *name, int as_shared, int arg scheme_wrong_type(name, "flonum", 1, argc, argv); } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) if (as_shared) vec = alloc_shared_flvector(size); else -#endif vec = scheme_alloc_flvector(size); if (argc > 1) @@ -3446,12 +3430,10 @@ static Scheme_Object *make_flvector (int argc, Scheme_Object *argv[]) return do_make_flvector("make-flvector", 0, argc, argv); } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *make_shared_flvector (int argc, Scheme_Object *argv[]) { return do_make_flvector("make-shared-flvector", 1, argc, argv); } -#endif Scheme_Object *scheme_flvector_length(Scheme_Object *vec) { @@ -3535,20 +3517,22 @@ Scheme_Vector *scheme_alloc_fxvector(intptr_t size) return vec; } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Vector *alloc_shared_fxvector(intptr_t size) { Scheme_Vector *vec; +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) void *original_gc; original_gc = GC_switch_to_master_gc(); +#endif vec = scheme_alloc_fxvector(size); SHARED_ALLOCATED_SET(vec); +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) GC_switch_back_from_master(original_gc); +#endif return vec; } -#endif static Scheme_Object *do_fxvector (const char *name, Scheme_Vector *vec, int argc, Scheme_Object *argv[]) { @@ -3570,12 +3554,10 @@ static Scheme_Object *fxvector (int argc, Scheme_Object *argv[]) return do_fxvector("fxvector", scheme_alloc_fxvector(argc), argc, argv); } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *shared_fxvector (int argc, Scheme_Object *argv[]) { return do_fxvector("shared-fxvector", alloc_shared_fxvector(argc), argc, argv); } -#endif static Scheme_Object *fxvector_p (int argc, Scheme_Object *argv[]) { @@ -3609,11 +3591,9 @@ static Scheme_Object *do_make_fxvector (const char *name, int as_shared, int arg scheme_wrong_type(name, "fixnum", 1, argc, argv); } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) if (as_shared) vec = alloc_shared_fxvector(size); else -#endif vec = scheme_alloc_fxvector(size); { @@ -3632,12 +3612,10 @@ static Scheme_Object *make_fxvector (int argc, Scheme_Object *argv[]) return do_make_fxvector("make-fxvector", 0, argc, argv); } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *make_shared_fxvector (int argc, Scheme_Object *argv[]) { return do_make_fxvector("make-shared-fxvector", 1, argc, argv); } -#endif Scheme_Object *scheme_fxvector_length(Scheme_Object *vec) { diff --git a/src/racket/src/places.c b/src/racket/src/places.c index 2091ccc2dc..456f5710a2 100644 --- a/src/racket/src/places.c +++ b/src/racket/src/places.c @@ -1,6 +1,7 @@ #include "schpriv.h" -/* READ ONLY SHARABLE GLOBALS */ +static Scheme_Object* scheme_place_enabled(int argc, Scheme_Object *args[]); +static Scheme_Object* scheme_place_shared(int argc, Scheme_Object *args[]); #ifdef MZ_USE_PLACES @@ -10,6 +11,7 @@ #endif READ_ONLY static Scheme_Object *scheme_def_place_exit_proc; +SHARED_OK static int scheme_places_enabled = 1; SHARED_OK mz_proc_thread *scheme_master_proc_thread; THREAD_LOCAL_DECL(mz_proc_thread *proc_thread_self); @@ -27,12 +29,8 @@ static Scheme_Place_Async_Channel *scheme_place_async_channel_create(); static Scheme_Place_Bi_Channel *scheme_place_bi_channel_create(); static Scheme_Place_Bi_Channel *scheme_place_bi_peer_channel_create(Scheme_Place_Bi_Channel *orig); static int scheme_place_channel_ready(Scheme_Object *so, Scheme_Schedule_Info *sinfo); - - - static void scheme_place_async_send(Scheme_Place_Async_Channel *ch, Scheme_Object *o); static Scheme_Object *scheme_place_async_recv(Scheme_Place_Async_Channel *ch); - static Scheme_Object *scheme_places_deep_copy_to_master(Scheme_Object *so); /* Scheme_Object *scheme_places_deep_copy(Scheme_Object *so); */ @@ -51,6 +49,8 @@ static void *place_start_proc_after_stack(void *data_arg, void *stack_base); #else +SHARED_OK static int scheme_places_enabled = 0; + # define PLACE_PRIM_W_ARITY(name, func, a1, a2, env) GLOBAL_PRIM_W_ARITY(name, not_implemented, a1, a2, env) static Scheme_Object *not_implemented(int argc, Scheme_Object **argv) @@ -78,14 +78,16 @@ void scheme_init_place(Scheme_Env *env) plenv = scheme_primitive_module(scheme_intern_symbol("#%place"), env); - PLACE_PRIM_W_ARITY("place", scheme_place, 2, 2, plenv); - PLACE_PRIM_W_ARITY("place-sleep", scheme_place_sleep, 1, 1, plenv); - PLACE_PRIM_W_ARITY("place-wait", scheme_place_wait, 1, 1, plenv); - PLACE_PRIM_W_ARITY("place?", scheme_place_p, 1, 1, plenv); - PLACE_PRIM_W_ARITY("place-channel", scheme_place_channel, 0, 0, plenv); - PLACE_PRIM_W_ARITY("place-channel-send", scheme_place_send, 1, 2, plenv); - PLACE_PRIM_W_ARITY("place-channel-recv", scheme_place_recv, 1, 1, plenv); - PLACE_PRIM_W_ARITY("place-channel?", scheme_place_channel_p, 1, 1, plenv); + GLOBAL_PRIM_W_ARITY("place-enabled?", scheme_place_enabled, 0, 0, plenv); + GLOBAL_PRIM_W_ARITY("place-shared?", scheme_place_shared, 1, 1, plenv); + PLACE_PRIM_W_ARITY("place", scheme_place, 2, 2, plenv); + PLACE_PRIM_W_ARITY("place-sleep", scheme_place_sleep, 1, 1, plenv); + PLACE_PRIM_W_ARITY("place-wait", scheme_place_wait, 1, 1, plenv); + PLACE_PRIM_W_ARITY("place?", scheme_place_p, 1, 1, plenv); + PLACE_PRIM_W_ARITY("place-channel", scheme_place_channel, 0, 0, plenv); + PLACE_PRIM_W_ARITY("place-channel-send", scheme_place_send, 1, 2, plenv); + PLACE_PRIM_W_ARITY("place-channel-recv", scheme_place_recv, 1, 1, plenv); + PLACE_PRIM_W_ARITY("place-channel?", scheme_place_channel_p, 1, 1, plenv); #ifdef MZ_USE_PLACES REGISTER_SO(scheme_def_place_exit_proc); @@ -95,6 +97,16 @@ void scheme_init_place(Scheme_Env *env) } +static Scheme_Object* scheme_place_enabled(int argc, Scheme_Object *args[]) { + return (scheme_places_enabled == 0) ? scheme_false : scheme_true; +} + +static Scheme_Object* scheme_place_shared(int argc, Scheme_Object *args[]) { + return SHARED_ALLOCATEDP(args[0]) ? scheme_true : scheme_false; +} + + + void scheme_init_places_once() { #ifdef MZ_USE_PLACES scheme_add_evt(scheme_place_type, (Scheme_Ready_Fun)scheme_place_channel_ready, NULL, NULL, 1); diff --git a/src/racket/src/startup.inc b/src/racket/src/startup.inc index d89575c4d4..6eccc9b5bc 100644 --- a/src/racket/src/startup.inc +++ b/src/racket/src/startup.inc @@ -420,21 +420,25 @@ "(loop)))))))" ); EVAL_ONE_STR( -"(module #%builtin '#%kernel" -"(#%require '#%expobs" -"(only '#%foreign) " -"(only '#%unsafe) " -"(only '#%flfxnum) " -" '#%paramz" -" '#%network" -" '#%utils" -"(only '#%place)" -"(only '#%futures)))" +"(module #%place-struct '#%kernel" +"(define-values(struct:TH-place-channel TH-place-channel TH-place-channel? " +" TH-place-channel-ref TH-place-channel-set!)" +"(make-struct-type 'TH-place-channel #f 2 0 #f(list(cons prop:evt(lambda(x)(TH-place-channel-ref x 0))))))" +"(define-values(TH-place-channel-in TH-place-channel-out) " +"(values" +"(lambda(x)(TH-place-channel-ref x 0))" +"(lambda(x)(TH-place-channel-ref x 1))))" +"(#%provide " +" struct:TH-place-channel" +" TH-place-channel " +" TH-place-channel? " +" TH-place-channel-in" +" TH-place-channel-out))" ); EVAL_ONE_STR( "(module #%boot '#%kernel" "(#%require '#%min-stx '#%utils '#%paramz)" -"(#%provide boot seal)" +"(#%provide boot seal orig-paramz)" "(define-values(dll-suffix)" "(system-type 'so-suffix))" "(define-values(default-load/use-compiled)" @@ -810,4 +814,18 @@ "(set! orig-paramz" "(reparameterize " "(continuation-mark-set-first #f parameterization-key))))))" +); + EVAL_ONE_STR( +"(module #%builtin '#%kernel" +"(#%require '#%expobs" +"(only '#%foreign) " +"(only '#%unsafe) " +"(only '#%flfxnum) " +" '#%boot" +" '#%place-struct" +" '#%paramz" +" '#%network" +" '#%utils" +"(only '#%place)" +"(only '#%futures)))" ); diff --git a/src/racket/src/startup.rktl b/src/racket/src/startup.rktl index 6b3c2f76e6..8bc0feeb0e 100644 --- a/src/racket/src/startup.rktl +++ b/src/racket/src/startup.rktl @@ -493,21 +493,29 @@ (eval e) (loop))))))) + ;; ---------------------------------------- ;; A module that collects all the built-in modules, ;; so that it's easier to keep them attached in new ;; namespaces. -(module #%builtin '#%kernel - (#%require '#%expobs - (only '#%foreign) ; so it's attached, but doesn't depend on any exports - (only '#%unsafe) ; ditto - (only '#%flfxnum) ; ditto - '#%paramz - '#%network - '#%utils - (only '#%place) - (only '#%futures))) +(module #%place-struct '#%kernel + + (define-values (struct:TH-place-channel TH-place-channel TH-place-channel? + TH-place-channel-ref TH-place-channel-set!) + (make-struct-type 'TH-place-channel #f 2 0 #f (list (cons prop:evt (lambda (x) (TH-place-channel-ref x 0)))))) + + (define-values (TH-place-channel-in TH-place-channel-out) + (values + (lambda (x) (TH-place-channel-ref x 0)) + (lambda (x) (TH-place-channel-ref x 1)))) + + (#%provide + struct:TH-place-channel + TH-place-channel + TH-place-channel? + TH-place-channel-in + TH-place-channel-out)) ;; ---------------------------------------- ;; Handlers to install on startup @@ -515,7 +523,7 @@ (module #%boot '#%kernel (#%require '#%min-stx '#%utils '#%paramz) - (#%provide boot seal) + (#%provide boot seal orig-paramz) (define-values (dll-suffix) (system-type 'so-suffix)) @@ -915,3 +923,22 @@ (set! orig-paramz (reparameterize (continuation-mark-set-first #f parameterization-key)))))) + +;; ---------------------------------------- +;; A module that collects all the built-in modules, +;; so that it's easier to keep them attached in new +;; namespaces. + +(module #%builtin '#%kernel + (#%require '#%expobs + (only '#%foreign) ; so it's attached, but doesn't depend on any exports + (only '#%unsafe) ; ditto + (only '#%flfxnum) ; ditto + '#%boot + '#%place-struct + '#%paramz + '#%network + '#%utils + (only '#%place) + (only '#%futures))) + diff --git a/src/racket/src/string.c b/src/racket/src/string.c index a94210f332..32de924fc5 100644 --- a/src/racket/src/string.c +++ b/src/racket/src/string.c @@ -266,10 +266,8 @@ static Scheme_Object *string_normalize_kc (int argc, Scheme_Object *argv[]); static Scheme_Object *string_normalize_d (int argc, Scheme_Object *argv[]); static Scheme_Object *string_normalize_kd (int argc, Scheme_Object *argv[]); -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) static Scheme_Object *make_shared_byte_string (int argc, Scheme_Object *argv[]); static Scheme_Object *shared_byte_string (int argc, Scheme_Object *argv[]); -#endif static Scheme_Object *make_byte_string (int argc, Scheme_Object *argv[]); static Scheme_Object *byte_string (int argc, Scheme_Object *argv[]); @@ -695,13 +693,8 @@ scheme_init_string (Scheme_Env *env) 0, -1), env); -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) GLOBAL_PRIM_W_ARITY("make-shared-bytes", make_shared_byte_string, 1, 2, env); GLOBAL_PRIM_W_ARITY("shared-bytes", shared_byte_string, 0, -1, env); -#else - GLOBAL_PRIM_W_ARITY("make-shared-bytes", make_byte_string, 1, 2, env); - GLOBAL_PRIM_W_ARITY("shared-bytes", byte_string, 0, -1, env); -#endif scheme_add_global_constant("bytes-length", scheme_make_folding_prim(byte_string_length, diff --git a/src/racket/src/strops.inc b/src/racket/src/strops.inc index 20b47c338f..e6e8b55840 100644 --- a/src/racket/src/strops.inc +++ b/src/racket/src/strops.inc @@ -87,14 +87,16 @@ X(scheme_alloc, _string)(intptr_t size, Xchar fill) return str; } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) && defined(GENERATING_BYTE) +#if defined(GENERATING_BYTE) Scheme_Object * X(scheme_alloc_shared, _string)(intptr_t size, Xchar fill) { Scheme_Object *str; Xchar *s; intptr_t i; +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) void *original_gc; +#endif if (size < 0) { str = scheme_make_integer(size); @@ -102,7 +104,9 @@ X(scheme_alloc_shared, _string)(intptr_t size, Xchar fill) -1, 0, &str); } +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) original_gc = GC_switch_to_master_gc(); +#endif str = scheme_alloc_object(); str->type = scheme_x_string_type; SHARED_ALLOCATED_SET(str); @@ -111,7 +115,9 @@ X(scheme_alloc_shared, _string)(intptr_t size, Xchar fill) s = (Xchar *)scheme_malloc_atomic(sizeof(Xchar)*(size + 1)); else s = (Xchar *)scheme_malloc_fail_ok(scheme_malloc_atomic, sizeof(Xchar)*(size + 1)); +#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) GC_switch_back_from_master(original_gc); +#endif for (i = size; i--; ) { s[i] = fill; @@ -176,7 +182,7 @@ X__(string) (int argc, Scheme_Object *argv[]) return str; } -#if defined(MZ_USE_PLACES) && defined(MZ_PRECISE_GC) && defined(GENERATING_BYTE) +#if defined(GENERATING_BYTE) static Scheme_Object * X_(make_shared, string) (int argc, Scheme_Object *argv[]) { diff --git a/src/racket/src/thread.c b/src/racket/src/thread.c index 8f8bed47c2..3530d5f73d 100644 --- a/src/racket/src/thread.c +++ b/src/racket/src/thread.c @@ -331,6 +331,7 @@ static Scheme_Object *evt_p(int argc, Scheme_Object *args[]); static Scheme_Object *evts_to_evt(int argc, Scheme_Object *args[]); static Scheme_Object *make_custodian(int argc, Scheme_Object *argv[]); +static Scheme_Object *make_custodian_from_main(int argc, Scheme_Object *argv[]); static Scheme_Object *custodian_p(int argc, Scheme_Object *argv[]); static Scheme_Object *custodian_close_all(int argc, Scheme_Object *argv[]); static Scheme_Object *custodian_to_list(int argc, Scheme_Object *argv[]); @@ -632,6 +633,7 @@ void scheme_init_paramz(Scheme_Env *env) GLOBAL_PRIM_W_ARITY("extend-parameterization" , extend_parameterization , 1, -1, newenv); GLOBAL_PRIM_W_ARITY("check-for-break" , check_break_now , 0, 0, newenv); GLOBAL_PRIM_W_ARITY("reparameterize" , reparameterize , 1, 1, newenv); + GLOBAL_PRIM_W_ARITY("make-custodian-from-main", make_custodian_from_main, 0, 0, newenv); scheme_finish_primitive_module(newenv); scheme_protect_primitive_provide(newenv, NULL); @@ -1409,6 +1411,11 @@ static Scheme_Object *make_custodian(int argc, Scheme_Object *argv[]) return (Scheme_Object *)scheme_make_custodian(m); } +static Scheme_Object *make_custodian_from_main(int argc, Scheme_Object *argv[]) +{ + return (Scheme_Object *)scheme_make_custodian(NULL); +} + static Scheme_Object *custodian_p(int argc, Scheme_Object *argv[]) { return SCHEME_CUSTODIANP(argv[0]) ? scheme_true : scheme_false;