diff --git a/collects/algol60/info.ss b/collects/algol60/info.ss index 8cc1560f51..26c9ed1809 100644 --- a/collects/algol60/info.ss +++ b/collects/algol60/info.ss @@ -1,6 +1,5 @@ #lang setup/infotab -(define name "Algol 60 Language") (define tools '(("tool.ss"))) (define tool-names '("Algol 60")) (define scribblings '(("algol60.scrbl"))) diff --git a/collects/eopl/info.ss b/collects/eopl/info.ss index b2d98c6735..c8a355248d 100644 --- a/collects/eopl/info.ss +++ b/collects/eopl/info.ss @@ -2,7 +2,6 @@ (require string-constants) -(define name "EoPL") (define tools (list "eopl-tool.ss")) (define tool-icons (list "eopl-small.gif")) (define tool-names (list "Essentials of Programming Languages")) diff --git a/collects/games/cards/info.ss b/collects/games/cards/info.ss index 3dea213019..62e534235c 100644 --- a/collects/games/cards/info.ss +++ b/collects/games/cards/info.ss @@ -1,4 +1,3 @@ #lang setup/infotab -(define name "Cards game library") (define scribblings '(("cards.scrbl"))) diff --git a/collects/games/crazy8s/info.ss b/collects/games/crazy8s/info.ss index 62d046aaed..003130fc51 100644 --- a/collects/games/crazy8s/info.ss +++ b/collects/games/crazy8s/info.ss @@ -1,5 +1,4 @@ #lang setup/infotab -(define name "Crazy 8s") (define game "crazy8s.ss") (define game-set "Card Games") diff --git a/collects/games/doors/info.ss b/collects/games/doors/info.ss index d8c360fdfc..c14a2ca411 100644 --- a/collects/games/doors/info.ss +++ b/collects/games/doors/info.ss @@ -1,3 +1 @@ #lang setup/infotab - -(define name "Doors game library") diff --git a/collects/games/ginrummy/info.ss b/collects/games/ginrummy/info.ss index 656fb15e49..90795a5c30 100644 --- a/collects/games/ginrummy/info.ss +++ b/collects/games/ginrummy/info.ss @@ -1,5 +1,4 @@ #lang setup/infotab -(define name "Rummy") (define game "ginrummy.ss") (define game-set "Card Games") diff --git a/collects/games/gl-board-game/info.ss b/collects/games/gl-board-game/info.ss index 03df90ea7e..c14a2ca411 100644 --- a/collects/games/gl-board-game/info.ss +++ b/collects/games/gl-board-game/info.ss @@ -1,3 +1 @@ #lang setup/infotab - -(define name "3D board game library") diff --git a/collects/games/gofish/info.ss b/collects/games/gofish/info.ss index ccefee6ff6..55b27526ba 100644 --- a/collects/games/gofish/info.ss +++ b/collects/games/gofish/info.ss @@ -1,5 +1,4 @@ #lang setup/infotab -(define name "Go Fish") (define game "gofish.ss") (define game-set "Card Games") diff --git a/collects/games/mines/info.ss b/collects/games/mines/info.ss index 8b286af017..36d3a5f3ec 100644 --- a/collects/games/mines/info.ss +++ b/collects/games/mines/info.ss @@ -1,5 +1,4 @@ #lang setup/infotab -(define name "Minesweeper") (define game-set "Puzzle Games") (define game "mines.ss") diff --git a/collects/guibuilder/info.ss b/collects/guibuilder/info.ss index 7ae694d3a3..64237064ab 100644 --- a/collects/guibuilder/info.ss +++ b/collects/guibuilder/info.ss @@ -1,5 +1,4 @@ #lang setup/infotab -(define name "GUI Builder") (define tools '(("tool.ss"))) (define tool-names '("GUI Builder")) diff --git a/collects/hierlist/info.ss b/collects/hierlist/info.ss index fd3f77d416..c14a2ca411 100644 --- a/collects/hierlist/info.ss +++ b/collects/hierlist/info.ss @@ -1,3 +1 @@ #lang setup/infotab - -(define name "Hierarchical list widget") diff --git a/collects/honu-module/info.ss b/collects/honu-module/info.ss index 6b909dd4e1..c14a2ca411 100644 --- a/collects/honu-module/info.ss +++ b/collects/honu-module/info.ss @@ -1,3 +1 @@ #lang setup/infotab - -(define name "#honu Language") diff --git a/collects/openssl/info.ss b/collects/openssl/info.ss index e1d58ba9bc..26e06fbe0d 100644 --- a/collects/openssl/info.ss +++ b/collects/openssl/info.ss @@ -1,4 +1,3 @@ #lang setup/infotab -(define name "SSL Driver") (define scribblings '(("openssl.scrbl"))) diff --git a/collects/s-exp/info.ss b/collects/s-exp/info.ss index ceadf02ccb..13a63c4835 100644 --- a/collects/s-exp/info.ss +++ b/collects/s-exp/info.ss @@ -1,3 +1,2 @@ #lang setup/infotab -(define name "S-Expression Module Reader") diff --git a/collects/scheme/gui/info.ss b/collects/scheme/gui/info.ss deleted file mode 100644 index 4c34a49874..0000000000 --- a/collects/scheme/gui/info.ss +++ /dev/null @@ -1,3 +0,0 @@ -#lang setup/infotab - -(define name "Scheme GUI language") diff --git a/collects/scheme/private/for.ss b/collects/scheme/private/for.ss index ce2ced7567..d68b170441 100644 --- a/collects/scheme/private/for.ss +++ b/collects/scheme/private/for.ss @@ -43,6 +43,7 @@ sequence? sequence-generate + prop:sequence define-sequence-syntax make-do-sequence @@ -268,6 +269,14 @@ ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; sequences + (define-values (struct:do-sequence + make-do-sequence + do-sequence? + do-sequence-ref + do-sequence-set!) + (make-struct-type 'sequence #f + 1 0 #f)) + (define-values (prop:sequence :sequence? :sequence-ref) (make-struct-type-property 'sequence (lambda (v sinfo) @@ -277,17 +286,14 @@ 'sequence-property-guard "procedure (arity 1)" v)) - v))) - - (define-values (struct:do-sequence - make-do-sequence - do-sequence? - do-sequence-ref - do-sequence-set!) - (make-struct-type 'sequence #f - 1 0 #f - (list (cons prop:sequence (lambda (v) - ((do-sequence-ref v 0))))))) + (lambda (self) + (let ([s (v self)]) + (unless (sequence? s) + (raise-mismatch-error + 'sequence-generate + "procedure (value of prop:sequence) produced a non-sequence: " + s)) + s))))) (define-syntax define-sequence-syntax (syntax-rules () @@ -298,23 +304,26 @@ (syntax-local-certifier #f)))])) (define (sequence? v) - (or (:sequence? v) + (or (do-sequence? v) (list? v) (vector? v) (string? v) (bytes? v) (input-port? v) - (hash-table? v))) + (hash-table? v) + (and (:sequence? v) + (not (struct-type? v))))) (define (make-sequence who v) (cond - [(:sequence? v) ((:sequence-ref v) v)] + [(do-sequence? v) ((do-sequence-ref v 0))] [(list? v) (:list-gen v)] [(vector? v) (:vector-gen v)] [(string? v) (:string-gen v)] [(bytes? v) (:bytes-gen v)] [(input-port? v) (:input-port-gen v)] [(hash-table? v) (:hash-table-gen v cons (lambda (p) (values (car p) (cdr p))))] + [(:sequence? v) (make-sequence who ((:sequence-ref v) v))] [else (raise (make-exn:fail:contract (format "for: expected a sequence for ~a, got something else: ~v" diff --git a/collects/scheme/signature/info.ss b/collects/scheme/signature/info.ss deleted file mode 100644 index 45f885f9c6..0000000000 --- a/collects/scheme/signature/info.ss +++ /dev/null @@ -1,3 +0,0 @@ -#lang setup/infotab - -(define name "Scheme signature language") diff --git a/collects/scheme/unit/info.ss b/collects/scheme/unit/info.ss deleted file mode 100644 index d21bf414af..0000000000 --- a/collects/scheme/unit/info.ss +++ /dev/null @@ -1,3 +0,0 @@ -#lang setup/infotab - -(define name "Scheme unit language") diff --git a/collects/scribble/doc/info.ss b/collects/scribble/doc/info.ss deleted file mode 100644 index 9dd9e2e938..0000000000 --- a/collects/scribble/doc/info.ss +++ /dev/null @@ -1,3 +0,0 @@ -#lang setup/infotab - -(define name "Scribble Doc Reader") diff --git a/collects/scribblings/acks/info.ss b/collects/scribblings/acks/info.ss index 6893d107c2..7bfae9b4ad 100644 --- a/collects/scribblings/acks/info.ss +++ b/collects/scribblings/acks/info.ss @@ -1,5 +1,4 @@ #lang setup/infotab -(define name "Acknowledgments") (define scribblings '(("acks.scrbl"))) (define doc-categories '(omit)) diff --git a/collects/scribblings/reference/sequences.scrbl b/collects/scribblings/reference/sequences.scrbl index dcb2fd0e7e..4e4668f5b0 100644 --- a/collects/scribblings/reference/sequences.scrbl +++ b/collects/scribblings/reference/sequences.scrbl @@ -38,7 +38,9 @@ built-in datatypes, the sequence datatype includes the following: } In addition, @scheme[make-do-sequence] creates a sequence given a -thunk that returns procedures to implement a generator. +thunk that returns procedures to implement a generator, and the +@scheme[prop:sequence] property can be associated with a structure +type. For most sequence types, extracting elements from a sequence has no side-effect on the original sequence value; for example, extracting the @@ -190,6 +192,31 @@ returns @scheme[#f], the sequence ends, and none are called again. Typically, one of the functions determines the end condition, and the other two functions always return @scheme[#t].} +@defthing[prop:sequence struct-type-property?]{ + +Associates a procedure to a structure type that takes an instance of +the structure and returns a sequence. If @scheme[v] is an instance of +a structure type with this property, then @scheme[(sequence? v)] +produces @scheme[#t]. + +@examples[ +(define-struct train (car next) + #:property prop:sequence (lambda (t) + (make-do-sequence + (lambda () + (values train-car + train-next + t + (lambda (t) t) + (lambda (v) #t) + (lambda (t v) #t)))))) +(for/list ([c (make-train 'engine + (make-train 'boxcar + (make-train 'caboose + #f)))]) + c) +]} + @section{Sequence Generators} @defproc[(sequence-generate [seq sequence?]) (values (-> boolean?) diff --git a/collects/setup/info.ss b/collects/setup/info.ss index 42a72f4d23..ecc9a7a816 100644 --- a/collects/setup/info.ss +++ b/collects/setup/info.ss @@ -1,7 +1,5 @@ #lang setup/infotab -(define name "Setup PLT") - (define compile-omit-paths '("main.ss")) (define mzscheme-launcher-libraries '("main.ss")) diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index 229a9f05f9..2d0e06860c 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -1,5 +1,5 @@ { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,49,50,0,0,0,1,0,0,6,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,50,50,0,0,0,1,0,0,6,0, 9,0,14,0,17,0,24,0,31,0,35,0,48,0,55,0,60,0,65,0,69, 0,78,0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0, 155,0,177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107, @@ -14,357 +14,360 @@ 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,98,10,34,11,8,167,207,94,159,2,16,34,34,159,2,15,34,34,16,20, +115,98,10,35,11,8,136,210,94,159,2,16,35,35,159,2,15,35,35,16,20, 2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2, -9,2,2,2,10,2,2,2,4,2,2,2,11,2,2,2,12,2,2,97,35, -11,8,167,207,93,159,2,15,34,35,16,2,2,13,161,2,2,35,2,13,2, -2,2,13,97,10,11,11,8,167,207,16,0,97,10,36,11,8,167,207,16,0, -13,16,4,34,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30, -8,29,8,28,8,27,27,248,22,180,3,23,196,1,249,22,173,3,80,158,37, -34,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90, -23,202,1,27,248,22,180,3,23,196,1,249,22,173,3,80,158,37,34,251,22, +9,2,2,2,10,2,2,2,4,2,2,2,11,2,2,2,12,2,2,97,36, +11,8,136,210,93,159,2,15,35,36,16,2,2,13,161,2,2,36,2,13,2, +2,2,13,97,10,11,11,8,136,210,16,0,97,10,37,11,8,136,210,16,0, +13,16,4,35,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30, +8,29,8,28,8,27,27,248,22,180,3,23,196,1,249,22,173,3,80,158,38, +35,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90, +23,202,1,27,248,22,180,3,23,196,1,249,22,173,3,80,158,38,35,251,22, 73,2,17,248,22,88,23,200,2,249,22,63,2,1,248,22,90,23,202,1,12, 27,248,22,65,248,22,180,3,23,197,1,28,248,22,71,23,194,2,20,15,159, -35,34,35,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,173,3, -80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,12,248, +36,35,36,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,173,3, +80,158,38,35,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,12,248, 22,65,23,202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4, -11,11,2,18,3,1,7,101,110,118,55,51,49,54,16,4,11,11,2,19,3, -1,7,101,110,118,55,51,49,55,27,248,22,65,248,22,180,3,23,197,1,28, -248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195, -2,248,22,64,193,249,22,173,3,80,158,37,34,250,22,73,2,20,248,22,73, +11,11,2,18,3,1,7,101,110,118,55,55,53,55,16,4,11,11,2,19,3, +1,7,101,110,118,55,55,53,56,27,248,22,65,248,22,180,3,23,197,1,28, +248,22,71,23,194,2,20,15,159,36,35,36,28,248,22,71,248,22,65,23,195, +2,248,22,64,193,249,22,173,3,80,158,38,35,250,22,73,2,20,248,22,73, 249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,2,21, 2,21,249,22,63,2,4,248,22,65,23,205,1,18,100,11,8,31,8,30,8, -29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,51,49,57, -16,4,11,11,2,19,3,1,7,101,110,118,55,51,50,48,248,22,180,3,193, +29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,55,54,48, +16,4,11,11,2,19,3,1,7,101,110,118,55,55,54,49,248,22,180,3,193, 27,248,22,180,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27, -248,22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,37,34,28,248,22, +248,22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,38,35,28,248,22, 51,248,22,174,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,8,44, -35,41,9,222,33,39,248,22,180,3,248,22,88,23,200,2,250,22,73,2,22, +36,42,9,222,33,39,248,22,180,3,248,22,88,23,200,2,250,22,73,2,22, 248,22,73,249,22,73,248,22,73,248,22,64,23,204,2,250,22,74,2,23,249, 22,2,22,64,23,204,2,248,22,90,23,206,2,249,22,63,248,22,64,23,202, 1,249,22,2,22,88,23,200,1,250,22,74,2,20,249,22,2,32,0,89,162, -8,44,35,45,9,222,33,40,248,22,180,3,248,22,64,201,248,22,65,198,27, +8,44,36,46,9,222,33,40,248,22,180,3,248,22,64,201,248,22,65,198,27, 248,22,180,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248, -22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,37,34,250,22,74,2, -22,249,22,2,32,0,89,162,8,44,35,45,9,222,33,42,248,22,180,3,248, +22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,38,35,250,22,74,2, +22,249,22,2,32,0,89,162,8,44,36,46,9,222,33,42,248,22,180,3,248, 22,64,201,248,22,65,198,27,248,22,65,248,22,180,3,196,27,248,22,180,3, -248,22,64,195,249,22,173,3,80,158,38,34,28,248,22,71,195,250,22,74,2, +248,22,64,195,249,22,173,3,80,158,39,35,28,248,22,71,195,250,22,74,2, 20,9,248,22,65,199,250,22,73,2,7,248,22,73,248,22,64,199,250,22,74, 2,11,248,22,65,201,248,22,65,202,27,248,22,65,248,22,180,3,23,197,1, 27,249,22,1,22,77,249,22,2,22,180,3,248,22,180,3,248,22,64,199,249, -22,173,3,80,158,38,34,251,22,73,1,22,119,105,116,104,45,99,111,110,116, +22,173,3,80,158,39,35,251,22,73,1,22,119,105,116,104,45,99,111,110,116, 105,110,117,97,116,105,111,110,45,109,97,114,107,2,24,250,22,74,1,23,101, 120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, 110,21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114, 107,45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9, 248,22,65,203,27,248,22,65,248,22,180,3,23,197,1,28,248,22,71,23,194, -2,20,15,159,35,34,35,249,22,173,3,80,158,37,34,27,248,22,180,3,248, +2,20,15,159,36,35,36,249,22,173,3,80,158,38,35,27,248,22,180,3,248, 22,64,23,198,2,28,249,22,140,8,62,61,62,248,22,174,3,248,22,88,23, 197,2,250,22,73,2,20,248,22,73,249,22,73,21,93,2,25,248,22,64,199, 250,22,74,2,3,249,22,73,2,25,249,22,73,248,22,97,203,2,25,248,22, 65,202,251,22,73,2,17,28,249,22,140,8,248,22,174,3,248,22,64,23,201, 2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22, 65,23,201,1,249,22,63,2,3,248,22,65,23,203,1,99,8,31,8,30,8, -29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,51,52,50, -16,4,11,11,2,19,3,1,7,101,110,118,55,51,52,51,18,158,94,10,64, +29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,55,56,51, +16,4,11,11,2,19,3,1,7,101,110,118,55,55,56,52,18,158,94,10,64, 118,111,105,100,8,47,27,248,22,65,248,22,180,3,196,249,22,173,3,80,158, -37,34,28,248,22,51,248,22,174,3,248,22,64,197,250,22,73,2,26,248,22, +38,35,28,248,22,51,248,22,174,3,248,22,64,197,250,22,73,2,26,248,22, 73,248,22,64,199,248,22,88,198,27,248,22,174,3,248,22,64,197,250,22,73, 2,26,248,22,73,248,22,64,197,250,22,74,2,23,248,22,65,199,248,22,65, -202,159,34,20,102,159,34,16,1,20,24,2,1,16,0,83,158,40,20,99,137, -69,35,37,109,105,110,45,115,116,120,2,2,10,11,10,34,80,158,34,34,20, -102,159,34,16,0,16,0,11,11,16,0,34,11,37,34,11,16,10,9,9,9, +202,159,35,20,102,159,35,16,1,20,24,2,1,16,0,83,158,41,20,99,137, +69,35,37,109,105,110,45,115,116,120,2,2,10,11,10,35,80,158,35,35,20, +102,159,35,16,0,16,0,11,11,16,0,35,11,38,35,11,16,10,9,9,9, 9,9,9,9,9,9,9,16,10,2,3,2,4,2,5,2,6,2,7,2,8, 2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11,11,16, 10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12, -34,44,35,11,11,16,0,16,0,16,0,34,34,11,11,11,16,0,16,0,16, -0,34,34,16,11,16,5,93,2,13,20,15,159,34,34,34,34,20,102,159,34, -16,0,16,1,33,32,10,16,5,93,2,6,89,162,8,44,35,51,9,223,0, -33,33,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16, -5,93,2,10,89,162,8,44,35,51,9,223,0,33,34,34,20,102,159,34,16, -1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,12,89,162,8,44, -35,51,9,223,0,33,35,34,20,102,159,34,16,1,20,25,159,35,2,2,2, -13,16,1,33,36,11,16,5,93,2,4,89,162,8,44,35,54,9,223,0,33, -37,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,1,33,38,11, -16,5,93,2,7,89,162,8,44,35,56,9,223,0,33,41,34,20,102,159,34, -16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,5,89,162,8, -44,35,51,9,223,0,33,43,34,20,102,159,34,16,1,20,25,159,35,2,2, -2,13,16,0,11,16,5,93,2,11,89,162,8,44,35,52,9,223,0,33,44, -34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93, -2,8,89,162,8,44,35,53,9,223,0,33,45,34,20,102,159,34,16,1,20, -25,159,35,2,2,2,13,16,0,11,16,5,93,2,3,89,162,8,44,35,56, -9,223,0,33,46,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16, -1,33,48,11,16,5,93,2,9,89,162,8,44,35,52,9,223,0,33,49,34, -20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,0,94,2, -15,2,16,93,2,15,9,9,34,0}; +35,45,36,11,11,16,0,16,0,16,0,35,35,11,11,11,16,0,16,0,16, +0,35,35,16,11,16,5,93,2,13,20,15,159,35,35,35,35,20,102,159,35, +16,0,16,1,33,32,10,16,5,93,2,6,89,162,8,44,36,52,9,223,0, +33,33,35,20,102,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16, +5,93,2,10,89,162,8,44,36,52,9,223,0,33,34,35,20,102,159,35,16, +1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,12,89,162,8,44, +36,52,9,223,0,33,35,35,20,102,159,35,16,1,20,25,159,36,2,2,2, +13,16,1,33,36,11,16,5,93,2,4,89,162,8,44,36,55,9,223,0,33, +37,35,20,102,159,35,16,1,20,25,159,36,2,2,2,13,16,1,33,38,11, +16,5,93,2,7,89,162,8,44,36,57,9,223,0,33,41,35,20,102,159,35, +16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93,2,5,89,162,8, +44,36,52,9,223,0,33,43,35,20,102,159,35,16,1,20,25,159,36,2,2, +2,13,16,0,11,16,5,93,2,11,89,162,8,44,36,53,9,223,0,33,44, +35,20,102,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,5,93, +2,8,89,162,8,44,36,54,9,223,0,33,45,35,20,102,159,35,16,1,20, +25,159,36,2,2,2,13,16,0,11,16,5,93,2,3,89,162,8,44,36,57, +9,223,0,33,46,35,20,102,159,35,16,1,20,25,159,36,2,2,2,13,16, +1,33,48,11,16,5,93,2,9,89,162,8,44,36,53,9,223,0,33,49,35, +20,102,159,35,16,1,20,25,159,36,2,2,2,13,16,0,11,16,0,94,2, +15,2,16,93,2,15,9,9,35,0}; EVAL_ONE_SIZED_STR((char *)expr, 2046); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,49,60,0,0,0,1,0,0,3,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,50,59,0,0,0,1,0,0,3,0, 16,0,21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169, 0,200,0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1, -112,1,157,1,202,1,226,1,9,2,11,2,68,2,158,3,167,3,208,3,42, -5,146,5,250,5,110,6,124,6,167,6,183,6,33,8,47,8,210,8,217,9, -223,10,230,10,236,10,108,11,121,11,234,11,80,12,93,12,115,12,67,13,227, -13,42,15,50,15,58,15,84,15,194,15,0,0,6,19,0,0,29,11,11,72, -112,97,116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,110,111,114, -109,97,108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,99,107,45, -114,101,108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,101,99, -116,105,111,110,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,69, -45,102,105,110,100,45,99,111,108,77,99,104,101,99,107,45,115,117,102,102,105, -120,45,99,97,108,108,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115, -117,102,102,105,120,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120, -77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102, -105,110,100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111, -110,45,112,97,116,104,115,1,27,112,97,116,104,45,108,105,115,116,45,115,116, -114,105,110,103,45,62,112,97,116,104,45,108,105,115,116,1,20,102,105,110,100, -45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,73,101,109,98,101, -100,100,101,100,45,108,111,97,100,65,113,117,111,116,101,29,94,2,17,68,35, -37,112,97,114,97,109,122,11,64,108,111,111,112,69,101,120,101,99,45,102,105, -108,101,67,119,105,110,100,111,119,115,6,25,25,112,97,116,104,32,111,114,32, -118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,6,29,29,126, -97,58,32,105,110,118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112, -97,116,104,58,32,126,115,6,42,42,126,97,58,32,99,111,108,108,101,99,116, -105,111,110,32,110,111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32, -97,110,121,32,111,102,58,32,126,115,6,42,42,112,97,116,104,32,40,102,111, -114,32,97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105, -100,45,112,97,116,104,32,115,116,114,105,110,103,6,21,21,115,116,114,105,110, -103,32,111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97, -110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32, -97,32,114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,158, -35,49,250,80,158,38,50,249,22,27,11,80,158,40,49,22,147,12,10,248,22, -188,4,23,196,2,28,248,22,166,5,23,194,2,12,87,94,248,22,143,8,23, -194,1,248,80,159,36,53,35,195,28,248,22,71,23,195,2,9,27,248,22,64, -23,196,2,27,28,248,22,128,13,23,195,2,23,194,1,28,248,22,191,12,23, -195,2,249,22,129,13,23,196,1,250,80,158,41,47,248,22,143,13,2,20,11, -10,250,80,158,39,47,248,22,143,13,2,20,23,197,1,10,28,23,193,2,249, -22,63,248,22,131,13,249,22,129,13,23,198,1,247,22,144,13,27,248,22,65, -23,200,1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248, -22,128,13,23,195,2,23,194,1,28,248,22,191,12,23,195,2,249,22,129,13, -23,196,1,250,80,158,46,47,248,22,143,13,2,20,11,10,250,80,158,44,47, -248,22,143,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,131,13, -249,22,129,13,23,198,1,247,22,144,13,248,80,159,44,52,35,248,22,65,23, -199,1,87,94,23,193,1,248,80,159,42,52,35,248,22,65,23,197,1,87,94, -23,193,1,27,248,22,65,23,198,1,28,248,22,71,23,194,2,9,27,248,22, -64,23,195,2,27,28,248,22,128,13,23,195,2,23,194,1,28,248,22,191,12, -23,195,2,249,22,129,13,23,196,1,250,80,158,44,47,248,22,143,13,2,20, -11,10,250,80,158,42,47,248,22,143,13,2,20,23,197,1,10,28,23,193,2, -249,22,63,248,22,131,13,249,22,129,13,23,198,1,247,22,144,13,248,80,159, -42,52,35,248,22,65,23,199,1,248,80,159,40,52,35,248,22,65,196,249,80, -159,36,37,35,2,7,195,27,248,22,168,12,23,195,2,28,23,193,2,192,87, -94,23,193,1,28,248,22,135,6,23,195,2,27,248,22,190,12,195,28,192,192, -248,22,191,12,195,11,87,94,28,28,248,22,169,12,23,195,2,10,27,248,22, -168,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23, -196,2,27,248,22,190,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248, -22,191,12,23,197,2,11,12,250,22,170,8,76,110,111,114,109,97,108,45,112, -97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32, +112,1,157,1,202,1,226,1,9,2,11,2,68,2,158,3,199,3,33,5,137, +5,241,5,102,6,116,6,150,6,166,6,16,8,30,8,193,8,200,9,206,10, +213,10,219,10,91,11,104,11,59,12,161,12,174,12,196,12,148,13,52,14,123, +15,131,15,139,15,165,15,19,16,0,0,67,19,0,0,29,11,11,72,112,97, +116,104,45,115,116,114,105,110,103,63,64,98,115,98,115,76,110,111,114,109,97, +108,45,99,97,115,101,45,112,97,116,104,74,45,99,104,101,99,107,45,114,101, +108,112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,101,99,116,105, +111,110,75,99,111,108,108,101,99,116,105,111,110,45,112,97,116,104,69,45,102, +105,110,100,45,99,111,108,77,99,104,101,99,107,45,115,117,102,102,105,120,45, +99,97,108,108,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,102, +102,105,120,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,108, +111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,110, +100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,45, +112,97,116,104,115,1,27,112,97,116,104,45,108,105,115,116,45,115,116,114,105, +110,103,45,62,112,97,116,104,45,108,105,115,116,1,20,102,105,110,100,45,101, +120,101,99,117,116,97,98,108,101,45,112,97,116,104,73,101,109,98,101,100,100, +101,100,45,108,111,97,100,65,113,117,111,116,101,29,94,2,17,68,35,37,112, +97,114,97,109,122,11,64,108,111,111,112,69,101,120,101,99,45,102,105,108,101, +67,119,105,110,100,111,119,115,6,25,25,112,97,116,104,32,111,114,32,118,97, +108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,6,29,29,126,97,58, +32,105,110,118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116, +104,58,32,126,115,6,42,42,126,97,58,32,99,111,108,108,101,99,116,105,111, +110,32,110,111,116,32,102,111,117,110,100,58,32,126,115,32,105,110,32,97,110, +121,32,111,102,58,32,126,115,6,42,42,112,97,116,104,32,40,102,111,114,32, 97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45, -112,97,116,104,32,115,116,114,105,110,103,23,197,2,28,28,248,22,169,12,23, -195,2,249,22,140,8,248,22,170,12,23,197,2,2,21,249,22,140,8,247,22, -154,7,2,21,27,28,248,22,135,6,23,196,2,23,195,2,248,22,144,7,248, -22,173,12,23,197,2,28,249,22,156,13,0,21,35,114,120,34,94,91,92,92, -93,91,92,92,93,91,63,93,91,92,92,93,34,23,195,2,28,248,22,135,6, -195,248,22,176,12,195,194,27,248,22,174,6,23,195,1,249,22,177,12,248,22, -147,7,250,22,162,13,0,6,35,114,120,34,47,34,28,249,22,156,13,0,22, -35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,93,42,36, -34,23,201,2,23,199,1,250,22,162,13,0,19,35,114,120,34,91,32,46,93, -43,40,91,47,92,92,93,42,41,36,34,23,202,1,6,2,2,92,49,80,158, -42,35,2,21,28,248,22,135,6,194,248,22,176,12,194,193,87,94,28,27,248, -22,168,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6, -23,196,2,27,248,22,190,12,23,197,2,28,23,193,2,192,87,94,23,193,1, -248,22,191,12,23,197,2,11,12,250,22,170,8,23,196,2,2,22,23,197,2, -28,248,22,190,12,23,195,2,12,248,22,187,10,249,22,132,10,248,22,164,6, -250,22,183,6,2,23,23,200,1,23,201,1,247,22,23,87,94,28,27,248,22, -168,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23, -196,2,27,248,22,190,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248, -22,191,12,23,197,2,11,12,250,22,170,8,23,196,2,2,22,23,197,2,28, -248,22,190,12,23,195,2,12,248,22,187,10,249,22,132,10,248,22,164,6,250, -22,183,6,2,23,23,200,1,23,201,1,247,22,23,87,94,87,94,28,27,248, -22,168,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6, -23,196,2,27,248,22,190,12,23,197,2,28,23,193,2,192,87,94,23,193,1, -248,22,191,12,23,197,2,11,12,250,22,170,8,195,2,22,23,197,2,28,248, -22,190,12,23,195,2,12,248,22,187,10,249,22,132,10,248,22,164,6,250,22, -183,6,2,23,199,23,201,1,247,22,23,249,22,3,89,162,42,35,48,9,223, -2,33,35,196,248,22,187,10,249,22,162,10,23,196,1,247,22,23,87,94,87, -94,249,80,159,36,37,35,2,7,195,249,22,3,80,159,36,51,35,196,251,80, -159,38,40,35,2,7,32,0,89,162,42,35,43,9,222,33,37,197,198,32,39, -89,162,42,40,57,65,99,108,111,111,112,222,33,40,28,248,22,71,23,199,2, -87,94,23,198,1,248,23,196,1,251,22,183,6,2,24,23,199,1,28,248,22, -71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,186,12,23,204,1, -23,205,1,23,198,1,27,249,22,186,12,248,22,64,23,202,2,23,199,2,28, -248,22,181,12,23,194,2,27,250,22,1,22,186,12,23,197,1,23,202,2,28, -248,22,181,12,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202,1,28, -248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,183,6,2,24, -23,202,1,28,248,22,71,23,206,2,87,94,23,205,1,23,204,1,250,22,1, -22,186,12,23,207,1,23,208,1,23,201,1,27,249,22,186,12,248,22,64,23, -197,2,23,202,2,28,248,22,181,12,23,194,2,27,250,22,1,22,186,12,23, -197,1,204,28,248,22,181,12,193,192,253,2,39,203,204,205,206,23,15,248,22, -65,201,253,2,39,202,203,204,205,206,248,22,65,200,87,94,23,193,1,27,248, -22,65,23,201,1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,198,1, -251,22,183,6,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23,204,1, -23,203,1,250,22,1,22,186,12,23,206,1,23,207,1,23,200,1,27,249,22, -186,12,248,22,64,23,197,2,23,201,2,28,248,22,181,12,23,194,2,27,250, -22,1,22,186,12,23,197,1,203,28,248,22,181,12,193,192,253,2,39,202,203, -204,205,206,248,22,65,201,253,2,39,201,202,203,204,205,248,22,65,200,27,247, -22,145,13,253,2,39,198,199,200,201,202,198,87,95,28,28,248,22,169,12,23, -194,2,10,27,248,22,168,12,23,195,2,28,23,193,2,192,87,94,23,193,1, -28,248,22,135,6,23,195,2,27,248,22,190,12,23,196,2,28,23,193,2,192, -87,94,23,193,1,248,22,191,12,23,196,2,11,12,252,22,170,8,23,200,2, -2,25,34,23,198,2,23,199,2,28,28,248,22,135,6,23,195,2,10,248,22, -187,6,23,195,2,87,94,23,194,1,12,252,22,170,8,23,200,2,2,26,35, -23,198,2,23,199,1,91,159,37,11,90,161,37,34,11,248,22,189,12,23,197, -2,87,94,23,195,1,87,94,28,192,12,250,22,171,8,23,201,1,2,27,23, -199,1,249,22,7,194,195,91,159,36,11,90,161,36,34,11,87,95,28,28,248, -22,169,12,23,196,2,10,27,248,22,168,12,23,197,2,28,23,193,2,192,87, -94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,190,12,23,198,2,28, -23,193,2,192,87,94,23,193,1,248,22,191,12,23,198,2,11,12,252,22,170, -8,2,10,2,25,34,23,200,2,23,201,2,28,28,248,22,135,6,23,197,2, -10,248,22,187,6,23,197,2,12,252,22,170,8,2,10,2,26,35,23,200,2, -23,201,2,91,159,37,11,90,161,37,34,11,248,22,189,12,23,199,2,87,94, -23,195,1,87,94,28,23,193,2,12,250,22,171,8,2,10,2,27,23,201,2, -249,22,7,23,195,1,23,196,1,27,249,22,178,12,250,22,161,13,0,18,35, -114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,248,22,174,12, -23,201,1,28,248,22,135,6,23,203,2,249,22,147,7,23,204,1,8,63,23, -202,1,28,248,22,169,12,23,199,2,248,22,170,12,23,199,1,87,94,23,198, -1,247,22,171,12,28,248,22,168,12,194,249,22,186,12,195,194,192,91,159,36, -11,90,161,36,34,11,87,95,28,28,248,22,169,12,23,196,2,10,27,248,22, -168,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23, -197,2,27,248,22,190,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248, -22,191,12,23,198,2,11,12,252,22,170,8,2,11,2,25,34,23,200,2,23, -201,2,28,28,248,22,135,6,23,197,2,10,248,22,187,6,23,197,2,12,252, -22,170,8,2,11,2,26,35,23,200,2,23,201,2,91,159,37,11,90,161,37, -34,11,248,22,189,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12, -250,22,171,8,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27, -249,22,178,12,249,22,133,7,250,22,162,13,0,9,35,114,120,35,34,91,46, -93,34,248,22,174,12,23,203,1,6,1,1,95,28,248,22,135,6,23,202,2, -249,22,147,7,23,203,1,8,63,23,201,1,28,248,22,169,12,23,199,2,248, -22,170,12,23,199,1,87,94,23,198,1,247,22,171,12,28,248,22,168,12,194, -249,22,186,12,195,194,192,249,247,22,186,5,194,11,248,80,158,35,45,9,27, -247,22,147,13,249,80,158,37,46,28,23,195,2,27,248,22,152,7,6,11,11, -80,76,84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0,0,27, -28,23,196,1,250,22,186,12,248,22,143,13,69,97,100,100,111,110,45,100,105, -114,247,22,150,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248,80,159, -40,52,35,249,22,77,23,202,1,248,22,73,248,22,143,13,72,99,111,108,108, -101,99,116,115,45,100,105,114,28,23,194,2,249,22,63,23,196,1,23,195,1, -192,32,48,89,162,8,44,37,49,2,19,222,33,49,27,249,22,154,13,23,197, -2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22,88,23,195,2,27, -250,2,48,23,199,2,23,200,1,248,22,97,23,199,1,28,249,22,129,7,23, -196,2,2,28,249,22,77,197,194,87,94,23,196,1,249,22,63,248,22,177,12, -23,197,1,194,87,95,23,195,1,23,193,1,28,249,22,129,7,23,198,2,2, -28,249,22,77,195,9,87,94,23,194,1,249,22,63,248,22,177,12,23,199,1, -9,87,95,28,28,248,22,187,6,194,10,248,22,135,6,194,12,250,22,170,8, -2,14,6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115, -116,114,105,110,103,196,28,28,248,22,72,195,249,22,4,22,168,12,196,11,12, -250,22,170,8,2,14,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104, -115,197,250,2,48,197,195,28,248,22,135,6,197,248,22,146,7,197,196,32,51, -89,162,8,44,38,56,2,19,222,33,54,32,52,89,162,8,44,37,53,70,102, -111,117,110,100,45,101,120,101,99,222,33,53,28,23,193,2,91,159,37,11,90, -161,37,34,11,248,22,189,12,23,199,2,87,95,23,195,1,23,194,1,27,28, -23,198,2,27,248,22,130,13,23,201,2,28,249,22,142,8,23,195,2,23,202, -2,11,28,248,22,190,12,23,194,2,250,2,52,23,201,2,23,202,2,249,22, -186,12,23,200,2,23,198,1,250,2,52,23,201,2,23,202,2,23,196,1,11, -28,23,193,2,192,87,94,23,193,1,27,28,248,22,168,12,23,196,2,27,249, -22,186,12,23,198,2,23,201,2,28,28,248,22,181,12,193,10,248,22,180,12, -193,192,11,11,28,23,193,2,192,87,94,23,193,1,28,23,199,2,11,27,248, -22,130,13,23,202,2,28,249,22,142,8,23,195,2,23,203,1,11,28,248,22, -190,12,23,194,2,250,2,52,23,202,1,23,203,1,249,22,186,12,23,201,1, -23,198,1,250,2,52,201,202,195,194,28,248,22,71,23,197,2,11,27,248,22, -129,13,248,22,64,23,199,2,27,249,22,186,12,23,196,1,23,197,2,28,248, -22,180,12,23,194,2,250,2,52,198,199,195,87,94,23,193,1,27,248,22,65, -23,200,1,28,248,22,71,23,194,2,11,27,248,22,129,13,248,22,64,23,196, -2,27,249,22,186,12,23,196,1,23,200,2,28,248,22,180,12,23,194,2,250, -2,52,201,202,195,87,94,23,193,1,27,248,22,65,23,197,1,28,248,22,71, -23,194,2,11,27,248,22,129,13,248,22,64,195,27,249,22,186,12,23,196,1, -202,28,248,22,180,12,193,250,2,52,204,205,195,251,2,51,204,205,206,248,22, -65,199,87,95,28,27,248,22,168,12,23,196,2,28,23,193,2,192,87,94,23, -193,1,28,248,22,135,6,23,196,2,27,248,22,190,12,23,197,2,28,23,193, -2,192,87,94,23,193,1,248,22,191,12,23,197,2,11,12,250,22,170,8,2, -15,6,25,25,112,97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115, -97,110,115,32,110,117,108,41,23,197,2,28,28,23,195,2,28,27,248,22,168, -12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,197, -2,27,248,22,190,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22, -191,12,23,198,2,11,248,22,190,12,23,196,2,11,10,12,250,22,170,8,2, -15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97, -116,104,32,111,114,32,115,116,114,105,110,103,23,198,2,28,28,248,22,190,12, -23,195,2,91,159,37,11,90,161,37,34,11,248,22,189,12,23,198,2,249,22, -140,8,194,68,114,101,108,97,116,105,118,101,11,27,248,22,152,7,6,4,4, -80,65,84,72,251,2,51,23,199,1,23,200,1,23,201,1,28,23,197,2,27, -249,80,158,42,46,23,200,1,9,28,249,22,140,8,247,22,154,7,2,21,249, -22,63,248,22,177,12,5,1,46,23,195,1,192,9,27,248,22,129,13,23,196, -1,28,248,22,180,12,193,250,2,52,198,199,195,11,250,80,158,37,47,196,197, -11,250,80,158,37,47,196,11,11,87,94,249,22,191,5,247,22,168,4,195,248, -22,142,5,249,22,153,3,34,249,22,137,3,197,198,27,28,23,197,2,87,95, -23,196,1,23,195,1,23,197,1,87,94,23,197,1,27,248,22,143,13,2,20, -27,249,80,158,39,47,23,196,1,11,27,27,248,22,156,3,23,200,1,28,192, -192,34,27,27,248,22,156,3,23,202,1,28,192,192,34,249,22,185,4,23,197, -1,83,158,38,20,96,95,89,162,8,44,34,46,9,224,3,2,33,58,23,195, -1,23,196,1,27,248,22,172,4,23,195,1,248,80,159,37,53,35,193,159,34, -20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,99, -137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34,34,20,102, -159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2,4, -193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2, -1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11, -193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2, -1,2,15,193,30,2,1,2,16,193,30,2,18,1,20,112,97,114,97,109,101, -116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,18,1,23,101, -120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, -110,3,16,0,11,11,16,4,2,6,2,5,2,3,2,9,38,11,37,34,11, -16,11,9,9,9,9,9,9,9,9,9,9,9,16,11,2,8,2,7,2,16, -2,15,2,13,2,12,2,4,2,11,2,14,2,10,2,2,16,11,11,11,11, -11,11,11,11,11,11,11,11,16,11,2,8,2,7,2,16,2,15,2,13,2, -12,2,4,2,11,2,14,2,10,2,2,45,45,35,11,11,16,0,16,0,16, -0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,18,83,158,34, -16,2,89,162,42,35,47,2,19,223,0,33,29,80,159,34,53,35,83,158,34, -16,2,89,162,8,44,35,54,2,19,223,0,33,30,80,159,34,52,35,83,158, -34,16,2,89,162,8,44,35,43,9,223,0,33,31,80,159,34,51,35,83,158, -34,16,2,32,0,89,162,42,35,43,2,2,222,33,32,80,159,34,34,35,83, -158,34,16,2,249,22,137,6,7,92,7,92,80,159,34,35,35,83,158,34,16, -2,89,162,42,35,52,2,4,223,0,33,33,80,159,34,36,35,83,158,34,16, -2,32,0,89,162,42,36,48,2,5,222,33,34,80,159,34,37,35,83,158,34, -16,2,32,0,89,162,8,44,37,49,2,6,222,33,36,80,159,34,38,35,83, -158,34,16,2,89,162,8,45,36,46,2,7,223,0,33,38,80,159,34,39,35, -83,158,34,16,2,32,0,89,162,42,38,50,2,8,222,33,41,80,159,34,40, -35,83,158,34,16,2,32,0,89,162,42,37,48,2,9,222,33,42,80,159,34, -41,35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33,43,80,159, -34,42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222,33,44,80, -159,34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12,222,33,45, -80,159,34,44,35,83,158,34,16,2,83,158,37,20,95,95,2,13,89,162,42, -34,41,9,223,0,33,46,89,162,42,35,51,9,223,0,33,47,80,159,34,45, -35,83,158,34,16,2,27,248,22,150,13,248,22,146,7,27,28,249,22,140,8, -247,22,154,7,2,21,6,1,1,59,6,1,1,58,250,22,183,6,6,14,14, -40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89, -162,8,44,36,46,2,14,223,0,33,50,80,159,34,46,35,83,158,34,16,2, -83,158,37,20,95,96,2,15,89,162,8,44,37,52,9,223,0,33,55,89,162, -42,36,45,9,223,0,33,56,89,162,42,35,44,9,223,0,33,57,80,159,34, -47,35,83,158,34,16,2,89,162,42,37,50,2,16,223,0,33,59,80,159,34, -48,35,94,29,94,2,17,68,35,37,107,101,114,110,101,108,11,29,94,2,17, -69,35,37,109,105,110,45,115,116,120,11,9,9,9,34,0}; - EVAL_ONE_SIZED_STR((char *)expr, 5013); +112,97,116,104,32,115,116,114,105,110,103,6,21,21,115,116,114,105,110,103,32, +111,114,32,98,121,116,101,32,115,116,114,105,110,103,6,36,36,99,97,110,110, +111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,32,97,32, +114,111,111,116,32,112,97,116,104,58,32,5,0,27,20,14,159,80,158,36,50, +250,80,158,39,51,249,22,27,11,80,158,41,50,22,147,12,10,248,22,188,4, +23,196,2,28,248,22,166,5,23,194,2,12,87,94,248,22,143,8,23,194,1, +248,80,159,37,53,36,195,28,248,22,71,23,195,2,9,27,248,22,64,23,196, +2,27,28,248,22,128,13,23,195,2,23,194,1,28,248,22,191,12,23,195,2, +249,22,129,13,23,196,1,250,80,158,42,48,248,22,143,13,2,20,11,10,250, +80,158,40,48,248,22,143,13,2,20,23,197,1,10,28,23,193,2,249,22,63, +248,22,131,13,249,22,129,13,23,198,1,247,22,144,13,27,248,22,65,23,200, +1,28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,128, +13,23,195,2,23,194,1,28,248,22,191,12,23,195,2,249,22,129,13,23,196, +1,250,80,158,47,48,248,22,143,13,2,20,11,10,250,80,158,45,48,248,22, +143,13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,131,13,249,22, +129,13,23,198,1,247,22,144,13,248,80,159,45,52,36,248,22,65,23,199,1, +87,94,23,193,1,248,80,159,43,52,36,248,22,65,23,197,1,87,94,23,193, +1,27,248,22,65,23,198,1,28,248,22,71,23,194,2,9,27,248,22,64,23, +195,2,27,28,248,22,128,13,23,195,2,23,194,1,28,248,22,191,12,23,195, +2,249,22,129,13,23,196,1,250,80,158,45,48,248,22,143,13,2,20,11,10, +250,80,158,43,48,248,22,143,13,2,20,23,197,1,10,28,23,193,2,249,22, +63,248,22,131,13,249,22,129,13,23,198,1,247,22,144,13,248,80,159,43,52, +36,248,22,65,23,199,1,248,80,159,41,52,36,248,22,65,196,27,248,22,168, +12,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,195, +2,27,248,22,190,12,195,28,192,192,248,22,191,12,195,11,87,94,28,28,248, +22,169,12,23,195,2,10,27,248,22,168,12,23,196,2,28,23,193,2,192,87, +94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,190,12,23,197,2,28, +23,193,2,192,87,94,23,193,1,248,22,191,12,23,197,2,11,12,250,22,170, +8,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42,42, +112,97,116,104,32,40,102,111,114,32,97,110,121,32,115,121,115,116,101,109,41, +32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103, +23,197,2,28,28,248,22,169,12,23,195,2,249,22,140,8,248,22,170,12,23, +197,2,2,21,249,22,140,8,247,22,154,7,2,21,27,28,248,22,135,6,23, +196,2,23,195,2,248,22,144,7,248,22,173,12,23,197,2,28,249,22,156,13, +0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92, +93,34,23,195,2,28,248,22,135,6,195,248,22,176,12,195,194,27,248,22,174, +6,23,195,1,249,22,177,12,248,22,147,7,250,22,162,13,0,6,35,114,120, +34,47,34,28,249,22,156,13,0,22,35,114,120,34,91,47,92,92,93,91,46, +32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,162,13, +0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,34, +23,202,1,6,2,2,92,49,80,158,43,36,2,21,28,248,22,135,6,194,248, +22,176,12,194,193,87,94,28,27,248,22,168,12,23,196,2,28,23,193,2,192, +87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,190,12,23,197,2, +28,23,193,2,192,87,94,23,193,1,248,22,191,12,23,197,2,11,12,250,22, +170,8,23,196,2,2,22,23,197,2,28,248,22,190,12,23,195,2,12,248,22, +187,10,249,22,132,10,248,22,164,6,250,22,183,6,2,23,23,200,1,23,201, +1,247,22,23,87,94,28,27,248,22,168,12,23,196,2,28,23,193,2,192,87, +94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,190,12,23,197,2,28, +23,193,2,192,87,94,23,193,1,248,22,191,12,23,197,2,11,12,250,22,170, +8,23,196,2,2,22,23,197,2,28,248,22,190,12,23,195,2,12,248,22,187, +10,249,22,132,10,248,22,164,6,250,22,183,6,2,23,23,200,1,23,201,1, +247,22,23,87,94,87,94,28,27,248,22,168,12,23,196,2,28,23,193,2,192, +87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,190,12,23,197,2, +28,23,193,2,192,87,94,23,193,1,248,22,191,12,23,197,2,11,12,250,22, +170,8,195,2,22,23,197,2,28,248,22,190,12,23,195,2,12,248,22,187,10, +249,22,132,10,248,22,164,6,250,22,183,6,2,23,199,23,201,1,247,22,23, +249,22,3,89,162,8,44,36,49,9,223,2,33,34,196,248,22,187,10,249,22, +162,10,23,196,1,247,22,23,87,94,250,80,159,38,39,36,2,7,196,197,251, +80,159,39,41,36,2,7,32,0,89,162,8,44,36,44,9,222,33,36,197,198, +32,38,89,162,43,41,58,65,99,108,111,111,112,222,33,39,28,248,22,71,23, +199,2,87,94,23,198,1,248,23,196,1,251,22,183,6,2,24,23,199,1,28, +248,22,71,23,203,2,87,94,23,202,1,23,201,1,250,22,1,22,186,12,23, +204,1,23,205,1,23,198,1,27,249,22,186,12,248,22,64,23,202,2,23,199, +2,28,248,22,181,12,23,194,2,27,250,22,1,22,186,12,23,197,1,23,202, +2,28,248,22,181,12,23,194,2,192,87,94,23,193,1,27,248,22,65,23,202, +1,28,248,22,71,23,194,2,87,94,23,193,1,248,23,199,1,251,22,183,6, +2,24,23,202,1,28,248,22,71,23,206,2,87,94,23,205,1,23,204,1,250, +22,1,22,186,12,23,207,1,23,208,1,23,201,1,27,249,22,186,12,248,22, +64,23,197,2,23,202,2,28,248,22,181,12,23,194,2,27,250,22,1,22,186, +12,23,197,1,204,28,248,22,181,12,193,192,253,2,38,203,204,205,206,23,15, +248,22,65,201,253,2,38,202,203,204,205,206,248,22,65,200,87,94,23,193,1, +27,248,22,65,23,201,1,28,248,22,71,23,194,2,87,94,23,193,1,248,23, +198,1,251,22,183,6,2,24,23,201,1,28,248,22,71,23,205,2,87,94,23, +204,1,23,203,1,250,22,1,22,186,12,23,206,1,23,207,1,23,200,1,27, +249,22,186,12,248,22,64,23,197,2,23,201,2,28,248,22,181,12,23,194,2, +27,250,22,1,22,186,12,23,197,1,203,28,248,22,181,12,193,192,253,2,38, +202,203,204,205,206,248,22,65,201,253,2,38,201,202,203,204,205,248,22,65,200, +27,247,22,145,13,253,2,38,198,199,200,201,202,198,87,95,28,28,248,22,169, +12,23,194,2,10,27,248,22,168,12,23,195,2,28,23,193,2,192,87,94,23, +193,1,28,248,22,135,6,23,195,2,27,248,22,190,12,23,196,2,28,23,193, +2,192,87,94,23,193,1,248,22,191,12,23,196,2,11,12,252,22,170,8,23, +200,2,2,25,35,23,198,2,23,199,2,28,28,248,22,135,6,23,195,2,10, +248,22,187,6,23,195,2,87,94,23,194,1,12,252,22,170,8,23,200,2,2, +26,36,23,198,2,23,199,1,91,159,38,11,90,161,38,35,11,248,22,189,12, +23,197,2,87,94,23,195,1,87,94,28,192,12,250,22,171,8,23,201,1,2, +27,23,199,1,249,22,7,194,195,91,159,37,11,90,161,37,35,11,87,95,28, +28,248,22,169,12,23,196,2,10,27,248,22,168,12,23,197,2,28,23,193,2, +192,87,94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,190,12,23,198, +2,28,23,193,2,192,87,94,23,193,1,248,22,191,12,23,198,2,11,12,252, +22,170,8,2,10,2,25,35,23,200,2,23,201,2,28,28,248,22,135,6,23, +197,2,10,248,22,187,6,23,197,2,12,252,22,170,8,2,10,2,26,36,23, +200,2,23,201,2,91,159,38,11,90,161,38,35,11,248,22,189,12,23,199,2, +87,94,23,195,1,87,94,28,23,193,2,12,250,22,171,8,2,10,2,27,23, +201,2,249,22,7,23,195,1,23,196,1,27,249,22,178,12,250,22,161,13,0, +18,35,114,120,35,34,40,91,46,93,91,94,46,93,42,124,41,36,34,248,22, +174,12,23,201,1,28,248,22,135,6,23,203,2,249,22,147,7,23,204,1,8, +63,23,202,1,28,248,22,169,12,23,199,2,248,22,170,12,23,199,1,87,94, +23,198,1,247,22,171,12,28,248,22,168,12,194,249,22,186,12,195,194,192,91, +159,37,11,90,161,37,35,11,87,95,28,28,248,22,169,12,23,196,2,10,27, +248,22,168,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135, +6,23,197,2,27,248,22,190,12,23,198,2,28,23,193,2,192,87,94,23,193, +1,248,22,191,12,23,198,2,11,12,252,22,170,8,2,11,2,25,35,23,200, +2,23,201,2,28,28,248,22,135,6,23,197,2,10,248,22,187,6,23,197,2, +12,252,22,170,8,2,11,2,26,36,23,200,2,23,201,2,91,159,38,11,90, +161,38,35,11,248,22,189,12,23,199,2,87,94,23,195,1,87,94,28,23,193, +2,12,250,22,171,8,2,11,2,27,23,201,2,249,22,7,23,195,1,23,196, +1,27,249,22,178,12,249,22,133,7,250,22,162,13,0,9,35,114,120,35,34, +91,46,93,34,248,22,174,12,23,203,1,6,1,1,95,28,248,22,135,6,23, +202,2,249,22,147,7,23,203,1,8,63,23,201,1,28,248,22,169,12,23,199, +2,248,22,170,12,23,199,1,87,94,23,198,1,247,22,171,12,28,248,22,168, +12,194,249,22,186,12,195,194,192,249,247,22,186,5,194,11,248,80,158,36,46, +9,27,247,22,147,13,249,80,158,38,47,28,23,195,2,27,248,22,152,7,6, +11,11,80,76,84,67,79,76,76,69,67,84,83,28,192,192,6,0,0,6,0, +0,27,28,23,196,1,250,22,186,12,248,22,143,13,69,97,100,100,111,110,45, +100,105,114,247,22,150,7,6,8,8,99,111,108,108,101,99,116,115,11,27,248, +80,159,41,52,36,249,22,77,23,202,1,248,22,73,248,22,143,13,72,99,111, +108,108,101,99,116,115,45,100,105,114,28,23,194,2,249,22,63,23,196,1,23, +195,1,192,32,47,89,162,8,44,38,54,2,19,222,33,48,27,249,22,154,13, +23,197,2,23,198,2,28,23,193,2,87,94,23,196,1,27,248,22,88,23,195, +2,27,27,248,22,97,23,197,1,27,249,22,154,13,23,201,2,23,196,2,28, +23,193,2,87,94,23,194,1,27,248,22,88,23,195,2,27,250,2,47,23,203, +2,23,204,1,248,22,97,23,199,1,28,249,22,129,7,23,196,2,2,28,249, +22,77,23,202,2,194,249,22,63,248,22,177,12,23,197,1,23,195,1,87,95, +23,199,1,23,193,1,28,249,22,129,7,23,196,2,2,28,249,22,77,23,200, +2,9,249,22,63,248,22,177,12,23,197,1,9,28,249,22,129,7,23,196,2, +2,28,249,22,77,197,194,87,94,23,196,1,249,22,63,248,22,177,12,23,197, +1,194,87,94,23,193,1,28,249,22,129,7,23,198,2,2,28,249,22,77,195, +9,87,94,23,194,1,249,22,63,248,22,177,12,23,199,1,9,87,95,28,28, +248,22,187,6,194,10,248,22,135,6,194,12,250,22,170,8,2,14,6,21,21, +98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,105,110,103, +196,28,28,248,22,72,195,249,22,4,22,168,12,196,11,12,250,22,170,8,2, +14,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,250,2,47, +197,195,28,248,22,135,6,197,248,22,146,7,197,196,32,50,89,162,8,44,39, +57,2,19,222,33,53,32,51,89,162,8,44,38,54,70,102,111,117,110,100,45, +101,120,101,99,222,33,52,28,23,193,2,91,159,38,11,90,161,38,35,11,248, +22,189,12,23,199,2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248, +22,130,13,23,201,2,28,249,22,142,8,23,195,2,23,202,2,11,28,248,22, +190,12,23,194,2,250,2,51,23,201,2,23,202,2,249,22,186,12,23,200,2, +23,198,1,250,2,51,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192, +87,94,23,193,1,27,28,248,22,168,12,23,196,2,27,249,22,186,12,23,198, +2,23,201,2,28,28,248,22,181,12,193,10,248,22,180,12,193,192,11,11,28, +23,193,2,192,87,94,23,193,1,28,23,199,2,11,27,248,22,130,13,23,202, +2,28,249,22,142,8,23,195,2,23,203,1,11,28,248,22,190,12,23,194,2, +250,2,51,23,202,1,23,203,1,249,22,186,12,23,201,1,23,198,1,250,2, +51,201,202,195,194,28,248,22,71,23,197,2,11,27,248,22,129,13,248,22,64, +23,199,2,27,249,22,186,12,23,196,1,23,197,2,28,248,22,180,12,23,194, +2,250,2,51,198,199,195,87,94,23,193,1,27,248,22,65,23,200,1,28,248, +22,71,23,194,2,11,27,248,22,129,13,248,22,64,23,196,2,27,249,22,186, +12,23,196,1,23,200,2,28,248,22,180,12,23,194,2,250,2,51,201,202,195, +87,94,23,193,1,27,248,22,65,23,197,1,28,248,22,71,23,194,2,11,27, +248,22,129,13,248,22,64,195,27,249,22,186,12,23,196,1,202,28,248,22,180, +12,193,250,2,51,204,205,195,251,2,50,204,205,206,248,22,65,199,87,95,28, +27,248,22,168,12,23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22, +135,6,23,196,2,27,248,22,190,12,23,197,2,28,23,193,2,192,87,94,23, +193,1,248,22,191,12,23,197,2,11,12,250,22,170,8,2,15,6,25,25,112, +97,116,104,32,111,114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110, +117,108,41,23,197,2,28,28,23,195,2,28,27,248,22,168,12,23,197,2,28, +23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,190, +12,23,198,2,28,23,193,2,192,87,94,23,193,1,248,22,191,12,23,198,2, +11,248,22,190,12,23,196,2,11,10,12,250,22,170,8,2,15,6,29,29,35, +102,32,111,114,32,114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114, +32,115,116,114,105,110,103,23,198,2,28,28,248,22,190,12,23,195,2,91,159, +38,11,90,161,38,35,11,248,22,189,12,23,198,2,249,22,140,8,194,68,114, +101,108,97,116,105,118,101,11,27,248,22,152,7,6,4,4,80,65,84,72,251, +2,50,23,199,1,23,200,1,23,201,1,28,23,197,2,27,249,80,158,43,47, +23,200,1,9,28,249,22,140,8,247,22,154,7,2,21,249,22,63,248,22,177, +12,5,1,46,23,195,1,192,9,27,248,22,129,13,23,196,1,28,248,22,180, +12,193,250,2,51,198,199,195,11,250,80,158,38,48,196,197,11,250,80,158,38, +48,196,11,11,87,94,249,22,191,5,247,22,168,4,195,248,22,142,5,249,22, +153,3,35,249,22,137,3,197,198,27,28,23,197,2,87,95,23,196,1,23,195, +1,23,197,1,87,94,23,197,1,27,248,22,143,13,2,20,27,249,80,158,40, +48,23,196,1,11,27,27,248,22,156,3,23,200,1,28,192,192,35,27,27,248, +22,156,3,23,202,1,28,192,192,35,249,22,185,4,23,197,1,83,158,39,20, +96,95,89,162,8,44,35,47,9,224,3,2,33,57,23,195,1,23,196,1,27, +248,22,172,4,23,195,1,248,80,159,38,53,36,193,159,35,20,102,159,35,16, +1,20,24,65,98,101,103,105,110,16,0,83,158,41,20,99,137,67,35,37,117, +116,105,108,115,2,1,11,10,10,42,80,158,35,35,20,102,159,37,16,17,30, +2,1,2,2,193,30,2,1,2,3,193,30,2,1,2,4,193,30,2,1,2, +5,193,30,2,1,2,6,193,30,2,1,2,7,193,30,2,1,2,8,193,30, +2,1,2,9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1,2, +12,193,30,2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193,30, +2,1,2,16,193,30,2,18,1,20,112,97,114,97,109,101,116,101,114,105,122, +97,116,105,111,110,45,107,101,121,4,30,2,18,1,23,101,120,116,101,110,100, +45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,3,16,0,11, +11,16,4,2,6,2,5,2,3,2,9,39,11,38,35,11,16,11,9,9,9, +9,9,9,9,9,9,9,9,16,11,2,8,2,7,2,16,2,15,2,13,2, +12,2,4,2,11,2,14,2,10,2,2,16,11,11,11,11,11,11,11,11,11, +11,11,11,16,11,2,8,2,7,2,16,2,15,2,13,2,12,2,4,2,11, +2,14,2,10,2,2,46,46,36,11,11,16,0,16,0,16,0,35,35,11,11, +11,16,0,16,0,16,0,35,35,16,0,16,17,83,158,35,16,2,89,162,43, +36,48,2,19,223,0,33,29,80,159,35,53,36,83,158,35,16,2,89,162,8, +44,36,55,2,19,223,0,33,30,80,159,35,52,36,83,158,35,16,2,32,0, +89,162,43,36,44,2,2,222,33,31,80,159,35,35,36,83,158,35,16,2,249, +22,137,6,7,92,7,92,80,159,35,36,36,83,158,35,16,2,89,162,43,36, +53,2,4,223,0,33,32,80,159,35,37,36,83,158,35,16,2,32,0,89,162, +8,44,37,49,2,5,222,33,33,80,159,35,38,36,83,158,35,16,2,32,0, +89,162,8,44,38,50,2,6,222,33,35,80,159,35,39,36,83,158,35,16,2, +89,162,8,45,37,47,2,7,223,0,33,37,80,159,35,40,36,83,158,35,16, +2,32,0,89,162,43,39,51,2,8,222,33,40,80,159,35,41,36,83,158,35, +16,2,32,0,89,162,43,38,49,2,9,222,33,41,80,159,35,42,36,83,158, +35,16,2,32,0,89,162,43,37,52,2,10,222,33,42,80,159,35,43,36,83, +158,35,16,2,32,0,89,162,43,37,53,2,11,222,33,43,80,159,35,44,36, +83,158,35,16,2,32,0,89,162,43,36,43,2,12,222,33,44,80,159,35,45, +36,83,158,35,16,2,83,158,38,20,95,95,2,13,89,162,43,35,42,9,223, +0,33,45,89,162,43,36,52,9,223,0,33,46,80,159,35,46,36,83,158,35, +16,2,27,248,22,150,13,248,22,146,7,27,28,249,22,140,8,247,22,154,7, +2,21,6,1,1,59,6,1,1,58,250,22,183,6,6,14,14,40,91,94,126, +97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,89,162,8,44,37, +47,2,14,223,0,33,49,80,159,35,47,36,83,158,35,16,2,83,158,38,20, +95,96,2,15,89,162,8,44,38,53,9,223,0,33,54,89,162,43,37,46,9, +223,0,33,55,89,162,43,36,45,9,223,0,33,56,80,159,35,48,36,83,158, +35,16,2,89,162,43,38,51,2,16,223,0,33,58,80,159,35,49,36,94,29, +94,2,17,68,35,37,107,101,114,110,101,108,11,29,94,2,17,69,35,37,109, +105,110,45,115,116,120,11,9,9,9,35,0}; + EVAL_ONE_SIZED_STR((char *)expr, 5072); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,49,8,0,0,0,1,0,0,6,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,50,8,0,0,0,1,0,0,6,0, 19,0,34,0,48,0,62,0,76,0,111,0,0,0,243,0,0,0,65,113,117, 111,116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69, 35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97, 109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1, -68,35,37,107,101,114,110,101,108,11,98,10,34,11,8,169,209,97,159,2,2, -34,34,159,2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34, -34,16,0,159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0, -83,158,40,20,99,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10, -18,96,11,41,41,41,34,80,158,34,34,20,102,159,34,16,0,16,0,11,11, -16,0,34,11,37,34,11,11,16,0,16,0,16,0,34,34,35,11,11,16,0, -16,0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,0, +68,35,37,107,101,114,110,101,108,11,98,10,35,11,8,138,212,97,159,2,2, +35,35,159,2,3,35,35,159,2,4,35,35,159,2,5,35,35,159,2,6,35, +35,16,0,159,35,20,102,159,35,16,1,20,24,65,98,101,103,105,110,16,0, +83,158,41,20,99,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10, +18,96,11,42,42,42,35,80,158,35,35,20,102,159,35,16,0,16,0,11,11, +16,0,35,11,38,35,11,11,16,0,16,0,16,0,35,35,36,11,11,16,0, +16,0,16,0,35,35,11,11,11,16,0,16,0,16,0,35,35,16,0,16,0, 98,2,6,2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2, -4,2,3,2,2,9,9,9,34,0}; +4,2,3,2,2,9,9,9,35,0}; EVAL_ONE_SIZED_STR((char *)expr, 282); } { - static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,49,53,0,0,0,1,0,0,3,0, + static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,50,50,53,0,0,0,1,0,0,3,0, 14,0,41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184, 0,200,0,223,0,3,1,8,1,13,1,18,1,23,1,28,1,59,1,63,1, 71,1,79,1,87,1,190,1,235,1,255,1,34,2,69,2,103,2,113,2,160, 2,170,2,177,2,76,4,89,4,108,4,227,4,239,4,143,5,157,5,18,6, -24,6,38,6,65,6,150,6,152,6,213,6,131,12,190,12,222,12,0,0,160, +24,6,38,6,65,6,150,6,152,6,213,6,132,12,191,12,223,12,0,0,160, 15,0,0,29,11,11,70,100,108,108,45,115,117,102,102,105,120,1,25,100,101, 102,97,117,108,116,45,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108, 101,100,65,113,117,111,116,101,29,94,2,4,67,35,37,117,116,105,108,115,11, @@ -381,73 +384,73 @@ 3,46,122,111,64,119,101,97,107,64,108,111,111,112,1,29,115,116,97,110,100, 97,114,100,45,109,111,100,117,108,101,45,110,97,109,101,45,114,101,115,111,108, 118,101,114,63,108,105,98,67,105,103,110,111,114,101,100,249,22,14,195,80,158, -36,44,249,80,159,36,47,35,195,10,27,28,23,195,2,28,249,22,140,8,23, -197,2,80,158,37,45,87,94,23,195,1,80,158,35,46,27,248,22,151,4,23, -197,2,28,248,22,168,12,23,194,2,91,159,37,11,90,161,37,34,11,248,22, -189,12,23,197,1,87,95,83,160,36,11,80,158,39,45,198,83,160,36,11,80, -158,39,46,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,187, -5,28,192,192,247,22,144,13,20,14,159,80,158,34,38,250,80,158,37,39,249, -22,27,11,80,158,39,38,22,187,5,28,248,22,168,12,23,198,2,23,197,1, +37,45,249,80,159,37,48,36,195,10,27,28,23,195,2,28,249,22,140,8,23, +197,2,80,158,38,46,87,94,23,195,1,80,158,36,47,27,248,22,151,4,23, +197,2,28,248,22,168,12,23,194,2,91,159,38,11,90,161,38,35,11,248,22, +189,12,23,197,1,87,95,83,160,37,11,80,158,40,46,198,83,160,37,11,80, +158,40,47,192,192,11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,187, +5,28,192,192,247,22,144,13,20,14,159,80,158,35,39,250,80,158,38,40,249, +22,27,11,80,158,40,39,22,187,5,28,248,22,168,12,23,198,2,23,197,1, 87,94,23,197,1,247,22,144,13,247,194,250,22,186,12,23,197,1,23,199,1, -249,80,158,41,37,23,198,1,2,18,252,22,186,12,23,199,1,23,201,1,6, -6,6,110,97,116,105,118,101,247,22,155,7,249,80,158,43,37,23,200,1,80, -158,43,34,87,94,23,194,1,27,23,194,1,27,250,22,139,13,196,11,32,0, -89,162,8,44,34,39,9,222,11,28,192,249,22,63,195,194,11,27,248,23,195, -1,23,196,1,27,250,22,139,13,196,11,32,0,89,162,8,44,34,39,9,222, +249,80,158,42,38,23,198,1,2,18,252,22,186,12,23,199,1,23,201,1,6, +6,6,110,97,116,105,118,101,247,22,155,7,249,80,158,44,38,23,200,1,80, +158,44,35,87,94,23,194,1,27,23,194,1,27,250,22,139,13,196,11,32,0, +89,162,8,44,35,40,9,222,11,28,192,249,22,63,195,194,11,27,248,23,195, +1,23,196,1,27,250,22,139,13,196,11,32,0,89,162,8,44,35,40,9,222, 11,28,192,249,22,63,195,194,11,249,247,22,149,13,248,22,64,195,195,27,250, -22,186,12,23,198,1,23,200,1,249,80,158,42,37,23,199,1,2,18,27,250, -22,139,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249,22,63, +22,186,12,23,198,1,23,200,1,249,80,158,43,38,23,199,1,2,18,27,250, +22,139,13,196,11,32,0,89,162,8,44,35,40,9,222,11,28,192,249,22,63, 195,194,11,249,247,22,185,5,248,22,64,195,195,249,247,22,185,5,194,195,87, -94,28,248,80,158,35,36,23,195,2,12,250,22,170,8,77,108,111,97,100,47, +94,28,248,80,158,36,37,23,195,2,12,250,22,170,8,77,108,111,97,100,47, 117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97,116,104,32,111, 114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,103,23,197, -2,91,159,40,11,90,161,35,34,11,28,248,22,128,13,23,201,2,23,200,1, +2,91,159,41,11,90,161,36,35,11,28,248,22,128,13,23,201,2,23,200,1, 27,247,22,187,5,28,23,193,2,249,22,129,13,23,203,1,23,195,1,200,90, -161,37,35,11,248,22,189,12,23,194,2,87,94,23,196,1,90,161,35,38,11, +161,38,36,11,248,22,189,12,23,194,2,87,94,23,196,1,90,161,36,39,11, 28,249,22,140,8,23,196,2,68,114,101,108,97,116,105,118,101,87,94,23,194, -1,2,17,23,194,1,90,161,35,39,11,247,22,146,13,27,89,162,42,35,48, -62,122,111,225,7,5,3,33,28,27,89,162,42,35,50,9,225,8,6,4,33, -29,27,249,22,5,89,162,8,44,35,46,9,223,5,33,30,23,203,2,27,28, -23,195,2,27,249,22,5,83,158,38,20,96,94,89,162,8,44,35,46,9,223, +1,2,17,23,194,1,90,161,36,40,11,247,22,146,13,27,89,162,43,36,49, +62,122,111,225,7,5,3,33,28,27,89,162,43,36,51,9,225,8,6,4,33, +29,27,249,22,5,89,162,8,44,36,47,9,223,5,33,30,23,203,2,27,28, +23,195,2,27,249,22,5,83,158,39,20,96,94,89,162,8,44,36,47,9,223, 5,33,31,23,198,1,23,205,2,27,28,23,196,2,11,193,28,192,192,28,193, 28,23,196,2,28,249,22,149,3,248,22,65,196,248,22,65,23,199,2,193,11, -11,11,87,94,23,195,1,11,28,23,193,2,249,80,159,46,53,35,202,89,162, -42,34,44,9,224,14,2,33,32,87,94,23,193,1,27,28,23,197,1,27,249, -22,5,83,158,38,20,96,94,89,162,8,44,35,49,9,225,14,12,10,33,33, +11,11,87,94,23,195,1,11,28,23,193,2,249,80,159,47,54,36,202,89,162, +43,35,45,9,224,14,2,33,32,87,94,23,193,1,27,28,23,197,1,27,249, +22,5,83,158,39,20,96,94,89,162,8,44,36,50,9,225,14,12,10,33,33, 23,203,1,23,206,1,27,28,196,11,193,28,192,192,28,193,28,196,28,249,22, -149,3,248,22,65,196,248,22,65,199,193,11,11,11,11,28,192,249,80,159,47, -53,35,203,89,162,42,34,44,9,224,15,2,33,34,249,80,159,47,53,35,203, -89,162,42,34,43,9,224,15,7,33,35,32,37,89,162,8,44,35,53,2,20, +149,3,248,22,65,196,248,22,65,199,193,11,11,11,11,28,192,249,80,159,48, +54,36,203,89,162,43,35,45,9,224,15,2,33,34,249,80,159,48,54,36,203, +89,162,43,35,44,9,224,15,7,33,35,32,37,89,162,8,44,36,54,2,20, 222,33,39,0,17,35,114,120,34,94,40,46,42,63,41,47,40,46,42,41,36, 34,27,249,22,154,13,2,38,23,196,2,28,23,193,2,87,94,23,194,1,249, 22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,249,22,154,13,2, 38,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196, 2,27,248,22,97,23,197,1,27,249,22,154,13,2,38,23,196,2,28,23,193, 2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,248,2,37,248,22,97, -23,197,1,248,22,73,194,248,22,73,194,248,22,73,194,32,40,89,162,42,35, -53,2,20,222,33,41,28,248,22,71,248,22,65,23,195,2,249,22,7,9,248, -22,64,195,91,159,36,11,90,161,36,34,11,27,248,22,65,23,197,2,28,248, -22,71,248,22,65,23,195,2,249,22,7,9,248,22,64,23,196,1,91,159,36, -11,90,161,36,34,11,27,248,22,65,23,197,2,28,248,22,71,248,22,65,23, -195,2,249,22,7,9,248,22,64,23,196,1,91,159,36,11,90,161,36,34,11, +23,197,1,248,22,73,194,248,22,73,194,248,22,73,194,32,40,89,162,43,36, +54,2,20,222,33,41,28,248,22,71,248,22,65,23,195,2,249,22,7,9,248, +22,64,195,91,159,37,11,90,161,37,35,11,27,248,22,65,23,197,2,28,248, +22,71,248,22,65,23,195,2,249,22,7,9,248,22,64,23,196,1,91,159,37, +11,90,161,37,35,11,27,248,22,65,23,197,2,28,248,22,71,248,22,65,23, +195,2,249,22,7,9,248,22,64,23,196,1,91,159,37,11,90,161,37,35,11, 248,2,40,248,22,65,23,197,2,249,22,7,249,22,63,248,22,64,23,200,1, 23,197,1,23,196,1,249,22,7,249,22,63,248,22,64,23,200,1,23,197,1, 23,196,1,249,22,7,249,22,63,248,22,64,23,200,1,23,197,1,195,27,248, 2,37,23,195,1,28,194,192,248,2,40,193,87,95,28,248,22,149,4,195,12, 250,22,170,8,2,21,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100, 117,108,101,45,112,97,116,104,197,28,24,193,2,248,24,194,1,195,87,94,23, -193,1,12,27,27,250,22,126,80,158,40,41,248,22,172,13,247,22,151,11,11, +193,1,12,27,27,250,22,126,80,158,41,42,248,22,172,13,247,22,151,11,11, 28,23,193,2,192,87,94,23,193,1,27,247,22,120,87,94,250,22,125,80,158, -41,41,248,22,172,13,247,22,151,11,195,192,250,22,125,195,198,66,97,116,116, +42,42,248,22,172,13,247,22,151,11,195,192,250,22,125,195,198,66,97,116,116, 97,99,104,251,211,197,198,199,10,28,192,250,22,169,8,11,196,195,248,22,167, 8,194,28,249,22,141,6,194,6,1,1,46,2,17,28,249,22,141,6,194,6, 2,2,46,46,62,117,112,192,28,249,22,142,8,248,22,65,23,200,2,23,197, 1,28,249,22,140,8,248,22,64,23,200,2,23,196,1,251,22,167,8,2,21, 6,26,26,99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97, 116,32,126,101,58,32,126,101,23,200,1,249,22,2,22,65,248,22,78,249,22, -63,23,206,1,23,202,1,12,12,247,192,20,14,159,80,158,38,43,249,22,63, -247,22,151,11,23,197,1,20,14,159,80,158,38,38,250,80,158,41,39,249,22, -27,11,80,158,43,38,22,133,4,23,196,1,249,247,22,186,5,23,198,1,248, +63,23,206,1,23,202,1,12,12,247,192,20,14,159,80,158,39,44,249,22,63, +247,22,151,11,23,197,1,20,14,159,80,158,39,39,250,80,158,42,40,249,22, +27,11,80,158,44,39,22,133,4,23,196,1,249,247,22,186,5,23,198,1,248, 22,52,248,22,172,12,23,198,1,87,94,28,28,248,22,168,12,23,197,2,10, 248,22,154,4,23,197,2,12,28,23,198,2,250,22,169,8,11,6,15,15,98, 97,100,32,109,111,100,117,108,101,32,112,97,116,104,23,201,2,250,22,170,8, @@ -455,106 +458,106 @@ 97,116,104,23,199,2,28,28,248,22,61,23,197,2,249,22,140,8,248,22,64, 23,199,2,2,4,11,248,22,150,4,248,22,88,197,28,28,248,22,61,23,197, 2,249,22,140,8,248,22,64,23,199,2,66,112,108,97,110,101,116,11,87,94, -28,207,12,20,14,159,80,158,36,38,250,80,158,39,39,249,22,27,11,80,158, -41,38,22,151,11,23,197,1,90,161,35,34,10,249,22,134,4,21,94,2,22, +28,207,12,20,14,159,80,158,37,39,250,80,158,40,40,249,22,27,11,80,158, +42,39,22,151,11,23,197,1,90,161,36,35,10,249,22,134,4,21,94,2,22, 6,18,18,112,108,97,110,101,116,47,114,101,115,111,108,118,101,114,46,115,115, 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,251,211,199,200,201,202,87,94,23,193,1,27, -89,162,42,35,44,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110, -45,101,114,114,223,6,33,45,27,28,248,22,51,23,199,2,27,250,22,126,80, -158,42,42,249,22,63,23,204,2,247,22,145,13,11,28,23,193,2,192,87,94, -23,193,1,91,159,36,11,90,161,36,34,11,249,80,159,43,47,35,248,22,54, -23,204,2,11,27,251,80,158,46,49,2,21,23,202,1,28,248,22,71,23,199, -2,23,199,2,248,22,64,23,199,2,28,248,22,71,23,199,2,9,248,22,65, -23,199,2,249,22,186,12,23,195,1,28,248,22,71,23,197,1,87,94,23,197, -1,6,7,7,109,97,105,110,46,115,115,249,22,158,6,23,199,1,6,3,3, -46,115,115,28,248,22,135,6,23,199,2,87,94,23,194,1,27,248,80,159,40, -54,35,23,201,2,27,250,22,126,80,158,43,42,249,22,63,23,205,2,23,199, -2,11,28,23,193,2,192,87,94,23,193,1,91,159,36,11,90,161,36,34,11, -249,80,159,44,47,35,23,204,2,11,250,22,1,22,186,12,23,199,1,249,22, -77,249,22,2,32,0,89,162,8,44,35,42,9,222,33,46,23,200,1,248,22, -73,23,200,1,28,248,22,168,12,23,199,2,87,94,23,194,1,28,248,22,191, -12,23,199,2,23,198,2,248,22,73,6,26,26,32,40,97,32,112,97,116,104, -32,109,117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249,22, -140,8,248,22,64,23,201,2,2,22,27,250,22,126,80,158,42,42,249,22,63, -23,204,2,247,22,145,13,11,28,23,193,2,192,87,94,23,193,1,91,159,37, -11,90,161,36,34,11,249,80,159,44,47,35,248,22,88,23,205,2,11,90,161, -35,36,11,28,248,22,71,248,22,90,23,204,2,28,248,22,71,23,194,2,249, -22,156,13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27,28, -23,197,2,249,22,77,28,248,22,71,248,22,90,23,208,2,21,93,6,5,5, -109,122,108,105,98,249,22,1,22,77,249,22,2,80,159,50,55,35,248,22,90, -23,211,2,23,197,2,28,248,22,71,23,196,2,248,22,73,23,197,2,23,195, -2,251,80,158,48,49,2,21,23,204,1,248,22,64,23,198,2,248,22,65,23, -198,1,249,22,186,12,23,195,1,28,23,198,1,87,94,23,196,1,23,197,1, -28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115, -115,28,249,22,156,13,0,8,35,114,120,34,91,46,93,34,23,199,2,23,197, -1,249,22,158,6,23,199,1,6,3,3,46,115,115,28,249,22,140,8,248,22, -64,23,201,2,64,102,105,108,101,249,22,129,13,248,22,88,23,201,2,248,80, -159,41,54,35,23,202,2,12,87,94,28,28,248,22,168,12,23,194,2,10,248, -22,157,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,169,8,67, -114,101,113,117,105,114,101,249,22,183,6,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,64,23,199,2,6, -0,0,23,203,1,87,94,23,200,1,250,22,170,8,2,21,249,22,183,6,6, -13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248,22, -64,23,199,2,6,0,0,23,201,2,27,28,248,22,157,7,23,195,2,249,22, -162,7,23,196,2,34,249,22,131,13,248,22,132,13,23,197,2,11,27,28,248, -22,157,7,23,196,2,249,22,162,7,23,197,2,35,248,80,158,41,50,23,195, -2,91,159,37,11,90,161,37,34,11,28,248,22,157,7,23,199,2,250,22,7, -2,23,249,22,162,7,23,203,2,36,2,23,248,22,189,12,23,198,2,87,95, -23,195,1,23,193,1,27,28,248,22,157,7,23,200,2,249,22,162,7,23,201, -2,37,249,80,158,46,51,23,197,2,5,0,27,28,248,22,157,7,23,201,2, -249,22,162,7,23,202,2,38,248,22,150,4,23,200,2,27,27,250,22,126,80, -158,50,41,248,22,172,13,247,22,151,11,11,28,23,193,2,192,87,94,23,193, -1,27,247,22,120,87,94,250,22,125,80,158,51,41,248,22,172,13,247,22,151, -11,195,192,87,95,28,23,209,1,27,250,22,126,23,197,2,197,11,28,23,193, -1,12,87,95,27,27,28,248,22,17,80,158,50,44,80,158,49,44,247,22,19, -250,22,25,248,22,23,23,197,2,80,158,52,43,23,196,1,27,247,22,151,11, -249,22,3,83,158,38,20,96,94,89,162,8,44,35,53,9,226,12,11,2,3, -33,47,23,195,1,23,196,1,248,28,248,22,17,80,158,49,44,32,0,89,162, -42,35,40,9,222,33,48,80,159,48,56,35,89,162,42,34,49,9,227,14,9, -8,4,3,33,49,250,22,125,23,197,1,197,10,12,28,28,248,22,157,7,23, -202,1,11,27,248,22,135,6,23,208,2,28,192,192,28,248,22,61,23,208,2, -249,22,140,8,248,22,64,23,210,2,2,22,11,250,22,125,80,158,49,42,28, -248,22,135,6,23,210,2,249,22,63,23,211,1,248,80,159,52,54,35,23,213, -1,87,94,23,210,1,249,22,63,23,211,1,247,22,145,13,252,22,159,7,23, -208,1,23,207,1,23,205,1,23,203,1,201,12,193,91,159,36,10,90,161,35, -34,10,11,90,161,35,35,10,83,158,37,20,95,96,2,21,89,162,8,44,35, -49,9,224,2,0,33,43,89,162,42,37,47,9,223,1,33,44,89,162,42,38, -8,30,9,225,2,3,0,33,50,208,87,95,248,22,132,4,248,80,158,36,48, -247,22,151,11,248,22,186,5,80,158,35,35,248,22,142,12,80,159,35,40,35, -159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,40, -20,99,137,66,35,37,98,111,111,116,2,1,11,10,10,36,80,158,34,34,20, -102,159,38,16,19,30,2,1,2,2,193,30,2,1,2,3,193,30,2,5,72, -112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,5,75,112,97,116,104, -45,97,100,100,45,115,117,102,102,105,120,7,30,2,6,1,20,112,97,114,97, -109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,6,1, -23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116, -105,111,110,3,30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2,9, -193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30,2, -1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193,30,2,5,69,45, -102,105,110,100,45,99,111,108,0,30,2,5,76,110,111,114,109,97,108,45,99, -97,115,101,45,112,97,116,104,6,30,2,5,79,112,97,116,104,45,114,101,112, -108,97,99,101,45,115,117,102,102,105,120,9,30,2,1,2,16,193,16,0,11, -11,16,11,2,10,2,11,2,8,2,9,2,12,2,13,2,3,2,7,2,2, -2,15,2,14,45,11,37,34,11,16,1,9,16,1,2,16,16,1,11,16,1, -2,16,35,35,35,11,11,16,0,16,0,16,0,34,34,11,11,11,16,0,16, -0,16,0,34,34,16,0,16,16,83,158,34,16,2,89,162,42,35,43,9,223, -0,33,24,80,159,34,56,35,83,158,34,16,2,89,162,8,44,35,43,9,223, -0,33,25,80,159,34,55,35,83,158,34,16,2,89,162,42,35,47,67,103,101, -116,45,100,105,114,223,0,33,26,80,159,34,54,35,83,158,34,16,2,89,162, -42,36,47,68,119,105,116,104,45,100,105,114,223,0,33,27,80,159,34,53,35, -83,158,34,16,2,248,22,154,7,69,115,111,45,115,117,102,102,105,120,80,159, -34,34,35,83,158,34,16,2,89,162,42,36,58,2,3,223,0,33,36,80,159, -34,35,35,83,158,34,16,2,32,0,89,162,8,44,35,40,2,7,222,192,80, -159,34,40,35,83,158,34,16,2,248,22,120,2,19,80,159,34,41,35,83,158, -34,16,2,249,22,120,2,19,65,101,113,117,97,108,80,159,34,42,35,83,158, -34,16,2,247,22,59,80,159,34,43,35,83,158,34,16,2,248,22,18,74,109, -111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,34,44,35,83,158,34, -16,2,11,80,158,34,45,83,158,34,16,2,11,80,158,34,46,83,158,34,16, -2,32,0,89,162,42,36,43,2,14,222,33,42,80,159,34,47,35,83,158,34, -16,2,89,162,8,44,35,43,2,15,223,0,33,51,80,159,34,48,35,83,158, -34,16,2,89,162,42,34,42,2,16,223,0,33,52,80,159,34,52,35,95,29, +89,162,8,44,36,45,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111, +110,45,101,114,114,223,6,33,45,27,28,248,22,51,23,199,2,27,250,22,126, +80,158,43,43,249,22,63,23,204,2,247,22,145,13,11,28,23,193,2,192,87, +94,23,193,1,91,159,37,11,90,161,37,35,11,249,80,159,44,48,36,248,22, +54,23,204,2,11,27,251,80,158,47,50,2,21,23,202,1,28,248,22,71,23, +199,2,23,199,2,248,22,64,23,199,2,28,248,22,71,23,199,2,9,248,22, +65,23,199,2,249,22,186,12,23,195,1,28,248,22,71,23,197,1,87,94,23, +197,1,6,7,7,109,97,105,110,46,115,115,249,22,158,6,23,199,1,6,3, +3,46,115,115,28,248,22,135,6,23,199,2,87,94,23,194,1,27,248,80,159, +41,55,36,23,201,2,27,250,22,126,80,158,44,43,249,22,63,23,205,2,23, +199,2,11,28,23,193,2,192,87,94,23,193,1,91,159,37,11,90,161,37,35, +11,249,80,159,45,48,36,23,204,2,11,250,22,1,22,186,12,23,199,1,249, +22,77,249,22,2,32,0,89,162,8,44,36,43,9,222,33,46,23,200,1,248, +22,73,23,200,1,28,248,22,168,12,23,199,2,87,94,23,194,1,28,248,22, +191,12,23,199,2,23,198,2,248,22,73,6,26,26,32,40,97,32,112,97,116, +104,32,109,117,115,116,32,98,101,32,97,98,115,111,108,117,116,101,41,28,249, +22,140,8,248,22,64,23,201,2,2,22,27,250,22,126,80,158,43,43,249,22, +63,23,204,2,247,22,145,13,11,28,23,193,2,192,87,94,23,193,1,91,159, +38,11,90,161,37,35,11,249,80,159,45,48,36,248,22,88,23,205,2,11,90, +161,36,37,11,28,248,22,71,248,22,90,23,204,2,28,248,22,71,23,194,2, +249,22,156,13,0,8,35,114,120,34,91,46,93,34,23,196,2,11,10,27,27, +28,23,197,2,249,22,77,28,248,22,71,248,22,90,23,208,2,21,93,6,5, +5,109,122,108,105,98,249,22,1,22,77,249,22,2,80,159,51,56,36,248,22, +90,23,211,2,23,197,2,28,248,22,71,23,196,2,248,22,73,23,197,2,23, +195,2,251,80,158,49,50,2,21,23,204,1,248,22,64,23,198,2,248,22,65, +23,198,1,249,22,186,12,23,195,1,28,23,198,1,87,94,23,196,1,23,197, +1,28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46, +115,115,28,249,22,156,13,0,8,35,114,120,34,91,46,93,34,23,199,2,23, +197,1,249,22,158,6,23,199,1,6,3,3,46,115,115,28,249,22,140,8,248, +22,64,23,201,2,64,102,105,108,101,249,22,129,13,248,22,88,23,201,2,248, +80,159,42,55,36,23,202,2,12,87,94,28,28,248,22,168,12,23,194,2,10, +248,22,157,7,23,194,2,87,94,23,200,1,12,28,23,200,2,250,22,169,8, +67,114,101,113,117,105,114,101,249,22,183,6,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,64,23,199,2, +6,0,0,23,203,1,87,94,23,200,1,250,22,170,8,2,21,249,22,183,6, +6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,23,198,2,248, +22,64,23,199,2,6,0,0,23,201,2,27,28,248,22,157,7,23,195,2,249, +22,162,7,23,196,2,35,249,22,131,13,248,22,132,13,23,197,2,11,27,28, +248,22,157,7,23,196,2,249,22,162,7,23,197,2,36,248,80,158,42,51,23, +195,2,91,159,38,11,90,161,38,35,11,28,248,22,157,7,23,199,2,250,22, +7,2,23,249,22,162,7,23,203,2,37,2,23,248,22,189,12,23,198,2,87, +95,23,195,1,23,193,1,27,28,248,22,157,7,23,200,2,249,22,162,7,23, +201,2,38,249,80,158,47,52,23,197,2,5,0,27,28,248,22,157,7,23,201, +2,249,22,162,7,23,202,2,39,248,22,150,4,23,200,2,27,27,250,22,126, +80,158,51,42,248,22,172,13,247,22,151,11,11,28,23,193,2,192,87,94,23, +193,1,27,247,22,120,87,94,250,22,125,80,158,52,42,248,22,172,13,247,22, +151,11,195,192,87,95,28,23,209,1,27,250,22,126,23,197,2,197,11,28,23, +193,1,12,87,95,27,27,28,248,22,17,80,158,51,45,80,158,50,45,247,22, +19,250,22,25,248,22,23,23,197,2,80,158,53,44,23,196,1,27,247,22,151, +11,249,22,3,83,158,39,20,96,94,89,162,8,44,36,54,9,226,12,11,2, +3,33,47,23,195,1,23,196,1,248,28,248,22,17,80,158,50,45,32,0,89, +162,43,36,41,9,222,33,48,80,159,49,57,36,89,162,43,35,50,9,227,14, +9,8,4,3,33,49,250,22,125,23,197,1,197,10,12,28,28,248,22,157,7, +23,202,1,11,27,248,22,135,6,23,208,2,28,192,192,28,248,22,61,23,208, +2,249,22,140,8,248,22,64,23,210,2,2,22,11,250,22,125,80,158,50,43, +28,248,22,135,6,23,210,2,249,22,63,23,211,1,248,80,159,53,55,36,23, +213,1,87,94,23,210,1,249,22,63,23,211,1,247,22,145,13,252,22,159,7, +23,208,1,23,207,1,23,205,1,23,203,1,201,12,193,91,159,37,10,90,161, +36,35,10,11,90,161,36,36,10,83,158,38,20,95,96,2,21,89,162,8,44, +36,50,9,224,2,0,33,43,89,162,43,38,48,9,223,1,33,44,89,162,43, +39,8,30,9,225,2,3,0,33,50,208,87,95,248,22,132,4,248,80,158,37, +49,247,22,151,11,248,22,186,5,80,158,36,36,248,22,142,12,80,159,36,41, +36,159,35,20,102,159,35,16,1,20,24,65,98,101,103,105,110,16,0,83,158, +41,20,99,137,66,35,37,98,111,111,116,2,1,11,10,10,37,80,158,35,35, +20,102,159,39,16,19,30,2,1,2,2,193,30,2,1,2,3,193,30,2,5, +72,112,97,116,104,45,115,116,114,105,110,103,63,10,30,2,5,75,112,97,116, +104,45,97,100,100,45,115,117,102,102,105,120,7,30,2,6,1,20,112,97,114, +97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,4,30,2,6, +1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97, +116,105,111,110,3,30,2,1,2,7,193,30,2,1,2,8,193,30,2,1,2, +9,193,30,2,1,2,10,193,30,2,1,2,11,193,30,2,1,2,12,193,30, +2,1,2,13,193,30,2,1,2,14,193,30,2,1,2,15,193,30,2,5,69, +45,102,105,110,100,45,99,111,108,0,30,2,5,76,110,111,114,109,97,108,45, +99,97,115,101,45,112,97,116,104,6,30,2,5,79,112,97,116,104,45,114,101, +112,108,97,99,101,45,115,117,102,102,105,120,9,30,2,1,2,16,193,16,0, +11,11,16,11,2,10,2,11,2,8,2,9,2,12,2,13,2,3,2,7,2, +2,2,15,2,14,46,11,38,35,11,16,1,9,16,1,2,16,16,1,11,16, +1,2,16,36,36,36,11,11,16,0,16,0,16,0,35,35,11,11,11,16,0, +16,0,16,0,35,35,16,0,16,16,83,158,35,16,2,89,162,43,36,44,9, +223,0,33,24,80,159,35,57,36,83,158,35,16,2,89,162,43,36,44,9,223, +0,33,25,80,159,35,56,36,83,158,35,16,2,89,162,43,36,48,67,103,101, +116,45,100,105,114,223,0,33,26,80,159,35,55,36,83,158,35,16,2,89,162, +43,37,48,68,119,105,116,104,45,100,105,114,223,0,33,27,80,159,35,54,36, +83,158,35,16,2,248,22,154,7,69,115,111,45,115,117,102,102,105,120,80,159, +35,35,36,83,158,35,16,2,89,162,43,37,59,2,3,223,0,33,36,80,159, +35,36,36,83,158,35,16,2,32,0,89,162,8,44,36,41,2,7,222,192,80, +159,35,41,36,83,158,35,16,2,248,22,120,2,19,80,159,35,42,36,83,158, +35,16,2,249,22,120,2,19,65,101,113,117,97,108,80,159,35,43,36,83,158, +35,16,2,247,22,59,80,159,35,44,36,83,158,35,16,2,248,22,18,74,109, +111,100,117,108,101,45,108,111,97,100,105,110,103,80,159,35,45,36,83,158,35, +16,2,11,80,158,35,46,83,158,35,16,2,11,80,158,35,47,83,158,35,16, +2,32,0,89,162,43,37,44,2,14,222,33,42,80,159,35,48,36,83,158,35, +16,2,89,162,8,44,36,44,2,15,223,0,33,51,80,159,35,49,36,83,158, +35,16,2,89,162,43,35,43,2,16,223,0,33,52,80,159,35,53,36,95,29, 94,2,4,68,35,37,107,101,114,110,101,108,11,29,94,2,4,69,35,37,109, -105,110,45,115,116,120,11,2,5,9,9,9,34,0}; +105,110,45,115,116,120,11,2,5,9,9,9,35,0}; EVAL_ONE_SIZED_STR((char *)expr, 4129); } diff --git a/src/mzscheme/src/print.c b/src/mzscheme/src/print.c index 87348cec4b..5c6309c565 100644 --- a/src/mzscheme/src/print.c +++ b/src/mzscheme/src/print.c @@ -89,7 +89,7 @@ static void print_vector(Scheme_Object *vec, int notdisplay, int compact, Scheme_Hash_Table *ht, Scheme_Marshal_Tables *mt, PrintParams *pp, - int as_struct); + int as_prefab); static void print_char(Scheme_Object *chobj, int notdisplay, PrintParams *pp); static char *print_to_string(Scheme_Object *obj, long * volatile len, int write, Scheme_Object *port, long maxl, int check_honu); @@ -115,6 +115,7 @@ static Scheme_Hash_Table *global_constants_ht; #define print_compact(pp, v) print_this_string(pp, &compacts[v], 0, 1) #define PRINTABLE_STRUCT(obj, pp) (scheme_inspector_sees_part(obj, pp->inspector, -1)) +#define SCHEME_PREFABP(obj) (((Scheme_Structure *)(obj))->stype->prefab_key) #define HAS_SUBSTRUCT(obj, qk) \ (SCHEME_PAIRP(obj) \ @@ -1859,9 +1860,16 @@ print(Scheme_Object *obj, int notdisplay, int compact, Scheme_Hash_Table *ht, } else if (SCHEME_STRUCTP(obj)) { - if (compact || !pp->print_unreadable) - cannot_print(pp, notdisplay, obj, ht, compact); - else if (scheme_is_writable_struct(obj)) { + if (compact && SCHEME_PREFABP(obj)) { + Scheme_Object *vec, *prefab; + print_compact(pp, CPT_PREFAB); + prefab = ((Scheme_Structure *)obj)->stype->prefab_key; + vec = scheme_struct_to_vector(obj, NULL, pp->inspector); + SCHEME_VEC_ELS(vec)[0] = SCHEME_CDR(prefab); + print_vector(vec, notdisplay, compact, ht, mt, pp, 1); + } else if (compact || !pp->print_unreadable) { + cannot_print(pp, notdisplay, obj, ht, compact); + } else if (scheme_is_writable_struct(obj)) { custom_write_struct(obj, ht, mt, pp, notdisplay); } else { int pb; @@ -2976,7 +2984,7 @@ print_vector(Scheme_Object *vec, int notdisplay, int compact, Scheme_Hash_Table *ht, Scheme_Marshal_Tables *mt, PrintParams *pp, - int as_struct) + int as_prefab) { int i, size, common = 0; Scheme_Object **elems; @@ -2994,7 +3002,7 @@ print_vector(Scheme_Object *vec, int notdisplay, int compact, } elems = NULL; /* Precise GC: because VEC_ELS is not aligned */ - if (as_struct) { + if (as_prefab) { print_utf8_string(pp, "#s(", 0, 3); } else if (notdisplay && pp->print_vec_shorthand) { if (size == 0) { diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index b8e18f2ec9..0568e36eb7 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -4864,6 +4864,22 @@ static Scheme_Object *read_compact(CPort *port, int use_stack) } break; } + case CPT_PREFAB: + { + Scheme_Struct_Type *st; + v = read_compact(port, 0); + if (!SCHEME_VECTORP(v) || !SCHEME_VEC_SIZE(v)) + v = NULL; + else { + st = scheme_lookup_prefab_type(SCHEME_VEC_ELS(v)[0], SCHEME_VEC_SIZE(v) - 1); + if (!st || (st->num_slots != (SCHEME_VEC_SIZE(v) - 1))) + v = NULL; + else { + v = scheme_make_prefab_struct_instance(st, v); + } + } + break; + } case CPT_SMALL_LOCAL_START: case CPT_SMALL_LOCAL_UNBOX_START: { diff --git a/src/mzscheme/src/schcpt.h b/src/mzscheme/src/schcpt.h index b0d396f714..8dea049c3d 100644 --- a/src/mzscheme/src/schcpt.h +++ b/src/mzscheme/src/schcpt.h @@ -34,10 +34,11 @@ enum { CPT_PATH, CPT_CLOSURE, CPT_DELAY_REF, + CPT_PREFAB, _CPT_COUNT_ }; -#define CPT_SMALL_NUMBER_START 34 +#define CPT_SMALL_NUMBER_START 35 #define CPT_SMALL_NUMBER_END 60 #define CPT_SMALL_SYMBOL_START 60 diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index e90c219bde..39715770bc 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "3.99.0.21" +#define MZSCHEME_VERSION "3.99.0.22" #define MZSCHEME_VERSION_X 3 #define MZSCHEME_VERSION_Y 99 #define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 21 +#define MZSCHEME_VERSION_W 22 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)