remove deprecate words FossilOrigin-Name: d0ecbf2ac180314d604e62ca9462f118303c09084af969105d4dcecde8704535
11 files changed, 101 insertions(+), 363 deletions(-) M Makefile M RELEASE-NOTES M doc/Glossary-Concise.txt M doc/Glossary-Names-and-Stack.txt M doc/Glossary.html M doc/Glossary.txt M doc/words.tsv M example/irc-bot.retro M example/tuporo.retro M interface/deprecated.retro M vm/nga-c/image.c
M Makefile => Makefile +3 -3
@@ 78,9 78,9 @@ DEVICES += interface/final.retro GLOSSARY ?= ./bin/retro tools/glossary.retro ASSEMBLE ?= ./bin/retro-muri EXTEND ?= ./bin/retro-extend EXPORT ?= ./bin/retro-embedimage RETRO ?= ./bin/retro EXTEND ?= ./bin/retro-extend EXPORT ?= ./bin/retro-embedimage RETRO ?= ./bin/retro # -------------------------------------------------------------
M RELEASE-NOTES => RELEASE-NOTES +1 -0
@@ 9,6 9,7 @@ ================================================================ * nga-c: split device code into separate source files * removed words deprecated in 2022.8 ================================================================
M doc/Glossary-Concise.txt => doc/Glossary-Concise.txt +0 -30
@@ 193,9 193,6 @@ Access the parent loop index for the current loop. (For loops made using `indexe K D: -n A: - F: - Access the grandparent loop index for the current loop. (For loops made using `indexed-times`) NoEcho D: -a A: - F: - Deprecated. Variable. If TRUE, allow display of the startup banner when running listen. RewriteUnderscores D: -a A: - F: - Variable. When set to `TRUE`, Retro will replace underscores in strings with spaces. When `FALSE`, Retro does not. @@ 238,9 235,6 @@ Return `TRUE` if a1 begins with a2 or `FALSE` otherwise. a:chop D: a-a A: - F: - Return a new array containing all but the last value in the source array. a:contains-string? D: sa-f A: - F: - Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise. a:contains/string? D: sa-f A: - F: - Return `TRUE` if the string value is in the array or `FALSE` otherwise. @@ 283,12 277,6 @@ Calculate a hash value for a given array. a:index D: an-n A: - F: - Return the location of the first instance of the specified value in the array. a:index-of D: an-n A: - F: - Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array. a:index-of-string D: as-n A: - F: - Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array. a:index/string D: as-n A: - F: - Return the location of the first instance of the specified string in the array. @@ 1405,12 1393,6 @@ Remove the last character from a string. Returns a new string. s:const D: ss- A: - F: - Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string. s:contains-char? D: sc-f A: - F: - Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise. s:contains-string? D: ss-f A: - F: - Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. s:contains/char? D: sc-f A: - F: - Return `TRUE` if the character is present in the string or `FALSE` otherwise. @@ 1468,12 1450,6 @@ Read input from standard in (via `c:get`) until a whitespace is encountered. Ret s:hash D: s-n A: - F: - Calculate a hash value for a string. This uses the djb2 algorithm. s:index-of D: sc-n A: - F: - Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string. s:index-of-string D: ss-n A: - F: - Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. s:index/char D: sc-n A: - F: - Return the location of the first instance of the specified character in the string. @@ 1513,12 1489,6 @@ Return a new string containing the specified number of characters from the right s:skip D: - A: - F: - Internal helper function used to skip over a string in a definition. s:split D: sc-ss A: - F: - Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character. s:split-on-string D: ss-ss A: - F: - Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. s:split/char D: sc-ss A: - F: - Split a string on the first occurrence of the specified character.
M doc/Glossary-Names-and-Stack.txt => doc/Glossary-Names-and-Stack.txt +0 -10
@@ 63,7 63,6 @@ Heap D: -a A: - F: - I D: -n A: - F: - J D: -n A: - F: - K D: -n A: - F: - NoEcho D: -a A: - F: - RewriteUnderscores D: -a A: - F: - STRINGS D: -a A: - F: - @@ ScopeList D: -a A: - F: - 78,7 77,6 @@ a:-eq? D: aa-f A: - F: - a:append D: aa-a A: - F: - a:begins-with? D: aa-f A: - F: - a:chop D: a-a A: - F: - a:contains-string? D: sa-f A: - F: - a:contains/string? D: sa-f A: - F: - a:contains? D: na-f A: - F: - @@ a:copy D: aa- A: - F: - 93,8 91,6 @@ a:for-each D: aq- A: - F: - a:from-string D: s-a A: - F: - a:hash D: a-n A: - F: - a:index D: an-n A: - F: - a:index-of D: an-n A: - F: - a:index-of-string D: as-n A: - F: - a:index/string D: as-n A: - F: - a:indices D: av-a A: - F: - @@ a:indices/string D: as-a A: - F: - 467,8 463,6 @@ s:begins-with? D: ss-f A: - F: - s:case D: sSq- || sSq-s A: - F: - s:chop D: s-s A: - F: - s:const D: ss- A: - F: - s:contains-char? D: sc-f A: - F: - s:contains-string? D: ss-f A: - F: - s:contains/char? D: sc-f A: - F: - s:contains/string? D: ss-f A: - F: - @@ s:copy D: sa- A: - F: - 488,8 482,6 @@ s:format D: ...s-s A: - F: - s:get D: -s A: - F: - s:get-word D: -s A: - F: - s:hash D: s-n A: - F: - s:index-of D: sc-n A: - F: - s:index-of-string D: ss-n A: - F: - s:index/char D: sc-n A: - F: - s:index/string D: ss-n A: - F: - @@ s:keep D: s-s A: - F: - 503,8 495,6 @@ s:replace-all D: sss-s A: - F: - s:reverse D: s-s A: - F: - s:right D: sn-s A: - F: - s:skip D: - A: - F: - s:split D: sc-ss A: - F: - s:split-on-string D: ss-ss A: - F: - s:split/char D: sc-ss A: - F: - s:split/string D: ss-ss A: - F: - s:store D: csn- A: - F: -
M doc/Glossary.html => doc/Glossary.html +0 -74
@@ 480,13 480,6 @@ </div> <p>Access the grandparent loop index for the current loop. (For loops made using `indexed-times`)</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>global</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>NoEcho</h2> <div style='margin-left: 1em;'><p><b>Data:</b> -a<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Variable. If TRUE, allow display of the startup banner when running listen.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>global</td></tr><tr><td><b>Interface Layer:</b> </td><td>rre</td></tr></table><hr/> <h2>RewriteUnderscores</h2> <div style='margin-left: 1em;'><p><b>Data:</b> -a<br> @@ <b>Addr:</b> -<br> 585,13 578,6 @@ </div> <p>Return a new array containing all but the last value in the source array.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>a</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>a:contains-string?</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sa-f<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>a</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>a:contains/string?</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sa-f<br> @@ <b>Addr:</b> -<br> 694,20 680,6 @@ </div> <p>Return the location of the first instance of the specified value in the array.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>a</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>a:index-of</h2> <div style='margin-left: 1em;'><p><b>Data:</b> an-n<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>a</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>a:index-of-string</h2> <div style='margin-left: 1em;'><p><b>Data:</b> as-n<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>a</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>a:index/string</h2> <div style='margin-left: 1em;'><p><b>Data:</b> as-n<br> @@ <b>Addr:</b> -<br> 3521,20 3493,6 @@ </div> <p>Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:contains-char?</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sc-f<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:contains-string?</h2> <div style='margin-left: 1em;'><p><b>Data:</b> ss-f<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:contains/char?</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sc-f<br> @@ <b>Addr:</b> -<br> 3677,20 3635,6 @@ </div> <p>Calculate a hash value for a string. This uses the djb2 algorithm.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:index-of</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sc-n<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:index-of-string</h2> <div style='margin-left: 1em;'><p><b>Data:</b> ss-n<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:index/char</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sc-n<br> @@ <b>Addr:</b> -<br> 3782,24 3726,6 @@ </div> <p>Internal helper function used to skip over a string in a definition.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:split</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sc-ss<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><hr/> <h2>s:split-on-string</h2> <div style='margin-left: 1em;'><p><b>Data:</b> ss-ss<br> <b>Addr:</b> -<br> <b>Float:</b> -</p> </div> <p>Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string.</p> <table><tr><td><b>Class:</b> </td><td>class:word</td></tr><tr><td><b>Namespace:</b> </td><td>s</td></tr><tr><td><b>Interface Layer:</b> </td><td>all</td></tr></table><p><b>Example:</b> <br> <br> <xmp style='background:#f2f2f2'> 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl</xmp> </p> <hr/> <h2>s:split/char</h2> <div style='margin-left: 1em;'><p><b>Data:</b> sc-ss<br> <b>Addr:</b> -<br>
M doc/Glossary.txt => doc/Glossary.txt +0 -115
@@ 746,17 746,6 @@ Access the grandparent loop index for the current loop. (For loops made using `i Class: class:word | Namespace: global | Interface Layer: all ------------------------------------------------------------------------ NoEcho Data: -a Addr: - Float: - Deprecated. Variable. If TRUE, allow display of the startup banner when running listen. Class: class:word | Namespace: global | Interface Layer: rre ------------------------------------------------------------------------ RewriteUnderscores @@ Data: -a 911,17 900,6 @@ Return a new array containing all but the last value in the source array. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ a:contains-string? Data: sa-f Addr: - Float: - Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ a:contains/string? @@ Data: sa-f 1081,28 1059,6 @@ Return the location of the first instance of the specified value in the array. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ a:index-of Data: an-n Addr: - Float: - Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ a:index-of-string Data: as-n Addr: - Float: - Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array. Class: class:word | Namespace: a | Interface Layer: all ------------------------------------------------------------------------ a:index/string @@ Data: as-n 5446,28 5402,6 @@ Create a constant named s2, returning a pointer to s1. This will use `s:keep` to Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:contains-char? Data: sc-f Addr: - Float: - Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:contains-string? Data: ss-f Addr: - Float: - Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:contains/char? @@ Data: sc-f 5688,28 5622,6 @@ Calculate a hash value for a string. This uses the djb2 algorithm. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:index-of Data: sc-n Addr: - Float: - Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:index-of-string Data: ss-n Addr: - Float: - Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:index/char @@ Data: sc-n 5853,33 5765,6 @@ Internal helper function used to skip over a string in a definition. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:split Data: sc-ss Addr: - Float: - Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character. Class: class:word | Namespace: s | Interface Layer: all ------------------------------------------------------------------------ s:split-on-string Data: ss-ss Addr: - Float: - Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. Class: class:word | Namespace: s | Interface Layer: all Example #1: 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl ------------------------------------------------------------------------ s:split/char Data: sc-ss
M doc/words.tsv => doc/words.tsv +0 -10
@@ 63,7 63,6 @@ Heap -a - - Variable. Holds the address of the next available cell. class:data I -n - - Access the loop index for the current loop. (For loops made using `indexed-times`) class:word {n/a} {n/a} global all J -n - - Access the parent loop index for the current loop. (For loops made using `indexed-times`) class:word {n/a} {n/a} global all K -n - - Access the grandparent loop index for the current loop. (For loops made using `indexed-times`) class:word {n/a} {n/a} global all NoEcho -a - - Deprecated. Variable. If TRUE, allow display of the startup banner when running listen. class:word {n/a} {n/a} global rre RewriteUnderscores -a - - Variable. When set to `TRUE`, Retro will replace underscores in strings with spaces. When `FALSE`, Retro does not. class:data {n/a} {n/a} global all STRINGS -a - - Return the address of the start of the temporary string pool. This can be altered by changing the values of `TempStrings` and `TempStringMax`. class:word {n/a} {n/a} global all @@ ScopeList -a - - Variable. This holds some information used by `{{` and `}}`. class:data {n/a} {n/a} global all 78,7 77,6 @@ a:-eq? aa-f - - Compare all values in the array. Return `FALSE` if all values ar a:append aa-a - - Return a new array consisting of the values in a1 followed by the values in a2. class:word {n/a} {n/a} a all a:begins-with? aa-f - - Return `TRUE` if a1 begins with a2 or `FALSE` otherwise. class:word {n/a} {n/a} a all a:chop a-a - - Return a new array containing all but the last value in the source array. class:word {n/a} {n/a} a all a:contains-string? sa-f - - Deprecated. Use `a:contains/string?` instead. Return `TRUE` if the string value is in the array or `FALSE` otherwise. class:word {n/a} {n/a} a all a:contains/string? sa-f - - Return `TRUE` if the string value is in the array or `FALSE` otherwise. class:word {n/a} {n/a} a all a:contains? na-f - - Return `TRUE` if the value is in the array or `FALSE` otherwise. class:word {n/a} {n/a} a all @@ a:copy aa- - - Copy an array (a1) to a destination (a2). class:word {n/a} {n/a} a all 93,8 91,6 @@ a:for-each aq- - - Execute the quote once for each item in the array. class:wo a:from-string s-a - - Create a new array with the characters in the source string. class:word {n/a} {n/a} a all a:hash a-n - - Calculate a hash value for a given array. class:word {n/a} {n/a} a all a:index an-n - - Return the location of the first instance of the specified value in the array. class:word {n/a} {n/a} a all a:index-of an-n - - Deprecated. Use `a:index` instead. Return the location of the first instance of the specified value in the array. class:word {n/a} {n/a} a all a:index-of-string as-n - - Deprecated. Use `a:index/string` instead. Return the location of the first instance of the specified string in the array. class:word {n/a} {n/a} a all a:index/string as-n - - Return the location of the first instance of the specified string in the array. class:word {n/a} {n/a} a all a:indices av-a - - Return a new array with the indices the specified value was found at in the original array. class:word {n/a} {n/a} a all @@ a:indices/string as-a - - Return a new array with the indices of the specified string in the original array. class:word {n/a} {n/a} a all 467,8 463,6 @@ s:begins-with? ss-f - - Return `TRUE` if s1 begins with s2 or `FALSE` otherwise. s:case sSq- || sSq-s - - If the `s` matches `S`, discard `s` and run the quote before exiting the caller. If they do not match, discard the quote and leave `s` on the stack. class:word {n/a} {n/a} s all s:chop s-s - - Remove the last character from a string. Returns a new string. class:word {n/a} {n/a} s all s:const ss- - - Create a constant named s2, returning a pointer to s1. This will use `s:keep` to preserve the original string. class:word {n/a} {n/a} s all s:contains-char? sc-f - - Deprecated. Use `s:contains/char?` instead. Return `TRUE` if the character is present in the string or `FALSE` otherwise. class:word {n/a} {n/a} s all s:contains-string? ss-f - - Deprecated. Use `s:contains/string?` instead. Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. class:word {n/a} {n/a} s all s:contains/char? sc-f - - Return `TRUE` if the character is present in the string or `FALSE` otherwise. class:word {n/a} {n/a} s all s:contains/string? ss-f - - Return `TRUE` if the second string is present in the first string or `FALSE` otherwise. class:word {n/a} {n/a} s all @@ s:copy sa- - - Copy a string (s) to a destination (a). This will include the terminator character when copying. class:word {n/a} {n/a} s all 488,8 482,6 @@ s:format ...s-s - - Construct a new string using the template passed and items f s:get -s - - Read input from standard in (via `c:get`) until a CR or LF is encountered. Returns a string. class:word {n/a} {n/a} all rre s:get-word -s - - Read input from standard in (via `c:get`) until a whitespace is encountered. Returns a string. class:word {n/a} {n/a} all rre s:hash s-n - - Calculate a hash value for a string. This uses the djb2 algorithm. class:word {n/a} {n/a} s all s:index-of sc-n - - Deprecated. Use `s:index/char` instead. Return the location of the first instance of the specified character in the string. class:word {n/a} {n/a} s all s:index-of-string ss-n - - Derpecated. Use `s:index/string` instead. Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. class:word {n/a} {n/a} s all s:index/char sc-n - - Return the location of the first instance of the specified character in the string. class:word {n/a} {n/a} s all s:index/string ss-n - - Return the location of the first instance of the specified substring (s2) in the string (s1). Returns -1 if not found. class:word {n/a} {n/a} s all @@ s:keep s-s - - Store a string into the heap and return a pointer to the start of it. class:word {n/a} {n/a} s all 503,8 495,6 @@ s:replace-all sss-s - - Replace all instances of s2 in s1 with s3. class:word s:reverse s-s - - Reverse the order of ASCII characters in a string. class:word {n/a} {n/a} s all s:right sn-s - - Return a new string containing the specified number of characters from the right side of the string. class:word {n/a} {n/a} s all s:skip - - - Internal helper function used to skip over a string in a definition. class:word {n/a} {n/a} s all s:split sc-ss - - Deprecated. Use `s:split/char` instead. Split a string on the first occurrence of the specified character. class:word {n/a} {n/a} s all s:split-on-string ss-ss - - Deprecated. Use `s:split/string` instead. Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. class:word 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl {n/a} s all s:split/char sc-ss - - Split a string on the first occurrence of the specified character. class:word {n/a} {n/a} s all s:split/string ss-ss - - Split a string on the first occurrence of the specified string. After the split, the top stack item will be the part of the string before the specified substring, and the second item will be the rest of the original string. class:word 'Hello_Brave_World! 'Brave s:split-on-string s:put nl s:put nl {n/a} s all s:store csn- - - Store a character value into the string at the specified index. class:word $z 'abcdef #1 s:store {n/a} s all
M example/irc-bot.retro => example/irc-bot.retro +3 -3
@@ 75,7 75,7 @@ single socket. :connect (s-) socket:create !Sock $: s:split swap n:inc socket:configure $: s:split/char swap n:inc socket:configure @Sock socket:connect drop ; @@ :s:transmit @Sock socket:send drop-pair ; 146,7 146,7 @@ I pass it to `s:evaluate`, capturing and relaying the output. here 'PRIVMSG s:contains/string? ; :channel here 'PRIVMSG s:split-on-string drop #8 + $: s:split nip s:chop &Channel s:copy ; here 'PRIVMSG s:split/string drop #8 + $: s:split/char nip s:chop &Channel s:copy ; :transmit @@ 'PRIVMSG_ s:transmit 190,7 190,7 @@ I pass it to `s:evaluate`, capturing and relaying the output. run-code document drop dump-stack nl ; :process here 'PRIVMSG s:split-on-string drop $: s:split drop n:inc dup s:put nl here 'PRIVMSG s:split/string drop $: s:split/char drop n:inc dup s:put nl command ; ~~~
M example/tuporo.retro => example/tuporo.retro +1 -1
@@ 170,7 170,7 @@ server as there is no means provided of restricting writes using it. ~~~ :set-block (-) &Selector #3 + $/ s:split s:to-number swap n:inc s:chop swap block:set ; $/ s:split/char s:to-number swap n:inc s:chop swap block:set ; ~~~ And `handle-block` uses `display-block` to return a formatted text block
M interface/deprecated.retro => interface/deprecated.retro +0 -13
@@ 1,16 1,3 @@ These are planned to be removed in 2021.10. Please update your sources to use the newer names. ~~~ :s:split (sc-ss) s:split/char ; :s:split-on-string (ss-ss) s:split/string ; :s:contains-char? s:contains/char? ; :s:contains-string? s:contains/string? ; :a:contains-string? a:contains/string? ; :a:index-of a:index ; :a:index-of-string a:index/string ; :s:index-of s:index/char ; :s:index-of-string s:index/string ; ~~~
M vm/nga-c/image.c => vm/nga-c/image.c +93 -104
@@ 10,8 10,8 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif CELL ngaImageCells = 20101; CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10,1,10,2,10,3,10, CELL ngaImageCells = 19890; CELL ngaImage[] = { 1793,19387,19845,19889,202309,417,389,1249,1535,0,11254,0,10,1,10,2,10,3,10, 4,10,5,10,6,10,7,10,8,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,68223234, @@ 1,2575,85000450,1,656912,163,180,268505089,65,64,285281281,0,65,2063,10,101384453,0,9,10,68485378, 20,8 20,8 @@ CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10 1,251790353,101777669,1,17565186,109,524545,113,66,167838467,-1,134287105,3,61,659457,3,459023,130,2049,58, 25,2049,130,1793,137,2049,137,117506307,0,130,0,524545,28,135,168820993,0,149,1642241,149,134283523, 13,135,1793,130,524545,2049,130,1793,130,16846593,149,163,180,1793,66,16846593,149,135,180,1793, 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19853,17108737,3,2,524559,130, 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18834,1249,167841793, 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,19642,17108737,3,2,524559,130, 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,18623,1249,167841793, 216,11,17826049,0,216,2,15,25,524546,190,134287105,217,118,2305,218,459023,226,0,0,134287361, 217,221,659201,216,10,659969,7,2049,58,25,17694978,58,244,9,84152833,48,319750404,243,117507601,246, @@ 184618754,45,25,16974851,-1,168886532,1,134284289,1,259,134284289,0,246,660227,32,0,0,115,105,103, 170,7 170,7 @@ CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10 110,58,105,110,99,0,659713,1,10,3114,3139,168,12041,210720197721,110,58,100,101,99,0, 659969,1,10,3128,3158,168,12041,8246617666422322998,110,58,98,101,116,119,101,101,110,63,0,67503109, 1793,3166,67503109,67503109,2049,3106,10,1,3161,2049,2241,11,10,3142,3187,168,12041,249861296566813883,83,99, 111,112,101,76,105,115,116,0,19958,20012,10,3172,3198,168,12041,5864091,123,123,0,2049, 111,112,101,76,105,115,116,0,19747,19801,10,3172,3198,168,12041,5864091,123,123,0,2049, 1576,2,1,3187,2049,61,16,10,3190,3225,168,12041,-6305314778776785742,45,45,45,114,101,118,101, 97,108,45,45,45,0,2049,1576,1,3187,2049,3125,16,10,3207,3241,168,12041,5864159,125, @@ 125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, 918,102 918,91 @@ CELL ngaImage[] = { 1793,19598,20056,20100,202309,417,389,1249,1535,0,11254,0,10 10,18059,18097,168,18127,-4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,0,1,1, 2049,18052,10,18080,18122,168,18127,-4036225629868593021,98,108,111,99,107,58,115,101,116,45,102,105, 108,101,0,1,2,2049,18052,10,105,110,116,101,114,102,97,99,101,47,98,108, 111,99,107,115,46,114,101,116,114,111,0,18127,11414,18102,18165,168,0,229480770855518,115,58, 115,112,108,105,116,0,2049,7184,10,18152,18191,168,0,6119006473764520940,115,58,115,112,108,105, 116,45,111,110,45,115,116,114,105,110,103,0,2049,7218,10,18168,18216,168,0,-2157201768052001381, 115,58,99,111,110,116,97,105,110,115,45,99,104,97,114,63,0,2049,4857,10, 18194,18243,168,0,-6456228026363444588,115,58,99,111,110,116,97,105,110,115,45,115,116,114,105, 110,103,63,0,2049,5286,10,18219,18270,168,0,-3160266536000611262,97,58,99,111,110,116,97,105, 110,115,45,115,116,114,105,110,103,63,0,2049,9099,10,18246,18289,168,0,8246014626430519194,97, 58,105,110,100,101,120,45,111,102,0,2049,9741,10,18273,18315,168,0,-5025353456659034242,97,58, 105,110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,2049,9775,10,18292, 18334,168,0,8246850033149754348,115,58,105,110,100,101,120,45,111,102,0,2049,4779,10,18318,18360, 168,0,-94300875658333296,115,58,105,110,100,101,120,45,111,102,45,115,116,114,105,110,103, 0,2049,5069,10,18337,18379,168,0,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0, 2049,2075,4,2049,130,2049,130,10,18363,18405,168,0,-3421095308458227740,100,111,117,98,108,101,58, 102,101,116,99,104,0,2049,58,4,15,10,18387,18428,168,0,-3421095308442276665,100,111,117,98, 108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,18410,18454,168, 0,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0,2049,18379,1,18405,2049, 8460,10,18436,18478,168,0,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109, 5,67503109,6,10,18461,18499,168,0,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0, 67503109,67503109,5,5,8,6,6,10,18483,18523,168,0,8246228896775123014,100,111,117,98,108,101,58, 115,105,112,0,1,2217,2049,2229,2049,18499,10,18507,18546,168,0,8246632143337714634,109,101,109,58, 105,110,118,111,107,101,0,1,15,2049,10812,2049,10793,10,18530,0,156,0,210667451248,65, 76,76,79,67,0,18553,1,156,0,6384048135,70,82,69,69,0,18564,2,156,0,210689088690, 83,84,79,82,69,0,18574,3,156,0,210673137615,70,69,84,67,72,0,18585,4,156, 0,6952683137271,82,69,83,73,90,69,0,18507,18623,168,0,249897943727936361,109,101,109,58,97,108, 108,111,99,0,1,0,2049,18546,10,18608,18643,168,0,249897943749573803,109,101,109,58,115,116, 111,114,101,0,1,2,2049,18546,10,18628,18663,168,0,249897943733622728,109,101,109,58,102,101, 116,99,104,0,1,3,2049,18546,10,18648,18682,168,0,7572664961638592,109,101,109,58,102,114, 101,101,0,1,1,2049,18546,10,18668,18703,168,0,8246632143679146032,109,101,109,58,114,101,115, 105,122,101,0,1,4,2049,18546,10,18687,18723,168,0,249897943730056489,109,101,109,58,99,101, 108,108,43,0,1,8,19,17,10,18708,18750,168,0,1050530996183190288,109,101,109,58,102,101, 116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049,18723,15,5,2049,18663, 6,10,18728,18783,168,0,1730340976492540563,109,101,109,58,115,116,111,114,101,45,100,111,117, 98,108,101,0,5,5,2049,2217,1,1,2049,18723,6,2049,18643,6,2049,18643,10,1793, 18819,1,192,1,2,17,8,2049,1576,2049,190,3841,11239,8,2049,1576,2049,188,16,10, 1,18800,18761,18830,168,19617,193470948,84,73,66,0,1,7,15,10,18821,18850,168,19617,8246457295145463473, 105,109,97,103,101,58,115,97,118,101,0,1,1000,2049,10812,2049,10793,10,18834,18868, 168,0,210711039690,101,100,105,116,63,0,2,1793,18875,1,8,11,10,1,18871,1793,18883, 1,127,11,10,1,18879,2049,2255,22,10,18857,18901,168,0,6953539406400,103,97,116,104,101, 114,0,2049,18868,1,17,1,4134,2049,66,10,18889,18921,168,0,210709415765,99,121,99,108, 101,0,2049,11123,2049,2217,4,8,2049,2644,25,3,2049,18901,1,18921,7,10,18834,18954, 168,19617,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,18966,2049,4451,2049, 4234,2049,18921,771,2049,4096,10,1,18956,2049,4260,10,18937,18982,168,19617,210726130610,115,58,103, 101,116,0,1793,19004,1793,18990,1,13,11,10,1,18986,1793,18998,1,10,11,10,1, 18994,2049,2255,22,10,1,18984,2049,18954,10,18971,19020,168,19617,210708950412,99,108,101,97,114, 0,2049,4472,92,94,91,50,74,92,94,91,48,59,48,72,0,1,19022,2049,8246, 2049,10918,10,19009,19054,156,19617,6952575930081,78,111,69,99,104,111,0,0,19042,19064,156,0, 193454829,69,79,84,0,0,19055,19079,156,0,7571133383038306,73,103,110,111,114,105,110,103,0, 0,19065,19095,168,0,249892406716047873,105,103,110,111,114,105,110,103,63,0,3841,19079,10,19080, 19111,168,0,229486327000139,118,101,114,115,105,111,110,0,3841,4,1,100,20,10,19098,19128, 168,0,210710254026,100,111,110,101,63,0,2,4097,19064,1793,19137,1,13,11,10,1,19133, 1793,19145,1,10,11,10,1,19141,1793,19153,1,32,11,10,1,19149,2049,2298,22,22, 10,19117,19170,168,0,6385195044,101,111,108,63,0,3841,19064,1793,19178,1,13,11,10,1, 19174,1793,19186,1,10,11,10,1,19182,2049,2255,22,10,19160,19204,168,0,6954126150804,118,97, 108,105,100,63,0,2,2049,104,2049,2812,10,19192,19225,168,0,249883998779477802,99,104,101,99, 107,45,101,111,102,0,2,1793,19232,1,-1,11,10,1,19228,1793,19240,1,4,11, 10,1,19236,2049,2255,22,1793,19250,2049,11190,10,1,19247,9,10,19210,19262,168,0,5863258, 98,115,0,2049,4212,1,2,2049,2675,1793,19274,2049,4160,3,10,1,19270,9,2049,4160, 3,10,19254,19295,168,0,7572242387256805,99,104,101,99,107,45,98,115,0,2,1793,19302,1, 8,11,10,1,19298,1793,19310,1,127,11,10,1,19306,2049,2255,22,1793,19320,2049,19262, 10,1,19317,9,10,19281,19335,168,0,210708806723,99,104,101,99,107,0,2049,19225,2049,19295, 10,19324,19355,168,0,249883994190734226,99,104,97,114,97,99,116,101,114,0,2049,11123,2,2049, 4134,10,19340,19373,168,0,6953366942559,98,117,102,102,101,114,0,1793,19383,2049,18830,2049,4234, 8,2049,4096,10,1,19375,2049,4260,10,19361,19404,168,0,8246863741238799215,114,101,97,100,45,116, 111,107,101,110,0,1793,19420,1793,19415,2049,19355,2049,19335,2049,19128,10,1,19408,2049,2397, 10,1,19406,2049,19373,2049,4587,10,19388,19438,168,0,210716150453,105,110,112,117,116,0,2049, 19404,2049,19204,10,19427,19456,168,0,229479082815460,112,114,111,99,101,115,115,0,2049,19095,1793, 19474,771,2049,19170,1793,19470,1,19079,2049,3931,10,1,19465,9,10,1,19460,2049,2862,1, 417,1,17,2049,66,10,19042,19493,180,19617,5861507,47,47,0,2049,16539,1,19079,2049,3916, 10,19485,19512,168,19617,6953343520347,98,97,110,110,101,114,0,2049,19111,2049,4472,82,69,84, 82,79,32,49,50,32,40,37,110,46,37,110,41,92,110,0,1,19516,2049,8246, 2049,10918,2049,9335,2049,1545,2049,9335,18,2049,1545,2049,4472,37,110,32,77,97,120,44, 32,37,110,32,85,115,101,100,44,32,37,110,32,70,114,101,101,92,110,0, 1,19552,2049,8246,2049,10918,10,19500,19598,168,19617,6953744547860,108,105,115,116,101,110,0,3841, 19054,1793,19605,2049,19512,10,1,19602,2049,74,2049,19438,2049,19456,1,19609,7,10,105,110, 116,101,114,102,97,99,101,47,114,101,116,114,111,45,117,110,105,120,46,114, 101,116,114,111,0,19586,19657,156,0,229441520490121,83,111,117,114,99,101,115,0,1,19906, 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,0,0,0,0, 0,0,0,0,0,0,19644,19797,168,0,6953711201841,107,110,111,119,110,63,0,2,1, 19657,2049,9099,10,19785,19814,168,0,210716136861,105,110,100,101,120,0,1,19657,4,2049,9775, 1,19657,4,2049,9245,10,19803,19837,168,0,6953974036516,114,101,99,111,114,100,0,2049,4500, 2,1,19657,2049,3864,3841,19657,1,19657,17,16,10,1793,19904,2049,16474,2049,19797,1793,19862, 2049,19814,10,1,19859,1793,19869,2049,19837,10,1,19866,2049,66,1793,19882,1,192,1,2, 17,8,10,1,19875,2049,2229,2049,1576,2049,186,16,2049,1576,2049,190,3841,11239,8,2049, 1576,2049,188,16,10,1,19853,100,105,99,116,45,119,111,114,100,115,45,108,105, 115,116,105,110,103,46,102,111,114,116,104,0,19586,19944,168,19906,229461403550098,100,58,119, 111,114,100,115,0,1793,19953,2049,190,2049,10918,2049,10888,10,1,19946,2049,8491,10,19931, 19976,168,19906,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116,104,0,2049,1977,2049, 5573,1793,20007,2049,190,2,2049,1977,2049,5286,1793,19996,2049,10918,2049,10888,10,1,19991,1793, 20002,3,10,1,20000,2049,66,10,1,19982,2049,8491,10,19958,20033,168,19906,2818131571306626127,100,105, 115,112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1977,2049,5519,1793, 20045,2049,10918,2049,10888,10,1,20040,1793,20051,3,10,1,20049,2049,66,10,19958,20084,168, 19906,2947807019553410009,100,58,119,111,114,100,115,45,98,101,103,105,110,110,105,110,103,45, 119,105,116,104,0,2049,1977,2049,5573,1793,20095,2049,190,2049,20033,10,1,20090,2049,8491, 10,0 }; 111,99,107,115,46,114,101,116,114,111,0,18127,11414,18102,18168,168,0,8246228896775126019,100,111, 117,98,108,101,58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,18152,18194,168, 0,-3421095308458227740,100,111,117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10, 18176,18217,168,0,-3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19, 2049,2229,2049,61,16,10,18199,18243,168,0,-3421095308461432127,100,111,117,98,108,101,58,99,111, 110,115,116,0,2049,18168,1,18194,2049,8460,10,18225,18267,168,0,-4575607512064199915,100,111,117,98, 108,101,58,115,119,97,112,0,67503109,5,67503109,6,10,18250,18288,168,0,8246228896775106679,100,111, 117,98,108,101,58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,18272,18312,168, 0,8246228896775123014,100,111,117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,18288,10, 18296,18335,168,0,8246632143337714634,109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10812, 2049,10793,10,18319,0,156,0,210667451248,65,76,76,79,67,0,18342,1,156,0,6384048135,70, 82,69,69,0,18353,2,156,0,210689088690,83,84,79,82,69,0,18363,3,156,0,210673137615, 70,69,84,67,72,0,18374,4,156,0,6952683137271,82,69,83,73,90,69,0,18296,18412, 168,0,249897943727936361,109,101,109,58,97,108,108,111,99,0,1,0,2049,18335,10,18397,18432, 168,0,249897943749573803,109,101,109,58,115,116,111,114,101,0,1,2,2049,18335,10,18417,18452, 168,0,249897943733622728,109,101,109,58,102,101,116,99,104,0,1,3,2049,18335,10,18437,18471, 168,0,7572664961638592,109,101,109,58,102,114,101,101,0,1,1,2049,18335,10,18457,18492,168, 0,8246632143679146032,109,101,109,58,114,101,115,105,122,101,0,1,4,2049,18335,10,18476,18512, 168,0,249897943730056489,109,101,109,58,99,101,108,108,43,0,1,8,19,17,10,18497,18539, 168,0,1050530996183190288,109,101,109,58,102,101,116,99,104,45,100,111,117,98,108,101,0, 2,1,1,2049,18512,15,5,2049,18452,6,10,18517,18572,168,0,1730340976492540563,109,101,109,58, 115,116,111,114,101,45,100,111,117,98,108,101,0,5,5,2049,2217,1,1,2049, 18512,6,2049,18432,6,2049,18432,10,1793,18608,1,192,1,2,17,8,2049,1576,2049,190, 3841,11239,8,2049,1576,2049,188,16,10,1,18589,18550,18619,168,19406,193470948,84,73,66,0, 1,7,15,10,18610,18639,168,19406,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0, 1,1000,2049,10812,2049,10793,10,18623,18657,168,0,210711039690,101,100,105,116,63,0,2,1793, 18664,1,8,11,10,1,18660,1793,18672,1,127,11,10,1,18668,2049,2255,22,10,18646, 18690,168,0,6953539406400,103,97,116,104,101,114,0,2049,18657,1,17,1,4134,2049,66,10, 18678,18710,168,0,210709415765,99,121,99,108,101,0,2049,11123,2049,2217,4,8,2049,2644,25, 3,2049,18690,1,18710,7,10,18623,18743,168,19406,-4557881830897049127,112,97,114,115,101,45,117,110, 116,105,108,0,1793,18755,2049,4451,2049,4234,2049,18710,771,2049,4096,10,1,18745,2049,4260, 10,18726,18771,168,19406,210726130610,115,58,103,101,116,0,1793,18793,1793,18779,1,13,11,10, 1,18775,1793,18787,1,10,11,10,1,18783,2049,2255,22,10,1,18773,2049,18743,10,18760, 18809,168,19406,210708950412,99,108,101,97,114,0,2049,4472,92,94,91,50,74,92,94,91, 48,59,48,72,0,1,18811,2049,8246,2049,10918,10,18798,18843,156,19406,6952575930081,78,111,69, 99,104,111,0,0,18831,18853,156,0,193454829,69,79,84,0,0,18844,18868,156,0,7571133383038306, 73,103,110,111,114,105,110,103,0,0,18854,18884,168,0,249892406716047873,105,103,110,111,114, 105,110,103,63,0,3841,18868,10,18869,18900,168,0,229486327000139,118,101,114,115,105,111,110, 0,3841,4,1,100,20,10,18887,18917,168,0,210710254026,100,111,110,101,63,0,2,4097, 18853,1793,18926,1,13,11,10,1,18922,1793,18934,1,10,11,10,1,18930,1793,18942,1, 32,11,10,1,18938,2049,2298,22,22,10,18906,18959,168,0,6385195044,101,111,108,63,0, 3841,18853,1793,18967,1,13,11,10,1,18963,1793,18975,1,10,11,10,1,18971,2049,2255, 22,10,18949,18993,168,0,6954126150804,118,97,108,105,100,63,0,2,2049,104,2049,2812,10, 18981,19014,168,0,249883998779477802,99,104,101,99,107,45,101,111,102,0,2,1793,19021,1,-1, 11,10,1,19017,1793,19029,1,4,11,10,1,19025,2049,2255,22,1793,19039,2049,11190,10, 1,19036,9,10,18999,19051,168,0,5863258,98,115,0,2049,4212,1,2,2049,2675,1793,19063, 2049,4160,3,10,1,19059,9,2049,4160,3,10,19043,19084,168,0,7572242387256805,99,104,101,99, 107,45,98,115,0,2,1793,19091,1,8,11,10,1,19087,1793,19099,1,127,11,10, 1,19095,2049,2255,22,1793,19109,2049,19051,10,1,19106,9,10,19070,19124,168,0,210708806723,99, 104,101,99,107,0,2049,19014,2049,19084,10,19113,19144,168,0,249883994190734226,99,104,97,114,97, 99,116,101,114,0,2049,11123,2,2049,4134,10,19129,19162,168,0,6953366942559,98,117,102,102, 101,114,0,1793,19172,2049,18619,2049,4234,8,2049,4096,10,1,19164,2049,4260,10,19150,19193, 168,0,8246863741238799215,114,101,97,100,45,116,111,107,101,110,0,1793,19209,1793,19204,2049,19144, 2049,19124,2049,18917,10,1,19197,2049,2397,10,1,19195,2049,19162,2049,4587,10,19177,19227,168, 0,210716150453,105,110,112,117,116,0,2049,19193,2049,18993,10,19216,19245,168,0,229479082815460,112,114, 111,99,101,115,115,0,2049,18884,1793,19263,771,2049,18959,1793,19259,1,18868,2049,3931,10, 1,19254,9,10,1,19249,2049,2862,1,417,1,17,2049,66,10,18831,19282,180,19406,5861507, 47,47,0,2049,16539,1,18868,2049,3916,10,19274,19301,168,19406,6953343520347,98,97,110,110,101, 114,0,2049,18900,2049,4472,82,69,84,82,79,32,49,50,32,40,37,110,46,37, 110,41,92,110,0,1,19305,2049,8246,2049,10918,2049,9335,2049,1545,2049,9335,18,2049,1545, 2049,4472,37,110,32,77,97,120,44,32,37,110,32,85,115,101,100,44,32,37, 110,32,70,114,101,101,92,110,0,1,19341,2049,8246,2049,10918,10,19289,19387,168,19406, 6953744547860,108,105,115,116,101,110,0,3841,18843,1793,19394,2049,19301,10,1,19391,2049,74,2049, 19227,2049,19245,1,19398,7,10,105,110,116,101,114,102,97,99,101,47,114,101,116, 114,111,45,117,110,105,120,46,114,101,116,114,111,0,19375,19446,156,0,229441520490121,83, 111,117,114,99,101,115,0,1,19695,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,0,0,0,0,0,0,0,0,0,0,19433,19586,168,0,6953711201841, 107,110,111,119,110,63,0,2,1,19446,2049,9099,10,19574,19603,168,0,210716136861,105,110, 100,101,120,0,1,19446,4,2049,9775,1,19446,4,2049,9245,10,19592,19626,168,0,6953974036516, 114,101,99,111,114,100,0,2049,4500,2,1,19446,2049,3864,3841,19446,1,19446,17,16, 10,1793,19693,2049,16474,2049,19586,1793,19651,2049,19603,10,1,19648,1793,19658,2049,19626,10,1, 19655,2049,66,1793,19671,1,192,1,2,17,8,10,1,19664,2049,2229,2049,1576,2049,186, 16,2049,1576,2049,190,3841,11239,8,2049,1576,2049,188,16,10,1,19642,100,105,99,116, 45,119,111,114,100,115,45,108,105,115,116,105,110,103,46,102,111,114,116,104, 0,19375,19733,168,19695,229461403550098,100,58,119,111,114,100,115,0,1793,19742,2049,190,2049,10918, 2049,10888,10,1,19735,2049,8491,10,19720,19765,168,19695,-3502157631813457253,100,58,119,111,114,100,115, 45,119,105,116,104,0,2049,1977,2049,5573,1793,19796,2049,190,2,2049,1977,2049,5286,1793, 19785,2049,10918,2049,10888,10,1,19780,1793,19791,3,10,1,19789,2049,66,10,1,19771,2049, 8491,10,19747,19822,168,19695,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101, 102,116,0,2,2049,1977,2049,5519,1793,19834,2049,10918,2049,10888,10,1,19829,1793,19840,3, 10,1,19838,2049,66,10,19747,19873,168,19695,2947807019553410009,100,58,119,111,114,100,115,45,98, 101,103,105,110,110,105,110,103,45,119,105,116,104,0,2049,1977,2049,5573,1793,19884, 2049,190,2049,19822,10,1,19879,2049,8491,10,0 };