diff --git a/Makefile b/Makefile index 4d75ed0..4eb04c5 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,10 @@ optional: build bin/retro-repl toolchain: dirs bin/retro-embedimage bin/retro-extend bin/retro-muri bin/retro-unu +image: vm/nga-c/image.c + +repl: bin/retro-repl + dirs: mkdir -p bin cp tools/retro-document.sh bin/retro-document @@ -24,6 +28,10 @@ dirs: clean: rm -f bin/* + + +# installation targets + install: build install-data install-docs install-examples install-manpages install -m 755 -d -- $(DESTDIR)$(PREFIX)/bin install -c -m 755 bin/retro-embedimage $(DESTDIR)$(PREFIX)/bin/retro-embedimage @@ -77,24 +85,9 @@ install-manpages: install -c -m 644 man/retro-tags.1 $(MANDIR)/retro-tags.1 install -c -m 644 man/retro-locate.1 $(MANDIR)/retro-locate.1 -test: bin/retro - ./bin/retro tests/test-core.forth -# Targets for development/interactive usage -glossary: doc/Glossary.txt doc/Glossary.html doc/Glossary-Concise.txt doc/Glossary-Names-and-Stack.txt doc/words.tsv - -image: vm/nga-c/image.c - -repl: bin/retro-repl - -retro-describe: bin/retro-describe - -# File targets. - -ngaImage: image/rx.muri image/retro.forth bin/retro-muri bin/retro-extend - ./bin/retro-muri image/rx.muri - ./bin/retro-extend ngaImage image/retro.forth +# toolchain targets bin/retro-describe: tools/retro-describe.retro doc/words.tsv cat tools/retro-describe.retro doc/words.tsv >bin/retro-describe @@ -109,9 +102,28 @@ bin/retro-extend: tools/retro-extend.c bin/retro-muri: tools/retro-muri.c $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ tools/retro-muri.c +bin/retro-unu: tools/retro-unu.c + $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ tools/retro-unu.c + + + +# basic image target + +ngaImage: image/rx.muri image/retro.forth bin/retro-muri bin/retro-extend + ./bin/retro-muri image/rx.muri + ./bin/retro-extend ngaImage image/retro.forth + + + +# minimal system + bin/retro-repl: vm/nga-c/repl.c vm/nga-c/image.c cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-repl repl.c + + +# retro on unix + bin/retro: ngaImage bin/retro-embedimage bin/retro-extend vm/nga-c/retro-image.c vm/nga-c/retro-unix.c interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/scripting.retro interface/retro-unix.retro interface/clock.retro cp ngaImage rre.image ./bin/retro-extend rre.image interface/scripting.retro interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/sockets.retro interface/scripting.retro interface/retro-unix.retro interface/clock.retro @@ -122,8 +134,32 @@ bin/retro: ngaImage bin/retro-embedimage bin/retro-extend vm/nga-c/retro-image.c rm rre.image cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro retro-unix.c $(LIBM) -bin/retro-unu: tools/retro-unu.c - $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o $@ tools/retro-unu.c +vm/nga-c/image.c: bin/retro-embedimage bin/retro-extend bin/retro-muri image/retro.forth image/rx.muri + ./bin/retro-muri image/rx.muri + ./bin/retro-extend ngaImage image/retro.forth + ./bin/retro-embedimage ngaImage > vm/nga-c/image.c + + + +# optional targets + +bin/retro-compiler: bin/retro-extend vm/nga-c/retro-compiler.c vm/nga-c/retro-runtime.c + cp ngaImage runtime.image + ./bin/retro-extend runtime.image interface/scripting.retro interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/retro-unix.retro interface/clock.retro + cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../retro-runtime retro-runtime.c $(LIBM) + cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-compiler retro-compiler.c + objcopy --add-section .ngaImage=runtime.image --set-section-flags .ngaImage=noload,readonly bin/retro-compiler + objcopy --add-section .runtime=retro-runtime --set-section-flags .runtime=noload,readonly bin/retro-compiler + rm runtime.image retro-runtime + +image-js: bin/retro + ./bin/retro example/retro-generate-image-js.retro >vm/nga-js/image.js + + + +# documentation targets + +glossary: doc/Glossary.txt doc/Glossary.html doc/Glossary-Concise.txt doc/Glossary-Names-and-Stack.txt doc/words.tsv sorted: doc/words.tsv LC_ALL=C sort -o sorted.tsv doc/words.tsv @@ -141,19 +177,9 @@ doc/Glossary-Concise.txt: bin/retro sorted doc/Glossary-Names-and-Stack.txt: bin/retro sorted ./bin/retro tools/glossary.retro export concise-stack >doc/Glossary-Names-and-Stack.txt -vm/nga-c/image.c: bin/retro-embedimage bin/retro-extend bin/retro-muri image/retro.forth image/rx.muri - ./bin/retro-muri image/rx.muri - ./bin/retro-extend ngaImage image/retro.forth - ./bin/retro-embedimage ngaImage > vm/nga-c/image.c -bin/retro-compiler: bin/retro-extend vm/nga-c/retro-compiler.c vm/nga-c/retro-runtime.c - cp ngaImage runtime.image - ./bin/retro-extend runtime.image interface/scripting.retro interface/filesystem.retro interface/floatingpoint.retro interface/unix.retro interface/rng.retro interface/retro-unix.retro interface/clock.retro - cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../retro-runtime retro-runtime.c $(LIBM) - cd vm/nga-c && $(CC) $(OPTIONS) $(CFLAGS) $(LDFLAGS) -o ../../bin/retro-compiler retro-compiler.c - objcopy --add-section .ngaImage=runtime.image --set-section-flags .ngaImage=noload,readonly bin/retro-compiler - objcopy --add-section .runtime=retro-runtime --set-section-flags .runtime=noload,readonly bin/retro-compiler - rm runtime.image retro-runtime + +# other targets release: clean build glossary fossil tarball tip R12.tar.gz @@ -167,5 +193,6 @@ release: clean build glossary signify -S -s /home/crc/keys/$(KEYPAIR).sec -m RETRO12-$(VERSION).tar.gz signify -V -p security/$(KEYPAIR).pub -m RETRO12-$(VERSION).tar.gz -image-js: bin/retro - ./bin/retro example/retro-generate-image-js.retro >vm/nga-js/image.js +test: bin/retro + ./bin/retro tests/test-core.forth + diff --git a/vm/nga-c/image.c b/vm/nga-c/image.c index 670722d..12ec560 100644 --- a/vm/nga-c/image.c +++ b/vm/nga-c/image.c @@ -2,58 +2,58 @@ #ifndef CELL #define CELL int32_t #endif -CELL ngaImageCells = 9299; -CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, +CELL ngaImageCells = 9313; +CELL ngaImage[] = { 1793,-1,9295,9312,202101,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 7,10,8,10,9,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,68223234,1,2575, - 85000450,1,656912,353,335,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74, + 85000450,1,656912,355,337,268505089,63,62,135205121,63,10,101384453,0,9,10,2049,56,25,459011,74, 524546,74,302256641,1,10,16974595,0,50529798,10,25,524547,93,50529798,10,17108738,1,251790353,101777669,1,17565186, 84,524545,88,64,167838467,-1,134287105,3,59,659457,3,459023,105,2049,56,25,2049,105,1793,112, 2049,112,117506307,0,105,0,524545,25,110,168820993,0,124,1642241,124,134283523,7,110,1793,105,7, 524545,2049,105,1793,105,16846593,124,139,138,1793,64,16846593,124,110,138,1793,64,7,10,659713, - 1,659713,2,659713,3,17108737,3,2,524559,105,2049,105,2049,105,2049,119,168820998,2,733,1025, - 167841793,177,5,17826049,0,177,2,15,25,524546,162,134287105,178,93,2305,179,459023,187,134287361,178, - 182,659201,177,2049,56,25,84152833,48,286458116,10,459014,202,184618754,45,25,16974851,-1,168886532,1,134284289, - 1,211,134284289,0,202,660227,32,0,0,112,114,101,102,105,120,58,32,0,285278479,228, - 7,2576,524546,79,1641217,1,167838467,225,2049,241,2049,237,524545,228,197,17826050,227,0,2572,2563, - 2049,218,1793,131,459023,131,17760513,144,3,164,8,251727617,3,2,2049,158,16,168820993,-1,124, - 2049,197,2049,158,459023,131,285282049,3,2,134287105,124,276,524545,1793,105,16846593,3,0,105,8, - 659201,3,524545,25,110,17043201,3,7,2049,110,2049,105,268505092,124,1642241,124,656131,659201,3,524545, - 7,110,2049,105,459009,19,110,459009,54,110,459009,15,110,459009,17,110,1793,5,10,524546, - 158,134284303,160,1807,1025,0,0,1642241,227,285282049,343,1,459012,338,117509889,177,338,134287105,343,197, - 16845825,0,353,335,1793,64,1793,367,17826050,343,247,8,117506305,344,356,64,2116,11340,11700,11400, - 13685,13104,12432,12402,9603,9801,11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670,12654,13320, - 11960,13908,10088,10605,11865,11025,0,2049,197,987393,1,1793,105,524546,443,2049,441,2049,441,17891588, - 2,443,8,17045505,-24,-16,17043736,-8,1118488,1793,105,17043202,1,169021201,2049,56,25,33883396,101450758,6404, - 459011,433,34668804,2,2049,430,524545,375,433,302056196,375,659969,1,0,9,150,100,117,112,0, - 452,11,150,100,114,111,112,0,459,13,150,115,119,97,112,0,467,21,150,99, - 97,108,108,0,475,26,150,101,113,63,0,483,28,150,45,101,113,63,0,490, - 30,150,108,116,63,0,498,32,150,103,116,63,0,505,34,150,102,101,116,99, - 104,0,512,36,150,115,116,111,114,101,0,521,38,150,43,0,530,40,150,45, - 0,535,42,150,42,0,540,44,150,47,109,111,100,0,545,46,150,97,110,100, - 0,553,48,150,111,114,0,560,50,150,120,111,114,0,566,52,150,115,104,105, - 102,116,0,573,329,156,112,117,115,104,0,582,332,156,112,111,112,0,590,326, - 156,48,59,0,597,56,144,102,101,116,99,104,45,110,101,120,116,0,603,59, - 144,115,116,111,114,101,45,110,101,120,116,0,617,218,144,115,58,116,111,45, - 110,117,109,98,101,114,0,631,93,144,115,58,101,113,63,0,646,79,144,115, - 58,108,101,110,103,116,104,0,655,64,144,99,104,111,111,115,101,0,667,72, - 150,105,102,0,677,70,144,45,105,102,0,683,258,156,112,114,101,102,105,120, - 58,40,0,690,124,131,67,111,109,112,105,108,101,114,0,702,3,131,72,101, - 97,112,0,714,105,144,44,0,722,119,144,115,44,0,727,125,156,59,0,733, - 285,156,91,0,738,301,156,93,0,743,2,131,68,105,99,116,105,111,110,97, - 114,121,0,748,157,144,100,58,108,105,110,107,0,762,158,144,100,58,120,116, - 0,772,160,144,100,58,99,108,97,115,115,0,780,162,144,100,58,110,97,109, - 101,0,791,144,144,99,108,97,115,115,58,119,111,114,100,0,801,156,144,99, - 108,97,115,115,58,109,97,99,114,111,0,815,131,144,99,108,97,115,115,58, - 100,97,116,97,0,830,164,144,100,58,97,100,100,45,104,101,97,100,101,114, - 0,844,259,156,112,114,101,102,105,120,58,35,0,860,265,156,112,114,101,102, - 105,120,58,58,0,872,279,156,112,114,101,102,105,120,58,38,0,884,263,156, - 112,114,101,102,105,120,58,36,0,896,316,156,114,101,112,101,97,116,0,908, - 318,156,97,103,97,105,110,0,918,365,144,105,110,116,101,114,112,114,101,116, - 0,927,197,144,100,58,108,111,111,107,117,112,0,940,150,144,99,108,97,115, - 115,58,112,114,105,109,105,116,105,118,101,0,952,4,131,86,101,114,115,105, - 111,110,0,971,412,144,105,0,982,105,144,100,0,987,406,144,114,0,992,335, - 144,101,114,114,58,110,111,116,102,111,117,110,100,0,0,0,0,0,0,0, + 1,659713,2,659713,3,1793,166,17108737,3,2,524559,105,2049,105,2049,105,2049,119,168820998,2, + 735,1025,167841793,179,5,17826049,0,179,2,15,25,524546,162,134287105,180,93,2305,181,459023,189, + 134287361,180,184,659201,179,2049,56,25,84152833,48,286458116,10,459014,204,184618754,45,25,16974851,-1,168886532, + 1,134284289,1,213,134284289,0,204,660227,32,0,0,112,114,101,102,105,120,58,32,0, + 285278479,230,7,2576,524546,79,1641217,1,167838467,227,2049,243,2049,239,524545,230,199,17826050,229,0, + 2572,2563,2049,220,1793,131,459023,131,17760513,144,3,164,8,251727617,3,2,2049,158,16,168820993, + -1,124,2049,199,2049,158,459023,131,285282049,3,2,134287105,124,278,524545,1793,105,16846593,3,0, + 105,8,659201,3,524545,25,110,17043201,3,7,2049,110,2049,105,268505092,124,1642241,124,656131,659201, + 3,524545,7,110,2049,105,459009,19,110,459009,54,110,459009,15,110,459009,17,110,1793,5, + 10,524546,158,134284303,160,1807,1025,0,0,1642241,229,285282049,345,1,459012,340,117509889,179,340,134287105, + 345,199,16845825,0,355,337,1793,64,1793,369,17826050,345,249,8,117506305,346,358,64,2116,11340, + 11700,11400,13685,13104,12432,12402,9603,9801,11514,11413,11110,12528,11948,10302,13340,9700,13455,12753,10500,10670, + 12654,13320,11960,13908,10088,10605,11865,11025,0,2049,199,987393,1,1793,105,524546,445,2049,443,2049, + 443,17891588,2,445,8,17045505,-24,-16,17043736,-8,1118488,1793,105,17043202,1,169021201,2049,56,25,33883396, + 101450758,6404,459011,435,34668804,2,2049,432,524545,377,435,302056196,377,659969,1,0,9,150,100,117, + 112,0,454,11,150,100,114,111,112,0,461,13,150,115,119,97,112,0,469,21, + 150,99,97,108,108,0,477,26,150,101,113,63,0,485,28,150,45,101,113,63, + 0,492,30,150,108,116,63,0,500,32,150,103,116,63,0,507,34,150,102,101, + 116,99,104,0,514,36,150,115,116,111,114,101,0,523,38,150,43,0,532,40, + 150,45,0,537,42,150,42,0,542,44,150,47,109,111,100,0,547,46,150,97, + 110,100,0,555,48,150,111,114,0,562,50,150,120,111,114,0,568,52,150,115, + 104,105,102,116,0,575,331,156,112,117,115,104,0,584,334,156,112,111,112,0, + 592,328,156,48,59,0,599,56,144,102,101,116,99,104,45,110,101,120,116,0, + 605,59,144,115,116,111,114,101,45,110,101,120,116,0,619,220,144,115,58,116, + 111,45,110,117,109,98,101,114,0,633,93,144,115,58,101,113,63,0,648,79, + 144,115,58,108,101,110,103,116,104,0,657,64,144,99,104,111,111,115,101,0, + 669,72,150,105,102,0,679,70,144,45,105,102,0,685,260,156,112,114,101,102, + 105,120,58,40,0,692,124,131,67,111,109,112,105,108,101,114,0,704,3,131, + 72,101,97,112,0,716,105,144,44,0,724,119,144,115,44,0,729,125,156,59, + 0,735,287,156,91,0,740,303,156,93,0,745,2,131,68,105,99,116,105,111, + 110,97,114,121,0,750,157,144,100,58,108,105,110,107,0,764,158,144,100,58, + 120,116,0,774,160,144,100,58,99,108,97,115,115,0,782,162,144,100,58,110, + 97,109,101,0,793,144,144,99,108,97,115,115,58,119,111,114,100,0,803,156, + 144,99,108,97,115,115,58,109,97,99,114,111,0,817,131,144,99,108,97,115, + 115,58,100,97,116,97,0,832,164,144,100,58,97,100,100,45,104,101,97,100, + 101,114,0,846,261,156,112,114,101,102,105,120,58,35,0,862,267,156,112,114, + 101,102,105,120,58,58,0,874,281,156,112,114,101,102,105,120,58,38,0,886, + 265,156,112,114,101,102,105,120,58,36,0,898,318,156,114,101,112,101,97,116, + 0,910,320,156,97,103,97,105,110,0,920,367,144,105,110,116,101,114,112,114, + 101,116,0,929,199,144,100,58,108,111,111,107,117,112,0,942,150,144,99,108, + 97,115,115,58,112,114,105,109,105,116,105,118,101,0,954,4,131,86,101,114, + 115,105,111,110,0,973,414,144,105,0,984,105,144,100,0,989,408,144,114,0, + 994,337,144,101,114,114,58,110,111,116,102,111,117,110,100,0,0,0,0,0, 0,0,0,0,0,0,59,0,114,101,0,0,83,0,97,0,107,0,115,0, 0,0,115,0,0,0,0,0,63,64,91,92,93,94,96,123,124,125,126,0, 72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,0, @@ -79,7 +79,7 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,997,1543,144, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,999,1543,144, 69,79,77,0,1,-3,15,10,1536,1556,144,100,101,112,116,104,0,1,-1,15, 10,1547,1570,144,100,58,108,97,115,116,0,1,2,15,10,1560,1587,144,100,58, 108,97,115,116,46,120,116,0,2049,1570,2049,158,15,10,1574,1609,144,100,58,108, @@ -94,12 +94,12 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 1774,144,99,111,109,112,105,108,101,58,99,97,108,108,0,1,2049,2049,105,2049, 105,10,1758,1796,144,99,111,109,112,105,108,101,58,114,101,116,0,1,10,2049, 105,10,1781,1815,144,99,111,109,112,105,108,105,110,103,63,0,1,124,15,10, - 1801,1831,156,112,114,101,102,105,120,58,96,0,2049,218,2049,105,10,1819,1848,156, - 112,114,101,102,105,120,58,92,0,2049,412,10,1836,1863,156,112,114,101,102,105, - 120,58,94,0,2049,406,10,1851,1874,144,104,101,114,101,0,1,3,15,10,1866, - 1890,156,112,114,101,102,105,120,58,64,0,2049,197,2049,158,15,2049,1815,1793,1906, + 1801,1831,156,112,114,101,102,105,120,58,96,0,2049,220,2049,105,10,1819,1848,156, + 112,114,101,102,105,120,58,92,0,2049,414,10,1836,1863,156,112,114,101,102,105, + 120,58,94,0,2049,408,10,1851,1874,144,104,101,114,101,0,1,3,15,10,1866, + 1890,156,112,114,101,102,105,120,58,64,0,2049,199,2049,158,15,2049,1815,1793,1906, 1,3841,2049,105,2049,105,10,1,1899,1793,1912,15,10,1,1910,2049,64,10,1878,1929, - 156,112,114,101,102,105,120,58,33,0,2049,197,2049,158,15,2049,1815,1793,1945,1, + 156,112,114,101,102,105,120,58,33,0,2049,199,2049,158,15,2049,1815,1793,1945,1, 4097,2049,105,2049,105,10,1,1938,1793,1951,16,10,1,1949,2049,64,10,1917,1968,144, 100,58,99,114,101,97,116,101,0,1,131,1,0,2049,164,2049,1874,2049,1570,2049, 158,16,10,1956,1991,144,118,97,114,45,110,0,2049,1968,2049,105,10,1982,2003,144, @@ -118,7 +118,7 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 3,10,2218,2250,144,117,110,116,105,108,0,1793,2261,525570,385942534,-1,25,3,1,2252, 7,10,1,2252,8,3,10,2241,2275,144,116,105,109,101,115,0,1793,2287,4,25, 33886721,1,2053,1542,1,2278,7,10,1,2277,8,3,10,2266,2304,156,112,114,101,102, - 105,120,58,124,0,2049,197,1793,2312,2049,158,15,10,1,2308,1793,2320,2049,160,15, + 105,120,58,124,0,2049,199,1793,2312,2049,158,15,10,1,2308,1793,2320,2049,160,15, 10,1,2316,2049,2122,2049,1815,1793,2335,1,131,2049,2100,2049,1774,10,1,2328,1,21, 2049,64,10,2292,2350,144,84,82,85,69,0,1,-1,10,2342,2362,144,70,65,76, 83,69,0,1,0,10,2353,2373,144,99,97,115,101,0,1793,2378,67502597,11,10,1, @@ -160,7 +160,7 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 983556,1793,3087,1,21,2049,2100,10,1,3082,2049,2100,4100,10,3065,3105,144,118,58,117, 112,100,97,116,101,0,4,1793,3112,15,4,8,10,1,3108,2049,2110,16,10,3093, 3126,144,99,111,112,121,0,1793,3135,285278725,1,33951492,268767489,1,6,10,1,3128,2049,2275, - 771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,8794,8905,10,3141,3163, + 771,10,3118,3154,144,83,99,111,112,101,76,105,115,116,0,8808,8919,10,3141,3163, 144,123,123,0,2049,1570,2,1,3154,2049,59,16,10,3157,3188,144,45,45,45,114, 101,118,101,97,108,45,45,45,0,2049,1570,1,3154,2049,2890,16,10,3172,3202,144, 125,125,0,1,3154,2049,56,4,15,11,1793,3216,3841,3154,4097,2,10,1,3211,1793, @@ -414,57 +414,58 @@ CELL ngaImage[] = { 1793,-1,9281,9298,202010,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 1,26,2049,7389,2049,7953,2049,8104,10,1,8159,2049,3079,10,8141,8194,144,97,58,105, 110,100,101,120,45,111,102,45,115,116,114,105,110,103,0,1,3,1793,8207,1, 93,2049,7389,2049,7953,2049,8104,10,1,8198,2049,3079,10,8173,8222,144,97,58,109,97, - 107,101,0,2049,7553,2049,7992,10,8212,8232,156,123,0,1,285,2049,156,1,1556,2049, - 144,1,285,2049,156,10,8227,8250,156,125,0,1,301,2049,156,1,2100,2049,144,1, - 1556,2049,144,1,13,2049,150,1,40,2049,150,1,2903,2049,144,1,301,2049,156,1, - 8222,2049,144,10,8245,8294,144,98,111,117,110,100,115,63,0,67502597,2049,7530,67502597,13, - 10,8283,8308,144,99,111,112,121,0,2049,56,2049,105,10,8300,8323,144,116,111,45, - 101,110,100,0,2,2049,7530,17,2049,2890,10,8245,8340,144,97,58,108,101,102,116, - 0,2049,8294,1793,8348,771,1,-1,10,1,8344,2049,2653,2049,1874,67502597,2049,105,1793,8369, - 1,2890,2049,2100,1,8308,2049,2275,3,10,1,8359,2049,2100,10,8330,8385,144,97,58, - 114,105,103,104,116,0,2049,8294,1793,8393,771,1,-1,10,1,8389,2049,2653,2049,1874, - 67502597,2049,105,1793,8416,4,2049,8323,67502597,18,4,1,8308,2049,2275,3,10,1,8404,2049, - 2100,10,8374,8433,144,97,58,109,105,100,100,108,101,0,1,2042,2049,2100,4,67502597, - 2049,8294,1793,8448,771,3,1,-1,10,1,8443,2049,2653,771,2049,2090,4,18,2049,2890, - 2049,1874,67502597,2049,105,1793,8483,772,1793,8473,17,2049,2890,10,1,8469,2049,2100,1,8308, - 2049,2275,3,10,1,8466,2049,2100,10,8421,8496,131,70,108,97,103,0,0,8488,8508, - 144,99,111,109,112,97,114,101,0,67440386,184946434,10,8497,8521,144,108,101,110,103,116, - 104,0,659202,10,8511,8531,144,110,101,120,116,0,17043713,1,1,2577,10,8523,8549,144, - 110,111,116,45,101,113,117,97,108,0,50529030,2561,0,10,8536,8561,144,108,111,111, - 112,0,524549,8531,2049,8508,18157313,8496,8496,16,420610310,1,1,8561,7,10,8421,8584,144,97, - 58,101,113,63,0,1048833,-1,8496,2049,8508,151066369,-1,8549,2049,8521,2049,8561,251724547,8496,10, - 8575,8609,144,97,58,45,101,113,63,0,2049,8584,2049,2459,10,8599,8632,144,97,58, - 98,101,103,105,110,115,45,119,105,116,104,63,0,1,3,1793,8648,2,2049,7530, - 1,13,2049,2100,2049,8340,2049,8584,10,1,8636,2049,3079,10,8614,8669,144,97,58,101, - 110,100,115,45,119,105,116,104,63,0,1,3,1793,8685,2,2049,7530,1,13,2049, - 2100,2049,8385,2049,8584,10,1,8673,2049,3079,10,8653,8706,144,99,117,114,114,101,110, - 116,45,108,105,110,101,0,2049,3517,1,1025,18,10,8690,8728,144,99,111,117,110, - 116,45,116,111,107,101,110,115,0,1793,8734,1,32,11,10,1,8730,2049,4427,2049, - 79,10,8712,8759,144,112,114,111,99,101,115,115,45,116,111,107,101,110,115,0, - 1793,8787,1,32,2049,6201,4,1793,8780,2,2049,79,2049,2543,1,365,1,11,2049,64, - 10,1,8768,2049,2100,2049,2890,10,1,8761,2049,2275,2049,365,10,8653,8808,144,115,58, - 101,118,97,108,117,97,116,101,0,2049,8706,2049,4648,2049,8706,2,2049,8728,2049,8759, - 10,8794,8826,131,76,80,0,0,8820,8836,131,73,110,100,101,120,0,0,0,0, + 107,101,0,2049,7553,2,2,1,3,1793,8233,2049,7992,10,1,8230,2049,3079,4,2049, + 7680,10,8212,8246,156,123,0,1,287,2049,156,1,1556,2049,144,1,287,2049,156,10, + 8241,8264,156,125,0,1,303,2049,156,1,2100,2049,144,1,1556,2049,144,1,13,2049, + 150,1,40,2049,150,1,2903,2049,144,1,303,2049,156,1,8222,2049,144,10,8259,8308, + 144,98,111,117,110,100,115,63,0,67502597,2049,7530,67502597,13,10,8297,8322,144,99,111, + 112,121,0,2049,56,2049,105,10,8314,8337,144,116,111,45,101,110,100,0,2,2049, + 7530,17,2049,2890,10,8259,8354,144,97,58,108,101,102,116,0,2049,8308,1793,8362,771, + 1,-1,10,1,8358,2049,2653,2049,1874,67502597,2049,105,1793,8383,1,2890,2049,2100,1,8322, + 2049,2275,3,10,1,8373,2049,2100,10,8344,8399,144,97,58,114,105,103,104,116,0, + 2049,8308,1793,8407,771,1,-1,10,1,8403,2049,2653,2049,1874,67502597,2049,105,1793,8430,4, + 2049,8337,67502597,18,4,1,8322,2049,2275,3,10,1,8418,2049,2100,10,8388,8447,144,97, + 58,109,105,100,100,108,101,0,1,2042,2049,2100,4,67502597,2049,8308,1793,8462,771,3, + 1,-1,10,1,8457,2049,2653,771,2049,2090,4,18,2049,2890,2049,1874,67502597,2049,105,1793, + 8497,772,1793,8487,17,2049,2890,10,1,8483,2049,2100,1,8322,2049,2275,3,10,1,8480, + 2049,2100,10,8435,8510,131,70,108,97,103,0,0,8502,8522,144,99,111,109,112,97, + 114,101,0,67440386,184946434,10,8511,8535,144,108,101,110,103,116,104,0,659202,10,8525,8545, + 144,110,101,120,116,0,17043713,1,1,2577,10,8537,8563,144,110,111,116,45,101,113, + 117,97,108,0,50529030,2561,0,10,8550,8575,144,108,111,111,112,0,524549,8545,2049,8522, + 18157313,8510,8510,16,420610310,1,1,8575,7,10,8435,8598,144,97,58,101,113,63,0,1048833, + -1,8510,2049,8522,151066369,-1,8563,2049,8535,2049,8575,251724547,8510,10,8589,8623,144,97,58,45, + 101,113,63,0,2049,8598,2049,2459,10,8613,8646,144,97,58,98,101,103,105,110,115, + 45,119,105,116,104,63,0,1,3,1793,8662,2,2049,7530,1,13,2049,2100,2049,8354, + 2049,8598,10,1,8650,2049,3079,10,8628,8683,144,97,58,101,110,100,115,45,119,105, + 116,104,63,0,1,3,1793,8699,2,2049,7530,1,13,2049,2100,2049,8399,2049,8598,10, + 1,8687,2049,3079,10,8667,8720,144,99,117,114,114,101,110,116,45,108,105,110,101, + 0,2049,3517,1,1025,18,10,8704,8742,144,99,111,117,110,116,45,116,111,107,101, + 110,115,0,1793,8748,1,32,11,10,1,8744,2049,4427,2049,79,10,8726,8773,144,112, + 114,111,99,101,115,115,45,116,111,107,101,110,115,0,1793,8801,1,32,2049,6201, + 4,1793,8794,2,2049,79,2049,2543,1,367,1,11,2049,64,10,1,8782,2049,2100,2049, + 2890,10,1,8775,2049,2275,2049,367,10,8667,8822,144,115,58,101,118,97,108,117,97, + 116,101,0,2049,8720,2049,4648,2049,8720,2,2049,8742,2049,8773,10,8808,8840,131,76,80, + 0,0,8834,8850,131,73,110,100,101,120,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,8827,8876,144,110,101,120,116,0,3841,8826,1, - 8836,17,2049,2988,10,8868,8892,144,112,114,101,112,0,1,8826,2049,2988,1,0,3841, - 8826,1,8836,17,16,10,8884,8913,144,100,111,110,101,0,1,8826,2049,3003,10,8794, - 8923,144,73,0,3841,8826,1,8836,17,15,10,8918,8935,144,74,0,3841,8826,1,8836, - 17,2049,2903,15,10,8930,8949,144,75,0,3841,8826,1,8836,17,1,2,18,15,10, - 8944,8976,144,105,110,100,101,120,101,100,45,116,105,109,101,115,0,2049,8892,4, - 1793,8992,25,33886721,1,2053,1542,2049,8876,1,8981,7,10,1,8981,8,3,2049,8913,10, - 8959,9007,156,104,111,111,107,0,2049,3646,108,105,106,117,46,46,46,46,0,1, - 9009,2049,412,2049,1874,2049,2890,2049,105,10,8999,9041,144,115,101,116,45,104,111,111, - 107,0,2049,2890,16,10,9029,9055,144,117,110,104,111,111,107,0,2049,2890,2,2049, - 2890,4,16,10,9045,9079,144,105,111,58,101,110,117,109,101,114,97,116,101,0, - 27,10,9063,9093,144,105,111,58,113,117,101,114,121,0,28,10,9081,9108,144,105, - 111,58,105,110,118,111,107,101,0,29,10,9095,9125,144,105,111,58,115,99,97, - 110,45,102,111,114,0,1,-1,4,2049,9079,1793,9156,2049,8923,2049,9093,772,67502597,11, - 1793,9152,1793,9147,3,2049,8923,10,1,9143,2049,2100,10,1,9141,9,10,1,9132,2049, - 8976,3,10,9110,9171,144,99,58,112,117,116,0,1793,9173,1,0,2049,9108,10,9162, - 9184,144,110,108,0,1,10,2049,9171,10,9178,9195,144,115,112,0,1,32,2049,9171, - 10,9189,9207,144,116,97,98,0,1,9,2049,9171,10,9200,9221,144,115,58,112,117, - 116,0,1,9171,2049,3870,10,9212,9235,144,110,58,112,117,116,0,2049,6040,2049,9221, - 10,9226,9249,144,114,101,115,101,116,0,2049,1556,25,771,1,9249,7,10,9240,9271, - 144,100,117,109,112,45,115,116,97,99,107,0,2049,1556,25,134284547,9271,134283782,9235,2049, - 9195,10,9257,9289,144,70,82,69,69,0,2049,3517,1,1025,18,2049,1874,18,10,0 }; + 0,0,0,8841,8890,144,110,101,120,116,0,3841,8840,1,8850,17,2049,2988,10,8882, + 8906,144,112,114,101,112,0,1,8840,2049,2988,1,0,3841,8840,1,8850,17,16,10, + 8898,8927,144,100,111,110,101,0,1,8840,2049,3003,10,8808,8937,144,73,0,3841,8840, + 1,8850,17,15,10,8932,8949,144,74,0,3841,8840,1,8850,17,2049,2903,15,10,8944, + 8963,144,75,0,3841,8840,1,8850,17,1,2,18,15,10,8958,8990,144,105,110,100, + 101,120,101,100,45,116,105,109,101,115,0,2049,8906,4,1793,9006,25,33886721,1,2053, + 1542,2049,8890,1,8995,7,10,1,8995,8,3,2049,8927,10,8973,9021,156,104,111,111, + 107,0,2049,3646,108,105,106,117,46,46,46,46,0,1,9023,2049,414,2049,1874,2049, + 2890,2049,105,10,9013,9055,144,115,101,116,45,104,111,111,107,0,2049,2890,16,10, + 9043,9069,144,117,110,104,111,111,107,0,2049,2890,2,2049,2890,4,16,10,9059,9093, + 144,105,111,58,101,110,117,109,101,114,97,116,101,0,27,10,9077,9107,144,105, + 111,58,113,117,101,114,121,0,28,10,9095,9122,144,105,111,58,105,110,118,111, + 107,101,0,29,10,9109,9139,144,105,111,58,115,99,97,110,45,102,111,114,0, + 1,-1,4,2049,9093,1793,9170,2049,8937,2049,9107,772,67502597,11,1793,9166,1793,9161,3,2049, + 8937,10,1,9157,2049,2100,10,1,9155,9,10,1,9146,2049,8990,3,10,9124,9185,144, + 99,58,112,117,116,0,1793,9187,1,0,2049,9122,10,9176,9198,144,110,108,0,1, + 10,2049,9185,10,9192,9209,144,115,112,0,1,32,2049,9185,10,9203,9221,144,116,97, + 98,0,1,9,2049,9185,10,9214,9235,144,115,58,112,117,116,0,1,9185,2049,3870, + 10,9226,9249,144,110,58,112,117,116,0,2049,6040,2049,9235,10,9240,9263,144,114,101, + 115,101,116,0,2049,1556,25,771,1,9263,7,10,9254,9285,144,100,117,109,112,45, + 115,116,97,99,107,0,2049,1556,25,134284547,9285,134283782,9249,2049,9209,10,9271,9303,144,70, + 82,69,69,0,2049,3517,1,1025,18,2049,1874,18,10,0 };