diff --git a/Configuration.mk b/Configuration.mk index a952a8b..1be0264 100644 --- a/Configuration.mk +++ b/Configuration.mk @@ -67,6 +67,7 @@ ENABLED += -DENABLE_ERROR ENABLED += -DENABLE_UNSIGNED ENABLED += -DENABLE_MALLOC ENABLED += -DENABLE_BLOCKS +ENABLED += -DENABLE_IOCTL DEVICES ?= DEVICES += interface/ll.retro @@ -87,6 +88,7 @@ DEVICES += interface/future.retro DEVICES += interface/block.retro DEVICES += interface/deprecated.retro DEVICES += interface/error.retro +DEVICES += interface/ioctl.retro DEVICES += interface/final.retro DEVICES += interface/library.retro diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 3076382..03bf815 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -37,6 +37,7 @@ - filesystem device no longer included if ENABLE_FILES not defined - formatting cleanups + - added ioctl device Future Notes diff --git a/doc/Glossary-Concise.txt b/doc/Glossary-Concise.txt index 449aaa0..046e3ed 100644 --- a/doc/Glossary-Concise.txt +++ b/doc/Glossary-Concise.txt @@ -187,6 +187,9 @@ Return device ID for floating point. DEVICE:IMAGE D: -n A: - F: - Return device ID for image writer. +DEVICE:IOCTL D: -n A: - F: - +Return device ID for Unix IOCTL interface. + DEVICE:KEYBOARD D: -n A: - F: - Return device ID for Keyboard input. @@ -208,9 +211,6 @@ Reserved device ID. DEVICE:RESERVED13 D: -n A: - F: - Reserved device ID. -DEVICE:RESERVED14 D: -n A: - F: - -Reserved device ID. - DEVICE:RESERVED6 D: -n A: - F: - Reserved device ID. diff --git a/doc/Glossary-Names-and-Stack.txt b/doc/Glossary-Names-and-Stack.txt index 2eaf33a..48137e1 100644 --- a/doc/Glossary-Names-and-Stack.txt +++ b/doc/Glossary-Names-and-Stack.txt @@ -61,6 +61,7 @@ DEVICE:FFI D: -n A: - F: - DEVICE:FILES D: -n A: - F: - DEVICE:FLOATS D: -n A: - F: - DEVICE:IMAGE D: -n A: - F: - +DEVICE:IOCTL D: -n A: - F: - DEVICE:KEYBOARD D: -n A: - F: - DEVICE:MALLOC D: -n A: - F: - DEVICE:MULTICORE D: -n A: - F: - @@ -68,7 +69,6 @@ DEVICE:OUTPUT D: -n A: - F: - DEVICE:RESERVED11 D: -n A: - F: - DEVICE:RESERVED12 D: -n A: - F: - DEVICE:RESERVED13 D: -n A: - F: - -DEVICE:RESERVED14 D: -n A: - F: - DEVICE:RESERVED6 D: -n A: - F: - DEVICE:RNG D: -n A: - F: - DEVICE:SCRIPTING D: -n A: - F: - diff --git a/doc/Glossary.html b/doc/Glossary.html index e3b2d86..b539f6c 100644 --- a/doc/Glossary.html +++ b/doc/Glossary.html @@ -466,6 +466,13 @@

Return device ID for image writer.

Class: class:data
Namespace: DEVICE
Interface Layer: rre

+

DEVICE:IOCTL

+

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

+
+

Return device ID for Unix IOCTL interface.

+
Class: class:data
Namespace: DEVICE
Interface Layer: rre

DEVICE:KEYBOARD

Data: -n
Addr: -
@@ -515,13 +522,6 @@

Reserved device ID.

Class: class:data
Namespace: DEVICE
Interface Layer: rre

-

DEVICE:RESERVED14

-

Data: -n
-Addr: -
-Float: -

-
-

Reserved device ID.

-
Class: class:data
Namespace: DEVICE
Interface Layer: rre

DEVICE:RESERVED6

