From cdfc4912adaaadfcc056b80f3d431b84602424f5 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 31 Dec 2012 08:18:30 -0700 Subject: [PATCH] racket/base: add exn:fail:filesystem:errno and exn:fail:network:errno Provide raw error codes when available, which is mostly from filesystem and networking primitives. --- collects/racket/private/kernstruct.rkt | 72 +- collects/scribblings/reference/exns.scrbl | 55 +- collects/tests/racket/file.rktl | 10 +- collects/tests/racket/namespac.rktl | 2 + collects/tests/racket/udp.rktl | 2 +- doc/release-notes/racket/HISTORY.txt | 3 + src/racket/src/cstartup.inc | 786 +++++++++++----------- src/racket/src/error.c | 77 ++- src/racket/src/makeexn | 10 +- src/racket/src/schexn.h | 20 +- src/racket/src/schminc.h | 2 +- src/racket/src/schvers.h | 4 +- 12 files changed, 603 insertions(+), 440 deletions(-) diff --git a/collects/racket/private/kernstruct.rkt b/collects/racket/private/kernstruct.rkt index f67eb5db87..0d90a2989c 100644 --- a/collects/racket/private/kernstruct.rkt +++ b/collects/racket/private/kernstruct.rkt @@ -319,6 +319,26 @@ '(#f #f) (quote-syntax exn:fail:filesystem))) (λ () (quote-syntax kernel:exn:fail:filesystem:version))))) + (begin + (#%require + (rename '#%kernel + kernel:exn:fail:filesystem:errno + exn:fail:filesystem:errno)) + (define make-exn:fail:filesystem:errno kernel:exn:fail:filesystem:errno) + (define-syntax exn:fail:filesystem:errno + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:exn:fail:filesystem:errno) + (quote-syntax make-exn:fail:filesystem:errno) + (quote-syntax exn:fail:filesystem:errno?) + (list + (quote-syntax exn:fail:filesystem:errno-errno) + (quote-syntax exn-continuation-marks) + (quote-syntax exn-message)) + '(#f #f #f) + (quote-syntax exn:fail:filesystem))) + (λ () (quote-syntax kernel:exn:fail:filesystem:errno))))) (begin (#%require (rename '#%kernel kernel:exn:fail:network exn:fail:network)) (define make-exn:fail:network kernel:exn:fail:network) @@ -335,6 +355,24 @@ '(#f #f) (quote-syntax exn:fail))) (λ () (quote-syntax kernel:exn:fail:network))))) + (begin + (#%require + (rename '#%kernel kernel:exn:fail:network:errno exn:fail:network:errno)) + (define make-exn:fail:network:errno kernel:exn:fail:network:errno) + (define-syntax exn:fail:network:errno + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:exn:fail:network:errno) + (quote-syntax make-exn:fail:network:errno) + (quote-syntax exn:fail:network:errno?) + (list + (quote-syntax exn:fail:network:errno-errno) + (quote-syntax exn-continuation-marks) + (quote-syntax exn-message)) + '(#f #f #f) + (quote-syntax exn:fail:network))) + (λ () (quote-syntax kernel:exn:fail:network:errno))))) (begin (#%require (rename '#%kernel kernel:exn:fail:out-of-memory exn:fail:out-of-memory)) @@ -402,6 +440,23 @@ '(#f #f #f) (quote-syntax exn))) (λ () (quote-syntax kernel:exn:break))))) + (begin + (#%require (rename '#%kernel kernel:exn:break:hang-up exn:break:hang-up)) + (define make-exn:break:hang-up kernel:exn:break:hang-up) + (define-syntax exn:break:hang-up + (make-self-ctr-struct-info + (λ () + (list + (quote-syntax struct:exn:break:hang-up) + (quote-syntax make-exn:break:hang-up) + (quote-syntax exn:break:hang-up?) + (list + (quote-syntax exn:break-continuation) + (quote-syntax exn-continuation-marks) + (quote-syntax exn-message)) + '(#f #f #f) + (quote-syntax exn:break))) + (λ () (quote-syntax kernel:exn:break:hang-up))))) (begin (#%require (rename '#%kernel kernel:exn:break:terminate exn:break:terminate)) @@ -420,23 +475,6 @@ '(#f #f #f) (quote-syntax exn:break))) (λ () (quote-syntax kernel:exn:break:terminate))))) - (begin - (#%require (rename '#%kernel kernel:exn:break:hang-up exn:break:hang-up)) - (define make-exn:break:hang-up kernel:exn:break:hang-up) - (define-syntax exn:break:hang-up - (make-self-ctr-struct-info - (λ () - (list - (quote-syntax struct:exn:break:hang-up) - (quote-syntax make-exn:break:hang-up) - (quote-syntax exn:break:hang-up?) - (list - (quote-syntax exn:break-continuation) - (quote-syntax exn-continuation-marks) - (quote-syntax exn-message)) - '(#f #f #f) - (quote-syntax exn:break))) - (λ () (quote-syntax kernel:exn:break:hang-up))))) (begin (#%require (rename '#%kernel kernel:arity-at-least arity-at-least)) (define make-arity-at-least kernel:arity-at-least) diff --git a/collects/scribblings/reference/exns.scrbl b/collects/scribblings/reference/exns.scrbl index 0d02155367..7afff0d477 100644 --- a/collects/scribblings/reference/exns.scrbl +++ b/collects/scribblings/reference/exns.scrbl @@ -470,7 +470,9 @@ predicate, because the @racket[exn:break] exception typically should not be caught (unless it will be re-raised to cooperatively break). Beware, also, of catching and discarding exceptions, because discarding an error message can make debugging unnecessarily -difficult.} +difficult; instead of discarding an error message, consider logging it +via @racket[log-error] or a logging form created by +@racket[define-logger].} @defform[(with-handlers* ([pred-expr handler-expr] ...) body ...+)]{ @@ -587,7 +589,37 @@ structure is affected by the parameter. The default is @racket[#t].} The base @tech{structure type} for exceptions. The @racket[message] field contains an error message, and the @racket[continuation-marks] field contains the value produced by @racket[(current-continuation-marks)] -immediately before the exception was raised.} +immediately before the exception was raised. + +Exceptions raised by Racket form a hierarchy under @racket[exn]: + +@racketblock[ +exn + exn:fail + exn:fail:contract + exn:fail:contract:arity + exn:fail:contract:divide-by-zero + exn:fail:contract:non-fixnum-result + exn:fail:contract:continuation + exn:fail:contract:variable + exn:fail:syntax + exn:fail:syntax:unbound + exn:fail:read + exn:fail:read:eof + exn:fail:read:non-char + exn:fail:filesystem + exn:fail:filesystem:exists + exn:fail:filesystem:version + exn:fail:filesystem:errno + exn:fail:network + exn:fail:network:errno + exn:fail:out-of-memory + exn:fail:unsupported + exn:fail:user + exn:break + exn:break:hang-up + exn:break:terminate +]} @defstruct[(exn:fail exn) () #:inspector #f]{ @@ -679,12 +711,31 @@ already.} Raised for a version-mismatch error when loading an extension.} +@defstruct[(exn:fail:filesystem:errno exn:fail:filesystem) ([errno (cons/c exact-integer? (or/c 'posix 'windows 'gai))]) + #:inspector #f]{ + +Raised for a filesystem error for which a system error code is +available. The symbol part of an @racket[errno] field indicates the +category of the error code: @racket['posix] indicates a C/Posix +@tt{errno} value, @racket['windows] indicates a Windows system error +code (under Windows, only), and @racket['gai] indicates a +@tt{getaddrinfo} error code (which shows up only in +@racket[exn:fail:network:errno] exceptions for operations that resolve +hostnames, but it allowed in @racket[exn:fail:filesystem:errno] +instances for consistency).} @defstruct[(exn:fail:network exn:fail) () #:inspector #f]{ Raised for TCP and UDP errors.} +@defstruct[(exn:fail:network:errno exn:fail:network) ([errno (cons/c exact-integer? (or/c 'posix 'windows 'gai))]) + #:inspector #f]{ + +Raised for a TCP or UDP error for which a system error code is +available, where the @racket[errno] field is as for +@racket[exn:fail:filesystem:errno].} + @defstruct[(exn:fail:out-of-memory exn:fail) () #:inspector #f]{ diff --git a/collects/tests/racket/file.rktl b/collects/tests/racket/file.rktl index a6cd7be202..ef35a11725 100644 --- a/collects/tests/racket/file.rktl +++ b/collects/tests/racket/file.rktl @@ -259,7 +259,7 @@ (err/rt-test (open-input-file 8)) (err/rt-test (open-input-file "x" 8)) (err/rt-test (open-input-file "x" 'something-else)) -(err/rt-test (open-input-file "badfile") exn:fail:filesystem?) +(err/rt-test (open-input-file "badfile") exn:fail:filesystem:errno?) (arity-test open-output-file 1 1) (err/rt-test (open-output-file 8)) @@ -1559,4 +1559,12 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(test #t exn? (exn:fail:filesystem:errno "a" (current-continuation-marks) '(10 . posix))) +(err/rt-test (exn:fail:filesystem:errno "a" (current-continuation-marks) 10)) +(err/rt-test (exn:fail:filesystem:errno "a" (current-continuation-marks) '(10 posix))) +(err/rt-test (exn:fail:filesystem:errno "a" (current-continuation-marks) '(10))) +(err/rt-test (exn:fail:filesystem:errno "a" (current-continuation-marks) '#(10))) + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (report-errs) diff --git a/collects/tests/racket/namespac.rktl b/collects/tests/racket/namespac.rktl index 1d16c5a5cd..b4d5f95951 100644 --- a/collects/tests/racket/namespac.rktl +++ b/collects/tests/racket/namespac.rktl @@ -57,7 +57,9 @@ (mkp "exn:fail:filesystem") (mkp "exn:fail:filesystem:exists") (mkp "exn:fail:filesystem:version") + (mkp "exn:fail:filesystem:errno") (mkp "exn:fail:network") + (mkp "exn:fail:network:errno") (mkp "exn:fail:out-of-memory") (mkp "exn:fail:unsupported") (mkp "exn:fail:user") diff --git a/collects/tests/racket/udp.rktl b/collects/tests/racket/udp.rktl index 6e1107d92f..a44d99d30c 100644 --- a/collects/tests/racket/udp.rktl +++ b/collects/tests/racket/udp.rktl @@ -188,7 +188,7 @@ s) (define s (q)) - (err/rt-test (q) exn:fail:network?) + (err/rt-test (q) exn:fail:network:errno?) (udp-close s)) diff --git a/doc/release-notes/racket/HISTORY.txt b/doc/release-notes/racket/HISTORY.txt index 1587c05302..f5ccff572e 100644 --- a/doc/release-notes/racket/HISTORY.txt +++ b/doc/release-notes/racket/HISTORY.txt @@ -1,3 +1,6 @@ +Version 5.3.1.12 +Added exn:fail:filesystem:errno and exn:fail:network:errno + Version 5.3.1.11 Changed log-message to support a name argument Changed the synchronization result of a log receiver to include an diff --git a/src/racket/src/cstartup.inc b/src/racket/src/cstartup.inc index 9139ac5620..78856ce07f 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,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,50,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,21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0, +0,27,0,31,0,38,0,42,0,49,0,54,0,61,0,66,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,112,7,0,0,69,35, -37,109,105,110,45,115,116,120,29,11,11,11,66,100,101,102,105,110,101,66,108, -101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,111,114,64,119,104,101, -110,72,112,97,114,97,109,101,116,101,114,105,122,101,63,108,101,116,64,99,111, -110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11, +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,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,132,88,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,5,2,2,2,6,2,2,2,7,2, -2,2,8,2,2,2,11,2,2,2,10,2,2,2,9,2,2,2,12,2,2, -97,37,11,8,240,132,88,0,0,93,159,2,16,36,37,16,2,2,13,161,2, -2,37,2,13,2,2,2,13,96,38,11,8,240,132,88,0,0,16,0,96,11, -11,8,240,132,88,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2, +240,140,88,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,140,88,0,0,93,159,2,16,36,37,16,2,2,13,161,2, +2,37,2,13,2,2,2,13,96,38,11,8,240,140,88,0,0,16,0,96,11, +11,8,240,140,88,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,163,4,195,249, 22,156,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,163,4,195,249,22,156,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,163,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248, -22,81,194,248,22,167,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18, -248,22,167,17,199,249,22,79,2,6,248,22,168,17,201,11,18,100,10,13,16, +22,81,194,248,22,175,17,193,249,22,156,4,80,158,39,36,251,22,89,2,18, +248,22,175,17,199,249,22,79,2,4,248,22,176,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,51,55,55,16,4,11,11,2,21,3,1, -8,101,110,118,49,55,51,55,56,27,248,22,81,248,22,163,4,196,28,248,22, -87,193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,167,17,193, +2,20,3,1,8,101,110,118,49,55,51,56,54,16,4,11,11,2,21,3,1, +8,101,110,118,49,55,51,56,55,27,248,22,81,248,22,163,4,196,28,248,22, +87,193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,175,17,193, 249,22,156,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22, -89,2,23,248,22,167,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2, -7,248,22,168,17,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8, +89,2,23,248,22,175,17,201,251,22,89,2,18,2,23,2,23,249,22,79,2, +11,248,22,176,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, -51,56,48,16,4,11,11,2,21,3,1,8,101,110,118,49,55,51,56,49,248, +51,56,57,16,4,11,11,2,21,3,1,8,101,110,118,49,55,51,57,48,248, 22,163,4,193,27,248,22,163,4,194,249,22,79,248,22,89,248,22,80,196,248, -22,168,17,195,27,248,22,81,248,22,163,4,23,197,1,249,22,156,4,80,158, +22,176,17,195,27,248,22,81,248,22,163,4,23,197,1,249,22,156,4,80,158, 39,36,28,248,22,64,248,22,157,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,163,4,248,22,104,23,200, -2,250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,167,17,23,204, +2,250,22,89,2,24,248,22,89,249,22,89,248,22,89,248,22,175,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,167,17,23,202,1,249,22,2,22,104,23,200,1,250,22,90,2, +22,79,248,22,175,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,163,4, -248,22,167,17,201,248,22,168,17,198,27,248,22,163,4,194,249,22,79,248,22, -89,248,22,80,196,248,22,168,17,195,27,248,22,81,248,22,163,4,23,197,1, +248,22,175,17,201,248,22,176,17,198,27,248,22,163,4,194,249,22,79,248,22, +89,248,22,80,196,248,22,176,17,195,27,248,22,81,248,22,163,4,23,197,1, 249,22,156,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,163,4,248,22,80,201,248,22,168,17,198, +36,37,47,11,9,222,33,43,248,22,163,4,248,22,80,201,248,22,176,17,198, 27,248,22,81,248,22,163,4,196,27,248,22,163,4,248,22,80,195,249,22,156, 4,80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250, -22,89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,168,17,201, +22,89,2,6,248,22,89,248,22,80,199,250,22,90,2,10,248,22,176,17,201, 248,22,81,202,27,248,22,81,248,22,163,4,23,197,1,27,249,22,1,22,93, 249,22,2,22,163,4,248,22,163,4,248,22,80,199,248,22,183,4,249,22,156, 4,80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110, @@ -63,17 +63,17 @@ 81,204,27,248,22,81,248,22,163,4,196,28,248,22,87,193,20,14,159,37,36, 37,249,22,156,4,80,158,39,36,27,248,22,163,4,248,22,80,197,28,249,22, 152,9,62,61,62,248,22,157,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,11,249,22,89,2,27, +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, -152,9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,167,17,197, -250,22,90,2,22,9,248,22,168,17,200,249,22,79,2,11,248,22,81,202,99, +152,9,248,22,157,4,248,22,80,200,64,101,108,115,101,10,248,22,175,17,197, +250,22,90,2,22,9,248,22,176,17,200,249,22,79,2,8,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,48,51,16,4,11,11,2,21, -3,1,8,101,110,118,49,55,52,48,52,18,158,94,10,64,118,111,105,100,8, +11,11,2,20,3,1,8,101,110,118,49,55,52,49,50,16,4,11,11,2,21, +3,1,8,101,110,118,49,55,52,49,51,18,158,94,10,64,118,111,105,100,8, 48,27,248,22,81,248,22,163,4,196,249,22,156,4,80,158,39,36,28,248,22, -64,248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,167,17, -199,248,22,104,198,27,248,22,157,4,248,22,167,17,197,250,22,89,2,28,248, -22,89,248,22,80,197,250,22,90,2,25,248,22,168,17,199,248,22,168,17,202, +64,248,22,157,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,175,17, +199,248,22,104,198,27,248,22,157,4,248,22,175,17,197,250,22,89,2,28,248, +22,89,248,22,80,197,250,22,90,2,25,248,22,176,17,199,248,22,176,17,202, 159,36,20,113,159,36,16,1,11,16,0,20,26,149,9,2,1,2,1,2,2, 9,9,11,11,11,10,36,80,158,36,36,20,113,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,113,159,36,16,1, -2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223,0, -33,34,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,8, +2,13,16,1,33,33,10,16,5,2,7,88,163,8,36,37,53,37,9,223,0, +33,34,36,20,113,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,113,159,36,16,1,2,13,16,0,11, -16,5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,36, -16,1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37,9, +16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,36,36,20,113,159,36, +16,1,2,13,16,1,33,37,11,16,5,2,11,88,163,8,36,37,56,37,9, 223,0,33,38,36,20,113,159,36,16,1,2,13,16,1,33,39,11,16,5,2, -10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,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,113,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37,54, +6,88,163,8,36,37,58,37,9,223,0,33,42,36,20,113,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,113,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37,54, 37,9,223,0,33,45,36,20,113,159,36,16,1,2,13,16,0,11,16,5,2, -9,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,159,36,16,1,2, -13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47,36, -20,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,3,88,163,8,36, +3,88,163,8,36,37,56,37,9,223,0,33,46,36,20,113,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,113,159,36,16,1,2,13,16,1,33,49,11,16,5,2,5,88,163,8,36, 37,54,37,9,223,0,33,50,36,20,113,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,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,50,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, @@ -156,178 +156,178 @@ 121,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,6,11,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,187, -14,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,142,7,23,195, -2,27,248,22,145,15,195,28,192,192,248,22,146,15,195,11,0,21,35,114,120, +111,110,45,100,105,114,6,8,8,99,111,108,108,101,99,116,115,27,248,22,131, +15,23,195,2,28,23,193,2,192,86,94,23,193,1,28,248,22,142,7,23,195, +2,27,248,22,153,15,195,28,192,192,248,22,154,15,195,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,188,14,23,195,2,10,28, -248,22,187,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,145,15, -23,195,2,10,248,22,146,15,23,195,2,11,12,250,22,189,9,2,32,2,33, -23,197,2,28,28,248,22,188,14,23,195,2,249,22,152,9,248,22,189,14,23, +47,92,92,93,42,41,36,34,86,94,28,28,248,22,132,15,23,195,2,10,28, +248,22,131,15,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,153,15, +23,195,2,10,248,22,154,15,23,195,2,11,12,250,22,189,9,2,32,2,33, +23,197,2,28,28,248,22,132,15,23,195,2,249,22,152,9,248,22,133,15,23, 197,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248,22,142,7,23, -196,2,23,195,2,248,22,154,8,248,22,128,15,23,197,2,28,249,22,180,15, -2,58,23,195,2,28,248,22,142,7,195,248,22,131,15,195,194,27,248,22,181, -7,23,195,1,249,22,132,15,248,22,157,8,250,22,188,15,2,59,28,249,22, -180,15,2,60,23,201,2,23,199,1,250,22,188,15,2,61,23,202,1,2,35, -80,159,44,37,38,2,34,28,248,22,142,7,194,248,22,131,15,194,193,0,28, +196,2,23,195,2,248,22,154,8,248,22,136,15,23,197,2,28,249,22,188,15, +2,58,23,195,2,28,248,22,142,7,195,248,22,139,15,195,194,27,248,22,181, +7,23,195,1,249,22,140,15,248,22,157,8,250,22,132,16,2,59,28,249,22, +188,15,2,60,23,201,2,23,199,1,250,22,132,16,2,61,23,202,1,2,35, +80,159,44,37,38,2,34,28,248,22,142,7,194,248,22,139,15,194,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,187,14,23,195,2,10,28, -248,22,142,7,23,195,2,28,248,22,145,15,23,195,2,10,248,22,146,15,23, -195,2,11,10,248,22,188,14,23,195,2,12,252,22,189,9,2,5,2,36,36, -23,199,2,23,200,2,28,28,28,248,22,187,14,23,196,2,10,28,248,22,142, -7,23,196,2,28,248,22,145,15,23,196,2,10,248,22,146,15,23,196,2,11, -10,248,22,188,14,23,196,2,12,252,22,189,9,2,5,2,36,37,23,199,2, -23,200,2,27,28,248,22,188,14,23,196,2,248,22,189,14,23,196,2,247,22, -190,14,86,95,28,28,248,22,147,15,23,196,2,10,249,22,152,9,247,22,190, -14,23,195,2,12,253,22,191,9,2,5,6,54,54,112,97,116,104,32,105,115, +78,67,92,92,92,92,34,86,95,28,28,28,248,22,131,15,23,195,2,10,28, +248,22,142,7,23,195,2,28,248,22,153,15,23,195,2,10,248,22,154,15,23, +195,2,11,10,248,22,132,15,23,195,2,12,252,22,189,9,2,5,2,36,36, +23,199,2,23,200,2,28,28,28,248,22,131,15,23,196,2,10,28,248,22,142, +7,23,196,2,28,248,22,153,15,23,196,2,10,248,22,154,15,23,196,2,11, +10,248,22,132,15,23,196,2,12,252,22,189,9,2,5,2,36,37,23,199,2, +23,200,2,27,28,248,22,132,15,23,196,2,248,22,133,15,23,196,2,247,22, +134,15,86,95,28,28,248,22,155,15,23,196,2,10,249,22,152,9,247,22,134, +15,23,195,2,12,253,22,191,9,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,190,14,28, -249,22,152,9,28,248,22,188,14,23,199,2,248,22,189,14,23,199,2,247,22, -190,14,23,195,2,12,253,22,191,9,2,5,6,37,37,103,105,118,101,110,32, +32,99,111,110,118,101,110,116,105,111,110,32,116,121,112,101,247,22,134,15,28, +249,22,152,9,28,248,22,132,15,23,199,2,248,22,133,15,23,199,2,247,22, +134,15,23,195,2,12,253,22,191,9,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,151,15,28,248,22,147,15,23, -199,2,23,198,1,248,22,148,15,23,199,1,86,94,28,28,248,22,188,14,23, -194,2,10,28,248,22,187,14,23,194,2,10,28,248,22,142,7,23,194,2,28, -248,22,145,15,23,194,2,10,248,22,146,15,23,194,2,11,12,250,22,189,9, -2,32,2,33,23,196,2,28,28,248,22,188,14,23,194,2,249,22,152,9,248, -22,189,14,23,196,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248, -22,142,7,23,195,2,23,194,2,248,22,154,8,248,22,128,15,23,196,2,28, -249,22,180,15,2,58,23,195,2,86,94,23,193,1,28,248,22,142,7,23,195, -2,248,22,131,15,23,195,1,193,27,248,22,181,7,23,195,1,249,22,132,15, -248,22,157,8,250,22,188,15,2,59,28,249,22,180,15,2,60,23,201,2,23, -199,1,250,22,188,15,2,61,23,202,1,2,35,80,159,47,37,38,2,34,28, -248,22,142,7,23,194,2,248,22,131,15,23,194,1,192,27,248,22,128,15,23, +116,32,112,97,116,104,23,202,2,27,27,248,22,159,15,28,248,22,155,15,23, +199,2,23,198,1,248,22,156,15,23,199,1,86,94,28,28,248,22,132,15,23, +194,2,10,28,248,22,131,15,23,194,2,10,28,248,22,142,7,23,194,2,28, +248,22,153,15,23,194,2,10,248,22,154,15,23,194,2,11,12,250,22,189,9, +2,32,2,33,23,196,2,28,28,248,22,132,15,23,194,2,249,22,152,9,248, +22,133,15,23,196,2,2,34,249,22,152,9,247,22,164,8,2,34,27,28,248, +22,142,7,23,195,2,23,194,2,248,22,154,8,248,22,136,15,23,196,2,28, +249,22,188,15,2,58,23,195,2,86,94,23,193,1,28,248,22,142,7,23,195, +2,248,22,139,15,23,195,1,193,27,248,22,181,7,23,195,1,249,22,140,15, +248,22,157,8,250,22,132,16,2,59,28,249,22,188,15,2,60,23,201,2,23, +199,1,250,22,132,16,2,61,23,202,1,2,35,80,159,47,37,38,2,34,28, +248,22,142,7,23,194,2,248,22,139,15,23,194,1,192,27,248,22,136,15,23, 195,2,28,249,22,152,9,23,197,2,64,117,110,105,120,28,249,22,139,8,23, -195,1,5,1,47,28,248,22,188,14,198,197,248,22,131,15,198,249,22,141,15, -23,200,1,249,22,132,15,249,22,142,8,248,22,128,15,23,201,1,37,23,199, -1,28,249,22,152,9,23,197,2,2,34,249,22,141,15,23,200,1,249,22,132, -15,28,249,22,180,15,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92, +195,1,5,1,47,28,248,22,132,15,198,197,248,22,139,15,198,249,22,149,15, +23,200,1,249,22,140,15,249,22,142,8,248,22,136,15,23,201,1,37,23,199, +1,28,249,22,152,9,23,197,2,2,34,249,22,149,15,23,200,1,249,22,140, +15,28,249,22,188,15,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,143,8, 2,38,250,22,142,8,23,204,2,40,41,5,1,92,249,22,142,8,23,203,1, -42,28,249,22,180,15,2,63,23,199,2,249,22,143,8,2,38,249,22,142,8, -23,201,1,40,28,249,22,180,15,2,63,23,199,2,249,22,143,8,2,38,249, -22,142,8,23,201,1,40,28,249,22,180,15,0,14,35,114,120,34,94,92,92, +42,28,249,22,188,15,2,63,23,199,2,249,22,143,8,2,38,249,22,142,8, +23,201,1,40,28,249,22,188,15,2,63,23,199,2,249,22,143,8,2,38,249, +22,142,8,23,201,1,40,28,249,22,188,15,0,14,35,114,120,34,94,92,92, 92,92,92,92,92,92,34,23,199,2,249,22,143,8,5,4,85,78,67,92,249, -22,142,8,23,201,1,38,28,249,22,180,15,0,12,35,114,120,34,94,91,97, +22,142,8,23,201,1,38,28,249,22,188,15,0,12,35,114,120,34,94,91,97, 45,122,93,58,34,23,199,2,249,22,143,8,250,22,142,8,23,202,2,36,37, 249,22,142,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,149,15, -23,196,2,28,249,22,154,9,23,195,2,23,197,1,11,28,248,22,145,15,23, -194,2,27,249,22,141,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11, -89,161,39,36,11,248,22,144,15,23,197,2,86,95,23,195,1,23,194,1,27, -28,23,202,2,27,248,22,149,15,23,199,2,28,249,22,154,9,23,195,2,23, -200,2,11,28,248,22,145,15,23,194,2,250,2,65,23,205,2,23,206,2,249, -22,141,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,187,14,23,196,2,27, -249,22,141,15,23,198,2,23,205,2,28,28,248,22,136,15,193,10,248,22,135, +66,88,163,8,36,40,58,11,64,110,101,120,116,222,33,67,27,248,22,157,15, +23,196,2,28,249,22,154,9,23,195,2,23,197,1,11,28,248,22,153,15,23, +194,2,27,249,22,149,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11, +89,161,39,36,11,248,22,152,15,23,197,2,86,95,23,195,1,23,194,1,27, +28,23,202,2,27,248,22,157,15,23,199,2,28,249,22,154,9,23,195,2,23, +200,2,11,28,248,22,153,15,23,194,2,250,2,65,23,205,2,23,206,2,249, +22,149,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,131,15,23,196,2,27, +249,22,149,15,23,198,2,23,205,2,28,28,248,22,144,15,193,10,248,22,143, 15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27, -248,22,149,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1,11,28,248, -22,145,15,23,194,2,250,2,65,23,206,1,23,207,1,249,22,141,15,23,201, +248,22,157,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1,11,28,248, +22,153,15,23,194,2,250,2,65,23,206,1,23,207,1,249,22,149,15,23,201, 1,23,198,1,250,2,65,205,206,195,192,86,94,23,194,1,28,23,196,2,90, -159,39,11,89,161,39,36,11,248,22,144,15,23,197,2,86,95,23,195,1,23, -194,1,27,28,23,201,2,27,248,22,149,15,23,199,2,28,249,22,154,9,23, -195,2,23,200,2,11,28,248,22,145,15,23,194,2,250,2,65,23,204,2,23, -205,2,249,22,141,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,187,14,23, -196,2,27,249,22,141,15,23,198,2,23,204,2,28,28,248,22,136,15,193,10, -248,22,135,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202, -2,11,27,248,22,149,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1, -11,28,248,22,145,15,23,194,2,250,2,65,23,205,1,23,206,1,249,22,141, +159,39,11,89,161,39,36,11,248,22,152,15,23,197,2,86,95,23,195,1,23, +194,1,27,28,23,201,2,27,248,22,157,15,23,199,2,28,249,22,154,9,23, +195,2,23,200,2,11,28,248,22,153,15,23,194,2,250,2,65,23,204,2,23, +205,2,249,22,149,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,131,15,23, +196,2,27,249,22,149,15,23,198,2,23,204,2,28,28,248,22,144,15,193,10, +248,22,143,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202, +2,11,27,248,22,157,15,23,200,2,28,249,22,154,9,23,195,2,23,201,1, +11,28,248,22,153,15,23,194,2,250,2,65,23,205,1,23,206,1,249,22,149, 15,23,201,1,23,198,1,250,2,65,204,205,195,192,28,23,193,2,90,159,39, -11,89,161,39,36,11,248,22,144,15,23,199,2,86,95,23,195,1,23,194,1, +11,89,161,39,36,11,248,22,152,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,187,14,195,27,249,22,141, -15,197,200,28,28,248,22,136,15,193,10,248,22,135,15,193,192,11,11,28,192, +28,23,193,2,192,86,94,23,193,1,27,28,248,22,131,15,195,27,249,22,149, +15,197,200,28,28,248,22,144,15,193,10,248,22,143,15,193,192,11,11,28,192, 192,28,198,11,251,2,66,198,203,201,202,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,148,15,248,22,80, -23,199,2,27,249,22,141,15,23,196,1,23,197,2,28,248,22,135,15,23,194, +2,41,222,33,70,28,248,22,87,23,197,2,11,27,248,22,156,15,248,22,80, +23,199,2,27,249,22,149,15,23,196,1,23,197,2,28,248,22,143,15,23,194, 2,250,2,65,198,199,195,86,94,23,193,1,27,248,22,81,23,200,1,28,248, -22,87,23,194,2,11,27,248,22,148,15,248,22,80,23,196,2,27,249,22,141, -15,23,196,1,23,200,2,28,248,22,135,15,23,194,2,250,2,65,201,202,195, +22,87,23,194,2,11,27,248,22,156,15,248,22,80,23,196,2,27,249,22,149, +15,23,196,1,23,200,2,28,248,22,143,15,23,194,2,250,2,65,201,202,195, 86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27, -248,22,148,15,248,22,80,195,27,249,22,141,15,23,196,1,202,28,248,22,135, +248,22,156,15,248,22,80,195,27,249,22,149,15,23,196,1,202,28,248,22,143, 15,193,250,2,65,204,205,195,251,2,69,204,205,206,248,22,81,199,86,95,28, -28,248,22,187,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,145, -15,23,195,2,10,248,22,146,15,23,195,2,11,12,250,22,189,9,2,6,2, -39,23,197,2,28,28,23,195,2,28,28,248,22,187,14,23,196,2,10,28,248, -22,142,7,23,196,2,28,248,22,145,15,23,196,2,10,248,22,146,15,23,196, -2,11,248,22,145,15,23,196,2,11,10,12,250,22,189,9,2,6,6,45,45, +28,248,22,131,15,23,195,2,10,28,248,22,142,7,23,195,2,28,248,22,153, +15,23,195,2,10,248,22,154,15,23,195,2,11,12,250,22,189,9,2,6,2, +39,23,197,2,28,28,23,195,2,28,28,248,22,131,15,23,196,2,10,28,248, +22,142,7,23,196,2,28,248,22,153,15,23,196,2,10,248,22,154,15,23,196, +2,11,248,22,153,15,23,196,2,11,10,12,250,22,189,9,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,145,15,23,195,2,90,159,39,11,89,161, -39,36,11,248,22,144,15,23,198,2,249,22,152,9,194,2,40,11,27,248,22, +63,41,41,23,198,2,28,28,248,22,153,15,23,195,2,90,159,39,11,89,161, +39,36,11,248,22,152,15,23,198,2,249,22,152,9,194,2,40,11,27,248,22, 162,8,6,4,4,80,65,84,72,27,28,23,194,2,249,80,158,40,41,23,196, 1,9,86,94,23,194,1,9,27,28,249,22,152,9,247,22,164,8,2,34,249, -22,79,248,22,132,15,5,1,46,23,196,1,23,194,1,28,248,22,87,23,194, -2,11,27,248,22,148,15,248,22,80,23,196,2,27,249,22,141,15,23,196,1, -23,201,2,28,248,22,135,15,23,194,2,250,2,65,202,203,195,86,94,23,193, -1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,148,15, -248,22,80,23,196,2,27,249,22,141,15,23,196,1,23,204,2,28,248,22,135, +22,79,248,22,140,15,5,1,46,23,196,1,23,194,1,28,248,22,87,23,194, +2,11,27,248,22,156,15,248,22,80,23,196,2,27,249,22,149,15,23,196,1, +23,201,2,28,248,22,143,15,23,194,2,250,2,65,202,203,195,86,94,23,193, +1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,156,15, +248,22,80,23,196,2,27,249,22,149,15,23,196,1,23,204,2,28,248,22,143, 15,23,194,2,250,2,65,205,206,195,86,94,23,193,1,27,248,22,81,23,197, -1,28,248,22,87,23,194,2,11,27,248,22,148,15,248,22,80,195,27,249,22, -141,15,23,196,1,206,28,248,22,135,15,193,250,2,65,23,16,23,17,195,251, -2,69,23,16,23,17,23,18,248,22,81,199,27,248,22,148,15,23,196,1,28, -248,22,135,15,193,250,2,65,198,199,195,11,250,80,159,39,40,39,196,197,11, +1,28,248,22,87,23,194,2,11,27,248,22,156,15,248,22,80,195,27,249,22, +149,15,23,196,1,206,28,248,22,143,15,193,250,2,65,23,16,23,17,195,251, +2,69,23,16,23,17,23,18,248,22,81,199,27,248,22,156,15,23,196,1,28, +248,22,143,15,193,250,2,65,198,199,195,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,176,15,23,197,2,23, +33,76,0,8,35,114,120,35,34,92,34,34,27,249,22,184,15,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,176,15,23,201,2,23,196,2,28,23,193,2,86, +22,113,23,197,1,27,249,22,184,15,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,139,8,23,196,2,2,42,249,22,93,23,202, -2,194,249,22,79,248,22,132,15,28,249,22,152,9,247,22,164,8,2,34,250, -22,188,15,2,75,23,200,1,2,42,23,197,1,194,86,95,23,199,1,23,193, +2,194,249,22,79,248,22,140,15,28,249,22,152,9,247,22,164,8,2,34,250, +22,132,16,2,75,23,200,1,2,42,23,197,1,194,86,95,23,199,1,23,193, 1,28,249,22,139,8,23,196,2,2,42,249,22,93,23,200,2,9,249,22,79, -248,22,132,15,28,249,22,152,9,247,22,164,8,2,34,250,22,188,15,2,75, +248,22,140,15,28,249,22,152,9,247,22,164,8,2,34,250,22,132,16,2,75, 23,200,1,2,42,23,197,1,9,28,249,22,139,8,23,196,2,2,42,249,22, -93,197,194,86,94,23,196,1,249,22,79,248,22,132,15,28,249,22,152,9,247, -22,164,8,2,34,250,22,188,15,2,75,23,200,1,2,42,23,197,1,194,86, +93,197,194,86,94,23,196,1,249,22,79,248,22,140,15,28,249,22,152,9,247, +22,164,8,2,34,250,22,132,16,2,75,23,200,1,2,42,23,197,1,194,86, 94,23,193,1,28,249,22,139,8,23,198,2,2,42,249,22,93,195,9,86,94, -23,194,1,249,22,79,248,22,132,15,28,249,22,152,9,247,22,164,8,2,34, -250,22,188,15,2,75,23,202,1,2,42,23,199,1,9,86,95,28,28,248,22, +23,194,1,249,22,79,248,22,140,15,28,249,22,152,9,247,22,164,8,2,34, +250,22,132,16,2,75,23,202,1,2,42,23,199,1,9,86,95,28,28,248,22, 131,8,194,10,248,22,142,7,194,12,250,22,189,9,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,196,28, -28,248,22,88,195,249,22,4,22,187,14,196,11,12,250,22,189,9,2,7,6, +28,248,22,88,195,249,22,4,22,131,15,196,11,12,250,22,189,9,2,7,6, 14,14,40,108,105,115,116,111,102,32,112,97,116,104,63,41,197,250,2,74,197, -195,28,248,22,142,7,197,248,22,156,8,197,196,86,94,28,28,248,22,187,14, -194,10,28,248,22,142,7,194,28,248,22,145,15,194,10,248,22,146,15,194,11, -12,250,22,189,9,195,2,39,196,28,248,22,145,15,194,12,251,22,191,9,196, -2,43,2,37,197,86,94,28,28,248,22,187,14,194,10,28,248,22,142,7,194, -28,248,22,145,15,194,10,248,22,146,15,194,11,12,250,22,189,9,195,2,39, -196,28,248,22,145,15,194,12,251,22,191,9,196,2,43,2,37,197,86,94,86, -94,28,28,248,22,187,14,23,195,2,10,28,248,22,142,7,23,195,2,28,248, -22,145,15,23,195,2,10,248,22,146,15,23,195,2,11,12,250,22,189,9,195, -2,39,23,197,2,28,248,22,145,15,23,195,2,12,251,22,191,9,196,2,43, +195,28,248,22,142,7,197,248,22,156,8,197,196,86,94,28,28,248,22,131,15, +194,10,28,248,22,142,7,194,28,248,22,153,15,194,10,248,22,154,15,194,11, +12,250,22,189,9,195,2,39,196,28,248,22,153,15,194,12,251,22,191,9,196, +2,43,2,37,197,86,94,28,28,248,22,131,15,194,10,28,248,22,142,7,194, +28,248,22,153,15,194,10,248,22,154,15,194,11,12,250,22,189,9,195,2,39, +196,28,248,22,153,15,194,12,251,22,191,9,196,2,43,2,37,197,86,94,86, +94,28,28,248,22,131,15,23,195,2,10,28,248,22,142,7,23,195,2,28,248, +22,153,15,23,195,2,10,248,22,154,15,23,195,2,11,12,250,22,189,9,195, +2,39,23,197,2,28,248,22,153,15,23,195,2,12,251,22,191,9,196,2,43, 2,37,23,198,1,249,22,3,88,163,8,36,37,47,11,9,223,2,33,79,196, 28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,195,2,44,196, -86,94,28,28,248,22,187,14,193,10,28,248,22,142,7,193,28,248,22,145,15, -193,10,248,22,146,15,193,11,12,250,22,189,9,2,11,2,39,195,28,248,22, -145,15,193,12,251,22,191,9,2,11,2,43,2,37,196,86,95,86,94,86,94, -28,28,248,22,187,14,195,10,28,248,22,142,7,195,28,248,22,145,15,195,10, -248,22,146,15,195,11,12,250,22,189,9,2,11,2,39,197,28,248,22,145,15, +86,94,28,28,248,22,131,15,193,10,28,248,22,142,7,193,28,248,22,153,15, +193,10,248,22,154,15,193,11,12,250,22,189,9,2,11,2,39,195,28,248,22, +153,15,193,12,251,22,191,9,2,11,2,43,2,37,196,86,95,86,94,86,94, +28,28,248,22,131,15,195,10,28,248,22,142,7,195,28,248,22,153,15,195,10, +248,22,154,15,195,11,12,250,22,189,9,2,11,2,39,197,28,248,22,153,15, 195,12,251,22,191,9,2,11,2,43,2,37,198,249,22,3,32,0,88,163,8, 36,37,46,11,9,222,33,82,197,28,28,248,22,0,194,249,22,50,195,37,11, 12,250,22,189,9,2,11,2,44,196,251,80,158,40,46,197,198,199,11,86,94, -28,28,248,22,187,14,193,10,28,248,22,142,7,193,28,248,22,145,15,193,10, -248,22,146,15,193,11,12,250,22,189,9,2,13,2,39,195,28,248,22,145,15, +28,28,248,22,131,15,193,10,28,248,22,142,7,193,28,248,22,153,15,193,10, +248,22,154,15,193,11,12,250,22,189,9,2,13,2,39,195,28,248,22,153,15, 193,12,251,22,191,9,2,13,2,43,2,37,196,86,96,86,94,28,28,248,22, -187,14,195,10,28,248,22,142,7,195,28,248,22,145,15,195,10,248,22,146,15, -195,11,12,250,22,189,9,2,13,2,39,197,28,248,22,145,15,195,12,251,22, -191,9,2,13,2,43,2,37,198,86,94,86,94,28,28,248,22,187,14,196,10, -28,248,22,142,7,196,28,248,22,145,15,196,10,248,22,146,15,196,11,12,250, -22,189,9,2,13,2,39,198,28,248,22,145,15,196,12,251,22,191,9,2,13, +131,15,195,10,28,248,22,142,7,195,28,248,22,153,15,195,10,248,22,154,15, +195,11,12,250,22,189,9,2,13,2,39,197,28,248,22,153,15,195,12,251,22, +191,9,2,13,2,43,2,37,198,86,94,86,94,28,28,248,22,131,15,196,10, +28,248,22,142,7,196,28,248,22,153,15,196,10,248,22,154,15,196,11,12,250, +22,189,9,2,13,2,39,198,28,248,22,153,15,196,12,251,22,191,9,2,13, 2,43,2,37,199,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,84, 198,28,28,248,22,0,194,249,22,50,195,37,11,12,250,22,189,9,2,13,2, 44,196,251,80,158,40,46,197,199,200,198,0,6,45,105,110,102,46,48,27,248, -22,163,15,2,45,27,28,248,22,146,15,23,195,2,193,20,13,159,80,159,38, -53,37,250,80,159,41,54,37,249,22,33,11,80,159,43,53,37,22,164,15,248, -22,163,15,68,111,114,105,103,45,100,105,114,27,248,22,163,15,2,46,250,80, -159,42,40,39,23,196,1,23,198,1,11,28,192,250,22,141,15,195,6,6,6, +22,171,15,2,45,27,28,248,22,154,15,23,195,2,193,20,13,159,80,159,38, +53,37,250,80,159,41,54,37,249,22,33,11,80,159,43,53,37,22,172,15,248, +22,171,15,68,111,114,105,103,45,100,105,114,27,248,22,171,15,2,46,250,80, +159,42,40,39,23,196,1,23,198,1,11,28,192,250,22,149,15,195,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,188,11,196,27,247,22,148,10,28,249,22,140,10,23,195,2,2, 47,251,22,144,10,23,197,1,2,47,250,22,190,7,2,48,28,23,202,1,80, @@ -344,62 +344,62 @@ 112,114,101,115,115,105,111,110,248,22,191,5,193,28,248,22,88,23,194,2,28, 28,249,22,191,3,38,248,22,92,23,196,2,10,249,22,191,3,39,248,22,92, 23,196,2,28,28,248,22,142,7,248,22,80,23,195,2,10,249,22,152,9,64, -114,111,111,116,248,22,167,17,23,196,2,28,27,248,22,104,194,28,248,22,187, -14,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,145,15,23,194,2, -10,248,22,146,15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248, -22,189,15,248,22,113,195,11,11,11,11,250,22,158,2,196,197,249,22,79,197, -200,28,28,248,22,87,248,22,106,23,197,2,10,249,22,180,15,248,22,113,23, -198,2,247,22,160,8,27,248,22,150,15,249,22,148,15,248,22,104,23,200,2, +114,111,111,116,248,22,175,17,23,196,2,28,27,248,22,104,194,28,248,22,131, +15,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,153,15,23,194,2, +10,248,22,154,15,23,194,1,11,27,248,22,87,248,22,106,195,28,192,192,248, +22,133,16,248,22,113,195,11,11,11,11,250,22,158,2,196,197,249,22,79,197, +200,28,28,248,22,87,248,22,106,23,197,2,10,249,22,188,15,248,22,113,23, +198,2,247,22,160,8,27,248,22,158,15,249,22,156,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,196,11,11,12,250,22,158,2,196,11,9,249,22,164,2,195,88, -163,8,36,38,50,11,9,224,3,2,33,94,27,248,22,67,248,22,167,17,23, +163,8,36,38,50,11,9,224,3,2,33,94,27,248,22,67,248,22,175,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,195,196,248,22, 94,198,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,158,15,28,23,197,2,80,159,41,48,38, +9,225,1,0,2,33,88,27,250,22,166,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,129,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,157,14,10,22,158,14, -10,22,159,14,10,22,162,14,10,22,161,14,10,22,163,14,10,22,160,14,10, -22,164,14,10,22,165,14,10,22,166,14,10,22,167,14,10,22,168,14,10,22, -169,14,11,22,155,14,11,27,249,22,182,5,28,196,80,159,41,48,38,80,159, +8,31,54,37,249,22,33,11,80,159,8,33,53,37,22,165,14,10,22,166,14, +10,22,167,14,10,22,170,14,10,22,169,14,10,22,171,14,10,22,168,14,10, +22,172,14,10,22,173,14,10,22,174,14,10,22,175,14,10,22,176,14,10,22, +177,14,11,22,163,14,11,27,249,22,182,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,185,9,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,144,15,28,201,80,159,46,48, +2,27,90,159,39,11,89,161,39,36,11,248,22,152,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,88,163,8,32,37,8,40,8,240,0,240,94,0,9,224,1,2,33,97, -0,7,35,114,120,34,47,43,34,28,248,22,142,7,23,195,2,27,249,22,178, +0,7,35,114,120,34,47,43,34,28,248,22,142,7,23,195,2,27,249,22,186, 15,2,99,196,28,192,28,249,22,191,3,248,22,103,195,248,22,181,3,248,22, 145,7,198,249,22,7,250,22,164,7,199,36,248,22,103,198,197,249,22,7,250, 22,164,7,199,36,248,22,103,198,249,22,79,249,22,164,7,200,248,22,105,199, -199,249,22,7,196,197,90,159,39,11,89,161,39,36,11,248,22,144,15,23,198, +199,249,22,7,196,197,90,159,39,11,89,161,39,36,11,248,22,152,15,23,198, 1,86,94,23,195,1,28,249,22,152,9,23,195,2,2,40,249,22,7,195,199, 27,249,22,79,23,197,1,23,201,1,28,248,22,142,7,23,195,2,27,249,22, -178,15,2,99,196,28,192,28,249,22,191,3,248,22,103,195,248,22,181,3,248, +186,15,2,99,196,28,192,28,249,22,191,3,248,22,103,195,248,22,181,3,248, 22,145,7,198,249,22,7,250,22,164,7,199,36,248,22,103,198,195,249,22,7, 250,22,164,7,199,36,248,22,103,198,249,22,79,249,22,164,7,200,248,22,105, -199,197,249,22,7,196,195,90,159,39,11,89,161,39,36,11,248,22,144,15,23, +199,197,249,22,7,196,195,90,159,39,11,89,161,39,36,11,248,22,152,15,23, 198,1,28,249,22,152,9,194,2,40,249,22,7,195,197,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,187, -14,193,248,22,191,14,193,192,28,248,22,87,248,22,81,23,195,2,248,22,89, -248,2,103,248,22,167,17,23,196,1,250,22,90,248,2,103,248,22,167,17,23, -198,2,2,50,248,2,102,248,22,168,17,23,198,1,249,22,190,7,2,51,194, +36,37,43,11,69,116,111,45,115,116,114,105,110,103,222,33,104,28,248,22,131, +15,193,248,22,135,15,193,192,28,248,22,87,248,22,81,23,195,2,248,22,89, +248,2,103,248,22,175,17,23,196,1,250,22,90,248,2,103,248,22,175,17,23, +198,2,2,50,248,2,102,248,22,176,17,23,198,1,249,22,190,7,2,51,194, 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, -167,17,23,197,2,249,2,107,23,197,1,248,22,168,17,23,199,1,249,2,107, -194,248,22,168,17,196,249,22,190,7,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,28,196,249,22,141,15,200, +175,17,23,197,2,249,2,107,23,197,1,248,22,176,17,23,199,1,249,2,107, +194,248,22,176,17,196,249,22,190,7,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,28,196,249,22,149,15,200, 198,198,27,28,248,22,87,23,197,2,2,49,249,22,1,22,165,7,248,2,102, 23,199,2,248,23,198,1,251,22,190,7,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, @@ -407,116 +407,116 @@ 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,165,7,248,2,103,23, 204,1,2,50,23,201,2,249,22,1,22,165,7,249,22,2,32,0,88,163,8, -36,37,44,11,9,222,33,106,249,2,107,22,187,14,23,205,2,28,249,22,5, +36,37,44,11,9,222,33,106,249,2,107,22,131,15,23,205,2,28,249,22,5, 22,133,2,23,201,2,250,22,190,7,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,165,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,187,14,23,195,2,249,22,141,15, -23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,187,14,248,22, -80,23,202,2,248,22,136,15,23,194,2,10,27,250,22,1,22,141,15,23,197, -1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,136,15,23,194,2,28, -23,200,2,28,28,248,22,135,15,249,22,141,15,195,202,10,27,28,248,22,187, -14,201,248,22,191,14,201,200,19,248,22,145,7,23,195,2,27,28,249,22,131, +49,27,248,22,80,23,200,2,27,28,248,22,131,15,23,195,2,249,22,149,15, +23,196,1,23,198,2,248,22,134,2,23,195,1,28,28,248,22,131,15,248,22, +80,23,202,2,248,22,144,15,23,194,2,10,27,250,22,1,22,149,15,23,197, +1,23,201,2,28,28,248,22,87,23,199,2,10,248,22,144,15,23,194,2,28, +23,200,2,28,28,248,22,143,15,249,22,149,15,195,202,10,27,28,248,22,131, +15,201,248,22,135,15,201,200,19,248,22,145,7,23,195,2,27,28,249,22,131, 4,23,196,4,40,28,249,22,148,7,6,4,4,46,114,107,116,249,22,164,7, 23,199,2,249,22,183,3,23,200,4,40,249,22,165,7,250,22,164,7,23,200, 1,36,249,22,183,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,135,15,249,22,141,15,198,23,196,1, -11,2,28,199,249,22,141,15,194,201,192,254,2,101,202,203,204,205,206,248,22, -81,23,16,28,23,16,23,16,199,28,199,249,22,141,15,194,201,192,254,2,101, +23,194,1,11,11,28,23,193,2,248,22,143,15,249,22,149,15,198,23,196,1, +11,2,28,199,249,22,149,15,194,201,192,254,2,101,202,203,204,205,206,248,22, +81,23,16,28,23,16,23,16,199,28,199,249,22,149,15,194,201,192,254,2,101, 202,203,204,205,206,248,22,81,23,16,23,16,254,2,101,201,202,203,204,205,248, 22,81,23,15,23,15,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,187,14,195,248,22,191,14,195, -194,27,247,22,169,15,27,250,22,93,28,23,197,2,28,247,22,168,15,27,248, +23,199,1,23,200,1,27,248,22,67,28,248,22,131,15,195,248,22,135,15,195, +194,27,247,22,177,15,27,250,22,93,28,23,197,2,28,247,22,176,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,165,15,254,2,101,199,202,203, -205,23,16,199,11,86,95,28,28,248,22,188,14,23,194,2,10,28,248,22,187, -14,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,145,15,23,194,2, -10,248,22,146,15,23,194,2,11,12,252,22,189,9,23,200,2,2,33,36,23, +197,1,11,9,86,94,23,198,1,9,9,247,22,173,15,254,2,101,199,202,203, +205,23,16,199,11,86,95,28,28,248,22,132,15,23,194,2,10,28,248,22,131, +15,23,194,2,10,28,248,22,142,7,23,194,2,28,248,22,153,15,23,194,2, +10,248,22,154,15,23,194,2,11,12,252,22,189,9,23,200,2,2,33,36,23, 198,2,23,199,2,28,28,248,22,142,7,23,195,2,10,248,22,131,8,23,195, 2,86,94,23,194,1,12,252,22,189,9,23,200,2,2,52,37,23,198,2,23, -199,1,90,159,39,11,89,161,39,36,11,248,22,144,15,23,197,2,86,94,23, +199,1,90,159,39,11,89,161,39,36,11,248,22,152,15,23,197,2,86,94,23, 195,1,86,94,28,192,12,250,22,128,10,23,201,1,2,53,23,199,1,249,22, -7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,188,14,23, -196,2,10,28,248,22,187,14,23,196,2,10,28,248,22,142,7,23,196,2,28, -248,22,145,15,23,196,2,10,248,22,146,15,23,196,2,11,12,252,22,189,9, +7,194,195,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,132,15,23, +196,2,10,28,248,22,131,15,23,196,2,10,28,248,22,142,7,23,196,2,28, +248,22,153,15,23,196,2,10,248,22,154,15,23,196,2,11,12,252,22,189,9, 2,27,2,33,36,23,200,2,23,201,2,28,28,248,22,142,7,23,197,2,10, 248,22,131,8,23,197,2,12,252,22,189,9,2,27,2,52,37,23,200,2,23, -201,2,90,159,39,11,89,161,39,36,11,248,22,144,15,23,199,2,86,94,23, +201,2,90,159,39,11,89,161,39,36,11,248,22,152,15,23,199,2,86,94,23, 195,1,86,94,28,192,12,250,22,128,10,2,27,2,53,23,201,2,249,22,7, -194,195,27,249,22,133,15,250,22,187,15,0,20,35,114,120,35,34,40,63,58, -91,46,93,91,94,46,93,42,124,41,36,34,248,22,129,15,23,201,1,28,248, +194,195,27,249,22,141,15,250,22,131,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,137,15,23,201,1,28,248, 22,142,7,23,203,2,249,22,157,8,23,204,1,8,63,23,202,1,28,248,22, -188,14,23,199,2,248,22,189,14,23,199,1,86,94,23,198,1,247,22,190,14, -28,248,22,187,14,194,249,22,141,15,195,194,192,90,159,38,11,89,161,38,36, -11,86,95,28,28,248,22,188,14,23,196,2,10,28,248,22,187,14,23,196,2, -10,28,248,22,142,7,23,196,2,28,248,22,145,15,23,196,2,10,248,22,146, +132,15,23,199,2,248,22,133,15,23,199,1,86,94,23,198,1,247,22,134,15, +28,248,22,131,15,194,249,22,149,15,195,194,192,90,159,38,11,89,161,38,36, +11,86,95,28,28,248,22,132,15,23,196,2,10,28,248,22,131,15,23,196,2, +10,28,248,22,142,7,23,196,2,28,248,22,153,15,23,196,2,10,248,22,154, 15,23,196,2,11,12,252,22,189,9,2,28,2,33,36,23,200,2,23,201,2, 28,28,248,22,142,7,23,197,2,10,248,22,131,8,23,197,2,12,252,22,189, 9,2,28,2,52,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11, -248,22,144,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,128,10, -2,28,2,53,23,201,2,249,22,7,194,195,27,249,22,133,15,249,22,143,8, -250,22,188,15,0,9,35,114,120,35,34,91,46,93,34,248,22,129,15,23,203, +248,22,152,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,128,10, +2,28,2,53,23,201,2,249,22,7,194,195,27,249,22,141,15,249,22,143,8, +250,22,132,16,0,9,35,114,120,35,34,91,46,93,34,248,22,137,15,23,203, 1,6,1,1,95,28,248,22,142,7,23,202,2,249,22,157,8,23,203,1,8, -63,23,201,1,28,248,22,188,14,23,199,2,248,22,189,14,23,199,1,86,94, -23,198,1,247,22,190,14,28,248,22,187,14,194,249,22,141,15,195,194,192,249, +63,23,201,1,28,248,22,132,15,23,199,2,248,22,133,15,23,199,1,86,94, +23,198,1,247,22,134,15,28,248,22,131,15,194,249,22,149,15,195,194,192,249, 247,22,171,5,194,11,249,247,22,171,5,194,11,28,248,22,87,23,195,2,9, -27,248,22,80,23,196,2,27,28,248,22,147,15,23,195,2,23,194,1,28,248, -22,146,15,23,195,2,249,22,148,15,23,196,1,250,80,159,43,40,39,248,22, -163,15,2,46,11,10,250,80,159,41,40,39,248,22,163,15,2,46,23,197,1, -10,28,23,193,2,249,22,79,248,22,150,15,249,22,148,15,23,198,1,247,22, -164,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30, +27,248,22,80,23,196,2,27,28,248,22,155,15,23,195,2,23,194,1,28,248, +22,154,15,23,195,2,249,22,156,15,23,196,1,250,80,159,43,40,39,248,22, +171,15,2,46,11,10,250,80,159,41,40,39,248,22,171,15,2,46,23,197,1, +10,28,23,193,2,249,22,79,248,22,158,15,249,22,156,15,23,198,1,247,22, +172,15,248,80,159,41,8,30,39,248,22,81,23,200,1,248,80,159,39,8,30, 39,248,22,81,197,28,248,22,87,23,195,2,9,27,248,22,80,23,196,2,27, -28,248,22,147,15,23,195,2,23,194,1,28,248,22,146,15,23,195,2,249,22, -148,15,23,196,1,250,80,159,43,40,39,248,22,163,15,2,46,11,10,250,80, -159,41,40,39,248,22,163,15,2,46,23,197,1,10,28,23,193,2,249,22,79, -248,22,150,15,249,22,148,15,23,198,1,247,22,164,15,248,80,159,41,8,31, +28,248,22,155,15,23,195,2,23,194,1,28,248,22,154,15,23,195,2,249,22, +156,15,23,196,1,250,80,159,43,40,39,248,22,171,15,2,46,11,10,250,80, +159,41,40,39,248,22,171,15,2,46,23,197,1,10,28,23,193,2,249,22,79, +248,22,158,15,249,22,156,15,23,198,1,247,22,172,15,248,80,159,41,8,31, 39,248,22,81,23,200,1,248,80,159,39,8,31,39,248,22,81,197,28,248,22, -87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,147,15,23,195,2, -23,194,1,28,248,22,146,15,23,195,2,249,22,148,15,23,196,1,250,80,159, -43,40,39,248,22,163,15,2,46,11,10,250,80,159,41,40,39,248,22,163,15, -2,46,23,197,1,10,28,23,193,2,249,22,79,248,22,150,15,249,22,148,15, -23,198,1,247,22,164,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,147,15,23,195,2,23,194,1,28, -248,22,146,15,23,195,2,249,22,148,15,23,196,1,250,80,159,48,40,39,248, -22,163,15,2,46,11,10,250,80,159,46,40,39,248,22,163,15,2,46,23,197, -1,10,28,23,193,2,249,22,79,248,22,150,15,249,22,148,15,23,198,1,247, -22,164,15,248,80,159,46,8,32,39,248,22,81,23,199,1,86,94,23,193,1, +87,23,195,2,9,27,248,22,80,23,196,2,27,28,248,22,155,15,23,195,2, +23,194,1,28,248,22,154,15,23,195,2,249,22,156,15,23,196,1,250,80,159, +43,40,39,248,22,171,15,2,46,11,10,250,80,159,41,40,39,248,22,171,15, +2,46,23,197,1,10,28,23,193,2,249,22,79,248,22,158,15,249,22,156,15, +23,198,1,247,22,172,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,155,15,23,195,2,23,194,1,28, +248,22,154,15,23,195,2,249,22,156,15,23,196,1,250,80,159,48,40,39,248, +22,171,15,2,46,11,10,250,80,159,46,40,39,248,22,171,15,2,46,23,197, +1,10,28,23,193,2,249,22,79,248,22,158,15,249,22,156,15,23,198,1,247, +22,172,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,147,15,23,195,2,23,194,1,28,248,22,146,15,23,195,2,249,22,148, -15,23,196,1,250,80,159,46,40,39,248,22,163,15,2,46,11,10,250,80,159, -44,40,39,248,22,163,15,2,46,23,197,1,10,28,23,193,2,249,22,79,248, -22,150,15,249,22,148,15,23,198,1,247,22,164,15,248,80,159,44,8,32,39, -248,22,81,23,199,1,248,80,159,42,8,32,39,248,22,81,196,27,247,22,168, +248,22,155,15,23,195,2,23,194,1,28,248,22,154,15,23,195,2,249,22,156, +15,23,196,1,250,80,159,46,40,39,248,22,171,15,2,46,11,10,250,80,159, +44,40,39,248,22,171,15,2,46,23,197,1,10,28,23,193,2,249,22,79,248, +22,158,15,249,22,156,15,23,198,1,247,22,172,15,248,80,159,44,8,32,39, +248,22,81,23,199,1,248,80,159,42,8,32,39,248,22,81,196,27,247,22,176, 15,249,80,159,39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192, -2,49,2,49,27,28,23,196,1,250,22,141,15,248,22,163,15,2,55,247,22, +2,49,2,49,27,28,23,196,1,250,22,149,15,248,22,171,15,2,55,247,22, 160,8,2,56,11,27,248,80,159,42,8,30,39,250,22,93,9,248,22,89,248, -22,163,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,168,15,249,80, +22,171,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,176,15,249,80, 159,39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192,2,49,2, -49,27,28,23,196,1,250,22,141,15,248,22,163,15,2,55,247,22,160,8,2, +49,27,28,23,196,1,250,22,149,15,248,22,171,15,2,55,247,22,160,8,2, 56,11,27,248,80,159,42,8,31,39,250,22,93,23,203,1,248,22,89,248,22, -163,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,168,15,249,80,159, +171,15,2,45,9,28,193,249,22,79,195,194,192,27,247,22,176,15,249,80,159, 39,41,38,28,23,195,2,27,248,22,162,8,2,54,28,192,192,2,49,2,49, -27,28,23,196,1,250,22,141,15,248,22,163,15,2,55,247,22,160,8,2,56, -11,27,248,80,159,42,8,32,39,250,22,93,23,203,1,248,22,89,248,22,163, +27,28,23,196,1,250,22,149,15,248,22,171,15,2,55,247,22,160,8,2,56, +11,27,248,80,159,42,8,32,39,250,22,93,23,203,1,248,22,89,248,22,171, 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,161,14,10, -22,168,14,10,22,169,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23, +53,37,254,80,159,44,54,37,249,22,33,11,80,159,46,53,37,22,169,14,10, +22,176,14,10,22,177,14,10,248,22,139,6,23,196,2,28,248,22,137,7,23, 194,2,12,86,94,248,22,160,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,161,14,10,22,168, -14,10,22,169,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2, +254,80,159,45,54,37,249,22,33,11,80,159,47,53,37,22,169,14,10,22,176, +14,10,22,177,14,10,248,22,139,6,23,197,2,28,248,22,137,7,23,194,2, 12,86,94,248,22,160,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,161,14,10,22,168,14,10, -22,169,14,10,248,22,139,6,23,198,2,28,248,22,137,7,23,194,2,12,86, +159,46,54,37,249,22,33,11,80,159,48,53,37,22,169,14,10,22,176,14,10, +22,177,14,10,248,22,139,6,23,198,2,28,248,22,137,7,23,194,2,12,86, 94,248,22,160,9,23,194,1,248,80,159,40,8,33,39,197,86,94,249,22,130, 7,247,22,167,5,195,248,22,154,6,249,22,135,4,36,249,22,183,3,197,198, 27,28,23,197,2,86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1, -27,248,22,163,15,2,46,27,250,80,159,42,40,39,23,197,1,11,11,27,248, +27,248,22,171,15,2,46,27,250,80,159,42,40,39,23,197,1,11,11,27,248, 22,138,4,23,199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27, 248,22,138,4,23,202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36, 249,22,134,6,23,199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2, @@ -543,7 +543,7 @@ 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,172,15,248,22, +9,223,0,33,73,80,159,36,40,37,20,15,16,2,27,248,22,180,15,248,22, 156,8,27,28,249,22,152,9,247,22,164,8,2,34,6,1,1,59,6,1,1, 58,250,22,190,7,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, @@ -552,7 +552,7 @@ 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,163, +8,128,16,2,13,223,0,33,85,80,159,36,47,37,20,15,16,2,248,22,171, 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, @@ -582,7 +582,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 10045); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,50,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,169,0,176,0,183,0,190,0, 197,0,0,0,222,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117, @@ -612,7 +612,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 549); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,50,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, @@ -645,77 +645,77 @@ 101,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,141,15,28, -249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,145, -15,23,200,2,249,22,141,15,23,199,1,23,201,1,249,80,159,43,42,39,23, +116,6,4,4,46,114,107,116,67,105,103,110,111,114,101,100,250,22,149,15,28, +249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28,248,22,153, +15,23,200,2,249,22,149,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, -141,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28, -248,22,145,15,23,200,2,249,22,141,15,23,199,1,23,201,1,249,80,159,43, +149,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199,1,23,197,1,28, +248,22,153,15,23,200,2,249,22,149,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,141,15,28,249,22,152,9,23,203,2,2,28,86,94,23,201,1,23, -199,1,28,248,22,145,15,23,202,2,249,22,141,15,23,201,1,23,203,1,249, +29,252,22,149,15,28,249,22,152,9,23,203,2,2,28,86,94,23,201,1,23, +199,1,28,248,22,153,15,23,202,2,249,22,149,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,165,8,249, -80,159,45,43,39,23,200,1,80,159,45,36,38,252,22,141,15,28,249,22,152, -9,23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,145,15,23,202, -2,249,22,141,15,23,201,1,23,203,1,249,80,159,45,42,39,23,201,1,23, +80,159,45,43,39,23,200,1,80,159,45,36,38,252,22,149,15,28,249,22,152, +9,23,203,2,2,28,86,94,23,201,1,23,199,1,28,248,22,153,15,23,202, +2,249,22,149,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,165,8,249,80,159,45,43,39,23,200,1,80, -159,45,36,38,27,252,22,141,15,28,249,22,152,9,23,201,2,2,28,86,94, -23,199,1,23,201,1,28,248,22,145,15,23,200,2,249,22,141,15,23,203,1, +159,45,36,38,27,252,22,149,15,28,249,22,152,9,23,201,2,2,28,86,94, +23,199,1,23,201,1,28,248,22,153,15,23,200,2,249,22,149,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,165,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,158, +22,165,8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,166, 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,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33, -46,196,27,252,22,141,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199, -1,23,201,1,28,248,22,145,15,23,200,2,249,22,141,15,23,203,1,23,201, +46,196,27,252,22,149,15,28,249,22,152,9,23,201,2,2,28,86,94,23,199, +1,23,201,1,28,248,22,153,15,23,200,2,249,22,149,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,165, -8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,158,15,196, +8,249,80,159,47,43,39,23,202,1,80,159,47,36,38,27,250,22,166,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,88,163,8,36,37,54,8,129,3,9,226,5,3,2,6,33,48,196, -27,250,22,141,15,28,249,22,152,9,23,199,2,2,28,86,94,23,197,1,23, -199,1,28,248,22,145,15,23,198,2,249,22,141,15,23,201,1,23,199,1,249, +27,250,22,149,15,28,249,22,152,9,23,199,2,2,28,86,94,23,197,1,23, +199,1,28,248,22,153,15,23,198,2,249,22,149,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,158,15,196,11,32,0,88,163,8,36,36,41,11,9, +200,1,2,29,27,250,22,166,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,88,163,8,36,37,52,8,128, -3,9,226,5,3,2,6,33,50,196,27,250,22,141,15,28,249,22,152,9,23, -199,2,2,28,86,94,23,197,1,23,199,1,28,248,22,145,15,23,198,2,249, -22,141,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,158,15,196,11, +3,9,226,5,3,2,6,33,50,196,27,250,22,149,15,28,249,22,152,9,23, +199,2,2,28,86,94,23,197,1,23,199,1,28,248,22,153,15,23,198,2,249, +22,149,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,166,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,88,163,8,36,37,52,8,128,3,9,226,5,3,2,6,33,52,196,86, 95,28,248,80,159,37,40,39,23,195,2,12,250,22,189,9,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,129,4,248,22, 92,23,198,2,37,28,28,248,22,64,248,22,80,23,197,2,10,248,22,150,9, -248,22,167,17,23,197,2,249,22,4,22,64,248,22,168,17,23,198,2,11,11, +248,22,175,17,23,197,2,249,22,4,22,64,248,22,176,17,23,198,2,11,11, 11,10,12,250,22,189,9,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,188,4,11,27,28,23,194,2,250,22,160,2, -80,158,41,41,248,22,137,16,247,22,159,13,11,11,27,28,23,194,2,250,22, +80,158,41,41,248,22,145,16,247,22,167,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,189,4,248,22,104,196,27,248,22,113,194, 20,13,159,80,159,40,38,37,250,80,159,43,39,37,249,22,33,11,80,159,45, -38,37,22,172,5,28,248,22,187,14,23,197,2,23,196,1,86,94,23,196,1, -247,22,164,15,249,247,22,170,5,248,22,80,196,200,86,94,23,193,1,90,159, -47,11,89,161,37,36,11,28,248,22,147,15,23,209,2,23,208,2,27,247,22, -172,5,28,23,193,2,249,22,148,15,23,211,2,23,195,1,23,209,2,89,161, -39,37,11,248,22,144,15,23,209,1,86,94,23,196,1,89,161,38,40,11,28, -23,209,2,27,248,22,128,15,23,197,2,19,248,22,136,8,23,195,2,28,28, +38,37,22,172,5,28,248,22,131,15,23,197,2,23,196,1,86,94,23,196,1, +247,22,172,15,249,247,22,170,5,248,22,80,196,200,86,94,23,193,1,90,159, +47,11,89,161,37,36,11,28,248,22,155,15,23,209,2,23,208,2,27,247,22, +172,5,28,23,193,2,249,22,156,15,23,211,2,23,195,1,23,209,2,89,161, +39,37,11,248,22,152,15,23,209,1,86,94,23,196,1,89,161,38,40,11,28, +23,209,2,27,248,22,136,15,23,197,2,19,248,22,136,8,23,195,2,28,28, 249,22,131,4,23,195,4,40,249,22,139,8,2,27,249,22,142,8,23,198,2, -249,22,183,3,23,199,4,40,11,249,22,7,23,199,2,248,22,132,15,249,22, +249,22,183,3,23,199,4,40,11,249,22,7,23,199,2,248,22,140,15,249,22, 143,8,250,22,142,8,23,202,1,36,249,22,183,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,152,9,23,199,2,23,197,2,23,193,2,249,22,141,15,23,196, +11,28,249,22,152,9,23,199,2,23,197,2,23,193,2,249,22,149,15,23,196, 2,23,199,2,89,161,37,43,11,28,23,198,2,28,249,22,152,9,23,200,2, -23,197,1,23,193,1,86,94,23,193,1,249,22,141,15,23,196,2,23,200,2, +23,197,1,23,193,1,86,94,23,193,1,249,22,149,15,23,196,2,23,200,2, 86,94,23,195,1,11,89,161,37,44,11,28,249,22,152,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,166,15,89,161,37,46,11,247,22,167,15,27,250,22,158,15,23,203, +11,247,22,174,15,89,161,37,46,11,247,22,175,15,27,250,22,166,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,158,15,23,207,2,11,32,0,88,163,8,36,36,41,11,9, +2,11,27,250,22,166,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, @@ -731,8 +731,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,189,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,172,5,28,248,22,187,14,23,216,2,23,215,1,86,94,23,215,1, -247,22,164,15,249,247,22,171,15,248,22,80,195,23,29,86,94,23,193,1,27, +38,37,22,172,5,28,248,22,131,15,23,216,2,23,215,1,86,94,23,215,1, +247,22,172,15,249,247,22,179,15,248,22,80,195,23,29,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,131,4,248,22,81,196,248,22,81,206,193,11,11,11,11, @@ -741,8 +741,8 @@ 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,189,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,172,5,28,248,22,187,14,23,217,2,23,216,1,86,94,23,216,1,247, -22,164,15,249,247,22,171,15,248,22,80,195,23,30,86,94,23,193,1,27,28, +37,22,172,5,28,248,22,131,15,23,217,2,23,216,1,86,94,23,216,1,247, +22,172,15,249,247,22,179,15,248,22,80,195,23,30,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,131,4,248,22,81,196,248,22, @@ -753,8 +753,8 @@ 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,189,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,172,5, -28,248,22,187,14,23,218,2,23,217,1,86,94,23,217,1,247,22,164,15,249, -247,22,170,5,248,22,167,17,195,23,31,86,94,23,193,1,27,28,23,197,1, +28,248,22,131,15,23,218,2,23,217,1,86,94,23,217,1,247,22,172,15,249, +247,22,170,5,248,22,175,17,195,23,31,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,28,204,28,249,22,131,4,248,22,81,196,248,22,81,23, @@ -764,17 +764,17 @@ 0,0,0,1,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,189,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,172,5,28,248,22,187,14,23, -219,2,23,218,1,86,94,23,218,1,247,22,164,15,249,247,22,170,5,248,22, -167,17,195,23,32,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0, -2,248,22,167,17,23,224,32,0,0,0,2,10,27,28,23,199,2,86,94,23, +39,37,249,22,33,11,80,159,8,33,38,37,22,172,5,28,248,22,131,15,23, +219,2,23,218,1,86,94,23,218,1,247,22,172,15,249,247,22,170,5,248,22, +175,17,195,23,32,86,94,23,193,1,28,28,248,22,77,23,224,32,0,0,0, +2,248,22,175,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,150,9,248,22,135,15,23,195,2,11,12,20,13,159,80, +0,0,0,2,248,22,150,9,248,22,143,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,189,4,28,23,34,28,23,202,1,11,195,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,172,5,28,248,22,187,14,23,220,2,23,219,1,86,94,23,219, -1,247,22,164,15,249,247,22,170,5,194,23,33,12,28,193,250,22,158,2,248, +34,38,37,22,172,5,28,248,22,131,15,23,220,2,23,219,1,86,94,23,219, +1,247,22,172,15,249,247,22,170,5,194,23,33,12,28,193,250,22,158,2,248, 22,81,197,195,250,22,89,200,201,202,12,27,249,22,172,8,80,159,39,47,38, 249,22,190,3,248,22,186,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, @@ -782,63 +782,63 @@ 80,159,40,47,38,195,27,28,193,248,22,176,2,194,11,250,22,173,8,80,159, 42,47,38,197,248,22,175,2,249,22,79,249,22,79,204,205,28,198,198,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,176,15,2,58,23,196,2, +163,8,36,37,59,11,2,31,222,33,60,27,249,22,184,15,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,176,15,2,58,23,196,2,28,23,193,2,86,94,23, +113,23,197,1,27,249,22,184,15,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, -176,15,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,176,15,2,58,23,196,2, +184,15,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,184,15,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,167,17,195,90,159,38,11,89,161,38,36,11, -27,248,22,168,17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248, -22,167,17,195,90,159,38,11,89,161,38,36,11,27,248,22,168,17,196,28,248, -22,87,248,22,81,23,195,2,249,22,7,9,248,22,167,17,195,90,159,38,11, -89,161,38,36,11,248,2,61,248,22,168,17,196,249,22,7,249,22,79,248,22, -167,17,199,196,195,249,22,7,249,22,79,248,22,167,17,199,196,195,249,22,7, -249,22,79,248,22,167,17,199,196,195,27,27,249,22,176,15,2,58,23,197,2, +23,195,2,249,22,7,9,248,22,175,17,195,90,159,38,11,89,161,38,36,11, +27,248,22,176,17,196,28,248,22,87,248,22,81,23,195,2,249,22,7,9,248, +22,175,17,195,90,159,38,11,89,161,38,36,11,27,248,22,176,17,196,28,248, +22,87,248,22,81,23,195,2,249,22,7,9,248,22,175,17,195,90,159,38,11, +89,161,38,36,11,248,2,61,248,22,176,17,196,249,22,7,249,22,79,248,22, +175,17,199,196,195,249,22,7,249,22,79,248,22,175,17,199,196,195,249,22,7, +249,22,79,248,22,175,17,199,196,195,27,27,249,22,184,15,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,176,15,2,58,23,196,2,28,23,193,2,86,94,23, +113,23,197,1,27,249,22,184,15,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, -176,15,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,176,15,2,58,23,196,2, +184,15,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,184,15,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,167,17,195,27,248,22,168,17,194,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,167,17,197,27,248,22,168, +22,175,17,195,27,248,22,176,17,194,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,175,17,197,27,248,22,176, 17,196,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,167,17,197,90,159,38,11,89,161,38,36,11,248,2,61, -248,22,168,17,198,249,22,7,249,22,79,248,22,167,17,201,196,195,249,22,7, -249,22,79,248,22,167,17,202,196,195,249,22,7,249,22,79,248,22,167,17,200, +249,22,7,9,248,22,175,17,197,90,159,38,11,89,161,38,36,11,248,2,61, +248,22,176,17,198,249,22,7,249,22,79,248,22,175,17,201,196,195,249,22,7, +249,22,79,248,22,175,17,202,196,195,249,22,7,249,22,79,248,22,175,17,200, 196,195,28,24,194,2,12,20,13,159,80,159,36,57,37,80,158,36,55,89,161, 37,37,10,249,22,190,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,152,9,23,197,2,80,158,39,52,86,94,23,195, 1,80,158,37,53,27,248,22,148,5,23,197,2,27,28,248,22,77,23,195,2, -248,22,167,17,23,195,1,23,194,1,28,248,22,187,14,23,194,2,90,159,39, -11,89,161,39,36,11,248,22,144,15,23,197,1,86,95,20,18,159,11,80,158, +248,22,175,17,23,195,1,23,194,1,28,248,22,131,15,23,194,2,90,159,39, +11,89,161,39,36,11,248,22,152,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,172,5,28,192,192,247,22,164,15,90,159,39,11,89, -161,39,36,11,248,22,144,15,197,86,95,23,195,1,23,193,1,28,249,22,176, -15,0,11,35,114,120,34,91,46,93,115,115,36,34,248,22,128,15,23,197,1, +94,23,193,1,27,247,22,172,5,28,192,192,247,22,172,15,90,159,39,11,89, +161,39,36,11,248,22,152,15,197,86,95,23,195,1,23,193,1,28,249,22,184, +15,0,11,35,114,120,34,91,46,93,115,115,36,34,248,22,136,15,23,197,1, 249,80,159,41,58,39,198,2,27,196,249,80,159,38,54,39,195,10,249,22,14, 195,80,159,38,51,38,86,96,28,248,22,146,5,23,196,2,12,250,22,189,9, 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,160,13,23,197,2,10, +112,97,116,104,63,23,198,2,28,28,23,196,2,248,22,168,13,23,197,2,10, 12,250,22,189,9,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,137, -16,247,22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249, +196,2,86,94,23,193,1,12,27,250,22,160,2,80,159,41,41,38,248,22,145, +16,247,22,167,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,137,16,247,22,159,13,195,192,86,94,250,22,158,2,248,22,80,23,197, +248,22,145,16,247,22,167,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,148,5,23,200,2,248,22,147,5,248,22,80,248,22,148,5,23,201, -1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,137,16,23,204,1, +1,23,198,1,27,250,22,160,2,80,159,44,41,38,248,22,145,16,23,204,1, 11,28,23,193,2,27,250,22,160,2,248,22,81,23,198,1,197,11,28,192,250, -22,158,2,248,22,168,17,199,197,195,12,12,12,251,211,197,198,199,10,32,71, +22,158,2,248,22,176,17,199,197,195,12,12,12,251,211,197,198,199,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, @@ -846,9 +846,9 @@ 1,23,195,1,250,22,185,9,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,154,9,23,201,2, -2,36,198,28,248,22,187,14,199,198,249,22,89,28,248,22,64,201,2,4,2, -37,200,199,251,2,72,196,197,248,22,81,199,248,22,168,17,200,251,2,72,196, -197,249,22,79,248,22,167,17,202,200,248,22,168,17,200,251,2,72,196,197,9, +2,36,198,28,248,22,131,15,199,198,249,22,89,28,248,22,64,201,2,4,2, +37,200,199,251,2,72,196,197,248,22,81,199,248,22,176,17,200,251,2,72,196, +197,249,22,79,248,22,175,17,202,200,248,22,176,17,200,251,2,72,196,197,9, 197,27,249,22,165,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,196,28, 193,250,22,187,9,11,195,196,248,22,185,9,193,28,249,22,148,7,194,2,36, @@ -858,115 +858,115 @@ 7,197,249,22,183,3,23,199,4,39,249,22,165,7,250,22,164,7,198,36,249, 22,183,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,191,14,248,22,105,23,198, +2,9,250,22,90,6,4,4,10,32,32,32,248,22,135,15,248,22,105,23,198, 2,248,2,80,248,22,81,23,198,1,28,249,22,154,9,248,22,81,23,200,2, -23,197,1,28,249,22,152,9,248,22,167,17,23,200,1,23,196,1,251,22,185, +23,197,1,28,249,22,152,9,248,22,175,17,23,200,1,23,196,1,251,22,185, 9,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,165,7,248,2,80,248,22,94,23, 201,1,12,12,247,192,20,13,159,80,159,43,50,38,249,22,79,249,22,79,248, -22,137,16,247,22,159,13,23,201,1,23,195,1,20,13,159,80,159,43,38,37, +22,145,16,247,22,167,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,188,4,23,198,2, -249,247,22,171,5,23,200,1,27,248,22,67,248,22,191,14,23,201,1,28,23, +249,247,22,171,5,23,200,1,27,248,22,67,248,22,135,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,156,5,23,196,2,12,28,23,197, 2,250,22,187,9,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,112, 97,116,104,23,200,2,250,22,189,9,2,22,2,33,23,198,2,28,28,248,22, -77,23,196,2,249,22,152,9,248,22,167,17,23,198,2,2,4,11,248,22,147, -5,248,22,104,196,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,167, +77,23,196,2,249,22,152,9,248,22,175,17,23,198,2,2,4,11,248,22,147, +5,248,22,104,196,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,175, 17,23,198,2,2,34,28,248,22,77,248,22,104,23,197,2,249,22,152,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,147,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,152,9,248,22,167,17,23,198,2, +1,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,175,17,23,198,2, 2,34,28,28,249,22,154,9,248,22,104,23,198,2,2,36,10,249,22,154,9, 248,22,104,23,198,2,2,35,28,23,196,2,27,248,22,148,5,23,198,2,28, -248,22,64,193,10,28,248,22,77,193,248,22,64,248,22,167,17,194,11,11,11, +248,22,64,193,10,28,248,22,77,193,248,22,64,248,22,175,17,194,11,11,11, 11,11,86,96,23,198,1,23,197,1,23,193,1,27,248,22,148,5,23,198,1, -248,22,147,5,249,2,71,28,248,22,77,23,197,2,248,22,167,17,23,197,2, -23,196,2,27,28,249,22,154,9,248,22,104,23,203,2,2,35,248,22,168,17, -200,248,22,106,200,28,248,22,77,23,198,2,249,22,93,248,22,168,17,199,194, -192,28,28,248,22,77,23,196,2,249,22,152,9,248,22,167,17,23,198,2,2, +248,22,147,5,249,2,71,28,248,22,77,23,197,2,248,22,175,17,23,197,2, +23,196,2,27,28,249,22,154,9,248,22,104,23,203,2,2,35,248,22,176,17, +200,248,22,106,200,28,248,22,77,23,198,2,249,22,93,248,22,176,17,199,194, +192,28,28,248,22,77,23,196,2,249,22,152,9,248,22,175,17,23,198,2,2, 38,11,86,94,248,80,159,38,8,28,39,193,253,213,200,201,202,203,11,80,158, -43,55,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,167,17,23,198, +43,55,28,28,248,22,77,23,196,2,28,249,22,152,9,248,22,175,17,23,198, 2,2,34,28,248,22,77,248,22,104,23,197,2,249,22,152,9,248,22,108,23, 198,2,2,38,11,11,11,86,94,248,80,159,38,8,28,39,193,253,213,248,22, 104,201,201,202,203,248,22,106,201,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,152,9, -2,34,248,22,167,17,23,200,2,27,248,22,104,23,199,2,28,28,249,22,154, +2,34,248,22,175,17,23,200,2,27,248,22,104,23,199,2,28,28,249,22,154, 9,23,195,2,2,36,10,249,22,154,9,23,195,2,2,35,86,94,23,193,1, -28,23,199,2,27,248,22,148,5,23,201,2,28,248,22,77,193,248,22,167,17, +28,23,199,2,27,248,22,148,5,23,201,2,28,248,22,77,193,248,22,175,17, 193,192,250,22,185,9,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,152,9,2,34,248,22,167, +23,197,2,27,28,248,22,77,23,199,2,28,249,22,152,9,2,34,248,22,175, 17,23,201,2,27,28,28,28,249,22,154,9,248,22,104,23,202,2,2,36,10, 249,22,154,9,248,22,104,23,202,2,2,35,23,200,2,11,27,248,22,148,5, -23,202,2,27,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,168,17, +23,202,2,27,28,249,22,154,9,248,22,104,23,204,2,2,35,248,22,176,17, 23,202,1,248,22,106,23,202,1,28,248,22,77,23,195,2,249,2,71,248,22, -167,17,23,197,2,249,22,93,248,22,168,17,23,199,1,23,197,1,249,2,71, +175,17,23,197,2,249,22,93,248,22,176,17,23,199,1,23,197,1,249,2,71, 23,196,1,23,195,1,249,2,71,2,36,28,249,22,154,9,248,22,104,23,204, -2,2,35,248,22,168,17,23,202,1,248,22,106,23,202,1,28,248,22,77,193, -248,22,168,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,165,15,28,23,193,2,192,86,94,23,193, +2,2,35,248,22,176,17,23,202,1,248,22,106,23,202,1,28,248,22,77,193, +248,22,176,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,173,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,165,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,168,17,23,199,1,23,197,1,28,248,22,142,7,23,196,2,86,94, +9,248,22,176,17,23,199,1,23,197,1,28,248,22,142,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, -141,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,187,14,23, -196,2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,150,15,28,248,22, -147,15,23,198,2,23,197,2,249,22,148,15,23,199,2,248,80,159,46,8,29, +149,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,131,15,23, +196,2,86,94,23,196,1,248,80,159,42,8,30,39,248,22,158,15,28,248,22, +155,15,23,198,2,23,197,2,249,22,156,15,23,199,2,248,80,159,46,8,29, 39,23,205,2,28,249,22,152,9,248,22,80,23,198,2,2,32,27,248,80,159, -43,48,39,249,22,79,23,199,2,247,22,165,15,28,23,193,2,192,86,94,23, +43,48,39,249,22,79,23,199,2,247,22,173,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,180,15,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,180,15,2,79, +87,23,194,2,249,22,188,15,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,188,15,2,79, 23,197,2,248,2,77,23,196,2,249,22,165,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,168,17,23,198,1,23,198,1,28, -249,22,152,9,248,22,167,17,23,198,2,2,37,248,80,159,42,8,30,39,248, -22,150,15,249,22,148,15,248,22,152,15,248,22,104,23,201,2,248,80,159,46, -8,29,39,23,205,2,12,86,94,28,28,248,22,187,14,23,194,2,10,248,22, +39,23,206,1,248,22,80,23,198,2,248,22,176,17,23,198,1,23,198,1,28, +249,22,152,9,248,22,175,17,23,198,2,2,37,248,80,159,42,8,30,39,248, +22,158,15,249,22,156,15,248,22,160,15,248,22,104,23,201,2,248,80,159,46, +8,29,39,23,205,2,12,86,94,28,28,248,22,131,15,23,194,2,10,248,22, 167,8,23,194,2,86,94,23,201,1,12,28,23,201,2,250,22,187,9,67,114, 101,113,117,105,114,101,249,22,190,7,6,17,17,98,97,100,32,109,111,100,117, 108,101,32,112,97,116,104,126,97,28,23,198,2,248,22,80,23,199,2,6,0, 0,23,204,1,86,94,23,201,1,250,22,189,9,2,22,2,33,23,198,2,27, -28,248,22,167,8,23,195,2,249,22,172,8,23,196,2,36,249,22,150,15,248, -22,151,15,23,197,2,11,27,28,248,22,167,8,23,196,2,249,22,172,8,23, +28,248,22,167,8,23,195,2,249,22,172,8,23,196,2,36,249,22,158,15,248, +22,159,15,23,197,2,11,27,28,248,22,167,8,23,196,2,249,22,172,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,167,8,23,199,2,250,22,7,2,41,249,22,172,8,23,203,2, -38,2,41,248,22,144,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248, +38,2,41,248,22,152,15,23,198,2,86,95,23,195,1,23,193,1,27,28,248, 22,167,8,23,200,2,249,22,172,8,23,201,2,39,249,80,159,49,58,39,23, 197,2,5,0,27,28,248,22,167,8,23,201,2,249,22,172,8,23,202,2,40, -248,22,147,5,23,200,2,27,250,22,160,2,80,159,52,41,38,248,22,137,16, -247,22,159,13,11,27,28,23,194,2,23,194,1,86,94,23,194,1,27,249,22, +248,22,147,5,23,200,2,27,250,22,160,2,80,159,52,41,38,248,22,145,16, +247,22,167,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,137,16,247,22,159,13,195,192,27,28,23,204,2,248,22,147,5,249,22,79, +22,145,16,247,22,167,13,195,192,27,28,23,204,2,248,22,147,5,249,22,79, 248,22,148,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,137,16,247,22,159,13,86,94,249,22,3,20, +50,38,9,23,197,1,27,248,22,145,16,247,22,167,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,167,8,23,204,1,11,28,248,22,142,7,23,206,2, 10,28,248,22,64,23,206,2,10,28,248,22,77,23,206,2,249,22,152,9,248, -22,167,17,23,208,2,2,32,11,249,80,159,53,49,39,28,248,22,142,7,23, +22,175,17,23,208,2,2,32,11,249,80,159,53,49,39,28,248,22,142,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,165,15,252,22,169,8,23,209,1,23,208, +212,1,249,22,79,23,209,1,247,22,173,15,252,22,169,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,187,4, -80,159,37,56,38,248,22,171,5,80,159,37,37,39,248,22,156,14,80,159,37, +80,159,37,56,38,248,22,171,5,80,159,37,37,39,248,22,164,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,113,159,36,16,1,11,16,0,20,26, @@ -1022,7 +1022,7 @@ EVAL_ONE_SIZED_STR((char *)expr, 8527); } { - SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,48,84,0,0,0,0,0,0,0,0,0, + SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,51,46,49,46,49,50,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,98,1, 0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2, @@ -1030,7 +1030,7 @@ 111,114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2, 2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2, 66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115, -11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,158, +11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,166, 90,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,113,159,36,16,1,11,16,0,20,26,144,9,2,1, diff --git a/src/racket/src/error.c b/src/racket/src/error.c index 743412367d..5eb7919113 100644 --- a/src/racket/src/error.c +++ b/src/racket/src/error.c @@ -74,6 +74,9 @@ ROSYM static Scheme_Object *error_symbol; ROSYM static Scheme_Object *warning_symbol; ROSYM static Scheme_Object *info_symbol; ROSYM static Scheme_Object *debug_symbol; +ROSYM static Scheme_Object *posix_symbol; +ROSYM static Scheme_Object *windows_symbol; +ROSYM static Scheme_Object *gai_symbol; ROSYM static Scheme_Object *arity_property; ROSYM static Scheme_Object *def_err_val_proc; ROSYM static Scheme_Object *def_error_esc_proc; @@ -270,7 +273,8 @@ Scheme_Config *scheme_init_error_escape_proc(Scheme_Config *config) is used only if the boolean is 1 */ -static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list args, char **_s) +static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list args, char **_s, + Scheme_Object **_errno_val) /* NULL for s means allocate the buffer here (and return in (_s), but this function doesn't allocate before extracting arguments from the stack. */ { @@ -460,6 +464,7 @@ static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list { int en, he, none = 0; char *es; + Scheme_Object *err_kind; if (type == 'm') { none = !ints[ip++]; @@ -482,13 +487,16 @@ static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list else es = NULL; - if (he) + if (he) { es = (char *)scheme_hostname_error(en); + err_kind = gai_symbol; + } if ((en || es) && !none) { #ifdef NO_STRERROR_AVAILABLE if (!es) es = "Unknown error"; + err_kind = posix_symbol; #else # ifdef DOS_FILE_SYSTEM wchar_t mbuf[256]; @@ -509,16 +517,23 @@ static intptr_t sch_vsprintf(char *s, intptr_t maxlen, const char *msg, va_list else break; } + err_kind = windows_symbol; } } # endif - if (!es) + if (!es) { es = strerror(en); + err_kind = posix_symbol; + } #endif tlen = strlen(es) + 24; t = (const char *)scheme_malloc_atomic(tlen); sprintf((char *)t, "%s; errno=%d", es, en); tlen = strlen(t); + if (_errno_val) { + err_kind = scheme_make_pair(scheme_make_integer_value(en), err_kind); + *_errno_val = err_kind; + } } else { if (none) { t = ""; @@ -648,7 +663,7 @@ static intptr_t scheme_sprintf(char *s, intptr_t maxlen, const char *msg, ...) GC_CAN_IGNORE va_list args; HIDE_FROM_XFORM(va_start(args, msg)); - len = sch_vsprintf(s, maxlen, msg, args, NULL); + len = sch_vsprintf(s, maxlen, msg, args, NULL, NULL); HIDE_FROM_XFORM(va_end(args)); return len; @@ -727,6 +742,13 @@ void scheme_init_error(Scheme_Env *env) info_symbol = scheme_intern_symbol("info"); debug_symbol = scheme_intern_symbol("debug"); + REGISTER_SO(posix_symbol); + REGISTER_SO(windows_symbol); + REGISTER_SO(gai_symbol); + posix_symbol = scheme_intern_symbol("posix"); + windows_symbol = scheme_intern_symbol("windows"); + gai_symbol = scheme_intern_symbol("gai"); + REGISTER_SO(arity_property); { Scheme_Object *guard; @@ -929,7 +951,7 @@ scheme_signal_error (const char *msg, ...) intptr_t len; HIDE_FROM_XFORM(va_start(args, msg)); - len = sch_vsprintf(NULL, 0, msg, args, &buffer); + len = sch_vsprintf(NULL, 0, msg, args, &buffer, NULL); HIDE_FROM_XFORM(va_end(args)); if (scheme_current_thread->current_local_env) { @@ -961,7 +983,7 @@ void scheme_warning(char *msg, ...) intptr_t len; HIDE_FROM_XFORM(va_start(args, msg)); - len = sch_vsprintf(NULL, 0, msg, args, &buffer); + len = sch_vsprintf(NULL, 0, msg, args, &buffer, NULL); HIDE_FROM_XFORM(va_end(args)); buffer[len++] = '\n'; @@ -985,7 +1007,7 @@ void scheme_log(Scheme_Logger *logger, int level, int flags, } HIDE_FROM_XFORM(va_start(args, msg)); - len = sch_vsprintf(NULL, 0, msg, args, &buffer); + len = sch_vsprintf(NULL, 0, msg, args, &buffer, NULL); HIDE_FROM_XFORM(va_end(args)); buffer[len] = 0; @@ -1008,7 +1030,7 @@ void scheme_log_w_data(Scheme_Logger *logger, int level, int flags, } HIDE_FROM_XFORM(va_start(args, msg)); - len = sch_vsprintf(NULL, 0, msg, args, &buffer); + len = sch_vsprintf(NULL, 0, msg, args, &buffer, NULL); HIDE_FROM_XFORM(va_end(args)); buffer[len] = 0; @@ -2038,7 +2060,7 @@ void scheme_read_err(Scheme_Object *port, Scheme_Object *loc; HIDE_FROM_XFORM(va_start(args, detail)); - slen = sch_vsprintf(NULL, 0, detail, args, &s); + slen = sch_vsprintf(NULL, 0, detail, args, &s, NULL); HIDE_FROM_XFORM(va_end(args)); ls = ""; @@ -2315,7 +2337,7 @@ void scheme_wrong_syntax(const char *where, GC_CAN_IGNORE va_list args; HIDE_FROM_XFORM(va_start(args, detail)); - slen = sch_vsprintf(NULL, 0, detail, args, &s); + slen = sch_vsprintf(NULL, 0, detail, args, &s, NULL); HIDE_FROM_XFORM(va_end(args)); } @@ -2332,7 +2354,7 @@ void scheme_unbound_syntax(const char *where, GC_CAN_IGNORE va_list args; HIDE_FROM_XFORM(va_start(args, detail)); - slen = sch_vsprintf(NULL, 0, detail, args, &s); + slen = sch_vsprintf(NULL, 0, detail, args, &s, NULL); HIDE_FROM_XFORM(va_end(args)); do_wrong_syntax(where, detail_form, form, s, slen, scheme_null, MZEXN_FAIL_SYNTAX_UNBOUND); @@ -2354,7 +2376,7 @@ void scheme_wrong_syntax_with_more_sources(const char *where, GC_CAN_IGNORE va_list args; HIDE_FROM_XFORM(va_start(args, detail)); - slen = sch_vsprintf(NULL, 0, detail, args, &s); + slen = sch_vsprintf(NULL, 0, detail, args, &s, NULL); HIDE_FROM_XFORM(va_end(args)); } @@ -2399,7 +2421,7 @@ void scheme_wrong_return_arity(const char *where, GC_CAN_IGNORE va_list args; HIDE_FROM_XFORM(va_start(args, detail)); - slen = sch_vsprintf(NULL, 0, detail, args, &s); + slen = sch_vsprintf(NULL, 0, detail, args, &s, NULL); HIDE_FROM_XFORM(va_end(args)); } @@ -2458,7 +2480,7 @@ void scheme_raise_out_of_memory(const char *where, const char *msg, ...) GC_CAN_IGNORE va_list args; HIDE_FROM_XFORM(va_start(args, msg)); - slen = sch_vsprintf(NULL, 0, msg, args, &s); + slen = sch_vsprintf(NULL, 0, msg, args, &s, NULL); HIDE_FROM_XFORM(va_end(args)); } @@ -3982,7 +4004,7 @@ scheme_raise_exn(int id, ...) intptr_t alen; char *msg; int i, c; - Scheme_Object *eargs[MZEXN_MAXARGS]; + Scheme_Object *eargs[MZEXN_MAXARGS], *errno_val = NULL; char *buffer; /* Precise GC: Don't allocate before getting hidden args off stack */ @@ -3999,12 +4021,23 @@ scheme_raise_exn(int id, ...) msg = mzVA_ARG(args, char*); - alen = sch_vsprintf(NULL, 0, msg, args, &buffer); + alen = sch_vsprintf(NULL, 0, msg, args, &buffer, &errno_val); HIDE_FROM_XFORM(va_end(args)); #ifndef NO_SCHEME_EXNS eargs[0] = scheme_make_immutable_sized_utf8_string(buffer, alen); eargs[1] = TMP_CMARK_VALUE; + if (errno_val) { + if (id == MZEXN_FAIL_FILESYSTEM) { + id = MZEXN_FAIL_FILESYSTEM_ERRNO; + eargs[2] = errno_val; + c++; + } else if (id == MZEXN_FAIL_NETWORK) { + id = MZEXN_FAIL_NETWORK_ERRNO; + eargs[2] = errno_val; + c++; + } + } do_raise(scheme_make_struct_instance(exn_table[id].type, c, eargs), @@ -4318,6 +4351,18 @@ static Scheme_Object *break_field_check(int argc, Scheme_Object **argv) return scheme_values(3, argv); } +static Scheme_Object *errno_field_check(int argc, Scheme_Object **argv) +{ + if (!SCHEME_PAIRP(argv[2]) + || !scheme_exact_p(SCHEME_CAR(argv[2])) + || !(SAME_OBJ(SCHEME_CDR(argv[2]), posix_symbol) + || SAME_OBJ(SCHEME_CDR(argv[2]), windows_symbol) + || SAME_OBJ(SCHEME_CDR(argv[2]), gai_symbol))) + scheme_wrong_field_contract(argv[3], "(cons/c exact-integer? (or/c 'posix 'windows 'gai))", argv[2]); + + return scheme_values (3, argv); +} + static Scheme_Object *extract_syntax_locations(int argc, Scheme_Object **argv) { if (scheme_is_struct_instance(exn_table[MZEXN_FAIL_SYNTAX].type, argv[0])) { diff --git a/src/racket/src/makeexn b/src/racket/src/makeexn index fe08d4aa75..bc544cf8fa 100755 --- a/src/racket/src/makeexn +++ b/src/racket/src/makeexn @@ -57,8 +57,14 @@ propeties (the latter in curly braces), strings are contracts/comments. (non-char [] "unexpected non-character")) (filesystem [] "error manipulating a filesystem object" (exists [] "attempt to create a file that exists already") - (version [] "version mismatch loading an extension")) - (network [] "TCP and UDP errors") + (version [] "version mismatch loading an extension") + (errno [errno_field_check + (errno "pair of symbol and number" "system error code")] + "error with system error code")) + (network [] "TCP and UDP errors" + (errno [errno_field_check + (errno "pair of symbol and number" "system error code")] + "error with system error code")) (out-of-memory [] "out of memory") (unsupported [] "unsupported feature") (user [] "for end users")) diff --git a/src/racket/src/schexn.h b/src/racket/src/schexn.h index eb92b46e2e..33fb1b0ed1 100644 --- a/src/racket/src/schexn.h +++ b/src/racket/src/schexn.h @@ -18,13 +18,15 @@ enum { MZEXN_FAIL_FILESYSTEM, MZEXN_FAIL_FILESYSTEM_EXISTS, MZEXN_FAIL_FILESYSTEM_VERSION, + MZEXN_FAIL_FILESYSTEM_ERRNO, MZEXN_FAIL_NETWORK, + MZEXN_FAIL_NETWORK_ERRNO, MZEXN_FAIL_OUT_OF_MEMORY, MZEXN_FAIL_UNSUPPORTED, MZEXN_FAIL_USER, MZEXN_BREAK, - MZEXN_BREAK_TERMINATE, MZEXN_BREAK_HANG_UP, + MZEXN_BREAK_TERMINATE, MZEXN_OTHER }; #endif @@ -51,13 +53,15 @@ static exn_rec exn_table[] = { { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 13 }, { 2, NULL, NULL, 0, NULL, 13 }, + { 3, NULL, NULL, 0, NULL, 13 }, { 2, NULL, NULL, 0, NULL, 1 }, + { 3, NULL, NULL, 0, NULL, 17 }, { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 1 }, { 2, NULL, NULL, 0, NULL, 1 }, { 3, NULL, NULL, 0, NULL, 0 }, - { 3, NULL, NULL, 0, NULL, 20 }, - { 3, NULL, NULL, 0, NULL, 20 } + { 3, NULL, NULL, 0, NULL, 22 }, + { 3, NULL, NULL, 0, NULL, 22 } }; #else static exn_rec *exn_table; @@ -85,13 +89,15 @@ static exn_rec *exn_table; exn_table[MZEXN_FAIL_FILESYSTEM].args = 2; exn_table[MZEXN_FAIL_FILESYSTEM_EXISTS].args = 2; exn_table[MZEXN_FAIL_FILESYSTEM_VERSION].args = 2; + exn_table[MZEXN_FAIL_FILESYSTEM_ERRNO].args = 3; exn_table[MZEXN_FAIL_NETWORK].args = 2; + exn_table[MZEXN_FAIL_NETWORK_ERRNO].args = 3; exn_table[MZEXN_FAIL_OUT_OF_MEMORY].args = 2; exn_table[MZEXN_FAIL_UNSUPPORTED].args = 2; exn_table[MZEXN_FAIL_USER].args = 2; exn_table[MZEXN_BREAK].args = 3; - exn_table[MZEXN_BREAK_TERMINATE].args = 3; exn_table[MZEXN_BREAK_HANG_UP].args = 3; + exn_table[MZEXN_BREAK_TERMINATE].args = 3; #endif #endif @@ -101,6 +107,8 @@ static exn_rec *exn_table; static const char *MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS[1] = { "id" }; static const char *MZEXN_FAIL_SYNTAX_FIELDS[1] = { "exprs" }; static const char *MZEXN_FAIL_READ_FIELDS[1] = { "srclocs" }; + static const char *MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS[1] = { "errno" }; + static const char *MZEXN_FAIL_NETWORK_ERRNO_FIELDS[1] = { "errno" }; static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" }; #endif @@ -126,11 +134,13 @@ static exn_rec *exn_table; SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM, EXN_PARENT(MZEXN_FAIL), "exn:fail:filesystem", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_EXISTS, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:exists", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_VERSION, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:version", 0, NULL, scheme_null, NULL) + SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_ERRNO, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:errno", 1, MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS, scheme_null, scheme_make_prim(errno_field_check)) SETUP_STRUCT(MZEXN_FAIL_NETWORK, EXN_PARENT(MZEXN_FAIL), "exn:fail:network", 0, NULL, scheme_null, NULL) + SETUP_STRUCT(MZEXN_FAIL_NETWORK_ERRNO, EXN_PARENT(MZEXN_FAIL_NETWORK), "exn:fail:network:errno", 1, MZEXN_FAIL_NETWORK_ERRNO_FIELDS, scheme_null, scheme_make_prim(errno_field_check)) SETUP_STRUCT(MZEXN_FAIL_OUT_OF_MEMORY, EXN_PARENT(MZEXN_FAIL), "exn:fail:out-of-memory", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_UNSUPPORTED, EXN_PARENT(MZEXN_FAIL), "exn:fail:unsupported", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_FAIL_USER, EXN_PARENT(MZEXN_FAIL), "exn:fail:user", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_BREAK, EXN_PARENT(MZEXN), "exn:break", 1, MZEXN_BREAK_FIELDS, scheme_null, scheme_make_prim(break_field_check)) - SETUP_STRUCT(MZEXN_BREAK_TERMINATE, EXN_PARENT(MZEXN_BREAK), "exn:break:terminate", 0, NULL, scheme_null, NULL) SETUP_STRUCT(MZEXN_BREAK_HANG_UP, EXN_PARENT(MZEXN_BREAK), "exn:break:hang-up", 0, NULL, scheme_null, NULL) + SETUP_STRUCT(MZEXN_BREAK_TERMINATE, EXN_PARENT(MZEXN_BREAK), "exn:break:terminate", 0, NULL, scheme_null, NULL) #endif diff --git a/src/racket/src/schminc.h b/src/racket/src/schminc.h index b5e7f30f6d..33e8348d4d 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 1076 +#define EXPECTED_PRIM_COUNT 1084 #define EXPECTED_UNSAFE_COUNT 80 #define EXPECTED_FLFXNUM_COUNT 69 #define EXPECTED_FUTURES_COUNT 15 diff --git a/src/racket/src/schvers.h b/src/racket/src/schvers.h index 43d06a21d3..befcb52022 100644 --- a/src/racket/src/schvers.h +++ b/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "5.3.1.11" +#define MZSCHEME_VERSION "5.3.1.12" #define MZSCHEME_VERSION_X 5 #define MZSCHEME_VERSION_Y 3 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 11 +#define MZSCHEME_VERSION_W 12 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)