diff options
author | Evgeny Zinoviev <me@ch1p.io> | 2023-06-10 23:20:37 +0300 |
---|---|---|
committer | Evgeny Zinoviev <me@ch1p.io> | 2023-06-10 23:20:37 +0300 |
commit | a6d8ba93056c1a4e243d56da447e241b2504fae2 (patch) | |
tree | 3ee5372ef4e4a2b8532bf8bc57d7151d77d96f71 /esp32-cam | |
parent | b0bf43e6a272d42a55158e657bd937cb82fc3d8d (diff) |
move files again
Diffstat (limited to 'esp32-cam')
-rw-r--r-- | esp32-cam/CameraWebServer/CameraWebServer.ino | 165 | ||||
-rw-r--r-- | esp32-cam/CameraWebServer/app_httpd.cpp | 1287 | ||||
-rw-r--r-- | esp32-cam/CameraWebServer/camera_index.h | 1570 | ||||
-rw-r--r-- | esp32-cam/CameraWebServer/camera_pins.h | 273 | ||||
-rw-r--r-- | esp32-cam/CameraWebServer/index_ov2640.html | 1160 |
5 files changed, 0 insertions, 4455 deletions
diff --git a/esp32-cam/CameraWebServer/CameraWebServer.ino b/esp32-cam/CameraWebServer/CameraWebServer.ino deleted file mode 100644 index ef589d9..0000000 --- a/esp32-cam/CameraWebServer/CameraWebServer.ino +++ /dev/null @@ -1,165 +0,0 @@ -#include "esp_camera.h" -#include <WiFi.h> - -// -// WARNING!!! PSRAM IC required for UXGA resolution and high JPEG quality -// Ensure ESP32 Wrover Module or other board with PSRAM is selected -// Partial images will be transmitted if image exceeds buffer size -// -// You must select partition scheme from the board menu that has at least 3MB APP space. -// Face Recognition is DISABLED for ESP32 and ESP32-S2, because it takes up from 15 -// seconds to process single frame. Face Detection is ENABLED if PSRAM is enabled as well - -// =================== -// Select camera model -// =================== -//#define CAMERA_MODEL_WROVER_KIT // Has PSRAM -//#define CAMERA_MODEL_ESP_EYE // Has PSRAM -//#define CAMERA_MODEL_ESP32S3_EYE // Has PSRAM -//#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM -//#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM -//#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM -//#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM -//#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM -#define CAMERA_MODEL_AI_THINKER // Has PSRAM -//#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM -// ** Espressif Internal Boards ** -//#define CAMERA_MODEL_ESP32_CAM_BOARD -//#define CAMERA_MODEL_ESP32S2_CAM_BOARD -//#define CAMERA_MODEL_ESP32S3_CAM_LCD - -#include "camera_pins.h" - -// =========================== -// Enter your WiFi credentials -// =========================== -#include "wifi_password.h" - -volatile float disconnected_since = 0; - -void startCameraServer(); - -void onWiFiDisconnect(WiFiEvent_t event, WiFiEventInfo_t info) { - disconnected_since = millis(); - WiFi.reconnect(); -} - -void onWiFiConnect(WiFiEvent_t event, WiFiEventInfo_t info) { - disconnected_since = 0; -} - -void setup() { - Serial.begin(115200); - //Serial.setDebugOutput(true); - Serial.println(); - - camera_config_t config; - config.ledc_channel = LEDC_CHANNEL_0; - config.ledc_timer = LEDC_TIMER_0; - config.pin_d0 = Y2_GPIO_NUM; - config.pin_d1 = Y3_GPIO_NUM; - config.pin_d2 = Y4_GPIO_NUM; - config.pin_d3 = Y5_GPIO_NUM; - config.pin_d4 = Y6_GPIO_NUM; - config.pin_d5 = Y7_GPIO_NUM; - config.pin_d6 = Y8_GPIO_NUM; - config.pin_d7 = Y9_GPIO_NUM; - config.pin_xclk = XCLK_GPIO_NUM; - config.pin_pclk = PCLK_GPIO_NUM; - config.pin_vsync = VSYNC_GPIO_NUM; - config.pin_href = HREF_GPIO_NUM; - config.pin_sscb_sda = SIOD_GPIO_NUM; - config.pin_sscb_scl = SIOC_GPIO_NUM; - config.pin_pwdn = PWDN_GPIO_NUM; - config.pin_reset = RESET_GPIO_NUM; - config.xclk_freq_hz = 20000000; - config.frame_size = FRAMESIZE_UXGA; - config.pixel_format = PIXFORMAT_JPEG; // for streaming - //config.pixel_format = PIXFORMAT_RGB565; // for face detection/recognition - config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; - config.fb_location = CAMERA_FB_IN_PSRAM; - config.jpeg_quality = 12; - config.fb_count = 1; - - // if PSRAM IC present, init with UXGA resolution and higher JPEG quality - // for larger pre-allocated frame buffer. - if(config.pixel_format == PIXFORMAT_JPEG){ - if(psramFound()){ - config.jpeg_quality = 10; - config.fb_count = 2; - config.grab_mode = CAMERA_GRAB_LATEST; - } else { - // Limit the frame size when PSRAM is not available - config.frame_size = FRAMESIZE_SVGA; - config.fb_location = CAMERA_FB_IN_DRAM; - } - } else { - // Best option for face detection/recognition - config.frame_size = FRAMESIZE_240X240; -#if CONFIG_IDF_TARGET_ESP32S3 - config.fb_count = 2; -#endif - } - -#if defined(CAMERA_MODEL_ESP_EYE) - pinMode(13, INPUT_PULLUP); - pinMode(14, INPUT_PULLUP); -#endif - - // camera init - esp_err_t err = esp_camera_init(&config); - if (err != ESP_OK) { - Serial.printf("Camera init failed with error 0x%x", err); - return; - } - - sensor_t * s = esp_camera_sensor_get(); - // initial sensors are flipped vertically and colors are a bit saturated - if (s->id.PID == OV3660_PID) { - s->set_vflip(s, 1); // flip it back - s->set_brightness(s, 1); // up the brightness just a bit - s->set_saturation(s, -2); // lower the saturation - } - // drop down frame size for higher initial frame rate - if(config.pixel_format == PIXFORMAT_JPEG){ - s->set_framesize(s, FRAMESIZE_QVGA); - } - -#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM) - s->set_vflip(s, 1); - s->set_hmirror(s, 1); -#endif - -#if defined(CAMERA_MODEL_ESP32S3_EYE) - s->set_vflip(s, 1); -#endif - - WiFi.onEvent(onWiFiDisconnect, ARDUINO_EVENT_WIFI_STA_DISCONNECTED); - WiFi.onEvent(onWiFiConnect, ARDUINO_EVENT_WIFI_STA_CONNECTED); - - WiFi.begin(ssid, password); - WiFi.setSleep(false); - - while (WiFi.status() != WL_CONNECTED) { - delay(500); - Serial.print("."); - } - Serial.println(""); - Serial.println("WiFi connected"); - - startCameraServer(); - - Serial.print("Camera Ready! Use 'http://"); - Serial.print(WiFi.localIP()); - Serial.println("' to connect"); -} - -void loop() { - if (disconnected_since != 0 && (millis() - disconnected_since) > 60000) { - ESP.restart(); - return; - } - - // Do nothing. Everything is done in another task by the web server - delay(10000); -} diff --git a/esp32-cam/CameraWebServer/app_httpd.cpp b/esp32-cam/CameraWebServer/app_httpd.cpp deleted file mode 100644 index e397c70..0000000 --- a/esp32-cam/CameraWebServer/app_httpd.cpp +++ /dev/null @@ -1,1287 +0,0 @@ -// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -#include <Arduino.h> - -#include "esp_http_server.h" -#include "esp_timer.h" -#include "esp_camera.h" -#include "img_converters.h" -#include "fb_gfx.h" -#include "driver/ledc.h" -#include "sdkconfig.h" -#include "camera_index.h" - -#if defined(ARDUINO_ARCH_ESP32) && defined(CONFIG_ARDUHAL_ESP_LOG) -#include "esp32-hal-log.h" -#define TAG "" -#else -#include "esp_log.h" -static const char *TAG = "camera_httpd"; -#endif - -// Face Detection will not work on boards without (or with disabled) PSRAM -#ifdef BOARD_HAS_PSRAM -#define CONFIG_ESP_FACE_DETECT_ENABLED 1 -// Face Recognition takes upward from 15 seconds per frame on chips other than ESP32S3 -// Makes no sense to have it enabled for them -#if CONFIG_IDF_TARGET_ESP32S3 -#define CONFIG_ESP_FACE_RECOGNITION_ENABLED 1 -#else -#define CONFIG_ESP_FACE_RECOGNITION_ENABLED 0 -#endif -#else -#define CONFIG_ESP_FACE_DETECT_ENABLED 0 -#define CONFIG_ESP_FACE_RECOGNITION_ENABLED 0 -#endif - -#if CONFIG_ESP_FACE_DETECT_ENABLED - -#include <vector> -#include "human_face_detect_msr01.hpp" -#include "human_face_detect_mnp01.hpp" - -#define TWO_STAGE 1 /*<! 1: detect by two-stage which is more accurate but slower(with keypoints). */ - /*<! 0: detect by one-stage which is less accurate but faster(without keypoints). */ - -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED -#include "face_recognition_tool.hpp" -#include "face_recognition_112_v1_s16.hpp" -#include "face_recognition_112_v1_s8.hpp" - -#define QUANT_TYPE 0 //if set to 1 => very large firmware, very slow, reboots when streaming... - -#define FACE_ID_SAVE_NUMBER 7 -#endif - -#define FACE_COLOR_WHITE 0x00FFFFFF -#define FACE_COLOR_BLACK 0x00000000 -#define FACE_COLOR_RED 0x000000FF -#define FACE_COLOR_GREEN 0x0000FF00 -#define FACE_COLOR_BLUE 0x00FF0000 -#define FACE_COLOR_YELLOW (FACE_COLOR_RED | FACE_COLOR_GREEN) -#define FACE_COLOR_CYAN (FACE_COLOR_BLUE | FACE_COLOR_GREEN) -#define FACE_COLOR_PURPLE (FACE_COLOR_BLUE | FACE_COLOR_RED) -#endif - -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED -int led_duty = 0; -bool isStreaming = false; -#ifdef CONFIG_LED_LEDC_LOW_SPEED_MODE -#define CONFIG_LED_LEDC_SPEED_MODE LEDC_LOW_SPEED_MODE -#else -#define CONFIG_LED_LEDC_SPEED_MODE LEDC_HIGH_SPEED_MODE -#endif -#endif - -typedef struct -{ - httpd_req_t *req; - size_t len; -} jpg_chunking_t; - -#define PART_BOUNDARY "123456789000000000000987654321" -static const char *_STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY; -static const char *_STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n"; -static const char *_STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\nX-Timestamp: %d.%06d\r\n\r\n"; - -httpd_handle_t stream_httpd = NULL; -httpd_handle_t camera_httpd = NULL; - -#if CONFIG_ESP_FACE_DETECT_ENABLED - -static int8_t detection_enabled = 0; - -// #if TWO_STAGE -// static HumanFaceDetectMSR01 s1(0.1F, 0.5F, 10, 0.2F); -// static HumanFaceDetectMNP01 s2(0.5F, 0.3F, 5); -// #else -// static HumanFaceDetectMSR01 s1(0.3F, 0.5F, 10, 0.2F); -// #endif - -static int8_t flash_enabled = 0; - -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED -static int8_t recognition_enabled = 0; -static int8_t is_enrolling = 0; - -#if QUANT_TYPE - // S16 model - FaceRecognition112V1S16 recognizer; -#else - // S8 model - FaceRecognition112V1S8 recognizer; -#endif -#endif - -#endif - -typedef struct -{ - size_t size; //number of values used for filtering - size_t index; //current value index - size_t count; //value count - int sum; - int *values; //array to be filled with values -} ra_filter_t; - -static ra_filter_t ra_filter; - -static ra_filter_t *ra_filter_init(ra_filter_t *filter, size_t sample_size) -{ - memset(filter, 0, sizeof(ra_filter_t)); - - filter->values = (int *)malloc(sample_size * sizeof(int)); - if (!filter->values) - { - return NULL; - } - memset(filter->values, 0, sample_size * sizeof(int)); - - filter->size = sample_size; - return filter; -} - -static int ra_filter_run(ra_filter_t *filter, int value) -{ - if (!filter->values) - { - return value; - } - filter->sum -= filter->values[filter->index]; - filter->values[filter->index] = value; - filter->sum += filter->values[filter->index]; - filter->index++; - filter->index = filter->index % filter->size; - if (filter->count < filter->size) - { - filter->count++; - } - return filter->sum / filter->count; -} - -#if CONFIG_ESP_FACE_DETECT_ENABLED -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED -static void rgb_print(fb_data_t *fb, uint32_t color, const char *str) -{ - fb_gfx_print(fb, (fb->width - (strlen(str) * 14)) / 2, 10, color, str); -} - -static int rgb_printf(fb_data_t *fb, uint32_t color, const char *format, ...) -{ - char loc_buf[64]; - char *temp = loc_buf; - int len; - va_list arg; - va_list copy; - va_start(arg, format); - va_copy(copy, arg); - len = vsnprintf(loc_buf, sizeof(loc_buf), format, arg); - va_end(copy); - if (len >= sizeof(loc_buf)) - { - temp = (char *)malloc(len + 1); - if (temp == NULL) - { - return 0; - } - } - vsnprintf(temp, len + 1, format, arg); - va_end(arg); - rgb_print(fb, color, temp); - if (len > 64) - { - free(temp); - } - return len; -} -#endif -static void draw_face_boxes(fb_data_t *fb, std::list<dl::detect::result_t> *results, int face_id) -{ - int x, y, w, h; - uint32_t color = FACE_COLOR_YELLOW; - if (face_id < 0) - { - color = FACE_COLOR_RED; - } - else if (face_id > 0) - { - color = FACE_COLOR_GREEN; - } - if(fb->bytes_per_pixel == 2){ - //color = ((color >> 8) & 0xF800) | ((color >> 3) & 0x07E0) | (color & 0x001F); - color = ((color >> 16) & 0x001F) | ((color >> 3) & 0x07E0) | ((color << 8) & 0xF800); - } - int i = 0; - for (std::list<dl::detect::result_t>::iterator prediction = results->begin(); prediction != results->end(); prediction++, i++) - { - // rectangle box - x = (int)prediction->box[0]; - y = (int)prediction->box[1]; - w = (int)prediction->box[2] - x + 1; - h = (int)prediction->box[3] - y + 1; - if((x + w) > fb->width){ - w = fb->width - x; - } - if((y + h) > fb->height){ - h = fb->height - y; - } - fb_gfx_drawFastHLine(fb, x, y, w, color); - fb_gfx_drawFastHLine(fb, x, y + h - 1, w, color); - fb_gfx_drawFastVLine(fb, x, y, h, color); - fb_gfx_drawFastVLine(fb, x + w - 1, y, h, color); -#if TWO_STAGE - // landmarks (left eye, mouth left, nose, right eye, mouth right) - int x0, y0, j; - for (j = 0; j < 10; j+=2) { - x0 = (int)prediction->keypoint[j]; - y0 = (int)prediction->keypoint[j+1]; - fb_gfx_fillRect(fb, x0, y0, 3, 3, color); - } -#endif - } -} - -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED -static int run_face_recognition(fb_data_t *fb, std::list<dl::detect::result_t> *results) -{ - std::vector<int> landmarks = results->front().keypoint; - int id = -1; - - Tensor<uint8_t> tensor; - tensor.set_element((uint8_t *)fb->data).set_shape({fb->height, fb->width, 3}).set_auto_free(false); - - int enrolled_count = recognizer.get_enrolled_id_num(); - - if (enrolled_count < FACE_ID_SAVE_NUMBER && is_enrolling){ - id = recognizer.enroll_id(tensor, landmarks, "", true); - ESP_LOGI(TAG, "Enrolled ID: %d", id); - rgb_printf(fb, FACE_COLOR_CYAN, "ID[%u]", id); - } - - face_info_t recognize = recognizer.recognize(tensor, landmarks); - if(recognize.id >= 0){ - rgb_printf(fb, FACE_COLOR_GREEN, "ID[%u]: %.2f", recognize.id, recognize.similarity); - } else { - rgb_print(fb, FACE_COLOR_RED, "Intruder Alert!"); - } - return recognize.id; -} -#endif -#endif - -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED -void enable_led(bool en) -{ // Turn LED On or Off - int duty = en ? led_duty : 0; - if (en && isStreaming && (led_duty > CONFIG_LED_MAX_INTENSITY)) - { - duty = CONFIG_LED_MAX_INTENSITY; - } - ledc_set_duty(CONFIG_LED_LEDC_SPEED_MODE, CONFIG_LED_LEDC_CHANNEL, duty); - ledc_update_duty(CONFIG_LED_LEDC_SPEED_MODE, CONFIG_LED_LEDC_CHANNEL); - ESP_LOGI(TAG, "Set LED intensity to %d", duty); -} -#endif - -static esp_err_t bmp_handler(httpd_req_t *req) -{ - camera_fb_t *fb = NULL; - esp_err_t res = ESP_OK; - uint64_t fr_start = esp_timer_get_time(); - fb = esp_camera_fb_get(); - if (!fb) - { - ESP_LOGE(TAG, "Camera capture failed"); - httpd_resp_send_500(req); - return ESP_FAIL; - } - - httpd_resp_set_type(req, "image/x-windows-bmp"); - httpd_resp_set_hdr(req, "Content-Disposition", "inline; filename=capture.bmp"); - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - - char ts[32]; - snprintf(ts, 32, "%ld.%06ld", fb->timestamp.tv_sec, fb->timestamp.tv_usec); - httpd_resp_set_hdr(req, "X-Timestamp", (const char *)ts); - - - uint8_t * buf = NULL; - size_t buf_len = 0; - bool converted = frame2bmp(fb, &buf, &buf_len); - esp_camera_fb_return(fb); - if(!converted){ - ESP_LOGE(TAG, "BMP Conversion failed"); - httpd_resp_send_500(req); - return ESP_FAIL; - } - res = httpd_resp_send(req, (const char *)buf, buf_len); - free(buf); - uint64_t fr_end = esp_timer_get_time(); - ESP_LOGI(TAG, "BMP: %llums, %uB", (uint64_t)((fr_end - fr_start) / 1000), buf_len); - return res; -} - -static size_t jpg_encode_stream(void *arg, size_t index, const void *data, size_t len) -{ - jpg_chunking_t *j = (jpg_chunking_t *)arg; - if (!index) - { - j->len = 0; - } - if (httpd_resp_send_chunk(j->req, (const char *)data, len) != ESP_OK) - { - return 0; - } - j->len += len; - return len; -} - -static esp_err_t capture_handler(httpd_req_t *req) -{ - camera_fb_t *fb = NULL; - esp_err_t res = ESP_OK; - int64_t fr_start = esp_timer_get_time(); - -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED - enable_led(true); - vTaskDelay(150 / portTICK_PERIOD_MS); // The LED needs to be turned on ~150ms before the call to esp_camera_fb_get() - fb = esp_camera_fb_get(); // or it won't be visible in the frame. A better way to do this is needed. - enable_led(false); -#else - fb = esp_camera_fb_get(); -#endif - - if (!fb) - { - ESP_LOGE(TAG, "Camera capture failed"); - httpd_resp_send_500(req); - return ESP_FAIL; - } - - httpd_resp_set_type(req, "image/jpeg"); - httpd_resp_set_hdr(req, "Content-Disposition", "inline; filename=capture.jpg"); - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - - char ts[32]; - snprintf(ts, 32, "%ld.%06ld", fb->timestamp.tv_sec, fb->timestamp.tv_usec); - httpd_resp_set_hdr(req, "X-Timestamp", (const char *)ts); - -#if CONFIG_ESP_FACE_DETECT_ENABLED - size_t out_len, out_width, out_height; - uint8_t *out_buf; - bool s; - bool detected = false; - int face_id = 0; - if (!detection_enabled || fb->width > 400) - { -#endif - size_t fb_len = 0; - if (fb->format == PIXFORMAT_JPEG) - { - fb_len = fb->len; - res = httpd_resp_send(req, (const char *)fb->buf, fb->len); - } - else - { - jpg_chunking_t jchunk = {req, 0}; - res = frame2jpg_cb(fb, 80, jpg_encode_stream, &jchunk) ? ESP_OK : ESP_FAIL; - httpd_resp_send_chunk(req, NULL, 0); - fb_len = jchunk.len; - } - esp_camera_fb_return(fb); - int64_t fr_end = esp_timer_get_time(); - ESP_LOGI(TAG, "JPG: %uB %ums", (uint32_t)(fb_len), (uint32_t)((fr_end - fr_start) / 1000)); - return res; -#if CONFIG_ESP_FACE_DETECT_ENABLED - } - - jpg_chunking_t jchunk = {req, 0}; - - if (fb->format == PIXFORMAT_RGB565 -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - && !recognition_enabled -#endif - ){ -#if TWO_STAGE - HumanFaceDetectMSR01 s1(0.1F, 0.5F, 10, 0.2F); - HumanFaceDetectMNP01 s2(0.5F, 0.3F, 5); - std::list<dl::detect::result_t> &candidates = s1.infer((uint16_t *)fb->buf, {(int)fb->height, (int)fb->width, 3}); - std::list<dl::detect::result_t> &results = s2.infer((uint16_t *)fb->buf, {(int)fb->height, (int)fb->width, 3}, candidates); -#else - HumanFaceDetectMSR01 s1(0.3F, 0.5F, 10, 0.2F); - std::list<dl::detect::result_t> &results = s1.infer((uint16_t *)fb->buf, {(int)fb->height, (int)fb->width, 3}); -#endif - if (results.size() > 0) { - fb_data_t rfb; - rfb.width = fb->width; - rfb.height = fb->height; - rfb.data = fb->buf; - rfb.bytes_per_pixel = 2; - rfb.format = FB_RGB565; - detected = true; - draw_face_boxes(&rfb, &results, face_id); - } - s = fmt2jpg_cb(fb->buf, fb->len, fb->width, fb->height, PIXFORMAT_RGB565, 90, jpg_encode_stream, &jchunk); - esp_camera_fb_return(fb); - } else - { - out_len = fb->width * fb->height * 3; - out_width = fb->width; - out_height = fb->height; - out_buf = (uint8_t*)malloc(out_len); - if (!out_buf) { - ESP_LOGE(TAG, "out_buf malloc failed"); - httpd_resp_send_500(req); - return ESP_FAIL; - } - s = fmt2rgb888(fb->buf, fb->len, fb->format, out_buf); - esp_camera_fb_return(fb); - if (!s) { - free(out_buf); - ESP_LOGE(TAG, "to rgb888 failed"); - httpd_resp_send_500(req); - return ESP_FAIL; - } - - fb_data_t rfb; - rfb.width = out_width; - rfb.height = out_height; - rfb.data = out_buf; - rfb.bytes_per_pixel = 3; - rfb.format = FB_BGR888; - -#if TWO_STAGE - HumanFaceDetectMSR01 s1(0.1F, 0.5F, 10, 0.2F); - HumanFaceDetectMNP01 s2(0.5F, 0.3F, 5); - std::list<dl::detect::result_t> &candidates = s1.infer((uint8_t *)out_buf, {(int)out_height, (int)out_width, 3}); - std::list<dl::detect::result_t> &results = s2.infer((uint8_t *)out_buf, {(int)out_height, (int)out_width, 3}, candidates); -#else - HumanFaceDetectMSR01 s1(0.3F, 0.5F, 10, 0.2F); - std::list<dl::detect::result_t> &results = s1.infer((uint8_t *)out_buf, {(int)out_height, (int)out_width, 3}); -#endif - - if (results.size() > 0) { - detected = true; -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - if (recognition_enabled) { - face_id = run_face_recognition(&rfb, &results); - } -#endif - draw_face_boxes(&rfb, &results, face_id); - } - - s = fmt2jpg_cb(out_buf, out_len, out_width, out_height, PIXFORMAT_RGB888, 90, jpg_encode_stream, &jchunk); - free(out_buf); - } - - if (!s) { - ESP_LOGE(TAG, "JPEG compression failed"); - httpd_resp_send_500(req); - return ESP_FAIL; - } - - int64_t fr_end = esp_timer_get_time(); - ESP_LOGI(TAG, "FACE: %uB %ums %s%d", (uint32_t)(jchunk.len), (uint32_t)((fr_end - fr_start) / 1000), detected ? "DETECTED " : "", face_id); - return res; -#endif -} - -static esp_err_t stream_handler(httpd_req_t *req) -{ - camera_fb_t *fb = NULL; - struct timeval _timestamp; - esp_err_t res = ESP_OK; - size_t _jpg_buf_len = 0; - uint8_t *_jpg_buf = NULL; - char *part_buf[128]; -#if CONFIG_ESP_FACE_DETECT_ENABLED - bool detected = false; - int face_id = 0; - int64_t fr_start = 0; - int64_t fr_ready = 0; - int64_t fr_face = 0; - int64_t fr_recognize = 0; - int64_t fr_encode = 0; - - size_t out_len = 0, out_width = 0, out_height = 0; - uint8_t *out_buf = NULL; - bool s = false; -#if TWO_STAGE - HumanFaceDetectMSR01 s1(0.1F, 0.5F, 10, 0.2F); - HumanFaceDetectMNP01 s2(0.5F, 0.3F, 5); -#else - HumanFaceDetectMSR01 s1(0.3F, 0.5F, 10, 0.2F); -#endif -#endif - - static int64_t last_frame = 0; - if (!last_frame) - { - last_frame = esp_timer_get_time(); - } - - res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE); - if (res != ESP_OK) - { - return res; - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - httpd_resp_set_hdr(req, "X-Framerate", "60"); - -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED - enable_led(true); - isStreaming = true; -#endif - - while (true) - { -#if CONFIG_ESP_FACE_DETECT_ENABLED - detected = false; - face_id = 0; -#endif - - fb = esp_camera_fb_get(); - if (!fb) - { - ESP_LOGE(TAG, "Camera capture failed"); - res = ESP_FAIL; - } - else - { - _timestamp.tv_sec = fb->timestamp.tv_sec; - _timestamp.tv_usec = fb->timestamp.tv_usec; -#if CONFIG_ESP_FACE_DETECT_ENABLED - fr_start = esp_timer_get_time(); - fr_ready = fr_start; - fr_face = fr_start; - fr_encode = fr_start; - fr_recognize = fr_start; - if (!detection_enabled || fb->width > 400) - { -#endif - if (fb->format != PIXFORMAT_JPEG) - { - bool jpeg_converted = frame2jpg(fb, 80, &_jpg_buf, &_jpg_buf_len); - esp_camera_fb_return(fb); - fb = NULL; - if (!jpeg_converted) - { - ESP_LOGE(TAG, "JPEG compression failed"); - res = ESP_FAIL; - } - } - else - { - _jpg_buf_len = fb->len; - _jpg_buf = fb->buf; - } -#if CONFIG_ESP_FACE_DETECT_ENABLED - } - else - { - if (fb->format == PIXFORMAT_RGB565 -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - && !recognition_enabled -#endif - ){ - fr_ready = esp_timer_get_time(); -#if TWO_STAGE - std::list<dl::detect::result_t> &candidates = s1.infer((uint16_t *)fb->buf, {(int)fb->height, (int)fb->width, 3}); - std::list<dl::detect::result_t> &results = s2.infer((uint16_t *)fb->buf, {(int)fb->height, (int)fb->width, 3}, candidates); -#else - std::list<dl::detect::result_t> &results = s1.infer((uint16_t *)fb->buf, {(int)fb->height, (int)fb->width, 3}); -#endif - fr_face = esp_timer_get_time(); - fr_recognize = fr_face; - if (results.size() > 0) { - fb_data_t rfb; - rfb.width = fb->width; - rfb.height = fb->height; - rfb.data = fb->buf; - rfb.bytes_per_pixel = 2; - rfb.format = FB_RGB565; - detected = true; - draw_face_boxes(&rfb, &results, face_id); - } - s = fmt2jpg(fb->buf, fb->len, fb->width, fb->height, PIXFORMAT_RGB565, 80, &_jpg_buf, &_jpg_buf_len); - esp_camera_fb_return(fb); - fb = NULL; - if (!s) { - ESP_LOGE(TAG, "fmt2jpg failed"); - res = ESP_FAIL; - } - fr_encode = esp_timer_get_time(); - } else - { - out_len = fb->width * fb->height * 3; - out_width = fb->width; - out_height = fb->height; - out_buf = (uint8_t*)malloc(out_len); - if (!out_buf) { - ESP_LOGE(TAG, "out_buf malloc failed"); - res = ESP_FAIL; - } else { - s = fmt2rgb888(fb->buf, fb->len, fb->format, out_buf); - esp_camera_fb_return(fb); - fb = NULL; - if (!s) { - free(out_buf); - ESP_LOGE(TAG, "to rgb888 failed"); - res = ESP_FAIL; - } else { - fr_ready = esp_timer_get_time(); - - fb_data_t rfb; - rfb.width = out_width; - rfb.height = out_height; - rfb.data = out_buf; - rfb.bytes_per_pixel = 3; - rfb.format = FB_BGR888; - -#if TWO_STAGE - std::list<dl::detect::result_t> &candidates = s1.infer((uint8_t *)out_buf, {(int)out_height, (int)out_width, 3}); - std::list<dl::detect::result_t> &results = s2.infer((uint8_t *)out_buf, {(int)out_height, (int)out_width, 3}, candidates); -#else - std::list<dl::detect::result_t> &results = s1.infer((uint8_t *)out_buf, {(int)out_height, (int)out_width, 3}); -#endif - - fr_face = esp_timer_get_time(); - fr_recognize = fr_face; - - if (results.size() > 0) { - detected = true; -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - if (recognition_enabled) { - face_id = run_face_recognition(&rfb, &results); - fr_recognize = esp_timer_get_time(); - } -#endif - draw_face_boxes(&rfb, &results, face_id); - } - s = fmt2jpg(out_buf, out_len, out_width, out_height, PIXFORMAT_RGB888, 90, &_jpg_buf, &_jpg_buf_len); - free(out_buf); - if (!s) { - ESP_LOGE(TAG, "fmt2jpg failed"); - res = ESP_FAIL; - } - fr_encode = esp_timer_get_time(); - } - } - } - } -#endif - } - if (res == ESP_OK) - { - res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY)); - } - if (res == ESP_OK) - { - size_t hlen = snprintf((char *)part_buf, 128, _STREAM_PART, _jpg_buf_len, _timestamp.tv_sec, _timestamp.tv_usec); - res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen); - } - if (res == ESP_OK) - { - res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len); - } - if (fb) - { - esp_camera_fb_return(fb); - fb = NULL; - _jpg_buf = NULL; - } - else if (_jpg_buf) - { - free(_jpg_buf); - _jpg_buf = NULL; - } - if (res != ESP_OK) - { - ESP_LOGE(TAG, "send frame failed failed"); - break; - } - int64_t fr_end = esp_timer_get_time(); - -#if CONFIG_ESP_FACE_DETECT_ENABLED - int64_t ready_time = (fr_ready - fr_start) / 1000; - int64_t face_time = (fr_face - fr_ready) / 1000; - int64_t recognize_time = (fr_recognize - fr_face) / 1000; - int64_t encode_time = (fr_encode - fr_recognize) / 1000; - int64_t process_time = (fr_encode - fr_start) / 1000; -#endif - - int64_t frame_time = fr_end - last_frame; - last_frame = fr_end; - frame_time /= 1000; - uint32_t avg_frame_time = ra_filter_run(&ra_filter, frame_time); - ESP_LOGI(TAG, "MJPG: %uB %ums (%.1ffps), AVG: %ums (%.1ffps)" -#if CONFIG_ESP_FACE_DETECT_ENABLED - ", %u+%u+%u+%u=%u %s%d" -#endif - , - (uint32_t)(_jpg_buf_len), - (uint32_t)frame_time, 1000.0 / (uint32_t)frame_time, - avg_frame_time, 1000.0 / avg_frame_time -#if CONFIG_ESP_FACE_DETECT_ENABLED - , - (uint32_t)ready_time, (uint32_t)face_time, (uint32_t)recognize_time, (uint32_t)encode_time, (uint32_t)process_time, - (detected) ? "DETECTED " : "", face_id -#endif - ); - } - -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED - isStreaming = false; - enable_led(false); -#endif - - last_frame = 0; - return res; -} - -static esp_err_t parse_get(httpd_req_t *req, char **obuf) -{ - char *buf = NULL; - size_t buf_len = 0; - - buf_len = httpd_req_get_url_query_len(req) + 1; - if (buf_len > 1) { - buf = (char *)malloc(buf_len); - if (!buf) { - httpd_resp_send_500(req); - return ESP_FAIL; - } - if (httpd_req_get_url_query_str(req, buf, buf_len) == ESP_OK) { - *obuf = buf; - return ESP_OK; - } - free(buf); - } - httpd_resp_send_404(req); - return ESP_FAIL; -} - -static esp_err_t cmd_handler(httpd_req_t *req) -{ - char *buf = NULL; - char variable[32]; - char value[32]; - - if (parse_get(req, &buf) != ESP_OK) { - return ESP_FAIL; - } - if (httpd_query_key_value(buf, "var", variable, sizeof(variable)) != ESP_OK || - httpd_query_key_value(buf, "val", value, sizeof(value)) != ESP_OK) { - free(buf); - httpd_resp_send_404(req); - return ESP_FAIL; - } - free(buf); - - int val = atoi(value); - ESP_LOGI(TAG, "%s = %d", variable, val); - sensor_t *s = esp_camera_sensor_get(); - int res = 0; - - if (!strcmp(variable, "framesize")) { - if (s->pixformat == PIXFORMAT_JPEG) { - res = s->set_framesize(s, (framesize_t)val); - } - } - else if (!strcmp(variable, "quality")) - res = s->set_quality(s, val); - else if (!strcmp(variable, "contrast")) - res = s->set_contrast(s, val); - else if (!strcmp(variable, "brightness")) - res = s->set_brightness(s, val); - else if (!strcmp(variable, "saturation")) - res = s->set_saturation(s, val); - else if (!strcmp(variable, "gainceiling")) - res = s->set_gainceiling(s, (gainceiling_t)val); - else if (!strcmp(variable, "colorbar")) - res = s->set_colorbar(s, val); - else if (!strcmp(variable, "awb")) - res = s->set_whitebal(s, val); - else if (!strcmp(variable, "agc")) - res = s->set_gain_ctrl(s, val); - else if (!strcmp(variable, "aec")) - res = s->set_exposure_ctrl(s, val); - else if (!strcmp(variable, "hmirror")) - res = s->set_hmirror(s, val); - else if (!strcmp(variable, "vflip")) - res = s->set_vflip(s, val); - else if (!strcmp(variable, "awb_gain")) - res = s->set_awb_gain(s, val); - else if (!strcmp(variable, "agc_gain")) - res = s->set_agc_gain(s, val); - else if (!strcmp(variable, "aec_value")) - res = s->set_aec_value(s, val); - else if (!strcmp(variable, "aec2")) - res = s->set_aec2(s, val); - else if (!strcmp(variable, "dcw")) - res = s->set_dcw(s, val); - else if (!strcmp(variable, "bpc")) - res = s->set_bpc(s, val); - else if (!strcmp(variable, "wpc")) - res = s->set_wpc(s, val); - else if (!strcmp(variable, "raw_gma")) - res = s->set_raw_gma(s, val); - else if (!strcmp(variable, "lenc")) - res = s->set_lenc(s, val); - else if (!strcmp(variable, "special_effect")) - res = s->set_special_effect(s, val); - else if (!strcmp(variable, "wb_mode")) - res = s->set_wb_mode(s, val); - else if (!strcmp(variable, "ae_level")) - res = s->set_ae_level(s, val); -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED - else if (!strcmp(variable, "led_intensity")) { - led_duty = val; - if (isStreaming) - enable_led(true); - } -#endif - -#if CONFIG_ESP_FACE_DETECT_ENABLED - else if (!strcmp(variable, "face_detect")) { - detection_enabled = val; -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - if (!detection_enabled) { - recognition_enabled = 0; - } -#endif - } -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - else if (!strcmp(variable, "face_enroll")){ - is_enrolling = !is_enrolling; - ESP_LOGI(TAG, "Enrolling: %s", is_enrolling?"true":"false"); - } - else if (!strcmp(variable, "face_recognize")) { - recognition_enabled = val; - if (recognition_enabled) { - detection_enabled = val; - } - } -#endif -#endif - else if(!strcmp(variable, "flash") ) { - pinMode(4, OUTPUT); - digitalWrite(4, atoi(value)); - flash_enabled = atoi(value); - } - else { - ESP_LOGI(TAG, "Unknown command: %s", variable); - res = -1; - } - - if (res < 0) { - return httpd_resp_send_500(req); - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, NULL, 0); -} - -static int print_reg(char * p, sensor_t * s, uint16_t reg, uint32_t mask){ - return sprintf(p, "\"0x%x\":%u,", reg, s->get_reg(s, reg, mask)); -} - -static esp_err_t status_handler(httpd_req_t *req) -{ - static char json_response[1024]; - - sensor_t *s = esp_camera_sensor_get(); - char *p = json_response; - *p++ = '{'; - - if(s->id.PID == OV5640_PID || s->id.PID == OV3660_PID){ - for(int reg = 0x3400; reg < 0x3406; reg+=2){ - p+=print_reg(p, s, reg, 0xFFF);//12 bit - } - p+=print_reg(p, s, 0x3406, 0xFF); - - p+=print_reg(p, s, 0x3500, 0xFFFF0);//16 bit - p+=print_reg(p, s, 0x3503, 0xFF); - p+=print_reg(p, s, 0x350a, 0x3FF);//10 bit - p+=print_reg(p, s, 0x350c, 0xFFFF);//16 bit - - for(int reg = 0x5480; reg <= 0x5490; reg++){ - p+=print_reg(p, s, reg, 0xFF); - } - - for(int reg = 0x5380; reg <= 0x538b; reg++){ - p+=print_reg(p, s, reg, 0xFF); - } - - for(int reg = 0x5580; reg < 0x558a; reg++){ - p+=print_reg(p, s, reg, 0xFF); - } - p+=print_reg(p, s, 0x558a, 0x1FF);//9 bit - } else if(s->id.PID == OV2640_PID){ - p+=print_reg(p, s, 0xd3, 0xFF); - p+=print_reg(p, s, 0x111, 0xFF); - p+=print_reg(p, s, 0x132, 0xFF); - } - - p += sprintf(p, "\"xclk\":%u,", s->xclk_freq_hz / 1000000); - p += sprintf(p, "\"pixformat\":%u,", s->pixformat); - p += sprintf(p, "\"framesize\":%u,", s->status.framesize); - p += sprintf(p, "\"quality\":%u,", s->status.quality); - p += sprintf(p, "\"brightness\":%d,", s->status.brightness); - p += sprintf(p, "\"contrast\":%d,", s->status.contrast); - p += sprintf(p, "\"saturation\":%d,", s->status.saturation); - p += sprintf(p, "\"sharpness\":%d,", s->status.sharpness); - p += sprintf(p, "\"special_effect\":%u,", s->status.special_effect); - p += sprintf(p, "\"wb_mode\":%u,", s->status.wb_mode); - p += sprintf(p, "\"awb\":%u,", s->status.awb); - p += sprintf(p, "\"awb_gain\":%u,", s->status.awb_gain); - p += sprintf(p, "\"aec\":%u,", s->status.aec); - p += sprintf(p, "\"aec2\":%u,", s->status.aec2); - p += sprintf(p, "\"ae_level\":%d,", s->status.ae_level); - p += sprintf(p, "\"aec_value\":%u,", s->status.aec_value); - p += sprintf(p, "\"agc\":%u,", s->status.agc); - p += sprintf(p, "\"agc_gain\":%u,", s->status.agc_gain); - p += sprintf(p, "\"gainceiling\":%u,", s->status.gainceiling); - p += sprintf(p, "\"bpc\":%u,", s->status.bpc); - p += sprintf(p, "\"wpc\":%u,", s->status.wpc); - p += sprintf(p, "\"raw_gma\":%u,", s->status.raw_gma); - p += sprintf(p, "\"lenc\":%u,", s->status.lenc); - p += sprintf(p, "\"hmirror\":%u,", s->status.hmirror); - p += sprintf(p, "\"vflip\":%u,", s->status.vflip); - p += sprintf(p, "\"dcw\":%u,", s->status.dcw); - p += sprintf(p, "\"colorbar\":%u", s->status.colorbar); -#ifdef CONFIG_LED_ILLUMINATOR_ENABLED - p += sprintf(p, ",\"led_intensity\":%u", led_duty); -#else - p += sprintf(p, ",\"led_intensity\":%d", -1); -#endif -#if CONFIG_ESP_FACE_DETECT_ENABLED - p += sprintf(p, ",\"face_detect\":%u", detection_enabled); -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - p += sprintf(p, ",\"face_enroll\":%u,", is_enrolling); - p += sprintf(p, ",\"face_recognize\":%u", recognition_enabled); -#endif -#endif - p += sprintf(p, ",\"flash\":%u", flash_enabled); - *p++ = '}'; - *p++ = 0; - httpd_resp_set_type(req, "application/json"); - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, json_response, strlen(json_response)); -} - -static esp_err_t xclk_handler(httpd_req_t *req) -{ - char *buf = NULL; - char _xclk[32]; - - if (parse_get(req, &buf) != ESP_OK) { - return ESP_FAIL; - } - if (httpd_query_key_value(buf, "xclk", _xclk, sizeof(_xclk)) != ESP_OK) { - free(buf); - httpd_resp_send_404(req); - return ESP_FAIL; - } - free(buf); - - int xclk = atoi(_xclk); - ESP_LOGI(TAG, "Set XCLK: %d MHz", xclk); - - sensor_t *s = esp_camera_sensor_get(); - int res = s->set_xclk(s, LEDC_TIMER_0, xclk); - if (res) { - return httpd_resp_send_500(req); - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, NULL, 0); -} - -static esp_err_t reg_handler(httpd_req_t *req) -{ - char *buf = NULL; - char _reg[32]; - char _mask[32]; - char _val[32]; - - if (parse_get(req, &buf) != ESP_OK) { - return ESP_FAIL; - } - if (httpd_query_key_value(buf, "reg", _reg, sizeof(_reg)) != ESP_OK || - httpd_query_key_value(buf, "mask", _mask, sizeof(_mask)) != ESP_OK || - httpd_query_key_value(buf, "val", _val, sizeof(_val)) != ESP_OK) { - free(buf); - httpd_resp_send_404(req); - return ESP_FAIL; - } - free(buf); - - int reg = atoi(_reg); - int mask = atoi(_mask); - int val = atoi(_val); - ESP_LOGI(TAG, "Set Register: reg: 0x%02x, mask: 0x%02x, value: 0x%02x", reg, mask, val); - - sensor_t *s = esp_camera_sensor_get(); - int res = s->set_reg(s, reg, mask, val); - if (res) { - return httpd_resp_send_500(req); - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, NULL, 0); -} - -static esp_err_t greg_handler(httpd_req_t *req) -{ - char *buf = NULL; - char _reg[32]; - char _mask[32]; - - if (parse_get(req, &buf) != ESP_OK) { - return ESP_FAIL; - } - if (httpd_query_key_value(buf, "reg", _reg, sizeof(_reg)) != ESP_OK || - httpd_query_key_value(buf, "mask", _mask, sizeof(_mask)) != ESP_OK) { - free(buf); - httpd_resp_send_404(req); - return ESP_FAIL; - } - free(buf); - - int reg = atoi(_reg); - int mask = atoi(_mask); - sensor_t *s = esp_camera_sensor_get(); - int res = s->get_reg(s, reg, mask); - if (res < 0) { - return httpd_resp_send_500(req); - } - ESP_LOGI(TAG, "Get Register: reg: 0x%02x, mask: 0x%02x, value: 0x%02x", reg, mask, res); - - char buffer[20]; - const char * val = itoa(res, buffer, 10); - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, val, strlen(val)); -} - -static int parse_get_var(char *buf, const char * key, int def) -{ - char _int[16]; - if(httpd_query_key_value(buf, key, _int, sizeof(_int)) != ESP_OK){ - return def; - } - return atoi(_int); -} - -static esp_err_t pll_handler(httpd_req_t *req) -{ - char *buf = NULL; - - if (parse_get(req, &buf) != ESP_OK) { - return ESP_FAIL; - } - - int bypass = parse_get_var(buf, "bypass", 0); - int mul = parse_get_var(buf, "mul", 0); - int sys = parse_get_var(buf, "sys", 0); - int root = parse_get_var(buf, "root", 0); - int pre = parse_get_var(buf, "pre", 0); - int seld5 = parse_get_var(buf, "seld5", 0); - int pclken = parse_get_var(buf, "pclken", 0); - int pclk = parse_get_var(buf, "pclk", 0); - free(buf); - - ESP_LOGI(TAG, "Set Pll: bypass: %d, mul: %d, sys: %d, root: %d, pre: %d, seld5: %d, pclken: %d, pclk: %d", bypass, mul, sys, root, pre, seld5, pclken, pclk); - sensor_t *s = esp_camera_sensor_get(); - int res = s->set_pll(s, bypass, mul, sys, root, pre, seld5, pclken, pclk); - if (res) { - return httpd_resp_send_500(req); - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, NULL, 0); -} - -static esp_err_t win_handler(httpd_req_t *req) -{ - char *buf = NULL; - - if (parse_get(req, &buf) != ESP_OK) { - return ESP_FAIL; - } - - int startX = parse_get_var(buf, "sx", 0); - int startY = parse_get_var(buf, "sy", 0); - int endX = parse_get_var(buf, "ex", 0); - int endY = parse_get_var(buf, "ey", 0); - int offsetX = parse_get_var(buf, "offx", 0); - int offsetY = parse_get_var(buf, "offy", 0); - int totalX = parse_get_var(buf, "tx", 0); - int totalY = parse_get_var(buf, "ty", 0); - int outputX = parse_get_var(buf, "ox", 0); - int outputY = parse_get_var(buf, "oy", 0); - bool scale = parse_get_var(buf, "scale", 0) == 1; - bool binning = parse_get_var(buf, "binning", 0) == 1; - free(buf); - - ESP_LOGI(TAG, "Set Window: Start: %d %d, End: %d %d, Offset: %d %d, Total: %d %d, Output: %d %d, Scale: %u, Binning: %u", startX, startY, endX, endY, offsetX, offsetY, totalX, totalY, outputX, outputY, scale, binning); - sensor_t *s = esp_camera_sensor_get(); - int res = s->set_res_raw(s, startX, startY, endX, endY, offsetX, offsetY, totalX, totalY, outputX, outputY, scale, binning); - if (res) { - return httpd_resp_send_500(req); - } - - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, NULL, 0); -} - -static esp_err_t uptime_handler(httpd_req_t *req) -{ - char buf[64]; - sprintf(buf, "{\"seconds\":%ld}", (long)(millis()/1000)); - httpd_resp_set_type(req, "application/json"); - httpd_resp_set_hdr(req, "Access-Control-Allow-Origin", "*"); - return httpd_resp_send(req, buf, strlen(buf)); -} - -static esp_err_t index_handler(httpd_req_t *req) -{ - httpd_resp_set_type(req, "text/html"); - httpd_resp_set_hdr(req, "Content-Encoding", "gzip"); - sensor_t *s = esp_camera_sensor_get(); - if (s != NULL) { - if (s->id.PID == OV3660_PID) { - return httpd_resp_send(req, (const char *)index_ov3660_html_gz, index_ov3660_html_gz_len); - } else if (s->id.PID == OV5640_PID) { - return httpd_resp_send(req, (const char *)index_ov5640_html_gz, index_ov5640_html_gz_len); - } else { - return httpd_resp_send(req, (const char *)index_ov2640_html_gz, index_ov2640_html_gz_len); - } - } else { - ESP_LOGE(TAG, "Camera sensor not found"); - return httpd_resp_send_500(req); - } -} - -void startCameraServer() -{ - httpd_config_t config = HTTPD_DEFAULT_CONFIG(); - config.max_uri_handlers = 16; - - httpd_uri_t index_uri = { - .uri = "/", - .method = HTTP_GET, - .handler = index_handler, - .user_ctx = NULL}; - - httpd_uri_t status_uri = { - .uri = "/status", - .method = HTTP_GET, - .handler = status_handler, - .user_ctx = NULL}; - - httpd_uri_t cmd_uri = { - .uri = "/control", - .method = HTTP_GET, - .handler = cmd_handler, - .user_ctx = NULL}; - - httpd_uri_t capture_uri = { - .uri = "/capture", - .method = HTTP_GET, - .handler = capture_handler, - .user_ctx = NULL}; - - httpd_uri_t stream_uri = { - .uri = "/stream", - .method = HTTP_GET, - .handler = stream_handler, - .user_ctx = NULL}; - - httpd_uri_t bmp_uri = { - .uri = "/bmp", - .method = HTTP_GET, - .handler = bmp_handler, - .user_ctx = NULL}; - - httpd_uri_t xclk_uri = { - .uri = "/xclk", - .method = HTTP_GET, - .handler = xclk_handler, - .user_ctx = NULL}; - - httpd_uri_t reg_uri = { - .uri = "/reg", - .method = HTTP_GET, - .handler = reg_handler, - .user_ctx = NULL}; - - httpd_uri_t greg_uri = { - .uri = "/greg", - .method = HTTP_GET, - .handler = greg_handler, - .user_ctx = NULL}; - - httpd_uri_t pll_uri = { - .uri = "/pll", - .method = HTTP_GET, - .handler = pll_handler, - .user_ctx = NULL}; - - httpd_uri_t win_uri = { - .uri = "/resolution", - .method = HTTP_GET, - .handler = win_handler, - .user_ctx = NULL}; - - httpd_uri_t uptime_uri = { - .uri = "/uptime", - .method = HTTP_GET, - .handler = uptime_handler, - .user_ctx = NULL}; - - ra_filter_init(&ra_filter, 20); - -#if CONFIG_ESP_FACE_RECOGNITION_ENABLED - recognizer.set_partition(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_ANY, "fr"); - - // load ids from flash partition - recognizer.set_ids_from_flash(); -#endif - ESP_LOGI(TAG, "Starting web server on port: '%d'", config.server_port); - if (httpd_start(&camera_httpd, &config) == ESP_OK) - { - httpd_register_uri_handler(camera_httpd, &index_uri); - httpd_register_uri_handler(camera_httpd, &cmd_uri); - httpd_register_uri_handler(camera_httpd, &status_uri); - httpd_register_uri_handler(camera_httpd, &capture_uri); - httpd_register_uri_handler(camera_httpd, &bmp_uri); - - httpd_register_uri_handler(camera_httpd, &xclk_uri); - httpd_register_uri_handler(camera_httpd, ®_uri); - httpd_register_uri_handler(camera_httpd, &greg_uri); - httpd_register_uri_handler(camera_httpd, &pll_uri); - httpd_register_uri_handler(camera_httpd, &win_uri); - httpd_register_uri_handler(camera_httpd, &uptime_uri); - } - - config.server_port += 1; - config.ctrl_port += 1; - ESP_LOGI(TAG, "Starting stream server on port: '%d'", config.server_port); - if (httpd_start(&stream_httpd, &config) == ESP_OK) - { - httpd_register_uri_handler(stream_httpd, &stream_uri); - } -} diff --git a/esp32-cam/CameraWebServer/camera_index.h b/esp32-cam/CameraWebServer/camera_index.h deleted file mode 100644 index 5ca12e9..0000000 --- a/esp32-cam/CameraWebServer/camera_index.h +++ /dev/null @@ -1,1570 +0,0 @@ - - -//File: index_ov2640.html.gz, Size: 6787 -#define index_ov2640_html_gz_len 6787 -const uint8_t index_ov2640_html_gz[] = { -0x1F, 0x8B, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xED, 0x3D, 0x6B, 0x73, 0xDB, 0x46, -0x92, 0xDF, 0xFD, 0x2B, 0x60, 0x24, 0x6B, 0x92, 0x25, 0x92, 0x22, 0x29, 0x4A, 0x96, 0x15, 0x89, -0x3E, 0x5B, 0x96, 0x1F, 0xB5, 0x76, 0xE2, 0xB5, 0x12, 0xC7, 0x5B, 0xA9, 0x2D, 0x07, 0x24, 0x86, -0x24, 0x62, 0x10, 0xE0, 0x02, 0xA0, 0x48, 0x26, 0xA5, 0xDF, 0x71, 0x3F, 0xE8, 0xFE, 0xD8, 0x75, -0xCF, 0x03, 0x18, 0x00, 0x83, 0x17, 0x29, 0x91, 0x5E, 0xDF, 0xD1, 0xA9, 0x08, 0x8F, 0xE9, 0x9E, -0x7E, 0x77, 0xCF, 0x0C, 0x06, 0x38, 0x7F, 0x68, 0xBA, 0xA3, 0x60, 0x3D, 0x27, 0xDA, 0x34, 0x98, -0xD9, 0x83, 0x07, 0xE7, 0xEC, 0x8F, 0x06, 0xBF, 0xF3, 0x29, 0x31, 0x4C, 0x76, 0x48, 0x4F, 0x67, -0x24, 0x30, 0xB4, 0xD1, 0xD4, 0xF0, 0x7C, 0x12, 0x5C, 0xE8, 0x8B, 0x60, 0xDC, 0x3A, 0xD5, 0x93, -0xB7, 0x1D, 0x63, 0x46, 0x2E, 0xF4, 0x1B, 0x8B, 0x2C, 0xE7, 0xAE, 0x17, 0xE8, 0xDA, 0xC8, 0x75, -0x02, 0xE2, 0x40, 0xF3, 0xA5, 0x65, 0x06, 0xD3, 0x0B, 0x93, 0xDC, 0x58, 0x23, 0xD2, 0xA2, 0x27, -0x4D, 0xCB, 0xB1, 0x02, 0xCB, 0xB0, 0x5B, 0xFE, 0xC8, 0xB0, 0xC9, 0x45, 0x57, 0xC6, 0x15, 0x58, -0x81, 0x4D, 0x06, 0x57, 0xD7, 0xEF, 0x8F, 0x7A, 0xDA, 0x4F, 0x1F, 0x7B, 0xFD, 0x93, 0xCE, 0xF9, -0x21, 0xBB, 0x16, 0xB5, 0xF1, 0x83, 0xB5, 0x7C, 0x8E, 0xBF, 0xA1, 0x6B, 0xAE, 0xB5, 0xBF, 0x62, -0x97, 0xF0, 0x37, 0x06, 0x22, 0x5A, 0x63, 0x63, 0x66, 0xD9, 0xEB, 0x33, 0xED, 0x99, 0x07, 0x7D, -0x36, 0x5F, 0x13, 0xFB, 0x86, 0x04, 0xD6, 0xC8, 0x68, 0xFA, 0x86, 0xE3, 0xB7, 0x7C, 0xE2, 0x59, -0xE3, 0x1F, 0x52, 0x80, 0x43, 0x63, 0xF4, 0x65, 0xE2, 0xB9, 0x0B, 0xC7, 0x3C, 0xD3, 0xBE, 0xEB, -0x9E, 0xE2, 0xBF, 0x74, 0xA3, 0x91, 0x6B, 0xBB, 0x1E, 0xDC, 0xBF, 0x7A, 0x89, 0xFF, 0xD2, 0xF7, -0x69, 0xEF, 0xBE, 0xF5, 0x27, 0x39, 0xD3, 0xBA, 0x27, 0xF3, 0x55, 0xEC, 0xFE, 0xED, 0x83, 0xD8, -0xE9, 0xB4, 0x97, 0x45, 0x3D, 0x87, 0x3F, 0xCD, 0x87, 0xF7, 0xC9, 0x28, 0xB0, 0x5C, 0xA7, 0x3D, -0x33, 0x2C, 0x47, 0x81, 0xC9, 0xB4, 0xFC, 0xB9, 0x6D, 0x80, 0x0C, 0xC6, 0x36, 0xC9, 0xC5, 0xF3, -0xDD, 0x8C, 0x38, 0x8B, 0x66, 0x01, 0x36, 0x44, 0xD2, 0x32, 0x2D, 0x8F, 0xB5, 0x3A, 0x43, 0x39, -0x2C, 0x66, 0x4E, 0x21, 0xDA, 0x3C, 0xBA, 0x1C, 0xD7, 0x21, 0x0A, 0x01, 0x62, 0x47, 0x4B, 0xCF, -0x98, 0x63, 0x03, 0xFC, 0x9B, 0x6E, 0x32, 0xB3, 0x1C, 0x66, 0x54, 0x67, 0xDA, 0x51, 0xBF, 0x33, -0x5F, 0x15, 0xA8, 0xF2, 0xE8, 0x04, 0xFF, 0xA5, 0x1B, 0xCD, 0x0D, 0xD3, 0xB4, 0x9C, 0xC9, 0x99, -0x76, 0xAA, 0x44, 0xE1, 0x7A, 0x26, 0xF1, 0x5A, 0x9E, 0x61, 0x5A, 0x0B, 0xFF, 0x4C, 0xEB, 0xAB, -0xDA, 0xCC, 0x0C, 0x6F, 0x02, 0xB4, 0x04, 0x2E, 0x10, 0xDB, 0xEA, 0x2A, 0x29, 0xE1, 0x4D, 0x3C, -0x6B, 0x32, 0x0D, 0x40, 0xA5, 0xA9, 0x36, 0x49, 0xA1, 0x71, 0x17, 0x2A, 0xD2, 0x67, 0xAE, 0xDC, -0xD4, 0x52, 0x33, 0x6C, 0x6B, 0xE2, 0xB4, 0xAC, 0x80, 0xCC, 0x80, 0x1D, 0x3F, 0xF0, 0x48, 0x30, -0x9A, 0xE6, 0x91, 0x32, 0xB6, 0x26, 0x0B, 0x8F, 0x28, 0x08, 0x09, 0xE5, 0x96, 0xC3, 0x30, 0xDC, -0x4C, 0xDF, 0x6A, 0x2D, 0xC9, 0xF0, 0x8B, 0x15, 0xB4, 0xB8, 0x4C, 0x86, 0x64, 0xEC, 0x7A, 0x44, -0xD9, 0x52, 0xB4, 0xB0, 0xDD, 0xD1, 0x97, 0x96, 0x1F, 0x18, 0x5E, 0x50, 0x06, 0xA1, 0x31, 0x0E, -0x88, 0x57, 0x8C, 0x8F, 0xA0, 0x55, 0x14, 0x63, 0xCB, 0xEE, 0x96, 0x37, 0xB0, 0x1C, 0xDB, 0x72, -0x48, 0x79, 0xF2, 0xB2, 0xFA, 0x8D, 0xA3, 0x63, 0xAD, 0x4A, 0x28, 0xC6, 0x9A, 0x4D, 0xF2, 0xAC, -0x84, 0xF2, 0x9A, 0xEE, 0x8C, 0xFB, 0x4D, 0xB7, 0xD3, 0xF9, 0x5B, 0xFA, 0xE6, 0x94, 0x30, 0x33, -0x35, 0x16, 0x81, 0xBB, 0xBD, 0x47, 0xA4, 0xDC, 0x2A, 0xC1, 0xC7, 0x7F, 0xCD, 0x88, 0x69, 0x19, -0x5A, 0x5D, 0x72, 0xE7, 0xD3, 0x0E, 0xD8, 0x54, 0x43, 0x33, 0x1C, 0x53, 0xAB, 0xBB, 0x9E, 0x05, -0x8E, 0x60, 0xD0, 0x70, 0x63, 0xC3, 0x15, 0x48, 0x1C, 0x73, 0xD2, 0x50, 0xB0, 0x9C, 0xE3, 0x33, -0xB2, 0x44, 0xD4, 0x6E, 0x83, 0xBF, 0x12, 0x21, 0x07, 0x7F, 0x85, 0x0E, 0xA4, 0xE0, 0x91, 0xA2, -0xCF, 0xD3, 0x97, 0x4C, 0x61, 0x96, 0xCE, 0xF0, 0x37, 0x33, 0x56, 0xAD, 0x5C, 0xDD, 0x89, 0x46, -0x42, 0x87, 0x90, 0x66, 0x47, 0x75, 0x68, 0x7A, 0x33, 0xD5, 0x5A, 0x1A, 0x46, 0xC9, 0x86, 0x1A, -0x86, 0x23, 0x55, 0xAB, 0x1C, 0x7F, 0xB2, 0x51, 0x54, 0x60, 0x57, 0xCD, 0x6A, 0x14, 0x3B, 0xD8, -0x3F, 0x95, 0x0D, 0x31, 0x4E, 0x32, 0xA3, 0x08, 0xFE, 0xCA, 0x47, 0x92, 0x08, 0x59, 0x61, 0x34, -0x51, 0x20, 0xCE, 0x8E, 0x28, 0x29, 0xBC, 0x59, 0xDE, 0xAD, 0xC0, 0x9A, 0x4F, 0x42, 0xD9, 0xE8, -0xA2, 0x40, 0x9C, 0x47, 0x43, 0x61, 0x94, 0xC1, 0xDF, 0x6D, 0x89, 0x7A, 0xE3, 0xBB, 0xE1, 0x22, -0x08, 0x5C, 0xC7, 0xDF, 0x2A, 0x45, 0x65, 0xF9, 0xD9, 0x1F, 0x0B, 0x3F, 0xB0, 0xC6, 0xEB, 0x16, -0x77, 0x69, 0xF0, 0xB3, 0xB9, 0x01, 0x25, 0xE4, 0x90, 0x04, 0x4B, 0x42, 0xF2, 0xCB, 0x0D, 0xC7, -0xB8, 0x81, 0xB8, 0x33, 0x99, 0xD8, 0x2A, 0xDB, 0x1B, 0x2D, 0x3C, 0x1F, 0xEB, 0xB6, 0xB9, 0x6B, -0x01, 0x62, 0x2F, 0xDD, 0x71, 0xDC, 0x07, 0x4B, 0x76, 0xD4, 0x1A, 0x0D, 0x15, 0x7D, 0xB9, 0x8B, -0x00, 0x65, 0xAC, 0xD4, 0x84, 0x0B, 0xEC, 0x58, 0xC1, 0x5A, 0x79, 0x8F, 0x7B, 0xA2, 0xE2, 0x8E, -0x70, 0xC1, 0xDC, 0xB4, 0x10, 0xA7, 0xEB, 0x6C, 0x34, 0x25, 0xA3, 0x2F, 0xC4, 0x3C, 0x28, 0x2C, -0xC3, 0x8A, 0xCA, 0xC3, 0xB6, 0xE5, 0xCC, 0x17, 0x41, 0x0B, 0xCB, 0xA9, 0xF9, 0xBD, 0xE8, 0x9C, -0x1A, 0xA4, 0x60, 0xB1, 0xD7, 0xCB, 0x2B, 0x2A, 0x8E, 0xE7, 0xAB, 0x7C, 0x21, 0xC8, 0xC4, 0x0E, -0x6C, 0x63, 0x48, 0xEC, 0x3C, 0x92, 0xB9, 0x33, 0x64, 0x84, 0x5D, 0x1E, 0xAB, 0xB2, 0x6B, 0x37, -0x4A, 0x59, 0x94, 0xBC, 0xFA, 0x8F, 0xFF, 0x56, 0x5A, 0x8E, 0xF4, 0xB8, 0x19, 0xBB, 0xE4, 0x13, -0x1B, 0x1C, 0x2C, 0xAB, 0xF4, 0x86, 0x36, 0x4B, 0xA0, 0x21, 0xB7, 0x03, 0xCF, 0x70, 0x26, 0x04, -0x62, 0xC1, 0xAA, 0x29, 0x0E, 0xF3, 0x07, 0x06, 0xA5, 0xD8, 0xC7, 0x50, 0x7D, 0x9C, 0x3F, 0x10, -0x61, 0x01, 0xA1, 0xA9, 0xB5, 0xD9, 0xC1, 0x06, 0x55, 0x89, 0xA4, 0xDF, 0x5C, 0x42, 0xBA, 0x4A, -0xEB, 0x60, 0x85, 0x89, 0xD2, 0x73, 0xE2, 0xB6, 0xA5, 0x2C, 0xF4, 0x0B, 0x43, 0x83, 0x18, 0xF2, -0x8D, 0xC7, 0x45, 0x83, 0xC6, 0xF1, 0xF8, 0xA8, 0x73, 0xD4, 0x2F, 0xAC, 0x9C, 0x94, 0x5C, 0x26, -0x06, 0x8E, 0x8A, 0xD0, 0x11, 0x86, 0x95, 0x5C, 0x23, 0xF0, 0x8D, 0x1B, 0x65, 0xD1, 0xEE, 0xFA, -0x16, 0x1B, 0xB9, 0x19, 0x43, 0x1F, 0xC6, 0x6E, 0x81, 0x62, 0xE8, 0xC5, 0x0D, 0xBD, 0xA7, 0xA4, -0x8F, 0x96, 0x74, 0x4A, 0x17, 0x10, 0xE2, 0x55, 0x93, 0x1D, 0xD3, 0x80, 0xBA, 0x89, 0xA4, 0x60, -0x65, 0x51, 0x19, 0x90, 0x55, 0xD0, 0x32, 0xC9, 0xC8, 0xF5, 0x58, 0x35, 0x98, 0x31, 0x72, 0x4C, -0x28, 0xB2, 0xD8, 0x62, 0xCF, 0xA6, 0xEE, 0x0D, 0xF1, 0x14, 0xC2, 0x4A, 0x28, 0xB5, 0xFF, 0xA4, -0x6F, 0x96, 0xC0, 0x66, 0x40, 0x7A, 0x54, 0xCA, 0x3E, 0x8E, 0xAE, 0xD7, 0x1D, 0xF5, 0x72, 0xFD, -0x98, 0xA1, 0x6B, 0x83, 0xCF, 0x18, 0x43, 0x9B, 0x98, 0x39, 0xD9, 0xCC, 0x24, 0x63, 0x63, 0x61, -0x07, 0x05, 0x56, 0x69, 0x74, 0xF0, 0x5F, 0x5E, 0x8F, 0x34, 0x0C, 0xFD, 0x86, 0xF3, 0x42, 0x17, -0x34, 0x70, 0xFC, 0x4B, 0xD1, 0xA7, 0x28, 0x35, 0x8C, 0xF9, 0x9C, 0x18, 0xD0, 0x6A, 0x44, 0xB2, -0xF4, 0x50, 0x6A, 0x88, 0xA1, 0x8E, 0xF3, 0xA5, 0xC6, 0xED, 0x85, 0x0E, 0x1B, 0x16, 0x8F, 0x95, -0x78, 0x3E, 0x1B, 0xBB, 0xA3, 0x85, 0xAA, 0xAA, 0x29, 0xE7, 0x78, 0x69, 0x7C, 0x67, 0x42, 0x64, -0xBE, 0x6D, 0x51, 0xF7, 0x5F, 0x38, 0x0E, 0x6A, 0xB4, 0x15, 0x78, 0xC0, 0xA6, 0xA2, 0xA3, 0x72, -0x82, 0xDB, 0x28, 0x86, 0xC5, 0x04, 0x9B, 0x35, 0x77, 0x95, 0x08, 0x53, 0x8A, 0x70, 0x1A, 0x46, -0x5A, 0x0D, 0x62, 0x88, 0x65, 0x0A, 0x54, 0xDB, 0xC9, 0x25, 0x98, 0x2E, 0x66, 0xAA, 0x3A, 0x4A, -0x74, 0xD6, 0x85, 0xA4, 0xCF, 0xBA, 0xF3, 0x26, 0x43, 0xA3, 0xDE, 0x69, 0x76, 0x9A, 0x47, 0xF0, -0x3F, 0xC5, 0x78, 0x26, 0xDF, 0xB8, 0xB8, 0x78, 0x33, 0x2C, 0x2F, 0x11, 0xA2, 0x8B, 0xA7, 0x95, -0xB2, 0x82, 0x7D, 0xA1, 0x2E, 0xCA, 0x7B, 0x52, 0x7C, 0x7E, 0xA9, 0xDB, 0x2E, 0xC8, 0xC3, 0x19, -0x26, 0x5D, 0xDD, 0x10, 0x15, 0xD6, 0x52, 0x55, 0xC5, 0x33, 0xF7, 0xCF, 0x16, 0x2B, 0x42, 0xFE, -0xCF, 0x5B, 0xBB, 0x24, 0x8A, 0x6F, 0xDA, 0xD2, 0x2B, 0xCB, 0xC5, 0xDF, 0xB7, 0x6D, 0x74, 0xB2, -0xB5, 0xDE, 0xE2, 0x55, 0x1F, 0x50, 0xE8, 0xC0, 0x18, 0xD4, 0x83, 0xC1, 0x68, 0x66, 0x65, 0x28, -0xB5, 0xD9, 0x40, 0x06, 0x63, 0xCB, 0xB6, 0x5B, 0xB6, 0xBB, 0x2C, 0xAE, 0x44, 0xF2, 0x2D, 0x39, -0x65, 0xA7, 0xC5, 0x26, 0xBF, 0x29, 0xB5, 0x0B, 0x88, 0x5C, 0xFF, 0x11, 0xD4, 0x7E, 0xDB, 0x0E, -0x97, 0xEB, 0x1A, 0x9B, 0x25, 0x8A, 0x0D, 0xEC, 0x71, 0xBB, 0x8E, 0x4A, 0x99, 0x12, 0xAB, 0x04, -0xF3, 0x87, 0x3D, 0x4B, 0x2B, 0x18, 0x4D, 0x37, 0x18, 0x7A, 0x46, 0x03, 0x23, 0x8F, 0xD8, 0x06, -0x56, 0xF0, 0x1B, 0xCD, 0x50, 0x14, 0x0E, 0xDF, 0x64, 0xF0, 0x32, 0x9C, 0x50, 0xD1, 0x7D, 0x3D, -0xB3, 0x4B, 0x6D, 0x56, 0x3B, 0x64, 0xC7, 0x6A, 0xB5, 0x59, 0x17, 0x94, 0xFB, 0x71, 0xCF, 0x50, -0x37, 0xAA, 0x10, 0xD1, 0x45, 0xD0, 0x9E, 0x78, 0x64, 0x5D, 0x82, 0x99, 0x26, 0xFF, 0x7B, 0xC6, -0xE6, 0x8F, 0x37, 0x9F, 0x2A, 0xA1, 0x09, 0x80, 0x5B, 0x51, 0xBB, 0xEF, 0x97, 0xE8, 0x3A, 0xBB, -0xCB, 0x32, 0xF6, 0x18, 0xCE, 0x8E, 0xEA, 0x7A, 0x89, 0x70, 0x93, 0x93, 0x42, 0xD5, 0xA6, 0x2A, -0xB2, 0xAF, 0x7A, 0x3C, 0x4F, 0xC6, 0x41, 0xC6, 0xE2, 0x0F, 0xAD, 0x53, 0x8F, 0xF2, 0xA3, 0x5B, -0x4B, 0x9A, 0x4D, 0x29, 0x8C, 0x1C, 0xE1, 0x24, 0x66, 0xB6, 0xF5, 0x29, 0x31, 0x63, 0xF4, 0xAC, -0x8C, 0x3C, 0x5B, 0x25, 0xA2, 0x7C, 0xA6, 0x6A, 0x86, 0x36, 0x33, 0x9E, 0xF2, 0x41, 0x3D, 0xE4, -0x53, 0xBD, 0x77, 0xA2, 0x5C, 0x5B, 0xC9, 0x69, 0x9C, 0x47, 0x5A, 0xE6, 0x2C, 0x60, 0x3A, 0x65, -0x65, 0x0E, 0x90, 0xE5, 0x58, 0xA4, 0x54, 0x54, 0xBE, 0x57, 0xE6, 0x45, 0x98, 0xF4, 0x4C, 0x56, -0xAE, 0xB1, 0x5B, 0x33, 0x03, 0xCA, 0x5E, 0x34, 0x57, 0x03, 0x30, 0xAA, 0xF4, 0x57, 0xC6, 0xDC, -0xA5, 0x39, 0xD6, 0xEE, 0x49, 0xA7, 0xA0, 0xCB, 0x91, 0xED, 0xFA, 0x5B, 0x4E, 0x80, 0x65, 0xCF, -0x7F, 0x29, 0xEF, 0x94, 0x4A, 0xDD, 0xB9, 0x3E, 0x95, 0xEF, 0x8E, 0x09, 0x99, 0x77, 0x3B, 0xCA, -0x48, 0x9B, 0x3B, 0x4B, 0x49, 0x67, 0xD0, 0xE8, 0xFA, 0xE5, 0x99, 0x36, 0x22, 0xEA, 0x30, 0x1A, -0x9F, 0xA8, 0x2B, 0x33, 0x55, 0x9A, 0xAB, 0x87, 0xA9, 0x65, 0x9A, 0x24, 0x77, 0x2E, 0x18, 0xC7, -0xBC, 0x25, 0x8B, 0x07, 0xA4, 0x5F, 0x35, 0x29, 0x75, 0x2F, 0x4E, 0x91, 0xFB, 0x58, 0x43, 0xF7, -0xBE, 0x3D, 0x86, 0x27, 0x9A, 0xAC, 0x99, 0xF4, 0x78, 0x29, 0x92, 0x4B, 0xAA, 0xD2, 0xB9, 0xC3, -0xB9, 0x56, 0x14, 0x19, 0xC8, 0x01, 0x5B, 0xA5, 0xA3, 0x79, 0x82, 0x2A, 0xBA, 0x90, 0xD2, 0xE6, -0x6B, 0x4B, 0x7C, 0x19, 0xB0, 0x95, 0xB5, 0xBA, 0x72, 0x87, 0x4B, 0x6D, 0xD4, 0x02, 0x92, 0xFD, -0x66, 0x8A, 0x66, 0x4F, 0x95, 0x51, 0x0E, 0x91, 0x61, 0x8A, 0x11, 0x0F, 0x57, 0xC5, 0x5B, 0x6D, -0xEA, 0x1C, 0xE7, 0x87, 0xD2, 0xD3, 0x70, 0xE7, 0x87, 0xD1, 0x83, 0x7B, 0xE7, 0xF8, 0x48, 0x9C, -0xFC, 0xD0, 0x1C, 0xEF, 0x67, 0x64, 0x1B, 0xBE, 0x7F, 0xA1, 0xE3, 0xA3, 0x5D, 0x7A, 0xFC, 0x19, -0xBA, 0x73, 0xD3, 0xBA, 0xD1, 0x2C, 0xF3, 0x42, 0xB7, 0xDD, 0x89, 0x9B, 0xB8, 0x47, 0xEF, 0x33, -0x2D, 0x43, 0x1E, 0xBB, 0xD0, 0x63, 0xEB, 0x8B, 0x3A, 0x85, 0x8A, 0x2E, 0xE9, 0x83, 0x47, 0xDF, -0x3D, 0x79, 0xFC, 0xF8, 0xE4, 0x87, 0x47, 0xCE, 0xD0, 0x9F, 0xF3, 0xFF, 0xFF, 0xCC, 0x96, 0x63, -0x7F, 0xFA, 0xD8, 0x3B, 0xE9, 0xC3, 0x70, 0x8F, 0x04, 0x01, 0x98, 0x9E, 0x7F, 0x7E, 0x48, 0x91, -0x26, 0x08, 0x39, 0x04, 0x4A, 0x32, 0x68, 0xE3, 0xE5, 0x8E, 0x8A, 0x3C, 0xD1, 0xC4, 0x87, 0x0C, -0x3E, 0x34, 0x3C, 0x45, 0x13, 0xDA, 0x8C, 0x15, 0xD3, 0x34, 0x94, 0xE8, 0x54, 0x27, 0x43, 0x77, -0x95, 0xE4, 0x80, 0x32, 0xC5, 0x15, 0xC6, 0x5B, 0x11, 0x33, 0x0B, 0x21, 0x80, 0x51, 0x70, 0x5C, -0x5C, 0x85, 0x36, 0xCA, 0x46, 0x31, 0x15, 0x60, 0xE3, 0xD5, 0xC8, 0xFE, 0x22, 0x74, 0xAF, 0x0B, -0xA5, 0x38, 0x6E, 0xC0, 0x42, 0x65, 0x46, 0x57, 0x31, 0x56, 0x39, 0x8C, 0xB4, 0x6C, 0xC8, 0xB8, -0x00, 0xD1, 0xB6, 0x28, 0x76, 0x76, 0x2D, 0x1F, 0x13, 0xC5, 0x26, 0xE9, 0x55, 0x00, 0xEB, 0x83, -0x4F, 0x97, 0x6F, 0xFF, 0xAE, 0xBD, 0x7B, 0xFD, 0xA7, 0x52, 0x43, 0x45, 0x44, 0x61, 0x8C, 0x2E, -0xD1, 0x33, 0x05, 0x63, 0xFA, 0x10, 0x32, 0xD1, 0xB9, 0x66, 0x28, 0x06, 0xCC, 0xF6, 0x36, 0x71, -0x26, 0xC1, 0xF4, 0x42, 0xEF, 0xEA, 0xF8, 0x48, 0x8B, 0x38, 0xEB, 0xE9, 0x1A, 0xC6, 0x6F, 0x7A, -0x70, 0x63, 0xD8, 0x0B, 0x3C, 0xEA, 0x94, 0xE1, 0x35, 0x6D, 0x5A, 0xCA, 0x66, 0x3C, 0xB0, 0x84, -0x32, 0x96, 0x02, 0x71, 0x5C, 0xCA, 0xFA, 0xE0, 0x9A, 0x04, 0xE7, 0x87, 0xEC, 0x56, 0x81, 0xD6, -0xF2, 0xFB, 0x06, 0x4F, 0x66, 0xE6, 0x90, 0x67, 0x42, 0x79, 0x8A, 0x1F, 0x7B, 0xC6, 0x8C, 0xA0, -0x54, 0x4A, 0x69, 0x5E, 0xD6, 0x7A, 0x08, 0xA9, 0x0F, 0x3E, 0x10, 0x5A, 0x10, 0x01, 0x19, 0xA5, -0x14, 0x7F, 0xCE, 0x6B, 0xD4, 0x58, 0xFF, 0xA1, 0x3D, 0xF3, 0x35, 0xA9, 0x96, 0xC1, 0xCC, 0xBC, -0x84, 0xDC, 0x1F, 0xB6, 0x5A, 0x5A, 0xEF, 0xDD, 0x7B, 0xAD, 0xD5, 0x2A, 0xD1, 0xD8, 0x9D, 0x53, -0x77, 0xE2, 0xFA, 0xEF, 0x1E, 0xE9, 0x83, 0x5F, 0x3E, 0xBD, 0x7A, 0x56, 0x87, 0xBA, 0xB0, 0xB3, -0xEA, 0xF6, 0x3A, 0x9D, 0xC6, 0xF9, 0x21, 0x6B, 0x52, 0x1D, 0x57, 0x0F, 0xF4, 0x4A, 0x71, 0xF5, -0x4E, 0x01, 0x57, 0xA7, 0xD7, 0xDF, 0x02, 0x57, 0x57, 0x1F, 0xBC, 0x7E, 0xC1, 0x30, 0x3D, 0xEE, -0x6D, 0x43, 0x14, 0x18, 0x38, 0xA5, 0x09, 0xC8, 0x59, 0x3D, 0x3E, 0x39, 0xDD, 0x1C, 0xD3, 0x13, -0xE0, 0xEE, 0x23, 0x60, 0x3A, 0x05, 0x41, 0x9D, 0x6C, 0x23, 0xA7, 0x53, 0x7D, 0x80, 0x78, 0x20, -0xA2, 0xAF, 0xFA, 0xA7, 0x5B, 0xE0, 0x79, 0x0C, 0x22, 0x42, 0x44, 0x80, 0x64, 0x75, 0xB4, 0x8D, -0x8C, 0x4E, 0xF4, 0xC1, 0xE5, 0x9B, 0x97, 0xF5, 0x3E, 0x30, 0xD6, 0x7B, 0x72, 0xB2, 0x39, 0x9E, -0x63, 0x7D, 0xF0, 0x0F, 0x24, 0x08, 0x88, 0x59, 0xF5, 0xFA, 0x5B, 0x10, 0xD4, 0xD7, 0x07, 0x00, -0x8F, 0x38, 0x36, 0x46, 0x01, 0x76, 0xFD, 0x9A, 0x12, 0x83, 0x88, 0xBA, 0x8F, 0xB7, 0xE0, 0x0A, -0xAC, 0xFA, 0x1F, 0x28, 0x1E, 0x40, 0xB2, 0xEA, 0xF6, 0xB7, 0xB1, 0x69, 0x40, 0x44, 0x49, 0x02, -0x5F, 0x43, 0x57, 0xDB, 0x1C, 0x13, 0xD8, 0xF4, 0x93, 0x93, 0xD5, 0x93, 0x93, 0x72, 0x08, 0x30, -0x46, 0x62, 0xBC, 0xC9, 0x8B, 0xA2, 0xF9, 0x41, 0x36, 0x2F, 0x80, 0xFE, 0x7B, 0x01, 0xC3, 0xA2, -0x60, 0x5D, 0x39, 0x7C, 0x72, 0x38, 0x90, 0x09, 0x3B, 0x28, 0x17, 0x39, 0x25, 0x4A, 0xC2, 0x27, -0x74, 0xF4, 0x41, 0xBF, 0x44, 0x86, 0x8A, 0x95, 0x30, 0x14, 0x36, 0x46, 0x3F, 0x4D, 0x9B, 0x68, -0x79, 0x98, 0x30, 0xC1, 0x25, 0x8E, 0x74, 0x29, 0x82, 0x6C, 0x14, 0x9A, 0x15, 0xB4, 0x1A, 0x2B, -0x7D, 0x70, 0x72, 0x54, 0x98, 0xD2, 0x36, 0x57, 0xC6, 0x90, 0x0E, 0xC0, 0x1D, 0xE2, 0xFB, 0x95, -0xF5, 0x11, 0x81, 0xEA, 0x83, 0xE7, 0xE1, 0xF1, 0x36, 0x5A, 0x69, 0xF5, 0xB6, 0x50, 0x8B, 0x44, -0x0E, 0xD3, 0x4C, 0xAB, 0xC7, 0x55, 0x13, 0x15, 0x2F, 0x77, 0xAB, 0x98, 0x22, 0x6A, 0xB7, 0xD1, -0x0B, 0x16, 0xE0, 0x9E, 0xE1, 0x07, 0x95, 0xB5, 0x22, 0x00, 0x21, 0x42, 0xF3, 0xA3, 0xBD, 0x69, -0x24, 0x24, 0xE5, 0x1B, 0xD0, 0x87, 0x6F, 0x04, 0x0B, 0xF6, 0x2C, 0x54, 0x65, 0x8D, 0x44, 0xA0, -0x50, 0x0F, 0x84, 0xC7, 0x7B, 0xD3, 0x8A, 0x44, 0xCE, 0xB7, 0xA0, 0x97, 0x39, 0x19, 0x59, 0x86, -0xFD, 0x99, 0x8C, 0xC7, 0x90, 0xB0, 0xAA, 0xEB, 0x26, 0x06, 0x0E, 0xFA, 0x61, 0xE7, 0xDA, 0x15, -0x3D, 0xAF, 0x5C, 0x9B, 0x27, 0xD0, 0x6D, 0x5E, 0xA0, 0x27, 0xB3, 0x37, 0x9F, 0xA4, 0x26, 0x74, -0x48, 0xC4, 0x8E, 0xF4, 0xC1, 0x8F, 0x6E, 0x48, 0xE7, 0xE6, 0x05, 0xC6, 0x8F, 0x64, 0x42, 0xE7, -0x80, 0xB7, 0xA9, 0x76, 0x5E, 0x79, 0xC6, 0x9A, 0x6E, 0x32, 0xDC, 0xA6, 0xF8, 0xFA, 0x40, 0x4C, -0xED, 0x67, 0xCB, 0xD9, 0x9C, 0x99, 0x3E, 0x12, 0x42, 0x88, 0xB3, 0x1D, 0x16, 0x28, 0x49, 0x9F, -0xC3, 0xC1, 0x76, 0x48, 0x4E, 0x70, 0xBC, 0x3A, 0xB7, 0x8C, 0xAF, 0xA1, 0xDC, 0x32, 0x96, 0xC3, -0xCA, 0x6E, 0x01, 0x30, 0xFA, 0xE0, 0xD9, 0xAF, 0xCF, 0x2B, 0x07, 0x29, 0xB6, 0x92, 0x5A, 0xC6, -0xC2, 0xA3, 0xF9, 0x08, 0xEC, 0x2C, 0x35, 0x51, 0xA4, 0xF6, 0x9C, 0xB2, 0x93, 0x45, 0x0A, 0xBE, -0x04, 0x81, 0x74, 0xE1, 0x49, 0x97, 0xD8, 0x2C, 0xC7, 0xE3, 0xFD, 0x45, 0x30, 0x20, 0xE2, 0xF3, -0xC4, 0xB0, 0xAA, 0xE7, 0x15, 0x01, 0x48, 0x35, 0xA5, 0xBD, 0x82, 0xA3, 0x5D, 0xA9, 0x8B, 0x75, -0xBB, 0x37, 0x9D, 0x71, 0xAE, 0xF7, 0xAD, 0x38, 0x20, 0x64, 0xE6, 0x9A, 0xD5, 0xA7, 0x81, 0x38, -0x9C, 0x3E, 0x00, 0xAD, 0xBD, 0x83, 0x83, 0xCA, 0x59, 0x46, 0x20, 0xB8, 0xE7, 0xF4, 0xF2, 0x6C, -0x11, 0xB8, 0xDB, 0x64, 0x96, 0xEB, 0x85, 0xE3, 0xAC, 0xB7, 0x49, 0x2B, 0x97, 0xB6, 0xBB, 0x30, -0x37, 0xC7, 0x00, 0x39, 0xE5, 0xA7, 0xF1, 0xD8, 0x1A, 0x6D, 0x9E, 0x95, 0x20, 0xA3, 0xBC, 0x76, -0x67, 0x25, 0xE1, 0xEF, 0x39, 0x8A, 0x93, 0x51, 0xF5, 0x00, 0x41, 0x46, 0xA0, 0xC5, 0xAB, 0x4B, -0xED, 0xFA, 0xEA, 0xC7, 0xEB, 0x9F, 0x3E, 0xEC, 0x26, 0x3A, 0x40, 0x9F, 0x7B, 0x0A, 0x0C, 0xC8, -0xED, 0xBE, 0x63, 0x02, 0x10, 0xD1, 0xDB, 0x44, 0x4F, 0x3D, 0xA6, 0xA8, 0x17, 0xD7, 0xEF, 0x77, -0xA5, 0xA5, 0xDE, 0xFE, 0xD4, 0xD4, 0xFB, 0x1A, 0xF4, 0xF4, 0xD9, 0x26, 0x37, 0xC4, 0xDE, 0x40, -0x57, 0x0C, 0x10, 0xF5, 0xA5, 0xBD, 0xC5, 0xA3, 0xBD, 0x0D, 0xE4, 0x42, 0x52, 0xBE, 0x81, 0x61, -0x1C, 0x58, 0xC5, 0x67, 0x4A, 0xF4, 0x26, 0xCE, 0xC3, 0x20, 0xF5, 0xC1, 0xD5, 0x6A, 0xEE, 0xFA, -0x0B, 0xAF, 0x64, 0x42, 0x55, 0x6B, 0xA4, 0xB3, 0x95, 0x42, 0x04, 0x29, 0x4C, 0x23, 0x1D, 0xAE, -0x10, 0x5C, 0x24, 0x91, 0xD6, 0xCF, 0xFA, 0x77, 0xAA, 0x15, 0x44, 0x7E, 0x9F, 0x8A, 0x99, 0x6C, -0x90, 0x77, 0x26, 0x98, 0x77, 0x5E, 0x5D, 0xEE, 0x26, 0x94, 0x4D, 0xF6, 0x96, 0x70, 0x26, 0x7B, -0x4D, 0x38, 0x1A, 0x5F, 0xC3, 0x16, 0x52, 0xD8, 0x70, 0x10, 0xC1, 0x01, 0x61, 0xEC, 0xBC, 0xC9, -0x00, 0x42, 0xF2, 0x9C, 0xEE, 0x6A, 0x1B, 0xD7, 0x11, 0x64, 0xC4, 0x3D, 0xE7, 0x28, 0xF2, 0x9B, -0xE3, 0x3B, 0xF5, 0x9A, 0xA3, 0x42, 0x6A, 0xB7, 0x71, 0x1A, 0xE4, 0x64, 0x44, 0x2C, 0x1B, 0xB7, -0x32, 0x57, 0x55, 0x88, 0x04, 0xCB, 0x74, 0xA2, 0x5D, 0xB2, 0xB3, 0x6D, 0x74, 0xD3, 0xDB, 0x46, -0x37, 0x32, 0x45, 0x71, 0xF5, 0x9C, 0xDC, 0x53, 0xA6, 0xE9, 0xF6, 0x4E, 0xEF, 0x53, 0x3D, 0xC3, -0x79, 0xF5, 0x98, 0x06, 0x30, 0xFA, 0xE0, 0xF9, 0xFB, 0xDD, 0xC4, 0x34, 0xEC, 0xAC, 0x64, 0x4C, -0xDB, 0x2A, 0x82, 0x51, 0xA6, 0xF6, 0x5D, 0x8A, 0x2D, 0x37, 0xD0, 0xC6, 0x12, 0x09, 0xFF, 0x75, -0x47, 0xDA, 0x58, 0x96, 0xD7, 0xC6, 0x1D, 0x67, 0x98, 0xE5, 0xD7, 0xA0, 0x1F, 0xCF, 0x58, 0x7E, -0x9E, 0xCC, 0x8C, 0xCA, 0x3A, 0xE2, 0x70, 0xFA, 0xE0, 0x83, 0xB1, 0xD4, 0x5E, 0xBD, 0x7B, 0xB6, -0x13, 0x5D, 0x89, 0x4E, 0xF7, 0xA3, 0xAF, 0x90, 0xE5, 0x7D, 0xEB, 0xCC, 0x26, 0x4E, 0x75, 0xA7, -0x42, 0x20, 0x7D, 0xF0, 0x96, 0x38, 0xBE, 0x76, 0xE9, 0x7A, 0xFC, 0xB5, 0x73, 0x3B, 0xD1, 0x1A, -0xED, 0x79, 0x3F, 0x2A, 0x63, 0x4C, 0xEF, 0x5B, 0x5F, 0xD3, 0x99, 0xE5, 0x79, 0xAE, 0x57, 0x59, -0x65, 0x1C, 0x4E, 0x1F, 0xBC, 0x6E, 0xBD, 0xA3, 0x47, 0x3B, 0x51, 0x97, 0xE8, 0x75, 0x3F, 0x1A, -0x0B, 0x79, 0xDE, 0xB7, 0xD2, 0x6E, 0xC6, 0xB6, 0x35, 0xAF, 0xAC, 0x32, 0x0A, 0xA5, 0x0F, 0x3E, -0xB6, 0x5E, 0xC2, 0xDF, 0x9D, 0xA8, 0x8B, 0xF5, 0xB8, 0x1F, 0x65, 0x71, 0x6E, 0xF7, 0xAD, 0x2A, -0x73, 0xB4, 0xAC, 0xAC, 0x28, 0x80, 0xD1, 0x07, 0x2F, 0x2E, 0x7F, 0xD5, 0xEA, 0x2F, 0xDC, 0xA5, -0x83, 0x0F, 0x5C, 0x6A, 0x57, 0x3F, 0x36, 0x76, 0xA2, 0x31, 0xEC, 0x7A, 0x3F, 0xFA, 0xA2, 0x4C, -0xEF, 0x5B, 0x5B, 0x74, 0x5F, 0xCD, 0xD0, 0xA8, 0x1E, 0x0E, 0x05, 0x20, 0x3E, 0xFB, 0x02, 0x47, -0xDA, 0x73, 0x63, 0x37, 0x01, 0x31, 0xEC, 0x77, 0x17, 0x45, 0x7B, 0xC4, 0xE4, 0xBE, 0xF5, 0x64, -0x13, 0xB3, 0x84, 0x8A, 0xE2, 0x25, 0x86, 0xF9, 0x19, 0xB7, 0xA8, 0xE0, 0xD6, 0xCD, 0x35, 0xD4, -0x1A, 0x57, 0x2F, 0xB4, 0x37, 0xE2, 0xB4, 0x04, 0x37, 0x1B, 0xCF, 0xD9, 0x65, 0x0D, 0x6D, 0xE3, -0xF4, 0xC4, 0x07, 0xB7, 0xBD, 0xE3, 0xE3, 0xED, 0x86, 0xB7, 0x59, 0xD3, 0xA8, 0xC7, 0xC7, 0xF7, -0xA8, 0x93, 0xB1, 0x31, 0x22, 0x9F, 0x4D, 0x12, 0x6C, 0xF2, 0x30, 0x8C, 0x04, 0xAB, 0x0F, 0x5E, -0xC2, 0x89, 0xF6, 0x82, 0x9E, 0xEC, 0xAA, 0x0C, 0x94, 0xFB, 0xDF, 0x85, 0x27, 0xC5, 0xF8, 0xDD, -0xB7, 0x33, 0x51, 0x62, 0xA0, 0xE8, 0x76, 0x27, 0xCE, 0x46, 0x7B, 0x0B, 0x62, 0xE0, 0x5C, 0x7D, -0x1F, 0xD8, 0xF9, 0x6E, 0x15, 0x18, 0x11, 0xB1, 0x33, 0x1D, 0x4A, 0x7C, 0xEF, 0x5D, 0x8D, 0x70, -0x7D, 0x5A, 0x5D, 0x7B, 0x08, 0x05, 0x4A, 0xC3, 0x3F, 0xBB, 0xD1, 0x14, 0xED, 0x70, 0x27, 0x0A, -0x62, 0xAC, 0xDD, 0xA1, 0x5E, 0xB2, 0xEF, 0xCB, 0x3B, 0xBF, 0xF8, 0x2B, 0x53, 0x8B, 0x94, 0xC0, -0x77, 0x20, 0xD1, 0x79, 0x4E, 0x12, 0xB4, 0xFC, 0xC0, 0xB2, 0x6D, 0x7D, 0xF0, 0x8A, 0x04, 0xDA, -0x35, 0x1E, 0x96, 0xDC, 0x72, 0x24, 0x61, 0x11, 0xFB, 0x0D, 0x03, 0x8F, 0x18, 0x33, 0x7D, 0x70, -0x8D, 0x2F, 0x93, 0x05, 0x5C, 0x78, 0x56, 0x1D, 0x19, 0xB5, 0x6E, 0xE2, 0x78, 0x2E, 0x10, 0x15, -0x2A, 0x87, 0xBF, 0xA4, 0x4E, 0xD7, 0xC4, 0x91, 0x74, 0x6D, 0x70, 0x45, 0x1B, 0x6B, 0xE8, 0xFE, -0xC5, 0xDD, 0x95, 0xDE, 0x0B, 0x45, 0x37, 0x3F, 0xE2, 0x6E, 0xC6, 0xF8, 0xAB, 0xA6, 0x41, 0xAD, -0x6C, 0x6B, 0xF3, 0xE0, 0xDC, 0x9F, 0x1B, 0x8E, 0x68, 0x46, 0xF7, 0xFD, 0x2E, 0xF9, 0x46, 0xCE, -0xA1, 0x6B, 0x9B, 0xD0, 0xF0, 0x99, 0x79, 0x83, 0xAF, 0xDD, 0x32, 0xB5, 0xEB, 0x70, 0x4B, 0x22, -0x82, 0x80, 0x5D, 0x08, 0x0C, 0x05, 0xBA, 0x9F, 0x7A, 0x02, 0x3D, 0xDB, 0x3C, 0x8A, 0x2F, 0x2A, -0xCA, 0x51, 0x6E, 0xC6, 0x2E, 0x4A, 0x8F, 0x4C, 0x42, 0x41, 0xAA, 0x36, 0xD7, 0x2A, 0xF7, 0x54, -0x7E, 0x20, 0x13, 0xCB, 0x07, 0x1A, 0x35, 0x30, 0x8B, 0x43, 0xBA, 0x0F, 0x8D, 0xD9, 0x72, 0xB9, -0x3D, 0x8E, 0x72, 0x97, 0x7C, 0x87, 0xB6, 0x72, 0xE7, 0x6A, 0xA5, 0x52, 0x3E, 0xB9, 0xCF, 0x34, -0x8E, 0xB1, 0xC8, 0xE8, 0x1F, 0xB6, 0x5A, 0xD3, 0x3E, 0xEE, 0xA8, 0xD3, 0x04, 0x6B, 0xE7, 0x87, -0xD3, 0x7E, 0xD1, 0x66, 0xB0, 0xC2, 0xED, 0x90, 0xC0, 0xE9, 0xC6, 0xBB, 0x21, 0x51, 0x4A, 0x03, -0xA0, 0xA6, 0xA9, 0xBD, 0x33, 0xFC, 0x2F, 0x4D, 0xED, 0x23, 0x16, 0x5E, 0x3B, 0xDC, 0x14, 0x89, -0xB4, 0x1B, 0xA6, 0xE9, 0x65, 0x6E, 0x8C, 0xEC, 0xC7, 0x36, 0x46, 0x9E, 0x88, 0x8D, 0x91, 0xD2, -0x12, 0xC8, 0xAA, 0xDB, 0xED, 0x96, 0xE1, 0xBC, 0xE4, 0xDE, 0xC8, 0x3B, 0x61, 0x69, 0x06, 0xC2, -0x2C, 0xC9, 0x52, 0x5F, 0xB0, 0xD4, 0x97, 0x58, 0x3A, 0xBD, 0xCB, 0xDD, 0x9E, 0x77, 0xC2, 0x11, -0x5F, 0x60, 0xFF, 0x4A, 0x58, 0x2A, 0xB5, 0x81, 0x95, 0xDA, 0xF6, 0x5D, 0xED, 0x5F, 0xA5, 0x4D, -0x92, 0xC1, 0xF0, 0x38, 0x37, 0x16, 0x52, 0x10, 0xE6, 0xF3, 0xAF, 0xEE, 0xD2, 0xE7, 0x27, 0x5B, -0xF8, 0xFC, 0x24, 0xE5, 0xF3, 0x3B, 0x74, 0x76, 0x41, 0xF8, 0x37, 0xE6, 0xF0, 0x82, 0xAD, 0x0A, -0x4E, 0xAF, 0x64, 0x6B, 0xB7, 0x1E, 0x12, 0x5A, 0xC2, 0xAB, 0xBB, 0xF4, 0x90, 0x0C, 0xBB, 0xDD, -0xC8, 0x48, 0x79, 0xCC, 0x19, 0xEC, 0x26, 0x27, 0xD1, 0x4A, 0x4A, 0x56, 0x27, 0xEF, 0x1D, 0x77, -0x80, 0x1E, 0xF5, 0x79, 0xD9, 0x74, 0x17, 0xEA, 0x29, 0xBF, 0x51, 0x3E, 0xB3, 0xC9, 0xDD, 0x14, -0x65, 0xF8, 0xAA, 0x8A, 0xB9, 0x54, 0xE1, 0x96, 0x2E, 0xCC, 0x2E, 0xDF, 0xFE, 0xBD, 0x5A, 0x2D, -0x96, 0xEC, 0x69, 0x77, 0xF5, 0xD8, 0x66, 0xD6, 0x2A, 0x0B, 0x8C, 0xD3, 0x0E, 0x11, 0x07, 0x5F, -0x19, 0xD1, 0xFB, 0x14, 0x72, 0xAE, 0x18, 0x0A, 0x4A, 0x41, 0x21, 0x04, 0xCB, 0x1A, 0xEC, 0xD1, -0x40, 0xC8, 0x27, 0x93, 0xE1, 0x58, 0xC4, 0x35, 0xCD, 0x1D, 0x8F, 0xE9, 0x77, 0xC8, 0x1E, 0x63, -0xC0, 0xF0, 0xBF, 0xE0, 0xF5, 0x4E, 0x37, 0x24, 0x49, 0x35, 0xD4, 0x8B, 0x28, 0x0C, 0x69, 0xA3, -0x26, 0x56, 0x34, 0x6E, 0xAB, 0x2A, 0x82, 0x23, 0x26, 0x82, 0x17, 0x6F, 0x3E, 0xAA, 0x64, 0xC0, -0x7C, 0xAD, 0x93, 0x16, 0xC1, 0xD1, 0xE6, 0x2F, 0xBD, 0xE8, 0x96, 0x96, 0x56, 0x27, 0x92, 0xD6, -0xD1, 0x38, 0xDA, 0xBB, 0xBB, 0x4D, 0xC8, 0x52, 0x48, 0xE0, 0x98, 0x3D, 0x9D, 0xAF, 0xBD, 0x97, -0x3D, 0xA0, 0x94, 0x1D, 0x1C, 0x57, 0xB1, 0x03, 0xF3, 0x68, 0x0B, 0x33, 0x38, 0xCE, 0x30, 0x83, -0xBB, 0x92, 0x41, 0x5F, 0x1F, 0xBC, 0xDF, 0xC4, 0x0C, 0xFA, 0x25, 0xCD, 0xE0, 0x48, 0x98, 0x41, -0xB4, 0xB1, 0xBB, 0x5F, 0x56, 0x58, 0x92, 0x15, 0x3C, 0x1E, 0xE3, 0xF3, 0x4C, 0x8F, 0xCB, 0x79, -0xC2, 0xEE, 0x62, 0xEE, 0xD2, 0x72, 0xAA, 0xC7, 0xDB, 0x5F, 0x2D, 0xC7, 0x74, 0x97, 0xD5, 0x42, -0xAE, 0xDC, 0xD1, 0xD7, 0x1E, 0x6E, 0xAB, 0x8D, 0x5A, 0x71, 0x66, 0xA7, 0xB5, 0xC2, 0xCA, 0xDE, -0xF1, 0x5D, 0x4F, 0x4B, 0xBF, 0xD2, 0x25, 0xB6, 0x33, 0x54, 0xB4, 0x2E, 0x57, 0x04, 0xA4, 0xF7, -0xC2, 0xBC, 0x79, 0xA9, 0x6D, 0xF0, 0xBE, 0x0D, 0x05, 0xB2, 0x2E, 0x7B, 0x2B, 0x89, 0xB6, 0xC1, -0x6B, 0x49, 0x14, 0xD8, 0x32, 0xF6, 0x0E, 0xE1, 0x1B, 0x62, 0xB4, 0xCD, 0x5E, 0x11, 0x53, 0xB8, -0x8D, 0x86, 0xB5, 0xDA, 0x3C, 0xA5, 0x84, 0xE3, 0x32, 0xE6, 0xAD, 0x50, 0x63, 0x95, 0x7B, 0xF7, -0x01, 0xC5, 0x29, 0x19, 0x00, 0x07, 0x5F, 0xD1, 0x6D, 0x46, 0x3E, 0x29, 0xB7, 0x5B, 0x38, 0x49, -0x58, 0x85, 0xCA, 0xF0, 0xD3, 0x99, 0x14, 0xCC, 0xC2, 0xCE, 0x2B, 0x06, 0xB3, 0xA8, 0xCE, 0x07, -0x63, 0xDA, 0xFB, 0xE0, 0xE5, 0x9F, 0x0A, 0x96, 0xD6, 0x9B, 0xB3, 0x74, 0x74, 0x57, 0x2C, 0x6D, -0x91, 0xAA, 0x42, 0xEB, 0x0A, 0xDC, 0xC0, 0xB0, 0x37, 0x36, 0x2E, 0x06, 0x0D, 0xB6, 0xC5, 0x62, -0xAE, 0x76, 0x0D, 0xAC, 0xEE, 0xD4, 0xC0, 0x04, 0x01, 0xE5, 0x94, 0xD1, 0x4F, 0x2B, 0xE3, 0xF4, -0x6B, 0xB3, 0x2F, 0xC6, 0x51, 0x59, 0xF3, 0x52, 0x70, 0x74, 0xF2, 0x35, 0x99, 0x97, 0xBB, 0x08, -0xF0, 0xEA, 0xC6, 0xC1, 0x8B, 0x81, 0x63, 0xF0, 0xA2, 0x47, 0xBB, 0x37, 0xB0, 0x90, 0x82, 0x8D, -0xF5, 0x71, 0x74, 0xA7, 0xEF, 0xA2, 0xBB, 0x8B, 0x08, 0xC6, 0x58, 0xDA, 0xC2, 0xC4, 0x7A, 0xFD, -0x1D, 0x9A, 0x98, 0xB4, 0xD0, 0xC4, 0xF3, 0x20, 0x2F, 0x60, 0x74, 0xBE, 0x36, 0x10, 0x15, 0x34, -0x55, 0x56, 0x92, 0xD4, 0x59, 0xF9, 0xFC, 0x10, 0x8A, 0xC2, 0x34, 0x82, 0x0C, 0x3A, 0xCF, 0xD9, -0x27, 0x2D, 0xD5, 0x1D, 0x46, 0xAF, 0xA0, 0xA4, 0xCB, 0x6A, 0xD1, 0xCB, 0x8E, 0xC3, 0x42, 0x33, -0xF9, 0x12, 0xE4, 0xC2, 0xD7, 0x3D, 0x9E, 0x1B, 0xFC, 0xDD, 0x28, 0x37, 0x84, 0xAF, 0x01, 0x6A, -0x53, 0x8F, 0x8C, 0x2F, 0xF4, 0xEF, 0x42, 0x9C, 0x5C, 0x5A, 0xD8, 0x44, 0xD7, 0x20, 0x24, 0x3B, -0xB6, 0x6B, 0x60, 0xB1, 0x6A, 0xCC, 0x03, 0xA0, 0xB4, 0xFD, 0xC7, 0x1C, 0x27, 0x79, 0x0D, 0x7C, -0x91, 0x86, 0x51, 0x6E, 0xED, 0x98, 0xBE, 0x36, 0x99, 0x3F, 0xF1, 0x84, 0x87, 0xE1, 0x9A, 0xE1, -0xFF, 0xFC, 0x77, 0xD1, 0xD4, 0x0C, 0x7E, 0xD8, 0x34, 0x12, 0x00, 0x98, 0x91, 0x37, 0xBA, 0xD0, -0x81, 0x52, 0xCF, 0xF5, 0xA1, 0x14, 0xB5, 0x26, 0x56, 0x86, 0xAA, 0xB2, 0xA4, 0x7D, 0xA8, 0x12, -0x77, 0xA2, 0xB1, 0x62, 0x6C, 0x72, 0xEE, 0x8F, 0x3C, 0x6B, 0x0E, 0xA5, 0x9A, 0xE9, 0x8E, 0x16, -0x33, 0xE2, 0x04, 0x6D, 0xC3, 0x34, 0xAF, 0x6E, 0xE0, 0xE0, 0x2D, 0xCE, 0x30, 0x83, 0xE4, 0xEB, -0xB5, 0x17, 0x3F, 0xBD, 0xBB, 0x64, 0x2F, 0x13, 0x7D, 0x0B, 0xF2, 0x22, 0x66, 0xAD, 0xA9, 0x8D, -0x17, 0x0E, 0xAB, 0xDE, 0xEB, 0x04, 0xDB, 0xB2, 0x0F, 0xCC, 0xDE, 0x18, 0x9E, 0x36, 0x34, 0x7C, -0xF2, 0xDA, 0xF5, 0x03, 0xED, 0x42, 0x0B, 0x31, 0xDA, 0xEE, 0x88, 0xBE, 0xAC, 0xA6, 0xCD, 0xF8, -0xE2, 0x2D, 0x19, 0xE3, 0xBF, 0x78, 0x36, 0x34, 0x0D, 0xA1, 0x0E, 0xB4, 0xDA, 0xD9, 0x69, 0xB7, -0x86, 0xF6, 0x17, 0x76, 0x31, 0xC6, 0x4F, 0xC6, 0x42, 0xBB, 0xFA, 0xC2, 0xB3, 0x9B, 0xDA, 0x68, -0xD8, 0x60, 0x2F, 0x80, 0xA5, 0x97, 0xF1, 0x9A, 0x78, 0x33, 0x78, 0x3B, 0x98, 0x12, 0xA7, 0x1E, -0x51, 0x06, 0xCE, 0x30, 0x77, 0x1D, 0x3F, 0xF6, 0xF5, 0x5B, 0x6B, 0x1C, 0x5D, 0x6F, 0x43, 0x41, -0x1F, 0x2C, 0x7C, 0xED, 0xE1, 0xC5, 0x85, 0x86, 0x05, 0x6E, 0xEC, 0xC5, 0xB2, 0xA3, 0x61, 0xB2, -0x5D, 0x53, 0x4B, 0x5C, 0xF8, 0x19, 0x42, 0x83, 0xF4, 0x0A, 0xF3, 0x5B, 0x8D, 0xD8, 0x89, 0x77, -0x68, 0x87, 0x00, 0x18, 0x45, 0xEA, 0x8D, 0x38, 0x81, 0x75, 0xD3, 0x08, 0x8C, 0x46, 0xFC, 0x65, -0xB6, 0xD0, 0x2B, 0x50, 0xD2, 0xD4, 0xE8, 0x2D, 0xF9, 0xCD, 0xBA, 0xB7, 0x8D, 0x36, 0xC8, 0x10, -0xF8, 0x0D, 0xA1, 0x89, 0xE7, 0x25, 0x3F, 0xEB, 0x0B, 0xD0, 0xAD, 0x6E, 0x53, 0xC3, 0x3B, 0x71, -0x58, 0x89, 0xC8, 0x07, 0xE2, 0x9A, 0x10, 0x5A, 0x3E, 0x5A, 0x05, 0x4A, 0x86, 0xEE, 0x36, 0xA6, -0x22, 0x88, 0x3D, 0x1F, 0xC8, 0x04, 0x24, 0x36, 0x69, 0xF2, 0x01, 0x74, 0x93, 0x8E, 0x9E, 0x9B, -0x2C, 0x28, 0x4A, 0x5A, 0x3B, 0x3C, 0x04, 0x97, 0x86, 0xA0, 0x44, 0xC0, 0x2A, 0x26, 0xF5, 0x1A, -0x5F, 0xC0, 0x04, 0x8B, 0xAA, 0x75, 0x56, 0xB5, 0x03, 0x40, 0xD0, 0x0E, 0xDC, 0xEB, 0xC0, 0xB3, -0x9C, 0x09, 0x0C, 0x3D, 0x1A, 0x11, 0x36, 0x7A, 0x1B, 0x51, 0x26, 0xEE, 0xD3, 0xEB, 0xB4, 0x93, -0xE4, 0x8D, 0x3A, 0xBF, 0x7E, 0x50, 0x6B, 0xD4, 0x38, 0xF1, 0xF4, 0x1C, 0xCC, 0xAD, 0xCE, 0x0E, -0x1E, 0x51, 0x1A, 0x1B, 0xDA, 0xF9, 0x39, 0xEF, 0x86, 0xB5, 0xC2, 0x8B, 0xD0, 0x88, 0xFE, 0x49, -0xDC, 0x0A, 0x4D, 0xF1, 0xF7, 0xEF, 0xFF, 0x12, 0x36, 0x7B, 0x7B, 0x08, 0x54, 0x3F, 0xC5, 0x19, -0x84, 0xEF, 0xFF, 0x82, 0xFF, 0xDF, 0x3E, 0xA2, 0xD3, 0x06, 0xDF, 0xFF, 0x85, 0x7F, 0x6E, 0x1F, -0x41, 0x4F, 0x70, 0x4C, 0xFB, 0xBB, 0xFD, 0x9D, 0xCA, 0x21, 0x2D, 0xBD, 0x49, 0xA6, 0xF4, 0x42, -0xB1, 0x55, 0xA6, 0x69, 0x92, 0x43, 0xD4, 0xEF, 0x91, 0xFF, 0xD6, 0x47, 0xAE, 0x09, 0xEA, 0x09, -0xC0, 0x92, 0x85, 0xD2, 0x6D, 0x50, 0x89, 0x10, 0x54, 0xF8, 0x76, 0x67, 0x6B, 0x4C, 0x5B, 0x6A, -0xDC, 0x55, 0x22, 0x03, 0x11, 0x2D, 0xE7, 0x86, 0xE7, 0x93, 0x37, 0x4E, 0x50, 0x0F, 0x62, 0x4E, -0x91, 0x21, 0xF1, 0xC1, 0x20, 0xC6, 0x02, 0xFE, 0x00, 0x0E, 0xDA, 0xD5, 0xB8, 0xD2, 0x42, 0x63, -0x7B, 0x10, 0xDA, 0x61, 0x44, 0x29, 0xBB, 0x99, 0x61, 0x87, 0x9F, 0x46, 0xF6, 0x97, 0x3A, 0xBE, -0x6F, 0x36, 0x19, 0x2A, 0x52, 0x22, 0xC2, 0x46, 0x4F, 0xF1, 0x7F, 0x20, 0x17, 0xFC, 0x93, 0xA9, -0x1F, 0xC0, 0xCA, 0x4A, 0xF8, 0x3A, 0x9D, 0x02, 0xF8, 0xBC, 0x6A, 0x6A, 0xEC, 0x60, 0x0D, 0x9E, -0xE1, 0x98, 0x78, 0x8E, 0x7F, 0xD6, 0x42, 0x7B, 0x78, 0x81, 0x1F, 0xC1, 0x35, 0x5A, 0xB3, 0xE2, -0x25, 0x76, 0x80, 0xAD, 0x68, 0x8D, 0x41, 0x5B, 0xB1, 0x23, 0xB8, 0x86, 0xEF, 0x5E, 0x02, 0xDB, -0x6D, 0x6A, 0x43, 0xCB, 0x71, 0xE8, 0x41, 0x01, 0xF5, 0x51, 0xAA, 0x7F, 0xEA, 0xAF, 0x80, 0x03, -0x4E, 0xDA, 0xED, 0x23, 0x7F, 0x1D, 0x9E, 0xAD, 0x6F, 0x1F, 0x11, 0xBC, 0x47, 0x89, 0x84, 0xE3, -0x35, 0x3F, 0x86, 0xEB, 0x40, 0x1F, 0xDE, 0x11, 0x04, 0xD3, 0x0B, 0xEB, 0xE8, 0x02, 0xB4, 0x08, -0xF0, 0x3E, 0x27, 0x1E, 0xCE, 0xD6, 0xE1, 0x19, 0x42, 0x53, 0x58, 0xCE, 0x06, 0x9C, 0xAE, 0xA3, -0x53, 0xB8, 0x4B, 0xDF, 0x23, 0x85, 0x44, 0x30, 0x9E, 0x6E, 0x1F, 0x71, 0x9E, 0xE0, 0x12, 0x3F, -0x4A, 0x8A, 0x1A, 0x63, 0x42, 0xC0, 0xA3, 0xC8, 0x73, 0x96, 0xA4, 0xA5, 0xFC, 0x01, 0xFE, 0x71, -0x65, 0x13, 0x3C, 0x7C, 0xBE, 0x7E, 0x63, 0xD6, 0x6B, 0x7C, 0x41, 0xB6, 0x86, 0x31, 0x4C, 0x86, -0x69, 0xBB, 0xCE, 0xC8, 0xB6, 0x46, 0xE8, 0x28, 0xF5, 0x86, 0x76, 0x31, 0xE0, 0x71, 0x0C, 0x0D, -0x1A, 0x9A, 0xCB, 0x46, 0x9A, 0x89, 0x5A, 0x2C, 0x29, 0xD6, 0x1A, 0x6D, 0x6A, 0x87, 0xDC, 0xD6, -0x10, 0x05, 0x77, 0xC1, 0x72, 0x38, 0xB0, 0xB1, 0x02, 0x47, 0xCA, 0x5B, 0x72, 0x91, 0xD0, 0xD6, -0x12, 0x16, 0x8A, 0x46, 0x0E, 0xB5, 0x9D, 0x44, 0x94, 0xCD, 0xF1, 0x6A, 0xE1, 0xC0, 0x0F, 0x93, -0x0E, 0x0C, 0xAA, 0xF2, 0x82, 0x7A, 0xED, 0x0A, 0x37, 0x64, 0xFC, 0x56, 0x3B, 0xC0, 0x46, 0x07, -0xB5, 0x7F, 0x9D, 0x69, 0xB5, 0x03, 0xD9, 0x93, 0x6F, 0x93, 0x2E, 0xC7, 0x34, 0x36, 0x29, 0xA9, -0xB1, 0x89, 0xA4, 0xB1, 0xC9, 0xDD, 0x6A, 0x4C, 0x5E, 0x08, 0xDE, 0x46, 0x6B, 0xF2, 0xCA, 0x6B, -0x8E, 0xE6, 0x0A, 0xE1, 0xB9, 0xD2, 0xB8, 0xB6, 0x26, 0x2A, 0x6D, 0x6D, 0xA2, 0x26, 0x96, 0xE2, -0xC0, 0x7B, 0x88, 0xF7, 0xFA, 0xE7, 0x77, 0x6F, 0x31, 0x54, 0xAA, 0x55, 0x16, 0x6A, 0x2C, 0x59, -0x8E, 0x28, 0x30, 0x60, 0xEE, 0x8C, 0x05, 0xEE, 0x58, 0x0E, 0x3D, 0xA8, 0x69, 0x75, 0x8A, 0x12, -0x33, 0x68, 0x81, 0x21, 0xF0, 0xC0, 0x5B, 0xCE, 0x77, 0x31, 0xD8, 0x0A, 0xE7, 0x8D, 0xA0, 0x72, -0x6C, 0x01, 0x01, 0x4A, 0x29, 0x91, 0x61, 0x4E, 0x39, 0x8C, 0x94, 0x13, 0x76, 0xEE, 0x22, 0xD4, -0x5F, 0xFD, 0xB2, 0x41, 0x4D, 0xC4, 0xF4, 0x28, 0xB6, 0xF9, 0x85, 0xD2, 0xE1, 0x91, 0xBF, 0x94, -0x80, 0xF8, 0x1C, 0xB6, 0xC2, 0xC0, 0x45, 0x26, 0x28, 0x85, 0x46, 0x4C, 0x5D, 0x66, 0xE3, 0x59, -0x57, 0xC1, 0xB3, 0x56, 0xE0, 0xE1, 0x99, 0xA7, 0x14, 0x1A, 0x3E, 0xD1, 0x95, 0x89, 0xA5, 0x1C, -0x31, 0x7C, 0x72, 0x49, 0xC5, 0x13, 0xCF, 0x74, 0xE5, 0x78, 0xE2, 0x93, 0x22, 0xD9, 0x78, 0x4A, -0xCA, 0x86, 0xCF, 0x44, 0x28, 0xEC, 0x39, 0x59, 0x8D, 0x74, 0xC4, 0x7F, 0x9B, 0xD7, 0x1F, 0x63, -0x03, 0xA2, 0x45, 0xF4, 0x67, 0x2F, 0x5E, 0x32, 0xF9, 0x28, 0xAA, 0x45, 0x62, 0x2B, 0xB3, 0x01, -0xB1, 0xDB, 0x46, 0x00, 0xF1, 0x09, 0xC6, 0xF1, 0xC4, 0x6F, 0x63, 0x85, 0x1B, 0x8A, 0x31, 0x75, -0xAB, 0xED, 0x00, 0x01, 0x14, 0x61, 0xE3, 0xAC, 0x93, 0x34, 0xCF, 0x14, 0x2E, 0x76, 0x39, 0x0B, -0x1D, 0xBB, 0x9B, 0x81, 0x91, 0x67, 0x98, 0x38, 0x04, 0x5E, 0xCC, 0xC2, 0x46, 0x47, 0x31, 0x12, -0xAE, 0xDE, 0xF1, 0x71, 0x3A, 0xCF, 0xF0, 0x0E, 0xF8, 0x67, 0xED, 0x10, 0x03, 0xCE, 0x47, 0x45, -0x43, 0xB3, 0x11, 0x14, 0x82, 0x5A, 0x4D, 0x2C, 0xD9, 0xD5, 0xCE, 0x52, 0x15, 0x37, 0x40, 0xF0, -0x45, 0x38, 0xED, 0x29, 0xA3, 0x31, 0xF6, 0xB1, 0x96, 0x21, 0x0C, 0xBE, 0xC3, 0x6F, 0xB2, 0x31, -0x64, 0x74, 0x83, 0x4B, 0x88, 0x89, 0x5D, 0xC3, 0x81, 0x6B, 0xE2, 0x12, 0x5B, 0xDB, 0x69, 0xB9, -0x0E, 0x51, 0xF7, 0x1A, 0xAB, 0xDF, 0x79, 0x47, 0xFC, 0x8C, 0x3F, 0x94, 0x1E, 0x81, 0x79, 0x24, -0x58, 0x78, 0x0E, 0xAF, 0xE7, 0xD3, 0xF5, 0x8D, 0x72, 0x28, 0xB9, 0x43, 0xDB, 0x3C, 0x3C, 0xD4, -0x9E, 0x05, 0x81, 0x01, 0x0A, 0xC0, 0x75, 0xCA, 0x29, 0xCA, 0x47, 0x33, 0xF8, 0xA4, 0x84, 0xEB, -0xA1, 0x51, 0xB2, 0x87, 0x8A, 0x09, 0xF3, 0x5B, 0xFC, 0x84, 0x9D, 0x70, 0x67, 0x8A, 0xAA, 0xFD, -0xEF, 0x05, 0xF1, 0xD6, 0xD7, 0x54, 0x60, 0xAE, 0xF7, 0xCC, 0xB6, 0xEB, 0xB5, 0x76, 0xB4, 0xEC, -0x5C, 0x63, 0x63, 0xF0, 0x36, 0xA0, 0xBA, 0x82, 0x3E, 0x40, 0xC7, 0x91, 0xCD, 0x33, 0x6E, 0x42, -0xBD, 0xC3, 0xB8, 0xEB, 0x82, 0x2B, 0x23, 0x39, 0xE8, 0x87, 0x16, 0xAE, 0xF3, 0x85, 0xAC, 0x17, -0x73, 0x10, 0x7F, 0x34, 0x8C, 0x4F, 0x4C, 0x2C, 0x70, 0xE9, 0x90, 0x36, 0xB4, 0xBC, 0xE4, 0x03, -0xB9, 0xEE, 0x91, 0xA2, 0x51, 0xA4, 0x02, 0x6A, 0x9D, 0xE8, 0x89, 0xE9, 0x2F, 0xFC, 0xDC, 0x3E, -0x50, 0x9F, 0x29, 0xA6, 0x40, 0x38, 0x81, 0x5C, 0x78, 0x22, 0x79, 0x25, 0x7A, 0x48, 0x4C, 0x4F, -0xDC, 0x36, 0x1E, 0x44, 0x91, 0x61, 0x31, 0x37, 0x8D, 0x80, 0xC4, 0x83, 0x43, 0x68, 0x0B, 0xE2, -0xE6, 0xCC, 0x0D, 0x48, 0x22, 0x62, 0x58, 0xB8, 0x69, 0xC6, 0xB0, 0x3F, 0x46, 0xD6, 0x78, 0xAF, -0xEE, 0xAF, 0xF0, 0xF1, 0x0A, 0xFE, 0x9F, 0x9A, 0x83, 0x28, 0x37, 0x6E, 0x4E, 0x59, 0x48, 0x18, -0x0F, 0x22, 0x2B, 0x91, 0xE5, 0x10, 0x0B, 0x0B, 0xFC, 0xBE, 0xE8, 0xE9, 0xE1, 0x43, 0x7A, 0xF4, -0x20, 0x54, 0x9A, 0x88, 0x1E, 0x17, 0x5A, 0x74, 0x23, 0xA1, 0xE0, 0x34, 0xEE, 0x04, 0x0E, 0x81, -0x5C, 0xC2, 0xC0, 0x7C, 0x2B, 0x54, 0xEF, 0x1C, 0xAA, 0x4D, 0xB4, 0x85, 0xFF, 0x8F, 0xFA, 0x5F, -0x51, 0xD4, 0xBF, 0xBF, 0x10, 0x9F, 0x63, 0xDB, 0x09, 0x0F, 0x60, 0x70, 0xEA, 0x69, 0xC1, 0x83, -0x1A, 0x54, 0x3B, 0xCA, 0x79, 0x3F, 0x1E, 0xBA, 0x23, 0xFB, 0x9A, 0x5A, 0x26, 0x23, 0x3A, 0xB2, -0x2C, 0x94, 0x11, 0x4E, 0xDF, 0xE3, 0x04, 0x37, 0xCE, 0x76, 0xD7, 0x6B, 0x6C, 0x6D, 0x81, 0xC6, -0xE3, 0xDB, 0xA8, 0x24, 0x99, 0xBA, 0xCB, 0x3C, 0x48, 0x0F, 0xA2, 0xCE, 0x0D, 0x49, 0x00, 0x87, -0xD0, 0x7C, 0x3B, 0x4F, 0x61, 0xD7, 0x62, 0xDB, 0x0F, 0x4F, 0x06, 0xD0, 0x40, 0x5C, 0x01, 0xD0, -0xC0, 0xA3, 0x5E, 0x23, 0xA1, 0x25, 0x4E, 0x11, 0x56, 0x41, 0x56, 0x2E, 0x62, 0x5A, 0xE6, 0xC5, -0x31, 0xB3, 0x50, 0x5A, 0x21, 0xC8, 0xCA, 0x97, 0x01, 0x22, 0x7E, 0x7A, 0xA1, 0x39, 0x0B, 0xDB, -0x06, 0x1B, 0x44, 0x16, 0xC0, 0x06, 0xE5, 0xBB, 0xCA, 0x10, 0xFD, 0x9F, 0x1B, 0xCF, 0x42, 0xCA, -0x63, 0x12, 0x78, 0xF4, 0x28, 0x8E, 0x0D, 0x17, 0x19, 0x58, 0x19, 0x1F, 0xF6, 0xC6, 0xDA, 0x5F, -0xBA, 0xCE, 0xD8, 0x9A, 0x44, 0x79, 0x96, 0x93, 0x04, 0xC9, 0xFA, 0x61, 0x4C, 0xF0, 0x52, 0x8D, -0x03, 0x84, 0x58, 0x26, 0x15, 0x10, 0x7D, 0x63, 0x6A, 0x6A, 0x36, 0xF6, 0x29, 0xB5, 0xFA, 0x3A, -0xE1, 0xEF, 0x52, 0x6C, 0x80, 0xFC, 0xD1, 0x98, 0xA3, 0x0B, 0xA2, 0xDE, 0x09, 0xBB, 0x92, 0x31, -0x4E, 0x62, 0x18, 0x91, 0xB1, 0x04, 0xDD, 0xF8, 0xA3, 0xF8, 0xF0, 0xAD, 0x62, 0xFC, 0xCD, 0x66, -0xF2, 0xD7, 0x59, 0x69, 0xE7, 0x80, 0x06, 0xDF, 0x7C, 0x26, 0xA5, 0xF6, 0x74, 0x6D, 0x40, 0x1B, -0x66, 0x20, 0xA1, 0x1D, 0xA4, 0x91, 0xE4, 0x52, 0x2E, 0x5E, 0x2B, 0xAD, 0x10, 0x08, 0x45, 0xB7, -0x1C, 0xA2, 0x28, 0x68, 0xAF, 0x70, 0x98, 0x87, 0x2A, 0xB1, 0x25, 0x55, 0x81, 0x90, 0x39, 0x62, -0x9D, 0x6D, 0xEC, 0x63, 0x43, 0x74, 0x44, 0xCE, 0x7D, 0x2C, 0x7E, 0x3D, 0xB3, 0x27, 0x2D, 0xB1, -0x7B, 0x3D, 0xD5, 0xCF, 0x40, 0x6B, 0x75, 0x05, 0xF5, 0xD0, 0xF4, 0x15, 0x3E, 0x25, 0x10, 0xF2, -0x10, 0x5E, 0x88, 0x97, 0xAF, 0xC2, 0xAD, 0xC3, 0xE9, 0x6B, 0xD9, 0xCE, 0x58, 0x92, 0x8D, 0x32, -0x6C, 0x64, 0xC8, 0x77, 0x94, 0x73, 0xBA, 0x9A, 0xFC, 0xE1, 0x47, 0x39, 0x33, 0x6C, 0x99, 0x6E, -0x72, 0x70, 0xB2, 0x65, 0xDD, 0x24, 0xD2, 0xC5, 0x70, 0x66, 0x05, 0x0A, 0x84, 0xB5, 0x6E, 0xAD, -0x4A, 0xE6, 0x92, 0xBD, 0x9C, 0x45, 0x4A, 0x5A, 0xD4, 0x03, 0xA2, 0xD8, 0x74, 0x3C, 0xFD, 0x50, -0x8A, 0x6B, 0x3F, 0xBD, 0x31, 0x3C, 0x9C, 0x64, 0x47, 0x05, 0x27, 0x16, 0x7F, 0x18, 0x0A, 0xB6, -0x6A, 0x49, 0x51, 0xC4, 0xD7, 0x2D, 0xC5, 0x5A, 0x61, 0x7C, 0x0C, 0x20, 0x2F, 0x96, 0xFD, 0xEE, -0x11, 0x80, 0xF3, 0x71, 0x52, 0x43, 0xFB, 0xFE, 0x2F, 0x8A, 0xE2, 0x56, 0x1B, 0x43, 0x94, 0xF1, -0xA7, 0xC4, 0xA4, 0x4B, 0x12, 0x01, 0x7E, 0x2B, 0x15, 0x17, 0x7C, 0x62, 0xEB, 0x94, 0xB7, 0xBF, -0x87, 0x16, 0x12, 0x26, 0xA9, 0xC2, 0x61, 0x0A, 0x5D, 0xCE, 0xCE, 0x1F, 0xA1, 0xB0, 0xC2, 0x5E, -0x31, 0x29, 0x85, 0x3F, 0x16, 0x81, 0xEC, 0x36, 0x54, 0x43, 0xD0, 0xCD, 0x8F, 0x50, 0xF7, 0x24, -0xCC, 0xB4, 0xC1, 0x07, 0x58, 0xA0, 0x01, 0x53, 0x84, 0x4A, 0xA6, 0x23, 0x1C, 0x46, 0x31, 0x31, -0xC5, 0x24, 0xCC, 0x98, 0xE1, 0xBC, 0x14, 0xAF, 0xF5, 0xF2, 0xFA, 0x21, 0x94, 0xC5, 0x1F, 0x3E, -0x0C, 0x8B, 0x1A, 0x0F, 0x42, 0x31, 0xA4, 0x71, 0x60, 0x07, 0x12, 0x82, 0x98, 0x88, 0xB2, 0xC4, -0x14, 0xDF, 0x66, 0x5D, 0x8B, 0x22, 0x55, 0xE6, 0xA8, 0x4E, 0x93, 0x33, 0x2D, 0x4D, 0xB3, 0xB4, -0xDF, 0xDF, 0xA8, 0xC9, 0xFC, 0x8B, 0xCF, 0xC0, 0x48, 0x11, 0xAF, 0x51, 0x85, 0x9C, 0xD4, 0xE0, -0xB2, 0x80, 0x94, 0x3B, 0x2C, 0xB3, 0xC5, 0x0F, 0xC2, 0x1B, 0xC5, 0x07, 0xC5, 0x6C, 0x6A, 0x78, -0x29, 0xD7, 0x82, 0x21, 0x83, 0xB1, 0xB3, 0xF8, 0x68, 0x4F, 0x12, 0x8F, 0xB2, 0x0E, 0xCC, 0x14, -0x17, 0xB3, 0x2E, 0xE6, 0xAE, 0x37, 0x16, 0x59, 0xE6, 0x4E, 0xBC, 0xD2, 0xE7, 0x10, 0xA8, 0xBC, -0x22, 0x80, 0xCB, 0xF0, 0xB9, 0x93, 0x42, 0xC8, 0xE8, 0x19, 0x15, 0x09, 0x07, 0x7D, 0x00, 0xA5, -0xDC, 0xBA, 0x08, 0x6D, 0x1A, 0x03, 0x45, 0xAC, 0xC5, 0xB0, 0xB1, 0x5D, 0xEA, 0x12, 0xBC, 0x9C, -0x7A, 0xF2, 0xE0, 0xA5, 0x8D, 0xE9, 0x12, 0x34, 0xF5, 0xFB, 0x62, 0x60, 0xF9, 0x69, 0x17, 0x99, -0x76, 0xE3, 0xA6, 0x04, 0x70, 0xF4, 0x88, 0x8E, 0x04, 0x2A, 0xB2, 0x59, 0x1E, 0x60, 0xF8, 0xB6, -0x9A, 0x9A, 0xA4, 0x5F, 0x3F, 0x70, 0xE7, 0x6C, 0x73, 0x7E, 0x22, 0x0C, 0x2D, 0xE9, 0x2C, 0x69, -0x1B, 0xEF, 0xD7, 0x79, 0x71, 0x25, 0xCB, 0x36, 0xBE, 0x14, 0x22, 0x6F, 0xF2, 0xAF, 0xC5, 0x2B, -0x63, 0x3A, 0xCD, 0xAA, 0xEC, 0x01, 0x2D, 0xA5, 0xED, 0x7B, 0x23, 0x96, 0x0C, 0xC2, 0x07, 0x5A, -0x30, 0x56, 0xE1, 0xE1, 0xEF, 0xAC, 0x4F, 0x4C, 0xDE, 0x31, 0x9B, 0x6A, 0x14, 0xD2, 0xE2, 0xCE, -0x93, 0xA4, 0x44, 0x53, 0x51, 0xCC, 0xBF, 0x7D, 0xCC, 0x02, 0xFC, 0x05, 0x09, 0x0F, 0x34, 0xD9, -0xDE, 0x32, 0x82, 0x72, 0x24, 0x26, 0x1E, 0x05, 0xE3, 0xC4, 0x4B, 0x99, 0x8C, 0x3D, 0x0D, 0xF5, -0xF4, 0xF3, 0x68, 0x08, 0xC9, 0xEB, 0x05, 0x38, 0x1F, 0x78, 0xFB, 0xB2, 0xDE, 0xB8, 0xCD, 0x63, -0x87, 0x89, 0x2B, 0xB2, 0x9D, 0xB2, 0x44, 0xD0, 0x34, 0xA1, 0xC6, 0x16, 0x93, 0x8F, 0x1A, 0x9D, -0xEC, 0x30, 0x57, 0x8E, 0x18, 0xDC, 0x64, 0x09, 0xF6, 0x22, 0x2D, 0x5A, 0x56, 0xDF, 0xC6, 0x10, -0x44, 0x09, 0x20, 0x45, 0x6C, 0xA2, 0x84, 0x95, 0xEC, 0x42, 0x34, 0x10, 0xB4, 0xCB, 0x3E, 0x98, -0x41, 0x7B, 0xBC, 0xFA, 0x4F, 0x94, 0x8B, 0x4C, 0x00, 0xA1, 0x33, 0x65, 0xA0, 0xC0, 0xA7, 0xA8, -0x46, 0x86, 0x73, 0x63, 0xF8, 0xB2, 0xD3, 0x8C, 0x80, 0xA0, 0x80, 0x70, 0xBF, 0xA9, 0xEB, 0xAC, -0x81, 0xCE, 0x1D, 0x80, 0x9D, 0xB5, 0xE9, 0xB6, 0x13, 0x1C, 0xC7, 0xA0, 0x0D, 0xD0, 0x93, 0xD8, -0x6D, 0xF6, 0x05, 0x6F, 0x71, 0x9F, 0x9D, 0xB1, 0x06, 0x61, 0x2F, 0xF8, 0xCD, 0xEC, 0xB6, 0x31, -0x9F, 0x13, 0xC7, 0xBC, 0x9C, 0x5A, 0xB6, 0x59, 0x67, 0xA0, 0xE1, 0x83, 0x36, 0x9E, 0x46, 0xBF, -0x3F, 0x4D, 0x1F, 0xEA, 0xE0, 0x58, 0xC1, 0x9B, 0x2F, 0xD9, 0xB5, 0x7A, 0xAD, 0x67, 0x8A, 0x67, -0x72, 0x78, 0xB3, 0xB6, 0xE9, 0x19, 0xCB, 0x37, 0xF8, 0xCC, 0x1F, 0x35, 0x87, 0x66, 0xA7, 0xD9, -0xE1, 0x0D, 0x02, 0x28, 0xB6, 0x84, 0xC8, 0x11, 0x2F, 0x3E, 0x1B, 0xF5, 0xCB, 0x87, 0xB7, 0x11, -0xDE, 0xC0, 0x7D, 0xC1, 0x2E, 0xD5, 0x6B, 0xF4, 0xA1, 0xC1, 0xC3, 0x3F, 0xE6, 0xB8, 0xD4, 0x2C, -0xD2, 0x8C, 0x24, 0x46, 0x7C, 0x1E, 0x10, 0x45, 0xC5, 0x9A, 0xFF, 0x20, 0x23, 0x85, 0xCB, 0x0E, -0xE4, 0x09, 0x34, 0xF7, 0xBA, 0x0A, 0x54, 0x3C, 0x2D, 0x88, 0xE0, 0xC8, 0xC9, 0x4B, 0x18, 0xDE, -0xFE, 0x93, 0x18, 0x1E, 0xE8, 0xE3, 0x40, 0xAB, 0xEB, 0x1D, 0xFD, 0xA0, 0x4E, 0xAF, 0xBF, 0x03, -0x76, 0xA6, 0xF5, 0xC6, 0x41, 0xB7, 0xD1, 0x68, 0xFB, 0xA0, 0x33, 0x52, 0x6F, 0xF5, 0x44, 0x13, -0xF8, 0x43, 0xDB, 0xB0, 0x4E, 0xB2, 0xEF, 0xBF, 0x76, 0x17, 0x9E, 0x9F, 0xD7, 0xE0, 0x9D, 0xE5, -0x60, 0x26, 0xCE, 0x6B, 0x72, 0x0D, 0x83, 0x17, 0xC7, 0x4C, 0x35, 0xD1, 0xE9, 0x43, 0x8E, 0x62, -0xA4, 0x49, 0x9F, 0xFD, 0x82, 0x92, 0x5F, 0x2A, 0xF6, 0x79, 0xBD, 0x49, 0x70, 0xA6, 0xBC, 0x2E, -0xD6, 0xAE, 0x6E, 0x65, 0xE3, 0x88, 0x2A, 0x3A, 0x3E, 0xD7, 0x90, 0xD2, 0x7F, 0x22, 0x60, 0xF1, -0x1A, 0x29, 0x35, 0x87, 0x5E, 0xA6, 0x0C, 0x55, 0xD6, 0x57, 0xB9, 0xF5, 0x68, 0x7C, 0xA2, 0x39, -0x39, 0xC6, 0x8E, 0xD7, 0x9E, 0x97, 0x0B, 0xF0, 0xF1, 0x99, 0x88, 0xA8, 0xEC, 0x1A, 0x0E, 0x38, -0xC3, 0xD0, 0x0F, 0x03, 0xD0, 0xBC, 0x7C, 0x04, 0xB7, 0xA5, 0x0C, 0xC6, 0x47, 0xAB, 0x05, 0x00, -0xD2, 0x3B, 0xDE, 0x25, 0x58, 0x69, 0x14, 0x9C, 0x5B, 0x2F, 0x24, 0xDF, 0x4A, 0x4E, 0x51, 0x00, -0xD6, 0x34, 0xE7, 0x8A, 0x28, 0x03, 0xED, 0x1A, 0x61, 0xD0, 0x43, 0x20, 0x3E, 0x6C, 0x93, 0x42, -0x5E, 0xC6, 0xB0, 0x3E, 0x3D, 0xA4, 0x4F, 0xC4, 0xC2, 0xAC, 0xA1, 0x7C, 0x7A, 0x18, 0x7F, 0x2B, -0x19, 0x88, 0xF8, 0xDA, 0x43, 0x24, 0x42, 0x92, 0x2F, 0x6F, 0x22, 0xCB, 0x5B, 0x4C, 0x67, 0x14, -0x40, 0xC8, 0x1F, 0xA5, 0x60, 0xE2, 0x22, 0x25, 0xC5, 0x45, 0xB8, 0xB8, 0x10, 0x20, 0x1A, 0xE1, -0x16, 0xCF, 0xAD, 0x84, 0xF6, 0xFF, 0xEB, 0xF3, 0x88, 0xB3, 0xE5, 0x30, 0x97, 0x4E, 0x3E, 0x77, -0x21, 0xB1, 0x97, 0x0F, 0x10, 0xFB, 0x72, 0x15, 0x63, 0x6B, 0x39, 0x2C, 0xC7, 0x96, 0x98, 0xFB, -0x40, 0x80, 0x88, 0x2D, 0xF5, 0x0C, 0x89, 0x60, 0x25, 0x7C, 0x8B, 0x9C, 0x66, 0x38, 0xA6, 0x16, -0x7E, 0xBF, 0x3C, 0x24, 0x96, 0xBD, 0x82, 0xAD, 0xB0, 0xDC, 0x64, 0xCD, 0x24, 0x26, 0xC3, 0x39, -0x96, 0x42, 0xD0, 0xB0, 0xA5, 0x04, 0x1D, 0xD2, 0x91, 0x0B, 0x2D, 0x1A, 0xB1, 0xA2, 0x31, 0x3C, -0x2D, 0x25, 0xAC, 0xB0, 0x75, 0xE4, 0x38, 0x11, 0x02, 0x31, 0x47, 0x73, 0x9C, 0x9C, 0xD3, 0x63, -0x83, 0x17, 0xC6, 0x6C, 0x62, 0x88, 0x22, 0x37, 0x08, 0x59, 0x8A, 0xB5, 0x09, 0x1D, 0x84, 0xC1, -0x67, 0x91, 0x59, 0x48, 0x0A, 0x5B, 0xF3, 0xD4, 0xDF, 0xDB, 0x04, 0xE7, 0x43, 0xF8, 0x3E, 0x46, -0xDC, 0x83, 0xE8, 0x7A, 0x9A, 0xED, 0x2E, 0x09, 0xAE, 0x5F, 0x8A, 0xC7, 0x4D, 0xB4, 0x21, 0x81, -0x98, 0x4A, 0xD8, 0xAC, 0x16, 0xC6, 0xA0, 0x60, 0x6A, 0xF9, 0x30, 0x08, 0xC7, 0xEF, 0x8C, 0x92, -0x87, 0x7A, 0x98, 0x10, 0x0B, 0xD9, 0x4B, 0xCF, 0xF6, 0xC7, 0xC4, 0xC9, 0x60, 0x22, 0x59, 0x3E, -0xE4, 0x3C, 0xA6, 0x02, 0x51, 0xDE, 0x3C, 0x5A, 0x05, 0x11, 0x86, 0xB7, 0xBF, 0x5A, 0x29, 0xAA, -0x19, 0x28, 0x14, 0x64, 0x08, 0x16, 0xC9, 0x32, 0xE2, 0x35, 0x25, 0x4D, 0xD5, 0x64, 0x65, 0x8E, -0x46, 0x71, 0xCE, 0x5E, 0x19, 0xE5, 0xB3, 0xB5, 0xC2, 0x24, 0xCE, 0x12, 0x2B, 0xFB, 0x9D, 0x1F, -0x8A, 0x9D, 0x05, 0xEC, 0x0C, 0x0B, 0xC6, 0xC1, 0x83, 0xF3, 0xC3, 0x69, 0x30, 0xB3, 0x07, 0x0F, -0xFE, 0x17, 0x8F, 0xA0, 0x18, 0x01, 0x53, 0xAD, 0x00, 0x00 -}; - - -//File: index_ov3660.html.gz, Size: 8887 -#define index_ov3660_html_gz_len 8887 -const uint8_t index_ov3660_html_gz[] = { - 0x1F, 0x8B, 0x08, 0x08, 0xA3, 0xFA, 0x69, 0x5E, 0x00, 0x03, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, - 0x6F, 0x76, 0x33, 0x36, 0x36, 0x30, 0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x00, 0xED, 0x3D, 0x69, 0x73, - 0xDB, 0x46, 0xB2, 0xDF, 0xFD, 0x2B, 0x60, 0x24, 0x6B, 0x51, 0x65, 0x91, 0xE2, 0xAD, 0x23, 0x12, - 0xFD, 0x6C, 0x59, 0xB1, 0x53, 0x1B, 0x67, 0xBD, 0x71, 0xE2, 0x24, 0xB5, 0xB5, 0xE5, 0x80, 0xC4, - 0x90, 0x44, 0x0C, 0x02, 0x5C, 0x00, 0xD4, 0x91, 0x94, 0x7E, 0xC7, 0xFB, 0x41, 0xEF, 0x8F, 0xBD, - 0xEE, 0x39, 0x70, 0x71, 0x00, 0x0C, 0x00, 0x11, 0x52, 0xF2, 0x1E, 0x5D, 0x65, 0xE1, 0x98, 0xEE, - 0xE9, 0x7B, 0x7A, 0x7A, 0x06, 0xC0, 0xD9, 0x53, 0xD3, 0x9D, 0x05, 0xB7, 0x6B, 0xA2, 0x2D, 0x83, - 0x95, 0x3D, 0x79, 0x72, 0xC6, 0xFE, 0x68, 0xF0, 0x3B, 0x5B, 0x12, 0xC3, 0x64, 0x87, 0xF4, 0x74, - 0x45, 0x02, 0x43, 0x9B, 0x2D, 0x0D, 0xCF, 0x27, 0xC1, 0xB9, 0xBE, 0x09, 0xE6, 0xED, 0x63, 0x3D, - 0x7D, 0xDB, 0x31, 0x56, 0xE4, 0x5C, 0xBF, 0xB2, 0xC8, 0xF5, 0xDA, 0xF5, 0x02, 0x5D, 0x9B, 0xB9, - 0x4E, 0x40, 0x1C, 0x68, 0x7E, 0x6D, 0x99, 0xC1, 0xF2, 0xDC, 0x24, 0x57, 0xD6, 0x8C, 0xB4, 0xE9, - 0xC9, 0x81, 0xE5, 0x58, 0x81, 0x65, 0xD8, 0x6D, 0x7F, 0x66, 0xD8, 0xE4, 0xBC, 0x17, 0xC7, 0x15, - 0x58, 0x81, 0x4D, 0x26, 0x97, 0x1F, 0xDE, 0x0F, 0xFA, 0xDA, 0x3F, 0x3E, 0x0E, 0xC6, 0xE3, 0xEE, - 0xD9, 0x21, 0xBB, 0x16, 0xB5, 0xF1, 0x83, 0xDB, 0xF8, 0x39, 0xFE, 0xA6, 0xAE, 0x79, 0xAB, 0xFD, - 0x91, 0xB8, 0x84, 0xBF, 0x39, 0x10, 0xD1, 0x9E, 0x1B, 0x2B, 0xCB, 0xBE, 0x3D, 0xD5, 0x5E, 0x7A, - 0xD0, 0xE7, 0xC1, 0x5B, 0x62, 0x5F, 0x91, 0xC0, 0x9A, 0x19, 0x07, 0xBE, 0xE1, 0xF8, 0x6D, 0x9F, - 0x78, 0xD6, 0xFC, 0xAB, 0x2D, 0xC0, 0xA9, 0x31, 0xFB, 0xBC, 0xF0, 0xDC, 0x8D, 0x63, 0x9E, 0x6A, - 0x5F, 0xF4, 0x8E, 0xF1, 0xDF, 0x76, 0xA3, 0x99, 0x6B, 0xBB, 0x1E, 0xDC, 0xBF, 0xFC, 0x1A, 0xFF, - 0x6D, 0xDF, 0xA7, 0xBD, 0xFB, 0xD6, 0xEF, 0xE4, 0x54, 0xEB, 0x8D, 0xD7, 0x37, 0x89, 0xFB, 0x77, - 0x4F, 0x12, 0xA7, 0xCB, 0x7E, 0x16, 0xF5, 0x1C, 0xFE, 0x38, 0x1F, 0xDE, 0x27, 0xB3, 0xC0, 0x72, - 0x9D, 0xCE, 0xCA, 0xB0, 0x1C, 0x09, 0x26, 0xD3, 0xF2, 0xD7, 0xB6, 0x01, 0x32, 0x98, 0xDB, 0x24, - 0x17, 0xCF, 0x17, 0x2B, 0xE2, 0x6C, 0x0E, 0x0A, 0xB0, 0x21, 0x92, 0xB6, 0x69, 0x79, 0xAC, 0xD5, - 0x29, 0xCA, 0x61, 0xB3, 0x72, 0x0A, 0xD1, 0xE6, 0xD1, 0xE5, 0xB8, 0x0E, 0x91, 0x08, 0x10, 0x3B, - 0xBA, 0xF6, 0x8C, 0x35, 0x36, 0xC0, 0xBF, 0xDB, 0x4D, 0x56, 0x96, 0xC3, 0x8C, 0xEA, 0x54, 0x1B, - 0x0C, 0xBB, 0xEB, 0x9B, 0x02, 0x55, 0x0E, 0xC6, 0xF8, 0x6F, 0xBB, 0xD1, 0xDA, 0x30, 0x4D, 0xCB, - 0x59, 0x9C, 0x6A, 0xC7, 0x52, 0x14, 0xAE, 0x67, 0x12, 0xAF, 0xED, 0x19, 0xA6, 0xB5, 0xF1, 0x4F, - 0xB5, 0xA1, 0xAC, 0xCD, 0xCA, 0xF0, 0x16, 0x40, 0x4B, 0xE0, 0x02, 0xB1, 0xED, 0x9E, 0x94, 0x12, - 0xDE, 0xC4, 0xB3, 0x16, 0xCB, 0x00, 0x54, 0xBA, 0xD5, 0x26, 0x2D, 0x34, 0xEE, 0x42, 0x45, 0xFA, - 0xCC, 0x95, 0x9B, 0x5C, 0x6A, 0x86, 0x6D, 0x2D, 0x9C, 0xB6, 0x15, 0x90, 0x15, 0xB0, 0xE3, 0x07, - 0x1E, 0x09, 0x66, 0xCB, 0x3C, 0x52, 0xE6, 0xD6, 0x62, 0xE3, 0x11, 0x09, 0x21, 0xA1, 0xDC, 0x72, - 0x18, 0x86, 0x9B, 0xDB, 0xB7, 0xDA, 0xD7, 0x64, 0xFA, 0xD9, 0x0A, 0xDA, 0x5C, 0x26, 0x53, 0x32, - 0x77, 0x3D, 0x22, 0x6D, 0x29, 0x5A, 0xD8, 0xEE, 0xEC, 0x73, 0xDB, 0x0F, 0x0C, 0x2F, 0x50, 0x41, - 0x68, 0xCC, 0x03, 0xE2, 0x15, 0xE3, 0x23, 0x68, 0x15, 0xC5, 0xD8, 0xB2, 0xBB, 0xE5, 0x0D, 0x2C, - 0xC7, 0xB6, 0x1C, 0xA2, 0x4E, 0x5E, 0x56, 0xBF, 0x49, 0x74, 0xAC, 0x95, 0x82, 0x62, 0xAC, 0xD5, - 0x22, 0xCF, 0x4A, 0x28, 0xAF, 0xDB, 0x9D, 0x71, 0xBF, 0xE9, 0x75, 0xBB, 0x7F, 0xDB, 0xBE, 0xB9, - 0x24, 0xCC, 0x4C, 0x8D, 0x4D, 0xE0, 0xD6, 0xF7, 0x88, 0x2D, 0xB7, 0x4A, 0xF1, 0xF1, 0x5F, 0x2B, - 0x62, 0x5A, 0x86, 0xD6, 0x8A, 0xB9, 0xF3, 0x71, 0x17, 0x6C, 0x6A, 0x5F, 0x33, 0x1C, 0x53, 0x6B, - 0xB9, 0x9E, 0x05, 0x8E, 0x60, 0xD0, 0x70, 0x63, 0xC3, 0x15, 0x18, 0x38, 0xD6, 0x64, 0x5F, 0xC2, - 0x72, 0x8E, 0xCF, 0xC4, 0x25, 0x22, 0x77, 0x1B, 0xFC, 0x29, 0x84, 0x1C, 0xFC, 0x15, 0x3A, 0x90, - 0x84, 0x47, 0x8A, 0x3E, 0x4F, 0x5F, 0x71, 0x0A, 0xB3, 0x74, 0x86, 0xBF, 0x95, 0x71, 0xD3, 0xCE, - 0xD5, 0x9D, 0x68, 0x24, 0x74, 0x08, 0xC3, 0xEC, 0xAC, 0x05, 0x4D, 0xAF, 0x96, 0x5A, 0x5B, 0xC3, - 0x28, 0xB9, 0x2F, 0x87, 0xE1, 0x48, 0xE5, 0x2A, 0xC7, 0x5F, 0xDC, 0x28, 0x4A, 0xB0, 0x2B, 0x67, - 0x35, 0x8A, 0x1D, 0xEC, 0x9F, 0xCC, 0x86, 0x18, 0x27, 0x99, 0x51, 0x04, 0x7F, 0xEA, 0x91, 0x24, - 0x42, 0x56, 0x18, 0x4D, 0x24, 0x88, 0xB3, 0x23, 0xCA, 0x16, 0xDE, 0x2C, 0xEF, 0x96, 0x60, 0xCD, - 0x27, 0x41, 0x35, 0xBA, 0x48, 0x10, 0xE7, 0xD1, 0x50, 0x18, 0x65, 0xF0, 0x77, 0xA7, 0x90, 0x6F, - 0x7C, 0x31, 0xDD, 0x04, 0x81, 0xEB, 0xF8, 0xB5, 0x86, 0xA8, 0x2C, 0x3F, 0xFB, 0x6D, 0xE3, 0x07, - 0xD6, 0xFC, 0xB6, 0xCD, 0x5D, 0x1A, 0xFC, 0x6C, 0x6D, 0x40, 0x0A, 0x39, 0x25, 0xC1, 0x35, 0x21, - 0xF9, 0xE9, 0x86, 0x63, 0x5C, 0x41, 0xDC, 0x59, 0x2C, 0x6C, 0x99, 0xED, 0xCD, 0x36, 0x9E, 0x8F, - 0x79, 0xDB, 0xDA, 0xB5, 0x00, 0xB1, 0xB7, 0xDD, 0x71, 0xD2, 0x07, 0x15, 0x3B, 0x6A, 0xCF, 0xA6, - 0x92, 0xBE, 0xDC, 0x4D, 0x80, 0x32, 0x96, 0x6A, 0xC2, 0x05, 0x76, 0xAC, 0xE0, 0x56, 0x7A, 0x8F, - 0x7B, 0xA2, 0xE4, 0x8E, 0x70, 0xC1, 0xDC, 0x61, 0x21, 0x49, 0xD7, 0xE9, 0x6C, 0x49, 0x66, 0x9F, - 0x89, 0xF9, 0xBC, 0x30, 0x0D, 0x2B, 0x4A, 0x0F, 0x3B, 0x96, 0xB3, 0xDE, 0x04, 0x6D, 0x4C, 0xA7, - 0xD6, 0x3B, 0xD1, 0x39, 0x35, 0x48, 0xC1, 0x62, 0xBF, 0x9F, 0x97, 0x54, 0x8C, 0xD6, 0x37, 0xF9, - 0x42, 0x88, 0x13, 0x3B, 0xB1, 0x8D, 0x29, 0xB1, 0xF3, 0x48, 0xE6, 0xCE, 0x90, 0x11, 0x76, 0x79, - 0xAC, 0xCA, 0xCE, 0xDD, 0x28, 0x65, 0xD1, 0xE0, 0x35, 0x3C, 0xFA, 0x9B, 0xB2, 0x1C, 0xE9, 0xF1, - 0x41, 0xE2, 0x92, 0x4F, 0x6C, 0x70, 0xB0, 0xAC, 0xD4, 0x1B, 0xDA, 0x5C, 0x03, 0x0D, 0xB9, 0x1D, - 0x78, 0x86, 0xB3, 0x20, 0x10, 0x0B, 0x6E, 0x0E, 0xC4, 0x61, 0xFE, 0xC4, 0x40, 0x89, 0x7D, 0x0C, - 0xD5, 0xA3, 0xFC, 0x89, 0x08, 0x0B, 0x08, 0x07, 0x5A, 0x87, 0x1D, 0x54, 0xC8, 0x4A, 0x62, 0xFA, - 0xCD, 0x25, 0xA4, 0x27, 0xB5, 0x0E, 0x96, 0x98, 0x48, 0x3D, 0x27, 0x69, 0x5B, 0xD2, 0x44, 0xBF, - 0x30, 0x34, 0x88, 0x29, 0xDF, 0x7C, 0x5E, 0x34, 0x69, 0x9C, 0xCF, 0x07, 0xDD, 0xC1, 0xB0, 0x30, - 0x73, 0x92, 0x72, 0x99, 0x9A, 0x38, 0x4A, 0x42, 0x47, 0x18, 0x56, 0x72, 0x8D, 0xC0, 0x37, 0xAE, - 0xA4, 0x49, 0xBB, 0xEB, 0x5B, 0x6C, 0xE6, 0x66, 0x4C, 0x7D, 0x98, 0xBB, 0x05, 0x92, 0xA9, 0x17, - 0x37, 0xF4, 0xBE, 0x94, 0x3E, 0x9A, 0xD2, 0x49, 0x5D, 0x40, 0x88, 0x57, 0x4E, 0x76, 0x42, 0x03, - 0xF2, 0x26, 0x31, 0x05, 0x4B, 0x93, 0xCA, 0x80, 0xDC, 0x04, 0x6D, 0x93, 0xCC, 0x5C, 0x8F, 0x65, - 0x83, 0x19, 0x33, 0xC7, 0x94, 0x22, 0x8B, 0x2D, 0xF6, 0x74, 0xE9, 0x5E, 0x11, 0x4F, 0x22, 0xAC, - 0x94, 0x52, 0x87, 0x27, 0x43, 0x53, 0x01, 0x9B, 0x01, 0xC3, 0xA3, 0x54, 0xF6, 0x49, 0x74, 0xFD, - 0xDE, 0xAC, 0x9F, 0xEB, 0xC7, 0x0C, 0x5D, 0x07, 0x7C, 0xC6, 0x98, 0xDA, 0xC4, 0xCC, 0x19, 0xCD, - 0x4C, 0x32, 0x37, 0x36, 0x76, 0x50, 0x60, 0x95, 0x46, 0x17, 0xFF, 0xE5, 0xF5, 0x48, 0xC3, 0xD0, - 0xBF, 0xB0, 0x2E, 0x74, 0x4E, 0x03, 0xC7, 0xBF, 0x25, 0x7D, 0x8A, 0x54, 0xC3, 0x58, 0xAF, 0x89, - 0x01, 0xAD, 0x66, 0x24, 0x4B, 0x0F, 0x4A, 0x53, 0x0C, 0x79, 0x9C, 0x57, 0x9A, 0xB7, 0x17, 0x3A, - 0x6C, 0x98, 0x3C, 0x96, 0xE2, 0xF9, 0x74, 0xEE, 0xCE, 0x36, 0xB2, 0xAC, 0x46, 0xCD, 0xF1, 0xB6, - 0xF1, 0x9D, 0x0A, 0x91, 0xF9, 0xB6, 0x45, 0xDD, 0x7F, 0xE3, 0x38, 0xA8, 0xD1, 0x76, 0xE0, 0x01, - 0x9B, 0x92, 0x8E, 0xD4, 0x04, 0x57, 0x29, 0x86, 0x25, 0x04, 0x9B, 0x55, 0xBB, 0x4A, 0x85, 0x29, - 0x49, 0x38, 0x0D, 0x23, 0xAD, 0x06, 0x31, 0xC4, 0x32, 0x05, 0xAA, 0x7A, 0x72, 0x09, 0x96, 0x9B, - 0x95, 0x2C, 0x8F, 0x12, 0x9D, 0xF5, 0x60, 0xD0, 0x67, 0xDD, 0x79, 0x8B, 0xA9, 0xD1, 0xEA, 0x1E, - 0x74, 0x0F, 0x06, 0xF0, 0x9F, 0x64, 0x3E, 0x93, 0x6F, 0x5C, 0x5C, 0xBC, 0x19, 0x96, 0x97, 0x0A, - 0xD1, 0xC5, 0x65, 0xA5, 0xAC, 0x60, 0x5F, 0xA8, 0x0B, 0x75, 0x4F, 0x4A, 0xD6, 0x97, 0x7A, 0x9D, - 0x82, 0x71, 0x38, 0xC3, 0xA4, 0xCB, 0x1B, 0xA2, 0xC4, 0x5A, 0xCA, 0xAA, 0x78, 0xE5, 0xFE, 0xDE, - 0x66, 0x49, 0xC8, 0xFF, 0x79, 0x6B, 0x8F, 0x89, 0xE2, 0x2F, 0x6D, 0xE9, 0xA5, 0xE5, 0xE2, 0x3F, - 0xB4, 0x6D, 0x74, 0xB3, 0xB5, 0xDE, 0xE6, 0x59, 0x1F, 0x50, 0xE8, 0xC0, 0x1C, 0xD4, 0x83, 0xC9, - 0x68, 0x66, 0x66, 0x18, 0x6B, 0x53, 0x41, 0x06, 0x73, 0xCB, 0xB6, 0xDB, 0xB6, 0x7B, 0x5D, 0x9C, - 0x89, 0xE4, 0x5B, 0xF2, 0x96, 0x9D, 0x16, 0x9B, 0x7C, 0x55, 0x6A, 0x37, 0x10, 0xB9, 0xFE, 0x14, - 0xD4, 0xFE, 0xB5, 0x1D, 0x2E, 0xD7, 0x35, 0xAA, 0x0D, 0x14, 0x15, 0xEC, 0xB1, 0x5E, 0x47, 0x4A, - 0xA6, 0xC4, 0x32, 0xC1, 0xFC, 0x69, 0xCF, 0xB5, 0x15, 0xCC, 0x96, 0x15, 0xA6, 0x9E, 0xD1, 0xC4, - 0xC8, 0x23, 0xB6, 0x81, 0x19, 0x7C, 0xA5, 0x0A, 0x45, 0xE1, 0xF4, 0x2D, 0x0E, 0xAE, 0xC2, 0x09, - 0x15, 0xDD, 0xE3, 0xA9, 0x2E, 0x75, 0x58, 0xEE, 0x90, 0x1D, 0xAB, 0xE5, 0x66, 0x5D, 0x90, 0xEE, - 0x27, 0x3D, 0x43, 0xDE, 0xA8, 0x44, 0x44, 0x17, 0x41, 0x7B, 0xE1, 0x91, 0x5B, 0x05, 0x66, 0x0E, - 0xF8, 0xDF, 0x53, 0x56, 0x3F, 0xAE, 0x5E, 0x2A, 0xA1, 0x03, 0x00, 0xB7, 0xA2, 0xCE, 0xD0, 0x57, - 0xE8, 0x3A, 0xBB, 0x4B, 0x15, 0x7B, 0x0C, 0xAB, 0xA3, 0xBA, 0xAE, 0x10, 0x6E, 0x72, 0x86, 0x50, - 0xB9, 0xA9, 0x8A, 0xD1, 0x57, 0x3E, 0x9F, 0x27, 0xF3, 0x20, 0x63, 0xF1, 0x87, 0xE6, 0xA9, 0x83, - 0xFC, 0xE8, 0xD6, 0x8E, 0x55, 0x53, 0x0A, 0x23, 0x47, 0x58, 0xC4, 0xCC, 0xB6, 0x3E, 0x29, 0x66, - 0x8C, 0x9E, 0xA5, 0x91, 0x67, 0xAB, 0x44, 0xA4, 0xCF, 0x54, 0xCD, 0xD0, 0x66, 0xC5, 0x87, 0x7C, - 0x50, 0x0F, 0xF9, 0xB9, 0xD5, 0x1F, 0x4B, 0xD7, 0x56, 0x72, 0x1A, 0xE7, 0x91, 0x96, 0x59, 0x05, - 0xDC, 0x1E, 0xB2, 0x32, 0x27, 0xC8, 0xF1, 0x58, 0x24, 0x55, 0x54, 0xBE, 0x57, 0xE6, 0x45, 0x98, - 0xED, 0x4A, 0x56, 0xAE, 0xB1, 0x5B, 0x2B, 0x03, 0xD2, 0x5E, 0x34, 0x57, 0x03, 0x30, 0xCA, 0xF4, - 0xA7, 0x62, 0xEE, 0xB1, 0x1A, 0x6B, 0x6F, 0xDC, 0x2D, 0xE8, 0x72, 0x66, 0xBB, 0x7E, 0xCD, 0x02, - 0x58, 0x76, 0xFD, 0x4B, 0x7A, 0x47, 0x69, 0xE8, 0xCE, 0xF5, 0xA9, 0x7C, 0x77, 0x4C, 0xC9, 0xBC, - 0xD7, 0x95, 0x46, 0xDA, 0xDC, 0x2A, 0x25, 0xAD, 0xA0, 0xD1, 0xF5, 0xCB, 0x53, 0x6D, 0x46, 0xE4, - 0x61, 0x34, 0x59, 0xA8, 0x53, 0x29, 0x95, 0xE6, 0xEA, 0x61, 0x69, 0x99, 0x26, 0xC9, 0xAD, 0x05, - 0xE3, 0x9C, 0x57, 0x31, 0x79, 0x40, 0xFA, 0x65, 0x45, 0xA9, 0x9D, 0x38, 0x45, 0xEE, 0xB6, 0x86, - 0xDE, 0xAE, 0x3D, 0x86, 0x0F, 0x34, 0x59, 0x95, 0xF4, 0x64, 0x2A, 0x92, 0x4B, 0xAA, 0xD4, 0xB9, - 0xC3, 0x5A, 0x2B, 0x8A, 0x0C, 0xE4, 0x80, 0xAD, 0xB6, 0xA3, 0x79, 0x8A, 0x2A, 0xBA, 0x90, 0xD2, - 0xE1, 0x6B, 0x4B, 0x7C, 0x19, 0xB0, 0x9D, 0xB5, 0xBA, 0x72, 0x8F, 0x4B, 0x6D, 0xD4, 0x02, 0xD2, - 0xFD, 0x66, 0x8A, 0xE6, 0x81, 0x32, 0xA3, 0x1C, 0x22, 0xC3, 0x21, 0x46, 0x6C, 0xAE, 0x4A, 0xB6, - 0x2A, 0xEB, 0x1C, 0xE1, 0xF9, 0xD9, 0x61, 0x6C, 0x3B, 0xDC, 0xD9, 0x61, 0xB4, 0x73, 0xEF, 0x0C, - 0xF7, 0xC4, 0xC5, 0x77, 0xCD, 0xF1, 0x8E, 0x66, 0xB6, 0xE1, 0xFB, 0xE7, 0x3A, 0xEE, 0xED, 0xD2, - 0x93, 0x9B, 0xE8, 0xCE, 0x4C, 0xEB, 0x4A, 0xB3, 0xCC, 0x73, 0xDD, 0x76, 0x17, 0x6E, 0xEA, 0x1E, - 0xBD, 0xCF, 0xD4, 0x0C, 0x03, 0xD9, 0xB9, 0x9E, 0x58, 0x60, 0xD4, 0x29, 0x54, 0x74, 0x49, 0x9F, - 0x3C, 0xFB, 0xE2, 0xE4, 0xE8, 0x68, 0xFC, 0xD5, 0x33, 0x67, 0xEA, 0xAF, 0xF9, 0xFF, 0x3F, 0xB0, - 0xF5, 0x58, 0xB6, 0xA9, 0x0F, 0xC6, 0xB6, 0x20, 0x00, 0xDB, 0xF3, 0xCF, 0x0E, 0x29, 0xD2, 0x14, - 0x21, 0x87, 0x40, 0x49, 0x06, 0x6D, 0x3C, 0xDF, 0x91, 0x91, 0x27, 0x9A, 0xF8, 0x30, 0x84, 0x4F, - 0x0D, 0x4F, 0xD2, 0x84, 0x36, 0x63, 0xD9, 0x34, 0x8D, 0x25, 0x3A, 0x55, 0xCA, 0xD4, 0xBD, 0x49, - 0x73, 0x40, 0x99, 0xE2, 0x1A, 0xE3, 0xAD, 0x88, 0x99, 0x85, 0x10, 0xC0, 0x28, 0x38, 0xAE, 0xAE, - 0x42, 0x1B, 0x69, 0xA3, 0x84, 0x0A, 0xB0, 0xF1, 0xCD, 0xCC, 0xFE, 0x2C, 0x94, 0xAF, 0x0B, 0xA5, - 0x38, 0x6E, 0xC0, 0x62, 0x65, 0x46, 0x57, 0x09, 0x56, 0x39, 0x4C, 0x6C, 0xDD, 0x90, 0x71, 0x01, - 0xA2, 0x6D, 0x53, 0xEC, 0xEC, 0x5A, 0x3E, 0x26, 0x8A, 0x2D, 0xA6, 0x57, 0x01, 0xAC, 0x4F, 0x7E, - 0xBE, 0xF8, 0xF6, 0xEF, 0xDA, 0xBB, 0xB7, 0xBF, 0x4B, 0x35, 0x54, 0x44, 0x14, 0x06, 0x69, 0x85, - 0x9E, 0x29, 0x18, 0xD3, 0x87, 0x90, 0x89, 0xCE, 0x35, 0x43, 0x31, 0xE0, 0x70, 0x6F, 0x13, 0x67, - 0x11, 0x2C, 0xCF, 0xF5, 0x9E, 0x8E, 0x7B, 0x5A, 0xC4, 0x59, 0x5F, 0xD7, 0x30, 0x80, 0xD3, 0x83, - 0x2B, 0xC3, 0xDE, 0xE0, 0x51, 0x57, 0x85, 0xD7, 0x6D, 0xD3, 0x92, 0x36, 0xE3, 0x91, 0x25, 0x94, - 0x71, 0x2C, 0x12, 0x27, 0xA5, 0xAC, 0x4F, 0x3E, 0x90, 0xE0, 0xEC, 0x90, 0xDD, 0x2A, 0xD0, 0x5A, - 0x7E, 0xDF, 0xE0, 0xC9, 0xCC, 0x1C, 0xF2, 0x4C, 0x28, 0x4F, 0xF1, 0x73, 0xCF, 0x58, 0x11, 0x94, - 0x8A, 0x92, 0xE6, 0xE3, 0x5A, 0x0F, 0x21, 0xF5, 0xC9, 0xF7, 0x84, 0x66, 0x44, 0x40, 0x86, 0x92, - 0xE2, 0xCF, 0x78, 0x92, 0x9A, 0xE8, 0x3F, 0xB4, 0x67, 0xBE, 0x28, 0xD5, 0x36, 0x98, 0x99, 0x2B, - 0xC8, 0xFD, 0x69, 0xBB, 0xAD, 0x0D, 0xDE, 0xBD, 0xD7, 0xDA, 0x6D, 0x85, 0xC6, 0xEE, 0x9A, 0xBA, - 0x13, 0xD7, 0x7F, 0xEF, 0x48, 0x9F, 0xFC, 0xF3, 0xE7, 0x37, 0x2F, 0x5B, 0xFD, 0xEE, 0xF0, 0xF8, - 0xA6, 0x37, 0x1A, 0x0F, 0xF7, 0xCF, 0x0E, 0x59, 0x93, 0xF2, 0xB8, 0xC6, 0xFA, 0xE4, 0x3D, 0x12, - 0xD2, 0x3A, 0x1E, 0x0F, 0xEB, 0xE2, 0x1A, 0x21, 0xAE, 0xB7, 0xAF, 0x5B, 0x47, 0xFD, 0xEE, 0x4D, - 0xAF, 0x7F, 0xDC, 0xAD, 0x81, 0x6A, 0xA8, 0x4F, 0xBE, 0x06, 0x4C, 0xBD, 0x13, 0x44, 0xD5, 0x2D, - 0x87, 0x0A, 0x45, 0xDB, 0xAF, 0x28, 0xDA, 0x81, 0x3E, 0xF9, 0x11, 0x45, 0x0B, 0x39, 0x37, 0xF2, - 0xD0, 0xAD, 0xC3, 0x43, 0x1F, 0x5C, 0x86, 0xE2, 0x02, 0x51, 0x00, 0x13, 0xFD, 0x3A, 0xA2, 0xED, - 0xE9, 0x13, 0x14, 0x07, 0x62, 0x02, 0xE9, 0xD6, 0x40, 0x04, 0xB1, 0x83, 0xD2, 0x04, 0xE4, 0xDC, - 0x1C, 0x8D, 0x8F, 0xAB, 0x63, 0x3A, 0x01, 0xEE, 0x3E, 0x02, 0xA6, 0x63, 0x10, 0xD4, 0xB8, 0x8E, - 0x9C, 0x8E, 0xF5, 0x09, 0xE2, 0x19, 0x0F, 0xBB, 0x37, 0xC3, 0x3A, 0x36, 0x03, 0x5E, 0xF1, 0x16, - 0x11, 0x01, 0x92, 0x9B, 0x41, 0x1D, 0x19, 0x81, 0x4B, 0x5C, 0x7C, 0xF3, 0x75, 0x6B, 0x08, 0x8C, - 0xF5, 0x4F, 0xC6, 0xD5, 0xF1, 0x80, 0x3B, 0xFC, 0x13, 0x09, 0x02, 0x62, 0x6E, 0xFA, 0xC3, 0x1A, - 0x04, 0x81, 0x33, 0x00, 0x3C, 0xE2, 0xA8, 0x8C, 0x02, 0xEC, 0xFA, 0x2D, 0x25, 0x06, 0x11, 0xF5, - 0x8E, 0x6A, 0x70, 0x05, 0x56, 0xFD, 0x4F, 0x14, 0x0F, 0x20, 0xB9, 0xE9, 0x0D, 0xEB, 0xD8, 0x34, - 0x20, 0xA2, 0x24, 0x81, 0xAF, 0xA1, 0xAB, 0x55, 0xC7, 0x04, 0x36, 0x7D, 0x32, 0xBE, 0x39, 0x19, - 0xAB, 0x21, 0xC0, 0xE1, 0x07, 0x43, 0x79, 0xDE, 0x00, 0x95, 0x3F, 0x7E, 0xE5, 0x8D, 0x4D, 0xFF, - 0xD9, 0xC0, 0x94, 0x33, 0xB8, 0x2D, 0x3D, 0x32, 0x71, 0x38, 0x90, 0x09, 0x3B, 0x50, 0x1B, 0x94, - 0x62, 0x94, 0x84, 0xBB, 0x9F, 0xF4, 0xC9, 0x50, 0x61, 0xF0, 0x4F, 0x64, 0x87, 0x14, 0x36, 0x41, - 0x3F, 0xCD, 0x48, 0xD0, 0xF2, 0x30, 0x17, 0x01, 0x97, 0x18, 0xE8, 0xB1, 0x08, 0x52, 0x69, 0xD4, - 0x93, 0xD0, 0x6A, 0xDC, 0xE8, 0x93, 0xF1, 0xA0, 0x30, 0x5B, 0xA8, 0xAE, 0x8C, 0x29, 0x2D, 0x6E, - 0x38, 0xC4, 0xF7, 0x4B, 0xEB, 0x23, 0x02, 0xD5, 0x27, 0xAF, 0xC2, 0xE3, 0x3A, 0x5A, 0x69, 0x17, - 0x71, 0x4A, 0x61, 0x33, 0xD4, 0x12, 0x23, 0x87, 0x69, 0xA6, 0x3D, 0xE0, 0xAA, 0x89, 0x34, 0x73, - 0xBF, 0x8A, 0xD9, 0xA5, 0x5E, 0x70, 0x6E, 0xE3, 0x19, 0x7E, 0x50, 0x5A, 0x2B, 0x02, 0x10, 0x22, - 0x34, 0x3F, 0x7A, 0x30, 0x8D, 0x84, 0xA4, 0xFC, 0x05, 0xF4, 0xE1, 0x1B, 0xC1, 0x86, 0xED, 0x33, - 0x2B, 0xAD, 0x91, 0x08, 0x14, 0xF2, 0x81, 0xF0, 0xB8, 0x96, 0x56, 0xEA, 0x84, 0xAF, 0x18, 0x39, - 0x5C, 0x2F, 0x22, 0x84, 0x0D, 0x77, 0xA4, 0x97, 0x22, 0x6A, 0x6B, 0xE9, 0x65, 0x69, 0x78, 0xEB, - 0x4A, 0xE1, 0x2B, 0x84, 0x04, 0xAD, 0x88, 0xC3, 0x07, 0x73, 0x95, 0x88, 0x98, 0xBF, 0x80, 0xAF, - 0x98, 0xC4, 0x71, 0x2D, 0xBF, 0xFC, 0xD4, 0x93, 0xC3, 0xE9, 0x93, 0xD7, 0xA4, 0xFD, 0x1D, 0x1E, - 0xD5, 0x51, 0xC7, 0xCB, 0x4D, 0xE0, 0xD6, 0x50, 0x88, 0xA0, 0x85, 0xA9, 0xA3, 0xCB, 0xB5, 0x71, - 0xBC, 0x23, 0x6D, 0x1C, 0xEF, 0x50, 0x1B, 0x06, 0xF9, 0x64, 0x93, 0x2B, 0x62, 0x97, 0x56, 0x87, - 0x00, 0xD4, 0x27, 0x97, 0x37, 0x6B, 0xD7, 0xC7, 0xA7, 0x77, 0xBE, 0xC5, 0xF3, 0x5A, 0x4E, 0x32, - 0xAA, 0xA1, 0x93, 0x90, 0x20, 0xEE, 0x23, 0x23, 0xAE, 0x95, 0xD1, 0x8E, 0xB4, 0x52, 0x44, 0x6B, - 0x1D, 0xAD, 0x2C, 0x0C, 0xCB, 0x99, 0x11, 0xCB, 0xC6, 0x27, 0x09, 0xCA, 0x2A, 0x26, 0x06, 0xAB, - 0x4F, 0xDE, 0x44, 0x27, 0x75, 0x14, 0xD3, 0xAD, 0xA1, 0x97, 0x38, 0x3D, 0x49, 0x7F, 0x19, 0xC1, - 0xAC, 0x7C, 0x47, 0xBA, 0xE9, 0xF5, 0x76, 0x39, 0xAA, 0xAC, 0xC9, 0xCC, 0x32, 0xEC, 0x4F, 0x64, - 0x3E, 0x87, 0x69, 0x50, 0xF9, 0xA1, 0x25, 0x01, 0x0E, 0xE3, 0x0B, 0x3B, 0xD7, 0x2E, 0xE9, 0x79, - 0xE9, 0x62, 0x5A, 0x0A, 0x5D, 0xF5, 0x8A, 0x5A, 0x7A, 0x4E, 0xC8, 0x97, 0x95, 0x09, 0xAD, 0x61, - 0xB2, 0x23, 0x7D, 0xF2, 0x9D, 0x1B, 0xD2, 0x59, 0x7D, 0xDA, 0xFA, 0x1D, 0x59, 0xD0, 0x55, 0xDB, - 0x3A, 0x73, 0xE8, 0x37, 0x9E, 0x71, 0x4B, 0x5F, 0x0B, 0x50, 0x67, 0x4A, 0xFF, 0x3D, 0x31, 0xB5, - 0x1F, 0x2C, 0xA7, 0x3A, 0x33, 0x43, 0x24, 0x84, 0x10, 0xA7, 0x1E, 0x96, 0x11, 0x4C, 0x91, 0xE0, - 0xA0, 0x1E, 0x92, 0x31, 0x16, 0x98, 0xD7, 0x96, 0xF1, 0x18, 0x26, 0xF1, 0xC6, 0xF5, 0xB4, 0xFC, - 0x80, 0x72, 0x3D, 0x85, 0x71, 0xF9, 0xA7, 0x57, 0xDA, 0x25, 0xDD, 0x67, 0x5C, 0x3A, 0x5C, 0xB1, - 0x2D, 0x50, 0x2A, 0x86, 0x1E, 0xAD, 0x23, 0x60, 0x9F, 0x5B, 0x0B, 0x3C, 0x72, 0x07, 0x52, 0x5D, - 0xE4, 0x91, 0xB0, 0x27, 0x08, 0xA4, 0x3B, 0x46, 0xF4, 0x18, 0xB7, 0x6A, 0x3C, 0xEE, 0x30, 0x15, - 0x9B, 0x5D, 0x97, 0x4F, 0xC3, 0x66, 0xD7, 0xA0, 0x26, 0xF3, 0x0A, 0xB7, 0xA0, 0x9B, 0x1A, 0xE8, - 0xAB, 0x11, 0x45, 0x61, 0xAF, 0x0F, 0xA3, 0x28, 0xCA, 0xEF, 0x43, 0x2B, 0x0A, 0xAC, 0xE5, 0x13, - 0x8E, 0xA3, 0x55, 0x9C, 0x8A, 0x02, 0xEA, 0x93, 0x77, 0x86, 0xB3, 0x81, 0x41, 0xA6, 0x29, 0x85, - 0x85, 0x1D, 0x3F, 0x98, 0x7B, 0x71, 0xBE, 0x1F, 0x5A, 0x75, 0x40, 0xC8, 0xCA, 0x35, 0xCB, 0x4F, - 0x77, 0x38, 0x1C, 0x0B, 0x89, 0xEF, 0xE0, 0xA8, 0x74, 0x62, 0x20, 0x30, 0xEC, 0x38, 0x23, 0x60, - 0x53, 0xA9, 0xEA, 0xC9, 0xC0, 0x87, 0x8D, 0xE3, 0xDC, 0xD6, 0xC9, 0x04, 0x2E, 0x6C, 0x77, 0x63, - 0x56, 0xC7, 0x00, 0x69, 0xC0, 0x3F, 0xE6, 0x73, 0x6B, 0x56, 0x3D, 0x91, 0x80, 0x24, 0xE0, 0xAD, - 0xBB, 0x52, 0x84, 0xDF, 0xF1, 0xC0, 0x4B, 0x66, 0x15, 0x66, 0x72, 0x33, 0xD0, 0xE2, 0xE5, 0x45, - 0xA3, 0x03, 0x2F, 0xF4, 0xF9, 0x40, 0x91, 0x01, 0xB9, 0x7D, 0xE8, 0xA0, 0x00, 0x44, 0x7C, 0xA2, - 0xC6, 0x53, 0x45, 0x59, 0x0C, 0x32, 0x8C, 0xE8, 0x62, 0xFA, 0xFD, 0x50, 0xF3, 0xBB, 0x88, 0xA2, - 0xE4, 0xEC, 0xAE, 0x37, 0x1A, 0x8C, 0xC3, 0xE9, 0xDD, 0xA0, 0x7F, 0xBF, 0x13, 0x3C, 0x44, 0xBE, - 0x5B, 0xFD, 0xF4, 0xAB, 0xA8, 0x06, 0xA2, 0xD1, 0x77, 0xB8, 0xCE, 0x50, 0x22, 0x60, 0xD7, 0x77, - 0xA4, 0xFE, 0xC3, 0x79, 0x52, 0xFF, 0x11, 0xB8, 0xD2, 0xA2, 0x42, 0xC4, 0x5B, 0x60, 0xC4, 0x7B, - 0x73, 0xD1, 0x8C, 0x86, 0x16, 0x0F, 0x16, 0xEA, 0x16, 0x0F, 0x1A, 0xEA, 0x34, 0xBE, 0x43, 0x4D, - 0x48, 0xA1, 0x62, 0x06, 0xCB, 0x01, 0x59, 0x2D, 0xAB, 0x4E, 0x90, 0xEB, 0xDD, 0xD4, 0x89, 0x72, - 0x82, 0x8C, 0x64, 0x90, 0x1B, 0x47, 0xAB, 0x22, 0xA3, 0xFB, 0x5D, 0xD6, 0x1D, 0x16, 0x51, 0x5B, - 0xC7, 0x69, 0x3C, 0xE3, 0xFA, 0xD3, 0x62, 0x65, 0x94, 0x56, 0x06, 0x87, 0x03, 0x5D, 0xBC, 0x7B, - 0xD9, 0x64, 0xBA, 0x20, 0xFA, 0x7D, 0x18, 0x3F, 0x0A, 0xB9, 0x7E, 0xE8, 0x58, 0x67, 0x13, 0xA7, - 0x7C, 0xB0, 0x43, 0x20, 0x7D, 0xF2, 0x2D, 0x71, 0x7C, 0xED, 0xC2, 0xF5, 0xF8, 0xBB, 0x18, 0x1B, - 0xD1, 0x1A, 0xED, 0xF9, 0x61, 0x54, 0xC6, 0x98, 0x7E, 0x68, 0x7D, 0x2D, 0x57, 0x96, 0xE7, 0xB9, - 0x5E, 0x69, 0x95, 0x71, 0x38, 0x98, 0x56, 0xB4, 0xDF, 0xD1, 0xA3, 0x46, 0xD4, 0x25, 0x7A, 0x7D, - 0x18, 0x8D, 0x85, 0x3C, 0x3F, 0xB4, 0xD2, 0xAE, 0xE6, 0xB6, 0xB5, 0x2E, 0xAD, 0x32, 0x0A, 0xA5, - 0x4F, 0x3E, 0xB6, 0xBF, 0x86, 0xBF, 0x8D, 0xA8, 0x8B, 0xF5, 0xF8, 0x30, 0xCA, 0xE2, 0xDC, 0x3E, - 0xB4, 0xAA, 0xA6, 0xEB, 0xF2, 0xE1, 0x10, 0x60, 0xF4, 0xC9, 0xAB, 0xF7, 0xCD, 0xE4, 0x7E, 0xD8, - 0x99, 0xA2, 0x86, 0x6A, 0xE9, 0x83, 0x32, 0xF5, 0xD0, 0xDA, 0xB8, 0xAE, 0xA0, 0x8D, 0x6B, 0x24, - 0xFC, 0xA7, 0x86, 0xB4, 0x71, 0xAD, 0xAE, 0x8D, 0x7B, 0xF6, 0x97, 0xEB, 0xC7, 0xA0, 0x1F, 0xFA, - 0xB0, 0xDF, 0xD4, 0x28, 0x3F, 0x1C, 0x09, 0x40, 0xDC, 0x34, 0x06, 0x47, 0xDA, 0x2B, 0xA3, 0x99, - 0x01, 0x29, 0xEC, 0xB7, 0x09, 0x17, 0x8A, 0x98, 0x7C, 0x68, 0x3D, 0xD9, 0xC4, 0xAC, 0x90, 0xE4, - 0x99, 0x9F, 0xF0, 0xC9, 0x39, 0x7C, 0xA2, 0xFC, 0x16, 0xB2, 0xBD, 0xCB, 0xD7, 0xDA, 0x37, 0xE2, - 0xF4, 0xA1, 0x0A, 0x43, 0x49, 0x9A, 0x92, 0xF3, 0xA6, 0xFE, 0x68, 0x57, 0xDB, 0x32, 0x00, 0xF3, - 0x0E, 0x75, 0x33, 0x37, 0x66, 0xE4, 0x93, 0x49, 0x82, 0x2A, 0xEB, 0xFE, 0x31, 0x58, 0x7D, 0xF2, - 0x35, 0x9C, 0x68, 0xAF, 0xE9, 0x49, 0x53, 0xE9, 0x78, 0xBC, 0xFF, 0x26, 0x3C, 0x2A, 0xC1, 0xEF, - 0x43, 0x3B, 0x15, 0x25, 0x06, 0x26, 0x3F, 0xEE, 0xC2, 0xA9, 0xF4, 0xDC, 0x53, 0x02, 0x9C, 0xAB, - 0xEF, 0x7B, 0x76, 0xDE, 0xAC, 0x02, 0x23, 0x22, 0x1A, 0xD3, 0x61, 0x8C, 0xEF, 0x26, 0xD4, 0x18, - 0x7F, 0xF8, 0x91, 0xBF, 0x36, 0xB8, 0x48, 0x53, 0xFC, 0x21, 0x3C, 0xBA, 0xDD, 0x88, 0x04, 0x6D, - 0x3F, 0xB0, 0x6C, 0x5B, 0x9F, 0xBC, 0x21, 0x81, 0xF6, 0x01, 0x0F, 0x15, 0x9F, 0xBA, 0x8B, 0x61, - 0x11, 0xCF, 0xDC, 0x06, 0x1E, 0x31, 0x56, 0xFA, 0xE4, 0x03, 0xBE, 0x50, 0x19, 0x70, 0xE1, 0x59, - 0x79, 0x64, 0x54, 0x88, 0xC4, 0xF1, 0x5C, 0x20, 0x2A, 0x54, 0x12, 0x7F, 0x51, 0xA3, 0xAE, 0x89, - 0xA3, 0xD8, 0xB5, 0xC9, 0x25, 0x6D, 0xAC, 0xA1, 0x95, 0x15, 0x77, 0x17, 0x7F, 0x1C, 0x30, 0xDF, - 0x39, 0xE8, 0x03, 0xC0, 0xF8, 0x44, 0x6F, 0xF2, 0x7D, 0xEB, 0xA0, 0x56, 0xF6, 0x7C, 0xFF, 0xE4, - 0xCC, 0x5F, 0x1B, 0x8E, 0x68, 0x46, 0x1F, 0x7E, 0xBF, 0xE6, 0x4F, 0x33, 0x4F, 0x5D, 0xDB, 0xFC, - 0x2A, 0xB6, 0xF0, 0xFF, 0x21, 0x7C, 0x2C, 0x17, 0x41, 0xC0, 0x2E, 0x04, 0x86, 0x02, 0xE5, 0x2E, - 0x3D, 0x81, 0x9E, 0x3D, 0x41, 0x8D, 0x6F, 0xEB, 0xCA, 0xD1, 0x6E, 0xC6, 0x93, 0xC4, 0x1E, 0x59, - 0x84, 0x92, 0x94, 0x3D, 0x61, 0x2E, 0x7D, 0xAE, 0xF8, 0x7B, 0xB2, 0xB0, 0x7C, 0xA0, 0x51, 0x03, - 0xBB, 0x38, 0xA4, 0xCF, 0x62, 0x32, 0x5B, 0x56, 0x7B, 0xCE, 0x37, 0xDE, 0x25, 0x7F, 0x4D, 0x81, - 0xF4, 0xF1, 0xED, 0x52, 0xA9, 0x63, 0xFA, 0x59, 0xEB, 0x24, 0xC6, 0x22, 0xAB, 0x7F, 0xDA, 0x6E, - 0x2F, 0x87, 0xF8, 0x54, 0xA9, 0x26, 0x58, 0x3B, 0x3B, 0x5C, 0x0E, 0x8B, 0x9E, 0xDA, 0x2B, 0x7C, - 0x24, 0x18, 0x38, 0xAD, 0xFC, 0x44, 0x30, 0x4A, 0x69, 0x02, 0xD4, 0x1C, 0x68, 0xEF, 0x0C, 0xFF, - 0xF3, 0x81, 0xF6, 0x11, 0x87, 0xF8, 0x06, 0x1F, 0x0C, 0x46, 0xDA, 0x0D, 0xD3, 0xF4, 0x32, 0x1F, - 0x0E, 0x1E, 0x26, 0x1E, 0x0E, 0x1E, 0x8B, 0x87, 0x83, 0xA3, 0x95, 0xAA, 0xEE, 0xCD, 0xA0, 0xDB, - 0x3D, 0x56, 0x61, 0x5D, 0xF1, 0x01, 0xE1, 0x7B, 0xE1, 0x69, 0x05, 0xD2, 0x54, 0xE4, 0x69, 0x28, - 0x78, 0x8A, 0x6D, 0xD8, 0xBF, 0x99, 0xCF, 0x1F, 0x1B, 0x47, 0x7C, 0xC9, 0xB0, 0x3A, 0x4B, 0xDD, - 0x7E, 0xD3, 0x4F, 0x71, 0x53, 0xE3, 0xBE, 0xAF, 0x87, 0xB8, 0x69, 0x93, 0x74, 0x34, 0x1C, 0xE5, - 0x06, 0x43, 0x0A, 0xC2, 0x9C, 0xFE, 0xCD, 0x7D, 0x3A, 0xFD, 0xA2, 0x86, 0xD3, 0x2F, 0xB6, 0x9C, - 0xBE, 0x41, 0x6F, 0x17, 0x84, 0xFF, 0xD5, 0x3C, 0x5E, 0xF0, 0x55, 0xC2, 0xEB, 0xA5, 0x7C, 0x75, - 0xBB, 0xF7, 0xEA, 0xF7, 0x85, 0x4E, 0x12, 0x1A, 0xC3, 0x9B, 0xFB, 0x74, 0x92, 0x0C, 0xD3, 0xAD, - 0x64, 0xA7, 0x3C, 0xEC, 0x4C, 0x9A, 0x19, 0x97, 0x68, 0x36, 0x15, 0x57, 0x28, 0xEF, 0x1D, 0x1F, - 0xD7, 0x1D, 0x0C, 0x79, 0xEA, 0x74, 0x1F, 0xEA, 0x51, 0x7F, 0x61, 0x44, 0x66, 0x93, 0xFB, 0x49, - 0xCC, 0xD6, 0xB1, 0x14, 0x57, 0x39, 0x31, 0x7B, 0xFF, 0xED, 0xB7, 0xE5, 0x72, 0xB1, 0x78, 0x2F, - 0x8F, 0x24, 0x17, 0xCB, 0x2D, 0x53, 0xDF, 0xAE, 0xE1, 0x06, 0x52, 0x5D, 0xC9, 0x74, 0x23, 0x70, - 0x7D, 0xF2, 0x8A, 0x1E, 0x6B, 0x31, 0x89, 0x95, 0x32, 0x5E, 0xE5, 0x59, 0x27, 0x05, 0x8C, 0xD5, - 0xB1, 0x23, 0x12, 0xD2, 0xBA, 0x51, 0xC4, 0x95, 0x53, 0xBB, 0x8E, 0xB1, 0xA7, 0xCE, 0x54, 0x6D, - 0x9F, 0xA0, 0x4D, 0x8A, 0x52, 0xE1, 0xD5, 0xC6, 0xAE, 0xAC, 0x36, 0x0E, 0xAB, 0x4F, 0xDE, 0xC1, - 0x64, 0xDC, 0x5A, 0xDB, 0x16, 0xCC, 0x3C, 0x5A, 0x5D, 0xAD, 0xAD, 0x0D, 0x7A, 0xFB, 0x0D, 0x8E, - 0x91, 0x82, 0x8C, 0x92, 0x6F, 0xCB, 0xE9, 0x45, 0x0F, 0xB3, 0x0D, 0xEE, 0xE9, 0x75, 0x39, 0x75, - 0x15, 0xE2, 0xB9, 0x6E, 0x50, 0x59, 0x1B, 0x02, 0x18, 0x12, 0x15, 0x38, 0xD2, 0x22, 0x9D, 0xA8, - 0xAB, 0x22, 0xB6, 0xB5, 0x36, 0xC2, 0xA6, 0xA6, 0x0E, 0xA5, 0x8D, 0xB4, 0xB8, 0x3F, 0x45, 0x75, - 0x07, 0xAA, 0x04, 0x6B, 0x4F, 0x9F, 0xF4, 0x4B, 0x60, 0x28, 0xDE, 0x87, 0xCA, 0x5A, 0xD5, 0x77, - 0x22, 0xFF, 0xB6, 0x7A, 0xEC, 0xE3, 0xB0, 0x90, 0x76, 0xDF, 0x42, 0xAA, 0xBB, 0xD2, 0x5E, 0x43, - 0x5F, 0xD4, 0x89, 0x7A, 0xA3, 0x26, 0x9D, 0x48, 0x90, 0x51, 0xDD, 0x89, 0x7A, 0x8F, 0xC3, 0x87, - 0x50, 0x1F, 0x6B, 0x8F, 0x54, 0xD6, 0x07, 0x87, 0xD5, 0x27, 0xEF, 0x3D, 0x82, 0xCA, 0xA8, 0xE4, - 0x3D, 0x21, 0x92, 0x6A, 0xCE, 0x73, 0x0F, 0x8E, 0xD2, 0xEB, 0x8C, 0xEA, 0xE1, 0xE8, 0x97, 0x73, - 0x36, 0x09, 0x86, 0x81, 0x3C, 0x08, 0x0C, 0x1E, 0xA7, 0x0B, 0x13, 0xDB, 0x1C, 0x55, 0x77, 0x62, - 0x01, 0x8D, 0xB3, 0x67, 0x38, 0xAC, 0x6C, 0x38, 0x31, 0x44, 0x8F, 0x2A, 0xEE, 0xD6, 0xC4, 0x70, - 0x1F, 0xC6, 0x34, 0xE9, 0x97, 0x32, 0xE9, 0x66, 0x4C, 0x67, 0x8D, 0x2F, 0x17, 0x24, 0x6A, 0x7B, - 0x3E, 0x29, 0xB2, 0x78, 0xA4, 0x61, 0xB0, 0x10, 0x69, 0xE8, 0xEB, 0x05, 0xE9, 0x5E, 0xF7, 0x46, - 0x73, 0x5E, 0x41, 0xC0, 0xF6, 0x32, 0x4B, 0xF9, 0xAD, 0x01, 0x31, 0xE6, 0x64, 0x29, 0x70, 0xC8, - 0xEB, 0x63, 0xCB, 0x7F, 0x29, 0x61, 0x95, 0xC7, 0x0A, 0x0E, 0xCC, 0x55, 0x18, 0x0E, 0xDD, 0xCD, - 0xE6, 0xBF, 0x21, 0x15, 0x35, 0xC6, 0xEE, 0x06, 0x13, 0xE0, 0xD8, 0xB2, 0x11, 0x55, 0x00, 0x0B, - 0x9A, 0x01, 0x9B, 0xF1, 0x95, 0x58, 0x09, 0xCA, 0x6C, 0x72, 0x3F, 0xF3, 0xFC, 0x6B, 0xCB, 0x29, - 0x3F, 0xCF, 0xFF, 0xC9, 0x72, 0x4C, 0xF7, 0xBA, 0xDC, 0x54, 0x3F, 0xDE, 0xD1, 0x9F, 0x60, 0xAA, - 0x4F, 0x07, 0x4B, 0x5C, 0x2C, 0x6C, 0x7B, 0x44, 0xED, 0xA5, 0x33, 0x69, 0x21, 0x33, 0xE8, 0x1B, - 0x5C, 0x6A, 0x03, 0x14, 0xBE, 0x46, 0x97, 0x1E, 0x77, 0xED, 0x2F, 0x3F, 0x9F, 0xC6, 0x93, 0x5D, - 0x4E, 0x81, 0x9A, 0xC3, 0x0C, 0x25, 0x85, 0xC7, 0x07, 0xAF, 0xA5, 0xFE, 0xB2, 0xCD, 0xCF, 0xED, - 0x83, 0xF3, 0x73, 0x1F, 0x01, 0x99, 0x38, 0x66, 0x65, 0xCB, 0x42, 0xD8, 0xC8, 0xAE, 0x2E, 0x1D, - 0xB3, 0x51, 0xAB, 0x62, 0xBD, 0x57, 0xD6, 0x41, 0xBF, 0x7B, 0x74, 0xF2, 0xB8, 0xCC, 0x0A, 0x19, - 0xAA, 0x61, 0x54, 0xBD, 0xD1, 0xF0, 0xE8, 0xF1, 0xD8, 0x95, 0x3B, 0x9F, 0xB3, 0x15, 0xAE, 0x6A, - 0xA6, 0xC5, 0xC1, 0x6F, 0xE8, 0xA3, 0xB4, 0x3E, 0x69, 0x36, 0x5E, 0x85, 0x9D, 0xAB, 0xE9, 0x62, - 0x20, 0xD1, 0xC5, 0xF8, 0x71, 0x99, 0x16, 0xE7, 0x48, 0xD5, 0xBA, 0x24, 0x1C, 0xDD, 0x13, 0x43, - 0xF7, 0x61, 0x5A, 0x81, 0x1B, 0x18, 0x76, 0x65, 0xCB, 0x62, 0xD0, 0x60, 0x58, 0x3F, 0xE0, 0x81, - 0xF6, 0x01, 0xF8, 0x6C, 0xD4, 0xB8, 0x44, 0xFF, 0xD5, 0x03, 0xD7, 0xA0, 0xFB, 0xC8, 0xC6, 0x43, - 0xC6, 0x52, 0xAD, 0xD0, 0x35, 0x1E, 0x3E, 0x1E, 0xFB, 0x72, 0x37, 0x01, 0x5E, 0xAD, 0x1C, 0xBA, - 0x18, 0x38, 0x86, 0x2E, 0x7A, 0xD4, 0xBC, 0x89, 0x85, 0x14, 0xD4, 0x18, 0x1C, 0x87, 0x0F, 0xBF, - 0x7E, 0xFD, 0x8B, 0x84, 0xA7, 0x5A, 0x46, 0x36, 0x78, 0x2C, 0x41, 0x6C, 0x66, 0x28, 0xBF, 0x88, - 0x8D, 0x22, 0x8B, 0x67, 0xF3, 0x0C, 0x16, 0xE6, 0x70, 0xEC, 0xA0, 0xD1, 0x0A, 0x86, 0xE8, 0xFC, - 0xDE, 0x97, 0xEC, 0x42, 0xAE, 0x1E, 0x53, 0xBD, 0x62, 0x6A, 0x39, 0x4E, 0x55, 0x35, 0x71, 0x58, - 0x7D, 0xF2, 0x8A, 0x1D, 0x34, 0xBB, 0xB8, 0xCA, 0x3B, 0xBF, 0xFF, 0x95, 0x55, 0xC1, 0x55, 0xD3, - 0x6A, 0x4A, 0x15, 0x31, 0xBC, 0xF0, 0x4B, 0x11, 0x3A, 0xDF, 0xAD, 0x18, 0x7D, 0x39, 0xE2, 0xF1, - 0x94, 0x34, 0x16, 0xC6, 0x0A, 0x9F, 0x30, 0x2E, 0x5B, 0xD4, 0x78, 0x83, 0x60, 0xE5, 0x6A, 0x1A, - 0xC9, 0x9E, 0x1E, 0x77, 0x55, 0x63, 0x92, 0x7C, 0xB5, 0x24, 0x10, 0xDE, 0x9E, 0x5A, 0x86, 0x8F, - 0x4F, 0xE3, 0xC3, 0xB1, 0xF6, 0x0A, 0x8E, 0xB5, 0xF7, 0xF6, 0x26, 0x7C, 0x37, 0xAE, 0xCC, 0x21, - 0xE2, 0x3B, 0x9B, 0x22, 0x0C, 0x59, 0xDB, 0xD7, 0xE9, 0x86, 0x2E, 0xFE, 0x14, 0x16, 0x1C, 0xE3, - 0x3E, 0xA6, 0xD1, 0xF0, 0xB8, 0xAB, 0x6B, 0x2C, 0x2B, 0xE6, 0xCF, 0x90, 0xF8, 0x9F, 0xE9, 0x06, - 0xA7, 0x5E, 0x48, 0xA0, 0xCC, 0x01, 0xE2, 0xF4, 0x86, 0x04, 0x52, 0xFB, 0xAD, 0xB3, 0xEF, 0x68, - 0x5B, 0x22, 0x3D, 0x21, 0x8E, 0xAE, 0xD4, 0x10, 0x12, 0x2F, 0xC3, 0x64, 0xED, 0x55, 0x9E, 0x86, - 0x91, 0x0B, 0xA2, 0x27, 0x15, 0x04, 0xEE, 0xF3, 0xBA, 0x5F, 0x9E, 0xFA, 0x82, 0xA7, 0x9E, 0x1A, - 0x4F, 0xFD, 0x1A, 0x3C, 0xF5, 0x1B, 0xE2, 0x69, 0x20, 0x78, 0xEA, 0xAB, 0xF1, 0x34, 0xA8, 0xC1, - 0xD3, 0xA0, 0x21, 0x9E, 0x86, 0x82, 0xA7, 0x81, 0x1A, 0x4F, 0xC3, 0x1A, 0x3C, 0x0D, 0x1B, 0xE2, - 0x69, 0x24, 0x78, 0x1A, 0xAA, 0xF1, 0x34, 0xAA, 0xC1, 0xD3, 0xA8, 0x21, 0x9E, 0xC6, 0x82, 0xA7, - 0x91, 0x1A, 0x4F, 0xE3, 0x1A, 0x3C, 0x8D, 0x1B, 0xE2, 0xE9, 0x48, 0xF0, 0x34, 0x56, 0xE3, 0xE9, - 0xA8, 0x06, 0x4F, 0x47, 0x0D, 0xF1, 0x74, 0x2C, 0x78, 0x3A, 0x52, 0xE3, 0xE9, 0xB8, 0x06, 0x4F, - 0xC7, 0x0D, 0xF1, 0x74, 0x22, 0x78, 0x3A, 0x56, 0xE3, 0xE9, 0xA4, 0x06, 0x4F, 0x27, 0x0D, 0xF1, - 0x84, 0x8B, 0x72, 0x8C, 0xA9, 0x13, 0xC5, 0x41, 0xB7, 0x5B, 0x83, 0x2B, 0xA3, 0x29, 0xAE, 0xC2, - 0x54, 0xA2, 0xA7, 0x9A, 0x4B, 0xD4, 0x49, 0x26, 0xA6, 0x4D, 0xB1, 0x15, 0x65, 0x13, 0x8A, 0xE9, - 0x44, 0xAF, 0x4E, 0x3E, 0x31, 0x6B, 0x8A, 0xAD, 0x30, 0xA1, 0xE8, 0x29, 0x66, 0x14, 0xBD, 0x3A, - 0x29, 0x85, 0xD9, 0x14, 0x5B, 0x61, 0x4E, 0xD1, 0x53, 0x4C, 0x2A, 0x7A, 0x75, 0xB2, 0x0A, 0xD2, - 0x14, 0x5B, 0x61, 0x5A, 0xD1, 0x53, 0xCC, 0x2B, 0x7A, 0x75, 0x12, 0x8B, 0x79, 0x53, 0x6C, 0x85, - 0x99, 0x45, 0x4F, 0x31, 0xB5, 0xE8, 0xD5, 0xC8, 0x2D, 0x4E, 0xE4, 0x13, 0xB1, 0x7B, 0x65, 0x8B, - 0x04, 0x7C, 0x8A, 0x1C, 0x4D, 0xDA, 0x94, 0x1E, 0x3D, 0xE1, 0x40, 0xF8, 0x6C, 0x14, 0x13, 0xC8, - 0x85, 0xEB, 0xCC, 0xAD, 0x45, 0x58, 0x64, 0x78, 0x34, 0x4F, 0x49, 0xF8, 0xB1, 0xB7, 0xF2, 0x2A, - 0x17, 0x1A, 0x3E, 0xBC, 0xBE, 0x2C, 0x57, 0x66, 0x88, 0xF7, 0xF2, 0x27, 0x2A, 0x32, 0x00, 0xD9, - 0xFD, 0xF8, 0x27, 0x02, 0x94, 0xEA, 0x0A, 0x14, 0xA8, 0x4C, 0x45, 0x61, 0x14, 0xAF, 0x28, 0x8C, - 0x95, 0x2B, 0x0A, 0x8C, 0xB8, 0xDD, 0xD4, 0x12, 0x00, 0xF7, 0x80, 0x7D, 0xD7, 0x40, 0x9D, 0xE9, - 0x41, 0x75, 0xA6, 0x47, 0x65, 0x98, 0x1E, 0x54, 0x61, 0xBA, 0xC2, 0xD3, 0x8D, 0x8A, 0x72, 0x02, - 0x7A, 0xBF, 0xB6, 0x6E, 0x88, 0xA9, 0xFD, 0xA2, 0x2E, 0xAA, 0x5E, 0x75, 0x51, 0x1D, 0x95, 0x11, - 0x55, 0x6F, 0x87, 0xF6, 0x31, 0x12, 0x7C, 0xFF, 0xA8, 0xCE, 0xF7, 0xA8, 0x3A, 0xDF, 0x83, 0x32, - 0x7C, 0x8F, 0x76, 0xC8, 0xF7, 0x50, 0xF0, 0xFD, 0x51, 0x9D, 0xEF, 0x61, 0x75, 0xBE, 0x87, 0x65, - 0xF8, 0x1E, 0xEE, 0x90, 0xEF, 0x3E, 0x04, 0x9B, 0x1F, 0x3F, 0x6A, 0x3F, 0x2C, 0x3D, 0xE2, 0x2F, - 0x8B, 0x2B, 0x71, 0x0C, 0xA2, 0xEA, 0xD8, 0x3E, 0x6A, 0x60, 0xEE, 0x86, 0x14, 0x0E, 0xE2, 0x3C, - 0x15, 0xE6, 0xCD, 0x0C, 0x42, 0xE5, 0xC3, 0x41, 0x72, 0x9E, 0xE4, 0x33, 0xB7, 0x9E, 0x2A, 0x53, - 0xBB, 0x8B, 0x61, 0xC7, 0xFA, 0xE4, 0xED, 0xA6, 0xC4, 0xF8, 0x76, 0x5C, 0xDD, 0x9E, 0xD5, 0x2B, - 0xE6, 0x8C, 0xAE, 0x9D, 0xD9, 0xF3, 0x09, 0xE5, 0x19, 0xF2, 0x32, 0x5F, 0x41, 0xED, 0xD5, 0xAB, - 0x10, 0xA3, 0x06, 0xAA, 0xE4, 0x18, 0xE9, 0x8F, 0x18, 0x3B, 0x3F, 0x22, 0x43, 0x1A, 0x64, 0x2C, - 0x25, 0x06, 0xA3, 0xA3, 0x92, 0xDA, 0x3C, 0xAE, 0x18, 0x9D, 0x90, 0xC6, 0x9D, 0xA9, 0x13, 0xA7, - 0x1E, 0x28, 0x80, 0x8F, 0x15, 0x04, 0x30, 0xAE, 0x2E, 0x80, 0x52, 0x99, 0x0B, 0xD2, 0xB8, 0x3B, - 0x01, 0x74, 0x99, 0x00, 0x3E, 0x44, 0x6F, 0xA6, 0xCE, 0x31, 0xE8, 0x1A, 0x15, 0xA8, 0x51, 0x03, - 0x6B, 0x24, 0x18, 0x69, 0x7B, 0xC2, 0xA2, 0x81, 0xA3, 0x72, 0x0A, 0xED, 0x97, 0xCD, 0xAF, 0xE4, - 0xC5, 0x4F, 0x85, 0xFC, 0x7B, 0x97, 0x09, 0x56, 0xBF, 0x2B, 0x2C, 0xBA, 0xBC, 0x00, 0xBA, 0xD5, - 0x05, 0xD0, 0x2B, 0x25, 0x80, 0xEE, 0xE3, 0x4A, 0xC6, 0xC7, 0xDB, 0x1F, 0x13, 0x2E, 0x96, 0x56, - 0x59, 0xF7, 0x8F, 0x8D, 0x66, 0xFD, 0x32, 0xC2, 0xDA, 0xA9, 0xF7, 0x0F, 0x22, 0xCE, 0xB5, 0x5F, - 0xB4, 0xE4, 0xD6, 0xD7, 0xBC, 0x38, 0x50, 0xBD, 0x08, 0x38, 0x6A, 0x60, 0xBD, 0x0A, 0x29, 0x3C, - 0x91, 0x70, 0x56, 0x32, 0xC0, 0x9F, 0x54, 0x77, 0x87, 0x52, 0x1A, 0x46, 0x5A, 0x77, 0xA7, 0xE2, - 0x51, 0x42, 0x10, 0xEC, 0x43, 0xE6, 0x2A, 0x2A, 0xAE, 0x5E, 0x39, 0x1C, 0x35, 0xB0, 0xD4, 0x85, - 0x14, 0x1E, 0x4B, 0x38, 0x2B, 0xA9, 0xE2, 0xB2, 0x29, 0xE9, 0x71, 0xC5, 0xA9, 0x65, 0x6F, 0x97, - 0x39, 0x29, 0x56, 0xBB, 0x63, 0x82, 0x88, 0x7F, 0x65, 0x22, 0x4F, 0xC1, 0xD5, 0x2B, 0xDE, 0xA3, - 0x9A, 0xEB, 0xB3, 0xBB, 0x8B, 0xE4, 0x47, 0xB2, 0x4F, 0x90, 0x17, 0xDB, 0x41, 0xD9, 0x5C, 0xB6, - 0x5B, 0x71, 0xE0, 0xDB, 0x69, 0x2A, 0x0B, 0xBD, 0x43, 0xD6, 0xB3, 0xCD, 0x7D, 0x8E, 0x09, 0x54, - 0x5F, 0x79, 0x1B, 0x35, 0xB0, 0x3D, 0x04, 0x29, 0xEC, 0xEB, 0x93, 0x8F, 0x25, 0x99, 0xAA, 0x53, - 0x3F, 0xA8, 0xBC, 0x3F, 0xA4, 0xB9, 0xD2, 0xFB, 0x6C, 0x75, 0x53, 0xBE, 0xF4, 0x7E, 0xF1, 0xEE, - 0xE7, 0x72, 0xA5, 0xF7, 0x78, 0x2F, 0xCD, 0x95, 0xDE, 0xAB, 0xD9, 0x4C, 0xA9, 0x8D, 0xB2, 0xC0, - 0x18, 0xBE, 0x3F, 0x62, 0x66, 0xF9, 0xB4, 0x4B, 0x10, 0x8C, 0xF6, 0x5E, 0x9C, 0x86, 0x22, 0x8A, - 0x3D, 0xB1, 0x9F, 0x6C, 0x9F, 0x67, 0x3D, 0x83, 0x9C, 0xB0, 0xA0, 0xB6, 0x11, 0x76, 0xFB, 0x75, - 0x28, 0x9D, 0x31, 0xFF, 0x10, 0x57, 0x8D, 0x47, 0xEB, 0xB3, 0x5E, 0x1A, 0xD0, 0x39, 0x2A, 0x89, - 0x7B, 0xE7, 0x8F, 0xDC, 0x4F, 0x52, 0x8A, 0xEA, 0x51, 0xFD, 0xF4, 0xF0, 0x5C, 0xB9, 0x4E, 0x4E, - 0xC1, 0xCA, 0x44, 0xF3, 0x41, 0xBC, 0xD4, 0xA2, 0x1E, 0xCD, 0x19, 0x79, 0xBB, 0x89, 0xE6, 0x88, - 0x3B, 0xC1, 0x7B, 0x89, 0xAC, 0x86, 0xC1, 0x96, 0x13, 0x80, 0x7C, 0x13, 0x85, 0x82, 0x00, 0xB2, - 0x24, 0x70, 0x2F, 0x22, 0xE8, 0x53, 0x09, 0xF4, 0x53, 0xDA, 0xCF, 0x08, 0xFC, 0xB4, 0x7D, 0xD5, - 0xB8, 0x3F, 0x68, 0xA0, 0x36, 0x81, 0xE2, 0x4A, 0x70, 0x54, 0x52, 0xA7, 0xE5, 0x16, 0x07, 0x13, - 0x3A, 0x2D, 0x67, 0xD4, 0x3B, 0x5B, 0x1D, 0x04, 0xE4, 0x03, 0x2A, 0x80, 0x81, 0xB2, 0x4A, 0xAB, - 0x4F, 0x33, 0x07, 0x0D, 0xE4, 0x27, 0x28, 0xAD, 0x04, 0x47, 0x25, 0x55, 0x5A, 0x6E, 0xE9, 0x33, - 0xA1, 0x52, 0xF5, 0xF9, 0x25, 0x27, 0x72, 0x67, 0x2A, 0x1D, 0x52, 0x01, 0x0C, 0x95, 0x55, 0x5A, - 0x7D, 0xD6, 0x31, 0x68, 0x60, 0xF7, 0x2E, 0x4A, 0x2B, 0xC1, 0x51, 0x49, 0x95, 0x96, 0x5B, 0xB2, - 0x4B, 0xA8, 0x54, 0x7D, 0x3E, 0xC9, 0x89, 0xDC, 0x99, 0x4A, 0x47, 0x54, 0x00, 0x23, 0x65, 0x95, - 0x56, 0xAF, 0x14, 0x0C, 0x1A, 0x28, 0x06, 0xA1, 0xB4, 0x12, 0x1C, 0x95, 0x54, 0x69, 0xB9, 0xD5, - 0xE7, 0x84, 0x4A, 0xD5, 0xD7, 0x39, 0x38, 0x91, 0x3B, 0x53, 0xE9, 0x98, 0x0A, 0x60, 0xAC, 0xAC, - 0xD2, 0xEA, 0xFB, 0xAB, 0x06, 0x0D, 0xEC, 0xDD, 0x46, 0x69, 0x25, 0x38, 0x2A, 0xA9, 0xD2, 0x72, - 0xA5, 0xDB, 0x84, 0x4A, 0xD5, 0x57, 0x6E, 0x38, 0x91, 0x3B, 0x53, 0xE9, 0x11, 0x15, 0xC0, 0x91, - 0xB2, 0x4A, 0xAB, 0x6F, 0x5D, 0x1F, 0x34, 0x50, 0xCF, 0x43, 0x69, 0x25, 0x38, 0x2A, 0xA9, 0xD2, - 0x72, 0x15, 0x9C, 0x84, 0x4A, 0xD5, 0xF7, 0x4E, 0x71, 0x22, 0x77, 0xA6, 0xD2, 0x63, 0x2A, 0x80, - 0x63, 0x65, 0x95, 0x56, 0xDF, 0xB9, 0x3F, 0x68, 0x60, 0xE7, 0x3E, 0x4A, 0x2B, 0xC1, 0x51, 0x49, - 0x95, 0x96, 0xAB, 0xCD, 0x26, 0x54, 0xAA, 0xBE, 0xDD, 0x89, 0x13, 0xB9, 0x33, 0x95, 0x9E, 0x50, - 0x01, 0x9C, 0x28, 0xAB, 0xB4, 0xFA, 0x96, 0x81, 0x41, 0x03, 0x9B, 0x5F, 0x50, 0x5A, 0xDD, 0x38, - 0x47, 0x25, 0x55, 0x5A, 0x6E, 0x81, 0x71, 0x90, 0xB1, 0xF5, 0x45, 0x41, 0xA5, 0x59, 0x0B, 0x8C, - 0x8F, 0xA0, 0x7E, 0x67, 0x5C, 0x4F, 0x2B, 0x7C, 0xFA, 0xE5, 0xE5, 0x4F, 0xAF, 0xB2, 0x0B, 0xFB, - 0x99, 0x55, 0xBC, 0x44, 0x5F, 0x8F, 0xBD, 0x8C, 0x17, 0x97, 0x17, 0x12, 0x0E, 0x5A, 0x66, 0x2F, - 0x4D, 0xD4, 0xB6, 0x98, 0xCF, 0xB7, 0x34, 0x06, 0x5C, 0xC2, 0xD2, 0x06, 0xC3, 0xAE, 0x3C, 0x69, - 0x29, 0xB0, 0x34, 0x4E, 0xE5, 0x6E, 0x82, 0x07, 0x22, 0x87, 0xB9, 0x38, 0xF2, 0xFE, 0xBD, 0xD2, - 0x9A, 0x0E, 0x03, 0x48, 0x86, 0x8F, 0x61, 0xF7, 0x44, 0x31, 0x7E, 0x80, 0x0C, 0xB2, 0x36, 0xC6, - 0xDF, 0x63, 0x00, 0x41, 0x1A, 0x07, 0x8C, 0xA9, 0x37, 0xCA, 0x4C, 0xA5, 0xAB, 0x00, 0xA5, 0x98, - 0xCA, 0xAA, 0xEC, 0xDC, 0x33, 0x53, 0x43, 0xC6, 0x54, 0x8E, 0x93, 0xA6, 0x98, 0x4A, 0xCF, 0x83, - 0x4B, 0x31, 0x95, 0x35, 0x11, 0x8E, 0x98, 0x7A, 0x0C, 0x81, 0x8E, 0xCC, 0x8C, 0xC5, 0xAC, 0x42, - 0xA8, 0xBB, 0xBC, 0x38, 0x7C, 0xF9, 0xE6, 0x42, 0xA3, 0x4B, 0x9A, 0xAE, 0x5D, 0x32, 0xE2, 0x25, - 0x3B, 0xFD, 0x53, 0xC5, 0x3C, 0x4A, 0x7A, 0x2C, 0xEA, 0xBD, 0xB9, 0x50, 0x0D, 0x78, 0x1C, 0xB2, - 0x4C, 0xC8, 0x1B, 0x75, 0x07, 0x55, 0x2A, 0x84, 0x21, 0x91, 0x3B, 0x0A, 0x7A, 0x14, 0x7D, 0x3F, - 0x92, 0xC1, 0x65, 0x39, 0x19, 0x94, 0xAA, 0x92, 0x26, 0x65, 0x50, 0x22, 0xEC, 0x0B, 0x22, 0x77, - 0x29, 0x03, 0x8C, 0x92, 0x97, 0x17, 0xDA, 0xFB, 0xBF, 0x6B, 0x97, 0x37, 0x6B, 0xD7, 0xDF, 0x78, - 0xA4, 0x30, 0xAA, 0x70, 0xB8, 0x64, 0x5C, 0x19, 0x8F, 0x46, 0x03, 0xD5, 0xC0, 0x32, 0xCA, 0x1E, - 0x02, 0xE6, 0xDD, 0x7B, 0x8C, 0x97, 0x94, 0xD0, 0x61, 0xC8, 0xE0, 0xF7, 0x04, 0x34, 0xAD, 0x14, - 0x37, 0x39, 0x60, 0x92, 0xC3, 0x5E, 0x17, 0xB7, 0x57, 0x2B, 0x32, 0x28, 0xCF, 0x28, 0x07, 0xF7, - 0x3A, 0x1C, 0x50, 0x2A, 0x47, 0x21, 0x7B, 0x1F, 0x7F, 0xF8, 0xA0, 0xC6, 0x58, 0xBA, 0x8E, 0x56, - 0x4E, 0x75, 0x59, 0x8F, 0x8C, 0xDE, 0xD3, 0xA0, 0x20, 0xBD, 0x71, 0x76, 0x08, 0xA1, 0x77, 0x1B, - 0x26, 0x43, 0x92, 0x67, 0x73, 0x6B, 0x01, 0x76, 0x2C, 0xEF, 0x83, 0x8A, 0x96, 0xBD, 0xEC, 0x14, - 0xBF, 0x51, 0xD9, 0x9E, 0x41, 0xF4, 0x07, 0x93, 0x40, 0xA7, 0x13, 0x02, 0x5F, 0x19, 0x0B, 0x12, - 0x5D, 0xD7, 0x58, 0x6C, 0xCF, 0x8B, 0xD9, 0x06, 0x43, 0x68, 0x5C, 0x11, 0xFE, 0x41, 0x4D, 0x6D, - 0xE9, 0x91, 0xF9, 0xB9, 0xFE, 0x45, 0x88, 0x93, 0x3F, 0x95, 0x87, 0x4D, 0x74, 0xCD, 0x74, 0xAF, - 0x1D, 0xDB, 0x35, 0x70, 0x3C, 0x30, 0xD6, 0x01, 0x50, 0xDA, 0xF9, 0x6D, 0x8D, 0x2F, 0xBE, 0x32, - 0xF0, 0x21, 0x2E, 0x23, 0xA7, 0x9F, 0x98, 0x55, 0xCC, 0x6C, 0xD7, 0x17, 0xB3, 0x39, 0x3C, 0x0C, - 0x3F, 0xC0, 0xF9, 0x3F, 0xFF, 0x5D, 0xB4, 0x83, 0xC0, 0x5A, 0x2D, 0x62, 0x02, 0xD0, 0x35, 0xDF, - 0x9B, 0x9D, 0xEB, 0x40, 0xA9, 0xE7, 0xFA, 0xBE, 0xEB, 0x59, 0x0B, 0x2B, 0x43, 0x3B, 0x59, 0xD2, - 0x3E, 0x94, 0x89, 0x3B, 0xD5, 0x58, 0xA2, 0xF8, 0x33, 0x7F, 0xE6, 0x59, 0xEB, 0x60, 0xF2, 0xC4, - 0x74, 0x67, 0x9B, 0x15, 0x71, 0x82, 0x8E, 0x61, 0x9A, 0x97, 0x57, 0x70, 0xF0, 0x2D, 0x7E, 0xAC, - 0x0D, 0x24, 0xDF, 0xDA, 0x7B, 0xFD, 0x8F, 0x77, 0x38, 0x3A, 0xE3, 0x35, 0x90, 0x17, 0x31, 0xF7, - 0x0E, 0xB4, 0xF9, 0xC6, 0x61, 0x03, 0x64, 0x8B, 0x60, 0xDB, 0x7D, 0xED, 0x0F, 0xC0, 0x78, 0x65, - 0x78, 0xDA, 0xD4, 0xF0, 0xC9, 0x5B, 0xD7, 0x0F, 0xB4, 0x73, 0x2D, 0xC4, 0x68, 0xBB, 0x33, 0xBA, - 0x9D, 0xA3, 0xC3, 0xF8, 0xE2, 0x2D, 0x19, 0xE3, 0x3F, 0x7A, 0x36, 0x34, 0x0D, 0xA1, 0x9E, 0x6B, - 0x7B, 0xA7, 0xC7, 0xBD, 0x3D, 0xB4, 0xDD, 0xB0, 0x8B, 0x39, 0x81, 0xE8, 0x0F, 0xED, 0x5A, 0x1B, - 0xCF, 0x3E, 0xD0, 0x66, 0xD3, 0xFD, 0x3F, 0x28, 0xF5, 0xF4, 0x32, 0x5E, 0xDB, 0xE7, 0xCC, 0x74, - 0x82, 0x25, 0x71, 0x5A, 0x11, 0x65, 0x1E, 0xF1, 0xD7, 0xAE, 0xE3, 0x13, 0x46, 0x1C, 0xFB, 0x59, - 0xF3, 0xE8, 0x7A, 0xC7, 0x0F, 0x8C, 0x60, 0xE3, 0x6B, 0x4F, 0xCF, 0xCF, 0xB5, 0x7E, 0xB7, 0x1B, - 0x6F, 0xA6, 0x41, 0x37, 0xE9, 0x76, 0x07, 0x5A, 0xEA, 0xC2, 0x0F, 0xE4, 0x26, 0xD8, 0xFF, 0x2A, - 0x84, 0xB9, 0xD3, 0x88, 0xED, 0x93, 0x04, 0x92, 0x10, 0x00, 0x5F, 0x27, 0xD7, 0xDA, 0x4F, 0x12, - 0xD8, 0x32, 0x8D, 0xC0, 0xD8, 0xFF, 0x23, 0xA1, 0x2F, 0xE8, 0x15, 0x28, 0x39, 0xD0, 0xE8, 0xAD, - 0xAF, 0x62, 0xB7, 0xEE, 0xF6, 0x3B, 0x20, 0x43, 0xE0, 0x37, 0x84, 0x26, 0x9E, 0x97, 0xA4, 0x98, - 0x42, 0xB7, 0x7B, 0x07, 0x1A, 0xDE, 0x49, 0xC2, 0xC6, 0x88, 0x7C, 0x22, 0xAE, 0x09, 0xA1, 0xE5, - 0xA3, 0x95, 0xA0, 0x64, 0xE8, 0xEE, 0x12, 0x2A, 0x82, 0x38, 0xF4, 0x3D, 0x59, 0x80, 0xC4, 0x16, - 0x07, 0x3C, 0x2C, 0x1D, 0xD0, 0x98, 0x74, 0xC0, 0xC2, 0x59, 0x4C, 0x6B, 0xE0, 0xD0, 0xBE, 0x6B, - 0x13, 0xB0, 0x89, 0x45, 0x6B, 0x8F, 0x7F, 0x0A, 0x14, 0xEC, 0x69, 0xAF, 0x7B, 0xB3, 0xF7, 0x1C, - 0xC0, 0x3B, 0x81, 0xFB, 0x21, 0xF0, 0x2C, 0x67, 0xD1, 0xEA, 0x8D, 0xF7, 0x23, 0x5C, 0xF4, 0x36, - 0x22, 0x4C, 0xDD, 0xA7, 0xD7, 0x69, 0x17, 0xE9, 0x1B, 0x2D, 0x7E, 0xFD, 0xF9, 0xDE, 0xFE, 0x1E, - 0x27, 0x9D, 0x9E, 0x83, 0xB1, 0xB5, 0xD8, 0xC1, 0x33, 0x4A, 0xE1, 0xBE, 0x76, 0x76, 0xC6, 0xBB, - 0x61, 0xAD, 0xF0, 0x22, 0x34, 0xA2, 0x7F, 0x52, 0xB7, 0x42, 0x43, 0xFC, 0xF5, 0xCB, 0x3F, 0x84, - 0xC5, 0xDE, 0x1D, 0x02, 0xD5, 0x2F, 0x30, 0x2E, 0x7F, 0xF9, 0x07, 0xFC, 0x7F, 0xF7, 0x8C, 0x86, - 0xE2, 0x2F, 0xFF, 0xC0, 0x3F, 0x77, 0xCF, 0xA0, 0x27, 0x38, 0xA6, 0xFD, 0xDD, 0xFD, 0x4A, 0xA5, - 0xB0, 0x2D, 0xBB, 0x45, 0xA6, 0xEC, 0x42, 0xA1, 0x95, 0xA6, 0x69, 0x91, 0x43, 0xD4, 0xAF, 0x91, - 0xF7, 0xB6, 0x66, 0xAE, 0x09, 0xCA, 0x09, 0xC0, 0x8E, 0x85, 0xCA, 0x6D, 0x50, 0x89, 0x10, 0x54, - 0x57, 0xA8, 0xDC, 0x9A, 0xD3, 0x96, 0x1A, 0x77, 0x94, 0xC8, 0x3C, 0x44, 0xCB, 0xB5, 0xE1, 0xF9, - 0xE4, 0x1B, 0x27, 0x68, 0x05, 0x09, 0x97, 0xC8, 0x90, 0xF8, 0x64, 0x92, 0x60, 0x01, 0x7F, 0x00, - 0x07, 0xED, 0xF6, 0xB8, 0xD2, 0x42, 0x53, 0x7B, 0x12, 0x5A, 0x61, 0x44, 0x29, 0xBB, 0x99, 0x61, - 0x85, 0x3F, 0xCF, 0xEC, 0xCF, 0xAD, 0x1B, 0xF8, 0x2F, 0x1D, 0x28, 0xB6, 0x44, 0x84, 0x8D, 0x5E, - 0xE0, 0x7F, 0x20, 0x17, 0xFC, 0x93, 0xA9, 0x1F, 0xC0, 0xFA, 0xDE, 0xB6, 0x5B, 0xEC, 0xB3, 0x5F, - 0xA0, 0x9A, 0x0D, 0x04, 0x21, 0xFF, 0x16, 0xC3, 0x81, 0xEB, 0x06, 0x9F, 0x0E, 0xB4, 0xB5, 0x07, - 0x84, 0xD1, 0x2F, 0x7D, 0xC0, 0x31, 0x20, 0x22, 0x0E, 0xFB, 0x5B, 0x48, 0xC1, 0xDA, 0xB6, 0x5F, - 0x30, 0xAC, 0x40, 0x02, 0x3B, 0x00, 0x4D, 0x6D, 0xD0, 0x62, 0xE0, 0xFF, 0xBB, 0x67, 0xD0, 0x09, - 0x1C, 0xC2, 0xFF, 0x77, 0xCF, 0xB0, 0x2B, 0xD4, 0x25, 0xF6, 0x78, 0xF7, 0x0C, 0x7A, 0x84, 0x13, - 0xF8, 0x1F, 0xDA, 0x60, 0xBF, 0xD8, 0x0A, 0xFF, 0xC2, 0x1D, 0xDA, 0x3F, 0xDE, 0xA4, 0x07, 0xEC, - 0x02, 0x3F, 0xCD, 0x63, 0x90, 0xBD, 0xE9, 0xBE, 0x45, 0xDF, 0x3C, 0xFE, 0xE9, 0x06, 0xD8, 0xA1, - 0x07, 0xB7, 0xE0, 0xF8, 0x8E, 0x89, 0xE7, 0xF8, 0xE7, 0x56, 0x98, 0x27, 0x5E, 0xE0, 0x47, 0x70, - 0x8D, 0xBE, 0x9D, 0x15, 0x2F, 0xB1, 0x03, 0x6C, 0x45, 0xDF, 0xA5, 0x49, 0x5B, 0xB1, 0x23, 0xB8, - 0xC6, 0xDF, 0xC0, 0x78, 0xA0, 0xF1, 0x77, 0xFC, 0x15, 0x0A, 0x27, 0x7A, 0x07, 0xDF, 0x0B, 0xFF, - 0x06, 0x19, 0x64, 0xA4, 0xA1, 0x54, 0xC2, 0xB3, 0xDB, 0xBB, 0x67, 0x04, 0xEF, 0x51, 0x22, 0xE1, - 0xF8, 0x96, 0x1F, 0xC3, 0x75, 0xA0, 0x0F, 0xEF, 0x08, 0x82, 0xE9, 0x85, 0xDB, 0xE8, 0x02, 0xB4, - 0x08, 0xF0, 0x3E, 0x27, 0x1E, 0xCE, 0x6E, 0xC3, 0x33, 0x84, 0xA6, 0xB0, 0x9C, 0x0D, 0x38, 0xBD, - 0x8D, 0x4E, 0xE1, 0x2E, 0xF2, 0x82, 0x0A, 0xE0, 0x3C, 0xDD, 0x3D, 0xE3, 0x3C, 0xA1, 0x16, 0xD9, - 0x51, 0x5A, 0xD4, 0x18, 0xF4, 0x02, 0x1E, 0x24, 0x5F, 0xB1, 0x1C, 0x24, 0x36, 0x3C, 0x42, 0x00, - 0xB8, 0xB4, 0x09, 0x1E, 0xBE, 0xBA, 0xFD, 0xC6, 0x6C, 0xED, 0xF1, 0x4F, 0xB7, 0xEE, 0x61, 0x88, - 0x8E, 0xC3, 0x74, 0x5C, 0x67, 0x66, 0x5B, 0x33, 0x8C, 0x04, 0xAD, 0x7D, 0xED, 0x7C, 0xC2, 0xC3, - 0x34, 0x7A, 0x2C, 0x34, 0x8F, 0x7B, 0x61, 0x26, 0x6A, 0x8F, 0x7F, 0x7C, 0x74, 0x6F, 0xBF, 0x43, - 0x1D, 0x8D, 0x3B, 0x13, 0xA2, 0xE0, 0x31, 0x46, 0x0D, 0x07, 0x36, 0x96, 0xE0, 0xD8, 0x0A, 0x07, - 0xB9, 0x48, 0x68, 0xEB, 0x18, 0x16, 0x8A, 0x26, 0x3E, 0x92, 0x74, 0x53, 0x83, 0x48, 0x4E, 0xD8, - 0x12, 0x11, 0xEA, 0x69, 0x3A, 0x42, 0x81, 0xAA, 0xBC, 0xA0, 0xB5, 0x77, 0xE9, 0x79, 0xAE, 0xF7, - 0xAF, 0xBD, 0xE7, 0xD8, 0xE8, 0xF9, 0xDE, 0xBF, 0x4F, 0xB5, 0xBD, 0xE7, 0xF1, 0x50, 0x75, 0x97, - 0x8E, 0x29, 0x4C, 0x63, 0x0B, 0x45, 0x8D, 0x2D, 0x62, 0x1A, 0x5B, 0xDC, 0xAF, 0xC6, 0xE2, 0x9F, - 0x8C, 0xAD, 0xA3, 0xB5, 0xF8, 0x27, 0x5A, 0x73, 0x34, 0x57, 0x08, 0xCF, 0x95, 0xC6, 0xB5, 0xB5, - 0x90, 0x69, 0xAB, 0x8A, 0x9A, 0xD8, 0x18, 0x0E, 0xDE, 0x43, 0xBC, 0xB7, 0x3F, 0xBC, 0xFB, 0x16, - 0xC7, 0x02, 0xB9, 0xCA, 0x42, 0x8D, 0xA5, 0xB3, 0x2D, 0x09, 0x06, 0x4C, 0x0E, 0x12, 0x23, 0x53, - 0x22, 0x49, 0x78, 0xBE, 0xA7, 0xB5, 0x28, 0x4A, 0x4C, 0x11, 0x0A, 0x0C, 0x81, 0x8F, 0x2C, 0x6A, - 0xBE, 0x8B, 0xA3, 0x89, 0x70, 0xDE, 0x08, 0x2A, 0xC7, 0x16, 0x10, 0x40, 0x49, 0x89, 0x0C, 0xF3, - 0x96, 0xC3, 0xC4, 0x06, 0xBD, 0xC6, 0x5D, 0x84, 0xFA, 0xAB, 0xAF, 0x1A, 0xD4, 0x44, 0x4C, 0x8F, - 0x62, 0x9B, 0x5F, 0x28, 0x1D, 0x1E, 0xF9, 0x95, 0x04, 0xC4, 0x3F, 0x05, 0x22, 0x31, 0x70, 0x3E, - 0x62, 0x94, 0xC0, 0x72, 0x2B, 0xC1, 0x42, 0x47, 0x1A, 0x25, 0x1C, 0xF4, 0xF3, 0x11, 0x19, 0x18, - 0xD4, 0xA8, 0xA0, 0xDF, 0x6B, 0x90, 0x60, 0x10, 0x63, 0x9A, 0x12, 0x12, 0xF1, 0xAD, 0x81, 0x6C, - 0x3C, 0x6A, 0xC4, 0x88, 0x37, 0xFC, 0x4B, 0xF0, 0xF0, 0x31, 0x54, 0x09, 0x0D, 0x7F, 0x3B, 0x7D, - 0x26, 0x16, 0x35, 0x62, 0xF8, 0x0B, 0xE1, 0x65, 0x3C, 0xF1, 0x31, 0x5B, 0x8D, 0x27, 0xFE, 0x1E, - 0xF3, 0x6C, 0x3C, 0x8A, 0xB2, 0xE1, 0xEF, 0x0E, 0x97, 0x59, 0x1D, 0x4B, 0x11, 0x72, 0x1D, 0x83, - 0x35, 0x01, 0x60, 0x5E, 0x96, 0x7E, 0xD1, 0x3B, 0xED, 0x46, 0x18, 0x78, 0x46, 0x91, 0x87, 0x81, - 0x37, 0x49, 0x63, 0x10, 0xD1, 0xE1, 0x01, 0x72, 0xBB, 0x87, 0x88, 0x42, 0x90, 0xA3, 0xAB, 0x45, - 0x21, 0x48, 0xBB, 0x45, 0xF8, 0x09, 0x61, 0x32, 0xC2, 0x0F, 0x2D, 0x68, 0xB0, 0x2F, 0x18, 0xE7, - 0xC9, 0x3F, 0xFC, 0x20, 0xB0, 0x4C, 0x89, 0x88, 0x03, 0xD2, 0x79, 0x25, 0x4B, 0xE2, 0xDF, 0xBE, - 0x4D, 0x19, 0x12, 0x2D, 0x96, 0xDC, 0xFA, 0x6A, 0xA1, 0xEB, 0xD6, 0xCF, 0xC0, 0x40, 0xE7, 0x0E, - 0x6A, 0xB9, 0x19, 0xFF, 0x58, 0xAC, 0x04, 0x09, 0xCC, 0x39, 0x94, 0x50, 0xF0, 0x2F, 0x66, 0xCA, - 0x18, 0xA1, 0x1F, 0x54, 0x54, 0x62, 0x45, 0x7C, 0x3C, 0x51, 0x46, 0x07, 0x9D, 0xDE, 0xE4, 0x29, - 0x85, 0x7F, 0xA2, 0x2E, 0x4B, 0x23, 0x6B, 0xD5, 0x21, 0x57, 0x7C, 0x8E, 0x4D, 0x32, 0xEC, 0x56, - 0x9C, 0x15, 0x3E, 0xCC, 0x10, 0xBD, 0xF8, 0x28, 0xE6, 0xE2, 0xC4, 0x96, 0xA6, 0xA2, 0xC4, 0xEE, - 0x18, 0x01, 0x24, 0x47, 0xD3, 0x4D, 0x40, 0xFC, 0x0E, 0xD6, 0x0F, 0x42, 0xE1, 0x6C, 0xDD, 0xEA, - 0x38, 0x40, 0x00, 0x45, 0xB8, 0x1F, 0x8F, 0x55, 0x2C, 0x70, 0x6C, 0xE1, 0x62, 0x97, 0xB3, 0xD0, - 0xB1, 0xBB, 0x19, 0x18, 0x79, 0x7A, 0x9B, 0x84, 0xC0, 0x8B, 0x59, 0xD8, 0x68, 0x8D, 0x28, 0x86, - 0xAB, 0x3F, 0x1A, 0x6D, 0x27, 0xB9, 0xBC, 0x03, 0xB6, 0xAC, 0x84, 0x02, 0xE9, 0x60, 0x89, 0x3E, - 0x2A, 0x7B, 0xCD, 0x60, 0x16, 0xAA, 0xED, 0x89, 0x35, 0xA5, 0xBD, 0xD3, 0xAD, 0x7A, 0x06, 0x40, - 0x70, 0xAB, 0xD2, 0x5E, 0x30, 0x1A, 0x4F, 0xA3, 0x62, 0x89, 0xA6, 0x4D, 0x3D, 0x62, 0x7C, 0xFE, - 0x2A, 0x81, 0x8C, 0x56, 0xFF, 0x43, 0x4C, 0xEC, 0x1A, 0x16, 0x05, 0x53, 0x97, 0xD8, 0x13, 0x37, - 0x6D, 0xD7, 0x21, 0xF2, 0x5E, 0x13, 0xD5, 0x11, 0xDE, 0x11, 0x3F, 0x33, 0xC9, 0xDC, 0xD8, 0xD8, - 0x41, 0x04, 0xE6, 0x91, 0x60, 0xE3, 0x39, 0xBC, 0x5A, 0xB2, 0x3D, 0xB9, 0x92, 0x96, 0xE9, 0x1A, - 0xB4, 0xCD, 0xC3, 0x43, 0xED, 0x65, 0x10, 0x18, 0xA0, 0x00, 0x5C, 0x66, 0x5D, 0xA2, 0x7C, 0x34, - 0x83, 0x17, 0x7C, 0x5D, 0x0F, 0x8D, 0x12, 0xEB, 0xCF, 0x1E, 0x70, 0x4D, 0xBD, 0xD1, 0x07, 0x10, - 0xE1, 0xA4, 0x14, 0x55, 0xE7, 0x3F, 0x1B, 0xE2, 0xDD, 0x7E, 0xA0, 0x02, 0x73, 0xBD, 0x97, 0xE0, - 0x8B, 0x7B, 0x9D, 0x68, 0xA9, 0x64, 0x8F, 0xD5, 0x37, 0x3B, 0x80, 0xEA, 0x12, 0xFA, 0x00, 0x1D, - 0x47, 0x36, 0xCF, 0xB8, 0x09, 0xF5, 0xAE, 0x9D, 0x9F, 0x9F, 0x73, 0x65, 0xA4, 0x0B, 0xAA, 0xD0, - 0xC2, 0x75, 0x3E, 0x93, 0xDB, 0xCD, 0x1A, 0xC4, 0x1F, 0x95, 0x48, 0x53, 0x45, 0x5B, 0x2E, 0x1D, - 0xD2, 0x81, 0x96, 0x17, 0xBC, 0x4C, 0xD6, 0x1B, 0x48, 0x1A, 0x45, 0x2A, 0xA0, 0xD6, 0x89, 0x9E, - 0xF8, 0xD5, 0x56, 0xA3, 0xBB, 0x27, 0xF2, 0x33, 0x49, 0x79, 0x99, 0x13, 0xC8, 0x85, 0x27, 0x86, - 0xAE, 0x54, 0x0F, 0x4F, 0x92, 0xA8, 0xEE, 0xF6, 0x9F, 0x44, 0x91, 0x61, 0xB3, 0x36, 0x8D, 0x80, - 0x24, 0x83, 0x43, 0x68, 0x0B, 0xE2, 0xE6, 0xCA, 0x0D, 0x48, 0x2A, 0x62, 0x58, 0x8E, 0x15, 0x58, - 0x86, 0xFD, 0x31, 0xB2, 0xC6, 0x9D, 0xBA, 0xBF, 0xC4, 0xC7, 0x4B, 0xF8, 0xFF, 0x56, 0x85, 0x57, - 0xAD, 0x2A, 0xB9, 0x65, 0x21, 0x61, 0x3C, 0x88, 0xAC, 0x24, 0x2E, 0x87, 0x44, 0x58, 0xE0, 0xF7, - 0x45, 0x4F, 0x4F, 0x9F, 0xD2, 0xA3, 0x27, 0xA1, 0xD2, 0x44, 0xF4, 0x38, 0xD7, 0xA2, 0x1B, 0x29, - 0x05, 0x6F, 0xE3, 0x4E, 0xE1, 0x10, 0xC8, 0x63, 0x18, 0x98, 0x6F, 0x85, 0xEA, 0x5D, 0xC3, 0x54, - 0x17, 0x6D, 0xE1, 0xFF, 0xA3, 0xFE, 0x23, 0x8A, 0xFA, 0xBB, 0x0B, 0xF1, 0x39, 0xB6, 0x9D, 0xF2, - 0x00, 0x06, 0x27, 0x5F, 0x74, 0x79, 0xBE, 0x77, 0xA0, 0xC9, 0x57, 0x55, 0x52, 0x69, 0xC5, 0xD2, - 0x32, 0x19, 0xC9, 0x91, 0x5D, 0xA1, 0x84, 0x70, 0x61, 0x14, 0x97, 0x0E, 0x71, 0x1D, 0xB1, 0xB5, - 0xC7, 0x56, 0x6D, 0x69, 0x34, 0xBE, 0x8B, 0x12, 0x92, 0xA5, 0x7B, 0x9D, 0x07, 0xE9, 0x41, 0xCC, - 0xB9, 0x22, 0x29, 0xE0, 0x10, 0xDA, 0xB4, 0x7C, 0x63, 0x6A, 0x17, 0x77, 0xCD, 0xDB, 0x99, 0x7C, - 0x28, 0x80, 0x06, 0xE2, 0x0A, 0x80, 0x06, 0x1E, 0xF5, 0x99, 0x18, 0x5A, 0xE2, 0x14, 0x61, 0x15, - 0x64, 0xE5, 0x22, 0x9E, 0x1B, 0xE0, 0xC4, 0x49, 0xCC, 0x2C, 0x90, 0x96, 0x08, 0xB1, 0xF1, 0xCB, - 0x00, 0x91, 0x3C, 0x3D, 0xD7, 0x9C, 0x8D, 0x6D, 0x83, 0x05, 0x22, 0x0B, 0x60, 0x81, 0xF1, 0xBB, - 0xD2, 0x00, 0xFD, 0xE7, 0x8D, 0x66, 0x21, 0xE5, 0x09, 0x09, 0x3C, 0x7B, 0x96, 0xC4, 0x86, 0xCB, - 0xB7, 0x2C, 0x35, 0x0F, 0x7B, 0x63, 0xED, 0xD9, 0xDB, 0x74, 0xA3, 0x51, 0x96, 0x93, 0x04, 0x43, - 0xF5, 0xD3, 0x84, 0xE0, 0x63, 0x19, 0x0E, 0x10, 0x62, 0x99, 0x54, 0x40, 0xB8, 0x49, 0x43, 0xDF, - 0x5A, 0xE9, 0x7A, 0x41, 0xAD, 0xBE, 0x45, 0xF8, 0x1E, 0x9D, 0x7D, 0x90, 0x3F, 0x1A, 0x73, 0x74, - 0x41, 0x64, 0x3B, 0x61, 0x57, 0x71, 0x8C, 0x8B, 0x04, 0x46, 0x64, 0x2C, 0x45, 0x37, 0xFE, 0x68, - 0x07, 0xD0, 0x14, 0x77, 0xC8, 0xC4, 0x06, 0xEF, 0xED, 0xD1, 0x9F, 0x76, 0xBC, 0xDD, 0x30, 0x97, - 0x82, 0xEB, 0xE9, 0xA7, 0x05, 0x34, 0x97, 0x31, 0x46, 0xD1, 0x5D, 0x4F, 0x91, 0x25, 0x4A, 0x02, - 0x1C, 0xE6, 0xA1, 0x9A, 0x1B, 0x33, 0xF2, 0xC9, 0x23, 0x33, 0x77, 0xE1, 0x58, 0xBF, 0x13, 0x19, - 0x42, 0xE6, 0x50, 0x2D, 0xE2, 0x78, 0xAE, 0x98, 0x66, 0x23, 0x72, 0xEE, 0x2B, 0xC9, 0xEB, 0x99, - 0x3D, 0x69, 0x3A, 0xB8, 0xD5, 0x27, 0x0B, 0x37, 0x1F, 0xF8, 0x56, 0x70, 0xBB, 0xDD, 0xCF, 0x44, - 0x6B, 0xF7, 0x04, 0xF5, 0xD0, 0xF4, 0x0D, 0x6E, 0xD0, 0x09, 0x79, 0x08, 0x2F, 0x24, 0x93, 0x50, - 0xE1, 0x9E, 0xE1, 0x0A, 0x58, 0xDC, 0x5E, 0xD8, 0x50, 0x19, 0x8D, 0x93, 0x91, 0x41, 0xDE, 0xD3, - 0xC8, 0xD1, 0xC3, 0x61, 0x43, 0x1A, 0xDF, 0x6B, 0x0E, 0x1A, 0x39, 0x38, 0xD9, 0xC6, 0x97, 0x34, - 0xD2, 0xCD, 0x74, 0x65, 0x05, 0x12, 0x84, 0x7B, 0xBD, 0xBD, 0x32, 0xE3, 0x4F, 0xDC, 0x5B, 0x59, - 0xC4, 0xA3, 0xA9, 0x39, 0x20, 0x4A, 0xAC, 0xE8, 0xCD, 0xD8, 0x06, 0xCF, 0x17, 0x30, 0xFD, 0xC6, - 0x75, 0x3A, 0x54, 0x70, 0x6A, 0x81, 0x9C, 0xA1, 0x60, 0xFB, 0x3A, 0x28, 0x8A, 0xE4, 0xCE, 0x0E, - 0xB1, 0x9B, 0x22, 0x99, 0xC9, 0xC7, 0x37, 0x14, 0xFC, 0xEA, 0x11, 0x80, 0xF3, 0xB1, 0x9A, 0xA8, - 0x7D, 0xF9, 0x07, 0x45, 0x71, 0xA7, 0xCD, 0x21, 0x5A, 0xF8, 0x4B, 0x62, 0xD2, 0xCA, 0x57, 0xB0, - 0xF1, 0x4F, 0x35, 0x5C, 0x14, 0x4F, 0xEC, 0xE4, 0xB8, 0xFB, 0x35, 0xB4, 0x90, 0x70, 0xB0, 0x29, - 0x9C, 0x6C, 0xD0, 0x0D, 0x3F, 0xF9, 0xF3, 0x0C, 0x96, 0x9E, 0x4B, 0x0A, 0x4B, 0xF8, 0x63, 0x91, - 0xC4, 0xEE, 0x40, 0x4E, 0x03, 0xDD, 0x7C, 0x07, 0xD9, 0x4B, 0xCA, 0x4C, 0xF7, 0xF9, 0x34, 0x09, - 0x34, 0x60, 0x8A, 0x90, 0xC7, 0x74, 0x84, 0x93, 0x21, 0x26, 0xA6, 0x84, 0x84, 0x19, 0x33, 0x9C, - 0x97, 0xE2, 0xDD, 0x30, 0x3C, 0x0B, 0x08, 0x65, 0xF1, 0x9B, 0x0F, 0x93, 0x9B, 0xFD, 0x27, 0xA1, - 0x18, 0xB6, 0x71, 0x60, 0x07, 0x31, 0x04, 0x09, 0x11, 0x65, 0x89, 0x89, 0x1B, 0x4D, 0x72, 0x5E, - 0x96, 0x23, 0x33, 0xF6, 0x8B, 0x8D, 0x99, 0x74, 0xC0, 0xA4, 0x3D, 0xFF, 0x8B, 0x1A, 0xCD, 0xBF, - 0x0F, 0xD8, 0x20, 0x1B, 0x8B, 0x79, 0xFB, 0x65, 0x08, 0xDA, 0x9A, 0x24, 0x16, 0x12, 0x73, 0x6F, - 0xE9, 0xB2, 0xF8, 0x41, 0x80, 0xA3, 0xF8, 0x20, 0x29, 0xDD, 0x9A, 0x26, 0xC6, 0x73, 0xBA, 0x90, - 0x41, 0x89, 0x6C, 0x62, 0x73, 0x3C, 0x21, 0x1E, 0x69, 0x3E, 0x97, 0x29, 0x2E, 0x66, 0x5F, 0xCC, - 0x61, 0xAF, 0x2C, 0x72, 0x9D, 0x5B, 0x37, 0xA5, 0x7B, 0xB5, 0xA8, 0xBC, 0x22, 0x80, 0x8B, 0x70, - 0x6F, 0x5E, 0x21, 0x64, 0xB4, 0x8F, 0x2F, 0x86, 0x83, 0x6E, 0xD2, 0x53, 0x5B, 0x5C, 0xA5, 0x4D, - 0x13, 0xA0, 0x88, 0xB5, 0x18, 0x56, 0xEC, 0xDB, 0x4E, 0x93, 0x1F, 0x1F, 0x7C, 0xF2, 0xE0, 0xE9, - 0x28, 0xC7, 0x1A, 0xC7, 0xA0, 0xA9, 0xE7, 0x17, 0x03, 0xC7, 0x77, 0x04, 0xC6, 0x69, 0x37, 0xAE, - 0x14, 0x80, 0xA3, 0x6D, 0x8C, 0x31, 0x50, 0x31, 0x9E, 0xE5, 0x01, 0x42, 0x1B, 0xB6, 0x4D, 0x75, - 0x2F, 0xA6, 0x5F, 0x3F, 0x70, 0xD7, 0x1F, 0x28, 0x21, 0xA9, 0x40, 0x74, 0x4D, 0x17, 0x07, 0x3A, - 0x78, 0xBF, 0xC5, 0xD3, 0xA4, 0xB8, 0x6C, 0x93, 0xEB, 0xA9, 0x1F, 0x70, 0xE5, 0x40, 0x63, 0x78, - 0xF6, 0x92, 0x39, 0x2E, 0x5D, 0x54, 0x90, 0xF6, 0x80, 0x96, 0xD2, 0xF1, 0xBD, 0x19, 0x1B, 0x0E, - 0xC2, 0x4D, 0x7F, 0x18, 0xAD, 0xF0, 0xF0, 0x57, 0xD6, 0x27, 0x0E, 0xDF, 0x09, 0x9B, 0xDA, 0x2F, - 0xA4, 0xC5, 0x5D, 0xA7, 0x49, 0x89, 0x4A, 0x4A, 0xCC, 0xBF, 0x7D, 0x1C, 0x07, 0xD8, 0xD0, 0x87, - 0x11, 0x33, 0x66, 0x6F, 0x19, 0x61, 0x39, 0x12, 0x13, 0x8F, 0x83, 0x49, 0xE2, 0x63, 0x63, 0x19, - 0xDB, 0x31, 0xFA, 0xE2, 0xD3, 0x6C, 0x0A, 0xC3, 0xD7, 0x6B, 0x70, 0x3E, 0xF0, 0xF6, 0xEB, 0xD6, - 0xFE, 0x5D, 0x1E, 0x3B, 0x4C, 0x5C, 0x91, 0xED, 0xA8, 0x12, 0x41, 0x07, 0x0A, 0x39, 0xB6, 0x84, - 0x7C, 0xE4, 0xE8, 0xE2, 0x0E, 0x73, 0xE9, 0x88, 0x69, 0x4A, 0x96, 0x60, 0xCF, 0xB7, 0x45, 0xCB, - 0x32, 0xD5, 0x04, 0x82, 0x68, 0x08, 0xD8, 0x22, 0x36, 0x95, 0xA8, 0xC6, 0xEC, 0x42, 0x34, 0x10, - 0xB4, 0xC7, 0x7D, 0x30, 0x83, 0xF6, 0x64, 0x1E, 0x9F, 0x4A, 0x18, 0x99, 0x00, 0x42, 0x67, 0xCA, - 0x59, 0xC2, 0x99, 0x19, 0xCE, 0x95, 0x91, 0x58, 0xC2, 0x99, 0x01, 0x41, 0x01, 0xE1, 0x7E, 0xD3, - 0xD2, 0x59, 0x03, 0x9D, 0x3B, 0x00, 0x3B, 0xEB, 0xD0, 0x87, 0x61, 0x70, 0x46, 0x82, 0x36, 0x40, - 0x4F, 0x12, 0xB7, 0x97, 0x84, 0xBE, 0x80, 0x90, 0xDF, 0x67, 0x67, 0xAC, 0x41, 0xD8, 0xCB, 0xD4, - 0x35, 0x6F, 0x3B, 0xC6, 0x7A, 0x4D, 0x1C, 0xF3, 0x62, 0x69, 0xD9, 0x66, 0x8B, 0x81, 0xC6, 0xD6, - 0x31, 0x30, 0x2C, 0x12, 0xBA, 0xF5, 0x8D, 0x63, 0x05, 0x6F, 0xBE, 0x60, 0xD7, 0x5A, 0x7B, 0x7D, - 0x53, 0xEC, 0x5C, 0xE4, 0xCD, 0x3A, 0xA6, 0x67, 0x5C, 0x7F, 0x83, 0xFB, 0xA2, 0xA9, 0x39, 0x1C, - 0x74, 0x0F, 0xBA, 0xBC, 0x41, 0x00, 0xE9, 0x96, 0x10, 0x39, 0xE2, 0xC5, 0xFD, 0xA3, 0x3F, 0x7E, - 0xFF, 0x6D, 0x84, 0x37, 0x70, 0x5F, 0xB3, 0x4B, 0xAD, 0x3D, 0xBA, 0xB1, 0xFA, 0xF0, 0xB7, 0x35, - 0xEE, 0x57, 0x11, 0xC3, 0x4C, 0x4C, 0x8C, 0xB8, 0x67, 0x1A, 0x45, 0xC5, 0x9A, 0x7F, 0x15, 0x47, - 0x0A, 0x97, 0x1D, 0x18, 0x27, 0xD0, 0xDC, 0x5B, 0x32, 0x50, 0xB1, 0xA3, 0x1A, 0xC1, 0x91, 0x93, - 0xAF, 0x61, 0xA2, 0xFA, 0x0B, 0x31, 0x3C, 0xD0, 0xC7, 0x73, 0xAD, 0xA5, 0x77, 0xF5, 0xE7, 0x2D, - 0x7A, 0xFD, 0x1D, 0xB0, 0xB3, 0x6C, 0xED, 0x3F, 0xEF, 0xED, 0xEF, 0x77, 0x7C, 0xD0, 0x19, 0x69, - 0xB5, 0xFB, 0xA2, 0x09, 0xFC, 0xA1, 0x6D, 0x58, 0x27, 0xD9, 0xF7, 0xDF, 0xBA, 0x1B, 0xCF, 0xCF, - 0x6B, 0xF0, 0xCE, 0x72, 0x70, 0x24, 0xCE, 0x6B, 0xF2, 0x01, 0xA6, 0x2F, 0x8E, 0xB9, 0xD5, 0x44, - 0xA7, 0x1B, 0xC1, 0xC5, 0x9C, 0x91, 0xEE, 0x8F, 0x85, 0xA4, 0x3F, 0x96, 0xEE, 0xF3, 0x8C, 0x93, - 0x60, 0xC5, 0xBB, 0x25, 0x96, 0xA5, 0xEE, 0xE2, 0xC6, 0x11, 0xE5, 0x74, 0xBC, 0x6A, 0xB0, 0xA5, - 0xFF, 0x54, 0xC0, 0xE2, 0x59, 0xD2, 0x56, 0x2D, 0x5C, 0x25, 0x11, 0x95, 0x66, 0x58, 0xB9, 0x19, - 0x69, 0xB2, 0x60, 0x9C, 0x9E, 0x2D, 0x27, 0xB3, 0xCF, 0x8B, 0x0D, 0xF8, 0xF8, 0x4A, 0x44, 0x54, - 0x76, 0x0D, 0xA7, 0x9C, 0x61, 0xE8, 0x87, 0x29, 0x68, 0xDE, 0x78, 0x04, 0xB7, 0x63, 0x23, 0x18, - 0x9F, 0xAF, 0x16, 0x00, 0xD0, 0x49, 0x6A, 0x38, 0x8A, 0x69, 0x08, 0xB5, 0x4D, 0xB6, 0x24, 0x44, - 0x40, 0xBB, 0xFD, 0x30, 0x62, 0x21, 0x10, 0x9F, 0x75, 0x45, 0xBA, 0xDB, 0x9E, 0x5D, 0xA7, 0x03, - 0xD6, 0xD6, 0xAC, 0xFA, 0x2E, 0xA6, 0x2D, 0xF1, 0x70, 0x4E, 0xC4, 0x0F, 0xC9, 0x67, 0x9E, 0xC4, - 0x99, 0x17, 0x55, 0x82, 0x02, 0x88, 0x4F, 0x34, 0xC7, 0x8F, 0xB3, 0x4F, 0x14, 0xD9, 0x27, 0x9C, - 0x7D, 0x04, 0x88, 0x26, 0x9C, 0xC5, 0x25, 0x8B, 0xD0, 0x18, 0x7F, 0x7A, 0x15, 0x71, 0x76, 0x3D, - 0xCD, 0xA5, 0x93, 0x97, 0x12, 0x62, 0xEC, 0xE5, 0x03, 0x40, 0xFB, 0x15, 0xF8, 0x43, 0x9C, 0xAD, - 0xEB, 0xA9, 0x1A, 0x5B, 0xA2, 0x14, 0x81, 0x00, 0x11, 0x5B, 0xF2, 0x82, 0x85, 0x60, 0xE5, 0x35, - 0x09, 0xF8, 0x23, 0x7C, 0x86, 0x63, 0x6A, 0x73, 0xCF, 0x58, 0x11, 0xFC, 0x62, 0x7B, 0x48, 0xAC, - 0x49, 0xEF, 0x17, 0xE6, 0x7E, 0xAC, 0x59, 0x8C, 0xC9, 0xB0, 0xE4, 0x51, 0x08, 0x1A, 0xB6, 0x8C, - 0x41, 0x87, 0x74, 0xE4, 0x42, 0x8B, 0x46, 0x2C, 0x83, 0x0B, 0x4F, 0x95, 0x84, 0x15, 0xB6, 0x8E, - 0x1C, 0x21, 0x42, 0x20, 0x4A, 0x26, 0xA3, 0x74, 0xA9, 0x8C, 0xCD, 0x24, 0x18, 0xB3, 0xA9, 0xF9, - 0x42, 0xBC, 0x41, 0xC8, 0x52, 0xA2, 0x4D, 0xE8, 0x20, 0x0C, 0x3E, 0x8B, 0xCC, 0x42, 0x52, 0xD8, - 0x42, 0xA2, 0xFE, 0xDE, 0x26, 0x58, 0x9E, 0xE0, 0x2F, 0x65, 0xBC, 0xF8, 0xE6, 0x6B, 0xCD, 0xF5, - 0x34, 0xDB, 0xBD, 0x26, 0xB8, 0x28, 0x28, 0x36, 0x90, 0x69, 0x53, 0x02, 0x01, 0x8E, 0xB0, 0x22, - 0x13, 0xEE, 0x8F, 0x09, 0x96, 0x96, 0x0F, 0x73, 0x62, 0x7C, 0x75, 0x28, 0x79, 0xAA, 0x87, 0xA3, - 0x53, 0x21, 0x7B, 0xDB, 0x25, 0xF4, 0x84, 0x38, 0x19, 0x4C, 0x24, 0xCB, 0xA7, 0x9C, 0xC7, 0xAD, - 0xC0, 0x92, 0x57, 0xD6, 0x2A, 0x21, 0xC2, 0xF0, 0xF6, 0xA3, 0x95, 0xA2, 0x9C, 0x81, 0x42, 0x41, - 0x86, 0x60, 0x91, 0x2C, 0x23, 0x5E, 0xB7, 0xA4, 0x29, 0xAB, 0x1D, 0xE6, 0x68, 0x14, 0x4B, 0xE1, - 0xD2, 0x68, 0x9E, 0xAD, 0x15, 0x26, 0x71, 0x36, 0xCA, 0xB1, 0xDF, 0xD9, 0xA1, 0x78, 0x14, 0x8A, - 0x9D, 0x61, 0xF6, 0x36, 0x79, 0x72, 0x76, 0xB8, 0x0C, 0x56, 0xF6, 0xE4, 0xC9, 0xFF, 0x02, 0x49, - 0x60, 0xC8, 0xA8, 0x55, 0x0C, 0x01, 0x00 -}; - - -//File: index_ov5640.html.gz, Size: 9124 -#define index_ov5640_html_gz_len 9124 -const uint8_t index_ov5640_html_gz[] = { - 0x1F, 0x8B, 0x08, 0x08, 0xD9, 0x6C, 0x6A, 0x5E, 0x00, 0x03, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x5F, - 0x6F, 0x76, 0x35, 0x36, 0x34, 0x30, 0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x00, 0xED, 0x3D, 0x6B, 0x77, - 0xDB, 0xB6, 0x92, 0xDF, 0xF3, 0x2B, 0x18, 0xF5, 0x6E, 0x24, 0x9F, 0x58, 0xB6, 0xA8, 0x97, 0x1F, - 0xB1, 0x95, 0x4D, 0x1C, 0x27, 0xE9, 0xB9, 0x4D, 0x6F, 0x1A, 0xA7, 0x69, 0x7B, 0xBA, 0x3D, 0x29, - 0x25, 0x41, 0x12, 0x1B, 0x8A, 0xD4, 0x25, 0x29, 0xCB, 0x6E, 0x8E, 0x7F, 0xC7, 0xFE, 0xA0, 0xFD, - 0x63, 0x3B, 0x03, 0x80, 0x24, 0x48, 0x81, 0x24, 0x48, 0x4A, 0xB2, 0xDB, 0x5D, 0xE5, 0x9C, 0x98, - 0x0F, 0xCC, 0x60, 0xDE, 0x18, 0x0C, 0x40, 0xF2, 0xEC, 0xF1, 0xD8, 0x19, 0xF9, 0xB7, 0x0B, 0xA2, - 0xCD, 0xFC, 0xB9, 0x35, 0x78, 0x74, 0xC6, 0xFE, 0x68, 0xF0, 0x3B, 0x9B, 0x11, 0x63, 0xCC, 0x0E, - 0xE9, 0xE9, 0x9C, 0xF8, 0x86, 0x36, 0x9A, 0x19, 0xAE, 0x47, 0xFC, 0xF3, 0xDA, 0xD2, 0x9F, 0x34, - 0x8F, 0x6B, 0xC9, 0xDB, 0xB6, 0x31, 0x27, 0xE7, 0xB5, 0x6B, 0x93, 0xAC, 0x16, 0x8E, 0xEB, 0xD7, - 0xB4, 0x91, 0x63, 0xFB, 0xC4, 0x86, 0xE6, 0x2B, 0x73, 0xEC, 0xCF, 0xCE, 0xC7, 0xE4, 0xDA, 0x1C, - 0x91, 0x26, 0x3D, 0xD9, 0x37, 0x6D, 0xD3, 0x37, 0x0D, 0xAB, 0xE9, 0x8D, 0x0C, 0x8B, 0x9C, 0xEB, - 0x22, 0x2E, 0xDF, 0xF4, 0x2D, 0x32, 0xB8, 0xBC, 0x7A, 0xDF, 0x69, 0x6B, 0xFF, 0xFA, 0xD4, 0xEB, - 0x77, 0x5B, 0x67, 0x87, 0xEC, 0x5A, 0xD4, 0xC6, 0xF3, 0x6F, 0xC5, 0x73, 0xFC, 0x0D, 0x9D, 0xF1, - 0xAD, 0xF6, 0x35, 0x76, 0x09, 0x7F, 0x13, 0x20, 0xA2, 0x39, 0x31, 0xE6, 0xA6, 0x75, 0x7B, 0xAA, - 0xBD, 0x70, 0xA1, 0xCF, 0xFD, 0xB7, 0xC4, 0xBA, 0x26, 0xBE, 0x39, 0x32, 0xF6, 0x3D, 0xC3, 0xF6, - 0x9A, 0x1E, 0x71, 0xCD, 0xC9, 0xB3, 0x35, 0xC0, 0xA1, 0x31, 0xFA, 0x32, 0x75, 0x9D, 0xA5, 0x3D, - 0x3E, 0xD5, 0xBE, 0xD1, 0x8F, 0xF1, 0xDF, 0x7A, 0xA3, 0x91, 0x63, 0x39, 0x2E, 0xDC, 0xBF, 0x7C, - 0x8D, 0xFF, 0xD6, 0xEF, 0xD3, 0xDE, 0x3D, 0xF3, 0x4F, 0x72, 0xAA, 0xE9, 0xFD, 0xC5, 0x4D, 0xEC, - 0xFE, 0xDD, 0xA3, 0xD8, 0xE9, 0xAC, 0x9D, 0x46, 0x3D, 0x87, 0x3F, 0xCE, 0x86, 0xF7, 0xC8, 0xC8, - 0x37, 0x1D, 0xFB, 0x60, 0x6E, 0x98, 0xB6, 0x04, 0xD3, 0xD8, 0xF4, 0x16, 0x96, 0x01, 0x32, 0x98, - 0x58, 0x24, 0x13, 0xCF, 0x37, 0x73, 0x62, 0x2F, 0xF7, 0x73, 0xB0, 0x21, 0x92, 0xE6, 0xD8, 0x74, - 0x59, 0xAB, 0x53, 0x94, 0xC3, 0x72, 0x6E, 0xE7, 0xA2, 0xCD, 0xA2, 0xCB, 0x76, 0x6C, 0x22, 0x11, - 0x20, 0x76, 0xB4, 0x72, 0x8D, 0x05, 0x36, 0xC0, 0xBF, 0xEB, 0x4D, 0xE6, 0xA6, 0xCD, 0x8C, 0xEA, - 0x54, 0xEB, 0x74, 0x5B, 0x8B, 0x9B, 0x1C, 0x55, 0x76, 0xFA, 0xF8, 0x6F, 0xBD, 0xD1, 0xC2, 0x18, - 0x8F, 0x4D, 0x7B, 0x7A, 0xAA, 0x1D, 0x4B, 0x51, 0x38, 0xEE, 0x98, 0xB8, 0x4D, 0xD7, 0x18, 0x9B, - 0x4B, 0xEF, 0x54, 0xEB, 0xCA, 0xDA, 0xCC, 0x0D, 0x77, 0x0A, 0xB4, 0xF8, 0x0E, 0x10, 0xDB, 0xD4, - 0xA5, 0x94, 0xF0, 0x26, 0xAE, 0x39, 0x9D, 0xF9, 0xA0, 0xD2, 0xB5, 0x36, 0x49, 0xA1, 0x71, 0x17, - 0xCA, 0xD3, 0x67, 0xA6, 0xDC, 0xE4, 0x52, 0x33, 0x2C, 0x73, 0x6A, 0x37, 0x4D, 0x9F, 0xCC, 0x81, - 0x1D, 0xCF, 0x77, 0x89, 0x3F, 0x9A, 0x65, 0x91, 0x32, 0x31, 0xA7, 0x4B, 0x97, 0x48, 0x08, 0x09, - 0xE5, 0x96, 0xC1, 0x30, 0xDC, 0x5C, 0xBF, 0xD5, 0x5C, 0x91, 0xE1, 0x17, 0xD3, 0x6F, 0x72, 0x99, - 0x0C, 0xC9, 0xC4, 0x71, 0x89, 0xB4, 0x65, 0xD0, 0xC2, 0x72, 0x46, 0x5F, 0x9A, 0x9E, 0x6F, 0xB8, - 0xBE, 0x0A, 0x42, 0x63, 0xE2, 0x13, 0x37, 0x1F, 0x1F, 0x41, 0xAB, 0xC8, 0xC7, 0x96, 0xDE, 0x2D, - 0x6F, 0x60, 0xDA, 0x96, 0x69, 0x13, 0x75, 0xF2, 0xD2, 0xFA, 0x8D, 0xA3, 0x63, 0xAD, 0x14, 0x14, - 0x63, 0xCE, 0xA7, 0x59, 0x56, 0x42, 0x79, 0x5D, 0xEF, 0x8C, 0xFB, 0x8D, 0xDE, 0x6A, 0xFD, 0xC7, - 0xFA, 0xCD, 0x19, 0x61, 0x66, 0x6A, 0x2C, 0x7D, 0xA7, 0xBA, 0x47, 0xAC, 0xB9, 0x55, 0x82, 0x8F, - 0xFF, 0x9C, 0x93, 0xB1, 0x69, 0x68, 0x0D, 0xC1, 0x9D, 0x8F, 0x5B, 0x60, 0x53, 0x7B, 0x9A, 0x61, - 0x8F, 0xB5, 0x86, 0xE3, 0x9A, 0xE0, 0x08, 0x06, 0x0D, 0x37, 0x16, 0x5C, 0x81, 0x81, 0x63, 0x41, - 0xF6, 0x24, 0x2C, 0x67, 0xF8, 0x8C, 0x28, 0x11, 0xB9, 0xDB, 0xE0, 0x4F, 0x21, 0xE4, 0xE0, 0x2F, - 0xD7, 0x81, 0x24, 0x3C, 0x52, 0xF4, 0x59, 0xFA, 0x12, 0x29, 0x4C, 0xD3, 0x19, 0xFE, 0xE6, 0xC6, - 0x4D, 0x33, 0x53, 0x77, 0x41, 0xA3, 0x40, 0x87, 0x30, 0xCC, 0x8E, 0x1A, 0xD0, 0xF4, 0x7A, 0xA6, - 0x35, 0x35, 0x8C, 0x92, 0x7B, 0x72, 0x18, 0x8E, 0x54, 0xAE, 0x72, 0xFC, 0x89, 0x46, 0x51, 0x80, - 0x5D, 0x39, 0xAB, 0x51, 0xEC, 0x60, 0xFF, 0x64, 0x36, 0xC4, 0x38, 0x49, 0x8D, 0x22, 0xF8, 0x53, - 0x8F, 0x24, 0x11, 0xB2, 0xDC, 0x68, 0x22, 0x41, 0x9C, 0x1E, 0x51, 0xD6, 0xF0, 0xA6, 0x79, 0xB7, - 0x04, 0x6B, 0x36, 0x09, 0xAA, 0xD1, 0x45, 0x82, 0x38, 0x8B, 0x86, 0xDC, 0x28, 0x83, 0xBF, 0x3B, - 0x85, 0x7C, 0xE3, 0x9B, 0xE1, 0xD2, 0xF7, 0x1D, 0xDB, 0xAB, 0x34, 0x44, 0xA5, 0xF9, 0xD9, 0x1F, - 0x4B, 0xCF, 0x37, 0x27, 0xB7, 0x4D, 0xEE, 0xD2, 0xE0, 0x67, 0x0B, 0x03, 0x52, 0xC8, 0x21, 0xF1, - 0x57, 0x84, 0x64, 0xA7, 0x1B, 0xB6, 0x71, 0x0D, 0x71, 0x67, 0x3A, 0xB5, 0x64, 0xB6, 0x37, 0x5A, - 0xBA, 0x1E, 0xE6, 0x6D, 0x0B, 0xC7, 0x04, 0xC4, 0xEE, 0x7A, 0xC7, 0x71, 0x1F, 0x54, 0xEC, 0xA8, - 0x39, 0x1A, 0x4A, 0xFA, 0x72, 0x96, 0x3E, 0xCA, 0x58, 0xAA, 0x09, 0x07, 0xD8, 0x31, 0xFD, 0x5B, - 0xE9, 0x3D, 0xEE, 0x89, 0x92, 0x3B, 0x81, 0x0B, 0x66, 0x0E, 0x0B, 0x71, 0xBA, 0x4E, 0x47, 0x33, - 0x32, 0xFA, 0x42, 0xC6, 0x4F, 0x73, 0xD3, 0xB0, 0xBC, 0xF4, 0xF0, 0xC0, 0xB4, 0x17, 0x4B, 0xBF, - 0x89, 0xE9, 0xD4, 0x62, 0x2B, 0x3A, 0xA7, 0x06, 0x19, 0xB0, 0xD8, 0x6E, 0x67, 0x25, 0x15, 0xBD, - 0xC5, 0x4D, 0xB6, 0x10, 0x44, 0x62, 0x07, 0x96, 0x31, 0x24, 0x56, 0x16, 0xC9, 0xDC, 0x19, 0x52, - 0xC2, 0x2E, 0x8F, 0x55, 0xE9, 0xB9, 0x1B, 0xA5, 0x2C, 0x1A, 0xBC, 0xBA, 0x47, 0xFF, 0xA1, 0x2C, - 0x47, 0x7A, 0xBC, 0x1F, 0xBB, 0xE4, 0x11, 0x0B, 0x1C, 0x2C, 0x71, 0x6D, 0x61, 0xA4, 0x26, 0xE3, - 0xD0, 0x62, 0x05, 0x54, 0x65, 0x76, 0xE9, 0x1A, 0xF6, 0x94, 0x40, 0x74, 0xB8, 0xD9, 0x0F, 0x0E, - 0xB3, 0xA7, 0x0A, 0x4A, 0x02, 0xC1, 0xE0, 0xDD, 0xCB, 0x9E, 0x9A, 0xB0, 0x10, 0xB1, 0xAF, 0x1D, - 0xB0, 0x83, 0x12, 0x79, 0x8A, 0xA0, 0xF1, 0x4C, 0x42, 0x74, 0xA9, 0xBD, 0xB0, 0x54, 0x45, 0xEA, - 0x4B, 0x71, 0x6B, 0x93, 0xA6, 0xFE, 0xB9, 0xC1, 0x22, 0x98, 0x04, 0x4E, 0x26, 0x79, 0xD3, 0xC8, - 0xC9, 0xA4, 0xD3, 0xEA, 0x74, 0x73, 0x73, 0x29, 0x29, 0x97, 0x89, 0xA9, 0xA4, 0x24, 0x98, 0x84, - 0x81, 0x26, 0x5F, 0x17, 0xA7, 0x33, 0xE7, 0x9A, 0xB8, 0x12, 0x45, 0x24, 0xC8, 0xED, 0x9E, 0x74, - 0xC7, 0x0A, 0xD8, 0x0C, 0x18, 0x0A, 0xAE, 0x65, 0x81, 0x36, 0x8E, 0xAE, 0xAD, 0x8F, 0xDA, 0x99, - 0x16, 0xCA, 0xD0, 0x1D, 0x80, 0x35, 0x18, 0x43, 0x8B, 0x8C, 0x33, 0x22, 0xF7, 0x98, 0x4C, 0x8C, - 0xA5, 0xE5, 0xE7, 0xC8, 0xDB, 0x68, 0xE1, 0xBF, 0xAC, 0x1E, 0xA9, 0x7B, 0xFD, 0x8A, 0x35, 0x90, - 0x73, 0xEA, 0x12, 0xBF, 0x49, 0xFA, 0x0C, 0x86, 0x55, 0x63, 0xB1, 0x20, 0x06, 0xB4, 0x1A, 0x91, - 0xB4, 0xD9, 0xAA, 0x52, 0x3A, 0x2D, 0x8F, 0x69, 0x4A, 0x73, 0xD4, 0x5C, 0x53, 0x0C, 0x13, 0xA5, - 0x42, 0x3C, 0x9F, 0x4E, 0x9C, 0xD1, 0x52, 0x36, 0x82, 0xAB, 0x99, 0xD4, 0x3A, 0xBE, 0xD3, 0x40, - 0x64, 0x9E, 0x65, 0x52, 0xC3, 0x5E, 0xDA, 0x36, 0x6A, 0xB4, 0xE9, 0xBB, 0xC0, 0xA6, 0xA4, 0x23, - 0x35, 0xC1, 0x95, 0xF2, 0xCE, 0x98, 0x60, 0xD3, 0xEA, 0x34, 0x09, 0x07, 0x94, 0x04, 0x8A, 0x30, - 0x86, 0x68, 0x9E, 0x03, 0x4C, 0x05, 0xA8, 0xAA, 0xC9, 0xC5, 0x9F, 0x2D, 0xE7, 0xB2, 0x9C, 0x21, - 0xE8, 0x4C, 0x87, 0x01, 0x8E, 0x75, 0xE7, 0x4E, 0x87, 0x46, 0xA3, 0xB5, 0xDF, 0xDA, 0xEF, 0xC0, - 0x7F, 0x92, 0xDC, 0x3D, 0xDB, 0xB8, 0xB8, 0x78, 0x53, 0x2C, 0x2F, 0x11, 0x7C, 0xF2, 0x4B, 0x28, - 0x69, 0x61, 0x2C, 0x57, 0x17, 0xEA, 0x9E, 0x14, 0xAF, 0xA5, 0xE8, 0x07, 0x39, 0x23, 0x4C, 0x8A, - 0x49, 0x17, 0x37, 0x44, 0x89, 0xB5, 0x14, 0x55, 0xF1, 0xDC, 0xF9, 0xB3, 0xC9, 0x86, 0xD7, 0xFF, - 0xF3, 0xD6, 0x2E, 0x88, 0xE2, 0x6F, 0x6D, 0xE9, 0x85, 0xE5, 0xE2, 0xDD, 0xB7, 0x6D, 0xB4, 0xD2, - 0xB5, 0xDE, 0xE4, 0xF9, 0x0C, 0x50, 0x68, 0x43, 0xC6, 0xE9, 0xC2, 0xC4, 0x2B, 0x35, 0xE7, 0x11, - 0xDA, 0x94, 0x90, 0xC1, 0xC4, 0xB4, 0xAC, 0xA6, 0xE5, 0xAC, 0xF2, 0x33, 0x91, 0x6C, 0x4B, 0x5E, - 0xB3, 0xD3, 0x7C, 0x93, 0x2F, 0x4B, 0xED, 0x12, 0x22, 0xD7, 0x5F, 0x82, 0xDA, 0xBF, 0xB7, 0xC3, - 0x65, 0xBA, 0x46, 0xB9, 0x81, 0xA2, 0x84, 0x3D, 0x56, 0xEB, 0x48, 0xC9, 0x94, 0x58, 0x26, 0x98, - 0x39, 0xAB, 0xF3, 0x56, 0xA6, 0x3F, 0x9A, 0x95, 0x98, 0x54, 0x2D, 0x1C, 0xCF, 0x64, 0xCB, 0x37, - 0x2E, 0xB1, 0x0C, 0xCC, 0xE0, 0x4B, 0xCD, 0xC6, 0x73, 0x27, 0x26, 0x22, 0xB8, 0x0A, 0x27, 0x54, - 0x74, 0x0F, 0xA7, 0x92, 0x72, 0xC0, 0x72, 0x87, 0xF4, 0x58, 0x2D, 0x37, 0xEB, 0x9C, 0x74, 0x3F, - 0xEE, 0x19, 0xF2, 0x46, 0x05, 0x22, 0x7A, 0x10, 0xB4, 0xA7, 0x2E, 0xB9, 0x55, 0x60, 0x66, 0x9F, - 0xFF, 0x3D, 0x65, 0xB5, 0xD2, 0xF2, 0x45, 0x00, 0x3A, 0x00, 0x70, 0x2B, 0x3A, 0xE8, 0x7A, 0x0A, - 0x5D, 0xA7, 0x77, 0xA9, 0x62, 0x8F, 0x61, 0x25, 0xB0, 0x56, 0x53, 0x08, 0x37, 0x19, 0x43, 0xA8, - 0xDC, 0x54, 0x83, 0xD1, 0x57, 0x7A, 0xD3, 0x22, 0x13, 0x3F, 0x65, 0xA1, 0x83, 0xE6, 0xA9, 0x9D, - 0xEC, 0xE8, 0xD6, 0x14, 0xEA, 0x04, 0xB9, 0x91, 0x23, 0x2C, 0xD8, 0xA5, 0x5B, 0x9F, 0x14, 0x33, - 0x46, 0xCF, 0xC2, 0xC8, 0xD3, 0x55, 0x12, 0xA4, 0xCF, 0x54, 0xCD, 0xD0, 0x66, 0xCE, 0x87, 0x7C, - 0x50, 0x0F, 0xF9, 0xB9, 0xD1, 0xEE, 0x4B, 0xD7, 0x11, 0x32, 0x1A, 0x67, 0x91, 0xC6, 0x2A, 0x5E, - 0x4A, 0x43, 0x56, 0xEA, 0x04, 0x59, 0x8C, 0x45, 0x52, 0x45, 0x65, 0x7B, 0x65, 0x56, 0x84, 0x59, - 0xAF, 0xD1, 0x64, 0x1A, 0xBB, 0x39, 0x37, 0x20, 0xED, 0x45, 0x73, 0x35, 0x00, 0xA3, 0x4C, 0x7F, - 0x2A, 0xE6, 0x2E, 0xD4, 0x13, 0xF5, 0x7E, 0x2B, 0xA7, 0xCB, 0x91, 0xE5, 0x78, 0xD9, 0x7E, 0x65, - 0x0C, 0x41, 0x7E, 0x4B, 0x5F, 0xD2, 0x11, 0xAF, 0x6A, 0x4A, 0x2B, 0x4F, 0xD4, 0xB8, 0xA5, 0x77, - 0x94, 0x86, 0xEE, 0x4C, 0x9F, 0xCA, 0x76, 0xC7, 0x84, 0xCC, 0xF5, 0x96, 0x34, 0xD2, 0x66, 0xD6, - 0xDF, 0x7C, 0x72, 0x03, 0xF3, 0x4D, 0x5C, 0xAB, 0x3B, 0xD5, 0x46, 0x44, 0x1E, 0x46, 0x63, 0x83, - 0x9C, 0xAE, 0x52, 0x04, 0xCC, 0xD4, 0xC3, 0xCC, 0x1C, 0x8F, 0x49, 0x66, 0x95, 0x13, 0xE7, 0xBC, - 0xD9, 0xA1, 0xD2, 0x90, 0x96, 0xD3, 0x0A, 0x68, 0xB2, 0x9D, 0xAE, 0xCA, 0xCC, 0xE1, 0x2A, 0x25, - 0xF4, 0xC5, 0x24, 0x24, 0x6D, 0x22, 0x54, 0x61, 0xE5, 0x21, 0x12, 0x15, 0x31, 0x26, 0x23, 0xC7, - 0x65, 0x8B, 0xB8, 0x29, 0x13, 0xFF, 0x72, 0x33, 0x2B, 0x44, 0x2E, 0x2B, 0xDD, 0x6D, 0x25, 0x74, - 0x64, 0x6E, 0x74, 0xD0, 0xB7, 0x1D, 0x57, 0xF8, 0x70, 0x9C, 0x56, 0x49, 0x8F, 0x27, 0x6C, 0x99, - 0xA4, 0x4A, 0x43, 0x60, 0xA8, 0x46, 0x14, 0x19, 0xC8, 0x01, 0x5B, 0xAD, 0x2B, 0x34, 0x41, 0x15, - 0x5D, 0x5A, 0x39, 0xE0, 0xAB, 0x4D, 0x7C, 0x61, 0xB0, 0x99, 0xB6, 0xDE, 0xB2, 0xC1, 0xC5, 0x37, - 0x6A, 0x01, 0xC9, 0x7E, 0x53, 0x45, 0x73, 0x4F, 0xF9, 0x63, 0x06, 0x91, 0xE1, 0x40, 0x1C, 0x6C, - 0xB7, 0x8A, 0xB7, 0x2A, 0x1B, 0x42, 0xCE, 0x0E, 0x85, 0xFD, 0x71, 0x67, 0x87, 0xD1, 0x56, 0xBE, - 0x33, 0xDC, 0x24, 0x27, 0x6E, 0xA3, 0xE3, 0xFD, 0x8C, 0x2C, 0xC3, 0xF3, 0xCE, 0x6B, 0xB8, 0xD9, - 0xAB, 0x16, 0xDF, 0x55, 0x77, 0x36, 0x36, 0xAF, 0x35, 0x73, 0x7C, 0x5E, 0xB3, 0x9C, 0xA9, 0x93, - 0xB8, 0x47, 0xEF, 0x33, 0x2D, 0xC3, 0x68, 0x7F, 0x5E, 0x8B, 0xAD, 0x38, 0xD6, 0x28, 0x54, 0x74, - 0xA9, 0x36, 0x78, 0xF2, 0xCD, 0xC9, 0xD1, 0x51, 0xFF, 0xD9, 0x13, 0x7B, 0xE8, 0x2D, 0xF8, 0xFF, - 0x1F, 0xD9, 0x02, 0xAD, 0x47, 0x7C, 0x1F, 0x6C, 0xCE, 0x3B, 0x3B, 0xA4, 0xD8, 0x12, 0x14, 0x1C, - 0x02, 0x09, 0x29, 0x44, 0xF1, 0x6C, 0x50, 0x46, 0x57, 0xD0, 0xC4, 0x83, 0x04, 0x67, 0x68, 0xB8, - 0x92, 0x26, 0xB4, 0x19, 0x9B, 0x6B, 0xD0, 0x18, 0x52, 0xA3, 0xCA, 0x18, 0x3A, 0x37, 0x49, 0xD2, - 0x29, 0x37, 0x5C, 0x53, 0xBC, 0x15, 0x19, 0xA7, 0x21, 0x04, 0x30, 0x0A, 0x8E, 0xEB, 0xAC, 0xD0, - 0x46, 0xDA, 0x28, 0x26, 0x7B, 0x6C, 0x7C, 0x33, 0xB2, 0xBE, 0x04, 0x4A, 0xAF, 0x05, 0xDA, 0xB0, - 0x1D, 0x9F, 0x8D, 0x24, 0x29, 0x5D, 0xC5, 0x58, 0xE5, 0x30, 0xC2, 0x6A, 0x21, 0xE3, 0x02, 0x44, - 0xDB, 0xA4, 0xD8, 0xD9, 0xB5, 0x6C, 0x4C, 0x14, 0x9B, 0xA0, 0xD0, 0x00, 0xB8, 0x36, 0xF8, 0xF9, - 0xE2, 0xBB, 0x7F, 0x6A, 0xEF, 0xDE, 0xFE, 0x29, 0xD5, 0x50, 0x1E, 0x51, 0x18, 0x9C, 0x15, 0x7A, - 0xA6, 0x60, 0x4C, 0x1F, 0x81, 0x4C, 0x6A, 0x5C, 0x33, 0x14, 0x03, 0x26, 0x43, 0x16, 0xB1, 0xA7, - 0xFE, 0xEC, 0xBC, 0xA6, 0xD7, 0x70, 0x77, 0x4B, 0x70, 0xD6, 0xAE, 0x69, 0x18, 0xB8, 0xE9, 0xC1, - 0xB5, 0x61, 0x2D, 0xF1, 0xA8, 0xA5, 0xC2, 0xEB, 0xBA, 0x69, 0x49, 0x9B, 0xF1, 0x88, 0x12, 0xCA, - 0x58, 0x88, 0xC0, 0x71, 0x29, 0xD7, 0x06, 0x57, 0xC4, 0x3F, 0x3B, 0x64, 0xB7, 0x72, 0xB4, 0x96, - 0xDD, 0x37, 0xB8, 0x30, 0x33, 0x87, 0x2C, 0x13, 0xCA, 0x52, 0xFC, 0xC4, 0x35, 0xE6, 0x04, 0xA5, - 0xA2, 0xA4, 0x79, 0x51, 0xEB, 0x21, 0x64, 0x6D, 0xF0, 0x81, 0xD0, 0x2C, 0x03, 0xC8, 0x50, 0x52, - 0xFC, 0x19, 0x4F, 0xE1, 0x63, 0xFD, 0x87, 0xF6, 0xCC, 0x97, 0xEC, 0x9A, 0x06, 0x33, 0x73, 0x05, - 0xB9, 0x3F, 0x6E, 0x36, 0xB5, 0xDE, 0xBB, 0xF7, 0x5A, 0xB3, 0xA9, 0xD0, 0xD8, 0x59, 0x50, 0x77, - 0x0A, 0xF4, 0x0F, 0x16, 0xC2, 0xA8, 0x21, 0x54, 0x3F, 0xEC, 0xA8, 0x36, 0xF8, 0xE1, 0xEA, 0xE7, - 0x37, 0x2F, 0x1A, 0xED, 0x5E, 0xBF, 0x75, 0xA3, 0x9F, 0xB4, 0x5B, 0x7B, 0x67, 0x87, 0x0C, 0xAE, - 0x78, 0x07, 0x60, 0x60, 0xEF, 0xB5, 0xD7, 0x6F, 0x5F, 0x35, 0xF4, 0xD6, 0x71, 0x55, 0x64, 0xFA, - 0x49, 0x6D, 0xF0, 0xD3, 0x0F, 0x11, 0x65, 0xFD, 0x56, 0x15, 0x64, 0xC7, 0xC0, 0x26, 0xD0, 0xC5, - 0x50, 0x75, 0xBB, 0x85, 0x50, 0xA1, 0xC8, 0x3B, 0xE5, 0x44, 0xAE, 0x1F, 0x41, 0xBF, 0x94, 0x87, - 0x56, 0xF7, 0xF8, 0x46, 0xEF, 0xF5, 0xBB, 0x15, 0x78, 0xE8, 0xA3, 0x74, 0x81, 0x90, 0xC6, 0x71, - 0xBF, 0x5B, 0x15, 0x57, 0x0F, 0x71, 0x81, 0x40, 0x8E, 0xDA, 0x20, 0x8F, 0xF6, 0x71, 0x15, 0xD1, - 0x76, 0x6B, 0x03, 0xAA, 0xF2, 0x13, 0x44, 0xD5, 0x2A, 0x86, 0x0A, 0x45, 0xDB, 0x2E, 0x29, 0xDA, - 0x4E, 0x6D, 0xF0, 0x23, 0x8A, 0x16, 0x2D, 0x03, 0x78, 0xA8, 0x64, 0x1E, 0x6D, 0x88, 0x52, 0x14, - 0x57, 0x1B, 0xED, 0xB6, 0xD5, 0xAE, 0x22, 0x5A, 0xBD, 0x36, 0x40, 0x71, 0x20, 0xA6, 0xA3, 0x4A, - 0x0E, 0x00, 0xDE, 0x44, 0x69, 0x02, 0x72, 0x6E, 0x8E, 0xFA, 0xC7, 0xE5, 0x31, 0x81, 0x27, 0x5D, - 0x7D, 0x02, 0x4C, 0xC7, 0x20, 0xA8, 0x4A, 0x6E, 0x04, 0x5E, 0x84, 0x78, 0xFA, 0xDD, 0xD6, 0x4D, - 0xB7, 0x8A, 0xCD, 0x80, 0x57, 0xBC, 0x45, 0x44, 0x80, 0xE4, 0xA6, 0x53, 0x45, 0x46, 0xE0, 0x12, - 0x17, 0xDF, 0xBE, 0x6E, 0x74, 0x81, 0xB1, 0xF6, 0x49, 0xBF, 0x3C, 0x1E, 0x70, 0x87, 0x1F, 0x90, - 0x20, 0x20, 0xE6, 0xA6, 0x5D, 0x2C, 0x3A, 0xC4, 0x11, 0x81, 0x33, 0x00, 0x3C, 0xE2, 0x28, 0x8D, - 0x02, 0xEC, 0xFA, 0x2D, 0x25, 0x06, 0x11, 0xE9, 0x47, 0x15, 0xB8, 0x02, 0xAB, 0xFE, 0x01, 0xC5, - 0x03, 0x48, 0x30, 0xE8, 0x55, 0x30, 0x45, 0x40, 0x44, 0x49, 0xD2, 0xFB, 0xD4, 0xD5, 0xCA, 0x63, - 0x02, 0x9B, 0x3E, 0xE9, 0xDF, 0x9C, 0xF4, 0xD5, 0x10, 0xE0, 0x88, 0x8F, 0xA3, 0x54, 0x56, 0x4E, - 0x90, 0x9D, 0x32, 0x64, 0xA5, 0x03, 0xFF, 0x5E, 0x1A, 0x16, 0xCC, 0x6F, 0x0A, 0x27, 0x03, 0x1C, - 0x0E, 0x64, 0xC2, 0x0E, 0xD4, 0xF2, 0x00, 0x81, 0x92, 0x70, 0xA3, 0x59, 0x6D, 0xD0, 0x55, 0xC8, - 0xB7, 0x62, 0x09, 0x39, 0x85, 0x8D, 0xD1, 0x4F, 0x93, 0x40, 0xB4, 0x3C, 0x4C, 0xFF, 0xC0, 0x25, - 0x3A, 0x35, 0x21, 0x82, 0x94, 0x4A, 0x34, 0x24, 0xB4, 0x1A, 0x37, 0xB5, 0x41, 0xBF, 0x93, 0x9B, - 0xA0, 0x95, 0x57, 0xC6, 0x90, 0xD6, 0x68, 0x6C, 0xE2, 0x79, 0x85, 0xF5, 0x11, 0x81, 0xD6, 0x06, - 0x2F, 0xC3, 0xE3, 0x2A, 0x5A, 0x69, 0xE6, 0x71, 0x4A, 0x61, 0x53, 0xD4, 0x22, 0x90, 0xC3, 0x34, - 0xD3, 0xEC, 0x70, 0xD5, 0x44, 0x9A, 0xD9, 0xAC, 0x62, 0xB6, 0xA9, 0x17, 0x9C, 0x4E, 0xBA, 0x86, - 0xE7, 0x17, 0xD6, 0x4A, 0x00, 0x08, 0x11, 0x9A, 0x1F, 0xDD, 0x9B, 0x46, 0x42, 0x52, 0xFE, 0x06, - 0xFA, 0xF0, 0x0C, 0x7F, 0xC9, 0xAA, 0x85, 0x85, 0x35, 0x12, 0x81, 0x42, 0x3E, 0x10, 0x1E, 0x57, - 0xD2, 0x4A, 0x95, 0xF0, 0x25, 0x90, 0xC3, 0xF5, 0x12, 0x84, 0xB0, 0xEE, 0x96, 0xF4, 0x92, 0x47, - 0x6D, 0x25, 0xBD, 0xCC, 0x0C, 0x77, 0x51, 0x2A, 0x7C, 0x85, 0x90, 0xA0, 0x95, 0xE0, 0xF0, 0xDE, - 0x5C, 0x25, 0x22, 0xE6, 0x6F, 0xE0, 0x2B, 0x63, 0x62, 0x3B, 0xA6, 0x57, 0x7C, 0xB6, 0xCF, 0xE1, - 0x6A, 0x83, 0x57, 0xA4, 0xF9, 0x3D, 0x1E, 0x55, 0x51, 0xC7, 0x8B, 0xA5, 0xEF, 0x54, 0x50, 0x48, - 0x40, 0x0B, 0x53, 0x47, 0x8B, 0x6B, 0xE3, 0x78, 0x4B, 0xDA, 0x38, 0xDE, 0xA2, 0x36, 0x0C, 0xF2, - 0xD9, 0x22, 0xD7, 0xC4, 0x2A, 0xAC, 0x8E, 0x00, 0xB0, 0x36, 0xB8, 0xBC, 0x59, 0x38, 0x1E, 0x3E, - 0x3A, 0xF5, 0x1D, 0x9E, 0x57, 0x72, 0x92, 0x5E, 0x05, 0x9D, 0x84, 0x04, 0x71, 0x1F, 0xE9, 0x71, - 0xAD, 0xF4, 0xB6, 0xA4, 0x95, 0x3C, 0x5A, 0xAB, 0x68, 0x65, 0x6A, 0x98, 0xF6, 0x88, 0x98, 0x16, - 0x3E, 0xC6, 0x51, 0x54, 0x31, 0x02, 0x6C, 0x6D, 0xF0, 0x26, 0x3A, 0xA9, 0xA2, 0x98, 0x56, 0x05, - 0xBD, 0x88, 0xF4, 0xC4, 0xFD, 0xA5, 0x07, 0xB3, 0xF2, 0x2D, 0xE9, 0x46, 0xD7, 0xB7, 0x39, 0xAA, - 0x2C, 0xC8, 0xC8, 0x34, 0xAC, 0xCF, 0x64, 0x32, 0x81, 0x69, 0x50, 0xF1, 0xA1, 0x25, 0x06, 0x0E, - 0xE3, 0x0B, 0x3B, 0xD7, 0x2E, 0xE9, 0x79, 0xE1, 0xFA, 0x65, 0x02, 0x5D, 0xF9, 0x22, 0x66, 0x72, - 0x4E, 0x28, 0x2D, 0x4B, 0x7E, 0xEF, 0x84, 0x74, 0x96, 0x9F, 0xB6, 0x7E, 0x4F, 0xA6, 0x74, 0x1B, - 0x41, 0x95, 0x39, 0xF4, 0x1B, 0xD7, 0xB8, 0xA5, 0xEF, 0x64, 0xA8, 0x32, 0xA5, 0xFF, 0x40, 0xC6, - 0xDA, 0x47, 0xD3, 0x2E, 0xCF, 0x4C, 0x17, 0x09, 0x21, 0xC4, 0xAE, 0x86, 0xA5, 0x07, 0x53, 0x24, - 0x38, 0xA8, 0x86, 0xA4, 0x8F, 0x35, 0xFD, 0x85, 0x69, 0x3C, 0x84, 0x49, 0xBC, 0xB1, 0x1A, 0x16, - 0x1F, 0x50, 0x56, 0x43, 0x18, 0x97, 0x7F, 0x7A, 0xA9, 0x5D, 0xD2, 0x8D, 0xEF, 0x85, 0xC3, 0x15, - 0xDB, 0x93, 0xA7, 0x62, 0xE8, 0xD1, 0xD2, 0x0D, 0xF6, 0xB9, 0xB6, 0xA6, 0x26, 0x77, 0x20, 0xD5, - 0x75, 0x35, 0x09, 0x7B, 0x01, 0x81, 0x74, 0x0B, 0x53, 0x4D, 0xE0, 0x56, 0x8D, 0xC7, 0x2D, 0xA6, - 0x62, 0xA3, 0x55, 0xF1, 0x34, 0x6C, 0xB4, 0x02, 0x35, 0x8D, 0xAF, 0xF1, 0x99, 0x88, 0xB1, 0x06, - 0xFA, 0xDA, 0x89, 0xA2, 0xB0, 0xD7, 0xFB, 0x51, 0x14, 0xE5, 0xF7, 0xBE, 0x15, 0x05, 0xD6, 0xF2, - 0x19, 0xC7, 0xD1, 0x32, 0x4E, 0x45, 0x01, 0x6B, 0x83, 0x77, 0x86, 0xBD, 0x84, 0x41, 0x66, 0x57, - 0x0A, 0x0B, 0x3B, 0xBE, 0x37, 0xF7, 0xE2, 0x7C, 0xDF, 0xB7, 0xEA, 0x80, 0x90, 0xB9, 0x33, 0x2E, - 0x3E, 0xDD, 0xE1, 0x70, 0x2C, 0x24, 0xBE, 0x83, 0xA3, 0xC2, 0x89, 0x41, 0x80, 0x61, 0xCB, 0x19, - 0x01, 0x9B, 0x4A, 0x95, 0x4F, 0x06, 0xAE, 0x96, 0xB6, 0x7D, 0x5B, 0x25, 0x13, 0xB8, 0xB0, 0x9C, - 0xE5, 0xB8, 0x3C, 0x06, 0x48, 0x03, 0xFE, 0x35, 0x99, 0x98, 0xA3, 0xF2, 0x89, 0x04, 0x24, 0x01, - 0x6F, 0x9D, 0xB9, 0x22, 0xFC, 0x96, 0x07, 0x5E, 0x32, 0x2A, 0x31, 0x93, 0x1B, 0x81, 0x16, 0x2F, - 0x2F, 0x76, 0x3A, 0xF0, 0x42, 0x9F, 0xF7, 0x14, 0x19, 0x90, 0xDB, 0xFB, 0x0E, 0x0A, 0x40, 0xC4, - 0x67, 0x6A, 0x3C, 0x65, 0x94, 0xC5, 0x20, 0xC3, 0x88, 0x1E, 0x4C, 0xBF, 0xEF, 0x6B, 0x7E, 0x17, - 0x51, 0x14, 0x9F, 0xDD, 0xE1, 0xD2, 0x73, 0x38, 0xBD, 0xEB, 0xB4, 0x37, 0x3B, 0xC1, 0x43, 0xE4, - 0xDB, 0xD5, 0x4F, 0xBB, 0x8C, 0x6A, 0x20, 0x1A, 0x7D, 0x8F, 0xEB, 0x0C, 0x05, 0x02, 0x76, 0x75, - 0x47, 0x6A, 0xDF, 0x9F, 0x27, 0xB5, 0x1F, 0x80, 0x2B, 0x4D, 0x4B, 0x44, 0xBC, 0x29, 0x46, 0xBC, - 0x37, 0x17, 0xBB, 0xD1, 0xD0, 0xF4, 0xDE, 0x42, 0xDD, 0xF4, 0x5E, 0x43, 0x9D, 0xC6, 0x37, 0x05, - 0x06, 0x52, 0x28, 0x99, 0xC1, 0x72, 0x40, 0x56, 0xCB, 0xAA, 0x12, 0xE4, 0xF4, 0x9B, 0x2A, 0x51, - 0x2E, 0x20, 0x23, 0x1E, 0xE4, 0xFA, 0xD1, 0xAA, 0x48, 0x6F, 0xB3, 0xCB, 0xBA, 0xDD, 0x3C, 0x6A, - 0xAB, 0x38, 0x8D, 0x6B, 0xAC, 0x3E, 0x4F, 0xE7, 0x46, 0x61, 0x65, 0x70, 0x38, 0xD0, 0xC5, 0xBB, - 0x17, 0xBB, 0x4C, 0x17, 0x82, 0x7E, 0xEF, 0xC7, 0x8F, 0x42, 0xAE, 0xEF, 0x3B, 0xD6, 0x59, 0xC4, - 0x2E, 0x1E, 0xEC, 0x10, 0xA8, 0x36, 0xF8, 0x8E, 0xD8, 0x9E, 0x76, 0xE1, 0xB8, 0xFC, 0x45, 0x98, - 0x3B, 0xD1, 0x1A, 0xED, 0xF9, 0x7E, 0x54, 0xC6, 0x98, 0xBE, 0x6F, 0x7D, 0xCD, 0xE6, 0xA6, 0xEB, - 0x3A, 0x6E, 0x61, 0x95, 0x71, 0x38, 0x98, 0x56, 0x34, 0xDF, 0xD1, 0xA3, 0x9D, 0xA8, 0x2B, 0xE8, - 0xF5, 0x7E, 0x34, 0x16, 0xF2, 0x7C, 0xDF, 0x4A, 0xBB, 0x9E, 0x58, 0xE6, 0xA2, 0xB0, 0xCA, 0x28, - 0x54, 0x6D, 0xF0, 0xA9, 0xF9, 0x1A, 0xFE, 0xEE, 0x44, 0x5D, 0xAC, 0xC7, 0xFB, 0x51, 0x16, 0xE7, - 0xF6, 0xBE, 0x55, 0x35, 0x5C, 0x14, 0x0F, 0x87, 0x00, 0x53, 0x1B, 0xBC, 0x7C, 0xBF, 0x9B, 0xDC, - 0x0F, 0x3B, 0x53, 0xD4, 0x50, 0x25, 0x7D, 0x50, 0xA6, 0xEE, 0x5B, 0x1B, 0xAB, 0x12, 0xDA, 0x58, - 0x21, 0xE1, 0x3F, 0xED, 0x48, 0x1B, 0x2B, 0x75, 0x6D, 0x6C, 0xD8, 0x5F, 0x56, 0x0F, 0x41, 0x3F, - 0xF4, 0xE9, 0xD3, 0xA1, 0x51, 0x7C, 0x38, 0x0A, 0x00, 0x71, 0xD3, 0x18, 0x1C, 0x69, 0x2F, 0x8D, - 0xDD, 0x0C, 0x48, 0x61, 0xBF, 0xBB, 0x70, 0xA1, 0x88, 0xC9, 0xFB, 0xD6, 0xD3, 0xC4, 0x18, 0x91, - 0xCF, 0x63, 0xE2, 0x97, 0x59, 0x5B, 0x16, 0x60, 0x6B, 0x83, 0xD7, 0x70, 0xA2, 0xBD, 0xA2, 0x27, - 0xBB, 0x4A, 0xF9, 0xC4, 0xFE, 0x77, 0xA1, 0xB5, 0x18, 0xBF, 0x0F, 0x42, 0x71, 0x90, 0x60, 0x3B, - 0x53, 0xBB, 0xD4, 0xE3, 0x4C, 0x31, 0x70, 0xAE, 0xBE, 0x0F, 0xEC, 0x7C, 0xB7, 0x0A, 0x8C, 0x88, - 0xD8, 0x99, 0x0E, 0x05, 0xBE, 0x37, 0xA8, 0x46, 0xC5, 0xA7, 0x1A, 0xF9, 0x9B, 0x81, 0xF3, 0x74, - 0xC5, 0x9F, 0xAE, 0xA3, 0x9B, 0x5A, 0x88, 0xDF, 0xF4, 0x7C, 0xD3, 0xB2, 0x60, 0x2A, 0x4C, 0x7C, - 0xED, 0x0A, 0x0F, 0x15, 0x1F, 0xA7, 0x13, 0xB0, 0x04, 0x0F, 0xD1, 0xFA, 0x2E, 0x31, 0xE6, 0xB5, - 0xC1, 0x15, 0xBE, 0x33, 0x19, 0x70, 0xE1, 0x59, 0x71, 0x64, 0x54, 0x8C, 0xC4, 0x76, 0x1D, 0x20, - 0x2A, 0x54, 0x13, 0x7F, 0x3F, 0x65, 0x4D, 0x0B, 0x8E, 0x84, 0x6B, 0x83, 0x4B, 0xDA, 0x58, 0x43, - 0x3B, 0xCB, 0xEF, 0x4E, 0xF9, 0x39, 0x3F, 0xFA, 0x44, 0x2F, 0x3E, 0xA2, 0x1B, 0x7F, 0xA3, 0x3A, - 0xE8, 0x95, 0xBD, 0xD5, 0x60, 0x70, 0x46, 0xDF, 0x0E, 0xCB, 0x9B, 0xD1, 0x87, 0xD9, 0x57, 0xFC, - 0xE9, 0xE4, 0xA1, 0x63, 0x8D, 0x9F, 0x09, 0xAB, 0xCB, 0x57, 0xE1, 0xE3, 0xB6, 0x08, 0x02, 0x86, - 0x11, 0x60, 0xC8, 0x51, 0xFE, 0xCC, 0x0D, 0xD0, 0xB3, 0x27, 0xA2, 0xF1, 0x1D, 0x65, 0x19, 0xCA, - 0x4D, 0x79, 0x34, 0xD8, 0x25, 0xD3, 0x50, 0x90, 0xB2, 0x27, 0xC6, 0xA5, 0x0F, 0x0A, 0x7F, 0x20, - 0x53, 0xD3, 0x03, 0x1A, 0x35, 0x30, 0x8B, 0x43, 0xFA, 0x8C, 0x25, 0x33, 0x66, 0xB5, 0xE7, 0x77, - 0xC5, 0x2E, 0xF9, 0xCB, 0x19, 0xA4, 0x8F, 0x63, 0x17, 0xCA, 0x4F, 0x92, 0x0F, 0x4F, 0xC7, 0x31, - 0xE6, 0x19, 0xFD, 0xE3, 0x66, 0x73, 0xD6, 0xC5, 0xA7, 0x45, 0xB5, 0x80, 0xB5, 0xB3, 0xC3, 0x59, - 0x37, 0xEF, 0xD1, 0xB0, 0xDC, 0x47, 0x7D, 0x81, 0xD3, 0xD2, 0x4F, 0xFA, 0xA2, 0x94, 0x06, 0x40, - 0xCD, 0xBE, 0xF6, 0xCE, 0xF0, 0xBE, 0xEC, 0x6B, 0x9F, 0xB0, 0x00, 0xB7, 0xC3, 0x07, 0x7E, 0x91, - 0x76, 0x63, 0x3C, 0x76, 0x53, 0x1F, 0xFA, 0xED, 0xC6, 0x1E, 0xFA, 0xED, 0x07, 0x0F, 0xFD, 0xF6, - 0xA3, 0xDD, 0x6E, 0x37, 0x9D, 0x56, 0xEB, 0x58, 0x85, 0x75, 0xC5, 0x07, 0x7F, 0x37, 0xC2, 0xD3, - 0x1C, 0xA4, 0xA9, 0xC8, 0x53, 0x37, 0xE0, 0x49, 0xD8, 0x15, 0x7E, 0x33, 0x99, 0x3C, 0x34, 0x8E, - 0xF8, 0xBA, 0x54, 0x79, 0x96, 0x5A, 0xED, 0x5D, 0x3F, 0x9D, 0x4D, 0x8D, 0x7B, 0x53, 0x0F, 0x67, - 0xD3, 0x26, 0xC9, 0x68, 0xD8, 0xCB, 0x0C, 0x86, 0x14, 0x84, 0x39, 0xFD, 0x9B, 0x4D, 0x3A, 0xFD, - 0xB4, 0x82, 0xD3, 0x4F, 0xD7, 0x9C, 0x7E, 0x87, 0xDE, 0x1E, 0x10, 0xFE, 0x77, 0xF3, 0xF8, 0x80, - 0xAF, 0x02, 0x5E, 0x2F, 0xE5, 0xAB, 0xD5, 0xDA, 0xA8, 0xDF, 0xE7, 0x3A, 0x49, 0x68, 0x0C, 0x6F, - 0x36, 0xE9, 0x24, 0x29, 0xA6, 0x5B, 0xCA, 0x4E, 0x79, 0xD8, 0x19, 0xEC, 0x66, 0x5C, 0xA2, 0xD9, - 0x94, 0xA8, 0x50, 0xDE, 0x3B, 0x3E, 0x13, 0xDA, 0xE9, 0xF2, 0xD4, 0x69, 0x13, 0xEA, 0x51, 0x7F, - 0x11, 0x44, 0x6A, 0x93, 0xCD, 0x24, 0x66, 0x0B, 0x21, 0xC3, 0x55, 0x4E, 0xCC, 0xDE, 0x7F, 0xF7, - 0x5D, 0xB1, 0x5C, 0x4C, 0xEC, 0xE5, 0x81, 0xE4, 0x62, 0x99, 0xB5, 0xD0, 0xDB, 0x05, 0xDC, 0x40, - 0xAA, 0x4B, 0x99, 0x6E, 0x04, 0x5E, 0x1B, 0xBC, 0xA4, 0xC7, 0x9A, 0x20, 0xB1, 0x42, 0xC6, 0xAB, - 0x3C, 0xED, 0xA4, 0x80, 0x42, 0xB1, 0x34, 0x22, 0x21, 0xA9, 0x1B, 0x45, 0x5C, 0x19, 0x05, 0x52, - 0x81, 0x3D, 0x75, 0xA6, 0x2A, 0xFB, 0x04, 0x6D, 0x92, 0x97, 0x0A, 0x2F, 0x5C, 0x52, 0x5A, 0x6D, - 0x1C, 0xB6, 0x36, 0x78, 0xEF, 0x12, 0xED, 0x95, 0x79, 0xAD, 0xCE, 0x9B, 0xB0, 0x51, 0x30, 0x44, - 0xA2, 0x26, 0xE5, 0xE4, 0x0E, 0x3E, 0xE9, 0xAE, 0x40, 0x5C, 0x6C, 0x57, 0xDD, 0x4E, 0x27, 0xC1, - 0x0A, 0x69, 0x57, 0xBB, 0x1A, 0x86, 0x4E, 0x6D, 0xD0, 0xA9, 0x86, 0xA1, 0x5B, 0x1B, 0x74, 0xAB, - 0x61, 0xE8, 0x81, 0x1C, 0x0E, 0x7A, 0xD5, 0x70, 0xF4, 0x6B, 0x83, 0x7E, 0x35, 0x0C, 0x47, 0x20, - 0xCB, 0xAA, 0x54, 0x40, 0xE6, 0x72, 0x5C, 0x00, 0x43, 0xFE, 0x26, 0x47, 0xD6, 0xAA, 0xBA, 0xF3, - 0xCC, 0x97, 0x56, 0x69, 0xE7, 0xE1, 0xB0, 0xB5, 0xC1, 0xBB, 0xA5, 0xE5, 0x9B, 0x0B, 0xCB, 0x84, - 0x69, 0x7B, 0xA3, 0xAB, 0x35, 0xB5, 0x76, 0xAF, 0xBD, 0xB7, 0xC3, 0x0C, 0x33, 0xA0, 0x43, 0xED, - 0x1D, 0x52, 0x9D, 0x20, 0x09, 0xD3, 0x8F, 0xC5, 0x77, 0x0A, 0x3C, 0x88, 0x70, 0xE6, 0x3A, 0x8E, - 0x5F, 0x5A, 0x1D, 0x01, 0x30, 0xA4, 0xF9, 0x70, 0x54, 0x3A, 0x9A, 0x45, 0x68, 0xCA, 0x18, 0x7A, - 0xCA, 0x26, 0xE7, 0x8A, 0xE1, 0x4C, 0x2F, 0x16, 0xCE, 0x76, 0xE7, 0x3E, 0xDE, 0x6D, 0xF9, 0x94, - 0x81, 0xC3, 0xC2, 0x6C, 0xF5, 0x16, 0x66, 0x88, 0x73, 0x54, 0x98, 0xD6, 0x68, 0x81, 0xFB, 0xE8, - 0xBD, 0x5D, 0x7A, 0x4F, 0x40, 0x46, 0xC1, 0x37, 0xB0, 0x89, 0xDE, 0xF3, 0x30, 0x9C, 0x87, 0xEA, - 0x83, 0x58, 0xE3, 0x5E, 0x79, 0x8D, 0x04, 0xD0, 0x90, 0x0F, 0xE0, 0x7B, 0xF0, 0x2A, 0xF9, 0x91, - 0x80, 0xAC, 0x9C, 0x23, 0x55, 0x77, 0x1A, 0xA9, 0x2B, 0x56, 0xCC, 0x0B, 0xDA, 0x95, 0x47, 0xF5, - 0xCE, 0x43, 0x1C, 0x0B, 0x17, 0xF8, 0xEA, 0x44, 0xA2, 0xB6, 0xBD, 0x92, 0x22, 0x13, 0x93, 0x48, - 0x06, 0xCB, 0x8D, 0x86, 0x6D, 0x2B, 0xDF, 0x69, 0xE6, 0x1F, 0x10, 0xB0, 0xBE, 0xDA, 0x54, 0x7C, - 0x15, 0x5E, 0x60, 0x4E, 0x36, 0x11, 0x08, 0x79, 0x7D, 0x70, 0xB3, 0x00, 0x24, 0xAC, 0xF4, 0x34, - 0x80, 0x03, 0x73, 0x15, 0x86, 0x91, 0xB8, 0xA3, 0x17, 0x88, 0xC4, 0xE2, 0x8C, 0x20, 0xC4, 0x57, - 0x72, 0xB4, 0xBB, 0xF7, 0xF4, 0xBF, 0x2B, 0x0F, 0x1E, 0x15, 0x5D, 0xBF, 0x60, 0x1A, 0x2C, 0xC1, - 0x80, 0xEF, 0x0B, 0xD4, 0x8B, 0x24, 0xF4, 0x9B, 0x0B, 0x1F, 0xC2, 0x5A, 0x21, 0x35, 0x38, 0x3A, - 0x74, 0x13, 0x9F, 0xCD, 0xF3, 0x0B, 0x2C, 0xFF, 0xA5, 0x36, 0xD9, 0x4C, 0x75, 0x67, 0x65, 0xDA, - 0xC5, 0xAB, 0x3B, 0x3F, 0x99, 0xF6, 0xD8, 0x59, 0x15, 0x2B, 0xF0, 0x88, 0x1D, 0xFD, 0x05, 0x0A, - 0x3C, 0x34, 0x3D, 0xC0, 0x15, 0xE2, 0xA6, 0x4B, 0xD4, 0xDE, 0x67, 0x93, 0x14, 0x32, 0x83, 0xBE, - 0xC1, 0x05, 0x56, 0x40, 0xE1, 0x69, 0x74, 0xBD, 0x79, 0xDB, 0x99, 0xDA, 0xCF, 0xA7, 0x62, 0xAE, - 0xC6, 0x29, 0x50, 0xCB, 0xD5, 0xBA, 0x92, 0x72, 0xF3, 0xBD, 0x57, 0xD0, 0x7F, 0x59, 0xE7, 0xE7, - 0xF6, 0xDE, 0xF9, 0xD9, 0xC4, 0x00, 0x44, 0xEC, 0x71, 0x69, 0xCB, 0x42, 0xD8, 0xC8, 0xAE, 0x2E, - 0xED, 0xF1, 0x4E, 0xAD, 0x8A, 0xF5, 0x5E, 0x5A, 0x07, 0xED, 0x7E, 0xBB, 0xF3, 0xB0, 0xCC, 0x0A, - 0x19, 0xAA, 0x60, 0x54, 0xFA, 0x49, 0xEF, 0x01, 0x4D, 0x69, 0x9C, 0xC9, 0x84, 0xAD, 0x6B, 0x96, - 0x33, 0x2D, 0x0E, 0x7E, 0x43, 0x9F, 0xD2, 0xF5, 0xC8, 0x6E, 0xE3, 0x55, 0xD8, 0x79, 0xC1, 0xD2, - 0x8C, 0xA0, 0x8B, 0xFE, 0xC3, 0x32, 0x2D, 0xCE, 0x91, 0xAA, 0x75, 0x49, 0x38, 0xEA, 0x3E, 0x1C, - 0xD3, 0xF2, 0x1D, 0xDF, 0xB0, 0x4A, 0x5B, 0x16, 0x83, 0x06, 0xC3, 0xFA, 0x88, 0x07, 0xDA, 0x15, - 0xF0, 0xB9, 0x53, 0xE3, 0x0A, 0xFA, 0x2F, 0x1F, 0xB8, 0x8E, 0xBB, 0x1B, 0x52, 0x46, 0x05, 0x96, - 0x7E, 0x59, 0x67, 0xA9, 0x52, 0xE8, 0xEA, 0x6F, 0x68, 0x91, 0x7C, 0x23, 0xA1, 0x6B, 0xE9, 0xE3, - 0xD5, 0xD2, 0xA1, 0x8B, 0x81, 0x63, 0xE8, 0xA2, 0x47, 0xBB, 0x37, 0xB1, 0x90, 0x82, 0xF2, 0x36, - 0xD6, 0x3B, 0xD9, 0xE4, 0x16, 0x98, 0x4D, 0x44, 0x30, 0xC6, 0x53, 0x25, 0x23, 0xDB, 0x94, 0xDF, - 0x54, 0x36, 0xB2, 0x91, 0xA1, 0xFC, 0x8E, 0x37, 0x8A, 0x4C, 0xCC, 0xE6, 0x19, 0x2C, 0xCC, 0xE1, - 0xD8, 0xC1, 0x4E, 0x2B, 0x36, 0x41, 0xE7, 0x1B, 0x5F, 0xA8, 0x0D, 0xB9, 0x7A, 0x48, 0xF5, 0x99, - 0xA1, 0x69, 0xDB, 0x65, 0xD5, 0xC4, 0x61, 0x6B, 0x83, 0x97, 0xEC, 0x60, 0xB7, 0x4B, 0xEA, 0xBC, - 0xF3, 0xCD, 0xAF, 0xA7, 0x07, 0x5C, 0xED, 0x5A, 0x4D, 0x89, 0x22, 0x86, 0x1B, 0x7E, 0xF7, 0xA3, - 0xC6, 0xF7, 0xA8, 0x46, 0xDF, 0x01, 0x79, 0x38, 0x25, 0x8D, 0xA9, 0x31, 0xC7, 0x87, 0x97, 0x8B, - 0x16, 0x35, 0xDE, 0x20, 0x58, 0xB1, 0x9A, 0x46, 0xBC, 0xA7, 0x87, 0x5D, 0xD5, 0x18, 0xC4, 0xDF, - 0x5A, 0x09, 0x84, 0x37, 0x87, 0xA6, 0xE1, 0xE1, 0x83, 0xFE, 0x70, 0xAC, 0xBD, 0x84, 0x63, 0xED, - 0xBD, 0xB5, 0x0C, 0x5F, 0xBB, 0x2B, 0x73, 0x08, 0x71, 0x3F, 0x5B, 0x84, 0x21, 0xED, 0xA9, 0x05, - 0xBA, 0x8D, 0x8F, 0x3F, 0xE0, 0x05, 0xC7, 0xB8, 0x7B, 0xAD, 0xD7, 0x3D, 0x6E, 0xD5, 0x34, 0x96, - 0x15, 0xF3, 0xC7, 0xFA, 0xBD, 0x2F, 0x74, 0x5B, 0x9B, 0x1E, 0x12, 0x28, 0x73, 0x00, 0x91, 0xDE, - 0x90, 0x40, 0x6A, 0xBF, 0x55, 0x76, 0x9B, 0xAD, 0x4B, 0x44, 0x0F, 0xC4, 0xD1, 0x92, 0x1A, 0x42, - 0xEC, 0x3D, 0x9B, 0xAC, 0x7D, 0xFC, 0x05, 0x05, 0xED, 0x9E, 0xEC, 0xFD, 0xA7, 0x72, 0x41, 0xE8, - 0x52, 0x41, 0xE0, 0xEE, 0xBE, 0xCD, 0xF2, 0xD4, 0x0E, 0x78, 0xD2, 0xD5, 0x78, 0x6A, 0x57, 0xE0, - 0xA9, 0xBD, 0x23, 0x9E, 0x3A, 0x01, 0x4F, 0x6D, 0x35, 0x9E, 0x3A, 0x15, 0x78, 0xEA, 0xEC, 0x88, - 0xA7, 0x6E, 0xC0, 0x53, 0x47, 0x8D, 0xA7, 0x6E, 0x05, 0x9E, 0xBA, 0x3B, 0xE2, 0xA9, 0x17, 0xF0, - 0xD4, 0x55, 0xE3, 0xA9, 0x57, 0x81, 0xA7, 0xDE, 0x8E, 0x78, 0xEA, 0x07, 0x3C, 0xF5, 0xD4, 0x78, - 0xEA, 0x57, 0xE0, 0xA9, 0xBF, 0x23, 0x9E, 0x8E, 0x02, 0x9E, 0xFA, 0x6A, 0x3C, 0x1D, 0x55, 0xE0, - 0xE9, 0x68, 0x47, 0x3C, 0x1D, 0x07, 0x3C, 0x1D, 0xA9, 0xF1, 0x74, 0x5C, 0x81, 0xA7, 0xE3, 0x1D, - 0xF1, 0x74, 0x12, 0xF0, 0x74, 0xAC, 0xC6, 0xD3, 0x49, 0x05, 0x9E, 0x4E, 0x76, 0xC4, 0x13, 0xEE, - 0xA6, 0x62, 0x4C, 0x9D, 0x28, 0x0E, 0xBA, 0xAD, 0x0A, 0x5C, 0x19, 0xBB, 0xE2, 0x2A, 0x4C, 0x25, - 0x74, 0xD5, 0x5C, 0xA2, 0x4A, 0x32, 0x31, 0xDC, 0x15, 0x5B, 0x51, 0x36, 0xA1, 0x98, 0x4E, 0xE8, - 0x55, 0xF2, 0x89, 0xD1, 0xAE, 0xD8, 0x0A, 0x13, 0x0A, 0x5D, 0x31, 0xA3, 0xD0, 0xAB, 0xA4, 0x14, - 0xE3, 0x5D, 0xB1, 0x15, 0xE6, 0x14, 0xBA, 0x62, 0x52, 0xA1, 0x57, 0xC9, 0x2A, 0xC8, 0xAE, 0xD8, - 0x0A, 0xD3, 0x0A, 0x5D, 0x31, 0xAF, 0xD0, 0xAB, 0x24, 0x16, 0x93, 0x5D, 0xB1, 0x15, 0x66, 0x16, - 0xBA, 0x62, 0x6A, 0xA1, 0x57, 0xC8, 0x2D, 0x4E, 0xE4, 0x13, 0xB1, 0x8D, 0xB2, 0x45, 0x7C, 0x3E, - 0x45, 0x8E, 0x26, 0x6D, 0x4A, 0x0F, 0x1C, 0x71, 0x20, 0x7C, 0x22, 0x8E, 0x09, 0xE4, 0xC2, 0xB1, - 0x27, 0xE6, 0x34, 0x2C, 0x32, 0x3C, 0x98, 0x67, 0x63, 0x3C, 0xE1, 0x85, 0xBF, 0xCA, 0x85, 0x86, - 0xAB, 0x57, 0x97, 0xC5, 0xCA, 0x0C, 0x62, 0x2F, 0x7F, 0xA1, 0x22, 0x03, 0x90, 0xDD, 0x16, 0xBF, - 0x3E, 0xA0, 0x54, 0x57, 0xA0, 0x40, 0x45, 0x2A, 0x0A, 0x3D, 0xB1, 0xA2, 0xD0, 0x57, 0xAE, 0x28, - 0x30, 0xE2, 0xB6, 0x53, 0x4B, 0x00, 0xDC, 0x1D, 0xF6, 0xC9, 0x04, 0x75, 0xA6, 0x3B, 0xE5, 0x99, - 0xEE, 0x15, 0x61, 0xBA, 0x53, 0x86, 0xE9, 0x12, 0xCF, 0xB4, 0x2A, 0xCA, 0x09, 0xE8, 0x7D, 0x6D, - 0xDE, 0x90, 0xB1, 0xF6, 0x8B, 0xBA, 0xA8, 0xF4, 0xF2, 0xA2, 0x3A, 0x2A, 0x22, 0x2A, 0x7D, 0x8B, - 0xF6, 0xD1, 0x0B, 0xF8, 0xFE, 0x51, 0x9D, 0xEF, 0x5E, 0x79, 0xBE, 0x3B, 0x45, 0xF8, 0xEE, 0x6D, - 0x91, 0xEF, 0x6E, 0xC0, 0xF7, 0x27, 0x75, 0xBE, 0xBB, 0xE5, 0xF9, 0xEE, 0x16, 0xE1, 0xBB, 0xBB, - 0x45, 0xBE, 0xDB, 0x10, 0x6C, 0x7E, 0xFC, 0xA4, 0x7D, 0x9C, 0xB9, 0xC4, 0x9B, 0xE5, 0x57, 0xE2, - 0x18, 0x44, 0xD9, 0xB1, 0xBD, 0xB7, 0x83, 0xB9, 0x1B, 0x52, 0xD8, 0x11, 0x79, 0xCA, 0xCD, 0x9B, - 0x19, 0x84, 0xCA, 0x37, 0x89, 0xE4, 0x3C, 0xC9, 0x67, 0x6E, 0xBA, 0x2A, 0x53, 0xDB, 0x8B, 0x61, - 0xC7, 0xB5, 0xC1, 0xDB, 0x65, 0x81, 0xF1, 0xED, 0xB8, 0xBC, 0x3D, 0xAB, 0x57, 0xCC, 0x19, 0x5D, - 0x5B, 0xB3, 0xE7, 0x13, 0xCA, 0x33, 0xE4, 0x65, 0x9E, 0x82, 0xDA, 0xCB, 0x57, 0x21, 0x7A, 0x3B, - 0xA8, 0x92, 0x63, 0xA4, 0x3F, 0x62, 0xEC, 0xFC, 0x88, 0x0C, 0x69, 0x90, 0xB1, 0x14, 0x18, 0x8C, - 0x8E, 0x0A, 0x6A, 0xF3, 0xB8, 0x64, 0x74, 0x42, 0x1A, 0xB7, 0xA6, 0x4E, 0x9C, 0x7A, 0xA0, 0x00, - 0x3E, 0x95, 0x10, 0x40, 0xBF, 0xBC, 0x00, 0x0A, 0x65, 0x2E, 0x48, 0xE3, 0xF6, 0x04, 0xD0, 0x62, - 0x02, 0xB8, 0x8A, 0x5E, 0x7A, 0x9D, 0x61, 0xD0, 0x15, 0x2A, 0x50, 0xBD, 0x1D, 0xAC, 0x91, 0x60, - 0xA4, 0xD5, 0x03, 0x8B, 0x06, 0x8E, 0x8A, 0x29, 0xB4, 0x5D, 0x34, 0xBF, 0x92, 0x17, 0x3F, 0x15, - 0xF2, 0xEF, 0x6D, 0x26, 0x58, 0xED, 0x56, 0x60, 0xD1, 0xC5, 0x05, 0xD0, 0x2A, 0x2F, 0x00, 0xBD, - 0x90, 0x00, 0x5A, 0x0F, 0x2B, 0x19, 0xEF, 0xAF, 0x7F, 0xA7, 0x38, 0x5F, 0x5A, 0x45, 0xDD, 0x5F, - 0x18, 0xCD, 0xDA, 0x45, 0x84, 0xB5, 0x55, 0xEF, 0xEF, 0x44, 0x9C, 0x6B, 0xBF, 0x68, 0xF1, 0xAD, - 0xAF, 0x59, 0x71, 0xA0, 0x7C, 0x11, 0xB0, 0xB7, 0x83, 0xF5, 0x2A, 0xA4, 0xF0, 0x44, 0xC2, 0x59, - 0xC1, 0x00, 0x7F, 0x52, 0xDE, 0x1D, 0x0A, 0x69, 0x18, 0x69, 0xDD, 0x9E, 0x8A, 0x7B, 0x31, 0x41, - 0xB0, 0x6F, 0xA4, 0xAB, 0xA8, 0xB8, 0x7C, 0xE5, 0xB0, 0xB7, 0x83, 0xA5, 0x2E, 0xA4, 0xF0, 0x58, - 0xC2, 0x59, 0x41, 0x15, 0x17, 0x4D, 0x49, 0x8F, 0x4B, 0x4E, 0x2D, 0xF5, 0x6D, 0xE6, 0xA4, 0x58, - 0xED, 0x16, 0x04, 0x21, 0x7E, 0xC0, 0x22, 0x4B, 0xC1, 0xE5, 0x2B, 0xDE, 0xBD, 0x8A, 0xEB, 0xB3, - 0xDB, 0x8B, 0xE4, 0x47, 0xB2, 0xAF, 0x9B, 0xE7, 0xDB, 0x41, 0xD1, 0x5C, 0xB6, 0x55, 0x72, 0xE0, - 0xDB, 0x6A, 0x2A, 0x0B, 0xBD, 0x43, 0xD6, 0xB3, 0xCE, 0x7D, 0x86, 0x09, 0x94, 0x5F, 0x79, 0xEB, - 0xED, 0x60, 0x7B, 0x08, 0x52, 0xD8, 0xAE, 0x0D, 0x3E, 0x15, 0x64, 0xAA, 0x4A, 0xFD, 0xA0, 0xF4, - 0xFE, 0x90, 0xDD, 0x95, 0xDE, 0x47, 0xF3, 0x9B, 0xE2, 0xA5, 0xF7, 0x8B, 0x77, 0x3F, 0x17, 0x2B, - 0xBD, 0x8B, 0xBD, 0xEC, 0xAE, 0xF4, 0x5E, 0xCE, 0x66, 0x0A, 0x6D, 0x94, 0x05, 0xC6, 0xF0, 0x55, - 0x48, 0x23, 0xD3, 0xA3, 0x5D, 0x82, 0x60, 0xB4, 0xF7, 0xC1, 0x69, 0x28, 0x22, 0xE1, 0x19, 0xE5, - 0x78, 0xFB, 0x2C, 0xEB, 0xE9, 0x64, 0x84, 0x85, 0x52, 0xCF, 0xF0, 0xE2, 0x0B, 0x75, 0xFA, 0xFC, - 0x1B, 0x5F, 0x15, 0x9E, 0x05, 0x4E, 0x7B, 0xD7, 0xC8, 0xC1, 0x51, 0x41, 0xDC, 0x5B, 0x7F, 0xC5, - 0xC0, 0x20, 0xA1, 0x28, 0x9D, 0xEA, 0x47, 0xC7, 0x73, 0xE5, 0x3A, 0x39, 0x05, 0x2B, 0x12, 0xCD, - 0x3B, 0x62, 0xA9, 0x45, 0x3D, 0x9A, 0x33, 0xF2, 0xB6, 0x13, 0xCD, 0x11, 0x77, 0x8C, 0xF7, 0x02, - 0x59, 0x0D, 0x83, 0x2D, 0x26, 0x00, 0xF9, 0x26, 0x0A, 0x05, 0x01, 0xA4, 0x49, 0x60, 0x23, 0x22, - 0x68, 0x53, 0x09, 0xB4, 0x13, 0xDA, 0x4F, 0x09, 0xFC, 0xB4, 0x7D, 0xD9, 0xB8, 0xDF, 0xD9, 0x41, - 0x6D, 0x02, 0xC5, 0x15, 0xE3, 0xA8, 0xA0, 0x4E, 0x8B, 0x2D, 0x0E, 0xC6, 0x74, 0x5A, 0xCC, 0xA8, - 0xB7, 0xB6, 0x3A, 0x08, 0xC8, 0x3B, 0x54, 0x00, 0x1D, 0x65, 0x95, 0x96, 0x9F, 0x66, 0x76, 0x76, - 0x90, 0x9F, 0xA0, 0xB4, 0x62, 0x1C, 0x15, 0x54, 0x69, 0xB1, 0xA5, 0xCF, 0x98, 0x4A, 0xD5, 0xE7, - 0x97, 0x9C, 0xC8, 0xAD, 0xA9, 0xB4, 0x4B, 0x05, 0xD0, 0x55, 0x56, 0x69, 0xF9, 0x59, 0x47, 0x67, - 0x07, 0xBB, 0x77, 0x51, 0x5A, 0x31, 0x8E, 0x0A, 0xAA, 0xB4, 0xD8, 0x92, 0x5D, 0x4C, 0xA5, 0xEA, - 0xF3, 0x49, 0x4E, 0xE4, 0xD6, 0x54, 0xDA, 0xA3, 0x02, 0xE8, 0x29, 0xAB, 0xB4, 0x7C, 0xA5, 0xA0, - 0xB3, 0x83, 0x62, 0x10, 0x4A, 0x2B, 0xC6, 0x51, 0x41, 0x95, 0x16, 0x5B, 0x7D, 0x8E, 0xA9, 0x54, - 0x7D, 0x9D, 0x83, 0x13, 0xB9, 0x35, 0x95, 0xF6, 0xA9, 0x00, 0xFA, 0xCA, 0x2A, 0x2D, 0xBF, 0xBF, - 0xAA, 0xB3, 0x83, 0xBD, 0xDB, 0x28, 0xAD, 0x18, 0x47, 0x05, 0x55, 0x5A, 0xAC, 0x74, 0x1B, 0x53, - 0xA9, 0xFA, 0xCA, 0x0D, 0x27, 0x72, 0x6B, 0x2A, 0x3D, 0xA2, 0x02, 0x38, 0x52, 0x56, 0x69, 0xF9, - 0xAD, 0xEB, 0x9D, 0x1D, 0xD4, 0xF3, 0x50, 0x5A, 0x31, 0x8E, 0x0A, 0xAA, 0xB4, 0x58, 0x05, 0x27, - 0xA6, 0x52, 0xF5, 0xBD, 0x53, 0x9C, 0xC8, 0xAD, 0xA9, 0xF4, 0x98, 0x0A, 0xE0, 0x58, 0x59, 0xA5, - 0xE5, 0x77, 0xEE, 0x77, 0x76, 0xB0, 0x73, 0x1F, 0xA5, 0x15, 0xE3, 0xA8, 0xA0, 0x4A, 0x8B, 0xD5, - 0x66, 0x63, 0x2A, 0x55, 0xDF, 0xEE, 0xC4, 0x89, 0xDC, 0x9A, 0x4A, 0x4F, 0xA8, 0x00, 0x4E, 0x94, - 0x55, 0x5A, 0x7E, 0xCB, 0x40, 0x67, 0x07, 0x9B, 0x5F, 0x50, 0x5A, 0x2D, 0x91, 0xA3, 0x82, 0x2A, - 0x2D, 0xB6, 0xC0, 0xD8, 0x49, 0xD9, 0xFA, 0xA2, 0xA0, 0xD2, 0xB4, 0x05, 0xC6, 0x07, 0x50, 0xBF, - 0x33, 0x56, 0xC3, 0x12, 0x1F, 0xFC, 0x79, 0xF1, 0xD3, 0xCB, 0xF4, 0xC2, 0x7E, 0x6A, 0x15, 0x2F, - 0xD6, 0xD7, 0x43, 0x2F, 0xE3, 0x89, 0xF2, 0x42, 0xC2, 0x41, 0xCB, 0xEC, 0x25, 0x91, 0xDA, 0x1A, - 0xF3, 0xD9, 0x96, 0xC6, 0x80, 0x0B, 0x58, 0x5A, 0xA7, 0xDB, 0x92, 0x27, 0x2D, 0x39, 0x96, 0xC6, - 0xA9, 0xDC, 0x4E, 0xF0, 0x40, 0xE4, 0x30, 0x17, 0x47, 0xDE, 0x3F, 0x28, 0xAD, 0xE9, 0x30, 0x80, - 0x78, 0xF8, 0xE8, 0xB6, 0x4E, 0x14, 0xE3, 0x07, 0xC8, 0x20, 0x6D, 0x63, 0xFC, 0x06, 0x03, 0x08, - 0xD2, 0xD8, 0x61, 0x4C, 0xBD, 0x51, 0x66, 0x2A, 0x59, 0x05, 0x28, 0xC4, 0x54, 0x5A, 0x65, 0x67, - 0xC3, 0x4C, 0x75, 0x19, 0x53, 0x19, 0x4E, 0x9A, 0x60, 0x2A, 0x39, 0x0F, 0x2E, 0xC4, 0x54, 0xDA, - 0x44, 0x38, 0x62, 0xEA, 0x21, 0x04, 0x3A, 0x32, 0x32, 0xA6, 0xA3, 0x12, 0xA1, 0xEE, 0xF2, 0xE2, - 0xF0, 0xC5, 0x9B, 0x0B, 0x8D, 0x2E, 0x69, 0x3A, 0x56, 0xC1, 0x88, 0x17, 0xEF, 0xF4, 0x2F, 0x15, - 0xF3, 0x28, 0xE9, 0x42, 0xD4, 0x7B, 0x73, 0xA1, 0x1A, 0xF0, 0x38, 0x64, 0x91, 0x90, 0xD7, 0x6B, - 0x75, 0xCA, 0x54, 0x08, 0x43, 0x22, 0xB7, 0x14, 0xF4, 0x28, 0xFA, 0x76, 0x24, 0x83, 0xCB, 0x62, - 0x32, 0x28, 0x54, 0x25, 0x8D, 0xCB, 0xA0, 0x40, 0xD8, 0x0F, 0x88, 0xDC, 0xA6, 0x0C, 0x30, 0x4A, - 0x5E, 0x5E, 0x68, 0xEF, 0xFF, 0xA9, 0x5D, 0xDE, 0x2C, 0x1C, 0x6F, 0xE9, 0x92, 0xDC, 0xA8, 0xC2, - 0xE1, 0xE2, 0x71, 0xA5, 0xDF, 0xEB, 0x75, 0x54, 0x03, 0x4B, 0x2F, 0x7D, 0x08, 0x98, 0xB4, 0x36, - 0x18, 0x2F, 0x29, 0xA1, 0xDD, 0x90, 0xC1, 0x0F, 0x04, 0x34, 0xAD, 0x14, 0x37, 0x39, 0x60, 0x9C, - 0x43, 0xBD, 0x85, 0xDB, 0xAB, 0x15, 0x19, 0x94, 0x67, 0x94, 0x9D, 0x8D, 0x0E, 0x07, 0x94, 0xCA, - 0x5E, 0xC8, 0xDE, 0xA7, 0x8F, 0x57, 0x6A, 0x8C, 0x25, 0xEB, 0x68, 0xC5, 0x54, 0x97, 0xF6, 0xC8, - 0x68, 0xC1, 0x41, 0x41, 0xDE, 0xE8, 0xEC, 0x10, 0x62, 0xEC, 0xBA, 0x6C, 0x52, 0x44, 0x76, 0x36, - 0x31, 0xA7, 0x60, 0xB0, 0x72, 0x59, 0x52, 0x19, 0xB2, 0xB7, 0x9A, 0xE2, 0x17, 0x48, 0x9B, 0x23, - 0x08, 0xF3, 0xA0, 0x7B, 0xF4, 0xAE, 0x40, 0xB2, 0x73, 0x63, 0x4A, 0xA2, 0xEB, 0x1A, 0x0B, 0xE2, - 0x59, 0xC1, 0xD9, 0x60, 0x08, 0x8D, 0x6B, 0xC2, 0x3F, 0x97, 0xAA, 0xCD, 0x5C, 0x32, 0x39, 0xAF, - 0x7D, 0x13, 0xE2, 0xE4, 0x8F, 0xDF, 0x61, 0x93, 0x9A, 0x36, 0x76, 0x56, 0xB6, 0xE5, 0x18, 0x18, - 0xF8, 0x8D, 0x85, 0x0F, 0x94, 0x1E, 0xFC, 0xB1, 0xC0, 0x37, 0x5C, 0x19, 0xF8, 0xB4, 0x96, 0x91, - 0xD1, 0x8F, 0xA0, 0xFE, 0x91, 0xE5, 0x78, 0xC1, 0xB4, 0x0D, 0x0F, 0xC3, 0xCF, 0xAB, 0xFE, 0xCF, - 0x7F, 0xE7, 0x6D, 0x15, 0x30, 0xE7, 0x53, 0x41, 0x00, 0x35, 0xCD, 0x73, 0x47, 0xE7, 0x35, 0xA0, - 0xD4, 0x75, 0x3C, 0xCF, 0x71, 0xCD, 0xA9, 0x99, 0x32, 0x36, 0xA7, 0x49, 0xFB, 0x50, 0x26, 0xEE, - 0x44, 0x63, 0xC9, 0xB0, 0x7F, 0xE6, 0x8D, 0x5C, 0x73, 0xE1, 0x0F, 0x1E, 0x8D, 0x9D, 0xD1, 0x72, - 0x4E, 0x6C, 0xFF, 0xC0, 0x18, 0x8F, 0x2F, 0xAF, 0xE1, 0xE0, 0x3B, 0xFC, 0x16, 0x1F, 0x48, 0xBE, - 0x51, 0x7F, 0xF5, 0xAF, 0x77, 0x38, 0x0C, 0xE3, 0x35, 0x90, 0x17, 0x19, 0xD7, 0xF7, 0xB5, 0xC9, - 0xD2, 0x66, 0x23, 0x61, 0x83, 0x60, 0xDB, 0x3D, 0xED, 0x2B, 0x60, 0xBC, 0x36, 0x5C, 0x6D, 0x68, - 0x78, 0xE4, 0xAD, 0xE3, 0xF9, 0xDA, 0xB9, 0x16, 0x62, 0xB4, 0x9C, 0x11, 0xDD, 0xB7, 0x71, 0xC0, - 0xF8, 0xE2, 0x2D, 0x19, 0xE3, 0x3F, 0xBA, 0x16, 0x34, 0x0D, 0xA1, 0x9E, 0x6A, 0xF5, 0xD3, 0x63, - 0xBD, 0x8E, 0xF6, 0x17, 0x76, 0x31, 0x21, 0x10, 0xE6, 0xA1, 0x5D, 0x63, 0xE9, 0x5A, 0xFB, 0xDA, - 0x68, 0xB8, 0xF7, 0x95, 0x52, 0x4F, 0x2F, 0xE3, 0xB5, 0x3D, 0xCE, 0xCC, 0x81, 0x3F, 0x23, 0x76, - 0x23, 0xA2, 0xCC, 0x25, 0xDE, 0xC2, 0xB1, 0x3D, 0xC2, 0x88, 0x63, 0x3F, 0x73, 0x12, 0x5D, 0x3F, - 0xF0, 0x7C, 0xC3, 0x5F, 0x7A, 0xDA, 0xE3, 0xF3, 0x73, 0xAD, 0xDD, 0x6A, 0x89, 0xCD, 0x34, 0xE8, - 0x26, 0xD9, 0x6E, 0x5F, 0x4B, 0x5C, 0xF8, 0x48, 0x6E, 0xFC, 0xBD, 0x67, 0x21, 0xCC, 0x9D, 0x46, - 0x2C, 0x8F, 0xC4, 0x90, 0x84, 0x00, 0xF8, 0xDE, 0xB8, 0xC6, 0x5E, 0x9C, 0xC0, 0xC6, 0xD8, 0xF0, - 0x8D, 0xBD, 0xAF, 0x31, 0x7D, 0x41, 0xAF, 0x40, 0xC9, 0xBE, 0x46, 0x6F, 0x3D, 0x13, 0x6E, 0xDD, - 0xED, 0x1D, 0x80, 0x0C, 0x81, 0xDF, 0x10, 0x9A, 0xB8, 0x6E, 0x9C, 0x62, 0x0A, 0xDD, 0xD4, 0xF7, - 0x35, 0xBC, 0x13, 0x87, 0x15, 0x88, 0x7C, 0x14, 0x5C, 0x0B, 0x84, 0x96, 0x8D, 0x56, 0x82, 0x92, - 0xA1, 0xBB, 0x8B, 0xA9, 0x08, 0x02, 0xCE, 0x07, 0x32, 0x05, 0x89, 0x4D, 0xF7, 0x79, 0xFC, 0xD9, - 0xA7, 0xC1, 0x67, 0x9F, 0xC5, 0x2D, 0x41, 0x6B, 0x87, 0x87, 0xE0, 0xD2, 0x9E, 0x63, 0x11, 0xB0, - 0x8A, 0x69, 0xA3, 0xCE, 0xBF, 0xF5, 0x0A, 0x16, 0x55, 0x6F, 0xDD, 0xD4, 0x9F, 0x02, 0x82, 0x03, - 0xDF, 0xB9, 0xF2, 0x5D, 0xD3, 0x9E, 0x36, 0xF4, 0xFE, 0x5E, 0x84, 0x8D, 0xDE, 0x46, 0x94, 0x89, - 0xFB, 0xF4, 0x3A, 0xED, 0x24, 0x79, 0xA3, 0xC1, 0xAF, 0x3F, 0xAD, 0xEF, 0xD5, 0x39, 0xF1, 0xF4, - 0x1C, 0xCC, 0xAD, 0xC1, 0x0E, 0x9E, 0x50, 0x1A, 0xF7, 0xB4, 0xB3, 0x33, 0xDE, 0x0D, 0x6B, 0x85, - 0x17, 0xA1, 0x11, 0xFD, 0x93, 0xB8, 0x15, 0x9A, 0xE2, 0xEF, 0xFF, 0xF8, 0x1A, 0xD8, 0xEC, 0xDD, - 0x21, 0x50, 0xFD, 0x1C, 0x43, 0xF0, 0x3F, 0xBE, 0xC2, 0xFF, 0x77, 0x4F, 0x68, 0xD4, 0xFD, 0xC7, - 0x57, 0xFC, 0x73, 0xF7, 0x04, 0x7A, 0x82, 0x63, 0xDA, 0xDF, 0xDD, 0xEF, 0x54, 0x0E, 0xEB, 0xD2, - 0x9B, 0xA6, 0x4A, 0x2F, 0x14, 0x5B, 0x61, 0x9A, 0xA6, 0x19, 0x44, 0xFD, 0x1E, 0xF9, 0x6F, 0x63, - 0xE4, 0x8C, 0x41, 0x3D, 0x3E, 0x58, 0x72, 0xA0, 0x74, 0x0B, 0x54, 0x12, 0x08, 0xAA, 0x15, 0x28, - 0xDD, 0x9C, 0xD0, 0x96, 0x1A, 0x77, 0x95, 0xC8, 0x40, 0x82, 0x96, 0x0B, 0xC3, 0xF5, 0xC8, 0xB7, - 0xB6, 0xDF, 0xF0, 0x63, 0x4E, 0x91, 0x22, 0xF1, 0xC1, 0x20, 0xC6, 0x02, 0xFE, 0x00, 0x0E, 0xDA, - 0xD5, 0xB9, 0xD2, 0x42, 0x63, 0xE3, 0x7F, 0x13, 0x66, 0xF3, 0xA6, 0x90, 0xD9, 0x34, 0xA8, 0xD8, - 0xC2, 0x3E, 0xF7, 0x8A, 0x98, 0x10, 0x90, 0x25, 0x18, 0x10, 0x75, 0x88, 0x48, 0x64, 0xEC, 0x62, - 0x8A, 0x43, 0xFC, 0x3C, 0xB2, 0xBE, 0x34, 0x6E, 0xE0, 0xBF, 0x64, 0xCC, 0x5A, 0xD3, 0x15, 0x36, - 0x7A, 0x8E, 0xFF, 0x81, 0x82, 0xF0, 0x4F, 0xAA, 0xA1, 0x00, 0xD6, 0xF7, 0x96, 0xD5, 0x60, 0x1F, - 0x98, 0x03, 0x1B, 0x59, 0x42, 0x3C, 0xF4, 0x6E, 0x31, 0x32, 0x39, 0x8E, 0xFF, 0x79, 0x5F, 0x5B, - 0xB8, 0x40, 0x18, 0xFD, 0x96, 0x0A, 0x1C, 0x03, 0x22, 0x62, 0xB3, 0xBF, 0xB9, 0x14, 0x2C, 0x2C, - 0xEB, 0x39, 0xC3, 0x0A, 0x24, 0xB0, 0x03, 0x30, 0x99, 0x25, 0x9A, 0x2E, 0xFC, 0x7F, 0xF7, 0x04, - 0x3A, 0x81, 0x43, 0xF8, 0xFF, 0xEE, 0x09, 0x76, 0x85, 0x46, 0x85, 0x3D, 0xDE, 0x3D, 0x81, 0x1E, - 0xE1, 0x04, 0xFE, 0x87, 0x36, 0xD8, 0x2F, 0xB6, 0xC2, 0xBF, 0x70, 0x87, 0xF6, 0x8F, 0x37, 0xE9, - 0x01, 0xBB, 0xC0, 0x4F, 0xB3, 0x18, 0x64, 0x6F, 0xD7, 0x6F, 0xD0, 0xB7, 0x9D, 0x7F, 0xBE, 0x01, - 0x76, 0xE8, 0xC1, 0x2D, 0xC4, 0x20, 0x7B, 0x8C, 0xE7, 0xF8, 0xE7, 0x36, 0x50, 0x30, 0x5E, 0xE0, - 0x47, 0x70, 0x8D, 0xBE, 0x11, 0x16, 0x2F, 0xB1, 0x03, 0x6C, 0x45, 0xDF, 0xDF, 0x49, 0x5B, 0xB1, - 0x23, 0xB8, 0xC6, 0xDF, 0xFA, 0xB8, 0xAF, 0xF1, 0xF7, 0x0A, 0xE6, 0x0A, 0x27, 0x7A, 0xEF, 0xDF, - 0x73, 0xEF, 0x06, 0x19, 0x64, 0xA4, 0xA1, 0x54, 0xC2, 0xB3, 0xDB, 0xBB, 0x27, 0x04, 0xEF, 0x51, - 0x22, 0xE1, 0xF8, 0x96, 0x1F, 0xC3, 0x75, 0xA0, 0x0F, 0xEF, 0x04, 0x04, 0xD3, 0x0B, 0xB7, 0xD1, - 0x05, 0x68, 0xE1, 0xE3, 0x7D, 0x4E, 0x3C, 0x9C, 0xDD, 0x86, 0x67, 0x08, 0x4D, 0x61, 0x39, 0x1B, - 0x70, 0x7A, 0x1B, 0x9D, 0xC2, 0x5D, 0xE4, 0x05, 0x15, 0xC0, 0x79, 0xBA, 0x7B, 0xC2, 0x79, 0x42, - 0x2D, 0xB2, 0xA3, 0xB8, 0xA8, 0xE1, 0x7F, 0xF4, 0x23, 0x9F, 0x07, 0xEC, 0x4F, 0x81, 0x77, 0x12, - 0x6B, 0x4F, 0x3B, 0x1F, 0xF0, 0xB8, 0x8F, 0x01, 0x00, 0x3C, 0x0A, 0xAE, 0x13, 0xEB, 0xC0, 0xF0, - 0xC1, 0x21, 0x20, 0x6F, 0x22, 0xDE, 0x01, 0x46, 0x94, 0xD0, 0xCD, 0xD7, 0x6E, 0x1D, 0xD8, 0xE0, - 0x16, 0x14, 0xE1, 0xDE, 0x29, 0x0F, 0x1B, 0x88, 0x88, 0x71, 0xB9, 0x86, 0x8B, 0x5D, 0x4E, 0x43, - 0xC7, 0xEE, 0xA6, 0x60, 0xE4, 0xA1, 0x30, 0x0E, 0x81, 0x17, 0xD3, 0xB0, 0xD1, 0x51, 0x43, 0xC0, - 0xD5, 0xEE, 0xF5, 0x22, 0x6C, 0x89, 0x48, 0xC7, 0xE6, 0x94, 0x28, 0x90, 0x03, 0xCC, 0xCF, 0xA3, - 0xA1, 0x70, 0x04, 0xE6, 0xA0, 0xD5, 0x83, 0x09, 0x65, 0xFD, 0x74, 0x2D, 0xC2, 0x01, 0x04, 0x2F, - 0x20, 0x68, 0xCF, 0x19, 0x8D, 0xA7, 0x51, 0xF8, 0xD4, 0xB4, 0x21, 0x24, 0x3B, 0x5F, 0x9E, 0xC5, - 0x90, 0xD1, 0xD4, 0x3F, 0xC4, 0xC4, 0xAE, 0x61, 0xA2, 0x90, 0xB8, 0xC4, 0xB6, 0xDB, 0x35, 0x1D, - 0x9B, 0xC8, 0x7B, 0x8D, 0xC5, 0x4B, 0xDE, 0x11, 0x3F, 0x1B, 0x93, 0x89, 0xB1, 0xB4, 0xFC, 0x08, - 0xCC, 0x25, 0x90, 0xE8, 0xDA, 0x3C, 0x6C, 0xB1, 0x24, 0x3F, 0x77, 0xE8, 0xCE, 0x18, 0x2A, 0x82, - 0x51, 0xE1, 0x71, 0x72, 0x54, 0x00, 0xAB, 0x74, 0xFD, 0x46, 0xFD, 0xD2, 0x75, 0x1D, 0xF7, 0xD7, - 0xFA, 0x53, 0x6C, 0xF4, 0xB4, 0xFE, 0xDB, 0xA9, 0x46, 0xE3, 0xE9, 0x5E, 0x3C, 0xB8, 0x0B, 0xE1, - 0xF3, 0xF0, 0x50, 0x7B, 0xE1, 0xFB, 0x06, 0x28, 0x00, 0x6B, 0x2C, 0x33, 0x94, 0x8F, 0x66, 0xF0, - 0x24, 0xD0, 0x71, 0xD1, 0x28, 0xD9, 0xF7, 0xEE, 0x41, 0x22, 0x98, 0x58, 0x7A, 0x00, 0x12, 0x24, - 0x99, 0x14, 0xD5, 0xC1, 0xBF, 0x97, 0xC4, 0xBD, 0xBD, 0xA2, 0x02, 0x73, 0xDC, 0x17, 0x10, 0x2A, - 0xEB, 0x07, 0xD1, 0x3C, 0xA9, 0xCE, 0x72, 0x9E, 0x03, 0x40, 0x75, 0x09, 0x7D, 0x80, 0x8E, 0x23, - 0x9B, 0x67, 0xDC, 0x84, 0x7A, 0x87, 0x71, 0xEE, 0x9C, 0x2B, 0x23, 0x99, 0x64, 0x41, 0x0B, 0xC7, - 0xFE, 0x42, 0x6E, 0x97, 0x0B, 0x10, 0x7F, 0x94, 0x36, 0x25, 0x12, 0x39, 0x2E, 0x1D, 0x72, 0x00, - 0x2D, 0x2F, 0xF8, 0xC0, 0xA9, 0x77, 0x24, 0x8D, 0x22, 0x15, 0x50, 0xEB, 0x44, 0x4F, 0x7C, 0xB6, - 0xD6, 0xE8, 0xEE, 0x91, 0xFC, 0x4C, 0x92, 0x72, 0x72, 0x02, 0xB9, 0xF0, 0xC0, 0xB5, 0xA9, 0x63, - 0x27, 0x7A, 0x48, 0xA4, 0x83, 0x90, 0x0C, 0x46, 0x91, 0x61, 0xB9, 0x80, 0xE4, 0x93, 0xC4, 0x83, - 0x43, 0x68, 0x0B, 0xC1, 0xCD, 0xB9, 0xE3, 0x93, 0x44, 0xC4, 0x30, 0x6D, 0xD3, 0x37, 0x0D, 0xEB, - 0x53, 0x64, 0x8D, 0x5B, 0x75, 0x7F, 0x89, 0x8F, 0x17, 0xF0, 0xFF, 0xB5, 0x9C, 0x4F, 0x2D, 0x4F, - 0x59, 0xB3, 0x90, 0x30, 0x1E, 0x44, 0x56, 0x22, 0xCA, 0x21, 0x16, 0x16, 0xF8, 0xFD, 0xA0, 0xA7, - 0xC7, 0x8F, 0xE9, 0xD1, 0xA3, 0x50, 0x69, 0x41, 0xF4, 0x38, 0xD7, 0xA2, 0x1B, 0x09, 0x05, 0xAF, - 0xE3, 0x4E, 0xE0, 0x08, 0x90, 0x0B, 0x18, 0x12, 0x81, 0x7F, 0x01, 0xE9, 0x0D, 0xDA, 0xC2, 0xFF, - 0x47, 0xFD, 0x07, 0x14, 0xF5, 0xB7, 0x17, 0xE2, 0x33, 0x6C, 0x3B, 0xE1, 0x01, 0x0C, 0x4E, 0x9E, - 0x4F, 0x3F, 0x85, 0x44, 0x5B, 0x9E, 0x24, 0x87, 0xA1, 0x3B, 0x9C, 0xEC, 0xC3, 0x64, 0xE6, 0x92, - 0x85, 0xE7, 0x97, 0xB7, 0xDF, 0x8E, 0x1B, 0xF5, 0xF0, 0x8D, 0x46, 0xF5, 0x3D, 0x8C, 0x4B, 0x96, - 0x39, 0xFA, 0x12, 0x86, 0xA5, 0xC8, 0xF2, 0x20, 0xA5, 0xC1, 0xEC, 0x1F, 0x27, 0xD6, 0xE6, 0x88, - 0x9B, 0xEA, 0xAB, 0x0F, 0x2F, 0xDE, 0x7D, 0x7E, 0xF1, 0xF1, 0xE3, 0x07, 0x6D, 0x09, 0x36, 0xAB, - 0xF7, 0x3F, 0x63, 0xDA, 0x02, 0x93, 0x00, 0xF7, 0x33, 0xD0, 0xE7, 0x7D, 0xA6, 0x48, 0x5B, 0xBF, - 0xFE, 0xF6, 0x6B, 0xFB, 0x37, 0x00, 0xFD, 0xFA, 0x5F, 0x76, 0x9D, 0x31, 0x82, 0xA8, 0x9E, 0x02, - 0x2E, 0x3C, 0xFE, 0x5A, 0x7F, 0x1A, 0x18, 0x7C, 0x23, 0x9D, 0xC2, 0xF0, 0xF5, 0xBA, 0xF5, 0x3D, - 0x60, 0xF5, 0x6E, 0x1F, 0x50, 0xB1, 0x74, 0x10, 0xC6, 0x9C, 0x06, 0x96, 0x2A, 0x4C, 0xE8, 0x40, - 0x7F, 0x06, 0x7F, 0xCE, 0x34, 0xFD, 0x08, 0xFE, 0x3E, 0x7D, 0x1A, 0x99, 0x48, 0xC9, 0xEE, 0xEA, - 0x4F, 0x4D, 0xDA, 0x19, 0xCC, 0x4E, 0x1A, 0xE6, 0x19, 0x48, 0xF2, 0x79, 0x7D, 0xBF, 0x7E, 0x5A, - 0xAF, 0xC3, 0xB5, 0xA0, 0xFB, 0xBB, 0x18, 0x3B, 0x77, 0xCF, 0x42, 0x0E, 0xD9, 0xE8, 0x0A, 0x37, - 0x22, 0xF1, 0x8B, 0x59, 0xDD, 0x4B, 0x56, 0xE5, 0x3A, 0x4F, 0xD7, 0x09, 0x7B, 0x9B, 0xF5, 0x94, - 0x0E, 0x88, 0x22, 0x4C, 0x86, 0x82, 0x58, 0x68, 0x08, 0x7D, 0x2D, 0x15, 0x35, 0x1D, 0x6E, 0xC7, - 0x63, 0x17, 0xB4, 0x4D, 0xAD, 0x65, 0x6F, 0xCD, 0x85, 0xD5, 0x70, 0x60, 0x63, 0x09, 0x8E, 0xB5, - 0xE9, 0x66, 0x26, 0x12, 0xDA, 0x5A, 0xC0, 0xB2, 0x96, 0xF0, 0xB4, 0xEE, 0x2F, 0xD7, 0x61, 0x1A, - 0x9B, 0x2A, 0x6A, 0x6C, 0x2A, 0x68, 0x6C, 0xBA, 0x59, 0x8D, 0x71, 0xD4, 0x95, 0xB5, 0x16, 0xE0, - 0xC9, 0xD1, 0x5C, 0x2E, 0x3C, 0x57, 0x1A, 0xD7, 0xD6, 0x54, 0xA6, 0xAD, 0x32, 0x6A, 0x62, 0xB1, - 0x0B, 0x26, 0x45, 0xC4, 0x7D, 0xFB, 0xF1, 0xDD, 0x77, 0x18, 0x6D, 0xE4, 0x2A, 0x0B, 0x35, 0x96, - 0x4C, 0xAE, 0x24, 0x18, 0x30, 0x28, 0xC6, 0x2A, 0x1F, 0x89, 0xB0, 0xA9, 0x45, 0x15, 0x84, 0x1C, - 0x43, 0xE0, 0x05, 0x03, 0x35, 0xDF, 0xC5, 0x22, 0x41, 0xE0, 0xBC, 0x11, 0x54, 0x86, 0x2D, 0x20, - 0x80, 0x92, 0x12, 0x19, 0xE6, 0x35, 0x87, 0x11, 0x6A, 0x19, 0x3B, 0x77, 0x11, 0xEA, 0xAF, 0x9E, - 0x6A, 0x50, 0x0B, 0xA6, 0xEA, 0x51, 0x6C, 0xF3, 0x72, 0xA5, 0xC3, 0x27, 0xF4, 0x4A, 0x02, 0xE2, - 0x5F, 0x95, 0x93, 0x18, 0x38, 0x2F, 0x04, 0x14, 0xC0, 0x72, 0x2B, 0xC1, 0x42, 0x0B, 0x08, 0x4A, - 0x38, 0xE8, 0x97, 0xC8, 0x52, 0x30, 0xA8, 0x51, 0x41, 0x3F, 0xFD, 0x25, 0xC1, 0x10, 0x94, 0x2A, - 0x94, 0x90, 0x04, 0x9F, 0xAD, 0x4A, 0xC7, 0xA3, 0x46, 0x4C, 0xF0, 0xB1, 0x28, 0x09, 0x1E, 0x5E, - 0x1A, 0x51, 0x42, 0xC3, 0x3F, 0x74, 0x94, 0x8A, 0x45, 0x8D, 0x18, 0xFE, 0x6D, 0x21, 0x19, 0x4F, - 0xBC, 0x14, 0xA3, 0xC6, 0x13, 0xFF, 0x24, 0x4E, 0x3A, 0x1E, 0x45, 0xD9, 0xF0, 0xCF, 0xD0, 0xC8, - 0xAC, 0x8E, 0x55, 0x7E, 0x32, 0x1D, 0x83, 0x35, 0x01, 0x60, 0x9E, 0xAA, 0x3E, 0xD7, 0xC5, 0xCC, - 0x9A, 0x17, 0x8A, 0xB2, 0x30, 0xF0, 0x26, 0x49, 0x0C, 0x41, 0x74, 0xB8, 0x87, 0x92, 0xDD, 0x7D, - 0x44, 0xA1, 0xF7, 0x96, 0xA5, 0x16, 0x85, 0x16, 0x96, 0x15, 0x84, 0x9F, 0x10, 0x26, 0x25, 0xFC, - 0xD0, 0x25, 0x33, 0x5A, 0x6F, 0xCD, 0x94, 0x3F, 0x6D, 0xC1, 0xF0, 0xAE, 0x2B, 0x11, 0x71, 0xCC, - 0x97, 0x96, 0x92, 0x25, 0x41, 0x3B, 0x8E, 0x46, 0x34, 0x24, 0xBA, 0x1C, 0x77, 0xEB, 0xA9, 0x85, - 0xAE, 0x5B, 0x2F, 0x05, 0x03, 0x2D, 0x09, 0xAB, 0xE5, 0x66, 0xD0, 0x32, 0x05, 0xC9, 0xC2, 0x55, - 0x4B, 0xEF, 0xA0, 0x5D, 0x1A, 0x23, 0x58, 0x7F, 0x56, 0x63, 0x25, 0xF8, 0xEA, 0xB8, 0x8C, 0x0E, - 0x5A, 0xB5, 0xCE, 0x52, 0x0A, 0xFF, 0xBA, 0x73, 0x9A, 0x46, 0x16, 0xAA, 0x43, 0x6E, 0xF0, 0xFD, - 0x63, 0xC9, 0xB0, 0x5B, 0xB2, 0xD8, 0xBF, 0x7B, 0xE7, 0x30, 0xAE, 0x89, 0x82, 0x6B, 0x84, 0x2B, - 0xF3, 0x3C, 0xBB, 0x8B, 0xC0, 0x32, 0xBC, 0x63, 0x64, 0xD8, 0xD7, 0x46, 0xCC, 0x3B, 0x46, 0x30, - 0xFD, 0xF5, 0x09, 0x47, 0xDD, 0xA8, 0xB1, 0x06, 0x35, 0x4E, 0x23, 0x3B, 0x3B, 0xA0, 0x5B, 0xD6, - 0xB0, 0x10, 0x62, 0x92, 0x15, 0x3B, 0x89, 0xDD, 0x9E, 0x11, 0xFA, 0x9A, 0x10, 0x7E, 0x9F, 0x9D, - 0xB1, 0x06, 0x61, 0x2F, 0x43, 0x67, 0x7C, 0x7B, 0x60, 0x2C, 0x16, 0x10, 0xBC, 0x2E, 0x66, 0xA6, - 0x35, 0x6E, 0x30, 0x50, 0xC1, 0x44, 0x70, 0x6F, 0x02, 0xA1, 0xAB, 0x56, 0x1C, 0x2B, 0x30, 0x7C, - 0xC1, 0xAE, 0x35, 0xEA, 0xED, 0x71, 0xB0, 0x66, 0xC4, 0x9B, 0x1D, 0x8C, 0x5D, 0x63, 0xF5, 0x2D, - 0x6E, 0x6A, 0x68, 0x60, 0xA7, 0xFB, 0xAD, 0xFD, 0x16, 0x6F, 0xE0, 0xBB, 0xB7, 0x61, 0x96, 0x89, - 0x78, 0x71, 0xF1, 0xF7, 0xC7, 0x0F, 0xDF, 0x45, 0x78, 0x7D, 0xE7, 0x15, 0xBB, 0xD4, 0xA8, 0xD3, - 0x5D, 0x11, 0x87, 0x7F, 0x2C, 0x70, 0x2A, 0x10, 0x28, 0x45, 0x10, 0x23, 0x6E, 0x78, 0x40, 0x51, - 0xB1, 0xE6, 0xCF, 0x44, 0xA4, 0x70, 0xD9, 0x26, 0x2B, 0x0D, 0x30, 0x91, 0x86, 0x0C, 0x34, 0xD8, - 0x0E, 0x81, 0xE0, 0xC8, 0xC9, 0xEB, 0xA5, 0x65, 0xFD, 0x42, 0x0C, 0x17, 0xF4, 0xF1, 0x54, 0x6B, - 0xD4, 0x5A, 0xB5, 0xA7, 0x0D, 0x7A, 0xFD, 0x1D, 0xB0, 0x33, 0x6B, 0xEC, 0x3D, 0xD5, 0xF7, 0xF6, - 0x0E, 0x3C, 0xD0, 0x19, 0x69, 0x34, 0xDB, 0x41, 0x13, 0xF8, 0x43, 0xDB, 0xB0, 0x4E, 0xD2, 0xEF, - 0xBF, 0x75, 0x96, 0xAE, 0x97, 0xD5, 0xE0, 0x9D, 0x69, 0x63, 0x11, 0x27, 0xAB, 0xC9, 0x15, 0x01, - 0xC1, 0x8E, 0xD7, 0x9A, 0xD4, 0xE8, 0x2E, 0x0E, 0x5E, 0xFE, 0xD0, 0xE8, 0xE2, 0xB6, 0xD6, 0x10, - 0x2B, 0x3A, 0x7C, 0x19, 0x91, 0xA0, 0xA1, 0x37, 0x02, 0x8F, 0xBF, 0x13, 0x8D, 0x03, 0x5C, 0x16, - 0x0C, 0xE0, 0x7B, 0xF0, 0x80, 0x03, 0x97, 0xCC, 0x9D, 0x6B, 0xB2, 0xA6, 0x7F, 0x6C, 0x1E, 0x1A, - 0xFF, 0xCC, 0x1C, 0xB3, 0x32, 0x4D, 0x64, 0xB7, 0x58, 0x15, 0xC2, 0x0D, 0x22, 0xB8, 0x85, 0x02, - 0xF7, 0x53, 0x34, 0xEA, 0x6C, 0xF7, 0x0A, 0x1D, 0x15, 0xEE, 0x22, 0xB7, 0x99, 0x39, 0xAB, 0x2C, - 0x48, 0xD6, 0x7B, 0x02, 0x38, 0x84, 0x1E, 0x9B, 0x9E, 0x31, 0xB4, 0xF2, 0xBB, 0xE6, 0xED, 0xC6, - 0xBC, 0xFC, 0x0D, 0x0D, 0x82, 0x2B, 0x00, 0xEA, 0xBB, 0xB4, 0x4E, 0x28, 0xA0, 0x25, 0x76, 0x1E, - 0xD6, 0x80, 0xAC, 0x4C, 0xC4, 0x13, 0x03, 0x26, 0x4F, 0x71, 0xCC, 0xAC, 0x78, 0x5C, 0xA0, 0xAC, - 0x2C, 0x5E, 0x06, 0x88, 0xF8, 0x29, 0x98, 0x33, 0x58, 0xA8, 0xF6, 0x9C, 0xB2, 0xA0, 0x9D, 0xC6, - 0xEE, 0x86, 0xB9, 0x8D, 0x58, 0x30, 0x7D, 0xC4, 0xE2, 0xDF, 0x5F, 0xB0, 0x82, 0x1B, 0x52, 0x1E, - 0x93, 0xC0, 0x93, 0x27, 0x71, 0x6C, 0xB8, 0x8D, 0x85, 0x0D, 0x20, 0x61, 0x6F, 0xAC, 0x3D, 0x7B, - 0x7D, 0x78, 0xB4, 0xB2, 0xC0, 0x49, 0x82, 0xA1, 0xE0, 0x71, 0x4C, 0xF0, 0xC2, 0x18, 0x01, 0x84, - 0x98, 0x63, 0x2A, 0x20, 0xDC, 0x95, 0x56, 0x5B, 0x5B, 0xEF, 0x7F, 0x4E, 0xAD, 0xBE, 0x41, 0xF8, - 0xA6, 0xC4, 0x3D, 0x90, 0x3F, 0x1A, 0x73, 0x74, 0x21, 0x3E, 0x87, 0x4E, 0x60, 0x9C, 0xC6, 0x30, - 0x22, 0x63, 0x09, 0xBA, 0xF1, 0x77, 0x78, 0x48, 0x31, 0x4E, 0x0D, 0xD3, 0xBE, 0x20, 0x26, 0xA6, - 0x7F, 0x7B, 0xC2, 0x5D, 0xDA, 0x3D, 0x20, 0xC2, 0x0D, 0x83, 0xC2, 0x72, 0xC6, 0xFA, 0x7A, 0xC8, - 0xE1, 0x21, 0x6D, 0x9A, 0x82, 0x86, 0x76, 0xB1, 0x8E, 0x26, 0x93, 0xFA, 0xD5, 0xF0, 0x33, 0x62, - 0x93, 0x09, 0x85, 0xA2, 0x5B, 0x0D, 0x51, 0x1C, 0xB4, 0x57, 0x38, 0xCC, 0x42, 0x35, 0x31, 0x46, - 0xE4, 0xB3, 0x0B, 0x71, 0x6C, 0x6A, 0x9B, 0x7F, 0x12, 0x19, 0x42, 0xE6, 0x8C, 0x0D, 0x62, 0xBB, - 0x4E, 0x90, 0x48, 0x22, 0x72, 0xEE, 0x67, 0xF1, 0xEB, 0xF1, 0x21, 0x3A, 0x70, 0xBD, 0x70, 0x69, - 0x5D, 0xB4, 0x05, 0x56, 0xFA, 0x8F, 0x26, 0xC0, 0x91, 0xB1, 0x6D, 0xA8, 0x12, 0xAE, 0x63, 0x19, - 0x3C, 0x6C, 0x22, 0xD6, 0xAB, 0x2B, 0x16, 0xC1, 0x33, 0x70, 0xB2, 0xCD, 0x7D, 0x49, 0xA4, 0xCB, - 0xE1, 0xDC, 0xF4, 0x25, 0x08, 0xEB, 0x7A, 0x5D, 0x8A, 0x2B, 0xA5, 0x9E, 0x2E, 0x7A, 0x22, 0x8B, - 0x66, 0x74, 0xA9, 0x11, 0x10, 0xC5, 0xB6, 0x0A, 0x8C, 0xD8, 0x6E, 0xF5, 0xE7, 0x30, 0xE2, 0xE2, - 0x06, 0x00, 0x54, 0x75, 0x62, 0x0B, 0x10, 0x43, 0xC1, 0xF6, 0xAE, 0x51, 0x14, 0xF1, 0xDD, 0x6B, - 0xC1, 0x8E, 0xB1, 0xF8, 0xCA, 0xA4, 0xB8, 0xF7, 0xE5, 0x77, 0x97, 0x00, 0x9C, 0x87, 0xF3, 0x59, - 0xED, 0x1F, 0x5F, 0x29, 0x8A, 0x3B, 0x6D, 0x02, 0x91, 0xC0, 0x9B, 0x91, 0x31, 0x9D, 0x7B, 0xF9, - 0x4B, 0xEF, 0x54, 0xC3, 0x6D, 0x3F, 0xB1, 0xDD, 0x6A, 0x77, 0xBF, 0x87, 0x16, 0x12, 0x0E, 0x24, - 0xD1, 0x7A, 0x2B, 0x67, 0x7B, 0x6D, 0xDD, 0xF5, 0x91, 0xC2, 0x0A, 0x2B, 0x87, 0x55, 0x5A, 0x65, - 0x95, 0x2D, 0x4E, 0x26, 0xA3, 0x14, 0xCF, 0x31, 0x1F, 0xA9, 0xF4, 0x4D, 0x77, 0x5D, 0xAA, 0x74, - 0x29, 0xC9, 0x2E, 0xF1, 0xC7, 0xC2, 0x98, 0x25, 0x8C, 0xF9, 0x09, 0x3F, 0xDA, 0xE3, 0x72, 0x02, - 0x13, 0x19, 0x07, 0xF1, 0x96, 0x19, 0x11, 0xAE, 0x3E, 0x33, 0x3D, 0xC6, 0x4C, 0x80, 0x49, 0x9B, - 0x0B, 0x3B, 0x7F, 0x4B, 0x22, 0x5F, 0x76, 0x09, 0x95, 0xF5, 0x87, 0x07, 0x79, 0x7B, 0x28, 0x02, - 0x19, 0x0E, 0xEC, 0x40, 0x40, 0x10, 0x13, 0x51, 0x21, 0x15, 0x65, 0xC8, 0x8C, 0xFD, 0x84, 0x01, - 0x9B, 0x8E, 0xD6, 0xB4, 0xE7, 0x5F, 0xA9, 0x55, 0xFF, 0xB6, 0xCF, 0x46, 0x78, 0x21, 0x68, 0xEE, - 0x15, 0x21, 0x68, 0x6D, 0x55, 0x3E, 0x97, 0x98, 0x8D, 0xAD, 0x4F, 0x06, 0x3F, 0x88, 0xC5, 0x14, - 0xDF, 0xB9, 0xD6, 0x5A, 0x5B, 0x97, 0x17, 0x17, 0xD1, 0x42, 0x06, 0x25, 0xB2, 0x11, 0x16, 0xD5, - 0x03, 0xF1, 0x48, 0x17, 0xD0, 0x52, 0xC5, 0xC5, 0xEC, 0x8B, 0x45, 0x14, 0x9C, 0x16, 0x64, 0xCE, - 0x9F, 0xE8, 0x86, 0x59, 0x2A, 0xAF, 0x08, 0xE0, 0x22, 0xDC, 0x20, 0x9D, 0x0B, 0x19, 0x6D, 0xA6, - 0x16, 0x70, 0xD0, 0xF9, 0x98, 0xDA, 0xFA, 0x03, 0x9F, 0xBA, 0x09, 0xA0, 0x88, 0x35, 0x1F, 0x36, - 0x78, 0x4A, 0x26, 0x49, 0xBE, 0x38, 0x7A, 0x65, 0xC1, 0xD3, 0x61, 0x92, 0x35, 0x16, 0xA0, 0xA9, - 0xE7, 0xE7, 0x03, 0x8B, 0xDB, 0xB2, 0xEB, 0x82, 0xB0, 0x3D, 0xDF, 0x59, 0x5C, 0xD1, 0xAB, 0x89, - 0xA8, 0xB0, 0xA2, 0xC5, 0xAC, 0x03, 0xBC, 0x1F, 0xCC, 0x93, 0x44, 0x46, 0xE3, 0xF5, 0xFF, 0x2B, - 0xAC, 0x74, 0x69, 0x0C, 0x4F, 0x3D, 0x9E, 0xED, 0xD2, 0x22, 0x98, 0xB4, 0x07, 0x3A, 0xE7, 0xF4, - 0xDC, 0x11, 0x1B, 0x3C, 0xC2, 0x6D, 0xD0, 0x18, 0x3A, 0xF0, 0xF0, 0x77, 0xD6, 0x27, 0xA6, 0x12, - 0x31, 0x05, 0xEF, 0xE5, 0xD2, 0xE2, 0x2C, 0x92, 0xA4, 0x44, 0x01, 0x9E, 0x39, 0x9B, 0x87, 0xA3, - 0x06, 0x1B, 0x28, 0x31, 0x7C, 0x09, 0xCA, 0x4F, 0x89, 0x91, 0x91, 0x98, 0x78, 0x50, 0x8A, 0x13, - 0x2F, 0x8C, 0x7C, 0x6C, 0x0F, 0xFD, 0xF3, 0xCF, 0xA3, 0x21, 0x0C, 0x76, 0x38, 0x01, 0x04, 0xD7, - 0x5B, 0x35, 0xF6, 0xEE, 0xB2, 0xD8, 0x61, 0xE2, 0x8A, 0x14, 0xA9, 0x4A, 0x04, 0x8D, 0xDA, 0x72, - 0x6C, 0x31, 0xF9, 0xC8, 0xD1, 0x89, 0xD6, 0x7B, 0x69, 0x07, 0x13, 0x96, 0x34, 0xC1, 0x9E, 0xAF, - 0x8B, 0x96, 0xE5, 0xAC, 0x31, 0x04, 0x51, 0x3C, 0x5E, 0x23, 0x36, 0x91, 0x94, 0x0A, 0x76, 0x11, - 0x34, 0x08, 0x68, 0x17, 0x1D, 0x22, 0x85, 0xF6, 0xF8, 0x58, 0x99, 0x48, 0xFF, 0x02, 0x95, 0x5F, - 0x2C, 0x81, 0x88, 0x79, 0xA0, 0x72, 0x76, 0x0D, 0x33, 0xDC, 0xD0, 0x36, 0x21, 0xE3, 0xCD, 0xF2, - 0x19, 0xB8, 0x2D, 0x38, 0x1A, 0x4F, 0x8F, 0x73, 0x00, 0x68, 0x4E, 0xCC, 0x1E, 0x84, 0xA1, 0xB0, - 0x6C, 0xC3, 0xAE, 0xAF, 0x09, 0x89, 0x77, 0x66, 0x7C, 0x81, 0x66, 0x23, 0xD6, 0x4C, 0x40, 0x02, - 0x78, 0xD7, 0xD3, 0x05, 0x89, 0x20, 0xA0, 0xDD, 0x5E, 0xA8, 0x17, 0x04, 0xE2, 0x99, 0x68, 0xA4, - 0x95, 0xF4, 0xD9, 0xC4, 0xFA, 0x4C, 0x22, 0xA1, 0xB0, 0xF4, 0x19, 0xC4, 0xFA, 0xEC, 0xE1, 0x4E, - 0xD0, 0x42, 0xF0, 0xC4, 0x56, 0x24, 0x48, 0x92, 0x2D, 0x75, 0x22, 0x4A, 0x3D, 0x98, 0x49, 0xE5, - 0x40, 0x7C, 0xA6, 0xA9, 0x88, 0x28, 0x32, 0xA2, 0x28, 0x32, 0xC2, 0x45, 0x86, 0x00, 0x51, 0xE2, - 0x9E, 0x3F, 0xAD, 0x0B, 0xE3, 0xCA, 0x4F, 0x2F, 0x23, 0xCE, 0x56, 0xC3, 0x4C, 0x3A, 0xF9, 0x94, - 0x49, 0x60, 0x2F, 0x1B, 0x00, 0xDA, 0xCF, 0x61, 0xDC, 0x16, 0xD9, 0x5A, 0x0D, 0xD5, 0xD8, 0x0A, - 0xA6, 0x5C, 0x08, 0x10, 0xB1, 0x25, 0x9F, 0x98, 0x05, 0xAC, 0xBC, 0x22, 0x3E, 0x7F, 0xAE, 0xD3, - 0xB0, 0xC7, 0xDA, 0xC4, 0x35, 0xE6, 0xC4, 0x83, 0x09, 0x59, 0x48, 0xEC, 0x98, 0xDE, 0xCF, 0x1D, - 0xA2, 0x58, 0x33, 0x81, 0xC9, 0x70, 0x6A, 0x97, 0x0B, 0x1A, 0xB6, 0x14, 0xA0, 0x43, 0x3A, 0x32, - 0xA1, 0x83, 0x46, 0x6C, 0x6C, 0x0B, 0x4F, 0x95, 0x84, 0x15, 0xB6, 0x8E, 0x9C, 0x27, 0x42, 0xC0, - 0x26, 0x4A, 0x03, 0xAD, 0x97, 0x2C, 0x27, 0xB0, 0x84, 0x87, 0x31, 0x9B, 0x48, 0x6B, 0xC4, 0x06, - 0x21, 0x4B, 0xB1, 0x36, 0xA1, 0x83, 0x30, 0xF8, 0x34, 0x32, 0x73, 0x49, 0x61, 0xE5, 0xEA, 0xDA, - 0x7B, 0x8B, 0xE0, 0x34, 0x8F, 0xBF, 0xA9, 0xF3, 0xE2, 0xDB, 0xD7, 0x9A, 0xE3, 0x6A, 0x96, 0xB3, - 0x22, 0xB8, 0x59, 0x34, 0x58, 0x0A, 0xD6, 0x86, 0x04, 0x12, 0x4B, 0xC2, 0x26, 0xD3, 0x18, 0x87, - 0xFC, 0x99, 0xE9, 0x41, 0xEA, 0x8E, 0xEF, 0x93, 0x25, 0x8F, 0x6B, 0x61, 0x31, 0x34, 0x97, 0xBD, - 0xF5, 0xAD, 0x55, 0x31, 0x71, 0x32, 0x98, 0x48, 0x96, 0x8F, 0x39, 0x8F, 0x6B, 0xC1, 0x28, 0x6B, - 0xFA, 0x5E, 0x40, 0x84, 0xE1, 0xED, 0x07, 0x2B, 0x45, 0x39, 0x03, 0xB9, 0x82, 0x0C, 0xC1, 0x22, - 0x59, 0x46, 0xBC, 0xAE, 0x49, 0x53, 0x56, 0x23, 0xC9, 0xD0, 0x28, 0x96, 0x0B, 0xA5, 0x71, 0x3E, - 0x5D, 0x2B, 0x4C, 0xE2, 0x2C, 0x55, 0x67, 0xBF, 0xB3, 0xC3, 0xE0, 0xB1, 0x39, 0x76, 0x86, 0x8B, - 0x05, 0x83, 0x47, 0x67, 0x87, 0x33, 0x7F, 0x6E, 0x0D, 0x1E, 0xFD, 0x2F, 0x5E, 0x72, 0x0B, 0x89, - 0x42, 0x10, 0x01, 0x00 -}; diff --git a/esp32-cam/CameraWebServer/camera_pins.h b/esp32-cam/CameraWebServer/camera_pins.h deleted file mode 100644 index e1be287..0000000 --- a/esp32-cam/CameraWebServer/camera_pins.h +++ /dev/null @@ -1,273 +0,0 @@ - -#if defined(CAMERA_MODEL_WROVER_KIT) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM -1 -#define XCLK_GPIO_NUM 21 -#define SIOD_GPIO_NUM 26 -#define SIOC_GPIO_NUM 27 - -#define Y9_GPIO_NUM 35 -#define Y8_GPIO_NUM 34 -#define Y7_GPIO_NUM 39 -#define Y6_GPIO_NUM 36 -#define Y5_GPIO_NUM 19 -#define Y4_GPIO_NUM 18 -#define Y3_GPIO_NUM 5 -#define Y2_GPIO_NUM 4 -#define VSYNC_GPIO_NUM 25 -#define HREF_GPIO_NUM 23 -#define PCLK_GPIO_NUM 22 - -#elif defined(CAMERA_MODEL_ESP_EYE) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM -1 -#define XCLK_GPIO_NUM 4 -#define SIOD_GPIO_NUM 18 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 36 -#define Y8_GPIO_NUM 37 -#define Y7_GPIO_NUM 38 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 35 -#define Y4_GPIO_NUM 14 -#define Y3_GPIO_NUM 13 -#define Y2_GPIO_NUM 34 -#define VSYNC_GPIO_NUM 5 -#define HREF_GPIO_NUM 27 -#define PCLK_GPIO_NUM 25 - -#elif defined(CAMERA_MODEL_M5STACK_PSRAM) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM 15 -#define XCLK_GPIO_NUM 27 -#define SIOD_GPIO_NUM 25 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 19 -#define Y8_GPIO_NUM 36 -#define Y7_GPIO_NUM 18 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 5 -#define Y4_GPIO_NUM 34 -#define Y3_GPIO_NUM 35 -#define Y2_GPIO_NUM 32 -#define VSYNC_GPIO_NUM 22 -#define HREF_GPIO_NUM 26 -#define PCLK_GPIO_NUM 21 - -#elif defined(CAMERA_MODEL_M5STACK_V2_PSRAM) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM 15 -#define XCLK_GPIO_NUM 27 -#define SIOD_GPIO_NUM 22 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 19 -#define Y8_GPIO_NUM 36 -#define Y7_GPIO_NUM 18 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 5 -#define Y4_GPIO_NUM 34 -#define Y3_GPIO_NUM 35 -#define Y2_GPIO_NUM 32 -#define VSYNC_GPIO_NUM 25 -#define HREF_GPIO_NUM 26 -#define PCLK_GPIO_NUM 21 - -#elif defined(CAMERA_MODEL_M5STACK_WIDE) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM 15 -#define XCLK_GPIO_NUM 27 -#define SIOD_GPIO_NUM 22 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 19 -#define Y8_GPIO_NUM 36 -#define Y7_GPIO_NUM 18 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 5 -#define Y4_GPIO_NUM 34 -#define Y3_GPIO_NUM 35 -#define Y2_GPIO_NUM 32 -#define VSYNC_GPIO_NUM 25 -#define HREF_GPIO_NUM 26 -#define PCLK_GPIO_NUM 21 - -#elif defined(CAMERA_MODEL_M5STACK_ESP32CAM) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM 15 -#define XCLK_GPIO_NUM 27 -#define SIOD_GPIO_NUM 25 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 19 -#define Y8_GPIO_NUM 36 -#define Y7_GPIO_NUM 18 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 5 -#define Y4_GPIO_NUM 34 -#define Y3_GPIO_NUM 35 -#define Y2_GPIO_NUM 17 -#define VSYNC_GPIO_NUM 22 -#define HREF_GPIO_NUM 26 -#define PCLK_GPIO_NUM 21 - -#elif defined(CAMERA_MODEL_M5STACK_UNITCAM) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM 15 -#define XCLK_GPIO_NUM 27 -#define SIOD_GPIO_NUM 25 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 19 -#define Y8_GPIO_NUM 36 -#define Y7_GPIO_NUM 18 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 5 -#define Y4_GPIO_NUM 34 -#define Y3_GPIO_NUM 35 -#define Y2_GPIO_NUM 32 -#define VSYNC_GPIO_NUM 22 -#define HREF_GPIO_NUM 26 -#define PCLK_GPIO_NUM 21 - -#elif defined(CAMERA_MODEL_AI_THINKER) -#define PWDN_GPIO_NUM 32 -#define RESET_GPIO_NUM -1 -#define XCLK_GPIO_NUM 0 -#define SIOD_GPIO_NUM 26 -#define SIOC_GPIO_NUM 27 - -#define Y9_GPIO_NUM 35 -#define Y8_GPIO_NUM 34 -#define Y7_GPIO_NUM 39 -#define Y6_GPIO_NUM 36 -#define Y5_GPIO_NUM 21 -#define Y4_GPIO_NUM 19 -#define Y3_GPIO_NUM 18 -#define Y2_GPIO_NUM 5 -#define VSYNC_GPIO_NUM 25 -#define HREF_GPIO_NUM 23 -#define PCLK_GPIO_NUM 22 - -#elif defined(CAMERA_MODEL_TTGO_T_JOURNAL) -#define PWDN_GPIO_NUM 0 -#define RESET_GPIO_NUM 15 -#define XCLK_GPIO_NUM 27 -#define SIOD_GPIO_NUM 25 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 19 -#define Y8_GPIO_NUM 36 -#define Y7_GPIO_NUM 18 -#define Y6_GPIO_NUM 39 -#define Y5_GPIO_NUM 5 -#define Y4_GPIO_NUM 34 -#define Y3_GPIO_NUM 35 -#define Y2_GPIO_NUM 17 -#define VSYNC_GPIO_NUM 22 -#define HREF_GPIO_NUM 26 -#define PCLK_GPIO_NUM 21 - - -#elif defined(CAMERA_MODEL_ESP32_CAM_BOARD) -// The 18 pin header on the board has Y5 and Y3 swapped -#define USE_BOARD_HEADER 0 -#define PWDN_GPIO_NUM 32 -#define RESET_GPIO_NUM 33 -#define XCLK_GPIO_NUM 4 -#define SIOD_GPIO_NUM 18 -#define SIOC_GPIO_NUM 23 - -#define Y9_GPIO_NUM 36 -#define Y8_GPIO_NUM 19 -#define Y7_GPIO_NUM 21 -#define Y6_GPIO_NUM 39 -#if USE_BOARD_HEADER -#define Y5_GPIO_NUM 13 -#else -#define Y5_GPIO_NUM 35 -#endif -#define Y4_GPIO_NUM 14 -#if USE_BOARD_HEADER -#define Y3_GPIO_NUM 35 -#else -#define Y3_GPIO_NUM 13 -#endif -#define Y2_GPIO_NUM 34 -#define VSYNC_GPIO_NUM 5 -#define HREF_GPIO_NUM 27 -#define PCLK_GPIO_NUM 25 - -#elif defined(CAMERA_MODEL_ESP32S3_CAM_LCD) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM -1 -#define XCLK_GPIO_NUM 40 -#define SIOD_GPIO_NUM 17 -#define SIOC_GPIO_NUM 18 - -#define Y9_GPIO_NUM 39 -#define Y8_GPIO_NUM 41 -#define Y7_GPIO_NUM 42 -#define Y6_GPIO_NUM 12 -#define Y5_GPIO_NUM 3 -#define Y4_GPIO_NUM 14 -#define Y3_GPIO_NUM 47 -#define Y2_GPIO_NUM 13 -#define VSYNC_GPIO_NUM 21 -#define HREF_GPIO_NUM 38 -#define PCLK_GPIO_NUM 11 - -#elif defined(CAMERA_MODEL_ESP32S2_CAM_BOARD) -// The 18 pin header on the board has Y5 and Y3 swapped -#define USE_BOARD_HEADER 0 -#define PWDN_GPIO_NUM 1 -#define RESET_GPIO_NUM 2 -#define XCLK_GPIO_NUM 42 -#define SIOD_GPIO_NUM 41 -#define SIOC_GPIO_NUM 18 - -#define Y9_GPIO_NUM 16 -#define Y8_GPIO_NUM 39 -#define Y7_GPIO_NUM 40 -#define Y6_GPIO_NUM 15 -#if USE_BOARD_HEADER -#define Y5_GPIO_NUM 12 -#else -#define Y5_GPIO_NUM 13 -#endif -#define Y4_GPIO_NUM 5 -#if USE_BOARD_HEADER -#define Y3_GPIO_NUM 13 -#else -#define Y3_GPIO_NUM 12 -#endif -#define Y2_GPIO_NUM 14 -#define VSYNC_GPIO_NUM 38 -#define HREF_GPIO_NUM 4 -#define PCLK_GPIO_NUM 3 - -#elif defined(CAMERA_MODEL_ESP32S3_EYE) -#define PWDN_GPIO_NUM -1 -#define RESET_GPIO_NUM -1 -#define XCLK_GPIO_NUM 15 -#define SIOD_GPIO_NUM 4 -#define SIOC_GPIO_NUM 5 - -#define Y2_GPIO_NUM 11 -#define Y3_GPIO_NUM 9 -#define Y4_GPIO_NUM 8 -#define Y5_GPIO_NUM 10 -#define Y6_GPIO_NUM 12 -#define Y7_GPIO_NUM 18 -#define Y8_GPIO_NUM 17 -#define Y9_GPIO_NUM 16 - -#define VSYNC_GPIO_NUM 6 -#define HREF_GPIO_NUM 7 -#define PCLK_GPIO_NUM 13 - -#else -#error "Camera model not selected" -#endif diff --git a/esp32-cam/CameraWebServer/index_ov2640.html b/esp32-cam/CameraWebServer/index_ov2640.html deleted file mode 100644 index 4f3738c..0000000 --- a/esp32-cam/CameraWebServer/index_ov2640.html +++ /dev/null @@ -1,1160 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width,initial-scale=1"> - <title>ESP32 OV2460</title> - <style> - body { - font-family: Arial,Helvetica,sans-serif; - background: #181818; - color: #EFEFEF; - font-size: 16px - } - - h2 { - font-size: 18px - } - - section.main { - display: flex - } - - #menu,section.main { - flex-direction: column - } - - #menu { - display: none; - flex-wrap: nowrap; - min-width: 340px; - background: #363636; - padding: 8px; - border-radius: 4px; - margin-top: -10px; - margin-right: 10px; - } - - #content { - display: flex; - flex-wrap: wrap; - align-items: stretch - } - - figure { - padding: 0px; - margin: 0; - -webkit-margin-before: 0; - margin-block-start: 0; - -webkit-margin-after: 0; - margin-block-end: 0; - -webkit-margin-start: 0; - margin-inline-start: 0; - -webkit-margin-end: 0; - margin-inline-end: 0 - } - - figure img { - display: block; - width: 100%; - height: auto; - border-radius: 4px; - margin-top: 8px; - } - - @media (min-width: 800px) and (orientation:landscape) { - #content { - display:flex; - flex-wrap: nowrap; - align-items: stretch - } - - figure img { - display: block; - max-width: 100%; - max-height: calc(100vh - 40px); - width: auto; - height: auto - } - - figure { - padding: 0 0 0 0px; - margin: 0; - -webkit-margin-before: 0; - margin-block-start: 0; - -webkit-margin-after: 0; - margin-block-end: 0; - -webkit-margin-start: 0; - margin-inline-start: 0; - -webkit-margin-end: 0; - margin-inline-end: 0 - } - } - - section#buttons { - display: flex; - flex-wrap: nowrap; - justify-content: space-between - } - - #nav-toggle { - cursor: pointer; - display: block - } - - #nav-toggle-cb { - outline: 0; - opacity: 0; - width: 0; - height: 0 - } - - #nav-toggle-cb:checked+#menu { - display: flex - } - - .input-group { - display: flex; - flex-wrap: nowrap; - line-height: 22px; - margin: 5px 0 - } - - .input-group>label { - display: inline-block; - padding-right: 10px; - min-width: 47% - } - - .input-group input,.input-group select { - flex-grow: 1 - } - - .range-max,.range-min { - display: inline-block; - padding: 0 5px - } - - button, .button { - display: block; - margin: 5px; - padding: 0 12px; - border: 0; - line-height: 28px; - cursor: pointer; - color: #fff; - background: #ff3034; - border-radius: 5px; - font-size: 16px; - outline: 0 - } - - .save { - position: absolute; - right: 25px; - top: 0px; - height: 16px; - line-height: 16px; - padding: 0 4px; - text-decoration: none; - cursor: pointer - } - - button:hover { - background: #ff494d - } - - button:active { - background: #f21c21 - } - - button.disabled { - cursor: default; - background: #a0a0a0 - } - - input[type=range] { - -webkit-appearance: none; - width: 100%; - height: 22px; - background: #363636; - cursor: pointer; - margin: 0 - } - - input[type=range]:focus { - outline: 0 - } - - input[type=range]::-webkit-slider-runnable-track { - width: 100%; - height: 2px; - cursor: pointer; - background: #EFEFEF; - border-radius: 0; - border: 0 solid #EFEFEF - } - - input[type=range]::-webkit-slider-thumb { - border: 1px solid rgba(0,0,30,0); - height: 22px; - width: 22px; - border-radius: 50px; - background: #ff3034; - cursor: pointer; - -webkit-appearance: none; - margin-top: -11.5px - } - - input[type=range]:focus::-webkit-slider-runnable-track { - background: #EFEFEF - } - - input[type=range]::-moz-range-track { - width: 100%; - height: 2px; - cursor: pointer; - background: #EFEFEF; - border-radius: 0; - border: 0 solid #EFEFEF - } - - input[type=range]::-moz-range-thumb { - border: 1px solid rgba(0,0,30,0); - height: 22px; - width: 22px; - border-radius: 50px; - background: #ff3034; - cursor: pointer - } - - input[type=range]::-ms-track { - width: 100%; - height: 2px; - cursor: pointer; - background: 0 0; - border-color: transparent; - color: transparent - } - - input[type=range]::-ms-fill-lower { - background: #EFEFEF; - border: 0 solid #EFEFEF; - border-radius: 0 - } - - input[type=range]::-ms-fill-upper { - background: #EFEFEF; - border: 0 solid #EFEFEF; - border-radius: 0 - } - - input[type=range]::-ms-thumb { - border: 1px solid rgba(0,0,30,0); - height: 22px; - width: 22px; - border-radius: 50px; - background: #ff3034; - cursor: pointer; - height: 2px - } - - input[type=range]:focus::-ms-fill-lower { - background: #EFEFEF - } - - input[type=range]:focus::-ms-fill-upper { - background: #363636 - } - - .switch { - display: block; - position: relative; - line-height: 22px; - font-size: 16px; - height: 22px - } - - .switch input { - outline: 0; - opacity: 0; - width: 0; - height: 0 - } - - .slider { - width: 50px; - height: 22px; - border-radius: 22px; - cursor: pointer; - background-color: grey - } - - .slider,.slider:before { - display: inline-block; - transition: .4s - } - - .slider:before { - position: relative; - content: ""; - border-radius: 50%; - height: 16px; - width: 16px; - left: 4px; - top: 3px; - background-color: #fff - } - - input:checked+.slider { - background-color: #ff3034 - } - - input:checked+.slider:before { - -webkit-transform: translateX(26px); - transform: translateX(26px) - } - - select { - border: 1px solid #363636; - font-size: 14px; - height: 22px; - outline: 0; - border-radius: 5px - } - - .image-container { - position: relative; - min-width: 160px - } - - .close { - position: absolute; - right: 5px; - top: 5px; - background: #ff3034; - width: 16px; - height: 16px; - border-radius: 100px; - color: #fff; - text-align: center; - line-height: 18px; - cursor: pointer - } - - .hidden { - display: none - } - - input[type=text] { - border: 1px solid #363636; - font-size: 14px; - height: 20px; - margin: 1px; - outline: 0; - border-radius: 5px - } - - .inline-button { - line-height: 20px; - margin: 2px; - padding: 1px 4px 2px 4px; - } - - label.toggle-section-label { - cursor: pointer; - display: block - } - - input.toggle-section-button { - outline: 0; - opacity: 0; - width: 0; - height: 0 - } - - input.toggle-section-button:checked+section.toggle-section { - display: none - } - - </style> - </head> - <body> - <section class="main"> - <div id="logo"> - <label for="nav-toggle-cb" id="nav-toggle">☰ Toggle OV2640 settings</label> - </div> - <div id="content"> - <div id="sidebar"> - <input type="checkbox" id="nav-toggle-cb" checked="checked"> - <nav id="menu"> - - <section id="xclk-section" class="nothidden"> - <div class="input-group" id="set-xclk-group"> - <label for="set-xclk">XCLK MHz</label> - <div class="text"> - <input id="xclk" type="text" minlength="1" maxlength="2" size="2" value="20"> - </div> - <button class="inline-button" id="set-xclk">Set</button> - </div> - </section> - - <div class="input-group" id="framesize-group"> - <label for="framesize">Resolution</label> - <select id="framesize" class="default-action"> - <!-- 2MP --> - <option value="13">UXGA(1600x1200)</option> - <option value="12">SXGA(1280x1024)</option> - <option value="11">HD(1280x720)</option> - <option value="10">XGA(1024x768)</option> - <option value="9">SVGA(800x600)</option> - <option value="8">VGA(640x480)</option> - <option value="7">HVGA(480x320)</option> - <option value="6">CIF(400x296)</option> - <option value="5">QVGA(320x240)</option> - <option value="4">240x240</option> - <option value="3">HQVGA(240x176)</option> - <option value="2">QCIF(176x144)</option> - <option value="1">QQVGA(160x120)</option> - <option value="0">96x96</option> - </select> - </div> - <div class="input-group" id="quality-group"> - <label for="quality">Quality</label> - <div class="range-min">4</div> - <input type="range" id="quality" min="4" max="63" value="10" class="default-action"> - <div class="range-max">63</div> - </div> - <div class="input-group" id="brightness-group"> - <label for="brightness">Brightness</label> - <div class="range-min">-2</div> - <input type="range" id="brightness" min="-2" max="2" value="0" class="default-action"> - <div class="range-max">2</div> - </div> - <div class="input-group" id="contrast-group"> - <label for="contrast">Contrast</label> - <div class="range-min">-2</div> - <input type="range" id="contrast" min="-2" max="2" value="0" class="default-action"> - <div class="range-max">2</div> - </div> - <div class="input-group" id="saturation-group"> - <label for="saturation">Saturation</label> - <div class="range-min">-2</div> - <input type="range" id="saturation" min="-2" max="2" value="0" class="default-action"> - <div class="range-max">2</div> - </div> - <div class="input-group" id="special_effect-group"> - <label for="special_effect">Special Effect</label> - <select id="special_effect" class="default-action"> - <option value="0" selected="selected">No Effect</option> - <option value="1">Negative</option> - <option value="2">Grayscale</option> - <option value="3">Red Tint</option> - <option value="4">Green Tint</option> - <option value="5">Blue Tint</option> - <option value="6">Sepia</option> - </select> - </div> - <div class="input-group" id="awb-group"> - <label for="awb">AWB</label> - <div class="switch"> - <input id="awb" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="awb"></label> - </div> - </div> - <div class="input-group" id="awb_gain-group"> - <label for="awb_gain">AWB Gain</label> - <div class="switch"> - <input id="awb_gain" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="awb_gain"></label> - </div> - </div> - <div class="input-group" id="wb_mode-group"> - <label for="wb_mode">WB Mode</label> - <select id="wb_mode" class="default-action"> - <option value="0" selected="selected">Auto</option> - <option value="1">Sunny</option> - <option value="2">Cloudy</option> - <option value="3">Office</option> - <option value="4">Home</option> - </select> - </div> - <div class="input-group" id="aec-group"> - <label for="aec">AEC SENSOR</label> - <div class="switch"> - <input id="aec" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="aec"></label> - </div> - </div> - <div class="input-group" id="aec2-group"> - <label for="aec2">AEC DSP</label> - <div class="switch"> - <input id="aec2" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="aec2"></label> - </div> - </div> - <div class="input-group" id="ae_level-group"> - <label for="ae_level">AE Level</label> - <div class="range-min">-2</div> - <input type="range" id="ae_level" min="-2" max="2" value="0" class="default-action"> - <div class="range-max">2</div> - </div> - <div class="input-group" id="aec_value-group"> - <label for="aec_value">Exposure</label> - <div class="range-min">0</div> - <input type="range" id="aec_value" min="0" max="1200" value="204" class="default-action"> - <div class="range-max">1200</div> - </div> - <div class="input-group" id="agc-group"> - <label for="agc">AGC</label> - <div class="switch"> - <input id="agc" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="agc"></label> - </div> - </div> - <div class="input-group hidden" id="agc_gain-group"> - <label for="agc_gain">Gain</label> - <div class="range-min">1x</div> - <input type="range" id="agc_gain" min="0" max="30" value="5" class="default-action"> - <div class="range-max">31x</div> - </div> - <div class="input-group" id="gainceiling-group"> - <label for="gainceiling">Gain Ceiling</label> - <div class="range-min">2x</div> - <input type="range" id="gainceiling" min="0" max="6" value="0" class="default-action"> - <div class="range-max">128x</div> - </div> - <div class="input-group" id="bpc-group"> - <label for="bpc">BPC</label> - <div class="switch"> - <input id="bpc" type="checkbox" class="default-action"> - <label class="slider" for="bpc"></label> - </div> - </div> - <div class="input-group" id="wpc-group"> - <label for="wpc">WPC</label> - <div class="switch"> - <input id="wpc" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="wpc"></label> - </div> - </div> - <div class="input-group" id="raw_gma-group"> - <label for="raw_gma">Raw GMA</label> - <div class="switch"> - <input id="raw_gma" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="raw_gma"></label> - </div> - </div> - <div class="input-group" id="lenc-group"> - <label for="lenc">Lens Correction</label> - <div class="switch"> - <input id="lenc" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="lenc"></label> - </div> - </div> - <div class="input-group" id="hmirror-group"> - <label for="hmirror">H-Mirror</label> - <div class="switch"> - <input id="hmirror" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="hmirror"></label> - </div> - </div> - <div class="input-group" id="vflip-group"> - <label for="vflip">V-Flip</label> - <div class="switch"> - <input id="vflip" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="vflip"></label> - </div> - </div> - <div class="input-group" id="dcw-group"> - <label for="dcw">DCW (Downsize EN)</label> - <div class="switch"> - <input id="dcw" type="checkbox" class="default-action" checked="checked"> - <label class="slider" for="dcw"></label> - </div> - </div> - <div class="input-group" id="colorbar-group"> - <label for="colorbar">Color Bar</label> - <div class="switch"> - <input id="colorbar" type="checkbox" class="default-action"> - <label class="slider" for="colorbar"></label> - </div> - </div> - <div class="input-group" id="led-group"> - <label for="led_intensity">LED Intensity</label> - <div class="range-min">0</div> - <input type="range" id="led_intensity" min="0" max="255" value="0" class="default-action"> - <div class="range-max">255</div> - </div> - <div class="input-group" id="face_detect-group"> - <label for="face_detect">Face Detection</label> - <div class="switch"> - <input id="face_detect" type="checkbox" class="default-action"> - <label class="slider" for="face_detect"></label> - </div> - </div> - <div class="input-group" id="face_recognize-group"> - <label for="face_recognize">Face Recognition</label> - <div class="switch"> - <input id="face_recognize" type="checkbox" class="default-action"> - <label class="slider" for="face_recognize"></label> - </div> - </div> - <div class="input-group" id="flash-group"> - <label for="flash">Flash</label> - <div class="switch"> - <input id="flash" type="checkbox" class="default-action"> - <label class="slider" for="flash"></label> - </div> - </div> - - <section id="buttons"> - <button id="get-still">Get Still</button> - <button id="toggle-stream">Start Stream</button> - <button id="face_enroll" class="disabled" disabled="disabled">Enroll Face</button> - </section> - - <div style="margin-top: 8px;"><center><span style="font-weight: bold;">Advanced Settings</span></center></div> - <hr style="width:100%"> - <label for="nav-toggle-reg" class="toggle-section-label">☰ Register Get/Set</label><input type="checkbox" id="nav-toggle-reg" class="hidden toggle-section-button" checked="checked"> - <section class="toggle-section"> - <!--h4>Set Register</h4--> - <div class="input-group" id="set-reg-group"> - <label for="set-reg">Reg, Mask, Value</label> - <div class="text"> - <input id="reg-addr" type="text" minlength="4" maxlength="6" size="6" value="0x111"> - </div> - <div class="text"> - <input id="reg-mask" type="text" minlength="4" maxlength="4" size="4" value="0x80"> - </div> - <div class="text"> - <input id="reg-value" type="text" minlength="4" maxlength="4" size="4" value="0x80"> - </div> - <button class="inline-button" id="set-reg">Set</button> - </div> - <hr style="width:50%"> - <!--h4>Get Register</h4--> - <div class="input-group" id="get-reg-group"> - <label for="get-reg">Reg, Mask</label> - <div class="text"> - <input id="get-reg-addr" type="text" minlength="4" maxlength="6" size="6" value="0x111"> - </div> - <div class="text"> - <input id="get-reg-mask" type="text" minlength="4" maxlength="6" size="6" value="0x80"> - </div> - <button class="inline-button" id="get-reg">Get</button> - </div> - <div class="input-group"> - <label for="get-reg-value">Value</label> - <div class="text"> - <span id="get-reg-value">0x1234</span> - </div> - </div> - </section> - <hr style="width:100%"> - <label for="nav-toggle-2640pll" class="toggle-section-label">☰ CLK</label><input type="checkbox" id="nav-toggle-2640pll" class="hidden toggle-section-button" checked="checked"> - <section class="toggle-section"> - - <div class="input-group"><label for="2640pll1">CLK 2X</label><div class="switch"><input id="2640pll1" type="checkbox" class="reg-action" reg="0x111" offset="7" mask="0x01"><label class="slider" for="2640pll1"></label></div></div> - - <div class="input-group"><label for="2640pll3">CLK DIV</label><div class="text">0<input id="2640pll3" type="text" minlength="1" maxlength="2" size="2" value="1" class="reg-action" reg="0x111" offset="0" mask="0x3f">63</div></div> - <div class="input-group"><label for="2640pll5">Auto PCLK</label><div class="switch"><input id="2640pll5" type="checkbox" class="reg-action" reg="0xd3" offset="7" mask="0x01"><label class="slider" for="2640pll5"></label></div></div> - <div class="input-group"><label for="2640pll4">PCLK DIV</label><div class="text">0<input id="2640pll4" type="text" minlength="1" maxlength="3" size="3" value="4" class="reg-action" reg="0xd3" offset="0" mask="0x7f">127</div></div> - - </section> - <hr style="width:100%"> - <label for="nav-toggle-win" class="toggle-section-label">☰ Window</label><input type="checkbox" id="nav-toggle-win" class="hidden toggle-section-button" checked="checked"> - <section class="toggle-section"> - - <div class="input-group"> - <label for="start-x">Sensor Resolution</label><select id="start-x"> - <option value="2">CIF (400x296)</option> - <option value="1">SVGA (800x600)</option> - <option value="0" selected="selected">UXGA (1600x1200)</option> - </select> - </div> - - <div class="input-group" id="set-offset-res-group"> - <label for="offset-x">Offset</label> - <div class="text"> - X:<input id="offset-x" type="text" minlength="1" maxlength="3" size="6" value="400"> - </div> - <div class="text"> - Y:<input id="offset-y" type="text" minlength="1" maxlength="3" size="6" value="300"> - </div> - </div> - <div class="input-group" id="set-total-res-group"> - <label for="total-x">Window Size</label> - <div class="text"> - X:<input id="total-x" type="text" minlength="1" maxlength="4" size="6" value="800"> - </div> - <div class="text"> - Y:<input id="total-y" type="text" minlength="1" maxlength="4" size="6" value="600"> - </div> - </div> - <div class="input-group" id="set-output-res-group"> - <label for="output-x">Output Size</label> - <div class="text"> - X:<input id="output-x" type="text" minlength="1" maxlength="4" size="6" value="320"> - </div> - <div class="text"> - Y:<input id="output-y" type="text" minlength="1" maxlength="4" size="6" value="240"> - </div> - </div> - <button id="set-resolution">Set Resolution</button> - </section> - - - - </nav> - </div> - <figure> - <div id="stream-container" class="image-container hidden"> - <a id="save-still" href="#" class="button save" download="capture.jpg">Save</a> - <div class="close" id="close-stream">×</div> - <img id="stream" src="" crossorigin> - </div> - </figure> - </div> - </section> - <script> -document.addEventListener('DOMContentLoaded', function (event) { - var baseHost = document.location.origin - var streamUrl = baseHost + ':81' - - function fetchUrl(url, cb){ - fetch(url) - .then(function (response) { - if (response.status !== 200) { - cb(response.status, response.statusText); - } else { - response.text().then(function(data){ - cb(200, data); - }).catch(function(err) { - cb(-1, err); - }); - } - }) - .catch(function(err) { - cb(-1, err); - }); - } - - function setReg(reg, offset, mask, value, cb){ - //console.log('Set Reg', '0x'+reg.toString(16), offset, '0x'+mask.toString(16), '0x'+value.toString(16), '('+value+')'); - value = (value & mask) << offset; - mask = mask << offset; - fetchUrl(`${baseHost}/reg?reg=${reg}&mask=${mask}&val=${value}`, cb); - } - - function getReg(reg, offset, mask, cb){ - mask = mask << offset; - fetchUrl(`${baseHost}/greg?reg=${reg}&mask=${mask}`, function(code, txt){ - let value = 0; - if(code == 200){ - value = parseInt(txt); - value = (value & mask) >> offset; - txt = ''+value; - } - cb(code, txt); - }); - } - - function setXclk(xclk, cb){ - fetchUrl(`${baseHost}/xclk?xclk=${xclk}`, cb); - } - - function setWindow(start_x, start_y, end_x, end_y, offset_x, offset_y, total_x, total_y, output_x, output_y, scaling, binning, cb){ - fetchUrl(`${baseHost}/resolution?sx=${start_x}&sy=${start_y}&ex=${end_x}&ey=${end_y}&offx=${offset_x}&offy=${offset_y}&tx=${total_x}&ty=${total_y}&ox=${output_x}&oy=${output_y}&scale=${scaling}&binning=${binning}`, cb); - } - - const setRegButton = document.getElementById('set-reg') - setRegButton.onclick = () => { - let reg = parseInt(document.getElementById('reg-addr').value); - let mask = parseInt(document.getElementById('reg-mask').value); - let value = parseInt(document.getElementById('reg-value').value); - - setReg(reg, 0, mask, value, function(code, txt){ - if(code != 200){ - alert('Error['+code+']: '+txt); - } - }); - } - - const getRegButton = document.getElementById('get-reg') - getRegButton.onclick = () => { - let reg = parseInt(document.getElementById('get-reg-addr').value); - let mask = parseInt(document.getElementById('get-reg-mask').value); - let value = document.getElementById('get-reg-value'); - - getReg(reg, 0, mask, function(code, txt){ - if(code != 200){ - value.innerHTML = 'Error['+code+']: '+txt; - } else { - value.innerHTML = '0x'+parseInt(txt).toString(16)+' ('+txt+')'; - } - }); - } - - const setXclkButton = document.getElementById('set-xclk') - setXclkButton.onclick = () => { - let xclk = parseInt(document.getElementById('xclk').value); - - setXclk(xclk, function(code, txt){ - if(code != 200){ - alert('Error['+code+']: '+txt); - } - }); - } - - const setResButton = document.getElementById('set-resolution') - setResButton.onclick = () => { - let start_x = parseInt(document.getElementById('start-x').value); - let offset_x = parseInt(document.getElementById('offset-x').value); - let offset_y = parseInt(document.getElementById('offset-y').value); - let total_x = parseInt(document.getElementById('total-x').value); - let total_y = parseInt(document.getElementById('total-y').value); - let output_x = parseInt(document.getElementById('output-x').value); - let output_y = parseInt(document.getElementById('output-y').value); - - setWindow(start_x, 0, 0, 0, offset_x, offset_y, total_x, total_y, output_x, output_y, false, false, function(code, txt){ - if(code != 200){ - alert('Error['+code+']: '+txt); - } - }); - } - - const setRegValue = (el) => { - let reg = el.attributes.reg?parseInt(el.attributes.reg.nodeValue):0; - let offset = el.attributes.offset?parseInt(el.attributes.offset.nodeValue):0; - let mask = el.attributes.mask?parseInt(el.attributes.mask.nodeValue):255; - let value = 0; - switch (el.type) { - case 'checkbox': - value = el.checked ? mask : 0; - break; - case 'range': - case 'text': - case 'select-one': - value = el.value; - break - default: - return; - } - - setReg(reg, offset, mask, value, function(code, txt){ - if(code != 200){ - alert('Error['+code+']: '+txt); - } - }); - } - - // Attach on change action for register elements - document - .querySelectorAll('.reg-action') - .forEach(el => { - if (el.type === 'text') { - el.onkeyup = function(e){ - if(e.keyCode == 13){ - setRegValue(el); - } - } - } else { - el.onchange = () => setRegValue(el) - } - }) - - - const updateRegValue = (el, value, updateRemote) => { - let initialValue; - let offset = el.attributes.offset?parseInt(el.attributes.offset.nodeValue):0; - let mask = (el.attributes.mask?parseInt(el.attributes.mask.nodeValue):255) << offset; - value = (value & mask) >> offset; - if (el.type === 'checkbox') { - initialValue = el.checked - value = !!value - el.checked = value - } else { - initialValue = el.value - el.value = value - } - } - - - const printReg = (el) => { - let reg = el.attributes.reg?parseInt(el.attributes.reg.nodeValue):0; - let offset = el.attributes.offset?parseInt(el.attributes.offset.nodeValue):0; - let mask = el.attributes.mask?parseInt(el.attributes.mask.nodeValue):255; - let value = 0; - switch (el.type) { - case 'checkbox': - value = el.checked ? mask : 0; - break; - case 'range': - case 'select-one': - value = el.value; - break - default: - return; - } - value = (value & mask) << offset; - return '0x'+reg.toString(16)+', 0x'+value.toString(16); - } - - - - const hide = el => { - el.classList.add('hidden') - } - const show = el => { - el.classList.remove('hidden') - } - - const disable = el => { - el.classList.add('disabled') - el.disabled = true - } - - const enable = el => { - el.classList.remove('disabled') - el.disabled = false - } - - const updateValue = (el, value, updateRemote) => { - updateRemote = updateRemote == null ? true : updateRemote - let initialValue - if (el.type === 'checkbox') { - initialValue = el.checked - value = !!value - el.checked = value - } else { - initialValue = el.value - el.value = value - } - - if (updateRemote && initialValue !== value) { - updateConfig(el); - } else if(!updateRemote){ - if(el.id === "aec"){ - value ? hide(exposure) : show(exposure) - } else if(el.id === "agc"){ - if (value) { - show(gainCeiling) - hide(agcGain) - } else { - hide(gainCeiling) - show(agcGain) - } - } else if(el.id === "awb_gain"){ - value ? show(wb) : hide(wb) - } else if(el.id === "face_recognize"){ - value ? enable(enrollButton) : disable(enrollButton) - } else if(el.id == "led_intensity"){ - value > -1 ? show(ledGroup) : hide(ledGroup) - } - } - } - - function updateConfig (el) { - let value - switch (el.type) { - case 'checkbox': - value = el.checked ? 1 : 0 - break - case 'range': - case 'select-one': - value = el.value - break - case 'button': - case 'submit': - value = '1' - break - default: - return - } - - const query = `${baseHost}/control?var=${el.id}&val=${value}` - - fetch(query) - .then(response => { - console.log(`request to ${query} finished, status: ${response.status}`) - }) - } - - document - .querySelectorAll('.close') - .forEach(el => { - el.onclick = () => { - hide(el.parentNode) - } - }) - - // read initial values - fetch(`${baseHost}/status`) - .then(function (response) { - return response.json() - }) - .then(function (state) { - document - .querySelectorAll('.default-action') - .forEach(el => { - updateValue(el, state[el.id], false) - }) - document - .querySelectorAll('.reg-action') - .forEach(el => { - let reg = el.attributes.reg?parseInt(el.attributes.reg.nodeValue):0; - if(reg == 0){ - return; - } - updateRegValue(el, state['0x'+reg.toString(16)], false) - }) - }) - - const view = document.getElementById('stream') - const viewContainer = document.getElementById('stream-container') - const stillButton = document.getElementById('get-still') - const streamButton = document.getElementById('toggle-stream') - const enrollButton = document.getElementById('face_enroll') - const closeButton = document.getElementById('close-stream') - const saveButton = document.getElementById('save-still') - const ledGroup = document.getElementById('led-group') - - const stopStream = () => { - window.stop(); - streamButton.innerHTML = 'Start Stream' - } - - const startStream = () => { - view.src = `${streamUrl}/stream` - show(viewContainer) - streamButton.innerHTML = 'Stop Stream' - } - - // Attach actions to buttons - stillButton.onclick = () => { - stopStream() - view.src = `${baseHost}/capture?_cb=${Date.now()}` - show(viewContainer) - } - - closeButton.onclick = () => { - stopStream() - hide(viewContainer) - } - - streamButton.onclick = () => { - const streamEnabled = streamButton.innerHTML === 'Stop Stream' - if (streamEnabled) { - stopStream() - } else { - startStream() - } - } - - enrollButton.onclick = () => { - updateConfig(enrollButton) - } - - saveButton.onclick = () => { - var canvas = document.createElement("canvas"); - canvas.width = view.width; - canvas.height = view.height; - document.body.appendChild(canvas); - var context = canvas.getContext('2d'); - context.drawImage(view,0,0); - try { - var dataURL = canvas.toDataURL('image/jpeg'); - saveButton.href = dataURL; - var d = new Date(); - saveButton.download = d.getFullYear() + ("0"+(d.getMonth()+1)).slice(-2) + ("0" + d.getDate()).slice(-2) + ("0" + d.getHours()).slice(-2) + ("0" + d.getMinutes()).slice(-2) + ("0" + d.getSeconds()).slice(-2) + ".jpg"; - } catch (e) { - console.error(e); - } - canvas.parentNode.removeChild(canvas); - } - - // Attach default on change action - document - .querySelectorAll('.default-action') - .forEach(el => { - el.onchange = () => updateConfig(el) - }) - - // Custom actions - // Gain - const agc = document.getElementById('agc') - const agcGain = document.getElementById('agc_gain-group') - const gainCeiling = document.getElementById('gainceiling-group') - agc.onchange = () => { - updateConfig(agc) - if (agc.checked) { - show(gainCeiling) - hide(agcGain) - } else { - hide(gainCeiling) - show(agcGain) - } - } - - // Exposure - const aec = document.getElementById('aec') - const exposure = document.getElementById('aec_value-group') - aec.onchange = () => { - updateConfig(aec) - aec.checked ? hide(exposure) : show(exposure) - } - - // AWB - const awb = document.getElementById('awb_gain') - const wb = document.getElementById('wb_mode-group') - awb.onchange = () => { - updateConfig(awb) - awb.checked ? show(wb) : hide(wb) - } - - // Detection and framesize - const detect = document.getElementById('face_detect') - const recognize = document.getElementById('face_recognize') - const framesize = document.getElementById('framesize') - - framesize.onchange = () => { - updateConfig(framesize) - if (framesize.value > 5) { - updateValue(detect, false) - updateValue(recognize, false) - } - } - - detect.onchange = () => { - if (framesize.value > 5) { - alert("Please select CIF or lower resolution before enabling this feature!"); - updateValue(detect, false) - return; - } - updateConfig(detect) - if (!detect.checked) { - disable(enrollButton) - updateValue(recognize, false) - } - } - - recognize.onchange = () => { - if (framesize.value > 5) { - alert("Please select CIF or lower resolution before enabling this feature!"); - updateValue(recognize, false) - return; - } - updateConfig(recognize) - if (recognize.checked) { - enable(enrollButton) - updateValue(detect, true) - } else { - disable(enrollButton) - } - } -}) - - </script> - </body> -</html> |