Data: -n
Addr: -
diff --git a/doc/Glossary.txt b/doc/Glossary.txt index 88b7670..ea29a89 100644 --- a/doc/Glossary.txt +++ b/doc/Glossary.txt @@ -724,6 +724,17 @@ Return device ID for image writer. Class: class:data | Namespace: DEVICE | Interface Layer: rre ------------------------------------------------------------------------ +DEVICE:IOCTL + + Data: -n + Addr: - + Float: - + +Return device ID for Unix IOCTL interface. + +Class: class:data | Namespace: DEVICE | Interface Layer: rre +------------------------------------------------------------------------ + DEVICE:KEYBOARD Data: -n @@ -801,17 +812,6 @@ Reserved device ID. Class: class:data | Namespace: DEVICE | Interface Layer: rre ------------------------------------------------------------------------ -DEVICE:RESERVED14 - - Data: -n - Addr: - - Float: - - -Reserved device ID. - -Class: class:data | Namespace: DEVICE | Interface Layer: rre ------------------------------------------------------------------------- - DEVICE:RESERVED6 Data: -n diff --git a/doc/words.tsv b/doc/words.tsv index d0d3e7d..170dd53 100644 --- a/doc/words.tsv +++ b/doc/words.tsv @@ -61,6 +61,7 @@ DEVICE:FFI -n - - Return device ID for foreign function interface. class:data DEVICE:FILES -n - - Return device ID for filesystem access. class:data {n/a} {n/a} DEVICE rre DEVICE:FLOATS -n - - Return device ID for floating point. class:data {n/a} {n/a} DEVICE rre DEVICE:IMAGE -n - - Return device ID for image writer. class:data {n/a} {n/a} DEVICE rre +DEVICE:IOCTL -n - - Return device ID for Unix IOCTL interface. class:data {n/a} {n/a} DEVICE rre DEVICE:KEYBOARD -n - - Return device ID for Keyboard input. class:data {n/a} {n/a} DEVICE rre DEVICE:MALLOC -n - - Return device ID for memory allocator. class:data {n/a} {n/a} DEVICE rre DEVICE:MULTICORE -n - - Return device ID for multicore support. class:data {n/a} {n/a} DEVICE rre @@ -68,7 +69,6 @@ DEVICE:OUTPUT -n - - Return device ID for Output device. class:data {n/a} {n/a DEVICE:RESERVED11 -n - - Reserved device ID. class:data {n/a} {n/a} DEVICE rre DEVICE:RESERVED12 -n - - Reserved device ID. class:data {n/a} {n/a} DEVICE rre DEVICE:RESERVED13 -n - - Reserved device ID. class:data {n/a} {n/a} DEVICE rre -DEVICE:RESERVED14 -n - - Reserved device ID. class:data {n/a} {n/a} DEVICE rre DEVICE:RESERVED6 -n - - Reserved device ID. class:data {n/a} {n/a} DEVICE rre DEVICE:RNG -n - - Return device ID for random number generator. class:data {n/a} {n/a} DEVICE rre DEVICE:SCRIPTING -n - - Return device ID for scripting support. class:data {n/a} {n/a} DEVICE rre diff --git a/interface/devices.retro b/interface/devices.retro index 462c003..5309905 100644 --- a/interface/devices.retro +++ b/interface/devices.retro @@ -13,7 +13,7 @@ #11 'DEVICE:RESERVED11 const #12 'DEVICE:RESERVED12 const #13 'DEVICE:RESERVED13 const -#14 'DEVICE:RESERVED14 const +#14 'DEVICE:IOCTL const #15 'DEVICE:MALLOC const #1000 'DEVICE:IMAGE const #1234 'DEVICE:ERROR const @@ -29,7 +29,7 @@ dup 'DEVICE:MULTICORE d:set-source dup 'DEVICE:ERROR d:set-source dup 'DEVICE:IMAGE d:set-source dup 'DEVICE:MALLOC d:set-source -dup 'DEVICE:RESERVED14 d:set-source +dup 'DEVICE:IOCTL d:set-source dup 'DEVICE:RESERVED13 d:set-source dup 'DEVICE:RESERVED12 d:set-source dup 'DEVICE:RESERVED11 d:set-source diff --git a/interface/ioctl.retro b/interface/ioctl.retro new file mode 100644 index 0000000..36d12f8 --- /dev/null +++ b/interface/ioctl.retro @@ -0,0 +1,12 @@ +~~~ +:ioctl:operation + DEVICE:IOCTL io:scan-for + dup n:negative? [ drop 'Error:_ioctl_device_not_found s:put nl ] if; + io:invoke ; + +:ioctl:term-size (-nn) #0 ioctl:operation ; +:ioctl:set-cbreak (-) #1 ioctl:operation ; +:ioctl:set-lbreak (-) #2 ioctl:operation ; +:ioctl:save-state (-) #3 ioctl:operation ; +:ioctl:restore-state (-) #4 ioctl:operation ; +~~~ diff --git a/vm/nga-c/config.h b/vm/nga-c/config.h index b71c5ff..951a12b 100644 --- a/vm/nga-c/config.h +++ b/vm/nga-c/config.h @@ -26,6 +26,7 @@ #define ENABLE_UNSIGNED #define ENABLE_MALLOC #define ENABLE_BLOCKS +#define ENABLE_IOCTL #endif #ifdef ENABLE_MULTICORE diff --git a/vm/nga-c/dev-ioctl.c b/vm/nga-c/dev-ioctl.c new file mode 100644 index 0000000..7e159ca --- /dev/null +++ b/vm/nga-c/dev-ioctl.c @@ -0,0 +1,65 @@ +/************************************************************** + _ __ _ _ + _ __ ___| |_ _ __ ___ / _| ___ _ __| |_| |__ + | '__/ _ \ __| '__/ _ \| |_ / _ \| '__| __| '_ \ + | | | __/ |_| | | (_) | _| (_) | | | |_| | | | + |_| \___|\__|_| \___/|_| \___/|_| \__|_| |_| + for nga + + (c) Charles Childers, Luke Parrish, Marc Simpsonn, + Jay Skeer, Kenneth Keating + +**************************************************************/ + +#ifdef ENABLE_IOCTL +#include +#include + +void ioctl_get_terminal_size(NgaState *vm) { + struct winsize size; + ioctl(STDOUT_FILENO, TIOCGWINSZ, &size); + stack_push(vm, size.ws_row); + stack_push(vm, size.ws_col); +} + +void ioctl_set_character_breaking_mode(NgaState *vm) { + struct termios term; + tcgetattr(STDIN_FILENO, &term); + term.c_iflag |= BRKINT; + tcsetattr(STDIN_FILENO, TCSANOW, &term); +} + +void ioctl_set_line_buffered_mode(NgaState *vm) { + struct termios term; + tcgetattr(STDIN_FILENO, &term); + term.c_lflag |= ICANON; + tcsetattr(STDIN_FILENO, TCSANOW, &term); +} + +struct termios savedTermState; + +void ioctl_save_current_state(NgaState *vm) { + tcgetattr(STDIN_FILENO, &savedTermState); +} + +void ioctl_restore_saved_state(NgaState *vm) { + tcsetattr(STDIN_FILENO, TCSANOW, &savedTermState); +} + +Handler IOCTLActions[] = { + ioctl_get_terminal_size, + ioctl_set_character_breaking_mode, + ioctl_set_line_buffered_mode, + ioctl_save_current_state, + ioctl_restore_saved_state +}; + +V query_ioctl(NgaState *vm) { + stack_push(vm, 0); + stack_push(vm, DEVICE_IOCTL); +} + +V io_ioctl(NgaState *vm) { + IOCTLActions[stack_pop(vm)](vm); +} +#endif diff --git a/vm/nga-c/devices.h b/vm/nga-c/devices.h index 35b9798..f245b52 100644 --- a/vm/nga-c/devices.h +++ b/vm/nga-c/devices.h @@ -12,7 +12,7 @@ #define DEVICE_RESERVED11 11 #define DEVICE_RESERVED12 12 #define DEVICE_RESERVED13 13 -#define DEVICE_RESERVED14 14 +#define DEVICE_IOCTL 14 #define DEVICE_MALLOC 15 #define DEVICE_IMAGE 1000 diff --git a/vm/nga-c/image.c b/vm/nga-c/image.c index 1fe18bb..0ff3f21 100644 --- a/vm/nga-c/image.c +++ b/vm/nga-c/image.c @@ -10,8 +10,8 @@ #define CELL_MAX LLONG_MAX - 1 #endif #endif -CELL ngaImageCells = 20803; -CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10,1,10,2,10,3,10, +CELL ngaImageCells = 21012; +CELL ngaImage[] = { 1793,11537,20974,21011,202409,417,389,1249,1535,0,11583,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,9 +20,9 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,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,20072,17108737,3,2,524559,130, - 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,19613,8246457295145463473,167841793, - 216,11,17826049,0,216,2,15,25,524546,18736,134287105,217,29,2305,218,459023,226,2049,4819,134287361, + 66,7,10,659713,1,659713,2,659713,3,659713,4,659713,5,1793,20281,17108737,3,2,524559,130, + 2049,130,2049,130,524545,0,130,524545,0,130,2049,144,1048838,2,1642241,10,7,19822,8246457295145463473,167841793, + 216,11,17826049,0,216,2,15,25,524546,18731,134287105,217,29,2305,218,459023,226,2049,4819,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, 105,108,58,105,0,285278479,276,6,2576,524546,104,1641217,1,167838467,273,2049,288,2049,284,524545, @@ -170,7 +170,7 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10 110,58,105,110,99,0,659713,1,10,3114,3139,168,12432,210720197721,110,58,100,101,99,0, 659969,1,10,3128,3158,168,12432,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,12432,249861296566813883,83,99, - 111,112,101,76,105,115,116,0,20487,20600,10,3172,3198,168,12432,5864091,123,123,0,2049, + 111,112,101,76,105,115,116,0,20696,20809,10,3172,3198,168,12432,5864091,123,123,0,2049, 1576,2,1,3187,2049,61,16,10,3190,3225,168,12432,-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,12432,5864159,125, 125,0,1,3187,2049,58,4,15,11,1793,3255,3841,3187,4097,2,10,1,3250,1793,3281, @@ -225,7 +225,7 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10 4211,2049,2229,4097,4000,10,4184,4242,156,12432,-4600587576916820603,84,101,109,112,83,116,114,105,110, 103,115,0,32,4225,4262,156,12432,7474516786580364824,84,101,109,112,83,116,114,105,110,103,77, 97,120,0,512,4243,4276,168,12432,229440420829967,83,84,82,73,78,71,83,0,2049,1545,3841, - 4242,3841,4262,19,18,10,4263,4298,156,0,0,67,117,114,114,101,110,116,0,0, + 4242,3841,4262,19,18,10,4263,4298,156,0,0,67,117,114,114,101,110,116,0,1, 10,4285,4315,168,0,0,115,58,112,111,105,110,116,101,114,0,3841,4298,3841,4262, 19,2049,4276,17,10,4300,4336,168,0,0,115,58,110,101,120,116,0,1,4298,2049, 3816,3841,4298,3841,4242,11,1793,4352,1,0,4097,4298,10,1,4347,9,10,4263,4368,168, @@ -528,7 +528,7 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10 2049,2740,1,417,1,17,2049,66,10,1,10276,2049,2229,2049,3125,10,1,10269,2049,2449, 2049,417,10,10145,10318,168,12432,8246849872898570441,115,58,101,118,97,108,117,97,116,101,0,2049, 10210,2049,5517,2049,10210,2,2049,10234,2049,10267,10,10302,10338,156,0,0,76,80,0,0, - 10330,10350,156,0,0,73,110,100,101,120,0,0,14,0,0,0,0,0,0,0, + 10330,10350,156,0,0,73,110,100,101,120,0,0,15,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,10339,10392,168,0,0,110,101,120,116,0,3841,10338,1,10350,17,2049,3816, 10,10382,10410,168,0,0,112,114,101,112,0,1,10338,2049,3816,1,0,3841,10338,1, @@ -599,7 +599,7 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10 114,33,0,2049,11665,16,10,11692,11716,168,12101,6385111390,99,100,114,64,0,2049,11675,15, 10,11706,11730,168,12101,6385111359,99,100,114,33,0,2049,11675,16,10,11720,11743,168,12101,193454780, 69,78,68,0,10,11734,11760,168,12101,8246317064958091121,102,108,108,58,99,114,101,97,116,101, - 0,1,11743,2049,11641,10,11744,11772,156,0,177687,114,0,18950,11744,11789,168,12101,8246317065617826724,102, + 0,1,11743,2049,11641,10,11744,11772,156,0,177687,114,0,18945,11744,11789,168,12101,8246317065617826724,102, 108,108,58,116,111,45,101,110,100,0,2,4097,11772,1793,11814,2049,11716,2,1,11743, 12,2,1793,11807,67502597,4097,11772,10,1,11803,1,2172,2049,66,10,1,11794,2049,2372,3841, 11772,10,11773,11843,168,12101,4204933718218055169,102,108,108,58,97,112,112,101,110,100,47,118,97, @@ -618,8 +618,8 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10 12101,229465928304278,102,108,108,58,112,117,116,0,1793,12096,2049,10853,2049,10807,10,1,12091,2049, 11940,10,105,110,116,101,114,102,97,99,101,47,108,108,46,114,101,116,114,111, 0,105,110,105,116,0,12120,12362,12076,12145,156,12340,-2744922491217532500,115,58,100,101,100,117,112, - 46,100,97,116,97,0,12125,12127,12154,156,0,5863786,116,49,0,508416,12146,12163,156,0, - 5863787,116,50,0,19587,12127,12186,168,12340,-1192507208876296873,115,58,100,101,100,117,112,46,114,101, + 46,100,97,116,97,0,12125,12127,12154,156,0,5863786,116,49,0,508928,12146,12163,156,0, + 5863787,116,50,0,19796,12127,12186,168,12340,-1192507208876296873,115,58,100,101,100,117,112,46,114,101, 103,105,115,116,101,114,0,2049,4445,3841,12145,4,1,11843,2049,2241,10,12164,12218,168, 12340,-1192507805573830048,115,58,100,101,100,117,112,46,100,101,102,105,110,101,100,63,0,4097, 12154,1,0,4097,12163,3841,12145,1793,12238,3841,12154,2049,118,3841,12163,22,4097,12163,10,1, @@ -633,422 +633,432 @@ CELL ngaImage[] = { 1793,11537,20765,20802,202409,417,389,1249,1535,0,11583,0,10 99,101,0,1,12310,2049,2229,2049,236,2049,186,16,10,105,110,116,101,114,102,97, 99,101,47,115,111,117,114,99,101,115,46,114,101,116,114,111,0,12392,12430,98, 117,105,108,100,46,114,101,116,114,111,0,12418,12444,114,101,116,114,111,46,102, - 111,114,116,104,0,12432,12886,12364,0,156,12862,-2419379730924625824,68,69,86,73,67,69,58,79, - 85,84,80,85,84,0,12446,1,156,12862,3179875372589939872,68,69,86,73,67,69,58,75,69, - 89,66,79,65,82,68,0,12465,2,156,12862,-2419379731287713704,68,69,86,73,67,69,58,70, - 76,79,65,84,83,0,12486,4,156,12862,-5104244739232646654,68,69,86,73,67,69,58,70,73, - 76,69,83,0,12505,3,156,12862,-2419379731444253395,68,69,86,73,67,69,58,66,76,79,67, - 75,83,0,12523,5,156,12862,-5104244739236093413,68,69,86,73,67,69,58,67,76,79,67,75, - 0,12542,6,156,12862,-5744567309556069531,68,69,86,73,67,69,58,82,69,83,69,82,86,69, - 68,54,0,12560,7,156,12862,-2419379730775816680,68,69,86,73,67,69,58,83,79,67,75,69, - 84,0,12582,8,156,12862,-4626612040269427085,68,69,86,73,67,69,58,85,78,73,88,0,12601, - 9,156,12862,-5744565989521702654,68,69,86,73,67,69,58,83,67,82,73,80,84,73,78,71, - 0,12618,10,156,12862,8244683305011325430,68,69,86,73,67,69,58,82,78,71,0,12640,11,156, - 12862,-5103280478254778479,68,69,86,73,67,69,58,82,69,83,69,82,86,69,68,49,49,0, - 12656,12,156,12862,-5103280478254778478,68,69,86,73,67,69,58,82,69,83,69,82,86,69,68, - 49,50,0,12679,13,156,12862,-5103280478254778477,68,69,86,73,67,69,58,82,69,83,69,82, - 86,69,68,49,51,0,12702,14,156,12862,-5103280478254778476,68,69,86,73,67,69,58,82,69, - 83,69,82,86,69,68,49,52,0,12725,15,156,12862,-2419379731026907097,68,69,86,73,67,69, - 58,77,65,76,76,79,67,0,12748,1000,156,12862,-5104244739228957070,68,69,86,73,67,69,58, - 73,77,65,71,69,0,12767,1234,156,12862,-5104244739233502279,68,69,86,73,67,69,58,69,82, - 82,79,82,0,12785,8000,156,12862,-5744573668168662717,68,69,86,73,67,69,58,77,85,76,84, - 73,67,79,82,69,0,12803,8100,156,12862,8244683305011312100,68,69,86,73,67,69,58,70,70, - 73,0,12825,8101,156,12862,3179875810170796684,68,69,86,73,67,69,58,85,78,83,73,71,78, - 69,68,0,105,110,116,101,114,102,97,99,101,47,100,101,118,105,99,101,115, - 46,114,101,116,114,111,0,12862,15046,12841,12909,168,15016,-6845980351726443322,102,108,111,97,116,58, - 111,112,101,114,97,116,105,111,110,0,1,2,2049,10731,2,2049,2761,1793,12967,3, - 2049,4417,69,114,114,111,114,58,32,102,108,111,97,116,105,110,103,32,112,111, - 105,110,116,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100, - 0,1,12921,2049,10837,2049,10794,10,1,12918,2049,2862,2049,10712,10,12888,12990,168,15016,8246618443670464787, - 110,58,116,111,45,102,108,111,97,116,0,1,0,2049,12909,10,12974,13011,168,15016, - 8246850501092474552,115,58,116,111,45,102,108,111,97,116,0,1,1,2049,12909,10,12995,13033,168, - 15016,-4575005096076366594,102,58,116,111,45,110,117,109,98,101,114,0,1,2,2049,12909,10,13016, - 13055,168,15016,-4575005095881687956,102,58,116,111,45,115,116,114,105,110,103,0,2049,4396,2,1, - 3,2049,12909,10,13038,13072,168,15016,193490032,102,58,43,0,1,4,2049,12909,10,13063,13086, - 168,15016,193490034,102,58,45,0,1,5,2049,12909,10,13077,13100,168,15016,193490031,102,58,42, - 0,1,6,2049,12909,10,13091,13114,168,15016,193490036,102,58,47,0,1,7,2049,12909,10, - 13105,13132,168,15016,229463966214663,102,58,102,108,111,111,114,0,1,8,2049,12909,10,13119,13152, - 168,15016,249886255052186944,102,58,99,101,105,108,105,110,103,0,1,9,2049,12909,10,13137,13169, - 168,15016,6953453994383,102,58,115,113,114,116,0,1,10,2049,12909,10,13157,13185,168,15016,210710711802, - 102,58,101,113,63,0,1,11,2049,12909,10,13174,13202,168,15016,6953451465639,102,58,45,101, - 113,63,0,1,12,2049,12909,10,13190,13218,168,15016,210710719524,102,58,108,116,63,0,1, - 13,2049,12909,10,13207,13234,168,15016,210710714079,102,58,103,116,63,0,1,14,2049,12909,10, - 13223,13252,168,15016,229463963592506,102,58,100,101,112,116,104,0,1,15,2049,12909,10,13239,13268, - 168,15016,210710710894,102,58,100,117,112,0,1,16,2049,12909,10,13257,13285,168,15016,6953453456314,102, - 58,100,114,111,112,0,1,17,2049,12909,10,13273,13302,168,15016,6953454000352,102,58,115,119, - 97,112,0,1,18,2049,12909,10,13290,13318,168,15016,210710719399,102,58,108,111,103,0,1, - 19,2049,12909,10,13307,13336,168,15016,229463978190066,102,58,112,111,119,101,114,0,1,20,2049, - 12909,10,13323,13352,168,15016,210710726831,102,58,115,105,110,0,1,21,2049,12909,10,13341,13368, - 168,15016,210710727656,102,58,116,97,110,0,1,22,2049,12909,10,13357,13384,168,15016,210710709610,102, - 58,99,111,115,0,1,23,2049,12909,10,13373,13401,168,15016,6953453349392,102,58,97,115,105, - 110,0,1,24,2049,12909,10,13389,13418,168,15016,6953453332171,102,58,97,99,111,115,0,1, - 25,2049,12909,10,13406,13435,168,15016,6953453350217,102,58,97,116,97,110,0,1,26,2049,12909, - 10,13423,13452,168,15016,6953453890949,102,58,112,117,115,104,0,1,27,2049,12909,10,13440,13468, - 168,15016,210710723764,102,58,112,111,112,0,1,28,2049,12909,10,13457,13487,168,15016,7572310679561435,102, - 58,97,100,101,112,116,104,0,1,29,2049,12909,10,13473,13504,168,15016,6953453855649,102,58, - 111,118,101,114,0,2049,13452,2049,13268,2049,13468,2049,13302,10,13492,13525,168,15016,6953454034172,102, - 58,116,117,99,107,0,2049,13268,2049,13452,2049,13302,2049,13468,10,13513,13545,168,15016,210710721388, - 102,58,110,105,112,0,2049,13302,2049,13285,10,13534,13567,168,15016,-4575027385529052237,102,58,100,114, - 111,112,45,112,97,105,114,0,2049,13285,2049,13285,10,13550,13588,168,15016,8246246480203571943,102,58, - 100,117,112,45,112,97,105,114,0,2049,13504,2049,13504,10,13572,13604,168,15016,210710725946,102, - 58,114,111,116,0,2049,13452,2049,13302,2049,13468,2049,13302,10,13593,13626,180,15016,229482595734757,115, - 105,103,105,108,58,46,0,2049,1913,1,4445,1,4368,2049,66,1,13011,2049,168,10, - 13613,13653,168,15016,7572311399974070,102,58,115,113,117,97,114,101,0,2049,13268,2049,13100,10,13639, - 13675,168,15016,-4575010631505066633,102,58,112,111,115,105,116,105,118,101,63,0,1,0,2049,12990, - 2049,13234,10,13658,13699,168,15016,-4575013886317431657,102,58,110,101,103,97,116,105,118,101,63,0, - 1,0,2049,12990,2049,13218,10,13682,13720,168,15016,7572311189563001,102,58,110,101,103,97,116,101, - 0,1,-1,2049,12990,2049,13100,10,13706,13738,168,15016,210710707003,102,58,97,98,115,0,2049, - 13268,2049,13699,1,13720,9,10,13727,13757,168,15016,210710723966,102,58,112,117,116,0,2049,13055, - 2049,10837,10,13746,13772,168,15016,6385172350,102,58,80,73,0,2049,4417,51,46,49,52,49, - 53,57,50,54,53,52,0,1,13774,2049,13011,10,13762,13800,168,15016,193490058,102,58,69, - 0,2049,4417,50,46,55,49,56,50,56,49,56,50,56,0,1,13802,2049,13011,10, - 13791,13830,168,15016,210710685186,102,58,78,65,78,0,2049,4417,48,0,1,13832,2049,13011,2049, - 4417,48,0,1,13840,2049,13011,2049,13114,10,13819,13860,168,15016,210710680162,102,58,73,78,70, - 0,2049,4417,49,46,48,0,1,13862,2049,13011,2049,4417,48,0,1,13872,2049,13011,2049, - 13114,10,13849,13893,168,15016,6953451433999,102,58,45,73,78,70,0,2049,4417,45,49,46,48, - 0,1,13895,2049,13011,2049,4417,48,0,1,13906,2049,13011,2049,13114,10,13881,13927,168,15016, - 6953453797089,102,58,110,97,110,63,0,2049,13268,2049,13202,10,13915,13944,168,15016,6953453631297,102,58, - 105,110,102,63,0,2049,13860,2049,13185,10,13932,13962,168,15016,229463898507918,102,58,45,105,110, - 102,63,0,2049,13893,2049,13185,10,13949,13980,168,15016,229463980560013,102,58,114,111,117,110,100, - 0,2049,13268,2049,13699,1793,14001,2049,4417,48,46,53,0,1,13988,2049,13011,2049,13086,2049, - 13152,10,1,13986,1793,14020,2049,4417,48,46,53,0,1,14007,2049,13011,2049,13072,2049,13132, - 10,1,14005,2049,66,10,13967,14036,168,15016,210710720297,102,58,109,105,110,0,2049,13588,2049, - 13218,1,13285,1,13545,2049,66,10,14025,14058,168,15016,210710720043,102,58,109,97,120,0,2049, - 13588,2049,13234,1,13285,1,13545,2049,66,10,14047,14082,168,15016,229463973220004,102,58,108,105,109, - 105,116,0,2049,13302,2049,13452,2049,14036,2049,13468,2049,14058,10,14069,14109,168,15016,8246246374547107374,102, - 58,98,101,116,119,101,101,110,63,0,2049,13604,2049,13268,2049,13452,2049,13604,2049,13604, - 2049,14082,2049,13468,2049,13185,10,14093,14137,168,15016,210710716095,102,58,105,110,99,0,2049,4417, - 49,0,1,14139,2049,13011,2049,13072,10,14126,14159,168,15016,210710710353,102,58,100,101,99,0, - 2049,4417,49,0,1,14161,2049,13011,2049,13086,10,14148,14182,168,15016,6953453401985,102,58,99,97, - 115,101,0,2049,13504,2049,13185,1793,14194,2049,13285,8,1,-1,10,1,14188,1793,14202,3, - 1,0,10,1,14198,2049,66,25,6,771,10,14170,14222,168,15016,6953453985302,102,58,115,105, - 103,110,0,2049,13268,2049,4417,48,0,1,14226,2049,13011,2049,13185,1793,14241,1,0,2049, - 13285,10,1,14236,2049,2862,2049,4417,48,0,1,14247,2049,13011,2049,13234,1793,14260,1,1, - 10,1,14257,1793,14267,1,-1,10,1,14264,2049,66,10,14210,9223372036854775805,156,15016,210709498186,101,58, - 77,65,88,0,14272,-9223372036854775805,156,15016,210709498440,101,58,77,73,78,0,14283,-9223372036854775807,156,15016,210709499265, - 101,58,78,65,78,0,14294,9223372036854775806,156,15016,210709494241,101,58,73,78,70,0,14305,-9223372036854775806,156, - 15016,6953412298606,101,58,45,73,78,70,0,14316,14338,168,15016,6385137393,101,58,110,63,0,1, - -9223372036854775805,2049,3125,1,9223372036854775805,2049,3139,2049,3158,10,14328,14361,168,15016,6953414626089,101,58,109,97,120, - 63,0,1,9223372036854775805,11,10,14349,14377,168,15016,6953414634471,101,58,109,105,110,63,0,1,-9223372036854775805, - 11,10,14365,14394,168,15016,229462698216771,101,58,122,101,114,111,63,0,2049,2722,10,14381,14409, - 168,15016,6953414661696,101,58,110,97,110,63,0,1,-9223372036854775807,11,10,14397,14425,168,15016,6953414495904,101, - 58,105,110,102,63,0,1,9223372036854775806,11,10,14413,14442,168,15016,229462607039949,101,58,45,105,110, - 102,63,0,1,-9223372036854775806,11,10,14429,14458,168,15016,6953414278252,101,58,99,108,105,112,0,1, - -9223372036854775805,1,9223372036854775805,2049,3106,10,14446,14475,168,15016,6385171963,102,58,69,49,0,1793,14477,2049,4417, - 49,46,101,53,0,1,14479,2049,13011,10,14465,14508,168,15016,-1561378222854156682,102,58,115,105,103, - 110,101,100,45,115,113,114,116,0,2049,13268,2049,14222,2049,13738,2049,13169,2049,12990,2049, - 13100,10,14489,14542,168,15016,-3240429906897787043,102,58,115,105,103,110,101,100,45,115,113,117,97, - 114,101,0,2049,13268,2049,14222,2049,13268,2049,13100,2049,12990,2049,13100,10,14521,14569,168,0, - 7572308662409552,102,58,45,115,104,105,102,116,0,2049,14475,2049,13100,10,14555,14588,168,0,7572308584138766, - 102,58,43,115,104,105,102,116,0,2049,14475,2049,13114,10,14574,14608,168,0,249886182735593054,102, - 58,43,101,110,99,111,100,101,0,2049,14508,2049,14569,10,14593,14628,168,0,249886185318528992,102, - 58,45,101,110,99,111,100,101,0,2049,13268,2049,14222,2049,14588,2049,13268,2049,13100,2049, - 12990,2049,13100,10,14521,14655,168,15016,6953454025850,102,58,116,111,45,101,0,2049,13268,2049,13927, - 1793,14666,2049,13285,1,-9223372036854775807,10,1,14661,2049,2862,2049,13268,2049,13944,1793,14681,2049,13285,1, - 9223372036854775806,10,1,14676,2049,2862,2049,13268,2049,13962,1793,14696,2049,13285,1,-9223372036854775806,10,1,14691,2049, - 2862,2049,14608,2049,13980,2049,13033,2049,14458,1,-9223372036854775805,1,13285,2049,2554,1,9223372036854775805,1,13285,2049, - 2554,10,14643,14733,168,15016,6953414890458,101,58,116,111,45,102,0,1,-9223372036854775807,1,13830,2049,2554, - 1,9223372036854775806,1,13860,2049,2554,1,-9223372036854775806,1,13893,2049,2554,2049,12990,2049,14628,10,14721,14769,168, - 15016,229463981919218,102,58,115,116,111,114,101,0,1,14655,2049,2229,16,10,14756,14788,168,15016, - 229463965968143,102,58,102,101,116,99,104,0,15,2049,14733,10,14775,14810,168,15016,-3401946998789110658,102,58, - 100,117,109,112,45,115,116,97,99,107,0,2049,13252,2,1,13452,2049,2449,1793,14828, - 2049,13468,2049,13268,2049,13757,2049,10807,10,1,14819,2049,2449,10,14792,14852,168,15016,-1583786518488284545,102, - 58,100,117,109,112,45,97,115,116,97,99,107,0,2049,13487,2,1,13468,2049,2449, - 1793,14870,2049,13268,2049,13757,2049,10807,2049,13452,10,1,14861,2049,2449,10,14833,14886,168,15016, - 210709538045,101,58,112,117,116,0,1,9223372036854775805,1793,14903,2049,4417,101,58,77,65,88,0,1, - 14892,2049,10837,10,1,14890,2049,2554,1,-9223372036854775805,1793,14924,2049,4417,101,58,77,73,78,0, - 1,14913,2049,10837,10,1,14911,2049,2554,1,0,1793,14943,2049,4417,101,58,48,0,1, - 14934,2049,10837,10,1,14932,2049,2554,1,-9223372036854775807,1793,14964,2049,4417,101,58,78,65,78,0, - 1,14953,2049,10837,10,1,14951,2049,2554,1,9223372036854775806,1793,14985,2049,4417,101,58,73,78,70, - 0,1,14974,2049,10837,10,1,14972,2049,2554,1,-9223372036854775806,1793,15007,2049,4417,101,58,45,73, - 78,70,0,1,14995,2049,10837,10,1,14993,2049,2554,2049,14733,2049,13757,10,105,110,116, - 101,114,102,97,99,101,47,102,108,111,97,116,105,110,103,112,111,105,110,116, - 46,114,101,116,114,111,0,15016,15893,14875,15068,168,15866,8056574075740390096,102,105,108,101,58,111, - 112,101,114,97,116,105,111,110,0,1,4,2049,10731,2,2049,2761,1793,15117,3,2049, - 4417,69,114,114,111,114,58,32,102,105,108,101,115,32,100,101,118,105,99,101, - 32,110,111,116,32,102,111,117,110,100,0,1,15080,2049,10837,2049,10794,10,1,15077, - 2049,2862,2049,10712,10,15048,0,156,15866,6953509466161,102,105,108,101,58,82,0,15124,1,156, - 15866,6953509466166,102,105,108,101,58,87,0,15136,2,156,15866,6953509466144,102,105,108,101,58,65, - 0,15148,3,156,15866,229465812383356,102,105,108,101,58,82,43,0,15160,15188,168,15866,249888269686595441,102, - 105,108,101,58,111,112,101,110,0,1,0,2049,15068,10,15173,15209,168,15866,8246312899643285909,102, - 105,108,101,58,99,108,111,115,101,0,1,1,2049,15068,10,15193,15229,168,15866,249888269686691131, - 102,105,108,101,58,114,101,97,100,0,1,2,2049,15068,10,15214,15250,168,15866,8246312899667213450, - 102,105,108,101,58,119,114,105,116,101,0,1,3,2049,15068,10,15234,15270,168,15866, - 249888269686763376,102,105,108,101,58,116,101,108,108,0,1,4,2049,15068,10,15255,15290,168,15866, - 249888269686727207,102,105,108,101,58,115,101,101,107,0,1,5,2049,15068,10,15275,15310,168,15866, - 249888269686732250,102,105,108,101,58,115,105,122,101,0,1,6,2049,15068,10,15295,15332,168,15866, - -4572835417384127758,102,105,108,101,58,100,101,108,101,116,101,0,1,7,2049,15068,10,15315,15353, - 168,15866,8246312899646850209,102,105,108,101,58,102,108,117,115,104,0,1,8,2049,15068,10,15337, - 15379,168,15866,7612651040925696305,102,105,108,101,58,114,101,97,100,47,98,121,116,101,115,0, - 1,9,2049,15068,10,15358,15406,168,15866,-7028659436281878592,102,105,108,101,58,119,114,105,116,101, - 47,98,121,116,101,115,0,1,10,2049,15068,10,15384,15428,168,15866,-4572835416836630931,102,105,108, - 101,58,114,101,97,100,47,99,0,1,11,2049,15068,10,15411,15451,168,15866,-3329616158956188292,102, - 105,108,101,58,119,114,105,116,101,47,99,0,1,12,2049,15068,10,15433,15474,168, - 15866,-3329616181967816770,102,105,108,101,58,101,120,105,115,116,115,63,0,1,0,2049,15188,2, - 2049,2740,1793,15488,2049,15209,2049,2527,10,1,15483,1793,15496,3,2049,2541,10,1,15492,2049, - 66,10,15456,15528,168,15866,-4283841618960457812,102,105,108,101,58,111,112,101,110,45,102,111,114, - 45,114,101,97,100,105,110,103,0,1,0,2049,15188,2,2049,15310,4,10,15501,15563, - 168,15866,2106155595587003402,102,105,108,101,58,111,112,101,110,45,102,111,114,45,97,112,112, - 101,110,100,0,1,2,2049,15188,2,2049,15310,4,10,15537,15599,168,15866,-4283841611984295498,102,105, - 108,101,58,111,112,101,110,45,102,111,114,45,119,114,105,116,105,110,103,0, - 1,1,2049,15188,10,15572,15613,156,0,193455704,70,73,68,0,0,15604,15624,156,0,6384542144, - 83,105,122,101,0,0,15614,15637,156,0,6952054634723,65,99,116,105,111,110,0,0,15625, - 15649,168,0,210644670123,45,101,111,102,63,0,3841,15613,2049,15270,3841,15624,13,10,15638,15671, - 168,0,7572809360530097,112,114,101,115,101,114,118,101,0,1,15613,1793,15682,1,15624,1,27, - 2049,3919,10,1,15675,2049,3919,10,15572,15707,168,15866,8056577820387649264,102,105,108,101,58,114,101, - 97,100,45,108,105,110,101,0,2049,1977,4,1,13,2049,15068,2049,1977,10,15687,15741, - 168,15866,-8859848394595038695,102,105,108,101,58,102,111,114,45,101,97,99,104,45,108,105,110, - 101,0,1793,15772,4097,15637,2049,15528,4097,15613,4097,15624,1793,15763,3841,15613,2049,15707,3841,15637, - 8,2049,15649,10,1,15753,2049,2372,3841,15613,2049,15209,10,1,15743,2049,15671,10,15717,15786, - 156,0,193455704,70,73,68,0,0,15717,15803,168,15866,8246312899662267157,102,105,108,101,58,115,108, - 117,114,112,0,1793,15830,4,2049,4179,2049,15528,4097,15786,1793,15821,3841,15786,2049,15229,2049, - 4079,10,1,15814,2049,2449,3841,15786,2049,15209,10,1,15805,2049,4205,10,15787,15850,168,15866, - 249888269686739198,102,105,108,101,58,115,112,101,119,0,2049,15599,4,1793,15859,67502597,2049,15250,10, - 1,15855,2049,4686,2049,15209,10,105,110,116,101,114,102,97,99,101,47,102,105,108, - 101,115,121,115,116,101,109,46,114,101,116,114,111,0,15866,16630,15835,15916,168,16609, - 4299348465103751587,105,111,58,117,110,105,120,45,115,121,115,99,97,108,108,0,1,8,2049, - 10731,2,2049,2761,1793,15964,3,2049,4417,69,114,114,111,114,58,32,85,78,73,88, - 32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,15928, - 2049,10837,2049,10794,10,1,15925,2049,2862,2049,10712,10,15895,15988,168,16609,-4549633084047572696,117,110,105, - 120,58,115,121,115,116,101,109,0,1,0,2049,15916,10,15971,16008,168,16609,249909575776928405,117, - 110,105,120,58,102,111,114,107,0,1,1,2049,15916,10,15993,16029,168,16609,8247016000637760504,117, - 110,105,120,58,101,120,101,99,48,0,1,2,2049,15916,10,16013,16050,168,16609,8247016000637760505, - 117,110,105,120,58,101,120,101,99,49,0,1,3,2049,15916,10,16034,16071,168,16609, - 8247016000637760506,117,110,105,120,58,101,120,101,99,50,0,1,4,2049,15916,10,16055,16092,168, - 16609,8247016000637760507,117,110,105,120,58,101,120,101,99,51,0,1,5,2049,15916,10,16076,16112, - 168,16609,249909575776901981,117,110,105,120,58,101,120,105,116,0,1,6,2049,15916,10,16097,16134, - 168,16609,-4549633084540884128,117,110,105,120,58,103,101,116,112,105,100,0,1,7,2049,15916,10, - 16117,16154,168,16609,249909575777523800,117,110,105,120,58,119,97,105,116,0,1,8,2049,15916,10, - 16139,16174,168,16609,249909575777101359,117,110,105,120,58,107,105,108,108,0,1,9,2049,15916,10, - 16159,16195,168,16609,8247016000650494309,117,110,105,120,58,112,111,112,101,110,0,1,10,2049,15916, - 10,16179,16217,168,16609,-4549633084191325687,117,110,105,120,58,112,99,108,111,115,101,0,1,11, - 2049,15916,10,16200,16238,168,16609,8247016000634812845,117,110,105,120,58,99,104,100,105,114,0,1, - 13,2049,15916,10,16222,16260,168,16609,-4549633084540895924,117,110,105,120,58,103,101,116,101,110,118, - 0,1,14,2049,15916,10,16243,16282,168,16609,-4549633084169702651,117,110,105,120,58,112,117,116,101, - 110,118,0,1,15,2049,15916,10,16265,16303,168,16609,8247016000653932284,117,110,105,120,58,115,108, - 101,101,112,0,1,16,2049,15916,10,16287,16326,168,16609,-2563939202030369066,117,110,105,120,58,101, - 120,101,99,117,116,101,0,1,17,2049,15916,10,16308,16346,168,16609,249909575777281169,117,110,105, - 120,58,112,105,112,101,0,1,0,2049,16195,1,15707,1,16217,2049,2255,10,16331,16375, - 168,16609,-2563939200175176882,117,110,105,120,58,103,101,116,45,99,119,100,0,2049,4417,112,119, - 100,0,1,16377,2049,16346,2049,6999,2049,4417,47,0,1,16389,2049,4666,10,16357,16425,168, - 16609,-2316844556017942917,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,4417,108,115,32,45,49,32,124,32,119,99,32,45, - 108,0,1,16427,2049,16346,2049,6999,2049,266,10,16396,16474,168,16609,-4594486429310984907,117,110,105,120, - 58,102,111,114,45,101,97,99,104,45,102,105,108,101,0,2049,4417,108,115,32, - 45,49,32,45,112,0,1,16476,1,0,2049,16195,2049,16425,1793,16509,1793,16504,2049,15707, - 2049,4368,67502597,8,10,1,16497,2049,2241,10,1,16495,2049,2449,2049,16217,3,10,16450,16528, - 168,0,210728208851,115,116,97,114,116,0,4,2049,4179,1,0,2049,16195,10,16517,16546,168, - 0,6385651009,114,101,97,100,0,2,2049,15229,2,2049,4079,2049,2722,10,16536,16567,168,0, - 6953509544294,102,105,110,105,115,104,0,2049,16217,2049,4157,10,16450,16593,168,16609,1204178398703148788,117,110, - 105,120,58,115,108,117,114,112,45,112,105,112,101,0,1793,16604,2049,16528,1,16546, - 2049,2397,2049,16567,10,1,16595,2049,4205,10,105,110,116,101,114,102,97,99,101,47, - 117,110,105,120,46,114,101,116,114,111,0,16609,16720,16572,16646,168,16700,7572652289159374,110,58, - 114,97,110,100,111,109,0,1,10,2049,10731,2,2049,2761,1793,16693,3,2049,4417,69, - 114,114,111,114,58,32,82,78,71,32,100,101,118,105,99,101,32,110,111,116, - 32,102,111,117,110,100,0,1,16658,2049,10837,2049,10794,10,1,16655,2049,2862,2049,10712, - 10,105,110,116,101,114,102,97,99,101,47,114,110,103,46,114,101,116,114,111, - 0,16700,17131,16632,16743,168,17109,4482520117059041020,99,108,111,99,107,58,111,112,101,114,97,116, - 105,111,110,0,1,5,2049,10731,2,2049,2761,1793,16792,3,2049,4417,69,114,114,111, - 114,58,32,99,108,111,99,107,32,100,101,118,105,99,101,32,110,111,116,32, - 102,111,117,110,100,0,1,16755,2049,10837,2049,10794,10,1,16752,2049,2862,2049,10712,10, - 16722,16820,168,17109,4482526860617352831,99,108,111,99,107,58,116,105,109,101,115,116,97,109,112, - 0,1,0,2049,16743,10,16799,16840,168,17109,249884182168395049,99,108,111,99,107,58,100,97,121, - 0,1,1,2049,16743,10,16825,16862,168,17109,-4577286724249897519,99,108,111,99,107,58,109,111,110, - 116,104,0,1,2,2049,16743,10,16845,16883,168,17109,8246178011557794972,99,108,111,99,107,58,121, - 101,97,114,0,1,3,2049,16743,10,16867,16904,168,17109,8246178011557195593,99,108,111,99,107,58, - 104,111,117,114,0,1,4,2049,16743,10,16888,16927,168,17109,-3476509310577319139,99,108,111,99,107, - 58,109,105,110,117,116,101,0,1,5,2049,16743,10,16909,16950,168,17109,-3476509310347652505,99,108, - 111,99,107,58,115,101,99,111,110,100,0,1,6,2049,16743,10,16932,16974,168,17109, - -4044342796047171665,99,108,111,99,107,58,117,116,99,58,100,97,121,0,1,7,2049,16743,10, - 16955,17000,168,17109,4482528721224061399,99,108,111,99,107,58,117,116,99,58,109,111,110,116,104, - 0,1,8,2049,16743,10,16979,17025,168,17109,-4336103753589045278,99,108,111,99,107,58,117,116,99, - 58,121,101,97,114,0,1,9,2049,16743,10,17005,17050,168,17109,-4336103753589644657,99,108,111,99, - 107,58,117,116,99,58,104,111,117,114,0,1,10,2049,16743,10,17030,17077,168,17109, - 349495210710499299,99,108,111,99,107,58,117,116,99,58,109,105,110,117,116,101,0,1,11, - 2049,16743,10,17055,17104,168,17109,349495210940165933,99,108,111,99,107,58,117,116,99,58,115,101, - 99,111,110,100,0,1,12,2049,16743,10,105,110,116,101,114,102,97,99,101,47, - 99,108,111,99,107,46,114,101,116,114,111,0,17109,17533,17082,17155,168,0,1976442044545254821,115, - 99,114,105,112,116,58,111,112,101,114,97,116,105,111,110,0,1,9,2049,10731, - 2,2049,2761,1793,17208,3,2049,4417,69,114,114,111,114,58,32,115,99,114,105,112, - 116,105,110,103,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110, - 100,0,1,17167,2049,10837,2049,10794,10,1,17164,2049,2862,2049,10712,10,17082,17237,168,17507, - 1976422442775525130,115,99,114,105,112,116,58,97,114,103,117,109,101,110,116,115,0,1,0, - 2049,17155,10,17215,17267,168,17507,7012485947518414468,115,99,114,105,112,116,58,103,101,116,45,97, - 114,103,117,109,101,110,116,0,2049,4396,4,1,1,2049,17155,10,17242,17288,168,17507, - 229469872107401,105,110,99,108,117,100,101,0,1,2,2049,17155,10,17275,17310,168,17507,-4553194680242110987,115, - 99,114,105,112,116,58,110,97,109,101,0,2049,4396,1,3,2049,17155,10,17293,17342, - 168,17507,6834827170184619652,115,99,114,105,112,116,58,99,117,114,114,101,110,116,45,102,105, - 108,101,0,2049,4396,1,4,2049,17155,10,17317,17374,180,17507,6834827170184835340,115,99,114,105,112, - 116,58,99,117,114,114,101,110,116,45,108,105,110,101,0,1,5,2049,17155,2049, - 156,10,17349,17407,168,17507,-4964876483161304491,115,99,114,105,112,116,58,105,103,110,111,114,101, - 45,116,111,45,101,111,108,0,1,6,2049,17155,10,17381,17438,168,17507,-112287744780050755,115,99, - 114,105,112,116,58,97,98,111,114,116,45,105,110,99,108,117,100,101,0,1, - 7,2049,17155,10,17412,17454,168,17507,210706230653,97,98,111,114,116,0,1,149,2049,3883,1, - 8,2049,17155,10,17443,17493,168,17507,-7741142524340576066,115,99,114,105,112,116,58,99,117,114,114, - 101,110,116,45,108,105,110,101,45,116,101,120,116,0,2049,4396,1793,17502,1,9, - 2049,17155,10,1,17497,2049,2241,10,105,110,116,101,114,102,97,99,101,47,115,99, - 114,105,112,116,105,110,103,46,114,101,116,114,111,0,17507,17989,17463,17557,168,17991, - 1183117598919957017,115,111,99,107,101,116,58,111,112,101,114,97,116,105,111,110,0,1,7, - 2049,10731,2,2049,2761,1793,17714,3,2049,4417,69,114,114,111,114,58,32,115,111,99, - 107,101,116,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100, - 0,1,17569,2049,10837,2049,10794,2049,4417,83,101,101,32,104,116,116,112,115,58,47, - 47,114,101,116,114,111,102,111,114,116,104,46,111,114,103,47,115,117,112,112, - 111,114,116,47,50,48,50,50,46,49,47,83,79,67,75,69,84,83,46,109, - 100,0,1,17608,2049,10837,2049,10794,2049,4417,102,111,114,32,105,110,115,116,114,117, - 99,116,105,111,110,115,32,111,110,32,101,110,97,98,108,105,110,103,32,115, - 111,99,107,101,116,115,46,0,1,17669,2049,10837,2049,10794,10,1,17566,2049,2862,2049, - 10712,10,17535,17747,168,17965,-7671511728383126910,115,111,99,107,101,116,58,103,101,116,104,111,115, - 116,98,121,110,97,109,101,0,1,0,2049,17557,10,17721,17771,168,17965,4328757989659661596,115,111, - 99,107,101,116,58,99,114,101,97,116,101,0,1,1,2049,17557,10,17752,17793,168, - 17965,-4552658767528245371,115,111,99,107,101,116,58,98,105,110,100,0,1,2,2049,17557,10,17776, - 17817,168,17965,4328757990001730167,115,111,99,107,101,116,58,108,105,115,116,101,110,0,1,3, - 2049,17557,10,17798,17841,168,17965,4328757989563534360,115,111,99,107,101,116,58,97,99,99,101,112, - 116,0,1,4,2049,17557,10,17822,17866,168,17965,-4724938931013862254,115,111,99,107,101,116,58,99, - 111,110,110,101,99,116,0,1,5,2049,17557,10,17846,17888,168,17965,-4552658767527638798,115,111,99, - 107,101,116,58,115,101,110,100,0,1,6,2049,17557,10,17871,17910,168,17965,-4552658767527675080,115, - 111,99,107,101,116,58,114,101,99,118,0,1,7,2049,17557,10,17893,17933,168,17965, - -2663786738754388898,115,111,99,107,101,116,58,99,108,111,115,101,0,1,8,2049,17557,10,17915, - 17960,168,17965,1183100690560715498,115,111,99,107,101,116,58,99,111,110,102,105,103,117,114,101, - 0,1,9,2049,17557,10,105,110,116,101,114,102,97,99,101,47,115,111,99,107, - 101,116,115,46,114,101,116,114,111,0,17965,18008,115,111,99,107,101,116,58,111, - 112,101,114,97,116,105,111,110,0,17991,18218,17938,18023,168,18192,229469862290528,105,111,58,99, - 111,114,101,0,1,8000,2049,10731,2049,10712,10,18010,18045,168,18192,249884313919988732,99,111,114,101, - 58,105,110,105,116,0,1,0,2049,18023,10,18030,18066,168,18192,8246182359371694326,99,111,114,101, - 58,115,116,97,114,116,0,1,1,2049,18023,10,18050,18087,168,18192,8246182359367475558,99,111,114, - 101,58,112,97,117,115,101,0,1,2,2049,18023,10,18071,18116,168,18192,8337299194488917014,99,111, - 114,101,58,112,97,117,115,101,45,99,117,114,114,101,110,116,0,1,3,2049, - 18023,10,18092,18138,168,18192,-4577143246433635687,99,111,114,101,58,114,101,115,117,109,101,0,1, - 4,2049,18023,10,18121,18162,168,18192,-3888095465377135055,99,111,114,101,58,114,101,97,100,47,114, - 101,103,0,1,5,2049,18023,10,18143,18187,168,18192,820065755623810592,99,111,114,101,58,119,114, - 105,116,101,47,114,101,103,0,1,6,2049,18023,10,105,110,116,101,114,102,97, - 99,101,47,109,117,108,116,105,99,111,114,101,46,114,101,116,114,111,0,18192, - 18375,18167,18239,168,18355,644988671245709381,102,102,105,58,111,112,101,114,97,116,105,111,110,0, - 1,8100,2049,10731,2,2049,2761,1793,18286,3,2049,4417,69,114,114,111,114,58,32,70, - 70,73,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0, - 1,18251,2049,10837,2049,10794,10,1,18248,2049,2862,2049,10712,10,18220,18307,168,18355,7572367767785414,102, - 102,105,58,111,112,101,110,0,1,0,2049,18239,10,18293,18329,168,18355,-4572980637897979592,102,102, - 105,58,109,97,112,45,115,121,109,0,1,1,2049,18239,10,18312,18350,168,18355,8246308498881747296, - 102,102,105,58,105,110,118,111,107,101,0,1,2,2049,18239,10,105,110,116,101, - 114,102,97,99,101,47,102,102,105,46,114,101,116,114,111,0,18355,18706,18334,18393, - 168,18681,8247016409221251463,117,110,115,105,103,110,101,100,58,43,0,1,0,1,8101,2049,10731, - 2049,10712,17,10,18377,18419,168,18681,8247016409221251465,117,110,115,105,103,110,101,100,58,45,0, - 1,0,1,8101,2049,10731,2049,10712,18,10,18403,18445,168,18681,8247016409221251462,117,110,115,105,103, - 110,101,100,58,42,0,1,0,1,8101,2049,10731,2049,10712,19,10,18429,18474,168,18681, - 7638409966457829387,117,110,115,105,103,110,101,100,58,47,109,111,100,0,1,0,1,8101,2049, - 10731,2049,10712,20,10,18455,18502,168,18681,-2563494254608726831,117,110,115,105,103,110,101,100,58,101, - 113,63,0,1,0,1,8101,2049,10731,2049,10712,11,10,18484,18531,168,18681,7638409966457748830,117,110, - 115,105,103,110,101,100,58,45,101,113,63,0,1,0,1,8101,2049,10731,2049,10712, - 12,10,18512,18559,168,18681,-2563494254608719109,117,110,115,105,103,110,101,100,58,108,116,63,0, - 1,0,1,8101,2049,10731,2049,10712,13,10,18541,18587,168,18681,-2563494254608724554,117,110,115,105,103, - 110,101,100,58,103,116,63,0,1,0,1,8101,2049,10731,2049,10712,14,10,18569,18617, - 168,18681,-6186888138744896262,117,110,115,105,103,110,101,100,58,115,104,105,102,116,0,1,0, - 1,8101,2049,10731,2049,10712,24,10,18597,18647,168,18681,-6186888138833512267,117,110,115,105,103,110,101, - 100,58,42,47,109,111,100,0,1,1,1,0,1,8101,2049,10731,2,2049,10712,2049, - 10712,10,18627,18672,168,18681,210639169918,42,47,109,111,100,0,1,1,1,8101,2049,10731,2049, - 10712,10,105,110,116,101,114,102,97,99,101,47,117,110,115,105,103,110,101,100, - 46,114,101,116,114,111,0,18681,18832,18661,18726,168,18809,-3502245454587251943,100,58,117,115,101,45, - 104,97,115,104,101,115,0,1,29,1,236,1,5,18,16,1793,18740,2049,188,15, - 10,1,18736,1,236,1,8,18,16,1,2049,1,236,16,1,4819,1,236,2049,3125, - 16,10,18708,18780,168,18809,-4893635544173424761,100,58,117,115,101,45,115,116,114,105,110,103,115, - 0,1,118,1,236,1,5,18,16,1,190,1,236,1,8,18,16,1,0,1, - 236,16,1,0,1,236,2049,3125,16,10,105,110,116,101,114,102,97,99,101,47, - 102,117,116,117,114,101,46,114,101,116,114,111,0,18809,18950,18761,18852,168,0,-3527051417241377258, - 98,108,111,99,107,58,105,110,118,111,107,101,0,1,3,2049,10731,2049,10712,10, - 18761,18875,168,18927,8246131600073141446,98,108,111,99,107,58,114,101,97,100,0,1,0,2049,18852, - 10,18859,18897,168,18927,-4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,0,1,1, - 2049,18852,10,18880,18922,168,18927,-4036225629868593021,98,108,111,99,107,58,115,101,116,45,102,105, - 108,101,0,1,2,2049,18852,10,105,110,116,101,114,102,97,99,101,47,98,108, - 111,99,107,115,46,114,101,116,114,111,0,18927,19611,18902,18973,168,19197,4283726481136624767,101,114, - 114,58,115,101,116,45,104,97,110,100,108,101,114,0,1,1234,2049,10731,2,2049, - 2761,1793,19031,3,2049,4417,69,114,114,111,114,58,32,101,114,114,111,114,32,104, - 97,110,100,108,105,110,103,32,100,101,118,105,99,101,32,110,111,116,32,102, - 111,117,110,100,0,1,18985,2049,10837,2049,10794,10,1,18982,2049,2862,1,0,4,2049, - 10712,10,18952,19054,168,19197,229464878751060,101,114,114,58,100,115,117,0,2049,10869,2049,10794,2049, - 4417,69,82,82,79,82,58,32,68,83,85,58,32,68,65,84,65,32,83,84, - 65,67,75,32,85,78,68,69,82,70,76,79,87,0,1,19060,2049,10837,2049,10794, - 2049,10986,10,19041,19115,168,19197,229464878751054,101,114,114,58,100,115,111,0,2049,10869,2049,10794, - 2049,4417,69,82,82,79,82,58,32,68,83,79,58,32,68,65,84,65,32,83, - 84,65,67,75,32,79,86,69,82,70,76,79,87,0,1,19121,2049,10837,2049,10794, - 2049,10986,10,19102,19184,168,19197,-6210978877792005319,101,114,114,58,115,101,116,45,100,101,102,97, - 117,108,116,115,0,1,19054,1,1,2049,18973,1,19115,1,2,2049,18973,10,105,110, - 116,101,114,102,97,99,101,47,101,114,114,111,114,46,114,101,116,114,111,0, - 1793,19240,1,192,1,2,17,8,2049,1576,2049,190,3841,11568,8,2049,1576,2049,188,16, - 10,1,19221,19162,19252,168,19587,6384117006,72,79,77,69,0,2049,1977,1,4096,17,10,37, - 115,47,46,99,111,110,102,105,103,47,114,101,116,114,111,102,111,114,116,104, - 47,108,105,98,114,97,114,121,47,37,115,46,114,101,116,114,111,0,19242,19258, - 156,19587,6061648467740287960,108,105,98,114,97,114,121,58,46,67,79,78,70,73,71,0,46, - 47,108,105,98,114,97,114,121,47,37,115,46,114,101,116,114,111,0,19297,19318, - 156,19587,-4563659402581934926,108,105,98,114,97,114,121,58,67,87,68,0,19337,19371,168,19587,-4563659402581898990, - 108,105,98,114,97,114,121,58,99,119,100,0,1,19318,2049,8190,10,19354,19397,168, - 19587,6061648469031755928,108,105,98,114,97,114,121,58,46,99,111,110,102,105,103,0,2049,4417, - 72,79,77,69,0,1,19399,2049,19252,2049,16260,2049,19252,1,19258,2049,8190,10,19376,19439, - 168,19587,-2879782938503308011,108,105,98,114,97,114,121,58,102,105,108,101,110,97,109,101,0, - 2,2049,19371,2,2049,15474,1793,19449,772,10,1,19447,2049,2862,3,2049,19397,2,2049,15474, - 1793,19462,10,1,19461,2049,2862,3,2049,4396,10,19417,19493,168,19587,-2799120562421764174,108,105,98,114, - 97,114,121,58,99,111,110,116,97,105,110,115,63,0,1,19371,1,19397,2049,2255, - 1,15474,2049,2285,22,10,19470,19523,168,19587,-3026807695525939020,108,105,98,114,97,114,121,58,108, - 111,97,100,0,2,2049,19493,1793,19533,2049,19439,2049,17288,10,1,19528,1793,19582,2049,4417, - 69,82,82,79,82,58,32,76,105,98,114,97,114,121,32,96,37,115,96,32, - 119,97,115,32,110,111,116,32,102,111,117,110,100,0,1,19539,2049,8190,2049,10837, - 2049,10794,10,1,19537,2049,66,10,105,110,116,101,114,102,97,99,101,47,108,105, - 98,114,97,114,121,46,114,101,116,114,111,0,19587,11743,19505,19629,168,19836,8246457295145463473,105, - 109,97,103,101,58,115,97,118,101,0,1,1000,2049,10731,2049,10712,10,19613,19647,168, - 0,210711039690,101,100,105,116,63,0,2,1793,19654,1,8,11,10,1,19650,1793,19662,1, - 127,11,10,1,19658,2049,2255,22,10,19636,19680,168,0,6953539406400,103,97,116,104,101,114, - 0,2049,19647,1,17,1,4079,2049,66,10,19668,19700,168,0,210709415765,99,121,99,108,101, - 0,2049,10968,2049,2217,4,8,2049,2644,25,3,2049,19680,1,19700,7,10,19613,19733,168, - 19836,-4557881830897049127,112,97,114,115,101,45,117,110,116,105,108,0,1793,19745,2049,4396,2049,4179, - 2049,19700,771,2049,4041,10,1,19735,2049,4205,10,19716,19761,168,19836,210726130610,115,58,103,101, - 116,0,1793,19783,1793,19769,1,13,11,10,1,19765,1793,19777,1,10,11,10,1,19773, - 2049,2255,22,10,1,19763,2049,19733,10,19750,19799,168,19836,210708950412,99,108,101,97,114,0, - 2049,4417,92,94,91,50,74,92,94,91,48,59,48,72,0,1,19801,2049,8190,2049, - 10837,10,19788,19829,180,19836,5861507,47,47,0,2049,17407,1,11002,2049,3868,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,19821,19876,156,0,229441520490121,83,111,117,114,99,101,115,0,3,20125,20319, - 20510,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 111,114,116,104,0,12432,12881,12364,0,156,12857,-2419379730924625824,68,69,86,73,67,69,58,79, + 85,84,80,85,84,0,12446,1,156,12857,3179875372589939872,68,69,86,73,67,69,58,75,69, + 89,66,79,65,82,68,0,12465,2,156,12857,-2419379731287713704,68,69,86,73,67,69,58,70, + 76,79,65,84,83,0,12486,4,156,12857,-5104244739232646654,68,69,86,73,67,69,58,70,73, + 76,69,83,0,12505,3,156,12857,-2419379731444253395,68,69,86,73,67,69,58,66,76,79,67, + 75,83,0,12523,5,156,12857,-5104244739236093413,68,69,86,73,67,69,58,67,76,79,67,75, + 0,12542,6,156,12857,-5744567309556069531,68,69,86,73,67,69,58,82,69,83,69,82,86,69, + 68,54,0,12560,7,156,12857,-2419379730775816680,68,69,86,73,67,69,58,83,79,67,75,69, + 84,0,12582,8,156,12857,-4626612040269427085,68,69,86,73,67,69,58,85,78,73,88,0,12601, + 9,156,12857,-5744565989521702654,68,69,86,73,67,69,58,83,67,82,73,80,84,73,78,71, + 0,12618,10,156,12857,8244683305011325430,68,69,86,73,67,69,58,82,78,71,0,12640,11,156, + 12857,-5103280478254778479,68,69,86,73,67,69,58,82,69,83,69,82,86,69,68,49,49,0, + 12656,12,156,12857,-5103280478254778478,68,69,86,73,67,69,58,82,69,83,69,82,86,69,68, + 49,50,0,12679,13,156,12857,-5103280478254778477,68,69,86,73,67,69,58,82,69,83,69,82, + 86,69,68,49,51,0,12702,14,156,12857,-5104244739228882582,68,69,86,73,67,69,58,73,79, + 67,84,76,0,12725,15,156,12857,-2419379731026907097,68,69,86,73,67,69,58,77,65,76,76, + 79,67,0,12743,1000,156,12857,-5104244739228957070,68,69,86,73,67,69,58,73,77,65,71,69, + 0,12762,1234,156,12857,-5104244739233502279,68,69,86,73,67,69,58,69,82,82,79,82,0,12780, + 8000,156,12857,-5744573668168662717,68,69,86,73,67,69,58,77,85,76,84,73,67,79,82,69, + 0,12798,8100,156,12857,8244683305011312100,68,69,86,73,67,69,58,70,70,73,0,12820,8101,156, + 12857,3179875810170796684,68,69,86,73,67,69,58,85,78,83,73,71,78,69,68,0,105,110, + 116,101,114,102,97,99,101,47,100,101,118,105,99,101,115,46,114,101,116,114, + 111,0,12857,15041,12836,12904,168,15011,-6845980351726443322,102,108,111,97,116,58,111,112,101,114,97, + 116,105,111,110,0,1,2,2049,10731,2,2049,2761,1793,12962,3,2049,4417,69,114,114, + 111,114,58,32,102,108,111,97,116,105,110,103,32,112,111,105,110,116,32,100, + 101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,12916,2049,10837, + 2049,10794,10,1,12913,2049,2862,2049,10712,10,12883,12985,168,15011,8246618443670464787,110,58,116,111,45, + 102,108,111,97,116,0,1,0,2049,12904,10,12969,13006,168,15011,8246850501092474552,115,58,116,111, + 45,102,108,111,97,116,0,1,1,2049,12904,10,12990,13028,168,15011,-4575005096076366594,102,58,116, + 111,45,110,117,109,98,101,114,0,1,2,2049,12904,10,13011,13050,168,15011,-4575005095881687956,102, + 58,116,111,45,115,116,114,105,110,103,0,2049,4396,2,1,3,2049,12904,10,13033, + 13067,168,15011,193490032,102,58,43,0,1,4,2049,12904,10,13058,13081,168,15011,193490034,102,58, + 45,0,1,5,2049,12904,10,13072,13095,168,15011,193490031,102,58,42,0,1,6,2049,12904, + 10,13086,13109,168,15011,193490036,102,58,47,0,1,7,2049,12904,10,13100,13127,168,15011,229463966214663, + 102,58,102,108,111,111,114,0,1,8,2049,12904,10,13114,13147,168,15011,249886255052186944,102,58, + 99,101,105,108,105,110,103,0,1,9,2049,12904,10,13132,13164,168,15011,6953453994383,102,58, + 115,113,114,116,0,1,10,2049,12904,10,13152,13180,168,15011,210710711802,102,58,101,113,63, + 0,1,11,2049,12904,10,13169,13197,168,15011,6953451465639,102,58,45,101,113,63,0,1,12, + 2049,12904,10,13185,13213,168,15011,210710719524,102,58,108,116,63,0,1,13,2049,12904,10,13202, + 13229,168,15011,210710714079,102,58,103,116,63,0,1,14,2049,12904,10,13218,13247,168,15011,229463963592506, + 102,58,100,101,112,116,104,0,1,15,2049,12904,10,13234,13263,168,15011,210710710894,102,58, + 100,117,112,0,1,16,2049,12904,10,13252,13280,168,15011,6953453456314,102,58,100,114,111,112, + 0,1,17,2049,12904,10,13268,13297,168,15011,6953454000352,102,58,115,119,97,112,0,1,18, + 2049,12904,10,13285,13313,168,15011,210710719399,102,58,108,111,103,0,1,19,2049,12904,10,13302, + 13331,168,15011,229463978190066,102,58,112,111,119,101,114,0,1,20,2049,12904,10,13318,13347,168, + 15011,210710726831,102,58,115,105,110,0,1,21,2049,12904,10,13336,13363,168,15011,210710727656,102,58, + 116,97,110,0,1,22,2049,12904,10,13352,13379,168,15011,210710709610,102,58,99,111,115,0, + 1,23,2049,12904,10,13368,13396,168,15011,6953453349392,102,58,97,115,105,110,0,1,24,2049, + 12904,10,13384,13413,168,15011,6953453332171,102,58,97,99,111,115,0,1,25,2049,12904,10,13401, + 13430,168,15011,6953453350217,102,58,97,116,97,110,0,1,26,2049,12904,10,13418,13447,168,15011, + 6953453890949,102,58,112,117,115,104,0,1,27,2049,12904,10,13435,13463,168,15011,210710723764,102,58, + 112,111,112,0,1,28,2049,12904,10,13452,13482,168,15011,7572310679561435,102,58,97,100,101,112, + 116,104,0,1,29,2049,12904,10,13468,13499,168,15011,6953453855649,102,58,111,118,101,114,0, + 2049,13447,2049,13263,2049,13463,2049,13297,10,13487,13520,168,15011,6953454034172,102,58,116,117,99,107, + 0,2049,13263,2049,13447,2049,13297,2049,13463,10,13508,13540,168,15011,210710721388,102,58,110,105,112, + 0,2049,13297,2049,13280,10,13529,13562,168,15011,-4575027385529052237,102,58,100,114,111,112,45,112,97, + 105,114,0,2049,13280,2049,13280,10,13545,13583,168,15011,8246246480203571943,102,58,100,117,112,45,112, + 97,105,114,0,2049,13499,2049,13499,10,13567,13599,168,15011,210710725946,102,58,114,111,116,0, + 2049,13447,2049,13297,2049,13463,2049,13297,10,13588,13621,180,15011,229482595734757,115,105,103,105,108,58, + 46,0,2049,1913,1,4445,1,4368,2049,66,1,13006,2049,168,10,13608,13648,168,15011,7572311399974070, + 102,58,115,113,117,97,114,101,0,2049,13263,2049,13095,10,13634,13670,168,15011,-4575010631505066633,102, + 58,112,111,115,105,116,105,118,101,63,0,1,0,2049,12985,2049,13229,10,13653,13694, + 168,15011,-4575013886317431657,102,58,110,101,103,97,116,105,118,101,63,0,1,0,2049,12985,2049, + 13213,10,13677,13715,168,15011,7572311189563001,102,58,110,101,103,97,116,101,0,1,-1,2049,12985, + 2049,13095,10,13701,13733,168,15011,210710707003,102,58,97,98,115,0,2049,13263,2049,13694,1,13715, + 9,10,13722,13752,168,15011,210710723966,102,58,112,117,116,0,2049,13050,2049,10837,10,13741,13767, + 168,15011,6385172350,102,58,80,73,0,2049,4417,51,46,49,52,49,53,57,50,54,53, + 52,0,1,13769,2049,13006,10,13757,13795,168,15011,193490058,102,58,69,0,2049,4417,50,46, + 55,49,56,50,56,49,56,50,56,0,1,13797,2049,13006,10,13786,13825,168,15011,210710685186, + 102,58,78,65,78,0,2049,4417,48,0,1,13827,2049,13006,2049,4417,48,0,1,13835, + 2049,13006,2049,13109,10,13814,13855,168,15011,210710680162,102,58,73,78,70,0,2049,4417,49,46, + 48,0,1,13857,2049,13006,2049,4417,48,0,1,13867,2049,13006,2049,13109,10,13844,13888,168, + 15011,6953451433999,102,58,45,73,78,70,0,2049,4417,45,49,46,48,0,1,13890,2049,13006, + 2049,4417,48,0,1,13901,2049,13006,2049,13109,10,13876,13922,168,15011,6953453797089,102,58,110,97, + 110,63,0,2049,13263,2049,13197,10,13910,13939,168,15011,6953453631297,102,58,105,110,102,63,0, + 2049,13855,2049,13180,10,13927,13957,168,15011,229463898507918,102,58,45,105,110,102,63,0,2049,13888, + 2049,13180,10,13944,13975,168,15011,229463980560013,102,58,114,111,117,110,100,0,2049,13263,2049,13694, + 1793,13996,2049,4417,48,46,53,0,1,13983,2049,13006,2049,13081,2049,13147,10,1,13981,1793, + 14015,2049,4417,48,46,53,0,1,14002,2049,13006,2049,13067,2049,13127,10,1,14000,2049,66, + 10,13962,14031,168,15011,210710720297,102,58,109,105,110,0,2049,13583,2049,13213,1,13280,1,13540, + 2049,66,10,14020,14053,168,15011,210710720043,102,58,109,97,120,0,2049,13583,2049,13229,1,13280, + 1,13540,2049,66,10,14042,14077,168,15011,229463973220004,102,58,108,105,109,105,116,0,2049,13297, + 2049,13447,2049,14031,2049,13463,2049,14053,10,14064,14104,168,15011,8246246374547107374,102,58,98,101,116,119, + 101,101,110,63,0,2049,13599,2049,13263,2049,13447,2049,13599,2049,13599,2049,14077,2049,13463,2049, + 13180,10,14088,14132,168,15011,210710716095,102,58,105,110,99,0,2049,4417,49,0,1,14134,2049, + 13006,2049,13067,10,14121,14154,168,15011,210710710353,102,58,100,101,99,0,2049,4417,49,0,1, + 14156,2049,13006,2049,13081,10,14143,14177,168,15011,6953453401985,102,58,99,97,115,101,0,2049,13499, + 2049,13180,1793,14189,2049,13280,8,1,-1,10,1,14183,1793,14197,3,1,0,10,1,14193, + 2049,66,25,6,771,10,14165,14217,168,15011,6953453985302,102,58,115,105,103,110,0,2049,13263, + 2049,4417,48,0,1,14221,2049,13006,2049,13180,1793,14236,1,0,2049,13280,10,1,14231,2049, + 2862,2049,4417,48,0,1,14242,2049,13006,2049,13229,1793,14255,1,1,10,1,14252,1793,14262, + 1,-1,10,1,14259,2049,66,10,14205,9223372036854775805,156,15011,210709498186,101,58,77,65,88,0,14267, + -9223372036854775805,156,15011,210709498440,101,58,77,73,78,0,14278,-9223372036854775807,156,15011,210709499265,101,58,78,65,78, + 0,14289,9223372036854775806,156,15011,210709494241,101,58,73,78,70,0,14300,-9223372036854775806,156,15011,6953412298606,101,58,45, + 73,78,70,0,14311,14333,168,15011,6385137393,101,58,110,63,0,1,-9223372036854775805,2049,3125,1,9223372036854775805, + 2049,3139,2049,3158,10,14323,14356,168,15011,6953414626089,101,58,109,97,120,63,0,1,9223372036854775805,11, + 10,14344,14372,168,15011,6953414634471,101,58,109,105,110,63,0,1,-9223372036854775805,11,10,14360,14389,168, + 15011,229462698216771,101,58,122,101,114,111,63,0,2049,2722,10,14376,14404,168,15011,6953414661696,101,58, + 110,97,110,63,0,1,-9223372036854775807,11,10,14392,14420,168,15011,6953414495904,101,58,105,110,102,63, + 0,1,9223372036854775806,11,10,14408,14437,168,15011,229462607039949,101,58,45,105,110,102,63,0,1,-9223372036854775806, + 11,10,14424,14453,168,15011,6953414278252,101,58,99,108,105,112,0,1,-9223372036854775805,1,9223372036854775805,2049,3106, + 10,14441,14470,168,15011,6385171963,102,58,69,49,0,1793,14472,2049,4417,49,46,101,53,0, + 1,14474,2049,13006,10,14460,14503,168,15011,-1561378222854156682,102,58,115,105,103,110,101,100,45,115, + 113,114,116,0,2049,13263,2049,14217,2049,13733,2049,13164,2049,12985,2049,13095,10,14484,14537,168, + 15011,-3240429906897787043,102,58,115,105,103,110,101,100,45,115,113,117,97,114,101,0,2049,13263, + 2049,14217,2049,13263,2049,13095,2049,12985,2049,13095,10,14516,14564,168,0,7572308662409552,102,58,45,115, + 104,105,102,116,0,2049,14470,2049,13095,10,14550,14583,168,0,7572308584138766,102,58,43,115,104, + 105,102,116,0,2049,14470,2049,13109,10,14569,14603,168,0,249886182735593054,102,58,43,101,110,99, + 111,100,101,0,2049,14503,2049,14564,10,14588,14623,168,0,249886185318528992,102,58,45,101,110,99, + 111,100,101,0,2049,13263,2049,14217,2049,14583,2049,13263,2049,13095,2049,12985,2049,13095,10,14516, + 14650,168,15011,6953454025850,102,58,116,111,45,101,0,2049,13263,2049,13922,1793,14661,2049,13280,1, + -9223372036854775807,10,1,14656,2049,2862,2049,13263,2049,13939,1793,14676,2049,13280,1,9223372036854775806,10,1,14671,2049, + 2862,2049,13263,2049,13957,1793,14691,2049,13280,1,-9223372036854775806,10,1,14686,2049,2862,2049,14603,2049,13975, + 2049,13028,2049,14453,1,-9223372036854775805,1,13280,2049,2554,1,9223372036854775805,1,13280,2049,2554,10,14638,14728,168, + 15011,6953414890458,101,58,116,111,45,102,0,1,-9223372036854775807,1,13825,2049,2554,1,9223372036854775806,1,13855,2049, + 2554,1,-9223372036854775806,1,13888,2049,2554,2049,12985,2049,14623,10,14716,14764,168,15011,229463981919218,102,58,115, + 116,111,114,101,0,1,14650,2049,2229,16,10,14751,14783,168,15011,229463965968143,102,58,102,101, + 116,99,104,0,15,2049,14728,10,14770,14805,168,15011,-3401946998789110658,102,58,100,117,109,112,45, + 115,116,97,99,107,0,2049,13247,2,1,13447,2049,2449,1793,14823,2049,13463,2049,13263,2049, + 13752,2049,10807,10,1,14814,2049,2449,10,14787,14847,168,15011,-1583786518488284545,102,58,100,117,109,112, + 45,97,115,116,97,99,107,0,2049,13482,2,1,13463,2049,2449,1793,14865,2049,13263,2049, + 13752,2049,10807,2049,13447,10,1,14856,2049,2449,10,14828,14881,168,15011,210709538045,101,58,112,117, + 116,0,1,9223372036854775805,1793,14898,2049,4417,101,58,77,65,88,0,1,14887,2049,10837,10,1, + 14885,2049,2554,1,-9223372036854775805,1793,14919,2049,4417,101,58,77,73,78,0,1,14908,2049,10837,10, + 1,14906,2049,2554,1,0,1793,14938,2049,4417,101,58,48,0,1,14929,2049,10837,10,1, + 14927,2049,2554,1,-9223372036854775807,1793,14959,2049,4417,101,58,78,65,78,0,1,14948,2049,10837,10, + 1,14946,2049,2554,1,9223372036854775806,1793,14980,2049,4417,101,58,73,78,70,0,1,14969,2049,10837, + 10,1,14967,2049,2554,1,-9223372036854775806,1793,15002,2049,4417,101,58,45,73,78,70,0,1,14990, + 2049,10837,10,1,14988,2049,2554,2049,14728,2049,13752,10,105,110,116,101,114,102,97,99, + 101,47,102,108,111,97,116,105,110,103,112,111,105,110,116,46,114,101,116,114, + 111,0,15011,15888,14870,15063,168,15861,8056574075740390096,102,105,108,101,58,111,112,101,114,97,116, + 105,111,110,0,1,4,2049,10731,2,2049,2761,1793,15112,3,2049,4417,69,114,114,111, + 114,58,32,102,105,108,101,115,32,100,101,118,105,99,101,32,110,111,116,32, + 102,111,117,110,100,0,1,15075,2049,10837,2049,10794,10,1,15072,2049,2862,2049,10712,10, + 15043,0,156,15861,6953509466161,102,105,108,101,58,82,0,15119,1,156,15861,6953509466166,102,105,108, + 101,58,87,0,15131,2,156,15861,6953509466144,102,105,108,101,58,65,0,15143,3,156,15861, + 229465812383356,102,105,108,101,58,82,43,0,15155,15183,168,15861,249888269686595441,102,105,108,101,58,111, + 112,101,110,0,1,0,2049,15063,10,15168,15204,168,15861,8246312899643285909,102,105,108,101,58,99, + 108,111,115,101,0,1,1,2049,15063,10,15188,15224,168,15861,249888269686691131,102,105,108,101,58, + 114,101,97,100,0,1,2,2049,15063,10,15209,15245,168,15861,8246312899667213450,102,105,108,101,58, + 119,114,105,116,101,0,1,3,2049,15063,10,15229,15265,168,15861,249888269686763376,102,105,108,101, + 58,116,101,108,108,0,1,4,2049,15063,10,15250,15285,168,15861,249888269686727207,102,105,108,101, + 58,115,101,101,107,0,1,5,2049,15063,10,15270,15305,168,15861,249888269686732250,102,105,108,101, + 58,115,105,122,101,0,1,6,2049,15063,10,15290,15327,168,15861,-4572835417384127758,102,105,108,101, + 58,100,101,108,101,116,101,0,1,7,2049,15063,10,15310,15348,168,15861,8246312899646850209,102,105, + 108,101,58,102,108,117,115,104,0,1,8,2049,15063,10,15332,15374,168,15861,7612651040925696305,102, + 105,108,101,58,114,101,97,100,47,98,121,116,101,115,0,1,9,2049,15063,10, + 15353,15401,168,15861,-7028659436281878592,102,105,108,101,58,119,114,105,116,101,47,98,121,116,101, + 115,0,1,10,2049,15063,10,15379,15423,168,15861,-4572835416836630931,102,105,108,101,58,114,101,97, + 100,47,99,0,1,11,2049,15063,10,15406,15446,168,15861,-3329616158956188292,102,105,108,101,58,119, + 114,105,116,101,47,99,0,1,12,2049,15063,10,15428,15469,168,15861,-3329616181967816770,102,105,108, + 101,58,101,120,105,115,116,115,63,0,1,0,2049,15183,2,2049,2740,1793,15483,2049, + 15204,2049,2527,10,1,15478,1793,15491,3,2049,2541,10,1,15487,2049,66,10,15451,15523,168, + 15861,-4283841618960457812,102,105,108,101,58,111,112,101,110,45,102,111,114,45,114,101,97,100, + 105,110,103,0,1,0,2049,15183,2,2049,15305,4,10,15496,15558,168,15861,2106155595587003402,102,105, + 108,101,58,111,112,101,110,45,102,111,114,45,97,112,112,101,110,100,0,1, + 2,2049,15183,2,2049,15305,4,10,15532,15594,168,15861,-4283841611984295498,102,105,108,101,58,111,112, + 101,110,45,102,111,114,45,119,114,105,116,105,110,103,0,1,1,2049,15183,10, + 15567,15608,156,0,193455704,70,73,68,0,0,15599,15619,156,0,6384542144,83,105,122,101,0, + 0,15609,15632,156,0,6952054634723,65,99,116,105,111,110,0,0,15620,15644,168,0,210644670123,45, + 101,111,102,63,0,3841,15608,2049,15265,3841,15619,13,10,15633,15666,168,0,7572809360530097,112,114, + 101,115,101,114,118,101,0,1,15608,1793,15677,1,15619,1,27,2049,3919,10,1,15670, + 2049,3919,10,15567,15702,168,15861,8056577820387649264,102,105,108,101,58,114,101,97,100,45,108,105, + 110,101,0,2049,1977,4,1,13,2049,15063,2049,1977,10,15682,15736,168,15861,-8859848394595038695,102,105, + 108,101,58,102,111,114,45,101,97,99,104,45,108,105,110,101,0,1793,15767,4097, + 15632,2049,15523,4097,15608,4097,15619,1793,15758,3841,15608,2049,15702,3841,15632,8,2049,15644,10,1, + 15748,2049,2372,3841,15608,2049,15204,10,1,15738,2049,15666,10,15712,15781,156,0,193455704,70,73, + 68,0,0,15712,15798,168,15861,8246312899662267157,102,105,108,101,58,115,108,117,114,112,0,1793, + 15825,4,2049,4179,2049,15523,4097,15781,1793,15816,3841,15781,2049,15224,2049,4079,10,1,15809,2049, + 2449,3841,15781,2049,15204,10,1,15800,2049,4205,10,15782,15845,168,15861,249888269686739198,102,105,108,101, + 58,115,112,101,119,0,2049,15594,4,1793,15854,67502597,2049,15245,10,1,15850,2049,4686,2049, + 15204,10,105,110,116,101,114,102,97,99,101,47,102,105,108,101,115,121,115,116, + 101,109,46,114,101,116,114,111,0,15861,16625,15830,15911,168,16604,4299348465103751587,105,111,58,117, + 110,105,120,45,115,121,115,99,97,108,108,0,1,8,2049,10731,2,2049,2761,1793, + 15959,3,2049,4417,69,114,114,111,114,58,32,85,78,73,88,32,100,101,118,105, + 99,101,32,110,111,116,32,102,111,117,110,100,0,1,15923,2049,10837,2049,10794,10, + 1,15920,2049,2862,2049,10712,10,15890,15983,168,16604,-4549633084047572696,117,110,105,120,58,115,121,115, + 116,101,109,0,1,0,2049,15911,10,15966,16003,168,16604,249909575776928405,117,110,105,120,58,102, + 111,114,107,0,1,1,2049,15911,10,15988,16024,168,16604,8247016000637760504,117,110,105,120,58,101, + 120,101,99,48,0,1,2,2049,15911,10,16008,16045,168,16604,8247016000637760505,117,110,105,120,58, + 101,120,101,99,49,0,1,3,2049,15911,10,16029,16066,168,16604,8247016000637760506,117,110,105,120, + 58,101,120,101,99,50,0,1,4,2049,15911,10,16050,16087,168,16604,8247016000637760507,117,110,105, + 120,58,101,120,101,99,51,0,1,5,2049,15911,10,16071,16107,168,16604,249909575776901981,117,110, + 105,120,58,101,120,105,116,0,1,6,2049,15911,10,16092,16129,168,16604,-4549633084540884128,117,110, + 105,120,58,103,101,116,112,105,100,0,1,7,2049,15911,10,16112,16149,168,16604,249909575777523800, + 117,110,105,120,58,119,97,105,116,0,1,8,2049,15911,10,16134,16169,168,16604,249909575777101359, + 117,110,105,120,58,107,105,108,108,0,1,9,2049,15911,10,16154,16190,168,16604,8247016000650494309, + 117,110,105,120,58,112,111,112,101,110,0,1,10,2049,15911,10,16174,16212,168,16604, + -4549633084191325687,117,110,105,120,58,112,99,108,111,115,101,0,1,11,2049,15911,10,16195,16233, + 168,16604,8247016000634812845,117,110,105,120,58,99,104,100,105,114,0,1,13,2049,15911,10,16217, + 16255,168,16604,-4549633084540895924,117,110,105,120,58,103,101,116,101,110,118,0,1,14,2049,15911, + 10,16238,16277,168,16604,-4549633084169702651,117,110,105,120,58,112,117,116,101,110,118,0,1,15, + 2049,15911,10,16260,16298,168,16604,8247016000653932284,117,110,105,120,58,115,108,101,101,112,0,1, + 16,2049,15911,10,16282,16321,168,16604,-2563939202030369066,117,110,105,120,58,101,120,101,99,117,116, + 101,0,1,17,2049,15911,10,16303,16341,168,16604,249909575777281169,117,110,105,120,58,112,105,112, + 101,0,1,0,2049,16190,1,15702,1,16212,2049,2255,10,16326,16370,168,16604,-2563939200175176882,117,110, + 105,120,58,103,101,116,45,99,119,100,0,2049,4417,112,119,100,0,1,16372,2049, + 16341,2049,6999,2049,4417,47,0,1,16384,2049,4666,10,16352,16420,168,16604,-2316844556017942917,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,4417,108,115,32,45,49,32,124,32,119,99,32,45,108,0,1,16422,2049, + 16341,2049,6999,2049,266,10,16391,16469,168,16604,-4594486429310984907,117,110,105,120,58,102,111,114,45, + 101,97,99,104,45,102,105,108,101,0,2049,4417,108,115,32,45,49,32,45,112, + 0,1,16471,1,0,2049,16190,2049,16420,1793,16504,1793,16499,2049,15702,2049,4368,67502597,8,10, + 1,16492,2049,2241,10,1,16490,2049,2449,2049,16212,3,10,16445,16523,168,0,210728208851,115,116, + 97,114,116,0,4,2049,4179,1,0,2049,16190,10,16512,16541,168,0,6385651009,114,101,97, + 100,0,2,2049,15224,2,2049,4079,2049,2722,10,16531,16562,168,0,6953509544294,102,105,110,105, + 115,104,0,2049,16212,2049,4157,10,16445,16588,168,16604,1204178398703148788,117,110,105,120,58,115,108, + 117,114,112,45,112,105,112,101,0,1793,16599,2049,16523,1,16541,2049,2397,2049,16562,10, + 1,16590,2049,4205,10,105,110,116,101,114,102,97,99,101,47,117,110,105,120,46, + 114,101,116,114,111,0,16604,16715,16567,16641,168,16695,7572652289159374,110,58,114,97,110,100,111, + 109,0,1,10,2049,10731,2,2049,2761,1793,16688,3,2049,4417,69,114,114,111,114,58, + 32,82,78,71,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110, + 100,0,1,16653,2049,10837,2049,10794,10,1,16650,2049,2862,2049,10712,10,105,110,116,101, + 114,102,97,99,101,47,114,110,103,46,114,101,116,114,111,0,16695,17126,16627,16738, + 168,17104,4482520117059041020,99,108,111,99,107,58,111,112,101,114,97,116,105,111,110,0,1, + 5,2049,10731,2,2049,2761,1793,16787,3,2049,4417,69,114,114,111,114,58,32,99,108, + 111,99,107,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100, + 0,1,16750,2049,10837,2049,10794,10,1,16747,2049,2862,2049,10712,10,16717,16815,168,17104,4482526860617352831, + 99,108,111,99,107,58,116,105,109,101,115,116,97,109,112,0,1,0,2049,16738, + 10,16794,16835,168,17104,249884182168395049,99,108,111,99,107,58,100,97,121,0,1,1,2049,16738, + 10,16820,16857,168,17104,-4577286724249897519,99,108,111,99,107,58,109,111,110,116,104,0,1,2, + 2049,16738,10,16840,16878,168,17104,8246178011557794972,99,108,111,99,107,58,121,101,97,114,0,1, + 3,2049,16738,10,16862,16899,168,17104,8246178011557195593,99,108,111,99,107,58,104,111,117,114,0, + 1,4,2049,16738,10,16883,16922,168,17104,-3476509310577319139,99,108,111,99,107,58,109,105,110,117, + 116,101,0,1,5,2049,16738,10,16904,16945,168,17104,-3476509310347652505,99,108,111,99,107,58,115, + 101,99,111,110,100,0,1,6,2049,16738,10,16927,16969,168,17104,-4044342796047171665,99,108,111,99, + 107,58,117,116,99,58,100,97,121,0,1,7,2049,16738,10,16950,16995,168,17104,4482528721224061399, + 99,108,111,99,107,58,117,116,99,58,109,111,110,116,104,0,1,8,2049,16738, + 10,16974,17020,168,17104,-4336103753589045278,99,108,111,99,107,58,117,116,99,58,121,101,97,114, + 0,1,9,2049,16738,10,17000,17045,168,17104,-4336103753589644657,99,108,111,99,107,58,117,116,99, + 58,104,111,117,114,0,1,10,2049,16738,10,17025,17072,168,17104,349495210710499299,99,108,111,99, + 107,58,117,116,99,58,109,105,110,117,116,101,0,1,11,2049,16738,10,17050,17099, + 168,17104,349495210940165933,99,108,111,99,107,58,117,116,99,58,115,101,99,111,110,100,0, + 1,12,2049,16738,10,105,110,116,101,114,102,97,99,101,47,99,108,111,99,107, + 46,114,101,116,114,111,0,17104,17528,17077,17150,168,0,1976442044545254821,115,99,114,105,112,116, + 58,111,112,101,114,97,116,105,111,110,0,1,9,2049,10731,2,2049,2761,1793,17203, + 3,2049,4417,69,114,114,111,114,58,32,115,99,114,105,112,116,105,110,103,32, + 100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,17162,2049, + 10837,2049,10794,10,1,17159,2049,2862,2049,10712,10,17077,17232,168,17502,1976422442775525130,115,99,114,105, + 112,116,58,97,114,103,117,109,101,110,116,115,0,1,0,2049,17150,10,17210,17262, + 168,17502,7012485947518414468,115,99,114,105,112,116,58,103,101,116,45,97,114,103,117,109,101, + 110,116,0,2049,4396,4,1,1,2049,17150,10,17237,17283,168,17502,229469872107401,105,110,99,108, + 117,100,101,0,1,2,2049,17150,10,17270,17305,168,17502,-4553194680242110987,115,99,114,105,112,116, + 58,110,97,109,101,0,2049,4396,1,3,2049,17150,10,17288,17337,168,17502,6834827170184619652,115,99, + 114,105,112,116,58,99,117,114,114,101,110,116,45,102,105,108,101,0,2049,4396, + 1,4,2049,17150,10,17312,17369,180,17502,6834827170184835340,115,99,114,105,112,116,58,99,117,114, + 114,101,110,116,45,108,105,110,101,0,1,5,2049,17150,2049,156,10,17344,17402,168, + 17502,-4964876483161304491,115,99,114,105,112,116,58,105,103,110,111,114,101,45,116,111,45,101, + 111,108,0,1,6,2049,17150,10,17376,17433,168,17502,-112287744780050755,115,99,114,105,112,116,58, + 97,98,111,114,116,45,105,110,99,108,117,100,101,0,1,7,2049,17150,10,17407, + 17449,168,17502,210706230653,97,98,111,114,116,0,1,149,2049,3883,1,8,2049,17150,10,17438, + 17488,168,17502,-7741142524340576066,115,99,114,105,112,116,58,99,117,114,114,101,110,116,45,108, + 105,110,101,45,116,101,120,116,0,2049,4396,1793,17497,1,9,2049,17150,10,1,17492, + 2049,2241,10,105,110,116,101,114,102,97,99,101,47,115,99,114,105,112,116,105, + 110,103,46,114,101,116,114,111,0,17502,17984,17458,17552,168,17986,1183117598919957017,115,111,99,107, + 101,116,58,111,112,101,114,97,116,105,111,110,0,1,7,2049,10731,2,2049,2761, + 1793,17709,3,2049,4417,69,114,114,111,114,58,32,115,111,99,107,101,116,32,100, + 101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,17564,2049,10837, + 2049,10794,2049,4417,83,101,101,32,104,116,116,112,115,58,47,47,114,101,116,114, + 111,102,111,114,116,104,46,111,114,103,47,115,117,112,112,111,114,116,47,50, + 48,50,50,46,49,47,83,79,67,75,69,84,83,46,109,100,0,1,17603,2049, + 10837,2049,10794,2049,4417,102,111,114,32,105,110,115,116,114,117,99,116,105,111,110, + 115,32,111,110,32,101,110,97,98,108,105,110,103,32,115,111,99,107,101,116, + 115,46,0,1,17664,2049,10837,2049,10794,10,1,17561,2049,2862,2049,10712,10,17530,17742,168, + 17960,-7671511728383126910,115,111,99,107,101,116,58,103,101,116,104,111,115,116,98,121,110,97, + 109,101,0,1,0,2049,17552,10,17716,17766,168,17960,4328757989659661596,115,111,99,107,101,116,58, + 99,114,101,97,116,101,0,1,1,2049,17552,10,17747,17788,168,17960,-4552658767528245371,115,111,99, + 107,101,116,58,98,105,110,100,0,1,2,2049,17552,10,17771,17812,168,17960,4328757990001730167,115, + 111,99,107,101,116,58,108,105,115,116,101,110,0,1,3,2049,17552,10,17793,17836, + 168,17960,4328757989563534360,115,111,99,107,101,116,58,97,99,99,101,112,116,0,1,4,2049, + 17552,10,17817,17861,168,17960,-4724938931013862254,115,111,99,107,101,116,58,99,111,110,110,101,99, + 116,0,1,5,2049,17552,10,17841,17883,168,17960,-4552658767527638798,115,111,99,107,101,116,58,115, + 101,110,100,0,1,6,2049,17552,10,17866,17905,168,17960,-4552658767527675080,115,111,99,107,101,116, + 58,114,101,99,118,0,1,7,2049,17552,10,17888,17928,168,17960,-2663786738754388898,115,111,99,107, + 101,116,58,99,108,111,115,101,0,1,8,2049,17552,10,17910,17955,168,17960,1183100690560715498,115, + 111,99,107,101,116,58,99,111,110,102,105,103,117,114,101,0,1,9,2049,17552, + 10,105,110,116,101,114,102,97,99,101,47,115,111,99,107,101,116,115,46,114, + 101,116,114,111,0,17960,18003,115,111,99,107,101,116,58,111,112,101,114,97,116, + 105,111,110,0,17986,18213,17933,18018,168,18187,229469862290528,105,111,58,99,111,114,101,0,1, + 8000,2049,10731,2049,10712,10,18005,18040,168,18187,249884313919988732,99,111,114,101,58,105,110,105,116, + 0,1,0,2049,18018,10,18025,18061,168,18187,8246182359371694326,99,111,114,101,58,115,116,97,114, + 116,0,1,1,2049,18018,10,18045,18082,168,18187,8246182359367475558,99,111,114,101,58,112,97,117, + 115,101,0,1,2,2049,18018,10,18066,18111,168,18187,8337299194488917014,99,111,114,101,58,112,97, + 117,115,101,45,99,117,114,114,101,110,116,0,1,3,2049,18018,10,18087,18133,168, + 18187,-4577143246433635687,99,111,114,101,58,114,101,115,117,109,101,0,1,4,2049,18018,10,18116, + 18157,168,18187,-3888095465377135055,99,111,114,101,58,114,101,97,100,47,114,101,103,0,1,5, + 2049,18018,10,18138,18182,168,18187,820065755623810592,99,111,114,101,58,119,114,105,116,101,47,114, + 101,103,0,1,6,2049,18018,10,105,110,116,101,114,102,97,99,101,47,109,117, + 108,116,105,99,111,114,101,46,114,101,116,114,111,0,18187,18370,18162,18234,168,18350, + 644988671245709381,102,102,105,58,111,112,101,114,97,116,105,111,110,0,1,8100,2049,10731,2, + 2049,2761,1793,18281,3,2049,4417,69,114,114,111,114,58,32,70,70,73,32,100,101, + 118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,18246,2049,10837,2049, + 10794,10,1,18243,2049,2862,2049,10712,10,18215,18302,168,18350,7572367767785414,102,102,105,58,111,112, + 101,110,0,1,0,2049,18234,10,18288,18324,168,18350,-4572980637897979592,102,102,105,58,109,97,112, + 45,115,121,109,0,1,1,2049,18234,10,18307,18345,168,18350,8246308498881747296,102,102,105,58,105, + 110,118,111,107,101,0,1,2,2049,18234,10,105,110,116,101,114,102,97,99,101, + 47,102,102,105,46,114,101,116,114,111,0,18350,18701,18329,18388,168,18676,8247016409221251463,117,110, + 115,105,103,110,101,100,58,43,0,1,0,1,8101,2049,10731,2049,10712,17,10,18372, + 18414,168,18676,8247016409221251465,117,110,115,105,103,110,101,100,58,45,0,1,0,1,8101,2049, + 10731,2049,10712,18,10,18398,18440,168,18676,8247016409221251462,117,110,115,105,103,110,101,100,58,42, + 0,1,0,1,8101,2049,10731,2049,10712,19,10,18424,18469,168,18676,7638409966457829387,117,110,115,105, + 103,110,101,100,58,47,109,111,100,0,1,0,1,8101,2049,10731,2049,10712,20,10, + 18450,18497,168,18676,-2563494254608726831,117,110,115,105,103,110,101,100,58,101,113,63,0,1,0, + 1,8101,2049,10731,2049,10712,11,10,18479,18526,168,18676,7638409966457748830,117,110,115,105,103,110,101, + 100,58,45,101,113,63,0,1,0,1,8101,2049,10731,2049,10712,12,10,18507,18554,168, + 18676,-2563494254608719109,117,110,115,105,103,110,101,100,58,108,116,63,0,1,0,1,8101,2049, + 10731,2049,10712,13,10,18536,18582,168,18676,-2563494254608724554,117,110,115,105,103,110,101,100,58,103, + 116,63,0,1,0,1,8101,2049,10731,2049,10712,14,10,18564,18612,168,18676,-6186888138744896262,117,110, + 115,105,103,110,101,100,58,115,104,105,102,116,0,1,0,1,8101,2049,10731,2049, + 10712,24,10,18592,18642,168,18676,-6186888138833512267,117,110,115,105,103,110,101,100,58,42,47,109, + 111,100,0,1,1,1,0,1,8101,2049,10731,2,2049,10712,2049,10712,10,18622,18667,168, + 18676,210639169918,42,47,109,111,100,0,1,1,1,8101,2049,10731,2049,10712,10,105,110,116, + 101,114,102,97,99,101,47,117,110,115,105,103,110,101,100,46,114,101,116,114, + 111,0,18676,18827,18656,18721,168,18804,-3502245454587251943,100,58,117,115,101,45,104,97,115,104,101, + 115,0,1,29,1,236,1,5,18,16,1793,18735,2049,188,15,10,1,18731,1,236, + 1,8,18,16,1,2049,1,236,16,1,4819,1,236,2049,3125,16,10,18703,18775,168, + 18804,-4893635544173424761,100,58,117,115,101,45,115,116,114,105,110,103,115,0,1,118,1,236, + 1,5,18,16,1,190,1,236,1,8,18,16,1,0,1,236,16,1,0,1, + 236,2049,3125,16,10,105,110,116,101,114,102,97,99,101,47,102,117,116,117,114, + 101,46,114,101,116,114,111,0,18804,18945,18756,18847,168,0,-3527051417241377258,98,108,111,99,107, + 58,105,110,118,111,107,101,0,1,3,2049,10731,2049,10712,10,18756,18870,168,18922,8246131600073141446, + 98,108,111,99,107,58,114,101,97,100,0,1,0,2049,18847,10,18854,18892,168,18922, + -4578818303223200395,98,108,111,99,107,58,119,114,105,116,101,0,1,1,2049,18847,10,18875,18917, + 168,18922,-4036225629868593021,98,108,111,99,107,58,115,101,116,45,102,105,108,101,0,1,2, + 2049,18847,10,105,110,116,101,114,102,97,99,101,47,98,108,111,99,107,115,46, + 114,101,116,114,111,0,18922,19820,18897,18968,168,19192,4283726481136624767,101,114,114,58,115,101,116, + 45,104,97,110,100,108,101,114,0,1,1234,2049,10731,2,2049,2761,1793,19026,3,2049, + 4417,69,114,114,111,114,58,32,101,114,114,111,114,32,104,97,110,100,108,105, + 110,103,32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0, + 1,18980,2049,10837,2049,10794,10,1,18977,2049,2862,1,0,4,2049,10712,10,18947,19049,168, + 19192,229464878751060,101,114,114,58,100,115,117,0,2049,10869,2049,10794,2049,4417,69,82,82,79, + 82,58,32,68,83,85,58,32,68,65,84,65,32,83,84,65,67,75,32,85, + 78,68,69,82,70,76,79,87,0,1,19055,2049,10837,2049,10794,2049,10986,10,19036,19110, + 168,19192,229464878751054,101,114,114,58,100,115,111,0,2049,10869,2049,10794,2049,4417,69,82,82, + 79,82,58,32,68,83,79,58,32,68,65,84,65,32,83,84,65,67,75,32, + 79,86,69,82,70,76,79,87,0,1,19116,2049,10837,2049,10794,2049,10986,10,19097,19179, + 168,19192,-6210978877792005319,101,114,114,58,115,101,116,45,100,101,102,97,117,108,116,115,0, + 1,19049,1,1,2049,18968,1,19110,1,2,2049,18968,10,105,110,116,101,114,102,97, + 99,101,47,101,114,114,111,114,46,114,101,116,114,111,0,19157,19235,168,0,-1159954141530329845, + 105,111,99,116,108,58,111,112,101,114,97,116,105,111,110,0,1,14,2049,10731, + 2,2049,2761,1793,19284,3,2049,4417,69,114,114,111,114,58,32,105,111,99,116,108, + 32,100,101,118,105,99,101,32,110,111,116,32,102,111,117,110,100,0,1,19247, + 2049,10837,2049,10794,10,1,19244,2049,2862,2049,10712,10,19214,19312,168,0,-1159947561758408230,105,111,99, + 116,108,58,116,101,114,109,45,115,105,122,101,0,1,0,2049,19235,10,19291,19339, + 168,0,-1384827797416383269,105,111,99,116,108,58,115,101,116,45,99,98,114,101,97,107,0, + 1,1,2049,19235,10,19317,19366,168,0,-1384827797064164732,105,111,99,116,108,58,115,101,116,45, + 108,98,114,101,97,107,0,1,2,2049,19235,10,19344,19393,168,0,-1384833267584846441,105,111,99, + 116,108,58,115,97,118,101,45,115,116,97,116,101,0,1,3,2049,19235,10,19371, + 19423,168,0,1092846777098631660,105,111,99,116,108,58,114,101,115,116,111,114,101,45,115,116, + 97,116,101,0,1,4,2049,19235,10,1793,19449,1,192,1,2,17,8,2049,1576,2049, + 190,3841,11568,8,2049,1576,2049,188,16,10,1,19430,19398,19461,168,19796,6384117006,72,79,77, + 69,0,2049,1977,1,4096,17,10,37,115,47,46,99,111,110,102,105,103,47,114, + 101,116,114,111,102,111,114,116,104,47,108,105,98,114,97,114,121,47,37,115, + 46,114,101,116,114,111,0,19451,19467,156,19796,6061648467740287960,108,105,98,114,97,114,121,58, + 46,67,79,78,70,73,71,0,46,47,108,105,98,114,97,114,121,47,37,115, + 46,114,101,116,114,111,0,19506,19527,156,19796,-4563659402581934926,108,105,98,114,97,114,121,58, + 67,87,68,0,19546,19580,168,19796,-4563659402581898990,108,105,98,114,97,114,121,58,99,119,100, + 0,1,19527,2049,8190,10,19563,19606,168,19796,6061648469031755928,108,105,98,114,97,114,121,58,46, + 99,111,110,102,105,103,0,2049,4417,72,79,77,69,0,1,19608,2049,19461,2049,16255, + 2049,19461,1,19467,2049,8190,10,19585,19648,168,19796,-2879782938503308011,108,105,98,114,97,114,121,58, + 102,105,108,101,110,97,109,101,0,2,2049,19580,2,2049,15469,1793,19658,772,10,1, + 19656,2049,2862,3,2049,19606,2,2049,15469,1793,19671,10,1,19670,2049,2862,3,2049,4396,10, + 19626,19702,168,19796,-2799120562421764174,108,105,98,114,97,114,121,58,99,111,110,116,97,105,110, + 115,63,0,1,19580,1,19606,2049,2255,1,15469,2049,2285,22,10,19679,19732,168,19796,-3026807695525939020, + 108,105,98,114,97,114,121,58,108,111,97,100,0,2,2049,19702,1793,19742,2049,19648, + 2049,17283,10,1,19737,1793,19791,2049,4417,69,82,82,79,82,58,32,76,105,98,114, + 97,114,121,32,96,37,115,96,32,119,97,115,32,110,111,116,32,102,111,117, + 110,100,0,1,19748,2049,8190,2049,10837,2049,10794,10,1,19746,2049,66,10,105,110,116, + 101,114,102,97,99,101,47,108,105,98,114,97,114,121,46,114,101,116,114,111, + 0,19796,11743,19714,19838,168,20045,8246457295145463473,105,109,97,103,101,58,115,97,118,101,0,1, + 1000,2049,10731,2049,10712,10,19822,19856,168,0,210711039690,101,100,105,116,63,0,2,1793,19863, + 1,8,11,10,1,19859,1793,19871,1,127,11,10,1,19867,2049,2255,22,10,19845,19889, + 168,0,6953539406400,103,97,116,104,101,114,0,2049,19856,1,17,1,4079,2049,66,10,19877, + 19909,168,0,210709415765,99,121,99,108,101,0,2049,10968,2049,2217,4,8,2049,2644,25,3, + 2049,19889,1,19909,7,10,19822,19942,168,20045,-4557881830897049127,112,97,114,115,101,45,117,110,116, + 105,108,0,1793,19954,2049,4396,2049,4179,2049,19909,771,2049,4041,10,1,19944,2049,4205,10, + 19925,19970,168,20045,210726130610,115,58,103,101,116,0,1793,19992,1793,19978,1,13,11,10,1, + 19974,1793,19986,1,10,11,10,1,19982,2049,2255,22,10,1,19972,2049,19942,10,19959,20008, + 168,20045,210708950412,99,108,101,97,114,0,2049,4417,92,94,91,50,74,92,94,91,48, + 59,48,72,0,1,20010,2049,8190,2049,10837,10,19997,20038,180,20045,5861507,47,47,0,2049, + 17402,1,11002,2049,3868,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,20030,20085,156,0,229441520490121,83,111, + 117,114,99,101,115,0,3,20334,20528,20719,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,19863,20016,168,0,6953711201841,107,110,111,119,110,63,0,2,1,19876, - 2049,9030,10,20004,20033,168,0,210716136861,105,110,100,101,120,0,1,19876,4,2049,9670,1, - 19876,4,2049,9176,10,20022,20056,168,0,6953974036516,114,101,99,111,114,100,0,2049,4445,2, - 1,19876,2049,3816,3841,19876,1,19876,17,16,10,1793,20123,2049,17342,2049,20016,1793,20081,2049, - 20033,10,1,20078,1793,20088,2049,20056,10,1,20085,2049,66,1793,20101,1,192,1,2,17, - 8,10,1,20094,2049,2229,2049,1576,2049,186,16,2049,1576,2049,190,3841,11568,8,2049,1576, - 2049,188,16,10,1,20072,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,19821,20163,168,20125,229461403550098,100,58,119,111, - 114,100,115,0,1793,20172,2049,190,2049,10837,2049,10807,10,1,20165,2049,8435,10,20150,20195, - 168,20125,-3502157631813457253,100,58,119,111,114,100,115,45,119,105,116,104,0,2049,1977,2049,5517, - 1793,20226,2049,190,2,2049,1977,2049,5230,1793,20215,2049,10837,2049,10807,10,1,20210,1793,20221, - 3,10,1,20219,2049,66,10,1,20201,2049,8435,10,20177,20252,168,20125,2818131571306626127,100,105,115, - 112,108,97,121,45,105,102,45,108,101,102,116,0,2,2049,1977,2049,5463,1793,20264, - 2049,10837,2049,10807,10,1,20259,1793,20270,3,10,1,20268,2049,66,10,20177,20303,168,20125, - 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,5517,1793,20314,2049,190,2049,20252,10,1,20309,2049,8435,10, - 101,120,116,101,110,115,105,111,110,115,47,100,111,117,98,108,101,46,114,101, - 116,114,111,0,20275,20359,168,20319,8246228896775126019,100,111,117,98,108,101,58,118,97,114,0, - 2049,2075,4,2049,130,2049,130,10,20343,20385,168,20319,-3421095308458227740,100,111,117,98,108,101,58, - 102,101,116,99,104,0,2049,58,4,15,10,20367,20408,168,20319,-3421095308442276665,100,111,117,98, - 108,101,58,115,116,111,114,101,0,1,19,2049,2229,2049,61,16,10,20390,20434,168, - 20319,-3421095308461432127,100,111,117,98,108,101,58,99,111,110,115,116,0,2049,20359,1,20385,2049, - 8404,10,20416,20458,168,20319,-4575607512064199915,100,111,117,98,108,101,58,115,119,97,112,0,67503109, - 5,67503109,6,10,20441,20479,168,20319,8246228896775106679,100,111,117,98,108,101,58,100,105,112,0, - 67503109,67503109,5,5,8,6,6,10,20463,20503,168,20319,8246228896775123014,100,111,117,98,108,101,58, - 115,105,112,0,1,2217,2049,2229,2049,20479,10,101,120,116,101,110,115,105,111,110, - 115,47,109,97,108,108,111,99,46,114,101,116,114,111,0,20487,20550,168,20510,8246632143337714634, - 109,101,109,58,105,110,118,111,107,101,0,1,15,2049,10731,2049,10712,10,20534,0, - 156,20510,210667451248,65,76,76,79,67,0,20557,1,156,20510,6384048135,70,82,69,69,0,20568, - 2,156,20510,210689088690,83,84,79,82,69,0,20578,3,156,20510,210673137615,70,69,84,67,72, - 0,20589,4,156,20510,6952683137271,82,69,83,73,90,69,0,20487,20627,168,20510,249897943727936361,109,101, - 109,58,97,108,108,111,99,0,1,0,2049,20550,10,20612,20647,168,20510,249897943749573803,109,101, - 109,58,115,116,111,114,101,0,1,2,2049,20550,10,20632,20667,168,20510,249897943733622728,109,101, - 109,58,102,101,116,99,104,0,1,3,2049,20550,10,20652,20686,168,20510,7572664961638592,109,101, - 109,58,102,114,101,101,0,1,1,2049,20550,10,20672,20707,168,20510,8246632143679146032,109,101,109, - 58,114,101,115,105,122,101,0,1,4,2049,20550,10,20691,20727,168,20510,249897943730056489,109,101, - 109,58,99,101,108,108,43,0,1,8,19,17,10,20712,20754,168,20510,1050530996183190288,109,101, - 109,58,102,101,116,99,104,45,100,111,117,98,108,101,0,2,1,1,2049,20727, - 15,5,2049,20667,6,10,20732,20787,168,20510,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,20727,6,2049,20647,6, - 2049,20647,10,0 }; + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,20072,20225,168,0,6953711201841,107, + 110,111,119,110,63,0,2,1,20085,2049,9030,10,20213,20242,168,0,210716136861,105,110,100, + 101,120,0,1,20085,4,2049,9670,1,20085,4,2049,9176,10,20231,20265,168,0,6953974036516,114, + 101,99,111,114,100,0,2049,4445,2,1,20085,2049,3816,3841,20085,1,20085,17,16,10, + 1793,20332,2049,17337,2049,20225,1793,20290,2049,20242,10,1,20287,1793,20297,2049,20265,10,1,20294, + 2049,66,1793,20310,1,192,1,2,17,8,10,1,20303,2049,2229,2049,1576,2049,186,16, + 2049,1576,2049,190,3841,11568,8,2049,1576,2049,188,16,10,1,20281,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, + 20030,20372,168,20334,229461403550098,100,58,119,111,114,100,115,0,1793,20381,2049,190,2049,10837,2049, + 10807,10,1,20374,2049,8435,10,20359,20404,168,20334,-3502157631813457253,100,58,119,111,114,100,115,45, + 119,105,116,104,0,2049,1977,2049,5517,1793,20435,2049,190,2,2049,1977,2049,5230,1793,20424, + 2049,10837,2049,10807,10,1,20419,1793,20430,3,10,1,20428,2049,66,10,1,20410,2049,8435, + 10,20386,20461,168,20334,2818131571306626127,100,105,115,112,108,97,121,45,105,102,45,108,101,102, + 116,0,2,2049,1977,2049,5463,1793,20473,2049,10837,2049,10807,10,1,20468,1793,20479,3,10, + 1,20477,2049,66,10,20386,20512,168,20334,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,5517,1793,20523,2049, + 190,2049,20461,10,1,20518,2049,8435,10,101,120,116,101,110,115,105,111,110,115,47, + 100,111,117,98,108,101,46,114,101,116,114,111,0,20484,20568,168,20528,8246228896775126019,100,111, + 117,98,108,101,58,118,97,114,0,2049,2075,4,2049,130,2049,130,10,20552,20594,168, + 20528,-3421095308458227740,100,111,117,98,108,101,58,102,101,116,99,104,0,2049,58,4,15,10, + 20576,20617,168,20528,-3421095308442276665,100,111,117,98,108,101,58,115,116,111,114,101,0,1,19, + 2049,2229,2049,61,16,10,20599,20643,168,20528,-3421095308461432127,100,111,117,98,108,101,58,99,111, + 110,115,116,0,2049,20568,1,20594,2049,8404,10,20625,20667,168,20528,-4575607512064199915,100,111,117,98, + 108,101,58,115,119,97,112,0,67503109,5,67503109,6,10,20650,20688,168,20528,8246228896775106679,100,111, + 117,98,108,101,58,100,105,112,0,67503109,67503109,5,5,8,6,6,10,20672,20712,168, + 20528,8246228896775123014,100,111,117,98,108,101,58,115,105,112,0,1,2217,2049,2229,2049,20688,10, + 101,120,116,101,110,115,105,111,110,115,47,109,97,108,108,111,99,46,114,101, + 116,114,111,0,20696,20759,168,20719,8246632143337714634,109,101,109,58,105,110,118,111,107,101,0, + 1,15,2049,10731,2049,10712,10,20743,0,156,20719,210667451248,65,76,76,79,67,0,20766,1, + 156,20719,6384048135,70,82,69,69,0,20777,2,156,20719,210689088690,83,84,79,82,69,0,20787, + 3,156,20719,210673137615,70,69,84,67,72,0,20798,4,156,20719,6952683137271,82,69,83,73,90, + 69,0,20696,20836,168,20719,249897943727936361,109,101,109,58,97,108,108,111,99,0,1,0,2049, + 20759,10,20821,20856,168,20719,249897943749573803,109,101,109,58,115,116,111,114,101,0,1,2,2049, + 20759,10,20841,20876,168,20719,249897943733622728,109,101,109,58,102,101,116,99,104,0,1,3,2049, + 20759,10,20861,20895,168,20719,7572664961638592,109,101,109,58,102,114,101,101,0,1,1,2049,20759, + 10,20881,20916,168,20719,8246632143679146032,109,101,109,58,114,101,115,105,122,101,0,1,4,2049, + 20759,10,20900,20936,168,20719,249897943730056489,109,101,109,58,99,101,108,108,43,0,1,8,19, + 17,10,20921,20963,168,20719,1050530996183190288,109,101,109,58,102,101,116,99,104,45,100,111,117, + 98,108,101,0,2,1,1,2049,20936,15,5,2049,20876,6,10,20941,20996,168,20719,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,20936,6,2049,20856,6,2049,20856,10,0 }; diff --git a/vm/nga-c/retro.c b/vm/nga-c/retro.c index dbcd30c..3c57d98 100644 --- a/vm/nga-c/retro.c +++ b/vm/nga-c/retro.c @@ -151,6 +151,10 @@ IO(malloc) IO(blocks) #endif +#ifdef ENABLE_IOCTL +IO(ioctl) +#endif + IO(image) V load_embedded_image(NgaState *); @@ -282,6 +286,10 @@ V guard(NgaState *vm, int n, int m, int diff) { } #endif +#ifdef ENABLE_IOCTL +#include "dev-ioctl.c" +#endif + #ifdef ENABLE_MALLOC #ifdef BIT64 #include "dev-malloc.c" @@ -1013,6 +1021,9 @@ V register_devices(NgaState *vm) { #ifdef ENABLE_ERROR register_device(vm, io_error, query_error); #endif +#ifdef ENABLE_IOCTL + register_device(vm, io_ioctl, query_ioctl); +#endif } V register_signal_handlers() {