From 846bba440ea276863aa9fa4b300d2cfe91844863 Mon Sep 17 00:00:00 2001 From: Adam Saponara Date: Sun, 18 Sep 2022 18:05:50 -0400 Subject: [PATCH] support default colors in non-`TB_OUTPUT_NORMAL` modes (#41) `TB_DEFAULT` is now defined as a bitwise attribute similar to `TB_BOLD`. previously it was defined as 0 which made it impossible to use default colors in non-`TB_OUTPUT_NORMAL` modes. for convenience and limited back-compat, 0 is still interpreted as `TB_DEFAULT` in `TB_OUTPUT_NORMAL`, `TB_OUTPUT_216`, and `TB_OUTPUT_GRAYSCALE`, though `TB_DEFAULT` may be used as well. in `TB_OUTPUT_256` and `TB_OUTPUT_TRUECOLOR`, 0 is black, so `TB_DEFAULT` and `TB_TRUECOLOR_DEFAULT` respectively must be used if a default color is desired. --- termbox.h | 170 +++++++++++------- tests/test_basic/expected.ansi | 2 +- tests/test_color_8bit/expected.ansi | 24 +++ tests/test_color_8bit/test.php | 46 +++++ tests/test_color_true/expected.ansi | 44 ++--- tests/test_color_true/test.php | 259 +++++++++++----------------- 6 files changed, 304 insertions(+), 241 deletions(-) create mode 100644 tests/test_color_8bit/expected.ansi create mode 100755 tests/test_color_8bit/test.php diff --git a/termbox.h b/termbox.h index 285c051..cfdfbf7 100644 --- a/termbox.h +++ b/termbox.h @@ -58,7 +58,7 @@ extern "C" { // __ffi_start -#define TB_VERSION_STR "2.0.0" +#define TB_VERSION_STR "2.1.0-dev" #if defined(TB_LIB_OPTS) || 0 // __tb_lib_opts // Ensure consistent compile-time options when using as a library @@ -196,7 +196,6 @@ extern "C" { #define TB_HARDCAP_EXIT_MOUSE "\x1b[?1006l\x1b[?1015l\x1b[?1002l\x1b[?1000l" /* Colors (numeric) and attributes (bitwise) (tb_cell.fg, tb_cell.bg) */ -#define TB_DEFAULT 0x0000 #define TB_BLACK 0x0001 #define TB_RED 0x0002 #define TB_GREEN 0x0003 @@ -210,12 +209,14 @@ extern "C" { #define TB_REVERSE 0x0400 #define TB_ITALIC 0x0800 #define TB_BLINK 0x1000 +#define TB_DEFAULT 0x2000 #ifdef TB_OPT_TRUECOLOR #define TB_TRUECOLOR_BOLD 0x01000000 #define TB_TRUECOLOR_UNDERLINE 0x02000000 #define TB_TRUECOLOR_REVERSE 0x04000000 #define TB_TRUECOLOR_ITALIC 0x08000000 #define TB_TRUECOLOR_BLINK 0x10000000 +#define TB_TRUECOLOR_DEFAULT 0x20000000 #endif /* Event types (tb_event.type) */ @@ -407,11 +408,16 @@ int tb_present(); int tb_set_cursor(int cx, int cy); int tb_hide_cursor(); -/* Set cell contents in the internal back buffer at the specified position. Use - * tb_set_cell_ex() for rendering grapheme clusters (e.g., combining diacritical - * marks). Function tb_set_cell(x, y, ch, fg, bg) is equivalent to - * tb_set_cell_ex(x, y, &ch, 1, fg, bg). tb_extend_cell() is a shortcut for - * appending 1 code point to cell->ech. +/* Set cell contents in the internal back buffer at the specified position. + * + * Use tb_set_cell_ex() for rendering grapheme clusters (e.g., combining + * diacritical marks). + * + * Function tb_set_cell(x, y, ch, fg, bg) is equivalent to + * tb_set_cell_ex(x, y, &ch, 1, fg, bg). + * + * Function tb_extend_cell() is a shortcut for appending 1 code point to + * cell->ech. */ int tb_set_cell(int x, int y, uint32_t ch, uintattr_t fg, uintattr_t bg); int tb_set_cell_ex(int x, int y, uint32_t *ch, size_t nch, uintattr_t fg, @@ -443,13 +449,20 @@ int tb_set_input_mode(int mode); /* Sets the termbox output mode. Termbox has three output modes: * - * 1. TB_OUTPUT_NORMAL => [1..8] + * 1. TB_OUTPUT_NORMAL => [0..8] + * * This mode provides 8 different colors: * TB_BLACK, TB_RED, TB_GREEN, TB_YELLOW, * TB_BLUE, TB_MAGENTA, TB_CYAN, TB_WHITE - * Colors may be bitwise OR'd with attributes: + * + * Plus TB_DEFAULT which skips sending a color code (i.e., uses the + * terminal's default color). + * + * Colors (including TB_DEFAULT) may be bitwise OR'd with attributes: * TB_BOLD, TB_UNDERLINE, TB_REVERSE, TB_ITALIC, TB_BLINK * + * The value 0 is interpreted as TB_DEFAULT. + * * Some notes: TB_REVERSE can be applied as either fg or bg attributes for * the same effect. TB_BOLD, TB_UNDERLINE, TB_ITALIC, TB_BLINK apply as fg * attributes only, and are ignored as bg attributes. @@ -458,32 +471,49 @@ int tb_set_input_mode(int mode); * tb_set_cell(x, y, '@', TB_BLACK | TB_BOLD, TB_RED); * * 2. TB_OUTPUT_256 => [0..255] + * * In this mode you get 256 distinct colors: * 0x00 - 0x07: the 8 colors as in TB_OUTPUT_NORMAL * 0x08 - 0x0f: bright versions of the above * 0x10 - 0xe7: 216 different colors * 0xe8 - 0xff: 24 different shades of grey * - * Example usage: - * tb_set_cell(x, y, '@', 184, 240); - * tb_set_cell(x, y, '@', 0xb8, 0xf0); + * Attributes may be bitwise OR'd as in TB_OUTPUT_NORMAL. + * + * In this mode 0x00 represents TB_BLACK, so TB_DEFAULT must be used for + * default colors. + * + * 3. TB_OUTPUT_216 => [0..216] * - * 3. TB_OUTPUT_216 => [0..215] * This mode supports the 3rd range of TB_OUTPUT_256 only, but you don't * need to provide an offset. * - * 4. TB_OUTPUT_GRAYSCALE => [0..23] + * The value 0 is interpreted as TB_DEFAULT. + * + * 4. TB_OUTPUT_GRAYSCALE => [0..24] + * * This mode supports the 4th range of TB_OUTPUT_256 only, but you don't * need to provide an offset. * + * The value 0 is interpreted as TB_DEFAULT. + * * 5. TB_OUTPUT_TRUECOLOR => [0x000000..0xffffff] + * * This mode provides 24-bit color on supported terminals. The format is * 0xRRGGBB. Colors may be bitwise OR'd with `TB_TRUECOLOR_*` attributes. * + * In this mode 0x000000 represents black, so TB_TRUECOLOR_DEFAULT must be + * used for default colors. + * * If mode is TB_OUTPUT_CURRENT, the function returns the current output mode. * * The default output mode is TB_OUTPUT_NORMAL. * + * To use the terminal default color (i.e., to not send an escape code), pass + * TB_DEFAULT (or TB_TRUECOLOR_DEFAULT in TB_OUTPUT_TRUECOLOR mode). For + * convenience, the value 0 is interpreted as TB_DEFAULT in TB_OUTPUT_NORMAL, + * TB_OUTPUT_216, and TB_OUTPUT_GRAYSCALE. + * * Note, not all terminals support all output modes, especially beyond * TB_OUTPUT_NORMAL. There is also no very reliable way to determine color * support dynamically. If portability is desired, callers are recommended to @@ -1358,7 +1388,8 @@ static int extract_esc_mouse(struct tb_event *event); static int resize_cellbufs(); static void handle_resize(int sig); static int send_attr(uintattr_t fg, uintattr_t bg); -static int send_sgr(uintattr_t fg, uintattr_t bg); +static int send_sgr(uintattr_t fg, uintattr_t bg, uintattr_t fg_is_default, + uintattr_t bg_is_default); static int send_cursor_if(int x, int y); static int send_char(int x, int y, uint32_t ch); static int send_cluster(int x, int y, uint32_t *ch, size_t nch); @@ -2812,35 +2843,36 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { case TB_OUTPUT_216: cfg = fg & 0xff; - if (cfg > 215) - cfg = 7; cbg = bg & 0xff; - if (cbg > 215) - cbg = 0; - cfg += 0x10; - cbg += 0x10; + if (cfg > 216) + cfg = 216; + if (cbg > 216) + cbg = 216; + cfg += 0x0f; + cbg += 0x0f; break; case TB_OUTPUT_GRAYSCALE: cfg = fg & 0xff; - if (cfg > 23) - cfg = 23; cbg = bg & 0xff; - if (cbg > 23) - cbg = 0; - cfg += 0xe8; - cbg += 0xe8; + if (cfg > 24) + cfg = 24; + if (cbg > 24) + cbg = 24; + cfg += 0xe7; + cbg += 0xe7; break; #ifdef TB_OPT_TRUECOLOR case TB_OUTPUT_TRUECOLOR: - cfg = fg; - cbg = bg; + cfg = fg & 0xffffff; + cbg = bg & 0xffffff; break; #endif } - uintattr_t attr_bold, attr_blink, attr_italic, attr_underline, attr_reverse; + uintattr_t attr_bold, attr_blink, attr_italic, attr_underline, attr_reverse, + attr_default; #ifdef TB_OPT_TRUECOLOR if (global.output_mode == TB_OUTPUT_TRUECOLOR) { attr_bold = TB_TRUECOLOR_BOLD; @@ -2848,6 +2880,7 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { attr_italic = TB_TRUECOLOR_ITALIC; attr_underline = TB_TRUECOLOR_UNDERLINE; attr_reverse = TB_TRUECOLOR_REVERSE; + attr_default = TB_TRUECOLOR_DEFAULT; } else #endif { @@ -2856,6 +2889,19 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { attr_italic = TB_ITALIC; attr_underline = TB_UNDERLINE; attr_reverse = TB_REVERSE; + attr_default = TB_DEFAULT; + } + + /* For convenience (and some back compat), interpret 0 as default in some + * modes */ + if (global.output_mode == TB_OUTPUT_NORMAL || + global.output_mode == TB_OUTPUT_216 || + global.output_mode == TB_OUTPUT_GRAYSCALE) + { + if ((fg & 0xff) == 0) + fg |= attr_default; + if ((bg & 0xff) == 0) + bg |= attr_default; } if (fg & attr_bold) @@ -2876,7 +2922,7 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { if_err_return(rv, bytebuf_puts(&global.out, global.caps[TB_CAP_REVERSE])); - if_err_return(rv, send_sgr(cfg, cbg)); + if_err_return(rv, send_sgr(cfg, cbg, fg & attr_default, bg & attr_default)); global.last_fg = fg; global.last_bg = bg; @@ -2884,16 +2930,12 @@ static int send_attr(uintattr_t fg, uintattr_t bg) { return TB_OK; } -static int send_sgr(uintattr_t fg, uintattr_t bg) { +static int send_sgr(uintattr_t cfg, uintattr_t cbg, uintattr_t fg_is_default, + uintattr_t bg_is_default) { int rv; char nbuf[32]; - if ( -#ifdef TB_OPT_TRUECOLOR - global.output_mode != TB_OUTPUT_TRUECOLOR && -#endif - fg == TB_DEFAULT && bg == TB_DEFAULT) - { + if (fg_is_default && bg_is_default) { return TB_OK; } @@ -2901,16 +2943,16 @@ static int send_sgr(uintattr_t fg, uintattr_t bg) { default: case TB_OUTPUT_NORMAL: send_literal(rv, "\x1b["); - if (fg != TB_DEFAULT) { + if (!fg_is_default) { send_literal(rv, "3"); - send_num(rv, nbuf, fg - 1); - if (bg != TB_DEFAULT) { + send_num(rv, nbuf, cfg - 1); + if (!bg_is_default) { send_literal(rv, ";"); } } - if (bg != TB_DEFAULT) { + if (!bg_is_default) { send_literal(rv, "4"); - send_num(rv, nbuf, bg - 1); + send_num(rv, nbuf, cbg - 1); } send_literal(rv, "m"); break; @@ -2919,34 +2961,42 @@ static int send_sgr(uintattr_t fg, uintattr_t bg) { case TB_OUTPUT_216: case TB_OUTPUT_GRAYSCALE: send_literal(rv, "\x1b["); - if (fg != TB_DEFAULT) { + if (!fg_is_default) { send_literal(rv, "38;5;"); - send_num(rv, nbuf, fg); - if (bg != TB_DEFAULT) { + send_num(rv, nbuf, cfg); + if (!bg_is_default) { send_literal(rv, ";"); } } - if (bg != TB_DEFAULT) { + if (!bg_is_default) { send_literal(rv, "48;5;"); - send_num(rv, nbuf, bg); + send_num(rv, nbuf, cbg); } send_literal(rv, "m"); break; #ifdef TB_OPT_TRUECOLOR case TB_OUTPUT_TRUECOLOR: - send_literal(rv, "\x1b[38;2;"); - send_num(rv, nbuf, (fg >> 16) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, (fg >> 8) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, fg & 0xff); - send_literal(rv, ";48;2;"); - send_num(rv, nbuf, (bg >> 16) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, (bg >> 8) & 0xff); - send_literal(rv, ";"); - send_num(rv, nbuf, bg & 0xff); + send_literal(rv, "\x1b["); + if (!fg_is_default) { + send_literal(rv, "38;2;"); + send_num(rv, nbuf, (cfg >> 16) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, (cfg >> 8) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, cfg & 0xff); + if (!bg_is_default) { + send_literal(rv, ";"); + } + } + if (!bg_is_default) { + send_literal(rv, "48;2;"); + send_num(rv, nbuf, (cbg >> 16) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, (cbg >> 8) & 0xff); + send_literal(rv, ";"); + send_num(rv, nbuf, cbg & 0xff); + } send_literal(rv, "m"); break; #endif diff --git a/tests/test_basic/expected.ansi b/tests/test_basic/expected.ansi index 55fdd39..5b4dca1 100644 --- a/tests/test_basic/expected.ansi +++ b/tests/test_basic/expected.ansi @@ -1,4 +1,4 @@ -#5version=2.0.0 +#5version=2.1.0-dev #5width=80 #5height=24 #5attr=TB_BOLD diff --git a/tests/test_color_8bit/expected.ansi b/tests/test_color_8bit/expected.ansi new file mode 100644 index 0000000..2867c4a --- /dev/null +++ b/tests/test_color_8bit/expected.ansi @@ -0,0 +1,24 @@ +#5TB_OUTPUT_NORMAL +#5▀▀▀▀▀▀▀▀▀ +#5fg=def|ital bg=6 +#5fg=0|ital   bg=6 +#5TB_OUTPUT_256 +#5▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[0;38:5:16m▀[0;38:5:17m▀[0;38:5:18m▀[0;38:5:19m▀[0;38:5:20m▀[0;38:5:21m▀[0;38:5:22m▀[0;38:5:23m▀[0;38:5:24m▀[0;38:5:25m▀[0;38:5:26m▀[0;38:5:27m▀[0;38:5:28m▀[0;38:5:29m▀[0;38:5:30m▀[0;38:5:31m▀[0;38:5:32m▀[0;38:5:33m▀[0;38:5:34m▀[0;38:5:35m▀[0;38:5:36m▀[0;38:5:37m▀[0;38:5:38m▀[0;38:5:39m▀[0;38:5:40m▀[0;38:5:41m▀[0;38:5:42m▀[0;38:5:43m▀[0;38:5:44m▀[0;38:5:45m▀[0;38:5:46m▀[0;38:5:47m▀[0;38:5:48m▀[0;38:5:49m▀[0;38:5:50m▀[0;38:5:51m▀[0;38:5:52m▀[0;38:5:53m▀[0;38:5:54m▀[0;38:5:55m▀[0;38:5:56m▀[0;38:5:57m▀[0;38:5:58m▀[0;38:5:59m▀[0;38:5:60m▀[0;38:5:61m▀[0;38:5:62m▀[0;38:5:63m▀[0;38:5:64m▀[0;38:5:65m▀[0;38:5:66m▀[0;38:5:67m▀[0;38:5:68m▀[0;38:5:69m▀[0;38:5:70m▀[0;38:5:71m▀[0;38:5:72m▀[0;38:5:73m▀[0;38:5:74m▀[0;38:5:75m▀[0;38:5:76m▀[0;38:5:77m▀[0;38:5:78m▀[0;38:5:79m▀ +#5[0;38:5:80m▀[0;38:5:81m▀[0;38:5:82m▀[0;38:5:83m▀[0;38:5:84m▀[0;38:5:85m▀[0;38:5:86m▀[0;38:5:87m▀[0;38:5:88m▀[0;38:5:89m▀[0;38:5:90m▀[0;38:5:91m▀[0;38:5:92m▀[0;38:5:93m▀[0;38:5:94m▀[0;38:5:95m▀[0;38:5:96m▀[0;38:5:97m▀[0;38:5:98m▀[0;38:5:99m▀[0;38:5:100m▀[0;38:5:101m▀[0;38:5:102m▀[0;38:5:103m▀[0;38:5:104m▀[0;38:5:105m▀[0;38:5:106m▀[0;38:5:107m▀[0;38:5:108m▀[0;38:5:109m▀[0;38:5:110m▀[0;38:5:111m▀[0;38:5:112m▀[0;38:5:113m▀[0;38:5:114m▀[0;38:5:115m▀[0;38:5:116m▀[0;38:5:117m▀[0;38:5:118m▀[0;38:5:119m▀[0;38:5:120m▀[0;38:5:121m▀[0;38:5:122m▀[0;38:5:123m▀[0;38:5:124m▀[0;38:5:125m▀[0;38:5:126m▀[0;38:5:127m▀[0;38:5:128m▀[0;38:5:129m▀[0;38:5:130m▀[0;38:5:131m▀[0;38:5:132m▀[0;38:5:133m▀[0;38:5:134m▀[0;38:5:135m▀[0;38:5:136m▀[0;38:5:137m▀[0;38:5:138m▀[0;38:5:139m▀[0;38:5:140m▀[0;38:5:141m▀[0;38:5:142m▀[0;38:5:143m▀[0;38:5:144m▀[0;38:5:145m▀[0;38:5:146m▀[0;38:5:147m▀[0;38:5:148m▀[0;38:5:149m▀[0;38:5:150m▀[0;38:5:151m▀[0;38:5:152m▀[0;38:5:153m▀[0;38:5:154m▀[0;38:5:155m▀[0;38:5:156m▀[0;38:5:157m▀[0;38:5:158m▀[0;38:5:159m▀ +#5[0;38:5:160m▀[0;38:5:161m▀[0;38:5:162m▀[0;38:5:163m▀[0;38:5:164m▀[0;38:5:165m▀[0;38:5:166m▀[0;38:5:167m▀[0;38:5:168m▀[0;38:5:169m▀[0;38:5:170m▀[0;38:5:171m▀[0;38:5:172m▀[0;38:5:173m▀[0;38:5:174m▀[0;38:5:175m▀[0;38:5:176m▀[0;38:5:177m▀[0;38:5:178m▀[0;38:5:179m▀[0;38:5:180m▀[0;38:5:181m▀[0;38:5:182m▀[0;38:5:183m▀[0;38:5:184m▀[0;38:5:185m▀[0;38:5:186m▀[0;38:5:187m▀[0;38:5:188m▀[0;38:5:189m▀[0;38:5:190m▀[0;38:5:191m▀[0;38:5:192m▀[0;38:5:193m▀[0;38:5:194m▀[0;38:5:195m▀[0;38:5:196m▀[0;38:5:197m▀[0;38:5:198m▀[0;38:5:199m▀[0;38:5:200m▀[0;38:5:201m▀[0;38:5:202m▀[0;38:5:203m▀[0;38:5:204m▀[0;38:5:205m▀[0;38:5:206m▀[0;38:5:207m▀[0;38:5:208m▀[0;38:5:209m▀[0;38:5:210m▀[0;38:5:211m▀[0;38:5:212m▀[0;38:5:213m▀[0;38:5:214m▀[0;38:5:215m▀[0;38:5:216m▀[0;38:5:217m▀[0;38:5:218m▀[0;38:5:219m▀[0;38:5:220m▀[0;38:5:221m▀[0;38:5:222m▀[0;38:5:223m▀[0;38:5:224m▀[0;38:5:225m▀[0;38:5:226m▀[0;38:5:227m▀[0;38:5:228m▀[0;38:5:229m▀[0;38:5:230m▀[0;38:5:231m▀[0;38:5:232m▀[0;38:5:233m▀[0;38:5:234m▀[0;38:5:235m▀[0;38:5:236m▀[0;38:5:237m▀[0;38:5:238m▀[0;38:5:239m▀ +#5[0;38:5:240m▀[0;38:5:241m▀[0;38:5:242m▀[0;38:5:243m▀[0;38:5:244m▀[0;38:5:245m▀[0;38:5:246m▀[0;38:5:247m▀[0;38:5:248m▀[0;38:5:249m▀[0;38:5:250m▀[0;38:5:251m▀[0;38:5:252m▀[0;38:5:253m▀[0;38:5:254m▀[0;38:5:255m▀ +#5fg=def|ital bg=6 +#5fg=0|ital   bg=6 +#5TB_OUTPUT_216 +#5▀[0;38:5:16m▀[0;38:5:17m▀[0;38:5:18m▀[0;38:5:19m▀[0;38:5:20m▀[0;38:5:21m▀[0;38:5:22m▀[0;38:5:23m▀[0;38:5:24m▀[0;38:5:25m▀[0;38:5:26m▀[0;38:5:27m▀[0;38:5:28m▀[0;38:5:29m▀[0;38:5:30m▀[0;38:5:31m▀[0;38:5:32m▀[0;38:5:33m▀[0;38:5:34m▀[0;38:5:35m▀[0;38:5:36m▀[0;38:5:37m▀[0;38:5:38m▀[0;38:5:39m▀[0;38:5:40m▀[0;38:5:41m▀[0;38:5:42m▀[0;38:5:43m▀[0;38:5:44m▀[0;38:5:45m▀[0;38:5:46m▀[0;38:5:47m▀[0;38:5:48m▀[0;38:5:49m▀[0;38:5:50m▀[0;38:5:51m▀[0;38:5:52m▀[0;38:5:53m▀[0;38:5:54m▀[0;38:5:55m▀[0;38:5:56m▀[0;38:5:57m▀[0;38:5:58m▀[0;38:5:59m▀[0;38:5:60m▀[0;38:5:61m▀[0;38:5:62m▀[0;38:5:63m▀[0;38:5:64m▀[0;38:5:65m▀[0;38:5:66m▀[0;38:5:67m▀[0;38:5:68m▀[0;38:5:69m▀[0;38:5:70m▀[0;38:5:71m▀[0;38:5:72m▀[0;38:5:73m▀[0;38:5:74m▀[0;38:5:75m▀[0;38:5:76m▀[0;38:5:77m▀[0;38:5:78m▀[0;38:5:79m▀[0;38:5:80m▀[0;38:5:81m▀[0;38:5:82m▀[0;38:5:83m▀[0;38:5:84m▀[0;38:5:85m▀[0;38:5:86m▀[0;38:5:87m▀[0;38:5:88m▀[0;38:5:89m▀[0;38:5:90m▀[0;38:5:91m▀[0;38:5:92m▀[0;38:5:93m▀[0;38:5:94m▀ +#5[0;38:5:95m▀[0;38:5:96m▀[0;38:5:97m▀[0;38:5:98m▀[0;38:5:99m▀[0;38:5:100m▀[0;38:5:101m▀[0;38:5:102m▀[0;38:5:103m▀[0;38:5:104m▀[0;38:5:105m▀[0;38:5:106m▀[0;38:5:107m▀[0;38:5:108m▀[0;38:5:109m▀[0;38:5:110m▀[0;38:5:111m▀[0;38:5:112m▀[0;38:5:113m▀[0;38:5:114m▀[0;38:5:115m▀[0;38:5:116m▀[0;38:5:117m▀[0;38:5:118m▀[0;38:5:119m▀[0;38:5:120m▀[0;38:5:121m▀[0;38:5:122m▀[0;38:5:123m▀[0;38:5:124m▀[0;38:5:125m▀[0;38:5:126m▀[0;38:5:127m▀[0;38:5:128m▀[0;38:5:129m▀[0;38:5:130m▀[0;38:5:131m▀[0;38:5:132m▀[0;38:5:133m▀[0;38:5:134m▀[0;38:5:135m▀[0;38:5:136m▀[0;38:5:137m▀[0;38:5:138m▀[0;38:5:139m▀[0;38:5:140m▀[0;38:5:141m▀[0;38:5:142m▀[0;38:5:143m▀[0;38:5:144m▀[0;38:5:145m▀[0;38:5:146m▀[0;38:5:147m▀[0;38:5:148m▀[0;38:5:149m▀[0;38:5:150m▀[0;38:5:151m▀[0;38:5:152m▀[0;38:5:153m▀[0;38:5:154m▀[0;38:5:155m▀[0;38:5:156m▀[0;38:5:157m▀[0;38:5:158m▀[0;38:5:159m▀[0;38:5:160m▀[0;38:5:161m▀[0;38:5:162m▀[0;38:5:163m▀[0;38:5:164m▀[0;38:5:165m▀[0;38:5:166m▀[0;38:5:167m▀[0;38:5:168m▀[0;38:5:169m▀[0;38:5:170m▀[0;38:5:171m▀[0;38:5:172m▀[0;38:5:173m▀[0;38:5:174m▀ +#5[0;38:5:175m▀[0;38:5:176m▀[0;38:5:177m▀[0;38:5:178m▀[0;38:5:179m▀[0;38:5:180m▀[0;38:5:181m▀[0;38:5:182m▀[0;38:5:183m▀[0;38:5:184m▀[0;38:5:185m▀[0;38:5:186m▀[0;38:5:187m▀[0;38:5:188m▀[0;38:5:189m▀[0;38:5:190m▀[0;38:5:191m▀[0;38:5:192m▀[0;38:5:193m▀[0;38:5:194m▀[0;38:5:195m▀[0;38:5:196m▀[0;38:5:197m▀[0;38:5:198m▀[0;38:5:199m▀[0;38:5:200m▀[0;38:5:201m▀[0;38:5:202m▀[0;38:5:203m▀[0;38:5:204m▀[0;38:5:205m▀[0;38:5:206m▀[0;38:5:207m▀[0;38:5:208m▀[0;38:5:209m▀[0;38:5:210m▀[0;38:5:211m▀[0;38:5:212m▀[0;38:5:213m▀[0;38:5:214m▀[0;38:5:215m▀[0;38:5:216m▀[0;38:5:217m▀[0;38:5:218m▀[0;38:5:219m▀[0;38:5:220m▀[0;38:5:221m▀[0;38:5:222m▀[0;38:5:223m▀[0;38:5:224m▀[0;38:5:225m▀[0;38:5:226m▀[0;38:5:227m▀[0;38:5:228m▀[0;38:5:229m▀[0;38:5:230m▀[0;38:5:231m▀ +#5[0;3;48:5:21mf[0;3;48:5:21mg[0;3;48:5:21m=[0;3;48:5:21md[0;3;48:5:21me[0;3;48:5:21mf[0;3;48:5:21m|[0;3;48:5:21mi[0;3;48:5:21mt[0;3;48:5:21ma[0;3;48:5:21ml[0;3;48:5:21m [0;3;48:5:21mb[0;3;48:5:21mg[0;3;48:5:21m=[0;3;48:5:21m6 +#5[0;3;48:5:21mf[0;3;48:5:21mg[0;3;48:5:21m=[0;3;48:5:21m0[0;3;48:5:21m|[0;3;48:5:21mi[0;3;48:5:21mt[0;3;48:5:21ma[0;3;48:5:21ml[0;3;48:5:21m [0;3;48:5:21m [0;3;48:5:21m [0;3;48:5:21mb[0;3;48:5:21mg[0;3;48:5:21m=[0;3;48:5:21m6 +#5TB_OUTPUT_GRAYSCALE +#5▀[0;38:5:232m▀[0;38:5:233m▀[0;38:5:234m▀[0;38:5:235m▀[0;38:5:236m▀[0;38:5:237m▀[0;38:5:238m▀[0;38:5:239m▀[0;38:5:240m▀[0;38:5:241m▀[0;38:5:242m▀[0;38:5:243m▀[0;38:5:244m▀[0;38:5:245m▀[0;38:5:246m▀[0;38:5:247m▀[0;38:5:248m▀[0;38:5:249m▀[0;38:5:250m▀[0;38:5:251m▀[0;38:5:252m▀[0;38:5:253m▀[0;38:5:254m▀[0;38:5:255m▀ +#5[0;3;48:5:237mf[0;3;48:5:237mg[0;3;48:5:237m=[0;3;48:5:237md[0;3;48:5:237me[0;3;48:5:237mf[0;3;48:5:237m|[0;3;48:5:237mi[0;3;48:5:237mt[0;3;48:5:237ma[0;3;48:5:237ml[0;3;48:5:237m [0;3;48:5:237mb[0;3;48:5:237mg[0;3;48:5:237m=[0;3;48:5:237m6 +#5[0;3;48:5:237mf[0;3;48:5:237mg[0;3;48:5:237m=[0;3;48:5:237m0[0;3;48:5:237m|[0;3;48:5:237mi[0;3;48:5:237mt[0;3;48:5:237ma[0;3;48:5:237ml[0;3;48:5:237m [0;3;48:5:237m [0;3;48:5:237m [0;3;48:5:237mb[0;3;48:5:237mg[0;3;48:5:237m=[0;3;48:5:237m6 + + + diff --git a/tests/test_color_8bit/test.php b/tests/test_color_8bit/test.php new file mode 100755 index 0000000..5dd78f8 --- /dev/null +++ b/tests/test_color_8bit/test.php @@ -0,0 +1,46 @@ +ffi->tb_init(); + +$w = $test->ffi->tb_width(); +$h = $test->ffi->tb_height(); + +$x = 0; +$y = 0; + +function test_mode($test, string $mode, int $n, int $w, int &$x, int &$y): void { + $attr_default = $test->defines['TB_DEFAULT']; + $attr_italic = $test->defines['TB_ITALIC']; + $attr_reverse = $test->defines['TB_REVERSE']; + + $test->ffi->tb_set_output_mode($test->defines[$mode]); + $test->ffi->tb_print($x = 0, $y, $attr_default, $attr_default, $mode); + + $y++; + for ($fg = 0; $fg <= $n; $fg++) { + $s = "\xe2\x96\x80"; + $slen = 1; // mb_strlen + if ($x + $slen > $w) { + $x = 0; + $y++; + } + $test->ffi->tb_print($x, $y, $fg, $attr_default, $s); + $x += $slen; + } + + $y++; + $test->ffi->tb_print($x = 0, $y++, $attr_default | $attr_italic, 6, "fg=def|ital bg=6"); + $test->ffi->tb_print($x = 0, $y++, 0 | $attr_italic, 6, "fg=0|ital bg=6"); + + $test->ffi->tb_present(); +} + +// TB_OUTPUT_NORMAL +test_mode($test, 'TB_OUTPUT_NORMAL', 8, $w, $x, $y); +test_mode($test, 'TB_OUTPUT_256', 255, $w, $x, $y); +test_mode($test, 'TB_OUTPUT_216', 216, $w, $x, $y); +test_mode($test, 'TB_OUTPUT_GRAYSCALE', 24, $w, $x, $y); + + +$test->screencap(); diff --git a/tests/test_color_true/expected.ansi b/tests/test_color_true/expected.ansi index 850116f..df26615 100644 --- a/tests/test_color_true/expected.ansi +++ b/tests/test_color_true/expected.ansi @@ -1,24 +1,24 @@ -#5[0;38:2::240:248:255;48:2::0:0:0ma[0;38:2::240:248:255;48:2::0:0:0ml[0;38:2::240:248:255;48:2::0:0:0mi[0;38:2::240:248:255;48:2::0:0:0mc[0;38:2::240:248:255;48:2::0:0:0me[0;38:2::240:248:255;48:2::0:0:0mb[0;38:2::240:248:255;48:2::0:0:0ml[0;38:2::240:248:255;48:2::0:0:0mu[0;38:2::240:248:255;48:2::0:0:0me[0;38:2::240:248:255;48:2::0:0:0m [0;38:2::250:235:215;48:2::0:0:0ma[0;38:2::250:235:215;48:2::0:0:0mn[0;38:2::250:235:215;48:2::0:0:0mt[0;38:2::250:235:215;48:2::0:0:0mi[0;38:2::250:235:215;48:2::0:0:0mq[0;38:2::250:235:215;48:2::0:0:0mu[0;38:2::250:235:215;48:2::0:0:0me[0;38:2::250:235:215;48:2::0:0:0mw[0;38:2::250:235:215;48:2::0:0:0mh[0;38:2::250:235:215;48:2::0:0:0mi[0;38:2::250:235:215;48:2::0:0:0mt[0;38:2::250:235:215;48:2::0:0:0me[0;38:2::250:235:215;48:2::0:0:0m [0;38:2::0:255:255;48:2::0:0:0ma[0;38:2::0:255:255;48:2::0:0:0mq[0;38:2::0:255:255;48:2::0:0:0mu[0;38:2::0:255:255;48:2::0:0:0ma[0;38:2::0:255:255;48:2::0:0:0m [0;38:2::127:255:212;48:2::0:0:0ma[0;38:2::127:255:212;48:2::0:0:0mq[0;38:2::127:255:212;48:2::0:0:0mu[0;38:2::127:255:212;48:2::0:0:0ma[0;38:2::127:255:212;48:2::0:0:0mm[0;38:2::127:255:212;48:2::0:0:0ma[0;38:2::127:255:212;48:2::0:0:0mr[0;38:2::127:255:212;48:2::0:0:0mi[0;38:2::127:255:212;48:2::0:0:0mn[0;38:2::127:255:212;48:2::0:0:0me[0;38:2::127:255:212;48:2::0:0:0m [0;38:2::240:255:255;48:2::0:0:0ma[0;38:2::240:255:255;48:2::0:0:0mz[0;38:2::240:255:255;48:2::0:0:0mu[0;38:2::240:255:255;48:2::0:0:0mr[0;38:2::240:255:255;48:2::0:0:0me[0;38:2::240:255:255;48:2::0:0:0m [0;38:2::245:245:220;48:2::0:0:0mb[0;38:2::245:245:220;48:2::0:0:0me[0;38:2::245:245:220;48:2::0:0:0mi[0;38:2::245:245:220;48:2::0:0:0mg[0;38:2::245:245:220;48:2::0:0:0me[0;38:2::245:245:220;48:2::0:0:0m [0;38:2::255:228:196;48:2::0:0:0mb[0;38:2::255:228:196;48:2::0:0:0mi[0;38:2::255:228:196;48:2::0:0:0ms[0;38:2::255:228:196;48:2::0:0:0mq[0;38:2::255:228:196;48:2::0:0:0mu[0;38:2::255:228:196;48:2::0:0:0me[0;38:2::255:228:196;48:2::0:0:0m [0;38:2::0:0:0;48:2::0:0:0mb[0;38:2::0:0:0;48:2::0:0:0ml[0;38:2::0:0:0;48:2::0:0:0ma[0;38:2::0:0:0;48:2::0:0:0mc[0;38:2::0:0:0;48:2::0:0:0mk [0;38:2::255:235:205;48:2::0:0:0mb[0;38:2::255:235:205;48:2::0:0:0ml[0;38:2::255:235:205;48:2::0:0:0ma[0;38:2::255:235:205;48:2::0:0:0mn[0;38:2::255:235:205;48:2::0:0:0mc[0;38:2::255:235:205;48:2::0:0:0mh[0;38:2::255:235:205;48:2::0:0:0me[0;38:2::255:235:205;48:2::0:0:0md[0;38:2::255:235:205;48:2::0:0:0ma[0;38:2::255:235:205;48:2::0:0:0ml[0;38:2::255:235:205;48:2::0:0:0mm[0;38:2::255:235:205;48:2::0:0:0mo[0;38:2::255:235:205;48:2::0:0:0mn[0;38:2::255:235:205;48:2::0:0:0md[0;38:2::255:235:205;48:2::0:0:0m [0;38:2::0:0:255;48:2::0:0:0mb -#5[0;38:2::138:43:226;48:2::0:0:0mb[0;38:2::138:43:226;48:2::0:0:0ml[0;38:2::138:43:226;48:2::0:0:0mu[0;38:2::138:43:226;48:2::0:0:0me[0;38:2::138:43:226;48:2::0:0:0mv[0;38:2::138:43:226;48:2::0:0:0mi[0;38:2::138:43:226;48:2::0:0:0mo[0;38:2::138:43:226;48:2::0:0:0ml[0;38:2::138:43:226;48:2::0:0:0me[0;38:2::138:43:226;48:2::0:0:0mt[0;38:2::138:43:226;48:2::0:0:0m [0;38:2::165:42:42;48:2::0:0:0mb[0;38:2::165:42:42;48:2::0:0:0mr[0;38:2::165:42:42;48:2::0:0:0mo[0;38:2::165:42:42;48:2::0:0:0mw[0;38:2::165:42:42;48:2::0:0:0mn[0;38:2::165:42:42;48:2::0:0:0m [0;38:2::222:184:135;48:2::0:0:0mb[0;38:2::222:184:135;48:2::0:0:0mu[0;38:2::222:184:135;48:2::0:0:0mr[0;38:2::222:184:135;48:2::0:0:0ml[0;38:2::222:184:135;48:2::0:0:0my[0;38:2::222:184:135;48:2::0:0:0mw[0;38:2::222:184:135;48:2::0:0:0mo[0;38:2::222:184:135;48:2::0:0:0mo[0;38:2::222:184:135;48:2::0:0:0md[0;38:2::222:184:135;48:2::0:0:0m [0;38:2::95:158:160;48:2::0:0:0mc[0;38:2::95:158:160;48:2::0:0:0ma[0;38:2::95:158:160;48:2::0:0:0md[0;38:2::95:158:160;48:2::0:0:0me[0;38:2::95:158:160;48:2::0:0:0mt[0;38:2::95:158:160;48:2::0:0:0mb[0;38:2::95:158:160;48:2::0:0:0ml[0;38:2::95:158:160;48:2::0:0:0mu[0;38:2::95:158:160;48:2::0:0:0me[0;38:2::95:158:160;48:2::0:0:0m [0;38:2::127:255:0;48:2::0:0:0mc[0;38:2::127:255:0;48:2::0:0:0mh[0;38:2::127:255:0;48:2::0:0:0ma[0;38:2::127:255:0;48:2::0:0:0mr[0;38:2::127:255:0;48:2::0:0:0mt[0;38:2::127:255:0;48:2::0:0:0mr[0;38:2::127:255:0;48:2::0:0:0me[0;38:2::127:255:0;48:2::0:0:0mu[0;38:2::127:255:0;48:2::0:0:0ms[0;38:2::127:255:0;48:2::0:0:0me[0;38:2::127:255:0;48:2::0:0:0m [0;38:2::210:105:30;48:2::0:0:0mc[0;38:2::210:105:30;48:2::0:0:0mh[0;38:2::210:105:30;48:2::0:0:0mo[0;38:2::210:105:30;48:2::0:0:0mc[0;38:2::210:105:30;48:2::0:0:0mo[0;38:2::210:105:30;48:2::0:0:0ml[0;38:2::210:105:30;48:2::0:0:0ma[0;38:2::210:105:30;48:2::0:0:0mt[0;38:2::210:105:30;48:2::0:0:0me[0;38:2::210:105:30;48:2::0:0:0m [0;38:2::255:127:80;48:2::0:0:0mc[0;38:2::255:127:80;48:2::0:0:0mo[0;38:2::255:127:80;48:2::0:0:0mr[0;38:2::255:127:80;48:2::0:0:0ma[0;38:2::255:127:80;48:2::0:0:0ml[0;38:2::255:127:80;48:2::0:0:0m [0;38:2::100:149:237;48:2::0:0:0mc[0;38:2::100:149:237;48:2::0:0:0mo[0;38:2::100:149:237;48:2::0:0:0mr[0;38:2::100:149:237;48:2::0:0:0mn[0;38:2::100:149:237;48:2::0:0:0mf[0;38:2::100:149:237;48:2::0:0:0ml[0;38:2::100:149:237;48:2::0:0:0mo[0;38:2::100:149:237;48:2::0:0:0mw[0;38:2::100:149:237;48:2::0:0:0me[0;38:2::100:149:237;48:2::0:0:0mr[0;38:2::100:149:237;48:2::0:0:0mb[0;38:2::100:149:237;48:2::0:0:0ml[0;38:2::100:149:237;48:2::0:0:0mu[0;38:2::100:149:237;48:2::0:0:0me[0;38:2::100:149:237;48:2::0:0:0m [0;38:2::255:248:220;48:2::0:0:0mc -#5[0;38:2::220:20:60;48:2::0:0:0mc[0;38:2::220:20:60;48:2::0:0:0mr[0;38:2::220:20:60;48:2::0:0:0mi[0;38:2::220:20:60;48:2::0:0:0mm[0;38:2::220:20:60;48:2::0:0:0ms[0;38:2::220:20:60;48:2::0:0:0mo[0;38:2::220:20:60;48:2::0:0:0mn[0;38:2::220:20:60;48:2::0:0:0m [0;38:2::0:255:255;48:2::0:0:0mc[0;38:2::0:255:255;48:2::0:0:0my[0;38:2::0:255:255;48:2::0:0:0ma[0;38:2::0:255:255;48:2::0:0:0mn[0;38:2::0:255:255;48:2::0:0:0m [0;38:2::0:0:139;48:2::0:0:0md[0;38:2::0:0:139;48:2::0:0:0ma[0;38:2::0:0:139;48:2::0:0:0mr[0;38:2::0:0:139;48:2::0:0:0mk[0;38:2::0:0:139;48:2::0:0:0mb[0;38:2::0:0:139;48:2::0:0:0ml[0;38:2::0:0:139;48:2::0:0:0mu[0;38:2::0:0:139;48:2::0:0:0me[0;38:2::0:0:139;48:2::0:0:0m [0;38:2::0:139:139;48:2::0:0:0md[0;38:2::0:139:139;48:2::0:0:0ma[0;38:2::0:139:139;48:2::0:0:0mr[0;38:2::0:139:139;48:2::0:0:0mk[0;38:2::0:139:139;48:2::0:0:0mc[0;38:2::0:139:139;48:2::0:0:0my[0;38:2::0:139:139;48:2::0:0:0ma[0;38:2::0:139:139;48:2::0:0:0mn[0;38:2::0:139:139;48:2::0:0:0m [0;38:2::184:134:11;48:2::0:0:0md[0;38:2::184:134:11;48:2::0:0:0ma[0;38:2::184:134:11;48:2::0:0:0mr[0;38:2::184:134:11;48:2::0:0:0mk[0;38:2::184:134:11;48:2::0:0:0mg[0;38:2::184:134:11;48:2::0:0:0mo[0;38:2::184:134:11;48:2::0:0:0ml[0;38:2::184:134:11;48:2::0:0:0md[0;38:2::184:134:11;48:2::0:0:0me[0;38:2::184:134:11;48:2::0:0:0mn[0;38:2::184:134:11;48:2::0:0:0mr[0;38:2::184:134:11;48:2::0:0:0mo[0;38:2::184:134:11;48:2::0:0:0md[0;38:2::184:134:11;48:2::0:0:0m [0;38:2::169:169:169;48:2::0:0:0md[0;38:2::169:169:169;48:2::0:0:0ma[0;38:2::169:169:169;48:2::0:0:0mr[0;38:2::169:169:169;48:2::0:0:0mk[0;38:2::169:169:169;48:2::0:0:0mg[0;38:2::169:169:169;48:2::0:0:0mr[0;38:2::169:169:169;48:2::0:0:0ma[0;38:2::169:169:169;48:2::0:0:0my[0;38:2::169:169:169;48:2::0:0:0m [0;38:2::0:100:0;48:2::0:0:0md[0;38:2::0:100:0;48:2::0:0:0ma[0;38:2::0:100:0;48:2::0:0:0mr[0;38:2::0:100:0;48:2::0:0:0mk[0;38:2::0:100:0;48:2::0:0:0mg[0;38:2::0:100:0;48:2::0:0:0mr[0;38:2::0:100:0;48:2::0:0:0me[0;38:2::0:100:0;48:2::0:0:0me[0;38:2::0:100:0;48:2::0:0:0mn[0;38:2::0:100:0;48:2::0:0:0m [0;38:2::169:169:169;48:2::0:0:0md[0;38:2::169:169:169;48:2::0:0:0ma[0;38:2::169:169:169;48:2::0:0:0mr[0;38:2::169:169:169;48:2::0:0:0mk[0;38:2::169:169:169;48:2::0:0:0mg[0;38:2::169:169:169;48:2::0:0:0mr[0;38:2::169:169:169;48:2::0:0:0me[0;38:2::169:169:169;48:2::0:0:0my[0;38:2::169:169:169;48:2::0:0:0m [0;38:2::189:183:107;48:2::0:0:0md[0;38:2::189:183:107;48:2::0:0:0ma[0;38:2::189:183:107;48:2::0:0:0mr[0;38:2::189:183:107;48:2::0:0:0mk[0;38:2::189:183:107;48:2::0:0:0mk[0;38:2::189:183:107;48:2::0:0:0mh[0;38:2::189:183:107;48:2::0:0:0ma -#5[0;38:2::139:0:139;48:2::0:0:0md[0;38:2::139:0:139;48:2::0:0:0ma[0;38:2::139:0:139;48:2::0:0:0mr[0;38:2::139:0:139;48:2::0:0:0mk[0;38:2::139:0:139;48:2::0:0:0mm[0;38:2::139:0:139;48:2::0:0:0ma[0;38:2::139:0:139;48:2::0:0:0mg[0;38:2::139:0:139;48:2::0:0:0me[0;38:2::139:0:139;48:2::0:0:0mn[0;38:2::139:0:139;48:2::0:0:0mt[0;38:2::139:0:139;48:2::0:0:0ma[0;38:2::139:0:139;48:2::0:0:0m [0;38:2::85:107:47;48:2::0:0:0md[0;38:2::85:107:47;48:2::0:0:0ma[0;38:2::85:107:47;48:2::0:0:0mr[0;38:2::85:107:47;48:2::0:0:0mk[0;38:2::85:107:47;48:2::0:0:0mo[0;38:2::85:107:47;48:2::0:0:0ml[0;38:2::85:107:47;48:2::0:0:0mi[0;38:2::85:107:47;48:2::0:0:0mv[0;38:2::85:107:47;48:2::0:0:0me[0;38:2::85:107:47;48:2::0:0:0mg[0;38:2::85:107:47;48:2::0:0:0mr[0;38:2::85:107:47;48:2::0:0:0me[0;38:2::85:107:47;48:2::0:0:0me[0;38:2::85:107:47;48:2::0:0:0mn[0;38:2::85:107:47;48:2::0:0:0m [0;38:2::255:140:0;48:2::0:0:0md[0;38:2::255:140:0;48:2::0:0:0ma[0;38:2::255:140:0;48:2::0:0:0mr[0;38:2::255:140:0;48:2::0:0:0mk[0;38:2::255:140:0;48:2::0:0:0mo[0;38:2::255:140:0;48:2::0:0:0mr[0;38:2::255:140:0;48:2::0:0:0ma[0;38:2::255:140:0;48:2::0:0:0mn[0;38:2::255:140:0;48:2::0:0:0mg[0;38:2::255:140:0;48:2::0:0:0me[0;38:2::255:140:0;48:2::0:0:0m [0;38:2::153:50:204;48:2::0:0:0md[0;38:2::153:50:204;48:2::0:0:0ma[0;38:2::153:50:204;48:2::0:0:0mr[0;38:2::153:50:204;48:2::0:0:0mk[0;38:2::153:50:204;48:2::0:0:0mo[0;38:2::153:50:204;48:2::0:0:0mr[0;38:2::153:50:204;48:2::0:0:0mc[0;38:2::153:50:204;48:2::0:0:0mh[0;38:2::153:50:204;48:2::0:0:0mi[0;38:2::153:50:204;48:2::0:0:0md[0;38:2::153:50:204;48:2::0:0:0m [0;38:2::139:0:0;48:2::0:0:0md[0;38:2::139:0:0;48:2::0:0:0ma[0;38:2::139:0:0;48:2::0:0:0mr[0;38:2::139:0:0;48:2::0:0:0mk[0;38:2::139:0:0;48:2::0:0:0mr[0;38:2::139:0:0;48:2::0:0:0me[0;38:2::139:0:0;48:2::0:0:0md[0;38:2::139:0:0;48:2::0:0:0m [0;38:2::233:150:122;48:2::0:0:0md[0;38:2::233:150:122;48:2::0:0:0ma[0;38:2::233:150:122;48:2::0:0:0mr[0;38:2::233:150:122;48:2::0:0:0mk[0;38:2::233:150:122;48:2::0:0:0ms[0;38:2::233:150:122;48:2::0:0:0ma[0;38:2::233:150:122;48:2::0:0:0ml[0;38:2::233:150:122;48:2::0:0:0mm[0;38:2::233:150:122;48:2::0:0:0mo[0;38:2::233:150:122;48:2::0:0:0mn[0;38:2::233:150:122;48:2::0:0:0m [0;38:2::143:188:143;48:2::0:0:0md[0;38:2::143:188:143;48:2::0:0:0ma[0;38:2::143:188:143;48:2::0:0:0mr[0;38:2::143:188:143;48:2::0:0:0mk[0;38:2::143:188:143;48:2::0:0:0ms[0;38:2::143:188:143;48:2::0:0:0me[0;38:2::143:188:143;48:2::0:0:0ma[0;38:2::143:188:143;48:2::0:0:0mg[0;38:2::143:188:143;48:2::0:0:0mr[0;38:2::143:188:143;48:2::0:0:0me[0;38:2::143:188:143;48:2::0:0:0me[0;38:2::143:188:143;48:2::0:0:0mn -#5[0;38:2::72:61:139;48:2::0:0:0md[0;38:2::72:61:139;48:2::0:0:0ma[0;38:2::72:61:139;48:2::0:0:0mr[0;38:2::72:61:139;48:2::0:0:0mk[0;38:2::72:61:139;48:2::0:0:0ms[0;38:2::72:61:139;48:2::0:0:0ml[0;38:2::72:61:139;48:2::0:0:0ma[0;38:2::72:61:139;48:2::0:0:0mt[0;38:2::72:61:139;48:2::0:0:0me[0;38:2::72:61:139;48:2::0:0:0mb[0;38:2::72:61:139;48:2::0:0:0ml[0;38:2::72:61:139;48:2::0:0:0mu[0;38:2::72:61:139;48:2::0:0:0me[0;38:2::72:61:139;48:2::0:0:0m [0;38:2::47:79:79;48:2::0:0:0md[0;38:2::47:79:79;48:2::0:0:0ma[0;38:2::47:79:79;48:2::0:0:0mr[0;38:2::47:79:79;48:2::0:0:0mk[0;38:2::47:79:79;48:2::0:0:0ms[0;38:2::47:79:79;48:2::0:0:0ml[0;38:2::47:79:79;48:2::0:0:0ma[0;38:2::47:79:79;48:2::0:0:0mt[0;38:2::47:79:79;48:2::0:0:0me[0;38:2::47:79:79;48:2::0:0:0mg[0;38:2::47:79:79;48:2::0:0:0mr[0;38:2::47:79:79;48:2::0:0:0me[0;38:2::47:79:79;48:2::0:0:0my[0;38:2::47:79:79;48:2::0:0:0m [0;38:2::0:206:209;48:2::0:0:0md[0;38:2::0:206:209;48:2::0:0:0ma[0;38:2::0:206:209;48:2::0:0:0mr[0;38:2::0:206:209;48:2::0:0:0mk[0;38:2::0:206:209;48:2::0:0:0mt[0;38:2::0:206:209;48:2::0:0:0mu[0;38:2::0:206:209;48:2::0:0:0mr[0;38:2::0:206:209;48:2::0:0:0mq[0;38:2::0:206:209;48:2::0:0:0mu[0;38:2::0:206:209;48:2::0:0:0mo[0;38:2::0:206:209;48:2::0:0:0mi[0;38:2::0:206:209;48:2::0:0:0ms[0;38:2::0:206:209;48:2::0:0:0me[0;38:2::0:206:209;48:2::0:0:0m [0;38:2::148:0:211;48:2::0:0:0md[0;38:2::148:0:211;48:2::0:0:0ma[0;38:2::148:0:211;48:2::0:0:0mr[0;38:2::148:0:211;48:2::0:0:0mk[0;38:2::148:0:211;48:2::0:0:0mv[0;38:2::148:0:211;48:2::0:0:0mi[0;38:2::148:0:211;48:2::0:0:0mo[0;38:2::148:0:211;48:2::0:0:0ml[0;38:2::148:0:211;48:2::0:0:0me[0;38:2::148:0:211;48:2::0:0:0mt[0;38:2::148:0:211;48:2::0:0:0m [0;38:2::255:20:147;48:2::0:0:0md[0;38:2::255:20:147;48:2::0:0:0me[0;38:2::255:20:147;48:2::0:0:0me[0;38:2::255:20:147;48:2::0:0:0mp[0;38:2::255:20:147;48:2::0:0:0mp[0;38:2::255:20:147;48:2::0:0:0mi[0;38:2::255:20:147;48:2::0:0:0mn[0;38:2::255:20:147;48:2::0:0:0mk[0;38:2::255:20:147;48:2::0:0:0m [0;38:2::0:191:255;48:2::0:0:0md[0;38:2::0:191:255;48:2::0:0:0me[0;38:2::0:191:255;48:2::0:0:0me[0;38:2::0:191:255;48:2::0:0:0mp[0;38:2::0:191:255;48:2::0:0:0ms[0;38:2::0:191:255;48:2::0:0:0mk[0;38:2::0:191:255;48:2::0:0:0my[0;38:2::0:191:255;48:2::0:0:0mb[0;38:2::0:191:255;48:2::0:0:0ml[0;38:2::0:191:255;48:2::0:0:0mu[0;38:2::0:191:255;48:2::0:0:0me[0;38:2::0:191:255;48:2::0:0:0m [0;38:2::105:105:105;48:2::0:0:0md[0;38:2::105:105:105;48:2::0:0:0mi[0;38:2::105:105:105;48:2::0:0:0mm[0;38:2::105:105:105;48:2::0:0:0mg[0;38:2::105:105:105;48:2::0:0:0mr[0;38:2::105:105:105;48:2::0:0:0ma -#5[0;38:2::105:105:105;48:2::0:0:0md[0;38:2::105:105:105;48:2::0:0:0mi[0;38:2::105:105:105;48:2::0:0:0mm[0;38:2::105:105:105;48:2::0:0:0mg[0;38:2::105:105:105;48:2::0:0:0mr[0;38:2::105:105:105;48:2::0:0:0me[0;38:2::105:105:105;48:2::0:0:0my[0;38:2::105:105:105;48:2::0:0:0m [0;38:2::30:144:255;48:2::0:0:0md[0;38:2::30:144:255;48:2::0:0:0mo[0;38:2::30:144:255;48:2::0:0:0md[0;38:2::30:144:255;48:2::0:0:0mg[0;38:2::30:144:255;48:2::0:0:0me[0;38:2::30:144:255;48:2::0:0:0mr[0;38:2::30:144:255;48:2::0:0:0mb[0;38:2::30:144:255;48:2::0:0:0ml[0;38:2::30:144:255;48:2::0:0:0mu[0;38:2::30:144:255;48:2::0:0:0me[0;38:2::30:144:255;48:2::0:0:0m [0;38:2::178:34:34;48:2::0:0:0mf[0;38:2::178:34:34;48:2::0:0:0mi[0;38:2::178:34:34;48:2::0:0:0mr[0;38:2::178:34:34;48:2::0:0:0me[0;38:2::178:34:34;48:2::0:0:0mb[0;38:2::178:34:34;48:2::0:0:0mr[0;38:2::178:34:34;48:2::0:0:0mi[0;38:2::178:34:34;48:2::0:0:0mc[0;38:2::178:34:34;48:2::0:0:0mk[0;38:2::178:34:34;48:2::0:0:0m [0;38:2::255:250:240;48:2::0:0:0mf[0;38:2::255:250:240;48:2::0:0:0ml[0;38:2::255:250:240;48:2::0:0:0mo[0;38:2::255:250:240;48:2::0:0:0mr[0;38:2::255:250:240;48:2::0:0:0ma[0;38:2::255:250:240;48:2::0:0:0ml[0;38:2::255:250:240;48:2::0:0:0mw[0;38:2::255:250:240;48:2::0:0:0mh[0;38:2::255:250:240;48:2::0:0:0mi[0;38:2::255:250:240;48:2::0:0:0mt[0;38:2::255:250:240;48:2::0:0:0me[0;38:2::255:250:240;48:2::0:0:0m [0;38:2::34:139:34;48:2::0:0:0mf[0;38:2::34:139:34;48:2::0:0:0mo[0;38:2::34:139:34;48:2::0:0:0mr[0;38:2::34:139:34;48:2::0:0:0me[0;38:2::34:139:34;48:2::0:0:0ms[0;38:2::34:139:34;48:2::0:0:0mt[0;38:2::34:139:34;48:2::0:0:0mg[0;38:2::34:139:34;48:2::0:0:0mr[0;38:2::34:139:34;48:2::0:0:0me[0;38:2::34:139:34;48:2::0:0:0me[0;38:2::34:139:34;48:2::0:0:0mn[0;38:2::34:139:34;48:2::0:0:0m [0;38:2::255:0:255;48:2::0:0:0mf[0;38:2::255:0:255;48:2::0:0:0mu[0;38:2::255:0:255;48:2::0:0:0mc[0;38:2::255:0:255;48:2::0:0:0mh[0;38:2::255:0:255;48:2::0:0:0ms[0;38:2::255:0:255;48:2::0:0:0mi[0;38:2::255:0:255;48:2::0:0:0ma[0;38:2::255:0:255;48:2::0:0:0m [0;38:2::220:220:220;48:2::0:0:0mg[0;38:2::220:220:220;48:2::0:0:0ma[0;38:2::220:220:220;48:2::0:0:0mi[0;38:2::220:220:220;48:2::0:0:0mn[0;38:2::220:220:220;48:2::0:0:0ms[0;38:2::220:220:220;48:2::0:0:0mb[0;38:2::220:220:220;48:2::0:0:0mo[0;38:2::220:220:220;48:2::0:0:0mr[0;38:2::220:220:220;48:2::0:0:0mo[0;38:2::220:220:220;48:2::0:0:0m [0;38:2::248:248:255;48:2::0:0:0mg[0;38:2::248:248:255;48:2::0:0:0mh[0;38:2::248:248:255;48:2::0:0:0mo[0;38:2::248:248:255;48:2::0:0:0ms[0;38:2::248:248:255;48:2::0:0:0mt[0;38:2::248:248:255;48:2::0:0:0mw[0;38:2::248:248:255;48:2::0:0:0mh[0;38:2::248:248:255;48:2::0:0:0mi[0;38:2::248:248:255;48:2::0:0:0mt -#5[0;38:2::255:215:0;48:2::0:0:0mg[0;38:2::255:215:0;48:2::0:0:0mo[0;38:2::255:215:0;48:2::0:0:0ml[0;38:2::255:215:0;48:2::0:0:0md[0;38:2::255:215:0;48:2::0:0:0m [0;38:2::218:165:32;48:2::0:0:0mg[0;38:2::218:165:32;48:2::0:0:0mo[0;38:2::218:165:32;48:2::0:0:0ml[0;38:2::218:165:32;48:2::0:0:0md[0;38:2::218:165:32;48:2::0:0:0me[0;38:2::218:165:32;48:2::0:0:0mn[0;38:2::218:165:32;48:2::0:0:0mr[0;38:2::218:165:32;48:2::0:0:0mo[0;38:2::218:165:32;48:2::0:0:0md[0;38:2::218:165:32;48:2::0:0:0m [0;38:2::128:128:128;48:2::0:0:0mg[0;38:2::128:128:128;48:2::0:0:0mr[0;38:2::128:128:128;48:2::0:0:0ma[0;38:2::128:128:128;48:2::0:0:0my[0;38:2::128:128:128;48:2::0:0:0m [0;38:2::0:128:0;48:2::0:0:0mg[0;38:2::0:128:0;48:2::0:0:0mr[0;38:2::0:128:0;48:2::0:0:0me[0;38:2::0:128:0;48:2::0:0:0me[0;38:2::0:128:0;48:2::0:0:0mn[0;38:2::0:128:0;48:2::0:0:0m [0;38:2::173:255:47;48:2::0:0:0mg[0;38:2::173:255:47;48:2::0:0:0mr[0;38:2::173:255:47;48:2::0:0:0me[0;38:2::173:255:47;48:2::0:0:0me[0;38:2::173:255:47;48:2::0:0:0mn[0;38:2::173:255:47;48:2::0:0:0my[0;38:2::173:255:47;48:2::0:0:0me[0;38:2::173:255:47;48:2::0:0:0ml[0;38:2::173:255:47;48:2::0:0:0ml[0;38:2::173:255:47;48:2::0:0:0mo[0;38:2::173:255:47;48:2::0:0:0mw[0;38:2::173:255:47;48:2::0:0:0m [0;38:2::128:128:128;48:2::0:0:0mg[0;38:2::128:128:128;48:2::0:0:0mr[0;38:2::128:128:128;48:2::0:0:0me[0;38:2::128:128:128;48:2::0:0:0my[0;38:2::128:128:128;48:2::0:0:0m [0;38:2::240:255:240;48:2::0:0:0mh[0;38:2::240:255:240;48:2::0:0:0mo[0;38:2::240:255:240;48:2::0:0:0mn[0;38:2::240:255:240;48:2::0:0:0me[0;38:2::240:255:240;48:2::0:0:0my[0;38:2::240:255:240;48:2::0:0:0md[0;38:2::240:255:240;48:2::0:0:0me[0;38:2::240:255:240;48:2::0:0:0mw[0;38:2::240:255:240;48:2::0:0:0m [0;38:2::255:105:180;48:2::0:0:0mh[0;38:2::255:105:180;48:2::0:0:0mo[0;38:2::255:105:180;48:2::0:0:0mt[0;38:2::255:105:180;48:2::0:0:0mp[0;38:2::255:105:180;48:2::0:0:0mi[0;38:2::255:105:180;48:2::0:0:0mn[0;38:2::255:105:180;48:2::0:0:0mk[0;38:2::255:105:180;48:2::0:0:0m [0;38:2::205:92:92;48:2::0:0:0mi[0;38:2::205:92:92;48:2::0:0:0mn[0;38:2::205:92:92;48:2::0:0:0md[0;38:2::205:92:92;48:2::0:0:0mi[0;38:2::205:92:92;48:2::0:0:0ma[0;38:2::205:92:92;48:2::0:0:0mn[0;38:2::205:92:92;48:2::0:0:0mr[0;38:2::205:92:92;48:2::0:0:0me[0;38:2::205:92:92;48:2::0:0:0md[0;38:2::205:92:92;48:2::0:0:0m [0;38:2::75:0:130;48:2::0:0:0mi[0;38:2::75:0:130;48:2::0:0:0mn[0;38:2::75:0:130;48:2::0:0:0md[0;38:2::75:0:130;48:2::0:0:0mi[0;38:2::75:0:130;48:2::0:0:0mg[0;38:2::75:0:130;48:2::0:0:0mo[0;38:2::75:0:130;48:2::0:0:0m [0;38:2::255:255:240;48:2::0:0:0mi[0;38:2::255:255:240;48:2::0:0:0mv[0;38:2::255:255:240;48:2::0:0:0mo -#5[0;38:2::240:230:140;48:2::0:0:0mk[0;38:2::240:230:140;48:2::0:0:0mh[0;38:2::240:230:140;48:2::0:0:0ma[0;38:2::240:230:140;48:2::0:0:0mk[0;38:2::240:230:140;48:2::0:0:0mi[0;38:2::240:230:140;48:2::0:0:0m [0;38:2::230:230:250;48:2::0:0:0ml[0;38:2::230:230:250;48:2::0:0:0ma[0;38:2::230:230:250;48:2::0:0:0mv[0;38:2::230:230:250;48:2::0:0:0me[0;38:2::230:230:250;48:2::0:0:0mn[0;38:2::230:230:250;48:2::0:0:0md[0;38:2::230:230:250;48:2::0:0:0me[0;38:2::230:230:250;48:2::0:0:0mr[0;38:2::230:230:250;48:2::0:0:0m [0;38:2::255:240:245;48:2::0:0:0ml[0;38:2::255:240:245;48:2::0:0:0ma[0;38:2::255:240:245;48:2::0:0:0mv[0;38:2::255:240:245;48:2::0:0:0me[0;38:2::255:240:245;48:2::0:0:0mn[0;38:2::255:240:245;48:2::0:0:0md[0;38:2::255:240:245;48:2::0:0:0me[0;38:2::255:240:245;48:2::0:0:0mr[0;38:2::255:240:245;48:2::0:0:0mb[0;38:2::255:240:245;48:2::0:0:0ml[0;38:2::255:240:245;48:2::0:0:0mu[0;38:2::255:240:245;48:2::0:0:0ms[0;38:2::255:240:245;48:2::0:0:0mh[0;38:2::255:240:245;48:2::0:0:0m [0;38:2::124:252:0;48:2::0:0:0ml[0;38:2::124:252:0;48:2::0:0:0ma[0;38:2::124:252:0;48:2::0:0:0mw[0;38:2::124:252:0;48:2::0:0:0mn[0;38:2::124:252:0;48:2::0:0:0mg[0;38:2::124:252:0;48:2::0:0:0mr[0;38:2::124:252:0;48:2::0:0:0me[0;38:2::124:252:0;48:2::0:0:0me[0;38:2::124:252:0;48:2::0:0:0mn[0;38:2::124:252:0;48:2::0:0:0m [0;38:2::255:250:205;48:2::0:0:0ml[0;38:2::255:250:205;48:2::0:0:0me[0;38:2::255:250:205;48:2::0:0:0mm[0;38:2::255:250:205;48:2::0:0:0mo[0;38:2::255:250:205;48:2::0:0:0mn[0;38:2::255:250:205;48:2::0:0:0mc[0;38:2::255:250:205;48:2::0:0:0mh[0;38:2::255:250:205;48:2::0:0:0mi[0;38:2::255:250:205;48:2::0:0:0mf[0;38:2::255:250:205;48:2::0:0:0mf[0;38:2::255:250:205;48:2::0:0:0mo[0;38:2::255:250:205;48:2::0:0:0mn[0;38:2::255:250:205;48:2::0:0:0m [0;38:2::173:216:230;48:2::0:0:0ml[0;38:2::173:216:230;48:2::0:0:0mi[0;38:2::173:216:230;48:2::0:0:0mg[0;38:2::173:216:230;48:2::0:0:0mh[0;38:2::173:216:230;48:2::0:0:0mt[0;38:2::173:216:230;48:2::0:0:0mb[0;38:2::173:216:230;48:2::0:0:0ml[0;38:2::173:216:230;48:2::0:0:0mu[0;38:2::173:216:230;48:2::0:0:0me[0;38:2::173:216:230;48:2::0:0:0m [0;38:2::240:128:128;48:2::0:0:0ml[0;38:2::240:128:128;48:2::0:0:0mi[0;38:2::240:128:128;48:2::0:0:0mg[0;38:2::240:128:128;48:2::0:0:0mh[0;38:2::240:128:128;48:2::0:0:0mt[0;38:2::240:128:128;48:2::0:0:0mc[0;38:2::240:128:128;48:2::0:0:0mo[0;38:2::240:128:128;48:2::0:0:0mr[0;38:2::240:128:128;48:2::0:0:0ma[0;38:2::240:128:128;48:2::0:0:0ml[0;38:2::240:128:128;48:2::0:0:0m [0;38:2::224:255:255;48:2::0:0:0ml[0;38:2::224:255:255;48:2::0:0:0mi[0;38:2::224:255:255;48:2::0:0:0mg[0;38:2::224:255:255;48:2::0:0:0mh[0;38:2::224:255:255;48:2::0:0:0mt[0;38:2::224:255:255;48:2::0:0:0mc[0;38:2::224:255:255;48:2::0:0:0my -#5[0;38:2::250:250:210;48:2::0:0:0ml[0;38:2::250:250:210;48:2::0:0:0mi[0;38:2::250:250:210;48:2::0:0:0mg[0;38:2::250:250:210;48:2::0:0:0mh[0;38:2::250:250:210;48:2::0:0:0mt[0;38:2::250:250:210;48:2::0:0:0mg[0;38:2::250:250:210;48:2::0:0:0mo[0;38:2::250:250:210;48:2::0:0:0ml[0;38:2::250:250:210;48:2::0:0:0md[0;38:2::250:250:210;48:2::0:0:0me[0;38:2::250:250:210;48:2::0:0:0mn[0;38:2::250:250:210;48:2::0:0:0mr[0;38:2::250:250:210;48:2::0:0:0mo[0;38:2::250:250:210;48:2::0:0:0md[0;38:2::250:250:210;48:2::0:0:0my[0;38:2::250:250:210;48:2::0:0:0me[0;38:2::250:250:210;48:2::0:0:0ml[0;38:2::250:250:210;48:2::0:0:0ml[0;38:2::250:250:210;48:2::0:0:0mo[0;38:2::250:250:210;48:2::0:0:0mw[0;38:2::250:250:210;48:2::0:0:0m [0;38:2::211:211:211;48:2::0:0:0ml[0;38:2::211:211:211;48:2::0:0:0mi[0;38:2::211:211:211;48:2::0:0:0mg[0;38:2::211:211:211;48:2::0:0:0mh[0;38:2::211:211:211;48:2::0:0:0mt[0;38:2::211:211:211;48:2::0:0:0mg[0;38:2::211:211:211;48:2::0:0:0mr[0;38:2::211:211:211;48:2::0:0:0ma[0;38:2::211:211:211;48:2::0:0:0my[0;38:2::211:211:211;48:2::0:0:0m [0;38:2::144:238:144;48:2::0:0:0ml[0;38:2::144:238:144;48:2::0:0:0mi[0;38:2::144:238:144;48:2::0:0:0mg[0;38:2::144:238:144;48:2::0:0:0mh[0;38:2::144:238:144;48:2::0:0:0mt[0;38:2::144:238:144;48:2::0:0:0mg[0;38:2::144:238:144;48:2::0:0:0mr[0;38:2::144:238:144;48:2::0:0:0me[0;38:2::144:238:144;48:2::0:0:0me[0;38:2::144:238:144;48:2::0:0:0mn[0;38:2::144:238:144;48:2::0:0:0m [0;38:2::211:211:211;48:2::0:0:0ml[0;38:2::211:211:211;48:2::0:0:0mi[0;38:2::211:211:211;48:2::0:0:0mg[0;38:2::211:211:211;48:2::0:0:0mh[0;38:2::211:211:211;48:2::0:0:0mt[0;38:2::211:211:211;48:2::0:0:0mg[0;38:2::211:211:211;48:2::0:0:0mr[0;38:2::211:211:211;48:2::0:0:0me[0;38:2::211:211:211;48:2::0:0:0my[0;38:2::211:211:211;48:2::0:0:0m [0;38:2::255:182:193;48:2::0:0:0ml[0;38:2::255:182:193;48:2::0:0:0mi[0;38:2::255:182:193;48:2::0:0:0mg[0;38:2::255:182:193;48:2::0:0:0mh[0;38:2::255:182:193;48:2::0:0:0mt[0;38:2::255:182:193;48:2::0:0:0mp[0;38:2::255:182:193;48:2::0:0:0mi[0;38:2::255:182:193;48:2::0:0:0mn[0;38:2::255:182:193;48:2::0:0:0mk[0;38:2::255:182:193;48:2::0:0:0m [0;38:2::255:160:122;48:2::0:0:0ml[0;38:2::255:160:122;48:2::0:0:0mi[0;38:2::255:160:122;48:2::0:0:0mg[0;38:2::255:160:122;48:2::0:0:0mh[0;38:2::255:160:122;48:2::0:0:0mt[0;38:2::255:160:122;48:2::0:0:0ms[0;38:2::255:160:122;48:2::0:0:0ma[0;38:2::255:160:122;48:2::0:0:0ml[0;38:2::255:160:122;48:2::0:0:0mm[0;38:2::255:160:122;48:2::0:0:0mo[0;38:2::255:160:122;48:2::0:0:0mn[0;38:2::255:160:122;48:2::0:0:0m [0;38:2::32:178:170;48:2::0:0:0ml[0;38:2::32:178:170;48:2::0:0:0mi[0;38:2::32:178:170;48:2::0:0:0mg[0;38:2::32:178:170;48:2::0:0:0mh[0;38:2::32:178:170;48:2::0:0:0mt[0;38:2::32:178:170;48:2::0:0:0ms -#5[0;38:2::135:206:250;48:2::0:0:0ml[0;38:2::135:206:250;48:2::0:0:0mi[0;38:2::135:206:250;48:2::0:0:0mg[0;38:2::135:206:250;48:2::0:0:0mh[0;38:2::135:206:250;48:2::0:0:0mt[0;38:2::135:206:250;48:2::0:0:0ms[0;38:2::135:206:250;48:2::0:0:0mk[0;38:2::135:206:250;48:2::0:0:0my[0;38:2::135:206:250;48:2::0:0:0mb[0;38:2::135:206:250;48:2::0:0:0ml[0;38:2::135:206:250;48:2::0:0:0mu[0;38:2::135:206:250;48:2::0:0:0me[0;38:2::135:206:250;48:2::0:0:0m [0;38:2::119:136:153;48:2::0:0:0ml[0;38:2::119:136:153;48:2::0:0:0mi[0;38:2::119:136:153;48:2::0:0:0mg[0;38:2::119:136:153;48:2::0:0:0mh[0;38:2::119:136:153;48:2::0:0:0mt[0;38:2::119:136:153;48:2::0:0:0ms[0;38:2::119:136:153;48:2::0:0:0ml[0;38:2::119:136:153;48:2::0:0:0ma[0;38:2::119:136:153;48:2::0:0:0mt[0;38:2::119:136:153;48:2::0:0:0me[0;38:2::119:136:153;48:2::0:0:0mg[0;38:2::119:136:153;48:2::0:0:0mr[0;38:2::119:136:153;48:2::0:0:0me[0;38:2::119:136:153;48:2::0:0:0my[0;38:2::119:136:153;48:2::0:0:0m [0;38:2::176:196:222;48:2::0:0:0ml[0;38:2::176:196:222;48:2::0:0:0mi[0;38:2::176:196:222;48:2::0:0:0mg[0;38:2::176:196:222;48:2::0:0:0mh[0;38:2::176:196:222;48:2::0:0:0mt[0;38:2::176:196:222;48:2::0:0:0ms[0;38:2::176:196:222;48:2::0:0:0mt[0;38:2::176:196:222;48:2::0:0:0me[0;38:2::176:196:222;48:2::0:0:0me[0;38:2::176:196:222;48:2::0:0:0ml[0;38:2::176:196:222;48:2::0:0:0mb[0;38:2::176:196:222;48:2::0:0:0ml[0;38:2::176:196:222;48:2::0:0:0mu[0;38:2::176:196:222;48:2::0:0:0me[0;38:2::176:196:222;48:2::0:0:0m [0;38:2::255:255:224;48:2::0:0:0ml[0;38:2::255:255:224;48:2::0:0:0mi[0;38:2::255:255:224;48:2::0:0:0mg[0;38:2::255:255:224;48:2::0:0:0mh[0;38:2::255:255:224;48:2::0:0:0mt[0;38:2::255:255:224;48:2::0:0:0my[0;38:2::255:255:224;48:2::0:0:0me[0;38:2::255:255:224;48:2::0:0:0ml[0;38:2::255:255:224;48:2::0:0:0ml[0;38:2::255:255:224;48:2::0:0:0mo[0;38:2::255:255:224;48:2::0:0:0mw[0;38:2::255:255:224;48:2::0:0:0m [0;38:2::0:255:0;48:2::0:0:0ml[0;38:2::0:255:0;48:2::0:0:0mi[0;38:2::0:255:0;48:2::0:0:0mm[0;38:2::0:255:0;48:2::0:0:0me[0;38:2::0:255:0;48:2::0:0:0m [0;38:2::50:205:50;48:2::0:0:0ml[0;38:2::50:205:50;48:2::0:0:0mi[0;38:2::50:205:50;48:2::0:0:0mm[0;38:2::50:205:50;48:2::0:0:0me[0;38:2::50:205:50;48:2::0:0:0mg[0;38:2::50:205:50;48:2::0:0:0mr[0;38:2::50:205:50;48:2::0:0:0me[0;38:2::50:205:50;48:2::0:0:0me[0;38:2::50:205:50;48:2::0:0:0mn[0;38:2::50:205:50;48:2::0:0:0m [0;38:2::250:240:230;48:2::0:0:0ml[0;38:2::250:240:230;48:2::0:0:0mi[0;38:2::250:240:230;48:2::0:0:0mn[0;38:2::250:240:230;48:2::0:0:0me[0;38:2::250:240:230;48:2::0:0:0mn[0;38:2::250:240:230;48:2::0:0:0m [0;38:2::255:0:255;48:2::0:0:0mm[0;38:2::255:0:255;48:2::0:0:0ma[0;38:2::255:0:255;48:2::0:0:0mg[0;38:2::255:0:255;48:2::0:0:0me -#5[0;38:2::128:0:0;48:2::0:0:0mm[0;38:2::128:0:0;48:2::0:0:0ma[0;38:2::128:0:0;48:2::0:0:0mr[0;38:2::128:0:0;48:2::0:0:0mo[0;38:2::128:0:0;48:2::0:0:0mo[0;38:2::128:0:0;48:2::0:0:0mn[0;38:2::128:0:0;48:2::0:0:0m [0;38:2::102:205:170;48:2::0:0:0mm[0;38:2::102:205:170;48:2::0:0:0me[0;38:2::102:205:170;48:2::0:0:0md[0;38:2::102:205:170;48:2::0:0:0mi[0;38:2::102:205:170;48:2::0:0:0mu[0;38:2::102:205:170;48:2::0:0:0mm[0;38:2::102:205:170;48:2::0:0:0ma[0;38:2::102:205:170;48:2::0:0:0mq[0;38:2::102:205:170;48:2::0:0:0mu[0;38:2::102:205:170;48:2::0:0:0ma[0;38:2::102:205:170;48:2::0:0:0mm[0;38:2::102:205:170;48:2::0:0:0ma[0;38:2::102:205:170;48:2::0:0:0mr[0;38:2::102:205:170;48:2::0:0:0mi[0;38:2::102:205:170;48:2::0:0:0mn[0;38:2::102:205:170;48:2::0:0:0me[0;38:2::102:205:170;48:2::0:0:0m [0;38:2::0:0:205;48:2::0:0:0mm[0;38:2::0:0:205;48:2::0:0:0me[0;38:2::0:0:205;48:2::0:0:0md[0;38:2::0:0:205;48:2::0:0:0mi[0;38:2::0:0:205;48:2::0:0:0mu[0;38:2::0:0:205;48:2::0:0:0mm[0;38:2::0:0:205;48:2::0:0:0mb[0;38:2::0:0:205;48:2::0:0:0ml[0;38:2::0:0:205;48:2::0:0:0mu[0;38:2::0:0:205;48:2::0:0:0me[0;38:2::0:0:205;48:2::0:0:0m [0;38:2::186:85:211;48:2::0:0:0mm[0;38:2::186:85:211;48:2::0:0:0me[0;38:2::186:85:211;48:2::0:0:0md[0;38:2::186:85:211;48:2::0:0:0mi[0;38:2::186:85:211;48:2::0:0:0mu[0;38:2::186:85:211;48:2::0:0:0mm[0;38:2::186:85:211;48:2::0:0:0mo[0;38:2::186:85:211;48:2::0:0:0mr[0;38:2::186:85:211;48:2::0:0:0mc[0;38:2::186:85:211;48:2::0:0:0mh[0;38:2::186:85:211;48:2::0:0:0mi[0;38:2::186:85:211;48:2::0:0:0md[0;38:2::186:85:211;48:2::0:0:0m [0;38:2::147:112:219;48:2::0:0:0mm[0;38:2::147:112:219;48:2::0:0:0me[0;38:2::147:112:219;48:2::0:0:0md[0;38:2::147:112:219;48:2::0:0:0mi[0;38:2::147:112:219;48:2::0:0:0mu[0;38:2::147:112:219;48:2::0:0:0mm[0;38:2::147:112:219;48:2::0:0:0mp[0;38:2::147:112:219;48:2::0:0:0mu[0;38:2::147:112:219;48:2::0:0:0mr[0;38:2::147:112:219;48:2::0:0:0mp[0;38:2::147:112:219;48:2::0:0:0ml[0;38:2::147:112:219;48:2::0:0:0me[0;38:2::147:112:219;48:2::0:0:0m [0;38:2::60:179:113;48:2::0:0:0mm[0;38:2::60:179:113;48:2::0:0:0me[0;38:2::60:179:113;48:2::0:0:0md[0;38:2::60:179:113;48:2::0:0:0mi[0;38:2::60:179:113;48:2::0:0:0mu[0;38:2::60:179:113;48:2::0:0:0mm[0;38:2::60:179:113;48:2::0:0:0ms[0;38:2::60:179:113;48:2::0:0:0me[0;38:2::60:179:113;48:2::0:0:0ma[0;38:2::60:179:113;48:2::0:0:0mg[0;38:2::60:179:113;48:2::0:0:0mr[0;38:2::60:179:113;48:2::0:0:0me[0;38:2::60:179:113;48:2::0:0:0me[0;38:2::60:179:113;48:2::0:0:0mn[0;38:2::60:179:113;48:2::0:0:0m [0;38:2::123:104:238;48:2::0:0:0mm[0;38:2::123:104:238;48:2::0:0:0me[0;38:2::123:104:238;48:2::0:0:0md[0;38:2::123:104:238;48:2::0:0:0mi -#5[0;38:2::0:250:154;48:2::0:0:0mm[0;38:2::0:250:154;48:2::0:0:0me[0;38:2::0:250:154;48:2::0:0:0md[0;38:2::0:250:154;48:2::0:0:0mi[0;38:2::0:250:154;48:2::0:0:0mu[0;38:2::0:250:154;48:2::0:0:0mm[0;38:2::0:250:154;48:2::0:0:0ms[0;38:2::0:250:154;48:2::0:0:0mp[0;38:2::0:250:154;48:2::0:0:0mr[0;38:2::0:250:154;48:2::0:0:0mi[0;38:2::0:250:154;48:2::0:0:0mn[0;38:2::0:250:154;48:2::0:0:0mg[0;38:2::0:250:154;48:2::0:0:0mg[0;38:2::0:250:154;48:2::0:0:0mr[0;38:2::0:250:154;48:2::0:0:0me[0;38:2::0:250:154;48:2::0:0:0me[0;38:2::0:250:154;48:2::0:0:0mn[0;38:2::0:250:154;48:2::0:0:0m [0;38:2::72:209:204;48:2::0:0:0mm[0;38:2::72:209:204;48:2::0:0:0me[0;38:2::72:209:204;48:2::0:0:0md[0;38:2::72:209:204;48:2::0:0:0mi[0;38:2::72:209:204;48:2::0:0:0mu[0;38:2::72:209:204;48:2::0:0:0mm[0;38:2::72:209:204;48:2::0:0:0mt[0;38:2::72:209:204;48:2::0:0:0mu[0;38:2::72:209:204;48:2::0:0:0mr[0;38:2::72:209:204;48:2::0:0:0mq[0;38:2::72:209:204;48:2::0:0:0mu[0;38:2::72:209:204;48:2::0:0:0mo[0;38:2::72:209:204;48:2::0:0:0mi[0;38:2::72:209:204;48:2::0:0:0ms[0;38:2::72:209:204;48:2::0:0:0me[0;38:2::72:209:204;48:2::0:0:0m [0;38:2::199:21:133;48:2::0:0:0mm[0;38:2::199:21:133;48:2::0:0:0me[0;38:2::199:21:133;48:2::0:0:0md[0;38:2::199:21:133;48:2::0:0:0mi[0;38:2::199:21:133;48:2::0:0:0mu[0;38:2::199:21:133;48:2::0:0:0mm[0;38:2::199:21:133;48:2::0:0:0mv[0;38:2::199:21:133;48:2::0:0:0mi[0;38:2::199:21:133;48:2::0:0:0mo[0;38:2::199:21:133;48:2::0:0:0ml[0;38:2::199:21:133;48:2::0:0:0me[0;38:2::199:21:133;48:2::0:0:0mt[0;38:2::199:21:133;48:2::0:0:0mr[0;38:2::199:21:133;48:2::0:0:0me[0;38:2::199:21:133;48:2::0:0:0md[0;38:2::199:21:133;48:2::0:0:0m [0;38:2::25:25:112;48:2::0:0:0mm[0;38:2::25:25:112;48:2::0:0:0mi[0;38:2::25:25:112;48:2::0:0:0md[0;38:2::25:25:112;48:2::0:0:0mn[0;38:2::25:25:112;48:2::0:0:0mi[0;38:2::25:25:112;48:2::0:0:0mg[0;38:2::25:25:112;48:2::0:0:0mh[0;38:2::25:25:112;48:2::0:0:0mt[0;38:2::25:25:112;48:2::0:0:0mb[0;38:2::25:25:112;48:2::0:0:0ml[0;38:2::25:25:112;48:2::0:0:0mu[0;38:2::25:25:112;48:2::0:0:0me[0;38:2::25:25:112;48:2::0:0:0m [0;38:2::245:255:250;48:2::0:0:0mm[0;38:2::245:255:250;48:2::0:0:0mi[0;38:2::245:255:250;48:2::0:0:0mn[0;38:2::245:255:250;48:2::0:0:0mt[0;38:2::245:255:250;48:2::0:0:0mc[0;38:2::245:255:250;48:2::0:0:0mr[0;38:2::245:255:250;48:2::0:0:0me[0;38:2::245:255:250;48:2::0:0:0ma[0;38:2::245:255:250;48:2::0:0:0mm[0;38:2::245:255:250;48:2::0:0:0m [0;38:2::255:228:225;48:2::0:0:0mm[0;38:2::255:228:225;48:2::0:0:0mi[0;38:2::255:228:225;48:2::0:0:0ms[0;38:2::255:228:225;48:2::0:0:0mt[0;38:2::255:228:225;48:2::0:0:0my[0;38:2::255:228:225;48:2::0:0:0mr[0;38:2::255:228:225;48:2::0:0:0mo -#5[0;38:2::255:228:181;48:2::0:0:0mm[0;38:2::255:228:181;48:2::0:0:0mo[0;38:2::255:228:181;48:2::0:0:0mc[0;38:2::255:228:181;48:2::0:0:0mc[0;38:2::255:228:181;48:2::0:0:0ma[0;38:2::255:228:181;48:2::0:0:0ms[0;38:2::255:228:181;48:2::0:0:0mi[0;38:2::255:228:181;48:2::0:0:0mn[0;38:2::255:228:181;48:2::0:0:0m [0;38:2::255:222:173;48:2::0:0:0mn[0;38:2::255:222:173;48:2::0:0:0ma[0;38:2::255:222:173;48:2::0:0:0mv[0;38:2::255:222:173;48:2::0:0:0ma[0;38:2::255:222:173;48:2::0:0:0mj[0;38:2::255:222:173;48:2::0:0:0mo[0;38:2::255:222:173;48:2::0:0:0mw[0;38:2::255:222:173;48:2::0:0:0mh[0;38:2::255:222:173;48:2::0:0:0mi[0;38:2::255:222:173;48:2::0:0:0mt[0;38:2::255:222:173;48:2::0:0:0me[0;38:2::255:222:173;48:2::0:0:0m [0;38:2::0:0:128;48:2::0:0:0mn[0;38:2::0:0:128;48:2::0:0:0ma[0;38:2::0:0:128;48:2::0:0:0mv[0;38:2::0:0:128;48:2::0:0:0my[0;38:2::0:0:128;48:2::0:0:0m [0;38:2::253:245:230;48:2::0:0:0mo[0;38:2::253:245:230;48:2::0:0:0ml[0;38:2::253:245:230;48:2::0:0:0md[0;38:2::253:245:230;48:2::0:0:0ml[0;38:2::253:245:230;48:2::0:0:0ma[0;38:2::253:245:230;48:2::0:0:0mc[0;38:2::253:245:230;48:2::0:0:0me[0;38:2::253:245:230;48:2::0:0:0m [0;38:2::128:128:0;48:2::0:0:0mo[0;38:2::128:128:0;48:2::0:0:0ml[0;38:2::128:128:0;48:2::0:0:0mi[0;38:2::128:128:0;48:2::0:0:0mv[0;38:2::128:128:0;48:2::0:0:0me[0;38:2::128:128:0;48:2::0:0:0m [0;38:2::107:142:35;48:2::0:0:0mo[0;38:2::107:142:35;48:2::0:0:0ml[0;38:2::107:142:35;48:2::0:0:0mi[0;38:2::107:142:35;48:2::0:0:0mv[0;38:2::107:142:35;48:2::0:0:0me[0;38:2::107:142:35;48:2::0:0:0md[0;38:2::107:142:35;48:2::0:0:0mr[0;38:2::107:142:35;48:2::0:0:0ma[0;38:2::107:142:35;48:2::0:0:0mb[0;38:2::107:142:35;48:2::0:0:0m [0;38:2::255:165:0;48:2::0:0:0mo[0;38:2::255:165:0;48:2::0:0:0mr[0;38:2::255:165:0;48:2::0:0:0ma[0;38:2::255:165:0;48:2::0:0:0mn[0;38:2::255:165:0;48:2::0:0:0mg[0;38:2::255:165:0;48:2::0:0:0me[0;38:2::255:165:0;48:2::0:0:0m [0;38:2::255:69:0;48:2::0:0:0mo[0;38:2::255:69:0;48:2::0:0:0mr[0;38:2::255:69:0;48:2::0:0:0ma[0;38:2::255:69:0;48:2::0:0:0mn[0;38:2::255:69:0;48:2::0:0:0mg[0;38:2::255:69:0;48:2::0:0:0me[0;38:2::255:69:0;48:2::0:0:0mr[0;38:2::255:69:0;48:2::0:0:0me[0;38:2::255:69:0;48:2::0:0:0md[0;38:2::255:69:0;48:2::0:0:0m [0;38:2::218:112:214;48:2::0:0:0mo[0;38:2::218:112:214;48:2::0:0:0mr[0;38:2::218:112:214;48:2::0:0:0mc[0;38:2::218:112:214;48:2::0:0:0mh[0;38:2::218:112:214;48:2::0:0:0mi[0;38:2::218:112:214;48:2::0:0:0md[0;38:2::218:112:214;48:2::0:0:0m [0;38:2::238:232:170;48:2::0:0:0mp[0;38:2::238:232:170;48:2::0:0:0ma[0;38:2::238:232:170;48:2::0:0:0ml[0;38:2::238:232:170;48:2::0:0:0me[0;38:2::238:232:170;48:2::0:0:0mg[0;38:2::238:232:170;48:2::0:0:0mo -#5[0;38:2::152:251:152;48:2::0:0:0mp[0;38:2::152:251:152;48:2::0:0:0ma[0;38:2::152:251:152;48:2::0:0:0ml[0;38:2::152:251:152;48:2::0:0:0me[0;38:2::152:251:152;48:2::0:0:0mg[0;38:2::152:251:152;48:2::0:0:0mr[0;38:2::152:251:152;48:2::0:0:0me[0;38:2::152:251:152;48:2::0:0:0me[0;38:2::152:251:152;48:2::0:0:0mn[0;38:2::152:251:152;48:2::0:0:0m [0;38:2::175:238:238;48:2::0:0:0mp[0;38:2::175:238:238;48:2::0:0:0ma[0;38:2::175:238:238;48:2::0:0:0ml[0;38:2::175:238:238;48:2::0:0:0me[0;38:2::175:238:238;48:2::0:0:0mt[0;38:2::175:238:238;48:2::0:0:0mu[0;38:2::175:238:238;48:2::0:0:0mr[0;38:2::175:238:238;48:2::0:0:0mq[0;38:2::175:238:238;48:2::0:0:0mu[0;38:2::175:238:238;48:2::0:0:0mo[0;38:2::175:238:238;48:2::0:0:0mi[0;38:2::175:238:238;48:2::0:0:0ms[0;38:2::175:238:238;48:2::0:0:0me[0;38:2::175:238:238;48:2::0:0:0m [0;38:2::219:112:147;48:2::0:0:0mp[0;38:2::219:112:147;48:2::0:0:0ma[0;38:2::219:112:147;48:2::0:0:0ml[0;38:2::219:112:147;48:2::0:0:0me[0;38:2::219:112:147;48:2::0:0:0mv[0;38:2::219:112:147;48:2::0:0:0mi[0;38:2::219:112:147;48:2::0:0:0mo[0;38:2::219:112:147;48:2::0:0:0ml[0;38:2::219:112:147;48:2::0:0:0me[0;38:2::219:112:147;48:2::0:0:0mt[0;38:2::219:112:147;48:2::0:0:0mr[0;38:2::219:112:147;48:2::0:0:0me[0;38:2::219:112:147;48:2::0:0:0md[0;38:2::219:112:147;48:2::0:0:0m [0;38:2::255:239:213;48:2::0:0:0mp[0;38:2::255:239:213;48:2::0:0:0ma[0;38:2::255:239:213;48:2::0:0:0mp[0;38:2::255:239:213;48:2::0:0:0ma[0;38:2::255:239:213;48:2::0:0:0my[0;38:2::255:239:213;48:2::0:0:0ma[0;38:2::255:239:213;48:2::0:0:0mw[0;38:2::255:239:213;48:2::0:0:0mh[0;38:2::255:239:213;48:2::0:0:0mi[0;38:2::255:239:213;48:2::0:0:0mp[0;38:2::255:239:213;48:2::0:0:0m [0;38:2::255:218:185;48:2::0:0:0mp[0;38:2::255:218:185;48:2::0:0:0me[0;38:2::255:218:185;48:2::0:0:0ma[0;38:2::255:218:185;48:2::0:0:0mc[0;38:2::255:218:185;48:2::0:0:0mh[0;38:2::255:218:185;48:2::0:0:0mp[0;38:2::255:218:185;48:2::0:0:0mu[0;38:2::255:218:185;48:2::0:0:0mf[0;38:2::255:218:185;48:2::0:0:0mf[0;38:2::255:218:185;48:2::0:0:0m [0;38:2::205:133:63;48:2::0:0:0mp[0;38:2::205:133:63;48:2::0:0:0me[0;38:2::205:133:63;48:2::0:0:0mr[0;38:2::205:133:63;48:2::0:0:0mu[0;38:2::205:133:63;48:2::0:0:0m [0;38:2::255:192:203;48:2::0:0:0mp[0;38:2::255:192:203;48:2::0:0:0mi[0;38:2::255:192:203;48:2::0:0:0mn[0;38:2::255:192:203;48:2::0:0:0mk[0;38:2::255:192:203;48:2::0:0:0m [0;38:2::221:160:221;48:2::0:0:0mp[0;38:2::221:160:221;48:2::0:0:0ml[0;38:2::221:160:221;48:2::0:0:0mu[0;38:2::221:160:221;48:2::0:0:0mm[0;38:2::221:160:221;48:2::0:0:0m [0;38:2::176:224:230;48:2::0:0:0mp[0;38:2::176:224:230;48:2::0:0:0mo[0;38:2::176:224:230;48:2::0:0:0mw[0;38:2::176:224:230;48:2::0:0:0md[0;38:2::176:224:230;48:2::0:0:0me[0;38:2::176:224:230;48:2::0:0:0mr -#5[0;38:2::128:0:128;48:2::0:0:0mp[0;38:2::128:0:128;48:2::0:0:0mu[0;38:2::128:0:128;48:2::0:0:0mr[0;38:2::128:0:128;48:2::0:0:0mp[0;38:2::128:0:128;48:2::0:0:0ml[0;38:2::128:0:128;48:2::0:0:0me[0;38:2::128:0:128;48:2::0:0:0m [0;38:2::255:0:0;48:2::0:0:0mr[0;38:2::255:0:0;48:2::0:0:0me[0;38:2::255:0:0;48:2::0:0:0md[0;38:2::255:0:0;48:2::0:0:0m [0;38:2::188:143:143;48:2::0:0:0mr[0;38:2::188:143:143;48:2::0:0:0mo[0;38:2::188:143:143;48:2::0:0:0ms[0;38:2::188:143:143;48:2::0:0:0my[0;38:2::188:143:143;48:2::0:0:0mb[0;38:2::188:143:143;48:2::0:0:0mr[0;38:2::188:143:143;48:2::0:0:0mo[0;38:2::188:143:143;48:2::0:0:0mw[0;38:2::188:143:143;48:2::0:0:0mn[0;38:2::188:143:143;48:2::0:0:0m [0;38:2::65:105:225;48:2::0:0:0mr[0;38:2::65:105:225;48:2::0:0:0mo[0;38:2::65:105:225;48:2::0:0:0my[0;38:2::65:105:225;48:2::0:0:0ma[0;38:2::65:105:225;48:2::0:0:0ml[0;38:2::65:105:225;48:2::0:0:0mb[0;38:2::65:105:225;48:2::0:0:0ml[0;38:2::65:105:225;48:2::0:0:0mu[0;38:2::65:105:225;48:2::0:0:0me[0;38:2::65:105:225;48:2::0:0:0m [0;38:2::139:69:19;48:2::0:0:0ms[0;38:2::139:69:19;48:2::0:0:0ma[0;38:2::139:69:19;48:2::0:0:0md[0;38:2::139:69:19;48:2::0:0:0md[0;38:2::139:69:19;48:2::0:0:0ml[0;38:2::139:69:19;48:2::0:0:0me[0;38:2::139:69:19;48:2::0:0:0mb[0;38:2::139:69:19;48:2::0:0:0mr[0;38:2::139:69:19;48:2::0:0:0mo[0;38:2::139:69:19;48:2::0:0:0mw[0;38:2::139:69:19;48:2::0:0:0mn[0;38:2::139:69:19;48:2::0:0:0m [0;38:2::250:128:114;48:2::0:0:0ms[0;38:2::250:128:114;48:2::0:0:0ma[0;38:2::250:128:114;48:2::0:0:0ml[0;38:2::250:128:114;48:2::0:0:0mm[0;38:2::250:128:114;48:2::0:0:0mo[0;38:2::250:128:114;48:2::0:0:0mn[0;38:2::250:128:114;48:2::0:0:0m [0;38:2::244:164:96;48:2::0:0:0ms[0;38:2::244:164:96;48:2::0:0:0ma[0;38:2::244:164:96;48:2::0:0:0mn[0;38:2::244:164:96;48:2::0:0:0md[0;38:2::244:164:96;48:2::0:0:0my[0;38:2::244:164:96;48:2::0:0:0mb[0;38:2::244:164:96;48:2::0:0:0mr[0;38:2::244:164:96;48:2::0:0:0mo[0;38:2::244:164:96;48:2::0:0:0mw[0;38:2::244:164:96;48:2::0:0:0mn[0;38:2::244:164:96;48:2::0:0:0m [0;38:2::46:139:87;48:2::0:0:0ms[0;38:2::46:139:87;48:2::0:0:0me[0;38:2::46:139:87;48:2::0:0:0ma[0;38:2::46:139:87;48:2::0:0:0mg[0;38:2::46:139:87;48:2::0:0:0mr[0;38:2::46:139:87;48:2::0:0:0me[0;38:2::46:139:87;48:2::0:0:0me[0;38:2::46:139:87;48:2::0:0:0mn[0;38:2::46:139:87;48:2::0:0:0m [0;38:2::255:245:238;48:2::0:0:0ms[0;38:2::255:245:238;48:2::0:0:0me[0;38:2::255:245:238;48:2::0:0:0ma[0;38:2::255:245:238;48:2::0:0:0ms[0;38:2::255:245:238;48:2::0:0:0mh[0;38:2::255:245:238;48:2::0:0:0me[0;38:2::255:245:238;48:2::0:0:0ml[0;38:2::255:245:238;48:2::0:0:0ml[0;38:2::255:245:238;48:2::0:0:0m [0;38:2::160:82:45;48:2::0:0:0ms -#5[0;38:2::192:192:192;48:2::0:0:0ms[0;38:2::192:192:192;48:2::0:0:0mi[0;38:2::192:192:192;48:2::0:0:0ml[0;38:2::192:192:192;48:2::0:0:0mv[0;38:2::192:192:192;48:2::0:0:0me[0;38:2::192:192:192;48:2::0:0:0mr[0;38:2::192:192:192;48:2::0:0:0m [0;38:2::135:206:235;48:2::0:0:0ms[0;38:2::135:206:235;48:2::0:0:0mk[0;38:2::135:206:235;48:2::0:0:0my[0;38:2::135:206:235;48:2::0:0:0mb[0;38:2::135:206:235;48:2::0:0:0ml[0;38:2::135:206:235;48:2::0:0:0mu[0;38:2::135:206:235;48:2::0:0:0me[0;38:2::135:206:235;48:2::0:0:0m [0;38:2::106:90:205;48:2::0:0:0ms[0;38:2::106:90:205;48:2::0:0:0ml[0;38:2::106:90:205;48:2::0:0:0ma[0;38:2::106:90:205;48:2::0:0:0mt[0;38:2::106:90:205;48:2::0:0:0me[0;38:2::106:90:205;48:2::0:0:0mb[0;38:2::106:90:205;48:2::0:0:0ml[0;38:2::106:90:205;48:2::0:0:0mu[0;38:2::106:90:205;48:2::0:0:0me[0;38:2::106:90:205;48:2::0:0:0m [0;38:2::112:128:144;48:2::0:0:0ms[0;38:2::112:128:144;48:2::0:0:0ml[0;38:2::112:128:144;48:2::0:0:0ma[0;38:2::112:128:144;48:2::0:0:0mt[0;38:2::112:128:144;48:2::0:0:0me[0;38:2::112:128:144;48:2::0:0:0mg[0;38:2::112:128:144;48:2::0:0:0mr[0;38:2::112:128:144;48:2::0:0:0me[0;38:2::112:128:144;48:2::0:0:0my[0;38:2::112:128:144;48:2::0:0:0m [0;38:2::255:250:250;48:2::0:0:0ms[0;38:2::255:250:250;48:2::0:0:0mn[0;38:2::255:250:250;48:2::0:0:0mo[0;38:2::255:250:250;48:2::0:0:0mw[0;38:2::255:250:250;48:2::0:0:0m [0;38:2::0:255:127;48:2::0:0:0ms[0;38:2::0:255:127;48:2::0:0:0mp[0;38:2::0:255:127;48:2::0:0:0mr[0;38:2::0:255:127;48:2::0:0:0mi[0;38:2::0:255:127;48:2::0:0:0mn[0;38:2::0:255:127;48:2::0:0:0mg[0;38:2::0:255:127;48:2::0:0:0mg[0;38:2::0:255:127;48:2::0:0:0mr[0;38:2::0:255:127;48:2::0:0:0me[0;38:2::0:255:127;48:2::0:0:0me[0;38:2::0:255:127;48:2::0:0:0mn[0;38:2::0:255:127;48:2::0:0:0m [0;38:2::70:130:180;48:2::0:0:0ms[0;38:2::70:130:180;48:2::0:0:0mt[0;38:2::70:130:180;48:2::0:0:0me[0;38:2::70:130:180;48:2::0:0:0me[0;38:2::70:130:180;48:2::0:0:0ml[0;38:2::70:130:180;48:2::0:0:0mb[0;38:2::70:130:180;48:2::0:0:0ml[0;38:2::70:130:180;48:2::0:0:0mu[0;38:2::70:130:180;48:2::0:0:0me[0;38:2::70:130:180;48:2::0:0:0m [0;38:2::210:180:140;48:2::0:0:0mt[0;38:2::210:180:140;48:2::0:0:0ma[0;38:2::210:180:140;48:2::0:0:0mn[0;38:2::210:180:140;48:2::0:0:0m [0;38:2::0:128:128;48:2::0:0:0mt[0;38:2::0:128:128;48:2::0:0:0me[0;38:2::0:128:128;48:2::0:0:0ma[0;38:2::0:128:128;48:2::0:0:0ml[0;38:2::0:128:128;48:2::0:0:0m [0;38:2::216:191:216;48:2::0:0:0mt[0;38:2::216:191:216;48:2::0:0:0mh[0;38:2::216:191:216;48:2::0:0:0mi[0;38:2::216:191:216;48:2::0:0:0ms[0;38:2::216:191:216;48:2::0:0:0mt[0;38:2::216:191:216;48:2::0:0:0ml[0;38:2::216:191:216;48:2::0:0:0me[0;38:2::216:191:216;48:2::0:0:0m [0;38:2::255:99:71;48:2::0:0:0mt -#5[0;38:2::64:224:208;48:2::0:0:0mt[0;38:2::64:224:208;48:2::0:0:0mu[0;38:2::64:224:208;48:2::0:0:0mr[0;38:2::64:224:208;48:2::0:0:0mq[0;38:2::64:224:208;48:2::0:0:0mu[0;38:2::64:224:208;48:2::0:0:0mo[0;38:2::64:224:208;48:2::0:0:0mi[0;38:2::64:224:208;48:2::0:0:0ms[0;38:2::64:224:208;48:2::0:0:0me[0;38:2::64:224:208;48:2::0:0:0m [0;38:2::238:130:238;48:2::0:0:0mv[0;38:2::238:130:238;48:2::0:0:0mi[0;38:2::238:130:238;48:2::0:0:0mo[0;38:2::238:130:238;48:2::0:0:0ml[0;38:2::238:130:238;48:2::0:0:0me[0;38:2::238:130:238;48:2::0:0:0mt[0;38:2::238:130:238;48:2::0:0:0m [0;38:2::245:222:179;48:2::0:0:0mw[0;38:2::245:222:179;48:2::0:0:0mh[0;38:2::245:222:179;48:2::0:0:0me[0;38:2::245:222:179;48:2::0:0:0ma[0;38:2::245:222:179;48:2::0:0:0mt[0;38:2::245:222:179;48:2::0:0:0m [0;38:2::255:255:255;48:2::0:0:0mw[0;38:2::255:255:255;48:2::0:0:0mh[0;38:2::255:255:255;48:2::0:0:0mi[0;38:2::255:255:255;48:2::0:0:0mt[0;38:2::255:255:255;48:2::0:0:0me[0;38:2::255:255:255;48:2::0:0:0m [0;38:2::245:245:245;48:2::0:0:0mw[0;38:2::245:245:245;48:2::0:0:0mh[0;38:2::245:245:245;48:2::0:0:0mi[0;38:2::245:245:245;48:2::0:0:0mt[0;38:2::245:245:245;48:2::0:0:0me[0;38:2::245:245:245;48:2::0:0:0ms[0;38:2::245:245:245;48:2::0:0:0mm[0;38:2::245:245:245;48:2::0:0:0mo[0;38:2::245:245:245;48:2::0:0:0mk[0;38:2::245:245:245;48:2::0:0:0me[0;38:2::245:245:245;48:2::0:0:0m [0;38:2::255:255:0;48:2::0:0:0my[0;38:2::255:255:0;48:2::0:0:0me[0;38:2::255:255:0;48:2::0:0:0ml[0;38:2::255:255:0;48:2::0:0:0ml[0;38:2::255:255:0;48:2::0:0:0mo[0;38:2::255:255:0;48:2::0:0:0mw[0;38:2::255:255:0;48:2::0:0:0m [0;38:2::154:205:50;48:2::0:0:0my[0;38:2::154:205:50;48:2::0:0:0me[0;38:2::154:205:50;48:2::0:0:0ml[0;38:2::154:205:50;48:2::0:0:0ml[0;38:2::154:205:50;48:2::0:0:0mo[0;38:2::154:205:50;48:2::0:0:0mw[0;38:2::154:205:50;48:2::0:0:0mg[0;38:2::154:205:50;48:2::0:0:0mr[0;38:2::154:205:50;48:2::0:0:0me[0;38:2::154:205:50;48:2::0:0:0me[0;38:2::154:205:50;48:2::0:0:0mn[0;38:2::154:205:50;48:2::0:0:0m  -#5[0;1;38:2::128:128:120;48:2::0:0:0my[0;1;38:2::128:128:120;48:2::0:0:0me[0;1;38:2::128:128:120;48:2::0:0:0ms[0;1;38:2::128:128:120;48:2::0:0:0m [0;1;38:2::128:128:120;48:2::0:0:0mb[0;1;38:2::128:128:120;48:2::0:0:0mo[0;1;38:2::128:128:120;48:2::0:0:0ml[0;1;38:2::128:128:120;48:2::0:0:0md[0;1;38:2::128:128:120;48:2::0:0:0m [0;1;38:2::128:128:120;48:2::0:0:0m([0;1;38:2::128:128:120;48:2::0:0:0m#[0;1;38:2::128:128:120;48:2::0:0:0m1[0;1;38:2::128:128:120;48:2::0:0:0m8[0;1;38:2::128:128:120;48:2::0:0:0m0[0;1;38:2::128:128:120;48:2::0:0:0m8[0;1;38:2::128:128:120;48:2::0:0:0m0[0;1;38:2::128:128:120;48:2::0:0:0m8[0;1;38:2::128:128:120;48:2::0:0:0m0[0;1;38:2::128:128:120;48:2::0:0:0m) -#5[0;4;38:2::128:128:128;48:2::0:0:0my[0;4;38:2::128:128:128;48:2::0:0:0me[0;4;38:2::128:128:128;48:2::0:0:0ms[0;4;38:2::128:128:128;48:2::0:0:0m [0;4;38:2::128:128:128;48:2::0:0:0mu[0;4;38:2::128:128:128;48:2::0:0:0mn[0;4;38:2::128:128:128;48:2::0:0:0md[0;4;38:2::128:128:128;48:2::0:0:0me[0;4;38:2::128:128:128;48:2::0:0:0mr[0;4;38:2::128:128:128;48:2::0:0:0ml[0;4;38:2::128:128:128;48:2::0:0:0mi[0;4;38:2::128:128:128;48:2::0:0:0mn[0;4;38:2::128:128:128;48:2::0:0:0me[0;4;38:2::128:128:128;48:2::0:0:0m [0;4;38:2::128:128:128;48:2::0:0:0m([0;4;38:2::128:128:128;48:2::0:0:0m#[0;4;38:2::128:128:128;48:2::0:0:0m2[0;4;38:2::128:128:128;48:2::0:0:0m8[0;4;38:2::128:128:128;48:2::0:0:0m0[0;4;38:2::128:128:128;48:2::0:0:0m8[0;4;38:2::128:128:128;48:2::0:0:0m0[0;4;38:2::128:128:128;48:2::0:0:0m8[0;4;38:2::128:128:128;48:2::0:0:0m0[0;4;38:2::128:128:128;48:2::0:0:0m) -#5[0;3;38:2::128:128:128;48:2::0:0:0my[0;3;38:2::128:128:128;48:2::0:0:0me[0;3;38:2::128:128:128;48:2::0:0:0ms[0;3;38:2::128:128:128;48:2::0:0:0m [0;3;38:2::128:128:128;48:2::0:0:0mi[0;3;38:2::128:128:128;48:2::0:0:0mt[0;3;38:2::128:128:128;48:2::0:0:0ma[0;3;38:2::128:128:128;48:2::0:0:0ml[0;3;38:2::128:128:128;48:2::0:0:0mi[0;3;38:2::128:128:128;48:2::0:0:0mc[0;3;38:2::128:128:128;48:2::0:0:0m [0;3;38:2::128:128:128;48:2::0:0:0m([0;3;38:2::128:128:128;48:2::0:0:0m#[0;3;38:2::128:128:128;48:2::0:0:0m8[0;3;38:2::128:128:128;48:2::0:0:0m8[0;3;38:2::128:128:128;48:2::0:0:0m0[0;3;38:2::128:128:128;48:2::0:0:0m8[0;3;38:2::128:128:128;48:2::0:0:0m0[0;3;38:2::128:128:128;48:2::0:0:0m8[0;3;38:2::128:128:128;48:2::0:0:0m0[0;3;38:2::128:128:128;48:2::0:0:0m) -#5[0;38:2::0:0:0;48:2::255:255:255m#[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m [0;38:2::0:0:0;48:2::255:255:255mo[0;38:2::0:0:0;48:2::255:255:255mn[0;38:2::0:0:0;48:2::255:255:255m [0;38:2::0:0:0;48:2::255:255:255m#[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255m [0;38:2::0:0:255;48:2::255:255:0m#[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0m [0;38:2::0:0:255;48:2::255:255:0mo[0;38:2::0:0:255;48:2::255:255:0mn[0;38:2::0:0:255;48:2::255:255:0m [0;38:2::0:0:255;48:2::255:255:0m#[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m [0;38:2::0:255:0;48:2::255:0:255m#[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m [0;38:2::0:255:0;48:2::255:0:255mo[0;38:2::0:255:0;48:2::255:0:255mn[0;38:2::0:255:0;48:2::255:0:255m [0;38:2::0:255:0;48:2::255:0:255m#[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255m [0;38:2::0:255:255;48:2::255:0:0m#[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0m [0;38:2::0:255:255;48:2::255:0:0mo[0;38:2::0:255:255;48:2::255:0:0mn[0;38:2::0:255:255;48:2::255:0:0m [0;38:2::0:255:255;48:2::255:0:0m#[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m [0;38:2::255:0:0;48:2::0:255:255m#[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255m0 -#5[0;38:2::255:0:255;48:2::0:255:0m#[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0m [0;38:2::255:0:255;48:2::0:255:0mo[0;38:2::255:0:255;48:2::0:255:0mn[0;38:2::255:0:255;48:2::0:255:0m [0;38:2::255:0:255;48:2::0:255:0m#[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m [0;38:2::255:255:0;48:2::0:0:255m#[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m [0;38:2::255:255:0;48:2::0:0:255mo[0;38:2::255:255:0;48:2::0:0:255mn[0;38:2::255:255:0;48:2::0:0:255m [0;38:2::255:255:0;48:2::0:0:255m#[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255m [0;38:2::255:255:255;48:2::0:0:0m#[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0m [0;38:2::255:255:255;48:2::0:0:0mo[0;38:2::255:255:255;48:2::0:0:0mn[0;38:2::255:255:255;48:2::0:0:0m [0;38:2::255:255:255;48:2::0:0:0m#[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m  +#5[0;38:2::250:235:215ma[0;38:2::250:235:215mn[0;38:2::250:235:215mt[0;38:2::250:235:215mi[0;38:2::250:235:215mq[0;38:2::250:235:215mu[0;38:2::250:235:215me[0;38:2::250:235:215mw[0;38:2::250:235:215mh[0;38:2::250:235:215mi[0;38:2::250:235:215mt[0;38:2::250:235:215me[0;38:2::250:235:215m,[0;38:2::250:235:215m [0;38:2::127:255:212ma[0;38:2::127:255:212mq[0;38:2::127:255:212mu[0;38:2::127:255:212ma[0;38:2::127:255:212mm[0;38:2::127:255:212ma[0;38:2::127:255:212mr[0;38:2::127:255:212mi[0;38:2::127:255:212mn[0;38:2::127:255:212me[0;38:2::127:255:212m,[0;38:2::127:255:212m [0;38:2::245:245:220mb[0;38:2::245:245:220me[0;38:2::245:245:220mi[0;38:2::245:245:220mg[0;38:2::245:245:220me[0;38:2::245:245:220m,[0;38:2::245:245:220m [0;38:2::0:0:0mb[0;38:2::0:0:0ml[0;38:2::0:0:0ma[0;38:2::0:0:0mc[0;38:2::0:0:0mk[0;38:2::0:0:0m,[0;38:2::0:0:0m [0;38:2::0:0:255mb[0;38:2::0:0:255ml[0;38:2::0:0:255mu[0;38:2::0:0:255me[0;38:2::0:0:255m,[0;38:2::0:0:255m [0;38:2::165:42:42mb[0;38:2::165:42:42mr[0;38:2::165:42:42mo[0;38:2::165:42:42mw[0;38:2::165:42:42mn[0;38:2::165:42:42m,[0;38:2::165:42:42m [0;38:2::95:158:160mc[0;38:2::95:158:160ma[0;38:2::95:158:160md[0;38:2::95:158:160me[0;38:2::95:158:160mt[0;38:2::95:158:160mb[0;38:2::95:158:160ml[0;38:2::95:158:160mu[0;38:2::95:158:160me[0;38:2::95:158:160m,[0;38:2::95:158:160m [0;38:2::210:105:30mc[0;38:2::210:105:30mh[0;38:2::210:105:30mo[0;38:2::210:105:30mc[0;38:2::210:105:30mo[0;38:2::210:105:30ml[0;38:2::210:105:30ma[0;38:2::210:105:30mt[0;38:2::210:105:30me[0;38:2::210:105:30m,[0;38:2::210:105:30m  +#5[0;38:2::100:149:237mc[0;38:2::100:149:237mo[0;38:2::100:149:237mr[0;38:2::100:149:237mn[0;38:2::100:149:237mf[0;38:2::100:149:237ml[0;38:2::100:149:237mo[0;38:2::100:149:237mw[0;38:2::100:149:237me[0;38:2::100:149:237mr[0;38:2::100:149:237mb[0;38:2::100:149:237ml[0;38:2::100:149:237mu[0;38:2::100:149:237me[0;38:2::100:149:237m,[0;38:2::100:149:237m [0;38:2::220:20:60mc[0;38:2::220:20:60mr[0;38:2::220:20:60mi[0;38:2::220:20:60mm[0;38:2::220:20:60ms[0;38:2::220:20:60mo[0;38:2::220:20:60mn[0;38:2::220:20:60m,[0;38:2::220:20:60m [0;38:2::0:0:139md[0;38:2::0:0:139ma[0;38:2::0:0:139mr[0;38:2::0:0:139mk[0;38:2::0:0:139mb[0;38:2::0:0:139ml[0;38:2::0:0:139mu[0;38:2::0:0:139me[0;38:2::0:0:139m,[0;38:2::0:0:139m [0;38:2::184:134:11md[0;38:2::184:134:11ma[0;38:2::184:134:11mr[0;38:2::184:134:11mk[0;38:2::184:134:11mg[0;38:2::184:134:11mo[0;38:2::184:134:11ml[0;38:2::184:134:11md[0;38:2::184:134:11me[0;38:2::184:134:11mn[0;38:2::184:134:11mr[0;38:2::184:134:11mo[0;38:2::184:134:11md[0;38:2::184:134:11m,[0;38:2::184:134:11m [0;38:2::0:100:0md[0;38:2::0:100:0ma[0;38:2::0:100:0mr[0;38:2::0:100:0mk[0;38:2::0:100:0mg[0;38:2::0:100:0mr[0;38:2::0:100:0me[0;38:2::0:100:0me[0;38:2::0:100:0mn[0;38:2::0:100:0m,[0;38:2::0:100:0m [0;38:2::189:183:107md[0;38:2::189:183:107ma[0;38:2::189:183:107mr[0;38:2::189:183:107mk[0;38:2::189:183:107mk[0;38:2::189:183:107mh[0;38:2::189:183:107ma[0;38:2::189:183:107mk[0;38:2::189:183:107mi[0;38:2::189:183:107m,[0;38:2::189:183:107m  +#5[0;38:2::85:107:47md[0;38:2::85:107:47ma[0;38:2::85:107:47mr[0;38:2::85:107:47mk[0;38:2::85:107:47mo[0;38:2::85:107:47ml[0;38:2::85:107:47mi[0;38:2::85:107:47mv[0;38:2::85:107:47me[0;38:2::85:107:47mg[0;38:2::85:107:47mr[0;38:2::85:107:47me[0;38:2::85:107:47me[0;38:2::85:107:47mn[0;38:2::85:107:47m,[0;38:2::85:107:47m [0;38:2::153:50:204md[0;38:2::153:50:204ma[0;38:2::153:50:204mr[0;38:2::153:50:204mk[0;38:2::153:50:204mo[0;38:2::153:50:204mr[0;38:2::153:50:204mc[0;38:2::153:50:204mh[0;38:2::153:50:204mi[0;38:2::153:50:204md[0;38:2::153:50:204m,[0;38:2::153:50:204m [0;38:2::233:150:122md[0;38:2::233:150:122ma[0;38:2::233:150:122mr[0;38:2::233:150:122mk[0;38:2::233:150:122ms[0;38:2::233:150:122ma[0;38:2::233:150:122ml[0;38:2::233:150:122mm[0;38:2::233:150:122mo[0;38:2::233:150:122mn[0;38:2::233:150:122m,[0;38:2::233:150:122m [0;38:2::72:61:139md[0;38:2::72:61:139ma[0;38:2::72:61:139mr[0;38:2::72:61:139mk[0;38:2::72:61:139ms[0;38:2::72:61:139ml[0;38:2::72:61:139ma[0;38:2::72:61:139mt[0;38:2::72:61:139me[0;38:2::72:61:139mb[0;38:2::72:61:139ml[0;38:2::72:61:139mu[0;38:2::72:61:139me[0;38:2::72:61:139m,[0;38:2::72:61:139m [0;38:2::0:206:209md[0;38:2::0:206:209ma[0;38:2::0:206:209mr[0;38:2::0:206:209mk[0;38:2::0:206:209mt[0;38:2::0:206:209mu[0;38:2::0:206:209mr[0;38:2::0:206:209mq[0;38:2::0:206:209mu[0;38:2::0:206:209mo[0;38:2::0:206:209mi[0;38:2::0:206:209ms[0;38:2::0:206:209me[0;38:2::0:206:209m,[0;38:2::0:206:209m [0;38:2::255:20:147md[0;38:2::255:20:147me[0;38:2::255:20:147me[0;38:2::255:20:147mp[0;38:2::255:20:147mp[0;38:2::255:20:147mi[0;38:2::255:20:147mn[0;38:2::255:20:147mk[0;38:2::255:20:147m,[0;38:2::255:20:147m  +#5[0;38:2::105:105:105md[0;38:2::105:105:105mi[0;38:2::105:105:105mm[0;38:2::105:105:105mg[0;38:2::105:105:105mr[0;38:2::105:105:105ma[0;38:2::105:105:105my[0;38:2::105:105:105m,[0;38:2::105:105:105m [0;38:2::30:144:255md[0;38:2::30:144:255mo[0;38:2::30:144:255md[0;38:2::30:144:255mg[0;38:2::30:144:255me[0;38:2::30:144:255mr[0;38:2::30:144:255mb[0;38:2::30:144:255ml[0;38:2::30:144:255mu[0;38:2::30:144:255me[0;38:2::30:144:255m,[0;38:2::30:144:255m [0;38:2::255:250:240mf[0;38:2::255:250:240ml[0;38:2::255:250:240mo[0;38:2::255:250:240mr[0;38:2::255:250:240ma[0;38:2::255:250:240ml[0;38:2::255:250:240mw[0;38:2::255:250:240mh[0;38:2::255:250:240mi[0;38:2::255:250:240mt[0;38:2::255:250:240me[0;38:2::255:250:240m,[0;38:2::255:250:240m [0;38:2::255:0:255mf[0;38:2::255:0:255mu[0;38:2::255:0:255mc[0;38:2::255:0:255mh[0;38:2::255:0:255ms[0;38:2::255:0:255mi[0;38:2::255:0:255ma[0;38:2::255:0:255m,[0;38:2::255:0:255m [0;38:2::248:248:255mg[0;38:2::248:248:255mh[0;38:2::248:248:255mo[0;38:2::248:248:255ms[0;38:2::248:248:255mt[0;38:2::248:248:255mw[0;38:2::248:248:255mh[0;38:2::248:248:255mi[0;38:2::248:248:255mt[0;38:2::248:248:255me[0;38:2::248:248:255m,[0;38:2::248:248:255m [0;38:2::218:165:32mg[0;38:2::218:165:32mo[0;38:2::218:165:32ml[0;38:2::218:165:32md[0;38:2::218:165:32me[0;38:2::218:165:32mn[0;38:2::218:165:32mr[0;38:2::218:165:32mo[0;38:2::218:165:32md[0;38:2::218:165:32m,[0;38:2::218:165:32m [0;38:2::0:128:0mg[0;38:2::0:128:0mr[0;38:2::0:128:0me[0;38:2::0:128:0me[0;38:2::0:128:0mn[0;38:2::0:128:0m,[0;38:2::0:128:0m [0;38:2::128:128:128mg[0;38:2::128:128:128mr[0;38:2::128:128:128me[0;38:2::128:128:128my[0;38:2::128:128:128m,[0;38:2::128:128:128m  +#5[0;38:2::255:105:180mh[0;38:2::255:105:180mo[0;38:2::255:105:180mt[0;38:2::255:105:180mp[0;38:2::255:105:180mi[0;38:2::255:105:180mn[0;38:2::255:105:180mk[0;38:2::255:105:180m,[0;38:2::255:105:180m [0;38:2::75:0:130mi[0;38:2::75:0:130mn[0;38:2::75:0:130md[0;38:2::75:0:130mi[0;38:2::75:0:130mg[0;38:2::75:0:130mo[0;38:2::75:0:130m,[0;38:2::75:0:130m [0;38:2::240:230:140mk[0;38:2::240:230:140mh[0;38:2::240:230:140ma[0;38:2::240:230:140mk[0;38:2::240:230:140mi[0;38:2::240:230:140m,[0;38:2::240:230:140m [0;38:2::255:240:245ml[0;38:2::255:240:245ma[0;38:2::255:240:245mv[0;38:2::255:240:245me[0;38:2::255:240:245mn[0;38:2::255:240:245md[0;38:2::255:240:245me[0;38:2::255:240:245mr[0;38:2::255:240:245mb[0;38:2::255:240:245ml[0;38:2::255:240:245mu[0;38:2::255:240:245ms[0;38:2::255:240:245mh[0;38:2::255:240:245m,[0;38:2::255:240:245m [0;38:2::255:250:205ml[0;38:2::255:250:205me[0;38:2::255:250:205mm[0;38:2::255:250:205mo[0;38:2::255:250:205mn[0;38:2::255:250:205mc[0;38:2::255:250:205mh[0;38:2::255:250:205mi[0;38:2::255:250:205mf[0;38:2::255:250:205mf[0;38:2::255:250:205mo[0;38:2::255:250:205mn[0;38:2::255:250:205m,[0;38:2::255:250:205m [0;38:2::240:128:128ml[0;38:2::240:128:128mi[0;38:2::240:128:128mg[0;38:2::240:128:128mh[0;38:2::240:128:128mt[0;38:2::240:128:128mc[0;38:2::240:128:128mo[0;38:2::240:128:128mr[0;38:2::240:128:128ma[0;38:2::240:128:128ml[0;38:2::240:128:128m,[0;38:2::240:128:128m  +#5[0;38:2::250:250:210ml[0;38:2::250:250:210mi[0;38:2::250:250:210mg[0;38:2::250:250:210mh[0;38:2::250:250:210mt[0;38:2::250:250:210mg[0;38:2::250:250:210mo[0;38:2::250:250:210ml[0;38:2::250:250:210md[0;38:2::250:250:210me[0;38:2::250:250:210mn[0;38:2::250:250:210mr[0;38:2::250:250:210mo[0;38:2::250:250:210md[0;38:2::250:250:210my[0;38:2::250:250:210me[0;38:2::250:250:210ml[0;38:2::250:250:210ml[0;38:2::250:250:210mo[0;38:2::250:250:210mw[0;38:2::250:250:210m,[0;38:2::250:250:210m [0;38:2::144:238:144ml[0;38:2::144:238:144mi[0;38:2::144:238:144mg[0;38:2::144:238:144mh[0;38:2::144:238:144mt[0;38:2::144:238:144mg[0;38:2::144:238:144mr[0;38:2::144:238:144me[0;38:2::144:238:144me[0;38:2::144:238:144mn[0;38:2::144:238:144m,[0;38:2::144:238:144m [0;38:2::255:182:193ml[0;38:2::255:182:193mi[0;38:2::255:182:193mg[0;38:2::255:182:193mh[0;38:2::255:182:193mt[0;38:2::255:182:193mp[0;38:2::255:182:193mi[0;38:2::255:182:193mn[0;38:2::255:182:193mk[0;38:2::255:182:193m,[0;38:2::255:182:193m [0;38:2::32:178:170ml[0;38:2::32:178:170mi[0;38:2::32:178:170mg[0;38:2::32:178:170mh[0;38:2::32:178:170mt[0;38:2::32:178:170ms[0;38:2::32:178:170me[0;38:2::32:178:170ma[0;38:2::32:178:170mg[0;38:2::32:178:170mr[0;38:2::32:178:170me[0;38:2::32:178:170me[0;38:2::32:178:170mn[0;38:2::32:178:170m,[0;38:2::32:178:170m [0;38:2::119:136:153ml[0;38:2::119:136:153mi[0;38:2::119:136:153mg[0;38:2::119:136:153mh[0;38:2::119:136:153mt[0;38:2::119:136:153ms[0;38:2::119:136:153ml[0;38:2::119:136:153ma[0;38:2::119:136:153mt[0;38:2::119:136:153me[0;38:2::119:136:153mg[0;38:2::119:136:153mr[0;38:2::119:136:153me[0;38:2::119:136:153my[0;38:2::119:136:153m,[0;38:2::119:136:153m  +#5[0;38:2::255:255:224ml[0;38:2::255:255:224mi[0;38:2::255:255:224mg[0;38:2::255:255:224mh[0;38:2::255:255:224mt[0;38:2::255:255:224my[0;38:2::255:255:224me[0;38:2::255:255:224ml[0;38:2::255:255:224ml[0;38:2::255:255:224mo[0;38:2::255:255:224mw[0;38:2::255:255:224m,[0;38:2::255:255:224m [0;38:2::50:205:50ml[0;38:2::50:205:50mi[0;38:2::50:205:50mm[0;38:2::50:205:50me[0;38:2::50:205:50mg[0;38:2::50:205:50mr[0;38:2::50:205:50me[0;38:2::50:205:50me[0;38:2::50:205:50mn[0;38:2::50:205:50m,[0;38:2::50:205:50m [0;38:2::255:0:255mm[0;38:2::255:0:255ma[0;38:2::255:0:255mg[0;38:2::255:0:255me[0;38:2::255:0:255mn[0;38:2::255:0:255mt[0;38:2::255:0:255ma[0;38:2::255:0:255m,[0;38:2::255:0:255m [0;38:2::102:205:170mm[0;38:2::102:205:170me[0;38:2::102:205:170md[0;38:2::102:205:170mi[0;38:2::102:205:170mu[0;38:2::102:205:170mm[0;38:2::102:205:170ma[0;38:2::102:205:170mq[0;38:2::102:205:170mu[0;38:2::102:205:170ma[0;38:2::102:205:170mm[0;38:2::102:205:170ma[0;38:2::102:205:170mr[0;38:2::102:205:170mi[0;38:2::102:205:170mn[0;38:2::102:205:170me[0;38:2::102:205:170m,[0;38:2::102:205:170m [0;38:2::186:85:211mm[0;38:2::186:85:211me[0;38:2::186:85:211md[0;38:2::186:85:211mi[0;38:2::186:85:211mu[0;38:2::186:85:211mm[0;38:2::186:85:211mo[0;38:2::186:85:211mr[0;38:2::186:85:211mc[0;38:2::186:85:211mh[0;38:2::186:85:211mi[0;38:2::186:85:211md[0;38:2::186:85:211m,[0;38:2::186:85:211m  +#5[0;38:2::60:179:113mm[0;38:2::60:179:113me[0;38:2::60:179:113md[0;38:2::60:179:113mi[0;38:2::60:179:113mu[0;38:2::60:179:113mm[0;38:2::60:179:113ms[0;38:2::60:179:113me[0;38:2::60:179:113ma[0;38:2::60:179:113mg[0;38:2::60:179:113mr[0;38:2::60:179:113me[0;38:2::60:179:113me[0;38:2::60:179:113mn[0;38:2::60:179:113m,[0;38:2::60:179:113m [0;38:2::0:250:154mm[0;38:2::0:250:154me[0;38:2::0:250:154md[0;38:2::0:250:154mi[0;38:2::0:250:154mu[0;38:2::0:250:154mm[0;38:2::0:250:154ms[0;38:2::0:250:154mp[0;38:2::0:250:154mr[0;38:2::0:250:154mi[0;38:2::0:250:154mn[0;38:2::0:250:154mg[0;38:2::0:250:154mg[0;38:2::0:250:154mr[0;38:2::0:250:154me[0;38:2::0:250:154me[0;38:2::0:250:154mn[0;38:2::0:250:154m,[0;38:2::0:250:154m [0;38:2::199:21:133mm[0;38:2::199:21:133me[0;38:2::199:21:133md[0;38:2::199:21:133mi[0;38:2::199:21:133mu[0;38:2::199:21:133mm[0;38:2::199:21:133mv[0;38:2::199:21:133mi[0;38:2::199:21:133mo[0;38:2::199:21:133ml[0;38:2::199:21:133me[0;38:2::199:21:133mt[0;38:2::199:21:133mr[0;38:2::199:21:133me[0;38:2::199:21:133md[0;38:2::199:21:133m,[0;38:2::199:21:133m [0;38:2::245:255:250mm[0;38:2::245:255:250mi[0;38:2::245:255:250mn[0;38:2::245:255:250mt[0;38:2::245:255:250mc[0;38:2::245:255:250mr[0;38:2::245:255:250me[0;38:2::245:255:250ma[0;38:2::245:255:250mm[0;38:2::245:255:250m,[0;38:2::245:255:250m [0;38:2::255:228:181mm[0;38:2::255:228:181mo[0;38:2::255:228:181mc[0;38:2::255:228:181mc[0;38:2::255:228:181ma[0;38:2::255:228:181ms[0;38:2::255:228:181mi[0;38:2::255:228:181mn[0;38:2::255:228:181m,[0;38:2::255:228:181m [0;38:2::0:0:128mn[0;38:2::0:0:128ma[0;38:2::0:0:128mv[0;38:2::0:0:128my[0;38:2::0:0:128m,[0;38:2::0:0:128m  +#5[0;38:2::128:128:0mo[0;38:2::128:128:0ml[0;38:2::128:128:0mi[0;38:2::128:128:0mv[0;38:2::128:128:0me[0;38:2::128:128:0m,[0;38:2::128:128:0m [0;38:2::255:165:0mo[0;38:2::255:165:0mr[0;38:2::255:165:0ma[0;38:2::255:165:0mn[0;38:2::255:165:0mg[0;38:2::255:165:0me[0;38:2::255:165:0m,[0;38:2::255:165:0m [0;38:2::218:112:214mo[0;38:2::218:112:214mr[0;38:2::218:112:214mc[0;38:2::218:112:214mh[0;38:2::218:112:214mi[0;38:2::218:112:214md[0;38:2::218:112:214m,[0;38:2::218:112:214m [0;38:2::152:251:152mp[0;38:2::152:251:152ma[0;38:2::152:251:152ml[0;38:2::152:251:152me[0;38:2::152:251:152mg[0;38:2::152:251:152mr[0;38:2::152:251:152me[0;38:2::152:251:152me[0;38:2::152:251:152mn[0;38:2::152:251:152m,[0;38:2::152:251:152m [0;38:2::219:112:147mp[0;38:2::219:112:147ma[0;38:2::219:112:147ml[0;38:2::219:112:147me[0;38:2::219:112:147mv[0;38:2::219:112:147mi[0;38:2::219:112:147mo[0;38:2::219:112:147ml[0;38:2::219:112:147me[0;38:2::219:112:147mt[0;38:2::219:112:147mr[0;38:2::219:112:147me[0;38:2::219:112:147md[0;38:2::219:112:147m,[0;38:2::219:112:147m [0;38:2::255:218:185mp[0;38:2::255:218:185me[0;38:2::255:218:185ma[0;38:2::255:218:185mc[0;38:2::255:218:185mh[0;38:2::255:218:185mp[0;38:2::255:218:185mu[0;38:2::255:218:185mf[0;38:2::255:218:185mf[0;38:2::255:218:185m,[0;38:2::255:218:185m [0;38:2::255:192:203mp[0;38:2::255:192:203mi[0;38:2::255:192:203mn[0;38:2::255:192:203mk[0;38:2::255:192:203m,[0;38:2::255:192:203m [0;38:2::176:224:230mp[0;38:2::176:224:230mo[0;38:2::176:224:230mw[0;38:2::176:224:230md[0;38:2::176:224:230me[0;38:2::176:224:230mr[0;38:2::176:224:230mb[0;38:2::176:224:230ml[0;38:2::176:224:230mu[0;38:2::176:224:230me[0;38:2::176:224:230m,[0;38:2::176:224:230m  +#5[0;38:2::255:0:0mr[0;38:2::255:0:0me[0;38:2::255:0:0md[0;38:2::255:0:0m,[0;38:2::255:0:0m [0;38:2::65:105:225mr[0;38:2::65:105:225mo[0;38:2::65:105:225my[0;38:2::65:105:225ma[0;38:2::65:105:225ml[0;38:2::65:105:225mb[0;38:2::65:105:225ml[0;38:2::65:105:225mu[0;38:2::65:105:225me[0;38:2::65:105:225m,[0;38:2::65:105:225m [0;38:2::250:128:114ms[0;38:2::250:128:114ma[0;38:2::250:128:114ml[0;38:2::250:128:114mm[0;38:2::250:128:114mo[0;38:2::250:128:114mn[0;38:2::250:128:114m,[0;38:2::250:128:114m [0;38:2::46:139:87ms[0;38:2::46:139:87me[0;38:2::46:139:87ma[0;38:2::46:139:87mg[0;38:2::46:139:87mr[0;38:2::46:139:87me[0;38:2::46:139:87me[0;38:2::46:139:87mn[0;38:2::46:139:87m,[0;38:2::46:139:87m [0;38:2::160:82:45ms[0;38:2::160:82:45mi[0;38:2::160:82:45me[0;38:2::160:82:45mn[0;38:2::160:82:45mn[0;38:2::160:82:45ma[0;38:2::160:82:45m,[0;38:2::160:82:45m [0;38:2::135:206:235ms[0;38:2::135:206:235mk[0;38:2::135:206:235my[0;38:2::135:206:235mb[0;38:2::135:206:235ml[0;38:2::135:206:235mu[0;38:2::135:206:235me[0;38:2::135:206:235m,[0;38:2::135:206:235m [0;38:2::112:128:144ms[0;38:2::112:128:144ml[0;38:2::112:128:144ma[0;38:2::112:128:144mt[0;38:2::112:128:144me[0;38:2::112:128:144mg[0;38:2::112:128:144mr[0;38:2::112:128:144me[0;38:2::112:128:144my[0;38:2::112:128:144m,[0;38:2::112:128:144m [0;38:2::0:255:127ms[0;38:2::0:255:127mp[0;38:2::0:255:127mr[0;38:2::0:255:127mi[0;38:2::0:255:127mn[0;38:2::0:255:127mg[0;38:2::0:255:127mg[0;38:2::0:255:127mr[0;38:2::0:255:127me[0;38:2::0:255:127me[0;38:2::0:255:127mn[0;38:2::0:255:127m,[0;38:2::0:255:127m [0;38:2::210:180:140mt[0;38:2::210:180:140ma[0;38:2::210:180:140mn[0;38:2::210:180:140m,[0;38:2::210:180:140m  +#5[0;38:2::216:191:216mt[0;38:2::216:191:216mh[0;38:2::216:191:216mi[0;38:2::216:191:216ms[0;38:2::216:191:216mt[0;38:2::216:191:216ml[0;38:2::216:191:216me[0;38:2::216:191:216m,[0;38:2::216:191:216m [0;38:2::64:224:208mt[0;38:2::64:224:208mu[0;38:2::64:224:208mr[0;38:2::64:224:208mq[0;38:2::64:224:208mu[0;38:2::64:224:208mo[0;38:2::64:224:208mi[0;38:2::64:224:208ms[0;38:2::64:224:208me[0;38:2::64:224:208m,[0;38:2::64:224:208m [0;38:2::245:222:179mw[0;38:2::245:222:179mh[0;38:2::245:222:179me[0;38:2::245:222:179ma[0;38:2::245:222:179mt[0;38:2::245:222:179m,[0;38:2::245:222:179m [0;38:2::245:245:245mw[0;38:2::245:245:245mh[0;38:2::245:245:245mi[0;38:2::245:245:245mt[0;38:2::245:245:245me[0;38:2::245:245:245ms[0;38:2::245:245:245mm[0;38:2::245:245:245mo[0;38:2::245:245:245mk[0;38:2::245:245:245me[0;38:2::245:245:245m,[0;38:2::245:245:245m [0;38:2::154:205:50my[0;38:2::154:205:50me[0;38:2::154:205:50ml[0;38:2::154:205:50ml[0;38:2::154:205:50mo[0;38:2::154:205:50mw[0;38:2::154:205:50mg[0;38:2::154:205:50mr[0;38:2::154:205:50me[0;38:2::154:205:50me[0;38:2::154:205:50mn[0;38:2::154:205:50m,[0;38:2::154:205:50m [0;38:2::0:255:0mg[0;38:2::0:255:0mr[0;38:2::0:255:0me[0;38:2::0:255:0me[0;38:2::0:255:0mn[0;38:2::0:255:0m [0;38:2::0:255:0mo[0;38:2::0:255:0mn[0;38:2::0:255:0m [0;38:2::0:255:0md[0;38:2::0:255:0me[0;38:2::0:255:0mf[0;38:2::0:255:0ma[0;38:2::0:255:0mu[0;38:2::0:255:0ml[0;38:2::0:255:0mt[0;38:2::0:255:0m,[0;38:2::0:255:0m  +#5[0;38:2::0:0:0mb[0;38:2::0:0:0ml[0;38:2::0:0:0ma[0;38:2::0:0:0mc[0;38:2::0:0:0mk[0;38:2::0:0:0m [0;38:2::0:0:0mo[0;38:2::0:0:0mn[0;38:2::0:0:0m [0;38:2::0:0:0md[0;38:2::0:0:0me[0;38:2::0:0:0mf[0;38:2::0:0:0ma[0;38:2::0:0:0mu[0;38:2::0:0:0ml[0;38:2::0:0:0mt[0;38:2::0:0:0m,[0;38:2::0:0:0m [0;48:2::0:255:0md[0;48:2::0:255:0me[0;48:2::0:255:0mf[0;48:2::0:255:0ma[0;48:2::0:255:0mu[0;48:2::0:255:0ml[0;48:2::0:255:0mt[0;48:2::0:255:0m [0;48:2::0:255:0mo[0;48:2::0:255:0mn[0;48:2::0:255:0m [0;48:2::0:255:0mg[0;48:2::0:255:0mr[0;48:2::0:255:0me[0;48:2::0:255:0me[0;48:2::0:255:0mn[0;48:2::0:255:0m,[0;48:2::0:255:0m [0;48:2::0:0:0md[0;48:2::0:0:0me[0;48:2::0:0:0mf[0;48:2::0:0:0ma[0;48:2::0:0:0mu[0;48:2::0:0:0ml[0;48:2::0:0:0mt[0;48:2::0:0:0m [0;48:2::0:0:0mo[0;48:2::0:0:0mn[0;48:2::0:0:0m [0;48:2::0:0:0mb[0;48:2::0:0:0ml[0;48:2::0:0:0ma[0;48:2::0:0:0mc[0;48:2::0:0:0mk[0;48:2::0:0:0m,[0;48:2::0:0:0m default on default,  +#5default w/ ignored bits, italic on default,  +#5[0;1;38:2::128:128:120my[0;1;38:2::128:128:120me[0;1;38:2::128:128:120ms[0;1;38:2::128:128:120m [0;1;38:2::128:128:120mb[0;1;38:2::128:128:120mo[0;1;38:2::128:128:120ml[0;1;38:2::128:128:120md[0;1;38:2::128:128:120m [0;1;38:2::128:128:120m([0;1;38:2::128:128:120m#[0;1;38:2::128:128:120m1[0;1;38:2::128:128:120m8[0;1;38:2::128:128:120m0[0;1;38:2::128:128:120m8[0;1;38:2::128:128:120m0[0;1;38:2::128:128:120m8[0;1;38:2::128:128:120m0[0;1;38:2::128:128:120m) +#5[0;4;38:2::128:128:128my[0;4;38:2::128:128:128me[0;4;38:2::128:128:128ms[0;4;38:2::128:128:128m [0;4;38:2::128:128:128mu[0;4;38:2::128:128:128mn[0;4;38:2::128:128:128md[0;4;38:2::128:128:128me[0;4;38:2::128:128:128mr[0;4;38:2::128:128:128ml[0;4;38:2::128:128:128mi[0;4;38:2::128:128:128mn[0;4;38:2::128:128:128me[0;4;38:2::128:128:128m [0;4;38:2::128:128:128m([0;4;38:2::128:128:128m#[0;4;38:2::128:128:128m2[0;4;38:2::128:128:128m8[0;4;38:2::128:128:128m0[0;4;38:2::128:128:128m8[0;4;38:2::128:128:128m0[0;4;38:2::128:128:128m8[0;4;38:2::128:128:128m0[0;4;38:2::128:128:128m) +#5[0;3;38:2::128:128:128my[0;3;38:2::128:128:128me[0;3;38:2::128:128:128ms[0;3;38:2::128:128:128m [0;3;38:2::128:128:128mi[0;3;38:2::128:128:128mt[0;3;38:2::128:128:128ma[0;3;38:2::128:128:128ml[0;3;38:2::128:128:128mi[0;3;38:2::128:128:128mc[0;3;38:2::128:128:128m [0;3;38:2::128:128:128m([0;3;38:2::128:128:128m#[0;3;38:2::128:128:128m8[0;3;38:2::128:128:128m8[0;3;38:2::128:128:128m0[0;3;38:2::128:128:128m8[0;3;38:2::128:128:128m0[0;3;38:2::128:128:128m8[0;3;38:2::128:128:128m0[0;3;38:2::128:128:128m) +#5[0;38:2::0:0:0;48:2::255:255:255m#[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m0[0;38:2::0:0:0;48:2::255:255:255m [0;38:2::0:0:0;48:2::255:255:255mo[0;38:2::0:0:0;48:2::255:255:255mn[0;38:2::0:0:0;48:2::255:255:255m [0;38:2::0:0:0;48:2::255:255:255m#[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255mf[0;38:2::0:0:0;48:2::255:255:255m [0;38:2::0:0:255;48:2::255:255:0m#[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0m [0;38:2::0:0:255;48:2::255:255:0mo[0;38:2::0:0:255;48:2::255:255:0mn[0;38:2::0:0:255;48:2::255:255:0m [0;38:2::0:0:255;48:2::255:255:0m#[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0mf[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m0[0;38:2::0:0:255;48:2::255:255:0m [0;38:2::0:255:0;48:2::255:0:255m#[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m [0;38:2::0:255:0;48:2::255:0:255mo[0;38:2::0:255:0;48:2::255:0:255mn[0;38:2::0:255:0;48:2::255:0:255m [0;38:2::0:255:0;48:2::255:0:255m#[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255m0[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255mf[0;38:2::0:255:0;48:2::255:0:255m [0;38:2::0:255:255;48:2::255:0:0m#[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0m [0;38:2::0:255:255;48:2::255:0:0mo[0;38:2::0:255:255;48:2::255:0:0mn[0;38:2::0:255:255;48:2::255:0:0m [0;38:2::0:255:255;48:2::255:0:0m#[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0mf[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m0[0;38:2::0:255:255;48:2::255:0:0m  +#5[0;38:2::255:0:0;48:2::0:255:255m#[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255m0[0;38:2::255:0:0;48:2::0:255:255m0[0;38:2::255:0:0;48:2::0:255:255m0[0;38:2::255:0:0;48:2::0:255:255m0[0;38:2::255:0:0;48:2::0:255:255m [0;38:2::255:0:0;48:2::0:255:255mo[0;38:2::255:0:0;48:2::0:255:255mn[0;38:2::255:0:0;48:2::0:255:255m [0;38:2::255:0:0;48:2::0:255:255m#[0;38:2::255:0:0;48:2::0:255:255m0[0;38:2::255:0:0;48:2::0:255:255m0[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255mf[0;38:2::255:0:0;48:2::0:255:255m [0;38:2::255:0:255;48:2::0:255:0m#[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0m [0;38:2::255:0:255;48:2::0:255:0mo[0;38:2::255:0:255;48:2::0:255:0mn[0;38:2::255:0:255;48:2::0:255:0m [0;38:2::255:0:255;48:2::0:255:0m#[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0mf[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m0[0;38:2::255:0:255;48:2::0:255:0m [0;38:2::255:255:0;48:2::0:0:255m#[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m [0;38:2::255:255:0;48:2::0:0:255mo[0;38:2::255:255:0;48:2::0:0:255mn[0;38:2::255:255:0;48:2::0:0:255m [0;38:2::255:255:0;48:2::0:0:255m#[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255m0[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255mf[0;38:2::255:255:0;48:2::0:0:255m [0;38:2::255:255:255;48:2::0:0:0m#[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0mf[0;38:2::255:255:255;48:2::0:0:0m [0;38:2::255:255:255;48:2::0:0:0mo[0;38:2::255:255:255;48:2::0:0:0mn[0;38:2::255:255:255;48:2::0:0:0m [0;38:2::255:255:255;48:2::0:0:0m#[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m0[0;38:2::255:255:255;48:2::0:0:0m  + + + + diff --git a/tests/test_color_true/test.php b/tests/test_color_true/test.php index 228b050..1d290bb 100755 --- a/tests/test_color_true/test.php +++ b/tests/test_color_true/test.php @@ -6,151 +6,91 @@ if (!$test->ffi->tb_has_truecolor()) { $test->skip(); } +$attr_bold = $test->defines['TB_TRUECOLOR_BOLD']; +$attr_underline = $test->defines['TB_TRUECOLOR_UNDERLINE']; +$attr_italic = $test->defines['TB_TRUECOLOR_ITALIC']; +$attr_default = $test->defines['TB_TRUECOLOR_DEFAULT']; + $css_colors = [ - 'aliceblue' => 0xf0f8ff, - 'antiquewhite' => 0xfaebd7, - 'aqua' => 0x00ffff, - 'aquamarine' => 0x7fffd4, - 'azure' => 0xf0ffff, - 'beige' => 0xf5f5dc, - 'bisque' => 0xffe4c4, - 'black' => 0x000000, - 'blanchedalmond' => 0xffebcd, - 'blue' => 0x0000ff, - 'blueviolet' => 0x8a2be2, - 'brown' => 0xa52a2a, - 'burlywood' => 0xdeb887, - 'cadetblue' => 0x5f9ea0, - 'chartreuse' => 0x7fff00, - 'chocolate' => 0xd2691e, - 'coral' => 0xff7f50, - 'cornflowerblue' => 0x6495ed, - 'cornsilk' => 0xfff8dc, - 'crimson' => 0xdc143c, - 'cyan' => 0x00ffff, - 'darkblue' => 0x00008b, - 'darkcyan' => 0x008b8b, - 'darkgoldenrod' => 0xb8860b, - 'darkgray' => 0xa9a9a9, - 'darkgreen' => 0x006400, - 'darkgrey' => 0xa9a9a9, - 'darkkhaki' => 0xbdb76b, - 'darkmagenta' => 0x8b008b, - 'darkolivegreen' => 0x556b2f, - 'darkorange' => 0xff8c00, - 'darkorchid' => 0x9932cc, - 'darkred' => 0x8b0000, - 'darksalmon' => 0xe9967a, - 'darkseagreen' => 0x8fbc8f, - 'darkslateblue' => 0x483d8b, - 'darkslategrey' => 0x2f4f4f, - 'darkturquoise' => 0x00ced1, - 'darkviolet' => 0x9400d3, - 'deeppink' => 0xff1493, - 'deepskyblue' => 0x00bfff, - 'dimgray' => 0x696969, - 'dimgrey' => 0x696969, - 'dodgerblue' => 0x1e90ff, - 'firebrick' => 0xb22222, - 'floralwhite' => 0xfffaf0, - 'forestgreen' => 0x228b22, - 'fuchsia' => 0xff00ff, - 'gainsboro' => 0xdcdcdc, - 'ghostwhite' => 0xf8f8ff, - 'gold' => 0xffd700, - 'goldenrod' => 0xdaa520, - 'gray' => 0x808080, - 'green' => 0x008000, - 'greenyellow' => 0xadff2f, - 'grey' => 0x808080, - 'honeydew' => 0xf0fff0, - 'hotpink' => 0xff69b4, - 'indianred' => 0xcd5c5c, - 'indigo' => 0x4b0082, - 'ivory' => 0xfffff0, - 'khaki' => 0xf0e68c, - 'lavender' => 0xe6e6fa, - 'lavenderblush' => 0xfff0f5, - 'lawngreen' => 0x7cfc00, - 'lemonchiffon' => 0xfffacd, - 'lightblue' => 0xadd8e6, - 'lightcoral' => 0xf08080, - 'lightcyan' => 0xe0ffff, - 'lightgoldenrodyellow' => 0xfafad2, - 'lightgray' => 0xd3d3d3, - 'lightgreen' => 0x90ee90, - 'lightgrey' => 0xd3d3d3, - 'lightpink' => 0xffb6c1, - 'lightsalmon' => 0xffa07a, - 'lightseagreen' => 0x20b2aa, - 'lightskyblue' => 0x87cefa, - 'lightslategrey' => 0x778899, - 'lightsteelblue' => 0xb0c4de, - 'lightyellow' => 0xffffe0, - 'lime' => 0x00ff00, - 'limegreen' => 0x32cd32, - 'linen' => 0xfaf0e6, - 'magenta' => 0xff00ff, - 'maroon' => 0x800000, - 'mediumaquamarine' => 0x66cdaa, - 'mediumblue' => 0x0000cd, - 'mediumorchid' => 0xba55d3, - 'mediumpurple' => 0x9370db, - 'mediumseagreen' => 0x3cb371, - 'mediumslateblue' => 0x7b68ee, - 'mediumspringgreen' => 0x00fa9a, - 'mediumturquoise' => 0x48d1cc, - 'mediumvioletred' => 0xc71585, - 'midnightblue' => 0x191970, - 'mintcream' => 0xf5fffa, - 'mistyrose' => 0xffe4e1, - 'moccasin' => 0xffe4b5, - 'navajowhite' => 0xffdead, - 'navy' => 0x000080, - 'oldlace' => 0xfdf5e6, - 'olive' => 0x808000, - 'olivedrab' => 0x6b8e23, - 'orange' => 0xffa500, - 'orangered' => 0xff4500, - 'orchid' => 0xda70d6, - 'palegoldenrod' => 0xeee8aa, - 'palegreen' => 0x98fb98, - 'paleturquoise' => 0xafeeee, - 'palevioletred' => 0xdb7093, - 'papayawhip' => 0xffefd5, - 'peachpuff' => 0xffdab9, - 'peru' => 0xcd853f, - 'pink' => 0xffc0cb, - 'plum' => 0xdda0dd, - 'powderblue' => 0xb0e0e6, - 'purple' => 0x800080, - 'red' => 0xff0000, - 'rosybrown' => 0xbc8f8f, - 'royalblue' => 0x4169e1, - 'saddlebrown' => 0x8b4513, - 'salmon' => 0xfa8072, - 'sandybrown' => 0xf4a460, - 'seagreen' => 0x2e8b57, - 'seashell' => 0xfff5ee, - 'sienna' => 0xa0522d, - 'silver' => 0xc0c0c0, - 'skyblue' => 0x87ceeb, - 'slateblue' => 0x6a5acd, - 'slategrey' => 0x708090, - 'snow' => 0xfffafa, - 'springgreen' => 0x00ff7f, - 'steelblue' => 0x4682b4, - 'tan' => 0xd2b48c, - 'teal' => 0x008080, - 'thistle' => 0xd8bfd8, - 'tomato' => 0xff6347, - 'turquoise' => 0x40e0d0, - 'violet' => 0xee82ee, - 'wheat' => 0xf5deb3, - 'white' => 0xffffff, - 'whitesmoke' => 0xf5f5f5, - 'yellow' => 0xffff00, - 'yellowgreen' => 0x9acd32, + 'antiquewhite' => [ 0xfaebd7, $attr_default ], + 'aquamarine' => [ 0x7fffd4, $attr_default ], + 'beige' => [ 0xf5f5dc, $attr_default ], + 'black' => [ 0x000000, $attr_default ], + 'blue' => [ 0x0000ff, $attr_default ], + 'brown' => [ 0xa52a2a, $attr_default ], + 'cadetblue' => [ 0x5f9ea0, $attr_default ], + 'chocolate' => [ 0xd2691e, $attr_default ], + 'cornflowerblue' => [ 0x6495ed, $attr_default ], + 'crimson' => [ 0xdc143c, $attr_default ], + 'darkblue' => [ 0x00008b, $attr_default ], + 'darkgoldenrod' => [ 0xb8860b, $attr_default ], + 'darkgreen' => [ 0x006400, $attr_default ], + 'darkkhaki' => [ 0xbdb76b, $attr_default ], + 'darkolivegreen' => [ 0x556b2f, $attr_default ], + 'darkorchid' => [ 0x9932cc, $attr_default ], + 'darksalmon' => [ 0xe9967a, $attr_default ], + 'darkslateblue' => [ 0x483d8b, $attr_default ], + 'darkturquoise' => [ 0x00ced1, $attr_default ], + 'deeppink' => [ 0xff1493, $attr_default ], + 'dimgray' => [ 0x696969, $attr_default ], + 'dodgerblue' => [ 0x1e90ff, $attr_default ], + 'floralwhite' => [ 0xfffaf0, $attr_default ], + 'fuchsia' => [ 0xff00ff, $attr_default ], + 'ghostwhite' => [ 0xf8f8ff, $attr_default ], + 'goldenrod' => [ 0xdaa520, $attr_default ], + 'green' => [ 0x008000, $attr_default ], + 'grey' => [ 0x808080, $attr_default ], + 'hotpink' => [ 0xff69b4, $attr_default ], + 'indigo' => [ 0x4b0082, $attr_default ], + 'khaki' => [ 0xf0e68c, $attr_default ], + 'lavenderblush' => [ 0xfff0f5, $attr_default ], + 'lemonchiffon' => [ 0xfffacd, $attr_default ], + 'lightcoral' => [ 0xf08080, $attr_default ], + 'lightgoldenrodyellow' => [ 0xfafad2, $attr_default ], + 'lightgreen' => [ 0x90ee90, $attr_default ], + 'lightpink' => [ 0xffb6c1, $attr_default ], + 'lightseagreen' => [ 0x20b2aa, $attr_default ], + 'lightslategrey' => [ 0x778899, $attr_default ], + 'lightyellow' => [ 0xffffe0, $attr_default ], + 'limegreen' => [ 0x32cd32, $attr_default ], + 'magenta' => [ 0xff00ff, $attr_default ], + 'mediumaquamarine' => [ 0x66cdaa, $attr_default ], + 'mediumorchid' => [ 0xba55d3, $attr_default ], + 'mediumseagreen' => [ 0x3cb371, $attr_default ], + 'mediumspringgreen' => [ 0x00fa9a, $attr_default ], + 'mediumvioletred' => [ 0xc71585, $attr_default ], + 'mintcream' => [ 0xf5fffa, $attr_default ], + 'moccasin' => [ 0xffe4b5, $attr_default ], + 'navy' => [ 0x000080, $attr_default ], + 'olive' => [ 0x808000, $attr_default ], + 'orange' => [ 0xffa500, $attr_default ], + 'orchid' => [ 0xda70d6, $attr_default ], + 'palegreen' => [ 0x98fb98, $attr_default ], + 'palevioletred' => [ 0xdb7093, $attr_default ], + 'peachpuff' => [ 0xffdab9, $attr_default ], + 'pink' => [ 0xffc0cb, $attr_default ], + 'powderblue' => [ 0xb0e0e6, $attr_default ], + 'red' => [ 0xff0000, $attr_default ], + 'royalblue' => [ 0x4169e1, $attr_default ], + 'salmon' => [ 0xfa8072, $attr_default ], + 'seagreen' => [ 0x2e8b57, $attr_default ], + 'sienna' => [ 0xa0522d, $attr_default ], + 'skyblue' => [ 0x87ceeb, $attr_default ], + 'slategrey' => [ 0x708090, $attr_default ], + 'springgreen' => [ 0x00ff7f, $attr_default ], + 'tan' => [ 0xd2b48c, $attr_default ], + 'thistle' => [ 0xd8bfd8, $attr_default ], + 'turquoise' => [ 0x40e0d0, $attr_default ], + 'wheat' => [ 0xf5deb3, $attr_default ], + 'whitesmoke' => [ 0xf5f5f5, $attr_default ], + 'yellowgreen' => [ 0x9acd32, $attr_default ], + 'green on default' => [ 0x00ff00, $attr_default ], + 'black on default' => [ 0x000000, $attr_default ], + 'default on green' => [ $attr_default, 0x00ff00 ], + 'default on black' => [ $attr_default, 0x000000 ], + 'default on default' => [ $attr_default, $attr_default ], + 'default w/ ignored bits' => [ 0x123456 | $attr_default, 0x789abc | $attr_default ], + 'italic on default' => [ $attr_default | $attr_italic, $attr_default ], ]; $test->ffi->tb_init(); @@ -160,26 +100,28 @@ $h = $test->ffi->tb_height(); $test->ffi->tb_set_output_mode($test->defines['TB_OUTPUT_TRUECOLOR']); -// Print some color names +// Test true colors $x = 0; $y = 0; -foreach ($css_colors as $color_name => $fg) { - $test->ffi->tb_print($x, $y, $fg, 0, "{$color_name} "); - $x += strlen($color_name) + 1; - if ($x >= $w) { +foreach ($css_colors as $name => [$fg, $bg]) { + $s = "{$name}, "; + $slen = strlen($s); + if ($x + $slen > $w) { $x = 0; $y++; } + $test->ffi->tb_print($x, $y, $fg, $bg, $s); + $x += $slen; } // Test bold, underline, italic in true-color mode $x = 0; -$color = 0x808080 | $test->defines['TB_TRUECOLOR_BOLD']; -$test->ffi->tb_printf($x, ++$y, $color, 0, 'yes bold (#%06x)', $color); -$color = 0x808080 | $test->defines['TB_TRUECOLOR_UNDERLINE']; -$test->ffi->tb_printf($x, ++$y, $color, 0, 'yes underline (#%06x)', $color); -$color = 0x808080 | $test->defines['TB_TRUECOLOR_ITALIC']; -$test->ffi->tb_printf($x, ++$y, $color, 0, 'yes italic (#%06x)', $color); +$color = 0x808080 | $attr_bold; +$test->ffi->tb_printf($x, ++$y, $color, $attr_default, 'yes bold (#%06x)', $color); +$color = 0x808080 | $attr_underline; +$test->ffi->tb_printf($x, ++$y, $color, $attr_default, 'yes underline (#%06x)', $color); +$color = 0x808080 | $attr_italic; +$test->ffi->tb_printf($x, ++$y, $color, $attr_default, 'yes italic (#%06x)', $color); // Test fg/bg together $x = 0; @@ -190,12 +132,13 @@ for ($r = 0x00; $r <= 0xff; $r += 0xff) { $fg = ($r << 16) + ($g << 8) + $b; $bg = ((0xff - $r) << 16) + ((0xff - $g) << 8) + (0xff - $b); $str = sprintf('#%06x on #%06x ', $fg, $bg); - $test->ffi->tb_print($x, $y, $fg, $bg, $str); - $x += strlen($str); - if ($x >= $w) { + $slen = strlen($str); + if ($x + $slen > $w) { $x = 0; $y++; } + $test->ffi->tb_print($x, $y, $fg, $bg, $str); + $x += $slen; } } } -- 2.39.5