From 8e8c0cae3be4725358739bd033d8bad9144c602f Mon Sep 17 00:00:00 2001 From: cotestatnt Date: Sat, 6 Jan 2024 16:46:24 +0100 Subject: [PATCH 1/2] improved wifi connection handling --- built-in-webpages/readme.md | 12 +- built-in-webpages/setup/all.htm | 145 ++++++ built-in-webpages/setup/all.htm.c | 233 ++++++++++ built-in-webpages/setup/all.htm.gz | Bin 0 -> 8688 bytes built-in-webpages/setup/app.js | 341 +++++++------- built-in-webpages/setup/build_setup/readme.md | 12 +- .../setup/build_setup/stringConverter.js | 9 +- built-in-webpages/setup/setup.htm | 31 +- built-in-webpages/setup/style.css | 16 +- src/AsyncFsWebServer.cpp | 187 ++++---- src/AsyncFsWebServer.h | 7 +- src/ESPAsyncWebServer/src/esp32/AsyncTCP.cpp | 136 +++--- src/setup_htm.h | 439 +++++++++--------- 13 files changed, 1012 insertions(+), 556 deletions(-) create mode 100644 built-in-webpages/setup/all.htm create mode 100644 built-in-webpages/setup/all.htm.c create mode 100644 built-in-webpages/setup/all.htm.gz diff --git a/built-in-webpages/readme.md b/built-in-webpages/readme.md index f3700926..5db82da5 100644 --- a/built-in-webpages/readme.md +++ b/built-in-webpages/readme.md @@ -1,5 +1,13 @@ If you want customize **/setup** webpage (headers, logo etc etc): * edit the source files as your needs (setup.htm, app.js, style.css) -* open a terminal in *build_setup* folder and run `npm i` to install all nodejs modules needed +* open a terminal in ***build_setup*** folder and run `npm i` to install all nodejs modules needed * run `node minify.js` -* overwrite the content of *setup_htm.h* in src folder with the new generated file +* overwrite the content of `setup_htm.h` inside `/src` folder with the new generated file + + +# +As alternative on Windows system, is possible to use the tool [SEGGER Bin2C](https://www.segger.com/free-utilities/bin2c/). + +`all.htm.gz` file need to be prepared manually (for example you could use online tools for minify CSS, JavaScript and HTML) + +This Bin2C program will create a file named `all.htm.c`, simply copy & past the content and overwrite `setup_htm.h` file \ No newline at end of file diff --git a/built-in-webpages/setup/all.htm b/built-in-webpages/setup/all.htm new file mode 100644 index 00000000..75e0ea97 --- /dev/null +++ b/built-in-webpages/setup/all.htm @@ -0,0 +1,145 @@ + + + + +Async ESP FS Web Server + + + + +
+
+
+ +

Async ESP FS Web Server

+
+ +
+
+

Connect to WiFi

+
ESP mode: +, IP address: +, Firmware: +
+
+
+ + +
+
+
+
+
+ + +
+
+ +
+ + +
+
+
+
+
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+
+ +
+
+

Update ESP Firmware

+
+
+
+ + +
Submit!

+
+
+
+
+
+
+
+

Load file to ESP FileSystem

+
+
+
    + + +

    N.B.: if folder name is "/data", the files will be uploaded at root "/" level

    +
    +
    +
    +
    + +
    +
    +
    Loading...
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/built-in-webpages/setup/all.htm.c b/built-in-webpages/setup/all.htm.c new file mode 100644 index 00000000..18d0124f --- /dev/null +++ b/built-in-webpages/setup/all.htm.c @@ -0,0 +1,233 @@ +/* + C-file generated by Bin2C + Compiled: Jul 6 2023 at 15:02:11 + + Copyright (C) 2018 + Segger Microcontroller GmbH + www.segger.com + + The Embedded Experts +*/ + +static const unsigned char _acall_htm[8688UL + 1] = { + 0x1F, 0x8B, 0x08, 0x08, 0x64, 0x70, 0x99, 0x65, 0x02, 0x00, 0x61, 0x6C, 0x6C, 0x2E, 0x68, 0x74, 0x6D, 0x00, 0xBC, 0x59, 0x5B, 0x6F, 0xFB, 0x34, 0x14, 0x7F, 0x47, 0xE2, 0x3B, 0x98, 0xFE, 0x35, 0x58, 0x45, 0x13, 0x92, 0xB4, 0xDD, 0xDA, 0x74, + 0x45, 0xDC, 0xC5, 0x1B, 0x48, 0x80, 0x00, 0x21, 0x1E, 0xDC, 0xC4, 0x69, 0xCD, 0x72, 0x53, 0xE2, 0x6E, 0x2B, 0x51, 0xBE, 0x3B, 0xE7, 0x9C, 0xD8, 0xB9, 0xB6, 0xFC, 0xC5, 0x0B, 0x8B, 0xD6, 0x36, 0xB6, 0xCF, 0xFD, 0xE2, 0x9F, 0x93, 0xA7, 0x8F, + 0xBE, 0xF9, 0xE1, 0xEB, 0x9F, 0x7F, 0xFF, 0xF1, 0x5B, 0x76, 0x52, 0x49, 0xFC, 0xF9, 0x87, 0x1F, 0x3C, 0xB5, 0xDF, 0x82, 0x87, 0xF8, 0x9D, 0x08, 0xC5, 0x59, 0x70, 0xE2, 0x45, 0x29, 0xD4, 0xFE, 0xAC, 0x22, 0x6B, 0x83, 0xA3, 0x4A, 0xAA, 0x58, + 0x7C, 0xFE, 0x65, 0x79, 0x49, 0x03, 0xF6, 0xED, 0x4F, 0x3F, 0xB2, 0xEF, 0x7E, 0x62, 0xBF, 0x8A, 0x03, 0xFB, 0x49, 0x14, 0x2F, 0xA2, 0x78, 0xFA, 0x8C, 0xA6, 0x3B, 0xEA, 0x2C, 0x55, 0x22, 0x55, 0xFB, 0xD9, 0xAB, 0x0C, 0xD5, 0x69, 0x1F, 0x8A, + 0x17, 0x19, 0x08, 0x8B, 0x6E, 0x16, 0x4C, 0xA6, 0x52, 0x49, 0x1E, 0x5B, 0x65, 0xC0, 0x63, 0xB1, 0x77, 0x67, 0x2C, 0xE5, 0x89, 0xD8, 0xBF, 0x48, 0xF1, 0x9A, 0x67, 0x85, 0x42, 0x1E, 0xA5, 0xBA, 0x10, 0x33, 0xD4, 0xAC, 0x8A, 0x80, 0x97, 0x15, + 0xF1, 0x44, 0xC6, 0x17, 0xBF, 0xE4, 0x69, 0x69, 0x95, 0xA2, 0x90, 0x51, 0x7D, 0xC8, 0xC2, 0x4B, 0x95, 0xF3, 0x30, 0x94, 0xE9, 0xD1, 0xF7, 0x9C, 0xFC, 0x6D, 0x77, 0xE0, 0xC1, 0xF3, 0xB1, 0xC8, 0xCE, 0x69, 0x68, 0x05, 0x59, 0x9C, 0x15, 0xFE, + 0x3B, 0x2F, 0x5A, 0xC1, 0x55, 0x9F, 0x8A, 0x76, 0xA1, 0x53, 0x87, 0xA0, 0x9F, 0x8C, 0xCB, 0x45, 0xC2, 0x65, 0xBA, 0x28, 0xCF, 0x49, 0xC2, 0x8B, 0x4B, 0x15, 0xCA, 0x32, 0x8F, 0xF9, 0xC5, 0x3F, 0xC4, 0x59, 0xF0, 0x5C, 0xF3, 0x6A, 0xC2, 0x4A, + 0x15, 0x20, 0x39, 0xE7, 0x05, 0x18, 0x55, 0x73, 0x9F, 0x07, 0x4A, 0xBE, 0x88, 0x05, 0xF7, 0x4F, 0x19, 0x18, 0x5F, 0x65, 0x67, 0x15, 0xCB, 0x54, 0x00, 0xF3, 0x43, 0xA3, 0xED, 0xAB, 0x90, 0xC7, 0x93, 0xF2, 0x1F, 0x1D, 0xA7, 0x3E, 0xB9, 0xCD, + 0x50, 0x29, 0xFF, 0x16, 0xFE, 0xF2, 0x21, 0x7F, 0xAB, 0x4F, 0x5E, 0x6F, 0xC4, 0x5B, 0xC1, 0x88, 0x4C, 0xF3, 0xB3, 0xF2, 0x81, 0xEA, 0xF0, 0x2C, 0x95, 0xC5, 0xCF, 0x2A, 0x8B, 0x64, 0x1C, 0x2F, 0xAE, 0x0F, 0x37, 0x32, 0x6F, 0x4D, 0x46, 0x59, + 0x70, 0x2E, 0x6F, 0x4C, 0x6A, 0xB5, 0x2B, 0x33, 0x7E, 0xC8, 0xDE, 0xAC, 0xF2, 0xC4, 0xC3, 0xEC, 0xD5, 0x77, 0x18, 0x5E, 0x4B, 0xF0, 0x22, 0x7B, 0x17, 0x45, 0x11, 0x84, 0x08, 0x62, 0xFF, 0x91, 0x4C, 0x30, 0x20, 0x3C, 0x55, 0x8D, 0x86, 0x7F, + 0xA8, 0x4B, 0x2E, 0xF6, 0x9F, 0x04, 0x27, 0x11, 0x3C, 0x03, 0xED, 0x27, 0x7F, 0x56, 0xF0, 0x89, 0x66, 0xA0, 0x63, 0x0F, 0x59, 0x11, 0x8A, 0x02, 0x79, 0xEE, 0x5A, 0x5F, 0x0F, 0xC8, 0x94, 0x78, 0x53, 0x9F, 0xFC, 0xB9, 0xE8, 0x0F, 0xA5, 0xE7, + 0xE4, 0x20, 0x8A, 0xD1, 0x60, 0xCE, 0xCB, 0xF2, 0x15, 0x98, 0xC1, 0x70, 0x29, 0x62, 0x11, 0xA8, 0xEA, 0xD4, 0x78, 0x73, 0x85, 0x31, 0xA6, 0x14, 0xF2, 0xB7, 0xCE, 0x9D, 0x91, 0xA2, 0x55, 0xA7, 0x04, 0x68, 0x74, 0xF0, 0x5D, 0xB0, 0xA2, 0xCC, + 0x62, 0x19, 0xB2, 0x77, 0x41, 0x10, 0xE8, 0x51, 0xAB, 0xE0, 0xA1, 0x3C, 0x97, 0xFE, 0x03, 0xAC, 0xEB, 0xDC, 0xEF, 0xC2, 0x6D, 0x5F, 0x4B, 0x70, 0x93, 0xF8, 0xB3, 0xCD, 0x86, 0x34, 0x4B, 0x85, 0x0E, 0x8E, 0x0F, 0x03, 0x81, 0x38, 0x65, 0x31, + 0xB0, 0xAA, 0x74, 0x76, 0xAD, 0x05, 0x5C, 0x7A, 0x81, 0xCE, 0x04, 0x2D, 0xAB, 0x59, 0x50, 0x1C, 0x0F, 0xFC, 0xDE, 0x59, 0xD0, 0x65, 0x6F, 0xE6, 0xBB, 0x81, 0xBF, 0x51, 0x49, 0x88, 0x3D, 0xA8, 0x4E, 0xCB, 0x3C, 0xCF, 0x59, 0x34, 0xFF, 0x5B, + 0x58, 0xBC, 0x9D, 0x6B, 0xAE, 0x14, 0xCE, 0xC6, 0x0F, 0xFA, 0x66, 0x28, 0xE2, 0xDD, 0x72, 0xB3, 0xDD, 0x7C, 0xFB, 0xF5, 0x4E, 0x67, 0xE0, 0xD0, 0xE5, 0x8D, 0x7B, 0xFF, 0x6C, 0x54, 0xF3, 0xDB, 0x74, 0x90, 0x69, 0x0A, 0xF4, 0x65, 0x2E, 0x53, + 0xEB, 0x70, 0x56, 0x2A, 0x4B, 0xDB, 0x84, 0xE0, 0x79, 0x2E, 0x38, 0x24, 0x7A, 0x20, 0xC8, 0xF4, 0x9D, 0x95, 0x64, 0x7F, 0xF7, 0x07, 0x31, 0x84, 0x91, 0x14, 0x71, 0x58, 0x47, 0x59, 0xA6, 0xC0, 0x5C, 0x1C, 0xB0, 0x78, 0x2C, 0x8F, 0xA9, 0x1F, + 0x88, 0x14, 0x46, 0xFA, 0xAE, 0xF5, 0xC0, 0xD3, 0x50, 0x5C, 0x47, 0x99, 0x52, 0xE8, 0xEA, 0x46, 0xD8, 0xC2, 0x3E, 0xA8, 0xB4, 0xF5, 0xB0, 0x4C, 0x51, 0x6D, 0x2B, 0x8A, 0x45, 0x97, 0x36, 0x2E, 0x66, 0xA1, 0xBB, 0x9E, 0x16, 0x74, 0x67, 0xAE, + 0xBE, 0x83, 0x4C, 0x35, 0x31, 0x77, 0x76, 0xC1, 0xB9, 0x28, 0x61, 0x30, 0xCF, 0x24, 0x29, 0x92, 0xC8, 0xB4, 0xE9, 0x37, 0x20, 0xFC, 0x6E, 0x94, 0x03, 0xC8, 0xFB, 0xAF, 0x73, 0xA9, 0x64, 0x74, 0xB1, 0x74, 0xA7, 0xD2, 0xFA, 0x6B, 0x25, 0x1B, + 0x97, 0x91, 0xAA, 0x3A, 0xB0, 0x90, 0x18, 0x0A, 0xC4, 0x1C, 0x0A, 0x4C, 0xC5, 0x54, 0x94, 0xE5, 0xFD, 0x66, 0x7D, 0x37, 0xAF, 0xCF, 0x71, 0x6B, 0x8A, 0xE2, 0x87, 0x58, 0xEC, 0x7A, 0x1E, 0x89, 0x45, 0xA4, 0x8C, 0x03, 0x1C, 0x86, 0x45, 0xC8, + 0xD0, 0x34, 0xEC, 0x46, 0xA4, 0x18, 0x18, 0x0A, 0x9A, 0x35, 0xEA, 0x6F, 0xB7, 0x8F, 0xB5, 0xCE, 0x76, 0x9D, 0xE1, 0x9E, 0xBD, 0xBE, 0xAB, 0x6D, 0x8A, 0xA6, 0x15, 0xF3, 0x83, 0x88, 0x4D, 0xD6, 0x39, 0xEE, 0xDA, 0xDB, 0x2E, 0x77, 0x79, 0x56, + 0x4A, 0x25, 0x41, 0xD5, 0x42, 0xC4, 0x1C, 0xCB, 0x7A, 0x87, 0xF2, 0xFC, 0x35, 0xDA, 0x0A, 0x26, 0x24, 0xBE, 0x05, 0x56, 0x1A, 0xBB, 0xA9, 0x9F, 0xFA, 0x21, 0x4C, 0x88, 0xD0, 0x8C, 0x69, 0x1D, 0x60, 0xD1, 0xB8, 0x40, 0xA6, 0x8E, 0x27, 0x57, + 0xF7, 0x63, 0xBB, 0xB4, 0x91, 0x3B, 0xD9, 0x69, 0x81, 0xDE, 0x91, 0x8F, 0x1F, 0x20, 0x86, 0x17, 0xAA, 0x8D, 0x23, 0xC4, 0x9F, 0x0C, 0x66, 0x4E, 0x6D, 0x8B, 0x32, 0x87, 0xBC, 0x8B, 0xB2, 0x69, 0xC6, 0x68, 0x0F, 0x59, 0x5A, 0x6B, 0xCC, 0x9A, + 0xDA, 0x2E, 0xB2, 0x57, 0xEB, 0xB5, 0xC0, 0xCC, 0x2B, 0x5A, 0xFF, 0x52, 0x8E, 0xE0, 0x07, 0xCD, 0x40, 0x82, 0xE2, 0x97, 0x56, 0x41, 0x2A, 0x91, 0x94, 0xFE, 0x81, 0x97, 0x02, 0xD3, 0x69, 0x77, 0x84, 0x79, 0xCF, 0x41, 0x46, 0x71, 0xC6, 0x51, + 0x97, 0xCA, 0x58, 0x41, 0x7F, 0x5B, 0xB1, 0x9B, 0xA8, 0xD1, 0x2C, 0x05, 0x71, 0x53, 0xBF, 0xEA, 0xF6, 0x83, 0x01, 0xDC, 0x61, 0x2E, 0x44, 0x31, 0x14, 0xF0, 0x49, 0x86, 0xA1, 0x48, 0x6B, 0x1B, 0xCB, 0xE8, 0xFB, 0x4A, 0x65, 0xB9, 0xBF, 0x86, + 0x60, 0xB6, 0xC4, 0xFC, 0x00, 0x0D, 0xE8, 0xAC, 0x5A, 0xE2, 0x4D, 0xDB, 0xBA, 0x36, 0x03, 0xF7, 0x1A, 0x95, 0xBC, 0xC3, 0x30, 0x0A, 0x94, 0x1B, 0x0D, 0x77, 0xCB, 0xFD, 0xBE, 0xE2, 0xA9, 0x4C, 0x38, 0x31, 0x2E, 0x73, 0x2A, 0xDF, 0xEF, 0xD9, + 0xB2, 0x64, 0xE0, 0x50, 0xDC, 0x4A, 0x05, 0x43, 0xA3, 0x79, 0xA1, 0x97, 0x7B, 0xB7, 0x96, 0xDB, 0xEE, 0x2D, 0x92, 0xE5, 0x4D, 0x12, 0xEF, 0x16, 0xC9, 0xEA, 0x26, 0xC9, 0x15, 0xC5, 0xBE, 0x78, 0x16, 0x97, 0xA8, 0xE0, 0x89, 0x28, 0x99, 0x59, + 0x5A, 0x39, 0x77, 0x15, 0xED, 0xA9, 0x51, 0x56, 0x24, 0x3E, 0xFD, 0x02, 0x77, 0x8B, 0xDF, 0xEE, 0x9D, 0x79, 0xED, 0x5D, 0x9F, 0xBB, 0xF7, 0x1C, 0x88, 0xE9, 0xBC, 0x7E, 0xBC, 0x45, 0xBA, 0x76, 0xD6, 0x38, 0xEF, 0x3A, 0xB7, 0x16, 0x6C, 0x1A, + 0x06, 0xB5, 0x9D, 0x17, 0xD9, 0xB1, 0x80, 0x22, 0xA6, 0x54, 0x9A, 0xE6, 0xE4, 0xB4, 0xB8, 0x74, 0xF0, 0x1E, 0x9C, 0x3B, 0x13, 0x51, 0x6F, 0xDD, 0xB6, 0x37, 0xCA, 0x35, 0x2A, 0xF0, 0x41, 0x64, 0xB7, 0x02, 0xAF, 0xC7, 0xB0, 0xAB, 0x9B, 0x06, + 0xA6, 0xA0, 0x42, 0x26, 0x4D, 0xE2, 0x98, 0xD9, 0xAB, 0x92, 0x09, 0xC8, 0xDC, 0x4E, 0x2B, 0x93, 0xE0, 0xEA, 0xDE, 0x6E, 0x76, 0xEC, 0x79, 0x35, 0x6A, 0x6E, 0x53, 0x31, 0x8E, 0x33, 0xA2, 0x67, 0xED, 0xAD, 0xEE, 0x28, 0xCE, 0xEE, 0x6F, 0x28, + 0xC1, 0x50, 0xBC, 0xF9, 0xEB, 0x2B, 0xF4, 0xDC, 0xDD, 0x65, 0x39, 0x0F, 0xA4, 0xBA, 0xF8, 0xCE, 0x44, 0xC3, 0xE5, 0x55, 0x0D, 0xB5, 0x72, 0x3D, 0x41, 0x86, 0x83, 0xBB, 0xEB, 0x72, 0xA3, 0x25, 0xC1, 0x21, 0xE8, 0x07, 0x0D, 0x2B, 0x36, 0x56, + 0xF7, 0x8F, 0x90, 0x2B, 0x6E, 0x99, 0x21, 0x6A, 0x58, 0x80, 0x05, 0x10, 0xB5, 0x58, 0xA8, 0xEC, 0x27, 0x7F, 0xF6, 0xC4, 0x4C, 0xAA, 0x8C, 0x5A, 0x1F, 0xEA, 0x9D, 0xE5, 0xF0, 0x59, 0x50, 0x7C, 0x1C, 0xD3, 0x07, 0x41, 0x52, 0x08, 0x1B, 0x59, + 0xC8, 0x63, 0xED, 0x08, 0xC8, 0x9F, 0x49, 0xB1, 0x8D, 0x5B, 0x25, 0xC1, 0x87, 0x69, 0xA7, 0x1C, 0xED, 0xBD, 0xF4, 0xF7, 0x20, 0xA6, 0xED, 0xF2, 0x54, 0xC6, 0xF7, 0xEE, 0x76, 0x6B, 0xAF, 0x97, 0xA1, 0x38, 0x32, 0x77, 0x63, 0x2F, 0xEF, 0xD8, + 0xEA, 0xC1, 0x76, 0x36, 0x77, 0xEC, 0x33, 0x06, 0xE0, 0xA5, 0x8F, 0x05, 0x86, 0x30, 0xC1, 0x5B, 0xCD, 0x11, 0x88, 0x41, 0x3E, 0x41, 0xA3, 0x20, 0xBB, 0x6E, 0x34, 0x16, 0xD3, 0x72, 0xAE, 0x15, 0x8A, 0x05, 0x13, 0x0B, 0xFC, 0x98, 0x37, 0x0D, + 0x33, 0x94, 0x85, 0x08, 0x88, 0x3C, 0x00, 0xE2, 0x24, 0x6D, 0x3D, 0x62, 0x11, 0x6A, 0x37, 0xDD, 0xD1, 0x75, 0xDD, 0x8D, 0xF7, 0xD8, 0xED, 0xC3, 0xF6, 0x5A, 0x24, 0x37, 0x4B, 0x01, 0xB0, 0x7B, 0x70, 0x8F, 0xA5, 0xC6, 0x2C, 0xB6, 0xC2, 0x95, + 0xF3, 0x96, 0xAB, 0xD9, 0x53, 0x0D, 0x54, 0x01, 0x55, 0xFB, 0x98, 0x4C, 0x38, 0x78, 0x8D, 0xC4, 0x98, 0xC6, 0x4A, 0x6D, 0xB6, 0xB6, 0x81, 0x24, 0xE5, 0x2F, 0x13, 0x18, 0x4E, 0x3E, 0x1F, 0x37, 0x61, 0xAD, 0x50, 0x24, 0x95, 0x11, 0xBC, 0x83, + 0x59, 0xAE, 0x7C, 0x4A, 0x84, 0x51, 0xA8, 0x47, 0xDB, 0x16, 0xB9, 0x47, 0xA4, 0xA1, 0x4E, 0x16, 0x9A, 0x26, 0x32, 0x2A, 0x55, 0xA3, 0x07, 0xE3, 0x15, 0x71, 0x6C, 0xB6, 0xF4, 0xC1, 0x59, 0xA1, 0x85, 0x22, 0x1E, 0x5E, 0xD3, 0x7D, 0xA5, 0x35, + 0x73, 0xAD, 0x77, 0xC3, 0x66, 0x49, 0x28, 0x82, 0xAC, 0xA0, 0x02, 0x21, 0xA4, 0x35, 0x42, 0xA4, 0x9D, 0xDC, 0x9B, 0xE8, 0x63, 0x0D, 0xE8, 0x63, 0x04, 0x79, 0x3A, 0x2A, 0x5D, 0x99, 0x57, 0xDC, 0xB7, 0x7E, 0x08, 0x9C, 0x8D, 0xD3, 0xC3, 0x4F, + 0x2D, 0x91, 0x2D, 0xC1, 0x79, 0x03, 0xE4, 0x8B, 0x5B, 0xE2, 0x31, 0xEB, 0x61, 0x15, 0x18, 0x38, 0xC4, 0x50, 0x0D, 0x91, 0xAC, 0xAE, 0xB8, 0xB0, 0xB6, 0x09, 0x01, 0x55, 0x2D, 0x42, 0xD7, 0xDD, 0x91, 0x22, 0xDA, 0xAB, 0x9C, 0x98, 0xE7, 0xA5, + 0xF0, 0xCD, 0x8F, 0xB6, 0xEC, 0xB0, 0x75, 0xD0, 0x99, 0xC1, 0x2E, 0x5F, 0x8E, 0xC3, 0x4D, 0x9F, 0x38, 0x52, 0x40, 0x0C, 0x58, 0x20, 0x3F, 0x50, 0xD9, 0xD2, 0x72, 0x4B, 0x54, 0x7A, 0x82, 0xAA, 0x02, 0x47, 0x01, 0x10, 0x03, 0x72, 0xAA, 0xFA, + 0x86, 0x52, 0xAE, 0x0F, 0x38, 0xD7, 0xF6, 0x49, 0x10, 0x3E, 0xB0, 0xBC, 0xC1, 0xB9, 0x6D, 0xE5, 0x38, 0xBB, 0x5B, 0x40, 0x85, 0xA4, 0xB2, 0x26, 0x4B, 0xB1, 0xEC, 0xAA, 0x01, 0x6C, 0x75, 0xB4, 0xB2, 0x00, 0x0E, 0xAF, 0x61, 0x8C, 0x00, 0xF0, + 0xE4, 0x41, 0x00, 0x99, 0x58, 0xD0, 0x6F, 0x1E, 0x21, 0x8A, 0x36, 0x10, 0x74, 0xC6, 0x66, 0xBB, 0x21, 0x9A, 0x3C, 0x16, 0x32, 0xB4, 0x9A, 0x9A, 0x25, 0x70, 0x05, 0x36, 0x37, 0x63, 0x00, 0x90, 0xCC, 0x40, 0x7F, 0x11, 0xC6, 0xC1, 0xF7, 0xBA, + 0x25, 0x74, 0x5B, 0xF7, 0x45, 0xC5, 0x82, 0x43, 0x1E, 0x65, 0xEA, 0x44, 0xA3, 0x03, 0x6F, 0x4C, 0x4B, 0xBD, 0xAB, 0xB4, 0x17, 0x59, 0x4A, 0x54, 0x28, 0xE1, 0x6F, 0x96, 0x0E, 0xF0, 0x03, 0xD8, 0x3B, 0xF1, 0xC9, 0x10, 0xC4, 0x23, 0xEC, 0xBF, + 0xDE, 0x81, 0xFE, 0x87, 0x06, 0x4C, 0x3D, 0xF5, 0x6E, 0x81, 0x89, 0x3B, 0x39, 0x7E, 0xDD, 0x6E, 0xB9, 0x35, 0x62, 0x7E, 0xD8, 0x72, 0x46, 0xB8, 0xB3, 0x7B, 0xCE, 0x70, 0xF3, 0xE8, 0xD0, 0xC3, 0xA6, 0xF8, 0x31, 0x08, 0x0B, 0x02, 0x52, 0x3C, + 0x5C, 0x77, 0x91, 0x31, 0x10, 0xB5, 0xC5, 0xFF, 0x1B, 0x48, 0xD0, 0xE8, 0x2A, 0xE8, 0x1D, 0x23, 0xE4, 0x9B, 0x4E, 0xED, 0x83, 0x61, 0xAD, 0x54, 0x9B, 0xE1, 0xD5, 0xA4, 0x72, 0x0C, 0x5B, 0xE8, 0x69, 0xA6, 0x94, 0xA0, 0x9F, 0x8A, 0x51, 0x0B, + 0x50, 0xD9, 0xF1, 0x18, 0x8B, 0x11, 0xFE, 0x18, 0xB5, 0x40, 0xE3, 0x1C, 0x38, 0xCE, 0x4E, 0x7B, 0x71, 0x77, 0x02, 0x72, 0x98, 0x0B, 0x0E, 0x66, 0x16, 0xCA, 0x32, 0x8C, 0xF5, 0xD1, 0xA6, 0x5D, 0x43, 0x2E, 0x99, 0xE6, 0x21, 0x96, 0xB5, 0xD7, + 0xA3, 0x2A, 0x5F, 0xA5, 0x0A, 0x4E, 0xE3, 0x53, 0x24, 0x69, 0x33, 0xC0, 0x36, 0xD3, 0xE3, 0xBF, 0xFB, 0xD0, 0x2A, 0xB9, 0x06, 0x6D, 0x0C, 0x9A, 0x5B, 0x7A, 0x57, 0xE5, 0x42, 0xFA, 0x2B, 0x19, 0xF0, 0x58, 0x97, 0x71, 0x22, 0xC3, 0x30, 0x16, + 0x7D, 0x78, 0xD4, 0x09, 0x03, 0xAC, 0xBC, 0x2E, 0x47, 0x0A, 0x9A, 0x5A, 0x1F, 0x8E, 0x8E, 0xAB, 0x7E, 0x76, 0x9D, 0xAA, 0xB5, 0x6E, 0x62, 0x56, 0x83, 0xAA, 0xAD, 0x23, 0x9A, 0x04, 0x1C, 0xEE, 0x55, 0xC6, 0x9A, 0xDC, 0x58, 0xD0, 0xB3, 0x1B, + 0xC8, 0xF7, 0x77, 0x42, 0x08, 0x86, 0x99, 0x3F, 0x1F, 0x9A, 0x4F, 0x88, 0x61, 0xF2, 0xD8, 0x07, 0xF7, 0xE6, 0x61, 0x45, 0xAC, 0xE7, 0xA6, 0xE9, 0xAE, 0x5A, 0x1F, 0xD1, 0xEF, 0x1B, 0x40, 0x64, 0x65, 0xB0, 0xCA, 0x6A, 0x88, 0x6F, 0x71, 0x6C, + 0xE0, 0x98, 0x66, 0x3F, 0x63, 0xD7, 0x0D, 0xFE, 0x2F, 0x26, 0xD2, 0xB7, 0x36, 0xF1, 0xFD, 0x06, 0xAD, 0xE7, 0xA0, 0x80, 0x45, 0x0F, 0xAE, 0x7C, 0xFA, 0x14, 0xE1, 0xA7, 0x43, 0x1D, 0x7A, 0xC2, 0xCD, 0x2E, 0x39, 0x25, 0xB9, 0xAE, 0x36, 0x1A, + 0x49, 0xD5, 0xDD, 0x12, 0x5C, 0x41, 0xA8, 0xD4, 0x40, 0x65, 0x8C, 0xE8, 0xD8, 0x1C, 0x1D, 0xF3, 0xF2, 0x35, 0xEC, 0x17, 0xFA, 0xA4, 0xAA, 0xA1, 0x4F, 0x5C, 0x29, 0xE9, 0x5D, 0xB7, 0x21, 0xDF, 0x7A, 0x88, 0x61, 0x97, 0x27, 0x68, 0x31, 0x58, + 0xCD, 0xD4, 0x50, 0xA6, 0xEA, 0x68, 0x8C, 0xB3, 0xB9, 0x9B, 0x40, 0x88, 0x48, 0x16, 0xC9, 0x2B, 0x2F, 0x06, 0xFB, 0xE4, 0x7F, 0x69, 0x37, 0xD1, 0xAB, 0x75, 0xCE, 0xF1, 0x28, 0x7D, 0xB5, 0x38, 0xBB, 0xED, 0x01, 0xEA, 0x8D, 0x8A, 0x7D, 0xA4, + 0xC0, 0x04, 0xAD, 0x8D, 0xBB, 0x1F, 0xD1, 0xF4, 0x63, 0xF5, 0xB0, 0xC5, 0xAB, 0x8F, 0x68, 0x3A, 0x1D, 0xFE, 0xF5, 0xD9, 0x0D, 0x75, 0xFA, 0x85, 0x5D, 0x9E, 0x0F, 0x89, 0x54, 0x55, 0xF7, 0xB8, 0xC8, 0x83, 0xE7, 0x2E, 0xEF, 0xF8, 0x21, 0x6B, + 0xD1, 0x43, 0x8C, 0x64, 0x90, 0x89, 0x97, 0xFA, 0x8B, 0x44, 0x84, 0x92, 0xB3, 0x32, 0x28, 0x84, 0x48, 0x19, 0x87, 0xA2, 0xBF, 0xEF, 0x36, 0x44, 0xB6, 0xDD, 0x42, 0xDE, 0xCD, 0x2B, 0x1B, 0x01, 0x12, 0x46, 0x24, 0x05, 0x6F, 0x19, 0x74, 0x60, + 0x75, 0xA0, 0xD2, 0xF8, 0x00, 0x1B, 0xAF, 0x86, 0x99, 0xEF, 0x61, 0xFC, 0xF8, 0xF0, 0xF8, 0x3E, 0xC6, 0xEE, 0x98, 0x31, 0x8D, 0x8C, 0x1E, 0x29, 0x2D, 0x6D, 0x30, 0xED, 0x3D, 0xB2, 0x1E, 0x9C, 0x0D, 0xCA, 0x3A, 0xB9, 0xE3, 0x67, 0xD4, 0x66, + 0x5F, 0xEC, 0x23, 0x2D, 0xEF, 0xE6, 0x56, 0xD4, 0x22, 0xF8, 0x61, 0xF4, 0xD6, 0x5D, 0xF3, 0x05, 0x55, 0x3A, 0x74, 0xDD, 0x07, 0xC9, 0x43, 0xE0, 0x3D, 0x38, 0x06, 0x8F, 0xF6, 0x26, 0xB3, 0xA6, 0x81, 0xAE, 0x1D, 0xE6, 0x1F, 0x41, 0x74, 0xB3, + 0xD0, 0x2E, 0x44, 0x99, 0x67, 0x69, 0x09, 0x9C, 0x18, 0x91, 0xDC, 0xAA, 0x0B, 0x73, 0x92, 0xBC, 0x46, 0xC8, 0xB5, 0x1C, 0xD4, 0x60, 0x28, 0x66, 0xFC, 0xE8, 0xAF, 0xD9, 0x4E, 0x2D, 0x25, 0xD3, 0xCB, 0x40, 0xEF, 0x5B, 0x5B, 0x1F, 0xD8, 0x3E, + 0x29, 0xDC, 0x46, 0x9D, 0xD5, 0x7B, 0xA3, 0xB6, 0x7A, 0xDC, 0x62, 0xD4, 0x86, 0xAF, 0x44, 0x26, 0xF1, 0x5F, 0x63, 0xFC, 0x3B, 0xC8, 0xDB, 0x8B, 0xE4, 0x20, 0x7F, 0x7C, 0x67, 0x84, 0x6C, 0x9D, 0x06, 0x2B, 0x92, 0xBC, 0xAE, 0xF7, 0xB4, 0xB3, + 0xD0, 0x85, 0xC7, 0xCF, 0xEC, 0xAE, 0xF7, 0x8B, 0x23, 0x47, 0xA7, 0xD6, 0xF0, 0x7E, 0xE7, 0x33, 0xFD, 0x82, 0x07, 0x7E, 0x99, 0x97, 0x4E, 0xA8, 0x3B, 0x7E, 0xE3, 0x6B, 0x19, 0x26, 0xC3, 0x3D, 0x7E, 0xE3, 0xDB, 0x04, 0xF3, 0x62, 0x4A, 0x14, + 0x2C, 0x88, 0x79, 0x59, 0xEE, 0x67, 0xA0, 0x0B, 0x6B, 0x46, 0x66, 0x38, 0x19, 0xCA, 0x17, 0x3D, 0x43, 0x00, 0x5F, 0x0F, 0x21, 0x0B, 0x99, 0x1C, 0x2D, 0x3C, 0xC2, 0x30, 0x9A, 0xD8, 0xCF, 0xBE, 0x8E, 0x65, 0xF0, 0xCC, 0x54, 0xC6, 0x9A, 0xEE, + 0xC0, 0x2E, 0xD9, 0xB9, 0x60, 0xB4, 0x00, 0x1F, 0xFB, 0xCF, 0x3E, 0x7F, 0xFA, 0x0C, 0x08, 0x49, 0x9E, 0xAB, 0x39, 0x6A, 0x5F, 0x21, 0x33, 0x7C, 0x47, 0x45, 0xDC, 0x6E, 0xBF, 0x02, 0x3B, 0xB9, 0x40, 0x4C, 0x4C, 0x86, 0x7A, 0xE9, 0x3C, 0x95, + 0x21, 0xFE, 0xB2, 0x52, 0x4E, 0xD3, 0x65, 0xCE, 0xC9, 0x4E, 0xB8, 0xB5, 0xA0, 0x41, 0x3E, 0x7F, 0xFE, 0xC4, 0xF1, 0xB6, 0x14, 0x8A, 0x4E, 0x58, 0xC6, 0x58, 0x4E, 0x93, 0xAC, 0x29, 0x80, 0x19, 0xC3, 0xA7, 0x24, 0xE8, 0x95, 0x3D, 0xAE, 0x21, + 0xF7, 0xFC, 0x2A, 0xBF, 0x93, 0xA0, 0x81, 0x3A, 0xE7, 0x4F, 0x9F, 0x71, 0x30, 0x01, 0xF9, 0xF6, 0xF9, 0x9F, 0xF3, 0x70, 0xCC, 0x1F, 0x86, 0xB8, 0x12, 0x5A, 0x82, 0x16, 0xD0, 0x32, 0x6E, 0x26, 0x89, 0xF5, 0x2F, 0xCD, 0xBA, 0x8F, 0xC1, 0xCE, + 0x21, 0x6F, 0xE2, 0x74, 0x3A, 0x27, 0x16, 0xF4, 0x84, 0x91, 0xA2, 0x58, 0x57, 0xE0, 0xC9, 0xCE, 0x78, 0x38, 0x9E, 0x31, 0x8A, 0xF6, 0x5E, 0x67, 0xBA, 0x05, 0x89, 0xF9, 0xF9, 0x13, 0x0E, 0xE3, 0x1B, 0xBF, 0xAF, 0x40, 0xE4, 0x8C, 0x5E, 0xE0, + 0x20, 0x3C, 0x9C, 0x01, 0x63, 0xA4, 0xB0, 0x12, 0x91, 0x9E, 0x31, 0x2A, 0xF1, 0x1E, 0xF6, 0x07, 0x7C, 0xE9, 0xF6, 0x35, 0xB6, 0x62, 0xD6, 0x20, 0x91, 0x3D, 0x80, 0x38, 0x05, 0xEA, 0xC0, 0x42, 0x1D, 0x33, 0x54, 0xCF, 0xB8, 0xDE, 0x24, 0x95, + 0x28, 0x86, 0x51, 0xA0, 0xBC, 0xC9, 0x72, 0x85, 0xA6, 0x91, 0x1C, 0xE3, 0x42, 0x8A, 0xB8, 0x37, 0x8C, 0xB8, 0xE5, 0xFD, 0x43, 0xAA, 0x15, 0xF5, 0xA6, 0x0D, 0x03, 0xE1, 0xBF, 0x72, 0xCB, 0xD3, 0x26, 0x01, 0x21, 0x6C, 0x54, 0xA5, 0x82, 0x48, + 0x5B, 0xBB, 0x8D, 0x4A, 0x74, 0xAA, 0x84, 0xC4, 0xC3, 0xDE, 0x02, 0xCD, 0x4A, 0xD4, 0x90, 0x44, 0x24, 0xB4, 0xE2, 0xDF, 0xEF, 0xEE, 0xEC, 0x73, 0xE2, 0x60, 0x10, 0xB4, 0x52, 0x8B, 0x12, 0xFB, 0x7C, 0xFE, 0x6C, 0x7F, 0x77, 0xBE, 0xB3, 0x13, + 0xDE, 0x2A, 0x47, 0x4B, 0x7C, 0xA1, 0x39, 0x46, 0xA5, 0x03, 0x5B, 0xA1, 0x9C, 0x69, 0x87, 0x44, 0x05, 0x3C, 0xF8, 0x88, 0x6F, 0x60, 0xBC, 0x6C, 0x4C, 0x3D, 0x0B, 0x50, 0xB9, 0xCC, 0xDC, 0xD8, 0x5F, 0x86, 0x1D, 0xB8, 0x7F, 0x04, 0xB4, 0x1C, + 0x3A, 0xC8, 0x72, 0xC9, 0x27, 0x85, 0x2D, 0xFD, 0x4B, 0xEF, 0xC7, 0x28, 0x2B, 0x62, 0xB2, 0x45, 0x8B, 0xA0, 0x93, 0x73, 0xE4, 0x43, 0xCC, 0x20, 0x39, 0x99, 0xE4, 0x61, 0xF2, 0x9C, 0xF0, 0xAB, 0x96, 0x33, 0x55, 0x15, 0x19, 0xA0, 0x69, 0x91, + 0x26, 0x25, 0xCD, 0x30, 0x17, 0x72, 0x07, 0x46, 0x6E, 0xB9, 0x6D, 0x75, 0x28, 0x6D, 0xEC, 0xFE, 0x4D, 0x2E, 0xC3, 0xE2, 0xEC, 0xEA, 0x74, 0x4D, 0xE3, 0x4A, 0x03, 0xD0, 0xCD, 0x4C, 0xCA, 0x32, 0x79, 0x0A, 0xE7, 0xF3, 0xFB, 0xBB, 0xB1, 0xCF, + 0x85, 0x24, 0xCF, 0x32, 0xA8, 0x98, 0x2B, 0x81, 0x2F, 0xB3, 0xC8, 0xBB, 0x42, 0xE3, 0x12, 0x6E, 0xE2, 0xFD, 0xA4, 0x80, 0x81, 0x8D, 0x98, 0x16, 0xE8, 0x1E, 0x48, 0x07, 0x5F, 0x25, 0x7B, 0x82, 0xF0, 0xBD, 0x90, 0xE4, 0x0A, 0x32, 0x7C, 0xD4, + 0x0F, 0x02, 0xCD, 0xD2, 0x47, 0xF1, 0x9B, 0x05, 0x56, 0x9A, 0x31, 0x60, 0xF3, 0xC6, 0x79, 0xF1, 0x2A, 0xDF, 0x14, 0x69, 0x5C, 0xC5, 0x42, 0xE7, 0xAE, 0xD4, 0x2A, 0xC3, 0xDB, 0x94, 0xC8, 0x78, 0xBA, 0xAC, 0x33, 0xAD, 0x4E, 0x0D, 0x35, 0x01, + 0x91, 0xF2, 0x9A, 0xF4, 0xA9, 0xF7, 0x0E, 0xA9, 0xD6, 0x40, 0xED, 0x4D, 0x85, 0x0D, 0x58, 0xE4, 0x59, 0x54, 0x0C, 0xC4, 0xC8, 0x01, 0xFD, 0xB4, 0xAD, 0xD8, 0x65, 0xB3, 0xDF, 0xF0, 0xCF, 0xD8, 0x6C, 0xBC, 0x17, 0x52, 0xF1, 0x9B, 0xCB, 0x40, + 0xB9, 0x5F, 0x03, 0xB1, 0x0D, 0xEF, 0xD2, 0x0E, 0xB3, 0xFC, 0x8C, 0x3E, 0x6D, 0x23, 0x71, 0x33, 0xC3, 0xAB, 0xA9, 0xE1, 0xB5, 0xB9, 0xE1, 0x35, 0xC9, 0xA1, 0x76, 0x6E, 0xCF, 0x5A, 0x75, 0x44, 0xF1, 0xB4, 0x5E, 0x15, 0x6A, 0xD1, 0xE5, 0x6E, + 0x5C, 0x1A, 0xEB, 0x84, 0xA0, 0xB5, 0x51, 0x59, 0x69, 0x84, 0x42, 0x2B, 0x0B, 0x69, 0x4B, 0x28, 0xD6, 0x3D, 0x44, 0xD9, 0x2E, 0x42, 0x3C, 0x39, 0x5E, 0xAB, 0x3C, 0xEF, 0xD4, 0xB1, 0x21, 0x7C, 0xCE, 0x72, 0xB8, 0x9B, 0xDE, 0x3E, 0x7E, 0x69, + 0x0C, 0x90, 0xC5, 0x4F, 0xFB, 0x03, 0x52, 0xD2, 0x65, 0x73, 0x85, 0x53, 0x53, 0x00, 0x30, 0xAE, 0xCD, 0x21, 0x29, 0x0E, 0xED, 0x24, 0x44, 0x37, 0xF6, 0x5D, 0xB9, 0x31, 0xE9, 0x97, 0x5B, 0xB1, 0xC8, 0x31, 0x8B, 0xAD, 0xDB, 0xD0, 0x1A, 0x92, + 0xDE, 0xD7, 0x28, 0xDD, 0xC5, 0x93, 0x00, 0x6F, 0x3B, 0x83, 0xAB, 0xEB, 0x5E, 0xBF, 0x17, 0xF4, 0x0D, 0xFC, 0xB3, 0xE1, 0x3D, 0xE3, 0x26, 0xF5, 0x16, 0xED, 0x1D, 0x18, 0x7F, 0xAB, 0x9A, 0xF3, 0x01, 0xEA, 0x06, 0x10, 0xD5, 0x28, 0x45, 0xFD, + 0x21, 0xD4, 0xCB, 0x91, 0x62, 0xAE, 0x91, 0xC5, 0x95, 0x03, 0xE8, 0x9C, 0x2B, 0xCE, 0xC7, 0xA9, 0xE4, 0x61, 0x13, 0x95, 0x2F, 0x84, 0x51, 0x14, 0x2B, 0x88, 0xDE, 0x60, 0x38, 0xEC, 0xC9, 0x7F, 0xDF, 0x38, 0xC3, 0x4B, 0x9D, 0xA2, 0x27, 0x87, + 0xBD, 0x4E, 0xD6, 0x63, 0x83, 0x32, 0x29, 0x29, 0xE9, 0x6C, 0x11, 0x5F, 0xE7, 0xCA, 0xA2, 0x5E, 0xF1, 0xFF, 0x43, 0xF4, 0x9F, 0x57, 0x98, 0x65, 0x2B, 0xBF, 0x87, 0xD1, 0x2F, 0xA6, 0xCE, 0xF4, 0xF1, 0x50, 0x79, 0x8A, 0xF6, 0x26, 0x8E, 0x6B, + 0x85, 0x00, 0x3A, 0x85, 0xA9, 0x3D, 0xE0, 0x2A, 0xCA, 0x78, 0x88, 0x75, 0xFD, 0xA5, 0x3E, 0x88, 0x54, 0x1C, 0x06, 0x2A, 0xB6, 0x1F, 0x62, 0xA0, 0x73, 0x12, 0xE4, 0x41, 0xE0, 0x4A, 0xA1, 0x73, 0x7E, 0xD1, 0x23, 0xB0, 0x5C, 0xA3, 0x4E, 0xEE, + 0x3E, 0x88, 0x49, 0x6B, 0x39, 0x07, 0x56, 0x33, 0xCA, 0xE1, 0x02, 0xD9, 0x74, 0xBB, 0xB4, 0x91, 0xEA, 0x6D, 0x99, 0x05, 0x1D, 0x68, 0xCB, 0xE8, 0x35, 0xB6, 0x82, 0x55, 0xC4, 0x7A, 0x7C, 0xEB, 0x10, 0x74, 0xD4, 0xEA, 0x10, 0x9A, 0x6B, 0x3C, + 0xAE, 0x59, 0xC4, 0xC6, 0xB6, 0x23, 0xB4, 0x70, 0x9D, 0xF2, 0xF1, 0xEC, 0x01, 0x5B, 0x31, 0xA0, 0x44, 0xBB, 0x47, 0xA3, 0x40, 0x89, 0x81, 0x29, 0xC4, 0x93, 0x50, 0x8C, 0x22, 0xC1, 0x53, 0x46, 0x44, 0xB9, 0x13, 0x44, 0x9C, 0xF9, 0x4C, 0x7C, + 0x2B, 0xD6, 0xE6, 0x9A, 0x38, 0x5B, 0xB1, 0xC5, 0x6C, 0x76, 0x69, 0x95, 0x14, 0xD1, 0xB6, 0xF2, 0xA9, 0xB8, 0x4B, 0x71, 0x00, 0x6C, 0xE2, 0x6A, 0x9D, 0xA3, 0x71, 0xE5, 0x65, 0xD5, 0x40, 0x47, 0xF5, 0x76, 0x87, 0x12, 0x02, 0xB6, 0x6D, 0xD6, + 0x9C, 0x7C, 0xB0, 0xBB, 0xA1, 0xAC, 0xA6, 0x2B, 0x16, 0x8B, 0x75, 0x62, 0x4F, 0x9C, 0x14, 0x82, 0xE8, 0x80, 0x65, 0x92, 0x45, 0xDB, 0x3D, 0x90, 0xB4, 0x23, 0x04, 0x6B, 0x6A, 0x31, 0x9F, 0x48, 0x09, 0x05, 0x04, 0x61, 0x23, 0x0F, 0xA0, 0x47, + 0x75, 0xA6, 0x72, 0x76, 0x00, 0xE1, 0x22, 0x6A, 0x11, 0x55, 0x6B, 0x78, 0x9A, 0x3C, 0x8C, 0x3A, 0xC1, 0xD5, 0x22, 0xE8, 0x4F, 0x87, 0xB3, 0x60, 0xD0, 0xF9, 0x3A, 0x0B, 0x46, 0x1D, 0x7C, 0x09, 0x86, 0x8B, 0xE0, 0x6A, 0x3A, 0x7A, 0x18, 0x76, + 0x06, 0xFD, 0x45, 0x70, 0x3D, 0x0D, 0x46, 0x8B, 0x01, 0x8A, 0xFC, 0x05, 0xDF, 0x45, 0x19, 0x06, 0xF3, 0xA9, 0xC1, 0x13, 0x13, 0xC3, 0xBA, 0x39, 0x62, 0xDD, 0x4B, 0x33, 0x4B, 0xAC, 0x12, 0x70, 0xDD, 0x54, 0x9B, 0x8B, 0x6A, 0x51, 0x28, 0x73, + 0xC3, 0x39, 0x63, 0xE8, 0xE8, 0x4B, 0x14, 0x90, 0xA4, 0x75, 0x47, 0x1E, 0x1E, 0x90, 0x98, 0x09, 0x62, 0x0A, 0xDC, 0x3C, 0x9D, 0xE1, 0xA2, 0xF3, 0x12, 0x92, 0x25, 0x33, 0x5B, 0xF1, 0x79, 0xBE, 0x47, 0x0F, 0xBD, 0xB9, 0x88, 0xAF, 0x78, 0xCA, + 0x50, 0xBD, 0x83, 0xAD, 0xA4, 0x67, 0x97, 0xD2, 0x58, 0x28, 0x73, 0x48, 0x32, 0x1A, 0xF2, 0x2E, 0x3D, 0x4D, 0xCF, 0x22, 0xC1, 0x8D, 0x62, 0x8B, 0x6D, 0xF8, 0xC9, 0x26, 0x67, 0xB5, 0x46, 0x1F, 0xC1, 0x9B, 0x1D, 0x7F, 0x4A, 0x1A, 0x25, 0x19, + 0xEA, 0xE4, 0x00, 0x98, 0x07, 0x59, 0x3A, 0x88, 0x2A, 0xFA, 0x0C, 0x49, 0x41, 0x61, 0xC6, 0x07, 0xF2, 0x65, 0x5C, 0x34, 0x43, 0x70, 0xA0, 0x3E, 0x76, 0x53, 0xA7, 0x13, 0xF9, 0x96, 0xD3, 0x9B, 0x22, 0xFC, 0xD3, 0xFB, 0xD1, 0xBB, 0x81, 0xE4, + 0x9F, 0xF4, 0x4A, 0x4D, 0x20, 0x29, 0x29, 0x43, 0xF3, 0x7C, 0x1A, 0xAD, 0xC7, 0xF9, 0x18, 0x03, 0x63, 0x04, 0xF0, 0x86, 0x4B, 0x0E, 0xCB, 0x18, 0xD4, 0x88, 0x62, 0x8C, 0xF3, 0x2B, 0xD8, 0xE6, 0x79, 0x05, 0x9E, 0xEF, 0x41, 0x1A, 0xBF, 0xC6, + 0xE9, 0xD8, 0x2F, 0x9C, 0xCB, 0x67, 0x96, 0x91, 0x06, 0xCF, 0x9B, 0x12, 0x3E, 0xD5, 0x61, 0x9A, 0x8B, 0x93, 0x7A, 0xE7, 0xFA, 0x4F, 0xAA, 0xB5, 0xB5, 0x46, 0x11, 0x43, 0xE1, 0xBF, 0x12, 0xF6, 0x45, 0x85, 0x18, 0xF7, 0x24, 0x93, 0x9B, 0xA0, + 0x20, 0x83, 0xB0, 0xE0, 0x2C, 0x82, 0xC5, 0x7D, 0xF0, 0x45, 0xAA, 0xD4, 0x0B, 0x6A, 0x2B, 0x76, 0x45, 0xFC, 0xF7, 0x7E, 0xDF, 0x49, 0x66, 0xBB, 0xDB, 0xAD, 0x54, 0x2A, 0xDA, 0x5C, 0xCE, 0x35, 0x39, 0xDF, 0x39, 0x99, 0x69, 0x3A, 0x8B, 0xAE, + 0xC0, 0x03, 0x6B, 0x57, 0x83, 0xC8, 0x9C, 0x2D, 0x80, 0xB9, 0xFB, 0xF3, 0xA2, 0x19, 0xF8, 0xB7, 0xE7, 0xC5, 0xAB, 0x26, 0xCB, 0x14, 0xFB, 0xDB, 0x13, 0x01, 0x59, 0x72, 0xFA, 0xED, 0xF2, 0xEE, 0xCB, 0xB9, 0xF9, 0x01, 0xF1, 0x3F, 0x0F, 0x03, + 0xDE, 0x25, 0xDD, 0x14, 0x55, 0x05, 0xAE, 0x05, 0xB5, 0x0D, 0x0F, 0x85, 0x48, 0x63, 0x2A, 0x4F, 0xAD, 0x77, 0xCE, 0xDD, 0x74, 0x66, 0xE8, 0x17, 0x60, 0xA6, 0x7F, 0xA9, 0xB5, 0x78, 0x7A, 0x8B, 0x88, 0xBF, 0x5D, 0x24, 0xDC, 0x2E, 0x32, 0xEC, + 0x8B, 0xCC, 0x7D, 0xFF, 0xB0, 0x99, 0xBB, 0x69, 0x9F, 0x61, 0x7C, 0xC3, 0x91, 0x72, 0xFA, 0x51, 0xF3, 0xA9, 0x7F, 0xE7, 0x0C, 0xA5, 0x3E, 0x3A, 0xB4, 0xDD, 0x3F, 0xDC, 0xB8, 0x91, 0xF8, 0xB0, 0x5D, 0xAB, 0xE1, 0xD0, 0xA1, 0xE5, 0x6E, 0xB3, + 0x13, 0xB7, 0x3C, 0x5B, 0x6E, 0x5A, 0xEC, 0xB5, 0x2F, 0x41, 0x70, 0x9E, 0xEF, 0x2B, 0xF3, 0x56, 0xE1, 0x58, 0xEB, 0xF8, 0xFD, 0xEC, 0xE2, 0x4B, 0x33, 0x73, 0xF4, 0x7E, 0x61, 0x2E, 0xCE, 0xDF, 0xF3, 0x32, 0xEF, 0xC9, 0xFB, 0xAF, 0x17, 0x97, + 0x67, 0x6B, 0xCA, 0xAC, 0x9B, 0xED, 0xFB, 0xDB, 0x1F, 0x3F, 0xCF, 0x1E, 0xF4, 0x04, 0x79, 0xF9, 0xE2, 0x38, 0x47, 0x9B, 0xCA, 0x81, 0x5D, 0x9A, 0xFD, 0xBB, 0xC1, 0x0F, 0x78, 0xD9, 0xDC, 0x59, 0x1C, 0xC9, 0x3E, 0xCE, 0xB2, 0x83, 0xBE, 0xE3, + 0xC0, 0x71, 0xFB, 0x4C, 0xB6, 0xBB, 0xE1, 0x44, 0xCB, 0xFE, 0x6A, 0x83, 0xFA, 0x67, 0x06, 0xF3, 0xE9, 0xC7, 0xD9, 0x87, 0x27, 0x9F, 0xB6, 0xDB, 0xEF, 0x97, 0x8F, 0x1F, 0x3D, 0xFA, 0xF8, 0x79, 0xFB, 0xE9, 0xE7, 0x3B, 0x87, 0x0B, 0x83, 0x47, + 0xEF, 0xA1, 0x8C, 0x6A, 0xDB, 0x9E, 0x6F, 0x1F, 0x9D, 0xF2, 0xCE, 0xF1, 0x21, 0x2F, 0x88, 0x3E, 0x5C, 0xF2, 0x6B, 0xDD, 0x4B, 0xBD, 0x72, 0x34, 0xF8, 0x43, 0x25, 0x7E, 0xFF, 0xBC, 0xF8, 0x7E, 0x76, 0x8E, 0x09, 0xEA, 0xF2, 0x23, 0x3E, 0xD8, + 0x7F, 0xFB, 0xEE, 0xEB, 0x29, 0xAE, 0xFB, 0xC6, 0x1F, 0x67, 0xA7, 0x5B, 0x9C, 0x4A, 0xBF, 0x60, 0xCF, 0xDC, 0xC5, 0xF8, 0xBC, 0xBD, 0xB6, 0x07, 0x0E, 0x71, 0xF9, 0xFC, 0xF9, 0x3B, 0xB7, 0x00, 0x54, 0x71, 0x8E, 0xA2, 0x1C, 0x27, 0xDC, 0x87, + 0x3E, 0xB9, 0xC7, 0x82, 0xD6, 0x82, 0x05, 0x42, 0xB8, 0x05, 0x3E, 0x5F, 0xEC, 0xEE, 0xE9, 0x78, 0x97, 0x7F, 0x53, 0xA9, 0xEF, 0x9E, 0xEF, 0x8B, 0x75, 0x34, 0x61, 0x0C, 0xAE, 0x9A, 0xC0, 0x7F, 0xDA, 0xC7, 0x13, 0xEF, 0xC4, 0x64, 0x83, 0x9F, + 0x4D, 0x1D, 0x39, 0x26, 0xB5, 0x2A, 0x4F, 0xE4, 0x84, 0x42, 0x02, 0x29, 0x34, 0xAB, 0xBC, 0x11, 0x59, 0xC5, 0x8D, 0x2C, 0xC7, 0x68, 0x0A, 0xE8, 0x03, 0x84, 0x0B, 0xC4, 0xCA, 0xA8, 0x23, 0x08, 0x65, 0x27, 0x68, 0xD3, 0x26, 0x42, 0x36, 0xAC, + 0x45, 0xE0, 0x4D, 0x68, 0x32, 0xD0, 0xC6, 0x6C, 0xEA, 0x44, 0x30, 0xA2, 0xC7, 0xA8, 0x2E, 0x75, 0xA6, 0x9C, 0x4A, 0x01, 0xF5, 0x4A, 0xA5, 0x36, 0xA4, 0xDF, 0x4A, 0xBF, 0x22, 0x74, 0x2C, 0xA2, 0x9E, 0x45, 0xD0, 0x14, 0x23, 0xF4, 0x3D, 0x8F, + 0x85, 0xDE, 0xD1, 0xD1, 0x3D, 0x54, 0x02, 0x34, 0xD6, 0xDE, 0x63, 0x26, 0x65, 0x44, 0x2F, 0xD5, 0x81, 0xE7, 0x45, 0xDB, 0x65, 0xFB, 0xBF, 0x1A, 0xB0, 0xE1, 0xCA, 0x71, 0xE7, 0xB3, 0x2F, 0x1B, 0x89, 0xAB, 0x01, 0x5A, 0x2B, 0xBC, 0xEE, 0xA4, + 0x95, 0x64, 0xB7, 0x0C, 0x9B, 0x01, 0x93, 0xB1, 0x29, 0x23, 0xA4, 0x1E, 0x5B, 0x2F, 0x95, 0x7D, 0x7A, 0xB3, 0xD8, 0xBD, 0x06, 0xDD, 0xB3, 0x8A, 0x11, 0xD2, 0x5A, 0x31, 0x9A, 0x61, 0x59, 0xF0, 0xFE, 0x74, 0x71, 0x0B, 0x2E, 0xE2, 0xAD, 0xE4, + 0x67, 0xDE, 0x7A, 0x03, 0xB6, 0x5D, 0x1A, 0x19, 0xAC, 0xC4, 0x91, 0x6D, 0xA0, 0x27, 0xB4, 0x82, 0xA1, 0xA1, 0x58, 0xD8, 0x17, 0x5B, 0x42, 0x6C, 0x7F, 0x4E, 0x33, 0x6B, 0x29, 0xB6, 0xEC, 0x88, 0xD8, 0x13, 0x9A, 0x25, 0x5E, 0xD9, 0xF6, 0x48, + 0x90, 0xF0, 0x7E, 0x95, 0xF6, 0x28, 0x83, 0xF5, 0x4B, 0x06, 0x78, 0xB0, 0xC5, 0x15, 0x42, 0x5B, 0x6D, 0x31, 0xC9, 0x16, 0x00, 0x99, 0x9E, 0x45, 0x1B, 0xBB, 0x18, 0x1D, 0xEC, 0x4F, 0xB3, 0x4D, 0x9B, 0xB2, 0x92, 0xC2, 0x0D, 0x84, 0x67, 0xC1, + 0x86, 0xBE, 0x90, 0xDA, 0xE8, 0x11, 0xCA, 0x57, 0x44, 0xCA, 0x5C, 0x8F, 0xD7, 0xEB, 0xF3, 0xAF, 0x77, 0x8C, 0x18, 0x20, 0x1F, 0x25, 0x3A, 0x30, 0x44, 0xB3, 0x0B, 0x23, 0xF6, 0xF0, 0xDB, 0x61, 0x2D, 0x40, 0x93, 0x9B, 0x41, 0xA7, 0xFB, 0x1F, + 0x7D, 0x87, 0x9F, 0x4C, 0x62, 0x88, 0x66, 0x25, 0x69, 0x94, 0xAC, 0x44, 0x42, 0xDF, 0x05, 0x38, 0xD0, 0x68, 0x48, 0xD1, 0x74, 0x6B, 0x12, 0x70, 0x98, 0x4C, 0xDB, 0x14, 0x1C, 0x23, 0x44, 0x61, 0x00, 0x85, 0x6D, 0x80, 0x06, 0x53, 0xBD, 0xBA, + 0x94, 0x30, 0xF1, 0xA2, 0x4C, 0xF6, 0x5C, 0x8D, 0x0F, 0x50, 0xF0, 0x6D, 0x85, 0xB0, 0xEB, 0x72, 0x32, 0xEA, 0x42, 0xD6, 0x82, 0x98, 0x40, 0x4D, 0x7A, 0xB2, 0x7B, 0xA3, 0x68, 0xEB, 0x20, 0x8E, 0x6C, 0x93, 0xAE, 0x46, 0xB4, 0xCD, 0x86, 0xE2, + 0x79, 0x6C, 0x0B, 0x32, 0xA5, 0x73, 0x0B, 0x65, 0xD1, 0xB0, 0x8A, 0x94, 0x15, 0x54, 0xEE, 0x28, 0xD0, 0xFC, 0x8D, 0x18, 0x61, 0xDE, 0xCB, 0x38, 0xAC, 0x65, 0x2A, 0x6E, 0x30, 0x0C, 0xE2, 0x58, 0x39, 0x18, 0xDC, 0x10, 0xA1, 0xED, 0x12, 0x5A, + 0x4C, 0x3D, 0xDA, 0x13, 0x10, 0xD3, 0xCC, 0x89, 0x18, 0x52, 0x7A, 0x52, 0xE5, 0x35, 0x8A, 0x80, 0xD2, 0xC3, 0x94, 0x48, 0xF7, 0xAE, 0x60, 0x6D, 0xBA, 0xDC, 0x94, 0x59, 0xCB, 0x19, 0x43, 0x90, 0x59, 0xCF, 0x50, 0xAA, 0x8D, 0xC1, 0x58, 0x0E, + 0x2A, 0x3C, 0x21, 0x5C, 0x5E, 0xF5, 0x15, 0x81, 0xAA, 0x58, 0xD1, 0x93, 0xEE, 0x0D, 0xD0, 0x9D, 0x24, 0x57, 0xA4, 0x51, 0x67, 0x4F, 0xBA, 0xEA, 0x31, 0xBB, 0x1A, 0x0D, 0x6B, 0x10, 0x01, 0x0E, 0x8A, 0x02, 0x0C, 0x61, 0x6D, 0x13, 0x8F, 0x83, + 0xE8, 0xA2, 0x49, 0x8E, 0xFA, 0x2E, 0x81, 0x0A, 0x4B, 0x3C, 0x71, 0xCA, 0x4C, 0x85, 0x4A, 0x99, 0x3C, 0xDC, 0x53, 0x81, 0x88, 0xE5, 0xDA, 0x6D, 0x24, 0xB7, 0xA4, 0x55, 0xCA, 0xAC, 0x33, 0x92, 0x0D, 0x67, 0x88, 0xF7, 0x48, 0x7F, 0x0F, 0xAF, + 0x91, 0x73, 0xC9, 0x24, 0x48, 0x54, 0x8A, 0x28, 0x25, 0x28, 0x45, 0x40, 0x61, 0xB8, 0x5B, 0xA0, 0xFB, 0xEF, 0xF8, 0x87, 0xB1, 0xB6, 0x5E, 0x26, 0x86, 0xCF, 0xC2, 0x8D, 0x47, 0x5D, 0x73, 0x14, 0x35, 0xA6, 0x70, 0x1E, 0x31, 0x86, 0x5F, 0x56, + 0x3C, 0x83, 0xAF, 0x53, 0xE0, 0xD1, 0x25, 0x00, 0x91, 0x6A, 0x4D, 0x6A, 0x45, 0x0B, 0x4D, 0x23, 0x60, 0x83, 0x46, 0xC0, 0x0E, 0x3D, 0x02, 0x36, 0x31, 0x02, 0xB6, 0x32, 0x02, 0x36, 0xF7, 0x08, 0x80, 0x4A, 0xCB, 0x89, 0x95, 0x12, 0x0A, 0x27, + 0x65, 0xE6, 0x42, 0xB5, 0x32, 0x12, 0xA0, 0xCE, 0x91, 0xB0, 0xC3, 0x1C, 0x09, 0x5A, 0xA7, 0x27, 0xBA, 0xAB, 0x48, 0x0E, 0xD8, 0x35, 0x84, 0xC3, 0xD6, 0x0E, 0x87, 0x15, 0x69, 0xC0, 0x5B, 0x09, 0x0D, 0x78, 0x2B, 0x7E, 0x06, 0x1E, 0x43, 0xDD, + 0x8F, 0xEE, 0x74, 0x19, 0x38, 0x65, 0x06, 0xA0, 0x9F, 0x33, 0x00, 0x5A, 0x3D, 0x03, 0x68, 0xA8, 0x67, 0x80, 0xAD, 0x73, 0x06, 0xC0, 0x1B, 0x1D, 0x5F, 0x05, 0x95, 0x2F, 0x9F, 0x07, 0x11, 0x8D, 0xB6, 0xE2, 0x51, 0x14, 0x01, 0x87, 0x9E, 0x9D, + 0x75, 0x77, 0xCC, 0x88, 0x81, 0x9F, 0xB4, 0x37, 0x25, 0x3B, 0xEC, 0xCF, 0xE3, 0x31, 0xBF, 0xAE, 0x25, 0xDB, 0xB0, 0x8A, 0x23, 0xEB, 0x0F, 0x1C, 0x70, 0x5D, 0x45, 0x1B, 0x37, 0x52, 0xF7, 0x8E, 0xD7, 0x08, 0x00, 0x56, 0x07, 0x14, 0x2F, 0x50, + 0xDE, 0xE4, 0x89, 0xEA, 0x57, 0xAB, 0x6D, 0xAF, 0xED, 0xD7, 0x53, 0x60, 0x60, 0x34, 0xC4, 0x6A, 0x80, 0x09, 0x5B, 0x61, 0x24, 0x12, 0xA2, 0x1F, 0x46, 0x9E, 0x0A, 0x96, 0x25, 0xA8, 0x03, 0x88, 0xC5, 0xC6, 0x63, 0x43, 0xE8, 0x0A, 0xBC, 0xB8, + 0x96, 0x2C, 0x16, 0x22, 0x5A, 0x36, 0x95, 0xB4, 0x3A, 0x31, 0x7C, 0x94, 0xAB, 0x63, 0x7B, 0x48, 0x68, 0x09, 0x0E, 0xE4, 0x66, 0x68, 0x30, 0x71, 0x7A, 0xCE, 0x11, 0x78, 0x3D, 0x25, 0x74, 0x04, 0x03, 0xD2, 0xB8, 0xD9, 0x65, 0xBA, 0x10, 0xA6, + 0x01, 0x3D, 0xC4, 0x9E, 0x32, 0x1B, 0xE6, 0xE2, 0x94, 0x6D, 0x44, 0x8B, 0x39, 0x26, 0x9B, 0x61, 0x8D, 0xC5, 0xB6, 0x45, 0x05, 0xAE, 0x33, 0x9A, 0xC0, 0xB9, 0x18, 0xAA, 0x63, 0x09, 0xCC, 0x07, 0x6E, 0x43, 0x53, 0x50, 0x04, 0xF6, 0x14, 0xF5, + 0x01, 0x1B, 0xCB, 0xAE, 0xB4, 0x75, 0x14, 0x6A, 0x24, 0x16, 0x79, 0x5B, 0x23, 0xF0, 0x6A, 0x1B, 0x1D, 0x26, 0xCC, 0xA9, 0xCC, 0xCD, 0x9A, 0xAC, 0x7B, 0x81, 0xE2, 0xEC, 0xF1, 0x2A, 0xBA, 0xCF, 0x7F, 0x9F, 0x5D, 0x8B, 0x6C, 0xBD, 0x06, 0xAF, + 0xBF, 0x06, 0x6F, 0xDC, 0xCF, 0x8E, 0x23, 0x76, 0x55, 0x70, 0x5C, 0x44, 0x12, 0xB2, 0xE3, 0x33, 0xC0, 0x67, 0x0B, 0x97, 0x62, 0x7C, 0x60, 0x12, 0x37, 0x02, 0x8F, 0x7A, 0x9E, 0xBC, 0x1D, 0x0A, 0xAF, 0xFD, 0xD8, 0xA7, 0xDE, 0xE5, 0x30, 0x4B, + 0x50, 0x85, 0xF3, 0x66, 0xA2, 0xD9, 0x6C, 0x1E, 0xD6, 0x40, 0xA8, 0x90, 0x0D, 0xF0, 0x83, 0x65, 0x49, 0x26, 0x84, 0xC1, 0x13, 0x3F, 0x95, 0xD1, 0x9E, 0x60, 0xE4, 0xD4, 0x49, 0xD5, 0x49, 0xEE, 0x82, 0xC0, 0xBD, 0xFC, 0x69, 0xEF, 0x5A, 0x98, + 0xDB, 0xA8, 0x81, 0xF0, 0x5F, 0x71, 0x44, 0x48, 0x4E, 0x58, 0xBE, 0xC4, 0x29, 0x74, 0xC0, 0xE6, 0x92, 0xA1, 0x90, 0xF2, 0x6E, 0x33, 0xBC, 0x67, 0x8C, 0x71, 0xAE, 0xB1, 0xD2, 0x1C, 0xE3, 0xDA, 0xC1, 0x77, 0x29, 0xA4, 0xEE, 0xFD, 0x77, 0xBE, + 0x5D, 0x49, 0xA7, 0x93, 0xCF, 0x8F, 0x86, 0xC7, 0x0C, 0xCC, 0x64, 0x18, 0x88, 0x4F, 0x8F, 0x95, 0xB4, 0x5A, 0xAD, 0xF6, 0x29, 0xF8, 0x4C, 0x99, 0x42, 0x1C, 0x6E, 0x50, 0x12, 0x37, 0x7D, 0x68, 0x3A, 0x3F, 0x44, 0x5F, 0x82, 0xC6, 0xDF, 0x3C, + 0x02, 0xB7, 0xB1, 0x63, 0x7A, 0xFC, 0x3D, 0x99, 0x2D, 0x61, 0x10, 0x98, 0xB8, 0x3A, 0x7A, 0xF7, 0x25, 0x18, 0xDA, 0xE1, 0x0F, 0x87, 0xAF, 0x84, 0x15, 0x2E, 0x29, 0x7A, 0x42, 0x1C, 0x04, 0x32, 0x0A, 0xA0, 0x62, 0xC5, 0xF8, 0xAF, 0x59, 0x70, + 0x8B, 0x17, 0x48, 0x38, 0xBC, 0xE8, 0xD2, 0x27, 0xB8, 0x07, 0xB8, 0x44, 0x8B, 0x27, 0xDE, 0xA5, 0x3F, 0xF9, 0x07, 0x40, 0x5C, 0xE7, 0x81, 0xB9, 0xC4, 0x3A, 0x28, 0xB8, 0xE8, 0x50, 0xC3, 0x0E, 0x35, 0xEC, 0x3C, 0xA4, 0x82, 0x8E, 0x29, 0x7F, + 0x05, 0xE0, 0x40, 0xED, 0x45, 0xE7, 0x88, 0x6E, 0xC7, 0xC3, 0xCE, 0x7B, 0x9D, 0x23, 0x2C, 0x04, 0x7F, 0xDE, 0xCB, 0xCD, 0x8F, 0x16, 0x7E, 0x82, 0x99, 0xD3, 0x07, 0xFE, 0x98, 0x6A, 0x53, 0xF6, 0xEA, 0xC5, 0x61, 0xE7, 0x7D, 0x82, 0xFB, 0x90, + 0x3A, 0x82, 0x6B, 0x81, 0x85, 0xE1, 0xCF, 0x83, 0xBC, 0xCB, 0x37, 0xB3, 0xF9, 0xA7, 0x63, 0x3E, 0x3A, 0xF8, 0xC1, 0xD5, 0xF4, 0xCF, 0x2B, 0x61, 0xF1, 0xF1, 0x35, 0xBC, 0xDF, 0x75, 0x74, 0x3C, 0x50, 0x0F, 0x3F, 0x3B, 0xEA, 0xE2, 0xE2, 0xC6, + 0xBD, 0x8D, 0x8F, 0x6E, 0x97, 0xBE, 0xBA, 0x0F, 0xF0, 0x09, 0x89, 0x92, 0x76, 0x99, 0xBF, 0xA9, 0xBA, 0x0B, 0xAA, 0x04, 0x90, 0xFE, 0xCB, 0x74, 0x6E, 0x35, 0x63, 0xB2, 0x03, 0x29, 0xE8, 0x1F, 0x05, 0x04, 0x17, 0xC5, 0xDA, 0xCD, 0xC7, 0xC8, + 0xE9, 0x20, 0x53, 0x55, 0x72, 0x79, 0x33, 0x65, 0xAB, 0x4F, 0x24, 0x17, 0xA5, 0x82, 0xF8, 0x9F, 0x4C, 0xF5, 0xEF, 0xAD, 0xEF, 0xBF, 0xF9, 0x2A, 0x3A, 0x27, 0x7D, 0x01, 0xEA, 0xC2, 0x2E, 0x22, 0x47, 0xA6, 0x08, 0xAB, 0x8B, 0x21, 0x11, 0xB1, + 0x7E, 0x1D, 0x5F, 0xC1, 0xD6, 0x43, 0xA6, 0x91, 0xF2, 0x5C, 0xAA, 0xD9, 0x35, 0x15, 0xE5, 0x09, 0x3A, 0xEF, 0x7A, 0x58, 0x5A, 0x2E, 0xE6, 0x88, 0x46, 0x98, 0x4F, 0x5B, 0x63, 0xA4, 0x2B, 0xC2, 0x8F, 0x5F, 0xC4, 0xD0, 0x4A, 0x4E, 0x27, 0x9A, + 0x7E, 0x3E, 0xBA, 0xFD, 0x7C, 0x8C, 0x16, 0x65, 0xDF, 0x35, 0x6F, 0x61, 0xC8, 0xD3, 0x49, 0xA4, 0xD5, 0x48, 0x2E, 0x68, 0xCE, 0x45, 0x52, 0xF5, 0xBA, 0x60, 0x05, 0xC6, 0x76, 0x44, 0xA7, 0x7E, 0x76, 0x19, 0x89, 0xD9, 0xB3, 0x5F, 0x71, 0x93, + 0x89, 0x24, 0x21, 0x2B, 0xCF, 0xEC, 0xB2, 0x35, 0x92, 0x30, 0xAE, 0x44, 0xD4, 0x93, 0xB2, 0x8E, 0xF0, 0x59, 0xC4, 0xB9, 0x2E, 0x3E, 0x2A, 0x8A, 0x79, 0x86, 0x4C, 0x3E, 0x1D, 0xE5, 0x6A, 0x34, 0xC8, 0x87, 0xB2, 0x6F, 0xA7, 0x54, 0x94, 0xD5, + 0xC0, 0xE4, 0x75, 0xFC, 0x0C, 0xBA, 0xA4, 0x73, 0xF1, 0x46, 0x66, 0x02, 0x3A, 0xD9, 0x8D, 0x44, 0xE5, 0x5E, 0x95, 0x7D, 0xFF, 0x3B, 0x49, 0x12, 0x1D, 0xD3, 0xB0, 0x27, 0x91, 0xF9, 0x9B, 0x08, 0x72, 0xCC, 0x08, 0x85, 0x0E, 0x95, 0x2B, 0x55, + 0xC8, 0x98, 0x95, 0x3D, 0x32, 0x34, 0xC5, 0x73, 0xFD, 0x02, 0xF1, 0x67, 0x91, 0x60, 0x95, 0x55, 0xA2, 0x1D, 0xFF, 0x6A, 0xB6, 0x83, 0xB7, 0xC9, 0x35, 0x92, 0x3D, 0x07, 0xDC, 0x0F, 0xBC, 0x7E, 0x00, 0x74, 0xDC, 0x0E, 0x3D, 0x9C, 0x85, 0xF4, + 0x18, 0xC0, 0xB6, 0x90, 0x3F, 0x82, 0x1A, 0x61, 0xF1, 0xE8, 0x6F, 0x6C, 0x20, 0x9B, 0x96, 0x70, 0xA9, 0xE1, 0xB1, 0x89, 0x40, 0x2A, 0x6D, 0x41, 0x8E, 0x0F, 0x34, 0x85, 0x3D, 0x0C, 0x7B, 0x9E, 0x1C, 0xEB, 0xF8, 0xD7, 0x9C, 0x28, 0xC9, 0x97, + 0x2C, 0x60, 0x09, 0xC4, 0x00, 0x97, 0xD9, 0x13, 0xEB, 0xEF, 0xC0, 0x1E, 0x2A, 0x3F, 0xCA, 0x9A, 0x75, 0x94, 0xB5, 0x09, 0x72, 0xF4, 0x12, 0x83, 0x20, 0xAA, 0x2A, 0xE6, 0xB7, 0x34, 0x49, 0x53, 0xD8, 0x11, 0x6D, 0x1D, 0x1B, 0x85, 0x37, 0x36, + 0x59, 0xD9, 0x4F, 0x10, 0x68, 0x11, 0x67, 0x63, 0x19, 0x5B, 0x07, 0x54, 0xB2, 0x73, 0x58, 0x5E, 0xA4, 0x34, 0xDD, 0x11, 0x2D, 0xCE, 0xB5, 0x5E, 0x6E, 0x02, 0x88, 0xE4, 0xEE, 0xC0, 0x74, 0x8C, 0xF3, 0xAC, 0xB8, 0xCA, 0xF2, 0xF8, 0x42, 0x4F, + 0x26, 0xF9, 0xA0, 0x3B, 0x8C, 0x4D, 0xAE, 0xDA, 0x77, 0x5F, 0x7F, 0x45, 0x13, 0xAF, 0xDC, 0x22, 0x42, 0xFA, 0x8A, 0x4D, 0x1D, 0x3C, 0x19, 0xC5, 0x9C, 0xBA, 0x1B, 0xD5, 0xD6, 0xB6, 0x02, 0x39, 0x8B, 0x09, 0x5C, 0x78, 0x23, 0x7F, 0x00, 0x7E, + 0xBB, 0xD1, 0xF3, 0x5B, 0x63, 0x0F, 0x05, 0x8D, 0x8B, 0xB7, 0xAA, 0xC0, 0x0C, 0x90, 0xE5, 0xA8, 0x36, 0x03, 0x21, 0x94, 0xA6, 0x80, 0xAD, 0xD3, 0x14, 0x8B, 0xC5, 0x51, 0x2A, 0x24, 0x90, 0xCF, 0x47, 0x22, 0x31, 0xA7, 0x4B, 0x14, 0x40, 0xB7, + 0xCA, 0x12, 0xC1, 0x10, 0x44, 0xBB, 0xE8, 0xE7, 0x31, 0xB9, 0x5F, 0x55, 0x4E, 0x98, 0x3F, 0x7D, 0x89, 0xC1, 0x68, 0x1B, 0x34, 0x00, 0x46, 0x82, 0xCD, 0x20, 0x42, 0x79, 0xDC, 0x4B, 0x34, 0xF3, 0x83, 0x9D, 0x7F, 0x58, 0x8C, 0x8F, 0xEB, 0xCE, + 0x49, 0x41, 0xA1, 0x9A, 0x33, 0x9B, 0xC3, 0x6F, 0x77, 0x87, 0x2D, 0x6A, 0x6E, 0xA7, 0x76, 0x17, 0x59, 0x49, 0xD6, 0x2A, 0xF4, 0x3B, 0xAF, 0x83, 0x6A, 0x33, 0x2C, 0x6A, 0xC9, 0x98, 0xB5, 0xED, 0x76, 0x17, 0x3A, 0xA6, 0xCF, 0x72, 0x55, 0x87, + 0x7D, 0x74, 0xF0, 0x06, 0x3C, 0x1B, 0x5C, 0x27, 0x8E, 0xF7, 0xDB, 0xE8, 0x53, 0x80, 0x08, 0x9E, 0x17, 0x57, 0x6D, 0xC4, 0x48, 0x3D, 0x7A, 0xC1, 0x9D, 0x45, 0xD8, 0x19, 0x6D, 0x34, 0x0C, 0x8A, 0x88, 0xC0, 0x3D, 0x21, 0x38, 0xC7, 0xF7, 0x1A, + 0xF1, 0x76, 0x8D, 0xD8, 0x6C, 0xDB, 0x7E, 0x8F, 0x11, 0x76, 0xAF, 0x10, 0xFF, 0x3B, 0x0A, 0xB1, 0xC7, 0xB3, 0x1A, 0xC5, 0xE4, 0x95, 0x99, 0x8E, 0x3F, 0xBE, 0xCA, 0x26, 0xE3, 0x28, 0x97, 0x25, 0x73, 0x4C, 0x1F, 0xC3, 0xB5, 0x9E, 0x37, 0x87, + 0x7C, 0xFD, 0x34, 0xBF, 0xFE, 0x16, 0xB6, 0x3D, 0x62, 0x39, 0x0B, 0xCF, 0xB3, 0x19, 0x50, 0xCE, 0xE5, 0x9B, 0x39, 0x37, 0xC6, 0xB4, 0xB1, 0x6B, 0x21, 0xAF, 0xD3, 0x31, 0x15, 0x29, 0x5B, 0x9D, 0x5D, 0x2F, 0x55, 0x66, 0xD7, 0x54, 0xE5, 0xFC, + 0x8A, 0x4B, 0x95, 0xAE, 0x18, 0x0C, 0x3E, 0xE5, 0x00, 0xCA, 0x6A, 0xBE, 0x3C, 0xC1, 0xC7, 0xF3, 0xD9, 0x0B, 0x12, 0x55, 0x58, 0x14, 0x60, 0x4E, 0x58, 0x24, 0xE9, 0xEF, 0x69, 0x56, 0x98, 0x6A, 0x14, 0x2F, 0x8C, 0xBB, 0xA9, 0x37, 0x02, 0x52, + 0x72, 0x5B, 0x57, 0xC4, 0x74, 0x05, 0x47, 0xD5, 0xFD, 0x9E, 0xD7, 0x2F, 0x8F, 0x82, 0xAC, 0x93, 0x8F, 0xD2, 0x5C, 0x3F, 0x7C, 0x97, 0xA0, 0x82, 0x2F, 0x5A, 0xAE, 0xA8, 0x07, 0xA3, 0x21, 0xB0, 0xC7, 0x11, 0x15, 0xD1, 0xC1, 0xE0, 0x97, 0x9F, + 0xC7, 0xA3, 0xE1, 0xC1, 0x73, 0x25, 0x30, 0x63, 0x84, 0xE9, 0x66, 0x45, 0x24, 0x46, 0xC4, 0x2F, 0x1D, 0xF7, 0x44, 0x18, 0xA9, 0x50, 0x0B, 0xC6, 0x7B, 0x4F, 0x4C, 0x00, 0x13, 0x8C, 0x65, 0x7E, 0xD1, 0x13, 0xE4, 0x15, 0xEA, 0x65, 0x2F, 0x60, + 0x23, 0x3E, 0xB8, 0x9E, 0x3E, 0xEF, 0x3F, 0xE3, 0x91, 0x54, 0x0B, 0xFC, 0x55, 0x99, 0x1C, 0xA6, 0x73, 0x13, 0x2D, 0xBB, 0xBB, 0xC8, 0x07, 0x87, 0xC3, 0xD2, 0x27, 0x52, 0x50, 0x41, 0x97, 0x0A, 0xCE, 0x4B, 0xD9, 0x07, 0xC6, 0x5C, 0x9C, 0xAA, + 0x90, 0x21, 0x57, 0x0F, 0xAA, 0x2C, 0x65, 0x44, 0x99, 0x0C, 0xCB, 0x43, 0x79, 0x47, 0x10, 0x4F, 0x16, 0x4A, 0x98, 0xA7, 0x1F, 0xC4, 0x96, 0xB6, 0xB0, 0xE1, 0x53, 0x63, 0x34, 0x1B, 0x6B, 0xA0, 0x5C, 0xB7, 0x08, 0x33, 0x01, 0x21, 0x9D, 0x91, + 0x2F, 0x07, 0x35, 0xF3, 0xFC, 0x2F, 0x88, 0x08, 0xE8, 0x3F, 0x32, 0x42, 0x68, 0x40, 0x6E, 0xB4, 0x65, 0x01, 0xB9, 0xF9, 0x2E, 0x91, 0x97, 0x59, 0x13, 0x2D, 0x37, 0xD2, 0x28, 0xC9, 0x7D, 0x7C, 0x61, 0x92, 0xDC, 0xA7, 0x25, 0x84, 0x43, 0x1D, + 0x5F, 0xA5, 0xF9, 0xD3, 0xDF, 0xA7, 0x67, 0xF3, 0x19, 0x3C, 0x9B, 0xC5, 0x2D, 0x2E, 0x7E, 0xB9, 0x40, 0xB9, 0xA8, 0x42, 0x77, 0x49, 0x86, 0x63, 0x69, 0x80, 0x8B, 0x9A, 0x38, 0x0F, 0x09, 0x23, 0xFA, 0x30, 0x1A, 0xFC, 0x72, 0x3C, 0x6C, 0xCB, + 0x63, 0x79, 0x90, 0x31, 0x79, 0xA8, 0xEA, 0x6E, 0x66, 0xD4, 0x6D, 0x69, 0x1F, 0xA2, 0xB5, 0x8F, 0xA5, 0xE1, 0xBA, 0xBA, 0xD1, 0x25, 0xA6, 0xE4, 0xF7, 0x84, 0x26, 0xE4, 0x10, 0x80, 0x56, 0x6B, 0xF1, 0x54, 0x24, 0xC7, 0xAB, 0x28, 0x5A, 0x7A, + 0xB0, 0xA5, 0x11, 0x98, 0x9F, 0x1A, 0xA9, 0x1C, 0x5C, 0x39, 0x72, 0x02, 0xFA, 0x1B, 0xC9, 0x5D, 0x76, 0x9C, 0x88, 0x84, 0x87, 0x90, 0x83, 0x94, 0x81, 0x50, 0x86, 0x3E, 0x76, 0x08, 0x2B, 0x9A, 0x7B, 0xC9, 0xE5, 0x29, 0x0B, 0xE7, 0x31, 0x92, + 0xFD, 0x73, 0x14, 0xC6, 0x26, 0xED, 0x22, 0x1A, 0x25, 0xC7, 0xE2, 0xD9, 0x6C, 0x36, 0xD1, 0xE9, 0xD4, 0xCB, 0xED, 0x66, 0xAD, 0x88, 0xE6, 0xB9, 0x01, 0xE6, 0xA2, 0x11, 0xCB, 0x2C, 0xD1, 0x68, 0x50, 0x0C, 0x13, 0x8D, 0xFF, 0x80, 0x05, 0xA8, + 0x45, 0xC9, 0x12, 0xFF, 0xE1, 0x4E, 0xE2, 0xE0, 0x62, 0xAC, 0x79, 0xA6, 0x73, 0x6C, 0x6B, 0x3C, 0xE1, 0xBB, 0xDE, 0xAA, 0x0C, 0xEE, 0x9C, 0xC2, 0xFF, 0xE2, 0xCF, 0x69, 0x2D, 0x1A, 0x5D, 0x00, 0x52, 0x03, 0x84, 0x17, 0x98, 0x06, 0xC0, 0xE4, + 0x10, 0xC3, 0xD3, 0x22, 0xBC, 0xC8, 0xC4, 0xEE, 0x65, 0x0F, 0x6E, 0x45, 0x10, 0x60, 0xE9, 0x59, 0x84, 0xA9, 0xF6, 0xAD, 0x6D, 0xD4, 0x13, 0x47, 0x9A, 0xD8, 0x2A, 0x5A, 0x77, 0x4F, 0xB8, 0x28, 0x29, 0xA1, 0xB2, 0x71, 0x4F, 0xD3, 0x0A, 0x2B, + 0x59, 0x74, 0xD4, 0xA7, 0xF1, 0xD3, 0x95, 0x8B, 0x09, 0x02, 0xA6, 0x68, 0xE0, 0xA9, 0x6B, 0x46, 0x8E, 0xA8, 0x46, 0x3B, 0x33, 0x77, 0x40, 0x9F, 0x32, 0x0D, 0x7D, 0x6C, 0xDF, 0x62, 0xD2, 0x2A, 0x0F, 0xAE, 0x97, 0x4C, 0x2E, 0x15, 0xA4, 0xCB, + 0x05, 0x53, 0xA9, 0xB0, 0xDD, 0x9F, 0x63, 0x05, 0x5E, 0x40, 0x44, 0xAF, 0xA2, 0x71, 0x4B, 0x39, 0x05, 0x33, 0xA8, 0x28, 0x64, 0x69, 0x50, 0xBA, 0x9D, 0x2E, 0x76, 0xEE, 0x40, 0x17, 0xCD, 0xDD, 0xCC, 0xD7, 0xED, 0x66, 0xB1, 0x7D, 0x37, 0x85, + 0x32, 0x95, 0x1D, 0x40, 0x10, 0xBC, 0x25, 0x45, 0x88, 0xB4, 0x3E, 0xAF, 0x61, 0xCD, 0x46, 0x37, 0x36, 0x98, 0xBA, 0xFA, 0xCD, 0xBD, 0x8C, 0x72, 0xAB, 0x56, 0x8C, 0x2A, 0x96, 0xEC, 0x55, 0xD7, 0xBD, 0xBD, 0x7C, 0x0B, 0xF3, 0x6E, 0xAA, 0xBB, + 0xCC, 0xD0, 0x46, 0x06, 0x68, 0x2E, 0xDD, 0xB4, 0x9C, 0xD8, 0xAD, 0x16, 0x66, 0x64, 0xE5, 0x5A, 0x54, 0x78, 0xD1, 0x56, 0x25, 0x18, 0xB9, 0x1E, 0x86, 0x37, 0x90, 0x26, 0x11, 0x2E, 0xD7, 0x75, 0x6D, 0x50, 0xCB, 0x88, 0xB6, 0xB9, 0x5A, 0x4E, + 0x6C, 0x46, 0xD4, 0xE3, 0x95, 0x3B, 0x9F, 0xCB, 0xBE, 0x86, 0xD3, 0x94, 0x47, 0xCC, 0x92, 0xAF, 0x21, 0x0F, 0xC6, 0x9C, 0xAD, 0xE5, 0x66, 0xFE, 0x4E, 0xD4, 0x3D, 0x00, 0x88, 0x42, 0x5F, 0x4B, 0x79, 0xE0, 0x7F, 0xF7, 0xB7, 0xE1, 0x63, 0xB9, + 0x9E, 0x7A, 0x09, 0x65, 0x7A, 0x37, 0x6B, 0x91, 0xD2, 0x45, 0x95, 0xF8, 0xB3, 0xA2, 0x2E, 0xFD, 0x83, 0xEA, 0xF0, 0xC7, 0x2F, 0xEA, 0x09, 0x86, 0x61, 0x02, 0x47, 0x82, 0xCE, 0xE3, 0xEC, 0x0F, 0x3D, 0x8E, 0x1E, 0xC8, 0xB2, 0x6C, 0x1C, 0x00, + 0x2C, 0x0E, 0xEB, 0x5A, 0x77, 0x52, 0x2F, 0xEB, 0x5C, 0x27, 0x5D, 0x3A, 0x0F, 0x2A, 0x2C, 0xC8, 0x1B, 0xE7, 0xC6, 0x1D, 0x43, 0x1D, 0xE3, 0x2B, 0xFF, 0x11, 0xDE, 0xDA, 0x48, 0x74, 0x4C, 0xBE, 0xA0, 0x90, 0xA0, 0x97, 0xED, 0x3A, 0xB3, 0xB9, + 0x04, 0x9E, 0xB0, 0x58, 0x4E, 0x77, 0xC4, 0x06, 0x1E, 0x59, 0x4F, 0x88, 0x60, 0xB7, 0x3A, 0x13, 0xAE, 0xA5, 0x0C, 0x2A, 0x14, 0x6D, 0xA2, 0xA5, 0x8A, 0xC8, 0xAE, 0x8E, 0x7C, 0xD7, 0x2A, 0xF0, 0x88, 0x96, 0x59, 0xD7, 0x0F, 0x47, 0x0D, 0xEE, + 0x40, 0x77, 0x8F, 0x4B, 0xE6, 0x11, 0x32, 0xC4, 0x88, 0x41, 0x65, 0xC5, 0x46, 0x53, 0x3F, 0x80, 0x49, 0x27, 0x31, 0x33, 0xA2, 0x9C, 0x15, 0xCC, 0x0A, 0xD3, 0x51, 0x2C, 0x74, 0x31, 0xA4, 0xC6, 0x44, 0x9D, 0x0C, 0x98, 0x05, 0xB3, 0xC9, 0x36, + 0xA8, 0xB8, 0xCC, 0x4E, 0xCF, 0x20, 0xBF, 0xF1, 0x1C, 0x5D, 0x22, 0x4E, 0x38, 0x47, 0xE6, 0x77, 0xCB, 0x12, 0x6B, 0xE3, 0xA6, 0xD5, 0xD2, 0x9E, 0x2E, 0xD8, 0xC2, 0x0A, 0xA3, 0x67, 0xF3, 0xBC, 0xFA, 0x76, 0x7F, 0x93, 0x5D, 0xDA, 0xFD, 0x25, + 0xB6, 0xA5, 0xEB, 0x6C, 0x2B, 0x57, 0xD9, 0x50, 0xA5, 0x60, 0x5C, 0x74, 0xC0, 0x3D, 0x80, 0x04, 0x47, 0x7F, 0x6F, 0x2F, 0xC2, 0xF4, 0x6C, 0x98, 0xB9, 0xF0, 0xD6, 0x0B, 0x1D, 0x53, 0x01, 0x4B, 0x78, 0xD7, 0xCE, 0x7E, 0xC1, 0x52, 0xF8, 0xC8, + 0x86, 0x2F, 0x53, 0x95, 0x8D, 0x5E, 0xAE, 0xD5, 0xDB, 0x12, 0xAA, 0x34, 0x61, 0xC3, 0xB5, 0x3A, 0x53, 0xA0, 0x56, 0x0D, 0x67, 0x66, 0x51, 0x85, 0x8F, 0x6F, 0x31, 0x74, 0x51, 0x0C, 0xCF, 0xB6, 0x76, 0x92, 0x8E, 0x1E, 0xBB, 0x25, 0x2C, 0xA5, + 0x73, 0xE0, 0x90, 0x21, 0x13, 0xD9, 0x14, 0x33, 0xC0, 0xFB, 0x1D, 0x36, 0x03, 0x22, 0x4F, 0x15, 0xB6, 0xC8, 0x62, 0x3E, 0x63, 0xBE, 0xD3, 0x0A, 0x50, 0xB8, 0x93, 0x58, 0xC1, 0x7F, 0x9A, 0xEC, 0x74, 0x89, 0x27, 0x87, 0x83, 0x7A, 0xE9, 0xF8, + 0xF5, 0xEB, 0x7A, 0x4D, 0x20, 0x23, 0x4A, 0xF4, 0x3D, 0x34, 0xB0, 0x1B, 0x00, 0xE6, 0xE9, 0xEF, 0x9D, 0x8B, 0x3C, 0x47, 0xA3, 0x50, 0x91, 0xC9, 0x94, 0xF8, 0xEC, 0xF4, 0xA3, 0x4F, 0x44, 0x5D, 0xB0, 0x62, 0x0B, 0xA3, 0xA3, 0x76, 0x43, 0xE0, + 0xB0, 0x96, 0x4E, 0x7A, 0x82, 0x15, 0x86, 0xFC, 0x4A, 0x63, 0x37, 0x14, 0x85, 0x83, 0xF4, 0x32, 0x10, 0x74, 0x25, 0x6D, 0xD2, 0x69, 0x0B, 0x88, 0x52, 0x13, 0x33, 0xDE, 0x32, 0xA7, 0x5F, 0xD3, 0x97, 0xA9, 0x89, 0xD8, 0xB8, 0xFB, 0xD4, 0x6C, + 0x3F, 0xB5, 0x80, 0xA2, 0x13, 0x4E, 0x85, 0x42, 0x77, 0xEE, 0x3C, 0x15, 0x7A, 0xC6, 0x51, 0x48, 0xB3, 0x0B, 0xB3, 0x2D, 0x7C, 0xB3, 0xE5, 0x3A, 0xF0, 0xD9, 0xCF, 0xEA, 0x27, 0xDE, 0x31, 0xCB, 0x6C, 0x8C, 0x19, 0xAD, 0xE2, 0x9C, 0x33, 0xA9, + 0x1A, 0x0B, 0xFD, 0xF4, 0xF4, 0x3B, 0x11, 0xA8, 0xB6, 0x59, 0x20, 0xF1, 0xDB, 0xC9, 0x97, 0xD3, 0xD7, 0xAF, 0x23, 0x32, 0x15, 0x27, 0x99, 0x2C, 0x51, 0xB6, 0x49, 0xEC, 0xDC, 0xDB, 0x5B, 0x45, 0x9C, 0x9E, 0x05, 0x37, 0x6E, 0x0C, 0xCD, 0xB7, + 0xB6, 0xBB, 0xC6, 0x9C, 0x1D, 0x19, 0xA5, 0x7A, 0x15, 0x73, 0xBA, 0x4A, 0xA7, 0xCF, 0xB5, 0x50, 0x91, 0xE5, 0x05, 0x38, 0xB0, 0xCD, 0x3B, 0x4F, 0x7A, 0x7E, 0xD3, 0xB7, 0x77, 0x6A, 0xFD, 0x9A, 0xD5, 0xFE, 0x9A, 0xD5, 0xEE, 0x9A, 0xF5, 0xBF, + 0xED, 0x85, 0x99, 0xAC, 0x86, 0x6C, 0x6E, 0xCC, 0x46, 0x25, 0xCA, 0x84, 0x34, 0x37, 0x66, 0xA3, 0x0E, 0x65, 0xA2, 0x72, 0x07, 0x0C, 0xC8, 0x0A, 0x3B, 0x4C, 0x46, 0x25, 0x93, 0x43, 0x58, 0x88, 0x03, 0x9E, 0xEB, 0xCF, 0xA7, 0x85, 0x9B, 0xA0, + 0xAC, 0xB8, 0x36, 0x29, 0x45, 0x2C, 0x3C, 0xDD, 0x09, 0x3D, 0x21, 0x74, 0x0B, 0x34, 0x84, 0xE9, 0x24, 0xEE, 0xBF, 0x03, 0xD7, 0xB1, 0xC0, 0x00, 0xB2, 0x33, 0x6F, 0xC2, 0x27, 0xF5, 0xA6, 0xB0, 0x75, 0x1D, 0xB4, 0xB7, 0x47, 0x0F, 0x2B, 0x61, + 0x2A, 0x71, 0xA5, 0xCB, 0x2B, 0xF1, 0xC4, 0x45, 0x0F, 0x73, 0xCE, 0x8B, 0x2F, 0xF5, 0xAD, 0x51, 0x00, 0x55, 0x5E, 0xB9, 0x5B, 0xEA, 0x52, 0x76, 0xE1, 0x65, 0xE8, 0x4C, 0xA5, 0x6A, 0x4A, 0x52, 0xF4, 0x14, 0xB3, 0xCC, 0xC1, 0xC5, 0xB3, 0x81, + 0xC6, 0xF6, 0x48, 0x95, 0x0D, 0xD2, 0x61, 0x52, 0xE0, 0x3F, 0x2A, 0x63, 0xA9, 0xDA, 0x8F, 0x41, 0xCC, 0x3B, 0x50, 0xFC, 0xEB, 0xA0, 0xED, 0x02, 0x24, 0x4C, 0x1A, 0xEB, 0x98, 0x37, 0x06, 0xF1, 0x9F, 0x87, 0x84, 0x9D, 0x35, 0x00, 0x4E, 0xDC, + 0xC7, 0xC0, 0xB7, 0xEF, 0x1C, 0x8A, 0x61, 0xE2, 0x8A, 0x3D, 0x17, 0x1F, 0x7A, 0x77, 0x13, 0xDD, 0x4B, 0xBD, 0x9D, 0xAE, 0x8A, 0xE3, 0xD8, 0x96, 0x95, 0xB2, 0x57, 0xD5, 0xFA, 0x2E, 0x3D, 0x21, 0xD4, 0xAA, 0xB6, 0x0E, 0x12, 0x5F, 0x9F, 0xC9, + 0xAA, 0xBB, 0x6E, 0xDD, 0x05, 0xE8, 0x06, 0xF1, 0x9B, 0x20, 0xFC, 0x6D, 0x2B, 0xC2, 0x9B, 0xD8, 0x8D, 0xA2, 0x8E, 0xA4, 0x6A, 0xF4, 0xF3, 0xF7, 0x72, 0x78, 0x47, 0x87, 0x3D, 0x1F, 0xAC, 0xEA, 0xE9, 0x2E, 0x6D, 0x7F, 0x7F, 0x37, 0xFA, 0xBD, + 0x2B, 0x65, 0xBF, 0x62, 0xE7, 0xAD, 0x47, 0x93, 0xD9, 0xB3, 0x68, 0xF0, 0xC5, 0xB7, 0x4F, 0x9F, 0x90, 0x91, 0x1C, 0x42, 0x1B, 0x1E, 0x8C, 0x88, 0x5C, 0xD3, 0xE9, 0xCD, 0x64, 0x82, 0x19, 0x0E, 0xD5, 0xC2, 0xE8, 0x2F, 0xE0, 0xA6, 0x93, 0xCC, + 0xF8, 0xFA, 0x0E, 0xC8, 0xE4, 0x22, 0x48, 0x99, 0x60, 0x30, 0x8F, 0x11, 0xC4, 0xFC, 0x09, 0x58, 0x71, 0xDF, 0xD9, 0x28, 0x23, 0xE6, 0xCC, 0xA0, 0x6A, 0xE5, 0x8D, 0x36, 0xCE, 0xFC, 0x23, 0x38, 0x8E, 0x5C, 0x54, 0x36, 0x3B, 0x71, 0xF6, 0xF4, + 0xDB, 0xEF, 0x84, 0xA2, 0xCB, 0x03, 0xF6, 0xBB, 0x8D, 0xC6, 0xA0, 0x19, 0x60, 0x07, 0xF1, 0x97, 0x82, 0xC3, 0x7C, 0xED, 0x84, 0x85, 0xDA, 0xA7, 0xE8, 0x7D, 0x8A, 0xCA, 0xDE, 0x6F, 0xFB, 0x71, 0xDB, 0xFB, 0x1C, 0x9E, 0xCD, 0x94, 0x3B, 0x46, + 0xFA, 0xC1, 0xC5, 0x05, 0x3A, 0x5F, 0x62, 0x6D, 0xB7, 0x2D, 0x32, 0x30, 0xE2, 0xAE, 0xB8, 0x6A, 0x21, 0xC1, 0x12, 0xD1, 0xDE, 0x3B, 0xDC, 0x1D, 0xFF, 0xEE, 0x07, 0x62, 0xF3, 0x78, 0xC6, 0x41, 0x32, 0xFC, 0x41, 0x27, 0xCB, 0x70, 0x6C, 0x22, + 0xDD, 0x25, 0x07, 0xD1, 0xEB, 0xD7, 0x5C, 0x1A, 0x7A, 0x77, 0xB8, 0x46, 0xAE, 0x98, 0xFA, 0x52, 0x0E, 0xB1, 0x50, 0xE2, 0x0C, 0xFA, 0x6E, 0xAE, 0xED, 0x31, 0x6E, 0xA5, 0x9C, 0xB4, 0x4A, 0xE9, 0xFC, 0xF8, 0x79, 0xE6, 0x00, 0x56, 0xC7, 0x9E, + 0x45, 0x77, 0x95, 0x87, 0xF8, 0x77, 0x6A, 0x99, 0x9D, 0x97, 0x5A, 0x9A, 0xA0, 0xD7, 0xE1, 0x6B, 0x53, 0x0C, 0xBD, 0x51, 0xCD, 0x86, 0x3E, 0x9B, 0x8B, 0x9B, 0xFA, 0x4F, 0x4F, 0xFE, 0x52, 0xBD, 0x9C, 0x21, 0x17, 0x97, 0x2E, 0x46, 0x68, 0xAE, + 0xBE, 0x2B, 0xE6, 0x46, 0x6B, 0x10, 0x6A, 0xE7, 0x50, 0xAE, 0x3B, 0x37, 0xBE, 0x75, 0xE3, 0xB8, 0x34, 0x67, 0xB3, 0xF1, 0x6C, 0xF8, 0x66, 0x1B, 0x0E, 0x82, 0x94, 0xEA, 0x0E, 0xA6, 0x4A, 0x71, 0x60, 0xF2, 0xA5, 0xD6, 0x90, 0x6B, 0xAE, 0xE6, + 0xDA, 0xE4, 0x0A, 0xF4, 0x04, 0x72, 0x03, 0xF0, 0x18, 0x96, 0x70, 0x04, 0xBC, 0xC2, 0xE7, 0x5D, 0x80, 0x85, 0x1B, 0x0B, 0xBB, 0x72, 0xB4, 0xDD, 0x68, 0x0D, 0xE2, 0xC2, 0x4B, 0x96, 0x24, 0xD9, 0x9F, 0x90, 0x1B, 0xEF, 0x62, 0x72, 0x33, 0xD6, + 0x39, 0x94, 0x9F, 0xC9, 0x1C, 0x62, 0x1E, 0x56, 0x0A, 0xAE, 0xB8, 0x9D, 0x90, 0x46, 0xE6, 0xA6, 0x0A, 0xE9, 0x96, 0xF6, 0xA0, 0x7C, 0x03, 0x63, 0x9F, 0xEC, 0xBD, 0xD1, 0x08, 0x36, 0x2F, 0x00, 0xA1, 0xFE, 0xAB, 0x3A, 0x9C, 0xCE, 0xE7, 0xB3, + 0xF9, 0x0E, 0xDA, 0xBD, 0x99, 0x75, 0x91, 0x7D, 0xB1, 0xE6, 0x84, 0x6F, 0x1F, 0xFB, 0xAE, 0x9E, 0x62, 0xAF, 0xCA, 0x59, 0x61, 0x0B, 0xBD, 0xED, 0x5B, 0x0B, 0x2B, 0x09, 0xC0, 0x3F, 0xE8, 0x01, 0x32, 0x58, 0xED, 0x70, 0xFD, 0x68, 0xC2, 0x0A, + 0xA9, 0x0C, 0x4C, 0x28, 0x7A, 0x05, 0x2C, 0xFB, 0x34, 0x03, 0x21, 0xDE, 0x5D, 0xDF, 0xE1, 0x84, 0xB9, 0xC9, 0xD6, 0xA1, 0x62, 0xAB, 0x89, 0xAF, 0x1F, 0x31, 0x5C, 0xBC, 0xF2, 0x3E, 0xED, 0x50, 0x1C, 0xF3, 0x02, 0xB3, 0xDC, 0x40, 0xFB, 0xC2, + 0x3D, 0x34, 0x01, 0xFD, 0xA8, 0x26, 0x8B, 0x58, 0xB9, 0x72, 0x39, 0x0A, 0xE3, 0x13, 0xFB, 0xF9, 0x78, 0x9E, 0x3E, 0x67, 0x79, 0x57, 0xF6, 0x43, 0x57, 0x15, 0xF0, 0x6D, 0xF2, 0x58, 0x30, 0xA8, 0x5A, 0x55, 0x65, 0x27, 0xD4, 0x37, 0x66, 0xB9, + 0x37, 0x99, 0x7B, 0xBF, 0x08, 0xED, 0x4F, 0x9B, 0xB1, 0xE7, 0xB4, 0x06, 0x8F, 0xBE, 0xE0, 0x78, 0xEA, 0xB5, 0xE3, 0xD0, 0x39, 0x8C, 0x33, 0x70, 0xA9, 0x22, 0x36, 0x4C, 0xF9, 0x91, 0x06, 0x00, 0xF2, 0x43, 0xD5, 0xD6, 0xC4, 0xF8, 0xF6, 0xEB, + 0x58, 0x8F, 0x57, 0xDF, 0x69, 0x43, 0x23, 0x23, 0x1A, 0x87, 0xF0, 0x9A, 0x9B, 0xDC, 0x04, 0xD6, 0x6C, 0x11, 0x86, 0xB3, 0x50, 0xD8, 0x10, 0xA4, 0x35, 0x4F, 0xFB, 0x8D, 0x6E, 0x9E, 0xF0, 0x83, 0xCE, 0x8D, 0x13, 0x69, 0x65, 0x4B, 0x86, 0x15, + 0x64, 0x7C, 0x84, 0xEE, 0x12, 0x55, 0xAB, 0x26, 0x66, 0x19, 0xD4, 0x8E, 0xA8, 0x36, 0x48, 0x44, 0x41, 0x35, 0x46, 0x22, 0x75, 0x6B, 0xC9, 0x26, 0xC4, 0xDA, 0xAF, 0xB5, 0x0B, 0x23, 0x87, 0x60, 0x72, 0x33, 0x8F, 0xF0, 0x1C, 0x9F, 0x14, 0xFE, + 0xCA, 0x29, 0x4E, 0xA2, 0x30, 0x76, 0x89, 0x8D, 0x14, 0x2E, 0x3F, 0x64, 0x93, 0x91, 0xA1, 0x17, 0xB4, 0xDB, 0x86, 0xC6, 0x66, 0xFA, 0x07, 0x88, 0x67, 0xED, 0x3A, 0xBA, 0x1B, 0xD7, 0x51, 0x9B, 0x7E, 0x30, 0xF7, 0xBD, 0x3D, 0xBD, 0xB7, 0x17, + 0x94, 0xD4, 0x03, 0x43, 0x3C, 0xD3, 0x0D, 0x7D, 0xB7, 0x28, 0xD7, 0xC5, 0x66, 0x3F, 0x5A, 0x73, 0xF2, 0x52, 0x35, 0x99, 0xAD, 0x0D, 0x05, 0x05, 0xE7, 0x16, 0x24, 0x07, 0x61, 0x20, 0x37, 0xA6, 0x1E, 0xEF, 0x84, 0x6C, 0x15, 0x7A, 0xCB, 0x78, + 0xA2, 0x4D, 0x02, 0x65, 0xC4, 0x5E, 0x1E, 0x13, 0x1F, 0xE5, 0x53, 0x42, 0x85, 0x71, 0xD2, 0xB0, 0x02, 0x44, 0xA5, 0x79, 0xE5, 0x9A, 0x49, 0x27, 0x38, 0x4B, 0x10, 0x25, 0x8C, 0xBC, 0x73, 0x71, 0x35, 0xC3, 0xDC, 0x20, 0xE4, 0x50, 0xA3, 0x50, + 0xC0, 0x19, 0x11, 0x44, 0x9F, 0x2B, 0x09, 0xB2, 0x2F, 0x92, 0x1A, 0xF3, 0x57, 0x39, 0x7D, 0x85, 0x39, 0x99, 0xE0, 0x0D, 0xEB, 0x4F, 0x60, 0xBE, 0xBD, 0xAA, 0xC9, 0x98, 0x83, 0x78, 0x1A, 0x9B, 0xF3, 0x0B, 0xBF, 0xA2, 0x1B, 0x56, 0x30, 0xDF, + 0xCA, 0x42, 0x41, 0x2C, 0x23, 0x9B, 0xB2, 0x9B, 0xBA, 0x50, 0x16, 0x01, 0x50, 0x6B, 0x6A, 0x06, 0xE2, 0xD6, 0x4F, 0x5F, 0x7F, 0xF5, 0x19, 0x82, 0xE9, 0xBE, 0xD1, 0xE0, 0x59, 0x79, 0xD1, 0x4F, 0x99, 0x72, 0x22, 0x2B, 0x60, 0x08, 0x9B, 0x1E, + 0x7C, 0x42, 0xCF, 0x6C, 0x25, 0xA2, 0xED, 0x41, 0xC4, 0x54, 0x22, 0x15, 0x9A, 0x4F, 0x09, 0x11, 0x41, 0x78, 0x5D, 0xE3, 0x7A, 0x59, 0xBB, 0xF0, 0x35, 0x0B, 0x3C, 0x3A, 0x04, 0x4D, 0xA6, 0x56, 0x4E, 0x39, 0x39, 0xE7, 0x8B, 0xBC, 0xB5, 0xBB, + 0x70, 0x25, 0x65, 0xAF, 0xF6, 0xF1, 0x1D, 0x88, 0xAC, 0x3C, 0xEF, 0xA5, 0xEE, 0x0D, 0x2C, 0x5D, 0x62, 0x52, 0x26, 0xE5, 0x71, 0x85, 0xA6, 0x5B, 0xE1, 0x4B, 0x69, 0xE7, 0x82, 0x09, 0xED, 0x12, 0x26, 0x55, 0xF2, 0x00, 0xC4, 0x3B, 0x2B, 0xD2, + 0xC9, 0x3B, 0x78, 0x48, 0x4A, 0xB6, 0xC5, 0xDB, 0xA2, 0xAF, 0x2D, 0xDD, 0x7C, 0x8C, 0x77, 0x52, 0x6E, 0x38, 0xD4, 0xC1, 0xD8, 0x1B, 0x83, 0xCC, 0xD8, 0xEA, 0x84, 0xB1, 0x5F, 0x3D, 0x29, 0xB6, 0xED, 0x5A, 0x8F, 0x7C, 0xF1, 0xC4, 0xBA, 0xB1, + 0x18, 0x76, 0x9D, 0x37, 0x42, 0x0F, 0xCC, 0x42, 0x1E, 0x73, 0xCA, 0xA7, 0xF7, 0x63, 0xAE, 0x0B, 0x5C, 0x14, 0x36, 0xB7, 0x15, 0xF4, 0xE7, 0xBC, 0xCF, 0x45, 0x0B, 0x5E, 0x99, 0x8F, 0xE6, 0x78, 0x1C, 0x2E, 0xBE, 0x84, 0xD1, 0xC9, 0x5F, 0x6B, + 0xBC, 0x91, 0xD2, 0x40, 0xCC, 0x71, 0xC3, 0x98, 0xA4, 0xD3, 0x6F, 0xEC, 0xC3, 0x92, 0x67, 0xC0, 0x89, 0xCA, 0xD6, 0xC5, 0x3A, 0x62, 0x1C, 0x3A, 0x57, 0x81, 0x63, 0x26, 0x5F, 0xBA, 0x55, 0xB3, 0x3A, 0x91, 0x91, 0x0A, 0xF4, 0x0D, 0x3F, 0x79, + 0xD4, 0x5F, 0x49, 0x31, 0x81, 0x45, 0x8E, 0xEF, 0xBE, 0x03, 0xD6, 0xD2, 0xF3, 0x24, 0x77, 0xEE, 0x6B, 0x57, 0x4C, 0x6E, 0x6B, 0x03, 0xBA, 0xA1, 0xF6, 0x81, 0xDA, 0x9D, 0xCE, 0x57, 0x80, 0x74, 0x45, 0x3B, 0xFF, 0xCB, 0xEA, 0x1E, 0x11, 0x11, + 0x49, 0xBB, 0x1F, 0x31, 0x7D, 0x91, 0xA7, 0x90, 0x02, 0xF1, 0xDC, 0xC3, 0x4F, 0xC1, 0x35, 0xF2, 0x77, 0xC2, 0x60, 0x95, 0x05, 0xAA, 0x6F, 0x83, 0x8B, 0xEB, 0x3E, 0x56, 0xFB, 0x2F, 0xC5, 0x6A, 0x7B, 0x7C, 0x4E, 0x67, 0xCB, 0x28, 0xBD, 0x0F, + 0xDE, 0x7E, 0x55, 0x27, 0x38, 0x13, 0x1C, 0xEB, 0xD1, 0x73, 0x9F, 0xE6, 0xF4, 0xAF, 0xA6, 0x39, 0x79, 0xC4, 0x5B, 0x55, 0xBE, 0x8E, 0xFB, 0xFB, 0xB4, 0xA7, 0x7F, 0x28, 0xED, 0xC9, 0x53, 0x77, 0xFA, 0x32, 0x38, 0xFC, 0xFF, 0x93, 0x34, 0x28, + 0x3B, 0x7B, 0x23, 0xEC, 0x06, 0x24, 0x72, 0x9F, 0x16, 0xF5, 0xCF, 0xA7, 0x45, 0xAD, 0x89, 0x6B, 0xBC, 0xCF, 0x16, 0xFF, 0x0F, 0x67, 0x8B, 0x63, 0xCF, 0xEC, 0xAB, 0x9E, 0x42, 0xAE, 0x8F, 0x9B, 0x70, 0xA6, 0x06, 0x49, 0xED, 0xAB, 0x27, 0xB4, + 0x36, 0xF5, 0xA8, 0x65, 0x9A, 0x70, 0x27, 0xCB, 0xA5, 0xB7, 0xF6, 0xAB, 0x5B, 0x37, 0xB9, 0x63, 0xED, 0x7D, 0x91, 0x4D, 0xFD, 0x42, 0x07, 0x56, 0x18, 0x90, 0x70, 0xC7, 0x7E, 0xCD, 0x47, 0x15, 0x37, 0x01, 0x58, 0x4E, 0x2A, 0x32, 0x20, 0x74, + 0x63, 0xA5, 0xDB, 0x62, 0x51, 0xFC, 0x2B, 0xAD, 0x77, 0xE8, 0xC4, 0x8F, 0x49, 0xDC, 0xA1, 0xBD, 0x61, 0x84, 0x1B, 0x7B, 0x78, 0x63, 0x04, 0xF7, 0x30, 0x2F, 0xEC, 0x08, 0xB9, 0xC1, 0xC7, 0x59, 0xD7, 0xA8, 0xB8, 0x8F, 0x59, 0xC6, 0x36, 0x9A, + 0xAA, 0x5B, 0x1A, 0xA4, 0x5A, 0x32, 0x31, 0x6C, 0x73, 0xD7, 0xA2, 0xB9, 0x7B, 0xDC, 0x2A, 0x60, 0x35, 0x4B, 0x60, 0xAC, 0x81, 0x82, 0xDE, 0x2B, 0x8F, 0x0E, 0x65, 0x4C, 0xE1, 0x1D, 0xC8, 0x16, 0x89, 0x44, 0x7B, 0x73, 0x3B, 0x68, 0xE2, 0xD4, + 0xEE, 0xD9, 0x6D, 0xA1, 0x73, 0x29, 0x54, 0x30, 0x98, 0xD5, 0x47, 0xFD, 0x7B, 0xE4, 0x8E, 0xA7, 0x95, 0x81, 0x2F, 0x64, 0xD3, 0x0A, 0x9C, 0x9E, 0xE6, 0xED, 0x2B, 0x41, 0x94, 0x0D, 0xBC, 0x6F, 0x21, 0xF5, 0xF6, 0x29, 0xE1, 0xC8, 0xF9, 0x56, + 0x90, 0x8A, 0xB6, 0xDE, 0xDA, 0x31, 0xDA, 0x60, 0x14, 0x5B, 0x6F, 0x56, 0xB6, 0x19, 0x7F, 0xCD, 0x09, 0xD3, 0xBE, 0xF2, 0x51, 0xAE, 0x9D, 0x90, 0x3E, 0x3D, 0x10, 0xE2, 0x9E, 0x05, 0xC1, 0xCF, 0xEA, 0xB9, 0x58, 0xFE, 0x5F, 0x8A, 0xFE, 0x09, + 0xEE, 0xCD, 0xA8, 0x46, 0x6A, 0x74, 0x00, 0x00, 0x00 +}; + +/*************************** End of file ****************************/ diff --git a/built-in-webpages/setup/all.htm.gz b/built-in-webpages/setup/all.htm.gz new file mode 100644 index 0000000000000000000000000000000000000000..d1fe61bfe064223bae0a360d13130198151d339c GIT binary patch literal 8688 zcmVDR7EGp6Ngi8ez+pNe*&Q-`3R zjLSvBWx6QONy3Xu70NP?`NcoPS@2x*YQjntAUWp+7*%th2THz(1@})G7++;)70Xlr z^FyQUtB}W&@*f?iKDo_MDgPG!@*#h#PhM}tTfvA-^Rx1S>hLU;#m_2>WE?N94>vMz zO-5O8E^ka~wJS4z$lk2-#KY{>cNktv@FIH`MG=GuV*im$Fd#ftjfQ`yOD^`G1Sb(Z z1MMe&R`7{tpkohN5sCtN?pj|D$dq_fpZvM#52feiAd1mo&dc%@n89!~>;GsO1{sXM*-0#9|UrTV4__NK1G)sjJ zjt>KYIAt-gs&sa(1zdW8&IB#1Sx_7g{N7p6WpC!Yfxl5nh&`xI%RJ9nH2+&zyq#;V z6wbyE`erEN-Ey{BD#3$osEzsbqAqbf?n#Yb6_( zk*YedkQfTY912XuRFviYW_>rW&v9#t;)hu5dLD^Iq>KX`hDFHGH0(yC7#IqgHR^A- zkG0Nro#CFnzN>ADrWNyph)vcx?%LZfcX?JyB|+6f#2m|dhw}V2+6pElz6DkqyQ!c0 zAxwzSjAg5sA}K`N1y{(+YQ(`k2vdCx&camG=X%2+{vTd|v{ z(JTdVQ@`r=g8|%OE<`aD@JWWDNNXF*==(}#xxa>Bw#57Z4d|>|;!WGSHUsw>mAu0+ z3X~fScgy|0;;BqHF)ni|-|yM7WZ+QTN(Dosd7+nkx0c)PEt2I;67Lqt>L$q*#lCnJ zm#E;0D4AJWId>K9sZmxWKK%lBi{I{@dF@@FyZ0Q3>AZftMY?v@IPW^Q7Hk>@wVfB) zv4A3`RGQ}Gw77Ke9-KQ9QE%P0H_A0C@Ihp^0fUa4?0Ge6Zc{OiGookht?nq!?r$i;P`vr;EA-smWjPO|y7CwQ@Z{hJ(B7 za-$`|A?ODUD>hd5kB}>FnIURefCUh>Sg7nLfA+*os*GA6>Ye5ASx|f&(+5FP2pd_* zW9@x=7rH=)M zFu_~R5r{!PL8BnMZZsCta;_DM1rrPWm^TeGl!XY0JOJV(Z9QTUYB$}{b={5k*zLpi zS|m410kC^;kEO;ew!)S3maExQ4O9VD`txzPD z5xj$0u6#;_QK(1T7P&{Hp-vW>CNe5jqX**^acs8q!C9e&A|77TeWf*Xt#`v_NhpG> zpaLPJHA1AF+?(iQ4d`P8c{(axnOEGmeh8e6)5A|KkuAY_1LTWa;xX%C6&N_gPz{l+ zuDGza2?13tLf74qBHF8*nCGSN&5yS1uyxRx!7g8p!%d$!Qa}t?AU{yq(sD~wdV;C~ zM*$E6a;o}(Rp z&~F|giZ&2*#%8-AnmiUVw3?bFa0NCuV*rrMKz|X&!S}i)bX)gD#ezc~W$Hwu18+=A zy{ohrSxQtW;cu1>@B`R8@yQUxBkaH4f&PaEOg;5(fr&dge%)@lHDZ3)az?nbd(Lq4 z=+MKa_%R3z0#ZC&cabp=wZ;D%NYLmi=p7^En@;V6VXah~;nk#a3|r`Frj($cict$t z+3^^Q5&jspK;s-Z&Q5!AcLH*l3l3%$$})`g(WYHPE}7;bmbKTTDqp1vPUBM~X*0k! z)8oJU&?>nGZ48=QdROH_`YRdmSeJ1k!!Qq_#tc2LyTmQiI@6|M1+#FGAM*d8Hb|3?>0oX-9p~YD;oh4MkEDq8FXNEpwjpN z8?T0$?_vD-@c2H)?wB!+j2?1Aj=2p}q_+j+cUGoK1 zI&|F!$wS~hI0ldQCbOo2t{vtdL3FdwE<~AUX$hPdk=&{abCSG9$h92QU?^t%=&#vM zEhW>-K<`^yAJ{%A+(w<%d!x2`++x&*uS6#CUt|0`$lHtLAb)&kglwG#E0Vmf_q4On zg~!kAuJ?;0N2k{Ce&;j&f(L$?mrkfVe&cHyCc`~`W$?^Y#+vTHF4?(Yv;ZIb&pvUC zk)l{v;K|N-IG!Gn0Y zV%8v$J%Bg`>cB!BGgQyG-XxVMhEbrr$#R9JksRYfinuq7xaIvrsulI74Flo7a?8^u z0U>NurGiLXyNyb8s)WSD-U7`^)R06ZwBq0I?(B2oU=XxYixT^M{%n7DzOxhFDo0Cv zp*cpS16!e-X@^7wJot!jV7zQhJqu8|%-q;th8?(n1hgDF$a2Xig)RL{@5d-BVzNbx zpp$dtL(CvKndD*eobaobGgTECplOjNCCxAwatB6kxoveQZS4L{F2myN>U2%xN(0c% zOv*BO3g`3tyRpxOB+oLam@9!Vv&g$b;}UM-{iJ|_jhGhb9!LjYC3}MKy^!PzGJMnz z0?pD#@tXx!nlWJW#(D87-xO(F#X{$<)GEW}T1T6IM6v|bfz(dBMj8ta6hwNY7VghDF|X-g>9Jw(|qLOeNMt32=2u_1iUa=4q` zK7MHoki}2?15(mubA?k=05Go2At?^+Bt$p%UAZyoms_#OF^jF+&>E87*C^e^lK^i! zgRARazZdik{IlUb<0kbM?Hw3@tD5rx>IM+iC`J7t)XR}#u93x+1L&M9&c~_bVH1@v zgi#bLh~8j0?8$%MIKxYwq9=#FPS#_CGASwPY!P4Q%A#KJ|3mbjSD0lhzlYH;rq1;7 zPCXQ=`06K-KJ>V+Jc!+iVr9OyM90n@3A7Y?$668VPN}+Rp(Ic>2qfYKVh)HWX z2Uau6;R4xoyR?z&ZJ7lfXv^p|wt`i}dVK2;bkyn)nrl3+S;WS+BeZax^6~5eTQQ(S zyGNryiGeA^lTeHz!Ba*=xf4X3`AmE(*5;ZxTd~D#c4?Iq(YErbxJz*WY~pI2qjBYB z)j&t}c83xIwr$p&e6YKrtfng#i*;g8oD_oSfMt?J+dYu9BLr(|F`q~Y1q5Lu51>bN zrgC-w;Ua1gRcm;fJd8TQ)gtImhqGYN`8o?m9efFfi{NTHdKh*F{Y7v+4MvLriu?uN zMHvS3slgKy!@4PR8meZRe{L}lXCC`4|IZ1n`DS4$BzSh+>TME7<0F1)lFg8o$Qr*e{&RXO@u$&zllH)nS^8lX~a+ zPpY-GMiE2dzY_LEg&6lFlbfI*gRtN%g2jFCMXJ;bYAbd{{P%v}NoKp-tyC)7T+TH) z-#M9SI*YEr18Y}<$eb;Jx%=~?8Thy7#j7UE6#Lr~0a(>JTI{tiL2#b$EAv+2SnK%x?BYu^bM$^; zF3#WcGVjUzuNRkRYs##f?fcswKhGZY1bO-5I7gexfnA#YyTK25+1yzi$v)1qgTCXy zar;cRyWvF3{%V8zX9n}>$JvJ`pSIiYmyaJk`uKVK>E}C#3xh}Rp^R$Vo^KzW^3L%g zFNi)|@@w5oy>c}8LnVIyy!d{0jtT1WBR<%F`|j&0uKUIxXQx}7O21&w+{O63y|xDq zarylDJGTH-agL%KC)|fVxyORmf(1gj1wLQw?&)}!e^aUNp6`owG+_*`n!tbB#}n_w zWP_hg9XTeoDo^BuLINo?tGp3e#f>b-XbR{9gbT#Vs3QnvCuq|qLN=^L;7w>U(8g@) zL@=Vqs4jJ;oJs-pN~JcW-%7tCbS$EtMbH!@^gWM--qF!LR01^C-eV?ZL@(8W=SACP z`@b5n;mUF6vo9Nos{vXoyzZoxWVZ~P0h6&QBcvW%FO_|Iv)H``-Lr}j(poW^VOjA0 zba4wV;;rOo-g*PJT^bpz#F1^FC$xg0p;*`#TS9DqPBUvMw(N-56PhJn+4e|~@P3u{ zD1-G&26(W=6+&BWG07GHnVv-(yBHnpPqR&%vXa6LglEBqzL47J5z1FY%3P1v>+`R7 zj2IvvB|0!fvkN2k@Y`W6K$Dw6r~4m$ho4Mhh-M{el&nNT-vv0(Xh_j?YZ7pnOxqM3 zBSc{Ug>8TaQ@y&BF!7>H_FRn*Q1ESquO$6nm_SW>vU{Uw>mZJ7ldeXz&4%K6 zYzs1_a|>nBu!@uwRPHFy{EZl4-pe?wWh!nk4B}Wh7~Bw{?Gjo{J=zlx)69t&QhHM5 zHHv`J!<0z(u3&At+>}|%8AFg+&rqt3!B`F|JRw|O^%a4tSkaU24bYt=SENyAPrB+c zyBZB^5CIN~0t{ho6OV)FqDhYWE`bV5JaNiQg-V$`+*5&w<=Sl|x1?3dtTU1gXNdPm ze-E#bbIBw~REj7iC`CYFxLct6@A!wYwq7QN&%%vIU2_yQrf?oHhF?}ZgRfKI(Io(p zYE5cI3r!~4u=(Kz*`9ocq@Je9z)%a?sOSAWd@+1GXPpW18AscfUR=|z#AQ31(h$K2N8|7 z;!zXkk}oT}2x=QumJ62mn?G6faQT(zw}Wx)7!TJ;a_e8|LDaZA6PXCYxc6#kNHSt}~jzxfrTr z3Css>LsL)$_7wF28_TY=brfnO7I|AE@M;?!Cd{eK&6=!xf#U4(D!R{qpIwV=y#}wp z25;QYjw5zea9l(Zvg0$rXA75Nd|(nc0*`v0yd4U!{n)48AKsDbcbaYRT?SiZz5bin44p^)-!GrVVv zajvn_9OK%-cPXUq{dc}yNvD&~kA}w#%w!mdPmh(fTCMge_)M8X9Bxn&H+^V2KSW=G z#@{>wx3Ob-{5_d1VGx+OI(qjd7~0_vhp&VcE-89K90W27pkl@NuUT-57f3j~=+Y;+ z2e?FwC*Gw$`3FE;=YhGzIw-j4P{R&2>^!7`jwycy;6Uv~=ZJ2{!_Ir1BP;}e-pkF8 z7Jh=6(+B>TYE$;=#bM`tg8PsyZ3HDj^^Dd-;s1Q*5H&Bw^;AX8Ox zc{63JPb3$mg7}|I_3y3kzxgUUCw&3x!Y(35rU!gSW{wl066954?T=bleU-oQ3olz_yS-f*N7*=x=Nwo0f2?;jxK8Ds4fI z4>W~6411m&>-g84D9M*BUBDx*OHjwgNee30!z1e*k{F(eqnl4+V{jx2nJlkmaa010j^A zfUVOMi^WkYB#_TXA~B~+6hODi62TBeyXfaJxnEUIm_L1q!Dt&a07in%AVPWEOEmL? zoqt%2kL%7!L7|#6o5OE+hb?Mur*;=vN!BX#JFkOkGc0P!n6>S87docTa#e?Ybnpf| z8(b%j_uJ@GfC!!!S8c>dJ$k{NMc5f_Gz^M}z&#;2$M+iXc8%C<+kTG`cCQfsI|{MK zvl_+Zm6?t|zRD)!D3>L3OdrFwo;Qbl{WQP+7PdWNISbFT8BosUn>jbew6SX;uhTIV zDO;UgFI8sOROS4NOO>t|3_j%m%4)tm!N>F23lddW6ktwRB} zTUW$%1xMBWp4Tsrf~=E|(p*1$m!N_#TCS)Eqam=z5f#zF;Fq7rqv64GB`{-z>1IVF zM#L{2_e2<}Pz%O;PfP$4jAee&6XX@@WiMbOKDeGf??2;_R15r7nH;8b6D_;D$OnhR z(kD_-L6-{7OW6m;T%4+qAy*HoEM-KQ49i1#M-WdIN|>h~#Fnk{v=P{D~a}>rV?IIc_$Ku&+Hqq(S%k5^Zh~~Kg=AseHEYWCC3=@t2fCZ>U$rAtJ zPU7HVta+w$Y->E>yWXk{?wrE^;?HR<8eITV1B4ft2EgPH!_y+X$i(ht4{k*eVCh+e zsrIdH)DuUV*eY6gPq-*4p|WvL(+VqDbkwKu)0K+}0;Xu-scS}#s75<8cR-&q4Sj6i zV$v!Pu9r+M6{O1rQ>n1spJN4HKt!*iaZ5P`GpHzJX;8YIE_Uuf7tP(w*X?GpeK&{Zvjy?hJvZmPS?&_)JmF5R@8*sT_3 zWaU~^c+plR7`YyXH;^U~F4uK!P|Jw6xmr$aM%3e#JDhQ-e>IsHn0!M<*cflH9r3@+*ZK9=$$gYlj*DCOcmRZ*iM-A>kcaKZv5i-PxL1o28Q$K)7Cowak zoE6Lp(@`vRF{H*soeY=-v&lB7xXez^Aiwb(T_R36N9K3S5^Lk8)zY3W*un~JNYZ!vUH49~W9l8zp`B`l?L;E*8`*%ULt`yDm|B2N{z z$YMTYzS9a&xRY4Hf12!ci6@7Hdg=J}>v~NfBTDo=G_V^0=IQU9i#$i8P?5=$`0Vtf zPefg?Vhf|Ac0=H>mQH$t6^8suV>c9qgY+^GbR})lX$y!_6Eog2r(e^TsfpOQ`_ybd zwSb}%PK82u?mQKG#!*PK3$rbJv*kMQ+0W`H-Z9H;j2W%soHMB!3;p!;I}xb1Ss?M- z$(PgDuOl)QCz&i!wn^;V+gnAPo&`5<49&N;yT+Uy8Krs^bGk~W&$UpI}H)f*_WukHi49E&QOhzS>Ls*Cdp6k!2 zg`1$PxHc(8EIi!_Jt1@pG=%9S?!N=qvA_VbGjGBt^`@|O9kjPc4=Z6Raiz;E@x(QZ*$W#~+$YD!Y{6tm31#j}CN_DGct(qU5IKPqFX+K)lZJ5c=V zpzQ)AOd9K$HwN*ahlHIq08ZS;z_;%lieci4Jr^H(cN5)9y`8R#3$^z-*}ct?jlAFS%>E^U8*H~PIRWxrzQ ztw)pDvuNyEiy3TuDEI;!4lElJKP=r?gwJ?c*a38{6QznaBL#o zB?r;#*IXKUceqBbnEFxa-tv`Xpx_<804R>z)2ca?|ucWRlPms*;j z*WqhZ482j!hCZ8%oBB^r{!+c1As3e}Mrf|SE9ORP5NhX8t~)orb>p}+XS4Ba_+}dp zf|TkGrb=;O@}<_0Yp&+nOBl%L5QVjflsuDG3$M&_mp>6Z4Od;?>j?7h(lHZK67{;N8i&gZlF4%)q$b&-9s z=7et_`>vj1ugY0r3%%`I3o8l0Kj;B6SnY8AXu=Aq3`{6`1uXkC10mjB-{FM0$=0D_ ztBJ24FNZyGy(mnCW~0Paybg)6Z`pio<3)JSN20!74U8HSTLws zRb?mCH)gpvnR~wo?N6Jr=d=cozTkN3wd2q^j5BblA~sCe1z^2RjVdu8PtxbHb_K4 zHAW(JYsn_W+OM?>BZpveGmr2bpA`PeDNdp=c8QG?Ea4Fv_~79ddqmC zO#)@aULF%4zsxcp97Y3%{ZpRxsbnLP0Deo3fj_P!<7DYib7K)=yu5^%;Wc zzR}=WdC^aqaw02W2%8>!LeFd^qU}M%R3a6cPYDr0cwOUqS-bEx3p_dmO{P{(IXUNx zytTVV&ahJt?;BT9173#JaHd6} zk&z1Y4L^C*Ur8~6MUL;j1J=^>BzNv>S4?he1G=I1f!dwUSAcXyJO9h-9uW~qyB{%q zk*AOX@!Z2t!8P)C!eEsJs&9jf>poWdFU4wmd`@S}D7_EfepM$p6CCT&bD!q)uckS9 z#9LLqj{Ezxr++Bz$y0awGC2JIlQbwhdn4=yByyh?_0Ok8t%+;A&ldj=XNzOc?5mza zu8*5=rUpsvt0%NJ^{8c response.json()) .then(data => { listWifiNetworks(data); @@ -49,7 +55,6 @@ function getWiFiList() { }); } - function selectWifi(row) { try { $('select-' + row.target.parentNode.id).checked = true; @@ -75,25 +80,19 @@ function listWifiNetworks(elems) { row.innerHTML = ``; row.innerHTML += `${elem.ssid}`; row.innerHTML += '' + elem.strength + ' dBm'; - if (elem.security) - row.innerHTML += '' + svgLock + ''; - else - row.innerHTML += '' + svgUnlock + ''; - + row.innerHTML += (elem.security) ? '' + svgLock + '' : '' + svgUnlock + ''; // Add row to list list.appendChild(row); }); - $("wifi-table").classList.remove("hide"); } function getEspStatus() { - var url = new URL("http://" + `${window.location.hostname}` + "/wifistatus"); - fetch(url) + fetch(esp + "wifistatus") .then(response => response.json()) .then(data => { $('esp-mode').innerHTML = data.mode; - $('esp-ip').innerHTML = (data.ip & 255) + '.' + (data.ip>>8 & 255) +'.' + (data.ip>>16 & 255) + '.' + (data.ip>>>24); + $('esp-ip').innerHTML = data.ip; $('firmware').innerHTML = data.firmware; }); } @@ -104,45 +103,43 @@ async function fetchFromFile(f, m) { return data; } +function setLogoBase64(data, key, base64) { + var size = data[key].replace(/[^\d_]/g, '').split('_'); + var img = newEl('img', {'class': 'logo', 'src': 'data:image/png;base64, '+ base64, 'style': `width:${size[0]}px;height:${size[1]}px`}); + $('img-logo').innerHTML = ""; + $('img-logo').append(img); + $('img-logo').setAttribute('type', 'number'); + $('img-logo').setAttribute('title', ''); + delete data[key]; +} + function getParameters() { $('loader').classList.remove('hide'); - var url = new URL("http://" + `${window.location.hostname}` + '/get_config'); - fetch(url) + fetch(esp + "get_config") .then(res => res.text()) .then(config => { configFile = config; - url = new URL("http://" + `${window.location.hostname}` + configFile); - fetch(url) + fetch(esp + configFile) .then(response => response.json()) .then(data => { for (const key in data){ if(data.hasOwnProperty(key)){ if (key === 'name-logo') { $('name-logo').innerHTML = data[key].replace( /(<([^>]+)>)/ig, ''); + document.title = data[key].replace( /(<([^>]+)>)/ig, ''); delete data[key]; continue; } if (key == 'img-logo') { fetch(data[key]) .then((response) => response.text()) - .then((base64) => { - var size = data[key].replace(/[^\d_]/g, '').split('_'); - var img = newEl('img'); - img.classList.add('logo'); - img.setAttribute('src', 'data:image/png;base64, ' + base64); - img.setAttribute('style', `width:${size[0]}px;height:${size[1]}px`); - $('img-logo').innerHTML = ""; - $('img-logo').append(img); - $('img-logo').setAttribute('type', 'number'); - $('img-logo').setAttribute('title', ''); - delete data[key]; - }) + .then(base64 => setLogoBase64(data, key, base64)); continue; } } } options = data; - createOptionsBox(options) + createOptionsBox(options); $('loader').classList.add('hide'); }) .then( () => { @@ -152,7 +149,6 @@ function getParameters() { } - function addOptionsElement(opt) { const bools = Object.keys(opt) .filter(key => typeof(opt[key]) === "boolean") @@ -161,6 +157,24 @@ function addOptionsElement(opt) { return obj; }, {}); + if (Object.entries(bools).length !== 0) { + var d = newEl('div', {'class': 'row-wrapper'}); + Object.entries(bools).forEach(([key, value]) => { + let lbl = newEl('label', {'class': 'input-label toggle'}); + let el = newEl('input', {'class': 't-check opt-input', 'type': 'checkbox', 'id': key}); + el.checked = value; + let dv = newEl('div', {'class': 'toggle-switch'}); + let sp = newEl('span' , {'class': 'toggle-label'}); + sp.textContent = key; + lbl.appendChild(el); + lbl.appendChild(dv); + lbl.appendChild(sp); + addInputListener(el); + d.appendChild(lbl); + }); + lastBox.appendChild(d); + } + const others = Object.keys(opt) .filter(key => typeof(opt[key]) !== "boolean") .reduce((obj, key) => { @@ -169,28 +183,23 @@ function addOptionsElement(opt) { }, {}); Object.entries(others).forEach(([key, value]) => { - let lbl = newEl('label'); - el = newEl('input'); - el.setAttribute('id', key); - el.setAttribute('type', 'text'); - el.value = value; - el.classList.add('opt-input'); - lbl.setAttribute('label-for', key); - lbl.classList.add('input-label'); + let lbl = newEl('label', {'class': 'input-label', 'label-for': key}); lbl.textContent = key; + let el = newEl('input', {'class': 'opt-input', 'type': 'text', 'id': key}); + el.value = value; + if (typeof(value) === "number") el.setAttribute('type', 'number'); if (typeof(value) === "object" ) { // This is a select/option if (value.values) { - el = newEl('select'); - el.setAttribute('id', key); + el = newEl('select', {'id': key}); value.values.forEach((a) => { var opt = newEl('option'); opt.textContent = a; opt.value = a; el.appendChild(opt); - }) + }); el.value = value.selected; lastBox.appendChild(el); } @@ -205,8 +214,7 @@ function addOptionsElement(opt) { } } addInputListener(el); - var d = newEl('div'); - d.classList.add('tf-wrapper'); + var d = newEl('div', {'class': 'tf-wrapper'}); d.appendChild(lbl); d.appendChild(el); lastBox.appendChild(d); @@ -216,110 +224,75 @@ function addOptionsElement(opt) { } }); - if (Object.entries(bools).length !== 0) { - var d = newEl('div'); - d.classList.add('row-wrapper'); - Object.entries(bools).forEach(([key, value]) => { - let lbl = newEl('label'); - el = newEl('input'); - el.setAttribute('id', key); - el.setAttribute('type', 'checkbox'); - el.classList.add('t-check', 'opt-input'); - el.checked = value; - lbl.classList.add('input-label', 'toggle'); - let dv = newEl('div'); - dv.classList.add('toggle-switch'); - let sp = newEl('span'); - sp.classList.add('toggle-label'); - sp.textContent = key; - lbl.appendChild(el); - lbl.appendChild(dv); - lbl.appendChild(sp); - addInputListener(el); - d.appendChild(lbl); - }); - lastBox.appendChild(d); - } } function createNewBox(cont, lbl) { - var box = newEl('div'); - box.setAttribute('id', 'option-box' + cont); - box.classList.add('ctn', 'opt-box', 'hide'); - var h = newEl('h2'); - h.classList.add('heading-2'); + var box = newEl('div', {'class': 'ctn opt-box hide', 'id': 'option-box'+cont}); + var h = newEl('h2', {'class': 'heading-2'}); h.innerHTML = lbl; box.appendChild(h); $('main-box').appendChild(box); + // Add new voice in menu and relatvie listener - var lnk = newEl('a'); - lnk.setAttribute('id', 'set-opt' + cont); - lnk.setAttribute('data-box', 'option-box' + cont); - lnk.classList.add('a-link'); + var lnk = newEl('a', {'class': 'a-link', 'id': 'set-opt'+cont, 'data-box': 'option-box'+cont}); lnk.innerHTML = lbl; lnk.addEventListener('click', switchPage); $('nav-link').appendChild(lnk); return box; } - async function createOptionsBox(raw) { - if(!Object.keys(raw)[0].startsWith('param-box')) { - raw = {'param-box1': 'Options', ...raw}; - options = raw; - } - var boxId; - let nest = {}; - + var nest = {}; + var boxId = 'wifi-box'; + lastBox = $(boxId); + Object.entries(raw).forEach(([key, value], index) => { - if (index === 0) { - lastBox = createNewBox(Math.floor(Math.random() * 100), value); - boxId = value; + if (boxId === 'wifi-box') { + $('no-dhcp').checked = raw.dhcp; + $('ip').value = raw.ip_address; + $('gateway').value = raw.gateway; + $('subnet').value = raw.subnet; + if ($('no-dhcp').checked){ + $('conf-wifi').classList.remove('hide'); + $('save-wifi').classList.remove('hide'); + } } + if (key.startsWith('param-box')) { - if (index !== 0) { - addOptionsElement(nest); - lastBox = createNewBox(Math.floor(Math.random() * 100), value); - nest = {}; - boxId = value; - } + addOptionsElement(nest); + lastBox = createNewBox(index, value); + nest = {}; + boxId = value; } - else { + else if (boxId != 'wifi-box') { var hidden = false; if (key.startsWith('img-logo') || key.startsWith('name-logo')) { hidden = true; } else if(key.startsWith('raw-css')) { - fetchFromFile(value, 'HEAD').then(() => { - var css = newEl("link"); - css.setAttribute('rel', 'stylesheet'); - css.setAttribute('href', value); + fetchFromFile(value, 'HEAD') + .then(() => { + var css = newEl("link", {'rel': 'stylesheet', 'href': value}); document.head.appendChild(css); - delete raw[key]; }); hidden = true; } // Inject runtime JS source file else if(key.startsWith('raw-javascript')) { - fetchFromFile(value, 'HEAD').then(() => { - var js = newEl("script"); - js.setAttribute('src', value); + fetchFromFile(value, 'HEAD') + .then(() => { + var js = newEl("script", {'src': value}); document.body.appendChild(js); - delete raw[key]; }); hidden = true; } // Inject runtime HTML source file else if(key.startsWith('raw-html')) { - var el = newEl('div'); - el.classList.add('tf-wrapper'); - el.setAttribute('id', value); + var el = newEl('div', {'class': 'tf-wrapper raw-html', 'id': value, 'data-box': lastBox.id}); lastBox.appendChild(el); fetchFromFile(value, 'GET') - .then((res) => { - $(value).innerHTML = res; - }); + .then((res) => { $(value).innerHTML = res; }); hidden = true; } if (!hidden) { @@ -375,8 +348,32 @@ function addInputListener(item) { } } +function insertKey(key,value,obj,pos){ + return Object.keys(obj).reduce((ac,a,i) => { + if(i === pos) ac[key] = value; + ac[a] = obj[a]; + return ac; + },{}); +} function saveParameters() { + // Backward compatibility + if(Object.keys(options)[0].startsWith('param-box')) { + if(Object.keys(options)[0] === 'param-box0') { + options['param-box-0'] = options['wifi-box']; + options = {'dhcp': false, ...options}; + } + else + options = {'wifi-box': '', 'dhcp': false, ...options}; + } + + options.dhcp = $('no-dhcp').checked; + if ($('no-dhcp').checked) { + options = insertKey('ip_address', $('ip').value, options, 2); + options = insertKey('gateway', $('gateway').value, options, 3); + options = insertKey('subnet', $('subnet').value, options, 4); + } + var myblob = new Blob([JSON.stringify(options, null, 2)], { type: 'application/json' }); @@ -392,36 +389,55 @@ function saveParameters() { // Handle the server response .then(response => response.text()) .then(text => { - openModalMessage('Save options', '
    "' + configFile +'" saved successfully on flash memory!

    '); + openModalMessage('Save options','
    "' + configFile +'" saved successfully on flash memory!

    '); }); } - -function doConnection() { +function doConnection(e, f) { + if ($('ssid').value === '' || $('password').value === ''){ + openModalMessage('Connect to WiFi','Please insert a SSID and a Password'); + return; + } var formdata = new FormData(); formdata.append("ssid", $('ssid').value); formdata.append("password", $('password').value); formdata.append("persistent", $('persistent').checked); + if (typeof f !== 'undefined') + formdata.append("newSSID", true); + if ($('no-dhcp').checked) { + formdata.append("ip_address", $('ip').value); + formdata.append("gateway", $('gateway').value); + formdata.append("subnet", $('subnet').value); + } var requestOptions = { method: 'POST', body: formdata, redirect: 'follow' }; - + $('loader').classList.remove('hide'); + var s; fetch('/connect', requestOptions) - .then(function(response){ - httpCode = response.status; - return response.text(); + .then(function(res) { + s = res.status; + return res.text(); }) - .then(function(text) { - if (httpCode === 200) { - openModalMessage('Connect to WiFi', '
    ' + text + ''); - } - else { - openModalMessage('Error!', '
    Error on connection: ' + text + '

    '); + .then(function(data) { + if (s === 200) { + if (data.includes("already")) { + openModalMessage('Connect to WiFi', data, () => {doConnection(e, true)}); + $('loader').classList.add('hide'); + } + else + openModalMessage('Connect to WiFi', data, restartESP); } + else + openModalMessage('Error!', data); $('loader').classList.add('hide'); + }) + .catch((error) => { + openModalMessage('Connect to WiFi', error); + $('loader').classList.add('hide'); }); } @@ -445,7 +461,14 @@ function switchPage(el) { var fragment = document.createDocumentFragment(); fragment.appendChild($('btn-hr')); fragment.appendChild($('btn-box')); - $(el.target.getAttribute("data-box")).appendChild(fragment); + const box = $(el.target.getAttribute("data-box")); + box.appendChild(fragment); + + document.querySelectorAll('.raw-html').forEach(function(el) { + if (el.getAttribute("data-box") === box.id) + box.insertBefore(el, $('btn-hr')); + }); + $('btn-box').classList.remove('hide'); $('btn-hr').classList.remove('hide'); } @@ -460,9 +483,7 @@ function showMenu() { $('top-nav').classList.add('responsive'); } -var closeCallback = function(){;} ; - -function openModalMessage(title, msg, fn) { +function openModalMessage(title, msg, fn, args) { $('message-title').innerHTML = title; $('message-body').innerHTML = msg; $('modal-message').open = true; @@ -472,7 +493,7 @@ function openModalMessage(title, msg, fn) { $('ok-modal').classList.remove('hide'); } else - $('ok-modal').classList.add('hide'); + $('ok-modal').classList.add('hide'); } function closeModalMessage(do_cb) { @@ -483,12 +504,11 @@ function closeModalMessage(do_cb) { } function restartESP() { - var url = new URL("http://" + `${window.location.hostname}` + "/reset"); - fetch(url) + fetch(esp + "reset") .then(response => response.text()) .then(data => { closeModalMessage(); - openModalMessage('Restart!', '
    ESP restarted. Please wait a little and then reload this page.
    '); + openModalMessage('Restart!', '
    ESP restarted!'); }); } @@ -514,11 +534,7 @@ function handleSubmit() { req.onload = function(d) { loader.classList.add('hide'); prg.classList.remove('active'); - prg.classList.add('hide'); - if (req.status != 200) - update.innerHTML = `Error ${req.status}: ${req.statusText}`; - else - update.innerHTML = req.response; + update.innerHTML = (req.status != 200) ? `Error ${req.status}: ${req.statusText}` : req.response; }; req.upload.addEventListener('progress', (p) => { let w = Math.round(p.loaded/p.total*100) + '%'; @@ -537,17 +553,14 @@ async function uploadFolder(e) { let item = document.createElement('li'); item.textContent = path; listing.appendChild(item); - // Save each file in the ESP flash var reader = new FileReader(); reader.onload = function(event) { // Remove default "data" from path if (path.startsWith("data/")) path = path.replace("data/", ""); - var formData = new FormData(); formData.set("data", file, "/" + path); - // POST data using the Fetch API fetch('/edit', {method: 'POST', body: formData}) .then(response => response.text()) @@ -556,7 +569,6 @@ async function uploadFolder(e) { }; } - // Initializes the app. $('svg-menu').innerHTML = svgMenu; $('svg-eye').innerHTML = svgEye; @@ -571,6 +583,7 @@ $('hum-btn').addEventListener('click', showMenu); $('scan-wifi').addEventListener('click', getWiFiList); $('connect-wifi').addEventListener('click', doConnection); $('save-params').addEventListener('click', saveParameters); +$('save-wifi').addEventListener('click', saveParameters); $('show-hide-password').addEventListener('click', showHidePassword); $('set-wifi').addEventListener('click', switchPage); $('set-update').addEventListener('click', switchPage); @@ -583,13 +596,15 @@ $('file-input').addEventListener('change', () => { $('fw-label').style.background = 'brown'; }); -window.addEventListener('load', getParameters); - -// Enable wifi-connect btn only if password inserted -$('connect-wifi').disabled = true; -$('password').addEventListener('input', (event) => { - if( $('password').value.length === 0 ) - $('connect-wifi').disabled = true; - else - $('connect-wifi').disabled = false; +$('no-dhcp').addEventListener('change', function() { + let el = $('conf-wifi'); + let btn = $('save-wifi'); + if (this.checked) { + el.classList.remove('hide'); + btn.classList.remove('hide'); + } + else { + el.classList.add('hide'); + } }); +window.addEventListener('load', getParameters); diff --git a/built-in-webpages/setup/build_setup/readme.md b/built-in-webpages/setup/build_setup/readme.md index f3700926..5db82da5 100644 --- a/built-in-webpages/setup/build_setup/readme.md +++ b/built-in-webpages/setup/build_setup/readme.md @@ -1,5 +1,13 @@ If you want customize **/setup** webpage (headers, logo etc etc): * edit the source files as your needs (setup.htm, app.js, style.css) -* open a terminal in *build_setup* folder and run `npm i` to install all nodejs modules needed +* open a terminal in ***build_setup*** folder and run `npm i` to install all nodejs modules needed * run `node minify.js` -* overwrite the content of *setup_htm.h* in src folder with the new generated file +* overwrite the content of `setup_htm.h` inside `/src` folder with the new generated file + + +# +As alternative on Windows system, is possible to use the tool [SEGGER Bin2C](https://www.segger.com/free-utilities/bin2c/). + +`all.htm.gz` file need to be prepared manually (for example you could use online tools for minify CSS, JavaScript and HTML) + +This Bin2C program will create a file named `all.htm.c`, simply copy & past the content and overwrite `setup_htm.h` file \ No newline at end of file diff --git a/built-in-webpages/setup/build_setup/stringConverter.js b/built-in-webpages/setup/build_setup/stringConverter.js index 7e7aef6e..486c5490 100644 --- a/built-in-webpages/setup/build_setup/stringConverter.js +++ b/built-in-webpages/setup/build_setup/stringConverter.js @@ -36,10 +36,11 @@ module.exports = { var dataLength = data.byteLength; console.log('actualDataLength: ' + dataLength); - - var resultString = '#define SETUP_HTML_SIZE '; - resultString += dataLength + '\n' - resultString += 'static const unsigned char SETUP_HTML[] PROGMEM = {\n '; + + // Changed array name to match SEGGER Bin2C output + var resultString = 'static const unsigned char _acall_htm['; + resultString += dataLength; + resultString += ' + 1] = {\n '; resultString += stringConverter.convert(dataLength, 1, true, 16, data); resultString += '\n};'; return resultString; diff --git a/built-in-webpages/setup/setup.htm b/built-in-webpages/setup/setup.htm index af764425..aea135e6 100644 --- a/built-in-webpages/setup/setup.htm +++ b/built-in-webpages/setup/setup.htm @@ -47,7 +47,7 @@

    Connect to WiFi

    - +
    @@ -55,10 +55,29 @@

    Connect to WiFi

    - - - +
    + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    diff --git a/built-in-webpages/setup/style.css b/built-in-webpages/setup/style.css index 55b884d1..12c7a0a7 100644 --- a/built-in-webpages/setup/style.css +++ b/built-in-webpages/setup/style.css @@ -12,7 +12,7 @@ input[type='checkbox']{box-sizing:border-box;padding:0;} input[type='text'], input[type='number'], input[type='password'], select { height:40px; width:90%; - padding: 0px 0 0 20px; + padding: 0 0 0 20px; border:1px solid #ccc; border-radius: 6px; font-size: 16px; @@ -55,12 +55,12 @@ select {width:92.5%} .progress-wrap {text-align: center; position: relative; width: 60%; height: 25px; margin: 20px auto;background: #9e9e9e7d;font-size: 20px;transition: all 0.4s ease;} .progress-wrap:not(.active) {cursor: pointer;background:#9e9e9e00} -.progress-wrap .progress {width: 0%;z-index: 5; background: #9e9e9ea1;opacity: 0; transition: all 0.3s ease;} +.progress-wrap .progress {width: 0;z-index: 5; background: #9e9e9ea1;opacity: 0; transition: all 0.3s ease;} .progress-wrap.active .progress { opacity: 1; animation: progress-anim 10s ease 0s;} .progress-wrap[data-progress-style='fill-back'] .progress {position: absolute;left: 0;top: 0; right: 0; bottom: 0;} .d-modal{ - border-radius: 10px; border-style: solid;border-width: 1px;border-color: #3333336e;background-color: hsl(199.53deg 18.3% 46.08% / 90%); - box-shadow: rgba(0, 0, 0, 0.24) 0px 3px 8px;left: 50%;position: absolute;top: 50%;transform: translate(-50%, -50%);flex-direction: column; + width: 70%; border-radius: 10px; border-style: solid;border-width: 1px;border-color: #3333336e;background-color: hsl(199.53deg 18.3% 46.08% / 90%); + box-shadow: rgba(0, 0, 0, 0.24) 0 3px 8px;left: 50%;position: absolute;top: 50%;transform: translate(-50%, -50%);flex-direction: column; } .d-modal-title{color:#111827;padding:1.5em;position:relative;width:calc(100% - 4.5em);} .d-modal-content{border-top:1px solid #e0e0e0;padding:1.5em;overflow:auto;} @@ -70,7 +70,7 @@ select {width:92.5%} .topnav a.active{background-color:#56c080;color:white;} .topnav .icon{display:none;} .logo{width: 100%;} -.lbl-wifi {text-align: center;} +.lbl-wifi {align-self: flex-end;} .table{width:90%;margin:auto;border-collapse:collapse;border-spacing:0;} .svg{display:flex;width:20px;margin-right:10px;} .svg-e{margin-top: 5px;} @@ -102,8 +102,8 @@ select {width:92.5%} .btn-bar{display:flex;padding:20px;justify-content:center;flex-wrap:wrap;grid-column-gap:30px;grid-row-gap:20px; order:998;} .tf-wrapper{display:flex;margin-bottom:10px;flex-direction:column;align-items:center;} .heading{margin-right:10px;margin-left:10px;} -.hide,.show-hide.w--current{display:none;} -.toggle{cursor: pointer;display: block; padding: 4px; width: fit-content; margin: 0px 0px 18px -10px;} +.hide{display:none;} +.toggle{cursor: pointer;display: block; padding: 4px; width: fit-content; margin: 0 0 18px -10px;} .toggle-label{margin: 0 20px 0 20px;position: relative;top: 2px;} .toggle-switch{display:inline-block;background:#ccc;border-radius:16px;width:58px;height:32px;position:relative;vertical-align:middle;transition:background .25s;} .toggle-switch:before,.toggle-switch:after{content:"";} @@ -119,7 +119,7 @@ select {width:92.5%} .firmware{display: flex;flex-direction: column;align-items: center;} .fw-upload {display: inline-block;padding: 12px 20px;cursor: pointer;border-radius: 5px;margin-bottom: 20px;background: dimgray;color: #fff;} .fw-upload:hover {filter: brightness(85%);} -.btn, .submit { min-width: 30%; } +.btn, .submit { min-width: 25%; } #about {color: lightgray} diff --git a/src/AsyncFsWebServer.cpp b/src/AsyncFsWebServer.cpp index 443c7d25..4dd01ca0 100644 --- a/src/AsyncFsWebServer.cpp +++ b/src/AsyncFsWebServer.cpp @@ -21,7 +21,7 @@ bool AsyncFsWebServer::init(AwsEventHandler wsHandle) { ////////////////////// BUILT-IN HANDLERS //////////////////////////// using namespace std::placeholders; - //on("/favicon.ico", HTTP_GET, std::bind(&AsyncFsWebServer::sendOK, this, _1)); + on("/favicon.ico", HTTP_GET, std::bind(&AsyncFsWebServer::sendOK, this, _1)); on("/connect", HTTP_POST, std::bind(&AsyncFsWebServer::doWifiConnection, this, _1)); on("/scan", HTTP_GET, std::bind(&AsyncFsWebServer::handleScanNetworks, this, _1)); on("/wifistatus", HTTP_GET, std::bind(&AsyncFsWebServer::getStatus, this, _1)); @@ -40,7 +40,7 @@ bool AsyncFsWebServer::init(AwsEventHandler wsHandle) { ); on("/reset", HTTP_GET, [](AsyncWebServerRequest *request) { - request->send(200, "text/plain", "RESET"); + request->send(200, "text/plain", WiFi.localIP().toString()); delay(500); ESP.restart(); }); @@ -122,20 +122,18 @@ void AsyncFsWebServer::enableFsCodeEditor() { } bool AsyncFsWebServer::startCaptivePortal(const char* ssid, const char* pass, const char* redirectTargetURL) { - + if (! WiFi.softAP(ssid, pass)) { log_error("Captive portal failed to start: WiFi.softAP failed!"); return false; } -#ifndef CAPTIVE_PORTAL_NO_SAMSUNG // Set AP IP 8.8.8.8 and subnet 255.255.255.0 if (! WiFi.softAPConfig(0x08080808, 0x08080808, 0x00FFFFFF)) { log_error("Captive portal failed to start: WiFi.softAPConfig failed!"); WiFi.enableAP(false); return false; } -#endif m_dnsServer = new DNSServer(); if (! m_dnsServer->start(53, "*", WiFi.softAPIP())) { @@ -212,7 +210,9 @@ void AsyncFsWebServer::handleSetup(AsyncWebServerRequest *request) { return request->requestAuthentication(); } - AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", (uint8_t*)SETUP_HTML, SETUP_HTML_SIZE); + // AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", (uint8_t*)SETUP_HTML, SETUP_HTML_SIZE); + // Changed array name to match SEGGER Bin2C output + AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", (uint8_t*)_acall_htm, sizeof(_acall_htm)); response->addHeader("Content-Encoding", "gzip"); response->addHeader("X-Config-File", CONFIG_FOLDER CONFIG_FILE); request->send(response); @@ -258,24 +258,6 @@ void AsyncFsWebServer::clearConfig(AsyncWebServerRequest *request) { request->send(200, "text/plain", "Clear config not done"); } -IPAddress AsyncFsWebServer::setAPmode(const char *ssid, const char *psk) { - using namespace std::placeholders; - WiFi.mode(WIFI_AP); - WiFi.persistent(false); - WiFi.softAP(ssid, psk); - - // Captive Portal redirect - on("/redirect", HTTP_GET, std::bind(&AsyncFsWebServer::handleSetup, this, _1)); - on("/connecttest.txt", HTTP_GET, std::bind(&AsyncFsWebServer::handleSetup, this, _1)); - on("/hotspot-detect.html", HTTP_GET, std::bind(&AsyncFsWebServer::handleSetup, this, _1)); - on("/generate_204", HTTP_GET, std::bind(&AsyncFsWebServer::handleSetup, this, _1)); - on("/gen_204", HTTP_GET, std::bind(&AsyncFsWebServer::handleSetup, this, _1)); - - Serial.print(F("\nAP mode.\nServer IP address: ")); - Serial.println(WiFi.softAPIP()); - Serial.println(); - return WiFi.softAPIP(); -} void AsyncFsWebServer::setLogoBase64(const char* logo, const char* width, const char* height, bool overwrite) { char filename[32] = {CONFIG_FOLDER}; @@ -297,7 +279,9 @@ bool AsyncFsWebServer::optionToFile(const char* filename, const char* str, bool } // Create or overwrite option file else { + file.close(); file = m_filesystem->open(filename, "w"); + if (file) { file.print(str); file.close(); @@ -315,29 +299,33 @@ void AsyncFsWebServer::addSource(const char* source, const char* tag, bool overW String path = CONFIG_FOLDER; path += "/"; path += tag; - if (String(tag).indexOf("html")> -1) + + if (strstr(tag, "html") != NULL) path += ".htm"; - else if (String(tag).indexOf("css") > -1) + else if (strstr(tag, "css") != NULL) path += ".css"; - else if (String(tag).indexOf("javascript") > -1) + else if (strstr(tag, "javascript") != NULL) path += ".js"; optionToFile(path.c_str(), source, overWrite); addOption(tag, path.c_str(), false); } void AsyncFsWebServer::addHTML(const char* html, const char* id, bool overWrite) { - String jsonId = "raw-html-" + String(id); - addSource(html, jsonId.c_str(), overWrite); + String _id = "raw-html-"; + _id += id; + addSource(html, _id.c_str(), overWrite); } void AsyncFsWebServer::addCSS(const char* css, const char* id, bool overWrite) { - String jsonId = "raw-css-" + String(id); - addSource(css, jsonId.c_str(), overWrite); + String _id = "raw-css-" ; + _id += id; + addSource(css, _id.c_str(), overWrite); } void AsyncFsWebServer::addJavascript(const char* script, const char* id, bool overWrite) { - String jsonId = "raw-javascript-" + String(id); - addSource(script, jsonId.c_str(), overWrite); + String _id = "raw-javascript-" ; + _id += id; + addSource(script, _id.c_str(), overWrite); } void AsyncFsWebServer::addDropdownList(const char *label, const char** array, size_t size) { @@ -379,32 +367,35 @@ void AsyncFsWebServer::addDropdownList(const char *label, const char** array, si } void AsyncFsWebServer::handleScanNetworks(AsyncWebServerRequest *request) { - // Increase task WDT timeout - setTaskWdt(15000); - + setTaskWdt(15000); // Increase task WDT timeout log_info("Start scan WiFi networks"); + #if defined (ESP8266) + wdt_disable(); + int res = WiFi.scanNetworks(); + wdt_enable(4000); + #else int res = WiFi.scanNetworks(); + #endif + log_info(" done!\nNumber of networks: %d", res); - String json = "["; + DynamicJsonDocument doc(res*96); + JsonArray array = doc.to(); + if (res > 0) { for (int i = 0; i < res; ++i) { - if (i) json += ","; - json += "{"; - json += "\"strength\":"; - json += WiFi.RSSI(i); - json += ",\"ssid\":\""; - json += WiFi.SSID(i); - json += "\",\"security\":\""; + JsonObject obj = array.createNestedObject(); + obj["strength"] = WiFi.RSSI(i); + obj["ssid"] = WiFi.SSID(i); #if defined(ESP8266) - json += WiFi.encryptionType(i) == AUTH_OPEN ? "none" : "enabled"; + obj["security"] = AUTH_OPEN ? "none" : "enabled"; #elif defined(ESP32) - json += WiFi.encryptionType(i) == WIFI_AUTH_OPEN ? "none" : "enabled"; + obj["security"] = WIFI_AUTH_OPEN ? "none" : "enabled"; #endif - json += "\"}"; } WiFi.scanDelete(); } - json += "]"; + String json; + serializeJson(doc, json); request->send(200, "application/json", json); log_info("%s", json.c_str()); } @@ -439,7 +430,7 @@ void AsyncFsWebServer::handleUpload(AsyncWebServerRequest *request, String filen // DebugPrintln("Handle upload POST"); if (!index) { // Increase task WDT timeout - setTaskWdt(15000); + setTaskWdt(m_timeout); // Create folder if necessary (up to max 5 sublevels) int len = filename.length(); @@ -469,7 +460,7 @@ void AsyncFsWebServer::handleUpload(AsyncWebServerRequest *request, String filen void AsyncFsWebServer::doWifiConnection(AsyncWebServerRequest *request) { String ssid, pass; IPAddress gateway, subnet, local_ip; - bool config = false; + bool config = false, newSSID = false; if (request->hasArg("ip_address") && request->hasArg("subnet") && request->hasArg("gateway")) { gateway.fromString(request->arg("gateway")); @@ -484,6 +475,31 @@ void AsyncFsWebServer::doWifiConnection(AsyncWebServerRequest *request) { if (request->hasArg("password")) pass = request->arg("password"); + if (request->hasArg("newSSID")) { + newSSID = true; + } + + /* + * If we are already connected and a new SSID is needed, once the ESP will join the new network, + * /setup web page will no longer be able to communicate with ESP and therefore + * it will not be possible to inform the user about the new IP address. + * Inform and prompt the user for a confirmation (if OK, the next request will force disconnect variable) + */ + if (WiFi.status() == WL_CONNECTED && !newSSID) { + char resp[512]; + snprintf(resp, sizeof(resp), + "ESP is already connected to %s WiFi!
    " + "Do you want close this connection and attempt to connect to %s?" + "

    Note:
    Flash stored WiFi credentials will be updated.
    " + "The ESP will no longer be reachable from this web page " + "due to the change of WiFi network.
    To find out the new IP address, " + "check the serial monitor or your router.
    ", + WiFi.SSID().c_str(), ssid.c_str() + ); + request->send(200, "application/json", resp); + return; + } + if (request->hasArg("persistent")) { if (request->arg("persistent").equals("false")) { WiFi.persistent(false); @@ -522,42 +538,34 @@ void AsyncFsWebServer::doWifiConnection(AsyncWebServerRequest *request) { memcpy(&stationConf.sta.password, pass.c_str(), pass.length()); esp_wifi_set_config(WIFI_IF_STA, &stationConf); #endif - } } - if (WiFi.status() == WL_CONNECTED) { - // IPAddress ip = WiFi.localIP(); - String resp = F("ESP is currently connected to a WiFi network.

    " - "Actual connection will be closed and a new attempt will be done with "); - resp += ssid; - resp += " WiFi network."; - request->send(200, "text/plain", resp); - delay(250); - Serial.println("\nDisconnect from current WiFi network"); - WiFi.disconnect(); - } - // Connect to the provided SSID if (ssid.length() && pass.length()) { setTaskWdt(m_timeout + 1000); WiFi.mode(WIFI_AP_STA); // Manual connection setup - if (config) { + if (config) { log_info("Manual config WiFi connection with IP: %s", local_ip.toString().c_str()); - if (!WiFi.config(local_ip, gateway, subnet)) + if (!WiFi.config(local_ip, gateway, subnet)) log_error("STA Failed to configure"); } - + Serial.printf("\n\n\nConnecting to %s\n", ssid.c_str()); WiFi.begin(ssid.c_str(), pass.c_str()); - delay(500); + + if (WiFi.status() == WL_CONNECTED && newSSID) { + log_i("Disconnect from current WiFi network"); + WiFi.disconnect(); + delay(10); + } uint32_t beginTime = millis(); while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("*.*"); + delay(250); + Serial.print("*"); #if defined(ESP8266) ESP.wdtFeed(); #else @@ -579,11 +587,16 @@ void AsyncFsWebServer::doWifiConnection(AsyncWebServerRequest *request) { String serverLoc = F("http://"); for (int i = 0; i < 4; i++) serverLoc += i ? "." + String(ip[i]) : String(ip[i]); - - String resp = F("Restart ESP and then reload this page from the new LAN address"); - request->send(200, "text/plain", resp); + serverLoc += "/setup"; + + char resp[256]; + snprintf(resp, sizeof(resp), + "ESP successfully connected to %s WiFi network.
    Restart ESP now?" + "

    Note: disconnect your browser from ESP AP and then reload %s", + ssid.c_str(), serverLoc.c_str(), serverLoc.c_str() + ); + log_d("%s", resp); + request->send(200, "application/json", resp); } } setTaskWdt(8000); @@ -692,7 +705,7 @@ IPAddress AsyncFsWebServer::startWiFi(uint32_t timeout, CallbackF fn ) { subnet.fromString(doc["subnet"].as()); local_ip.fromString(doc["ip_address"].as()); log_info("Manual config WiFi connection with IP: %s\n", local_ip.toString().c_str()); - if (!WiFi.config(local_ip, gateway, subnet)) + if (!WiFi.config(local_ip, gateway, subnet)) log_error("STA Failed to configure"); delay(100); } @@ -744,8 +757,8 @@ IPAddress AsyncFsWebServer::startWiFi(uint32_t timeout, CallbackF fn ) { } IPAddress AsyncFsWebServer::startWiFi(uint32_t timeout, const char *apSSID, const char *apPsw, CallbackF fn) { - IPAddress ip (0, 0, 0, 0); - ip = startWiFi(timeout, fn); + IPAddress ip (0, 0, 0, 0); + ip = startWiFi(timeout, fn); if (!ip) { // No connection, start AP and then captive portal startCaptivePortal("ESP_AP", "123456789", "/setup"); @@ -784,28 +797,24 @@ void AsyncFsWebServer::handleFileList(AsyncWebServerRequest *request) } File root = m_filesystem->open(path, "r"); - String output = "["; + DynamicJsonDocument doc(1024); + JsonArray array = doc.to(); if (root.isDirectory()) { File file = root.openNextFile(); while (file) { + JsonObject obj = array.createNestedObject(); String filename = file.name(); if (filename.lastIndexOf("/") > -1) { filename.remove(0, filename.lastIndexOf("/") + 1); } - if (output != "[") { - output += ','; - } - output += "{\"type\":\""; - output += (file.isDirectory()) ? "dir" : "file"; - output += "\",\"size\":\""; - output += file.size(); - output += "\",\"name\":\""; - output += filename; - output += "\"}"; + obj["type"] = (file.isDirectory()) ? "dir" : "file"; + obj["size"] = file.size(); + obj["name"] = filename; file = root.openNextFile(); } } - output += "]"; + String output; + serializeJson(doc, output); request->send(200, "text/json", output); } diff --git a/src/AsyncFsWebServer.h b/src/AsyncFsWebServer.h index 8b5cac08..00ce8ccc 100644 --- a/src/AsyncFsWebServer.h +++ b/src/AsyncFsWebServer.h @@ -30,7 +30,7 @@ #define CONFIG_FILE "/config.json" #define DBG_OUTPUT_PORT Serial -#define LOG_LEVEL 3 // (0 disable, 1 error, 2 info, 3 debug) +#define LOG_LEVEL 2 // (0 disable, 1 error, 2 info, 3 debug) #include "SerialLog.h" #include "CaptiverPortal.hpp" @@ -204,11 +204,6 @@ class AsyncFsWebServer : public AsyncWebServer */ void sendOK(AsyncWebServerRequest *request); - /* - Set the WiFi mode as Access Point - */ - IPAddress setAPmode(const char *ssid, const char *psk); - /* Start WiFi connection, if fails to in AP mode */ diff --git a/src/ESPAsyncWebServer/src/esp32/AsyncTCP.cpp b/src/ESPAsyncWebServer/src/esp32/AsyncTCP.cpp index 6312e3f8..73e5bcec 100644 --- a/src/ESPAsyncWebServer/src/esp32/AsyncTCP.cpp +++ b/src/ESPAsyncWebServer/src/esp32/AsyncTCP.cpp @@ -239,10 +239,12 @@ static bool _start_async_task(){ static int8_t _tcp_clear_events(void * arg) { lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->event = LWIP_TCP_CLEAR; - e->arg = arg; - if (!_prepend_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_CLEAR; + e->arg = arg; + if (!_prepend_async_event(&e)) { + free((void*)(e)); + } } return ERR_OK; } @@ -250,12 +252,14 @@ static int8_t _tcp_clear_events(void * arg) { static int8_t _tcp_connected(void * arg, tcp_pcb * pcb, int8_t err) { //ets_printf("+C: 0x%08x\n", pcb); lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->event = LWIP_TCP_CONNECTED; - e->arg = arg; - e->connected.pcb = pcb; - e->connected.err = err; - if (!_prepend_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_CONNECTED; + e->arg = arg; + e->connected.pcb = pcb; + e->connected.err = err; + if (!_prepend_async_event(&e)) { + free((void*)(e)); + } } return ERR_OK; } @@ -263,34 +267,38 @@ static int8_t _tcp_connected(void * arg, tcp_pcb * pcb, int8_t err) { static int8_t _tcp_poll(void * arg, struct tcp_pcb * pcb) { //ets_printf("+P: 0x%08x\n", pcb); lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->event = LWIP_TCP_POLL; - e->arg = arg; - e->poll.pcb = pcb; - if (!_send_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_POLL; + e->arg = arg; + e->poll.pcb = pcb; + if (!_send_async_event(&e)) { + free((void*)(e)); + } } return ERR_OK; } static int8_t _tcp_recv(void * arg, struct tcp_pcb * pcb, struct pbuf *pb, int8_t err) { lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->arg = arg; - if(pb){ - //ets_printf("+R: 0x%08x\n", pcb); - e->event = LWIP_TCP_RECV; - e->recv.pcb = pcb; - e->recv.pb = pb; - e->recv.err = err; - } else { - //ets_printf("+F: 0x%08x\n", pcb); - e->event = LWIP_TCP_FIN; - e->fin.pcb = pcb; - e->fin.err = err; - //close the PCB in LwIP thread - AsyncClient::_s_lwip_fin(e->arg, e->fin.pcb, e->fin.err); - } - if (!_send_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->arg = arg; + if(pb){ + //ets_printf("+R: 0x%08x\n", pcb); + e->event = LWIP_TCP_RECV; + e->recv.pcb = pcb; + e->recv.pb = pb; + e->recv.err = err; + } else { + //ets_printf("+F: 0x%08x\n", pcb); + e->event = LWIP_TCP_FIN; + e->fin.pcb = pcb; + e->fin.err = err; + //close the PCB in LwIP thread + AsyncClient::_s_lwip_fin(e->arg, e->fin.pcb, e->fin.err); + } + if (!_send_async_event(&e)) { + free((void*)(e)); + } } return ERR_OK; } @@ -298,12 +306,14 @@ static int8_t _tcp_recv(void * arg, struct tcp_pcb * pcb, struct pbuf *pb, int8_ static int8_t _tcp_sent(void * arg, struct tcp_pcb * pcb, uint16_t len) { //ets_printf("+S: 0x%08x\n", pcb); lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->event = LWIP_TCP_SENT; - e->arg = arg; - e->sent.pcb = pcb; - e->sent.len = len; - if (!_send_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_SENT; + e->arg = arg; + e->sent.pcb = pcb; + e->sent.len = len; + if (!_send_async_event(&e)) { + free((void*)(e)); + } } return ERR_OK; } @@ -311,38 +321,44 @@ static int8_t _tcp_sent(void * arg, struct tcp_pcb * pcb, uint16_t len) { static void _tcp_error(void * arg, int8_t err) { //ets_printf("+E: 0x%08x\n", arg); lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->event = LWIP_TCP_ERROR; - e->arg = arg; - e->error.err = err; - if (!_send_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_ERROR; + e->arg = arg; + e->error.err = err; + if (!_send_async_event(&e)) { + free((void*)(e)); + } } } static void _tcp_dns_found(const char * name, struct ip_addr * ipaddr, void * arg) { lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); //ets_printf("+DNS: name=%s ipaddr=0x%08x arg=%x\n", name, ipaddr, arg); - e->event = LWIP_TCP_DNS; - e->arg = arg; - e->dns.name = name; - if (ipaddr) { - memcpy(&e->dns.addr, ipaddr, sizeof(struct ip_addr)); - } else { - memset(&e->dns.addr, 0, sizeof(e->dns.addr)); - } - if (!_send_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_DNS; + e->arg = arg; + e->dns.name = name; + if (ipaddr) { + memcpy(&e->dns.addr, ipaddr, sizeof(struct ip_addr)); + } else { + memset(&e->dns.addr, 0, sizeof(e->dns.addr)); + } + if (!_send_async_event(&e)) { + free((void*)(e)); + } } } //Used to switch out from LwIP thread static int8_t _tcp_accept(void * arg, AsyncClient * client) { lwip_event_packet_t * e = (lwip_event_packet_t *)malloc(sizeof(lwip_event_packet_t)); - e->event = LWIP_TCP_ACCEPT; - e->arg = arg; - e->accept.client = client; - if (!_prepend_async_event(&e)) { - free((void*)(e)); + if (NULL != e) { + e->event = LWIP_TCP_ACCEPT; + e->arg = arg; + e->accept.client = client; + if (!_prepend_async_event(&e)) { + free((void*)(e)); + } } return ERR_OK; } @@ -707,7 +723,9 @@ bool AsyncClient::connect(IPAddress ip, uint16_t port){ tcp_sent(pcb, &_tcp_sent); tcp_poll(pcb, &_tcp_poll, 1); //_tcp_connect(pcb, &addr, port,(tcp_connected_fn)&_s_connected); - _tcp_connect(pcb, _closed_slot, &addr, port,(tcp_connected_fn)&_tcp_connected); + if (ESP_OK != _tcp_connect(pcb, _closed_slot, &addr, port,(tcp_connected_fn)&_tcp_connected)) { + return false; + } return true; } diff --git a/src/setup_htm.h b/src/setup_htm.h index 7e77dd8f..18d0124f 100644 --- a/src/setup_htm.h +++ b/src/setup_htm.h @@ -8,225 +8,226 @@ The Embedded Experts */ -#define SETUP_HTML_SIZE 8643UL + 1 -static const unsigned char SETUP_HTML[] PROGMEM = { - 0x1F, 0x8B, 0x08, 0x08, 0xF0, 0xDE, 0x97, 0x65, 0x02, 0x00, 0x61, 0x6C, 0x6C, 0x2E, 0x68, 0x74, 0x6D, 0x00, 0xB4, 0x59, 0xD9, 0x8E, 0xF3, 0x34, 0x14, 0xBE, 0x47, 0xE2, 0x1D, 0x4C, 0x7F, 0x0D, 0x4C, 0x45, 0x13, 0x92, 0xB4, 0x9D, 0x69, 0xD3, - 0x29, 0x62, 0x17, 0x77, 0x20, 0x01, 0x02, 0x84, 0xB8, 0x70, 0x13, 0xA7, 0x35, 0x93, 0x4D, 0xB1, 0x3B, 0x33, 0x25, 0xCA, 0xBB, 0x73, 0x8E, 0x97, 0x6C, 0x6D, 0xF8, 0xC5, 0x05, 0x13, 0x4D, 0xDB, 0xD8, 0x3E, 0xFB, 0xE2, 0xCF, 0xC9, 0xD3, 0x47, - 0xDF, 0xFC, 0xF0, 0xF5, 0xCF, 0xBF, 0xFF, 0xF8, 0x2D, 0x39, 0xC9, 0x2C, 0xFD, 0xFC, 0xC3, 0x0F, 0x9E, 0xDA, 0x6F, 0x46, 0x63, 0xFC, 0xCE, 0x98, 0xA4, 0x24, 0x3A, 0xD1, 0x4A, 0x30, 0xB9, 0x3F, 0xCB, 0xC4, 0xD9, 0xE0, 0xA8, 0xE4, 0x32, 0x65, - 0x9F, 0x7F, 0x29, 0x2E, 0x79, 0x44, 0xBE, 0xFD, 0xE9, 0x47, 0xF2, 0xDD, 0x4F, 0xE4, 0x57, 0x76, 0x20, 0x3F, 0xB1, 0xEA, 0x85, 0x55, 0x4F, 0x9F, 0xA9, 0xE9, 0x8E, 0xBA, 0xC8, 0x25, 0xCB, 0xE5, 0x7E, 0xF6, 0xCA, 0x63, 0x79, 0xDA, 0xC7, 0xEC, - 0x85, 0x47, 0xCC, 0x51, 0x37, 0x0B, 0xC2, 0x73, 0x2E, 0x39, 0x4D, 0x1D, 0x11, 0xD1, 0x94, 0xED, 0xFD, 0x19, 0xC9, 0x69, 0xC6, 0xF6, 0x2F, 0x9C, 0xBD, 0x96, 0x45, 0x25, 0x91, 0x87, 0x90, 0x17, 0xC5, 0x0C, 0x35, 0xAB, 0x13, 0xE0, 0xE5, 0x24, - 0x34, 0xE3, 0xE9, 0x25, 0x14, 0x34, 0x17, 0x8E, 0x60, 0x15, 0x4F, 0x9A, 0x43, 0x11, 0x5F, 0xEA, 0x92, 0xC6, 0x31, 0xCF, 0x8F, 0x61, 0xE0, 0x95, 0x6F, 0xBB, 0x03, 0x8D, 0x9E, 0x8F, 0x55, 0x71, 0xCE, 0x63, 0x27, 0x2A, 0xD2, 0xA2, 0x0A, 0xDF, - 0x05, 0xC9, 0x0A, 0xAE, 0xE6, 0x54, 0xB5, 0x0B, 0xBD, 0x26, 0x06, 0xFD, 0x78, 0x2A, 0x16, 0x19, 0xE5, 0xF9, 0x42, 0x9C, 0xB3, 0x8C, 0x56, 0x97, 0x3A, 0xE6, 0xA2, 0x4C, 0xE9, 0x25, 0x3C, 0xA4, 0x45, 0xF4, 0xDC, 0xD0, 0xFA, 0x8A, 0x95, 0xAC, - 0x40, 0x72, 0x49, 0x2B, 0x30, 0xAA, 0xA1, 0x21, 0x8D, 0x24, 0x7F, 0x61, 0x0B, 0x1A, 0x9E, 0x0A, 0x30, 0xBE, 0x2E, 0xCE, 0x32, 0xE5, 0x39, 0x03, 0xE6, 0x07, 0xAD, 0xED, 0x2B, 0xE3, 0xC7, 0x93, 0x0C, 0x1F, 0x3D, 0xAF, 0x39, 0xF9, 0x7A, 0x48, - 0xF0, 0xBF, 0x59, 0xB8, 0x7C, 0x28, 0xDF, 0x9A, 0x53, 0xD0, 0x1B, 0x09, 0x56, 0x30, 0xC2, 0xF3, 0xF2, 0x2C, 0x43, 0xA0, 0x3A, 0x3C, 0x73, 0xE9, 0xD0, 0xB3, 0x2C, 0x12, 0x9E, 0xA6, 0x8B, 0xDB, 0xC3, 0x5A, 0xE6, 0xD4, 0x64, 0x52, 0x44, 0x67, - 0x31, 0x31, 0x69, 0xD4, 0xAE, 0xED, 0xF8, 0xA1, 0x78, 0x73, 0xC4, 0x89, 0xC6, 0xC5, 0x6B, 0xE8, 0x11, 0xBC, 0x96, 0xE0, 0x45, 0xF2, 0x2E, 0x49, 0x12, 0x08, 0x11, 0xC4, 0xFE, 0x23, 0x9E, 0x61, 0x40, 0x68, 0x2E, 0xB5, 0x86, 0x7F, 0xC8, 0x4B, - 0xC9, 0xF6, 0x9F, 0x44, 0x27, 0x16, 0x3D, 0x03, 0xED, 0x27, 0x7F, 0xD6, 0xF0, 0x89, 0x66, 0xA0, 0x63, 0x0F, 0x45, 0x15, 0xB3, 0x0A, 0x79, 0xEE, 0x5A, 0x5F, 0x0F, 0xC8, 0x24, 0x7B, 0x93, 0x9F, 0xFC, 0xB9, 0xE8, 0x0F, 0xE5, 0xE7, 0xEC, 0xC0, - 0xAA, 0xD1, 0x60, 0x49, 0x85, 0x78, 0x05, 0x66, 0x30, 0x2C, 0x58, 0xCA, 0x22, 0x59, 0x9F, 0xB4, 0x37, 0x57, 0x18, 0x63, 0x95, 0x42, 0xE1, 0xD6, 0xBB, 0xB3, 0x52, 0x8C, 0xEA, 0x2A, 0x01, 0xB4, 0x0E, 0xA1, 0x0F, 0x56, 0x88, 0x22, 0xE5, 0x31, - 0x79, 0x17, 0x45, 0x91, 0x19, 0x75, 0x2A, 0x1A, 0xF3, 0xB3, 0x08, 0x1F, 0x60, 0x5D, 0xE7, 0x7E, 0x1F, 0x6E, 0xFB, 0x5A, 0x82, 0x9B, 0xD8, 0x9F, 0x6D, 0x36, 0xE4, 0x45, 0xCE, 0x4C, 0x70, 0x42, 0x18, 0x88, 0xD8, 0xA9, 0x48, 0x81, 0x55, 0x6D, - 0xB2, 0x6B, 0xCD, 0xE0, 0x32, 0x0B, 0x4C, 0x26, 0x18, 0x59, 0x7A, 0x41, 0x75, 0x3C, 0xD0, 0x7B, 0x6F, 0xA1, 0x2E, 0x77, 0x33, 0xDF, 0x0D, 0xFC, 0x8D, 0x4A, 0x42, 0xEC, 0x41, 0x75, 0xB5, 0x2C, 0x08, 0xBC, 0x85, 0xFE, 0xDF, 0xC2, 0xE2, 0xED, - 0x5C, 0x73, 0xD5, 0xE1, 0xD4, 0x7E, 0x30, 0x37, 0x43, 0x11, 0xEF, 0x96, 0x9B, 0xED, 0xE6, 0xDB, 0xAF, 0x77, 0x26, 0x03, 0x87, 0x2E, 0xD7, 0xEE, 0xFD, 0x53, 0xAB, 0x16, 0xB6, 0xE9, 0xC0, 0xF3, 0x1C, 0xE8, 0x45, 0xC9, 0x73, 0xE7, 0x70, 0x96, - 0xB2, 0xC8, 0xDB, 0x84, 0xA0, 0x65, 0xC9, 0x28, 0x24, 0x7A, 0xC4, 0x94, 0xE9, 0x3B, 0x27, 0x2B, 0xFE, 0xEE, 0x0F, 0x62, 0x08, 0x13, 0xCE, 0xD2, 0xB8, 0x49, 0x8A, 0x42, 0x82, 0xB9, 0x38, 0xE0, 0xD0, 0x94, 0x1F, 0xF3, 0x30, 0x62, 0x39, 0x8C, - 0xF4, 0x5D, 0x1B, 0x80, 0xA7, 0xA1, 0xB8, 0x8E, 0x3C, 0x57, 0xA1, 0x6B, 0xB4, 0xB0, 0x85, 0x7B, 0x90, 0x79, 0xEB, 0x61, 0x9E, 0xA3, 0xDA, 0x4E, 0x92, 0xB2, 0x2E, 0x6D, 0x7C, 0xCC, 0x42, 0x7F, 0x3D, 0x28, 0xE8, 0x91, 0xB9, 0xFA, 0x0E, 0x33, - 0xD5, 0xC6, 0xDC, 0xDB, 0x45, 0xE7, 0x4A, 0xC0, 0x60, 0x59, 0x70, 0xA5, 0x48, 0xC6, 0x73, 0xDD, 0x6F, 0x40, 0xF8, 0xDD, 0x28, 0x07, 0x90, 0xF7, 0x5F, 0x67, 0x21, 0x79, 0x72, 0x71, 0x4C, 0xA7, 0x32, 0xFA, 0x1B, 0x25, 0xB5, 0xCB, 0x94, 0xAA, - 0x26, 0xB0, 0x90, 0x18, 0x12, 0xC4, 0x1C, 0x2A, 0x4C, 0xC5, 0x9C, 0x09, 0x71, 0xBF, 0x59, 0xDF, 0xCD, 0x9B, 0x73, 0xDA, 0x9A, 0x22, 0xE9, 0x21, 0x65, 0xBB, 0x9E, 0x47, 0x52, 0x96, 0x48, 0xEB, 0x00, 0x8F, 0x60, 0x11, 0x12, 0x34, 0x0D, 0xBB, - 0x91, 0x56, 0xCC, 0xF7, 0x40, 0x33, 0xAD, 0xFE, 0x76, 0xFB, 0xD8, 0x98, 0x6C, 0x37, 0x19, 0x1E, 0xB8, 0xEB, 0xBB, 0xC6, 0x55, 0xD1, 0x74, 0x52, 0x7A, 0x60, 0xA9, 0xCD, 0x3A, 0xCF, 0x5F, 0x07, 0xDB, 0xE5, 0xAE, 0x2C, 0x04, 0x97, 0x1C, 0x54, - 0xAD, 0x58, 0x4A, 0xB1, 0xAC, 0x77, 0x28, 0x2F, 0x5C, 0xA3, 0xAD, 0x60, 0x42, 0x16, 0x3A, 0x60, 0xA5, 0xB5, 0x5B, 0xF5, 0xD3, 0x30, 0x86, 0x09, 0x16, 0xDB, 0x31, 0xA3, 0x03, 0x2C, 0x1A, 0x15, 0xC8, 0xD8, 0xF1, 0xD6, 0xD5, 0xFD, 0xD8, 0x2E, - 0x5D, 0xE4, 0xAE, 0xEC, 0x74, 0x40, 0xEF, 0x24, 0xC4, 0x0F, 0x10, 0x43, 0x2B, 0xD9, 0xC6, 0x11, 0xE2, 0xAF, 0x0C, 0x26, 0x5E, 0xE3, 0x32, 0x51, 0x42, 0xDE, 0x25, 0xC5, 0x75, 0xC6, 0x18, 0x0F, 0x39, 0x46, 0x6B, 0xCC, 0x9A, 0xC6, 0xAD, 0x8A, - 0x57, 0xE7, 0xB5, 0xC2, 0xCC, 0xAB, 0x5A, 0xFF, 0xAA, 0x1C, 0xC1, 0x0F, 0x35, 0x03, 0x09, 0x8A, 0x5F, 0x46, 0x05, 0x2E, 0x59, 0x26, 0xC2, 0x03, 0x15, 0x0C, 0xD3, 0x69, 0x77, 0x84, 0xF9, 0xC0, 0x43, 0x46, 0x69, 0x41, 0x51, 0x97, 0xDA, 0x5A, - 0xA1, 0xFE, 0xB6, 0x6C, 0x77, 0xA5, 0x86, 0x5E, 0x0A, 0xE2, 0xAE, 0xFD, 0x6A, 0xDA, 0x0F, 0x06, 0x70, 0x87, 0xB9, 0x90, 0xA4, 0x50, 0xC0, 0x27, 0x1E, 0xC7, 0x2C, 0x6F, 0x5C, 0x2C, 0xA3, 0xEF, 0x6B, 0x59, 0x94, 0xE1, 0x1A, 0x82, 0xD9, 0x12, - 0xD3, 0x03, 0x34, 0xA0, 0xB3, 0x6C, 0x89, 0x37, 0x6D, 0xEB, 0xDA, 0x0C, 0xDC, 0x6B, 0x55, 0x0A, 0x0E, 0xA3, 0x28, 0x60, 0x6E, 0x68, 0xEE, 0x8E, 0xFF, 0x7D, 0x4D, 0x73, 0x9E, 0x51, 0xC5, 0x58, 0x94, 0xAA, 0x7C, 0xBF, 0x27, 0x4B, 0x41, 0xC0, - 0xA1, 0xB8, 0x95, 0x32, 0x82, 0x46, 0xD3, 0xCA, 0x2C, 0x0F, 0xA6, 0x96, 0xBB, 0xFE, 0x14, 0xC9, 0x72, 0x92, 0x24, 0x98, 0x22, 0x59, 0x4D, 0x92, 0xDC, 0x50, 0xEC, 0x8B, 0x67, 0x76, 0x49, 0x2A, 0x9A, 0x31, 0x41, 0xEC, 0xD2, 0xDA, 0xBB, 0xAB, - 0xD5, 0x9E, 0x9A, 0x14, 0x55, 0xA6, 0x77, 0x57, 0x70, 0x37, 0xFB, 0xED, 0xDE, 0x9B, 0x37, 0xC1, 0xED, 0xB9, 0xFB, 0xC0, 0x83, 0x98, 0xCE, 0x9B, 0xC7, 0x29, 0xD2, 0xB5, 0xB7, 0xC6, 0x79, 0xDF, 0x9B, 0x5A, 0xB0, 0xD1, 0x0C, 0x1A, 0xB7, 0xAC, - 0x8A, 0x63, 0xC5, 0x84, 0x50, 0xA9, 0x74, 0x9D, 0x93, 0xD7, 0xC5, 0x65, 0x82, 0xF7, 0xE0, 0xDD, 0xD9, 0x88, 0x06, 0xEB, 0xAE, 0xBD, 0x61, 0xAE, 0xA9, 0x02, 0x1F, 0x44, 0x76, 0xCB, 0xF0, 0x7A, 0x8C, 0xBB, 0xBA, 0xD1, 0x30, 0x05, 0x15, 0xB2, - 0x69, 0x92, 0xA6, 0xC4, 0x5D, 0x09, 0xC2, 0xA8, 0x60, 0x9D, 0x56, 0x36, 0xC1, 0xE5, 0xBD, 0xAB, 0x77, 0xEC, 0x79, 0x3D, 0x6A, 0x6E, 0xD7, 0x62, 0x3C, 0x6F, 0x44, 0x4F, 0xDA, 0x5B, 0xD3, 0x51, 0xBC, 0xDD, 0xDF, 0x50, 0x82, 0x31, 0x7B, 0x0B, - 0xD7, 0x37, 0xE8, 0xA9, 0xBF, 0x2B, 0x4A, 0x1A, 0x71, 0x79, 0x09, 0xBD, 0x2B, 0x0D, 0x97, 0x37, 0x35, 0x34, 0xCA, 0xF5, 0x04, 0x59, 0x0E, 0xFE, 0xAE, 0xCB, 0x8D, 0x96, 0x04, 0x87, 0xA0, 0x1F, 0x68, 0x56, 0x64, 0xAC, 0xEE, 0x1F, 0x31, 0x95, - 0xD4, 0xB1, 0x43, 0xBA, 0x61, 0xED, 0x3F, 0x41, 0xD4, 0xE2, 0xA0, 0xB2, 0x9F, 0xFC, 0xD9, 0x13, 0x33, 0xAE, 0x32, 0xDD, 0xFA, 0x50, 0xEF, 0xA2, 0x84, 0xCF, 0x4A, 0xC5, 0xC7, 0xB3, 0x7D, 0x10, 0x24, 0xC5, 0xB0, 0x91, 0xC5, 0x34, 0xAD, 0xC7, - 0x25, 0x36, 0x6E, 0x90, 0x08, 0x1A, 0xA6, 0xFB, 0xA3, 0xDD, 0x82, 0xD4, 0xDF, 0x03, 0xBB, 0x6E, 0x92, 0x27, 0x91, 0xDE, 0xFB, 0xDB, 0xAD, 0xBB, 0x5E, 0xC6, 0xEC, 0x48, 0xFC, 0x8D, 0xBB, 0xBC, 0x23, 0xAB, 0x07, 0xD7, 0xDB, 0xDC, 0x91, 0xCF, - 0x08, 0x40, 0x96, 0x3E, 0x02, 0x18, 0x82, 0x83, 0x60, 0x35, 0x47, 0xF8, 0x05, 0x59, 0x84, 0xED, 0x01, 0xAD, 0x99, 0x68, 0x27, 0xB6, 0xD1, 0xDC, 0x2A, 0x0F, 0x07, 0x26, 0x16, 0xF8, 0x31, 0xD7, 0x6D, 0x32, 0xE6, 0x15, 0x8B, 0x14, 0x79, 0x04, - 0xC4, 0x59, 0xDE, 0xFA, 0xC1, 0x51, 0x58, 0xDD, 0xF6, 0x44, 0xDF, 0xF7, 0x37, 0xC1, 0x63, 0xB7, 0xFB, 0xBA, 0x6B, 0x96, 0x4D, 0x16, 0x00, 0x20, 0xF6, 0xE8, 0x1E, 0x0B, 0x8C, 0x38, 0x64, 0x85, 0x2B, 0xE7, 0x2D, 0x57, 0xBB, 0x93, 0x5A, 0x2F, - 0x83, 0xAA, 0x7D, 0x24, 0xC6, 0x3C, 0xBC, 0x86, 0x62, 0xBA, 0x76, 0x8A, 0xC5, 0xD3, 0xB8, 0x40, 0x92, 0xD3, 0x97, 0x21, 0xF8, 0xB6, 0x3E, 0x1F, 0xB7, 0x5E, 0xA3, 0x50, 0xC2, 0xA5, 0x15, 0xBC, 0x83, 0x59, 0x2A, 0x43, 0x15, 0xFE, 0x51, 0x37, - 0x1D, 0x6D, 0x56, 0xCA, 0x3D, 0x2C, 0x8F, 0x6D, 0x8A, 0xE0, 0xB4, 0x22, 0x53, 0x05, 0x6A, 0xF5, 0x20, 0xB4, 0x56, 0x1C, 0xF5, 0x46, 0x3E, 0x38, 0x21, 0xB4, 0x00, 0x24, 0xC0, 0xEB, 0x7A, 0x37, 0x69, 0xCD, 0x5C, 0x9B, 0x3D, 0x50, 0x2F, 0x89, - 0x59, 0x54, 0x54, 0xBA, 0x2C, 0x10, 0x5F, 0x8D, 0x70, 0x68, 0x27, 0x77, 0x12, 0x73, 0xAC, 0x01, 0x73, 0x8C, 0x80, 0x4E, 0x47, 0x65, 0xEA, 0xF1, 0x86, 0xFB, 0xD6, 0x0F, 0x91, 0xB7, 0xF1, 0x7A, 0xA8, 0xA9, 0x25, 0x72, 0x39, 0x38, 0x6F, 0x80, - 0x77, 0x71, 0x23, 0x3C, 0x16, 0x3D, 0x84, 0x02, 0x03, 0x87, 0x14, 0xAA, 0x21, 0xE1, 0xF5, 0x0D, 0x17, 0x36, 0xAE, 0xC2, 0x3D, 0x75, 0x8B, 0xCB, 0x6D, 0x4F, 0xC4, 0x88, 0xF6, 0x2A, 0x27, 0xA5, 0xA5, 0x60, 0xA1, 0xFD, 0xD1, 0x96, 0x1D, 0x34, - 0x0C, 0x7D, 0x52, 0x70, 0xC5, 0xCB, 0x71, 0xB8, 0xD5, 0x6B, 0x8E, 0x18, 0x10, 0x0B, 0x11, 0x74, 0x88, 0xD0, 0x9D, 0x6A, 0xB9, 0xC3, 0x6A, 0x33, 0xA1, 0xAA, 0x02, 0x47, 0x01, 0x06, 0x03, 0x5E, 0xAA, 0x07, 0x86, 0x62, 0xAE, 0x0F, 0x38, 0x37, - 0xEE, 0x89, 0x29, 0x54, 0xE0, 0x04, 0x83, 0xD3, 0xDA, 0xCA, 0xF3, 0x76, 0x53, 0xF0, 0x44, 0x83, 0x52, 0x9D, 0xA5, 0x58, 0x76, 0xF5, 0x00, 0xAC, 0x7A, 0x46, 0x59, 0x80, 0x84, 0xB7, 0x90, 0x45, 0x04, 0x28, 0xF2, 0xC0, 0x80, 0x8C, 0x2D, 0xD4, - 0x6F, 0x9A, 0x20, 0x76, 0xB6, 0xC0, 0x73, 0x46, 0x66, 0xBB, 0x21, 0x86, 0x3C, 0x56, 0x3C, 0x76, 0x74, 0xCD, 0x6A, 0x48, 0x15, 0xFA, 0x7A, 0x0C, 0x60, 0x91, 0x1D, 0xE8, 0x2F, 0xC2, 0x38, 0x84, 0x41, 0xBB, 0x44, 0xDF, 0x36, 0x7D, 0x51, 0x29, - 0xA3, 0x90, 0x47, 0x85, 0x3C, 0xA9, 0xD1, 0x81, 0x37, 0xAE, 0x4B, 0xBD, 0xAB, 0xB4, 0x17, 0x2E, 0x38, 0x2A, 0x94, 0xD1, 0x37, 0xC7, 0x04, 0xF8, 0x01, 0xEC, 0xBD, 0xF2, 0xC9, 0x10, 0xBA, 0x23, 0xD8, 0xBF, 0xDD, 0x81, 0x76, 0xFF, 0x7F, 0x03, - 0xC6, 0x9E, 0x0A, 0x6D, 0x10, 0x13, 0xF7, 0xEA, 0xD0, 0x35, 0xDD, 0x72, 0x1B, 0x44, 0xFA, 0xB0, 0xD1, 0x8C, 0xD0, 0x66, 0xF7, 0x74, 0x61, 0xF2, 0xC0, 0xD0, 0x43, 0xA4, 0xF8, 0x31, 0x08, 0x0B, 0xC2, 0x50, 0x3C, 0x52, 0x77, 0x91, 0xB1, 0xC0, - 0xB4, 0x45, 0xFD, 0x1B, 0x48, 0xD0, 0xE4, 0x26, 0xD4, 0x1D, 0xE3, 0xE2, 0x49, 0xA7, 0xF6, 0x21, 0xB0, 0x51, 0xAA, 0xCD, 0xF0, 0x7A, 0x5C, 0x39, 0x2D, 0x5B, 0xE8, 0x69, 0xB6, 0x94, 0xA0, 0x9F, 0xB2, 0x51, 0x0B, 0x90, 0xC5, 0xF1, 0x98, 0xB2, - 0x11, 0xEA, 0x18, 0xB5, 0x40, 0xEB, 0x1C, 0x38, 0xC4, 0x5E, 0xF7, 0xE2, 0xEE, 0xDC, 0xE3, 0x11, 0x1F, 0x1C, 0x4C, 0x1C, 0x94, 0x65, 0x19, 0x9B, 0x03, 0x4D, 0xBB, 0x06, 0x5C, 0x72, 0x2B, 0x0F, 0xB1, 0xAC, 0x83, 0x1E, 0x95, 0x78, 0xE5, 0x32, - 0x3A, 0x8D, 0xCF, 0x8E, 0x4A, 0x9B, 0x01, 0xA2, 0xB9, 0x3E, 0xF4, 0xFB, 0x0F, 0xAD, 0x92, 0x6B, 0xD0, 0xC6, 0x62, 0xB8, 0x65, 0x70, 0x53, 0x2E, 0xA4, 0xBF, 0xE4, 0x11, 0x4D, 0x4D, 0x19, 0x67, 0x3C, 0x8E, 0x53, 0xD6, 0x07, 0x45, 0x9D, 0x30, - 0x40, 0xC8, 0x6B, 0x31, 0x52, 0xD0, 0xD6, 0xFA, 0x70, 0x74, 0x5C, 0xF5, 0xB3, 0xDB, 0x54, 0xAD, 0x75, 0x57, 0x66, 0x69, 0x2C, 0xED, 0x1C, 0xD1, 0x24, 0xE0, 0x70, 0x2F, 0x0B, 0xA2, 0x73, 0x63, 0xA1, 0x9E, 0xD8, 0x40, 0xBE, 0xBF, 0x63, 0x8C, - 0x11, 0xCC, 0xFC, 0xF9, 0xC8, 0x7C, 0x44, 0x0C, 0x57, 0x0F, 0x7B, 0x70, 0x6F, 0x1E, 0x56, 0xC4, 0x7A, 0x6E, 0x9B, 0xEE, 0xAA, 0xF3, 0x11, 0xFE, 0x9E, 0x00, 0x22, 0x2B, 0x8B, 0x55, 0x56, 0x43, 0x54, 0x8B, 0x63, 0x03, 0xC7, 0xE8, 0xFD, 0x8C, - 0xDC, 0x36, 0xF8, 0x3F, 0x99, 0x88, 0xDF, 0xC6, 0xC4, 0xF7, 0x1B, 0xB4, 0x9E, 0x83, 0x02, 0x8E, 0x7A, 0x5C, 0x15, 0xAA, 0x4F, 0x16, 0x7F, 0x3A, 0xD4, 0xA1, 0x27, 0xDC, 0xEE, 0x92, 0x53, 0x24, 0x63, 0xB5, 0xD1, 0x48, 0x55, 0xDD, 0x2D, 0xC1, - 0x0D, 0x5C, 0xAA, 0x1A, 0x28, 0x4F, 0x11, 0x13, 0xDB, 0x03, 0x63, 0x29, 0x5E, 0xE3, 0x41, 0xA1, 0x8F, 0xAB, 0x1A, 0xFA, 0xC4, 0x8D, 0x92, 0xDE, 0x75, 0x1B, 0xF2, 0xD4, 0xA3, 0x0B, 0x57, 0x9C, 0xA0, 0xC5, 0x60, 0x35, 0xAB, 0x86, 0x72, 0xAD, - 0x8E, 0xC1, 0x38, 0x9B, 0xBB, 0x2B, 0x08, 0x91, 0xF0, 0x2A, 0x7B, 0xA5, 0xD5, 0x60, 0x9F, 0xFC, 0x2F, 0xED, 0x26, 0x79, 0x75, 0xCE, 0x25, 0x1E, 0xA0, 0x6F, 0x16, 0x67, 0xB7, 0x3D, 0x40, 0xBD, 0xA9, 0x62, 0x1F, 0x29, 0x70, 0x85, 0xD6, 0xC6, - 0xDD, 0x0F, 0x69, 0x06, 0x25, 0xFE, 0xB0, 0xC5, 0xAB, 0x8F, 0x68, 0x3A, 0x1D, 0xFE, 0xFD, 0x89, 0x0D, 0x76, 0xFA, 0x85, 0x2B, 0xCE, 0x87, 0x8C, 0xCB, 0xBA, 0x7B, 0x48, 0xB4, 0x04, 0xA0, 0xF3, 0x8E, 0x1E, 0x8A, 0x16, 0x3D, 0xA4, 0x48, 0x06, - 0x99, 0x78, 0x69, 0xBE, 0xC8, 0x58, 0xCC, 0x29, 0x11, 0x51, 0xC5, 0x58, 0x4E, 0x28, 0x14, 0xFD, 0x7D, 0xB7, 0x21, 0x92, 0xED, 0x16, 0xF2, 0x6E, 0x5E, 0xBB, 0x08, 0x90, 0x30, 0x22, 0x39, 0x78, 0xCB, 0xA2, 0x03, 0xA7, 0x03, 0x95, 0xD6, 0x07, - 0xD8, 0x78, 0x0D, 0xCC, 0x7C, 0x0F, 0xE3, 0xC7, 0x87, 0xC7, 0xF7, 0x31, 0xF6, 0x47, 0x8C, 0xF5, 0xC8, 0xE8, 0x41, 0xD2, 0x12, 0x1E, 0x24, 0xBD, 0x4F, 0xD6, 0x83, 0xB7, 0x41, 0x59, 0x27, 0x7F, 0xFC, 0x64, 0xDA, 0xEE, 0x8B, 0x7D, 0xA4, 0x15, - 0x4C, 0x6E, 0x45, 0x2D, 0x82, 0x1F, 0x46, 0x6F, 0xDD, 0x35, 0x5F, 0x50, 0xA5, 0x43, 0xD7, 0x7D, 0x90, 0x3C, 0x04, 0xDE, 0x83, 0xC3, 0xEF, 0x68, 0x6F, 0xB2, 0x6B, 0x34, 0x74, 0xED, 0x30, 0xFF, 0x08, 0xA2, 0xDB, 0x85, 0x6E, 0xC5, 0x44, 0x59, - 0xE4, 0x02, 0x38, 0x69, 0xB4, 0x3B, 0x55, 0x17, 0xF6, 0xFC, 0x78, 0x8B, 0x90, 0x1A, 0x39, 0xA8, 0xC1, 0x50, 0xCC, 0xF8, 0x81, 0x9F, 0xDE, 0x4E, 0x1D, 0xC9, 0xF3, 0xCB, 0x40, 0xEF, 0xA9, 0xAD, 0x0F, 0x6C, 0xBF, 0x2A, 0x5C, 0xAD, 0xCE, 0xEA, - 0xBD, 0x51, 0x5B, 0x3D, 0x6E, 0x31, 0x6A, 0xC3, 0x17, 0x21, 0x57, 0xF1, 0x5F, 0x63, 0xFC, 0x3B, 0xC8, 0xDB, 0x8B, 0xE4, 0x20, 0x7F, 0x42, 0x6F, 0x84, 0x6C, 0x3D, 0x8D, 0x15, 0x8D, 0x3C, 0xDB, 0x7B, 0xDA, 0x59, 0xE8, 0xC2, 0xE3, 0x27, 0x75, - 0xB7, 0xFB, 0xC5, 0x91, 0xA2, 0x53, 0x1B, 0x78, 0xAB, 0xF3, 0x99, 0x7E, 0xAD, 0x83, 0xBF, 0xEC, 0xAB, 0x26, 0xD4, 0x1D, 0xBF, 0xF1, 0x65, 0x0C, 0xE1, 0xF1, 0x1E, 0xBF, 0xF1, 0x1D, 0x82, 0x7D, 0x1D, 0xC5, 0x2A, 0x12, 0xA5, 0x54, 0x88, 0xFD, - 0x0C, 0x74, 0x21, 0x7A, 0x64, 0x86, 0x93, 0x31, 0x7F, 0x31, 0x33, 0x0A, 0xE0, 0x9B, 0x21, 0x64, 0xC1, 0xB3, 0xA3, 0x83, 0x47, 0x18, 0xA2, 0x26, 0xF6, 0xB3, 0xAF, 0x53, 0x1E, 0x3D, 0x13, 0x59, 0x10, 0xDD, 0x1D, 0xC8, 0xA5, 0x38, 0x57, 0x44, - 0x2D, 0xC0, 0x87, 0xFD, 0xB3, 0xCF, 0x9F, 0x3E, 0x03, 0x42, 0x25, 0xCF, 0x37, 0x1C, 0x8D, 0xAF, 0x90, 0x19, 0xBE, 0x99, 0x52, 0xDC, 0xA6, 0x5F, 0x7C, 0x9D, 0x7C, 0x24, 0x46, 0x26, 0x43, 0xBD, 0x4C, 0x9E, 0xF2, 0x18, 0x7F, 0x39, 0x39, 0x55, - 0xD3, 0xA2, 0xA4, 0xCA, 0x4E, 0xB8, 0x75, 0xA0, 0x41, 0x3E, 0x7F, 0xFE, 0x44, 0xF1, 0x56, 0x30, 0xA9, 0x4E, 0x58, 0xD6, 0x58, 0xAA, 0x26, 0x89, 0x2E, 0x80, 0x19, 0xC1, 0x67, 0x23, 0xE8, 0x95, 0x3D, 0xAE, 0x51, 0xEE, 0xF9, 0x95, 0x7F, 0xC7, - 0x41, 0x03, 0x79, 0x2E, 0x9F, 0x3E, 0xA3, 0x60, 0x02, 0xF2, 0xED, 0xF3, 0x3F, 0x97, 0xF1, 0x98, 0x3F, 0x0C, 0x51, 0xC9, 0x8C, 0x04, 0x2D, 0xA0, 0x63, 0xAC, 0x27, 0x15, 0xEB, 0x5F, 0xF4, 0xBA, 0x8F, 0xC1, 0xCE, 0x01, 0x6F, 0xCD, 0xE9, 0x74, - 0xCE, 0x1C, 0xE8, 0x09, 0x23, 0x45, 0xB1, 0xAE, 0x46, 0x61, 0x81, 0x03, 0x1A, 0xD1, 0x4F, 0x71, 0x4C, 0xAE, 0x3B, 0x41, 0xA9, 0xC2, 0x8A, 0x13, 0xF8, 0xAE, 0xEF, 0x2B, 0x10, 0x3B, 0x53, 0xAF, 0x6E, 0x10, 0x22, 0xCE, 0x80, 0x39, 0xD2, 0x38, - 0x19, 0xCB, 0xCF, 0x18, 0x99, 0x74, 0x0F, 0x7B, 0x04, 0xBE, 0x6E, 0xFB, 0x1A, 0xDB, 0x31, 0xD1, 0x68, 0x64, 0x0F, 0x40, 0x4E, 0x82, 0x4A, 0xB0, 0xB0, 0xE7, 0x74, 0x50, 0x73, 0x70, 0xA7, 0xD3, 0xC4, 0xA8, 0xD3, 0xCF, 0x9F, 0x7F, 0x48, 0xB5, - 0xB2, 0x1D, 0xA7, 0x61, 0x28, 0xFA, 0x2B, 0x26, 0x2F, 0x80, 0x14, 0xD2, 0xDA, 0xD9, 0x11, 0x53, 0x09, 0xC2, 0x52, 0x44, 0x0B, 0x88, 0x8A, 0x3E, 0xF0, 0x82, 0x0A, 0x04, 0xA8, 0x28, 0x6D, 0x45, 0x33, 0x20, 0xFE, 0x9E, 0x73, 0x8F, 0xED, 0x2C, - 0x25, 0x0C, 0x9B, 0x60, 0x52, 0x2F, 0x77, 0xF3, 0xDD, 0x7C, 0xED, 0xE4, 0x70, 0xE4, 0x4B, 0x2F, 0xF2, 0xF2, 0xAA, 0xA4, 0xE5, 0x8D, 0x83, 0x6A, 0xA3, 0x64, 0x56, 0xD9, 0x84, 0x2B, 0x7E, 0x23, 0xBA, 0x06, 0x51, 0x33, 0x24, 0xE8, 0x6F, 0xB4, - 0x67, 0xE2, 0x12, 0xB8, 0x00, 0xA9, 0x6F, 0xAB, 0x3B, 0x6F, 0x7A, 0x26, 0x20, 0x80, 0x8C, 0x3B, 0x0D, 0xE2, 0xE7, 0xCD, 0x2C, 0x54, 0x8F, 0x9F, 0x2B, 0x44, 0x90, 0x5C, 0x63, 0x8D, 0xC1, 0x6F, 0x8F, 0x43, 0xE8, 0x87, 0x6E, 0x5F, 0x06, 0xAC, - 0x07, 0xF3, 0x5B, 0xB5, 0x03, 0x1C, 0xF7, 0x3D, 0xC9, 0x25, 0xED, 0x22, 0x79, 0xA8, 0xE4, 0x32, 0xA9, 0x13, 0x76, 0x1D, 0x5C, 0x3B, 0xD5, 0x48, 0x20, 0x7A, 0x0C, 0xD8, 0xF4, 0x24, 0x5A, 0xE6, 0x20, 0x19, 0xB4, 0x70, 0x6F, 0xBE, 0x9C, 0x31, - 0xF4, 0x38, 0x43, 0xFE, 0xED, 0x99, 0x86, 0xE0, 0x4C, 0x79, 0x6E, 0xA6, 0xF7, 0x42, 0x43, 0x21, 0xDD, 0x5C, 0x9C, 0x4E, 0xDB, 0x77, 0xB3, 0xD5, 0xEA, 0xF1, 0xFD, 0x3B, 0x13, 0x0E, 0x0A, 0x3C, 0x61, 0x40, 0x98, 0x93, 0x8A, 0xAF, 0xB2, 0x24, - 0xCB, 0xAA, 0xDE, 0x2B, 0xB8, 0x8B, 0xE0, 0x81, 0x14, 0x0E, 0x0C, 0x66, 0x31, 0xD0, 0x63, 0x25, 0x34, 0xF8, 0x22, 0x39, 0xF0, 0x12, 0xFE, 0xAB, 0x48, 0xFE, 0x05, 0xE4, 0xEC, 0xB9, 0x6B, 0x38, 0xD1, 0x86, 0xF4, 0xA4, 0x8E, 0x1B, 0x08, 0xEB, - 0xD1, 0x28, 0x70, 0xDB, 0xE3, 0xF9, 0xF8, 0xED, 0xE1, 0xF3, 0x71, 0x57, 0x37, 0xB5, 0x77, 0xE9, 0x5B, 0xED, 0x2C, 0x03, 0xF0, 0xF3, 0x09, 0x5E, 0x8F, 0x57, 0x75, 0x1D, 0xEB, 0xAB, 0x96, 0xBA, 0x55, 0x1E, 0x2A, 0xE8, 0xBB, 0x4F, 0xB7, 0x87, - 0xF8, 0x69, 0x27, 0xE8, 0x70, 0x73, 0x61, 0x20, 0x7B, 0x78, 0x82, 0xFA, 0x00, 0x69, 0xE1, 0x94, 0x3C, 0x7E, 0x8E, 0xE6, 0xD9, 0x48, 0xE4, 0x26, 0xF8, 0xDF, 0x46, 0x6E, 0xFD, 0xDD, 0xBB, 0x15, 0x7B, 0x2E, 0x4C, 0xCF, 0x82, 0x94, 0xBC, 0x5B, - 0x31, 0xCF, 0x45, 0xFC, 0x7B, 0xA6, 0xFB, 0xC3, 0x1F, 0xF1, 0x1D, 0x06, 0xCB, 0xB8, 0x87, 0x04, 0x9D, 0x8B, 0x04, 0xE7, 0x3E, 0x12, 0xF4, 0x9D, 0xC4, 0xEE, 0xE4, 0xC1, 0xC0, 0xFA, 0x90, 0xE3, 0xDD, 0xC7, 0xB7, 0x47, 0x6B, 0x7C, 0xFF, 0x86, - 0xDC, 0x23, 0xBB, 0x03, 0xC2, 0x99, 0x4E, 0x07, 0xC7, 0x8A, 0x56, 0x5E, 0x1A, 0x74, 0x08, 0x61, 0xBD, 0x6F, 0xB9, 0xD9, 0x5F, 0x6E, 0x20, 0xCF, 0x01, 0x2F, 0x57, 0x3E, 0x5C, 0xDA, 0x6B, 0x44, 0x75, 0x63, 0x7F, 0x50, 0xF7, 0xE7, 0xD5, 0xF3, - 0x9B, 0xBD, 0x05, 0x12, 0xFC, 0xEA, 0xBC, 0x20, 0x44, 0x6E, 0x31, 0x6C, 0xD5, 0x55, 0x2A, 0x50, 0xEA, 0x4E, 0x17, 0x16, 0xDB, 0xE3, 0xCF, 0xF1, 0x32, 0x43, 0x3A, 0xBB, 0x6B, 0xD3, 0x99, 0xE7, 0x4B, 0x2C, 0x82, 0xFC, 0x2A, 0x72, 0x3B, 0x1C, - 0x5A, 0x11, 0x74, 0xBF, 0x6E, 0x76, 0x97, 0xF5, 0x85, 0x2E, 0x4D, 0xA4, 0xB3, 0x22, 0x9A, 0x46, 0x7A, 0xDA, 0x8A, 0xFF, 0xC7, 0xE2, 0x7D, 0xC0, 0xA6, 0xF5, 0x6D, 0xF3, 0x7D, 0x44, 0xC6, 0x47, 0x76, 0xE6, 0xCF, 0x05, 0x74, 0x08, 0x6A, 0xD3, - 0x49, 0xE9, 0xC9, 0xFF, 0x2C, 0xEA, 0xDF, 0x4B, 0x8A, 0xB3, 0xC7, 0xBE, 0x6E, 0x46, 0x04, 0x5D, 0x71, 0xE2, 0xCF, 0xE5, 0xB4, 0xF0, 0xEA, 0xF3, 0xE6, 0xF4, 0x89, 0x32, 0x5A, 0xC2, 0x4E, 0xC4, 0xC0, 0xA4, 0x69, 0xE4, 0xFF, 0xA6, 0x6D, 0x52, - 0xFC, 0xDB, 0xE4, 0x18, 0xF8, 0xCB, 0xDF, 0x51, 0xAF, 0x07, 0xC2, 0x69, 0x7B, 0x92, 0x43, 0xE8, 0x99, 0xE3, 0xB3, 0x51, 0xFB, 0x14, 0xE4, 0xFC, 0xFF, 0xBF, 0xDC, 0x7F, 0xD5, 0xE0, 0xD4, 0x6D, 0xF3, 0x1F, 0xAA, 0x61, 0x1C, 0xA5, 0xE5, 0x13, - 0xA2, 0xD3, 0x15, 0x6E, 0xDF, 0xD5, 0x75, 0x67, 0xA5, 0x80, 0x3B, 0xD2, 0x74, 0x99, 0xF0, 0xED, 0x66, 0xCF, 0x25, 0x76, 0xF3, 0x7F, 0x9F, 0x87, 0x84, 0xC8, 0xCF, 0x65, 0xCB, 0x79, 0x2E, 0xA2, 0xB0, 0x2B, 0x01, 0xE5, 0x42, 0x60, 0x2D, 0x24, - 0xEA, 0x4F, 0x7E, 0x15, 0xC3, 0x24, 0xE9, 0x8E, 0x7C, 0xFF, 0x2D, 0x99, 0xA3, 0xF3, 0x67, 0xC2, 0xF5, 0xEB, 0x1E, 0x0E, 0xF8, 0x6D, 0xF8, 0x96, 0x6C, 0xAD, 0x6E, 0xA3, 0x26, 0x60, 0x5F, 0xE6, 0xDF, 0xE4, 0x55, 0x66, 0x9D, 0xF3, 0xFA, 0xAB, - 0xAB, 0x38, 0xC7, 0x2B, 0x30, 0x57, 0x87, 0xB2, 0xE2, 0xF6, 0x65, 0x10, 0xAB, 0xB0, 0x2B, 0x1C, 0x57, 0xCE, 0x2F, 0x6A, 0xC3, 0xD3, 0xC7, 0xC5, 0x64, 0x50, 0xEF, 0x72, 0xA6, 0xDE, 0xBF, 0xA5, 0x97, 0x7E, 0xBE, 0xDC, 0x35, 0xDB, 0x23, 0xAE, - 0xD1, 0x27, 0x32, 0x7C, 0x4B, 0xF6, 0x60, 0xF5, 0xB9, 0x6E, 0x3E, 0x1E, 0xE0, 0xD0, 0x87, 0x53, 0xD3, 0x93, 0x4E, 0xE6, 0x87, 0x0C, 0x7D, 0xF9, 0x75, 0x1E, 0x27, 0xED, 0xED, 0x83, 0x84, 0x38, 0xA0, 0xE0, 0xB7, 0x3E, 0x4A, 0x30, 0xE7, 0x7D, - 0x98, 0x07, 0x33, 0xE5, 0x69, 0xA8, 0x37, 0xDB, 0x3D, 0x3E, 0x3E, 0x53, 0x02, 0x3D, 0x56, 0xFE, 0x74, 0x54, 0x18, 0x5D, 0xEC, 0xD3, 0x3D, 0x3A, 0x09, 0xFB, 0xB5, 0xB8, 0x34, 0xED, 0xBD, 0xC6, 0xC8, 0xE6, 0x8D, 0x81, 0x5F, 0xF8, 0xC9, 0x98, - 0x63, 0x1C, 0x37, 0xCD, 0x47, 0xF5, 0xEE, 0x62, 0x59, 0x86, 0x3A, 0x5B, 0xEB, 0xE9, 0x3C, 0x5D, 0x68, 0x13, 0xC6, 0x0B, 0x5D, 0x86, 0xE8, 0xE8, 0x74, 0xAD, 0xB3, 0x79, 0xB9, 0x4C, 0x43, 0x33, 0x5D, 0xEB, 0x62, 0xAE, 0xCB, 0xB5, 0x01, 0xC8, - 0x2B, 0x35, 0xE9, 0x2A, 0xF3, 0xA1, 0xC3, 0x53, 0xA8, 0x6B, 0x03, 0x8F, 0x61, 0x25, 0xF9, 0x6B, 0x6F, 0x19, 0xBC, 0x1B, 0xA6, 0xBF, 0x0C, 0x46, 0xD4, 0xD8, 0xDB, 0xE2, 0xF6, 0x65, 0xB1, 0x27, 0xE8, 0xB5, 0xC4, 0x13, 0xDC, 0x6C, 0x84, 0x97, - 0x27, 0x20, 0x90, 0x83, 0xF7, 0xD4, 0x1D, 0xB0, 0xFF, 0xA5, 0xAB, 0xB4, 0x03, 0xE3, 0x1E, 0xBB, 0x80, 0xF9, 0x69, 0x4C, 0x89, 0x1E, 0xFA, 0x2D, 0xDA, 0xAB, 0xEF, 0xC8, 0x8F, 0x9F, 0xFF, 0xCA, 0x73, 0x71, 0xE6, 0x6F, 0xFE, 0xC1, 0x6F, 0x85, - 0xCE, 0xE5, 0x4E, 0xD6, 0x22, 0xF5, 0x3B, 0x44, 0xC2, 0x2A, 0x2E, 0x77, 0x57, 0x3B, 0xEA, 0x71, 0x8B, 0x34, 0xFD, 0x05, 0x38, 0x6C, 0x0D, 0xDD, 0xB4, 0xF9, 0x58, 0x03, 0x46, 0xB6, 0x1A, 0x7E, 0xCE, 0x89, 0x93, 0x39, 0x68, 0xB2, 0x0C, 0xE5, - 0x22, 0x4F, 0x23, 0x2E, 0xEB, 0xE8, 0x75, 0xEE, 0xAA, 0xAC, 0xCC, 0x68, 0x48, 0xFE, 0xE0, 0xD0, 0x02, 0xC2, 0x29, 0xFB, 0xC1, 0x19, 0xEF, 0x0A, 0x90, 0xD7, 0x79, 0xC8, 0x38, 0xCE, 0x9E, 0x46, 0xF7, 0xA2, 0xDB, 0x6A, 0xFB, 0xDE, 0x71, 0x25, - 0x8A, 0xDA, 0x9E, 0xE4, 0x9C, 0x14, 0x4C, 0x64, 0xB5, 0x01, 0x4F, 0x45, 0x14, 0x8C, 0x12, 0xA8, 0x6F, 0x30, 0xB9, 0x7A, 0x53, 0xBB, 0xA3, 0x7D, 0x8D, 0x6A, 0xBB, 0x51, 0x5F, 0x0E, 0x87, 0x46, 0x05, 0x93, 0x40, 0xED, 0xEA, 0xAF, 0xF5, 0xEE, - 0xCE, 0xE4, 0x38, 0x66, 0xBE, 0xCE, 0x8C, 0xB2, 0x78, 0x6E, 0x09, 0x68, 0x75, 0x45, 0xD2, 0x98, 0x4F, 0xBA, 0x7D, 0x23, 0x70, 0x08, 0x4C, 0x5D, 0x3E, 0x1A, 0xBF, 0xD4, 0x7C, 0x2F, 0xF7, 0x3F, 0x79, 0xDA, 0x92, 0xF8, 0xD3, 0x3C, 0xFD, 0xC2, - 0x41, 0xC3, 0xCD, 0x46, 0x77, 0x8F, 0xD3, 0xE6, 0xAB, 0x94, 0xD8, 0xF8, 0xE8, 0xE6, 0xF4, 0x3F, 0x42, 0x09, 0x99, 0x3F, 0xDD, 0xD6, 0x00, 0x3A, 0xAC, 0x4E, 0x7F, 0xB9, 0x45, 0xC8, 0x2D, 0xCF, 0x98, 0x86, 0x69, 0x44, 0xAB, 0x60, 0xDB, 0x1C, - 0x00, 0x71, 0x4C, 0xDC, 0x7A, 0x61, 0x7F, 0xA3, 0x28, 0x1A, 0xCB, 0x1F, 0xFC, 0x22, 0x4B, 0xB9, 0x2F, 0xA7, 0x82, 0xD9, 0x6F, 0x40, 0xCC, 0xEF, 0x41, 0xE2, 0xDF, 0x83, 0x24, 0x7D, 0x10, 0xFF, 0xEB, 0x3E, 0x34, 0x96, 0xD5, 0xD8, 0x0F, 0x24, - 0x3E, 0x23, 0xBD, 0x6C, 0x3E, 0xD0, 0xB7, 0xDC, 0x77, 0xC7, 0x40, 0x72, 0xAD, 0x21, 0x6D, 0xF7, 0x49, 0xC5, 0xE8, 0xE0, 0x2D, 0x7B, 0xE1, 0x85, 0x04, 0x44, 0xCA, 0x96, 0xA6, 0x1B, 0x6C, 0x98, 0x67, 0x46, 0x84, 0x3D, 0xFB, 0x46, 0x03, 0x19, - 0xBE, 0x8F, 0xCC, 0x73, 0x3E, 0xB1, 0xAE, 0xAE, 0x94, 0x0E, 0x9F, 0x2C, 0x99, 0xFE, 0x8E, 0xC3, 0xC3, 0xA2, 0x3A, 0xEC, 0xDF, 0xCA, 0x35, 0xDB, 0xC5, 0xDB, 0xDD, 0xE1, 0x54, 0x2F, 0x05, 0x66, 0x69, 0x69, 0xDF, 0x68, 0xBE, 0x5C, 0xD6, 0x37, - 0x67, 0xD6, 0x45, 0x9E, 0x3D, 0x71, 0x2E, 0xD1, 0xF7, 0x54, 0xA2, 0x78, 0xBA, 0x9E, 0xED, 0x15, 0x04, 0xDF, 0xA3, 0xEC, 0x6B, 0x29, 0x56, 0x32, 0x3D, 0x20, 0xFA, 0x73, 0xE6, 0x76, 0x76, 0x90, 0xB6, 0xFD, 0x6C, 0xD5, 0xB1, 0x91, 0x0E, 0x53, - 0x40, 0xB7, 0x40, 0xBE, 0x00, 0x50, 0x1F, 0xBF, 0xD4, 0xEF, 0x2F, 0x3E, 0x36, 0xCD, 0xF1, 0x74, 0x7B, 0x32, 0xF9, 0xB0, 0x6D, 0x3E, 0x5E, 0xBE, 0x89, 0x70, 0x84, 0x9F, 0xBC, 0x05, 0x32, 0xA2, 0xAE, 0xD9, 0x37, 0x93, 0x8D, 0xDC, 0x06, 0xDE, - 0x92, 0x2B, 0x9B, 0xF7, 0x27, 0xF9, 0x7A, 0xF6, 0xC4, 0xCB, 0x40, 0x85, 0x57, 0x88, 0x38, 0x09, 0x1E, 0x8E, 0xF5, 0x1E, 0x1D, 0xC4, 0xE7, 0x87, 0xBA, 0xB9, 0x78, 0xFD, 0x66, 0xB7, 0xC1, 0x45, 0x5C, 0xF5, 0xA5, 0xDE, 0x34, 0xC8, 0x50, 0xDF, - 0x40, 0x4F, 0xFD, 0x0B, 0x71, 0xBF, 0x3C, 0xAE, 0x81, 0x22, 0xE3, 0x5A, 0x78, 0x7B, 0x94, 0x25, 0xC0, 0xAA, 0xC8, 0xA9, 0x08, 0xC9, 0x05, 0x6E, 0x2A, 0x2F, 0xAE, 0x4B, 0x50, 0x33, 0x68, 0x61, 0x21, 0xDC, 0xCF, 0xEE, 0x83, 0xF6, 0xF6, 0x4C, - 0x6E, 0xD9, 0xC7, 0xC2, 0xBD, 0xDD, 0xF1, 0x83, 0x65, 0xAA, 0xE2, 0x2A, 0x8E, 0x4A, 0x15, 0xCB, 0x3F, 0xFE, 0xA6, 0x2B, 0x13, 0x69, 0x95, 0x2B, 0xFC, 0xAD, 0xCB, 0x4A, 0xDA, 0x32, 0x5A, 0x72, 0x4E, 0xEB, 0x95, 0x00, 0x69, 0x40, 0xE1, 0x31, - 0xCF, 0xD7, 0x5A, 0xCF, 0x53, 0x54, 0x0C, 0x55, 0xAA, 0x0A, 0x8C, 0x27, 0x00, 0x2E, 0x00, 0x56, 0x54, 0x6C, 0x01, 0x28, 0x8F, 0x34, 0x9E, 0xD9, 0x3A, 0x05, 0x6C, 0xBC, 0xD4, 0x1A, 0xDC, 0xB4, 0x90, 0x8C, 0x85, 0x86, 0x27, 0xB5, 0xD2, 0x68, - 0x09, 0xC7, 0x94, 0x2C, 0xD9, 0xE3, 0x4C, 0x29, 0x00, 0xE4, 0x4A, 0x24, 0x36, 0x85, 0x6F, 0x29, 0x7C, 0xB5, 0x16, 0xC6, 0x5A, 0x93, 0xB3, 0xD6, 0x78, 0x14, 0x4A, 0x0B, 0x6F, 0xDF, 0xD6, 0xE4, 0x8E, 0x1F, 0xB0, 0x07, 0x4A, 0x0C, 0x8C, 0xA5, - 0x31, 0xE8, 0xE9, 0xA2, 0xC2, 0xAF, 0x2E, 0x23, 0xCC, 0x19, 0xCD, 0xE7, 0xD4, 0xFE, 0x9F, 0x27, 0x58, 0x70, 0xC9, 0xB6, 0x9B, 0xC7, 0x6F, 0xB1, 0xD6, 0xE9, 0x3C, 0x91, 0xD2, 0x07, 0x05, 0x50, 0x36, 0xD7, 0x79, 0x34, 0x8D, 0xD7, 0x09, 0x3A, - 0x95, 0x45, 0x86, 0x4A, 0x0D, 0x96, 0x5E, 0x00, 0x0F, 0xD4, 0x5F, 0x05, 0x6D, 0x61, 0x74, 0x3D, 0xA4, 0x8D, 0xE0, 0xD6, 0xB4, 0x91, 0x37, 0x4B, 0x20, 0xB7, 0x9A, 0xC1, 0x6F, 0xEC, 0xA2, 0x4D, 0xA8, 0xF3, 0xBB, 0x26, 0x34, 0x0A, 0xD3, 0xE1, - 0x54, 0xE9, 0x24, 0xD4, 0x69, 0x25, 0xCF, 0x58, 0x38, 0xE1, 0xA9, 0xD1, 0x54, 0x02, 0x16, 0xF7, 0xC1, 0xA6, 0x00, 0xEB, 0xF5, 0x49, 0x66, 0xA9, 0x8B, 0xB0, 0x68, 0x07, 0xB1, 0x26, 0x3C, 0xA6, 0x28, 0xE2, 0x7A, 0x43, 0x80, 0x30, 0x66, 0x9E, - 0xF5, 0x46, 0x12, 0x96, 0x7B, 0xD3, 0x2A, 0x09, 0x0B, 0x61, 0x98, 0x44, 0x65, 0x58, 0xA8, 0x2C, 0x2C, 0x60, 0xC8, 0xEC, 0x6E, 0x1A, 0xA6, 0x16, 0x8C, 0x0C, 0xFA, 0xDD, 0x3C, 0xCC, 0xD6, 0xA8, 0x11, 0x0B, 0x59, 0x40, 0x7C, 0x37, 0x0E, 0x63, - 0x27, 0x48, 0x69, 0xC7, 0x53, 0x20, 0x77, 0x83, 0x02, 0x73, 0xAE, 0xAF, 0x97, 0xFB, 0xDD, 0x3F, 0x6A, 0x0C, 0x26, 0xAF, 0x74, 0x1A, 0x61, 0x42, 0xD3, 0xBB, 0xD0, 0x92, 0x5F, 0xF0, 0x75, 0x66, 0x2D, 0x60, 0x4D, 0x2E, 0xC6, 0x28, 0xAE, 0xBF, - 0x32, 0xCE, 0xFC, 0xB4, 0xB9, 0xA1, 0x21, 0xE7, 0x3A, 0xAB, 0x74, 0xCE, 0x41, 0x31, 0xBD, 0x05, 0x60, 0x83, 0xDA, 0x40, 0x83, 0xEE, 0x46, 0x08, 0x30, 0xCC, 0x94, 0x5D, 0x14, 0x18, 0x43, 0x45, 0x71, 0x82, 0x11, 0x79, 0xC6, 0x82, 0x11, 0x57, - 0x70, 0xA1, 0x2C, 0x43, 0xC7, 0x68, 0x4E, 0xE2, 0x97, 0xD2, 0x98, 0x18, 0x08, 0xC6, 0x4A, 0x08, 0xBA, 0x51, 0x9E, 0x29, 0xB2, 0xD0, 0x4B, 0x0D, 0x9D, 0x00, 0x4D, 0x3B, 0x67, 0x37, 0x8A, 0xD6, 0x66, 0x23, 0xAD, 0xE4, 0x99, 0x51, 0x1A, 0x2B, - 0x53, 0xAE, 0x04, 0x3C, 0xAF, 0xAC, 0x40, 0x94, 0x86, 0x52, 0x09, 0x6C, 0xA1, 0x18, 0x45, 0x9C, 0x8A, 0x09, 0xF7, 0x93, 0xA2, 0xE5, 0x5C, 0x0A, 0x35, 0xF7, 0x3C, 0x0E, 0xB2, 0x2C, 0x8A, 0x28, 0x51, 0xA2, 0xC4, 0xAA, 0x94, 0x46, 0x12, 0x25, - 0x29, 0xB0, 0xA3, 0x0C, 0x4F, 0x74, 0x0D, 0x9E, 0x2B, 0x0C, 0x66, 0x6E, 0x06, 0x80, 0x19, 0xA1, 0x17, 0x44, 0x5E, 0x22, 0x08, 0x04, 0x3A, 0x59, 0x64, 0x32, 0x6E, 0xA2, 0x02, 0xB2, 0x51, 0xDC, 0x2C, 0x97, 0x58, 0xCE, 0xD1, 0x24, 0x11, 0xBD, - 0x02, 0x52, 0xE9, 0x26, 0xA0, 0xCB, 0x84, 0xC0, 0x0B, 0xA8, 0xCB, 0x10, 0x9F, 0x16, 0x28, 0x69, 0x2B, 0xE1, 0xC4, 0xB5, 0xC1, 0x74, 0xAB, 0x2C, 0x2A, 0xB4, 0x1D, 0xF5, 0x9C, 0x28, 0x75, 0x95, 0x47, 0x65, 0xAA, 0x24, 0x06, 0xA1, 0xE0, 0x98, - 0x56, 0x00, 0x21, 0xC8, 0xB6, 0x90, 0x74, 0x90, 0x46, 0xA9, 0x82, 0x62, 0xC4, 0xF4, 0x19, 0x46, 0x41, 0x49, 0x32, 0x4E, 0xE1, 0x47, 0x0D, 0x28, 0x2E, 0x0C, 0xD8, 0x0B, 0x82, 0x58, 0x2C, 0x47, 0xA2, 0x73, 0x96, 0x9C, 0x0A, 0x55, 0x81, 0x59, - 0xE6, 0x70, 0x36, 0xE4, 0x10, 0x63, 0xE0, 0xFE, 0x06, 0x5C, 0x53, 0xE9, 0x6B, 0xB4, 0x0D, 0xCC, 0xCF, 0x11, 0xCD, 0x91, 0x98, 0x23, 0x1A, 0x23, 0x54, 0x37, 0x15, 0xED, 0xCE, 0xD8, 0x43, 0x5D, 0x87, 0x46, 0x2F, 0x44, 0x7D, 0x21, 0xD8, 0x18, - 0xC4, 0xB5, 0xB4, 0x52, 0xEA, 0x14, 0xCC, 0x53, 0xB4, 0xC1, 0x97, 0x11, 0x0F, 0xE5, 0xB3, 0x0B, 0x7B, 0x38, 0x08, 0x98, 0x88, 0x58, 0x0B, 0x52, 0x61, 0xA0, 0x51, 0x03, 0x61, 0x4C, 0x0D, 0x84, 0x89, 0xD3, 0x40, 0x98, 0x89, 0x06, 0xC2, 0x52, - 0x34, 0x10, 0xE6, 0x5E, 0x03, 0x21, 0x2C, 0x83, 0x87, 0x44, 0x4A, 0x5C, 0x48, 0xA7, 0xF0, 0xB3, 0x40, 0x2D, 0xA9, 0x09, 0x20, 0x3A, 0x4D, 0x90, 0x16, 0x35, 0x21, 0xD4, 0x85, 0x93, 0xB0, 0x2B, 0xE1, 0x1C, 0xA0, 0xAB, 0x60, 0x0E, 0xA0, 0x38, - 0x73, 0x84, 0x5A, 0x5B, 0xC3, 0x4B, 0x86, 0xA2, 0xE1, 0x43, 0x6D, 0xBC, 0xE1, 0xD1, 0xE4, 0x7A, 0xB8, 0xD2, 0x69, 0xCC, 0x2E, 0x3C, 0x00, 0xBF, 0xDE, 0x03, 0x88, 0x45, 0x0F, 0x00, 0x21, 0xEF, 0x01, 0x24, 0x4E, 0x0F, 0x00, 0x37, 0x61, 0xDC, - 0x29, 0x55, 0xCA, 0xCF, 0x81, 0x46, 0xD3, 0xB0, 0xC4, 0x56, 0x94, 0xC2, 0x1C, 0xCC, 0x9D, 0x65, 0x9B, 0x66, 0xB4, 0x02, 0x9F, 0xAC, 0xD7, 0x65, 0xCE, 0xEC, 0xF7, 0xD3, 0x9F, 0xE7, 0xCB, 0x25, 0x32, 0x59, 0x3C, 0x4F, 0x2B, 0x89, 0x3F, 0xCC, - 0x60, 0x36, 0x2A, 0xF1, 0xC4, 0x66, 0x57, 0xF6, 0xD2, 0x6B, 0x0A, 0x03, 0xCC, 0x07, 0x23, 0x46, 0x03, 0x79, 0x9D, 0x2F, 0x04, 0xBD, 0x93, 0xD6, 0x96, 0xEF, 0xE7, 0x2E, 0x90, 0x88, 0x36, 0x60, 0x2F, 0x06, 0x6E, 0x48, 0x97, 0xCE, 0xA1, 0x3F, - 0x64, 0x90, 0x4A, 0xB2, 0x42, 0x28, 0x21, 0xC8, 0x06, 0xC0, 0x52, 0x3B, 0x87, 0x07, 0x4D, 0x57, 0x80, 0x4B, 0x64, 0x9D, 0x25, 0x04, 0x08, 0xC3, 0xA6, 0x94, 0xB1, 0x72, 0x21, 0xEA, 0x13, 0x38, 0x6E, 0xA4, 0x90, 0x86, 0x21, 0x98, 0xC8, 0x6C, - 0x0E, 0x0C, 0x71, 0x1C, 0xEB, 0x73, 0x34, 0x3C, 0xB3, 0x04, 0x5B, 0x20, 0xA0, 0xED, 0x6C, 0x1E, 0xE5, 0xC2, 0x42, 0x8B, 0x1B, 0x08, 0x87, 0xD4, 0xB9, 0xCC, 0x5A, 0x7C, 0x71, 0x91, 0x87, 0x12, 0x58, 0xE8, 0xA3, 0xB3, 0x4E, 0x96, 0x10, 0xD6, - 0x0A, 0x15, 0x8B, 0x9C, 0xA8, 0x26, 0xA4, 0xAF, 0x95, 0xA0, 0x43, 0x04, 0xFA, 0x03, 0x96, 0x41, 0x17, 0x94, 0x70, 0x57, 0xB4, 0x7A, 0x82, 0x85, 0xE5, 0x51, 0x61, 0xE5, 0x28, 0x04, 0x23, 0x93, 0x20, 0xB7, 0x32, 0xC2, 0x5E, 0x5C, 0x28, 0xBC, - 0x09, 0x7D, 0x41, 0x96, 0xC5, 0xAA, 0x9C, 0x6B, 0x01, 0xA2, 0xE7, 0xD8, 0x69, 0xF7, 0xC1, 0xF7, 0xFA, 0x4C, 0xB3, 0xE5, 0x99, 0x79, 0xCD, 0x99, 0x79, 0xD3, 0x81, 0x77, 0x9C, 0x4F, 0x97, 0x34, 0x4E, 0x94, 0xC2, 0x09, 0xE5, 0x47, 0xF6, 0x00, - 0x93, 0x87, 0x60, 0x89, 0x18, 0x8F, 0xC5, 0x89, 0xED, 0x80, 0xA4, 0x7A, 0xC9, 0xBC, 0xCE, 0x14, 0x86, 0xBF, 0x95, 0xEB, 0x9A, 0x28, 0x8F, 0x3D, 0x84, 0xA0, 0xB0, 0x4F, 0x12, 0x96, 0xA6, 0xE5, 0xB0, 0x84, 0x85, 0x0A, 0x99, 0x86, 0xF1, 0x01, - 0x8E, 0x90, 0xCC, 0xA0, 0x06, 0x23, 0xF6, 0x23, 0x0C, 0x7F, 0xC5, 0x18, 0x79, 0xC6, 0x26, 0x8B, 0x92, 0xDC, 0x01, 0xC2, 0xEE, 0xC5, 0x8F, 0xF6, 0xAE, 0x85, 0xB9, 0x71, 0x1A, 0x08, 0xFF, 0x95, 0x54, 0x94, 0xD6, 0x22, 0x8A, 0xDB, 0xF4, 0xA0, - 0x03, 0x09, 0x6E, 0xE7, 0x38, 0x7A, 0xBC, 0xEF, 0x6E, 0x78, 0xCF, 0x94, 0x90, 0x86, 0x46, 0xBD, 0x9A, 0xF1, 0x25, 0x25, 0x76, 0x0F, 0x7A, 0x39, 0xFF, 0x77, 0xBE, 0x5D, 0x49, 0xB6, 0x65, 0x3B, 0xEE, 0x95, 0xC7, 0x0C, 0xCC, 0x74, 0x18, 0x68, - 0x2C, 0x69, 0x57, 0xD2, 0x6A, 0xB5, 0xBB, 0xDA, 0x5D, 0x09, 0xDE, 0x53, 0xA6, 0x10, 0x9B, 0x1B, 0x9C, 0xC4, 0x4D, 0x0F, 0x0D, 0xF0, 0x21, 0x60, 0x09, 0x1B, 0x7F, 0x73, 0x0F, 0xDC, 0xC6, 0xF6, 0x59, 0xD2, 0xEF, 0xC9, 0xB2, 0x46, 0x41, 0x50, - 0xE2, 0xF2, 0xE0, 0xDD, 0x97, 0x10, 0x68, 0xFB, 0xDF, 0xEF, 0xBF, 0x12, 0xD6, 0xB8, 0xA4, 0xBC, 0x06, 0xB1, 0xE7, 0xD9, 0x28, 0xC0, 0x8A, 0x19, 0xE3, 0xBF, 0x66, 0xC2, 0x3D, 0x9E, 0x20, 0xD1, 0xF0, 0x7C, 0x88, 0x4F, 0x52, 0x7A, 0x90, 0x12, - 0x3D, 0x1E, 0xF8, 0x90, 0xFE, 0xA4, 0x1F, 0x80, 0x70, 0x83, 0x07, 0x46, 0x89, 0x0D, 0x50, 0x70, 0x3E, 0xA0, 0x86, 0x03, 0x6A, 0x38, 0x38, 0xA4, 0x82, 0x81, 0x29, 0x7F, 0x05, 0xE4, 0x20, 0xED, 0xF9, 0xE0, 0x80, 0xB4, 0xE3, 0xFE, 0xE0, 0xBD, - 0xC1, 0x01, 0x26, 0x82, 0x3F, 0xEF, 0xA5, 0xE6, 0x47, 0x0F, 0x3F, 0x21, 0xCC, 0xE9, 0x03, 0x7F, 0x4C, 0xB5, 0x29, 0x7B, 0xF5, 0x62, 0x7F, 0xF0, 0x3E, 0xE1, 0x3D, 0x24, 0x40, 0x48, 0x2D, 0x88, 0x30, 0xFC, 0x79, 0x90, 0x0E, 0x59, 0x33, 0x9B, - 0x7F, 0x06, 0xE6, 0x63, 0x80, 0x1F, 0x5C, 0x4D, 0xFF, 0xBC, 0x12, 0x96, 0x1E, 0x5F, 0x21, 0x26, 0x5D, 0x25, 0xC7, 0x03, 0x75, 0xF8, 0xE9, 0xC1, 0x10, 0x8A, 0x1B, 0x7A, 0x1B, 0x1F, 0xC3, 0x21, 0x7D, 0x0D, 0x1F, 0xE0, 0x13, 0x16, 0x25, 0xAD, - 0x32, 0x7F, 0x53, 0xF5, 0x10, 0x5C, 0x09, 0x24, 0xE3, 0x97, 0xB3, 0x95, 0x3D, 0x1B, 0x93, 0x4F, 0x48, 0xE1, 0xFC, 0x91, 0xC1, 0x70, 0x51, 0xB0, 0xF1, 0xA3, 0x85, 0xFE, 0xBD, 0xF7, 0xDD, 0xD7, 0x5F, 0x06, 0x67, 0x74, 0x28, 0xC0, 0x99, 0x60, - 0x1B, 0x89, 0x1B, 0x0B, 0x64, 0xB5, 0x85, 0x30, 0x7B, 0xF8, 0x18, 0x1D, 0x5E, 0xC2, 0xB9, 0x43, 0xBE, 0x90, 0xFC, 0x4C, 0xAA, 0xE5, 0x15, 0x15, 0xA5, 0xD1, 0x3A, 0x57, 0xDB, 0xD1, 0xC5, 0xF5, 0x82, 0x5D, 0x46, 0x81, 0x96, 0xEB, 0x15, 0x92, - 0x01, 0x56, 0x8B, 0xDE, 0x1C, 0x77, 0x04, 0x11, 0x42, 0xCF, 0x42, 0x1C, 0x3D, 0x4E, 0x12, 0x4D, 0x3F, 0x3F, 0xBA, 0xF9, 0x6C, 0x8E, 0x16, 0xB9, 0x42, 0x4F, 0x27, 0x49, 0x27, 0xD0, 0x39, 0x1F, 0x52, 0x2C, 0x1C, 0xC1, 0x8C, 0x5D, 0xEB, 0x1E, - 0xC5, 0xE8, 0x3E, 0xC5, 0x59, 0xCF, 0x05, 0x45, 0x03, 0xB9, 0xA6, 0x49, 0xE9, 0x68, 0x3B, 0x10, 0x45, 0x40, 0x52, 0x8E, 0xCB, 0xDF, 0x51, 0x14, 0xE9, 0x90, 0x1C, 0x41, 0xC7, 0x81, 0xF9, 0x1B, 0x09, 0x0A, 0x61, 0x08, 0x05, 0x80, 0x22, 0xF8, - 0x28, 0x64, 0xC8, 0x87, 0x31, 0x72, 0x0A, 0x85, 0x2B, 0xFD, 0x02, 0x99, 0x5B, 0x81, 0xE0, 0x23, 0xA5, 0x44, 0x3B, 0xFE, 0xD5, 0x6C, 0x87, 0xB8, 0x8C, 0x6B, 0x24, 0x47, 0x0E, 0x79, 0xD1, 0x71, 0x47, 0x07, 0x00, 0x6C, 0x62, 0xEF, 0x1E, 0x85, - 0xCC, 0x0B, 0x0A, 0x80, 0xA2, 0xE4, 0xB5, 0xA7, 0x46, 0x98, 0x3C, 0xE0, 0x8D, 0x8F, 0xA2, 0x6B, 0x0A, 0x17, 0x1A, 0xB1, 0x8D, 0x00, 0xAB, 0xDC, 0x17, 0x14, 0x20, 0x40, 0x53, 0xF8, 0xAE, 0x40, 0xF9, 0xE8, 0x48, 0x87, 0xBF, 0xA6, 0x58, 0x03, - 0x59, 0x96, 0xAC, 0xE1, 0xB5, 0x43, 0x07, 0x17, 0xF1, 0x13, 0x1B, 0x15, 0x00, 0xFD, 0x95, 0xD7, 0x4B, 0xDB, 0x3C, 0xF2, 0xCA, 0x00, 0x39, 0xEF, 0x87, 0x51, 0xD0, 0xDA, 0x66, 0xAB, 0x1B, 0x1A, 0xA4, 0x29, 0x1C, 0x88, 0xBE, 0x0E, 0xCD, 0x81, - 0x34, 0x34, 0xB7, 0x98, 0x9F, 0x20, 0x35, 0x21, 0x8C, 0xE7, 0x32, 0xB4, 0xA1, 0x9A, 0x68, 0x6B, 0x3F, 0x07, 0xBF, 0x61, 0xB8, 0x53, 0x9A, 0x9C, 0x6B, 0x5D, 0x6F, 0x02, 0x8C, 0x14, 0x0E, 0xC0, 0x70, 0x4C, 0x98, 0x29, 0xBB, 0x8C, 0xD3, 0xF0, - 0x5C, 0x27, 0x49, 0x7A, 0x3A, 0x9C, 0x84, 0xE6, 0x6E, 0xD7, 0xB7, 0x5F, 0x7D, 0x49, 0x03, 0x2F, 0xC2, 0x06, 0x42, 0x96, 0x15, 0x5D, 0x00, 0x25, 0x1B, 0x85, 0x7C, 0xD5, 0x35, 0xA8, 0xCC, 0xAD, 0x85, 0x38, 0xEB, 0x04, 0xC1, 0xAE, 0x69, 0x54, - 0x30, 0xEF, 0x6F, 0xD7, 0x7A, 0x75, 0x63, 0x7C, 0x97, 0xCB, 0x55, 0x20, 0xDE, 0x2A, 0x52, 0x19, 0xC0, 0x96, 0xD3, 0xCA, 0x08, 0x84, 0x50, 0x9A, 0x52, 0x9D, 0x4E, 0x66, 0x98, 0x6C, 0xA0, 0x55, 0x26, 0xA3, 0x23, 0xE6, 0xE5, 0x34, 0xE2, 0x1D, - 0x12, 0x88, 0x0C, 0xE4, 0x56, 0x71, 0x24, 0x18, 0x83, 0xE8, 0x67, 0xE3, 0x34, 0xA4, 0x40, 0xA5, 0x4A, 0x89, 0xF2, 0x27, 0x2F, 0xD1, 0x19, 0x2D, 0x83, 0x06, 0xC2, 0x40, 0xB0, 0x9B, 0x42, 0xA8, 0x92, 0xF6, 0x52, 0xA5, 0x95, 0xCE, 0xCE, 0x3E, - 0xCC, 0xE6, 0x47, 0xD5, 0x30, 0x9E, 0xA0, 0x24, 0xC7, 0xA5, 0xBD, 0xF3, 0x6E, 0x57, 0x87, 0x3D, 0x5E, 0x6E, 0xA5, 0xB6, 0xD7, 0x71, 0x4E, 0xDE, 0x24, 0xC0, 0x9D, 0x55, 0x51, 0xF5, 0x19, 0x17, 0xB5, 0x64, 0xCA, 0xDA, 0x76, 0xDB, 0x6B, 0x1D, - 0xD2, 0x67, 0xDE, 0x06, 0xB0, 0x0B, 0x00, 0xE7, 0xAB, 0x29, 0xD2, 0xD2, 0xC4, 0xD1, 0x6E, 0x1F, 0x30, 0x19, 0x98, 0xE0, 0x79, 0x76, 0xD9, 0x47, 0x76, 0xD1, 0x47, 0x2F, 0x18, 0x58, 0x28, 0x14, 0x6B, 0xF8, 0xF9, 0x90, 0xAE, 0x7A, 0xDC, 0xC0, - 0x73, 0x74, 0x7F, 0x62, 0xBD, 0xFD, 0xC4, 0x6A, 0x96, 0x6D, 0x77, 0xD4, 0xA4, 0xDE, 0xFD, 0xE9, 0xF5, 0xDF, 0x3A, 0xBD, 0x3A, 0xA2, 0xAB, 0x69, 0x48, 0xE1, 0x94, 0xC5, 0xFC, 0xD1, 0x65, 0x9C, 0xCC, 0x83, 0x54, 0xE6, 0x2C, 0x3E, 0xCB, 0x14, - 0xA8, 0x0E, 0x41, 0xED, 0x09, 0xF9, 0x93, 0xF4, 0xEA, 0x1B, 0x38, 0xE2, 0x48, 0xFE, 0xAC, 0x4B, 0x01, 0xCE, 0x88, 0x52, 0x2E, 0xEF, 0x16, 0xE3, 0xE8, 0xD3, 0xA6, 0x7E, 0xF9, 0x82, 0x4F, 0x87, 0x54, 0xA4, 0x6C, 0x75, 0x7C, 0xE5, 0x55, 0x06, - 0x88, 0xD2, 0xEF, 0x40, 0x1E, 0x5F, 0xC9, 0xBE, 0x08, 0x45, 0x3F, 0xA0, 0x9F, 0x47, 0x47, 0xEF, 0xEF, 0xA0, 0xD8, 0x2B, 0x19, 0x1E, 0x36, 0x8A, 0x8E, 0x0E, 0xDE, 0xE5, 0x89, 0xDA, 0xA8, 0x62, 0xBD, 0x53, 0x57, 0x0C, 0x45, 0xC1, 0x7E, 0xC5, - 0x5E, 0x31, 0x55, 0x9E, 0xDB, 0xE3, 0xD5, 0xF2, 0x05, 0x99, 0x24, 0x90, 0x83, 0x53, 0x23, 0x51, 0xB3, 0x68, 0xF6, 0xFB, 0x2C, 0xCE, 0x4C, 0x35, 0x8A, 0xD7, 0x26, 0xC4, 0x34, 0x9A, 0x82, 0x9E, 0xA9, 0xAD, 0xCB, 0x42, 0x52, 0xE5, 0x81, 0x1C, - 0x5B, 0x03, 0x22, 0xF5, 0x08, 0xF8, 0x0C, 0x61, 0x07, 0x00, 0xE9, 0x55, 0xFA, 0x17, 0xF4, 0x24, 0xE0, 0xA7, 0xC6, 0x52, 0xF2, 0xC8, 0x4C, 0xFD, 0x79, 0x64, 0x2E, 0x41, 0x82, 0xD2, 0xB0, 0x8A, 0xB4, 0xEC, 0x5C, 0x1B, 0x48, 0xFD, 0x80, 0xB5, - 0x46, 0x0F, 0xE9, 0xA6, 0x5A, 0xC6, 0x17, 0xA0, 0xE1, 0xE5, 0x2C, 0x7D, 0xFA, 0xFB, 0xE2, 0xD9, 0x6A, 0x89, 0x50, 0x5C, 0x76, 0x03, 0xED, 0x27, 0xD7, 0x28, 0x17, 0x45, 0xE6, 0x27, 0x19, 0x32, 0xAC, 0x12, 0xCB, 0x22, 0x9F, 0xC4, 0xA7, 0xD3, - 0x09, 0xE6, 0xC3, 0x99, 0x19, 0xC1, 0x5E, 0xF0, 0x61, 0x70, 0xFA, 0xF3, 0xD1, 0xA4, 0x2F, 0x8F, 0xE4, 0x5E, 0xFC, 0x5C, 0x09, 0x4C, 0x6E, 0xAE, 0xD1, 0xA5, 0xEE, 0x51, 0xBB, 0x31, 0x86, 0x0A, 0x19, 0x7C, 0xAD, 0x73, 0xEA, 0xC2, 0x65, 0xAA, - 0x0A, 0xEA, 0xC0, 0x4D, 0x08, 0xAD, 0x36, 0xCE, 0x3B, 0x73, 0x8A, 0xAA, 0xD6, 0xE9, 0xE9, 0xCF, 0x3F, 0xCD, 0xA7, 0x93, 0x3D, 0xEE, 0x2E, 0x44, 0xCE, 0x71, 0x9C, 0x05, 0x62, 0xCA, 0x2A, 0x8C, 0x15, 0x1A, 0xF7, 0x04, 0x25, 0x18, 0xD7, 0x4D, - 0x08, 0xEE, 0x1C, 0xCD, 0x20, 0xF6, 0xB3, 0x87, 0x59, 0xB6, 0x8A, 0xF1, 0xFA, 0x81, 0x86, 0xE2, 0x5E, 0x9D, 0x0B, 0x25, 0x28, 0xE0, 0x36, 0x8A, 0x5F, 0xC0, 0xE5, 0xBE, 0x77, 0xB5, 0x78, 0x3E, 0xA6, 0xCB, 0xF5, 0x87, 0xEF, 0xAA, 0x1E, 0xD4, - 0x61, 0x13, 0x82, 0x03, 0xB0, 0x42, 0x9D, 0x99, 0x44, 0xE1, 0xED, 0x75, 0x7A, 0xBA, 0x3F, 0xC9, 0x8B, 0x3B, 0x24, 0x5C, 0x30, 0xA4, 0x82, 0x33, 0x70, 0x6A, 0x65, 0xDE, 0xD2, 0xD3, 0xCA, 0x7E, 0x95, 0xDD, 0xCC, 0x41, 0x5C, 0x07, 0xF1, 0x7B, - 0x26, 0x9D, 0x8A, 0xC1, 0x9A, 0xA7, 0x2E, 0x44, 0x77, 0x5B, 0x8E, 0x91, 0x88, 0xFA, 0x9A, 0xE4, 0xB2, 0x5C, 0x95, 0xDC, 0x18, 0xC0, 0x4F, 0x8D, 0x91, 0x0D, 0xE1, 0x1C, 0x38, 0x7B, 0xFB, 0x8D, 0x6C, 0x31, 0xBB, 0x4C, 0x01, 0x19, 0x14, 0xBE, - 0x20, 0xC9, 0x3D, 0x43, 0x0D, 0x30, 0xB6, 0x0B, 0x6B, 0x6A, 0x97, 0xD6, 0xCC, 0xD3, 0x5F, 0x7E, 0x85, 0x11, 0x10, 0xE2, 0xC2, 0x7C, 0x8A, 0xC2, 0xD0, 0x5C, 0x62, 0x08, 0xA6, 0xD1, 0x91, 0xF8, 0x65, 0xB9, 0x4C, 0xF4, 0x6C, 0x01, 0x66, 0xA1, - 0x39, 0x2F, 0x2F, 0x78, 0xF0, 0x12, 0x4C, 0x30, 0xBF, 0x06, 0x0F, 0x04, 0x53, 0xB6, 0x63, 0x82, 0xE9, 0x69, 0x36, 0x89, 0x34, 0xFE, 0x83, 0xED, 0xAC, 0xD6, 0xD8, 0xB2, 0xD9, 0x1B, 0xA0, 0xDC, 0xBA, 0x13, 0xCA, 0x31, 0x78, 0xD7, 0xE2, 0xD4, - 0x0B, 0x10, 0x57, 0xA7, 0x41, 0x26, 0x4B, 0x83, 0xEA, 0x14, 0x92, 0x64, 0x02, 0x38, 0x23, 0x4C, 0x1C, 0x07, 0x72, 0xA8, 0x58, 0x30, 0x6C, 0xA0, 0x13, 0x57, 0xCA, 0x76, 0x91, 0x90, 0xF5, 0x85, 0x82, 0x7D, 0xA9, 0x40, 0x70, 0x9D, 0xB4, 0x2F, - 0x36, 0x1F, 0x23, 0xA8, 0xDA, 0xDA, 0xA0, 0x53, 0xFC, 0xAC, 0xAF, 0x08, 0xA5, 0x9A, 0x58, 0xEC, 0x2A, 0xF3, 0xD0, 0xD8, 0xB1, 0x50, 0x6E, 0x07, 0xF7, 0x92, 0xD5, 0x40, 0xAB, 0xA9, 0x7E, 0x0C, 0x4C, 0xDD, 0x3D, 0xB2, 0xEF, 0x19, 0x69, 0xC7, - 0x6A, 0xE5, 0x32, 0x4C, 0x77, 0x76, 0x74, 0x72, 0x0B, 0x57, 0x8A, 0x25, 0xD3, 0xAB, 0x02, 0xC4, 0x42, 0x66, 0x6A, 0x26, 0x90, 0xCA, 0x82, 0x24, 0xD6, 0x5E, 0xDF, 0x4C, 0x13, 0x07, 0x52, 0xD0, 0x5B, 0x5B, 0x99, 0x30, 0x75, 0x08, 0x0C, 0xC7, - 0x92, 0xCD, 0xEB, 0x8F, 0xDC, 0x81, 0xE2, 0x97, 0x4E, 0x3C, 0x55, 0x39, 0x95, 0x79, 0x95, 0x9A, 0xA1, 0x19, 0x82, 0x9E, 0xBB, 0x63, 0xAA, 0xD7, 0x58, 0x27, 0x72, 0xAC, 0x93, 0x54, 0x5B, 0x41, 0xF4, 0x15, 0xEC, 0x95, 0x90, 0x2F, 0xE5, 0xB8, - 0xD9, 0xBC, 0x13, 0x0C, 0xF7, 0x80, 0x23, 0xD3, 0x57, 0x52, 0xEE, 0x95, 0xBF, 0xC7, 0xB7, 0x12, 0xA9, 0xD1, 0x80, 0xE0, 0x84, 0xB2, 0xF0, 0xCD, 0x6A, 0x5C, 0xDE, 0xA1, 0x5A, 0xFC, 0x69, 0xAB, 0x9C, 0xFD, 0x41, 0x95, 0xF8, 0x53, 0x99, 0xDA, - 0x13, 0xEE, 0x2A, 0x48, 0xB1, 0x4F, 0x97, 0x8F, 0xE3, 0x3F, 0xF4, 0x3C, 0x78, 0x20, 0xF3, 0x1C, 0x8B, 0xFE, 0x19, 0x96, 0xBC, 0xB0, 0xE9, 0x79, 0x8A, 0x34, 0xBB, 0x42, 0x7C, 0x22, 0x92, 0xD8, 0x26, 0x3E, 0xCB, 0x14, 0x0E, 0x12, 0xA2, 0x1E, - 0x95, 0xB2, 0x7A, 0x01, 0x70, 0xB6, 0x92, 0x33, 0xC6, 0xF0, 0x42, 0x7C, 0xA5, 0x3F, 0x20, 0x14, 0x18, 0x88, 0x81, 0xB9, 0x26, 0x26, 0x24, 0x31, 0xD5, 0x26, 0x29, 0xA3, 0xF6, 0xB7, 0xA2, 0xA8, 0xB6, 0x03, 0xA7, 0x32, 0x4C, 0xD8, 0xA0, 0x97, - 0x66, 0x61, 0xFC, 0xA1, 0xA7, 0x75, 0x54, 0x08, 0x0B, 0x56, 0xC6, 0x5E, 0xC7, 0xF5, 0xC6, 0xBB, 0xF9, 0x6F, 0x6F, 0x65, 0x97, 0x30, 0x28, 0x64, 0x73, 0x0F, 0x17, 0x69, 0xB3, 0xCA, 0xDB, 0xCD, 0x3A, 0x29, 0xCE, 0xA3, 0xD3, 0xEE, 0xCD, 0xAB, - 0x84, 0xCD, 0x59, 0x94, 0x63, 0x8C, 0xFE, 0xD6, 0xE5, 0xF4, 0x12, 0x12, 0x2D, 0xCC, 0xC2, 0xC1, 0x50, 0x84, 0x19, 0x65, 0x8B, 0x76, 0xA0, 0x42, 0x5A, 0x2C, 0x6A, 0x7B, 0x2E, 0x6B, 0x30, 0x81, 0x5F, 0x12, 0xD7, 0x0B, 0xC0, 0xCB, 0x6D, 0xFC, - 0xA8, 0xD2, 0x1A, 0x7B, 0xE5, 0xED, 0xEC, 0x04, 0xAB, 0xB7, 0x54, 0x33, 0x46, 0x99, 0x3D, 0xE1, 0x53, 0x06, 0xDB, 0x77, 0xCC, 0x1A, 0x99, 0x4F, 0x86, 0xAC, 0x65, 0xC1, 0xAC, 0x0C, 0xE1, 0x5C, 0xBD, 0x7E, 0x9B, 0x88, 0x44, 0x32, 0x9F, 0x69, - 0xC5, 0x4D, 0x94, 0xE5, 0xCC, 0xB1, 0xC7, 0x79, 0x97, 0x07, 0x6D, 0x8C, 0x57, 0x64, 0x4B, 0x09, 0xFF, 0x9C, 0x3C, 0xAD, 0xD1, 0x21, 0x65, 0x7D, 0xEB, 0xAE, 0x03, 0x09, 0xE9, 0x4F, 0xBF, 0xB6, 0x3F, 0x67, 0xA2, 0xB0, 0x44, 0xE3, 0xB6, 0xE9, - 0xA0, 0x68, 0x80, 0xC1, 0xF2, 0x5C, 0xEA, 0x0D, 0xDC, 0x15, 0x98, 0xE6, 0xAC, 0xEB, 0x0C, 0x62, 0x2F, 0xBB, 0x08, 0xD4, 0x78, 0x03, 0x8F, 0x3B, 0xBC, 0x02, 0xCC, 0x4B, 0xCF, 0x60, 0x43, 0xF1, 0x74, 0xDC, 0xAD, 0x1F, 0x21, 0x1B, 0x4C, 0x50, - 0x37, 0xCE, 0x1B, 0x86, 0x88, 0x96, 0x56, 0xCC, 0xC3, 0xF3, 0x97, 0x19, 0xD7, 0x04, 0x8F, 0x74, 0x6C, 0xD9, 0x00, 0x7E, 0xB8, 0xAC, 0xB1, 0x93, 0x75, 0x75, 0x27, 0xA7, 0x2A, 0x9E, 0xA8, 0x05, 0xF6, 0x32, 0xA9, 0x9E, 0x12, 0x41, 0x04, 0xA5, - 0xB4, 0xB3, 0x13, 0x60, 0x78, 0x36, 0x87, 0x5D, 0x94, 0x0E, 0x1F, 0x1D, 0x52, 0x01, 0x1B, 0x55, 0x28, 0x76, 0xFA, 0x03, 0xC7, 0x8E, 0xA9, 0xCD, 0x8D, 0xA6, 0x2A, 0x9B, 0x1A, 0x5D, 0xA9, 0xB7, 0x25, 0x54, 0x69, 0x72, 0x92, 0x2B, 0x75, 0xA6, - 0x40, 0xB5, 0x75, 0xB7, 0xB3, 0x83, 0xD2, 0x22, 0x35, 0xBD, 0xCB, 0x29, 0x07, 0xD6, 0xE1, 0xF8, 0x89, 0x95, 0x9A, 0x9C, 0xE7, 0x64, 0xF8, 0x44, 0x36, 0x6D, 0xAB, 0x69, 0xB1, 0x55, 0x22, 0x6F, 0x47, 0xB0, 0xEA, 0xC2, 0xBD, 0xBE, 0xE5, 0x8A, - 0x5E, 0x34, 0x79, 0xC7, 0x68, 0xB2, 0x19, 0x5C, 0xAF, 0x2F, 0x02, 0xF4, 0x80, 0x45, 0xB1, 0xB4, 0x8E, 0x59, 0xDF, 0xF5, 0x3C, 0xA2, 0xC1, 0x62, 0x32, 0xEB, 0x31, 0x8B, 0xB6, 0x86, 0x64, 0xD4, 0xF8, 0x03, 0x2A, 0x4D, 0xD0, 0xD7, 0xAF, 0xAB, - 0x35, 0xDE, 0x19, 0x42, 0x02, 0x76, 0xDF, 0xE0, 0x6E, 0x20, 0x58, 0xCD, 0x7E, 0x1F, 0x9C, 0xA7, 0x29, 0x1A, 0xF9, 0xA7, 0xB4, 0x58, 0x89, 0x4F, 0x4F, 0x1E, 0x7E, 0x2C, 0xAA, 0x96, 0x26, 0xBB, 0x61, 0xDD, 0x56, 0x30, 0xEC, 0x35, 0xD6, 0x35, - 0x2E, 0x5F, 0xB1, 0x38, 0x64, 0x33, 0x3D, 0xBD, 0xD4, 0xB4, 0x20, 0xAA, 0xDE, 0x84, 0xB2, 0x5E, 0x04, 0x4D, 0xBB, 0x70, 0xA8, 0xD1, 0x5E, 0xF5, 0xE5, 0x17, 0x89, 0x9D, 0x5B, 0x46, 0xFD, 0xEB, 0xEC, 0xE5, 0xCC, 0x24, 0xA6, 0xDC, 0x7D, 0xF0, - 0x0E, 0x6E, 0xAC, 0x9B, 0x27, 0x12, 0x7F, 0x68, 0x94, 0xB1, 0x74, 0xE7, 0xA1, 0xD1, 0x6B, 0x92, 0x42, 0x9A, 0x75, 0x9B, 0xFB, 0x52, 0x70, 0xDE, 0xA9, 0xDB, 0xE7, 0x2D, 0x42, 0x25, 0x6E, 0x17, 0xC0, 0x73, 0xA9, 0x1A, 0x93, 0xFE, 0xE4, 0xE4, - 0x5B, 0xE1, 0x39, 0x08, 0x62, 0xEF, 0xFC, 0x68, 0x07, 0x9E, 0xCF, 0x5E, 0xBF, 0x86, 0xAD, 0x9D, 0x4E, 0xA2, 0x58, 0xE6, 0xB7, 0x28, 0xF9, 0x9D, 0x9D, 0x36, 0x36, 0x2F, 0x25, 0x7F, 0x53, 0x85, 0xB0, 0xBD, 0xE9, 0x6C, 0x2D, 0xE7, 0x9A, 0x47, - 0xA9, 0x6E, 0x13, 0x5E, 0x97, 0xB3, 0xC5, 0x73, 0x2D, 0x54, 0x60, 0x65, 0x05, 0x36, 0x74, 0xD3, 0x2E, 0x93, 0xA5, 0x3C, 0x1A, 0x5B, 0xCB, 0xAF, 0x6A, 0x0C, 0xEA, 0xD2, 0x18, 0xD4, 0xCE, 0x18, 0x2C, 0x7F, 0x5B, 0xA3, 0x2E, 0x6A, 0xC7, 0x6C, - 0x8C, 0xBA, 0x46, 0x25, 0xCA, 0x84, 0x34, 0x36, 0x5D, 0xA3, 0x0E, 0x65, 0xA2, 0x08, 0x8E, 0x9C, 0x92, 0x63, 0x7B, 0x12, 0x4D, 0x73, 0x66, 0x05, 0xBF, 0x10, 0xA2, 0x22, 0xD5, 0x9F, 0x2D, 0x32, 0x37, 0x40, 0x99, 0x3B, 0xD5, 0xC1, 0x47, 0x72, - 0xD2, 0xDE, 0x77, 0x22, 0x8F, 0x8F, 0xDD, 0x22, 0xF5, 0x71, 0x3A, 0x1B, 0xE7, 0xEF, 0xE0, 0x75, 0x22, 0xD2, 0xC3, 0xEC, 0x3C, 0xC6, 0x08, 0xC3, 0xBD, 0x29, 0x6E, 0xED, 0xA1, 0x2E, 0x5C, 0xFC, 0x93, 0xC2, 0xE6, 0x8F, 0x5C, 0x69, 0x7D, 0x26, - 0x05, 0x73, 0xF1, 0xDB, 0xA0, 0xAB, 0xEC, 0x0B, 0x7D, 0x43, 0x36, 0x85, 0xCA, 0x54, 0x5A, 0xC4, 0x91, 0xAA, 0x27, 0xCD, 0xAC, 0x3C, 0x47, 0xC6, 0x6A, 0xA1, 0x66, 0x74, 0x92, 0x9C, 0x61, 0x94, 0x29, 0x74, 0x4D, 0x7C, 0xAA, 0xB1, 0x3C, 0x90, - 0xB1, 0xA7, 0x8B, 0x49, 0x94, 0xE1, 0x3F, 0xB4, 0x9B, 0xD6, 0x5E, 0x28, 0x03, 0xD1, 0x7C, 0xCF, 0x8D, 0x54, 0x45, 0x6D, 0x27, 0x20, 0xE1, 0x64, 0xD8, 0xA4, 0x06, 0xD0, 0x49, 0xF9, 0xB9, 0x4F, 0xD4, 0xD9, 0x80, 0xE0, 0xD8, 0x7D, 0x9C, 0x96, - 0xED, 0x07, 0xFB, 0x62, 0x12, 0xB9, 0xE2, 0x52, 0xE6, 0x4F, 0xCA, 0xE0, 0x1B, 0xE9, 0xAD, 0xD1, 0xD6, 0x50, 0x85, 0x61, 0x68, 0xCB, 0x72, 0x39, 0x2A, 0x6A, 0x4B, 0x90, 0x91, 0x10, 0xAA, 0xAD, 0xAD, 0xC3, 0xC4, 0xEA, 0x35, 0x6A, 0xD3, 0x85, - 0x1B, 0x14, 0x64, 0xE1, 0x8F, 0x28, 0x17, 0x41, 0x94, 0xDA, 0x58, 0xF8, 0x9A, 0xDA, 0xF5, 0xA2, 0x0E, 0xA4, 0x6A, 0xC0, 0x95, 0x7A, 0xDB, 0xD7, 0xE1, 0x3E, 0xE4, 0x83, 0x36, 0x48, 0xA7, 0xD4, 0x3D, 0xFD, 0xEE, 0xC3, 0xBD, 0x2B, 0xE5, 0xB8, - 0x10, 0xED, 0xBD, 0x8F, 0x92, 0xE5, 0x2F, 0xC1, 0xE9, 0xE7, 0xDF, 0x3C, 0x7D, 0x42, 0x71, 0x07, 0x98, 0x7F, 0x78, 0xBD, 0x22, 0x70, 0x4D, 0x17, 0xD7, 0x49, 0x82, 0x11, 0x4E, 0xD4, 0x9A, 0xD8, 0x77, 0x24, 0x20, 0x4D, 0x93, 0xD8, 0x44, 0x3E, - 0xF7, 0xC8, 0x81, 0x27, 0x40, 0xAE, 0x29, 0xA3, 0x79, 0x8C, 0x1C, 0xEE, 0x8F, 0x61, 0xAE, 0x8D, 0x9D, 0xA7, 0xD7, 0x58, 0x6F, 0xE0, 0x6A, 0x55, 0xBA, 0x00, 0x9D, 0x33, 0x51, 0x70, 0x1A, 0xBD, 0x28, 0xDC, 0x97, 0xE2, 0xD9, 0xD3, 0x6F, 0xBE, - 0x15, 0x8A, 0x14, 0x07, 0x5C, 0x99, 0x9D, 0xAE, 0xC5, 0x25, 0x70, 0x7B, 0x29, 0xA7, 0x82, 0x73, 0x9B, 0xED, 0x80, 0x85, 0xDA, 0xA5, 0xCB, 0x0B, 0x94, 0x94, 0xBE, 0xDB, 0x2F, 0xFB, 0xED, 0xEF, 0x72, 0x76, 0x3A, 0x73, 0xEE, 0x1C, 0xF7, 0x30, - 0xCE, 0xCF, 0x01, 0x7C, 0x81, 0xB9, 0xDD, 0xF4, 0xC8, 0xD7, 0x0A, 0x5D, 0x71, 0xD9, 0xC3, 0x2D, 0x4F, 0x24, 0xBB, 0x6F, 0x31, 0x38, 0xFE, 0xDD, 0xF5, 0x9C, 0x42, 0xF3, 0x25, 0xE7, 0x05, 0xF1, 0x87, 0x0B, 0xAE, 0xFA, 0xD3, 0xD6, 0x76, 0xDA, - 0x36, 0x04, 0xA7, 0x6A, 0xB1, 0x38, 0xA9, 0x8A, 0x06, 0x5E, 0x30, 0xD4, 0x7D, 0xB4, 0x36, 0x2C, 0x6F, 0x70, 0xA1, 0xA9, 0xF7, 0x59, 0x70, 0x9D, 0xDC, 0xC4, 0x8B, 0x0E, 0x4B, 0x07, 0x0B, 0x96, 0x5D, 0x75, 0xF2, 0x5B, 0xD9, 0xAC, 0x83, 0xB9, - 0xA4, 0x54, 0x77, 0x70, 0x26, 0x8B, 0x3D, 0x7B, 0xF1, 0xA9, 0x9D, 0x05, 0xB4, 0x5A, 0x69, 0x73, 0xFD, 0x60, 0x24, 0x70, 0xDD, 0x00, 0xAF, 0x5D, 0x09, 0xC7, 0x14, 0xCD, 0x00, 0x39, 0xE7, 0xEB, 0x3E, 0x5A, 0xCE, 0xD9, 0x7E, 0x65, 0x8F, 0x9E, - 0x72, 0x6C, 0xD3, 0x06, 0x84, 0x77, 0x2A, 0x21, 0x70, 0x1C, 0xCC, 0x71, 0x93, 0x9D, 0x6A, 0x97, 0xCB, 0x85, 0x12, 0xC4, 0x0E, 0x74, 0xE8, 0x18, 0x35, 0x1B, 0x9F, 0xAC, 0x56, 0xCB, 0xD5, 0x96, 0x6D, 0xC3, 0x1F, 0xC4, 0x50, 0xE7, 0x05, 0xAF, - 0xF0, 0x3D, 0x72, 0xC0, 0xF6, 0x99, 0xFF, 0x1C, 0x6F, 0x89, 0x3B, 0xC6, 0x8E, 0xCB, 0x93, 0x8A, 0xB5, 0x15, 0x00, 0x6D, 0xDF, 0x2D, 0x68, 0xA5, 0x75, 0xF9, 0x38, 0x06, 0x7A, 0x6A, 0x0F, 0xC1, 0x3E, 0x4C, 0xCC, 0xD1, 0xCC, 0x73, 0x55, 0xE9, - 0x16, 0x5C, 0xF6, 0x99, 0x03, 0xB2, 0xE0, 0x9C, 0xF6, 0xF1, 0x07, 0xEC, 0x9A, 0x74, 0x77, 0x15, 0xDA, 0xF3, 0x68, 0x47, 0x8F, 0xBE, 0x1B, 0xA5, 0x12, 0xE5, 0x7E, 0xDE, 0x7E, 0x26, 0x94, 0x1D, 0x6C, 0x26, 0xDC, 0xA3, 0x0D, 0x38, 0x0C, 0x54, - 0x54, 0xA9, 0x33, 0x8B, 0x6A, 0x39, 0x15, 0x1F, 0xDB, 0xCF, 0xC7, 0xAB, 0xD9, 0x73, 0x36, 0xD7, 0xE4, 0xD8, 0x8F, 0x57, 0x81, 0xDE, 0xE6, 0x16, 0x0A, 0x3A, 0x55, 0xAD, 0x55, 0x3C, 0xA0, 0x37, 0x1C, 0xB5, 0xEF, 0xDE, 0x53, 0x15, 0x0C, 0x1D, - 0x33, 0x2A, 0x86, 0xD0, 0xD1, 0xC8, 0xD8, 0x54, 0x1E, 0x3E, 0x8F, 0xBC, 0x9D, 0xC8, 0xFC, 0x05, 0xF0, 0x52, 0x4B, 0x28, 0xC5, 0x06, 0x52, 0xCF, 0xE3, 0x3A, 0x0F, 0xCC, 0x67, 0xB9, 0x9C, 0x88, 0xCC, 0x77, 0x03, 0x1E, 0xCD, 0x92, 0x84, 0x2E, - 0x7D, 0x45, 0x0E, 0x1D, 0xB0, 0x54, 0xD2, 0x56, 0x1A, 0xFB, 0x89, 0x6D, 0x16, 0xEE, 0xC8, 0xBB, 0x3A, 0xE1, 0x87, 0x74, 0x54, 0xA5, 0x9A, 0xC4, 0x85, 0x57, 0x3B, 0xA5, 0x5A, 0xEF, 0x46, 0x07, 0xAA, 0xA9, 0x1F, 0x18, 0xF1, 0x35, 0xA7, 0x05, - 0x1F, 0xB8, 0xAC, 0xC7, 0x1D, 0xC9, 0xF8, 0xC9, 0xF5, 0x2A, 0xC0, 0x8B, 0x73, 0x52, 0xA8, 0x97, 0xCB, 0x78, 0xDE, 0x23, 0x0B, 0x3F, 0x3B, 0x0E, 0xFC, 0x69, 0xF0, 0xD1, 0xD8, 0x5D, 0xB4, 0xE8, 0x3A, 0x03, 0x8F, 0x6A, 0xED, 0xBA, 0x69, 0xDC, - 0xBC, 0x47, 0x81, 0x6D, 0xBE, 0x71, 0x1E, 0xC3, 0xCE, 0x79, 0x54, 0x86, 0xEF, 0x8D, 0x1D, 0x3E, 0xCB, 0x9D, 0x1D, 0xAF, 0xA4, 0x9A, 0xC1, 0x61, 0xEF, 0x37, 0xE1, 0xC2, 0x92, 0x1F, 0x57, 0x45, 0xB9, 0xCE, 0xBA, 0x63, 0x7D, 0xCD, 0xC1, 0x4B, - 0xD5, 0x14, 0x94, 0x36, 0xA7, 0xD2, 0x89, 0x4A, 0x74, 0xE4, 0xFA, 0xD4, 0xF3, 0xB0, 0xF7, 0x2C, 0xE1, 0x77, 0x67, 0x39, 0x7C, 0x39, 0xEB, 0x21, 0x44, 0x86, 0x45, 0xE7, 0x17, 0x75, 0xA8, 0x17, 0x34, 0xE4, 0x2B, 0x71, 0x94, 0x9C, 0xD2, 0xBB, - 0x02, 0xB6, 0x90, 0x30, 0xF8, 0x12, 0xF2, 0x12, 0x8D, 0x13, 0x6D, 0xEE, 0x32, 0x06, 0x1C, 0xAE, 0x31, 0xC9, 0x4F, 0xE5, 0x2D, 0x4D, 0x13, 0xDE, 0x20, 0xD9, 0xCF, 0xB4, 0xD2, 0x69, 0xE1, 0x92, 0x9D, 0x25, 0x30, 0x9D, 0xA0, 0x5D, 0xCD, 0x18, - 0xCE, 0x2F, 0x97, 0x98, 0x0F, 0x46, 0x41, 0x8D, 0x44, 0x61, 0x61, 0xB3, 0xDC, 0x20, 0x8C, 0xE5, 0xA5, 0x45, 0x41, 0xF1, 0x9B, 0x8A, 0x1C, 0x57, 0x29, 0x7D, 0x79, 0x57, 0x21, 0x01, 0x9F, 0x6D, 0xDE, 0xD2, 0x69, 0x77, 0x55, 0xBB, 0x8C, 0xF5, - 0x92, 0x65, 0xEC, 0x35, 0x5C, 0xC4, 0x4B, 0x5D, 0xB7, 0xC2, 0x78, 0x53, 0x7D, 0xDB, 0x84, 0xDD, 0x6A, 0x6E, 0xE8, 0x42, 0x59, 0x02, 0xC0, 0xC0, 0x36, 0x76, 0xE0, 0x82, 0x5B, 0xFF, 0xF8, 0xD5, 0x97, 0x9F, 0x42, 0x2B, 0x7E, 0xAD, 0x21, 0xBC, - 0xD3, 0x6C, 0xBC, 0x60, 0x6E, 0x0B, 0xAC, 0x5A, 0x16, 0x7B, 0x06, 0xF8, 0x98, 0x5E, 0x9F, 0x8A, 0x44, 0xBF, 0x44, 0x11, 0x52, 0x89, 0x54, 0x68, 0xBE, 0x20, 0x42, 0x78, 0x19, 0x6C, 0x35, 0x4D, 0xD1, 0x35, 0xF1, 0x72, 0x82, 0xE9, 0x06, 0x20, - 0x28, 0xEE, 0xAD, 0x68, 0x61, 0x55, 0xFC, 0x71, 0x95, 0x0C, 0x67, 0x46, 0xF1, 0x6E, 0xAF, 0x5D, 0x6D, 0x3E, 0xAA, 0x7C, 0x7C, 0x0B, 0x86, 0xCD, 0xCF, 0x46, 0x55, 0x80, 0x85, 0x7B, 0x3E, 0x4A, 0xE7, 0x18, 0xB8, 0xB9, 0x9F, 0xD8, 0x72, 0x2E, - 0x2B, 0x68, 0xAA, 0xB4, 0xF3, 0xB1, 0xFB, 0xA7, 0x68, 0x73, 0xAF, 0x71, 0x4F, 0x23, 0x62, 0x91, 0xCD, 0x92, 0x77, 0xE0, 0xA8, 0x92, 0x7D, 0xF1, 0xB6, 0x18, 0x6B, 0xCB, 0x5B, 0x8F, 0xF0, 0xB4, 0xC8, 0x35, 0xA7, 0x37, 0x18, 0x1F, 0x9E, 0x77, - 0x8D, 0xB5, 0xD8, 0xB9, 0x1C, 0x97, 0x8D, 0xB2, 0xDB, 0x56, 0x76, 0xC4, 0xD1, 0xDD, 0x9C, 0x48, 0x9D, 0x72, 0xEC, 0xB5, 0x91, 0x33, 0x60, 0x26, 0xF2, 0x98, 0xEF, 0x67, 0x96, 0x41, 0xCB, 0x4D, 0x49, 0x87, 0xC2, 0x5E, 0x44, 0x05, 0x8F, 0xBA, - 0xC8, 0x7B, 0xD6, 0x43, 0xF4, 0xEB, 0xE1, 0x0A, 0xEF, 0xAA, 0x85, 0x17, 0x70, 0x91, 0x94, 0xBA, 0x8C, 0x17, 0x5B, 0x1A, 0x8C, 0x69, 0x94, 0x85, 0xE6, 0x86, 0xE8, 0xD7, 0xF6, 0x4D, 0xC6, 0x67, 0xA0, 0x89, 0x8A, 0xA3, 0xF6, 0x44, 0x45, 0xEA, - 0x87, 0xF6, 0x9E, 0xE7, 0x7B, 0x4F, 0x6B, 0x4A, 0x34, 0xAE, 0x32, 0x22, 0x19, 0xEC, 0x5F, 0xF3, 0x2B, 0x41, 0xE3, 0x56, 0xAE, 0xF2, 0x7C, 0x47, 0xAC, 0x58, 0xF7, 0xF8, 0x4C, 0x99, 0x46, 0xA9, 0x8B, 0xBA, 0xDB, 0x62, 0x0E, 0x27, 0x1B, 0xD4, - 0x8D, 0x43, 0x0A, 0x76, 0x84, 0x3B, 0xA1, 0x64, 0x60, 0x6F, 0xD1, 0x4F, 0xFF, 0xF2, 0xE1, 0x84, 0x98, 0x68, 0x85, 0x01, 0x3F, 0x64, 0x5E, 0x23, 0xFF, 0x3F, 0x65, 0xE2, 0xB9, 0xF7, 0x92, 0x3C, 0xF5, 0xF4, 0x77, 0xF2, 0x54, 0x95, 0x45, 0xAA, - 0x6F, 0x3C, 0x85, 0x78, 0x9F, 0x4C, 0xFD, 0x17, 0x93, 0xA9, 0x1D, 0x3D, 0x17, 0xCB, 0x3A, 0x49, 0xEF, 0xB3, 0xAB, 0x5F, 0x55, 0x19, 0x8E, 0xB2, 0x63, 0xAB, 0xE4, 0xB9, 0xBF, 0x87, 0xF4, 0x2F, 0xDF, 0x43, 0x72, 0x84, 0xB7, 0xE7, 0xC8, 0x2A, - 0xED, 0xEF, 0xEF, 0x25, 0xFD, 0x63, 0xF7, 0x92, 0x1C, 0x77, 0xCF, 0x5E, 0x7A, 0x9B, 0xFF, 0x7F, 0x72, 0x4F, 0xC9, 0x8E, 0xDE, 0x18, 0xD1, 0x1E, 0x8B, 0xDC, 0xDF, 0x5B, 0xFA, 0xC7, 0xEF, 0x2D, 0x6D, 0x4A, 0x8C, 0xBB, 0xBF, 0xCE, 0xFD, 0x1F, - 0xBE, 0xCE, 0x8D, 0x35, 0xB3, 0x0F, 0x62, 0x0A, 0xD9, 0x91, 0x05, 0x60, 0xFD, 0x1B, 0x92, 0xDA, 0x17, 0xAF, 0x4D, 0x75, 0x41, 0x54, 0xAE, 0x9A, 0x30, 0x90, 0x95, 0xD2, 0xB7, 0xC2, 0x55, 0x7D, 0xC8, 0x0C, 0x58, 0x79, 0x06, 0xA4, 0x0B, 0xCE, - 0x0F, 0xB7, 0x30, 0x64, 0xF3, 0x3D, 0xC1, 0x2E, 0x04, 0xF5, 0xDB, 0x41, 0x06, 0x85, 0x6E, 0x19, 0x71, 0x77, 0x86, 0x44, 0xF9, 0x50, 0xE9, 0x1D, 0x80, 0xF8, 0xD5, 0x86, 0x3B, 0xB4, 0x37, 0x02, 0xAD, 0x13, 0xA2, 0x74, 0x56, 0x30, 0x84, 0x79, - 0xD6, 0x46, 0xC8, 0x8E, 0xC8, 0x5A, 0xF5, 0x64, 0xC4, 0x30, 0x66, 0x1A, 0xB7, 0xF1, 0x46, 0xD5, 0xAB, 0x20, 0x55, 0xCD, 0x9D, 0x70, 0x5B, 0x90, 0x10, 0xCD, 0xDD, 0xDB, 0x52, 0x9E, 0xC8, 0xA8, 0xA1, 0xB1, 0xCE, 0x08, 0x7A, 0xB2, 0x3B, 0xD8, - 0x97, 0x21, 0xA5, 0x20, 0xF4, 0x45, 0x2F, 0x10, 0xFD, 0xEE, 0x76, 0x38, 0x75, 0x53, 0xBB, 0x5F, 0x6E, 0x32, 0x9D, 0x4A, 0xA1, 0xBC, 0xCE, 0xEC, 0xB9, 0xB2, 0x7C, 0x92, 0xDB, 0xC9, 0xA6, 0xDC, 0x8B, 0x16, 0x74, 0xCD, 0xC0, 0x9D, 0xB7, 0x0A, - 0x5F, 0x8A, 0x9F, 0xFC, 0x31, 0x26, 0x5F, 0x8C, 0x0B, 0x36, 0x1C, 0xEB, 0x8D, 0x7E, 0x8C, 0x51, 0x87, 0x7F, 0xB7, 0xB1, 0x71, 0xE6, 0x71, 0x4A, 0x47, 0xE5, 0xB9, 0xF5, 0xD4, 0x75, 0x72, 0x36, 0x13, 0xC5, 0x9C, 0xCB, 0x3B, 0x10, 0x91, 0xB7, - 0xA7, 0x19, 0x62, 0x71, 0xA7, 0x73, 0x0C, 0xC2, 0x5E, 0xE6, 0x6B, 0xE2, 0x27, 0x76, 0xE1, 0x9D, 0x5E, 0xD9, 0x78, 0x63, 0x7A, 0xE0, 0xC3, 0x3D, 0xEB, 0x81, 0x9F, 0xC5, 0x03, 0xAC, 0xFC, 0xBF, 0xE8, 0xFC, 0x13, 0xD0, 0xAA, 0x24, 0x9C, 0xBA, - 0x73, 0x00, 0x00, 0x00 + +static const unsigned char _acall_htm[8688UL + 1] = { + 0x1F, 0x8B, 0x08, 0x08, 0x64, 0x70, 0x99, 0x65, 0x02, 0x00, 0x61, 0x6C, 0x6C, 0x2E, 0x68, 0x74, 0x6D, 0x00, 0xBC, 0x59, 0x5B, 0x6F, 0xFB, 0x34, 0x14, 0x7F, 0x47, 0xE2, 0x3B, 0x98, 0xFE, 0x35, 0x58, 0x45, 0x13, 0x92, 0xB4, 0xDD, 0xDA, 0x74, + 0x45, 0xDC, 0xC5, 0x1B, 0x48, 0x80, 0x00, 0x21, 0x1E, 0xDC, 0xC4, 0x69, 0xCD, 0x72, 0x53, 0xE2, 0x6E, 0x2B, 0x51, 0xBE, 0x3B, 0xE7, 0x9C, 0xD8, 0xB9, 0xB6, 0xFC, 0xC5, 0x0B, 0x8B, 0xD6, 0x36, 0xB6, 0xCF, 0xFD, 0xE2, 0x9F, 0x93, 0xA7, 0x8F, + 0xBE, 0xF9, 0xE1, 0xEB, 0x9F, 0x7F, 0xFF, 0xF1, 0x5B, 0x76, 0x52, 0x49, 0xFC, 0xF9, 0x87, 0x1F, 0x3C, 0xB5, 0xDF, 0x82, 0x87, 0xF8, 0x9D, 0x08, 0xC5, 0x59, 0x70, 0xE2, 0x45, 0x29, 0xD4, 0xFE, 0xAC, 0x22, 0x6B, 0x83, 0xA3, 0x4A, 0xAA, 0x58, + 0x7C, 0xFE, 0x65, 0x79, 0x49, 0x03, 0xF6, 0xED, 0x4F, 0x3F, 0xB2, 0xEF, 0x7E, 0x62, 0xBF, 0x8A, 0x03, 0xFB, 0x49, 0x14, 0x2F, 0xA2, 0x78, 0xFA, 0x8C, 0xA6, 0x3B, 0xEA, 0x2C, 0x55, 0x22, 0x55, 0xFB, 0xD9, 0xAB, 0x0C, 0xD5, 0x69, 0x1F, 0x8A, + 0x17, 0x19, 0x08, 0x8B, 0x6E, 0x16, 0x4C, 0xA6, 0x52, 0x49, 0x1E, 0x5B, 0x65, 0xC0, 0x63, 0xB1, 0x77, 0x67, 0x2C, 0xE5, 0x89, 0xD8, 0xBF, 0x48, 0xF1, 0x9A, 0x67, 0x85, 0x42, 0x1E, 0xA5, 0xBA, 0x10, 0x33, 0xD4, 0xAC, 0x8A, 0x80, 0x97, 0x15, + 0xF1, 0x44, 0xC6, 0x17, 0xBF, 0xE4, 0x69, 0x69, 0x95, 0xA2, 0x90, 0x51, 0x7D, 0xC8, 0xC2, 0x4B, 0x95, 0xF3, 0x30, 0x94, 0xE9, 0xD1, 0xF7, 0x9C, 0xFC, 0x6D, 0x77, 0xE0, 0xC1, 0xF3, 0xB1, 0xC8, 0xCE, 0x69, 0x68, 0x05, 0x59, 0x9C, 0x15, 0xFE, + 0x3B, 0x2F, 0x5A, 0xC1, 0x55, 0x9F, 0x8A, 0x76, 0xA1, 0x53, 0x87, 0xA0, 0x9F, 0x8C, 0xCB, 0x45, 0xC2, 0x65, 0xBA, 0x28, 0xCF, 0x49, 0xC2, 0x8B, 0x4B, 0x15, 0xCA, 0x32, 0x8F, 0xF9, 0xC5, 0x3F, 0xC4, 0x59, 0xF0, 0x5C, 0xF3, 0x6A, 0xC2, 0x4A, + 0x15, 0x20, 0x39, 0xE7, 0x05, 0x18, 0x55, 0x73, 0x9F, 0x07, 0x4A, 0xBE, 0x88, 0x05, 0xF7, 0x4F, 0x19, 0x18, 0x5F, 0x65, 0x67, 0x15, 0xCB, 0x54, 0x00, 0xF3, 0x43, 0xA3, 0xED, 0xAB, 0x90, 0xC7, 0x93, 0xF2, 0x1F, 0x1D, 0xA7, 0x3E, 0xB9, 0xCD, + 0x50, 0x29, 0xFF, 0x16, 0xFE, 0xF2, 0x21, 0x7F, 0xAB, 0x4F, 0x5E, 0x6F, 0xC4, 0x5B, 0xC1, 0x88, 0x4C, 0xF3, 0xB3, 0xF2, 0x81, 0xEA, 0xF0, 0x2C, 0x95, 0xC5, 0xCF, 0x2A, 0x8B, 0x64, 0x1C, 0x2F, 0xAE, 0x0F, 0x37, 0x32, 0x6F, 0x4D, 0x46, 0x59, + 0x70, 0x2E, 0x6F, 0x4C, 0x6A, 0xB5, 0x2B, 0x33, 0x7E, 0xC8, 0xDE, 0xAC, 0xF2, 0xC4, 0xC3, 0xEC, 0xD5, 0x77, 0x18, 0x5E, 0x4B, 0xF0, 0x22, 0x7B, 0x17, 0x45, 0x11, 0x84, 0x08, 0x62, 0xFF, 0x91, 0x4C, 0x30, 0x20, 0x3C, 0x55, 0x8D, 0x86, 0x7F, + 0xA8, 0x4B, 0x2E, 0xF6, 0x9F, 0x04, 0x27, 0x11, 0x3C, 0x03, 0xED, 0x27, 0x7F, 0x56, 0xF0, 0x89, 0x66, 0xA0, 0x63, 0x0F, 0x59, 0x11, 0x8A, 0x02, 0x79, 0xEE, 0x5A, 0x5F, 0x0F, 0xC8, 0x94, 0x78, 0x53, 0x9F, 0xFC, 0xB9, 0xE8, 0x0F, 0xA5, 0xE7, + 0xE4, 0x20, 0x8A, 0xD1, 0x60, 0xCE, 0xCB, 0xF2, 0x15, 0x98, 0xC1, 0x70, 0x29, 0x62, 0x11, 0xA8, 0xEA, 0xD4, 0x78, 0x73, 0x85, 0x31, 0xA6, 0x14, 0xF2, 0xB7, 0xCE, 0x9D, 0x91, 0xA2, 0x55, 0xA7, 0x04, 0x68, 0x74, 0xF0, 0x5D, 0xB0, 0xA2, 0xCC, + 0x62, 0x19, 0xB2, 0x77, 0x41, 0x10, 0xE8, 0x51, 0xAB, 0xE0, 0xA1, 0x3C, 0x97, 0xFE, 0x03, 0xAC, 0xEB, 0xDC, 0xEF, 0xC2, 0x6D, 0x5F, 0x4B, 0x70, 0x93, 0xF8, 0xB3, 0xCD, 0x86, 0x34, 0x4B, 0x85, 0x0E, 0x8E, 0x0F, 0x03, 0x81, 0x38, 0x65, 0x31, + 0xB0, 0xAA, 0x74, 0x76, 0xAD, 0x05, 0x5C, 0x7A, 0x81, 0xCE, 0x04, 0x2D, 0xAB, 0x59, 0x50, 0x1C, 0x0F, 0xFC, 0xDE, 0x59, 0xD0, 0x65, 0x6F, 0xE6, 0xBB, 0x81, 0xBF, 0x51, 0x49, 0x88, 0x3D, 0xA8, 0x4E, 0xCB, 0x3C, 0xCF, 0x59, 0x34, 0xFF, 0x5B, + 0x58, 0xBC, 0x9D, 0x6B, 0xAE, 0x14, 0xCE, 0xC6, 0x0F, 0xFA, 0x66, 0x28, 0xE2, 0xDD, 0x72, 0xB3, 0xDD, 0x7C, 0xFB, 0xF5, 0x4E, 0x67, 0xE0, 0xD0, 0xE5, 0x8D, 0x7B, 0xFF, 0x6C, 0x54, 0xF3, 0xDB, 0x74, 0x90, 0x69, 0x0A, 0xF4, 0x65, 0x2E, 0x53, + 0xEB, 0x70, 0x56, 0x2A, 0x4B, 0xDB, 0x84, 0xE0, 0x79, 0x2E, 0x38, 0x24, 0x7A, 0x20, 0xC8, 0xF4, 0x9D, 0x95, 0x64, 0x7F, 0xF7, 0x07, 0x31, 0x84, 0x91, 0x14, 0x71, 0x58, 0x47, 0x59, 0xA6, 0xC0, 0x5C, 0x1C, 0xB0, 0x78, 0x2C, 0x8F, 0xA9, 0x1F, + 0x88, 0x14, 0x46, 0xFA, 0xAE, 0xF5, 0xC0, 0xD3, 0x50, 0x5C, 0x47, 0x99, 0x52, 0xE8, 0xEA, 0x46, 0xD8, 0xC2, 0x3E, 0xA8, 0xB4, 0xF5, 0xB0, 0x4C, 0x51, 0x6D, 0x2B, 0x8A, 0x45, 0x97, 0x36, 0x2E, 0x66, 0xA1, 0xBB, 0x9E, 0x16, 0x74, 0x67, 0xAE, + 0xBE, 0x83, 0x4C, 0x35, 0x31, 0x77, 0x76, 0xC1, 0xB9, 0x28, 0x61, 0x30, 0xCF, 0x24, 0x29, 0x92, 0xC8, 0xB4, 0xE9, 0x37, 0x20, 0xFC, 0x6E, 0x94, 0x03, 0xC8, 0xFB, 0xAF, 0x73, 0xA9, 0x64, 0x74, 0xB1, 0x74, 0xA7, 0xD2, 0xFA, 0x6B, 0x25, 0x1B, + 0x97, 0x91, 0xAA, 0x3A, 0xB0, 0x90, 0x18, 0x0A, 0xC4, 0x1C, 0x0A, 0x4C, 0xC5, 0x54, 0x94, 0xE5, 0xFD, 0x66, 0x7D, 0x37, 0xAF, 0xCF, 0x71, 0x6B, 0x8A, 0xE2, 0x87, 0x58, 0xEC, 0x7A, 0x1E, 0x89, 0x45, 0xA4, 0x8C, 0x03, 0x1C, 0x86, 0x45, 0xC8, + 0xD0, 0x34, 0xEC, 0x46, 0xA4, 0x18, 0x18, 0x0A, 0x9A, 0x35, 0xEA, 0x6F, 0xB7, 0x8F, 0xB5, 0xCE, 0x76, 0x9D, 0xE1, 0x9E, 0xBD, 0xBE, 0xAB, 0x6D, 0x8A, 0xA6, 0x15, 0xF3, 0x83, 0x88, 0x4D, 0xD6, 0x39, 0xEE, 0xDA, 0xDB, 0x2E, 0x77, 0x79, 0x56, + 0x4A, 0x25, 0x41, 0xD5, 0x42, 0xC4, 0x1C, 0xCB, 0x7A, 0x87, 0xF2, 0xFC, 0x35, 0xDA, 0x0A, 0x26, 0x24, 0xBE, 0x05, 0x56, 0x1A, 0xBB, 0xA9, 0x9F, 0xFA, 0x21, 0x4C, 0x88, 0xD0, 0x8C, 0x69, 0x1D, 0x60, 0xD1, 0xB8, 0x40, 0xA6, 0x8E, 0x27, 0x57, + 0xF7, 0x63, 0xBB, 0xB4, 0x91, 0x3B, 0xD9, 0x69, 0x81, 0xDE, 0x91, 0x8F, 0x1F, 0x20, 0x86, 0x17, 0xAA, 0x8D, 0x23, 0xC4, 0x9F, 0x0C, 0x66, 0x4E, 0x6D, 0x8B, 0x32, 0x87, 0xBC, 0x8B, 0xB2, 0x69, 0xC6, 0x68, 0x0F, 0x59, 0x5A, 0x6B, 0xCC, 0x9A, + 0xDA, 0x2E, 0xB2, 0x57, 0xEB, 0xB5, 0xC0, 0xCC, 0x2B, 0x5A, 0xFF, 0x52, 0x8E, 0xE0, 0x07, 0xCD, 0x40, 0x82, 0xE2, 0x97, 0x56, 0x41, 0x2A, 0x91, 0x94, 0xFE, 0x81, 0x97, 0x02, 0xD3, 0x69, 0x77, 0x84, 0x79, 0xCF, 0x41, 0x46, 0x71, 0xC6, 0x51, + 0x97, 0xCA, 0x58, 0x41, 0x7F, 0x5B, 0xB1, 0x9B, 0xA8, 0xD1, 0x2C, 0x05, 0x71, 0x53, 0xBF, 0xEA, 0xF6, 0x83, 0x01, 0xDC, 0x61, 0x2E, 0x44, 0x31, 0x14, 0xF0, 0x49, 0x86, 0xA1, 0x48, 0x6B, 0x1B, 0xCB, 0xE8, 0xFB, 0x4A, 0x65, 0xB9, 0xBF, 0x86, + 0x60, 0xB6, 0xC4, 0xFC, 0x00, 0x0D, 0xE8, 0xAC, 0x5A, 0xE2, 0x4D, 0xDB, 0xBA, 0x36, 0x03, 0xF7, 0x1A, 0x95, 0xBC, 0xC3, 0x30, 0x0A, 0x94, 0x1B, 0x0D, 0x77, 0xCB, 0xFD, 0xBE, 0xE2, 0xA9, 0x4C, 0x38, 0x31, 0x2E, 0x73, 0x2A, 0xDF, 0xEF, 0xD9, + 0xB2, 0x64, 0xE0, 0x50, 0xDC, 0x4A, 0x05, 0x43, 0xA3, 0x79, 0xA1, 0x97, 0x7B, 0xB7, 0x96, 0xDB, 0xEE, 0x2D, 0x92, 0xE5, 0x4D, 0x12, 0xEF, 0x16, 0xC9, 0xEA, 0x26, 0xC9, 0x15, 0xC5, 0xBE, 0x78, 0x16, 0x97, 0xA8, 0xE0, 0x89, 0x28, 0x99, 0x59, + 0x5A, 0x39, 0x77, 0x15, 0xED, 0xA9, 0x51, 0x56, 0x24, 0x3E, 0xFD, 0x02, 0x77, 0x8B, 0xDF, 0xEE, 0x9D, 0x79, 0xED, 0x5D, 0x9F, 0xBB, 0xF7, 0x1C, 0x88, 0xE9, 0xBC, 0x7E, 0xBC, 0x45, 0xBA, 0x76, 0xD6, 0x38, 0xEF, 0x3A, 0xB7, 0x16, 0x6C, 0x1A, + 0x06, 0xB5, 0x9D, 0x17, 0xD9, 0xB1, 0x80, 0x22, 0xA6, 0x54, 0x9A, 0xE6, 0xE4, 0xB4, 0xB8, 0x74, 0xF0, 0x1E, 0x9C, 0x3B, 0x13, 0x51, 0x6F, 0xDD, 0xB6, 0x37, 0xCA, 0x35, 0x2A, 0xF0, 0x41, 0x64, 0xB7, 0x02, 0xAF, 0xC7, 0xB0, 0xAB, 0x9B, 0x06, + 0xA6, 0xA0, 0x42, 0x26, 0x4D, 0xE2, 0x98, 0xD9, 0xAB, 0x92, 0x09, 0xC8, 0xDC, 0x4E, 0x2B, 0x93, 0xE0, 0xEA, 0xDE, 0x6E, 0x76, 0xEC, 0x79, 0x35, 0x6A, 0x6E, 0x53, 0x31, 0x8E, 0x33, 0xA2, 0x67, 0xED, 0xAD, 0xEE, 0x28, 0xCE, 0xEE, 0x6F, 0x28, + 0xC1, 0x50, 0xBC, 0xF9, 0xEB, 0x2B, 0xF4, 0xDC, 0xDD, 0x65, 0x39, 0x0F, 0xA4, 0xBA, 0xF8, 0xCE, 0x44, 0xC3, 0xE5, 0x55, 0x0D, 0xB5, 0x72, 0x3D, 0x41, 0x86, 0x83, 0xBB, 0xEB, 0x72, 0xA3, 0x25, 0xC1, 0x21, 0xE8, 0x07, 0x0D, 0x2B, 0x36, 0x56, + 0xF7, 0x8F, 0x90, 0x2B, 0x6E, 0x99, 0x21, 0x6A, 0x58, 0x80, 0x05, 0x10, 0xB5, 0x58, 0xA8, 0xEC, 0x27, 0x7F, 0xF6, 0xC4, 0x4C, 0xAA, 0x8C, 0x5A, 0x1F, 0xEA, 0x9D, 0xE5, 0xF0, 0x59, 0x50, 0x7C, 0x1C, 0xD3, 0x07, 0x41, 0x52, 0x08, 0x1B, 0x59, + 0xC8, 0x63, 0xED, 0x08, 0xC8, 0x9F, 0x49, 0xB1, 0x8D, 0x5B, 0x25, 0xC1, 0x87, 0x69, 0xA7, 0x1C, 0xED, 0xBD, 0xF4, 0xF7, 0x20, 0xA6, 0xED, 0xF2, 0x54, 0xC6, 0xF7, 0xEE, 0x76, 0x6B, 0xAF, 0x97, 0xA1, 0x38, 0x32, 0x77, 0x63, 0x2F, 0xEF, 0xD8, + 0xEA, 0xC1, 0x76, 0x36, 0x77, 0xEC, 0x33, 0x06, 0xE0, 0xA5, 0x8F, 0x05, 0x86, 0x30, 0xC1, 0x5B, 0xCD, 0x11, 0x88, 0x41, 0x3E, 0x41, 0xA3, 0x20, 0xBB, 0x6E, 0x34, 0x16, 0xD3, 0x72, 0xAE, 0x15, 0x8A, 0x05, 0x13, 0x0B, 0xFC, 0x98, 0x37, 0x0D, + 0x33, 0x94, 0x85, 0x08, 0x88, 0x3C, 0x00, 0xE2, 0x24, 0x6D, 0x3D, 0x62, 0x11, 0x6A, 0x37, 0xDD, 0xD1, 0x75, 0xDD, 0x8D, 0xF7, 0xD8, 0xED, 0xC3, 0xF6, 0x5A, 0x24, 0x37, 0x4B, 0x01, 0xB0, 0x7B, 0x70, 0x8F, 0xA5, 0xC6, 0x2C, 0xB6, 0xC2, 0x95, + 0xF3, 0x96, 0xAB, 0xD9, 0x53, 0x0D, 0x54, 0x01, 0x55, 0xFB, 0x98, 0x4C, 0x38, 0x78, 0x8D, 0xC4, 0x98, 0xC6, 0x4A, 0x6D, 0xB6, 0xB6, 0x81, 0x24, 0xE5, 0x2F, 0x13, 0x18, 0x4E, 0x3E, 0x1F, 0x37, 0x61, 0xAD, 0x50, 0x24, 0x95, 0x11, 0xBC, 0x83, + 0x59, 0xAE, 0x7C, 0x4A, 0x84, 0x51, 0xA8, 0x47, 0xDB, 0x16, 0xB9, 0x47, 0xA4, 0xA1, 0x4E, 0x16, 0x9A, 0x26, 0x32, 0x2A, 0x55, 0xA3, 0x07, 0xE3, 0x15, 0x71, 0x6C, 0xB6, 0xF4, 0xC1, 0x59, 0xA1, 0x85, 0x22, 0x1E, 0x5E, 0xD3, 0x7D, 0xA5, 0x35, + 0x73, 0xAD, 0x77, 0xC3, 0x66, 0x49, 0x28, 0x82, 0xAC, 0xA0, 0x02, 0x21, 0xA4, 0x35, 0x42, 0xA4, 0x9D, 0xDC, 0x9B, 0xE8, 0x63, 0x0D, 0xE8, 0x63, 0x04, 0x79, 0x3A, 0x2A, 0x5D, 0x99, 0x57, 0xDC, 0xB7, 0x7E, 0x08, 0x9C, 0x8D, 0xD3, 0xC3, 0x4F, + 0x2D, 0x91, 0x2D, 0xC1, 0x79, 0x03, 0xE4, 0x8B, 0x5B, 0xE2, 0x31, 0xEB, 0x61, 0x15, 0x18, 0x38, 0xC4, 0x50, 0x0D, 0x91, 0xAC, 0xAE, 0xB8, 0xB0, 0xB6, 0x09, 0x01, 0x55, 0x2D, 0x42, 0xD7, 0xDD, 0x91, 0x22, 0xDA, 0xAB, 0x9C, 0x98, 0xE7, 0xA5, + 0xF0, 0xCD, 0x8F, 0xB6, 0xEC, 0xB0, 0x75, 0xD0, 0x99, 0xC1, 0x2E, 0x5F, 0x8E, 0xC3, 0x4D, 0x9F, 0x38, 0x52, 0x40, 0x0C, 0x58, 0x20, 0x3F, 0x50, 0xD9, 0xD2, 0x72, 0x4B, 0x54, 0x7A, 0x82, 0xAA, 0x02, 0x47, 0x01, 0x10, 0x03, 0x72, 0xAA, 0xFA, + 0x86, 0x52, 0xAE, 0x0F, 0x38, 0xD7, 0xF6, 0x49, 0x10, 0x3E, 0xB0, 0xBC, 0xC1, 0xB9, 0x6D, 0xE5, 0x38, 0xBB, 0x5B, 0x40, 0x85, 0xA4, 0xB2, 0x26, 0x4B, 0xB1, 0xEC, 0xAA, 0x01, 0x6C, 0x75, 0xB4, 0xB2, 0x00, 0x0E, 0xAF, 0x61, 0x8C, 0x00, 0xF0, + 0xE4, 0x41, 0x00, 0x99, 0x58, 0xD0, 0x6F, 0x1E, 0x21, 0x8A, 0x36, 0x10, 0x74, 0xC6, 0x66, 0xBB, 0x21, 0x9A, 0x3C, 0x16, 0x32, 0xB4, 0x9A, 0x9A, 0x25, 0x70, 0x05, 0x36, 0x37, 0x63, 0x00, 0x90, 0xCC, 0x40, 0x7F, 0x11, 0xC6, 0xC1, 0xF7, 0xBA, + 0x25, 0x74, 0x5B, 0xF7, 0x45, 0xC5, 0x82, 0x43, 0x1E, 0x65, 0xEA, 0x44, 0xA3, 0x03, 0x6F, 0x4C, 0x4B, 0xBD, 0xAB, 0xB4, 0x17, 0x59, 0x4A, 0x54, 0x28, 0xE1, 0x6F, 0x96, 0x0E, 0xF0, 0x03, 0xD8, 0x3B, 0xF1, 0xC9, 0x10, 0xC4, 0x23, 0xEC, 0xBF, + 0xDE, 0x81, 0xFE, 0x87, 0x06, 0x4C, 0x3D, 0xF5, 0x6E, 0x81, 0x89, 0x3B, 0x39, 0x7E, 0xDD, 0x6E, 0xB9, 0x35, 0x62, 0x7E, 0xD8, 0x72, 0x46, 0xB8, 0xB3, 0x7B, 0xCE, 0x70, 0xF3, 0xE8, 0xD0, 0xC3, 0xA6, 0xF8, 0x31, 0x08, 0x0B, 0x02, 0x52, 0x3C, + 0x5C, 0x77, 0x91, 0x31, 0x10, 0xB5, 0xC5, 0xFF, 0x1B, 0x48, 0xD0, 0xE8, 0x2A, 0xE8, 0x1D, 0x23, 0xE4, 0x9B, 0x4E, 0xED, 0x83, 0x61, 0xAD, 0x54, 0x9B, 0xE1, 0xD5, 0xA4, 0x72, 0x0C, 0x5B, 0xE8, 0x69, 0xA6, 0x94, 0xA0, 0x9F, 0x8A, 0x51, 0x0B, + 0x50, 0xD9, 0xF1, 0x18, 0x8B, 0x11, 0xFE, 0x18, 0xB5, 0x40, 0xE3, 0x1C, 0x38, 0xCE, 0x4E, 0x7B, 0x71, 0x77, 0x02, 0x72, 0x98, 0x0B, 0x0E, 0x66, 0x16, 0xCA, 0x32, 0x8C, 0xF5, 0xD1, 0xA6, 0x5D, 0x43, 0x2E, 0x99, 0xE6, 0x21, 0x96, 0xB5, 0xD7, + 0xA3, 0x2A, 0x5F, 0xA5, 0x0A, 0x4E, 0xE3, 0x53, 0x24, 0x69, 0x33, 0xC0, 0x36, 0xD3, 0xE3, 0xBF, 0xFB, 0xD0, 0x2A, 0xB9, 0x06, 0x6D, 0x0C, 0x9A, 0x5B, 0x7A, 0x57, 0xE5, 0x42, 0xFA, 0x2B, 0x19, 0xF0, 0x58, 0x97, 0x71, 0x22, 0xC3, 0x30, 0x16, + 0x7D, 0x78, 0xD4, 0x09, 0x03, 0xAC, 0xBC, 0x2E, 0x47, 0x0A, 0x9A, 0x5A, 0x1F, 0x8E, 0x8E, 0xAB, 0x7E, 0x76, 0x9D, 0xAA, 0xB5, 0x6E, 0x62, 0x56, 0x83, 0xAA, 0xAD, 0x23, 0x9A, 0x04, 0x1C, 0xEE, 0x55, 0xC6, 0x9A, 0xDC, 0x58, 0xD0, 0xB3, 0x1B, + 0xC8, 0xF7, 0x77, 0x42, 0x08, 0x86, 0x99, 0x3F, 0x1F, 0x9A, 0x4F, 0x88, 0x61, 0xF2, 0xD8, 0x07, 0xF7, 0xE6, 0x61, 0x45, 0xAC, 0xE7, 0xA6, 0xE9, 0xAE, 0x5A, 0x1F, 0xD1, 0xEF, 0x1B, 0x40, 0x64, 0x65, 0xB0, 0xCA, 0x6A, 0x88, 0x6F, 0x71, 0x6C, + 0xE0, 0x98, 0x66, 0x3F, 0x63, 0xD7, 0x0D, 0xFE, 0x2F, 0x26, 0xD2, 0xB7, 0x36, 0xF1, 0xFD, 0x06, 0xAD, 0xE7, 0xA0, 0x80, 0x45, 0x0F, 0xAE, 0x7C, 0xFA, 0x14, 0xE1, 0xA7, 0x43, 0x1D, 0x7A, 0xC2, 0xCD, 0x2E, 0x39, 0x25, 0xB9, 0xAE, 0x36, 0x1A, + 0x49, 0xD5, 0xDD, 0x12, 0x5C, 0x41, 0xA8, 0xD4, 0x40, 0x65, 0x8C, 0xE8, 0xD8, 0x1C, 0x1D, 0xF3, 0xF2, 0x35, 0xEC, 0x17, 0xFA, 0xA4, 0xAA, 0xA1, 0x4F, 0x5C, 0x29, 0xE9, 0x5D, 0xB7, 0x21, 0xDF, 0x7A, 0x88, 0x61, 0x97, 0x27, 0x68, 0x31, 0x58, + 0xCD, 0xD4, 0x50, 0xA6, 0xEA, 0x68, 0x8C, 0xB3, 0xB9, 0x9B, 0x40, 0x88, 0x48, 0x16, 0xC9, 0x2B, 0x2F, 0x06, 0xFB, 0xE4, 0x7F, 0x69, 0x37, 0xD1, 0xAB, 0x75, 0xCE, 0xF1, 0x28, 0x7D, 0xB5, 0x38, 0xBB, 0xED, 0x01, 0xEA, 0x8D, 0x8A, 0x7D, 0xA4, + 0xC0, 0x04, 0xAD, 0x8D, 0xBB, 0x1F, 0xD1, 0xF4, 0x63, 0xF5, 0xB0, 0xC5, 0xAB, 0x8F, 0x68, 0x3A, 0x1D, 0xFE, 0xF5, 0xD9, 0x0D, 0x75, 0xFA, 0x85, 0x5D, 0x9E, 0x0F, 0x89, 0x54, 0x55, 0xF7, 0xB8, 0xC8, 0x83, 0xE7, 0x2E, 0xEF, 0xF8, 0x21, 0x6B, + 0xD1, 0x43, 0x8C, 0x64, 0x90, 0x89, 0x97, 0xFA, 0x8B, 0x44, 0x84, 0x92, 0xB3, 0x32, 0x28, 0x84, 0x48, 0x19, 0x87, 0xA2, 0xBF, 0xEF, 0x36, 0x44, 0xB6, 0xDD, 0x42, 0xDE, 0xCD, 0x2B, 0x1B, 0x01, 0x12, 0x46, 0x24, 0x05, 0x6F, 0x19, 0x74, 0x60, + 0x75, 0xA0, 0xD2, 0xF8, 0x00, 0x1B, 0xAF, 0x86, 0x99, 0xEF, 0x61, 0xFC, 0xF8, 0xF0, 0xF8, 0x3E, 0xC6, 0xEE, 0x98, 0x31, 0x8D, 0x8C, 0x1E, 0x29, 0x2D, 0x6D, 0x30, 0xED, 0x3D, 0xB2, 0x1E, 0x9C, 0x0D, 0xCA, 0x3A, 0xB9, 0xE3, 0x67, 0xD4, 0x66, + 0x5F, 0xEC, 0x23, 0x2D, 0xEF, 0xE6, 0x56, 0xD4, 0x22, 0xF8, 0x61, 0xF4, 0xD6, 0x5D, 0xF3, 0x05, 0x55, 0x3A, 0x74, 0xDD, 0x07, 0xC9, 0x43, 0xE0, 0x3D, 0x38, 0x06, 0x8F, 0xF6, 0x26, 0xB3, 0xA6, 0x81, 0xAE, 0x1D, 0xE6, 0x1F, 0x41, 0x74, 0xB3, + 0xD0, 0x2E, 0x44, 0x99, 0x67, 0x69, 0x09, 0x9C, 0x18, 0x91, 0xDC, 0xAA, 0x0B, 0x73, 0x92, 0xBC, 0x46, 0xC8, 0xB5, 0x1C, 0xD4, 0x60, 0x28, 0x66, 0xFC, 0xE8, 0xAF, 0xD9, 0x4E, 0x2D, 0x25, 0xD3, 0xCB, 0x40, 0xEF, 0x5B, 0x5B, 0x1F, 0xD8, 0x3E, + 0x29, 0xDC, 0x46, 0x9D, 0xD5, 0x7B, 0xA3, 0xB6, 0x7A, 0xDC, 0x62, 0xD4, 0x86, 0xAF, 0x44, 0x26, 0xF1, 0x5F, 0x63, 0xFC, 0x3B, 0xC8, 0xDB, 0x8B, 0xE4, 0x20, 0x7F, 0x7C, 0x67, 0x84, 0x6C, 0x9D, 0x06, 0x2B, 0x92, 0xBC, 0xAE, 0xF7, 0xB4, 0xB3, + 0xD0, 0x85, 0xC7, 0xCF, 0xEC, 0xAE, 0xF7, 0x8B, 0x23, 0x47, 0xA7, 0xD6, 0xF0, 0x7E, 0xE7, 0x33, 0xFD, 0x82, 0x07, 0x7E, 0x99, 0x97, 0x4E, 0xA8, 0x3B, 0x7E, 0xE3, 0x6B, 0x19, 0x26, 0xC3, 0x3D, 0x7E, 0xE3, 0xDB, 0x04, 0xF3, 0x62, 0x4A, 0x14, + 0x2C, 0x88, 0x79, 0x59, 0xEE, 0x67, 0xA0, 0x0B, 0x6B, 0x46, 0x66, 0x38, 0x19, 0xCA, 0x17, 0x3D, 0x43, 0x00, 0x5F, 0x0F, 0x21, 0x0B, 0x99, 0x1C, 0x2D, 0x3C, 0xC2, 0x30, 0x9A, 0xD8, 0xCF, 0xBE, 0x8E, 0x65, 0xF0, 0xCC, 0x54, 0xC6, 0x9A, 0xEE, + 0xC0, 0x2E, 0xD9, 0xB9, 0x60, 0xB4, 0x00, 0x1F, 0xFB, 0xCF, 0x3E, 0x7F, 0xFA, 0x0C, 0x08, 0x49, 0x9E, 0xAB, 0x39, 0x6A, 0x5F, 0x21, 0x33, 0x7C, 0x47, 0x45, 0xDC, 0x6E, 0xBF, 0x02, 0x3B, 0xB9, 0x40, 0x4C, 0x4C, 0x86, 0x7A, 0xE9, 0x3C, 0x95, + 0x21, 0xFE, 0xB2, 0x52, 0x4E, 0xD3, 0x65, 0xCE, 0xC9, 0x4E, 0xB8, 0xB5, 0xA0, 0x41, 0x3E, 0x7F, 0xFE, 0xC4, 0xF1, 0xB6, 0x14, 0x8A, 0x4E, 0x58, 0xC6, 0x58, 0x4E, 0x93, 0xAC, 0x29, 0x80, 0x19, 0xC3, 0xA7, 0x24, 0xE8, 0x95, 0x3D, 0xAE, 0x21, + 0xF7, 0xFC, 0x2A, 0xBF, 0x93, 0xA0, 0x81, 0x3A, 0xE7, 0x4F, 0x9F, 0x71, 0x30, 0x01, 0xF9, 0xF6, 0xF9, 0x9F, 0xF3, 0x70, 0xCC, 0x1F, 0x86, 0xB8, 0x12, 0x5A, 0x82, 0x16, 0xD0, 0x32, 0x6E, 0x26, 0x89, 0xF5, 0x2F, 0xCD, 0xBA, 0x8F, 0xC1, 0xCE, + 0x21, 0x6F, 0xE2, 0x74, 0x3A, 0x27, 0x16, 0xF4, 0x84, 0x91, 0xA2, 0x58, 0x57, 0xE0, 0xC9, 0xCE, 0x78, 0x38, 0x9E, 0x31, 0x8A, 0xF6, 0x5E, 0x67, 0xBA, 0x05, 0x89, 0xF9, 0xF9, 0x13, 0x0E, 0xE3, 0x1B, 0xBF, 0xAF, 0x40, 0xE4, 0x8C, 0x5E, 0xE0, + 0x20, 0x3C, 0x9C, 0x01, 0x63, 0xA4, 0xB0, 0x12, 0x91, 0x9E, 0x31, 0x2A, 0xF1, 0x1E, 0xF6, 0x07, 0x7C, 0xE9, 0xF6, 0x35, 0xB6, 0x62, 0xD6, 0x20, 0x91, 0x3D, 0x80, 0x38, 0x05, 0xEA, 0xC0, 0x42, 0x1D, 0x33, 0x54, 0xCF, 0xB8, 0xDE, 0x24, 0x95, + 0x28, 0x86, 0x51, 0xA0, 0xBC, 0xC9, 0x72, 0x85, 0xA6, 0x91, 0x1C, 0xE3, 0x42, 0x8A, 0xB8, 0x37, 0x8C, 0xB8, 0xE5, 0xFD, 0x43, 0xAA, 0x15, 0xF5, 0xA6, 0x0D, 0x03, 0xE1, 0xBF, 0x72, 0xCB, 0xD3, 0x26, 0x01, 0x21, 0x6C, 0x54, 0xA5, 0x82, 0x48, + 0x5B, 0xBB, 0x8D, 0x4A, 0x74, 0xAA, 0x84, 0xC4, 0xC3, 0xDE, 0x02, 0xCD, 0x4A, 0xD4, 0x90, 0x44, 0x24, 0xB4, 0xE2, 0xDF, 0xEF, 0xEE, 0xEC, 0x73, 0xE2, 0x60, 0x10, 0xB4, 0x52, 0x8B, 0x12, 0xFB, 0x7C, 0xFE, 0x6C, 0x7F, 0x77, 0xBE, 0xB3, 0x13, + 0xDE, 0x2A, 0x47, 0x4B, 0x7C, 0xA1, 0x39, 0x46, 0xA5, 0x03, 0x5B, 0xA1, 0x9C, 0x69, 0x87, 0x44, 0x05, 0x3C, 0xF8, 0x88, 0x6F, 0x60, 0xBC, 0x6C, 0x4C, 0x3D, 0x0B, 0x50, 0xB9, 0xCC, 0xDC, 0xD8, 0x5F, 0x86, 0x1D, 0xB8, 0x7F, 0x04, 0xB4, 0x1C, + 0x3A, 0xC8, 0x72, 0xC9, 0x27, 0x85, 0x2D, 0xFD, 0x4B, 0xEF, 0xC7, 0x28, 0x2B, 0x62, 0xB2, 0x45, 0x8B, 0xA0, 0x93, 0x73, 0xE4, 0x43, 0xCC, 0x20, 0x39, 0x99, 0xE4, 0x61, 0xF2, 0x9C, 0xF0, 0xAB, 0x96, 0x33, 0x55, 0x15, 0x19, 0xA0, 0x69, 0x91, + 0x26, 0x25, 0xCD, 0x30, 0x17, 0x72, 0x07, 0x46, 0x6E, 0xB9, 0x6D, 0x75, 0x28, 0x6D, 0xEC, 0xFE, 0x4D, 0x2E, 0xC3, 0xE2, 0xEC, 0xEA, 0x74, 0x4D, 0xE3, 0x4A, 0x03, 0xD0, 0xCD, 0x4C, 0xCA, 0x32, 0x79, 0x0A, 0xE7, 0xF3, 0xFB, 0xBB, 0xB1, 0xCF, + 0x85, 0x24, 0xCF, 0x32, 0xA8, 0x98, 0x2B, 0x81, 0x2F, 0xB3, 0xC8, 0xBB, 0x42, 0xE3, 0x12, 0x6E, 0xE2, 0xFD, 0xA4, 0x80, 0x81, 0x8D, 0x98, 0x16, 0xE8, 0x1E, 0x48, 0x07, 0x5F, 0x25, 0x7B, 0x82, 0xF0, 0xBD, 0x90, 0xE4, 0x0A, 0x32, 0x7C, 0xD4, + 0x0F, 0x02, 0xCD, 0xD2, 0x47, 0xF1, 0x9B, 0x05, 0x56, 0x9A, 0x31, 0x60, 0xF3, 0xC6, 0x79, 0xF1, 0x2A, 0xDF, 0x14, 0x69, 0x5C, 0xC5, 0x42, 0xE7, 0xAE, 0xD4, 0x2A, 0xC3, 0xDB, 0x94, 0xC8, 0x78, 0xBA, 0xAC, 0x33, 0xAD, 0x4E, 0x0D, 0x35, 0x01, + 0x91, 0xF2, 0x9A, 0xF4, 0xA9, 0xF7, 0x0E, 0xA9, 0xD6, 0x40, 0xED, 0x4D, 0x85, 0x0D, 0x58, 0xE4, 0x59, 0x54, 0x0C, 0xC4, 0xC8, 0x01, 0xFD, 0xB4, 0xAD, 0xD8, 0x65, 0xB3, 0xDF, 0xF0, 0xCF, 0xD8, 0x6C, 0xBC, 0x17, 0x52, 0xF1, 0x9B, 0xCB, 0x40, + 0xB9, 0x5F, 0x03, 0xB1, 0x0D, 0xEF, 0xD2, 0x0E, 0xB3, 0xFC, 0x8C, 0x3E, 0x6D, 0x23, 0x71, 0x33, 0xC3, 0xAB, 0xA9, 0xE1, 0xB5, 0xB9, 0xE1, 0x35, 0xC9, 0xA1, 0x76, 0x6E, 0xCF, 0x5A, 0x75, 0x44, 0xF1, 0xB4, 0x5E, 0x15, 0x6A, 0xD1, 0xE5, 0x6E, + 0x5C, 0x1A, 0xEB, 0x84, 0xA0, 0xB5, 0x51, 0x59, 0x69, 0x84, 0x42, 0x2B, 0x0B, 0x69, 0x4B, 0x28, 0xD6, 0x3D, 0x44, 0xD9, 0x2E, 0x42, 0x3C, 0x39, 0x5E, 0xAB, 0x3C, 0xEF, 0xD4, 0xB1, 0x21, 0x7C, 0xCE, 0x72, 0xB8, 0x9B, 0xDE, 0x3E, 0x7E, 0x69, + 0x0C, 0x90, 0xC5, 0x4F, 0xFB, 0x03, 0x52, 0xD2, 0x65, 0x73, 0x85, 0x53, 0x53, 0x00, 0x30, 0xAE, 0xCD, 0x21, 0x29, 0x0E, 0xED, 0x24, 0x44, 0x37, 0xF6, 0x5D, 0xB9, 0x31, 0xE9, 0x97, 0x5B, 0xB1, 0xC8, 0x31, 0x8B, 0xAD, 0xDB, 0xD0, 0x1A, 0x92, + 0xDE, 0xD7, 0x28, 0xDD, 0xC5, 0x93, 0x00, 0x6F, 0x3B, 0x83, 0xAB, 0xEB, 0x5E, 0xBF, 0x17, 0xF4, 0x0D, 0xFC, 0xB3, 0xE1, 0x3D, 0xE3, 0x26, 0xF5, 0x16, 0xED, 0x1D, 0x18, 0x7F, 0xAB, 0x9A, 0xF3, 0x01, 0xEA, 0x06, 0x10, 0xD5, 0x28, 0x45, 0xFD, + 0x21, 0xD4, 0xCB, 0x91, 0x62, 0xAE, 0x91, 0xC5, 0x95, 0x03, 0xE8, 0x9C, 0x2B, 0xCE, 0xC7, 0xA9, 0xE4, 0x61, 0x13, 0x95, 0x2F, 0x84, 0x51, 0x14, 0x2B, 0x88, 0xDE, 0x60, 0x38, 0xEC, 0xC9, 0x7F, 0xDF, 0x38, 0xC3, 0x4B, 0x9D, 0xA2, 0x27, 0x87, + 0xBD, 0x4E, 0xD6, 0x63, 0x83, 0x32, 0x29, 0x29, 0xE9, 0x6C, 0x11, 0x5F, 0xE7, 0xCA, 0xA2, 0x5E, 0xF1, 0xFF, 0x43, 0xF4, 0x9F, 0x57, 0x98, 0x65, 0x2B, 0xBF, 0x87, 0xD1, 0x2F, 0xA6, 0xCE, 0xF4, 0xF1, 0x50, 0x79, 0x8A, 0xF6, 0x26, 0x8E, 0x6B, + 0x85, 0x00, 0x3A, 0x85, 0xA9, 0x3D, 0xE0, 0x2A, 0xCA, 0x78, 0x88, 0x75, 0xFD, 0xA5, 0x3E, 0x88, 0x54, 0x1C, 0x06, 0x2A, 0xB6, 0x1F, 0x62, 0xA0, 0x73, 0x12, 0xE4, 0x41, 0xE0, 0x4A, 0xA1, 0x73, 0x7E, 0xD1, 0x23, 0xB0, 0x5C, 0xA3, 0x4E, 0xEE, + 0x3E, 0x88, 0x49, 0x6B, 0x39, 0x07, 0x56, 0x33, 0xCA, 0xE1, 0x02, 0xD9, 0x74, 0xBB, 0xB4, 0x91, 0xEA, 0x6D, 0x99, 0x05, 0x1D, 0x68, 0xCB, 0xE8, 0x35, 0xB6, 0x82, 0x55, 0xC4, 0x7A, 0x7C, 0xEB, 0x10, 0x74, 0xD4, 0xEA, 0x10, 0x9A, 0x6B, 0x3C, + 0xAE, 0x59, 0xC4, 0xC6, 0xB6, 0x23, 0xB4, 0x70, 0x9D, 0xF2, 0xF1, 0xEC, 0x01, 0x5B, 0x31, 0xA0, 0x44, 0xBB, 0x47, 0xA3, 0x40, 0x89, 0x81, 0x29, 0xC4, 0x93, 0x50, 0x8C, 0x22, 0xC1, 0x53, 0x46, 0x44, 0xB9, 0x13, 0x44, 0x9C, 0xF9, 0x4C, 0x7C, + 0x2B, 0xD6, 0xE6, 0x9A, 0x38, 0x5B, 0xB1, 0xC5, 0x6C, 0x76, 0x69, 0x95, 0x14, 0xD1, 0xB6, 0xF2, 0xA9, 0xB8, 0x4B, 0x71, 0x00, 0x6C, 0xE2, 0x6A, 0x9D, 0xA3, 0x71, 0xE5, 0x65, 0xD5, 0x40, 0x47, 0xF5, 0x76, 0x87, 0x12, 0x02, 0xB6, 0x6D, 0xD6, + 0x9C, 0x7C, 0xB0, 0xBB, 0xA1, 0xAC, 0xA6, 0x2B, 0x16, 0x8B, 0x75, 0x62, 0x4F, 0x9C, 0x14, 0x82, 0xE8, 0x80, 0x65, 0x92, 0x45, 0xDB, 0x3D, 0x90, 0xB4, 0x23, 0x04, 0x6B, 0x6A, 0x31, 0x9F, 0x48, 0x09, 0x05, 0x04, 0x61, 0x23, 0x0F, 0xA0, 0x47, + 0x75, 0xA6, 0x72, 0x76, 0x00, 0xE1, 0x22, 0x6A, 0x11, 0x55, 0x6B, 0x78, 0x9A, 0x3C, 0x8C, 0x3A, 0xC1, 0xD5, 0x22, 0xE8, 0x4F, 0x87, 0xB3, 0x60, 0xD0, 0xF9, 0x3A, 0x0B, 0x46, 0x1D, 0x7C, 0x09, 0x86, 0x8B, 0xE0, 0x6A, 0x3A, 0x7A, 0x18, 0x76, + 0x06, 0xFD, 0x45, 0x70, 0x3D, 0x0D, 0x46, 0x8B, 0x01, 0x8A, 0xFC, 0x05, 0xDF, 0x45, 0x19, 0x06, 0xF3, 0xA9, 0xC1, 0x13, 0x13, 0xC3, 0xBA, 0x39, 0x62, 0xDD, 0x4B, 0x33, 0x4B, 0xAC, 0x12, 0x70, 0xDD, 0x54, 0x9B, 0x8B, 0x6A, 0x51, 0x28, 0x73, + 0xC3, 0x39, 0x63, 0xE8, 0xE8, 0x4B, 0x14, 0x90, 0xA4, 0x75, 0x47, 0x1E, 0x1E, 0x90, 0x98, 0x09, 0x62, 0x0A, 0xDC, 0x3C, 0x9D, 0xE1, 0xA2, 0xF3, 0x12, 0x92, 0x25, 0x33, 0x5B, 0xF1, 0x79, 0xBE, 0x47, 0x0F, 0xBD, 0xB9, 0x88, 0xAF, 0x78, 0xCA, + 0x50, 0xBD, 0x83, 0xAD, 0xA4, 0x67, 0x97, 0xD2, 0x58, 0x28, 0x73, 0x48, 0x32, 0x1A, 0xF2, 0x2E, 0x3D, 0x4D, 0xCF, 0x22, 0xC1, 0x8D, 0x62, 0x8B, 0x6D, 0xF8, 0xC9, 0x26, 0x67, 0xB5, 0x46, 0x1F, 0xC1, 0x9B, 0x1D, 0x7F, 0x4A, 0x1A, 0x25, 0x19, + 0xEA, 0xE4, 0x00, 0x98, 0x07, 0x59, 0x3A, 0x88, 0x2A, 0xFA, 0x0C, 0x49, 0x41, 0x61, 0xC6, 0x07, 0xF2, 0x65, 0x5C, 0x34, 0x43, 0x70, 0xA0, 0x3E, 0x76, 0x53, 0xA7, 0x13, 0xF9, 0x96, 0xD3, 0x9B, 0x22, 0xFC, 0xD3, 0xFB, 0xD1, 0xBB, 0x81, 0xE4, + 0x9F, 0xF4, 0x4A, 0x4D, 0x20, 0x29, 0x29, 0x43, 0xF3, 0x7C, 0x1A, 0xAD, 0xC7, 0xF9, 0x18, 0x03, 0x63, 0x04, 0xF0, 0x86, 0x4B, 0x0E, 0xCB, 0x18, 0xD4, 0x88, 0x62, 0x8C, 0xF3, 0x2B, 0xD8, 0xE6, 0x79, 0x05, 0x9E, 0xEF, 0x41, 0x1A, 0xBF, 0xC6, + 0xE9, 0xD8, 0x2F, 0x9C, 0xCB, 0x67, 0x96, 0x91, 0x06, 0xCF, 0x9B, 0x12, 0x3E, 0xD5, 0x61, 0x9A, 0x8B, 0x93, 0x7A, 0xE7, 0xFA, 0x4F, 0xAA, 0xB5, 0xB5, 0x46, 0x11, 0x43, 0xE1, 0xBF, 0x12, 0xF6, 0x45, 0x85, 0x18, 0xF7, 0x24, 0x93, 0x9B, 0xA0, + 0x20, 0x83, 0xB0, 0xE0, 0x2C, 0x82, 0xC5, 0x7D, 0xF0, 0x45, 0xAA, 0xD4, 0x0B, 0x6A, 0x2B, 0x76, 0x45, 0xFC, 0xF7, 0x7E, 0xDF, 0x49, 0x66, 0xBB, 0xDB, 0xAD, 0x54, 0x2A, 0xDA, 0x5C, 0xCE, 0x35, 0x39, 0xDF, 0x39, 0x99, 0x69, 0x3A, 0x8B, 0xAE, + 0xC0, 0x03, 0x6B, 0x57, 0x83, 0xC8, 0x9C, 0x2D, 0x80, 0xB9, 0xFB, 0xF3, 0xA2, 0x19, 0xF8, 0xB7, 0xE7, 0xC5, 0xAB, 0x26, 0xCB, 0x14, 0xFB, 0xDB, 0x13, 0x01, 0x59, 0x72, 0xFA, 0xED, 0xF2, 0xEE, 0xCB, 0xB9, 0xF9, 0x01, 0xF1, 0x3F, 0x0F, 0x03, + 0xDE, 0x25, 0xDD, 0x14, 0x55, 0x05, 0xAE, 0x05, 0xB5, 0x0D, 0x0F, 0x85, 0x48, 0x63, 0x2A, 0x4F, 0xAD, 0x77, 0xCE, 0xDD, 0x74, 0x66, 0xE8, 0x17, 0x60, 0xA6, 0x7F, 0xA9, 0xB5, 0x78, 0x7A, 0x8B, 0x88, 0xBF, 0x5D, 0x24, 0xDC, 0x2E, 0x32, 0xEC, + 0x8B, 0xCC, 0x7D, 0xFF, 0xB0, 0x99, 0xBB, 0x69, 0x9F, 0x61, 0x7C, 0xC3, 0x91, 0x72, 0xFA, 0x51, 0xF3, 0xA9, 0x7F, 0xE7, 0x0C, 0xA5, 0x3E, 0x3A, 0xB4, 0xDD, 0x3F, 0xDC, 0xB8, 0x91, 0xF8, 0xB0, 0x5D, 0xAB, 0xE1, 0xD0, 0xA1, 0xE5, 0x6E, 0xB3, + 0x13, 0xB7, 0x3C, 0x5B, 0x6E, 0x5A, 0xEC, 0xB5, 0x2F, 0x41, 0x70, 0x9E, 0xEF, 0x2B, 0xF3, 0x56, 0xE1, 0x58, 0xEB, 0xF8, 0xFD, 0xEC, 0xE2, 0x4B, 0x33, 0x73, 0xF4, 0x7E, 0x61, 0x2E, 0xCE, 0xDF, 0xF3, 0x32, 0xEF, 0xC9, 0xFB, 0xAF, 0x17, 0x97, + 0x67, 0x6B, 0xCA, 0xAC, 0x9B, 0xED, 0xFB, 0xDB, 0x1F, 0x3F, 0xCF, 0x1E, 0xF4, 0x04, 0x79, 0xF9, 0xE2, 0x38, 0x47, 0x9B, 0xCA, 0x81, 0x5D, 0x9A, 0xFD, 0xBB, 0xC1, 0x0F, 0x78, 0xD9, 0xDC, 0x59, 0x1C, 0xC9, 0x3E, 0xCE, 0xB2, 0x83, 0xBE, 0xE3, + 0xC0, 0x71, 0xFB, 0x4C, 0xB6, 0xBB, 0xE1, 0x44, 0xCB, 0xFE, 0x6A, 0x83, 0xFA, 0x67, 0x06, 0xF3, 0xE9, 0xC7, 0xD9, 0x87, 0x27, 0x9F, 0xB6, 0xDB, 0xEF, 0x97, 0x8F, 0x1F, 0x3D, 0xFA, 0xF8, 0x79, 0xFB, 0xE9, 0xE7, 0x3B, 0x87, 0x0B, 0x83, 0x47, + 0xEF, 0xA1, 0x8C, 0x6A, 0xDB, 0x9E, 0x6F, 0x1F, 0x9D, 0xF2, 0xCE, 0xF1, 0x21, 0x2F, 0x88, 0x3E, 0x5C, 0xF2, 0x6B, 0xDD, 0x4B, 0xBD, 0x72, 0x34, 0xF8, 0x43, 0x25, 0x7E, 0xFF, 0xBC, 0xF8, 0x7E, 0x76, 0x8E, 0x09, 0xEA, 0xF2, 0x23, 0x3E, 0xD8, + 0x7F, 0xFB, 0xEE, 0xEB, 0x29, 0xAE, 0xFB, 0xC6, 0x1F, 0x67, 0xA7, 0x5B, 0x9C, 0x4A, 0xBF, 0x60, 0xCF, 0xDC, 0xC5, 0xF8, 0xBC, 0xBD, 0xB6, 0x07, 0x0E, 0x71, 0xF9, 0xFC, 0xF9, 0x3B, 0xB7, 0x00, 0x54, 0x71, 0x8E, 0xA2, 0x1C, 0x27, 0xDC, 0x87, + 0x3E, 0xB9, 0xC7, 0x82, 0xD6, 0x82, 0x05, 0x42, 0xB8, 0x05, 0x3E, 0x5F, 0xEC, 0xEE, 0xE9, 0x78, 0x97, 0x7F, 0x53, 0xA9, 0xEF, 0x9E, 0xEF, 0x8B, 0x75, 0x34, 0x61, 0x0C, 0xAE, 0x9A, 0xC0, 0x7F, 0xDA, 0xC7, 0x13, 0xEF, 0xC4, 0x64, 0x83, 0x9F, + 0x4D, 0x1D, 0x39, 0x26, 0xB5, 0x2A, 0x4F, 0xE4, 0x84, 0x42, 0x02, 0x29, 0x34, 0xAB, 0xBC, 0x11, 0x59, 0xC5, 0x8D, 0x2C, 0xC7, 0x68, 0x0A, 0xE8, 0x03, 0x84, 0x0B, 0xC4, 0xCA, 0xA8, 0x23, 0x08, 0x65, 0x27, 0x68, 0xD3, 0x26, 0x42, 0x36, 0xAC, + 0x45, 0xE0, 0x4D, 0x68, 0x32, 0xD0, 0xC6, 0x6C, 0xEA, 0x44, 0x30, 0xA2, 0xC7, 0xA8, 0x2E, 0x75, 0xA6, 0x9C, 0x4A, 0x01, 0xF5, 0x4A, 0xA5, 0x36, 0xA4, 0xDF, 0x4A, 0xBF, 0x22, 0x74, 0x2C, 0xA2, 0x9E, 0x45, 0xD0, 0x14, 0x23, 0xF4, 0x3D, 0x8F, + 0x85, 0xDE, 0xD1, 0xD1, 0x3D, 0x54, 0x02, 0x34, 0xD6, 0xDE, 0x63, 0x26, 0x65, 0x44, 0x2F, 0xD5, 0x81, 0xE7, 0x45, 0xDB, 0x65, 0xFB, 0xBF, 0x1A, 0xB0, 0xE1, 0xCA, 0x71, 0xE7, 0xB3, 0x2F, 0x1B, 0x89, 0xAB, 0x01, 0x5A, 0x2B, 0xBC, 0xEE, 0xA4, + 0x95, 0x64, 0xB7, 0x0C, 0x9B, 0x01, 0x93, 0xB1, 0x29, 0x23, 0xA4, 0x1E, 0x5B, 0x2F, 0x95, 0x7D, 0x7A, 0xB3, 0xD8, 0xBD, 0x06, 0xDD, 0xB3, 0x8A, 0x11, 0xD2, 0x5A, 0x31, 0x9A, 0x61, 0x59, 0xF0, 0xFE, 0x74, 0x71, 0x0B, 0x2E, 0xE2, 0xAD, 0xE4, + 0x67, 0xDE, 0x7A, 0x03, 0xB6, 0x5D, 0x1A, 0x19, 0xAC, 0xC4, 0x91, 0x6D, 0xA0, 0x27, 0xB4, 0x82, 0xA1, 0xA1, 0x58, 0xD8, 0x17, 0x5B, 0x42, 0x6C, 0x7F, 0x4E, 0x33, 0x6B, 0x29, 0xB6, 0xEC, 0x88, 0xD8, 0x13, 0x9A, 0x25, 0x5E, 0xD9, 0xF6, 0x48, + 0x90, 0xF0, 0x7E, 0x95, 0xF6, 0x28, 0x83, 0xF5, 0x4B, 0x06, 0x78, 0xB0, 0xC5, 0x15, 0x42, 0x5B, 0x6D, 0x31, 0xC9, 0x16, 0x00, 0x99, 0x9E, 0x45, 0x1B, 0xBB, 0x18, 0x1D, 0xEC, 0x4F, 0xB3, 0x4D, 0x9B, 0xB2, 0x92, 0xC2, 0x0D, 0x84, 0x67, 0xC1, + 0x86, 0xBE, 0x90, 0xDA, 0xE8, 0x11, 0xCA, 0x57, 0x44, 0xCA, 0x5C, 0x8F, 0xD7, 0xEB, 0xF3, 0xAF, 0x77, 0x8C, 0x18, 0x20, 0x1F, 0x25, 0x3A, 0x30, 0x44, 0xB3, 0x0B, 0x23, 0xF6, 0xF0, 0xDB, 0x61, 0x2D, 0x40, 0x93, 0x9B, 0x41, 0xA7, 0xFB, 0x1F, + 0x7D, 0x87, 0x9F, 0x4C, 0x62, 0x88, 0x66, 0x25, 0x69, 0x94, 0xAC, 0x44, 0x42, 0xDF, 0x05, 0x38, 0xD0, 0x68, 0x48, 0xD1, 0x74, 0x6B, 0x12, 0x70, 0x98, 0x4C, 0xDB, 0x14, 0x1C, 0x23, 0x44, 0x61, 0x00, 0x85, 0x6D, 0x80, 0x06, 0x53, 0xBD, 0xBA, + 0x94, 0x30, 0xF1, 0xA2, 0x4C, 0xF6, 0x5C, 0x8D, 0x0F, 0x50, 0xF0, 0x6D, 0x85, 0xB0, 0xEB, 0x72, 0x32, 0xEA, 0x42, 0xD6, 0x82, 0x98, 0x40, 0x4D, 0x7A, 0xB2, 0x7B, 0xA3, 0x68, 0xEB, 0x20, 0x8E, 0x6C, 0x93, 0xAE, 0x46, 0xB4, 0xCD, 0x86, 0xE2, + 0x79, 0x6C, 0x0B, 0x32, 0xA5, 0x73, 0x0B, 0x65, 0xD1, 0xB0, 0x8A, 0x94, 0x15, 0x54, 0xEE, 0x28, 0xD0, 0xFC, 0x8D, 0x18, 0x61, 0xDE, 0xCB, 0x38, 0xAC, 0x65, 0x2A, 0x6E, 0x30, 0x0C, 0xE2, 0x58, 0x39, 0x18, 0xDC, 0x10, 0xA1, 0xED, 0x12, 0x5A, + 0x4C, 0x3D, 0xDA, 0x13, 0x10, 0xD3, 0xCC, 0x89, 0x18, 0x52, 0x7A, 0x52, 0xE5, 0x35, 0x8A, 0x80, 0xD2, 0xC3, 0x94, 0x48, 0xF7, 0xAE, 0x60, 0x6D, 0xBA, 0xDC, 0x94, 0x59, 0xCB, 0x19, 0x43, 0x90, 0x59, 0xCF, 0x50, 0xAA, 0x8D, 0xC1, 0x58, 0x0E, + 0x2A, 0x3C, 0x21, 0x5C, 0x5E, 0xF5, 0x15, 0x81, 0xAA, 0x58, 0xD1, 0x93, 0xEE, 0x0D, 0xD0, 0x9D, 0x24, 0x57, 0xA4, 0x51, 0x67, 0x4F, 0xBA, 0xEA, 0x31, 0xBB, 0x1A, 0x0D, 0x6B, 0x10, 0x01, 0x0E, 0x8A, 0x02, 0x0C, 0x61, 0x6D, 0x13, 0x8F, 0x83, + 0xE8, 0xA2, 0x49, 0x8E, 0xFA, 0x2E, 0x81, 0x0A, 0x4B, 0x3C, 0x71, 0xCA, 0x4C, 0x85, 0x4A, 0x99, 0x3C, 0xDC, 0x53, 0x81, 0x88, 0xE5, 0xDA, 0x6D, 0x24, 0xB7, 0xA4, 0x55, 0xCA, 0xAC, 0x33, 0x92, 0x0D, 0x67, 0x88, 0xF7, 0x48, 0x7F, 0x0F, 0xAF, + 0x91, 0x73, 0xC9, 0x24, 0x48, 0x54, 0x8A, 0x28, 0x25, 0x28, 0x45, 0x40, 0x61, 0xB8, 0x5B, 0xA0, 0xFB, 0xEF, 0xF8, 0x87, 0xB1, 0xB6, 0x5E, 0x26, 0x86, 0xCF, 0xC2, 0x8D, 0x47, 0x5D, 0x73, 0x14, 0x35, 0xA6, 0x70, 0x1E, 0x31, 0x86, 0x5F, 0x56, + 0x3C, 0x83, 0xAF, 0x53, 0xE0, 0xD1, 0x25, 0x00, 0x91, 0x6A, 0x4D, 0x6A, 0x45, 0x0B, 0x4D, 0x23, 0x60, 0x83, 0x46, 0xC0, 0x0E, 0x3D, 0x02, 0x36, 0x31, 0x02, 0xB6, 0x32, 0x02, 0x36, 0xF7, 0x08, 0x80, 0x4A, 0xCB, 0x89, 0x95, 0x12, 0x0A, 0x27, + 0x65, 0xE6, 0x42, 0xB5, 0x32, 0x12, 0xA0, 0xCE, 0x91, 0xB0, 0xC3, 0x1C, 0x09, 0x5A, 0xA7, 0x27, 0xBA, 0xAB, 0x48, 0x0E, 0xD8, 0x35, 0x84, 0xC3, 0xD6, 0x0E, 0x87, 0x15, 0x69, 0xC0, 0x5B, 0x09, 0x0D, 0x78, 0x2B, 0x7E, 0x06, 0x1E, 0x43, 0xDD, + 0x8F, 0xEE, 0x74, 0x19, 0x38, 0x65, 0x06, 0xA0, 0x9F, 0x33, 0x00, 0x5A, 0x3D, 0x03, 0x68, 0xA8, 0x67, 0x80, 0xAD, 0x73, 0x06, 0xC0, 0x1B, 0x1D, 0x5F, 0x05, 0x95, 0x2F, 0x9F, 0x07, 0x11, 0x8D, 0xB6, 0xE2, 0x51, 0x14, 0x01, 0x87, 0x9E, 0x9D, + 0x75, 0x77, 0xCC, 0x88, 0x81, 0x9F, 0xB4, 0x37, 0x25, 0x3B, 0xEC, 0xCF, 0xE3, 0x31, 0xBF, 0xAE, 0x25, 0xDB, 0xB0, 0x8A, 0x23, 0xEB, 0x0F, 0x1C, 0x70, 0x5D, 0x45, 0x1B, 0x37, 0x52, 0xF7, 0x8E, 0xD7, 0x08, 0x00, 0x56, 0x07, 0x14, 0x2F, 0x50, + 0xDE, 0xE4, 0x89, 0xEA, 0x57, 0xAB, 0x6D, 0xAF, 0xED, 0xD7, 0x53, 0x60, 0x60, 0x34, 0xC4, 0x6A, 0x80, 0x09, 0x5B, 0x61, 0x24, 0x12, 0xA2, 0x1F, 0x46, 0x9E, 0x0A, 0x96, 0x25, 0xA8, 0x03, 0x88, 0xC5, 0xC6, 0x63, 0x43, 0xE8, 0x0A, 0xBC, 0xB8, + 0x96, 0x2C, 0x16, 0x22, 0x5A, 0x36, 0x95, 0xB4, 0x3A, 0x31, 0x7C, 0x94, 0xAB, 0x63, 0x7B, 0x48, 0x68, 0x09, 0x0E, 0xE4, 0x66, 0x68, 0x30, 0x71, 0x7A, 0xCE, 0x11, 0x78, 0x3D, 0x25, 0x74, 0x04, 0x03, 0xD2, 0xB8, 0xD9, 0x65, 0xBA, 0x10, 0xA6, + 0x01, 0x3D, 0xC4, 0x9E, 0x32, 0x1B, 0xE6, 0xE2, 0x94, 0x6D, 0x44, 0x8B, 0x39, 0x26, 0x9B, 0x61, 0x8D, 0xC5, 0xB6, 0x45, 0x05, 0xAE, 0x33, 0x9A, 0xC0, 0xB9, 0x18, 0xAA, 0x63, 0x09, 0xCC, 0x07, 0x6E, 0x43, 0x53, 0x50, 0x04, 0xF6, 0x14, 0xF5, + 0x01, 0x1B, 0xCB, 0xAE, 0xB4, 0x75, 0x14, 0x6A, 0x24, 0x16, 0x79, 0x5B, 0x23, 0xF0, 0x6A, 0x1B, 0x1D, 0x26, 0xCC, 0xA9, 0xCC, 0xCD, 0x9A, 0xAC, 0x7B, 0x81, 0xE2, 0xEC, 0xF1, 0x2A, 0xBA, 0xCF, 0x7F, 0x9F, 0x5D, 0x8B, 0x6C, 0xBD, 0x06, 0xAF, + 0xBF, 0x06, 0x6F, 0xDC, 0xCF, 0x8E, 0x23, 0x76, 0x55, 0x70, 0x5C, 0x44, 0x12, 0xB2, 0xE3, 0x33, 0xC0, 0x67, 0x0B, 0x97, 0x62, 0x7C, 0x60, 0x12, 0x37, 0x02, 0x8F, 0x7A, 0x9E, 0xBC, 0x1D, 0x0A, 0xAF, 0xFD, 0xD8, 0xA7, 0xDE, 0xE5, 0x30, 0x4B, + 0x50, 0x85, 0xF3, 0x66, 0xA2, 0xD9, 0x6C, 0x1E, 0xD6, 0x40, 0xA8, 0x90, 0x0D, 0xF0, 0x83, 0x65, 0x49, 0x26, 0x84, 0xC1, 0x13, 0x3F, 0x95, 0xD1, 0x9E, 0x60, 0xE4, 0xD4, 0x49, 0xD5, 0x49, 0xEE, 0x82, 0xC0, 0xBD, 0xFC, 0x69, 0xEF, 0x5A, 0x98, + 0xDB, 0xA8, 0x81, 0xF0, 0x5F, 0x71, 0x44, 0x48, 0x4E, 0x58, 0xBE, 0xC4, 0x29, 0x74, 0xC0, 0xE6, 0x92, 0xA1, 0x90, 0xF2, 0x6E, 0x33, 0xBC, 0x67, 0x8C, 0x71, 0xAE, 0xB1, 0xD2, 0x1C, 0xE3, 0xDA, 0xC1, 0x77, 0x29, 0xA4, 0xEE, 0xFD, 0x77, 0xBE, + 0x5D, 0x49, 0xA7, 0x93, 0xCF, 0x8F, 0x86, 0xC7, 0x0C, 0xCC, 0x64, 0x18, 0x88, 0x4F, 0x8F, 0x95, 0xB4, 0x5A, 0xAD, 0xF6, 0x29, 0xF8, 0x4C, 0x99, 0x42, 0x1C, 0x6E, 0x50, 0x12, 0x37, 0x7D, 0x68, 0x3A, 0x3F, 0x44, 0x5F, 0x82, 0xC6, 0xDF, 0x3C, + 0x02, 0xB7, 0xB1, 0x63, 0x7A, 0xFC, 0x3D, 0x99, 0x2D, 0x61, 0x10, 0x98, 0xB8, 0x3A, 0x7A, 0xF7, 0x25, 0x18, 0xDA, 0xE1, 0x0F, 0x87, 0xAF, 0x84, 0x15, 0x2E, 0x29, 0x7A, 0x42, 0x1C, 0x04, 0x32, 0x0A, 0xA0, 0x62, 0xC5, 0xF8, 0xAF, 0x59, 0x70, + 0x8B, 0x17, 0x48, 0x38, 0xBC, 0xE8, 0xD2, 0x27, 0xB8, 0x07, 0xB8, 0x44, 0x8B, 0x27, 0xDE, 0xA5, 0x3F, 0xF9, 0x07, 0x40, 0x5C, 0xE7, 0x81, 0xB9, 0xC4, 0x3A, 0x28, 0xB8, 0xE8, 0x50, 0xC3, 0x0E, 0x35, 0xEC, 0x3C, 0xA4, 0x82, 0x8E, 0x29, 0x7F, + 0x05, 0xE0, 0x40, 0xED, 0x45, 0xE7, 0x88, 0x6E, 0xC7, 0xC3, 0xCE, 0x7B, 0x9D, 0x23, 0x2C, 0x04, 0x7F, 0xDE, 0xCB, 0xCD, 0x8F, 0x16, 0x7E, 0x82, 0x99, 0xD3, 0x07, 0xFE, 0x98, 0x6A, 0x53, 0xF6, 0xEA, 0xC5, 0x61, 0xE7, 0x7D, 0x82, 0xFB, 0x90, + 0x3A, 0x82, 0x6B, 0x81, 0x85, 0xE1, 0xCF, 0x83, 0xBC, 0xCB, 0x37, 0xB3, 0xF9, 0xA7, 0x63, 0x3E, 0x3A, 0xF8, 0xC1, 0xD5, 0xF4, 0xCF, 0x2B, 0x61, 0xF1, 0xF1, 0x35, 0xBC, 0xDF, 0x75, 0x74, 0x3C, 0x50, 0x0F, 0x3F, 0x3B, 0xEA, 0xE2, 0xE2, 0xC6, + 0xBD, 0x8D, 0x8F, 0x6E, 0x97, 0xBE, 0xBA, 0x0F, 0xF0, 0x09, 0x89, 0x92, 0x76, 0x99, 0xBF, 0xA9, 0xBA, 0x0B, 0xAA, 0x04, 0x90, 0xFE, 0xCB, 0x74, 0x6E, 0x35, 0x63, 0xB2, 0x03, 0x29, 0xE8, 0x1F, 0x05, 0x04, 0x17, 0xC5, 0xDA, 0xCD, 0xC7, 0xC8, + 0xE9, 0x20, 0x53, 0x55, 0x72, 0x79, 0x33, 0x65, 0xAB, 0x4F, 0x24, 0x17, 0xA5, 0x82, 0xF8, 0x9F, 0x4C, 0xF5, 0xEF, 0xAD, 0xEF, 0xBF, 0xF9, 0x2A, 0x3A, 0x27, 0x7D, 0x01, 0xEA, 0xC2, 0x2E, 0x22, 0x47, 0xA6, 0x08, 0xAB, 0x8B, 0x21, 0x11, 0xB1, + 0x7E, 0x1D, 0x5F, 0xC1, 0xD6, 0x43, 0xA6, 0x91, 0xF2, 0x5C, 0xAA, 0xD9, 0x35, 0x15, 0xE5, 0x09, 0x3A, 0xEF, 0x7A, 0x58, 0x5A, 0x2E, 0xE6, 0x88, 0x46, 0x98, 0x4F, 0x5B, 0x63, 0xA4, 0x2B, 0xC2, 0x8F, 0x5F, 0xC4, 0xD0, 0x4A, 0x4E, 0x27, 0x9A, + 0x7E, 0x3E, 0xBA, 0xFD, 0x7C, 0x8C, 0x16, 0x65, 0xDF, 0x35, 0x6F, 0x61, 0xC8, 0xD3, 0x49, 0xA4, 0xD5, 0x48, 0x2E, 0x68, 0xCE, 0x45, 0x52, 0xF5, 0xBA, 0x60, 0x05, 0xC6, 0x76, 0x44, 0xA7, 0x7E, 0x76, 0x19, 0x89, 0xD9, 0xB3, 0x5F, 0x71, 0x93, + 0x89, 0x24, 0x21, 0x2B, 0xCF, 0xEC, 0xB2, 0x35, 0x92, 0x30, 0xAE, 0x44, 0xD4, 0x93, 0xB2, 0x8E, 0xF0, 0x59, 0xC4, 0xB9, 0x2E, 0x3E, 0x2A, 0x8A, 0x79, 0x86, 0x4C, 0x3E, 0x1D, 0xE5, 0x6A, 0x34, 0xC8, 0x87, 0xB2, 0x6F, 0xA7, 0x54, 0x94, 0xD5, + 0xC0, 0xE4, 0x75, 0xFC, 0x0C, 0xBA, 0xA4, 0x73, 0xF1, 0x46, 0x66, 0x02, 0x3A, 0xD9, 0x8D, 0x44, 0xE5, 0x5E, 0x95, 0x7D, 0xFF, 0x3B, 0x49, 0x12, 0x1D, 0xD3, 0xB0, 0x27, 0x91, 0xF9, 0x9B, 0x08, 0x72, 0xCC, 0x08, 0x85, 0x0E, 0x95, 0x2B, 0x55, + 0xC8, 0x98, 0x95, 0x3D, 0x32, 0x34, 0xC5, 0x73, 0xFD, 0x02, 0xF1, 0x67, 0x91, 0x60, 0x95, 0x55, 0xA2, 0x1D, 0xFF, 0x6A, 0xB6, 0x83, 0xB7, 0xC9, 0x35, 0x92, 0x3D, 0x07, 0xDC, 0x0F, 0xBC, 0x7E, 0x00, 0x74, 0xDC, 0x0E, 0x3D, 0x9C, 0x85, 0xF4, + 0x18, 0xC0, 0xB6, 0x90, 0x3F, 0x82, 0x1A, 0x61, 0xF1, 0xE8, 0x6F, 0x6C, 0x20, 0x9B, 0x96, 0x70, 0xA9, 0xE1, 0xB1, 0x89, 0x40, 0x2A, 0x6D, 0x41, 0x8E, 0x0F, 0x34, 0x85, 0x3D, 0x0C, 0x7B, 0x9E, 0x1C, 0xEB, 0xF8, 0xD7, 0x9C, 0x28, 0xC9, 0x97, + 0x2C, 0x60, 0x09, 0xC4, 0x00, 0x97, 0xD9, 0x13, 0xEB, 0xEF, 0xC0, 0x1E, 0x2A, 0x3F, 0xCA, 0x9A, 0x75, 0x94, 0xB5, 0x09, 0x72, 0xF4, 0x12, 0x83, 0x20, 0xAA, 0x2A, 0xE6, 0xB7, 0x34, 0x49, 0x53, 0xD8, 0x11, 0x6D, 0x1D, 0x1B, 0x85, 0x37, 0x36, + 0x59, 0xD9, 0x4F, 0x10, 0x68, 0x11, 0x67, 0x63, 0x19, 0x5B, 0x07, 0x54, 0xB2, 0x73, 0x58, 0x5E, 0xA4, 0x34, 0xDD, 0x11, 0x2D, 0xCE, 0xB5, 0x5E, 0x6E, 0x02, 0x88, 0xE4, 0xEE, 0xC0, 0x74, 0x8C, 0xF3, 0xAC, 0xB8, 0xCA, 0xF2, 0xF8, 0x42, 0x4F, + 0x26, 0xF9, 0xA0, 0x3B, 0x8C, 0x4D, 0xAE, 0xDA, 0x77, 0x5F, 0x7F, 0x45, 0x13, 0xAF, 0xDC, 0x22, 0x42, 0xFA, 0x8A, 0x4D, 0x1D, 0x3C, 0x19, 0xC5, 0x9C, 0xBA, 0x1B, 0xD5, 0xD6, 0xB6, 0x02, 0x39, 0x8B, 0x09, 0x5C, 0x78, 0x23, 0x7F, 0x00, 0x7E, + 0xBB, 0xD1, 0xF3, 0x5B, 0x63, 0x0F, 0x05, 0x8D, 0x8B, 0xB7, 0xAA, 0xC0, 0x0C, 0x90, 0xE5, 0xA8, 0x36, 0x03, 0x21, 0x94, 0xA6, 0x80, 0xAD, 0xD3, 0x14, 0x8B, 0xC5, 0x51, 0x2A, 0x24, 0x90, 0xCF, 0x47, 0x22, 0x31, 0xA7, 0x4B, 0x14, 0x40, 0xB7, + 0xCA, 0x12, 0xC1, 0x10, 0x44, 0xBB, 0xE8, 0xE7, 0x31, 0xB9, 0x5F, 0x55, 0x4E, 0x98, 0x3F, 0x7D, 0x89, 0xC1, 0x68, 0x1B, 0x34, 0x00, 0x46, 0x82, 0xCD, 0x20, 0x42, 0x79, 0xDC, 0x4B, 0x34, 0xF3, 0x83, 0x9D, 0x7F, 0x58, 0x8C, 0x8F, 0xEB, 0xCE, + 0x49, 0x41, 0xA1, 0x9A, 0x33, 0x9B, 0xC3, 0x6F, 0x77, 0x87, 0x2D, 0x6A, 0x6E, 0xA7, 0x76, 0x17, 0x59, 0x49, 0xD6, 0x2A, 0xF4, 0x3B, 0xAF, 0x83, 0x6A, 0x33, 0x2C, 0x6A, 0xC9, 0x98, 0xB5, 0xED, 0x76, 0x17, 0x3A, 0xA6, 0xCF, 0x72, 0x55, 0x87, + 0x7D, 0x74, 0xF0, 0x06, 0x3C, 0x1B, 0x5C, 0x27, 0x8E, 0xF7, 0xDB, 0xE8, 0x53, 0x80, 0x08, 0x9E, 0x17, 0x57, 0x6D, 0xC4, 0x48, 0x3D, 0x7A, 0xC1, 0x9D, 0x45, 0xD8, 0x19, 0x6D, 0x34, 0x0C, 0x8A, 0x88, 0xC0, 0x3D, 0x21, 0x38, 0xC7, 0xF7, 0x1A, + 0xF1, 0x76, 0x8D, 0xD8, 0x6C, 0xDB, 0x7E, 0x8F, 0x11, 0x76, 0xAF, 0x10, 0xFF, 0x3B, 0x0A, 0xB1, 0xC7, 0xB3, 0x1A, 0xC5, 0xE4, 0x95, 0x99, 0x8E, 0x3F, 0xBE, 0xCA, 0x26, 0xE3, 0x28, 0x97, 0x25, 0x73, 0x4C, 0x1F, 0xC3, 0xB5, 0x9E, 0x37, 0x87, + 0x7C, 0xFD, 0x34, 0xBF, 0xFE, 0x16, 0xB6, 0x3D, 0x62, 0x39, 0x0B, 0xCF, 0xB3, 0x19, 0x50, 0xCE, 0xE5, 0x9B, 0x39, 0x37, 0xC6, 0xB4, 0xB1, 0x6B, 0x21, 0xAF, 0xD3, 0x31, 0x15, 0x29, 0x5B, 0x9D, 0x5D, 0x2F, 0x55, 0x66, 0xD7, 0x54, 0xE5, 0xFC, + 0x8A, 0x4B, 0x95, 0xAE, 0x18, 0x0C, 0x3E, 0xE5, 0x00, 0xCA, 0x6A, 0xBE, 0x3C, 0xC1, 0xC7, 0xF3, 0xD9, 0x0B, 0x12, 0x55, 0x58, 0x14, 0x60, 0x4E, 0x58, 0x24, 0xE9, 0xEF, 0x69, 0x56, 0x98, 0x6A, 0x14, 0x2F, 0x8C, 0xBB, 0xA9, 0x37, 0x02, 0x52, + 0x72, 0x5B, 0x57, 0xC4, 0x74, 0x05, 0x47, 0xD5, 0xFD, 0x9E, 0xD7, 0x2F, 0x8F, 0x82, 0xAC, 0x93, 0x8F, 0xD2, 0x5C, 0x3F, 0x7C, 0x97, 0xA0, 0x82, 0x2F, 0x5A, 0xAE, 0xA8, 0x07, 0xA3, 0x21, 0xB0, 0xC7, 0x11, 0x15, 0xD1, 0xC1, 0xE0, 0x97, 0x9F, + 0xC7, 0xA3, 0xE1, 0xC1, 0x73, 0x25, 0x30, 0x63, 0x84, 0xE9, 0x66, 0x45, 0x24, 0x46, 0xC4, 0x2F, 0x1D, 0xF7, 0x44, 0x18, 0xA9, 0x50, 0x0B, 0xC6, 0x7B, 0x4F, 0x4C, 0x00, 0x13, 0x8C, 0x65, 0x7E, 0xD1, 0x13, 0xE4, 0x15, 0xEA, 0x65, 0x2F, 0x60, + 0x23, 0x3E, 0xB8, 0x9E, 0x3E, 0xEF, 0x3F, 0xE3, 0x91, 0x54, 0x0B, 0xFC, 0x55, 0x99, 0x1C, 0xA6, 0x73, 0x13, 0x2D, 0xBB, 0xBB, 0xC8, 0x07, 0x87, 0xC3, 0xD2, 0x27, 0x52, 0x50, 0x41, 0x97, 0x0A, 0xCE, 0x4B, 0xD9, 0x07, 0xC6, 0x5C, 0x9C, 0xAA, + 0x90, 0x21, 0x57, 0x0F, 0xAA, 0x2C, 0x65, 0x44, 0x99, 0x0C, 0xCB, 0x43, 0x79, 0x47, 0x10, 0x4F, 0x16, 0x4A, 0x98, 0xA7, 0x1F, 0xC4, 0x96, 0xB6, 0xB0, 0xE1, 0x53, 0x63, 0x34, 0x1B, 0x6B, 0xA0, 0x5C, 0xB7, 0x08, 0x33, 0x01, 0x21, 0x9D, 0x91, + 0x2F, 0x07, 0x35, 0xF3, 0xFC, 0x2F, 0x88, 0x08, 0xE8, 0x3F, 0x32, 0x42, 0x68, 0x40, 0x6E, 0xB4, 0x65, 0x01, 0xB9, 0xF9, 0x2E, 0x91, 0x97, 0x59, 0x13, 0x2D, 0x37, 0xD2, 0x28, 0xC9, 0x7D, 0x7C, 0x61, 0x92, 0xDC, 0xA7, 0x25, 0x84, 0x43, 0x1D, + 0x5F, 0xA5, 0xF9, 0xD3, 0xDF, 0xA7, 0x67, 0xF3, 0x19, 0x3C, 0x9B, 0xC5, 0x2D, 0x2E, 0x7E, 0xB9, 0x40, 0xB9, 0xA8, 0x42, 0x77, 0x49, 0x86, 0x63, 0x69, 0x80, 0x8B, 0x9A, 0x38, 0x0F, 0x09, 0x23, 0xFA, 0x30, 0x1A, 0xFC, 0x72, 0x3C, 0x6C, 0xCB, + 0x63, 0x79, 0x90, 0x31, 0x79, 0xA8, 0xEA, 0x6E, 0x66, 0xD4, 0x6D, 0x69, 0x1F, 0xA2, 0xB5, 0x8F, 0xA5, 0xE1, 0xBA, 0xBA, 0xD1, 0x25, 0xA6, 0xE4, 0xF7, 0x84, 0x26, 0xE4, 0x10, 0x80, 0x56, 0x6B, 0xF1, 0x54, 0x24, 0xC7, 0xAB, 0x28, 0x5A, 0x7A, + 0xB0, 0xA5, 0x11, 0x98, 0x9F, 0x1A, 0xA9, 0x1C, 0x5C, 0x39, 0x72, 0x02, 0xFA, 0x1B, 0xC9, 0x5D, 0x76, 0x9C, 0x88, 0x84, 0x87, 0x90, 0x83, 0x94, 0x81, 0x50, 0x86, 0x3E, 0x76, 0x08, 0x2B, 0x9A, 0x7B, 0xC9, 0xE5, 0x29, 0x0B, 0xE7, 0x31, 0x92, + 0xFD, 0x73, 0x14, 0xC6, 0x26, 0xED, 0x22, 0x1A, 0x25, 0xC7, 0xE2, 0xD9, 0x6C, 0x36, 0xD1, 0xE9, 0xD4, 0xCB, 0xED, 0x66, 0xAD, 0x88, 0xE6, 0xB9, 0x01, 0xE6, 0xA2, 0x11, 0xCB, 0x2C, 0xD1, 0x68, 0x50, 0x0C, 0x13, 0x8D, 0xFF, 0x80, 0x05, 0xA8, + 0x45, 0xC9, 0x12, 0xFF, 0xE1, 0x4E, 0xE2, 0xE0, 0x62, 0xAC, 0x79, 0xA6, 0x73, 0x6C, 0x6B, 0x3C, 0xE1, 0xBB, 0xDE, 0xAA, 0x0C, 0xEE, 0x9C, 0xC2, 0xFF, 0xE2, 0xCF, 0x69, 0x2D, 0x1A, 0x5D, 0x00, 0x52, 0x03, 0x84, 0x17, 0x98, 0x06, 0xC0, 0xE4, + 0x10, 0xC3, 0xD3, 0x22, 0xBC, 0xC8, 0xC4, 0xEE, 0x65, 0x0F, 0x6E, 0x45, 0x10, 0x60, 0xE9, 0x59, 0x84, 0xA9, 0xF6, 0xAD, 0x6D, 0xD4, 0x13, 0x47, 0x9A, 0xD8, 0x2A, 0x5A, 0x77, 0x4F, 0xB8, 0x28, 0x29, 0xA1, 0xB2, 0x71, 0x4F, 0xD3, 0x0A, 0x2B, + 0x59, 0x74, 0xD4, 0xA7, 0xF1, 0xD3, 0x95, 0x8B, 0x09, 0x02, 0xA6, 0x68, 0xE0, 0xA9, 0x6B, 0x46, 0x8E, 0xA8, 0x46, 0x3B, 0x33, 0x77, 0x40, 0x9F, 0x32, 0x0D, 0x7D, 0x6C, 0xDF, 0x62, 0xD2, 0x2A, 0x0F, 0xAE, 0x97, 0x4C, 0x2E, 0x15, 0xA4, 0xCB, + 0x05, 0x53, 0xA9, 0xB0, 0xDD, 0x9F, 0x63, 0x05, 0x5E, 0x40, 0x44, 0xAF, 0xA2, 0x71, 0x4B, 0x39, 0x05, 0x33, 0xA8, 0x28, 0x64, 0x69, 0x50, 0xBA, 0x9D, 0x2E, 0x76, 0xEE, 0x40, 0x17, 0xCD, 0xDD, 0xCC, 0xD7, 0xED, 0x66, 0xB1, 0x7D, 0x37, 0x85, + 0x32, 0x95, 0x1D, 0x40, 0x10, 0xBC, 0x25, 0x45, 0x88, 0xB4, 0x3E, 0xAF, 0x61, 0xCD, 0x46, 0x37, 0x36, 0x98, 0xBA, 0xFA, 0xCD, 0xBD, 0x8C, 0x72, 0xAB, 0x56, 0x8C, 0x2A, 0x96, 0xEC, 0x55, 0xD7, 0xBD, 0xBD, 0x7C, 0x0B, 0xF3, 0x6E, 0xAA, 0xBB, + 0xCC, 0xD0, 0x46, 0x06, 0x68, 0x2E, 0xDD, 0xB4, 0x9C, 0xD8, 0xAD, 0x16, 0x66, 0x64, 0xE5, 0x5A, 0x54, 0x78, 0xD1, 0x56, 0x25, 0x18, 0xB9, 0x1E, 0x86, 0x37, 0x90, 0x26, 0x11, 0x2E, 0xD7, 0x75, 0x6D, 0x50, 0xCB, 0x88, 0xB6, 0xB9, 0x5A, 0x4E, + 0x6C, 0x46, 0xD4, 0xE3, 0x95, 0x3B, 0x9F, 0xCB, 0xBE, 0x86, 0xD3, 0x94, 0x47, 0xCC, 0x92, 0xAF, 0x21, 0x0F, 0xC6, 0x9C, 0xAD, 0xE5, 0x66, 0xFE, 0x4E, 0xD4, 0x3D, 0x00, 0x88, 0x42, 0x5F, 0x4B, 0x79, 0xE0, 0x7F, 0xF7, 0xB7, 0xE1, 0x63, 0xB9, + 0x9E, 0x7A, 0x09, 0x65, 0x7A, 0x37, 0x6B, 0x91, 0xD2, 0x45, 0x95, 0xF8, 0xB3, 0xA2, 0x2E, 0xFD, 0x83, 0xEA, 0xF0, 0xC7, 0x2F, 0xEA, 0x09, 0x86, 0x61, 0x02, 0x47, 0x82, 0xCE, 0xE3, 0xEC, 0x0F, 0x3D, 0x8E, 0x1E, 0xC8, 0xB2, 0x6C, 0x1C, 0x00, + 0x2C, 0x0E, 0xEB, 0x5A, 0x77, 0x52, 0x2F, 0xEB, 0x5C, 0x27, 0x5D, 0x3A, 0x0F, 0x2A, 0x2C, 0xC8, 0x1B, 0xE7, 0xC6, 0x1D, 0x43, 0x1D, 0xE3, 0x2B, 0xFF, 0x11, 0xDE, 0xDA, 0x48, 0x74, 0x4C, 0xBE, 0xA0, 0x90, 0xA0, 0x97, 0xED, 0x3A, 0xB3, 0xB9, + 0x04, 0x9E, 0xB0, 0x58, 0x4E, 0x77, 0xC4, 0x06, 0x1E, 0x59, 0x4F, 0x88, 0x60, 0xB7, 0x3A, 0x13, 0xAE, 0xA5, 0x0C, 0x2A, 0x14, 0x6D, 0xA2, 0xA5, 0x8A, 0xC8, 0xAE, 0x8E, 0x7C, 0xD7, 0x2A, 0xF0, 0x88, 0x96, 0x59, 0xD7, 0x0F, 0x47, 0x0D, 0xEE, + 0x40, 0x77, 0x8F, 0x4B, 0xE6, 0x11, 0x32, 0xC4, 0x88, 0x41, 0x65, 0xC5, 0x46, 0x53, 0x3F, 0x80, 0x49, 0x27, 0x31, 0x33, 0xA2, 0x9C, 0x15, 0xCC, 0x0A, 0xD3, 0x51, 0x2C, 0x74, 0x31, 0xA4, 0xC6, 0x44, 0x9D, 0x0C, 0x98, 0x05, 0xB3, 0xC9, 0x36, + 0xA8, 0xB8, 0xCC, 0x4E, 0xCF, 0x20, 0xBF, 0xF1, 0x1C, 0x5D, 0x22, 0x4E, 0x38, 0x47, 0xE6, 0x77, 0xCB, 0x12, 0x6B, 0xE3, 0xA6, 0xD5, 0xD2, 0x9E, 0x2E, 0xD8, 0xC2, 0x0A, 0xA3, 0x67, 0xF3, 0xBC, 0xFA, 0x76, 0x7F, 0x93, 0x5D, 0xDA, 0xFD, 0x25, + 0xB6, 0xA5, 0xEB, 0x6C, 0x2B, 0x57, 0xD9, 0x50, 0xA5, 0x60, 0x5C, 0x74, 0xC0, 0x3D, 0x80, 0x04, 0x47, 0x7F, 0x6F, 0x2F, 0xC2, 0xF4, 0x6C, 0x98, 0xB9, 0xF0, 0xD6, 0x0B, 0x1D, 0x53, 0x01, 0x4B, 0x78, 0xD7, 0xCE, 0x7E, 0xC1, 0x52, 0xF8, 0xC8, + 0x86, 0x2F, 0x53, 0x95, 0x8D, 0x5E, 0xAE, 0xD5, 0xDB, 0x12, 0xAA, 0x34, 0x61, 0xC3, 0xB5, 0x3A, 0x53, 0xA0, 0x56, 0x0D, 0x67, 0x66, 0x51, 0x85, 0x8F, 0x6F, 0x31, 0x74, 0x51, 0x0C, 0xCF, 0xB6, 0x76, 0x92, 0x8E, 0x1E, 0xBB, 0x25, 0x2C, 0xA5, + 0x73, 0xE0, 0x90, 0x21, 0x13, 0xD9, 0x14, 0x33, 0xC0, 0xFB, 0x1D, 0x36, 0x03, 0x22, 0x4F, 0x15, 0xB6, 0xC8, 0x62, 0x3E, 0x63, 0xBE, 0xD3, 0x0A, 0x50, 0xB8, 0x93, 0x58, 0xC1, 0x7F, 0x9A, 0xEC, 0x74, 0x89, 0x27, 0x87, 0x83, 0x7A, 0xE9, 0xF8, + 0xF5, 0xEB, 0x7A, 0x4D, 0x20, 0x23, 0x4A, 0xF4, 0x3D, 0x34, 0xB0, 0x1B, 0x00, 0xE6, 0xE9, 0xEF, 0x9D, 0x8B, 0x3C, 0x47, 0xA3, 0x50, 0x91, 0xC9, 0x94, 0xF8, 0xEC, 0xF4, 0xA3, 0x4F, 0x44, 0x5D, 0xB0, 0x62, 0x0B, 0xA3, 0xA3, 0x76, 0x43, 0xE0, + 0xB0, 0x96, 0x4E, 0x7A, 0x82, 0x15, 0x86, 0xFC, 0x4A, 0x63, 0x37, 0x14, 0x85, 0x83, 0xF4, 0x32, 0x10, 0x74, 0x25, 0x6D, 0xD2, 0x69, 0x0B, 0x88, 0x52, 0x13, 0x33, 0xDE, 0x32, 0xA7, 0x5F, 0xD3, 0x97, 0xA9, 0x89, 0xD8, 0xB8, 0xFB, 0xD4, 0x6C, + 0x3F, 0xB5, 0x80, 0xA2, 0x13, 0x4E, 0x85, 0x42, 0x77, 0xEE, 0x3C, 0x15, 0x7A, 0xC6, 0x51, 0x48, 0xB3, 0x0B, 0xB3, 0x2D, 0x7C, 0xB3, 0xE5, 0x3A, 0xF0, 0xD9, 0xCF, 0xEA, 0x27, 0xDE, 0x31, 0xCB, 0x6C, 0x8C, 0x19, 0xAD, 0xE2, 0x9C, 0x33, 0xA9, + 0x1A, 0x0B, 0xFD, 0xF4, 0xF4, 0x3B, 0x11, 0xA8, 0xB6, 0x59, 0x20, 0xF1, 0xDB, 0xC9, 0x97, 0xD3, 0xD7, 0xAF, 0x23, 0x32, 0x15, 0x27, 0x99, 0x2C, 0x51, 0xB6, 0x49, 0xEC, 0xDC, 0xDB, 0x5B, 0x45, 0x9C, 0x9E, 0x05, 0x37, 0x6E, 0x0C, 0xCD, 0xB7, + 0xB6, 0xBB, 0xC6, 0x9C, 0x1D, 0x19, 0xA5, 0x7A, 0x15, 0x73, 0xBA, 0x4A, 0xA7, 0xCF, 0xB5, 0x50, 0x91, 0xE5, 0x05, 0x38, 0xB0, 0xCD, 0x3B, 0x4F, 0x7A, 0x7E, 0xD3, 0xB7, 0x77, 0x6A, 0xFD, 0x9A, 0xD5, 0xFE, 0x9A, 0xD5, 0xEE, 0x9A, 0xF5, 0xBF, + 0xED, 0x85, 0x99, 0xAC, 0x86, 0x6C, 0x6E, 0xCC, 0x46, 0x25, 0xCA, 0x84, 0x34, 0x37, 0x66, 0xA3, 0x0E, 0x65, 0xA2, 0x72, 0x07, 0x0C, 0xC8, 0x0A, 0x3B, 0x4C, 0x46, 0x25, 0x93, 0x43, 0x58, 0x88, 0x03, 0x9E, 0xEB, 0xCF, 0xA7, 0x85, 0x9B, 0xA0, + 0xAC, 0xB8, 0x36, 0x29, 0x45, 0x2C, 0x3C, 0xDD, 0x09, 0x3D, 0x21, 0x74, 0x0B, 0x34, 0x84, 0xE9, 0x24, 0xEE, 0xBF, 0x03, 0xD7, 0xB1, 0xC0, 0x00, 0xB2, 0x33, 0x6F, 0xC2, 0x27, 0xF5, 0xA6, 0xB0, 0x75, 0x1D, 0xB4, 0xB7, 0x47, 0x0F, 0x2B, 0x61, + 0x2A, 0x71, 0xA5, 0xCB, 0x2B, 0xF1, 0xC4, 0x45, 0x0F, 0x73, 0xCE, 0x8B, 0x2F, 0xF5, 0xAD, 0x51, 0x00, 0x55, 0x5E, 0xB9, 0x5B, 0xEA, 0x52, 0x76, 0xE1, 0x65, 0xE8, 0x4C, 0xA5, 0x6A, 0x4A, 0x52, 0xF4, 0x14, 0xB3, 0xCC, 0xC1, 0xC5, 0xB3, 0x81, + 0xC6, 0xF6, 0x48, 0x95, 0x0D, 0xD2, 0x61, 0x52, 0xE0, 0x3F, 0x2A, 0x63, 0xA9, 0xDA, 0x8F, 0x41, 0xCC, 0x3B, 0x50, 0xFC, 0xEB, 0xA0, 0xED, 0x02, 0x24, 0x4C, 0x1A, 0xEB, 0x98, 0x37, 0x06, 0xF1, 0x9F, 0x87, 0x84, 0x9D, 0x35, 0x00, 0x4E, 0xDC, + 0xC7, 0xC0, 0xB7, 0xEF, 0x1C, 0x8A, 0x61, 0xE2, 0x8A, 0x3D, 0x17, 0x1F, 0x7A, 0x77, 0x13, 0xDD, 0x4B, 0xBD, 0x9D, 0xAE, 0x8A, 0xE3, 0xD8, 0x96, 0x95, 0xB2, 0x57, 0xD5, 0xFA, 0x2E, 0x3D, 0x21, 0xD4, 0xAA, 0xB6, 0x0E, 0x12, 0x5F, 0x9F, 0xC9, + 0xAA, 0xBB, 0x6E, 0xDD, 0x05, 0xE8, 0x06, 0xF1, 0x9B, 0x20, 0xFC, 0x6D, 0x2B, 0xC2, 0x9B, 0xD8, 0x8D, 0xA2, 0x8E, 0xA4, 0x6A, 0xF4, 0xF3, 0xF7, 0x72, 0x78, 0x47, 0x87, 0x3D, 0x1F, 0xAC, 0xEA, 0xE9, 0x2E, 0x6D, 0x7F, 0x7F, 0x37, 0xFA, 0xBD, + 0x2B, 0x65, 0xBF, 0x62, 0xE7, 0xAD, 0x47, 0x93, 0xD9, 0xB3, 0x68, 0xF0, 0xC5, 0xB7, 0x4F, 0x9F, 0x90, 0x91, 0x1C, 0x42, 0x1B, 0x1E, 0x8C, 0x88, 0x5C, 0xD3, 0xE9, 0xCD, 0x64, 0x82, 0x19, 0x0E, 0xD5, 0xC2, 0xE8, 0x2F, 0xE0, 0xA6, 0x93, 0xCC, + 0xF8, 0xFA, 0x0E, 0xC8, 0xE4, 0x22, 0x48, 0x99, 0x60, 0x30, 0x8F, 0x11, 0xC4, 0xFC, 0x09, 0x58, 0x71, 0xDF, 0xD9, 0x28, 0x23, 0xE6, 0xCC, 0xA0, 0x6A, 0xE5, 0x8D, 0x36, 0xCE, 0xFC, 0x23, 0x38, 0x8E, 0x5C, 0x54, 0x36, 0x3B, 0x71, 0xF6, 0xF4, + 0xDB, 0xEF, 0x84, 0xA2, 0xCB, 0x03, 0xF6, 0xBB, 0x8D, 0xC6, 0xA0, 0x19, 0x60, 0x07, 0xF1, 0x97, 0x82, 0xC3, 0x7C, 0xED, 0x84, 0x85, 0xDA, 0xA7, 0xE8, 0x7D, 0x8A, 0xCA, 0xDE, 0x6F, 0xFB, 0x71, 0xDB, 0xFB, 0x1C, 0x9E, 0xCD, 0x94, 0x3B, 0x46, + 0xFA, 0xC1, 0xC5, 0x05, 0x3A, 0x5F, 0x62, 0x6D, 0xB7, 0x2D, 0x32, 0x30, 0xE2, 0xAE, 0xB8, 0x6A, 0x21, 0xC1, 0x12, 0xD1, 0xDE, 0x3B, 0xDC, 0x1D, 0xFF, 0xEE, 0x07, 0x62, 0xF3, 0x78, 0xC6, 0x41, 0x32, 0xFC, 0x41, 0x27, 0xCB, 0x70, 0x6C, 0x22, + 0xDD, 0x25, 0x07, 0xD1, 0xEB, 0xD7, 0x5C, 0x1A, 0x7A, 0x77, 0xB8, 0x46, 0xAE, 0x98, 0xFA, 0x52, 0x0E, 0xB1, 0x50, 0xE2, 0x0C, 0xFA, 0x6E, 0xAE, 0xED, 0x31, 0x6E, 0xA5, 0x9C, 0xB4, 0x4A, 0xE9, 0xFC, 0xF8, 0x79, 0xE6, 0x00, 0x56, 0xC7, 0x9E, + 0x45, 0x77, 0x95, 0x87, 0xF8, 0x77, 0x6A, 0x99, 0x9D, 0x97, 0x5A, 0x9A, 0xA0, 0xD7, 0xE1, 0x6B, 0x53, 0x0C, 0xBD, 0x51, 0xCD, 0x86, 0x3E, 0x9B, 0x8B, 0x9B, 0xFA, 0x4F, 0x4F, 0xFE, 0x52, 0xBD, 0x9C, 0x21, 0x17, 0x97, 0x2E, 0x46, 0x68, 0xAE, + 0xBE, 0x2B, 0xE6, 0x46, 0x6B, 0x10, 0x6A, 0xE7, 0x50, 0xAE, 0x3B, 0x37, 0xBE, 0x75, 0xE3, 0xB8, 0x34, 0x67, 0xB3, 0xF1, 0x6C, 0xF8, 0x66, 0x1B, 0x0E, 0x82, 0x94, 0xEA, 0x0E, 0xA6, 0x4A, 0x71, 0x60, 0xF2, 0xA5, 0xD6, 0x90, 0x6B, 0xAE, 0xE6, + 0xDA, 0xE4, 0x0A, 0xF4, 0x04, 0x72, 0x03, 0xF0, 0x18, 0x96, 0x70, 0x04, 0xBC, 0xC2, 0xE7, 0x5D, 0x80, 0x85, 0x1B, 0x0B, 0xBB, 0x72, 0xB4, 0xDD, 0x68, 0x0D, 0xE2, 0xC2, 0x4B, 0x96, 0x24, 0xD9, 0x9F, 0x90, 0x1B, 0xEF, 0x62, 0x72, 0x33, 0xD6, + 0x39, 0x94, 0x9F, 0xC9, 0x1C, 0x62, 0x1E, 0x56, 0x0A, 0xAE, 0xB8, 0x9D, 0x90, 0x46, 0xE6, 0xA6, 0x0A, 0xE9, 0x96, 0xF6, 0xA0, 0x7C, 0x03, 0x63, 0x9F, 0xEC, 0xBD, 0xD1, 0x08, 0x36, 0x2F, 0x00, 0xA1, 0xFE, 0xAB, 0x3A, 0x9C, 0xCE, 0xE7, 0xB3, + 0xF9, 0x0E, 0xDA, 0xBD, 0x99, 0x75, 0x91, 0x7D, 0xB1, 0xE6, 0x84, 0x6F, 0x1F, 0xFB, 0xAE, 0x9E, 0x62, 0xAF, 0xCA, 0x59, 0x61, 0x0B, 0xBD, 0xED, 0x5B, 0x0B, 0x2B, 0x09, 0xC0, 0x3F, 0xE8, 0x01, 0x32, 0x58, 0xED, 0x70, 0xFD, 0x68, 0xC2, 0x0A, + 0xA9, 0x0C, 0x4C, 0x28, 0x7A, 0x05, 0x2C, 0xFB, 0x34, 0x03, 0x21, 0xDE, 0x5D, 0xDF, 0xE1, 0x84, 0xB9, 0xC9, 0xD6, 0xA1, 0x62, 0xAB, 0x89, 0xAF, 0x1F, 0x31, 0x5C, 0xBC, 0xF2, 0x3E, 0xED, 0x50, 0x1C, 0xF3, 0x02, 0xB3, 0xDC, 0x40, 0xFB, 0xC2, + 0x3D, 0x34, 0x01, 0xFD, 0xA8, 0x26, 0x8B, 0x58, 0xB9, 0x72, 0x39, 0x0A, 0xE3, 0x13, 0xFB, 0xF9, 0x78, 0x9E, 0x3E, 0x67, 0x79, 0x57, 0xF6, 0x43, 0x57, 0x15, 0xF0, 0x6D, 0xF2, 0x58, 0x30, 0xA8, 0x5A, 0x55, 0x65, 0x27, 0xD4, 0x37, 0x66, 0xB9, + 0x37, 0x99, 0x7B, 0xBF, 0x08, 0xED, 0x4F, 0x9B, 0xB1, 0xE7, 0xB4, 0x06, 0x8F, 0xBE, 0xE0, 0x78, 0xEA, 0xB5, 0xE3, 0xD0, 0x39, 0x8C, 0x33, 0x70, 0xA9, 0x22, 0x36, 0x4C, 0xF9, 0x91, 0x06, 0x00, 0xF2, 0x43, 0xD5, 0xD6, 0xC4, 0xF8, 0xF6, 0xEB, + 0x58, 0x8F, 0x57, 0xDF, 0x69, 0x43, 0x23, 0x23, 0x1A, 0x87, 0xF0, 0x9A, 0x9B, 0xDC, 0x04, 0xD6, 0x6C, 0x11, 0x86, 0xB3, 0x50, 0xD8, 0x10, 0xA4, 0x35, 0x4F, 0xFB, 0x8D, 0x6E, 0x9E, 0xF0, 0x83, 0xCE, 0x8D, 0x13, 0x69, 0x65, 0x4B, 0x86, 0x15, + 0x64, 0x7C, 0x84, 0xEE, 0x12, 0x55, 0xAB, 0x26, 0x66, 0x19, 0xD4, 0x8E, 0xA8, 0x36, 0x48, 0x44, 0x41, 0x35, 0x46, 0x22, 0x75, 0x6B, 0xC9, 0x26, 0xC4, 0xDA, 0xAF, 0xB5, 0x0B, 0x23, 0x87, 0x60, 0x72, 0x33, 0x8F, 0xF0, 0x1C, 0x9F, 0x14, 0xFE, + 0xCA, 0x29, 0x4E, 0xA2, 0x30, 0x76, 0x89, 0x8D, 0x14, 0x2E, 0x3F, 0x64, 0x93, 0x91, 0xA1, 0x17, 0xB4, 0xDB, 0x86, 0xC6, 0x66, 0xFA, 0x07, 0x88, 0x67, 0xED, 0x3A, 0xBA, 0x1B, 0xD7, 0x51, 0x9B, 0x7E, 0x30, 0xF7, 0xBD, 0x3D, 0xBD, 0xB7, 0x17, + 0x94, 0xD4, 0x03, 0x43, 0x3C, 0xD3, 0x0D, 0x7D, 0xB7, 0x28, 0xD7, 0xC5, 0x66, 0x3F, 0x5A, 0x73, 0xF2, 0x52, 0x35, 0x99, 0xAD, 0x0D, 0x05, 0x05, 0xE7, 0x16, 0x24, 0x07, 0x61, 0x20, 0x37, 0xA6, 0x1E, 0xEF, 0x84, 0x6C, 0x15, 0x7A, 0xCB, 0x78, + 0xA2, 0x4D, 0x02, 0x65, 0xC4, 0x5E, 0x1E, 0x13, 0x1F, 0xE5, 0x53, 0x42, 0x85, 0x71, 0xD2, 0xB0, 0x02, 0x44, 0xA5, 0x79, 0xE5, 0x9A, 0x49, 0x27, 0x38, 0x4B, 0x10, 0x25, 0x8C, 0xBC, 0x73, 0x71, 0x35, 0xC3, 0xDC, 0x20, 0xE4, 0x50, 0xA3, 0x50, + 0xC0, 0x19, 0x11, 0x44, 0x9F, 0x2B, 0x09, 0xB2, 0x2F, 0x92, 0x1A, 0xF3, 0x57, 0x39, 0x7D, 0x85, 0x39, 0x99, 0xE0, 0x0D, 0xEB, 0x4F, 0x60, 0xBE, 0xBD, 0xAA, 0xC9, 0x98, 0x83, 0x78, 0x1A, 0x9B, 0xF3, 0x0B, 0xBF, 0xA2, 0x1B, 0x56, 0x30, 0xDF, + 0xCA, 0x42, 0x41, 0x2C, 0x23, 0x9B, 0xB2, 0x9B, 0xBA, 0x50, 0x16, 0x01, 0x50, 0x6B, 0x6A, 0x06, 0xE2, 0xD6, 0x4F, 0x5F, 0x7F, 0xF5, 0x19, 0x82, 0xE9, 0xBE, 0xD1, 0xE0, 0x59, 0x79, 0xD1, 0x4F, 0x99, 0x72, 0x22, 0x2B, 0x60, 0x08, 0x9B, 0x1E, + 0x7C, 0x42, 0xCF, 0x6C, 0x25, 0xA2, 0xED, 0x41, 0xC4, 0x54, 0x22, 0x15, 0x9A, 0x4F, 0x09, 0x11, 0x41, 0x78, 0x5D, 0xE3, 0x7A, 0x59, 0xBB, 0xF0, 0x35, 0x0B, 0x3C, 0x3A, 0x04, 0x4D, 0xA6, 0x56, 0x4E, 0x39, 0x39, 0xE7, 0x8B, 0xBC, 0xB5, 0xBB, + 0x70, 0x25, 0x65, 0xAF, 0xF6, 0xF1, 0x1D, 0x88, 0xAC, 0x3C, 0xEF, 0xA5, 0xEE, 0x0D, 0x2C, 0x5D, 0x62, 0x52, 0x26, 0xE5, 0x71, 0x85, 0xA6, 0x5B, 0xE1, 0x4B, 0x69, 0xE7, 0x82, 0x09, 0xED, 0x12, 0x26, 0x55, 0xF2, 0x00, 0xC4, 0x3B, 0x2B, 0xD2, + 0xC9, 0x3B, 0x78, 0x48, 0x4A, 0xB6, 0xC5, 0xDB, 0xA2, 0xAF, 0x2D, 0xDD, 0x7C, 0x8C, 0x77, 0x52, 0x6E, 0x38, 0xD4, 0xC1, 0xD8, 0x1B, 0x83, 0xCC, 0xD8, 0xEA, 0x84, 0xB1, 0x5F, 0x3D, 0x29, 0xB6, 0xED, 0x5A, 0x8F, 0x7C, 0xF1, 0xC4, 0xBA, 0xB1, + 0x18, 0x76, 0x9D, 0x37, 0x42, 0x0F, 0xCC, 0x42, 0x1E, 0x73, 0xCA, 0xA7, 0xF7, 0x63, 0xAE, 0x0B, 0x5C, 0x14, 0x36, 0xB7, 0x15, 0xF4, 0xE7, 0xBC, 0xCF, 0x45, 0x0B, 0x5E, 0x99, 0x8F, 0xE6, 0x78, 0x1C, 0x2E, 0xBE, 0x84, 0xD1, 0xC9, 0x5F, 0x6B, + 0xBC, 0x91, 0xD2, 0x40, 0xCC, 0x71, 0xC3, 0x98, 0xA4, 0xD3, 0x6F, 0xEC, 0xC3, 0x92, 0x67, 0xC0, 0x89, 0xCA, 0xD6, 0xC5, 0x3A, 0x62, 0x1C, 0x3A, 0x57, 0x81, 0x63, 0x26, 0x5F, 0xBA, 0x55, 0xB3, 0x3A, 0x91, 0x91, 0x0A, 0xF4, 0x0D, 0x3F, 0x79, + 0xD4, 0x5F, 0x49, 0x31, 0x81, 0x45, 0x8E, 0xEF, 0xBE, 0x03, 0xD6, 0xD2, 0xF3, 0x24, 0x77, 0xEE, 0x6B, 0x57, 0x4C, 0x6E, 0x6B, 0x03, 0xBA, 0xA1, 0xF6, 0x81, 0xDA, 0x9D, 0xCE, 0x57, 0x80, 0x74, 0x45, 0x3B, 0xFF, 0xCB, 0xEA, 0x1E, 0x11, 0x11, + 0x49, 0xBB, 0x1F, 0x31, 0x7D, 0x91, 0xA7, 0x90, 0x02, 0xF1, 0xDC, 0xC3, 0x4F, 0xC1, 0x35, 0xF2, 0x77, 0xC2, 0x60, 0x95, 0x05, 0xAA, 0x6F, 0x83, 0x8B, 0xEB, 0x3E, 0x56, 0xFB, 0x2F, 0xC5, 0x6A, 0x7B, 0x7C, 0x4E, 0x67, 0xCB, 0x28, 0xBD, 0x0F, + 0xDE, 0x7E, 0x55, 0x27, 0x38, 0x13, 0x1C, 0xEB, 0xD1, 0x73, 0x9F, 0xE6, 0xF4, 0xAF, 0xA6, 0x39, 0x79, 0xC4, 0x5B, 0x55, 0xBE, 0x8E, 0xFB, 0xFB, 0xB4, 0xA7, 0x7F, 0x28, 0xED, 0xC9, 0x53, 0x77, 0xFA, 0x32, 0x38, 0xFC, 0xFF, 0x93, 0x34, 0x28, + 0x3B, 0x7B, 0x23, 0xEC, 0x06, 0x24, 0x72, 0x9F, 0x16, 0xF5, 0xCF, 0xA7, 0x45, 0xAD, 0x89, 0x6B, 0xBC, 0xCF, 0x16, 0xFF, 0x0F, 0x67, 0x8B, 0x63, 0xCF, 0xEC, 0xAB, 0x9E, 0x42, 0xAE, 0x8F, 0x9B, 0x70, 0xA6, 0x06, 0x49, 0xED, 0xAB, 0x27, 0xB4, + 0x36, 0xF5, 0xA8, 0x65, 0x9A, 0x70, 0x27, 0xCB, 0xA5, 0xB7, 0xF6, 0xAB, 0x5B, 0x37, 0xB9, 0x63, 0xED, 0x7D, 0x91, 0x4D, 0xFD, 0x42, 0x07, 0x56, 0x18, 0x90, 0x70, 0xC7, 0x7E, 0xCD, 0x47, 0x15, 0x37, 0x01, 0x58, 0x4E, 0x2A, 0x32, 0x20, 0x74, + 0x63, 0xA5, 0xDB, 0x62, 0x51, 0xFC, 0x2B, 0xAD, 0x77, 0xE8, 0xC4, 0x8F, 0x49, 0xDC, 0xA1, 0xBD, 0x61, 0x84, 0x1B, 0x7B, 0x78, 0x63, 0x04, 0xF7, 0x30, 0x2F, 0xEC, 0x08, 0xB9, 0xC1, 0xC7, 0x59, 0xD7, 0xA8, 0xB8, 0x8F, 0x59, 0xC6, 0x36, 0x9A, + 0xAA, 0x5B, 0x1A, 0xA4, 0x5A, 0x32, 0x31, 0x6C, 0x73, 0xD7, 0xA2, 0xB9, 0x7B, 0xDC, 0x2A, 0x60, 0x35, 0x4B, 0x60, 0xAC, 0x81, 0x82, 0xDE, 0x2B, 0x8F, 0x0E, 0x65, 0x4C, 0xE1, 0x1D, 0xC8, 0x16, 0x89, 0x44, 0x7B, 0x73, 0x3B, 0x68, 0xE2, 0xD4, + 0xEE, 0xD9, 0x6D, 0xA1, 0x73, 0x29, 0x54, 0x30, 0x98, 0xD5, 0x47, 0xFD, 0x7B, 0xE4, 0x8E, 0xA7, 0x95, 0x81, 0x2F, 0x64, 0xD3, 0x0A, 0x9C, 0x9E, 0xE6, 0xED, 0x2B, 0x41, 0x94, 0x0D, 0xBC, 0x6F, 0x21, 0xF5, 0xF6, 0x29, 0xE1, 0xC8, 0xF9, 0x56, + 0x90, 0x8A, 0xB6, 0xDE, 0xDA, 0x31, 0xDA, 0x60, 0x14, 0x5B, 0x6F, 0x56, 0xB6, 0x19, 0x7F, 0xCD, 0x09, 0xD3, 0xBE, 0xF2, 0x51, 0xAE, 0x9D, 0x90, 0x3E, 0x3D, 0x10, 0xE2, 0x9E, 0x05, 0xC1, 0xCF, 0xEA, 0xB9, 0x58, 0xFE, 0x5F, 0x8A, 0xFE, 0x09, + 0xEE, 0xCD, 0xA8, 0x46, 0x6A, 0x74, 0x00, 0x00, 0x00 }; /*************************** End of file ****************************/ From ff061f784bebc6b09052ac3763148fcaec73f68e Mon Sep 17 00:00:00 2001 From: cotestatnt Date: Sat, 6 Jan 2024 20:22:16 +0100 Subject: [PATCH 2/2] esp8266 --- examples/customHTML/.vscode/arduino.json | 6 +- .../customHTML/.vscode/c_cpp_properties.json | 609 ++---------------- examples/customHTML/customHTML.ino | 8 +- src/AsyncFsWebServer.cpp | 6 +- 4 files changed, 49 insertions(+), 580 deletions(-) diff --git a/examples/customHTML/.vscode/arduino.json b/examples/customHTML/.vscode/arduino.json index cda2a0a1..9886b842 100644 --- a/examples/customHTML/.vscode/arduino.json +++ b/examples/customHTML/.vscode/arduino.json @@ -1,4 +1,6 @@ { - "board": "esp32:esp32:esp32s3", - "port": "COM3" + "board": "esp8266:esp8266:d1_mini", + "port": "COM16", + "sketch": "customHTML.ino", + "configuration": "xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,eesz=4M2M,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=921600" } \ No newline at end of file diff --git a/examples/customHTML/.vscode/c_cpp_properties.json b/examples/customHTML/.vscode/c_cpp_properties.json index b081448d..891b5633 100644 --- a/examples/customHTML/.vscode/c_cpp_properties.json +++ b/examples/customHTML/.vscode/c_cpp_properties.json @@ -3,590 +3,57 @@ "configurations": [ { "name": "Arduino", - "compilerPath": "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\bin\\xtensa-esp32s3-elf-g++", + "compilerPath": "@C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\tools\\warnings\\none-g++", "compilerArgs": [ + "-U__STRICT_ANSI__", + "-free", + "-fipa-pta", + "-Werror=return-type", "-mlongcalls", - "-ffunction-sections", - "-fdata-sections", - "-Wno-error=unused-function", - "-Wno-error=unused-variable", - "-Wno-error=deprecated-declarations", - "-Wno-unused-parameter", - "-Wno-sign-compare", - "-freorder-blocks", - "-Wwrite-strings", - "-fstack-protector", - "-fstrict-volatile-bitfields", - "-Wno-error=unused-but-set-variable", - "-fno-jump-tables", - "-fno-tree-switch-conversion", - "-std=gnu++11", - "-fexceptions", - "-fno-rtti" + "-mtext-section-literals", + "-fno-rtti", + "-falign-functions=4", + "-std=gnu++17" ], "intelliSenseMode": "gcc-x64", "includePath": [ - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\newlib\\platform_include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\freertos\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\freertos\\include\\esp_additions\\freertos", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\freertos\\port\\xtensa\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\freertos\\include\\esp_additions", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_hw_support\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_hw_support\\include\\soc", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_hw_support\\include\\soc\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_hw_support\\port\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_hw_support\\port\\esp32s3\\private_include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\heap\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\log\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\lwip\\include\\apps", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\lwip\\include\\apps\\sntp", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\lwip\\lwip\\src\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\lwip\\port\\esp32\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\lwip\\port\\esp32\\include\\arch", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\soc\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\soc\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\soc\\esp32s3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\hal\\esp32s3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\hal\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\hal\\platform_port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_rom\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_rom\\include\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_rom\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_common\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_system\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_system\\port\\soc", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_system\\port\\public_compat", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\xtensa\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\xtensa\\esp32s3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\driver\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\driver\\esp32s3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_pm\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_ringbuf\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\efuse\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\efuse\\esp32s3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\vfs\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_wifi\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_event\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_netif\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_eth\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\tcpip_adapter\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_phy\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_phy\\esp32s3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_ipc\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\app_trace\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_timer\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\mbedtls\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\mbedtls\\mbedtls\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\mbedtls\\esp_crt_bundle\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\app_update\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\spi_flash\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bootloader_support\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\nvs_flash\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\pthread\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_gdbstub\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_gdbstub\\xtensa", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_gdbstub\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espcoredump\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espcoredump\\include\\port\\xtensa", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\wpa_supplicant\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\wpa_supplicant\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\wpa_supplicant\\esp_supplicant\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\ieee802154\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\console", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\asio\\asio\\asio\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\asio\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\common\\osi\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\include\\esp32c3\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\common\\api\\include\\api", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\common\\btc\\profile\\esp\\blufi\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\common\\btc\\profile\\esp\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\host\\bluedroid\\api\\include\\api", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_common\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_common\\tinycrypt\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_core", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_core\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_core\\storage", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\btc\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_models\\common\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_models\\client\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\mesh_models\\server\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\api\\core\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\api\\models\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\bt\\esp_ble_mesh\\api", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\cbor\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\unity\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\unity\\unity\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\cmock\\CMock\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\coap\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\coap\\libcoap\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\nghttp\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\nghttp\\nghttp2\\lib\\includes", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-tls", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-tls\\esp-tls-crypto", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_adc_cal\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_hid\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\tcp_transport\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_http_client\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_http_server\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_https_ota\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_https_server\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_lcd\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_lcd\\interface", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\protobuf-c\\protobuf-c", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\protocomm\\include\\common", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\protocomm\\include\\security", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\protocomm\\include\\transports", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\mdns\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_local_ctrl\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\sdmmc\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_serial_slave_link\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_websocket_client\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\expat\\expat\\expat\\lib", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\expat\\port\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\wear_levelling\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\fatfs\\diskio", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\fatfs\\vfs", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\fatfs\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\freemodbus\\freemodbus\\common\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\idf_test\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\idf_test\\include\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\jsmn\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\json\\cJSON", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\libsodium\\libsodium\\src\\libsodium\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\libsodium\\port_include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\mqtt\\esp-mqtt\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\openssl\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\perfmon\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\spiffs\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\usb\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\ulp\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\wifi_provisioning\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\rmaker_common\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_diagnostics\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\rtc_store\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_insights\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\json_parser\\upstream\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\json_parser\\upstream", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\json_generator\\upstream", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_schedule\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp_secure_cert_mgr\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_rainmaker\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\gpio_button\\button\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\qrcode\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\ws2812_led", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\freertos\\include\\freertos", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\arduino_tinyusb\\tinyusb\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\arduino_tinyusb\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp_littlefs\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\tool", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\typedef", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\image", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\math", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\nn", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\layer", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\detect", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp-dl\\include\\model_zoo", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp32-camera\\driver\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\esp32-camera\\conversions\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\dotprod\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\support\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\support\\mem\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\hann\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\blackman\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\blackman_harris\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\blackman_nuttall\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\nuttall\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\windows\\flat_top\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\iir\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\fir\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\add\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\sub\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\mul\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\addc\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\mulc\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\math\\sqrt\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\matrix\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\fft\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\dct\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\conv\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\common\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\kalman\\ekf\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\espressif__esp-dsp\\modules\\kalman\\ekf_imu13states\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\include\\fb_gfx\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\tools\\sdk\\esp32s3\\qio_qspi\\include", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\cores\\esp32", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\variants\\esp32s3", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\FS\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\LittleFS\\src", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\tools\\sdk\\include", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\tools\\sdk\\lwip2\\include", + "D:\\Temp\\arduino\\sketches\\ECD108F77FBD1F1BB89F15ECC14FA22D\\core", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\cores\\esp8266", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\variants\\d1_mini", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\libraries\\LittleFS\\src", "C:\\Users\\cotes\\OneDrive\\Documenti\\Arduino\\libraries\\async-esp-fs-webserver\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\DNSServer\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\WiFi\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\Update\\src", - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\libraries\\ESPmDNS\\src", - "C:\\Users\\cotes\\OneDrive\\Documenti\\Arduino\\libraries\\ArduinoJson\\src", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\xtensa-esp32s3-elf\\include\\c++\\8.4.0", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\xtensa-esp32s3-elf\\include\\c++\\8.4.0\\xtensa-esp32s3-elf", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\xtensa-esp32s3-elf\\include\\c++\\8.4.0\\backward", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\lib\\gcc\\xtensa-esp32s3-elf\\8.4.0\\include", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\lib\\gcc\\xtensa-esp32s3-elf\\8.4.0\\include-fixed", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\xtensa-esp32s3-elf\\sys-include", - "c:\\users\\cotes\\appdata\\local\\arduino15\\packages\\esp32\\tools\\xtensa-esp32s3-elf-gcc\\esp-2021r2-patch5-8.4.0\\xtensa-esp32s3-elf\\include" + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\libraries\\DNSServer\\src", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\libraries\\ESP8266WiFi\\src", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\libraries\\Hash\\src", + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\libraries\\ESP8266mDNS\\src", + "C:\\Users\\cotes\\OneDrive\\Documenti\\Arduino\\libraries\\ArduinoJson\\src" ], "forcedInclude": [ - "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.14\\cores\\esp32\\Arduino.h" + "C:\\Users\\cotes\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\3.1.1\\cores\\esp8266\\Arduino.h" ], "cStandard": "c11", - "cppStandard": "c++11", + "cppStandard": "c++17", "defines": [ - "HAVE_CONFIG_H", - "MBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"", - "UNITY_INCLUDE_CONFIG_H", - "WITH_POSIX", + "__ets__", + "ICACHE_FLASH", "_GNU_SOURCE", - "IDF_VER=\"v4.4.6-dirty\"", - "ESP_PLATFORM", - "_POSIX_READER_WRITER_LOCKS", - "F_CPU=240000000L", + "ESP8266", + "MMU_IRAM_SIZE=0x8000", + "MMU_ICACHE_SIZE=0x8000", + "NONOSDK22x_190703=1", + "F_CPU=80000000L", + "LWIP_OPEN_SRC", + "TCP_MSS=536", + "LWIP_FEATURES=1", + "LWIP_IPV6=0", "ARDUINO=10607", - "ARDUINO_ESP32S3_DEV", - "ARDUINO_ARCH_ESP32", - "ARDUINO_BOARD=\"ESP32S3_DEV\"", - "ARDUINO_VARIANT=\"esp32s3\"", - "ARDUINO_PARTITION_default", - "ESP32", - "CORE_DEBUG_LEVEL=0", - "ARDUINO_RUNNING_CORE=1", - "ARDUINO_EVENT_RUNNING_CORE=1", - "ARDUINO_USB_MODE=1", - "ARDUINO_USB_CDC_ON_BOOT=0", - "ARDUINO_USB_MSC_ON_BOOT=0", - "ARDUINO_USB_DFU_ON_BOOT=0", - "__DBL_MIN_EXP__=(-1021)", - "__FLT32X_MAX_EXP__=1024", - "__cpp_attributes=200809", - "__UINT_LEAST16_MAX__=0xffff", - "__ATOMIC_ACQUIRE=2", - "__FLT_MIN__=1.1754943508222875e-38F", - "__GCC_IEC_559_COMPLEX=0", - "__cpp_aggregate_nsdmi=201304", - "__UINT_LEAST8_TYPE__=unsigned char", - "__INTMAX_C(c)=c ## LL", - "__CHAR_BIT__=8", - "__UINT8_MAX__=0xff", - "__WINT_MAX__=0xffffffffU", - "__FLT32_MIN_EXP__=(-125)", - "__cpp_static_assert=200410", - "__ORDER_LITTLE_ENDIAN__=1234", - "__SIZE_MAX__=0xffffffffU", - "__WCHAR_MAX__=0xffff", - "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1", - "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1", - "__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1", - "__DBL_DENORM_MIN__=double(4.9406564584124654e-324L)", - "__GCC_ATOMIC_CHAR_LOCK_FREE=2", - "__GCC_IEC_559=0", - "__FLT32X_DECIMAL_DIG__=17", - "__FLT_EVAL_METHOD__=0", - "__cpp_binary_literals=201304", - "__FLT64_DECIMAL_DIG__=17", - "__GCC_ATOMIC_CHAR32_T_LOCK_FREE=2", - "__cpp_variadic_templates=200704", - "__UINT_FAST64_MAX__=0xffffffffffffffffULL", - "__SIG_ATOMIC_TYPE__=int", - "__DBL_MIN_10_EXP__=(-307)", - "__FINITE_MATH_ONLY__=0", - "__cpp_variable_templates=201304", - "__GNUC_PATCHLEVEL__=0", - "__FLT32_HAS_DENORM__=1", - "__UINT_FAST8_MAX__=0xffffffffU", - "__has_include(STR)=__has_include__(STR)", - "__DEC64_MAX_EXP__=385", - "__INT8_C(c)=c", - "__INT_LEAST8_WIDTH__=8", - "__UINT_LEAST64_MAX__=0xffffffffffffffffULL", - "__SHRT_MAX__=0x7fff", - "__LDBL_MAX__=1.7976931348623157e+308L", - "__UINT_LEAST8_MAX__=0xff", - "__GCC_ATOMIC_BOOL_LOCK_FREE=2", - "__UINTMAX_TYPE__=long long unsigned int", - "__DEC32_EPSILON__=1E-6DF", - "__FLT_EVAL_METHOD_TS_18661_3__=0", - "__CHAR_UNSIGNED__=1", - "__UINT32_MAX__=0xffffffffU", - "__GXX_EXPERIMENTAL_CXX0X__=1", - "__LDBL_MAX_EXP__=1024", - "__WINT_MIN__=0U", - "__INT_LEAST16_WIDTH__=16", - "__SCHAR_MAX__=0x7f", - "__WCHAR_MIN__=0", - "__INT64_C(c)=c ## LL", - "__DBL_DIG__=15", - "__GCC_ATOMIC_POINTER_LOCK_FREE=2", - "__SIZEOF_INT__=4", - "__SIZEOF_POINTER__=4", - "__GCC_ATOMIC_CHAR16_T_LOCK_FREE=2", - "__USER_LABEL_PREFIX__", - "__STDC_HOSTED__=1", - "__LDBL_HAS_INFINITY__=1", - "__XTENSA_EL__=1", - "__FLT32_DIG__=6", - "__FLT_EPSILON__=1.1920928955078125e-7F", - "__GXX_WEAK__=1", - "__SHRT_WIDTH__=16", - "__LDBL_MIN__=2.2250738585072014e-308L", - "__DEC32_MAX__=9.999999E96DF", - "__cpp_threadsafe_static_init=200806", - "__FLT32X_HAS_INFINITY__=1", - "__INT32_MAX__=0x7fffffff", - "__INT_WIDTH__=32", - "__SIZEOF_LONG__=4", - "__UINT16_C(c)=c", - "__PTRDIFF_WIDTH__=32", - "__DECIMAL_DIG__=17", - "__FLT64_EPSILON__=2.2204460492503131e-16F64", - "__INTMAX_WIDTH__=64", - "__FLT64_MIN_EXP__=(-1021)", - "__has_include_next(STR)=__has_include_next__(STR)", - "__LDBL_HAS_QUIET_NAN__=1", - "__FLT64_MANT_DIG__=53", - "__GNUC__=8", - "__GXX_RTTI=1", - "__cpp_delegating_constructors=200604", - "__FLT_HAS_DENORM__=1", - "__SIZEOF_LONG_DOUBLE__=8", - "__BIGGEST_ALIGNMENT__=16", - "__STDC_UTF_16__=1", - "__FLT64_MAX_10_EXP__=308", - "__FLT32_HAS_INFINITY__=1", - "__DBL_MAX__=double(1.7976931348623157e+308L)", - "__cpp_raw_strings=200710", - "__INT_FAST32_MAX__=0x7fffffff", - "__DBL_HAS_INFINITY__=1", - "__DEC32_MIN_EXP__=(-94)", - "__INTPTR_WIDTH__=32", - "__FLT32X_HAS_DENORM__=1", - "__INT_FAST16_TYPE__=int", - "__LDBL_HAS_DENORM__=1", - "__cplusplus=201402L", - "__cpp_ref_qualifiers=200710", - "__DEC128_MAX__=9.999999999999999999999999999999999E6144DL", - "__INT_LEAST32_MAX__=0x7fffffff", - "__DEC32_MIN__=1E-95DF", - "__DEPRECATED=1", - "__cpp_rvalue_references=200610", - "__DBL_MAX_EXP__=1024", - "__WCHAR_WIDTH__=16", - "__FLT32_MAX__=3.4028234663852886e+38F32", - "__DEC128_EPSILON__=1E-33DL", - "__PTRDIFF_MAX__=0x7fffffff", - "__FLT32_HAS_QUIET_NAN__=1", - "__GNUG__=8", - "__LONG_LONG_MAX__=0x7fffffffffffffffLL", - "__SIZEOF_SIZE_T__=4", - "__cpp_rvalue_reference=200610", - "__cpp_nsdmi=200809", - "__SIZEOF_WINT_T__=4", - "__LONG_LONG_WIDTH__=64", - "__cpp_initializer_lists=200806", - "__FLT32_MAX_EXP__=128", - "__cpp_hex_float=201603", - "__GXX_ABI_VERSION=1013", - "__FLT_MIN_EXP__=(-125)", - "__cpp_lambdas=200907", - "__INT_FAST64_TYPE__=long long int", - "__FP_FAST_FMAF=1", - "__FLT64_DENORM_MIN__=4.9406564584124654e-324F64", - "__DBL_MIN__=double(2.2250738585072014e-308L)", - "__FLT32X_EPSILON__=2.2204460492503131e-16F32x", - "__FLT64_MIN_10_EXP__=(-307)", - "__DEC128_MIN__=1E-6143DL", - "__REGISTER_PREFIX__", - "__UINT16_MAX__=0xffff", - "__DBL_HAS_DENORM__=1", - "__FLT32_MIN__=1.1754943508222875e-38F32", - "__UINT8_TYPE__=unsigned char", - "__NO_INLINE__=1", - "__FLT_MANT_DIG__=24", - "__LDBL_DECIMAL_DIG__=17", - "__VERSION__=\"8.4.0\"", - "__UINT64_C(c)=c ## ULL", - "__cpp_unicode_characters=200704", - "__cpp_decltype_auto=201304", - "__GCC_ATOMIC_INT_LOCK_FREE=2", - "__FLT32_MANT_DIG__=24", - "__FLOAT_WORD_ORDER__=__ORDER_LITTLE_ENDIAN__", - "__SCHAR_WIDTH__=8", - "__INT32_C(c)=c", - "__DEC64_EPSILON__=1E-15DD", - "__ORDER_PDP_ENDIAN__=3412", - "__DEC128_MIN_EXP__=(-6142)", - "__FLT32_MAX_10_EXP__=38", - "__INT_FAST32_TYPE__=int", - "__UINT_LEAST16_TYPE__=short unsigned int", - "__INT16_MAX__=0x7fff", - "__cpp_rtti=199711", - "__SIZE_TYPE__=unsigned int", - "__UINT64_MAX__=0xffffffffffffffffULL", - "__INT8_TYPE__=signed char", - "__cpp_digit_separators=201309", - "__ELF__=1", - "__xtensa__=1", - "__FLT_RADIX__=2", - "__INT_LEAST16_TYPE__=short int", - "__LDBL_EPSILON__=2.2204460492503131e-16L", - "__UINTMAX_C(c)=c ## ULL", - "__SIG_ATOMIC_MAX__=0x7fffffff", - "__GCC_ATOMIC_WCHAR_T_LOCK_FREE=2", - "__SIZEOF_PTRDIFF_T__=4", - "__FLT32X_MANT_DIG__=53", - "__FLT32X_MIN_EXP__=(-1021)", - "__DEC32_SUBNORMAL_MIN__=0.000001E-95DF", - "__INT_FAST16_MAX__=0x7fffffff", - "__FLT64_DIG__=15", - "__UINT_FAST32_MAX__=0xffffffffU", - "__UINT_LEAST64_TYPE__=long long unsigned int", - "__FLT_HAS_QUIET_NAN__=1", - "__FLT_MAX_10_EXP__=38", - "__LONG_MAX__=0x7fffffffL", - "__DEC128_SUBNORMAL_MIN__=0.000000000000000000000000000000001E-6143DL", - "__FLT_HAS_INFINITY__=1", - "__cpp_unicode_literals=200710", - "__UINT_FAST16_TYPE__=unsigned int", - "__DEC64_MAX__=9.999999999999999E384DD", - "__INT_FAST32_WIDTH__=32", - "__CHAR16_TYPE__=short unsigned int", - "__PRAGMA_REDEFINE_EXTNAME=1", - "__SIZE_WIDTH__=32", - "__INT_LEAST16_MAX__=0x7fff", - "__DEC64_MANT_DIG__=16", - "__INT64_MAX__=0x7fffffffffffffffLL", - "__UINT_LEAST32_MAX__=0xffffffffU", - "__FLT32_DENORM_MIN__=1.4012984643248171e-45F32", - "__GCC_ATOMIC_LONG_LOCK_FREE=2", - "__SIG_ATOMIC_WIDTH__=32", - "__INT_LEAST64_TYPE__=long long int", - "__INT16_TYPE__=short int", - "__INT_LEAST8_TYPE__=signed char", - "__DEC32_MAX_EXP__=97", - "__INT_FAST8_MAX__=0x7fffffff", - "__INTPTR_MAX__=0x7fffffff", - "__cpp_sized_deallocation=201309", - "__cpp_range_based_for=200907", - "__FLT64_HAS_QUIET_NAN__=1", - "__FLT32_MIN_10_EXP__=(-37)", - "__EXCEPTIONS=1", - "__LDBL_MANT_DIG__=53", - "__DBL_HAS_QUIET_NAN__=1", - "__FLT64_HAS_INFINITY__=1", - "__SIG_ATOMIC_MIN__=(-__SIG_ATOMIC_MAX__ - 1)", - "__cpp_return_type_deduction=201304", - "__INTPTR_TYPE__=int", - "__UINT16_TYPE__=short unsigned int", - "__WCHAR_TYPE__=short unsigned int", - "__SIZEOF_FLOAT__=4", - "__UINTPTR_MAX__=0xffffffffU", - "__INT_FAST64_WIDTH__=64", - "__DEC64_MIN_EXP__=(-382)", - "__cpp_decltype=200707", - "__FLT32_DECIMAL_DIG__=9", - "__INT_FAST64_MAX__=0x7fffffffffffffffLL", - "__GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1", - "__FLT_DIG__=6", - "__UINT_FAST64_TYPE__=long long unsigned int", - "__INT_MAX__=0x7fffffff", - "__INT64_TYPE__=long long int", - "__FLT_MAX_EXP__=128", - "__DBL_MANT_DIG__=53", - "__cpp_inheriting_constructors=201511", - "__INT_LEAST64_MAX__=0x7fffffffffffffffLL", - "__FP_FAST_FMAF32=1", - "__DEC64_MIN__=1E-383DD", - "__WINT_TYPE__=unsigned int", - "__UINT_LEAST32_TYPE__=unsigned int", - "__SIZEOF_SHORT__=2", - "__LDBL_MIN_EXP__=(-1021)", - "__FLT64_MAX__=1.7976931348623157e+308F64", - "__WINT_WIDTH__=32", - "__INT_LEAST8_MAX__=0x7f", - "__FLT32X_MAX_10_EXP__=308", - "__WCHAR_UNSIGNED__=1", - "__LDBL_MAX_10_EXP__=308", - "__ATOMIC_RELAXED=0", - "__DBL_EPSILON__=double(2.2204460492503131e-16L)", - "__XTENSA_WINDOWED_ABI__=1", - "__UINT8_C(c)=c", - "__FLT64_MAX_EXP__=1024", - "__INT_LEAST32_TYPE__=int", - "__SIZEOF_WCHAR_T__=2", - "__INT_FAST8_TYPE__=int", - "__GNUC_STDC_INLINE__=1", - "__FLT64_HAS_DENORM__=1", - "__FLT32_EPSILON__=1.1920928955078125e-7F32", - "__DBL_DECIMAL_DIG__=17", - "__STDC_UTF_32__=1", - "__INT_FAST8_WIDTH__=32", - "__DEC_EVAL_METHOD__=2", - "__FLT32X_MAX__=1.7976931348623157e+308F32x", - "__XTENSA__=1", - "__ORDER_BIG_ENDIAN__=4321", - "__cpp_runtime_arrays=198712", - "__UINT64_TYPE__=long long unsigned int", - "__UINT32_C(c)=c ## U", - "__INTMAX_MAX__=0x7fffffffffffffffLL", - "__cpp_alias_templates=200704", - "__BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__", - "__FLT_DENORM_MIN__=1.4012984643248171e-45F", - "__INT8_MAX__=0x7f", - "__LONG_WIDTH__=32", - "__UINT_FAST32_TYPE__=unsigned int", - "__CHAR32_TYPE__=unsigned int", - "__FLT_MAX__=3.4028234663852886e+38F", - "__cpp_constexpr=201304", - "__INT32_TYPE__=int", - "__SIZEOF_DOUBLE__=8", - "__cpp_exceptions=199711", - "__FLT_MIN_10_EXP__=(-37)", - "__FLT64_MIN__=2.2250738585072014e-308F64", - "__INT_LEAST32_WIDTH__=32", - "__INTMAX_TYPE__=long long int", - "__DEC128_MAX_EXP__=6145", - "__FLT32X_HAS_QUIET_NAN__=1", - "__ATOMIC_CONSUME=1", - "__GNUC_MINOR__=4", - "__INT_FAST16_WIDTH__=32", - "__UINTMAX_MAX__=0xffffffffffffffffULL", - "__DEC32_MANT_DIG__=7", - "__FLT32X_DENORM_MIN__=4.9406564584124654e-324F32x", - "__DBL_MAX_10_EXP__=308", - "__LDBL_DENORM_MIN__=4.9406564584124654e-324L", - "__INT16_C(c)=c", - "__cpp_generic_lambdas=201304", - "__STDC__=1", - "__FLT32X_DIG__=15", - "__PTRDIFF_TYPE__=int", - "__ATOMIC_SEQ_CST=5", - "__UINT32_TYPE__=unsigned int", - "__FLT32X_MIN_10_EXP__=(-307)", - "__UINTPTR_TYPE__=unsigned int", - "__DEC64_SUBNORMAL_MIN__=0.000000000000001E-383DD", - "__DEC128_MANT_DIG__=34", - "__LDBL_MIN_10_EXP__=(-307)", - "__SIZEOF_LONG_LONG__=8", - "__cpp_user_defined_literals=200809", - "__GCC_ATOMIC_LLONG_LOCK_FREE=1", - "__FLT32X_MIN__=2.2250738585072014e-308F32x", - "__LDBL_DIG__=15", - "__FLT_DECIMAL_DIG__=9", - "__UINT_FAST16_MAX__=0xffffffffU", - "__GCC_ATOMIC_SHORT_LOCK_FREE=2", - "__INT_LEAST64_WIDTH__=64", - "__UINT_FAST8_TYPE__=unsigned int", - "__cpp_init_captures=201304", - "__ATOMIC_ACQ_REL=4", - "__ATOMIC_RELEASE=3", + "ARDUINO_ESP8266_WEMOS_D1MINI", + "ARDUINO_ARCH_ESP8266", + "ARDUINO_BOARD=\"ESP8266_WEMOS_D1MINI\"", + "ARDUINO_BOARD_ID=\"d1_mini\"", + "FLASHMODE_DIO", "USBCON" ] } diff --git a/examples/customHTML/customHTML.ino b/examples/customHTML/customHTML.ino index 40ab4343..23dd277a 100644 --- a/examples/customHTML/customHTML.ino +++ b/examples/customHTML/customHTML.ino @@ -189,7 +189,7 @@ void setup() { // Add a new options box with custom code injected server.addOptionBox("Custom HTML"); // How many times you need (for example one in different option box) - server.addHTML(custom_html, "fetch-test", /*overwite*/ true); + server.addHTML(custom_html, "fetch-test", /*overwite*/ false); // Add a new options box server.addOptionBox("ThingsBoard"); @@ -201,7 +201,7 @@ void setup() { server.addOption(TB_DEVICE_KEY, tb_device_key); server.addOption(TB_SECRET_KEY, tb_secret_key); server.addOption(TB_DEVICE_TOKEN, tb_deviceToken); - server.addHTML(thingsboard_htm, "ts", /*overwite file*/ true); + server.addHTML(thingsboard_htm, "ts", /*overwite file*/ false); // CSS will be appended to HTML head server.addCSS(custom_css, "fetch", /*overwite file*/ false); @@ -209,9 +209,9 @@ void setup() { server.addJavascript(custom_script, "fetch", /*overwite file*/ false); server.addJavascript(thingsboard_script, "ts", /*overwite file*/ false); - // Add custom page title to /setup + Add custom page title to /setup server.setSetupPageTitle("Test setup page"); - // Add custom logo to /setup page with custom size + Add custom logo to /setup page with custom size server.setLogoBase64(base64_logo, "128", "128", /*overwite file*/ true); // Enable ACE FS file web editor and add FS info callback fucntion diff --git a/src/AsyncFsWebServer.cpp b/src/AsyncFsWebServer.cpp index 4dd01ca0..ad05fe3d 100644 --- a/src/AsyncFsWebServer.cpp +++ b/src/AsyncFsWebServer.cpp @@ -374,7 +374,7 @@ void AsyncFsWebServer::handleScanNetworks(AsyncWebServerRequest *request) { int res = WiFi.scanNetworks(); wdt_enable(4000); #else - int res = WiFi.scanNetworks(); + int res = WiFi.scanNetworks(false, false, false, 50); #endif log_info(" done!\nNumber of networks: %d", res); @@ -557,7 +557,7 @@ void AsyncFsWebServer::doWifiConnection(AsyncWebServerRequest *request) { WiFi.begin(ssid.c_str(), pass.c_str()); if (WiFi.status() == WL_CONNECTED && newSSID) { - log_i("Disconnect from current WiFi network"); + log_info("Disconnect from current WiFi network"); WiFi.disconnect(); delay(10); } @@ -595,7 +595,7 @@ void AsyncFsWebServer::doWifiConnection(AsyncWebServerRequest *request) { "

    Note: disconnect your browser from ESP AP and then reload %s", ssid.c_str(), serverLoc.c_str(), serverLoc.c_str() ); - log_d("%s", resp); + log_debug("%s", resp); request->send(200, "application/json", resp); } }