From 6ea9a2b3e3f915de7babf1c8ea79b0aaa225877f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 10 Apr 2013 10:25:10 -0600 Subject: [PATCH] add `make-environment-variables' Swap order of argument for `environment-variables-get' and `environment-variables-set!', so that the environment variables come first --- which follows the usual order. This change means that the parameter isn't used to get the default environment variables, but that seems ok; the convenient interface is `getenv' and `putenv'. On Windows, case-normalized environment variable names. Also, change the implementation to use an immutable hash internally. --- collects/racket/private/misc.rkt | 7 +- collects/scribblings/reference/envvars.scrbl | 36 +- collects/tests/racket/file.rktl | 32 +- collects/tests/racket/subprocess.rktl | 2 +- doc/release-notes/racket/HISTORY.txt | 3 + src/get-libs.rkt | 6 +- src/racket/src/cstartup.inc | 1311 +++++++++--------- src/racket/src/schminc.h | 2 +- src/racket/src/schpriv.h | 3 +- src/racket/src/schvers.h | 4 +- src/racket/src/startup.inc | 6 +- src/racket/src/startup.rktl | 6 +- src/racket/src/string.c | 218 +-- 13 files changed, 861 insertions(+), 775 deletions(-) diff --git a/collects/racket/private/misc.rkt b/collects/racket/private/misc.rkt index 63766cc457..c8dc905395 100644 --- a/collects/racket/private/misc.rkt +++ b/collects/racket/private/misc.rkt @@ -203,7 +203,8 @@ (define (getenv s) (unless (string-environment-variable-name? s) (raise-argument-error 'getenv "string-environment-variable-name?" s)) - (let ([v (environment-variables-get (string->bytes/locale s (char->integer #\?)))]) + (let ([v (environment-variables-get (current-environment-variables) + (string->bytes/locale s (char->integer #\?)))]) (and v (bytes->string/locale v #\?)))) @@ -213,9 +214,9 @@ (unless (string-no-nuls? t) (raise-argument-error 'putenv "string-no-nuls?" 1 s t)) (and - (environment-variables-set! (string->bytes/locale s (char->integer #\?)) + (environment-variables-set! (current-environment-variables) + (string->bytes/locale s (char->integer #\?)) (string->bytes/locale t (char->integer #\?)) - (current-environment-variables) (lambda () #f)) #t)) diff --git a/collects/scribblings/reference/envvars.scrbl b/collects/scribblings/reference/envvars.scrbl index 6eda33697d..2a60c813fa 100644 --- a/collects/scribblings/reference/envvars.scrbl +++ b/collects/scribblings/reference/envvars.scrbl @@ -9,6 +9,12 @@ from byte strings to bytes strings. A Racket process's initial environment variables: accesses or changes to the set read or change operating-system environment variables for the Racket process. +Since Windows environment variables are case-insensitive, and +@tech{environment variable set}'s key byte strings on Windows are +case-folded. More precisely, key byte strings are coerced to a UTF-8 +encoding of characters that are converted to lowercase via +@racket[string-locale-downcase]. + The current @tech{environment variable set}, which is determined by the @racket[current-environment-variables] parameter, is propagated to a @tech{subprocess} when the @tech{subprocess} is created. @@ -24,8 +30,7 @@ set}, @racket[#f] otherwise.} A @tech{parameter} that determines the @tech{environment variable set} that is propagated to a @tech{subprocess} and that is used as the -default set for functions such as @racket[environment-variables-get] or -@racket[getenv].} +default set for @racket[getenv] and @racket[putenv].} @defproc[(bytes-environment-variable-name? [v any/c]) boolean?]{ @@ -37,9 +42,17 @@ contain no bytes with the value @racket[0] or @racket[61], where environment variable name also must have a non-zero length.} -@defproc[(environment-variables-get [name bytes-environment-variable-name?] - [env environment-variables? - (current-environment-variables)]) +@defproc[(make-environment-variables [name bytes-environment-variable-name?] + [val bytes-no-nuls?] + ... ...) + environment-variables?]{ + +Creates a fresh @tech{environment variable set} that is initialized +with the given @racket[name] to @racket[val] mappings.} + + +@defproc[(environment-variables-get [env environment-variables?] + [name bytes-environment-variable-name?]) (or/c #f (and/c bytes-no-nuls? immutable?))]{ Returns the mapping for @racket[name] in @racket[env], returning @@ -47,14 +60,12 @@ Returns the mapping for @racket[name] in @racket[env], returning Normally, @racket[name] should be a byte-string encoding of a string using the default encoding of the current @tech{locale}. On Windows, -@racket[name] is coerced to a UTF-8 encoding if @racket[env] is the -initial @tech{environment variable set} of the Racket process.} +@racket[name] is coerced to a UTF-8 encoding and case-normalized.} -@defproc[(environment-variables-set! [name bytes-environment-variable-name?] +@defproc[(environment-variables-set! [env environment-variables?] + [name bytes-environment-variable-name?] [maybe-bstr (or/c bytes-no-nuls? #f)] - [env environment-variables? - (current-environment-variables)] [fail (-> any) (lambda () (raise (make-exn:fail ....)))]) @@ -68,8 +79,9 @@ for @racket[name] is removed. Normally, @racket[name] and @racket[maybe-bstr] should be a byte-string encoding of a string using the default encoding of the -current @tech{locale}. On Windows, @racket[name] and -@racket[maybe-bstr] are coerced to a UTF-8 encoding if @racket[env] is +current @tech{locale}. On Windows, @racket[name] is +coerced to a UTF-8 encoding and case-normalized, and +@racket[maybe-bstr] is coerced to a UTF-8 encoding if @racket[env] is the initial @tech{environment variable set} of the Racket process. On success, the result of @racket[environment-variables-set!] is diff --git a/collects/tests/racket/file.rktl b/collects/tests/racket/file.rktl index ba1b42e1eb..574ab18a39 100644 --- a/collects/tests/racket/file.rktl +++ b/collects/tests/racket/file.rktl @@ -1261,6 +1261,8 @@ (test #t environment-variables? (current-environment-variables)) (test #f environment-variables? 10) (test #t environment-variables? (environment-variables-copy (current-environment-variables))) +(test #t environment-variables? (make-environment-variables)) +(test #t environment-variables? (make-environment-variables #"A" #"1")) (test #t list? (environment-variables-keys (current-environment-variables))) (test #t andmap bytes? (environment-variables-keys (current-environment-variables))) (test #t = @@ -1274,6 +1276,11 @@ (test #f string-environment-variable-name? "x\0") (test (not (eq? 'windows (system-type))) string-environment-variable-name? "") +(test #"1" environment-variables-get (make-environment-variables #"a" #"1" #"b" #"two") #"a") +(test #"two" environment-variables-get (make-environment-variables #"a" #"1" #"b" #"two") #"b") +(test #f environment-variables-get (make-environment-variables #"a" #"1" #"b" #"two") #"c") +(test #f environment-variables-get (make-environment-variables) #"a") + (define (env-var-tests) (define success-1? (putenv "APPLE" "AnApple")) (define success-2? (putenv "BANANA" "AnotherApple")) @@ -1290,19 +1297,22 @@ (test "AnotherApple" getenv "BANANA") (test #f getenv "AnUndefinedEnvironmentVariable") - (test #"AnApple" environment-variables-get #"APPLE") - (err/rt-test (environment-variables-get #"=AP=PLE=")) - (test (void) environment-variables-set! #"APPLE" #"=x=") - (test #"=x=" environment-variables-get #"APPLE") - (test #"AnotherApple" environment-variables-get #"BANANA") - (test (void) environment-variables-set! #"BANANA" #f) - (test #f environment-variables-get #"BANANA") + (define env (current-environment-variables)) + (test #"AnApple" environment-variables-get env #"APPLE") + (err/rt-test (environment-variables-get env #"=AP=PLE=")) + (test (void) environment-variables-set! env #"APPLE" #"=x=") + (test #"=x=" environment-variables-get env #"APPLE") + (test #"AnotherApple" environment-variables-get env #"BANANA") + (test (void) environment-variables-set! env #"BANANA" #f) + (test #f environment-variables-get env #"BANANA") (test #f getenv "BANANA") - (test #"APPLE" car (member #"APPLE" (environment-variables-keys - (current-environment-variables)))) - (test #f member #"BANANA" (environment-variables-keys - (current-environment-variables)))) + (let ([apple (if (eq? 'windows (system-type)) + #"apple" + #"APPLE")]) + (test apple car (member apple (environment-variables-keys env)))) + (test #f member #"BANANA" (environment-variables-keys env)) + (test #f member #"banana" (environment-variables-keys env))) (parameterize ([current-environment-variables (environment-variables-copy diff --git a/collects/tests/racket/subprocess.rktl b/collects/tests/racket/subprocess.rktl index 39b0e37739..3452a0c456 100644 --- a/collects/tests/racket/subprocess.rktl +++ b/collects/tests/racket/subprocess.rktl @@ -470,7 +470,7 @@ [current-environment-variables (environment-variables-copy (current-environment-variables))]) - (environment-variables-set! #"Hola" #"hi, there") + (environment-variables-set! (current-environment-variables) #"Hola" #"hi, there") (system* self "-e" "(getenv \"Hola\")")) (test "\"hi, there\"\n" get-output-string out)) diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index 4882e4b9d6..b0a88231e1 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,3 +1,6 @@ +Version 5.3.4.3 +Added make-environment-variables + Version 5.3.4.2 Added current-environment-variables, environment-variables-get, environment-variables-set!, environment-variables-keys, diff --git a/src/get-libs.rkt b/src/get-libs.rkt index 266fea2821..d6879c2845 100644 --- a/src/get-libs.rkt +++ b/src/get-libs.rkt @@ -104,7 +104,8 @@ ["libpangocairo-1.0-0.dll" 94625] ["libpangowin32-1.0-0.dll" 143647] ["libpangoft2-1.0-0.dll" 679322]] - (if (environment-variables-get #"PLT_WIN_GTK") + (if (environment-variables-get (current-environment-variables) + #"PLT_WIN_GTK") '(["libatk-1.0-0.dll" 153763] ["libgtk-win32-2.0-0.dll" 4740156] ["libgdk-win32-2.0-0.dll" 827670] @@ -195,7 +196,8 @@ (define-values (path-size/show) (lambda (path) (let-values ([(sz) (path-size path)]) - (if (environment-variables-get #"PLT_SHOW_PATH_SIZES") + (if (environment-variables-get (current-environment-variables) + #"PLT_SHOW_PATH_SIZES") (printf "~s ~s\n" path sz) (void)) sz))) diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 52b75cc4a3..ebf402c44e 100644 --- a/src/racket/src/cstartup.inc +++ b/src/racket/src/cstartup.inc @@ -1,58 +1,58 @@ { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,50,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,0, -27,0,31,0,38,0,42,0,49,0,54,0,61,0,66,0,69,0,74,0,83, +27,0,34,0,38,0,45,0,52,0,55,0,60,0,65,0,69,0,74,0,83, 0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,0, 163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,129, 1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158,3, 225,3,114,4,2,5,56,5,67,5,150,5,0,0,113,7,0,0,69,35,37, 109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101,114, -105,122,101,63,97,110,100,66,100,101,102,105,110,101,63,108,101,116,66,117,110, -108,101,115,115,64,99,111,110,100,66,108,101,116,114,101,99,64,108,101,116,42, -62,111,114,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,11, +105,122,101,66,108,101,116,114,101,99,63,97,110,100,66,117,110,108,101,115,115, +66,100,101,102,105,110,101,62,111,114,64,108,101,116,42,64,99,111,110,100,63, +108,101,116,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,11, 65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,29, 94,2,15,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, -171,91,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16, -20,2,8,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,2, -2,10,2,2,2,3,2,2,2,9,2,2,2,11,2,2,2,12,2,2,97, -37,11,8,240,171,91,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2, -37,2,13,2,2,2,13,96,11,11,8,240,171,91,0,0,16,0,96,38,11, -8,240,171,91,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, +139,89,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,16, +20,2,3,2,2,2,4,2,2,2,10,2,2,2,5,2,2,2,6,2,2, +2,7,2,2,2,8,2,2,2,9,2,2,2,11,2,2,2,12,2,2,97, +37,11,8,240,139,89,0,0,93,159,2,16,36,37,16,2,2,13,161,2,2, +37,2,13,2,2,2,13,96,11,11,8,240,139,89,0,0,16,0,96,38,11, +8,240,139,89,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,14, 2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,164,4,195,249,22, 157,4,80,158,39,36,251,22,89,2,18,248,22,104,199,12,249,22,79,2,19, 248,22,106,201,27,248,22,164,4,195,249,22,157,4,80,158,39,36,251,22,89, 2,18,248,22,104,199,249,22,79,2,19,248,22,106,201,12,27,248,22,81,248, 22,164,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,22, -81,194,248,22,183,17,193,249,22,157,4,80,158,39,36,251,22,89,2,18,248, -22,183,17,199,249,22,79,2,4,248,22,184,17,201,11,18,100,10,13,16,6, +81,194,248,22,184,17,193,249,22,157,4,80,158,39,36,251,22,89,2,18,248, +22,184,17,199,249,22,79,2,5,248,22,185,17,201,11,18,100,10,13,16,6, 36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,2, -20,3,1,8,101,110,118,49,55,52,51,56,16,4,11,11,2,21,3,1,8, -101,110,118,49,55,52,51,57,27,248,22,81,248,22,164,4,196,28,248,22,87, -193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,183,17,193,249, +20,3,1,8,101,110,118,49,54,56,55,57,16,4,11,11,2,21,3,1,8, +101,110,118,49,54,56,56,48,27,248,22,81,248,22,164,4,196,28,248,22,87, +193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,184,17,193,249, 22,157,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,89, -2,23,248,22,183,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,11, -248,22,184,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, -8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,52, -52,49,16,4,11,11,2,21,3,1,8,101,110,118,49,55,52,52,50,248,22, +2,23,248,22,184,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2,8, +248,22,185,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,32, +8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,54,56, +56,50,16,4,11,11,2,21,3,1,8,101,110,118,49,54,56,56,51,248,22, 164,4,193,27,248,22,164,4,194,249,22,79,248,22,89,248,22,80,196,248,22, -184,17,195,27,248,22,81,248,22,164,4,23,197,1,249,22,157,4,80,158,39, +185,17,195,27,248,22,81,248,22,164,4,23,197,1,249,22,157,4,80,158,39, 36,28,248,22,64,248,22,158,4,248,22,80,23,198,2,27,249,22,2,32,0, 88,163,8,36,37,43,11,9,222,33,40,248,22,164,4,248,22,104,23,200,2, -250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,183,17,23,204,2, +250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,184,17,23,204,2, 250,22,90,2,25,249,22,2,22,80,23,204,2,248,22,106,23,206,2,249,22, -79,248,22,183,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22, +79,248,22,184,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2,22, 249,22,2,32,0,88,163,8,36,37,47,11,9,222,33,41,248,22,164,4,248, -22,183,17,201,248,22,184,17,198,27,248,22,164,4,194,249,22,79,248,22,89, -248,22,80,196,248,22,184,17,195,27,248,22,81,248,22,164,4,23,197,1,249, +22,184,17,201,248,22,185,17,198,27,248,22,164,4,194,249,22,79,248,22,89, +248,22,80,196,248,22,185,17,195,27,248,22,81,248,22,164,4,23,197,1,249, 22,157,4,80,158,39,36,250,22,90,2,24,249,22,2,32,0,88,163,8,36, -37,47,11,9,222,33,43,248,22,164,4,248,22,80,201,248,22,184,17,198,27, +37,47,11,9,222,33,43,248,22,164,4,248,22,80,201,248,22,185,17,198,27, 248,22,81,248,22,164,4,196,27,248,22,164,4,248,22,80,195,249,22,157,4, 80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250,22, -89,2,6,248,22,89,248,22,80,199,250,22,90,2,10,248,22,184,17,201,248, +89,2,11,248,22,89,248,22,80,199,250,22,90,2,9,248,22,185,17,201,248, 22,81,202,27,248,22,81,248,22,164,4,23,197,1,27,249,22,1,22,93,249, 22,2,22,164,4,248,22,164,4,248,22,80,199,248,22,184,4,249,22,157,4, 80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110,117, @@ -61,19 +61,19 @@ 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,26,202,250,22,90,2,22,9,248,22,81, 204,27,248,22,81,248,22,164,4,196,28,248,22,87,193,20,14,159,37,36,37, -249,22,157,4,80,158,39,36,27,248,22,164,4,248,22,80,197,28,249,22,160, +249,22,157,4,80,158,39,36,27,248,22,164,4,248,22,80,197,28,249,22,161, 9,62,61,62,248,22,158,4,248,22,104,196,250,22,89,2,22,248,22,89,249, -22,89,21,93,2,27,248,22,80,199,250,22,90,2,8,249,22,89,2,27,249, -22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,160, -9,248,22,158,4,248,22,80,200,64,101,108,115,101,10,248,22,183,17,197,250, -22,90,2,22,9,248,22,184,17,200,249,22,79,2,8,248,22,81,202,99,13, +22,89,21,93,2,27,248,22,80,199,250,22,90,2,10,249,22,89,2,27,249, +22,89,248,22,113,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,161, +9,248,22,158,4,248,22,80,200,64,101,108,115,101,10,248,22,184,17,197,250, +22,90,2,22,9,248,22,185,17,200,249,22,79,2,10,248,22,81,202,99,13, 16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11, -11,2,20,3,1,8,101,110,118,49,55,52,54,52,16,4,11,11,2,21,3, -1,8,101,110,118,49,55,52,54,53,18,158,94,10,64,118,111,105,100,8,48, +11,2,20,3,1,8,101,110,118,49,54,57,48,53,16,4,11,11,2,21,3, +1,8,101,110,118,49,54,57,48,54,18,158,94,10,64,118,111,105,100,8,48, 27,248,22,81,248,22,164,4,196,249,22,157,4,80,158,39,36,28,248,22,64, -248,22,158,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,183,17,199, -248,22,104,198,27,248,22,158,4,248,22,183,17,197,250,22,89,2,28,248,22, -89,248,22,80,197,250,22,90,2,25,248,22,184,17,199,248,22,184,17,202,159, +248,22,158,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,184,17,199, +248,22,104,198,27,248,22,158,4,248,22,184,17,197,250,22,89,2,28,248,22, +89,248,22,80,197,250,22,90,2,25,248,22,185,17,199,248,22,185,17,202,159, 36,20,114,159,36,16,1,11,16,0,20,26,150,9,2,1,2,1,2,2,11, 9,9,11,11,11,10,36,80,158,36,36,20,114,159,36,16,0,16,0,38,39, 36,16,0,36,16,0,36,11,11,11,16,10,2,3,2,4,2,5,2,6,2, @@ -82,25 +82,25 @@ 11,2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16,0, 16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,11, 20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,114,159,36,16,1, -2,13,16,1,33,33,10,16,5,2,7,88,163,8,36,37,53,37,9,223,0, +2,13,16,1,33,33,10,16,5,2,6,88,163,8,36,37,53,37,9,223,0, 33,34,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,12,88,163,8, 36,37,53,37,9,223,0,33,35,36,20,114,159,36,16,1,2,13,16,0,11, -16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159,36, -16,1,2,13,16,1,33,37,11,16,5,2,11,88,163,8,36,37,56,37,9, +16,5,2,5,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159,36, +16,1,2,13,16,1,33,37,11,16,5,2,8,88,163,8,36,37,56,37,9, 223,0,33,38,36,20,114,159,36,16,1,2,13,16,1,33,39,11,16,5,2, -6,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1,2, -13,16,0,11,16,5,2,9,88,163,8,36,37,53,37,9,223,0,33,44,36, -20,114,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37,54, +11,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1,2, +13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,36, +20,114,159,36,16,1,2,13,16,0,11,16,5,2,9,88,163,8,36,37,54, 37,9,223,0,33,45,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2, 3,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1,2, -13,16,0,11,16,5,2,8,88,163,8,36,37,58,37,9,223,0,33,47,36, -20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,5,88,163,8,36, +13,16,0,11,16,5,2,10,88,163,8,36,37,58,37,9,223,0,33,47,36, +20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,7,88,163,8,36, 37,54,37,9,223,0,33,50,36,20,114,159,36,16,1,2,13,16,0,11,16, 0,94,2,16,2,17,93,2,16,9,9,36,0}; EVAL_ONE_SIZED_STR((char *)expr, 2049); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,50,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,126,0,0,0,1,0,0,8,0,21,0, 26,0,43,0,55,0,77,0,106,0,121,0,139,0,151,0,167,0,181,0,203, 0,219,0,236,0,2,1,13,1,19,1,28,1,35,1,42,1,54,1,70,1, @@ -108,12 +108,12 @@ 2,61,2,105,2,112,2,122,2,137,2,146,2,151,2,153,2,177,2,198,2, 211,2,221,2,227,2,16,3,19,3,23,3,32,3,56,3,95,3,108,3,118, 3,129,3,181,3,204,3,212,3,236,3,1,4,214,4,244,4,125,8,148,8, -165,8,135,10,5,11,19,11,240,11,232,13,241,13,250,13,8,14,18,14,59, -15,184,15,1,16,74,16,178,16,207,16,22,17,159,17,230,17,184,18,192,18, -48,19,136,19,138,19,34,20,94,20,101,20,225,20,244,20,141,21,157,21,83, -23,111,23,120,23,194,24,212,24,226,24,247,24,7,25,55,25,64,25,82,25, -137,25,150,25,75,28,3,29,162,29,153,30,141,31,150,31,157,31,26,32,151, -32,2,34,89,34,178,34,13,35,206,35,238,35,113,36,0,0,35,41,0,0, +165,8,135,10,5,11,19,11,240,11,236,13,245,13,254,13,12,14,22,14,63, +15,188,15,5,16,78,16,182,16,211,16,26,17,163,17,234,17,188,18,196,18, +52,19,140,19,142,19,38,20,98,20,105,20,229,20,248,20,145,21,161,21,87, +23,115,23,124,23,198,24,216,24,230,24,251,24,11,25,59,25,68,25,86,25, +141,25,154,25,79,28,7,29,166,29,157,30,145,31,154,31,161,31,30,32,155, +32,6,34,97,34,190,34,29,35,222,35,254,35,129,36,0,0,51,41,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,71,114,101,114,111,111,116,45,112,97,116,104,1,20,102,105,110,100,45,101, @@ -156,470 +156,471 @@ 116,101,115,63,41,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,11,80,76,84,67,79,76,76,69,67,84,83,69,97,100,100,111,110, -45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,248,22,139,15,23, +45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,248,22,140,15,23, 195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,146,7,23,195,2,27, -248,22,161,15,23,196,2,28,23,193,2,192,86,94,23,193,1,248,22,162,15, +248,22,162,15,23,196,2,28,23,193,2,192,86,94,23,193,1,248,22,163,15, 23,196,1,11,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63, 93,91,92,92,93,34,0,6,35,114,120,34,47,34,0,22,35,114,120,34,91, 47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36,34,0,19,35,114, 120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34,86,94,28,28, -248,22,140,15,23,195,2,10,28,248,22,139,15,23,195,2,10,28,248,22,146, -7,23,195,2,28,248,22,161,15,23,195,2,10,248,22,162,15,23,195,2,11, -12,250,22,133,10,2,32,2,33,23,197,2,28,28,248,22,140,15,23,195,2, -249,22,160,9,248,22,141,15,23,197,2,2,34,249,22,160,9,247,22,172,8, -2,34,27,28,248,22,146,7,23,196,2,23,195,2,248,22,158,8,248,22,144, -15,23,197,2,28,249,22,132,16,2,58,23,195,2,86,94,23,193,1,28,248, -22,146,7,23,196,2,248,22,147,15,23,196,1,194,27,248,22,185,7,23,195, -1,249,22,148,15,248,22,161,8,250,22,140,16,2,59,28,249,22,132,16,2, -60,23,201,2,23,199,1,250,22,140,16,2,61,23,202,1,2,35,80,159,44, -37,38,2,34,28,248,22,146,7,23,195,2,248,22,147,15,23,195,1,193,0, +248,22,141,15,23,195,2,10,28,248,22,140,15,23,195,2,10,28,248,22,146, +7,23,195,2,28,248,22,162,15,23,195,2,10,248,22,163,15,23,195,2,11, +12,250,22,134,10,2,32,2,33,23,197,2,28,28,248,22,141,15,23,195,2, +249,22,161,9,248,22,142,15,23,197,2,2,34,249,22,161,9,247,22,173,8, +2,34,27,28,248,22,146,7,23,196,2,23,195,2,248,22,158,8,248,22,145, +15,23,197,2,28,249,22,133,16,2,58,23,195,2,86,94,23,193,1,28,248, +22,146,7,23,196,2,248,22,148,15,23,196,1,194,27,248,22,185,7,23,195, +1,249,22,149,15,248,22,161,8,250,22,141,16,2,59,28,249,22,133,16,2, +60,23,201,2,23,199,1,250,22,141,16,2,61,23,202,1,2,35,80,159,44, +37,38,2,34,28,248,22,146,7,23,195,2,248,22,148,15,23,195,1,193,0, 28,35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92,92,92,92, -85,78,67,92,92,92,92,34,86,95,28,28,28,248,22,139,15,23,195,2,10, -28,248,22,146,7,23,195,2,28,248,22,161,15,23,195,2,10,248,22,162,15, -23,195,2,11,10,248,22,140,15,23,195,2,12,252,22,133,10,2,5,2,36, -36,23,199,2,23,200,2,28,28,28,248,22,139,15,23,196,2,10,28,248,22, -146,7,23,196,2,28,248,22,161,15,23,196,2,10,248,22,162,15,23,196,2, -11,10,248,22,140,15,23,196,2,12,252,22,133,10,2,5,2,36,37,23,199, -2,23,200,2,27,28,248,22,140,15,23,196,2,248,22,141,15,23,196,2,247, -22,142,15,86,95,28,28,248,22,163,15,23,196,2,10,249,22,160,9,247,22, -142,15,23,195,2,12,253,22,135,10,2,5,6,54,54,112,97,116,104,32,105, +85,78,67,92,92,92,92,34,86,95,28,28,28,248,22,140,15,23,195,2,10, +28,248,22,146,7,23,195,2,28,248,22,162,15,23,195,2,10,248,22,163,15, +23,195,2,11,10,248,22,141,15,23,195,2,12,252,22,134,10,2,5,2,36, +36,23,199,2,23,200,2,28,28,28,248,22,140,15,23,196,2,10,28,248,22, +146,7,23,196,2,28,248,22,162,15,23,196,2,10,248,22,163,15,23,196,2, +11,10,248,22,141,15,23,196,2,12,252,22,134,10,2,5,2,36,37,23,199, +2,23,200,2,27,28,248,22,141,15,23,196,2,248,22,142,15,23,196,2,247, +22,143,15,86,95,28,28,248,22,164,15,23,196,2,10,249,22,161,9,247,22, +143,15,23,195,2,12,253,22,136,10,2,5,6,54,54,112,97,116,104,32,105, 115,32,110,111,116,32,99,111,109,112,108,101,116,101,32,97,110,100,32,110,111, 116,32,116,104,101,32,112,108,97,116,102,111,114,109,39,115,32,99,111,110,118, 101,110,116,105,111,110,2,37,23,201,2,6,24,24,112,108,97,116,102,111,114, -109,32,99,111,110,118,101,110,116,105,111,110,32,116,121,112,101,247,22,142,15, -28,249,22,160,9,28,248,22,140,15,23,199,2,248,22,141,15,23,199,2,247, -22,142,15,23,195,2,12,253,22,135,10,2,5,6,37,37,103,105,118,101,110, +109,32,99,111,110,118,101,110,116,105,111,110,32,116,121,112,101,247,22,143,15, +28,249,22,161,9,28,248,22,141,15,23,199,2,248,22,142,15,23,199,2,247, +22,143,15,23,195,2,12,253,22,136,10,2,5,6,37,37,103,105,118,101,110, 32,112,97,116,104,115,32,117,115,101,32,100,105,102,102,101,114,101,110,116,32, 99,111,110,118,101,110,116,105,111,110,115,2,37,23,201,2,6,9,9,114,111, -111,116,32,112,97,116,104,23,202,2,27,27,248,22,167,15,28,248,22,163,15, -23,199,2,23,198,1,248,22,164,15,23,199,1,86,94,28,28,248,22,140,15, -23,194,2,10,28,248,22,139,15,23,194,2,10,28,248,22,146,7,23,194,2, -28,248,22,161,15,23,194,2,10,248,22,162,15,23,194,2,11,12,250,22,133, -10,2,32,2,33,23,196,2,28,28,248,22,140,15,23,194,2,249,22,160,9, -248,22,141,15,23,196,2,2,34,249,22,160,9,247,22,172,8,2,34,27,28, -248,22,146,7,23,195,2,23,194,2,248,22,158,8,248,22,144,15,23,196,2, -28,249,22,132,16,2,58,23,195,2,86,94,23,193,1,28,248,22,146,7,23, -195,2,248,22,147,15,23,195,1,193,27,248,22,185,7,23,195,1,249,22,148, -15,248,22,161,8,250,22,140,16,2,59,28,249,22,132,16,2,60,23,201,2, -23,199,1,250,22,140,16,2,61,23,202,1,2,35,80,159,47,37,38,2,34, -28,248,22,146,7,23,194,2,248,22,147,15,23,194,1,192,27,248,22,144,15, -23,195,2,28,249,22,160,9,23,197,2,64,117,110,105,120,28,249,22,143,8, -23,195,1,5,1,47,86,95,23,195,1,23,194,1,28,248,22,140,15,23,199, -2,197,248,22,147,15,23,199,1,249,22,157,15,23,200,1,249,22,148,15,249, -22,146,8,248,22,144,15,23,201,1,37,23,199,1,28,249,22,160,9,23,197, -2,2,34,249,22,157,15,23,200,1,249,22,148,15,28,249,22,132,16,0,27, +111,116,32,112,97,116,104,23,202,2,27,27,248,22,168,15,28,248,22,164,15, +23,199,2,23,198,1,248,22,165,15,23,199,1,86,94,28,28,248,22,141,15, +23,194,2,10,28,248,22,140,15,23,194,2,10,28,248,22,146,7,23,194,2, +28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,2,11,12,250,22,134, +10,2,32,2,33,23,196,2,28,28,248,22,141,15,23,194,2,249,22,161,9, +248,22,142,15,23,196,2,2,34,249,22,161,9,247,22,173,8,2,34,27,28, +248,22,146,7,23,195,2,23,194,2,248,22,158,8,248,22,145,15,23,196,2, +28,249,22,133,16,2,58,23,195,2,86,94,23,193,1,28,248,22,146,7,23, +195,2,248,22,148,15,23,195,1,193,27,248,22,185,7,23,195,1,249,22,149, +15,248,22,161,8,250,22,141,16,2,59,28,249,22,133,16,2,60,23,201,2, +23,199,1,250,22,141,16,2,61,23,202,1,2,35,80,159,47,37,38,2,34, +28,248,22,146,7,23,194,2,248,22,148,15,23,194,1,192,27,248,22,145,15, +23,195,2,28,249,22,161,9,23,197,2,64,117,110,105,120,28,249,22,143,8, +23,195,1,5,1,47,86,95,23,195,1,23,194,1,28,248,22,141,15,23,199, +2,197,248,22,148,15,23,199,1,249,22,158,15,23,200,1,249,22,149,15,249, +22,146,8,248,22,145,15,23,201,1,37,23,199,1,28,249,22,161,9,23,197, +2,2,34,249,22,158,15,23,200,1,249,22,149,15,28,249,22,133,16,0,27, 35,114,120,34,94,92,92,92,92,92,92,92,92,91,63,93,92,92,92,92,91, 97,45,122,93,58,34,23,199,2,251,22,147,8,2,38,250,22,146,8,23,204, -2,40,41,5,1,92,249,22,146,8,23,203,1,42,28,249,22,132,16,2,63, -23,199,2,249,22,147,8,2,38,249,22,146,8,23,201,1,40,28,249,22,132, +2,40,41,5,1,92,249,22,146,8,23,203,1,42,28,249,22,133,16,2,63, +23,199,2,249,22,147,8,2,38,249,22,146,8,23,201,1,40,28,249,22,133, 16,2,63,23,199,2,249,22,147,8,2,38,249,22,146,8,23,201,1,40,28, -249,22,132,16,0,14,35,114,120,34,94,92,92,92,92,92,92,92,92,34,23, +249,22,133,16,0,14,35,114,120,34,94,92,92,92,92,92,92,92,92,34,23, 199,2,249,22,147,8,5,4,85,78,67,92,249,22,146,8,23,201,1,38,28, -249,22,132,16,0,12,35,114,120,34,94,91,97,45,122,93,58,34,23,199,2, +249,22,133,16,0,12,35,114,120,34,94,91,97,45,122,93,58,34,23,199,2, 249,22,147,8,250,22,146,8,23,202,2,36,37,249,22,146,8,23,201,1,38, 86,94,23,197,1,12,23,199,1,12,32,65,88,163,8,36,39,53,11,70,102, 111,117,110,100,45,101,120,101,99,222,33,68,32,66,88,163,8,36,40,58,11, -64,110,101,120,116,222,33,67,27,248,22,165,15,23,196,2,28,249,22,162,9, -23,195,2,23,197,1,11,28,248,22,161,15,23,194,2,27,249,22,157,15,23, -197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11,248,22,160, -15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,165, -15,23,199,2,28,249,22,162,9,23,195,2,23,200,2,11,28,248,22,161,15, -23,194,2,250,2,65,23,205,2,23,206,2,249,22,157,15,23,200,2,23,198, +64,110,101,120,116,222,33,67,27,248,22,166,15,23,196,2,28,249,22,163,9, +23,195,2,23,197,1,11,28,248,22,162,15,23,194,2,27,249,22,158,15,23, +197,1,23,196,1,28,23,197,2,90,159,39,11,89,161,39,36,11,248,22,161, +15,23,197,2,86,95,23,195,1,23,194,1,27,28,23,202,2,27,248,22,166, +15,23,199,2,28,249,22,163,9,23,195,2,23,200,2,11,28,248,22,162,15, +23,194,2,250,2,65,23,205,2,23,206,2,249,22,158,15,23,200,2,23,198, 1,250,2,65,23,205,2,23,206,2,23,196,1,11,28,23,193,2,192,86,94, -23,193,1,27,28,248,22,139,15,23,196,2,27,249,22,157,15,23,198,2,23, -205,2,28,28,248,22,152,15,193,10,248,22,151,15,193,192,11,11,28,23,193, -2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,165,15,23,200,2,28, -249,22,162,9,23,195,2,23,201,1,11,28,248,22,161,15,23,194,2,250,2, -65,23,206,1,23,207,1,249,22,157,15,23,201,1,23,198,1,86,94,23,196, +23,193,1,27,28,248,22,140,15,23,196,2,27,249,22,158,15,23,198,2,23, +205,2,28,28,248,22,153,15,193,10,248,22,152,15,193,192,11,11,28,23,193, +2,192,86,94,23,193,1,28,23,203,2,11,27,248,22,166,15,23,200,2,28, +249,22,163,9,23,195,2,23,201,1,11,28,248,22,162,15,23,194,2,250,2, +65,23,206,1,23,207,1,249,22,158,15,23,201,1,23,198,1,86,94,23,196, 1,250,2,65,23,206,1,23,207,1,23,196,1,192,86,94,23,194,1,28,23, -196,2,90,159,39,11,89,161,39,36,11,248,22,160,15,23,197,2,86,95,23, -195,1,23,194,1,27,28,23,201,2,27,248,22,165,15,23,199,2,28,249,22, -162,9,23,195,2,23,200,2,11,28,248,22,161,15,23,194,2,250,2,65,23, -204,2,23,205,2,249,22,157,15,23,200,2,23,198,1,250,2,65,23,204,2, +196,2,90,159,39,11,89,161,39,36,11,248,22,161,15,23,197,2,86,95,23, +195,1,23,194,1,27,28,23,201,2,27,248,22,166,15,23,199,2,28,249,22, +163,9,23,195,2,23,200,2,11,28,248,22,162,15,23,194,2,250,2,65,23, +204,2,23,205,2,249,22,158,15,23,200,2,23,198,1,250,2,65,23,204,2, 23,205,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22, -139,15,23,196,2,27,249,22,157,15,23,198,2,23,204,2,28,28,248,22,152, -15,193,10,248,22,151,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1, -28,23,202,2,11,27,248,22,165,15,23,200,2,28,249,22,162,9,23,195,2, -23,201,1,11,28,248,22,161,15,23,194,2,250,2,65,23,205,1,23,206,1, -249,22,157,15,23,201,1,23,198,1,86,94,23,196,1,250,2,65,23,205,1, +140,15,23,196,2,27,249,22,158,15,23,198,2,23,204,2,28,28,248,22,153, +15,193,10,248,22,152,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1, +28,23,202,2,11,27,248,22,166,15,23,200,2,28,249,22,163,9,23,195,2, +23,201,1,11,28,248,22,162,15,23,194,2,250,2,65,23,205,1,23,206,1, +249,22,158,15,23,201,1,23,198,1,86,94,23,196,1,250,2,65,23,205,1, 23,206,1,23,196,1,192,28,23,193,2,90,159,39,11,89,161,39,36,11,248, -22,160,15,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2,251,2, +22,161,15,23,199,2,86,95,23,195,1,23,194,1,27,28,23,198,2,251,2, 66,23,198,2,23,203,2,23,201,2,23,202,2,11,28,23,193,2,192,86,94, -23,193,1,27,28,248,22,139,15,23,196,2,27,249,22,157,15,23,198,2,23, -201,2,28,28,248,22,152,15,193,10,248,22,151,15,193,192,11,11,28,23,193, +23,193,1,27,28,248,22,140,15,23,196,2,27,249,22,158,15,23,198,2,23, +201,2,28,28,248,22,153,15,193,10,248,22,152,15,193,192,11,11,28,23,193, 2,192,86,94,23,193,1,28,23,199,2,11,251,2,66,23,199,1,23,204,1, 23,202,1,23,203,1,194,32,69,88,163,8,36,40,58,11,2,41,222,33,70, -28,248,22,87,23,197,2,11,27,248,22,164,15,248,22,80,23,199,2,27,249, -22,157,15,23,196,1,23,197,2,28,248,22,151,15,23,194,2,86,95,23,198, +28,248,22,87,23,197,2,11,27,248,22,165,15,248,22,80,23,199,2,27,249, +22,158,15,23,196,1,23,197,2,28,248,22,152,15,23,194,2,86,95,23,198, 1,23,195,1,250,2,65,23,199,1,23,200,1,23,196,1,86,94,23,193,1, -27,248,22,81,23,200,1,28,248,22,87,23,194,2,11,27,248,22,164,15,248, -22,80,23,196,2,27,249,22,157,15,23,196,1,23,200,2,28,248,22,151,15, +27,248,22,81,23,200,1,28,248,22,87,23,194,2,11,27,248,22,165,15,248, +22,80,23,196,2,27,249,22,158,15,23,196,1,23,200,2,28,248,22,152,15, 23,194,2,86,95,23,198,1,23,195,1,250,2,65,23,202,1,23,203,1,23, 196,1,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2, -11,27,248,22,164,15,248,22,80,23,196,2,27,249,22,157,15,23,196,1,23, -203,2,28,248,22,151,15,23,194,2,86,95,23,201,1,23,195,1,250,2,65, +11,27,248,22,165,15,248,22,80,23,196,2,27,249,22,158,15,23,196,1,23, +203,2,28,248,22,152,15,23,194,2,86,95,23,201,1,23,195,1,250,2,65, 23,205,1,23,206,1,23,196,1,86,94,23,193,1,251,2,69,23,205,1,23, -206,1,23,207,1,248,22,81,23,200,1,86,95,28,28,248,22,139,15,23,195, -2,10,28,248,22,146,7,23,195,2,28,248,22,161,15,23,195,2,10,248,22, -162,15,23,195,2,11,12,250,22,133,10,2,6,2,39,23,197,2,28,28,23, -195,2,28,28,248,22,139,15,23,196,2,10,28,248,22,146,7,23,196,2,28, -248,22,161,15,23,196,2,10,248,22,162,15,23,196,2,11,248,22,161,15,23, -196,2,11,10,12,250,22,133,10,2,6,6,45,45,40,111,114,47,99,32,35, +206,1,23,207,1,248,22,81,23,200,1,86,95,28,28,248,22,140,15,23,195, +2,10,28,248,22,146,7,23,195,2,28,248,22,162,15,23,195,2,10,248,22, +163,15,23,195,2,11,12,250,22,134,10,2,6,2,39,23,197,2,28,28,23, +195,2,28,28,248,22,140,15,23,196,2,10,28,248,22,146,7,23,196,2,28, +248,22,162,15,23,196,2,10,248,22,163,15,23,196,2,11,248,22,162,15,23, +196,2,11,10,12,250,22,134,10,2,6,6,45,45,40,111,114,47,99,32,35, 102,32,40,97,110,100,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63, 32,114,101,108,97,116,105,118,101,45,112,97,116,104,63,41,41,23,198,2,28, -28,248,22,161,15,23,195,2,90,159,39,11,89,161,39,36,11,248,22,160,15, -23,198,2,249,22,160,9,194,2,40,11,27,248,22,168,8,5,4,80,65,84, -72,27,28,23,194,2,249,80,158,40,41,249,22,158,8,23,198,1,7,63,9, -86,94,23,194,1,9,27,28,249,22,160,9,247,22,172,8,2,34,249,22,79, -248,22,148,15,5,1,46,23,196,1,23,194,1,28,248,22,87,23,194,2,11, -27,248,22,164,15,248,22,80,23,196,2,27,249,22,157,15,23,196,1,23,201, -2,28,248,22,151,15,23,194,2,86,95,23,199,1,23,195,1,250,2,65,23, -203,1,23,204,1,23,196,1,86,94,23,193,1,27,248,22,81,23,197,1,28, -248,22,87,23,194,2,11,27,248,22,164,15,248,22,80,23,196,2,27,249,22, -157,15,23,196,1,23,204,2,28,248,22,151,15,23,194,2,86,95,23,202,1, -23,195,1,250,2,65,23,206,1,23,207,1,23,196,1,86,94,23,193,1,27, -248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,164,15,248,22, -80,23,196,2,27,249,22,157,15,23,196,1,23,207,2,28,248,22,151,15,23, -194,2,86,95,23,205,1,23,195,1,250,2,65,23,209,1,23,210,1,23,196, -1,86,94,23,193,1,251,2,69,23,209,1,23,210,1,23,211,1,248,22,81, -23,200,1,27,248,22,164,15,23,196,1,28,248,22,151,15,23,194,2,250,2, -65,23,199,1,23,200,1,23,196,1,11,250,80,159,39,40,39,196,197,11,250, -80,159,39,40,39,196,11,11,32,74,88,163,8,36,39,57,11,2,41,222,33, -76,0,8,35,114,120,35,34,92,34,34,27,249,22,128,16,23,197,2,23,198, -2,28,23,193,2,86,94,23,196,1,27,248,22,104,23,195,2,27,27,248,22, -113,23,197,1,27,249,22,128,16,23,201,2,23,196,2,28,23,193,2,86,94, -23,194,1,27,248,22,104,23,195,2,27,250,2,74,23,203,2,23,204,1,248, -22,113,23,199,1,28,249,22,143,8,23,196,2,2,42,249,22,93,23,202,2, -194,249,22,79,248,22,148,15,28,249,22,160,9,247,22,172,8,2,34,250,22, -140,16,2,75,23,200,1,2,42,23,197,1,194,86,95,23,199,1,23,193,1, -28,249,22,143,8,23,196,2,2,42,249,22,93,23,200,2,9,249,22,79,248, -22,148,15,28,249,22,160,9,247,22,172,8,2,34,250,22,140,16,2,75,23, -200,1,2,42,23,197,1,9,28,249,22,143,8,23,196,2,2,42,249,22,93, -197,194,86,94,23,196,1,249,22,79,248,22,148,15,28,249,22,160,9,247,22, -172,8,2,34,250,22,140,16,2,75,23,200,1,2,42,23,197,1,194,86,94, -23,193,1,28,249,22,143,8,23,198,2,2,42,249,22,93,195,9,86,94,23, -194,1,249,22,79,248,22,148,15,28,249,22,160,9,247,22,172,8,2,34,250, -22,140,16,2,75,23,202,1,2,42,23,199,1,9,86,95,28,28,248,22,135, -8,23,195,2,10,248,22,146,7,23,195,2,12,250,22,133,10,2,7,6,21, -21,40,111,114,47,99,32,98,121,116,101,115,63,32,115,116,114,105,110,103,63, -41,23,197,2,28,28,248,22,88,23,196,2,249,22,4,22,139,15,23,197,2, -11,12,250,22,133,10,2,7,6,14,14,40,108,105,115,116,111,102,32,112,97, -116,104,63,41,23,198,2,250,2,74,23,198,1,23,196,1,28,248,22,146,7, -23,198,2,248,22,160,8,23,198,1,23,197,1,86,94,28,28,248,22,139,15, -23,195,2,10,28,248,22,146,7,23,195,2,28,248,22,161,15,23,195,2,10, -248,22,162,15,23,195,2,11,12,250,22,133,10,23,196,2,2,39,23,197,2, -28,248,22,161,15,23,195,2,12,251,22,135,10,23,197,1,2,43,2,37,23, -198,1,86,94,28,28,248,22,139,15,23,195,2,10,28,248,22,146,7,23,195, -2,28,248,22,161,15,23,195,2,10,248,22,162,15,23,195,2,11,12,250,22, -133,10,23,196,2,2,39,23,197,2,28,248,22,161,15,23,195,2,12,251,22, -135,10,23,197,1,2,43,2,37,23,198,1,86,94,86,94,28,28,248,22,139, -15,23,195,2,10,28,248,22,146,7,23,195,2,28,248,22,161,15,23,195,2, -10,248,22,162,15,23,195,2,11,12,250,22,133,10,23,196,2,2,39,23,197, -2,28,248,22,161,15,23,195,2,86,94,23,194,1,12,251,22,135,10,23,197, -2,2,43,2,37,23,198,1,249,22,3,20,20,94,88,163,8,36,37,47,11, -9,223,2,33,79,23,195,1,23,197,1,28,28,248,22,0,23,195,2,249,22, -50,23,196,2,37,11,12,250,22,133,10,23,196,1,2,44,23,197,1,86,94, -28,28,248,22,139,15,23,194,2,10,28,248,22,146,7,23,194,2,28,248,22, -161,15,23,194,2,10,248,22,162,15,23,194,2,11,12,250,22,133,10,2,11, -2,39,23,196,2,28,248,22,161,15,23,194,2,12,251,22,135,10,2,11,2, -43,2,37,23,197,1,86,95,86,94,86,94,28,28,248,22,139,15,23,196,2, -10,28,248,22,146,7,23,196,2,28,248,22,161,15,23,196,2,10,248,22,162, -15,23,196,2,11,12,250,22,133,10,2,11,2,39,23,198,2,28,248,22,161, -15,23,196,2,12,251,22,135,10,2,11,2,43,2,37,23,199,2,249,22,3, -32,0,88,163,8,36,37,46,11,9,222,33,82,23,198,2,28,28,248,22,0, -23,195,2,249,22,50,23,196,2,37,11,12,250,22,133,10,2,11,2,44,23, -197,2,251,80,158,40,46,23,198,1,23,199,1,23,200,1,11,86,94,28,28, -248,22,139,15,23,194,2,10,28,248,22,146,7,23,194,2,28,248,22,161,15, -23,194,2,10,248,22,162,15,23,194,2,11,12,250,22,133,10,2,13,2,39, -23,196,2,28,248,22,161,15,23,194,2,12,251,22,135,10,2,13,2,43,2, -37,23,197,1,86,96,86,94,28,28,248,22,139,15,23,196,2,10,28,248,22, -146,7,23,196,2,28,248,22,161,15,23,196,2,10,248,22,162,15,23,196,2, -11,12,250,22,133,10,2,13,2,39,23,198,2,28,248,22,161,15,23,196,2, -12,251,22,135,10,2,13,2,43,2,37,23,199,2,86,94,86,94,28,28,248, -22,139,15,23,197,2,10,28,248,22,146,7,23,197,2,28,248,22,161,15,23, -197,2,10,248,22,162,15,23,197,2,11,12,250,22,133,10,2,13,2,39,23, -199,2,28,248,22,161,15,23,197,2,12,251,22,135,10,2,13,2,43,2,37, -23,200,2,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,84,23,199, -2,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,133, -10,2,13,2,44,23,197,2,251,80,158,40,46,23,198,1,23,200,1,23,201, -1,23,199,1,0,6,45,105,110,102,46,48,27,248,22,179,15,2,45,27,28, -248,22,162,15,23,195,2,23,194,1,20,13,159,80,159,38,53,37,250,80,159, -41,54,37,249,22,33,11,80,159,43,53,37,22,180,15,248,22,179,15,68,111, -114,105,103,45,100,105,114,27,248,22,179,15,2,46,250,80,159,42,40,39,23, -196,1,23,198,1,11,28,23,193,2,250,22,157,15,23,196,1,6,6,6,99, -111,110,102,105,103,6,10,10,108,105,110,107,115,46,114,107,116,100,11,86,94, -28,248,22,132,12,23,197,2,27,247,22,156,10,28,249,22,148,10,23,195,2, -2,47,251,22,152,10,23,197,1,2,47,250,22,130,8,2,48,28,23,202,1, -80,159,46,48,38,80,159,46,51,38,248,22,128,12,23,205,2,247,22,29,12, -12,28,248,22,132,12,23,197,2,86,94,23,196,1,248,23,194,1,247,22,140, -2,195,2,86,86,95,28,248,22,132,12,23,198,2,27,247,22,156,10,28,249, -22,148,10,23,195,2,2,47,251,22,152,10,23,197,1,2,47,250,22,130,8, -2,48,28,23,203,2,80,159,47,48,38,80,159,47,51,38,248,22,128,12,23, -206,2,247,22,29,12,12,28,23,193,2,28,23,195,1,86,94,20,18,159,11, -80,158,39,49,247,22,140,2,20,18,159,11,80,158,39,50,23,193,1,86,94, -20,18,159,11,80,158,39,55,247,22,140,2,20,18,159,11,80,158,39,56,23, -193,1,86,94,23,195,1,12,28,248,22,132,12,23,198,2,86,94,23,197,1, -248,23,195,1,247,22,140,2,196,20,20,94,248,22,141,6,23,194,2,28,248, -22,141,7,248,22,141,6,23,195,1,12,248,22,129,10,6,30,30,101,120,112, -101,99,116,101,100,32,97,32,115,105,110,103,108,101,32,83,45,101,120,112,114, -101,115,115,105,111,110,248,22,129,6,23,194,1,28,248,22,88,23,194,2,28, -28,249,22,128,4,38,248,22,92,23,196,2,10,249,22,128,4,39,248,22,92, -23,196,2,28,28,248,22,146,7,248,22,80,23,195,2,10,249,22,160,9,64, -114,111,111,116,248,22,183,17,23,196,2,28,27,248,22,104,194,28,248,22,139, -15,23,194,2,10,28,248,22,146,7,23,194,2,28,248,22,161,15,23,194,2, -10,248,22,162,15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248, -22,141,16,248,22,113,195,11,11,11,11,250,22,158,2,23,197,1,23,198,1, -249,22,79,23,198,1,23,201,1,28,28,248,22,87,248,22,106,23,197,2,10, -249,22,132,16,248,22,113,23,198,2,247,22,164,8,27,248,22,166,15,249,22, -164,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22,80,23,198,2, -86,94,23,196,1,86,94,28,250,22,160,2,23,197,2,11,11,12,250,22,158, -2,23,197,2,11,9,249,22,164,2,23,196,2,20,20,95,88,163,8,36,38, -50,11,9,224,3,2,33,94,23,195,1,23,196,1,27,248,22,67,248,22,183, -17,23,199,1,250,22,158,2,23,198,2,23,196,2,249,22,79,248,22,131,2, -23,200,1,250,22,160,2,23,203,1,23,201,1,9,12,250,22,158,2,23,196, -1,23,197,1,248,22,94,23,199,1,20,13,159,80,159,37,58,37,88,163,36, -37,54,8,240,0,144,0,0,9,225,1,0,2,33,88,27,250,22,174,15,28, -23,197,2,80,159,41,48,38,80,159,41,51,38,11,32,0,88,163,8,36,36, -41,11,9,222,33,89,28,249,22,130,4,23,195,2,28,23,196,2,80,158,40, -50,80,158,40,56,20,13,159,80,159,38,58,37,20,20,94,88,163,36,37,55, -8,240,0,240,24,0,9,226,2,1,3,0,33,90,23,196,1,20,13,159,80, -159,38,53,37,26,29,80,159,8,31,54,37,249,22,33,11,80,159,8,33,53, -37,22,173,14,10,22,174,14,10,22,175,14,10,22,178,14,10,22,177,14,10, -22,179,14,10,22,176,14,10,22,180,14,10,22,181,14,10,22,182,14,10,22, -183,14,10,22,184,14,10,22,185,14,11,22,171,14,11,27,249,22,184,5,28, -196,80,159,41,48,38,80,159,41,51,38,66,98,105,110,97,114,121,27,250,22, -46,22,37,88,163,8,36,36,44,11,9,223,4,33,91,20,20,94,88,163,36, -36,43,11,9,223,4,33,92,23,197,1,86,94,28,28,248,22,88,23,194,2, -249,22,4,32,0,88,163,8,36,37,45,11,9,222,33,93,23,195,2,11,12, -248,22,129,10,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110, -116,101,110,116,27,247,22,140,2,27,90,159,39,11,89,161,39,36,11,248,22, -160,15,28,201,80,159,46,48,38,80,159,46,51,38,192,86,96,249,22,3,20, -20,94,88,163,8,36,37,54,11,9,224,2,3,33,95,23,195,1,23,197,1, -249,22,164,2,195,88,163,8,36,38,48,11,9,223,3,33,96,28,197,86,94, -20,18,159,11,80,158,42,49,193,20,18,159,11,80,158,42,50,196,86,94,20, -18,159,11,80,158,42,55,193,20,18,159,11,80,158,42,56,196,193,28,193,80, -158,38,49,80,158,38,55,248,22,9,20,20,94,88,163,8,32,37,8,40,8, -240,0,240,94,0,9,224,1,2,33,97,23,195,1,0,7,35,114,120,34,47, -43,34,28,248,22,146,7,23,195,2,27,249,22,130,16,2,99,23,197,2,28, +28,248,22,162,15,23,195,2,90,159,39,11,89,161,39,36,11,248,22,161,15, +23,198,2,249,22,161,9,194,2,40,11,27,249,22,168,8,247,22,167,8,5, +4,80,65,84,72,27,28,23,194,2,249,80,158,40,41,249,22,158,8,23,198, +1,7,63,9,86,94,23,194,1,9,27,28,249,22,161,9,247,22,173,8,2, +34,249,22,79,248,22,149,15,5,1,46,23,196,1,23,194,1,28,248,22,87, +23,194,2,11,27,248,22,165,15,248,22,80,23,196,2,27,249,22,158,15,23, +196,1,23,201,2,28,248,22,152,15,23,194,2,86,95,23,199,1,23,195,1, +250,2,65,23,203,1,23,204,1,23,196,1,86,94,23,193,1,27,248,22,81, +23,197,1,28,248,22,87,23,194,2,11,27,248,22,165,15,248,22,80,23,196, +2,27,249,22,158,15,23,196,1,23,204,2,28,248,22,152,15,23,194,2,86, +95,23,202,1,23,195,1,250,2,65,23,206,1,23,207,1,23,196,1,86,94, +23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22, +165,15,248,22,80,23,196,2,27,249,22,158,15,23,196,1,23,207,2,28,248, +22,152,15,23,194,2,86,95,23,205,1,23,195,1,250,2,65,23,209,1,23, +210,1,23,196,1,86,94,23,193,1,251,2,69,23,209,1,23,210,1,23,211, +1,248,22,81,23,200,1,27,248,22,165,15,23,196,1,28,248,22,152,15,23, +194,2,250,2,65,23,199,1,23,200,1,23,196,1,11,250,80,159,39,40,39, +196,197,11,250,80,159,39,40,39,196,11,11,32,74,88,163,8,36,39,57,11, +2,41,222,33,76,0,8,35,114,120,35,34,92,34,34,27,249,22,129,16,23, +197,2,23,198,2,28,23,193,2,86,94,23,196,1,27,248,22,104,23,195,2, +27,27,248,22,113,23,197,1,27,249,22,129,16,23,201,2,23,196,2,28,23, +193,2,86,94,23,194,1,27,248,22,104,23,195,2,27,250,2,74,23,203,2, +23,204,1,248,22,113,23,199,1,28,249,22,143,8,23,196,2,2,42,249,22, +93,23,202,2,194,249,22,79,248,22,149,15,28,249,22,161,9,247,22,173,8, +2,34,250,22,141,16,2,75,23,200,1,2,42,23,197,1,194,86,95,23,199, +1,23,193,1,28,249,22,143,8,23,196,2,2,42,249,22,93,23,200,2,9, +249,22,79,248,22,149,15,28,249,22,161,9,247,22,173,8,2,34,250,22,141, +16,2,75,23,200,1,2,42,23,197,1,9,28,249,22,143,8,23,196,2,2, +42,249,22,93,197,194,86,94,23,196,1,249,22,79,248,22,149,15,28,249,22, +161,9,247,22,173,8,2,34,250,22,141,16,2,75,23,200,1,2,42,23,197, +1,194,86,94,23,193,1,28,249,22,143,8,23,198,2,2,42,249,22,93,195, +9,86,94,23,194,1,249,22,79,248,22,149,15,28,249,22,161,9,247,22,173, +8,2,34,250,22,141,16,2,75,23,202,1,2,42,23,199,1,9,86,95,28, +28,248,22,135,8,23,195,2,10,248,22,146,7,23,195,2,12,250,22,134,10, +2,7,6,21,21,40,111,114,47,99,32,98,121,116,101,115,63,32,115,116,114, +105,110,103,63,41,23,197,2,28,28,248,22,88,23,196,2,249,22,4,22,140, +15,23,197,2,11,12,250,22,134,10,2,7,6,14,14,40,108,105,115,116,111, +102,32,112,97,116,104,63,41,23,198,2,250,2,74,23,198,1,23,196,1,28, +248,22,146,7,23,198,2,248,22,160,8,23,198,1,23,197,1,86,94,28,28, +248,22,140,15,23,195,2,10,28,248,22,146,7,23,195,2,28,248,22,162,15, +23,195,2,10,248,22,163,15,23,195,2,11,12,250,22,134,10,23,196,2,2, +39,23,197,2,28,248,22,162,15,23,195,2,12,251,22,136,10,23,197,1,2, +43,2,37,23,198,1,86,94,28,28,248,22,140,15,23,195,2,10,28,248,22, +146,7,23,195,2,28,248,22,162,15,23,195,2,10,248,22,163,15,23,195,2, +11,12,250,22,134,10,23,196,2,2,39,23,197,2,28,248,22,162,15,23,195, +2,12,251,22,136,10,23,197,1,2,43,2,37,23,198,1,86,94,86,94,28, +28,248,22,140,15,23,195,2,10,28,248,22,146,7,23,195,2,28,248,22,162, +15,23,195,2,10,248,22,163,15,23,195,2,11,12,250,22,134,10,23,196,2, +2,39,23,197,2,28,248,22,162,15,23,195,2,86,94,23,194,1,12,251,22, +136,10,23,197,2,2,43,2,37,23,198,1,249,22,3,20,20,94,88,163,8, +36,37,47,11,9,223,2,33,79,23,195,1,23,197,1,28,28,248,22,0,23, +195,2,249,22,50,23,196,2,37,11,12,250,22,134,10,23,196,1,2,44,23, +197,1,86,94,28,28,248,22,140,15,23,194,2,10,28,248,22,146,7,23,194, +2,28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,2,11,12,250,22, +134,10,2,11,2,39,23,196,2,28,248,22,162,15,23,194,2,12,251,22,136, +10,2,11,2,43,2,37,23,197,1,86,95,86,94,86,94,28,28,248,22,140, +15,23,196,2,10,28,248,22,146,7,23,196,2,28,248,22,162,15,23,196,2, +10,248,22,163,15,23,196,2,11,12,250,22,134,10,2,11,2,39,23,198,2, +28,248,22,162,15,23,196,2,12,251,22,136,10,2,11,2,43,2,37,23,199, +2,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,82,23,198,2,28, +28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,134,10,2, +11,2,44,23,197,2,251,80,158,40,46,23,198,1,23,199,1,23,200,1,11, +86,94,28,28,248,22,140,15,23,194,2,10,28,248,22,146,7,23,194,2,28, +248,22,162,15,23,194,2,10,248,22,163,15,23,194,2,11,12,250,22,134,10, +2,13,2,39,23,196,2,28,248,22,162,15,23,194,2,12,251,22,136,10,2, +13,2,43,2,37,23,197,1,86,96,86,94,28,28,248,22,140,15,23,196,2, +10,28,248,22,146,7,23,196,2,28,248,22,162,15,23,196,2,10,248,22,163, +15,23,196,2,11,12,250,22,134,10,2,13,2,39,23,198,2,28,248,22,162, +15,23,196,2,12,251,22,136,10,2,13,2,43,2,37,23,199,2,86,94,86, +94,28,28,248,22,140,15,23,197,2,10,28,248,22,146,7,23,197,2,28,248, +22,162,15,23,197,2,10,248,22,163,15,23,197,2,11,12,250,22,134,10,2, +13,2,39,23,199,2,28,248,22,162,15,23,197,2,12,251,22,136,10,2,13, +2,43,2,37,23,200,2,249,22,3,32,0,88,163,8,36,37,46,11,9,222, +33,84,23,199,2,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11, +12,250,22,134,10,2,13,2,44,23,197,2,251,80,158,40,46,23,198,1,23, +200,1,23,201,1,23,199,1,0,6,45,105,110,102,46,48,27,248,22,180,15, +2,45,27,28,248,22,163,15,23,195,2,23,194,1,20,13,159,80,159,38,53, +37,250,80,159,41,54,37,249,22,33,11,80,159,43,53,37,22,181,15,248,22, +180,15,68,111,114,105,103,45,100,105,114,27,248,22,180,15,2,46,250,80,159, +42,40,39,23,196,1,23,198,1,11,28,23,193,2,250,22,158,15,23,196,1, +6,6,6,99,111,110,102,105,103,6,10,10,108,105,110,107,115,46,114,107,116, +100,11,86,94,28,248,22,133,12,23,197,2,27,247,22,157,10,28,249,22,149, +10,23,195,2,2,47,251,22,153,10,23,197,1,2,47,250,22,130,8,2,48, +28,23,202,1,80,159,46,48,38,80,159,46,51,38,248,22,129,12,23,205,2, +247,22,29,12,12,28,248,22,133,12,23,197,2,86,94,23,196,1,248,23,194, +1,247,22,140,2,195,2,86,86,95,28,248,22,133,12,23,198,2,27,247,22, +157,10,28,249,22,149,10,23,195,2,2,47,251,22,153,10,23,197,1,2,47, +250,22,130,8,2,48,28,23,203,2,80,159,47,48,38,80,159,47,51,38,248, +22,129,12,23,206,2,247,22,29,12,12,28,23,193,2,28,23,195,1,86,94, +20,18,159,11,80,158,39,49,247,22,140,2,20,18,159,11,80,158,39,50,23, +193,1,86,94,20,18,159,11,80,158,39,55,247,22,140,2,20,18,159,11,80, +158,39,56,23,193,1,86,94,23,195,1,12,28,248,22,133,12,23,198,2,86, +94,23,197,1,248,23,195,1,247,22,140,2,196,20,20,94,248,22,141,6,23, +194,2,28,248,22,141,7,248,22,141,6,23,195,1,12,248,22,130,10,6,30, +30,101,120,112,101,99,116,101,100,32,97,32,115,105,110,103,108,101,32,83,45, +101,120,112,114,101,115,115,105,111,110,248,22,129,6,23,194,1,28,248,22,88, +23,194,2,28,28,249,22,128,4,38,248,22,92,23,196,2,10,249,22,128,4, +39,248,22,92,23,196,2,28,28,248,22,146,7,248,22,80,23,195,2,10,249, +22,161,9,64,114,111,111,116,248,22,184,17,23,196,2,28,27,248,22,104,194, +28,248,22,140,15,23,194,2,10,28,248,22,146,7,23,194,2,28,248,22,162, +15,23,194,2,10,248,22,163,15,23,194,1,11,27,248,22,87,248,22,106,195, +28,192,192,248,22,142,16,248,22,113,195,11,11,11,11,250,22,158,2,23,197, +1,23,198,1,249,22,79,23,198,1,23,201,1,28,28,248,22,87,248,22,106, +23,197,2,10,249,22,133,16,248,22,113,23,198,2,247,22,164,8,27,248,22, +167,15,249,22,165,15,248,22,104,23,200,2,23,198,1,28,248,22,64,248,22, +80,23,198,2,86,94,23,196,1,86,94,28,250,22,160,2,23,197,2,11,11, +12,250,22,158,2,23,197,2,11,9,249,22,164,2,23,196,2,20,20,95,88, +163,8,36,38,50,11,9,224,3,2,33,94,23,195,1,23,196,1,27,248,22, +67,248,22,184,17,23,199,1,250,22,158,2,23,198,2,23,196,2,249,22,79, +248,22,131,2,23,200,1,250,22,160,2,23,203,1,23,201,1,9,12,250,22, +158,2,23,196,1,23,197,1,248,22,94,23,199,1,20,13,159,80,159,37,58, +37,88,163,36,37,54,8,240,0,144,0,0,9,225,1,0,2,33,88,27,250, +22,175,15,28,23,197,2,80,159,41,48,38,80,159,41,51,38,11,32,0,88, +163,8,36,36,41,11,9,222,33,89,28,249,22,130,4,23,195,2,28,23,196, +2,80,158,40,50,80,158,40,56,20,13,159,80,159,38,58,37,20,20,94,88, +163,36,37,55,8,240,0,240,24,0,9,226,2,1,3,0,33,90,23,196,1, +20,13,159,80,159,38,53,37,26,29,80,159,8,31,54,37,249,22,33,11,80, +159,8,33,53,37,22,174,14,10,22,175,14,10,22,176,14,10,22,179,14,10, +22,178,14,10,22,180,14,10,22,177,14,10,22,181,14,10,22,182,14,10,22, +183,14,10,22,184,14,10,22,185,14,10,22,186,14,11,22,172,14,11,27,249, +22,184,5,28,196,80,159,41,48,38,80,159,41,51,38,66,98,105,110,97,114, +121,27,250,22,46,22,37,88,163,8,36,36,44,11,9,223,4,33,91,20,20, +94,88,163,36,36,43,11,9,223,4,33,92,23,197,1,86,94,28,28,248,22, +88,23,194,2,249,22,4,32,0,88,163,8,36,37,45,11,9,222,33,93,23, +195,2,11,12,248,22,130,10,6,18,18,105,108,108,45,102,111,114,109,101,100, +32,99,111,110,116,101,110,116,27,247,22,140,2,27,90,159,39,11,89,161,39, +36,11,248,22,161,15,28,201,80,159,46,48,38,80,159,46,51,38,192,86,96, +249,22,3,20,20,94,88,163,8,36,37,54,11,9,224,2,3,33,95,23,195, +1,23,197,1,249,22,164,2,195,88,163,8,36,38,48,11,9,223,3,33,96, +28,197,86,94,20,18,159,11,80,158,42,49,193,20,18,159,11,80,158,42,50, +196,86,94,20,18,159,11,80,158,42,55,193,20,18,159,11,80,158,42,56,196, +193,28,193,80,158,38,49,80,158,38,55,248,22,9,20,20,94,88,163,8,32, +37,8,40,8,240,0,240,94,0,9,224,1,2,33,97,23,195,1,0,7,35, +114,120,34,47,43,34,28,248,22,146,7,23,195,2,27,249,22,131,16,2,99, +23,197,2,28,23,193,2,28,249,22,128,4,248,22,103,23,196,2,248,22,182, +3,248,22,149,7,23,199,2,249,22,7,250,22,168,7,23,200,1,36,248,22, +103,23,199,1,23,198,1,249,22,7,250,22,168,7,23,200,2,36,248,22,103, +23,199,2,249,22,79,249,22,168,7,23,201,1,248,22,105,23,200,1,23,200, +1,249,22,7,23,197,1,23,198,1,90,159,39,11,89,161,39,36,11,248,22, +161,15,23,198,1,86,94,23,195,1,28,249,22,161,9,23,195,2,2,40,86, +94,23,193,1,249,22,7,23,196,1,23,200,1,27,249,22,79,23,197,1,23, +201,1,28,248,22,146,7,23,195,2,27,249,22,131,16,2,99,23,197,2,28, 23,193,2,28,249,22,128,4,248,22,103,23,196,2,248,22,182,3,248,22,149, 7,23,199,2,249,22,7,250,22,168,7,23,200,1,36,248,22,103,23,199,1, -23,198,1,249,22,7,250,22,168,7,23,200,2,36,248,22,103,23,199,2,249, -22,79,249,22,168,7,23,201,1,248,22,105,23,200,1,23,200,1,249,22,7, -23,197,1,23,198,1,90,159,39,11,89,161,39,36,11,248,22,160,15,23,198, -1,86,94,23,195,1,28,249,22,160,9,23,195,2,2,40,86,94,23,193,1, -249,22,7,23,196,1,23,200,1,27,249,22,79,23,197,1,23,201,1,28,248, -22,146,7,23,195,2,27,249,22,130,16,2,99,23,197,2,28,23,193,2,28, -249,22,128,4,248,22,103,23,196,2,248,22,182,3,248,22,149,7,23,199,2, -249,22,7,250,22,168,7,23,200,1,36,248,22,103,23,199,1,23,196,1,249, -22,7,250,22,168,7,23,200,2,36,248,22,103,23,199,2,249,22,79,249,22, -168,7,23,201,1,248,22,105,23,200,1,23,198,1,249,22,7,23,197,1,23, -196,1,90,159,39,11,89,161,39,36,11,248,22,160,15,23,198,1,86,94,23, -195,1,28,249,22,160,9,23,195,2,2,40,86,94,23,193,1,249,22,7,23, -196,1,23,198,1,249,80,159,45,59,39,194,249,22,79,197,199,32,101,88,163, -36,43,8,27,11,65,99,108,111,111,112,222,33,110,32,102,88,163,8,36,37, -47,11,2,41,222,33,105,32,103,88,163,36,37,43,11,69,116,111,45,115,116, -114,105,110,103,222,33,104,28,248,22,139,15,23,194,2,248,22,143,15,23,194, -1,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2,103,248,22,183, -17,23,196,1,250,22,90,248,2,103,248,22,183,17,23,198,2,2,50,248,2, -102,248,22,184,17,23,198,1,249,22,130,8,2,51,23,195,1,32,107,88,163, -36,38,48,11,66,102,105,108,116,101,114,222,33,108,28,248,22,87,23,195,2, -9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,183,17,23,197, -2,249,2,107,23,197,1,248,22,184,17,23,199,1,249,2,107,23,195,1,248, -22,184,17,23,197,1,249,22,130,8,2,51,248,22,134,2,23,196,1,28,248, -22,87,23,199,2,86,94,23,198,1,28,23,199,2,86,97,23,196,1,23,195, -1,23,194,1,23,193,1,28,23,197,2,249,22,157,15,23,201,1,23,199,1, -198,27,28,248,22,87,23,197,2,2,49,249,22,1,22,169,7,248,2,102,23, -199,2,248,23,198,1,251,22,130,8,6,70,70,99,111,108,108,101,99,116,105, -111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111,108,108,101,99, -116,105,111,110,58,32,126,115,10,32,32,105,110,32,99,111,108,108,101,99,116, -105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,126,97,28, -248,22,87,23,202,1,248,2,103,23,201,1,250,22,169,7,248,2,103,23,204, -1,2,50,23,201,2,249,22,1,22,169,7,249,22,2,32,0,88,163,8,36, -37,44,11,9,222,33,106,249,2,107,22,139,15,23,205,2,28,249,22,5,22, -133,2,23,201,2,250,22,130,8,6,49,49,10,32,32,32,115,117,98,45,99, -111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,112,97, -114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58,126,97,23,201, -1,249,22,1,22,169,7,249,22,2,32,0,88,163,8,36,37,45,11,9,222, -33,109,249,2,107,22,133,2,23,208,1,86,95,23,199,1,23,198,1,2,49, -27,248,22,80,23,200,2,27,28,248,22,139,15,23,195,2,249,22,157,15,23, -196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,139,15,248,22,80, -23,202,2,248,22,152,15,23,194,2,10,27,250,22,1,22,157,15,23,197,1, -23,201,2,28,28,248,22,87,23,199,2,10,248,22,152,15,23,194,2,28,23, -200,2,28,28,248,22,151,15,249,22,157,15,23,196,2,23,203,2,10,27,28, -248,22,139,15,23,202,2,248,22,143,15,23,202,2,23,201,2,19,248,22,149, -7,23,195,2,27,28,249,22,132,4,23,196,4,40,28,249,22,152,7,6,4, -4,46,114,107,116,249,22,168,7,23,199,2,249,22,184,3,23,200,4,40,249, -22,169,7,250,22,168,7,23,200,1,36,249,22,184,3,23,201,4,40,6,3, -3,46,115,115,86,95,23,195,1,23,194,1,11,11,28,23,193,2,248,22,151, -15,249,22,157,15,23,199,2,23,196,1,11,2,86,99,23,202,1,23,201,1, -23,199,1,23,198,1,23,197,1,23,196,1,28,23,200,2,249,22,157,15,23, +23,196,1,249,22,7,250,22,168,7,23,200,2,36,248,22,103,23,199,2,249, +22,79,249,22,168,7,23,201,1,248,22,105,23,200,1,23,198,1,249,22,7, +23,197,1,23,196,1,90,159,39,11,89,161,39,36,11,248,22,161,15,23,198, +1,86,94,23,195,1,28,249,22,161,9,23,195,2,2,40,86,94,23,193,1, +249,22,7,23,196,1,23,198,1,249,80,159,45,59,39,194,249,22,79,197,199, +32,101,88,163,36,43,8,27,11,65,99,108,111,111,112,222,33,110,32,102,88, +163,8,36,37,47,11,2,41,222,33,105,32,103,88,163,36,37,43,11,69,116, +111,45,115,116,114,105,110,103,222,33,104,28,248,22,140,15,23,194,2,248,22, +144,15,23,194,1,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2, +103,248,22,184,17,23,196,1,250,22,90,248,2,103,248,22,184,17,23,198,2, +2,50,248,2,102,248,22,185,17,23,198,1,249,22,130,8,2,51,23,195,1, +32,107,88,163,36,38,48,11,66,102,105,108,116,101,114,222,33,108,28,248,22, +87,23,195,2,9,28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22, +184,17,23,197,2,249,2,107,23,197,1,248,22,185,17,23,199,1,249,2,107, +23,195,1,248,22,185,17,23,197,1,249,22,130,8,2,51,248,22,134,2,23, +196,1,28,248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,86,97,23, +196,1,23,195,1,23,194,1,23,193,1,28,23,197,2,249,22,158,15,23,201, +1,23,199,1,198,27,28,248,22,87,23,197,2,2,49,249,22,1,22,169,7, +248,2,102,23,199,2,248,23,198,1,251,22,130,8,6,70,70,99,111,108,108, +101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,32,99,111, +108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,99,111,108, +108,101,99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,115,58,126, +97,126,97,28,248,22,87,23,202,1,248,2,103,23,201,1,250,22,169,7,248, +2,103,23,204,1,2,50,23,201,2,249,22,1,22,169,7,249,22,2,32,0, +88,163,8,36,37,44,11,9,222,33,106,249,2,107,22,140,15,23,205,2,28, +249,22,5,22,133,2,23,201,2,250,22,130,8,6,49,49,10,32,32,32,115, +117,98,45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105, +110,32,112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,101,115,58, +126,97,23,201,1,249,22,1,22,169,7,249,22,2,32,0,88,163,8,36,37, +45,11,9,222,33,109,249,2,107,22,133,2,23,208,1,86,95,23,199,1,23, +198,1,2,49,27,248,22,80,23,200,2,27,28,248,22,140,15,23,195,2,249, +22,158,15,23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,140, +15,248,22,80,23,202,2,248,22,153,15,23,194,2,10,27,250,22,1,22,158, +15,23,197,1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,153,15,23, +194,2,28,23,200,2,28,28,248,22,152,15,249,22,158,15,23,196,2,23,203, +2,10,27,28,248,22,140,15,23,202,2,248,22,144,15,23,202,2,23,201,2, +19,248,22,149,7,23,195,2,27,28,249,22,132,4,23,196,4,40,28,249,22, +152,7,6,4,4,46,114,107,116,249,22,168,7,23,199,2,249,22,184,3,23, +200,4,40,249,22,169,7,250,22,168,7,23,200,1,36,249,22,184,3,23,201, +4,40,6,3,3,46,115,115,86,95,23,195,1,23,194,1,11,11,28,23,193, +2,248,22,152,15,249,22,158,15,23,199,2,23,196,1,11,2,86,99,23,202, +1,23,201,1,23,199,1,23,198,1,23,197,1,23,196,1,28,23,200,2,249, +22,158,15,23,195,1,23,202,1,192,254,2,101,23,203,1,23,204,1,23,205, +1,23,206,1,23,207,1,248,22,81,23,209,1,28,23,209,2,86,94,23,200, +1,23,209,1,86,94,23,209,1,23,200,1,28,23,200,2,249,22,158,15,23, 195,1,23,202,1,192,254,2,101,23,203,1,23,204,1,23,205,1,23,206,1, -23,207,1,248,22,81,23,209,1,28,23,209,2,86,94,23,200,1,23,209,1, -86,94,23,209,1,23,200,1,28,23,200,2,249,22,157,15,23,195,1,23,202, -1,192,254,2,101,23,203,1,23,204,1,23,205,1,23,206,1,23,207,1,248, -22,81,23,209,1,23,209,1,86,94,23,193,1,254,2,101,23,202,1,23,203, -1,23,204,1,23,205,1,23,206,1,248,22,81,23,208,1,23,208,1,90,159, -38,11,89,161,38,36,11,249,80,159,40,59,39,23,199,1,23,200,1,27,248, -22,67,28,248,22,139,15,23,196,2,248,22,143,15,23,196,2,23,195,2,27, -247,22,185,15,27,250,22,93,28,23,197,2,28,247,22,184,15,27,248,80,159, -46,57,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28,23,193,2,192, -86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28,23,197,1,28, -80,159,44,51,38,27,248,80,159,46,57,39,11,27,250,22,160,2,23,197,2, -23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160,2,23,197,1, -11,9,86,94,23,198,1,9,9,247,22,181,15,254,2,101,23,200,2,23,203, -1,23,204,1,23,206,1,23,209,1,23,200,1,11,86,95,28,28,248,22,140, -15,23,194,2,10,28,248,22,139,15,23,194,2,10,28,248,22,146,7,23,194, -2,28,248,22,161,15,23,194,2,10,248,22,162,15,23,194,2,11,12,252,22, -133,10,23,200,2,2,33,36,23,198,2,23,199,2,28,28,248,22,146,7,23, -195,2,10,248,22,135,8,23,195,2,86,94,23,194,1,12,252,22,133,10,23, -200,2,2,52,37,23,198,2,23,199,1,90,159,39,11,89,161,39,36,11,248, -22,160,15,23,197,2,86,94,23,195,1,86,94,28,23,193,2,86,95,23,198, -1,23,196,1,12,250,22,136,10,23,201,1,2,53,23,199,1,249,22,7,23, -195,1,23,196,1,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,140, -15,23,196,2,10,28,248,22,139,15,23,196,2,10,28,248,22,146,7,23,196, -2,28,248,22,161,15,23,196,2,10,248,22,162,15,23,196,2,11,12,252,22, -133,10,2,27,2,33,36,23,200,2,23,201,2,28,28,248,22,146,7,23,197, -2,10,248,22,135,8,23,197,2,12,252,22,133,10,2,27,2,52,37,23,200, -2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,160,15,23,199,2,86, -94,23,195,1,86,94,28,192,12,250,22,136,10,2,27,2,53,23,201,2,249, -22,7,194,195,27,249,22,149,15,250,22,139,16,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,15,23,201,1, -28,248,22,146,7,23,203,2,249,22,161,8,23,204,1,8,63,23,202,1,28, -248,22,140,15,23,199,2,248,22,141,15,23,199,1,86,94,23,198,1,247,22, -142,15,28,248,22,139,15,23,195,2,249,22,157,15,23,196,1,23,195,1,192, -90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,140,15,23,196,2,10, -28,248,22,139,15,23,196,2,10,28,248,22,146,7,23,196,2,28,248,22,161, -15,23,196,2,10,248,22,162,15,23,196,2,11,12,252,22,133,10,2,28,2, -33,36,23,200,2,23,201,2,28,28,248,22,146,7,23,197,2,10,248,22,135, -8,23,197,2,12,252,22,133,10,2,28,2,52,37,23,200,2,23,201,2,90, -159,39,11,89,161,39,36,11,248,22,160,15,23,199,2,86,94,23,195,1,86, -94,28,192,12,250,22,136,10,2,28,2,53,23,201,2,249,22,7,194,195,27, -249,22,149,15,249,22,147,8,250,22,140,16,0,9,35,114,120,35,34,91,46, -93,34,248,22,145,15,23,203,1,6,1,1,95,28,248,22,146,7,23,202,2, -249,22,161,8,23,203,1,8,63,23,201,1,28,248,22,140,15,23,199,2,248, -22,141,15,23,199,1,86,94,23,198,1,247,22,142,15,28,248,22,139,15,23, -195,2,249,22,157,15,23,196,1,23,195,1,192,249,247,22,173,5,23,195,1, -11,249,247,22,173,5,194,11,28,248,22,87,23,195,2,9,27,248,22,80,23, -196,2,27,28,248,22,163,15,23,195,2,23,194,1,28,248,22,162,15,23,195, -2,249,22,164,15,23,196,1,250,80,159,43,40,39,248,22,179,15,2,46,11, -10,250,80,159,41,40,39,248,22,179,15,2,46,23,197,1,10,28,23,193,2, -249,22,79,248,22,166,15,249,22,164,15,23,198,1,247,22,180,15,248,80,159, -41,8,30,39,248,22,81,23,200,1,86,94,23,193,1,248,80,159,39,8,30, -39,248,22,81,23,198,1,28,248,22,87,23,195,2,9,27,248,22,80,23,196, -2,27,28,248,22,163,15,23,195,2,23,194,1,28,248,22,162,15,23,195,2, -249,22,164,15,23,196,1,250,80,159,43,40,39,248,22,179,15,2,46,11,10, -250,80,159,41,40,39,248,22,179,15,2,46,23,197,1,10,28,23,193,2,249, -22,79,248,22,166,15,249,22,164,15,23,198,1,247,22,180,15,248,80,159,41, -8,31,39,248,22,81,23,200,1,86,94,23,193,1,248,80,159,39,8,31,39, -248,22,81,23,198,1,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2, -27,28,248,22,163,15,23,195,2,23,194,1,28,248,22,162,15,23,195,2,249, -22,164,15,23,196,1,250,80,159,43,40,39,248,22,179,15,2,46,11,10,250, -80,159,41,40,39,248,22,179,15,2,46,23,197,1,10,28,23,193,2,249,22, -79,248,22,166,15,249,22,164,15,23,198,1,247,22,180,15,27,248,22,81,23, -200,1,28,248,22,87,23,194,2,9,27,248,22,80,23,195,2,27,28,248,22, -163,15,23,195,2,23,194,1,28,248,22,162,15,23,195,2,249,22,164,15,23, -196,1,250,80,159,48,40,39,248,22,179,15,2,46,11,10,250,80,159,46,40, -39,248,22,179,15,2,46,23,197,1,10,28,23,193,2,249,22,79,248,22,166, -15,249,22,164,15,23,198,1,247,22,180,15,248,80,159,46,8,32,39,248,22, -81,23,199,1,86,94,23,193,1,248,80,159,44,8,32,39,248,22,81,23,197, -1,86,94,23,193,1,27,248,22,81,23,198,1,28,248,22,87,23,194,2,9, -27,248,22,80,23,195,2,27,28,248,22,163,15,23,195,2,23,194,1,28,248, -22,162,15,23,195,2,249,22,164,15,23,196,1,250,80,159,46,40,39,248,22, -179,15,2,46,11,10,250,80,159,44,40,39,248,22,179,15,2,46,23,197,1, -10,28,23,193,2,249,22,79,248,22,166,15,249,22,164,15,23,198,1,247,22, -180,15,248,80,159,44,8,32,39,248,22,81,23,199,1,86,94,23,193,1,248, -80,159,42,8,32,39,248,22,81,23,197,1,27,247,22,184,15,249,80,159,39, -41,38,28,23,195,2,27,248,22,168,8,2,54,28,192,249,22,158,8,194,7, -63,2,49,2,49,27,28,23,196,1,250,22,157,15,248,22,179,15,2,55,247, -22,164,8,2,56,11,27,248,80,159,42,8,30,39,250,22,93,9,248,22,89, -248,22,179,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,184,15,249, -80,159,39,41,38,28,23,195,2,27,248,22,168,8,2,54,28,192,249,22,158, -8,194,7,63,2,49,2,49,27,28,23,196,1,250,22,157,15,248,22,179,15, -2,55,247,22,164,8,2,56,11,27,248,80,159,42,8,31,39,250,22,93,23, -203,1,248,22,89,248,22,179,15,2,45,9,28,193,249,22,79,195,194,192,27, -247,22,184,15,249,80,159,39,41,38,28,23,195,2,27,248,22,168,8,2,54, -28,192,249,22,158,8,194,7,63,2,49,2,49,27,28,23,196,1,250,22,157, -15,248,22,179,15,2,55,247,22,164,8,2,56,11,27,248,80,159,42,8,32, -39,250,22,93,23,203,1,248,22,89,248,22,179,15,2,45,23,204,1,28,193, -249,22,79,195,194,192,27,20,13,159,80,159,37,53,37,254,80,159,44,54,37, -249,22,33,11,80,159,46,53,37,22,177,14,10,22,184,14,10,22,185,14,10, -248,22,141,6,23,196,2,28,248,22,141,7,23,194,2,12,86,94,248,22,168, -9,23,194,1,27,20,13,159,80,159,38,53,37,254,80,159,45,54,37,249,22, -33,11,80,159,47,53,37,22,177,14,10,22,184,14,10,22,185,14,10,248,22, -141,6,23,197,2,28,248,22,141,7,23,194,2,12,86,94,248,22,168,9,23, -194,1,27,20,13,159,80,159,39,53,37,254,80,159,46,54,37,249,22,33,11, -80,159,48,53,37,22,177,14,10,22,184,14,10,22,185,14,10,248,22,141,6, -23,198,2,28,248,22,141,7,23,194,2,12,86,94,248,22,168,9,23,194,1, -248,80,159,40,8,33,39,23,198,1,86,94,249,22,132,7,247,22,169,5,23, -196,2,248,22,156,6,249,22,136,4,36,249,22,184,3,23,198,1,23,199,1, -27,28,23,197,2,86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1, -27,248,22,179,15,2,46,27,250,80,159,42,40,39,23,197,1,11,11,27,248, -22,139,4,23,199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27, -248,22,139,4,23,202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36, -249,22,136,6,23,199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2, -33,124,23,195,1,23,197,1,27,248,22,185,5,23,195,1,248,80,159,39,8, -33,39,23,194,1,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2, -1,2,1,29,11,11,11,11,9,9,11,11,11,10,43,80,158,36,36,20,114, -159,40,16,30,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,20,76,102,105, -110,100,45,108,105,110,107,115,45,112,97,116,104,33,11,4,30,2,21,1,20, -112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11, -6,30,2,21,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,11,3,2,22,2,23,2,24,30,2,20,1,21, -101,120,99,101,112,116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121, -11,2,2,25,2,26,2,27,2,28,2,29,2,30,2,31,16,0,37,39,36, -16,0,36,16,13,2,9,2,10,2,8,2,3,2,26,2,24,2,22,2,17, -2,23,2,25,2,15,2,14,2,16,49,11,11,11,16,13,2,13,2,11,2, -31,2,12,2,6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5, -16,13,11,11,11,11,11,11,11,11,11,11,11,11,11,16,13,2,13,2,11, -2,31,2,12,2,6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2, -5,49,49,37,12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0, -16,0,16,0,36,36,16,30,20,15,16,2,32,0,88,163,36,37,45,11,2, -2,222,33,57,80,159,36,36,37,20,15,16,2,249,22,148,7,7,92,7,92, -80,159,36,37,37,20,15,16,2,88,163,36,37,54,38,2,4,223,0,33,62, -80,159,36,38,37,20,15,16,2,88,163,36,38,58,38,2,5,223,0,33,64, -80,159,36,39,37,20,15,16,2,20,25,96,2,6,88,163,8,36,39,8,25, -8,32,9,223,0,33,71,88,163,36,38,47,52,9,223,0,33,72,88,163,36, -37,46,52,9,223,0,33,73,80,159,36,40,37,20,15,16,2,27,248,22,188, -15,248,22,160,8,27,28,249,22,160,9,247,22,172,8,2,34,6,1,1,59, -6,1,1,58,250,22,130,8,6,14,14,40,91,94,126,97,93,42,41,126,97, -40,46,42,41,23,196,2,23,196,1,88,163,8,36,38,48,11,2,7,223,0, -33,77,80,159,36,41,37,20,15,16,2,32,0,88,163,8,36,38,47,11,2, -8,222,33,78,80,159,36,42,37,20,15,16,2,32,0,88,163,8,36,39,48, -11,2,9,222,33,80,80,159,36,43,37,20,15,16,2,32,0,88,163,8,36, -38,46,11,2,10,222,33,81,80,159,36,44,37,20,15,16,2,88,163,45,39, -49,8,128,16,2,11,223,0,33,83,80,159,36,45,37,20,15,16,2,88,163, -45,40,50,8,128,16,2,13,223,0,33,85,80,159,36,47,37,20,15,16,2, -248,22,179,15,70,108,105,110,107,115,45,102,105,108,101,80,159,36,48,37,20, -15,16,2,247,22,140,2,80,158,36,49,20,15,16,2,2,86,80,158,36,50, -20,15,16,2,248,80,159,37,52,37,88,163,36,36,49,8,240,16,0,6,0, -9,223,1,33,87,80,159,36,51,37,20,15,16,2,247,22,140,2,80,158,36, -55,20,15,16,2,2,86,80,158,36,56,20,15,16,2,88,163,36,37,44,8, -240,0,240,94,0,2,24,223,0,33,98,80,159,36,57,37,20,15,16,2,88, -163,36,38,56,8,240,0,0,128,0,2,25,223,0,33,100,80,159,36,59,37, -20,15,16,2,88,163,36,40,59,8,240,0,128,160,0,2,12,223,0,33,111, -80,159,36,46,37,20,15,16,2,32,0,88,163,36,39,50,11,2,26,222,33, -112,80,159,36,8,24,37,20,15,16,2,32,0,88,163,36,38,53,11,2,27, -222,33,113,80,159,36,8,25,37,20,15,16,2,32,0,88,163,36,38,54,11, -2,28,222,33,114,80,159,36,8,26,37,20,15,16,2,20,27,158,32,0,88, -163,36,37,44,11,2,29,222,33,115,32,0,88,163,36,37,44,11,2,29,222, -33,116,80,159,36,8,27,37,20,15,16,2,88,163,8,36,37,51,16,2,52, -8,240,0,64,0,0,2,41,223,0,33,117,80,159,36,8,30,39,20,15,16, -2,88,163,8,36,37,51,16,2,52,8,240,0,128,0,0,2,41,223,0,33, -118,80,159,36,8,31,39,20,15,16,2,88,163,8,36,37,56,16,4,52,36, -37,36,2,41,223,0,33,119,80,159,36,8,32,39,20,15,16,2,20,25,96, -2,30,88,163,36,36,53,16,2,8,32,8,240,0,64,0,0,9,223,0,33, -120,88,163,36,37,54,16,2,8,32,8,240,0,128,0,0,9,223,0,33,121, -88,163,36,38,55,16,4,8,32,36,37,36,9,223,0,33,122,80,159,36,8, -28,37,20,15,16,2,88,163,8,36,37,55,16,4,36,42,38,36,2,41,223, -0,33,123,80,159,36,8,33,39,20,15,16,2,88,163,8,36,39,54,16,4, -52,36,38,36,2,31,223,0,33,125,80,159,36,8,29,37,95,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,2,20,9,9,9,36,0}; - EVAL_ONE_SIZED_STR((char *)expr, 10825); +23,207,1,248,22,81,23,209,1,23,209,1,86,94,23,193,1,254,2,101,23, +202,1,23,203,1,23,204,1,23,205,1,23,206,1,248,22,81,23,208,1,23, +208,1,90,159,38,11,89,161,38,36,11,249,80,159,40,59,39,23,199,1,23, +200,1,27,248,22,67,28,248,22,140,15,23,196,2,248,22,144,15,23,196,2, +23,195,2,27,247,22,186,15,27,250,22,93,28,23,197,2,28,247,22,185,15, +27,248,80,159,46,57,39,10,27,250,22,160,2,23,197,2,23,203,2,11,28, +23,193,2,192,86,94,23,193,1,250,22,160,2,23,197,1,11,9,9,9,28, +23,197,1,28,80,159,44,51,38,27,248,80,159,46,57,39,11,27,250,22,160, +2,23,197,2,23,203,1,11,28,23,193,2,192,86,94,23,193,1,250,22,160, +2,23,197,1,11,9,86,94,23,198,1,9,9,247,22,182,15,254,2,101,23, +200,2,23,203,1,23,204,1,23,206,1,23,209,1,23,200,1,11,86,95,28, +28,248,22,141,15,23,194,2,10,28,248,22,140,15,23,194,2,10,28,248,22, +146,7,23,194,2,28,248,22,162,15,23,194,2,10,248,22,163,15,23,194,2, +11,12,252,22,134,10,23,200,2,2,33,36,23,198,2,23,199,2,28,28,248, +22,146,7,23,195,2,10,248,22,135,8,23,195,2,86,94,23,194,1,12,252, +22,134,10,23,200,2,2,52,37,23,198,2,23,199,1,90,159,39,11,89,161, +39,36,11,248,22,161,15,23,197,2,86,94,23,195,1,86,94,28,23,193,2, +86,95,23,198,1,23,196,1,12,250,22,137,10,23,201,1,2,53,23,199,1, +249,22,7,23,195,1,23,196,1,90,159,38,11,89,161,38,36,11,86,95,28, +28,248,22,141,15,23,196,2,10,28,248,22,140,15,23,196,2,10,28,248,22, +146,7,23,196,2,28,248,22,162,15,23,196,2,10,248,22,163,15,23,196,2, +11,12,252,22,134,10,2,27,2,33,36,23,200,2,23,201,2,28,28,248,22, +146,7,23,197,2,10,248,22,135,8,23,197,2,12,252,22,134,10,2,27,2, +52,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,161,15, +23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,137,10,2,27,2,53, +23,201,2,249,22,7,194,195,27,249,22,150,15,250,22,140,16,0,20,35,114, +120,35,34,40,63,58,91,46,93,91,94,46,93,42,124,41,36,34,248,22,146, +15,23,201,1,28,248,22,146,7,23,203,2,249,22,161,8,23,204,1,8,63, +23,202,1,28,248,22,141,15,23,199,2,248,22,142,15,23,199,1,86,94,23, +198,1,247,22,143,15,28,248,22,140,15,23,195,2,249,22,158,15,23,196,1, +23,195,1,192,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,141,15, +23,196,2,10,28,248,22,140,15,23,196,2,10,28,248,22,146,7,23,196,2, +28,248,22,162,15,23,196,2,10,248,22,163,15,23,196,2,11,12,252,22,134, +10,2,28,2,33,36,23,200,2,23,201,2,28,28,248,22,146,7,23,197,2, +10,248,22,135,8,23,197,2,12,252,22,134,10,2,28,2,52,37,23,200,2, +23,201,2,90,159,39,11,89,161,39,36,11,248,22,161,15,23,199,2,86,94, +23,195,1,86,94,28,192,12,250,22,137,10,2,28,2,53,23,201,2,249,22, +7,194,195,27,249,22,150,15,249,22,147,8,250,22,141,16,0,9,35,114,120, +35,34,91,46,93,34,248,22,146,15,23,203,1,6,1,1,95,28,248,22,146, +7,23,202,2,249,22,161,8,23,203,1,8,63,23,201,1,28,248,22,141,15, +23,199,2,248,22,142,15,23,199,1,86,94,23,198,1,247,22,143,15,28,248, +22,140,15,23,195,2,249,22,158,15,23,196,1,23,195,1,192,249,247,22,173, +5,23,195,1,11,249,247,22,173,5,194,11,28,248,22,87,23,195,2,9,27, +248,22,80,23,196,2,27,28,248,22,164,15,23,195,2,23,194,1,28,248,22, +163,15,23,195,2,249,22,165,15,23,196,1,250,80,159,43,40,39,248,22,180, +15,2,46,11,10,250,80,159,41,40,39,248,22,180,15,2,46,23,197,1,10, +28,23,193,2,249,22,79,248,22,167,15,249,22,165,15,23,198,1,247,22,181, +15,248,80,159,41,8,30,39,248,22,81,23,200,1,86,94,23,193,1,248,80, +159,39,8,30,39,248,22,81,23,198,1,28,248,22,87,23,195,2,9,27,248, +22,80,23,196,2,27,28,248,22,164,15,23,195,2,23,194,1,28,248,22,163, +15,23,195,2,249,22,165,15,23,196,1,250,80,159,43,40,39,248,22,180,15, +2,46,11,10,250,80,159,41,40,39,248,22,180,15,2,46,23,197,1,10,28, +23,193,2,249,22,79,248,22,167,15,249,22,165,15,23,198,1,247,22,181,15, +248,80,159,41,8,31,39,248,22,81,23,200,1,86,94,23,193,1,248,80,159, +39,8,31,39,248,22,81,23,198,1,28,248,22,87,23,195,2,9,27,248,22, +80,23,196,2,27,28,248,22,164,15,23,195,2,23,194,1,28,248,22,163,15, +23,195,2,249,22,165,15,23,196,1,250,80,159,43,40,39,248,22,180,15,2, +46,11,10,250,80,159,41,40,39,248,22,180,15,2,46,23,197,1,10,28,23, +193,2,249,22,79,248,22,167,15,249,22,165,15,23,198,1,247,22,181,15,27, +248,22,81,23,200,1,28,248,22,87,23,194,2,9,27,248,22,80,23,195,2, +27,28,248,22,164,15,23,195,2,23,194,1,28,248,22,163,15,23,195,2,249, +22,165,15,23,196,1,250,80,159,48,40,39,248,22,180,15,2,46,11,10,250, +80,159,46,40,39,248,22,180,15,2,46,23,197,1,10,28,23,193,2,249,22, +79,248,22,167,15,249,22,165,15,23,198,1,247,22,181,15,248,80,159,46,8, +32,39,248,22,81,23,199,1,86,94,23,193,1,248,80,159,44,8,32,39,248, +22,81,23,197,1,86,94,23,193,1,27,248,22,81,23,198,1,28,248,22,87, +23,194,2,9,27,248,22,80,23,195,2,27,28,248,22,164,15,23,195,2,23, +194,1,28,248,22,163,15,23,195,2,249,22,165,15,23,196,1,250,80,159,46, +40,39,248,22,180,15,2,46,11,10,250,80,159,44,40,39,248,22,180,15,2, +46,23,197,1,10,28,23,193,2,249,22,79,248,22,167,15,249,22,165,15,23, +198,1,247,22,181,15,248,80,159,44,8,32,39,248,22,81,23,199,1,86,94, +23,193,1,248,80,159,42,8,32,39,248,22,81,23,197,1,27,247,22,185,15, +249,80,159,39,41,38,28,23,195,2,27,249,22,168,8,247,22,167,8,2,54, +28,192,249,22,158,8,194,7,63,2,49,2,49,27,28,23,196,1,250,22,158, +15,248,22,180,15,2,55,247,22,164,8,2,56,11,27,248,80,159,42,8,30, +39,250,22,93,9,248,22,89,248,22,180,15,2,45,9,28,193,249,22,79,195, +194,192,27,247,22,185,15,249,80,159,39,41,38,28,23,195,2,27,249,22,168, +8,247,22,167,8,2,54,28,192,249,22,158,8,194,7,63,2,49,2,49,27, +28,23,196,1,250,22,158,15,248,22,180,15,2,55,247,22,164,8,2,56,11, +27,248,80,159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22,180,15, +2,45,9,28,193,249,22,79,195,194,192,27,247,22,185,15,249,80,159,39,41, +38,28,23,195,2,27,249,22,168,8,247,22,167,8,2,54,28,192,249,22,158, +8,194,7,63,2,49,2,49,27,28,23,196,1,250,22,158,15,248,22,180,15, +2,55,247,22,164,8,2,56,11,27,248,80,159,42,8,32,39,250,22,93,23, +203,1,248,22,89,248,22,180,15,2,45,23,204,1,28,193,249,22,79,195,194, +192,27,20,13,159,80,159,37,53,37,254,80,159,44,54,37,249,22,33,11,80, +159,46,53,37,22,178,14,10,22,185,14,10,22,186,14,10,248,22,141,6,23, +196,2,28,248,22,141,7,23,194,2,12,86,94,248,22,169,9,23,194,1,27, +20,13,159,80,159,38,53,37,254,80,159,45,54,37,249,22,33,11,80,159,47, +53,37,22,178,14,10,22,185,14,10,22,186,14,10,248,22,141,6,23,197,2, +28,248,22,141,7,23,194,2,12,86,94,248,22,169,9,23,194,1,27,20,13, +159,80,159,39,53,37,254,80,159,46,54,37,249,22,33,11,80,159,48,53,37, +22,178,14,10,22,185,14,10,22,186,14,10,248,22,141,6,23,198,2,28,248, +22,141,7,23,194,2,12,86,94,248,22,169,9,23,194,1,248,80,159,40,8, +33,39,23,198,1,86,94,249,22,132,7,247,22,169,5,23,196,2,248,22,156, +6,249,22,136,4,36,249,22,184,3,23,198,1,23,199,1,27,28,23,197,2, +86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,180,15, +2,46,27,250,80,159,42,40,39,23,197,1,11,11,27,248,22,139,4,23,199, +1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,139,4,23, +202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,136,6,23, +199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2,33,124,23,195,1, +23,197,1,27,248,22,185,5,23,195,1,248,80,159,39,8,33,39,23,194,1, +159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1,2,1,29,11, +11,11,11,9,9,11,11,11,10,43,80,158,36,36,20,114,159,40,16,30,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,20,76,102,105,110,100,45,108,105, +110,107,115,45,112,97,116,104,33,11,4,30,2,21,1,20,112,97,114,97,109, +101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,2,21,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,11,3,2,22,2,23,2,24,30,2,20,1,21,101,120,99,101,112, +116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,2,2,25,2, +26,2,27,2,28,2,29,2,30,2,31,16,0,37,39,36,16,0,36,16,13, +2,9,2,10,2,8,2,3,2,26,2,24,2,22,2,17,2,23,2,25,2, +15,2,14,2,16,49,11,11,11,16,13,2,13,2,11,2,31,2,12,2,6, +2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5,16,13,11,11,11, +11,11,11,11,11,11,11,11,11,11,16,13,2,13,2,11,2,31,2,12,2, +6,2,30,2,29,2,4,2,28,2,7,2,27,2,2,2,5,49,49,37,12, +11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36, +36,16,30,20,15,16,2,32,0,88,163,36,37,45,11,2,2,222,33,57,80, +159,36,36,37,20,15,16,2,249,22,148,7,7,92,7,92,80,159,36,37,37, +20,15,16,2,88,163,36,37,54,38,2,4,223,0,33,62,80,159,36,38,37, +20,15,16,2,88,163,36,38,58,38,2,5,223,0,33,64,80,159,36,39,37, +20,15,16,2,20,25,96,2,6,88,163,8,36,39,8,25,8,32,9,223,0, +33,71,88,163,36,38,47,52,9,223,0,33,72,88,163,36,37,46,52,9,223, +0,33,73,80,159,36,40,37,20,15,16,2,27,248,22,189,15,248,22,160,8, +27,28,249,22,161,9,247,22,173,8,2,34,6,1,1,59,6,1,1,58,250, +22,130,8,6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23, +196,2,23,196,1,88,163,8,36,38,48,11,2,7,223,0,33,77,80,159,36, +41,37,20,15,16,2,32,0,88,163,8,36,38,47,11,2,8,222,33,78,80, +159,36,42,37,20,15,16,2,32,0,88,163,8,36,39,48,11,2,9,222,33, +80,80,159,36,43,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,10, +222,33,81,80,159,36,44,37,20,15,16,2,88,163,45,39,49,8,128,16,2, +11,223,0,33,83,80,159,36,45,37,20,15,16,2,88,163,45,40,50,8,128, +16,2,13,223,0,33,85,80,159,36,47,37,20,15,16,2,248,22,180,15,70, +108,105,110,107,115,45,102,105,108,101,80,159,36,48,37,20,15,16,2,247,22, +140,2,80,158,36,49,20,15,16,2,2,86,80,158,36,50,20,15,16,2,248, +80,159,37,52,37,88,163,36,36,49,8,240,16,0,6,0,9,223,1,33,87, +80,159,36,51,37,20,15,16,2,247,22,140,2,80,158,36,55,20,15,16,2, +2,86,80,158,36,56,20,15,16,2,88,163,36,37,44,8,240,0,240,94,0, +2,24,223,0,33,98,80,159,36,57,37,20,15,16,2,88,163,36,38,56,8, +240,0,0,128,0,2,25,223,0,33,100,80,159,36,59,37,20,15,16,2,88, +163,36,40,59,8,240,0,128,160,0,2,12,223,0,33,111,80,159,36,46,37, +20,15,16,2,32,0,88,163,36,39,50,11,2,26,222,33,112,80,159,36,8, +24,37,20,15,16,2,32,0,88,163,36,38,53,11,2,27,222,33,113,80,159, +36,8,25,37,20,15,16,2,32,0,88,163,36,38,54,11,2,28,222,33,114, +80,159,36,8,26,37,20,15,16,2,20,27,158,32,0,88,163,36,37,44,11, +2,29,222,33,115,32,0,88,163,36,37,44,11,2,29,222,33,116,80,159,36, +8,27,37,20,15,16,2,88,163,8,36,37,51,16,2,52,8,240,0,64,0, +0,2,41,223,0,33,117,80,159,36,8,30,39,20,15,16,2,88,163,8,36, +37,51,16,2,52,8,240,0,128,0,0,2,41,223,0,33,118,80,159,36,8, +31,39,20,15,16,2,88,163,8,36,37,56,16,4,52,36,37,36,2,41,223, +0,33,119,80,159,36,8,32,39,20,15,16,2,20,25,96,2,30,88,163,36, +36,53,16,2,8,32,8,240,0,64,0,0,9,223,0,33,120,88,163,36,37, +54,16,2,8,32,8,240,0,128,0,0,9,223,0,33,121,88,163,36,38,55, +16,4,8,32,36,37,36,9,223,0,33,122,80,159,36,8,28,37,20,15,16, +2,88,163,8,36,37,55,16,4,36,42,38,36,2,41,223,0,33,123,80,159, +36,8,33,39,20,15,16,2,88,163,8,36,39,54,16,4,52,36,38,36,2, +31,223,0,33,125,80,159,36,8,29,37,95,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,2, +20,9,9,9,36,0}; + EVAL_ONE_SIZED_STR((char *)expr, 10841); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,50,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,0, 57,0,75,0,97,0,120,0,140,0,162,0,171,0,180,0,187,0,196,0,203, 0,0,0,229,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,99, @@ -638,8 +639,8 @@ 16,2,2,5,2,6,38,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,12,11,11,16,0,16,0,16,0,36,36,11,12,11,11,16,0,16,0, -16,0,36,36,16,3,20,15,16,6,253,22,143,11,2,3,11,38,36,11,248, -22,89,249,22,79,22,130,11,88,163,36,37,45,44,9,223,9,33,9,80,159, +16,0,36,36,16,3,20,15,16,6,253,22,144,11,2,3,11,38,36,11,248, +22,89,249,22,79,22,131,11,88,163,36,37,45,44,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,20,15,16,2,20,27,158,88,163,36,37,45,44,9,223,0,33,10,88, 163,36,37,45,44,9,223,0,33,11,80,159,36,41,37,20,15,16,2,20,27, @@ -649,7 +650,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 555); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,50,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,89,0,0,0,1,0,0,7,0,18,0, 45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,187, 0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,63,1,94,1,101,1, @@ -682,87 +683,87 @@ 64,108,111,111,112,63,108,105,98,6,12,12,109,111,100,117,108,101,45,112,97, 116,104,63,66,115,117,98,109,111,100,6,2,2,46,46,6,1,1,46,64,102, 105,108,101,66,112,108,97,110,101,116,6,8,8,109,97,105,110,46,114,107,116, -6,4,4,46,114,107,116,67,105,103,110,111,114,101,100,250,22,157,15,28,249, -22,160,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,161,15, -23,200,2,249,22,157,15,23,199,1,23,201,1,249,80,159,43,42,39,23,199, -1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2,29,250,22,157, -15,28,249,22,160,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248, -22,161,15,23,200,2,249,22,157,15,23,199,1,23,201,1,249,80,159,43,42, +6,4,4,46,114,107,116,67,105,103,110,111,114,101,100,250,22,158,15,28,249, +22,161,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,162,15, +23,200,2,249,22,158,15,23,199,1,23,201,1,249,80,159,43,42,39,23,199, +1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2,29,250,22,158, +15,28,249,22,161,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248, +22,162,15,23,200,2,249,22,158,15,23,199,1,23,201,1,249,80,159,43,42, 39,23,199,1,23,201,1,23,200,1,249,80,159,43,43,39,23,198,1,2,29, -252,22,157,15,28,249,22,160,9,23,203,2,2,28,86,94,23,201,1,23,199, -1,28,248,22,161,15,23,202,2,249,22,157,15,23,201,1,23,203,1,249,80, -159,45,42,39,23,201,1,23,203,1,23,202,1,2,30,247,22,173,8,249,80, -159,45,43,39,23,200,1,80,159,45,36,38,252,22,157,15,28,249,22,160,9, -23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,161,15,23,202,2, -249,22,157,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201,1,23,203, -1,23,202,1,2,30,247,22,173,8,249,80,159,45,43,39,23,200,1,80,159, -45,36,38,27,252,22,157,15,28,249,22,160,9,23,201,2,2,28,86,94,23, -199,1,23,201,1,28,248,22,161,15,23,200,2,249,22,157,15,23,203,1,23, +252,22,158,15,28,249,22,161,9,23,203,2,2,28,86,94,23,201,1,23,199, +1,28,248,22,162,15,23,202,2,249,22,158,15,23,201,1,23,203,1,249,80, +159,45,42,39,23,201,1,23,203,1,23,202,1,2,30,247,22,174,8,249,80, +159,45,43,39,23,200,1,80,159,45,36,38,252,22,158,15,28,249,22,161,9, +23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,162,15,23,202,2, +249,22,158,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201,1,23,203, +1,23,202,1,2,30,247,22,174,8,249,80,159,45,43,39,23,200,1,80,159, +45,36,38,27,252,22,158,15,28,249,22,161,9,23,201,2,2,28,86,94,23, +199,1,23,201,1,28,248,22,162,15,23,200,2,249,22,158,15,23,203,1,23, 201,1,249,80,159,47,42,39,23,203,1,23,201,1,23,203,1,2,30,247,22, -173,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,174,15, +174,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,175,15, 196,11,32,0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194, 11,249,22,5,20,20,96,88,163,8,36,37,54,8,129,3,9,226,5,3,2, -6,33,46,23,199,1,23,195,1,23,196,1,23,197,1,27,252,22,157,15,28, -249,22,160,9,23,201,2,2,28,86,94,23,199,1,23,201,1,28,248,22,161, -15,23,200,2,249,22,157,15,23,203,1,23,201,1,249,80,159,47,42,39,23, -203,1,23,201,1,23,203,1,2,30,247,22,173,8,249,80,159,47,43,39,23, -202,1,80,159,47,36,38,27,250,22,174,15,196,11,32,0,88,163,8,36,36, +6,33,46,23,199,1,23,195,1,23,196,1,23,197,1,27,252,22,158,15,28, +249,22,161,9,23,201,2,2,28,86,94,23,199,1,23,201,1,28,248,22,162, +15,23,200,2,249,22,158,15,23,203,1,23,201,1,249,80,159,47,42,39,23, +203,1,23,201,1,23,203,1,2,30,247,22,174,8,249,80,159,47,43,39,23, +202,1,80,159,47,36,38,27,250,22,175,15,196,11,32,0,88,163,8,36,36, 41,11,9,222,11,28,192,249,22,79,195,194,11,249,22,5,20,20,96,88,163, 8,36,37,54,8,129,3,9,226,5,3,2,6,33,48,23,199,1,23,195,1, -23,196,1,23,197,1,27,250,22,157,15,28,249,22,160,9,23,199,2,2,28, -86,94,23,197,1,23,199,1,28,248,22,161,15,23,198,2,249,22,157,15,23, +23,196,1,23,197,1,27,250,22,158,15,28,249,22,161,9,23,199,2,2,28, +86,94,23,197,1,23,199,1,28,248,22,162,15,23,198,2,249,22,158,15,23, 201,1,23,199,1,249,80,159,45,42,39,23,201,1,23,199,1,23,201,1,249, -80,159,45,43,39,23,200,1,2,29,27,250,22,174,15,196,11,32,0,88,163, +80,159,45,43,39,23,200,1,2,29,27,250,22,175,15,196,11,32,0,88,163, 8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,249,22,5,20,20, 96,88,163,8,36,37,52,8,128,3,9,226,5,3,2,6,33,50,23,199,1, -23,195,1,23,196,1,23,197,1,27,250,22,157,15,28,249,22,160,9,23,199, -2,2,28,86,94,23,197,1,23,199,1,28,248,22,161,15,23,198,2,249,22, -157,15,23,201,1,23,199,1,249,80,159,45,42,39,23,201,1,23,199,1,23, -201,1,249,80,159,45,43,39,23,200,1,2,29,27,250,22,174,15,196,11,32, +23,195,1,23,196,1,23,197,1,27,250,22,158,15,28,249,22,161,9,23,199, +2,2,28,86,94,23,197,1,23,199,1,28,248,22,162,15,23,198,2,249,22, +158,15,23,201,1,23,199,1,249,80,159,45,42,39,23,201,1,23,199,1,23, +201,1,249,80,159,45,43,39,23,200,1,2,29,27,250,22,175,15,196,11,32, 0,88,163,8,36,36,41,11,9,222,11,28,192,249,22,79,195,194,11,249,22, 5,20,20,96,88,163,8,36,37,52,8,128,3,9,226,5,3,2,6,33,52, 23,199,1,23,195,1,23,196,1,23,197,1,86,95,28,248,80,159,37,40,39, -23,195,2,12,250,22,133,10,2,26,6,12,12,112,97,116,104,45,115,116,114, +23,195,2,12,250,22,134,10,2,26,6,12,12,112,97,116,104,45,115,116,114, 105,110,103,63,23,197,2,28,28,23,195,2,28,248,22,64,23,196,2,10,28, 248,22,88,23,196,2,28,249,22,130,4,248,22,92,23,198,2,37,28,28,248, -22,64,248,22,80,23,197,2,10,248,22,158,9,248,22,183,17,23,197,2,249, -22,4,22,64,248,22,184,17,23,198,2,11,11,11,10,12,250,22,133,10,2, +22,64,248,22,80,23,197,2,10,248,22,159,9,248,22,184,17,23,197,2,249, +22,4,22,64,248,22,185,17,23,198,2,11,11,11,10,12,250,22,134,10,2, 26,6,71,71,40,111,114,47,99,32,35,102,32,115,121,109,98,111,108,63,32, 40,99,111,110,115,47,99,32,40,111,114,47,99,32,35,102,32,115,121,109,98, 111,108,63,41,32,40,110,111,110,45,101,109,112,116,121,45,108,105,115,116,111, 102,32,115,121,109,98,111,108,63,41,41,41,23,197,2,27,28,23,196,2,247, -22,189,4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,153,16, -247,22,175,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2, +22,189,4,11,27,28,23,194,2,250,22,160,2,80,158,41,41,248,22,154,16, +247,22,176,13,11,11,27,28,23,194,2,250,22,160,2,248,22,81,23,198,2, 23,198,2,11,11,28,23,193,2,86,96,23,197,1,23,195,1,23,194,1,20, 13,159,80,159,39,38,37,250,80,159,42,39,37,249,22,33,11,80,159,44,38, 37,22,190,4,248,22,104,23,197,2,27,248,22,113,23,195,2,20,13,159,80, 159,40,38,37,250,80,159,43,39,37,249,22,33,11,80,159,45,38,37,22,174, -5,28,248,22,139,15,23,197,2,23,196,1,86,94,23,196,1,247,22,180,15, +5,28,248,22,140,15,23,197,2,23,196,1,86,94,23,196,1,247,22,181,15, 249,247,22,172,5,248,22,80,23,197,1,23,201,1,86,94,23,193,1,90,159, -47,11,89,161,37,36,11,28,248,22,163,15,23,209,2,23,208,2,27,247,22, -174,5,28,23,193,2,249,22,164,15,23,211,2,23,195,1,23,209,2,89,161, -39,37,11,248,22,160,15,23,209,1,86,94,23,196,1,89,161,38,40,11,28, -23,209,2,27,248,22,144,15,23,197,2,19,248,22,140,8,23,195,2,28,28, +47,11,89,161,37,36,11,28,248,22,164,15,23,209,2,23,208,2,27,247,22, +174,5,28,23,193,2,249,22,165,15,23,211,2,23,195,1,23,209,2,89,161, +39,37,11,248,22,161,15,23,209,1,86,94,23,196,1,89,161,38,40,11,28, +23,209,2,27,248,22,145,15,23,197,2,19,248,22,140,8,23,195,2,28,28, 249,22,132,4,23,195,4,40,249,22,143,8,2,27,249,22,146,8,23,198,2, -249,22,184,3,23,199,4,40,11,249,22,7,23,199,2,248,22,148,15,249,22, +249,22,184,3,23,199,4,40,11,249,22,7,23,199,2,248,22,149,15,249,22, 147,8,250,22,146,8,23,202,1,36,249,22,184,3,23,203,4,40,5,3,46, 115,115,249,22,7,23,199,2,11,2,249,22,7,23,197,2,11,89,161,37,42, -11,28,249,22,160,9,23,199,2,23,197,2,23,193,2,249,22,157,15,23,196, -2,23,199,2,89,161,37,43,11,28,23,198,2,28,249,22,160,9,23,200,2, -23,197,1,23,193,1,86,94,23,193,1,249,22,157,15,23,196,2,23,200,2, -86,94,23,195,1,11,89,161,37,44,11,28,249,22,160,9,23,196,2,68,114, +11,28,249,22,161,9,23,199,2,23,197,2,23,193,2,249,22,158,15,23,196, +2,23,199,2,89,161,37,43,11,28,23,198,2,28,249,22,161,9,23,200,2, +23,197,1,23,193,1,86,94,23,193,1,249,22,158,15,23,196,2,23,200,2, +86,94,23,195,1,11,89,161,37,44,11,28,249,22,161,9,23,196,2,68,114, 101,108,97,116,105,118,101,86,94,23,194,1,2,28,23,194,1,89,161,37,45, -11,247,22,182,15,89,161,37,46,11,247,22,183,15,27,250,22,174,15,23,203, +11,247,22,183,15,89,161,37,46,11,247,22,184,15,27,250,22,175,15,23,203, 2,11,32,0,88,163,8,36,36,41,11,9,222,11,27,28,23,194,2,249,22, 79,23,203,2,23,196,1,86,94,23,194,1,11,27,28,23,203,2,28,23,194, -2,11,27,250,22,174,15,23,207,2,11,32,0,88,163,8,36,36,41,11,9, +2,11,27,250,22,175,15,23,207,2,11,32,0,88,163,8,36,36,41,11,9, 222,11,28,192,249,22,79,23,206,2,194,11,11,27,28,23,195,2,23,195,2, 23,194,2,27,88,163,36,38,51,8,128,3,62,122,111,225,19,13,9,33,42, 27,88,163,36,38,51,8,128,3,66,97,108,116,45,122,111,225,20,14,11,33, 43,27,88,163,36,38,53,8,129,3,9,225,21,15,11,33,44,27,88,163,36, 38,53,8,129,3,9,225,22,16,13,33,45,27,28,23,200,2,23,200,2,248, -22,158,9,23,200,2,27,28,23,208,2,28,23,200,2,86,94,23,201,1,23, -200,2,248,22,158,9,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249, +22,159,9,23,200,2,27,28,23,208,2,28,23,200,2,86,94,23,201,1,23, +200,2,248,22,159,9,23,202,1,11,27,28,23,195,2,28,23,197,1,27,249, 22,5,88,163,36,37,48,8,129,3,9,226,28,23,22,18,33,47,23,217,2, 27,28,23,202,2,11,193,28,192,192,28,193,28,23,202,2,28,249,22,132,4, 248,22,81,196,248,22,81,23,205,2,193,11,11,11,11,86,94,23,197,1,11, @@ -771,8 +772,8 @@ 23,196,1,23,195,1,23,194,1,20,13,159,80,159,8,25,38,37,250,80,159, 8,28,39,37,249,22,33,11,80,159,8,30,38,37,22,190,4,11,20,13,159, 80,159,8,25,38,37,250,80,159,8,28,39,37,249,22,33,11,80,159,8,30, -38,37,22,174,5,28,248,22,139,15,23,216,2,23,215,1,86,94,23,215,1, -247,22,180,15,249,247,22,187,15,248,22,80,23,196,1,23,222,1,86,94,23, +38,37,22,174,5,28,248,22,140,15,23,216,2,23,215,1,86,94,23,215,1, +247,22,181,15,249,247,22,188,15,248,22,80,23,196,1,23,222,1,86,94,23, 193,1,27,28,23,195,2,28,23,197,1,27,249,22,5,88,163,36,37,48,8, 129,3,9,226,29,24,23,20,33,49,23,218,2,27,28,23,204,2,11,193,28, 192,192,28,193,28,203,28,249,22,132,4,248,22,81,196,248,22,81,206,193,11, @@ -781,8 +782,8 @@ 23,199,1,23,196,1,23,195,1,20,13,159,80,159,8,26,38,37,250,80,159, 8,29,39,37,249,22,33,11,80,159,8,31,38,37,22,190,4,23,215,1,20, 13,159,80,159,8,26,38,37,250,80,159,8,29,39,37,249,22,33,11,80,159, -8,31,38,37,22,174,5,28,248,22,139,15,23,217,2,23,216,1,86,94,23, -216,1,247,22,180,15,249,247,22,187,15,248,22,80,23,196,1,23,223,1,86, +8,31,38,37,22,174,5,28,248,22,140,15,23,217,2,23,216,1,86,94,23, +216,1,247,22,181,15,249,247,22,188,15,248,22,80,23,196,1,23,223,1,86, 94,23,193,1,27,28,23,197,2,28,23,201,1,27,249,22,5,20,20,94,88, 163,36,37,48,8,128,3,9,226,30,25,24,20,33,51,23,213,1,23,219,2, 27,28,23,204,2,11,193,28,192,192,28,193,28,23,204,2,28,249,22,132,4, @@ -793,8 +794,8 @@ 1,250,22,89,23,199,1,11,23,221,2,12,20,13,159,80,159,8,27,38,37, 250,80,159,8,30,39,37,249,22,33,11,80,159,8,32,38,37,22,190,4,11, 20,13,159,80,159,8,27,38,37,250,80,159,8,30,39,37,249,22,33,11,80, -159,8,32,38,37,22,174,5,28,248,22,139,15,23,218,2,23,217,1,86,94, -23,217,1,247,22,180,15,249,247,22,172,5,248,22,183,17,23,196,1,23,224, +159,8,32,38,37,22,174,5,28,248,22,140,15,23,218,2,23,217,1,86,94, +23,217,1,247,22,181,15,249,247,22,172,5,248,22,184,17,23,196,1,23,224, 32,0,0,0,1,86,94,23,193,1,27,28,23,197,1,28,23,201,1,27,249, 22,5,20,20,95,88,163,36,37,48,8,128,3,9,226,31,26,25,22,33,53, 23,215,1,23,219,1,23,220,1,27,28,23,205,2,11,193,28,192,192,28,193, @@ -805,219 +806,219 @@ 250,22,89,23,199,1,23,221,2,23,222,2,12,20,13,159,80,159,8,28,38, 37,250,80,159,8,31,39,37,249,22,33,11,80,159,8,33,38,37,22,190,4, 23,217,1,20,13,159,80,159,8,28,38,37,250,80,159,8,31,39,37,249,22, -33,11,80,159,8,33,38,37,22,174,5,28,248,22,139,15,23,219,2,23,218, -1,86,94,23,218,1,247,22,180,15,249,247,22,172,5,248,22,183,17,23,196, +33,11,80,159,8,33,38,37,22,174,5,28,248,22,140,15,23,219,2,23,218, +1,86,94,23,218,1,247,22,181,15,249,247,22,172,5,248,22,184,17,23,196, 1,23,224,33,0,0,0,1,86,94,23,193,1,28,28,248,22,77,23,224,32, -0,0,0,2,248,22,183,17,23,224,32,0,0,0,2,10,27,28,23,199,2, +0,0,0,2,248,22,184,17,23,224,32,0,0,0,2,10,27,28,23,199,2, 86,94,23,215,1,23,214,1,86,94,23,214,1,23,215,1,28,28,248,22,77, -23,224,33,0,0,0,2,248,22,158,9,248,22,151,15,23,195,2,11,12,20, +23,224,33,0,0,0,2,248,22,159,9,248,22,152,15,23,195,2,11,12,20, 13,159,80,159,8,29,38,37,250,80,159,8,32,39,37,249,22,33,11,80,159, 8,34,38,37,22,190,4,28,23,224,35,0,0,0,2,28,23,202,1,11,23, 196,2,86,94,23,202,1,11,20,13,159,80,159,8,29,38,37,250,80,159,8, -32,39,37,249,22,33,11,80,159,8,34,38,37,22,174,5,28,248,22,139,15, -23,220,2,23,219,1,86,94,23,219,1,247,22,180,15,249,247,22,172,5,23, +32,39,37,249,22,33,11,80,159,8,34,38,37,22,174,5,28,248,22,140,15, +23,220,2,23,219,1,86,94,23,219,1,247,22,181,15,249,247,22,172,5,23, 195,1,23,224,34,0,0,0,1,12,28,23,194,2,250,22,158,2,248,22,81, 23,198,1,23,196,1,250,22,89,23,201,1,23,202,1,23,203,1,12,27,249, -22,180,8,80,159,39,47,38,249,22,191,3,248,22,187,3,248,22,173,2,200, +22,181,8,80,159,39,47,38,249,22,191,3,248,22,187,3,248,22,173,2,200, 8,128,8,27,28,193,248,22,176,2,194,11,28,192,27,249,22,102,198,195,28, 192,248,22,81,193,11,11,27,249,22,191,3,248,22,187,3,248,22,173,2,23, -199,2,8,128,8,27,249,22,180,8,80,159,40,47,38,23,196,2,27,28,23, -194,2,248,22,176,2,23,195,1,86,94,23,194,1,11,250,22,181,8,80,159, +199,2,8,128,8,27,249,22,181,8,80,159,40,47,38,23,196,2,27,28,23, +194,2,248,22,176,2,23,195,1,86,94,23,194,1,11,250,22,182,8,80,159, 42,47,38,23,198,1,248,22,175,2,249,22,79,249,22,79,23,205,1,23,206, 1,28,23,199,2,23,199,1,86,94,23,199,1,9,0,17,35,114,120,34,94, 40,46,42,63,41,47,40,46,42,41,36,34,32,59,88,163,8,36,37,59,11, -2,31,222,33,60,27,249,22,128,16,2,58,23,196,2,28,23,193,2,86,94, +2,31,222,33,60,27,249,22,129,16,2,58,23,196,2,28,23,193,2,86,94, 23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249, -22,128,16,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248, -22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,128,16,2,58,23,196, +22,129,16,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248, +22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,129,16,2,58,23,196, 2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248, -22,113,23,197,1,27,249,22,128,16,2,58,23,196,2,28,23,193,2,86,94, +22,113,23,197,1,27,249,22,129,16,2,58,23,196,2,28,23,193,2,86,94, 23,194,1,249,22,79,248,22,104,23,196,2,248,2,59,248,22,113,23,197,1, 248,22,89,194,248,22,89,194,248,22,89,194,248,22,89,194,32,61,88,163,36, 37,55,11,2,31,222,33,62,28,248,22,87,248,22,81,23,195,2,249,22,7, -9,248,22,183,17,23,196,1,90,159,38,11,89,161,38,36,11,27,248,22,184, -17,23,197,2,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,183, -17,195,90,159,38,11,89,161,38,36,11,27,248,22,184,17,196,28,248,22,87, -248,22,81,23,195,2,249,22,7,9,248,22,183,17,195,90,159,38,11,89,161, -38,36,11,248,2,61,248,22,184,17,196,249,22,7,249,22,79,248,22,183,17, -199,196,195,249,22,7,249,22,79,248,22,183,17,199,196,195,249,22,7,249,22, -79,248,22,183,17,23,200,1,23,197,1,23,196,1,27,27,249,22,128,16,2, +9,248,22,184,17,23,196,1,90,159,38,11,89,161,38,36,11,27,248,22,185, +17,23,197,2,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248,22,184, +17,195,90,159,38,11,89,161,38,36,11,27,248,22,185,17,196,28,248,22,87, +248,22,81,23,195,2,249,22,7,9,248,22,184,17,195,90,159,38,11,89,161, +38,36,11,248,2,61,248,22,185,17,196,249,22,7,249,22,79,248,22,184,17, +199,196,195,249,22,7,249,22,79,248,22,184,17,199,196,195,249,22,7,249,22, +79,248,22,184,17,23,200,1,23,197,1,23,196,1,27,27,249,22,129,16,2, 58,23,197,2,28,23,193,2,86,94,23,195,1,249,22,79,248,22,104,23,196, -2,27,248,22,113,23,197,1,27,249,22,128,16,2,58,23,196,2,28,23,193, +2,27,248,22,113,23,197,1,27,249,22,129,16,2,58,23,196,2,28,23,193, 2,86,94,23,194,1,249,22,79,248,22,104,23,196,2,27,248,22,113,23,197, -1,27,249,22,128,16,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249, -22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,128,16,2, +1,27,249,22,129,16,2,58,23,196,2,28,23,193,2,86,94,23,194,1,249, +22,79,248,22,104,23,196,2,27,248,22,113,23,197,1,27,249,22,129,16,2, 58,23,196,2,28,23,193,2,86,94,23,194,1,249,22,79,248,22,104,23,196, 2,248,2,59,248,22,113,23,197,1,248,22,89,194,248,22,89,194,248,22,89, 194,248,22,89,195,28,23,195,1,192,28,248,22,87,248,22,81,23,195,2,249, -22,7,9,248,22,183,17,23,196,1,27,248,22,184,17,23,195,2,90,159,38, +22,7,9,248,22,184,17,23,196,1,27,248,22,185,17,23,195,2,90,159,38, 11,89,161,38,36,11,28,248,22,87,248,22,81,23,197,2,249,22,7,9,248, -22,183,17,23,198,1,27,248,22,184,17,23,197,2,90,159,38,11,89,161,38, -36,11,28,248,22,87,248,22,81,23,197,2,249,22,7,9,248,22,183,17,197, -90,159,38,11,89,161,38,36,11,248,2,61,248,22,184,17,198,249,22,7,249, -22,79,248,22,183,17,201,196,195,249,22,7,249,22,79,248,22,183,17,23,203, -1,196,195,249,22,7,249,22,79,248,22,183,17,23,201,1,23,197,1,23,196, +22,184,17,23,198,1,27,248,22,185,17,23,197,2,90,159,38,11,89,161,38, +36,11,28,248,22,87,248,22,81,23,197,2,249,22,7,9,248,22,184,17,197, +90,159,38,11,89,161,38,36,11,248,2,61,248,22,185,17,198,249,22,7,249, +22,79,248,22,184,17,201,196,195,249,22,7,249,22,79,248,22,184,17,23,203, +1,196,195,249,22,7,249,22,79,248,22,184,17,23,201,1,23,197,1,23,196, 1,28,24,194,2,12,20,13,159,80,159,36,57,37,80,158,36,55,89,161,37, 37,10,249,22,191,4,21,94,2,32,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,27, -28,23,195,2,28,249,22,160,9,23,197,2,80,158,39,52,86,94,23,195,1, +28,23,195,2,28,249,22,161,9,23,197,2,80,158,39,52,86,94,23,195,1, 80,158,37,53,27,248,22,150,5,23,197,2,27,28,248,22,77,23,195,2,248, -22,183,17,23,195,1,23,194,1,28,248,22,139,15,23,194,2,90,159,39,11, -89,161,39,36,11,248,22,160,15,23,197,1,86,95,20,18,159,11,80,158,42, +22,184,17,23,195,1,23,194,1,28,248,22,140,15,23,194,2,90,159,39,11, +89,161,39,36,11,248,22,161,15,23,197,1,86,95,20,18,159,11,80,158,42, 52,199,20,18,159,11,80,158,42,53,192,192,11,11,28,23,193,2,192,86,94, -23,193,1,27,247,22,174,5,28,23,193,2,192,86,94,23,193,1,247,22,180, -15,90,159,39,11,89,161,39,36,11,248,22,160,15,23,198,2,86,95,23,195, -1,23,193,1,28,249,22,128,16,0,11,35,114,120,34,91,46,93,115,115,36, -34,248,22,144,15,23,197,1,249,80,159,41,58,39,23,199,1,2,27,196,249, +23,193,1,27,247,22,174,5,28,23,193,2,192,86,94,23,193,1,247,22,181, +15,90,159,39,11,89,161,39,36,11,248,22,161,15,23,198,2,86,95,23,195, +1,23,193,1,28,249,22,129,16,0,11,35,114,120,34,91,46,93,115,115,36, +34,248,22,145,15,23,197,1,249,80,159,41,58,39,23,199,1,2,27,196,249, 80,159,38,54,39,195,10,249,22,14,23,196,1,80,159,38,51,38,86,96,28, -248,22,148,5,23,196,2,12,250,22,133,10,2,22,6,21,21,114,101,115,111, +248,22,148,5,23,196,2,12,250,22,134,10,2,22,6,21,21,114,101,115,111, 108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,63,23,198,2,28, -28,23,196,2,248,22,176,13,23,197,2,10,12,250,22,133,10,2,22,6,20, +28,23,196,2,248,22,177,13,23,197,2,10,12,250,22,134,10,2,22,6,20, 20,40,111,114,47,99,32,35,102,32,110,97,109,101,115,112,97,99,101,63,41, 23,199,2,28,24,193,2,248,24,194,1,23,196,2,86,94,23,193,1,12,27, -250,22,160,2,80,159,41,41,38,248,22,153,16,247,22,175,13,11,27,28,23, +250,22,160,2,80,159,41,41,38,248,22,154,16,247,22,176,13,11,27,28,23, 194,2,23,194,1,86,94,23,194,1,27,249,22,79,247,22,140,2,247,22,140, -2,86,94,250,22,158,2,80,159,43,41,38,248,22,153,16,247,22,175,13,195, +2,86,94,250,22,158,2,80,159,43,41,38,248,22,154,16,247,22,176,13,195, 192,86,94,250,22,158,2,248,22,80,23,197,2,23,200,2,68,100,101,99,108, 97,114,101,100,28,23,198,2,27,28,248,22,77,248,22,150,5,23,200,2,248, 22,149,5,248,22,80,248,22,150,5,23,201,1,23,198,1,27,250,22,160,2, -80,159,44,41,38,248,22,153,16,23,204,1,11,28,23,193,2,27,250,22,160, +80,159,44,41,38,248,22,154,16,23,204,1,11,28,23,193,2,27,250,22,160, 2,248,22,81,23,198,1,23,198,2,11,28,23,193,2,250,22,158,2,248,22, -184,17,23,200,1,23,198,1,23,196,1,12,12,12,251,24,197,1,23,198,1, +185,17,23,200,1,23,198,1,23,196,1,12,12,12,251,24,197,1,23,198,1, 23,199,1,23,200,1,10,32,71,88,163,36,38,47,11,76,102,108,97,116,116, 101,110,45,115,117,98,45,112,97,116,104,222,33,74,32,72,88,163,36,40,54, 11,2,31,222,33,73,28,248,22,87,23,197,2,28,248,22,87,195,192,249,22, -79,194,248,22,94,197,28,249,22,162,9,248,22,80,23,199,2,2,35,28,248, -22,87,23,196,2,86,95,23,196,1,23,195,1,250,22,129,10,2,22,6,37, +79,194,248,22,94,197,28,249,22,163,9,248,22,80,23,199,2,2,35,28,248, +22,87,23,196,2,86,95,23,196,1,23,195,1,250,22,130,10,2,22,6,37, 37,116,111,111,32,109,97,110,121,32,34,46,46,34,115,32,105,110,32,115,117, 98,109,111,100,117,108,101,32,112,97,116,104,58,32,126,46,115,250,22,90,2, -34,28,249,22,162,9,23,201,2,2,36,23,199,1,28,248,22,139,15,23,200, +34,28,249,22,163,9,23,201,2,2,36,23,199,1,28,248,22,140,15,23,200, 2,23,199,1,249,22,89,28,248,22,64,23,202,2,2,4,2,37,23,201,1, -23,200,1,251,2,72,23,197,1,23,198,1,248,22,81,23,200,1,248,22,184, -17,23,201,1,251,2,72,23,197,1,23,198,1,249,22,79,248,22,183,17,23, -203,2,23,201,1,248,22,184,17,23,201,1,251,2,72,23,197,1,23,198,2, +23,200,1,251,2,72,23,197,1,23,198,1,248,22,81,23,200,1,248,22,185, +17,23,201,1,251,2,72,23,197,1,23,198,1,249,22,79,248,22,184,17,23, +203,2,23,201,1,248,22,185,17,23,201,1,251,2,72,23,197,1,23,198,2, 9,23,198,1,27,249,22,169,7,6,31,31,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,58, -32,23,197,1,28,23,194,2,250,22,131,10,11,23,196,1,23,197,1,86,94, -23,194,1,248,22,129,10,23,194,1,28,249,22,152,7,194,2,36,2,28,28, +32,23,197,1,28,23,194,2,250,22,132,10,11,23,196,1,23,197,1,86,94, +23,194,1,248,22,130,10,23,194,1,28,249,22,152,7,194,2,36,2,28,28, 249,22,152,7,194,2,35,62,117,112,192,32,77,88,163,8,36,37,50,11,67, 115,115,45,62,114,107,116,222,33,78,19,248,22,149,7,194,28,249,22,132,4, 23,195,4,39,28,249,22,152,7,6,3,3,46,115,115,249,22,168,7,197,249, 22,184,3,23,199,4,39,249,22,169,7,250,22,168,7,198,36,249,22,184,3, 23,200,4,39,2,40,193,193,2,0,8,35,114,120,34,91,46,93,34,32,80, 88,163,8,36,37,47,11,2,31,222,33,81,28,248,22,87,23,194,2,9,250, -22,90,6,4,4,10,32,32,32,248,22,143,15,248,22,105,23,198,2,248,2, -80,248,22,81,23,198,1,28,249,22,162,9,248,22,81,23,200,2,23,197,1, -28,249,22,160,9,248,22,183,17,23,200,1,23,196,1,251,22,129,10,2,22, +22,90,6,4,4,10,32,32,32,248,22,144,15,248,22,105,23,198,2,248,2, +80,248,22,81,23,198,1,28,249,22,163,9,248,22,81,23,200,2,23,197,1, +28,249,22,161,9,248,22,184,17,23,200,1,23,196,1,251,22,130,10,2,22, 6,41,41,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,10,32, 32,97,116,32,112,97,116,104,58,32,126,97,10,32,32,112,97,116,104,115,58, 126,97,23,200,1,249,22,1,22,169,7,248,2,80,248,22,94,23,201,1,12, 12,247,23,193,1,20,13,159,80,159,43,50,38,249,22,79,249,22,79,248,22, -153,16,247,22,175,13,23,201,1,23,195,1,20,13,159,80,159,43,38,37,250, +154,16,247,22,176,13,23,201,1,23,195,1,20,13,159,80,159,43,38,37,250, 80,159,46,39,37,249,22,33,11,80,159,48,38,37,22,189,4,23,198,2,249, -247,22,173,5,23,200,1,27,248,22,67,248,22,143,15,23,201,1,28,23,202, +247,22,173,5,23,200,1,27,248,22,67,248,22,144,15,23,201,1,28,23,202, 2,28,250,22,160,2,248,22,80,23,201,1,23,201,1,11,249,22,79,11,203, 249,22,79,194,203,192,86,94,28,248,22,158,5,23,196,2,12,28,23,197,2, -250,22,131,10,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97, -116,104,23,200,2,250,22,133,10,2,22,2,33,23,198,2,28,28,248,22,77, -23,196,2,249,22,160,9,248,22,183,17,23,198,2,2,4,11,86,97,23,198, +250,22,132,10,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112,97, +116,104,23,200,2,250,22,134,10,2,22,2,33,23,198,2,28,28,248,22,77, +23,196,2,249,22,161,9,248,22,184,17,23,198,2,2,4,11,86,97,23,198, 1,23,197,1,23,196,1,23,193,1,248,22,149,5,248,22,104,23,197,1,28, -28,248,22,77,23,196,2,28,249,22,160,9,248,22,183,17,23,198,2,2,34, -28,248,22,77,248,22,104,23,197,2,249,22,160,9,248,22,108,23,198,2,2, +28,248,22,77,23,196,2,28,249,22,161,9,248,22,184,17,23,198,2,2,34, +28,248,22,77,248,22,104,23,197,2,249,22,161,9,248,22,108,23,198,2,2, 4,11,11,11,86,97,23,198,1,23,197,1,23,196,1,23,193,1,248,22,149, 5,249,2,71,248,22,121,23,199,2,248,22,106,23,199,1,28,28,248,22,77, -23,196,2,28,249,22,160,9,248,22,183,17,23,198,2,2,34,28,28,249,22, -162,9,248,22,104,23,198,2,2,36,10,249,22,162,9,248,22,104,23,198,2, +23,196,2,28,249,22,161,9,248,22,184,17,23,198,2,2,34,28,28,249,22, +163,9,248,22,104,23,198,2,2,36,10,249,22,163,9,248,22,104,23,198,2, 2,35,28,23,196,2,27,248,22,150,5,23,198,2,28,248,22,64,193,10,28, -248,22,77,193,248,22,64,248,22,183,17,194,11,11,11,11,11,86,96,23,198, +248,22,77,193,248,22,64,248,22,184,17,194,11,11,11,11,11,86,96,23,198, 1,23,197,1,23,193,1,27,248,22,150,5,23,198,1,248,22,149,5,249,2, -71,28,248,22,77,23,197,2,248,22,183,17,23,197,2,23,196,2,27,28,249, -22,162,9,248,22,104,23,203,2,2,35,248,22,184,17,200,248,22,106,200,28, -248,22,77,23,198,2,249,22,93,248,22,184,17,199,194,192,28,28,248,22,77, -23,196,2,249,22,160,9,248,22,183,17,23,198,2,2,38,11,86,94,248,80, +71,28,248,22,77,23,197,2,248,22,184,17,23,197,2,23,196,2,27,28,249, +22,163,9,248,22,104,23,203,2,2,35,248,22,185,17,200,248,22,106,200,28, +248,22,77,23,198,2,249,22,93,248,22,185,17,199,194,192,28,28,248,22,77, +23,196,2,249,22,161,9,248,22,184,17,23,198,2,2,38,11,86,94,248,80, 159,38,8,28,39,23,194,2,253,24,199,1,23,201,1,23,202,1,23,203,1, -23,204,1,11,80,158,43,55,28,28,248,22,77,23,196,2,28,249,22,160,9, -248,22,183,17,23,198,2,2,34,28,248,22,77,248,22,104,23,197,2,249,22, -160,9,248,22,108,23,198,2,2,38,11,11,11,86,94,248,80,159,38,8,28, +23,204,1,11,80,158,43,55,28,28,248,22,77,23,196,2,28,249,22,161,9, +248,22,184,17,23,198,2,2,34,28,248,22,77,248,22,104,23,197,2,249,22, +161,9,248,22,108,23,198,2,2,38,11,11,11,86,94,248,80,159,38,8,28, 39,23,194,2,253,24,199,1,248,22,104,23,202,2,23,202,1,23,203,1,23, 204,1,248,22,106,23,202,1,80,158,43,55,86,94,23,193,1,27,88,163,8, 36,37,47,11,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,45, -101,114,114,223,5,33,75,27,28,248,22,77,23,198,2,28,249,22,160,9,2, -34,248,22,183,17,23,200,2,27,248,22,104,23,199,2,28,28,249,22,162,9, -23,195,2,2,36,10,249,22,162,9,23,195,2,2,35,86,94,23,193,1,28, -23,199,2,27,248,22,150,5,23,201,2,28,248,22,77,193,248,22,183,17,193, -192,250,22,129,10,2,22,6,45,45,110,111,32,98,97,115,101,32,112,97,116, +101,114,114,223,5,33,75,27,28,248,22,77,23,198,2,28,249,22,161,9,2, +34,248,22,184,17,23,200,2,27,248,22,104,23,199,2,28,28,249,22,163,9, +23,195,2,2,36,10,249,22,163,9,23,195,2,2,35,86,94,23,193,1,28, +23,199,2,27,248,22,150,5,23,201,2,28,248,22,77,193,248,22,184,17,193, +192,250,22,130,10,2,22,6,45,45,110,111,32,98,97,115,101,32,112,97,116, 104,32,102,111,114,32,114,101,108,97,116,105,118,101,32,115,117,98,109,111,100, 117,108,101,32,112,97,116,104,58,32,126,46,115,23,201,2,192,23,197,2,23, -197,2,27,28,248,22,77,23,199,2,28,249,22,160,9,2,34,248,22,183,17, -23,201,2,27,28,28,28,249,22,162,9,248,22,104,23,202,2,2,36,10,249, -22,162,9,248,22,104,23,202,2,2,35,23,200,2,11,27,248,22,150,5,23, -202,2,27,28,249,22,162,9,248,22,104,23,204,2,2,35,248,22,184,17,23, -202,1,248,22,106,23,202,1,28,248,22,77,23,195,2,249,2,71,248,22,183, -17,23,197,2,249,22,93,248,22,184,17,23,199,1,23,197,1,249,2,71,23, -196,1,23,195,1,249,2,71,2,36,28,249,22,162,9,248,22,104,23,204,2, -2,35,248,22,184,17,23,202,1,248,22,106,23,202,1,28,248,22,77,193,248, -22,184,17,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80,159,43,48, -39,249,22,79,23,199,2,247,22,181,15,28,23,193,2,192,86,94,23,193,1, +197,2,27,28,248,22,77,23,199,2,28,249,22,161,9,2,34,248,22,184,17, +23,201,2,27,28,28,28,249,22,163,9,248,22,104,23,202,2,2,36,10,249, +22,163,9,248,22,104,23,202,2,2,35,23,200,2,11,27,248,22,150,5,23, +202,2,27,28,249,22,163,9,248,22,104,23,204,2,2,35,248,22,185,17,23, +202,1,248,22,106,23,202,1,28,248,22,77,23,195,2,249,2,71,248,22,184, +17,23,197,2,249,22,93,248,22,185,17,23,199,1,23,197,1,249,2,71,23, +196,1,23,195,1,249,2,71,2,36,28,249,22,163,9,248,22,104,23,204,2, +2,35,248,22,185,17,23,202,1,248,22,106,23,202,1,28,248,22,77,193,248, +22,185,17,193,11,11,11,27,28,248,22,64,23,196,2,27,248,80,159,43,48, +39,249,22,79,23,199,2,247,22,182,15,28,23,193,2,192,86,94,23,193,1, 90,159,38,11,89,161,38,36,11,249,80,159,46,54,39,248,22,70,23,201,2, 11,27,28,248,22,87,23,195,2,2,39,249,22,169,7,23,197,2,2,40,251, 80,159,49,59,39,23,204,1,28,248,22,87,23,199,2,23,199,1,86,94,23, 199,1,248,22,80,23,199,2,28,248,22,87,23,199,2,86,94,23,198,1,9, -248,22,184,17,23,199,1,23,197,1,28,248,22,146,7,23,196,2,86,94,23, +248,22,185,17,23,199,1,23,197,1,28,248,22,146,7,23,196,2,86,94,23, 196,1,27,248,80,159,43,8,29,39,23,202,2,27,248,80,159,44,48,39,249, 22,79,23,200,2,23,197,2,28,23,193,2,192,86,94,23,193,1,90,159,38, -11,89,161,38,36,11,249,80,159,47,54,39,23,201,2,11,250,22,1,22,157, +11,89,161,38,36,11,249,80,159,47,54,39,23,201,2,11,250,22,1,22,158, 15,23,199,1,249,22,93,249,22,2,32,0,88,163,8,36,37,44,11,9,222, -33,76,23,200,1,248,22,89,248,2,77,23,201,1,28,248,22,139,15,23,196, -2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,166,15,28,248,22,163, -15,23,198,2,23,197,2,249,22,164,15,23,199,2,248,80,159,46,8,29,39, -23,205,2,28,249,22,160,9,248,22,80,23,198,2,2,32,27,248,80,159,43, -48,39,249,22,79,23,199,2,247,22,181,15,28,23,193,2,192,86,94,23,193, +33,76,23,200,1,248,22,89,248,2,77,23,201,1,28,248,22,140,15,23,196, +2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,167,15,28,248,22,164, +15,23,198,2,23,197,2,249,22,165,15,23,199,2,248,80,159,46,8,29,39, +23,205,2,28,249,22,161,9,248,22,80,23,198,2,2,32,27,248,80,159,43, +48,39,249,22,79,23,199,2,247,22,182,15,28,23,193,2,192,86,94,23,193, 1,90,159,39,11,89,161,38,36,11,249,80,159,47,54,39,248,22,104,23,202, 2,11,89,161,37,38,11,28,248,22,87,248,22,106,23,201,2,28,248,22,87, -23,194,2,249,22,132,16,2,79,23,196,2,11,10,27,28,23,196,2,248,2, -77,23,196,2,28,248,22,87,23,195,2,2,39,28,249,22,132,16,2,79,23, +23,194,2,249,22,133,16,2,79,23,196,2,11,10,27,28,23,196,2,248,2, +77,23,196,2,28,248,22,87,23,195,2,2,39,28,249,22,133,16,2,79,23, 197,2,248,2,77,23,196,2,249,22,169,7,23,197,2,2,40,27,28,23,197, 1,86,94,23,196,1,249,22,93,28,248,22,87,248,22,106,23,205,2,21,93, 6,5,5,109,122,108,105,98,249,22,1,22,93,249,22,2,80,159,53,8,31, 39,248,22,106,23,208,2,23,197,1,28,248,22,87,23,196,2,86,94,23,195, 1,248,22,89,23,197,1,86,94,23,196,1,23,195,1,251,80,159,51,59,39, -23,206,1,248,22,80,23,198,2,248,22,184,17,23,198,1,23,198,1,28,249, -22,160,9,248,22,183,17,23,198,2,2,37,248,80,159,42,8,30,39,248,22, -166,15,249,22,164,15,248,22,168,15,248,22,104,23,201,2,248,80,159,46,8, -29,39,23,205,2,12,86,94,28,28,248,22,139,15,23,194,2,10,248,22,175, -8,23,194,2,86,94,23,201,1,12,28,23,201,2,250,22,131,10,67,114,101, +23,206,1,248,22,80,23,198,2,248,22,185,17,23,198,1,23,198,1,28,249, +22,161,9,248,22,184,17,23,198,2,2,37,248,80,159,42,8,30,39,248,22, +167,15,249,22,165,15,248,22,169,15,248,22,104,23,201,2,248,80,159,46,8, +29,39,23,205,2,12,86,94,28,28,248,22,140,15,23,194,2,10,248,22,176, +8,23,194,2,86,94,23,201,1,12,28,23,201,2,250,22,132,10,67,114,101, 113,117,105,114,101,249,22,130,8,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,80,23,199,2,6,0,0, -23,204,1,86,94,23,201,1,250,22,133,10,2,22,2,33,23,198,2,27,28, -248,22,175,8,23,195,2,249,22,180,8,23,196,2,36,249,22,166,15,248,22, -167,15,23,197,2,11,27,28,248,22,175,8,23,196,2,249,22,180,8,23,197, +23,204,1,86,94,23,201,1,250,22,134,10,2,22,2,33,23,198,2,27,28, +248,22,176,8,23,195,2,249,22,181,8,23,196,2,36,249,22,167,15,248,22, +168,15,23,197,2,11,27,28,248,22,176,8,23,196,2,249,22,181,8,23,197, 2,37,248,80,159,44,8,24,39,23,195,2,90,159,39,11,89,161,39,36,11, -28,248,22,175,8,23,199,2,250,22,7,2,41,249,22,180,8,23,203,2,38, -2,41,248,22,160,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248,22, -175,8,23,200,2,249,22,180,8,23,201,2,39,249,80,159,49,58,39,23,197, -2,5,0,27,28,248,22,175,8,23,201,2,249,22,180,8,23,202,2,40,248, -22,149,5,23,200,2,27,250,22,160,2,80,159,52,41,38,248,22,153,16,247, -22,175,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,79, +28,248,22,176,8,23,199,2,250,22,7,2,41,249,22,181,8,23,203,2,38, +2,41,248,22,161,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248,22, +176,8,23,200,2,249,22,181,8,23,201,2,39,249,80,159,49,58,39,23,197, +2,5,0,27,28,248,22,176,8,23,201,2,249,22,181,8,23,202,2,40,248, +22,149,5,23,200,2,27,250,22,160,2,80,159,52,41,38,248,22,154,16,247, +22,176,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22,79, 247,22,140,2,247,22,140,2,86,94,250,22,158,2,80,159,54,41,38,248,22, -153,16,247,22,175,13,195,192,27,28,23,204,2,248,22,149,5,249,22,79,248, +154,16,247,22,176,13,195,192,27,28,23,204,2,248,22,149,5,249,22,79,248, 22,150,5,23,200,2,23,207,2,23,196,2,86,95,28,23,212,1,27,250,22, 160,2,248,22,80,23,199,2,196,11,28,23,193,1,12,27,27,28,248,22,17, 80,159,55,51,38,80,159,54,51,38,247,22,19,251,22,33,11,80,159,58,50, -38,9,23,197,1,27,248,22,153,16,247,22,175,13,86,94,249,22,3,20,20, +38,9,23,197,1,27,248,22,154,16,247,22,176,13,86,94,249,22,3,20,20, 94,88,163,8,36,37,54,11,9,226,14,13,2,3,33,82,23,195,1,23,196, 2,248,28,248,22,17,80,159,56,51,38,32,0,88,163,36,37,42,11,9,222, 33,83,80,159,55,8,32,39,20,20,96,88,163,36,36,56,8,240,12,64,0, 0,9,230,19,15,13,12,8,7,5,2,33,84,23,195,1,23,198,1,23,208, -1,12,28,28,248,22,175,8,23,204,1,11,28,248,22,146,7,23,206,2,10, -28,248,22,64,23,206,2,10,28,248,22,77,23,206,2,249,22,160,9,248,22, -183,17,23,208,2,2,32,11,249,80,159,53,49,39,28,248,22,146,7,23,208, +1,12,28,28,248,22,176,8,23,204,1,11,28,248,22,146,7,23,206,2,10, +28,248,22,64,23,206,2,10,28,248,22,77,23,206,2,249,22,161,9,248,22, +184,17,23,208,2,2,32,11,249,80,159,53,49,39,28,248,22,146,7,23,208, 2,249,22,79,23,209,1,248,80,159,56,8,29,39,23,215,1,86,94,23,212, -1,249,22,79,23,209,1,247,22,181,15,252,22,177,8,23,209,1,23,208,1, +1,249,22,79,23,209,1,247,22,182,15,252,22,178,8,23,209,1,23,208,1, 23,206,1,23,204,1,23,203,1,12,192,86,96,20,18,159,11,80,158,36,55, 248,80,159,37,8,27,37,249,22,33,11,80,159,39,57,37,248,22,188,4,80, -159,37,56,38,248,22,173,5,80,159,37,37,39,248,22,172,14,80,159,37,45, +159,37,56,38,248,22,173,5,80,159,37,37,39,248,22,173,14,80,159,37,45, 39,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22,33,11,80, 159,39,57,37,20,18,159,11,80,158,36,55,248,80,159,37,8,27,37,249,22, 33,11,80,159,39,57,37,159,36,20,114,159,36,16,1,11,16,0,20,26,145, @@ -1037,14 +1038,14 @@ 2,18,2,19,2,12,2,3,2,11,2,2,2,14,2,15,2,10,2,20,2, 22,51,11,11,11,16,3,2,24,2,21,2,25,16,3,11,11,11,16,3,2, 24,2,21,2,25,39,39,37,12,11,11,16,0,16,0,16,0,36,36,11,12, -11,11,16,0,16,0,16,0,36,36,16,23,20,15,16,2,248,22,172,8,69, +11,11,16,0,16,0,16,0,36,36,16,23,20,15,16,2,248,22,173,8,69, 115,111,45,115,117,102,102,105,120,80,159,36,36,37,20,15,16,2,88,163,36, 38,8,43,8,189,3,2,3,223,0,33,54,80,159,36,37,37,20,15,16,2, 32,0,88,163,8,36,41,52,11,2,10,222,33,55,80,159,36,44,37,20,15, 16,2,20,27,158,32,0,88,163,8,36,37,42,11,2,11,222,192,32,0,88, 163,8,36,37,42,11,2,11,222,192,80,159,36,45,37,20,15,16,2,247,22, 143,2,80,159,36,41,37,20,15,16,2,8,128,8,80,159,36,46,37,20,15, -16,2,249,22,176,8,8,128,8,11,80,159,36,47,37,20,15,16,2,88,163, +16,2,249,22,177,8,8,128,8,11,80,159,36,47,37,20,15,16,2,88,163, 8,36,37,50,8,128,32,2,14,223,0,33,56,80,159,36,48,37,20,15,16, 2,88,163,8,36,38,55,8,128,32,2,15,223,0,33,57,80,159,36,49,37, 20,15,16,2,247,22,75,80,159,36,50,37,20,15,16,2,248,22,18,74,109, @@ -1073,7 +1074,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 8821); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,50,84,0,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,7,53,46,51,46,52,46,51,84,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,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,99,1,0, 0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,2, @@ -1081,7 +1082,7 @@ 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,200,93, +29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,168,91, 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,114,159,36,16,1,11,16,0,20,26,145,9,2,1,2, diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index 1898015e1b..85d7837af4 100644 --- a/src/racket/src/schminc.h +++ b/src/racket/src/schminc.h @@ -14,7 +14,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 1092 +#define EXPECTED_PRIM_COUNT 1093 #define EXPECTED_UNSAFE_COUNT 100 #define EXPECTED_FLFXNUM_COUNT 69 #define EXPECTED_EXTFL_COUNT 45 diff --git a/src/racket/src/schpriv.h b/src/racket/src/schpriv.h index 37524f1b81..913789560d 100644 --- a/src/racket/src/schpriv.h +++ b/src/racket/src/schpriv.h @@ -4000,8 +4000,7 @@ void scheme_unused_intptr(intptr_t); intptr_t scheme_check_overflow(intptr_t n, intptr_t m, intptr_t a); -Scheme_Object *scheme_make_environment_variables(Scheme_Hash_Table *ht); -# define SCHEME_ENVVARS_TABLE(ev) ((Scheme_Hash_Table *)SCHEME_PTR_VAL(ev)) +Scheme_Object *scheme_make_environment_variables(Scheme_Hash_Tree *ht); void *scheme_environment_variables_to_block(Scheme_Object *env, int *_need_free); /*========================================================================*/ diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index f1a2b2ecf7..5eb83b06ac 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.3.4.2" +#define MZSCHEME_VERSION "5.3.4.3" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 3 #define MZSCHEME_VERSION_Z 4 -#define MZSCHEME_VERSION_W 2 +#define MZSCHEME_VERSION_W 3 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/racket/src/startup.inc b/src/racket/src/startup.inc index 56785b62aa..074bd17c2c 100644 --- a/src/racket/src/startup.inc +++ b/src/racket/src/startup.inc @@ -261,7 +261,8 @@ "(if(and(relative-path? program)" "(let-values(((base name dir?)(split-path program)))" "(eq? base 'relative)))" -" (let ((paths-str (environment-variables-get #\"PATH\"))" +"(let((paths-str(environment-variables-get(current-environment-variables)" +" #\"PATH\"))" "(win-add(lambda(s)(if(eq?(system-type) 'windows) " " (cons (bytes->path #\".\") s) " " s))))" @@ -635,7 +636,8 @@ "(cons-if(lambda(f r)(if f(cons f r) r))))" "(path-list-string->path-list" "(if user-too?" -" (let ((c (environment-variables-get #\"PLTCOLLECTS\")))" +"(let((c(environment-variables-get(current-environment-variables)" +" #\"PLTCOLLECTS\")))" "(if c" "(bytes->string/locale c #\\?)" " \"\"))" diff --git a/src/racket/src/startup.rktl b/src/racket/src/startup.rktl index bf879697f6..ab4e9812a7 100644 --- a/src/racket/src/startup.rktl +++ b/src/racket/src/startup.rktl @@ -316,7 +316,8 @@ (if (and (relative-path? program) (let-values ([(base name dir?) (split-path program)]) (eq? base 'relative))) - (let ([paths-str (environment-variables-get #"PATH")] + (let ([paths-str (environment-variables-get (current-environment-variables) + #"PATH")] [win-add (lambda (s) (if (eq? (system-type) 'windows) (cons (bytes->path #".") s) s))]) @@ -731,7 +732,8 @@ [cons-if (lambda (f r) (if f (cons f r) r))]) (path-list-string->path-list (if user-too? - (let ([c (environment-variables-get #"PLTCOLLECTS")]) + (let ([c (environment-variables-get (current-environment-variables) + #"PLTCOLLECTS")]) (if c (bytes->string/locale c #\?) "")) diff --git a/src/racket/src/string.c b/src/racket/src/string.c index e291b5a684..237e9aa5f2 100644 --- a/src/racket/src/string.c +++ b/src/racket/src/string.c @@ -306,6 +306,7 @@ static Scheme_Object *sch_getenv(int argc, Scheme_Object *argv[]); static Scheme_Object *sch_getenv_names(int argc, Scheme_Object *argv[]); static Scheme_Object *sch_putenv(int argc, Scheme_Object *argv[]); static Scheme_Object *env_copy(int argc, Scheme_Object *argv[]); +static Scheme_Object *env_make(int argc, Scheme_Object *argv[]); static Scheme_Object *current_environment_variables(int argc, Scheme_Object *argv[]); static Scheme_Object *system_type(int argc, Scheme_Object *argv[]); static Scheme_Object *system_library_subpath(int argc, Scheme_Object *argv[]); @@ -870,13 +871,13 @@ scheme_init_string (Scheme_Env *env) scheme_add_global_constant("environment-variables-get", scheme_make_immed_prim(sch_getenv, "environment-variables-get", - 1, 2), + 2, 2), env); scheme_add_global_constant("environment-variables-set!", scheme_make_prim_w_arity(sch_putenv, "environment-variables-set!", - 2, 4), + 3, 4), env); scheme_add_global_constant("environment-variables-keys", @@ -891,6 +892,12 @@ scheme_init_string (Scheme_Env *env) 1, 1), env); + scheme_add_global_constant("make-environment-variables", + scheme_make_immed_prim(env_make, + "make-environment-variables", + 0, -1), + env); + /* Don't make these folding, since they're platform-specific: */ scheme_add_global_constant("system-type", @@ -2093,7 +2100,9 @@ extern char **environ; # define GET_ENVIRON_ARRAY environ #endif -Scheme_Object *scheme_make_environment_variables(Scheme_Hash_Table *ht) +#define SCHEME_ENVVARS_TABLE(ev) ((Scheme_Hash_Tree *)SCHEME_PTR_VAL(ev)) + +Scheme_Object *scheme_make_environment_variables(Scheme_Hash_Tree *ht) { Scheme_Object *ev; @@ -2238,25 +2247,32 @@ int byte_string_ok_name(Scheme_Object *o) return 1; } +static Scheme_Object *normalize_env_case(Scheme_Object *bs) +{ +#ifdef DOS_FILE_SYSTEM + bs = scheme_byte_string_to_char_string(bs); + bs = string_locale_downcase(1, &bs); + bs = scheme_char_string_to_byte_string(bs); +#endif + return bs; +} + static Scheme_Object *sch_getenv(int argc, Scheme_Object *argv[]) { char *name; char *value; Scheme_Object *bs, *ev, *val; - Scheme_Hash_Table *ht; + Scheme_Hash_Tree *ht; - bs = argv[0]; + if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_environment_variables_type)) + scheme_wrong_contract("environment-variables-get", "environment-variables?", 0, argc, argv); + + bs = argv[1]; if (!SCHEME_BYTE_STRINGP(bs) || !byte_string_ok_name(bs)) - scheme_wrong_contract("environment-variables-get", "bytes-environment-variable-name?", 0, argc, argv); - if ((argc > 1) - && !SAME_TYPE(SCHEME_TYPE(argv[1]), scheme_environment_variables_type)) - scheme_wrong_contract("environment-variables-get", "environment-variables?", 1, argc, argv); + scheme_wrong_contract("environment-variables-get", "bytes-environment-variable-name?", 1, argc, argv); - if (argc > 1) - ev = argv[1]; - else - ev = scheme_get_param(scheme_current_config(), MZCONFIG_CURRENT_ENV_VARS); + ev = argv[0]; ht = SCHEME_ENVVARS_TABLE(ev); if (!ht) { @@ -2270,7 +2286,8 @@ static Scheme_Object *sch_getenv(int argc, Scheme_Object *argv[]) return value ? scheme_make_byte_string(value) : scheme_false; } else { - val = scheme_hash_get_atomic(ht, bs); + bs = normalize_env_case(bs); + val = scheme_hash_tree_get(ht, bs); return val ? val : scheme_false; } } @@ -2320,41 +2337,43 @@ static int sch_unix_putenv(const char *var, const char *val, const intptr_t varl static Scheme_Object *sch_putenv(int argc, Scheme_Object *argv[]) { Scheme_Object *varbs, *valbs, *ev; - Scheme_Hash_Table *ht; + Scheme_Hash_Tree *ht; char *var; char *val; int rc = 0, errid = 0; - varbs = argv[0]; + if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_environment_variables_type)) + scheme_wrong_contract("environment-variables-set!", "environment-variables?", 0, argc, argv); + + varbs = argv[1]; if (!SCHEME_BYTE_STRINGP(varbs) || !byte_string_ok_name(varbs)) - scheme_wrong_contract("environment-variables-set!", "bytes-environment-variable-name?", 0, argc, argv); - valbs = argv[1]; + scheme_wrong_contract("environment-variables-set!", "bytes-environment-variable-name?", 1, argc, argv); + + valbs = argv[2]; if (!SCHEME_FALSEP(valbs) && (!SCHEME_BYTE_STRINGP(valbs) || scheme_byte_string_has_null(valbs))) - scheme_wrong_contract("environment-variables-set!", "(or/c bytes-no-nuls? #f)", 1, argc, argv); - if ((argc > 2) - && !SAME_TYPE(SCHEME_TYPE(argv[2]), scheme_environment_variables_type)) - scheme_wrong_contract("environment-variables-set!", "environment-variables?", 1, argc, argv); + scheme_wrong_contract("environment-variables-set!", "(or/c bytes-no-nuls? #f)", 2, argc, argv); if (argc > 3) scheme_check_proc_arity("environment-variables-set!", 0, 3, argc, argv); - if (argc > 2) - ev = argv[2]; - else - ev = scheme_get_param(scheme_current_config(), MZCONFIG_CURRENT_ENV_VARS); + ev = argv[0]; ht = SCHEME_ENVVARS_TABLE(ev); if (ht) { + varbs = normalize_env_case(varbs); + if (SCHEME_FALSEP(valbs)) { - scheme_hash_set_atomic(ht, varbs, NULL); + ht = scheme_hash_tree_set(ht, varbs, NULL); } else { varbs = byte_string_to_immutable(1, &varbs); valbs = byte_string_to_immutable(1, &valbs); - scheme_hash_set_atomic(ht, varbs, valbs); + ht = scheme_hash_tree_set(ht, varbs, valbs); } + SCHEME_PTR_VAL(ev) = (Scheme_Object *)ht; + return scheme_void; } else { var = SCHEME_BYTE_STR_VAL(varbs); @@ -2391,22 +2410,22 @@ static Scheme_Object *sch_putenv(int argc, Scheme_Object *argv[]) static Scheme_Object *env_copy(int argc, Scheme_Object *argv[]) { - Scheme_Hash_Table *ht; + Scheme_Hash_Tree *ht; if (!SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_environment_variables_type)) scheme_wrong_contract("environment-variables-copy", "environment-variables?", 0, argc, argv); ht = SCHEME_ENVVARS_TABLE(argv[0]); if (ht) - return scheme_make_environment_variables(scheme_clone_hash_table(ht)); + return scheme_make_environment_variables(ht); /* copy system environment variables into a hash table: */ - ht = scheme_make_hash_table_equal(); + ht = scheme_make_hash_tree(1); #ifdef DOS_FILE_SYSTEM { char *p; - wchar_t *e; + GC_CAN_IGNORE wchar_t *e; int i, start, j; Scheme_Object *var, *val; @@ -2414,16 +2433,15 @@ static Scheme_Object *env_copy(int argc, Scheme_Object *argv[]) for (i = 0; e[i]; ) { start = i; - while (e[i]) { - i++; - } + while (e[i]) { i++; } p = NARROW_PATH(e XFORM_OK_PLUS start); for (j = 0; p[j] && p[j] != '='; j++) { } - if (p[j]) { + if (j && p[j]) { var = scheme_make_immutable_sized_byte_string(p, j, 1); val = scheme_make_immutable_sized_byte_string(p XFORM_OK_PLUS j + 1, -1, 1); - scheme_hash_set(ht, var, val); + var = normalize_env_case(var); + ht = scheme_hash_tree_set(ht, var, val); } i++; } @@ -2445,7 +2463,7 @@ static Scheme_Object *env_copy(int argc, Scheme_Object *argv[]) if (p[j]) { var = scheme_make_immutable_sized_byte_string(p, j, 1); val = scheme_make_immutable_sized_byte_string(p XFORM_OK_PLUS j + 1, -1, 1); - scheme_hash_set(ht, var, val); + ht = scheme_hash_tree_set(ht, var, val); } } } @@ -2454,10 +2472,48 @@ static Scheme_Object *env_copy(int argc, Scheme_Object *argv[]) return scheme_make_environment_variables(ht); } +static Scheme_Object *env_make(int argc, Scheme_Object *argv[]) +{ + Scheme_Hash_Tree *ht; + Scheme_Object *varbs, *valbs; + int i; + + ht = scheme_make_hash_tree(1); + + for (i = 0; i < argc; i += 2) { + varbs = argv[i]; + if (!SCHEME_BYTE_STRINGP(varbs) + || !byte_string_ok_name(varbs)) + scheme_wrong_contract("make-environment-variables", "bytes-environment-variable-name?", i, argc, argv); + + if (i+1 >= argc) { + scheme_contract_error("make-environment-variables", + "key does not have a value (i.e., an odd number of arguments were provided)", + "key", 1, argv[i], + NULL); + return NULL; + } + + valbs = argv[i+1]; + if (!SCHEME_FALSEP(valbs) + && (!SCHEME_BYTE_STRINGP(valbs) + || scheme_byte_string_has_null(valbs))) + scheme_wrong_contract("make-environment-variables", "(or/c bytes-no-nuls? #f)", i+1, argc, argv); + + varbs = normalize_env_case(varbs); + + varbs = byte_string_to_immutable(1, &varbs); + valbs = byte_string_to_immutable(1, &valbs); + ht = scheme_hash_tree_set(ht, varbs, valbs); + } + + return scheme_make_environment_variables(ht); +} + static Scheme_Object *sch_getenv_names(int argc, Scheme_Object *argv[]) { - Scheme_Object *ev, *r = scheme_null; - Scheme_Hash_Table *ht; + Scheme_Object *ev, *r = scheme_null, *key, *val; + Scheme_Hash_Tree *ht; int i; ev = argv[0]; @@ -2470,10 +2526,9 @@ static Scheme_Object *sch_getenv_names(int argc, Scheme_Object *argv[]) ht = SCHEME_ENVVARS_TABLE(ev); } - for (i = ht->size; i--; ) { - if (ht->vals[i]) { - r = scheme_make_pair(ht->keys[i], r); - } + for (i = scheme_hash_tree_next(ht, -1); i != -1; i = scheme_hash_tree_next(ht, i)) { + scheme_hash_tree_index(ht, i, &key, &val); + r = scheme_make_pair(key, r); } return r; @@ -2490,7 +2545,8 @@ static int wc_strlen(const wchar_t *ws) void *scheme_environment_variables_to_block(Scheme_Object *ev, int *_need_free) { - Scheme_Hash_Table *ht; + Scheme_Hash_Tree *ht; + Scheme_Object *key, *val; ht = SCHEME_ENVVARS_TABLE(ev); if (!ht) { @@ -2510,31 +2566,29 @@ void *scheme_environment_variables_to_block(Scheme_Object *ev, int *_need_free) int len = 0, slen; GC_CAN_IGNORE wchar_t *r, *s; - for (i = ht->size; i--; ) { - if (ht->vals[i]) { - len += wc_strlen(WIDE_PATH(SCHEME_BYTE_STR_VAL(ht->keys[i]))); - len += wc_strlen(WIDE_PATH(SCHEME_BYTE_STR_VAL(ht->vals[i]))); - len += 2; - } + for (i = scheme_hash_tree_next(ht, -1); i != -1; i = scheme_hash_tree_next(ht, i)) { + scheme_hash_tree_index(ht, i, &key, &val); + len += wc_strlen(WIDE_PATH(SCHEME_BYTE_STR_VAL(key))); + len += wc_strlen(WIDE_PATH(SCHEME_BYTE_STR_VAL(val))); + len += 2; } r = (wchar_t *)malloc((len + 1) * sizeof(wchar_t)); len = 0; - for (i = ht->size; i--; ) { - if (ht->vals[i]) { - s = WIDE_PATH(SCHEME_BYTE_STR_VAL(ht->keys[i])); - slen = wc_strlen(s); - memcpy(r XFORM_OK_PLUS len, s, slen * sizeof(wchar_t)); - len += slen; - r[len++] = '='; - s = WIDE_PATH(SCHEME_BYTE_STR_VAL(ht->vals[i])); - slen = wc_strlen(s); - memcpy(r XFORM_OK_PLUS len, s, slen * sizeof(wchar_t)); - len += slen; - r[len++] = 0; - } + for (i = scheme_hash_tree_next(ht, -1); i != -1; i = scheme_hash_tree_next(ht, i)) { + scheme_hash_tree_index(ht, i, &key, &val); + s = WIDE_PATH(SCHEME_BYTE_STR_VAL(key)); + slen = wc_strlen(s); + memcpy(r XFORM_OK_PLUS len, s, slen * sizeof(wchar_t)); + len += slen; + r[len++] = '='; + s = WIDE_PATH(SCHEME_BYTE_STR_VAL(val)); + slen = wc_strlen(s); + memcpy(r XFORM_OK_PLUS len, s, slen * sizeof(wchar_t)); + len += slen; + r[len++] = 0; } r[len] = 0; @@ -2545,29 +2599,29 @@ void *scheme_environment_variables_to_block(Scheme_Object *ev, int *_need_free) GC_CAN_IGNORE char **r, *s; intptr_t i, len = 0, slen, c; - for (i = ht->size; i--; ) { - if (ht->vals[i]) { - len += SCHEME_BYTE_STRLEN_VAL(ht->keys[i]); - len += SCHEME_BYTE_STRLEN_VAL(ht->vals[i]); - len += 2; - } + for (i = scheme_hash_tree_next(ht, -1); i != -1; i = scheme_hash_tree_next(ht, i)) { + scheme_hash_tree_index(ht, i, &key, &val); + len += SCHEME_BYTE_STRLEN_VAL(key); + len += SCHEME_BYTE_STRLEN_VAL(val); + len += 2; } r = (char **)malloc((ht->count+1) * sizeof(char*) + len); s = (char *)(r + (ht->count+1)); - for (i = ht->size, c = 0; i--; ) { - if (ht->vals[i]) { - r[c++] = s; - slen = SCHEME_BYTE_STRLEN_VAL(ht->keys[i]); - memcpy(s, SCHEME_BYTE_STR_VAL(ht->keys[i]), slen); - s[slen] = '='; - s = s XFORM_OK_PLUS (slen + 1); - slen = SCHEME_BYTE_STRLEN_VAL(ht->vals[i]); - memcpy(s, SCHEME_BYTE_STR_VAL(ht->vals[i]), slen); - s[slen] = 0; - s = s XFORM_OK_PLUS (slen + 1); - } + c = 0; + for (i = scheme_hash_tree_next(ht, -1); i != -1; i = scheme_hash_tree_next(ht, i)) { + scheme_hash_tree_index(ht, i, &key, &val); + r[c++] = s; + slen = SCHEME_BYTE_STRLEN_VAL(key); + memcpy(s, SCHEME_BYTE_STR_VAL(key), slen); + s[slen] = '='; + s = s XFORM_OK_PLUS (slen + 1); + slen = SCHEME_BYTE_STRLEN_VAL(val); + memcpy(s, SCHEME_BYTE_STR_VAL(val), slen); + s[slen] = 0; + s = s XFORM_OK_PLUS (slen + 1); } + r[c] = NULL; return r; }