diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index ec628e3..b3dd7a0 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -21,6 +21,8 @@ July - September window for this release. - rename: `a:nth` to `a:th` - rename: `v:update-using` to `v:update` +- add: `a:fetch` +- add: `a:store` ## Documentation diff --git a/doc/Glossary-Concise.txt b/doc/Glossary-Concise.txt index f2ddd4e..d03b3dd 100644 --- a/doc/Glossary-Concise.txt +++ b/doc/Glossary-Concise.txt @@ -250,6 +250,9 @@ Return `TRUE` if a1 ends with a2 or `FALSE` otherwise. a:eq? D: aa-f A: - F: - Compare all values in the array. Return `TRUE` if all values are equal or `FALSE` otherwise. This assumes the array contains only numeric values. +a:fetch D: an-n A: - F: - +Fetch the value stored at the specified index in the specified array. + a:filter D: aq-b A: - F: - For each item in the initial array, run the specified quote. If the quote returns `TRUE`, copy the item into a new array. If `FALSE`, discard it. Returns a pointer to the new array. @@ -289,6 +292,9 @@ Reverse the order of items in a array. This will return a new array. a:right D: an-a A: - F: - Return a new array containing the specified number of values from the right side of the array. +a:store D: vna- A: - F: - +Store a value into the array at the specified index. + a:th D: an-b A: - F: - Return the actual address of the `n`th item in the array. diff --git a/doc/Glossary-Names-and-Stack.txt b/doc/Glossary-Names-and-Stack.txt index 0e40526..d4e9742 100644 --- a/doc/Glossary-Names-and-Stack.txt +++ b/doc/Glossary-Names-and-Stack.txt @@ -82,6 +82,7 @@ a:counted-results D: q-a A: - F: - a:dup D: a-b A: - F: - a:ends-with? D: aa-f A: - F: - a:eq? D: aa-f A: - F: - +a:fetch D: an-n A: - F: - a:filter D: aq-b A: - F: - a:for-each D: aq- A: - F: - a:from-string D: s-a A: - F: - @@ -95,6 +96,7 @@ a:prepend D: aa-a A: - F: - a:reduce D: pnq-n A: - F: - a:reverse D: a-b A: - F: - a:right D: an-a A: - F: - +a:store D: vna- A: - F: - a:th D: an-b A: - F: - a:to-string D: a-s A: - F: - again D: - A: - F: - diff --git a/doc/Glossary.html b/doc/Glossary.html index 05b0977..6286b9f 100644 --- a/doc/Glossary.html +++ b/doc/Glossary.html @@ -697,6 +697,18 @@

Compare all values in the array. Return `TRUE` if all values are equal or `FALSE` otherwise. This assumes the array contains only numeric values.

Class: class:word | Namespace: a | Interface Layer: all


+

a:fetch

+

Data: an-n
+Addr: -
+Float: -

+
+

Fetch the value stored at the specified index in the specified array.

+

Class: class:word | Namespace: global | Interface Layer: all

+

Example:
+
+

