diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40cda2b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.vs +build +zTC1.* +TC1/http_server/index.c diff --git a/TC1/TC1.mk b/TC1/TC1.mk index c9234d2..2c7e95f 100644 --- a/TC1/TC1.mk +++ b/TC1/TC1.mk @@ -36,8 +36,7 @@ $(NAME)_SOURCES := main.c\ user_ota.c\ user_power.c\ user_function.c\ - http_server/app_httpd.c \ - http_server/web_data.c + http_server/app_httpd.c $(NAME)_COMPONENTS := protocols/SNTP\ protocols/mqtt\ diff --git a/TC1/http_server/app_httpd.c b/TC1/http_server/app_httpd.c index 3497988..7f44e29 100644 --- a/TC1/http_server/app_httpd.c +++ b/TC1/http_server/app_httpd.c @@ -37,9 +37,14 @@ #include "mico.h" #include "httpd_priv.h" #include "app_httpd.h" +#include "user_gpio.h" #include "main.h" +#include "web_data.c" + +#define HTTP_CONTENT_HTML_ZIP "text/html\r\nContent-Encoding: gzip" + #define app_httpd_log(M, ...) custom_log("apphttpd", M, ##__VA_ARGS__) #define HTTPD_HDR_DEFORT (HTTPD_HDR_ADD_SERVER|HTTPD_HDR_ADD_CONN_CLOSE|HTTPD_HDR_ADD_PRAGMA_NO_CACHE) @@ -47,161 +52,243 @@ static bool is_http_init; static bool is_handlers_registered; struct httpd_wsgi_call g_app_handlers[]; -static int web_send_wifisetting_page(httpd_request_t *req) +static int http_get_index_page(httpd_request_t *req) { - OSStatus err = kNoErr; - - err = httpd_send_all_header(req, HTTP_RES_200, sizeof(wifisetting), HTTP_CONTENT_HTML_STR); - require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisetting headers.") ); - - err = httpd_send_body(req->sock, wifisetting, sizeof(wifisetting)); - require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisetting body.") ); - + OSStatus err = kNoErr; + + err = httpd_send_all_header(req, HTTP_RES_200, sizeof(index_html), HTTP_CONTENT_HTML_ZIP); + require_noerr_action(err, exit, app_httpd_log("ERROR: Unable to send http wifisetting headers.")); + + err = httpd_send_body(req->sock, index_html, sizeof(index_html)); + require_noerr_action(err, exit, app_httpd_log("ERROR: Unable to send http wifisetting body.")); + exit: - return err; + return err; +} + +static int http_get_socket_status(httpd_request_t *req) +{ + OSStatus err = kNoErr; + + char* status = get_socket_status(); + + err = httpd_send_all_header(req, HTTP_RES_200, strlen(status), HTTP_CONTENT_HTML_STR); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http socket_status headers.") ); + + err = httpd_send_body(req->sock, socket_status, strlen(status)); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http socket_status body.") ); + +exit: + return err; +} + +static int http_set_socket_status(httpd_request_t *req) +{ + OSStatus err = kNoErr; + + int buf_size = 512; + char *buf = malloc(buf_size); + + err = httpd_get_data(req, buf, buf_size); + require_noerr(err, save_out); + + set_socket_status(buf); + + char* status = "OK"; + + err = httpd_send_all_header(req, HTTP_RES_200, strlen(status), HTTP_CONTENT_HTML_STR); + require_noerr_action(err, save_out, app_httpd_log("ERROR: Unable to send http socket_status headers.")); + + err = httpd_send_body(req->sock, status, strlen(status)); + require_noerr_action(err, save_out, app_httpd_log("ERROR: Unable to send http socket_status body.")); + +save_out: + if (buf) free(buf); + return err; } static int web_send_result_page(httpd_request_t *req) { - OSStatus err = kNoErr; - bool para_succ = false; - int buf_size = 512; - char *buf; - char value_ssid[maxSsidLen]; - char value_pass[maxKeyLen]; - char value_user[maxNameLen]; - mico_Context_t* context = NULL; - - context = mico_system_context_get( ); - - buf = malloc(buf_size); - - err = httpd_get_data(req, buf, buf_size); - require_noerr( err, Save_Out ); - - err = httpd_get_tag_from_post_data(buf, "SSID", value_ssid, maxSsidLen); - require_noerr( err, Save_Out ); - - err = httpd_get_tag_from_post_data(buf, "USER", value_user, maxNameLen); - require_noerr( err, Save_Out ); + OSStatus err = kNoErr; + bool para_succ = false; + int buf_size = 512; + char *buf; + char value_ssid[maxSsidLen]; + char value_pass[maxKeyLen]; + char value_user[maxNameLen]; + mico_Context_t* context = NULL; + + context = mico_system_context_get( ); + + buf = malloc(buf_size); + + err = httpd_get_data(req, buf, buf_size); + require_noerr( err, Save_Out ); + + err = httpd_get_tag_from_post_data(buf, "SSID", value_ssid, maxSsidLen); + require_noerr( err, Save_Out ); + + err = httpd_get_tag_from_post_data(buf, "USER", value_user, maxNameLen); + require_noerr( err, Save_Out ); + + if(!strncmp(value_ssid, "\0", 1)) + goto Save_Out; + if(!strncmp(value_user, "\0", 1)) + goto Save_Out; + + strncpy(context->micoSystemConfig.ssid, value_ssid, maxSsidLen); + strncpy(user_config->user, value_user, maxNameLen); + + err = httpd_get_tag_from_post_data(buf, "PASS", value_pass, maxKeyLen); + require_noerr( err, Save_Out ); + + strncpy(context->micoSystemConfig.key, value_pass, maxKeyLen); + strncpy(context->micoSystemConfig.user_key, value_pass, maxKeyLen); + context->micoSystemConfig.keyLength = strlen(context->micoSystemConfig.key); + context->micoSystemConfig.user_keyLength = strlen(context->micoSystemConfig.key); + + context->micoSystemConfig.channel = 0; + memset(context->micoSystemConfig.bssid, 0x0, 6); + context->micoSystemConfig.security = SECURITY_TYPE_AUTO; + context->micoSystemConfig.dhcpEnable = true; + + para_succ = true; - if(!strncmp(value_ssid, "\0", 1)) - goto Save_Out; - if(!strncmp(value_user, "\0", 1)) - goto Save_Out; - - strncpy(context->micoSystemConfig.ssid, value_ssid, maxSsidLen); - strncpy(user_config->user, value_user, maxNameLen); - - err = httpd_get_tag_from_post_data(buf, "PASS", value_pass, maxKeyLen); - require_noerr( err, Save_Out ); - - strncpy(context->micoSystemConfig.key, value_pass, maxKeyLen); - strncpy(context->micoSystemConfig.user_key, value_pass, maxKeyLen); - context->micoSystemConfig.keyLength = strlen(context->micoSystemConfig.key); - context->micoSystemConfig.user_keyLength = strlen(context->micoSystemConfig.key); - - context->micoSystemConfig.channel = 0; - memset(context->micoSystemConfig.bssid, 0x0, 6); - context->micoSystemConfig.security = SECURITY_TYPE_AUTO; - context->micoSystemConfig.dhcpEnable = true; - - para_succ = true; - Save_Out: - - if(para_succ == true) - { - err = httpd_send_all_header(req, HTTP_RES_200, sizeof(wifisuccess), HTTP_CONTENT_HTML_STR); - require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisuccess headers.") ); - - err = httpd_send_body(req->sock, wifisuccess, sizeof(wifisuccess)); - require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wifisuccess body.") ); - - context->micoSystemConfig.configured = allConfigured; - - mico_system_context_update(context); - - mico_system_power_perform( context, eState_Software_Reset ); - } - else - { - err = httpd_send_all_header(req, HTTP_RES_200, sizeof(wififail), HTTP_CONTENT_HTML_STR); - require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wififail headers.") ); - - err = httpd_send_body(req->sock, wififail, sizeof(wififail)); - require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http wififail body.") ); - } - -exit: - if(buf) free(buf); - return err; + + if(para_succ == true) + { + err = httpd_send_all_header(req, HTTP_RES_200, sizeof(index_html), HTTP_CONTENT_HTML_STR); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http index_html headers.") ); + + err = httpd_send_body(req->sock, index_html, sizeof(index_html)); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http index_html body.") ); + + context->micoSystemConfig.configured = allConfigured; + + mico_system_context_update(context); + + mico_system_power_perform( context, eState_Software_Reset ); + } + else + { + err = httpd_send_all_header(req, HTTP_RES_200, sizeof(index_html), HTTP_CONTENT_HTML_STR); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http index_html headers.") ); + + err = httpd_send_body(req->sock, index_html, sizeof(index_html)); + require_noerr_action( err, exit, app_httpd_log("ERROR: Unable to send http index_html body.") ); + } + +exit: + if(buf) free(buf); + return err; +} + +static int http_wifi_config(httpd_request_t *req) +{ + OSStatus err = kNoErr; + + int buf_size = 512; + int ssid_size = 32; + int key_size = 64; + char *buf = malloc(buf_size); + char *wifi_ssid = malloc(ssid_size); + char *wifi_key = malloc(key_size); + + err = httpd_get_data(req, buf, buf_size); + require_noerr(err, save_out); + + err = httpd_get_tag_from_post_data(buf, "ssid", wifi_ssid, ssid_size); + require_noerr(err, save_out); + + err = httpd_get_tag_from_post_data(buf, "key", wifi_key, key_size); + require_noerr(err, save_out); + + wifi_connect(wifi_ssid, wifi_key); + + char* status = "OK"; + + err = httpd_send_all_header(req, HTTP_RES_200, strlen(status), HTTP_CONTENT_HTML_STR); + require_noerr_action(err, exit, app_httpd_log("ERROR: Unable to send http socket_status headers.")); + + err = httpd_send_body(req->sock, status, strlen(status)); + require_noerr_action(err, exit, app_httpd_log("ERROR: Unable to send http socket_status body.")); + +exit: + return err; + +save_out: + if (buf) free(buf); + if (ssid_size) free(ssid_size); + if (key_size) free(key_size); + return err; } struct httpd_wsgi_call g_app_handlers[] = { - {"/", HTTPD_HDR_DEFORT, 0, web_send_wifisetting_page, NULL, NULL, NULL}, - {"/result.htm", HTTPD_HDR_DEFORT, 0, NULL, web_send_result_page, NULL, NULL}, - {"/setting.htm", HTTPD_HDR_DEFORT, 0, web_send_wifisetting_page, NULL, NULL, NULL}, + {"/", HTTPD_HDR_DEFORT, 0, http_get_index_page, NULL, NULL, NULL}, + {"/result.htm", HTTPD_HDR_DEFORT, 0, NULL, web_send_result_page, NULL, NULL}, + {"/socket", HTTPD_HDR_DEFORT, 0, http_get_socket_status, http_set_socket_status, NULL, NULL}, + {"/wifi/config", HTTPD_HDR_DEFORT, 0, NULL, http_wifi_config, NULL, NULL}, }; static int g_app_handlers_no = sizeof(g_app_handlers)/sizeof(struct httpd_wsgi_call); static void app_http_register_handlers() { - int rc; - rc = httpd_register_wsgi_handlers(g_app_handlers, g_app_handlers_no); - if (rc) { - app_httpd_log("failed to register test web handler"); - } + int rc; + rc = httpd_register_wsgi_handlers(g_app_handlers, g_app_handlers_no); + if (rc) { + app_httpd_log("failed to register test web handler"); + } } static int _app_httpd_start() { - OSStatus err = kNoErr; - app_httpd_log("initializing web-services"); - - /*Initialize HTTPD*/ - if(is_http_init == false) { - err = httpd_init(); - require_noerr_action( err, exit, app_httpd_log("failed to initialize httpd") ); - is_http_init = true; - } - - /*Start http thread*/ - err = httpd_start(); - if(err != kNoErr) { - app_httpd_log("failed to start httpd thread"); - httpd_shutdown(); - } + OSStatus err = kNoErr; + app_httpd_log("initializing web-services"); + + /*Initialize HTTPD*/ + if(is_http_init == false) { + err = httpd_init(); + require_noerr_action( err, exit, app_httpd_log("failed to initialize httpd") ); + is_http_init = true; + } + + /*Start http thread*/ + err = httpd_start(); + if(err != kNoErr) { + app_httpd_log("failed to start httpd thread"); + httpd_shutdown(); + } exit: - return err; + return err; } int app_httpd_start( void ) { - OSStatus err = kNoErr; - - err = _app_httpd_start(); - require_noerr( err, exit ); - - if (is_handlers_registered == false) { - app_http_register_handlers(); - is_handlers_registered = true; - } - + OSStatus err = kNoErr; + + err = _app_httpd_start(); + require_noerr( err, exit ); + + if (is_handlers_registered == false) { + app_http_register_handlers(); + is_handlers_registered = true; + } + exit: - return err; + return err; } int app_httpd_stop() { - OSStatus err = kNoErr; - - /* HTTPD and services */ - app_httpd_log("stopping down httpd"); - err = httpd_stop(); - require_noerr_action( err, exit, app_httpd_log("failed to halt httpd") ); - + OSStatus err = kNoErr; + + /* HTTPD and services */ + app_httpd_log("stopping down httpd"); + err = httpd_stop(); + require_noerr_action( err, exit, app_httpd_log("failed to halt httpd") ); + exit: - return err; + return err; } diff --git a/TC1/http_server/app_httpd.h b/TC1/http_server/app_httpd.h index 1683283..d023eb8 100644 --- a/TC1/http_server/app_httpd.h +++ b/TC1/http_server/app_httpd.h @@ -31,12 +31,6 @@ ****************************************************************************** */ -extern const unsigned char wififail[0xAC9]; - -extern const unsigned char wifisetting[3618]; - -extern const unsigned char wifisuccess[0x9BC]; - int app_httpd_start( void ); int app_httpd_stop(); diff --git a/TC1/http_server/index.html b/TC1/http_server/index.html new file mode 100644 index 0000000..e7149a2 --- /dev/null +++ b/TC1/http_server/index.html @@ -0,0 +1,310 @@ + + + + + +Welcom TC1 + + + + + + + +
+ Power Controll + + + + + + + + + + + +
+ + + + + + + + +
+ + + + + + + + +
+
+ + OK +
+
+ +
+ Power Status +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+ Network config + + + + + + + + + + + + + + + + + +
SSID: + + +
SSID: + +
PSWD: + +
MODE: + + + + +
+
+ + OK +
+
+ +
+ Connect Status + + + + + + + + + + + + + +
IP:192.168.33.108
Mask:255.255.255.0
Gateway:192.168.33.1
+
+ + + + diff --git a/TC1/http_server/test.py b/TC1/http_server/test.py new file mode 100644 index 0000000..84643f6 --- /dev/null +++ b/TC1/http_server/test.py @@ -0,0 +1,25 @@ +#! /bin/env python3 + +import os +import glob +import binascii +import gzip +try: + io = __import__("io").BytesIO +except: + io = __import__("StringIO").StringIO + +for fn in glob.glob('*.html'): + s = open(fn, 'rb').read() + dat = io() + with gzip.GzipFile(fileobj=dat, mode="w") as f: + f.write(s) + dat = dat.getvalue() + try: + s = ','.join(["0x%02x" % c for c in dat]) + except: + s = ','.join(["0x"+binascii.hexlify(c) for c in dat]) + + fn = fn.replace('.', '_') + print("const unsigned char %s[0x%x] = {%s};" % (fn, len(dat), s)) + diff --git a/TC1/http_server/web_data.c b/TC1/http_server/web_data.c index 7758646..b8785c0 100644 --- a/TC1/http_server/web_data.c +++ b/TC1/http_server/web_data.c @@ -1,601 +1 @@ -/** - ****************************************************************************** - * @file web_data.c - * @author QQ DING - * @version V1.0.0 - * @date 1-September-2015 - * @brief This header file contains some data page - ****************************************************************************** - * - * The MIT License - * Copyright (c) 2016 MXCHIP Inc. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is furnished - * to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR - * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - ****************************************************************************** - */ - - -const unsigned char wififail[0xAC9] = { - 0x3C, 0x21, 0x44, 0x4F, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x50, - 0x55, 0x42, 0x4C, 0x49, 0x43, 0x20, 0x22, 0x2D, 0x2F, 0x2F, 0x57, 0x33, 0x43, 0x2F, 0x2F, 0x44, - 0x54, 0x44, 0x20, 0x58, 0x48, 0x54, 0x4D, 0x4C, 0x20, 0x31, 0x2E, 0x30, 0x20, 0x54, 0x72, 0x61, - 0x6E, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x2F, 0x2F, 0x45, 0x4E, 0x22, 0x20, 0x22, - 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, - 0x67, 0x2F, 0x54, 0x52, 0x2F, 0x78, 0x68, 0x74, 0x6D, 0x6C, 0x31, 0x2F, 0x44, 0x54, 0x44, 0x2F, - 0x78, 0x68, 0x74, 0x6D, 0x6C, 0x31, 0x2D, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x69, 0x74, 0x69, 0x6F, - 0x6E, 0x61, 0x6C, 0x2E, 0x64, 0x74, 0x64, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x74, 0x6D, 0x6C, - 0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, - 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x31, 0x39, 0x39, 0x39, 0x2F, 0x78, - 0x68, 0x74, 0x6D, 0x6C, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, 0x0A, - 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x65, 0x71, 0x75, 0x69, 0x76, - 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x22, 0x20, - 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, 0x74, - 0x6D, 0x6C, 0x22, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3D, 0x22, 0x75, 0x74, 0x66, - 0x2D, 0x38, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x74, - 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3D, 0x64, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, - 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, 0x69, - 0x6D, 0x75, 0x6D, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x75, - 0x73, 0x65, 0x72, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x30, 0x22, 0x20, - 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6F, 0x72, 0x74, 0x22, 0x3E, - 0x0D, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, 0xE4, - 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x74, 0x69, 0x74, - 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x20, 0x62, - 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x70, 0x2C, 0x20, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, - 0x68, 0x33, 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x2C, 0x20, - 0x75, 0x6C, 0x2C, 0x20, 0x6F, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x2C, 0x20, 0x64, 0x6C, 0x2C, 0x20, - 0x64, 0x74, 0x2C, 0x20, 0x64, 0x64, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x74, - 0x68, 0x2C, 0x20, 0x74, 0x64, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x66, 0x69, 0x65, - 0x6C, 0x64, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x6C, 0x65, 0x67, 0x65, 0x6E, 0x64, 0x2C, 0x20, 0x69, - 0x6E, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, 0x2C, 0x20, - 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, 0x20, - 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x20, - 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, - 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x62, - 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, - 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x62, - 0x61, 0x73, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, - 0x66, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x20, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, - 0x66, 0x74, 0x20, 0x59, 0x61, 0x48, 0x65, 0x69, 0x22, 0x2C, 0x22, 0x69, 0x63, 0x6F, 0x6E, 0x66, - 0x6F, 0x6E, 0x74, 0x22, 0x2C, 0x22, 0x46, 0x6F, 0x6E, 0x74, 0x41, 0x77, 0x65, 0x73, 0x6F, 0x6D, - 0x65, 0x22, 0x20, 0x20, 0x21, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x61, 0x6E, 0x74, 0x3B, 0x0D, - 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, 0x68, 0x33, 0x2C, 0x20, - 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x66, - 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x6E, 0x6F, 0x72, 0x6D, - 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x7B, 0x0D, 0x0A, 0x09, - 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x23, 0x66, 0x35, 0x66, - 0x35, 0x66, 0x35, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x68, - 0x74, 0x6D, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, - 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x74, - 0x6D, 0x6C, 0x7B, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x36, 0x32, 0x2E, - 0x35, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x0D, 0x0A, 0x2E, 0x6D, 0x61, 0x69, 0x6E, 0x7B, 0x0D, 0x0A, - 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, - 0x69, 0x6E, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, - 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x72, 0x65, 0x6C, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, - 0x67, 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, - 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, - 0x69, 0x6E, 0x67, 0x3A, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, - 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, - 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, - 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74, 0x3A, 0x76, 0x65, 0x72, 0x74, - 0x69, 0x63, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, - 0x3A, 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, - 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, - 0x3B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, - 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, - 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, - 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x33, 0x20, - 0x7B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, - 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, - 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, - 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, - 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, - 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x63, - 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, - 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x73, 0x69, - 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x32, 0x70, 0x78, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, - 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x2D, - 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, - 0x7A, 0x65, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, - 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2E, 0x62, 0x74, - 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, - 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x3B, - 0x0D, 0x0A, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, - 0x69, 0x66, 0x69, 0x2D, 0x66, 0x61, 0x69, 0x6C, 0x20, 0x2E, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, - 0x74, 0x7B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, - 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x09, - 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, - 0x3B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, - 0x6B, 0x69, 0x74, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x73, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, - 0x31, 0x3B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, - 0x09, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x20, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, - 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, - 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x46, - 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x66, 0x61, - 0x69, 0x6C, 0x20, 0x68, 0x32, 0x7B, 0x0D, 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, - 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, - 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, - 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, - 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x20, 0x30, - 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, - 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, - 0x66, 0x61, 0x69, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x69, 0x6E, - 0x64, 0x65, 0x6E, 0x74, 0x3A, 0x32, 0x72, 0x65, 0x6D, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, - 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x36, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, - 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x32, 0x38, 0x70, 0x78, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x7B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, - 0x74, 0x2D, 0x64, 0x65, 0x63, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x6E, 0x6F, - 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x30, 0x70, - 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, - 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, - 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, - 0x65, 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x63, 0x6F, - 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x72, - 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, - 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, - 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, - 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, - 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x75, 0x74, 0x6C, - 0x69, 0x6E, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x63, 0x75, 0x72, - 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x09, - 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, 0x6E, 0x74, 0x65, - 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x37, - 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x30, - 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, - 0x72, 0x65, 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, - 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x62, 0x74, - 0x6E, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, - 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x33, 0x35, 0x70, 0x78, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x7D, - 0x0D, 0x0A, 0x3C, 0x2F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x68, 0x65, - 0x61, 0x64, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x62, 0x6F, 0x64, 0x79, 0x3E, 0x0D, 0x0A, 0x3C, - 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x6D, 0x61, 0x69, 0x6E, 0x20, - 0x77, 0x69, 0x66, 0x69, 0x2D, 0x66, 0x61, 0x69, 0x6C, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x3C, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, 0x22, 0x23, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, - 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x22, 0x3E, 0xE4, - 0xB8, 0x8A, 0xE4, 0xB8, 0x80, 0xE9, 0xA1, 0xB5, 0x3C, 0x2F, 0x61, 0x3E, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x33, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, - 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x68, 0x33, - 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3E, - 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, - 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x32, 0x3E, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0xE5, 0xA4, - 0xB1, 0xE8, 0xB4, 0xA5, 0xEF, 0xBC, 0x81, 0x3C, 0x2F, 0x68, 0x32, 0x3E, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x6C, - 0x61, 0x73, 0x73, 0x3D, 0x22, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x62, 0x74, 0x6E, - 0x22, 0x3E, 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, 0x22, 0x2F, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6E, 0x67, 0x2E, 0x68, 0x74, 0x6D, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, - 0x62, 0x74, 0x6E, 0x20, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x20, 0x62, 0x74, 0x6E, 0x2D, - 0x74, 0x72, 0x79, 0x22, 0x3E, 0xE5, 0x86, 0x8D, 0xE6, 0xAC, 0xA1, 0xE9, 0x87, 0x8D, 0xE8, 0xAF, - 0x95, 0x3C, 0x2F, 0x61, 0x3E, 0x3C, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x64, - 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x2F, 0x62, 0x6F, 0x64, 0x79, 0x3E, 0x0D, 0x0A, - 0x3C, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A -}; - - -const unsigned char wifisetting[] = { - 0x3C, 0x21, 0x64, 0x6F, 0x63, 0x74, 0x79, 0x70, 0x65, 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, - 0x0A, 0x3C, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, - 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x65, 0x71, 0x75, 0x69, - 0x76, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, - 0x74, 0x6D, 0x6C, 0x22, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3D, 0x22, 0x75, 0x74, - 0x66, 0x2D, 0x38, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x63, 0x6F, 0x6E, - 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3D, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, - 0x6C, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, - 0x69, 0x6D, 0x75, 0x6D, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, - 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x30, 0x22, - 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6F, 0x72, 0x74, 0x22, - 0x3E, 0x0D, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, - 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x74, 0x69, - 0x74, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x20, - 0x20, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x70, 0x2C, 0x20, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, - 0x2C, 0x20, 0x68, 0x33, 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, - 0x2C, 0x20, 0x75, 0x6C, 0x2C, 0x20, 0x6F, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x2C, 0x20, 0x64, 0x6C, - 0x2C, 0x20, 0x64, 0x74, 0x2C, 0x20, 0x64, 0x64, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, - 0x20, 0x74, 0x68, 0x2C, 0x20, 0x74, 0x64, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x66, - 0x69, 0x65, 0x6C, 0x64, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x6C, 0x65, 0x67, 0x65, 0x6E, 0x64, 0x2C, - 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, - 0x2C, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, - 0x2C, 0x20, 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x71, 0x75, 0x6F, 0x74, - 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, - 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, - 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, - 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, - 0x09, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, - 0x20, 0x62, 0x61, 0x73, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, - 0x74, 0x2D, 0x66, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x20, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, - 0x73, 0x6F, 0x66, 0x74, 0x20, 0x59, 0x61, 0x48, 0x65, 0x69, 0x22, 0x2C, 0x22, 0x69, 0x63, 0x6F, - 0x6E, 0x66, 0x6F, 0x6E, 0x74, 0x22, 0x2C, 0x22, 0x46, 0x6F, 0x6E, 0x74, 0x41, 0x77, 0x65, 0x73, - 0x6F, 0x6D, 0x65, 0x22, 0x20, 0x20, 0x21, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x61, 0x6E, 0x74, - 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, 0x68, 0x33, - 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x20, 0x7B, 0x0D, 0x0A, - 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x6E, 0x6F, - 0x72, 0x6D, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x7B, 0x0D, - 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x23, 0x66, - 0x35, 0x66, 0x35, 0x66, 0x35, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x2C, - 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x68, 0x65, - 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, - 0x68, 0x74, 0x6D, 0x6C, 0x7B, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x36, - 0x32, 0x2E, 0x35, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x6D, 0x61, 0x69, 0x6E, 0x7B, 0x0D, 0x0A, - 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, - 0x69, 0x6E, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, - 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x72, 0x65, 0x6C, 0x61, 0x74, - 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, - 0x67, 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, - 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, - 0x69, 0x6E, 0x67, 0x3A, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, - 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, - 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, - 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74, 0x3A, 0x76, 0x65, 0x72, 0x74, - 0x69, 0x63, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, - 0x3A, 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, - 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, - 0x3B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, - 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, - 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, - 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x33, 0x20, - 0x7B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, - 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, - 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, - 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, - 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, - 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x75, - 0x72, 0x6C, 0x28, 0x2E, 0x2E, 0x2F, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x73, 0x2F, 0x69, 0x63, 0x6F, - 0x6E, 0x30, 0x34, 0x2E, 0x70, 0x6E, 0x67, 0x29, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, - 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, - 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x32, - 0x70, 0x78, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, - 0x3A, 0x20, 0x34, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, - 0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, - 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x30, 0x70, - 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, - 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, - 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x65, 0x66, - 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x6F, 0x70, 0x3A, 0x20, 0x30, - 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x65, - 0x74, 0x20, 0x2E, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, - 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, - 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, - 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x78, 0x2D, - 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x77, - 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, 0x73, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, - 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, - 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x69, 0x6E, 0x66, 0x6F, - 0x2D, 0x62, 0x6F, 0x78, 0x20, 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, - 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3A, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, - 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 0x3B, 0x0D, - 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x31, 0x70, 0x78, 0x20, 0x73, 0x6F, - 0x6C, 0x69, 0x64, 0x20, 0x23, 0x64, 0x37, 0x64, 0x37, 0x64, 0x37, 0x3B, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x35, 0x38, 0x70, 0x78, 0x3B, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, - 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x78, 0x2D, - 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, - 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, - 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x3A, - 0x20, 0x2D, 0x31, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x70, 0x61, 0x64, 0x64, - 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x31, 0x39, 0x70, 0x78, 0x20, 0x31, 0x35, 0x70, 0x78, 0x20, 0x31, - 0x39, 0x70, 0x78, 0x20, 0x31, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x69, - 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, - 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, - 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2D, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x34, - 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, - 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, - 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x74, 0x72, 0x61, 0x6E, - 0x73, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x75, 0x74, 0x6C, 0x69, - 0x6E, 0x65, 0x3A, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x75, 0x6D, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, - 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x3A, 0x66, 0x69, 0x72, - 0x73, 0x74, 0x2D, 0x6F, 0x66, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x7B, 0x0D, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70, 0x2D, 0x6C, 0x65, 0x66, - 0x74, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x74, 0x6F, 0x70, 0x2D, 0x72, - 0x69, 0x67, 0x68, 0x74, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, - 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, - 0x6C, 0x64, 0x3A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x6F, 0x66, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, - 0x7B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, - 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x6C, 0x65, 0x66, 0x74, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, - 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x6F, 0x72, 0x64, - 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x72, 0x69, 0x67, 0x68, 0x74, 0x2D, - 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, - 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, - 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, - 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, 0x69, - 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x62, - 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, - 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x3B, 0x0D, 0x0A, 0x09, - 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, - 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, - 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, - 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, - 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, - 0x75, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, - 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x3B, - 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, - 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, 0x64, 0x74, - 0x68, 0x3A, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, - 0x67, 0x3A, 0x30, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, - 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, - 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x66, 0x35, 0x36, 0x63, - 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, - 0x2D, 0x62, 0x74, 0x6E, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, - 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x33, 0x35, 0x70, 0x78, 0x20, 0x30, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x3C, 0x2F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x0D, - 0x0A, 0x3C, 0x2F, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x62, 0x6F, 0x64, - 0x79, 0x3E, 0x0D, 0x0A, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, - 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x65, 0x74, 0x22, 0x3E, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x20, 0x63, 0x6C, - 0x61, 0x73, 0x73, 0x3D, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3E, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, 0x22, - 0x23, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6E, 0x22, 0x3E, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0x80, 0xE9, 0xA1, 0xB5, 0x3C, - 0x2F, 0x61, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x33, - 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, - 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x68, 0x33, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, - 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, - 0x22, 0x3E, 0x0D, 0x0A, 0x09, 0x3C, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6F, - 0x6E, 0x3D, 0x22, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2E, 0x68, 0x74, 0x6D, 0x22, 0x20, 0x6D, - 0x65, 0x74, 0x68, 0x6F, 0x64, 0x3D, 0x22, 0x70, 0x6F, 0x73, 0x74, 0x22, 0x3E, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, - 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x69, 0x6E, - 0x66, 0x6F, 0x2D, 0x62, 0x6F, 0x78, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, - 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x22, 0x3E, 0x0D, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x69, 0x6E, 0x70, - 0x75, 0x74, 0x20, 0x69, 0x64, 0x3D, 0x22, 0x73, 0x73, 0x69, 0x64, 0x22, 0x20, 0x74, 0x79, 0x70, - 0x65, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x22, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x53, - 0x53, 0x49, 0x44, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x22, 0x20, 0x70, 0x6C, - 0x61, 0x63, 0x65, 0x68, 0x6F, 0x6C, 0x64, 0x65, 0x72, 0x3D, 0x22, 0x57, 0x49, 0x46, 0x49, 0xE5, - 0x90, 0x8D, 0xE7, 0xA7, 0xB0, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, - 0x22, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x22, 0x3E, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x69, 0x6E, - 0x70, 0x75, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6F, - 0x72, 0x64, 0x22, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x50, 0x41, 0x53, 0x53, 0x22, 0x20, - 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, 0x22, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x68, 0x6F, - 0x6C, 0x64, 0x65, 0x72, 0x3D, 0x22, 0xE8, 0xBE, 0x93, 0xE5, 0x85, 0xA5, 0xE5, 0xAF, 0x86, 0xE7, - 0xA0, 0x81, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - - 0x20, 0x20, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x69, 0x6E, - 0x70, 0x75, 0x74, 0x2D, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x69, 0x6E, 0x70, 0x75, 0x74, - 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x20, 0x6E, 0x61, 0x6D, - 0x65, 0x3D, 0x22, 0x55, 0x53, 0x45, 0x52, 0x22, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3D, 0x22, - 0x22, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x68, 0x6F, 0x6C, 0x64, 0x65, 0x72, 0x3D, 0x22, 0xE8, - 0xBE, 0x93, 0xE5, 0x85, 0xA5, 0xE7, 0x99, 0xBB, 0xE5, 0xBD, 0x95, 0xE9, 0x82, 0xAE, 0xE7, 0xAE, - 0xB1, 0x2C, 0xE6, 0xB3, 0xA8, 0xE6, 0x84, 0x8F, 0xE7, 0x94, 0xA8, 0xE6, 0x88, 0xB7, 0xE8, 0xBE, - 0x93, 0xE5, 0x85, 0xA5, 0xE9, 0x94, 0x99, 0xE8, 0xAF, 0xAF, 0xE5, 0xB0, 0x86, 0xE5, 0xAF, 0xBC, - 0xE8, 0x87, 0xB4, 0xE6, 0x97, 0xA0, 0xE6, 0xB3, 0x95, 0xE7, 0xBB, 0x91, 0xE5, 0xAE, 0x9A, 0xE8, - 0xAE, 0xBE, 0xE5, 0xA4, 0x87, 0x21, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, - - 0x3C, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x6C, 0x61, - 0x73, 0x73, 0x3D, 0x22, 0x67, 0x65, 0x74, 0x65, 0x77, 0x61, 0x79, 0x2D, 0x62, 0x74, 0x6E, 0x22, - 0x3E, 0x3C, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x3D, 0x22, 0x73, - 0x75, 0x62, 0x6D, 0x69, 0x74, 0x22, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x6E, 0x65, 0x78, - 0x74, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x20, 0x62, 0x74, - 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x20, 0x62, 0x74, 0x6E, 0x2D, 0x6E, 0x65, 0x78, 0x74, 0x22, 0x3E, - 0xE4, 0xB8, 0x8B, 0xE4, 0xB8, 0x80, 0xE6, 0xAD, 0xA5, 0x3C, 0x2F, 0x62, 0x75, 0x74, 0x74, 0x6F, - 0x6E, 0x3E, 0x3C, 0x2F, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0D, 0x0A, 0x09, 0x3C, - 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, - 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x62, 0x6F, - 0x64, 0x79, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A -}; - -const unsigned char wifisuccess[0x9BC] = { - 0x3C, 0x21, 0x64, 0x6F, 0x63, 0x74, 0x79, 0x70, 0x65, 0x20, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, - 0x0A, 0x3C, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, - 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2D, 0x65, 0x71, 0x75, 0x69, - 0x76, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x22, - 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x74, 0x65, 0x78, 0x74, 0x2F, 0x68, - 0x74, 0x6D, 0x6C, 0x22, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65, 0x74, 0x3D, 0x22, 0x75, 0x74, - 0x66, 0x2D, 0x38, 0x22, 0x3E, 0x0D, 0x0A, 0x3C, 0x6D, 0x65, 0x74, 0x61, 0x20, 0x63, 0x6F, 0x6E, - 0x74, 0x65, 0x6E, 0x74, 0x3D, 0x22, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3D, 0x64, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2C, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, - 0x6C, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, 0x6D, 0x61, 0x78, - 0x69, 0x6D, 0x75, 0x6D, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x3D, 0x31, 0x2E, 0x30, 0x2C, 0x20, - 0x75, 0x73, 0x65, 0x72, 0x2D, 0x73, 0x63, 0x61, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x3D, 0x30, 0x22, - 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x76, 0x69, 0x65, 0x77, 0x70, 0x6F, 0x72, 0x74, 0x22, - 0x3E, 0x0D, 0x0A, 0x3C, 0x74, 0x69, 0x74, 0x6C, 0x65, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, - 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x74, 0x69, - 0x74, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x3C, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, 0x0A, 0x20, - 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, 0x70, 0x2C, 0x20, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, - 0x20, 0x68, 0x33, 0x2C, 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x2C, - 0x20, 0x75, 0x6C, 0x2C, 0x20, 0x6F, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x2C, 0x20, 0x64, 0x6C, 0x2C, - 0x20, 0x64, 0x74, 0x2C, 0x20, 0x64, 0x64, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, - 0x74, 0x68, 0x2C, 0x20, 0x74, 0x64, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x66, 0x69, - 0x65, 0x6C, 0x64, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x6C, 0x65, 0x67, 0x65, 0x6E, 0x64, 0x2C, 0x20, - 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x74, 0x65, 0x78, 0x74, 0x61, 0x72, 0x65, 0x61, 0x2C, - 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, - 0x20, 0x69, 0x6D, 0x67, 0x2C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x71, 0x75, 0x6F, 0x74, 0x65, - 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x20, 0x30, 0x3B, 0x0D, - 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, - 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, - 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, - 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, - 0x62, 0x61, 0x73, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, - 0x2D, 0x66, 0x61, 0x6D, 0x69, 0x6C, 0x79, 0x3A, 0x20, 0x22, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, - 0x6F, 0x66, 0x74, 0x20, 0x59, 0x61, 0x48, 0x65, 0x69, 0x22, 0x2C, 0x22, 0x69, 0x63, 0x6F, 0x6E, - 0x66, 0x6F, 0x6E, 0x74, 0x22, 0x2C, 0x22, 0x46, 0x6F, 0x6E, 0x74, 0x41, 0x77, 0x65, 0x73, 0x6F, - 0x6D, 0x65, 0x22, 0x20, 0x20, 0x21, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x61, 0x6E, 0x74, 0x3B, - 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, 0x31, 0x2C, 0x20, 0x68, 0x32, 0x2C, 0x20, 0x68, 0x33, 0x2C, - 0x20, 0x68, 0x34, 0x2C, 0x20, 0x68, 0x35, 0x2C, 0x20, 0x68, 0x36, 0x20, 0x7B, 0x0D, 0x0A, 0x09, - 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x77, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x6E, 0x6F, 0x72, - 0x6D, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x7B, 0x0D, 0x0A, - 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x23, 0x66, 0x35, - 0x66, 0x35, 0x66, 0x35, 0x0D, 0x0A, 0x09, 0x7D, 0x0D, 0x0A, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x20, - 0x68, 0x74, 0x6D, 0x6C, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, - 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x78, 0x2D, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x68, - 0x74, 0x6D, 0x6C, 0x7B, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x36, 0x32, - 0x2E, 0x35, 0x25, 0x3B, 0x7D, 0x0D, 0x0A, 0x2E, 0x6D, 0x61, 0x69, 0x6E, 0x7B, 0x0D, 0x0A, 0x09, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, - 0x6E, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, 0x0A, - 0x09, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, - 0x76, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, - 0x3A, 0x20, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, - 0x6E, 0x67, 0x3A, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, - 0x09, 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, - 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, - 0x62, 0x6F, 0x78, 0x2D, 0x6F, 0x72, 0x69, 0x65, 0x6E, 0x74, 0x3A, 0x76, 0x65, 0x72, 0x74, 0x69, - 0x63, 0x61, 0x6C, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, - 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, - 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, - 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, - 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, - 0x0D, 0x0A, 0x09, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, 0x3B, 0x0D, - 0x0A, 0x09, 0x62, 0x6F, 0x78, 0x2D, 0x73, 0x69, 0x7A, 0x69, 0x6E, 0x67, 0x3A, 0x20, 0x62, 0x6F, - 0x72, 0x64, 0x65, 0x72, 0x2D, 0x62, 0x6F, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, - 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3B, 0x0D, - 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x68, 0x33, 0x20, 0x7B, - 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x20, 0x31, 0x38, - 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, - 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x20, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, - 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x66, 0x66, 0x66, 0x3B, 0x0D, 0x0A, 0x7D, - 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, 0x0D, - 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x3A, 0x20, 0x63, 0x65, - 0x6E, 0x74, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x3B, 0x0D, - 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x73, 0x69, 0x7A, - 0x65, 0x3A, 0x20, 0x31, 0x32, 0x70, 0x78, 0x20, 0x32, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x34, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x34, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x64, - 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x20, 0x69, 0x6E, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x62, - 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, - 0x65, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6F, 0x76, - 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x3A, 0x20, 0x68, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x3B, 0x0D, - 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x2E, 0x62, 0x74, 0x6E, - 0x2D, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x7B, 0x0D, 0x0A, 0x09, 0x70, 0x6F, 0x73, 0x69, - 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x3B, 0x0D, - 0x0A, 0x09, 0x6C, 0x65, 0x66, 0x74, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, - 0x6F, 0x70, 0x3A, 0x20, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, - 0x66, 0x69, 0x2D, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x2E, 0x63, 0x6F, 0x6E, 0x74, - 0x65, 0x6E, 0x74, 0x7B, 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, - 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x78, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, - 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, - 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x2D, 0x6D, - 0x73, 0x2D, 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, - 0x66, 0x6C, 0x65, 0x78, 0x3A, 0x20, 0x31, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, - 0x6E, 0x67, 0x3A, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, 0x67, - 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x46, 0x46, 0x46, - 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x20, 0x68, 0x32, 0x7B, 0x0D, 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, - 0x20, 0x23, 0x66, 0x35, 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, - 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, - 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, - 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x3A, 0x33, 0x30, 0x70, 0x78, 0x20, - 0x30, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x3A, 0x33, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x77, 0x69, 0x66, 0x69, - 0x2D, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x70, 0x7B, 0x0D, 0x0A, 0x09, 0x74, 0x65, - 0x78, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x3A, 0x32, 0x72, 0x65, 0x6D, 0x3B, 0x0D, - 0x0A, 0x09, 0x66, 0x6F, 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x36, 0x70, 0x78, - 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, - 0x32, 0x38, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x62, 0x74, 0x6E, 0x7B, 0x0D, - 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x64, 0x65, 0x63, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, - 0x6E, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, 0x0A, 0x09, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x6C, 0x69, 0x6E, 0x65, 0x2D, 0x68, - 0x65, 0x69, 0x67, 0x68, 0x74, 0x3A, 0x34, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x66, 0x6F, - 0x6E, 0x74, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x3A, 0x31, 0x34, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, - 0x64, 0x69, 0x73, 0x70, 0x6C, 0x61, 0x79, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x3B, 0x0D, 0x0A, - 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x3A, 0x20, 0x30, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, - 0x0D, 0x0A, 0x09, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x20, 0x23, 0x46, 0x46, 0x46, 0x3B, 0x0D, - 0x0A, 0x09, 0x62, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, - 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x2D, 0x6D, 0x6F, 0x7A, 0x2D, 0x62, 0x6F, 0x72, - 0x64, 0x65, 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, - 0x0D, 0x0A, 0x09, 0x2D, 0x77, 0x65, 0x62, 0x6B, 0x69, 0x74, 0x2D, 0x62, 0x6F, 0x72, 0x64, 0x65, - 0x72, 0x2D, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x3A, 0x20, 0x35, 0x70, 0x78, 0x3B, 0x0D, 0x0A, - 0x09, 0x6F, 0x75, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x3A, 0x20, 0x6E, 0x6F, 0x6E, 0x65, 0x3B, 0x0D, - 0x0A, 0x09, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x3A, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, - 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x74, 0x65, 0x78, 0x74, 0x2D, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x3A, - 0x63, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x69, 0x6E, 0x2D, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x3A, 0x37, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x09, 0x70, 0x61, 0x64, 0x64, - 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x20, 0x31, 0x30, 0x70, 0x78, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, - 0x2E, 0x62, 0x74, 0x6E, 0x2D, 0x72, 0x65, 0x64, 0x7B, 0x0D, 0x0A, 0x09, 0x62, 0x61, 0x63, 0x6B, - 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x3A, 0x23, 0x66, 0x35, - 0x36, 0x63, 0x36, 0x63, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x2E, 0x67, 0x65, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x2D, 0x62, 0x74, 0x6E, 0x20, 0x62, 0x75, 0x74, 0x74, 0x6F, 0x6E, 0x20, 0x7B, 0x0D, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3A, 0x20, 0x31, 0x30, 0x30, 0x25, - 0x3B, 0x0D, 0x0A, 0x09, 0x6D, 0x61, 0x72, 0x67, 0x69, 0x6E, 0x3A, 0x33, 0x35, 0x70, 0x78, 0x20, - 0x30, 0x3B, 0x0D, 0x0A, 0x7D, 0x0D, 0x0A, 0x3C, 0x2F, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x3E, 0x0D, - 0x0A, 0x3C, 0x2F, 0x68, 0x65, 0x61, 0x64, 0x3E, 0x0D, 0x0A, 0x0D, 0x0A, 0x3C, 0x62, 0x6F, 0x64, - 0x79, 0x3E, 0x0D, 0x0A, 0x3C, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, - 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x77, 0x69, 0x66, 0x69, 0x2D, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x3C, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x20, 0x63, - 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3E, 0x0D, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3D, - 0x22, 0x23, 0x22, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x62, 0x74, 0x6E, 0x2D, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6E, 0x22, 0x3E, 0xE4, 0xB8, 0x8A, 0xE4, 0xB8, 0x80, 0xE9, 0xA1, 0xB5, - 0x3C, 0x2F, 0x61, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, - 0x33, 0x3E, 0xE7, 0xBD, 0x91, 0xE5, 0x85, 0xB3, 0xE4, 0xB8, 0x8A, 0xE7, 0xBD, 0x91, 0xE8, 0xAE, - 0xBE, 0xE7, 0xBD, 0xAE, 0x3C, 0x2F, 0x68, 0x33, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x64, - 0x69, 0x76, 0x20, 0x63, 0x6C, 0x61, 0x73, 0x73, 0x3D, 0x22, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, - 0x74, 0x22, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x68, 0x32, 0x3E, - 0xE8, 0xAE, 0xBE, 0xE7, 0xBD, 0xAE, 0xE6, 0x88, 0x90, 0xE5, 0x8A, 0x9F, 0xEF, 0xBC, 0x81, 0x3C, - 0x2F, 0x68, 0x32, 0x3E, 0x0D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, - 0x0D, 0x0A, 0x3C, 0x2F, 0x64, 0x69, 0x76, 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x62, 0x6F, 0x64, 0x79, - 0x3E, 0x0D, 0x0A, 0x3C, 0x2F, 0x68, 0x74, 0x6D, 0x6C, 0x3E, 0x0D, 0x0A -}; - +const unsigned char index_html[0x8ee] = {0x1f,0x8b,0x08,0x00,0x09,0x2c,0x87,0x5d,0x02,0xff,0xed,0x5a,0x6d,0x6f,0xe2,0xb8,0x16,0xfe,0x3e,0xd2,0xfc,0x87,0x6c,0x46,0x1a,0x51,0x95,0x97,0x90,0x02,0x65,0x28,0x70,0x35,0xcb,0x8e,0x66,0xaa,0xd9,0x4e,0xab,0x2d,0xd2,0xac,0x74,0x75,0x85,0x4c,0x62,0x20,0xdb,0x90,0x64,0x13,0x53,0x5a,0x55,0xfd,0xef,0x7b,0x8e,0x1d,0x1b,0x07,0x02,0xa5,0x90,0x6a,0xbf,0x5c,0xaa,0x8a,0xd8,0x3e,0xe7,0xf8,0x39,0x3e,0xc7,0x8f,0x5f,0x42,0x77,0xc6,0xe6,0x7e,0xff,0xfd,0xbb,0xee,0x8c,0x12,0x17,0xbf,0xe7,0x94,0x11,0x63,0xc6,0x58,0x54,0xa1,0x7f,0x2f,0xbc,0xfb,0x9e,0xe9,0x84,0x01,0xa3,0x01,0xab,0xb0,0xc7,0x88,0x9a,0x46,0x5a,0xea,0x99,0x8c,0x3e,0xb0,0x1a,0x2a,0x43,0xdd,0x8c,0xc4,0x09,0x85,0xba,0x05,0x9b,0x54,0xda,0xa6,0xb2,0xa2,0x64,0x97,0x9e,0xcb,0x66,0x3d,0x97,0xde,0x7b,0x0e,0xad,0xf0,0x42,0xd9,0x0b,0x3c,0xe6,0x11,0xbf,0x92,0x38,0xc4,0xa7,0xbd,0x7a,0xd5,0x2a,0xcf,0xc9,0x83,0x37,0x5f,0xcc,0xb5,0x9a,0x45,0x42,0x63,0x5e,0x24,0x63,0xa8,0xb1,0x4c,0x23,0x20,0x73,0xda,0x33,0xef,0x3d,0xba,0x8c,0xc2,0x98,0xf1,0x8e,0x98,0xc7,0x7c,0xda,0xff,0x49,0x7d,0x27,0x9c,0x1b,0xc3,0x41,0xbd,0x5b,0x13,0x35,0xd0,0x94,0xb0,0x47,0x9f,0x1a,0x08,0x3b,0x45,0xeb,0x24,0x09,0xea,0x4c,0x3c,0xea,0xbb,0x80,0xf7,0x69,0x4e,0xe2,0xa9,0x17,0x54,0xc6,0x21,0x63,0xe1,0xbc,0x53,0xb7,0xa2,0x87,0x8b,0x71,0x18,0xbb,0x34,0xee,0x7c,0xb0,0x2c,0xcb,0x48,0x42,0xdf,0x73,0x8d,0x3a,0xd4,0x3e,0xbf,0x7f,0xe7,0x05,0xd1,0x82,0x95,0x13,0xea,0x53,0x87,0x95,0xc7,0x0b,0xd0,0x08,0x9e,0x22,0xe2,0xba,0x5e,0x30,0xed,0x34,0x85,0x48,0x5a,0x3b,0x26,0xce,0xdd,0x34,0x0e,0x17,0x81,0xdb,0x09,0xc2,0x80,0x4a,0x93,0x60,0xc7,0xf8,0x70,0x7e,0x7e,0x2e,0xcc,0xae,0xe4,0x3b,0xae,0x97,0xa0,0x7f,0x6e,0x6a,0x7c,0x55,0xe6,0x5d,0xaa,0xa2,0x6e,0xf7,0xc3,0x78,0x82,0x7f,0x68,0x84,0xb9,0xeb,0x30,0xaa,0x49,0xe8,0xdc,0x51,0x66,0x08,0xc4,0xd5,0x79,0xe8,0x52,0xf1,0x2c,0xfd,0x8d,0xbd,0xe9,0x8c,0x75,0x2a,0x0d,0x29,0xbe,0x18,0xcf,0x3d,0x96,0xb1,0x92,0x0a,0xb2,0x30,0x5a,0x19,0x5d,0x38,0x0e,0x4d,0x92,0x27,0x27,0xf4,0x43,0x18,0x9f,0x66,0xdb,0x75,0x9a,0x0e,0x6f,0xa1,0x71,0x1c,0xc6,0xb2,0x7e,0x32,0xb1,0x5d,0x9b,0x7b,0x57,0xf5,0x82,0x49,0x28,0xab,0xe9,0xb9,0x65,0x51,0xc2,0xab,0x03,0xca,0x96,0x61,0x7c,0x67,0xb8,0xde,0xfd,0x06,0x72,0x48,0x98,0x00,0x86,0x20,0xb7,0x8d,0xa3,0x7e,0xc2,0x38,0x56,0x88,0xef,0x4d,0x83,0x0e,0xaf,0xe0,0x4d,0xbe,0x17,0xd0,0xa7,0x19,0xe5,0x6e,0x7d,0x52,0x41,0x54,0x71,0x85,0x81,0x17,0xa1,0xfc,0xe0,0x52,0xfc,0x43,0x9d,0x0f,0x51,0xb8,0xa4,0xf1,0x08,0x3b,0xd2,0x9c,0xd5,0x52,0xa0,0xe2,0xd3,0x09,0xd3,0x75,0x21,0x23,0xb6,0x1b,0xc6,0xc6,0x95,0x55,0x1d,0x4f,0xdd,0x42,0x9b,0x51,0x98,0x40,0xba,0x43,0xb0,0x63,0xea,0x13,0xe6,0xdd,0xd3,0x8b,0xf0,0x9e,0xc6,0x13,0x3f,0x5c,0x76,0x12,0x27,0x0e,0x7d,0x5f,0x1f,0xf2,0x8a,0xd0,0x41,0xcf,0x84,0xbd,0x28,0xa6,0x4f,0xca,0x02,0x19,0x43,0x9f,0x0b,0x86,0x79,0xc5,0x51,0x58,0x17,0x60,0x86,0xb0,0x0e,0xe2,0xbd,0x48,0x3b,0x3d,0x6f,0x81,0x3e,0x9f,0x67,0x1d,0x6b,0x0f,0x7f,0x44,0x42,0x6c,0xba,0xd3,0xad,0xf1,0x29,0x84,0x73,0xa9,0x96,0xd2,0x03,0x3c,0x8e,0x43,0xf7,0x51,0x3c,0xc9,0x89,0x64,0x38,0x3e,0x49,0x92,0x9e,0x29,0x12,0x0f,0xa7,0x98,0x01,0x9f,0xae,0x4f,0xa7,0x34,0x70,0xfb,0x37,0xe8,0x83,0x31,0x00,0x2e,0x40,0x47,0xbb,0xb5,0xb4,0x3a,0x15,0x62,0x98,0xdc,0x86,0xe7,0x4a,0xed,0x11,0x1b,0x4b,0x03,0xa2,0x3d,0xd6,0x4a,0xa2,0xc6,0x5d,0xab,0xe1,0xb5,0x3c,0xc3,0xd3,0xc9,0xee,0xcc,0xa8,0x73,0x37,0x0e,0x1f,0x4c,0xcd,0x6e,0x5d,0xb2,0x47,0x16,0x64,0xc6,0x06,0xf0,0x0c,0xf5,0x8d,0x49,0x18,0xaf,0x94,0xfa,0xb7,0xfc,0xa1,0x02,0xbc,0xc2,0x5b,0xd7,0xc1,0xd4,0x36,0xd0,0x1c,0x88,0xcf,0x3e,0x04,0x9f,0xad,0xf0,0xd9,0x6f,0x8d,0xef,0xec,0x10,0x7c,0x67,0x0a,0xdf,0xd9,0x5e,0xf8,0xa0,0x18,0xbf,0x45,0xf0,0x1b,0x87,0x80,0x6f,0x28,0xf0,0x8d,0xb7,0x1e,0xdc,0xe6,0x21,0xf8,0x9a,0x0a,0x5f,0xf3,0xad,0xf1,0xb5,0x0e,0xc1,0xd7,0x52,0xf8,0x5a,0xaf,0x0d,0x3e,0x3c,0x22,0x2d,0xc8,0x12,0xb0,0xb4,0xa2,0x18,0xbe,0x58,0x65,0x18,0x42,0x2c,0xa3,0x59,0x81,0xd1,0x98,0x99,0x46,0x18,0x38,0xbe,0xe7,0xdc,0xf5,0xcc,0x5b,0xca,0x04,0x92,0xd2,0x09,0x60,0xe2,0x02,0xdd,0x9a,0x50,0xd3,0x0d,0x25,0x11,0x59,0x99,0x61,0x84,0x2d,0x92,0x51,0x12,0x19,0xe9,0xc2,0x67,0xf6,0xaf,0xbf,0x03,0x1f,0x82,0x88,0xc2,0x08,0xb0,0x38,0x35,0x4a,0x1a,0xcc,0x27,0x45,0xdc,0x1c,0x6d,0xe1,0xc4,0x5b,0xde,0xc9,0x3a,0x23,0xa2,0xb7,0x38,0xf4,0x6a,0x85,0xca,0x78,0xab,0x8d,0x05,0x2e,0x33,0x66,0x5f,0xe2,0xf8,0xbf,0xc4,0xdb,0x48,0x64,0x9e,0xb3,0xb1,0x11,0xc2,0xf9,0x86,0xd4,0xca,0x6d,0x1a,0x7c,0x11,0xed,0x99,0x72,0x6d,0xc6,0xb5,0x9d,0x2f,0xc6,0x36,0x3e,0xed,0x86,0xb3,0xdd,0x4a,0x53,0x5a,0x69,0x1c,0x61,0xa5,0xad,0xb0,0xb4,0x8e,0xb1,0xa2,0xb0,0xb4,0x0b,0xc1,0x22,0xb6,0x3f,0x47,0x0f,0x4c,0xfd,0xa8,0xf1,0x5d,0xa1,0x39,0x66,0x80,0x5b,0x2b,0x34,0xad,0x62,0xd0,0xb4,0x0b,0x19,0x1b,0xdb,0x2a,0x24,0x52,0xb6,0x5d,0x48,0xda,0xd8,0xc7,0x0c,0xf1,0xa7,0x15,0x9a,0x62,0x92,0xd8,0x2e,0x26,0x8b,0xcf,0x8e,0xca,0xe2,0xb6,0x32,0x73,0x54,0x16,0xb7,0x94,0x99,0x63,0x86,0xf8,0xdc,0x56,0x66,0x8a,0x19,0xe2,0xb3,0x62,0x86,0xb8,0x51,0x0c,0x51,0x34,0x8a,0x21,0x8a,0x46,0x31,0x44,0xd1,0x28,0x86,0x28,0x1a,0xc5,0x10,0x45,0xb3,0x18,0xa2,0x68,0x16,0x43,0x14,0xcd,0x62,0x88,0xa2,0x59,0x4c,0x16,0x37,0xdb,0x05,0x2d,0xbd,0x85,0x10,0x45,0xab,0x18,0xa2,0x68,0x15,0x43,0x14,0xad,0x62,0x86,0xb8,0x55,0xcc,0x10,0x9f,0xe7,0x0c,0xf1,0xbe,0xfb,0xf7,0xf4,0xbe,0x6a,0x7d,0x07,0xff,0x23,0xbd,0xc6,0x72,0xc2,0x60,0xe2,0x4d,0x73,0x6f,0x35,0x5e,0x3a,0xc9,0xca,0x1e,0xf8,0xf5,0x0b,0x1c,0x4c,0x6e,0x2f,0x7f,0xeb,0xec,0x7f,0x66,0x13,0xb7,0x85,0x7c,0x37,0xba,0xf4,0x26,0x1e,0x3f,0xee,0xcc,0x48,0x30,0xa5,0x78,0xde,0xc1,0xa6,0x9f,0x50,0x8b,0x07,0x9e,0x4d,0x5d,0xae,0x1f,0x46,0x78,0x9d,0x64,0xdc,0x13,0x7f,0x01,0x2a,0x96,0xd9,0xbf,0x22,0xc1,0x82,0xf8,0xdd,0x9a,0x68,0xd8,0x4f,0xad,0x6e,0xf6,0x07,0x57,0x83,0xc1,0xeb,0x94,0x6c,0x50,0x9a,0x79,0x01,0xa9,0xc0,0x18,0xbe,0x4e,0xf3,0x8c,0x77,0x37,0xdc,0xa1,0x04,0x47,0x34,0xee,0x7c,0x5e,0x53,0x7a,0x50,0xc4,0x11,0x8b,0x69,0xe2,0x90,0xc0,0xec,0xff,0xc1,0xbf,0x73,0x0e,0x83,0x07,0x5e,0x4e,0x1c,0x17,0x52,0x71,0x0c,0xe7,0xc7,0xee,0xc4,0x73,0x4d,0xed,0xea,0x5a,0x8f,0xee,0x80,0x7f,0x5f,0xa2,0x6c,0xa9,0x7e,0x62,0xd6,0x0a,0x47,0x7d,0x73,0xfb,0xf3,0x30,0xd4,0x51,0xb2,0x54,0xa8,0x23,0xb0,0x08,0x13,0xc4,0xdd,0x86,0xdc,0x7e,0x0b,0xe4,0x57,0xd7,0xbf,0x7d,0xd9,0x82,0x5c,0x4a,0xe2,0x75,0xb8,0xf9,0xd2,0x1d,0x48,0x4c,0x5c,0x2f,0x14,0x17,0x20,0x28,0xaf,0xee,0x0e,0xb9,0xf2,0x86,0x43,0x57,0x50,0x8b,0x91,0x78,0xe1,0x56,0x44,0x58,0xea,0x7f,0xbe,0xc9,0xbf,0x0d,0x79,0x09,0x84,0xbd,0x07,0x08,0x7b,0x2f,0x10,0x78,0x6b,0x38,0xfc,0x3c,0xbc,0xbc,0xfe,0xf1,0x6f,0xdf,0xcb,0xf0,0xba,0x94,0x49,0xff,0x95,0xbb,0x19,0xf1,0xbe,0x61,0x9d,0xdb,0x07,0xe9,0x6b,0x88,0xfc,0xfb,0x99,0x43,0xb8,0xfd,0xf2,0xe6,0x85,0xb4,0xc4,0x97,0x25,0x66,0xbf,0xfe,0xc9,0xae,0xd6,0x5b,0xed,0xea,0xd9,0x59,0xb5,0x6e,0xb5,0x0b,0x98,0x0f,0x24,0xb9,0xdb,0xab,0x63,0xbb,0xd9,0xac,0xca,0x7f,0xeb,0xf8,0x7e,0xbf,0x12,0x46,0x97,0xe4,0xf1,0xd5,0x3e,0xef,0x93,0x79,0xeb,0x31,0x4d,0x9c,0xd8,0x8b,0x98,0xfe,0x9a,0xef,0x2f,0x72,0x4f,0x44,0xad,0xc9,0x45,0x26,0x8b,0xc0,0xe1,0xab,0xc8,0xe7,0xbf,0xc8,0x43,0x69,0x11,0xfb,0x65,0x48,0xc1,0x34,0x75,0xca,0x5c,0xb1,0x6c,0xb8,0x84,0x91,0x13,0xe3,0x49,0x74,0x76,0x4f,0x62,0xe3,0x61,0xee,0x8f,0xf0,0x2d,0xa8,0xd1,0x33,0x02,0xba,0x34,0xfe,0xbc,0xfa,0xfd,0x1b,0x94,0xfe,0xa0,0x7f,0x2f,0x68,0xc2,0x4a,0x27,0x17,0x42,0x52,0x4a,0x55,0xc3,0x88,0x06,0x25,0x61,0x8a,0x77,0xc0,0xe2,0x05,0xdd,0x10,0x02,0xcc,0xa9,0x81,0x6f,0x94,0xb8,0x34,0x2e,0x99,0x03,0xfd,0xdd,0x6a,0xd9,0x30,0x49,0x14,0xc1,0xd4,0x20,0x88,0xb6,0xf6,0x50,0x59,0x2e,0x97,0x15,0x98,0xb5,0xf3,0x0a,0x98,0xa4,0x81,0x03,0x53,0xd7,0x35,0x37,0x7b,0x0e,0x62,0x30,0xf6,0x88,0x93,0x82,0x0a,0x4a,0x00,0xc8,0xca,0xe5,0x92,0x72,0x0a,0x3f,0xde,0xc4,0x28,0x29,0x45,0xae,0x86,0x29,0x0e,0x0a,0x3d,0xa3,0x91,0x11,0xdc,0x10,0x16,0x73,0x0e,0x05,0x6d,0xcb,0xda,0x10,0xc5,0x8f,0x1a,0x52,0xbd,0x87,0x24,0x82,0x6a,0x3a,0x84,0xa8,0x48,0xdc,0xf2,0xf3,0x9c,0x2d,0x52,0x3f,0xa1,0x79,0x56,0x89,0x4f,0x63,0x56,0x32,0x31,0x72,0x06,0x7f,0xd1,0xd8,0x31,0x4c,0xe3,0xd4,0x58,0xc3,0xb5,0xc3,0x78,0xfa,0xf8,0x9c,0x4a,0xa0,0x53,0x18,0x6b,0xe3,0x17,0x88,0xeb,0xc2,0xf7,0x8d,0x8f,0x1f,0x79,0x06,0xa0,0x67,0xe6,0xcd,0xf5,0xed,0xd0,0xcc,0x38,0xa7,0x85,0x2e,0x70,0xb9,0xa2,0xec,0xea,0x79,0x03,0x72,0x56,0x56,0xc9,0xbd,0x7f,0xf7,0xac,0xa5,0x20,0x26,0xd1,0x57,0xca,0xd6,0xb2,0x50,0xf5,0x99,0x9b,0xa1,0xe6,0xd7,0x2f,0x43,0x48,0x0e,0x84,0x8b,0x56,0xd7,0xcd,0xdd,0x84,0x09,0xdb,0xd0,0xc9,0xe4,0x73,0xbe,0x55,0xee,0x6d,0x2a,0x29,0xcc,0xbe,0x7f,0x87,0x99,0xaf,0x98,0x1a,0xc2,0x6d,0xb8,0xa1,0xb3,0x98,0x43,0x86,0x56,0xa7,0x94,0x7d,0xf1,0x29,0x3e,0x26,0xbf,0x3e,0x0e,0x70,0x02,0xff,0x80,0xd5,0xa8,0xa4,0xf1,0x3a,0x1a,0x41,0x7d,0x9c,0xd6,0x23,0x24,0xe3,0xfd,0xf4,0x25,0x99,0x73,0xfd,0x14,0x81,0x7c,0x13,0x98,0x6f,0xe0,0xd7,0xc7,0x4b,0xb7,0xa4,0xbd,0x2e,0x94,0x1d,0xcb,0x37,0x17,0xd8,0xaf,0x6a,0xcd,0x76,0x3c,0x24,0x53,0xd1,0x2d,0x5f,0x68,0xb5,0x2e,0xc5,0x86,0x10,0xdc,0x08,0x76,0xf5,0x99,0x6e,0x1b,0x65,0x87,0xb8,0x4b,0x1b,0x25,0x3e,0xdb,0xa5,0xc2,0xf7,0xe6,0x19,0x05,0x64,0xab,0x5d,0x7e,0xe1,0xd6,0x4f,0x2a,0xe0,0x8e,0xea,0x25,0x05,0xbe,0xeb,0x92,0x0a,0xb8,0xbe,0x8f,0x62,0xb7,0xbe,0x4b,0x41,0x6c,0x44,0xd6,0x34,0xec,0x97,0x34,0xec,0x74,0xb4,0x64,0x06,0x9b,0xb5,0xf4,0x65,0x50,0x59,0x63,0x9b,0x98,0x66,0x48,0x54,0xb2,0x06,0x0c,0xef,0xc5,0x7a,0xed,0x88,0xc4,0x31,0x06,0x8a,0x17,0xaa,0x09,0xf0,0x1e,0xd8,0x2c,0x2b,0x7e,0x03,0xde,0x33,0x4a,0x3c,0x9d,0x40,0xc8,0xba,0x80,0xaf,0xae,0xa6,0x58,0x05,0x3e,0x9c,0xb2,0x19,0x54,0x9f,0x9e,0x66,0x26,0xac,0xca,0x81,0xff,0x7a,0xff,0xab,0xf2,0x02,0x75,0x55,0x2f,0xa8,0x09,0xf5,0x7c,0xae,0xd7,0x4d,0x6d,0x82,0x0a,0xcf,0x94,0x1b,0xb7,0x94,0x5d,0x7f,0x2f,0x79,0xca,0xf0,0x6a,0x46,0xa0,0x55,0xf9,0x83,0x0c,0xa4,0x59,0x02,0x1c,0x20,0x99,0x45,0xa5,0x3d,0xef,0x5a,0x66,0x38,0x48,0xe5,0x6c,0x58,0x72,0x75,0x3c,0xd8,0x75,0xc4,0xdf,0x86,0x57,0xbf,0xa3,0xce,0xf5,0x77,0x73,0x6d,0xae,0x03,0xaa,0xcb,0x60,0xba,0x0f,0x2c,0x5c,0x7c,0x5e,0x83,0x8a,0x2f,0xc4,0x2f,0x43,0xf2,0x82,0x69,0xb5,0x5a,0x35,0x25,0x57,0xe8,0xc0,0xe4,0xeb,0x35,0x09,0x2d,0xc5,0x6a,0x9d,0xe8,0x61,0xe7,0x32,0xd0,0x21,0x66,0xb3,0x69,0xee,0x88,0xb3,0x0a,0xe2,0xd6,0x30,0x6b,0xb6,0x4e,0x7b,0x46,0x29,0x37,0xea,0xff,0x81,0x20,0x97,0x4d,0x03,0x16,0x0c,0x6b,0x95,0x56,0xe9,0x72,0xa0,0x78,0xf3,0xa5,0x2c,0x4e,0x9d,0x81,0x74,0x50,0xbe,0x3c,0x97,0xb5,0xee,0x4f,0x72,0x46,0x63,0x75,0xf8,0x56,0x91,0x4a,0xe7,0xbd,0x1e,0x24,0x49,0x1e,0x55,0x7e,0xb6,0xc5,0xf5,0x08,0x0e,0xe1,0xc2,0x9a,0x9c,0x96,0x7c,0x44,0x44,0x91,0x44,0xa3,0x20,0x8d,0xdb,0x70,0x50,0xaf,0x7c,0xbe,0x31,0x57,0x0d,0x48,0x00,0xd8,0x50,0xb7,0xcf,0x1a,0xcd,0xd6,0x79,0x5b,0x36,0x61,0x80,0x01,0x91,0x52,0x5c,0xaf,0x97,0x7a,0x58,0xaf,0xe0,0x6b,0xa7,0x89,0xb9,0xc2,0x8f,0xab,0xa6,0x00,0xd4,0x33,0xa0,0x36,0xa6,0x6c,0x11,0x07,0xda,0x8a,0x3a,0xc7,0x86,0x7a,0x36,0x42,0x59,0xf7,0xa4,0x77,0x1b,0xcd,0xf9,0x69,0x8b,0x9f,0x15,0x25,0xef,0x10,0xca,0x1b,0x59,0x7d,0x56,0x66,0x64,0x24,0x94,0x74,0x30,0x35,0x11,0xc9,0xb3,0xba,0x08,0xd6,0x6d,0x5d,0xec,0x0f,0x70,0x6f,0x1d,0x56,0xbe,0x7f,0x5b,0xc1,0xbf,0xc6,0x41,0x3d,0xf2,0xbb,0xbc,0xd4,0x33,0x21,0x3b,0x41,0xd2,0xf4,0x9b,0x8b,0x84,0xcc,0x9c,0x73,0x39,0x57,0xca,0x75,0x46,0xe3,0xd8,0x34,0x32,0x6b,0x99,0x24,0x4e,0xfb,0xb8,0xc5,0xd2,0xb2,0x49,0x25,0x53,0x36,0x67,0x56,0x49,0x9e,0xf5,0xe8,0x22,0x23,0x92,0xa6,0x6d,0xd6,0x99,0xed,0x81,0xca,0x4e,0x82,0xad,0x86,0xd7,0x26,0x45,0xbe,0xf5,0x8d,0xb9,0x9e,0x3d,0xc0,0x6e,0x75,0x70,0x1b,0x38,0xbe,0xc4,0x93,0x98,0xcc,0x13,0x4e,0xc8,0x09,0x9e,0xf5,0x4f,0x75,0xc4,0xa7,0xe6,0xc7,0x3b,0xfa,0xa8,0x55,0x6a,0x91,0x5a,0xe3,0x31,0xdc,0x68,0xd4,0xc4,0x6d,0xe4,0x2e,0x32,0x5b,0x6d,0xaa,0x63,0xaa,0x6f,0x9b,0x81,0xd5,0x04,0x92,0x93,0x35,0x67,0xe1,0x60,0xcd,0xcf,0x52,0xfc,0xe8,0x95,0xfe,0xf6,0xab,0x5b,0x4b,0x7f,0x35,0xfa,0x0f,0x71,0x2f,0xb0,0xd8,0x3e,0x2a,0x00,0x00}; diff --git a/TC1/main.c b/TC1/main.c index 1aff275..6c3b797 100644 --- a/TC1/main.c +++ b/TC1/main.c @@ -20,6 +20,7 @@ uint32_t power=0; system_config_t * sys_config; user_config_t * user_config; +char socket_status[32] = { 0 }; mico_gpio_t Relay[Relay_NUM] = { Relay_0, Relay_1, Relay_2, Relay_3, Relay_4, Relay_5 }; @@ -152,6 +153,7 @@ int application_start( void ) // } // } + ap_init(); wifi_init( ); user_udp_init( ); key_init( ); @@ -162,7 +164,7 @@ int application_start( void ) user_power_init(); /* start http server thread */ -// app_httpd_start(); + app_httpd_start(); while ( 1 ) { main_num++; diff --git a/TC1/main.h b/TC1/main.h index 7be0590..5886079 100644 --- a/TC1/main.h +++ b/TC1/main.h @@ -2,7 +2,7 @@ #define __MAIN_H_ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" #define VERSION "v0.10.1" @@ -72,6 +72,7 @@ extern char strMac[16]; extern uint32_t power; extern system_config_t * sys_config; extern user_config_t * user_config; +extern char socket_status[32]; extern mico_gpio_t Relay[Relay_NUM]; diff --git a/TC1/user_function.h b/TC1/user_function.h index 12c287b..ef8c5ca 100644 --- a/TC1/user_function.h +++ b/TC1/user_function.h @@ -4,7 +4,7 @@ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" void user_send( int udp_flag, char *s ); void user_function_cmd_received(int udp_flag,uint8_t *pusrdata); diff --git a/TC1/user_gpio.c b/TC1/user_gpio.c index fbb6280..8cd1748 100644 --- a/TC1/user_gpio.c +++ b/TC1/user_gpio.c @@ -31,35 +31,70 @@ bool relay_out( void ) return false; } +char* get_socket_status() +{ + sprintf(socket_status, "%d,%d,%d,%d,%d,%d\0", + user_config->plug[0].on, + user_config->plug[1].on, + user_config->plug[2].on, + user_config->plug[3].on, + user_config->plug[4].on, + user_config->plug[5].on); + return socket_status; +} + +void set_socket_status(char* socket_status) +{ + int ons[6] = { 0 }; + sscanf(socket_status, "%d,%d,%d,%d,%d,%d,", + &ons[0], &ons[1], &ons[2], &ons[3], &ons[4], &ons[5]); + int i = 0; + for (i = 0; i < PLUG_NUM; i++) + { + user_relay_set(i, ons[i]); + } +} + /*user_relay_set * 设置继电器开关 - * x:编号 0-5 - * y:开关 0:关 1:开 + * i:编号 0-5 + * on:开关 0:关 1:开 */ -void user_relay_set(unsigned char x,unsigned char y ) +void user_relay_set(unsigned char i, unsigned char on) { - if (x >= PLUG_NUM ) return; + if (i >= PLUG_NUM) return; - if((y == 1) ? Relay_ON : Relay_OFF) MicoGpioOutputHigh( relay[x] );else MicoGpioOutputLow( relay[x] ); - - user_config->plug[x].on = y; - - if ( relay_out( ) ) - user_led_set( 1 ); + if (on == Relay_ON) + { + MicoGpioOutputHigh(relay[i]); + } else - user_led_set( 0 ); + { + MicoGpioOutputLow(relay[i]); + } + + user_config->plug[i].on = on; + + if (relay_out()) + { + user_led_set(1); + } + else + { + user_led_set(0); + } } /* * 设置所有继电器开关 - * y:0:全部关 1:根据记录状态开关所有 + * y: 0:全部关 1:全部开 * */ void user_relay_set_all( char y ) { - char i; - for ( i = 0; i < PLUG_NUM; i++ ) - user_relay_set( i, y ); + int i; + for (i = 0; i < PLUG_NUM; i++) + user_relay_set(i, y); } static void key_long_press( void ) diff --git a/TC1/user_gpio.h b/TC1/user_gpio.h index 5828c2c..5cbf7fb 100644 --- a/TC1/user_gpio.h +++ b/TC1/user_gpio.h @@ -4,12 +4,13 @@ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" -extern void user_led_set(char x); -extern void key_init(void); -extern void user_relay_set(unsigned char x,unsigned char y ); -extern void user_relay_set_all( char y ); -extern bool relay_out( void ); +void user_led_set(char x); +void key_init(void); +void user_relay_set(unsigned char x,unsigned char y ); +void user_relay_set_all( char y ); +bool relay_out( void ); +char* get_socket_status(); #endif diff --git a/TC1/user_rtc.h b/TC1/user_rtc.h index 085a385..478917e 100644 --- a/TC1/user_rtc.h +++ b/TC1/user_rtc.h @@ -4,7 +4,7 @@ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" extern OSStatus user_rtc_init(void); diff --git a/TC1/user_sntp.h b/TC1/user_sntp.h index 225bafd..8dc4a20 100644 --- a/TC1/user_sntp.h +++ b/TC1/user_sntp.h @@ -4,7 +4,7 @@ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" extern void sntp_init(void); diff --git a/TC1/user_udp.h b/TC1/user_udp.h index 3f60311..96a648e 100644 --- a/TC1/user_udp.h +++ b/TC1/user_udp.h @@ -4,7 +4,7 @@ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" OSStatus user_udp_init( void ); OSStatus user_udp_send( char *arg ); diff --git a/TC1/user_wifi.c b/TC1/user_wifi.c index 4811c28..b785417 100644 --- a/TC1/user_wifi.c +++ b/TC1/user_wifi.c @@ -59,6 +59,29 @@ void wifi_easylink_completed_handle( network_InitTypeDef_st *nwkpara, void * arg micoWlanStopEasyLink( ); } +void wifi_config(char* wifi_ssid, char* wifi_key) +{ + os_log("wifi_easylink_wps_completed_handle:"); + if (wifi_ssid == NULL || wifi_key == NULL) + { + os_log("EasyLink fail"); + micoWlanStopEasyLink(); + return; + } + + os_log("ssid:\"%s\",\"%s\"", wifi_ssid, wifi_ssid); + + //保存wifi及密码 + strcpy(sys_config->micoSystemConfig.ssid, wifi_ssid); + strcpy(sys_config->micoSystemConfig.user_key, wifi_key); + sys_config->micoSystemConfig.user_keyLength = strlen(wifi_key); + mico_system_context_update(sys_config); + + wifi_status = WIFI_STATE_NOCONNECT; + os_log("EasyLink stop"); + micoWlanStopEasyLink(); +} + //wifi已连接获取到IP地址 回调 static void wifi_get_ip_callback( IPStatusTypedef *pnet, void * arg ) { @@ -92,7 +115,7 @@ static void wifi_led_timer_callback( void* arg ) mico_rtos_stop_timer( &wifi_led_timer ); break; case WIFI_STATE_NOCONNECT: - wifi_connect_sys_config( ); + //wifi_connect_sys_config( ); break; case WIFI_STATE_CONNECTING: @@ -119,19 +142,22 @@ static void wifi_led_timer_callback( void* arg ) } } -void wifi_init( void ) +void wifi_connect(char* wifi_ssid, char* wifi_key) { //wifi配置初始化 -// network_InitTypeDef_st wNetConfig; + network_InitTypeDef_st wNetConfig; -// memset(&wNetConfig, 0, sizeof(network_InitTypeDef_st)); -// wNetConfig.wifi_mode = Station; -// snprintf(wNetConfig.wifi_ssid, 32, "Honor 9" ); -// strcpy((char*)wNetConfig.wifi_key, "19910911"); -// wNetConfig.dhcpMode = DHCP_Client; -// wNetConfig.wifi_retry_interval=6000; -// micoWlanStart(&wNetConfig); + memset(&wNetConfig, 0, sizeof(network_InitTypeDef_st)); + wNetConfig.wifi_mode = Station; + snprintf(wNetConfig.wifi_ssid, 32, wifi_ssid); + strcpy((char*)wNetConfig.wifi_key, wifi_key); + wNetConfig.dhcpMode = DHCP_Client; + wNetConfig.wifi_retry_interval = 6000; + micoWlanStart(&wNetConfig); +} +void wifi_init( void ) +{ //wifi状态下led闪烁定时器初始化 mico_rtos_init_timer( &wifi_led_timer, 100, (void *) wifi_led_timer_callback, NULL ); //easylink 完成回调 @@ -150,3 +176,55 @@ void wifi_init( void ) } +#define ELAND_AP_SSID "TC1-AP" +#define ELAND_AP_KEY "12345678" +#define ELAND_AP_LOCAL_IP "192.168.0.1" +#define ELAND_AP_DNS_SERVER "192.168.0.1" +#define ELAND_AP_NET_MASK "255.255.255.0" + +void ap_init() +{ + os_log("Soft_ap_Server"); + network_InitTypeDef_st wNetConfig; + memset(&wNetConfig, 0x0, sizeof(network_InitTypeDef_st)); + strcpy((char *)wNetConfig.wifi_ssid, ELAND_AP_SSID); + strcpy((char *)wNetConfig.wifi_key, ELAND_AP_KEY); + wNetConfig.wifi_mode = Soft_AP; + wNetConfig.dhcpMode = DHCP_Server; + wNetConfig.wifi_retry_interval = 100; + strcpy((char *)wNetConfig.local_ip_addr, ELAND_AP_LOCAL_IP); + strcpy((char *)wNetConfig.net_mask, ELAND_AP_NET_MASK); + strcpy((char *)wNetConfig.dnsServer_ip_addr, ELAND_AP_DNS_SERVER); + os_log("ssid:%s key:%s", wNetConfig.wifi_ssid, wNetConfig.wifi_key); + micoWlanStart(&wNetConfig); +} + + + +static void Wifi_SoftAP_threed(mico_thread_arg_t arg) +{ + /* + network_InitTypeDef_st wNetConfig; + mico_rtos_lock_mutex(&WifiConfigMutex); + SendElandStateQueue(APServerStart); + micoWlanSuspend(); + mico_rtos_thread_sleep(2); + Eland_httpd_start(); + WifiSet_log("Soft_ap_Server"); + memset(&wNetConfig, 0x0, sizeof(network_InitTypeDef_st)); + strcpy((char *)wNetConfig.wifi_ssid, ELAND_AP_SSID); + strcpy((char *)wNetConfig.wifi_key, ELAND_AP_KEY); + wNetConfig.wifi_mode = Soft_AP; + wNetConfig.dhcpMode = DHCP_Server; + wNetConfig.wifi_retry_interval = 100; + strcpy((char *)wNetConfig.local_ip_addr, ELAND_AP_LOCAL_IP); + strcpy((char *)wNetConfig.net_mask, ELAND_AP_NET_MASK); + strcpy((char *)wNetConfig.dnsServer_ip_addr, ELAND_AP_DNS_SERVER); + WifiSet_log("ssid:%s key:%s", wNetConfig.wifi_ssid, wNetConfig.wifi_key); + micoWlanStart(&wNetConfig); + mico_rtos_get_semaphore(&wifi_SoftAP_Sem, 5000); + mico_rtos_unlock_mutex(&WifiConfigMutex); + mico_rtos_delete_thread(NULL); + */ +} + diff --git a/TC1/user_wifi.h b/TC1/user_wifi.h index 1931429..a9bdf7d 100644 --- a/TC1/user_wifi.h +++ b/TC1/user_wifi.h @@ -4,7 +4,7 @@ #include "mico.h" -#include "MiCOKit_EXT.h" +#include "micokit_ext.h" enum { @@ -21,6 +21,7 @@ enum { extern char wifi_status; extern void wifi_init(void); +extern void ap_init(void); extern void wifi_start_easylink(void);