{ #0 #1 #3 } #2 a:fetch +

+

a:filter

Data: aq-b
Addr: -
@@ -801,6 +813,18 @@

Return a new array containing the specified number of values from the right side of the array.

Class: class:word | Namespace: a | Interface Layer: all


+

a:store

+

Data: vna-
+Addr: -
+Float: -

+
+

Store a value into the array at the specified index.

+

Class: class:word | Namespace: global | Interface Layer: all

+

Example:
+
+

#3 { #0 #1 #2 } #1 a:store +

+

a:th

Data: an-b
Addr: -
diff --git a/doc/Glossary.txt b/doc/Glossary.txt index 13ffa7d..ee42a9f 100644 --- a/doc/Glossary.txt +++ b/doc/Glossary.txt @@ -955,6 +955,22 @@ Compare all values in the array. Return `TRUE` if all values are equal or `FALSE Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ +a:fetch + + Data: an-n + Addr: - + Float: - + +Fetch the value stored at the specified index in the specified array. + +Class: class:word | Namespace: global | Interface Layer: all + +Example #1: + + { #0 #1 #3 } #2 a:fetch + +------------------------------------------------------------------------ + a:filter Data: aq-b @@ -1098,6 +1114,22 @@ Return a new array containing the specified number of values from the right side Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ +a:store + + Data: vna- + Addr: - + Float: - + +Store a value into the array at the specified index. + +Class: class:word | Namespace: global | Interface Layer: all + +Example #1: + + #3 { #0 #1 #2 } #1 a:store + +------------------------------------------------------------------------ + a:th Data: an-b diff --git a/example/CloseParen.forth b/example/CloseParen.forth index 9324a89..4dd51dd 100644 --- a/example/CloseParen.forth +++ b/example/CloseParen.forth @@ -6,11 +6,11 @@ I find `)` useful to punctuate code chunks. Here is an example: - :i@ (an-n) a:th fetch ; + :i@ (an-n) a:fetch ; ~~~ {{ - :I@ (an-n) I a:th fetch ; + :I@ (an-n) I a:fetch ; 'Index 'Value [ var ] bi@ :lt?-or-gt? hook ; :pre.min (a-an) diff --git a/example/sqlite3/sql.forth b/example/sqlite3/sql.forth index 62bd0cf..b89ddf4 100644 --- a/example/sqlite3/sql.forth +++ b/example/sqlite3/sql.forth @@ -53,9 +53,9 @@ adaptable to similar external tools. 'Table var :set-table (s-s) dup s:keep !Table ; :get-columns (s-a) 'PRAGMA_table\_info("%s") s:format sql:query ; - :id (a-n) #0 a:th fetch s:to-number ; - :column (a-s) #1 a:th fetch @Table '%s:%s s:format ; - :generate (ns-) d:create , [ fetch a:th fetch ] does ; + :id (a-n) #0 a:fetch s:to-number ; + :column (a-s) #1 a:fetch @Table '%s:%s s:format ; + :generate (ns-) d:create , [ fetch a:fetch ] does ; ---reveal--- :sql:accessors-for (s-) set-table get-columns diff --git a/ngaImage b/ngaImage index 9b47415..1546629 100644 Binary files a/ngaImage and b/ngaImage differ diff --git a/source/interfaces/retro-image.c b/source/interfaces/retro-image.c index b3ef223..c60925a 100644 --- a/source/interfaces/retro-image.c +++ b/source/interfaces/retro-image.c @@ -1,6 +1,6 @@ #include -int32_t ngaImageCells = 17428; -int32_t ngaImage[] = { 1793,17207,17385,17427,201912,0,10,1,10,2,10,3,10,4,10,5,10,6,10, +int32_t ngaImageCells = 17458; +int32_t ngaImage[] = { 1793,17237,17415,17457,201912,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,10,26,10, 68223234,1,2575,85000450,1,656912,142,141,268505089,66,65,135205121,66,10,101384453,0,9,10,2049,59, @@ -8,8 +8,8 @@ int32_t ngaImage[] = { 1793,17207,17385,17427,201912,0,10,1,10,2,10,3,10,4,10,5, 101777669,1,17565186,87,524545,91,67,167838467,-1,134287105,3,62,659457,3,459023,108,2049,59,25,2049, 108,1793,115,2049,115,117506307,0,108,0,524545,25,113,168820993,0,127,1642241,127,134283523,7,113, 1793,108,7,524545,2049,108,1793,108,16846593,127,142,141,1793,67,16846593,127,113,141,1793,67, - 7,10,659713,1,659713,2,659713,3,1793,9965,2,524559,108,2049,108,2049,108,2049,122,168820998, - 2,17245,1025,167841793,180,5,17826049,0,180,2,15,25,524546,165,134287105,181,96,2305,182,459023, + 7,10,659713,1,659713,2,659713,3,1793,9995,2,524559,108,2049,108,2049,108,2049,122,168820998, + 2,17275,1025,167841793,180,5,17826049,0,180,2,15,25,524546,165,134287105,181,96,2305,182,459023, 190,134287361,181,185,659201,180,2049,59,25,84152833,48,286458116,10,459014,205,184618754,45,25,16974851,-1, 168886532,1,134284289,1,214,134284289,0,205,660227,32,0,0,112,114,101,102,105,120,58,105, 0,285278479,231,7,2576,524546,82,1641217,1,167838467,228,2049,244,2049,240,524545,231,200,17826050,230, @@ -160,7 +160,7 @@ int32_t ngaImage[] = { 1793,17207,17385,17427,201912,0,10,1,10,2,10,3,10,4,10,5, 3104,3151,147,118,58,117,112,100,97,116,101,0,4,1793,3158,15,4,8,10,1, 3154,2049,2088,16,10,3139,3172,147,99,111,112,121,0,1793,3181,1,59,2049,2076,2049, 62,10,1,3174,2049,2263,3,3,10,3164,3201,147,83,99,111,112,101,76,105,115, - 116,0,17291,17343,10,3188,3210,147,123,123,0,2049,1570,2,1,3201,2049,62,16,10, + 116,0,17321,17373,10,3188,3210,147,123,123,0,2049,1570,2,1,3201,2049,62,16,10, 3204,3235,147,45,45,45,114,101,118,101,97,108,45,45,45,0,2049,1570,1,3201, 2049,2919,16,10,3219,3249,147,125,125,0,1,3201,2049,59,4,15,11,1793,3263,3841, 3201,4097,2,10,1,3258,1793,3293,3841,3201,1793,3288,1,2,15,2,15,1,3201,2049, @@ -398,327 +398,328 @@ int32_t ngaImage[] = { 1793,17207,17385,17427,201912,0,10,1,10,2,10,3,10,4,10,5, 97,58,114,101,118,101,114,115,101,0,2049,1847,1793,7943,2049,59,1793,7921,17,2049, 2932,10,1,7917,2049,2088,2,2049,108,1793,7937,2,15,2049,108,2049,2932,10,1,7930, 2049,2263,3,10,1,7913,2049,2076,10,7896,7956,147,97,58,116,104,0,17,2049,2919, - 10,7948,7972,147,97,58,114,101,100,117,99,101,0,1793,7976,4,10,1,7974,2049, - 2076,2049,7313,10,7960,7993,147,97,58,109,97,107,101,0,2049,7234,2049,7909,10,7983, - 8003,159,123,0,1,288,2049,159,1,1556,2049,147,1,288,2049,159,10,7998,8021,159, - 125,0,1,305,2049,159,1,2076,2049,147,1,1556,2049,147,1,13,2049,153,1,41, - 2049,153,1,2932,2049,147,1,305,2049,159,1,7993,2049,147,10,8016,8065,147,98,111, - 117,110,100,115,63,0,67502597,2049,7211,67502597,13,10,8054,8079,147,99,111,112,121,0, - 2049,59,2049,108,10,8071,8094,147,116,111,45,101,110,100,0,2,2049,7211,17,2049, - 2919,10,8016,8111,147,97,58,108,101,102,116,0,2049,8065,1793,8119,771,1,-1,10, - 1,8115,2049,2505,2049,1847,67502597,2049,108,1793,8140,1,2919,2049,2076,1,8079,2049,2263,3, - 10,1,8130,2049,2076,10,8101,8156,147,97,58,114,105,103,104,116,0,2049,8065,1793, - 8164,771,1,-1,10,1,8160,2049,2505,2049,1847,67502597,2049,108,1793,8187,4,2049,8094,67502597, - 18,4,1,8079,2049,2263,3,10,1,8175,2049,2076,10,8145,8204,147,97,58,109,105, - 100,100,108,101,0,2049,3702,97,98,99,0,1,8206,2049,3702,97,98,99,97,99, - 0,1,8214,2049,7044,2049,8065,1793,8233,771,3,1,-1,10,1,8228,2049,2505,771,2049, - 2066,4,18,2049,2919,2049,1847,67502597,2049,108,1793,8268,772,1793,8258,17,2049,2919,10,1, - 8254,2049,2076,1,8079,2049,2263,3,10,1,8251,2049,2076,10,8192,8279,134,73,48,0, - 115,116,0,8273,8288,134,73,49,0,115,116,0,8282,8297,134,73,50,0,115,116, - 0,8291,8306,134,73,51,0,115,116,0,8300,8319,147,111,112,99,111,100,101,0, - 2049,3702,46,46,0,1,8321,1793,8331,1,0,10,1,8328,2049,2337,2049,3702,108,105, - 0,1,8337,1793,8347,1,1,10,1,8344,2049,2337,2049,3702,100,117,0,1,8353,1793, - 8363,1,2,10,1,8360,2049,2337,2049,3702,100,114,0,1,8369,1793,8379,1,3,10, - 1,8376,2049,2337,2049,3702,115,119,0,1,8385,1793,8395,1,4,10,1,8392,2049,2337, - 2049,3702,112,117,0,1,8401,1793,8411,1,5,10,1,8408,2049,2337,2049,3702,112,111, - 0,1,8417,1793,8427,1,6,10,1,8424,2049,2337,2049,3702,106,117,0,1,8433,1793, - 8443,1,7,10,1,8440,2049,2337,2049,3702,99,97,0,1,8449,1793,8459,1,8,10, - 1,8456,2049,2337,2049,3702,99,99,0,1,8465,1793,8475,1,9,10,1,8472,2049,2337, - 2049,3702,114,101,0,1,8481,1793,8491,1,10,10,1,8488,2049,2337,2049,3702,101,113, - 0,1,8497,1793,8507,1,11,10,1,8504,2049,2337,2049,3702,110,101,0,1,8513,1793, - 8523,1,12,10,1,8520,2049,2337,2049,3702,108,116,0,1,8529,1793,8539,1,13,10, - 1,8536,2049,2337,2049,3702,103,116,0,1,8545,1793,8555,1,14,10,1,8552,2049,2337, - 2049,3702,102,101,0,1,8561,1793,8571,1,15,10,1,8568,2049,2337,2049,3702,115,116, - 0,1,8577,1793,8587,1,16,10,1,8584,2049,2337,2049,3702,97,100,0,1,8593,1793, - 8603,1,17,10,1,8600,2049,2337,2049,3702,115,117,0,1,8609,1793,8619,1,18,10, - 1,8616,2049,2337,2049,3702,109,117,0,1,8625,1793,8635,1,19,10,1,8632,2049,2337, - 2049,3702,100,105,0,1,8641,1793,8651,1,20,10,1,8648,2049,2337,2049,3702,97,110, - 0,1,8657,1793,8667,1,21,10,1,8664,2049,2337,2049,3702,111,114,0,1,8673,1793, - 8683,1,22,10,1,8680,2049,2337,2049,3702,120,111,0,1,8689,1793,8699,1,23,10, - 1,8696,2049,2337,2049,3702,115,104,0,1,8705,1793,8715,1,24,10,1,8712,2049,2337, - 2049,3702,122,114,0,1,8721,1793,8731,1,25,10,1,8728,2049,2337,2049,3702,101,110, - 0,1,8737,1793,8747,1,26,10,1,8744,2049,2337,2049,3702,105,101,0,1,8753,1793, - 8763,1,27,10,1,8760,2049,2337,2049,3702,105,113,0,1,8769,1793,8779,1,28,10, - 1,8776,2049,2337,2049,3702,105,105,0,1,8785,1793,8795,1,29,10,1,8792,2049,2337, - 3,1,0,10,8309,8811,147,112,97,99,107,0,1,8279,2049,8319,1,8288,2049,8319, - 1,8297,2049,8319,1,8306,2049,8319,1,-24,24,4,1,-16,24,17,4,1,-8,24, - 17,4,17,10,8192,8848,147,105,0,2,1,8279,1,2,2049,3172,1,2,17,2, - 1,8288,1,2,2049,3172,1,2,17,2,1,8297,1,2,2049,3172,1,2,17,1, - 8306,1,2,2049,3172,2049,8811,2049,108,10,8843,8894,147,100,0,2049,108,10,8889,8902, - 147,114,0,2049,200,2049,161,15,2049,108,10,8897,8917,159,97,115,123,0,3841,127, - 1,127,2049,3085,10,8910,8931,159,125,97,115,0,4097,127,10,8924,8950,147,99,117, - 114,114,101,110,116,45,108,105,110,101,0,2049,3573,1,1025,18,10,8934,8972,147, - 99,111,117,110,116,45,116,111,107,101,110,115,0,1793,8978,1,32,11,10,1, - 8974,2049,4457,2049,82,10,8956,8999,147,110,101,120,116,45,116,111,107,101,110,0, - 1,32,2049,6279,10,8985,9022,147,112,114,111,99,101,115,115,45,116,111,107,101, - 110,115,0,1793,9048,2049,8999,4,1793,9041,2,2049,82,2049,2594,1,367,1,11,2049, - 67,10,1,9029,2049,2076,2049,2919,10,1,9024,2049,2263,2049,367,10,8924,9069,147,115, - 58,101,118,97,108,117,97,116,101,0,2049,8950,2049,4726,2049,8950,2,2049,8972,2049, - 9022,10,9055,9089,134,70,108,97,103,0,0,9081,9101,147,99,111,109,112,97,114, - 101,0,67440386,184946434,10,9090,9114,147,108,101,110,103,116,104,0,659202,10,9104,9124,147, - 110,101,120,116,0,17043713,1,1,2577,10,9116,9142,147,110,111,116,45,101,113,117, - 97,108,0,50529030,2561,0,10,9129,9154,147,108,111,111,112,0,524549,9124,2049,9101,18157313, - 9089,9089,16,420610310,1,1,9154,7,10,9055,9177,147,97,58,101,113,63,0,1048833,-1, - 9089,2049,9101,151066369,-1,9142,2049,9114,2049,9154,251724547,9089,10,9168,9202,147,97,58,45,101, - 113,63,0,2049,9177,2049,2731,10,9192,9225,147,97,58,98,101,103,105,110,115,45, - 119,105,116,104,63,0,1,3,1793,9241,2,2049,7211,1,13,2049,2076,2049,8111,2049, - 9177,10,1,9229,2049,3118,10,9207,9262,147,97,58,101,110,100,115,45,119,105,116, - 104,63,0,1,3,1793,9278,2,2049,7211,1,13,2049,2076,2049,8156,2049,9177,10,1, - 9266,2049,3118,10,9246,9289,134,76,80,0,0,9283,9299,134,73,110,100,101,120,0, - 0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 10,7948,7971,147,97,58,102,101,116,99,104,0,2049,7956,15,10,7960,7986,147,97, + 58,115,116,111,114,101,0,2049,7956,16,10,7975,8002,147,97,58,114,101,100,117, + 99,101,0,1793,8006,4,10,1,8004,2049,2076,2049,7313,10,7990,8023,147,97,58,109, + 97,107,101,0,2049,7234,2049,7909,10,8013,8033,159,123,0,1,288,2049,159,1,1556, + 2049,147,1,288,2049,159,10,8028,8051,159,125,0,1,305,2049,159,1,2076,2049,147, + 1,1556,2049,147,1,13,2049,153,1,41,2049,153,1,2932,2049,147,1,305,2049,159, + 1,8023,2049,147,10,8046,8095,147,98,111,117,110,100,115,63,0,67502597,2049,7211,67502597, + 13,10,8084,8109,147,99,111,112,121,0,2049,59,2049,108,10,8101,8124,147,116,111, + 45,101,110,100,0,2,2049,7211,17,2049,2919,10,8046,8141,147,97,58,108,101,102, + 116,0,2049,8095,1793,8149,771,1,-1,10,1,8145,2049,2505,2049,1847,67502597,2049,108,1793, + 8170,1,2919,2049,2076,1,8109,2049,2263,3,10,1,8160,2049,2076,10,8131,8186,147,97, + 58,114,105,103,104,116,0,2049,8095,1793,8194,771,1,-1,10,1,8190,2049,2505,2049, + 1847,67502597,2049,108,1793,8217,4,2049,8124,67502597,18,4,1,8109,2049,2263,3,10,1,8205, + 2049,2076,10,8175,8234,147,97,58,109,105,100,100,108,101,0,2049,3702,97,98,99, + 0,1,8236,2049,3702,97,98,99,97,99,0,1,8244,2049,7044,2049,8095,1793,8263,771, + 3,1,-1,10,1,8258,2049,2505,771,2049,2066,4,18,2049,2919,2049,1847,67502597,2049,108, + 1793,8298,772,1793,8288,17,2049,2919,10,1,8284,2049,2076,1,8109,2049,2263,3,10,1, + 8281,2049,2076,10,8222,8309,134,73,48,0,115,116,0,8303,8318,134,73,49,0,115, + 116,0,8312,8327,134,73,50,0,115,116,0,8321,8336,134,73,51,0,115,116,0, + 8330,8349,147,111,112,99,111,100,101,0,2049,3702,46,46,0,1,8351,1793,8361,1, + 0,10,1,8358,2049,2337,2049,3702,108,105,0,1,8367,1793,8377,1,1,10,1,8374, + 2049,2337,2049,3702,100,117,0,1,8383,1793,8393,1,2,10,1,8390,2049,2337,2049,3702, + 100,114,0,1,8399,1793,8409,1,3,10,1,8406,2049,2337,2049,3702,115,119,0,1, + 8415,1793,8425,1,4,10,1,8422,2049,2337,2049,3702,112,117,0,1,8431,1793,8441,1, + 5,10,1,8438,2049,2337,2049,3702,112,111,0,1,8447,1793,8457,1,6,10,1,8454, + 2049,2337,2049,3702,106,117,0,1,8463,1793,8473,1,7,10,1,8470,2049,2337,2049,3702, + 99,97,0,1,8479,1793,8489,1,8,10,1,8486,2049,2337,2049,3702,99,99,0,1, + 8495,1793,8505,1,9,10,1,8502,2049,2337,2049,3702,114,101,0,1,8511,1793,8521,1, + 10,10,1,8518,2049,2337,2049,3702,101,113,0,1,8527,1793,8537,1,11,10,1,8534, + 2049,2337,2049,3702,110,101,0,1,8543,1793,8553,1,12,10,1,8550,2049,2337,2049,3702, + 108,116,0,1,8559,1793,8569,1,13,10,1,8566,2049,2337,2049,3702,103,116,0,1, + 8575,1793,8585,1,14,10,1,8582,2049,2337,2049,3702,102,101,0,1,8591,1793,8601,1, + 15,10,1,8598,2049,2337,2049,3702,115,116,0,1,8607,1793,8617,1,16,10,1,8614, + 2049,2337,2049,3702,97,100,0,1,8623,1793,8633,1,17,10,1,8630,2049,2337,2049,3702, + 115,117,0,1,8639,1793,8649,1,18,10,1,8646,2049,2337,2049,3702,109,117,0,1, + 8655,1793,8665,1,19,10,1,8662,2049,2337,2049,3702,100,105,0,1,8671,1793,8681,1, + 20,10,1,8678,2049,2337,2049,3702,97,110,0,1,8687,1793,8697,1,21,10,1,8694, + 2049,2337,2049,3702,111,114,0,1,8703,1793,8713,1,22,10,1,8710,2049,2337,2049,3702, + 120,111,0,1,8719,1793,8729,1,23,10,1,8726,2049,2337,2049,3702,115,104,0,1, + 8735,1793,8745,1,24,10,1,8742,2049,2337,2049,3702,122,114,0,1,8751,1793,8761,1, + 25,10,1,8758,2049,2337,2049,3702,101,110,0,1,8767,1793,8777,1,26,10,1,8774, + 2049,2337,2049,3702,105,101,0,1,8783,1793,8793,1,27,10,1,8790,2049,2337,2049,3702, + 105,113,0,1,8799,1793,8809,1,28,10,1,8806,2049,2337,2049,3702,105,105,0,1, + 8815,1793,8825,1,29,10,1,8822,2049,2337,3,1,0,10,8339,8841,147,112,97,99, + 107,0,1,8309,2049,8349,1,8318,2049,8349,1,8327,2049,8349,1,8336,2049,8349,1,-24, + 24,4,1,-16,24,17,4,1,-8,24,17,4,17,10,8222,8878,147,105,0,2, + 1,8309,1,2,2049,3172,1,2,17,2,1,8318,1,2,2049,3172,1,2,17,2, + 1,8327,1,2,2049,3172,1,2,17,1,8336,1,2,2049,3172,2049,8841,2049,108,10, + 8873,8924,147,100,0,2049,108,10,8919,8932,147,114,0,2049,200,2049,161,15,2049,108, + 10,8927,8947,159,97,115,123,0,3841,127,1,127,2049,3085,10,8940,8961,159,125,97, + 115,0,4097,127,10,8954,8980,147,99,117,114,114,101,110,116,45,108,105,110,101, + 0,2049,3573,1,1025,18,10,8964,9002,147,99,111,117,110,116,45,116,111,107,101, + 110,115,0,1793,9008,1,32,11,10,1,9004,2049,4457,2049,82,10,8986,9029,147,110, + 101,120,116,45,116,111,107,101,110,0,1,32,2049,6279,10,9015,9052,147,112,114, + 111,99,101,115,115,45,116,111,107,101,110,115,0,1793,9078,2049,9029,4,1793,9071, + 2,2049,82,2049,2594,1,367,1,11,2049,67,10,1,9059,2049,2076,2049,2919,10,1, + 9054,2049,2263,2049,367,10,8954,9099,147,115,58,101,118,97,108,117,97,116,101,0, + 2049,8980,2049,4726,2049,8980,2,2049,9002,2049,9052,10,9085,9119,134,70,108,97,103,0, + 0,9111,9131,147,99,111,109,112,97,114,101,0,67440386,184946434,10,9120,9144,147,108,101, + 110,103,116,104,0,659202,10,9134,9154,147,110,101,120,116,0,17043713,1,1,2577,10, + 9146,9172,147,110,111,116,45,101,113,117,97,108,0,50529030,2561,0,10,9159,9184,147, + 108,111,111,112,0,524549,9154,2049,9131,18157313,9119,9119,16,420610310,1,1,9184,7,10,9085, + 9207,147,97,58,101,113,63,0,1048833,-1,9119,2049,9131,151066369,-1,9172,2049,9144,2049,9184, + 251724547,9119,10,9198,9232,147,97,58,45,101,113,63,0,2049,9207,2049,2731,10,9222,9255, + 147,97,58,98,101,103,105,110,115,45,119,105,116,104,63,0,1,3,1793,9271, + 2,2049,7211,1,13,2049,2076,2049,8141,2049,9207,10,1,9259,2049,3118,10,9237,9292,147, + 97,58,101,110,100,115,45,119,105,116,104,63,0,1,3,1793,9308,2,2049,7211, + 1,13,2049,2076,2049,8186,2049,9207,10,1,9296,2049,3118,10,9276,9319,134,76,80,0, + 0,9313,9329,134,73,110,100,101,120,0,0,7,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,9290,9435,147,110,101,120,116,0,3841,9289,1,9299, - 17,2049,3020,10,9427,9451,147,112,114,101,112,0,1,9289,2049,3020,1,0,3841,9289, - 1,9299,17,16,10,9443,9472,147,100,111,110,101,0,1,9289,2049,3035,10,9246,9482, - 147,73,0,3841,9289,1,9299,17,15,10,9477,9494,147,74,0,3841,9289,1,9299,17, - 2049,2932,15,10,9489,9508,147,75,0,3841,9289,1,9299,17,1,2,18,15,10,9503, - 9539,147,116,105,109,101,115,60,119,105,116,104,45,105,110,100,101,120,62,0, - 2049,9451,4,1793,9559,25,2049,2932,5,1,21,2049,2088,6,2049,9435,1,9544,7,10, - 1,9544,8,3,2049,9472,10,9518,9574,159,104,111,111,107,0,1,1793,2049,108,2049, - 1847,2049,2919,2049,108,10,9566,9597,147,115,101,116,45,104,111,111,107,0,2049,2919, - 16,10,9585,9611,147,117,110,104,111,111,107,0,2049,2919,2,2049,2919,4,16,10, - 9601,9635,147,105,111,58,101,110,117,109,101,114,97,116,101,0,27,10,9619,9649, - 147,105,111,58,113,117,101,114,121,0,28,10,9637,9664,147,105,111,58,105,110, - 118,111,107,101,0,29,10,9651,9674,134,83,108,111,116,0,6,9651,9690,147,105, - 111,58,115,99,97,110,45,102,111,114,0,1,-1,4097,9674,2049,9635,1793,9716,2049, - 9482,2049,9649,772,67502597,11,1793,9712,2049,9482,4097,9674,10,1,9707,9,10,1,9698,2049, - 9539,3,3841,9674,10,9675,9733,147,99,58,112,117,116,0,1793,9735,1,0,2049,9664, - 10,9724,9746,147,110,108,0,1,10,2049,9733,10,9740,9757,147,115,112,0,1,32, - 2049,9733,10,9751,9769,147,116,97,98,0,1,9,2049,9733,10,9762,9783,147,115,58, - 112,117,116,0,1,9733,2049,4028,10,9774,9797,147,110,58,112,117,116,0,2049,6095, - 2049,9783,10,9788,9811,147,114,101,115,101,116,0,2049,1556,25,5,3,6,1,1, - 18,1,9813,7,10,9802,9838,147,100,117,109,112,45,115,116,97,99,107,0,2049, - 1556,25,3,5,2049,9838,6,2,2049,9797,2049,9757,10,9824,9860,147,70,82,69,69, - 0,2049,3573,1,1025,18,2049,1847,18,10,9852,9879,147,102,105,101,108,100,115,0, - 3841,2,2049,108,2049,108,2049,108,10,9869,9905,147,105,110,118,97,108,105,100,45, - 110,97,109,101,63,0,2,1,32,2049,4159,10,9888,9922,147,114,101,119,114,105, - 116,101,0,1793,9936,1,32,1793,9931,1,95,10,1,9928,2049,2293,10,1,9924,2049, - 4508,10,9911,9950,147,101,110,116,114,121,0,2049,1847,1793,9956,8,10,1,9954,2049, - 2076,4097,2,10,1793,9982,1793,9977,2049,9879,2049,9905,1,9922,9,2049,122,10,1,9967, - 2049,9950,10,1,9965,9852,10001,134,105,111,58,70,105,108,101,115,121,115,116,101, - 109,0,0,9984,10014,147,105,100,101,110,116,105,102,121,0,3841,10001,2049,2578,1793, - 10081,1,4,2049,9690,2,2049,2613,1793,10069,3,2049,3702,73,79,32,68,69,86,73, - 67,69,32,84,89,80,69,32,48,48,48,52,32,78,79,84,32,70,79,85, - 78,68,0,1,10032,2049,9783,2049,9746,10,1,10029,1793,10076,4097,10001,10,1,10073,2049, - 67,10,1,10020,9,10,9852,10106,147,105,111,58,102,105,108,101,45,111,112,101, - 114,97,116,105,111,110,0,2049,10014,3841,10001,2049,9664,10,10085,0,134,102,105,108, - 101,58,82,0,10113,1,134,102,105,108,101,58,87,0,10123,2,134,102,105,108, - 101,58,65,0,10133,3,134,102,105,108,101,58,82,43,0,10143,10167,147,102,105, - 108,101,58,111,112,101,110,0,1,0,2049,10106,10,10154,10186,147,102,105,108,101, - 58,99,108,111,115,101,0,1,1,2049,10106,10,10172,10204,147,102,105,108,101,58, - 114,101,97,100,0,1,2,2049,10106,10,10191,10223,147,102,105,108,101,58,119,114, - 105,116,101,0,1,3,2049,10106,10,10209,10241,147,102,105,108,101,58,116,101,108, - 108,0,1,4,2049,10106,10,10228,10259,147,102,105,108,101,58,115,101,101,107,0, - 1,5,2049,10106,10,10246,10277,147,102,105,108,101,58,115,105,122,101,0,1,6, - 2049,10106,10,10264,10297,147,102,105,108,101,58,100,101,108,101,116,101,0,1,7, - 2049,10106,10,10282,10316,147,102,105,108,101,58,102,108,117,115,104,0,1,8,2049, - 10106,10,10302,10337,147,102,105,108,101,58,101,120,105,115,116,115,63,0,1,0, - 2049,10167,2,2049,2594,1793,10351,2049,10186,2049,2439,10,1,10346,1793,10359,3,2049,2451,10, - 1,10355,2049,67,10,10321,10390,147,102,105,108,101,58,111,112,101,110,60,102,111, - 114,45,114,101,97,100,105,110,103,62,0,1,0,2049,10167,2,2049,10277,4,10, - 10364,10424,147,102,105,108,101,58,111,112,101,110,60,102,111,114,45,97,112,112, - 101,110,100,62,0,1,2,2049,10167,2,2049,10277,4,10,10399,10459,147,102,105,108, - 101,58,111,112,101,110,60,102,111,114,45,119,114,105,116,105,110,103,62,0, - 1,1,2049,10167,10,10433,10471,134,70,73,68,0,0,10464,10480,134,83,105,122,101, - 0,0,10472,10491,134,65,99,116,105,111,110,0,0,10481,10502,134,66,117,102,102, - 101,114,0,0,10492,10512,147,45,101,111,102,63,0,3841,10471,2049,10241,3841,10480,13, - 10,10503,10532,147,112,114,101,115,101,114,118,101,0,1,10471,1793,10547,1,10480,1793, - 10542,8,10,1,10540,2049,3118,10,1,10536,2049,3118,10,10433,10570,147,102,105,108,101, - 58,114,101,97,100,45,108,105,110,101,0,4097,10471,1793,10627,2049,1847,2,4097,10502, - 2049,3480,1793,10619,3841,10471,2049,10204,2,2049,3388,1793,10596,1,13,11,10,1,10592,1793, - 10604,1,10,11,10,1,10600,1793,10612,1,0,11,10,1,10608,2049,2140,22,22,10, - 1,10583,2049,2234,2049,3412,3,10,1,10574,2049,3504,3841,10502,10,10552,10656,147,102,105, - 108,101,58,102,111,114,45,101,97,99,104,45,108,105,110,101,0,1793,10687,4097, - 10491,2049,10390,4097,10471,4097,10480,1793,10678,3841,10471,2049,10570,3841,10491,8,2049,10512,10,1, - 10668,2049,2208,3841,10471,2049,10186,10,1,10658,2049,10532,10,10634,10699,134,70,73,68,0, - 0,10692,10708,134,83,105,122,101,0,0,10634,10723,147,102,105,108,101,58,115,108, - 117,114,112,0,1793,10753,2049,10390,4097,10699,4097,10708,2049,3480,3841,10708,1793,10744,3841,10699, - 2049,10204,2049,3388,10,1,10737,2049,2263,3841,10699,2049,10186,10,1,10725,2049,3504,10,10709, - 10765,134,70,73,68,0,0,10709,10779,147,102,105,108,101,58,115,112,101,119,0, - 2049,10459,4097,10765,1793,10790,3841,10765,2049,10223,10,1,10785,2049,4028,3841,10765,2049,10186,10, - 10766,10819,134,105,111,58,70,108,111,97,116,105,110,103,80,111,105,110,116,0, - 0,10799,10832,147,105,100,101,110,116,105,102,121,0,3841,10819,2049,2578,1793,10899,1, - 2,2049,9690,2,2049,2613,1793,10887,3,2049,3702,73,79,32,68,69,86,73,67,69, - 32,84,89,80,69,32,48,48,48,50,32,78,79,84,32,70,79,85,78,68, - 0,1,10850,2049,9783,2049,9746,10,1,10847,1793,10894,4097,10819,10,1,10891,2049,67,10, - 1,10838,9,10,10766,10925,147,105,111,58,102,108,111,97,116,45,111,112,101,114, - 97,116,105,111,110,0,2049,10832,3841,10819,2049,9664,10,10903,10946,147,110,58,116,111, - 45,102,108,111,97,116,0,1,0,2049,10925,10,10932,10965,147,115,58,116,111,45, - 102,108,111,97,116,0,1,1,2049,10925,10,10951,10985,147,102,58,116,111,45,110, - 117,109,98,101,114,0,1,2,2049,10925,10,10970,11005,147,102,58,116,111,45,115, - 116,114,105,110,103,0,2049,3683,2,1,3,2049,10925,10,10990,11020,147,102,58,43, - 0,1,4,2049,10925,10,11013,11032,147,102,58,45,0,1,5,2049,10925,10,11025,11044, - 147,102,58,42,0,1,6,2049,10925,10,11037,11056,147,102,58,47,0,1,7,2049, - 10925,10,11049,11072,147,102,58,102,108,111,111,114,0,1,8,2049,10925,10,11061,11090, - 147,102,58,99,101,105,108,105,110,103,0,1,9,2049,10925,10,11077,11105,147,102, - 58,115,113,114,116,0,1,10,2049,10925,10,11095,11119,147,102,58,101,113,63,0, - 1,11,2049,10925,10,11110,11134,147,102,58,45,101,113,63,0,1,12,2049,10925,10, - 11124,11148,147,102,58,108,116,63,0,1,13,2049,10925,10,11139,11162,147,102,58,103, - 116,63,0,1,14,2049,10925,10,11153,11178,147,102,58,100,101,112,116,104,0,1, - 15,2049,10925,10,11167,11192,147,102,58,100,117,112,0,1,16,2049,10925,10,11183,11207, - 147,102,58,100,114,111,112,0,1,17,2049,10925,10,11197,11222,147,102,58,115,119, - 97,112,0,1,18,2049,10925,10,11212,11236,147,102,58,108,111,103,0,1,19,2049, - 10925,10,11227,11252,147,102,58,112,111,119,101,114,0,1,20,2049,10925,10,11241,11266, - 147,102,58,115,105,110,0,1,21,2049,10925,10,11257,11280,147,102,58,99,111,115, - 0,1,22,2049,10925,10,11271,11294,147,102,58,116,97,110,0,1,23,2049,10925,10, - 11285,11309,147,102,58,97,115,105,110,0,1,24,2049,10925,10,11299,11324,147,102,58, - 97,99,111,115,0,1,25,2049,10925,10,11314,11339,147,102,58,97,116,97,110,0, - 1,26,2049,10925,10,11329,11354,147,102,58,112,117,115,104,0,1,27,2049,10925,10, - 11344,11368,147,102,58,112,111,112,0,1,28,2049,10925,10,11359,11385,147,102,58,97, - 100,101,112,116,104,0,1,29,2049,10925,10,11373,11402,147,102,58,115,113,117,97, - 114,101,0,2049,11192,2049,11044,10,11390,11417,147,102,58,111,118,101,114,0,2049,11354, - 2049,11192,2049,11368,2049,11222,10,11407,11436,147,102,58,116,117,99,107,0,2049,11192,2049, - 11354,2049,11222,2049,11368,10,11426,11454,147,102,58,110,105,112,0,2049,11222,2049,11207,10, - 11445,11474,147,102,58,100,114,111,112,45,112,97,105,114,0,2049,11207,2049,11207,10, - 11459,11493,147,102,58,100,117,112,45,112,97,105,114,0,2049,11417,2049,11417,10,11479, - 11507,147,102,58,114,111,116,0,2049,11354,2049,11222,2049,11368,2049,11222,10,11498,11531,147, - 102,58,112,111,115,105,116,105,118,101,63,0,1,0,2049,10946,2049,11162,10,11516, - 11553,147,102,58,110,101,103,97,116,105,118,101,63,0,1,0,2049,10946,2049,11148, - 10,11538,11572,147,102,58,110,101,103,97,116,101,0,1,-1,2049,10946,2049,11044,10, - 11560,11588,147,102,58,97,98,115,0,2049,11192,2049,11553,1793,11597,2049,11572,10,1,11594, - 9,10,11579,11613,159,112,114,101,102,105,120,58,46,0,2049,1818,1793,11620,2049,3728, - 10,1,11617,1793,11627,2049,3657,10,1,11624,2049,67,1,10965,2049,147,10,11601,11645,147, - 102,58,112,117,116,0,2049,11005,2049,9783,10,11636,11658,147,102,58,80,73,0,2049, - 3702,51,46,49,52,49,53,57,50,0,1,11660,2049,10965,10,11650,11681,147,102,58, - 69,0,2049,3702,50,46,55,49,56,50,56,49,0,1,11683,2049,10965,10,11674,11706, - 147,102,58,78,65,78,0,2049,3702,48,0,1,11708,2049,10965,2049,3702,48,0,1, - 11716,2049,10965,2049,11056,10,11697,11734,147,102,58,73,78,70,0,2049,3702,49,46,48, - 0,1,11736,2049,10965,2049,3702,48,0,1,11746,2049,10965,2049,11056,10,11725,11765,147,102, - 58,45,73,78,70,0,2049,3702,45,49,46,48,0,1,11767,2049,10965,2049,3702,48, - 0,1,11778,2049,10965,2049,11056,10,11755,11797,147,102,58,110,97,110,63,0,2049,11192, - 2049,11134,10,11787,11812,147,102,58,105,110,102,63,0,2049,11734,2049,11119,10,11802,11828, - 147,102,58,45,105,110,102,63,0,2049,11765,2049,11119,10,11817,11844,147,102,58,114, - 111,117,110,100,0,2049,11192,2049,11553,1793,11865,2049,3702,48,46,53,0,1,11852,2049, - 10965,2049,11032,2049,11090,10,1,11850,1793,11884,2049,3702,48,46,53,0,1,11871,2049,10965, - 2049,11020,2049,11072,10,1,11869,2049,67,10,11833,11898,147,102,58,109,105,110,0,2049, - 11493,2049,11148,1,11207,1,11454,2049,67,10,11889,11918,147,102,58,109,97,120,0,2049, - 11493,2049,11162,1,11207,1,11454,2049,67,10,11909,11940,147,102,58,108,105,109,105,116, - 0,2049,11222,2049,11354,2049,11898,2049,11368,2049,11918,10,11929,11965,147,102,58,98,101,116, - 119,101,101,110,63,0,2049,11507,2049,11192,2049,11354,2049,11507,2049,11507,2049,11940,2049,11368, - 2049,11119,10,11951,11991,147,102,58,105,110,99,0,2049,3702,49,0,1,11993,2049,10965, - 2049,11020,10,11982,12011,147,102,58,100,101,99,0,2049,3702,49,0,1,12013,2049,10965, - 2049,11032,10,12002,12032,147,102,58,99,97,115,101,0,2049,11417,2049,11119,1793,12044,2049, - 11207,8,1,-1,10,1,12038,1793,12052,3,1,0,10,1,12048,2049,67,25,6,771, - 10,12022,12070,147,102,58,115,105,103,110,0,2049,11192,2049,3702,48,0,1,12074,2049, - 10965,2049,11119,1793,12089,1,0,2049,11207,10,1,12084,2049,2505,2049,3702,48,0,1,12095, - 2049,10965,2049,11162,1793,12108,1,1,10,1,12105,1793,12115,1,-1,10,1,12112,2049,67, - 10,12060,2147483646,134,101,58,77,65,88,0,12120,-2147483646,134,101,58,77,73,78,0,12129, - -2147483648,134,101,58,78,65,78,0,12138,2147483647,134,101,58,73,78,70,0,12147,-2147483647,134, - 101,58,45,73,78,70,0,12156,12174,147,101,58,110,63,0,1,-2147483646,2049,2919,1, - 2147483646,2049,2932,2049,2950,10,12166,12195,147,101,58,109,97,120,63,0,1,2147483646,11,10, - 12185,12209,147,101,58,109,105,110,63,0,1,-2147483646,11,10,12199,12224,147,101,58,122, - 101,114,111,63,0,2049,2578,10,12213,12237,147,101,58,110,97,110,63,0,1,-2147483648, - 11,10,12227,12251,147,101,58,105,110,102,63,0,1,2147483647,11,10,12241,12266,147,101, - 58,45,105,110,102,63,0,1,-2147483647,11,10,12255,12280,147,101,58,99,108,105,112, - 0,1,-2147483646,1,2147483646,2049,2902,10,12270,12295,147,102,58,69,49,0,1793,12297,2049,3702, - 49,46,101,53,0,1,12299,2049,10965,10,12287,12321,147,102,58,45,115,104,105,102, - 116,0,2049,12295,2049,11044,10,12309,12338,147,102,58,43,115,104,105,102,116,0,2049, - 12295,2049,11056,10,12326,12360,147,102,58,115,105,103,110,101,100,45,115,113,114,116, - 0,2049,11192,2049,12070,2049,11588,2049,11105,2049,10946,2049,11044,10,12343,12386,147,102,58,43, - 101,110,99,111,100,101,0,2049,12360,2049,12321,10,12373,12404,147,102,58,45,101,110, - 99,111,100,101,0,2049,11192,2049,12070,2049,12338,2049,11192,2049,11044,2049,10946,2049,11044,10, - 12391,12438,147,102,58,115,105,103,110,101,100,45,115,113,117,97,114,101,0,2049, - 11192,2049,12070,2049,11192,2049,11044,2049,10946,2049,11044,10,12419,12461,147,102,58,116,111,45, - 101,0,2049,11192,2049,11797,1793,12473,2049,11207,3,1,-2147483648,10,1,12467,2049,2505,2049,11192, - 2049,11812,1793,12489,2049,11207,3,1,2147483647,10,1,12483,2049,2505,2049,11192,2049,11828,1793,12505, - 2049,11207,3,1,-2147483647,10,1,12499,2049,2505,2049,12386,2049,11844,2049,10985,2049,12280,1,-2147483646, - 1793,12524,2049,11207,10,1,12521,2049,2293,1,2147483646,1793,12535,2049,11207,10,1,12532,2049,2293, - 10,12451,12550,147,101,58,116,111,45,102,0,1,-2147483648,1793,12558,3,2049,11706,10,1, - 12554,2049,2293,1,2147483647,1793,12570,3,2049,11734,10,1,12566,2049,2293,1,-2147483647,1793,12582,3, - 2049,11765,10,1,12578,2049,2293,2049,10946,2049,12404,10,12540,12602,147,102,58,115,116,111, - 114,101,0,1793,12607,2049,12461,10,1,12604,2049,2076,16,10,12591,12624,147,102,58,102, - 101,116,99,104,0,15,2049,12550,10,12613,12644,147,102,58,100,117,109,112,45,115, - 116,97,99,107,0,2049,11178,2,1793,12652,2049,11354,10,1,12649,2049,2263,1793,12667,2049, - 11368,2049,11192,2049,11645,2049,9757,10,1,12658,2049,2263,10,12628,12689,147,102,58,100,117, - 109,112,45,97,115,116,97,99,107,0,2049,11385,2,1793,12697,2049,11368,10,1,12694, - 2049,2263,1793,12712,2049,11192,2049,11645,2049,9757,2049,11354,10,1,12703,2049,2263,10,12672,12726, - 147,101,58,112,117,116,0,1,2147483646,1793,12743,2049,3702,101,58,77,65,88,0,1, - 12732,2049,9783,10,1,12730,2049,2293,1,-2147483646,1793,12764,2049,3702,101,58,77,73,78,0, - 1,12753,2049,9783,10,1,12751,2049,2293,1,0,1793,12783,2049,3702,101,58,48,0,1, - 12774,2049,9783,10,1,12772,2049,2293,1,-2147483648,1793,12804,2049,3702,101,58,78,65,78,0, - 1,12793,2049,9783,10,1,12791,2049,2293,1,2147483647,1793,12825,2049,3702,101,58,73,78,70, - 0,1,12814,2049,9783,10,1,12812,2049,2293,1,-2147483647,1793,12847,2049,3702,101,58,45,73, - 78,70,0,1,12835,2049,9783,10,1,12833,2049,2293,2049,12550,2049,11645,10,12717,12874,134, - 105,111,58,85,110,105,120,83,121,115,99,97,108,108,0,0,12856,12887,147,105, - 100,101,110,116,105,102,121,0,3841,12874,2049,2578,1793,12954,1,8,2049,9690,2,2049, - 2613,1793,12942,3,2049,3702,73,79,32,68,69,86,73,67,69,32,84,89,80,69, - 32,48,48,48,56,32,78,79,84,32,70,79,85,78,68,0,1,12905,2049,9783, - 2049,9746,10,1,12902,1793,12949,4097,12874,10,1,12946,2049,67,10,1,12893,9,10,12717, - 12977,147,105,111,58,117,110,105,120,45,115,121,115,99,97,108,108,0,2049,12887, - 3841,12874,2049,9664,10,12958,12999,147,117,110,105,120,58,115,121,115,116,101,109,0, - 1,0,2049,12977,10,12984,13017,147,117,110,105,120,58,102,111,114,107,0,1,1, - 2049,12977,10,13004,13036,147,117,110,105,120,58,101,120,101,99,48,0,1,2,2049, - 12977,10,13022,13055,147,117,110,105,120,58,101,120,101,99,49,0,1,3,2049,12977, - 10,13041,13074,147,117,110,105,120,58,101,120,101,99,50,0,1,4,2049,12977,10, - 13060,13093,147,117,110,105,120,58,101,120,101,99,51,0,1,5,2049,12977,10,13079, - 13111,147,117,110,105,120,58,101,120,105,116,0,1,6,2049,12977,10,13098,13131,147, - 117,110,105,120,58,103,101,116,112,105,100,0,1,7,2049,12977,10,13116,13149,147, - 117,110,105,120,58,119,97,105,116,0,1,8,2049,12977,10,13136,13167,147,117,110, - 105,120,58,107,105,108,108,0,1,9,2049,12977,10,13154,13186,147,117,110,105,120, - 58,112,111,112,101,110,0,1,10,2049,12977,10,13172,13206,147,117,110,105,120,58, - 112,99,108,111,115,101,0,1,11,2049,12977,10,13191,13225,147,117,110,105,120,58, - 119,114,105,116,101,0,1793,13231,2,2049,82,10,1,13227,2049,2076,1,12,2049,12977, - 10,13211,13254,147,117,110,105,120,58,99,104,100,105,114,0,1,13,2049,12977,10, - 13240,13274,147,117,110,105,120,58,103,101,116,101,110,118,0,1,14,2049,12977,10, - 13259,13294,147,117,110,105,120,58,112,117,116,101,110,118,0,1,15,2049,12977,10, - 13279,13313,147,117,110,105,120,58,115,108,101,101,112,0,1,16,2049,12977,10,13299, - 13335,147,117,110,105,120,58,105,111,58,110,58,112,117,116,0,1,17,2049,12977, - 10,13318,13357,147,117,110,105,120,58,105,111,58,115,58,112,117,116,0,1,18, - 2049,12977,10,13340,13375,147,117,110,105,120,58,116,105,109,101,0,1,19,2049,12977, - 10,13362,13393,147,99,108,111,99,107,58,100,97,121,0,1,20,2049,12977,10,13380, - 13413,147,99,108,111,99,107,58,109,111,110,116,104,0,1,21,2049,12977,10,13398, - 13432,147,99,108,111,99,107,58,121,101,97,114,0,1,22,2049,12977,10,13418,13451, - 147,99,108,111,99,107,58,104,111,117,114,0,1,23,2049,12977,10,13437,13472,147, - 99,108,111,99,107,58,109,105,110,117,116,101,0,1,24,2049,12977,10,13456,13493, - 147,99,108,111,99,107,58,115,101,99,111,110,100,0,1,25,2049,12977,10,13477, - 13515,147,99,108,111,99,107,58,117,116,99,58,100,97,121,0,1,26,2049,12977, - 10,13498,13539,147,99,108,111,99,107,58,117,116,99,58,109,111,110,116,104,0, - 1,27,2049,12977,10,13520,13562,147,99,108,111,99,107,58,117,116,99,58,121,101, - 97,114,0,1,28,2049,12977,10,13544,13585,147,99,108,111,99,107,58,117,116,99, - 58,104,111,117,114,0,1,29,2049,12977,10,13567,13610,147,99,108,111,99,107,58, - 117,116,99,58,109,105,110,117,116,101,0,1,30,2049,12977,10,13590,13635,147,99, - 108,111,99,107,58,117,116,99,58,115,101,99,111,110,100,0,1,31,2049,12977, - 10,13615,13656,147,117,110,105,120,58,103,101,116,45,99,119,100,0,2049,3702,112, - 119,100,0,1,13658,1,0,2049,13186,2,2049,10570,2049,3951,4,2049,13206,1,0,2049, - 3702,115,121,115,58,97,114,103,118,0,1,13680,2049,200,2049,161,15,8,2049,82, - 17,2049,3702,47,0,1,13702,2049,4010,10,13640,13736,147,117,110,105,120,58,99,111, - 117,110,116,45,102,105,108,101,115,45,105,110,45,99,119,100,0,2049,3702,108, - 115,32,45,49,32,124,32,119,99,32,45,108,0,1,13738,1,0,2049,13186,2, - 2049,10570,2049,3951,2049,221,4,2049,13206,10,13709,13791,147,117,110,105,120,58,102,111, - 114,45,101,97,99,104,45,102,105,108,101,0,2049,3702,108,115,32,45,49,32, - 45,112,0,1,13793,1,0,2049,13186,2049,13736,1793,13826,1793,13821,2049,10570,2049,3657,67502597, - 8,10,1,13814,2049,2088,10,1,13812,2049,2263,2049,13206,3,10,13769,13849,147,114,97, - 110,100,111,109,58,98,121,116,101,0,2049,3702,47,100,101,118,47,117,114,97, - 110,100,111,109,0,1,13851,1,0,2049,10167,1,10204,2049,2088,2049,10186,10,13769,13889, - 147,110,58,114,97,110,100,111,109,0,2049,13849,1,-8,24,2049,13849,17,1,-8, - 24,2049,13849,17,1,8,24,2049,13849,17,10,13877,13918,134,74,85,77,80,0,-2023489525, - -180170029,1872770499,2012404571,13910,13927,134,107,0,0,13922,13933,134,116,0,0,13928,13940,134,115,48, - 0,0,13934,13947,134,115,49,0,0,13941,13954,134,115,50,0,0,13948,13961,134,115, - 51,0,0,13955,13972,147,114,101,115,101,101,100,0,2,4097,13947,2,4097,13954,2, - 4097,13961,2,4097,13927,4097,13933,10,13962,13995,147,114,111,116,108,0,4097,13927,1793,14005, - 3841,13927,2049,2770,24,10,1,13999,1793,14016,1,32,3841,13927,18,24,10,1,14009,2049, - 2103,22,10,13987,14031,147,114,101,115,42,42,0,3841,13940,1,5,19,1,7,2049, - 13995,1,9,19,10,14022,14052,147,110,101,120,116,0,3841,13947,2,1,-9,24,5, - 3841,13961,3841,13940,3841,13954,386269701,1285,386269701,100926980,85394690,386269701,386270726,4097,13954,4097,13947,4097,13940,1, - 11,2049,13995,4097,13961,10,14044,14095,147,120,111,114,45,101,114,0,386860290,5,386860290,5, - 386860290,5,386860290,5,101058054,101058054,10,14085,14115,147,106,117,109,112,63,0,1793,14122,1,13918, - 17,15,10,1,14117,2049,2076,1,1,4,2049,2770,24,21,10,14106,14143,147,105,110, - 110,101,114,0,1,32,1793,14170,2,2049,9482,2049,14115,1793,14164,1793,14159,2049,14095,10, - 1,14156,2049,2076,10,1,14154,9,2049,14052,10,1,14147,2049,9539,10,13877,14200,147,114, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9320,9465, + 147,110,101,120,116,0,3841,9319,1,9329,17,2049,3020,10,9457,9481,147,112,114,101, + 112,0,1,9319,2049,3020,1,0,3841,9319,1,9329,17,16,10,9473,9502,147,100,111, + 110,101,0,1,9319,2049,3035,10,9276,9512,147,73,0,3841,9319,1,9329,17,15,10, + 9507,9524,147,74,0,3841,9319,1,9329,17,2049,2932,15,10,9519,9538,147,75,0,3841, + 9319,1,9329,17,1,2,18,15,10,9533,9569,147,116,105,109,101,115,60,119,105, + 116,104,45,105,110,100,101,120,62,0,2049,9481,4,1793,9589,25,2049,2932,5,1, + 21,2049,2088,6,2049,9465,1,9574,7,10,1,9574,8,3,2049,9502,10,9548,9604,159, + 104,111,111,107,0,1,1793,2049,108,2049,1847,2049,2919,2049,108,10,9596,9627,147,115, + 101,116,45,104,111,111,107,0,2049,2919,16,10,9615,9641,147,117,110,104,111,111, + 107,0,2049,2919,2,2049,2919,4,16,10,9631,9665,147,105,111,58,101,110,117,109, + 101,114,97,116,101,0,27,10,9649,9679,147,105,111,58,113,117,101,114,121,0, + 28,10,9667,9694,147,105,111,58,105,110,118,111,107,101,0,29,10,9681,9704,134, + 83,108,111,116,0,6,9681,9720,147,105,111,58,115,99,97,110,45,102,111,114, + 0,1,-1,4097,9704,2049,9665,1793,9746,2049,9512,2049,9679,772,67502597,11,1793,9742,2049,9512, + 4097,9704,10,1,9737,9,10,1,9728,2049,9569,3,3841,9704,10,9705,9763,147,99,58, + 112,117,116,0,1793,9765,1,0,2049,9694,10,9754,9776,147,110,108,0,1,10,2049, + 9763,10,9770,9787,147,115,112,0,1,32,2049,9763,10,9781,9799,147,116,97,98,0, + 1,9,2049,9763,10,9792,9813,147,115,58,112,117,116,0,1,9763,2049,4028,10,9804, + 9827,147,110,58,112,117,116,0,2049,6095,2049,9813,10,9818,9841,147,114,101,115,101, + 116,0,2049,1556,25,5,3,6,1,1,18,1,9843,7,10,9832,9868,147,100,117, + 109,112,45,115,116,97,99,107,0,2049,1556,25,3,5,2049,9868,6,2,2049,9827, + 2049,9787,10,9854,9890,147,70,82,69,69,0,2049,3573,1,1025,18,2049,1847,18,10, + 9882,9909,147,102,105,101,108,100,115,0,3841,2,2049,108,2049,108,2049,108,10,9899, + 9935,147,105,110,118,97,108,105,100,45,110,97,109,101,63,0,2,1,32,2049, + 4159,10,9918,9952,147,114,101,119,114,105,116,101,0,1793,9966,1,32,1793,9961,1, + 95,10,1,9958,2049,2293,10,1,9954,2049,4508,10,9941,9980,147,101,110,116,114,121, + 0,2049,1847,1793,9986,8,10,1,9984,2049,2076,4097,2,10,1793,10012,1793,10007,2049,9909, + 2049,9935,1,9952,9,2049,122,10,1,9997,2049,9980,10,1,9995,9882,10031,134,105,111, + 58,70,105,108,101,115,121,115,116,101,109,0,0,10014,10044,147,105,100,101,110, + 116,105,102,121,0,3841,10031,2049,2578,1793,10111,1,4,2049,9720,2,2049,2613,1793,10099, + 3,2049,3702,73,79,32,68,69,86,73,67,69,32,84,89,80,69,32,48,48, + 48,52,32,78,79,84,32,70,79,85,78,68,0,1,10062,2049,9813,2049,9776,10, + 1,10059,1793,10106,4097,10031,10,1,10103,2049,67,10,1,10050,9,10,9882,10136,147,105, + 111,58,102,105,108,101,45,111,112,101,114,97,116,105,111,110,0,2049,10044,3841, + 10031,2049,9694,10,10115,0,134,102,105,108,101,58,82,0,10143,1,134,102,105,108, + 101,58,87,0,10153,2,134,102,105,108,101,58,65,0,10163,3,134,102,105,108, + 101,58,82,43,0,10173,10197,147,102,105,108,101,58,111,112,101,110,0,1,0, + 2049,10136,10,10184,10216,147,102,105,108,101,58,99,108,111,115,101,0,1,1,2049, + 10136,10,10202,10234,147,102,105,108,101,58,114,101,97,100,0,1,2,2049,10136,10, + 10221,10253,147,102,105,108,101,58,119,114,105,116,101,0,1,3,2049,10136,10,10239, + 10271,147,102,105,108,101,58,116,101,108,108,0,1,4,2049,10136,10,10258,10289,147, + 102,105,108,101,58,115,101,101,107,0,1,5,2049,10136,10,10276,10307,147,102,105, + 108,101,58,115,105,122,101,0,1,6,2049,10136,10,10294,10327,147,102,105,108,101, + 58,100,101,108,101,116,101,0,1,7,2049,10136,10,10312,10346,147,102,105,108,101, + 58,102,108,117,115,104,0,1,8,2049,10136,10,10332,10367,147,102,105,108,101,58, + 101,120,105,115,116,115,63,0,1,0,2049,10197,2,2049,2594,1793,10381,2049,10216,2049, + 2439,10,1,10376,1793,10389,3,2049,2451,10,1,10385,2049,67,10,10351,10420,147,102,105, + 108,101,58,111,112,101,110,60,102,111,114,45,114,101,97,100,105,110,103,62, + 0,1,0,2049,10197,2,2049,10307,4,10,10394,10454,147,102,105,108,101,58,111,112, + 101,110,60,102,111,114,45,97,112,112,101,110,100,62,0,1,2,2049,10197,2, + 2049,10307,4,10,10429,10489,147,102,105,108,101,58,111,112,101,110,60,102,111,114, + 45,119,114,105,116,105,110,103,62,0,1,1,2049,10197,10,10463,10501,134,70,73, + 68,0,0,10494,10510,134,83,105,122,101,0,0,10502,10521,134,65,99,116,105,111, + 110,0,0,10511,10532,134,66,117,102,102,101,114,0,0,10522,10542,147,45,101,111, + 102,63,0,3841,10501,2049,10271,3841,10510,13,10,10533,10562,147,112,114,101,115,101,114, + 118,101,0,1,10501,1793,10577,1,10510,1793,10572,8,10,1,10570,2049,3118,10,1,10566, + 2049,3118,10,10463,10600,147,102,105,108,101,58,114,101,97,100,45,108,105,110,101, + 0,4097,10501,1793,10657,2049,1847,2,4097,10532,2049,3480,1793,10649,3841,10501,2049,10234,2,2049, + 3388,1793,10626,1,13,11,10,1,10622,1793,10634,1,10,11,10,1,10630,1793,10642,1, + 0,11,10,1,10638,2049,2140,22,22,10,1,10613,2049,2234,2049,3412,3,10,1,10604, + 2049,3504,3841,10532,10,10582,10686,147,102,105,108,101,58,102,111,114,45,101,97,99, + 104,45,108,105,110,101,0,1793,10717,4097,10521,2049,10420,4097,10501,4097,10510,1793,10708,3841, + 10501,2049,10600,3841,10521,8,2049,10542,10,1,10698,2049,2208,3841,10501,2049,10216,10,1,10688, + 2049,10562,10,10664,10729,134,70,73,68,0,0,10722,10738,134,83,105,122,101,0,0, + 10664,10753,147,102,105,108,101,58,115,108,117,114,112,0,1793,10783,2049,10420,4097,10729, + 4097,10738,2049,3480,3841,10738,1793,10774,3841,10729,2049,10234,2049,3388,10,1,10767,2049,2263,3841, + 10729,2049,10216,10,1,10755,2049,3504,10,10739,10795,134,70,73,68,0,0,10739,10809,147, + 102,105,108,101,58,115,112,101,119,0,2049,10489,4097,10795,1793,10820,3841,10795,2049,10253, + 10,1,10815,2049,4028,3841,10795,2049,10216,10,10796,10849,134,105,111,58,70,108,111,97, + 116,105,110,103,80,111,105,110,116,0,0,10829,10862,147,105,100,101,110,116,105, + 102,121,0,3841,10849,2049,2578,1793,10929,1,2,2049,9720,2,2049,2613,1793,10917,3,2049, + 3702,73,79,32,68,69,86,73,67,69,32,84,89,80,69,32,48,48,48,50, + 32,78,79,84,32,70,79,85,78,68,0,1,10880,2049,9813,2049,9776,10,1,10877, + 1793,10924,4097,10849,10,1,10921,2049,67,10,1,10868,9,10,10796,10955,147,105,111,58, + 102,108,111,97,116,45,111,112,101,114,97,116,105,111,110,0,2049,10862,3841,10849, + 2049,9694,10,10933,10976,147,110,58,116,111,45,102,108,111,97,116,0,1,0,2049, + 10955,10,10962,10995,147,115,58,116,111,45,102,108,111,97,116,0,1,1,2049,10955, + 10,10981,11015,147,102,58,116,111,45,110,117,109,98,101,114,0,1,2,2049,10955, + 10,11000,11035,147,102,58,116,111,45,115,116,114,105,110,103,0,2049,3683,2,1, + 3,2049,10955,10,11020,11050,147,102,58,43,0,1,4,2049,10955,10,11043,11062,147,102, + 58,45,0,1,5,2049,10955,10,11055,11074,147,102,58,42,0,1,6,2049,10955,10, + 11067,11086,147,102,58,47,0,1,7,2049,10955,10,11079,11102,147,102,58,102,108,111, + 111,114,0,1,8,2049,10955,10,11091,11120,147,102,58,99,101,105,108,105,110,103, + 0,1,9,2049,10955,10,11107,11135,147,102,58,115,113,114,116,0,1,10,2049,10955, + 10,11125,11149,147,102,58,101,113,63,0,1,11,2049,10955,10,11140,11164,147,102,58, + 45,101,113,63,0,1,12,2049,10955,10,11154,11178,147,102,58,108,116,63,0,1, + 13,2049,10955,10,11169,11192,147,102,58,103,116,63,0,1,14,2049,10955,10,11183,11208, + 147,102,58,100,101,112,116,104,0,1,15,2049,10955,10,11197,11222,147,102,58,100, + 117,112,0,1,16,2049,10955,10,11213,11237,147,102,58,100,114,111,112,0,1,17, + 2049,10955,10,11227,11252,147,102,58,115,119,97,112,0,1,18,2049,10955,10,11242,11266, + 147,102,58,108,111,103,0,1,19,2049,10955,10,11257,11282,147,102,58,112,111,119, + 101,114,0,1,20,2049,10955,10,11271,11296,147,102,58,115,105,110,0,1,21,2049, + 10955,10,11287,11310,147,102,58,99,111,115,0,1,22,2049,10955,10,11301,11324,147,102, + 58,116,97,110,0,1,23,2049,10955,10,11315,11339,147,102,58,97,115,105,110,0, + 1,24,2049,10955,10,11329,11354,147,102,58,97,99,111,115,0,1,25,2049,10955,10, + 11344,11369,147,102,58,97,116,97,110,0,1,26,2049,10955,10,11359,11384,147,102,58, + 112,117,115,104,0,1,27,2049,10955,10,11374,11398,147,102,58,112,111,112,0,1, + 28,2049,10955,10,11389,11415,147,102,58,97,100,101,112,116,104,0,1,29,2049,10955, + 10,11403,11432,147,102,58,115,113,117,97,114,101,0,2049,11222,2049,11074,10,11420,11447, + 147,102,58,111,118,101,114,0,2049,11384,2049,11222,2049,11398,2049,11252,10,11437,11466,147, + 102,58,116,117,99,107,0,2049,11222,2049,11384,2049,11252,2049,11398,10,11456,11484,147,102, + 58,110,105,112,0,2049,11252,2049,11237,10,11475,11504,147,102,58,100,114,111,112,45, + 112,97,105,114,0,2049,11237,2049,11237,10,11489,11523,147,102,58,100,117,112,45,112, + 97,105,114,0,2049,11447,2049,11447,10,11509,11537,147,102,58,114,111,116,0,2049,11384, + 2049,11252,2049,11398,2049,11252,10,11528,11561,147,102,58,112,111,115,105,116,105,118,101, + 63,0,1,0,2049,10976,2049,11192,10,11546,11583,147,102,58,110,101,103,97,116,105, + 118,101,63,0,1,0,2049,10976,2049,11178,10,11568,11602,147,102,58,110,101,103,97, + 116,101,0,1,-1,2049,10976,2049,11074,10,11590,11618,147,102,58,97,98,115,0,2049, + 11222,2049,11583,1793,11627,2049,11602,10,1,11624,9,10,11609,11643,159,112,114,101,102,105, + 120,58,46,0,2049,1818,1793,11650,2049,3728,10,1,11647,1793,11657,2049,3657,10,1,11654, + 2049,67,1,10995,2049,147,10,11631,11675,147,102,58,112,117,116,0,2049,11035,2049,9813, + 10,11666,11688,147,102,58,80,73,0,2049,3702,51,46,49,52,49,53,57,50,0, + 1,11690,2049,10995,10,11680,11711,147,102,58,69,0,2049,3702,50,46,55,49,56,50, + 56,49,0,1,11713,2049,10995,10,11704,11736,147,102,58,78,65,78,0,2049,3702,48, + 0,1,11738,2049,10995,2049,3702,48,0,1,11746,2049,10995,2049,11086,10,11727,11764,147,102, + 58,73,78,70,0,2049,3702,49,46,48,0,1,11766,2049,10995,2049,3702,48,0,1, + 11776,2049,10995,2049,11086,10,11755,11795,147,102,58,45,73,78,70,0,2049,3702,45,49, + 46,48,0,1,11797,2049,10995,2049,3702,48,0,1,11808,2049,10995,2049,11086,10,11785,11827, + 147,102,58,110,97,110,63,0,2049,11222,2049,11164,10,11817,11842,147,102,58,105,110, + 102,63,0,2049,11764,2049,11149,10,11832,11858,147,102,58,45,105,110,102,63,0,2049, + 11795,2049,11149,10,11847,11874,147,102,58,114,111,117,110,100,0,2049,11222,2049,11583,1793, + 11895,2049,3702,48,46,53,0,1,11882,2049,10995,2049,11062,2049,11120,10,1,11880,1793,11914, + 2049,3702,48,46,53,0,1,11901,2049,10995,2049,11050,2049,11102,10,1,11899,2049,67,10, + 11863,11928,147,102,58,109,105,110,0,2049,11523,2049,11178,1,11237,1,11484,2049,67,10, + 11919,11948,147,102,58,109,97,120,0,2049,11523,2049,11192,1,11237,1,11484,2049,67,10, + 11939,11970,147,102,58,108,105,109,105,116,0,2049,11252,2049,11384,2049,11928,2049,11398,2049, + 11948,10,11959,11995,147,102,58,98,101,116,119,101,101,110,63,0,2049,11537,2049,11222, + 2049,11384,2049,11537,2049,11537,2049,11970,2049,11398,2049,11149,10,11981,12021,147,102,58,105,110, + 99,0,2049,3702,49,0,1,12023,2049,10995,2049,11050,10,12012,12041,147,102,58,100,101, + 99,0,2049,3702,49,0,1,12043,2049,10995,2049,11062,10,12032,12062,147,102,58,99,97, + 115,101,0,2049,11447,2049,11149,1793,12074,2049,11237,8,1,-1,10,1,12068,1793,12082,3, + 1,0,10,1,12078,2049,67,25,6,771,10,12052,12100,147,102,58,115,105,103,110, + 0,2049,11222,2049,3702,48,0,1,12104,2049,10995,2049,11149,1793,12119,1,0,2049,11237,10, + 1,12114,2049,2505,2049,3702,48,0,1,12125,2049,10995,2049,11192,1793,12138,1,1,10,1, + 12135,1793,12145,1,-1,10,1,12142,2049,67,10,12090,2147483646,134,101,58,77,65,88,0, + 12150,-2147483646,134,101,58,77,73,78,0,12159,-2147483648,134,101,58,78,65,78,0,12168,2147483647, + 134,101,58,73,78,70,0,12177,-2147483647,134,101,58,45,73,78,70,0,12186,12204,147, + 101,58,110,63,0,1,-2147483646,2049,2919,1,2147483646,2049,2932,2049,2950,10,12196,12225,147,101, + 58,109,97,120,63,0,1,2147483646,11,10,12215,12239,147,101,58,109,105,110,63,0, + 1,-2147483646,11,10,12229,12254,147,101,58,122,101,114,111,63,0,2049,2578,10,12243,12267, + 147,101,58,110,97,110,63,0,1,-2147483648,11,10,12257,12281,147,101,58,105,110,102, + 63,0,1,2147483647,11,10,12271,12296,147,101,58,45,105,110,102,63,0,1,-2147483647,11, + 10,12285,12310,147,101,58,99,108,105,112,0,1,-2147483646,1,2147483646,2049,2902,10,12300,12325, + 147,102,58,69,49,0,1793,12327,2049,3702,49,46,101,53,0,1,12329,2049,10995,10, + 12317,12351,147,102,58,45,115,104,105,102,116,0,2049,12325,2049,11074,10,12339,12368,147, + 102,58,43,115,104,105,102,116,0,2049,12325,2049,11086,10,12356,12390,147,102,58,115, + 105,103,110,101,100,45,115,113,114,116,0,2049,11222,2049,12100,2049,11618,2049,11135,2049, + 10976,2049,11074,10,12373,12416,147,102,58,43,101,110,99,111,100,101,0,2049,12390,2049, + 12351,10,12403,12434,147,102,58,45,101,110,99,111,100,101,0,2049,11222,2049,12100,2049, + 12368,2049,11222,2049,11074,2049,10976,2049,11074,10,12421,12468,147,102,58,115,105,103,110,101, + 100,45,115,113,117,97,114,101,0,2049,11222,2049,12100,2049,11222,2049,11074,2049,10976,2049, + 11074,10,12449,12491,147,102,58,116,111,45,101,0,2049,11222,2049,11827,1793,12503,2049,11237, + 3,1,-2147483648,10,1,12497,2049,2505,2049,11222,2049,11842,1793,12519,2049,11237,3,1,2147483647,10, + 1,12513,2049,2505,2049,11222,2049,11858,1793,12535,2049,11237,3,1,-2147483647,10,1,12529,2049,2505, + 2049,12416,2049,11874,2049,11015,2049,12310,1,-2147483646,1793,12554,2049,11237,10,1,12551,2049,2293,1, + 2147483646,1793,12565,2049,11237,10,1,12562,2049,2293,10,12481,12580,147,101,58,116,111,45,102, + 0,1,-2147483648,1793,12588,3,2049,11736,10,1,12584,2049,2293,1,2147483647,1793,12600,3,2049,11764, + 10,1,12596,2049,2293,1,-2147483647,1793,12612,3,2049,11795,10,1,12608,2049,2293,2049,10976,2049, + 12434,10,12570,12632,147,102,58,115,116,111,114,101,0,1793,12637,2049,12491,10,1,12634, + 2049,2076,16,10,12621,12654,147,102,58,102,101,116,99,104,0,15,2049,12580,10,12643, + 12674,147,102,58,100,117,109,112,45,115,116,97,99,107,0,2049,11208,2,1793,12682, + 2049,11384,10,1,12679,2049,2263,1793,12697,2049,11398,2049,11222,2049,11675,2049,9787,10,1,12688, + 2049,2263,10,12658,12719,147,102,58,100,117,109,112,45,97,115,116,97,99,107,0, + 2049,11415,2,1793,12727,2049,11398,10,1,12724,2049,2263,1793,12742,2049,11222,2049,11675,2049,9787, + 2049,11384,10,1,12733,2049,2263,10,12702,12756,147,101,58,112,117,116,0,1,2147483646,1793, + 12773,2049,3702,101,58,77,65,88,0,1,12762,2049,9813,10,1,12760,2049,2293,1,-2147483646, + 1793,12794,2049,3702,101,58,77,73,78,0,1,12783,2049,9813,10,1,12781,2049,2293,1, + 0,1793,12813,2049,3702,101,58,48,0,1,12804,2049,9813,10,1,12802,2049,2293,1,-2147483648, + 1793,12834,2049,3702,101,58,78,65,78,0,1,12823,2049,9813,10,1,12821,2049,2293,1, + 2147483647,1793,12855,2049,3702,101,58,73,78,70,0,1,12844,2049,9813,10,1,12842,2049,2293, + 1,-2147483647,1793,12877,2049,3702,101,58,45,73,78,70,0,1,12865,2049,9813,10,1,12863, + 2049,2293,2049,12580,2049,11675,10,12747,12904,134,105,111,58,85,110,105,120,83,121,115, + 99,97,108,108,0,0,12886,12917,147,105,100,101,110,116,105,102,121,0,3841,12904, + 2049,2578,1793,12984,1,8,2049,9720,2,2049,2613,1793,12972,3,2049,3702,73,79,32,68, + 69,86,73,67,69,32,84,89,80,69,32,48,48,48,56,32,78,79,84,32, + 70,79,85,78,68,0,1,12935,2049,9813,2049,9776,10,1,12932,1793,12979,4097,12904,10, + 1,12976,2049,67,10,1,12923,9,10,12747,13007,147,105,111,58,117,110,105,120,45, + 115,121,115,99,97,108,108,0,2049,12917,3841,12904,2049,9694,10,12988,13029,147,117,110, + 105,120,58,115,121,115,116,101,109,0,1,0,2049,13007,10,13014,13047,147,117,110, + 105,120,58,102,111,114,107,0,1,1,2049,13007,10,13034,13066,147,117,110,105,120, + 58,101,120,101,99,48,0,1,2,2049,13007,10,13052,13085,147,117,110,105,120,58, + 101,120,101,99,49,0,1,3,2049,13007,10,13071,13104,147,117,110,105,120,58,101, + 120,101,99,50,0,1,4,2049,13007,10,13090,13123,147,117,110,105,120,58,101,120, + 101,99,51,0,1,5,2049,13007,10,13109,13141,147,117,110,105,120,58,101,120,105, + 116,0,1,6,2049,13007,10,13128,13161,147,117,110,105,120,58,103,101,116,112,105, + 100,0,1,7,2049,13007,10,13146,13179,147,117,110,105,120,58,119,97,105,116,0, + 1,8,2049,13007,10,13166,13197,147,117,110,105,120,58,107,105,108,108,0,1,9, + 2049,13007,10,13184,13216,147,117,110,105,120,58,112,111,112,101,110,0,1,10,2049, + 13007,10,13202,13236,147,117,110,105,120,58,112,99,108,111,115,101,0,1,11,2049, + 13007,10,13221,13255,147,117,110,105,120,58,119,114,105,116,101,0,1793,13261,2,2049, + 82,10,1,13257,2049,2076,1,12,2049,13007,10,13241,13284,147,117,110,105,120,58,99, + 104,100,105,114,0,1,13,2049,13007,10,13270,13304,147,117,110,105,120,58,103,101, + 116,101,110,118,0,1,14,2049,13007,10,13289,13324,147,117,110,105,120,58,112,117, + 116,101,110,118,0,1,15,2049,13007,10,13309,13343,147,117,110,105,120,58,115,108, + 101,101,112,0,1,16,2049,13007,10,13329,13365,147,117,110,105,120,58,105,111,58, + 110,58,112,117,116,0,1,17,2049,13007,10,13348,13387,147,117,110,105,120,58,105, + 111,58,115,58,112,117,116,0,1,18,2049,13007,10,13370,13405,147,117,110,105,120, + 58,116,105,109,101,0,1,19,2049,13007,10,13392,13423,147,99,108,111,99,107,58, + 100,97,121,0,1,20,2049,13007,10,13410,13443,147,99,108,111,99,107,58,109,111, + 110,116,104,0,1,21,2049,13007,10,13428,13462,147,99,108,111,99,107,58,121,101, + 97,114,0,1,22,2049,13007,10,13448,13481,147,99,108,111,99,107,58,104,111,117, + 114,0,1,23,2049,13007,10,13467,13502,147,99,108,111,99,107,58,109,105,110,117, + 116,101,0,1,24,2049,13007,10,13486,13523,147,99,108,111,99,107,58,115,101,99, + 111,110,100,0,1,25,2049,13007,10,13507,13545,147,99,108,111,99,107,58,117,116, + 99,58,100,97,121,0,1,26,2049,13007,10,13528,13569,147,99,108,111,99,107,58, + 117,116,99,58,109,111,110,116,104,0,1,27,2049,13007,10,13550,13592,147,99,108, + 111,99,107,58,117,116,99,58,121,101,97,114,0,1,28,2049,13007,10,13574,13615, + 147,99,108,111,99,107,58,117,116,99,58,104,111,117,114,0,1,29,2049,13007, + 10,13597,13640,147,99,108,111,99,107,58,117,116,99,58,109,105,110,117,116,101, + 0,1,30,2049,13007,10,13620,13665,147,99,108,111,99,107,58,117,116,99,58,115, + 101,99,111,110,100,0,1,31,2049,13007,10,13645,13686,147,117,110,105,120,58,103, + 101,116,45,99,119,100,0,2049,3702,112,119,100,0,1,13688,1,0,2049,13216,2, + 2049,10600,2049,3951,4,2049,13236,1,0,2049,3702,115,121,115,58,97,114,103,118,0, + 1,13710,2049,200,2049,161,15,8,2049,82,17,2049,3702,47,0,1,13732,2049,4010,10, + 13670,13766,147,117,110,105,120,58,99,111,117,110,116,45,102,105,108,101,115,45, + 105,110,45,99,119,100,0,2049,3702,108,115,32,45,49,32,124,32,119,99,32, + 45,108,0,1,13768,1,0,2049,13216,2,2049,10600,2049,3951,2049,221,4,2049,13236,10, + 13739,13821,147,117,110,105,120,58,102,111,114,45,101,97,99,104,45,102,105,108, + 101,0,2049,3702,108,115,32,45,49,32,45,112,0,1,13823,1,0,2049,13216,2049, + 13766,1793,13856,1793,13851,2049,10600,2049,3657,67502597,8,10,1,13844,2049,2088,10,1,13842,2049, + 2263,2049,13236,3,10,13799,13879,147,114,97,110,100,111,109,58,98,121,116,101,0, + 2049,3702,47,100,101,118,47,117,114,97,110,100,111,109,0,1,13881,1,0,2049, + 10197,1,10234,2049,2088,2049,10216,10,13799,13919,147,110,58,114,97,110,100,111,109,0, + 2049,13879,1,-8,24,2049,13879,17,1,-8,24,2049,13879,17,1,8,24,2049,13879,17, + 10,13907,13948,134,74,85,77,80,0,-2023489525,-180170029,1872770499,2012404571,13940,13957,134,107,0,0,13952, + 13963,134,116,0,0,13958,13970,134,115,48,0,0,13964,13977,134,115,49,0,0,13971, + 13984,134,115,50,0,0,13978,13991,134,115,51,0,0,13985,14002,147,114,101,115,101, + 101,100,0,2,4097,13977,2,4097,13984,2,4097,13991,2,4097,13957,4097,13963,10,13992,14025, + 147,114,111,116,108,0,4097,13957,1793,14035,3841,13957,2049,2770,24,10,1,14029,1793,14046, + 1,32,3841,13957,18,24,10,1,14039,2049,2103,22,10,14017,14061,147,114,101,115,42, + 42,0,3841,13970,1,5,19,1,7,2049,14025,1,9,19,10,14052,14082,147,110,101, + 120,116,0,3841,13977,2,1,-9,24,5,3841,13991,3841,13970,3841,13984,386269701,1285,386269701,100926980, + 85394690,386269701,386270726,4097,13984,4097,13977,4097,13970,1,11,2049,14025,4097,13991,10,14074,14125,147,120, + 111,114,45,101,114,0,386860290,5,386860290,5,386860290,5,386860290,5,101058054,101058054,10,14115,14145,147, + 106,117,109,112,63,0,1793,14152,1,13948,17,15,10,1,14147,2049,2076,1,1,4, + 2049,2770,24,21,10,14136,14173,147,105,110,110,101,114,0,1,32,1793,14200,2,2049, + 9512,2049,14145,1793,14194,1793,14189,2049,14125,10,1,14186,2049,2076,10,1,14184,9,2049,14082, + 10,1,14177,2049,9569,10,13907,14230,147,114,97,110,100,111,109,58,120,111,114,111, + 115,104,105,114,111,49,50,56,42,42,0,2049,14082,2049,14061,10,14205,14265,147,114, 97,110,100,111,109,58,120,111,114,111,115,104,105,114,111,49,50,56,42,42, - 0,2049,14052,2049,14031,10,14175,14235,147,114,97,110,100,111,109,58,120,111,114,111, - 115,104,105,114,111,49,50,56,42,42,58,106,117,109,112,0,1,0,1,13961, - 1,0,1,13954,1,0,1,13947,1,0,1,13940,1,4,1793,14261,2049,9482,2049,14143, - 3,10,1,14255,2049,9539,269488144,10,14205,14301,147,114,97,110,100,111,109,58,120,111, - 114,111,115,104,105,114,111,49,50,56,42,42,58,115,101,116,45,115,101,101, - 100,0,2049,13972,1,100,1793,14310,2049,14052,10,1,14307,2049,2263,10,14267,14350,147,114, - 97,110,100,111,109,58,120,111,114,111,115,104,105,114,111,49,50,56,42,42, - 58,116,101,115,116,45,115,101,101,100,0,4097,13940,4097,13947,4097,13954,4097,13961,10, - 14315,14369,134,83,116,97,116,101,115,0,0,0,0,0,0,0,0,0,0,0, + 58,106,117,109,112,0,1,0,1,13991,1,0,1,13984,1,0,1,13977,1,0, + 1,13970,1,4,1793,14291,2049,9512,2049,14173,3,10,1,14285,2049,9569,269488144,10,14235,14331, + 147,114,97,110,100,111,109,58,120,111,114,111,115,104,105,114,111,49,50,56, + 42,42,58,115,101,116,45,115,101,101,100,0,2049,14002,1,100,1793,14340,2049,14082, + 10,1,14337,2049,2263,10,14297,14380,147,114,97,110,100,111,109,58,120,111,114,111, + 115,104,105,114,111,49,50,56,42,42,58,116,101,115,116,45,115,101,101,100, + 0,4097,13970,4097,13977,4097,13984,4097,13991,10,14345,14399,134,83,116,97,116,101,115,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, @@ -749,126 +750,126 @@ int32_t ngaImage[] = { 1793,17207,17385,17427,201912,0,10,1,10,2,10,3,10,4,10,5, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14359,15003,134,73,110, - 100,101,120,0,0,14994,15013,147,114,101,115,101,116,0,1,14369,67502597,2049,2932,17, - 2,15,1,30,24,4,15,23,1,1812433253,19,67502597,17,2049,2552,21,4,1,14369,17, - 16,10,15004,15055,147,114,97,110,100,111,109,105,122,101,100,0,1,1,1793,15069, - 2,2049,15013,2049,2919,2,1,624,14,10,1,15059,2049,2234,3,10,15041,15080,147,121, - 0,2,2049,2919,1,624,788,1,14369,17,15,2049,2552,21,4,1,14369,17,15,1, - -31,24,17,10,15075,15114,147,97,108,116,101,114,101,100,0,2,2049,15080,2,1, - 1,21,1,1073741823,19,1793,15142,1,2,197652,67502597,1,397,17,1,624,788,1,14369,17, - 15,23,10,1,15126,2049,2076,23,4,1,14369,17,16,10,15103,15166,147,115,99,114, - 97,109,98,108,101,100,0,1,0,1793,15180,2,2049,15114,2049,2919,2,1,624,14, - 10,1,15170,2049,2234,3,10,14315,15214,147,114,97,110,100,111,109,58,109,101,114, - 115,101,110,110,101,58,115,101,116,45,115,101,101,100,0,4097,14369,1,0,4097, - 15003,2049,15055,10,15186,15242,147,114,97,110,100,111,109,58,109,101,114,115,101,110, - 110,101,0,3841,15003,2049,2578,1,15166,9,3841,15003,1,14369,17,15,2,1,11,24, - 23,2,1,-7,24,1,1073741823,21,23,2,1,-15,24,1,2011365376,21,23,2,1,18, - 24,23,3841,15003,2049,2919,1,624,788,4097,15003,10,15223,1024,134,84,73,66,0,15291, - 15313,134,105,111,58,75,101,121,98,111,97,114,100,0,0,15298,15326,147,105,100, - 101,110,116,105,102,121,0,3841,15313,2049,2578,1793,15393,1,1,2049,9690,2,2049,2613, - 1793,15381,3,2049,3702,73,79,32,68,69,86,73,67,69,32,84,89,80,69,32, - 48,48,48,49,32,78,79,84,32,70,79,85,78,68,0,1,15344,2049,9783,2049, - 9746,10,1,15341,1793,15388,4097,15313,10,1,15385,2049,67,10,1,15332,9,10,15291,15406, - 147,99,58,103,101,116,0,2049,15326,3841,15313,2049,9664,10,15397,15423,147,103,97,116, - 104,101,114,0,2,1793,15430,1,8,11,10,1,15426,1793,15438,1,127,11,10,1, - 15434,2049,2103,22,1793,15447,3,10,1,15445,1793,15454,2049,3388,10,1,15451,2049,67,10, - 15413,15468,147,99,121,99,108,101,0,2049,15406,2049,2066,4,8,2049,2731,25,3,2049, - 15423,1,15468,7,10,15397,15499,147,112,97,114,115,101,45,117,110,116,105,108,0, - 1793,15511,2049,3683,2049,3480,2049,15468,771,2049,3354,10,1,15501,2049,3504,10,15484,15525,147, - 115,58,103,101,116,0,1793,15547,1793,15533,1,10,11,10,1,15529,1793,15541,1,13, - 11,10,1,15537,2049,2103,22,10,1,15527,2049,15499,10,15516,15568,134,105,111,58,83, - 99,114,105,112,116,105,110,103,0,4,15552,15581,147,105,100,101,110,116,105,102, - 121,0,3841,15568,2049,2578,1793,15648,1,9,2049,9690,2,2049,2613,1793,15636,3,2049,3702, - 73,79,32,68,69,86,73,67,69,32,84,89,80,69,32,48,48,48,57,32, - 78,79,84,32,70,79,85,78,68,0,1,15599,2049,9783,2049,9746,10,1,15596,1793, - 15643,4097,15568,10,1,15640,2049,67,10,1,15587,9,10,15516,15664,147,115,121,115,58, - 97,114,103,99,0,2049,15581,1,0,3841,15568,2049,9664,10,15652,15685,147,115,121,115, - 58,97,114,103,118,0,2049,3683,4,2049,15581,1,1,3841,15568,2049,9664,10,15673,15708, - 147,105,110,99,108,117,100,101,0,2049,15581,1,2,3841,15568,2049,9664,10,15697,15729, - 147,115,121,115,58,110,97,109,101,0,2049,3683,2049,15581,1,3,3841,15568,2049,9664, - 10,15717,15762,134,70,117,108,108,83,99,114,101,101,110,76,105,115,116,101,110, - 101,114,0,0,15740,15773,134,66,117,102,102,101,114,0,0,10,15763,15782,134,80, - 116,114,0,0,10,15775,15797,147,116,101,114,109,105,110,97,116,101,0,1,0, - 3841,15782,16,10,15784,15819,147,98,117,102,102,101,114,58,115,116,97,114,116,0, - 3841,15773,10,15803,15836,147,98,117,102,102,101,114,58,101,110,100,0,3841,15782,10, - 15822,15853,147,98,117,102,102,101,114,58,97,100,100,0,2049,15836,16,1,15782,2049, - 3020,2049,15797,10,15839,15877,147,98,117,102,102,101,114,58,103,101,116,0,1,15782, - 2049,3035,2049,15836,15,2049,15797,10,15863,15903,147,98,117,102,102,101,114,58,101,109, - 112,116,121,0,2049,15819,4097,15782,2049,15797,10,15887,15924,147,98,117,102,102,101,114, - 58,115,101,116,0,4097,15773,2049,15903,10,15910,15943,147,119,104,105,116,101,44,98, - 108,117,101,0,1,27,2049,9733,2049,3702,91,49,59,51,55,59,52,52,109,0, - 1,15949,2049,9783,10,15929,15979,147,119,104,105,116,101,44,98,108,97,99,107,0, - 1,27,2049,9733,2049,3702,91,48,59,51,55,59,52,48,109,0,1,15985,2049,9783, - 10,15964,16014,147,100,117,109,112,45,115,116,97,99,107,0,2049,1556,25,1,5, - 2049,2831,2049,3702,124,32,0,1,16023,2049,9783,1,1,1793,16052,2049,3702,97,0,1, - 16036,2049,3702,97,97,0,1,16042,2049,7044,2049,9797,10,1,16034,2049,2293,1,2,1793, - 16092,2049,3702,97,98,0,1,16062,2049,3702,97,98,98,97,0,1,16069,2049,7044,1, - 2,1793,16087,2049,9797,2049,9757,10,1,16082,2049,2263,10,1,16060,2049,2293,1,3,1793, - 16135,2049,3702,97,98,99,0,1,16102,2049,3702,97,98,99,99,98,97,0,1,16110, - 2049,7044,1,3,1793,16130,2049,9797,2049,9757,10,1,16125,2049,2263,10,1,16100,2049,2293, - 1,4,1793,16181,2049,3702,97,98,99,100,0,1,16145,2049,3702,97,98,99,100,100, - 99,98,97,0,1,16154,2049,7044,1,4,1793,16176,2049,9797,2049,9757,10,1,16171,2049, - 2263,10,1,16143,2049,2293,1,5,1793,16230,2049,3702,97,98,99,100,101,0,1,16191, - 2049,3702,97,98,99,100,101,101,100,99,98,97,0,1,16201,2049,7044,1,5,1793, - 16225,2049,9797,2049,9757,10,1,16220,2049,2263,10,1,16189,2049,2293,10,16000,16246,147,116, - 111,112,45,114,111,119,0,1,27,2049,9733,2049,3702,91,49,59,48,72,0,1, - 16252,2049,9783,10,16235,16276,147,99,108,101,97,114,45,114,111,119,0,1,80,1793, - 16283,2049,9757,10,1,16280,2049,2263,10,16263,16295,147,116,111,112,0,2049,16246,2049,15943, - 2049,16276,2049,16246,2049,9860,2049,1556,2049,2932,2049,3702,83,80,58,37,110,32,70,82, - 69,69,58,37,110,32,0,1,16311,2049,6875,2049,9783,2049,16014,10,16288,16349,147,98, - 111,116,116,111,109,45,114,111,119,0,1,27,2049,9733,2049,3702,91,50,52,59, - 48,72,0,1,16355,2049,9783,10,16335,16376,147,105,110,112,117,116,0,2049,16349,2049, - 15943,2049,16276,2049,16349,10,16367,16395,147,111,117,116,112,117,116,0,2049,16349,2049,15979, - 2049,16276,2049,16349,10,16385,16410,134,73,110,0,0,16404,16422,147,100,105,115,99,97, - 114,100,0,2049,15877,3,10,16411,16433,147,114,117,98,0,1,8,2049,9733,2049,9757, - 1,8,2049,9733,10,16426,16456,147,101,118,97,108,117,97,116,101,0,1,1024,2049, - 367,10,16444,16470,147,114,101,115,101,116,0,1,0,4097,16410,2049,15903,10,16461,16487, - 147,104,97,110,100,108,101,0,1,32,1793,16508,3841,16410,25,3,2049,16395,2049,16456, - 2049,9746,2049,16470,2049,16295,2049,16376,10,1,16491,2049,2293,1,13,1793,16533,3841,16410,25, - 3,2049,16395,2049,16456,2049,9746,2049,16470,2049,16295,2049,16376,10,1,16516,2049,2293,1,10, - 1793,16558,3841,16410,25,3,2049,16395,2049,16456,2049,9746,2049,16470,2049,16295,2049,16376,10,1, - 16541,2049,2293,1,127,1793,16579,3841,16410,25,3,2049,16422,2049,16433,1,16410,2049,3035,10, - 1,16566,2049,2293,1,8,1793,16600,3841,16410,25,3,2049,16422,2049,16433,1,16410,2049,3035, - 10,1,16587,2049,2293,2,2049,9733,2049,15853,1,16410,2049,3020,10,16477,16625,147,112,114, - 111,99,101,115,115,0,1,1024,2049,15924,2049,15406,2049,16487,3841,16410,1,80,11,1793, - 16647,1,0,4097,16410,2049,16376,10,1,16640,9,1,16629,7,10,16614,16662,147,105,110, - 105,116,0,2049,3702,115,116,116,121,32,99,98,114,101,97,107,32,45,101,99, - 104,111,0,1,16664,2049,12999,10,16654,16695,147,101,120,105,116,0,2049,3702,115,116, - 116,121,32,45,99,98,114,101,97,107,32,101,99,104,111,0,1,16697,2049,12999, - 1,0,2049,13111,10,15740,16733,147,99,108,101,97,114,0,1,27,2049,9733,2049,3702, - 91,50,74,0,1,16739,2049,9783,1,27,2049,9733,2049,3702,91,48,59,48,72,0, - 1,16753,2049,9783,10,16724,16789,147,108,105,115,116,101,110,58,102,117,108,108,115, - 99,114,101,101,110,58,98,121,101,0,2049,16695,10,16764,16813,147,108,105,115,116, - 101,110,58,102,117,108,108,115,99,114,101,101,110,0,2049,16662,2049,16733,2049,16295, - 2049,16376,2049,16625,10,16792,16834,134,78,111,69,99,104,111,0,0,16824,16846,147,118, - 101,114,115,105,111,110,0,3841,4,1,100,20,2049,9797,1,46,2049,9733,2049,9797, - 10,16835,16868,147,101,111,108,63,0,1793,16874,1,13,11,10,1,16870,1793,16882,1, - 10,11,10,1,16878,1793,16890,1,32,11,10,1,16886,2049,2140,22,22,10,16860,16907, - 147,118,97,108,105,100,63,0,2,2049,82,2049,2594,10,16897,16919,147,111,107,0, - 3841,16834,2049,2731,25,3,2049,1818,1793,16942,2049,9746,2049,3702,79,107,32,0,1,16933, - 2049,9783,10,1,16929,2049,73,10,16913,16960,147,99,104,101,99,107,45,101,111,102, - 0,2,1793,16967,1,-1,11,10,1,16963,1793,16975,1,4,11,10,1,16971,2049,2103, - 22,1793,16997,2049,3702,98,121,101,0,1,16984,2049,200,2049,161,15,8,10,1,16982, - 9,10,16947,17013,147,99,104,101,99,107,45,98,115,0,2,1793,17020,1,8,11, - 10,1,17016,1793,17028,1,127,11,10,1,17024,2049,2103,22,1793,17041,2049,3412,2049,3412, - 771,10,1,17035,9,10,17001,17054,147,115,58,103,101,116,0,1793,17083,1,1024,2049, - 3480,1793,17074,2049,15406,2,2049,3388,2049,16960,2049,17013,2049,16868,10,1,17062,2049,2234,2049, - 3354,2049,3795,10,1,17056,2049,3504,10,16824,17098,147,98,97,110,110,101,114,0,3841, - 16834,2049,2731,25,3,2049,3702,82,69,84,82,79,32,49,50,32,40,114,120,45, - 0,1,17106,2049,9783,2049,16846,1,41,2049,9733,2049,9746,2049,1543,2049,9797,2049,3702,32, - 77,65,88,44,32,84,73,66,32,64,32,49,48,50,53,44,32,72,101,97, - 112,32,64,32,0,1,17138,2049,9783,2049,1847,2049,9797,2049,9746,10,17088,17182,147,98, - 121,101,0,3841,15762,1793,17189,2049,16789,10,1,17186,9,1,0,2049,13111,10,17175,17207, - 147,108,105,115,116,101,110,0,3841,15762,1793,17214,2049,16813,10,1,17211,2049,2505,2049, - 16919,2049,17054,2049,16907,1793,17231,2049,367,2049,16919,10,1,17226,1793,17237,3,10,1,17235, - 2049,67,1,17220,7,10,17197,17259,147,105,109,97,103,101,58,115,97,118,101,0, - 1,1000,2049,9690,2049,9664,10,17245,17277,147,100,58,119,111,114,100,115,0,1793,17286, - 2049,165,2049,9783,2049,9757,10,1,17279,2049,7119,10,17266,17307,147,100,58,119,111,114, - 100,115,45,119,105,116,104,0,2049,1847,2049,4726,1793,17338,2049,165,2,2049,1847,2049, - 4328,1793,17327,2049,9783,2049,9757,10,1,17322,1793,17333,3,10,1,17331,2049,67,10,1, - 17313,2049,7119,10,17291,17362,147,100,105,115,112,108,97,121,45,105,102,45,108,101, - 102,116,0,2,2049,1847,2049,4642,1793,17374,2049,9783,2049,9757,10,1,17369,1793,17380,3, - 10,1,17378,2049,67,10,17291,17411,147,100,58,119,111,114,100,115,45,98,101,103, - 105,110,110,105,110,103,45,119,105,116,104,0,2049,1847,2049,4726,1793,17422,2049,165, - 2049,17362,10,1,17417,2049,7119,10,0 }; + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,14389,15033,134,73,110,100,101,120,0,0,15024,15043,147,114,101, + 115,101,116,0,1,14399,67502597,2049,2932,17,2,15,1,30,24,4,15,23,1,1812433253, + 19,67502597,17,2049,2552,21,4,1,14399,17,16,10,15034,15085,147,114,97,110,100,111, + 109,105,122,101,100,0,1,1,1793,15099,2,2049,15043,2049,2919,2,1,624,14,10, + 1,15089,2049,2234,3,10,15071,15110,147,121,0,2,2049,2919,1,624,788,1,14399,17, + 15,2049,2552,21,4,1,14399,17,15,1,-31,24,17,10,15105,15144,147,97,108,116, + 101,114,101,100,0,2,2049,15110,2,1,1,21,1,1073741823,19,1793,15172,1,2,197652, + 67502597,1,397,17,1,624,788,1,14399,17,15,23,10,1,15156,2049,2076,23,4,1, + 14399,17,16,10,15133,15196,147,115,99,114,97,109,98,108,101,100,0,1,0,1793, + 15210,2,2049,15144,2049,2919,2,1,624,14,10,1,15200,2049,2234,3,10,14345,15244,147, + 114,97,110,100,111,109,58,109,101,114,115,101,110,110,101,58,115,101,116,45, + 115,101,101,100,0,4097,14399,1,0,4097,15033,2049,15085,10,15216,15272,147,114,97,110, + 100,111,109,58,109,101,114,115,101,110,110,101,0,3841,15033,2049,2578,1,15196,9, + 3841,15033,1,14399,17,15,2,1,11,24,23,2,1,-7,24,1,1073741823,21,23,2, + 1,-15,24,1,2011365376,21,23,2,1,18,24,23,3841,15033,2049,2919,1,624,788,4097, + 15033,10,15253,1024,134,84,73,66,0,15321,15343,134,105,111,58,75,101,121,98,111, + 97,114,100,0,0,15328,15356,147,105,100,101,110,116,105,102,121,0,3841,15343,2049, + 2578,1793,15423,1,1,2049,9720,2,2049,2613,1793,15411,3,2049,3702,73,79,32,68,69, + 86,73,67,69,32,84,89,80,69,32,48,48,48,49,32,78,79,84,32,70, + 79,85,78,68,0,1,15374,2049,9813,2049,9776,10,1,15371,1793,15418,4097,15343,10,1, + 15415,2049,67,10,1,15362,9,10,15321,15436,147,99,58,103,101,116,0,2049,15356,3841, + 15343,2049,9694,10,15427,15453,147,103,97,116,104,101,114,0,2,1793,15460,1,8,11, + 10,1,15456,1793,15468,1,127,11,10,1,15464,2049,2103,22,1793,15477,3,10,1,15475, + 1793,15484,2049,3388,10,1,15481,2049,67,10,15443,15498,147,99,121,99,108,101,0,2049, + 15436,2049,2066,4,8,2049,2731,25,3,2049,15453,1,15498,7,10,15427,15529,147,112,97, + 114,115,101,45,117,110,116,105,108,0,1793,15541,2049,3683,2049,3480,2049,15498,771,2049, + 3354,10,1,15531,2049,3504,10,15514,15555,147,115,58,103,101,116,0,1793,15577,1793,15563, + 1,10,11,10,1,15559,1793,15571,1,13,11,10,1,15567,2049,2103,22,10,1,15557, + 2049,15529,10,15546,15598,134,105,111,58,83,99,114,105,112,116,105,110,103,0,4, + 15582,15611,147,105,100,101,110,116,105,102,121,0,3841,15598,2049,2578,1793,15678,1,9, + 2049,9720,2,2049,2613,1793,15666,3,2049,3702,73,79,32,68,69,86,73,67,69,32, + 84,89,80,69,32,48,48,48,57,32,78,79,84,32,70,79,85,78,68,0, + 1,15629,2049,9813,2049,9776,10,1,15626,1793,15673,4097,15598,10,1,15670,2049,67,10,1, + 15617,9,10,15546,15694,147,115,121,115,58,97,114,103,99,0,2049,15611,1,0,3841, + 15598,2049,9694,10,15682,15715,147,115,121,115,58,97,114,103,118,0,2049,3683,4,2049, + 15611,1,1,3841,15598,2049,9694,10,15703,15738,147,105,110,99,108,117,100,101,0,2049, + 15611,1,2,3841,15598,2049,9694,10,15727,15759,147,115,121,115,58,110,97,109,101,0, + 2049,3683,2049,15611,1,3,3841,15598,2049,9694,10,15747,15792,134,70,117,108,108,83,99, + 114,101,101,110,76,105,115,116,101,110,101,114,0,0,15770,15803,134,66,117,102, + 102,101,114,0,0,10,15793,15812,134,80,116,114,0,0,10,15805,15827,147,116,101, + 114,109,105,110,97,116,101,0,1,0,3841,15812,16,10,15814,15849,147,98,117,102, + 102,101,114,58,115,116,97,114,116,0,3841,15803,10,15833,15866,147,98,117,102,102, + 101,114,58,101,110,100,0,3841,15812,10,15852,15883,147,98,117,102,102,101,114,58, + 97,100,100,0,2049,15866,16,1,15812,2049,3020,2049,15827,10,15869,15907,147,98,117,102, + 102,101,114,58,103,101,116,0,1,15812,2049,3035,2049,15866,15,2049,15827,10,15893,15933, + 147,98,117,102,102,101,114,58,101,109,112,116,121,0,2049,15849,4097,15812,2049,15827, + 10,15917,15954,147,98,117,102,102,101,114,58,115,101,116,0,4097,15803,2049,15933,10, + 15940,15973,147,119,104,105,116,101,44,98,108,117,101,0,1,27,2049,9763,2049,3702, + 91,49,59,51,55,59,52,52,109,0,1,15979,2049,9813,10,15959,16009,147,119,104, + 105,116,101,44,98,108,97,99,107,0,1,27,2049,9763,2049,3702,91,48,59,51, + 55,59,52,48,109,0,1,16015,2049,9813,10,15994,16044,147,100,117,109,112,45,115, + 116,97,99,107,0,2049,1556,25,1,5,2049,2831,2049,3702,124,32,0,1,16053,2049, + 9813,1,1,1793,16082,2049,3702,97,0,1,16066,2049,3702,97,97,0,1,16072,2049,7044, + 2049,9827,10,1,16064,2049,2293,1,2,1793,16122,2049,3702,97,98,0,1,16092,2049,3702, + 97,98,98,97,0,1,16099,2049,7044,1,2,1793,16117,2049,9827,2049,9787,10,1,16112, + 2049,2263,10,1,16090,2049,2293,1,3,1793,16165,2049,3702,97,98,99,0,1,16132,2049, + 3702,97,98,99,99,98,97,0,1,16140,2049,7044,1,3,1793,16160,2049,9827,2049,9787, + 10,1,16155,2049,2263,10,1,16130,2049,2293,1,4,1793,16211,2049,3702,97,98,99,100, + 0,1,16175,2049,3702,97,98,99,100,100,99,98,97,0,1,16184,2049,7044,1,4, + 1793,16206,2049,9827,2049,9787,10,1,16201,2049,2263,10,1,16173,2049,2293,1,5,1793,16260, + 2049,3702,97,98,99,100,101,0,1,16221,2049,3702,97,98,99,100,101,101,100,99, + 98,97,0,1,16231,2049,7044,1,5,1793,16255,2049,9827,2049,9787,10,1,16250,2049,2263, + 10,1,16219,2049,2293,10,16030,16276,147,116,111,112,45,114,111,119,0,1,27,2049, + 9763,2049,3702,91,49,59,48,72,0,1,16282,2049,9813,10,16265,16306,147,99,108,101, + 97,114,45,114,111,119,0,1,80,1793,16313,2049,9787,10,1,16310,2049,2263,10,16293, + 16325,147,116,111,112,0,2049,16276,2049,15973,2049,16306,2049,16276,2049,9890,2049,1556,2049,2932, + 2049,3702,83,80,58,37,110,32,70,82,69,69,58,37,110,32,0,1,16341,2049, + 6875,2049,9813,2049,16044,10,16318,16379,147,98,111,116,116,111,109,45,114,111,119,0, + 1,27,2049,9763,2049,3702,91,50,52,59,48,72,0,1,16385,2049,9813,10,16365,16406, + 147,105,110,112,117,116,0,2049,16379,2049,15973,2049,16306,2049,16379,10,16397,16425,147,111, + 117,116,112,117,116,0,2049,16379,2049,16009,2049,16306,2049,16379,10,16415,16440,134,73,110, + 0,0,16434,16452,147,100,105,115,99,97,114,100,0,2049,15907,3,10,16441,16463,147, + 114,117,98,0,1,8,2049,9763,2049,9787,1,8,2049,9763,10,16456,16486,147,101,118, + 97,108,117,97,116,101,0,1,1024,2049,367,10,16474,16500,147,114,101,115,101,116, + 0,1,0,4097,16440,2049,15933,10,16491,16517,147,104,97,110,100,108,101,0,1,32, + 1793,16538,3841,16440,25,3,2049,16425,2049,16486,2049,9776,2049,16500,2049,16325,2049,16406,10,1, + 16521,2049,2293,1,13,1793,16563,3841,16440,25,3,2049,16425,2049,16486,2049,9776,2049,16500,2049, + 16325,2049,16406,10,1,16546,2049,2293,1,10,1793,16588,3841,16440,25,3,2049,16425,2049,16486, + 2049,9776,2049,16500,2049,16325,2049,16406,10,1,16571,2049,2293,1,127,1793,16609,3841,16440,25, + 3,2049,16452,2049,16463,1,16440,2049,3035,10,1,16596,2049,2293,1,8,1793,16630,3841,16440, + 25,3,2049,16452,2049,16463,1,16440,2049,3035,10,1,16617,2049,2293,2,2049,9763,2049,15883, + 1,16440,2049,3020,10,16507,16655,147,112,114,111,99,101,115,115,0,1,1024,2049,15954, + 2049,15436,2049,16517,3841,16440,1,80,11,1793,16677,1,0,4097,16440,2049,16406,10,1,16670, + 9,1,16659,7,10,16644,16692,147,105,110,105,116,0,2049,3702,115,116,116,121,32, + 99,98,114,101,97,107,32,45,101,99,104,111,0,1,16694,2049,13029,10,16684,16725, + 147,101,120,105,116,0,2049,3702,115,116,116,121,32,45,99,98,114,101,97,107, + 32,101,99,104,111,0,1,16727,2049,13029,1,0,2049,13141,10,15770,16763,147,99,108, + 101,97,114,0,1,27,2049,9763,2049,3702,91,50,74,0,1,16769,2049,9813,1,27, + 2049,9763,2049,3702,91,48,59,48,72,0,1,16783,2049,9813,10,16754,16819,147,108,105, + 115,116,101,110,58,102,117,108,108,115,99,114,101,101,110,58,98,121,101,0, + 2049,16725,10,16794,16843,147,108,105,115,116,101,110,58,102,117,108,108,115,99,114, + 101,101,110,0,2049,16692,2049,16763,2049,16325,2049,16406,2049,16655,10,16822,16864,134,78,111, + 69,99,104,111,0,0,16854,16876,147,118,101,114,115,105,111,110,0,3841,4,1, + 100,20,2049,9827,1,46,2049,9763,2049,9827,10,16865,16898,147,101,111,108,63,0,1793, + 16904,1,13,11,10,1,16900,1793,16912,1,10,11,10,1,16908,1793,16920,1,32,11, + 10,1,16916,2049,2140,22,22,10,16890,16937,147,118,97,108,105,100,63,0,2,2049, + 82,2049,2594,10,16927,16949,147,111,107,0,3841,16864,2049,2731,25,3,2049,1818,1793,16972, + 2049,9776,2049,3702,79,107,32,0,1,16963,2049,9813,10,1,16959,2049,73,10,16943,16990, + 147,99,104,101,99,107,45,101,111,102,0,2,1793,16997,1,-1,11,10,1,16993, + 1793,17005,1,4,11,10,1,17001,2049,2103,22,1793,17027,2049,3702,98,121,101,0,1, + 17014,2049,200,2049,161,15,8,10,1,17012,9,10,16977,17043,147,99,104,101,99,107, + 45,98,115,0,2,1793,17050,1,8,11,10,1,17046,1793,17058,1,127,11,10,1, + 17054,2049,2103,22,1793,17071,2049,3412,2049,3412,771,10,1,17065,9,10,17031,17084,147,115, + 58,103,101,116,0,1793,17113,1,1024,2049,3480,1793,17104,2049,15436,2,2049,3388,2049,16990, + 2049,17043,2049,16898,10,1,17092,2049,2234,2049,3354,2049,3795,10,1,17086,2049,3504,10,16854, + 17128,147,98,97,110,110,101,114,0,3841,16864,2049,2731,25,3,2049,3702,82,69,84, + 82,79,32,49,50,32,40,114,120,45,0,1,17136,2049,9813,2049,16876,1,41,2049, + 9763,2049,9776,2049,1543,2049,9827,2049,3702,32,77,65,88,44,32,84,73,66,32,64, + 32,49,48,50,53,44,32,72,101,97,112,32,64,32,0,1,17168,2049,9813,2049, + 1847,2049,9827,2049,9776,10,17118,17212,147,98,121,101,0,3841,15792,1793,17219,2049,16819,10, + 1,17216,9,1,0,2049,13141,10,17205,17237,147,108,105,115,116,101,110,0,3841,15792, + 1793,17244,2049,16843,10,1,17241,2049,2505,2049,16949,2049,17084,2049,16937,1793,17261,2049,367,2049, + 16949,10,1,17256,1793,17267,3,10,1,17265,2049,67,1,17250,7,10,17227,17289,147,105, + 109,97,103,101,58,115,97,118,101,0,1,1000,2049,9720,2049,9694,10,17275,17307,147, + 100,58,119,111,114,100,115,0,1793,17316,2049,165,2049,9813,2049,9787,10,1,17309,2049, + 7119,10,17296,17337,147,100,58,119,111,114,100,115,45,119,105,116,104,0,2049,1847, + 2049,4726,1793,17368,2049,165,2,2049,1847,2049,4328,1793,17357,2049,9813,2049,9787,10,1,17352, + 1793,17363,3,10,1,17361,2049,67,10,1,17343,2049,7119,10,17321,17392,147,100,105,115, + 112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1847,2049,4642,1793,17404, + 2049,9813,2049,9787,10,1,17399,1793,17410,3,10,1,17408,2049,67,10,17321,17441,147,100, + 58,119,111,114,100,115,45,98,101,103,105,110,110,105,110,103,45,119,105,116, + 104,0,2049,1847,2049,4726,1793,17452,2049,165,2049,17392,10,1,17447,2049,7119,10,0 }; diff --git a/source/retro.forth b/source/retro.forth index 91f51b9..9997f18 100644 --- a/source/retro.forth +++ b/source/retro.forth @@ -1464,8 +1464,15 @@ values reversed. offset into an address for use with `fetch` and `store`. ~~~ -:a:th (an-a) - + n:inc ; +:a:th (an-a) + n:inc ; +~~~ + +I use `a:th` to implement `a:fetch` and `a:store`, for easier +readability. + +~~~ +:a:fetch (an-v) a:th fetch ; +:a:store (van-) a:th store ; ~~~ `a:reduce` takes an array, a starting value, and a quote. It diff --git a/words.tsv b/words.tsv index 11b4287..7bbd639 100644 --- a/words.tsv +++ b/words.tsv @@ -82,6 +82,7 @@ a:counted-results q-a - - Run a quote and construct a new array from the returne a:dup a-b - - Make a copy of an array. Return the address of the copy. class:word {n/a} {n/a} a all a:ends-with? aa-f - - Return `TRUE` if a1 ends with a2 or `FALSE` otherwise. class:word {n/a} {n/a} a all a:eq? aa-f - - Compare all values in the array. Return `TRUE` if all values are equal or `FALSE` otherwise. This assumes the array contains only numeric values. class:word {n/a} {n/a} a all +a:fetch an-n - - Fetch the value stored at the specified index in the specified array. class:word { #0 #1 #3 } #2 a:fetch {n/a} global all a:filter aq-b - - For each item in the initial array, run the specified quote. If the quote returns `TRUE`, copy the item into a new array. If `FALSE`, discard it. Returns a pointer to the new array. class:word {n/a} {n/a} a all a:for-each aq- - - Execute the quote once for each item in the array. class:word {n/a} {n/a} a all a:from-string s-a - - Create a new array with the characters in the source string. class:word {n/a} {n/a} a all @@ -95,6 +96,7 @@ a:prepend aa-a - - Return a new array consisting of the values in a2 followed by a:reduce pnq-n - - Takes an array, a starting value, and a quote. This will apply the quote to each item in the array; the quote should consume two values and return one. class:word {n/a} {n/a} a all a:reverse a-b - - Reverse the order of items in a array. This will return a new array. class:word {n/a} {n/a} a all a:right an-a - - Return a new array containing the specified number of values from the right side of the array. class:word {n/a} {n/a} a all +a:store vna- - - Store a value into the array at the specified index. class:word #3 { #0 #1 #2 } #1 a:store {n/a} global all a:th an-b - - Return the actual address of the `n`th item in the array. class:word {n/a} {n/a} a all a:to-string a-s - - Create a new string from the provided array. This string will be stored in the temporal string buffers. class:word {n/a} {n/a} a all again - - - Close an unconditional loop. Branches back to the prior `repeat`. class:macro {n/a} {n/a} global all