Merge branch 'main' into ulc-usermod

This commit is contained in:
Craft4Cube 2023-06-28 13:38:26 +02:00 committed by GitHub
commit f44fd21abb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
47 changed files with 6784 additions and 4656 deletions

View File

@ -10,7 +10,7 @@
# ------------------------------------------------------------------------------
# CI binaries
;; default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth # ESP32 variant builds are temporarily excluded from CI due to toolchain issues on the GitHub Actions Linux environment
; default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth # ESP32 variant builds are temporarily excluded from CI due to toolchain issues on the GitHub Actions Linux environment
default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_s2_mini, esp32c3dev, esp32s3dev_8MB
# Release binaries
@ -40,7 +40,8 @@ default_envs = nodemcuv2, esp8266_2m, esp01_1m_full, esp32dev, esp32_eth, lolin_
; default_envs = esp32dev_qio80
; default_envs = esp32_eth_ota1mapp
; default_envs = esp32s2_saola
; default_envs = esp32_ulc
; default_envs = esp32c3dev
; default_envs = lolin_s2_mini
src_dir = ./wled00
data_dir = ./wled00/data
@ -461,8 +462,8 @@ board = esp32-c3-devkitm-1
board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
build_flags = ${common.build_flags} ${esp32c3.build_flags} #-D WLED_RELEASE_NAME=ESP32-C3
-D WLED_WATCHDOG_TIMEOUT=0
; -DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB
-DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip
-DARDUINO_USB_CDC_ON_BOOT=1 ;; for virtual CDC USB
;-DARDUINO_USB_CDC_ON_BOOT=0 ;; for serial-to-USB chip
upload_speed = 460800
build_unflags = ${common.build_unflags}
lib_deps = ${esp32c3.lib_deps}
@ -574,10 +575,10 @@ platform = ${esp32s2.platform}
platform_packages = ${esp32s2.platform_packages}
board = lolin_s2_mini
board_build.partitions = tools/WLED_ESP32_4MB_1MB_FS.csv
build_unflags = ${common.build_unflags} -DARDUINO_USB_CDC_ON_BOOT=1
build_unflags = ${common.build_unflags} #-DARDUINO_USB_CDC_ON_BOOT=1
build_flags = ${common.build_flags} ${esp32s2.build_flags} #-D WLED_RELEASE_NAME=LolinS2
-DBOARD_HAS_PSRAM
-DARDUINO_USB_CDC_ON_BOOT=0
-DARDUINO_USB_CDC_ON_BOOT=1 # try disabling and enabling unflag above in case of board-specific issues, will disable Serial
-DARDUINO_USB_MSC_ON_BOOT=0
-DARDUINO_USB_DFU_ON_BOOT=0
-DLOLIN_WIFI_FIX ; seems to work much better with this

View File

@ -222,6 +222,7 @@ writeHtmlGzipped("wled00/data/index.htm", "wled00/html_ui.h", 'index');
writeHtmlGzipped("wled00/data/simple.htm", "wled00/html_simple.h", 'simple');
writeHtmlGzipped("wled00/data/pixart/pixart.htm", "wled00/html_pixart.h", 'pixart');
writeHtmlGzipped("wled00/data/cpal/cpal.htm", "wled00/html_cpal.h", 'cpal');
writeHtmlGzipped("wled00/data/pxmagic/pxmagic.htm", "wled00/html_pxmagic.h", 'pxmagic');
/*
writeChunks(
"wled00/data",
@ -389,12 +390,6 @@ const char PAGE_dmxmap[] PROGMEM = R"=====()=====";
method: "gzip",
filter: "html-minify",
},
{
file: "liveviewws.htm",
name: "PAGE_liveviewws",
method: "gzip",
filter: "html-minify",
},
{
file: "liveviewws2D.htm",
name: "PAGE_liveviewws2D",

View File

@ -113,8 +113,7 @@ private:
public:
void setup()
{
PinManagerPinType pins[2] = { { i2c_sda, true }, { i2c_scl, true } }; // allocate pins
if (!pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) return;
if (i2c_scl<0 || i2c_sda<0) { enabled = false; return; }
sensorFound = lightMeter.begin();
initDone = true;
}
@ -174,7 +173,9 @@ public:
user = root.createNestedObject(F("u"));
JsonArray lux_json = user.createNestedArray(F("Luminance"));
if (!sensorFound) {
if (!enabled) {
lux_json.add(F("disabled"));
} else if (!sensorFound) {
// if no sensor
lux_json.add(F("BH1750 "));
lux_json.add(F("Not Found"));

View File

@ -184,8 +184,7 @@ private:
public:
void setup()
{
PinManagerPinType pins[2] = { { i2c_sda, true }, { i2c_scl, true } }; // allocate pins
if (!pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) { sensorType=0; return; }
if (i2c_scl<0 || i2c_sda<0) { enabled = false; sensorType = 0; return; }
if (!bme.begin())
{

View File

@ -12,8 +12,7 @@ class RTCUsermod : public Usermod {
public:
void setup() {
PinManagerPinType pins[2] = { { i2c_scl, true }, { i2c_sda, true } };
if (!pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) { disabled = true; return; }
if (i2c_scl<0 || i2c_sda<0) { disabled = true; return; }
RTC.begin();
time_t rtcTime = RTC.get();
if (rtcTime) {
@ -25,8 +24,8 @@ class RTCUsermod : public Usermod {
}
void loop() {
if (strip.isUpdating()) return;
if (!disabled && toki.isTick()) {
if (disabled || strip.isUpdating()) return;
if (toki.isTick()) {
time_t t = toki.second();
if (t != RTC.get()) RTC.set(t); //set RTC to NTP/UI-provided value
}

View File

@ -50,8 +50,7 @@ class UsermodVL53L0XGestures : public Usermod {
public:
void setup() {
PinManagerPinType pins[2] = { { i2c_scl, true }, { i2c_sda, true } };
if (!pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) { enabled = false; return; }
if (i2c_scl<0 || i2c_sda<0) { enabled = false; return; }
sensor.setTimeout(150);
if (!sensor.init())

View File

@ -85,8 +85,7 @@ class MPU6050Driver : public Usermod {
* setup() is called once at boot. WiFi is not yet connected at this point.
*/
void setup() {
PinManagerPinType pins[2] = { { i2c_scl, true }, { i2c_sda, true } };
if (!pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) { enabled = false; return; }
if (i2c_scl<0 || i2c_sda<0) { enabled = false; return; }
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
Wire.setClock(400000U); // 400kHz I2C clock. Comment this line if having compilation difficulties
#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE

View File

@ -14,6 +14,9 @@
#ifndef MULTI_RELAY_PINS
#define MULTI_RELAY_PINS -1
#define MULTI_RELAY_ENABLED false
#else
#define MULTI_RELAY_ENABLED true
#endif
#define WLED_DEBOUNCE_THRESHOLD 50 //only consider button input of at least 50ms as valid (debouncing)
@ -336,7 +339,7 @@ byte MultiRelay::IOexpanderRead(int address) {
MultiRelay::MultiRelay()
: _switchTimerStart(0)
, enabled(false)
, enabled(MULTI_RELAY_ENABLED)
, initDone(false)
, usePcf8574(USE_PCF8574)
, addrPcf8574(PCF8574_ADDRESS)
@ -479,7 +482,7 @@ void MultiRelay::publishHomeAssistantAutodiscovery() {
void MultiRelay::setup() {
// pins retrieved from cfg.json (readFromConfig()) prior to running setup()
// if we want PCF8574 expander I2C pins need to be valid
if (i2c_sda == i2c_scl && i2c_sda == -1) usePcf8574 = false;
if (i2c_sda<0 || i2c_scl<0) usePcf8574 = false;
uint8_t state = 0;
for (int i=0; i<MULTI_RELAY_MAX_RELAYS; i++) {
@ -765,7 +768,7 @@ bool MultiRelay::readFromConfig(JsonObject &root) {
usePcf8574 = top[FPSTR(_pcf8574)] | usePcf8574;
addrPcf8574 = top[FPSTR(_pcfAddress)] | addrPcf8574;
// if I2C is not globally initialised just ignore
if (i2c_sda == i2c_scl && i2c_sda == -1) usePcf8574 = false;
if (i2c_sda<0 || i2c_scl<0) usePcf8574 = false;
periodicBroadcastSec = top[FPSTR(_broadcast)] | periodicBroadcastSec;
periodicBroadcastSec = min(900,max(0,(int)periodicBroadcastSec));
HAautodiscovery = top[FPSTR(_HAautodiscovery)] | HAautodiscovery;

View File

@ -16,7 +16,6 @@ class ShtUsermod : public Usermod
private:
bool enabled = false; // Is usermod enabled or not
bool firstRunDone = false; // Remembers if the first config load run had been done
bool pinAllocDone = true; // Remembers if we have allocated pins
bool initDone = false; // Remembers if the mod has been completely initialised
bool haMqttDiscovery = false; // Is MQTT discovery enabled or not
bool haMqttDiscoveryDone = false; // Remembers if we already published the HA discovery topics
@ -94,7 +93,7 @@ void ShtUsermod::initShtTempHumiditySensor()
case USERMOD_SHT_TYPE_SHT85: shtTempHumidSensor = (SHT *) new SHT85(); break;
}
shtTempHumidSensor->begin(shtI2cAddress, i2c_sda, i2c_scl);
shtTempHumidSensor->begin(shtI2cAddress); // uses &Wire
if (shtTempHumidSensor->readStatus() == 0xFFFF) {
DEBUG_PRINTF("[%s] SHT init failed!\n", _name);
cleanup();
@ -132,13 +131,6 @@ void ShtUsermod::cleanupShtTempHumiditySensor()
void ShtUsermod::cleanup()
{
cleanupShtTempHumiditySensor();
if (pinAllocDone) {
PinManagerPinType pins[2] = { { i2c_sda, true }, { i2c_scl, true } };
pinManager.deallocateMultiplePins(pins, 2, PinOwner::HW_I2C);
pinAllocDone = false;
}
enabled = false;
}
@ -237,14 +229,12 @@ void ShtUsermod::appendDeviceToMqttDiscoveryMessage(JsonDocument& root) {
void ShtUsermod::setup()
{
if (enabled) {
PinManagerPinType pins[2] = { { i2c_sda, true }, { i2c_scl, true } };
// GPIOs can be set to -1 and allocateMultiplePins() will return true, so check they're gt zero
if (i2c_sda < 0 || i2c_scl < 0 || !pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) {
DEBUG_PRINTF("[%s] SHT pin allocation failed!\n", _name);
// GPIOs can be set to -1 , so check they're gt zero
if (i2c_sda < 0 || i2c_scl < 0) {
DEBUG_PRINTF("[%s] I2C bus not initialised!\n", _name);
cleanup();
return;
}
pinAllocDone = true;
initShtTempHumiditySensor();

View File

@ -88,7 +88,8 @@ typedef enum {
SSD1305, // U8X8_SSD1305_128X32_ADAFRUIT_HW_I2C
SSD1305_64, // U8X8_SSD1305_128X64_ADAFRUIT_HW_I2C
SSD1306_SPI, // U8X8_SSD1306_128X32_NONAME_HW_SPI
SSD1306_SPI64 // U8X8_SSD1306_128X64_NONAME_HW_SPI
SSD1306_SPI64, // U8X8_SSD1306_128X64_NONAME_HW_SPI
SSD1309_SPI64 // U8X8_SSD1309_128X64_NONAME0_4W_HW_SPI
} DisplayType;
@ -533,24 +534,18 @@ void FourLineDisplayUsermod::sleepOrClock(bool enabled) {
// gets called once at boot. Do all initialization that doesn't depend on
// network here
void FourLineDisplayUsermod::setup() {
if (type == NONE || !enabled) return;
bool isSPI = (type == SSD1306_SPI || type == SSD1306_SPI64);
bool isSPI = (type == SSD1306_SPI || type == SSD1306_SPI64 || type == SSD1309_SPI64);
// check if pins are -1 and disable usermod as PinManager::allocateMultiplePins() will accept -1 as a valid pin
if (isSPI) {
PinManagerPinType cspins[3] = { { ioPin[0], true }, { ioPin[1], true }, { ioPin[2], true } };
if (ioPin[0]==-1 || ioPin[1]==-1 || ioPin[1]==-1) { type=NONE; return; }
if (!pinManager.allocateMultiplePins(cspins, 3, PinOwner::UM_FourLineDisplay)) { type=NONE; return; }
PinManagerPinType pins[2] = { { spi_sclk, true }, { spi_mosi, true } };
if (spi_sclk==-1 || spi_mosi==-1 || !pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_SPI)) {
pinManager.deallocateMultiplePins(cspins, 3, PinOwner::UM_FourLineDisplay);
if (spi_sclk<0 || spi_mosi<0 || ioPin[0]<0 || ioPin[1]<0 || ioPin[1]<0) {
type = NONE;
return;
} else {
PinManagerPinType cspins[3] = { { ioPin[0], true }, { ioPin[1], true }, { ioPin[2], true } };
if (!pinManager.allocateMultiplePins(cspins, 3, PinOwner::UM_FourLineDisplay)) { type = NONE; }
}
} else {
PinManagerPinType pins[2] = { {i2c_scl, true }, { i2c_sda, true } };
if (i2c_scl==-1 || i2c_sda==-1 || !pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) { type=NONE; return; }
if (i2c_scl<0 || i2c_sda<0) { type=NONE; }
}
DEBUG_PRINTLN(F("Allocating display."));
@ -564,19 +559,15 @@ void FourLineDisplayUsermod::setup() {
// U8X8 uses global SPI variable that is attached to VSPI bus on ESP32
case SSD1306_SPI: u8x8 = (U8X8 *) new U8X8_SSD1306_128X32_UNIVISION_4W_HW_SPI(ioPin[0], ioPin[1], ioPin[2]); break; // Pins are cs, dc, reset
case SSD1306_SPI64: u8x8 = (U8X8 *) new U8X8_SSD1306_128X64_NONAME_4W_HW_SPI(ioPin[0], ioPin[1], ioPin[2]); break; // Pins are cs, dc, reset
case SSD1309_SPI64: u8x8 = (U8X8 *) new U8X8_SSD1309_128X64_NONAME0_4W_HW_SPI(ioPin[0], ioPin[1], ioPin[2]); break; // Pins are cs, dc, reset
// catchall
default: u8x8 = (U8X8 *) new U8X8_NULL(); break;
default: u8x8 = (U8X8 *) new U8X8_NULL(); enabled = false; break; // catchall to create U8x8 instance
}
if (nullptr == u8x8) {
DEBUG_PRINTLN(F("Display init failed."));
if (isSPI) {
int8_t pins[] = {spi_sclk, spi_mosi};
pinManager.deallocateMultiplePins((const uint8_t*)pins, 2, PinOwner::HW_SPI);
pinManager.deallocateMultiplePins((const uint8_t*)ioPin, 3, PinOwner::UM_FourLineDisplay);
} else {
int8_t pins[] = {i2c_scl, i2c_sda};
pinManager.deallocateMultiplePins((const uint8_t*)pins, 2, PinOwner::HW_I2C);
}
type = NONE;
return;
@ -1215,6 +1206,7 @@ void FourLineDisplayUsermod::appendConfigData() {
oappend(SET_F("addOption(dd,'SSD1305 128x64',5);"));
oappend(SET_F("addOption(dd,'SSD1306 SPI',6);"));
oappend(SET_F("addOption(dd,'SSD1306 SPI 128x64',7);"));
oappend(SET_F("addOption(dd,'SSD1309 SPI 128x64',8);"));
oappend(SET_F("addInfo('4LineDisplay:type',1,'<br><i class=\"warn\">Change may require reboot</i>','');"));
oappend(SET_F("addInfo('4LineDisplay:pin[]',0,'','SPI CS');"));
oappend(SET_F("addInfo('4LineDisplay:pin[]',1,'','SPI DC');"));
@ -1306,38 +1298,30 @@ bool FourLineDisplayUsermod::readFromConfig(JsonObject& root) {
bool pinsChanged = false;
for (byte i=0; i<3; i++) if (ioPin[i] != oldPin[i]) { pinsChanged = true; break; }
if (pinsChanged || type!=newType) {
bool isSPI = (type == SSD1306_SPI || type == SSD1306_SPI64);
bool newSPI = (newType == SSD1306_SPI || newType == SSD1306_SPI64);
bool isSPI = (type == SSD1306_SPI || type == SSD1306_SPI64 || type == SSD1309_SPI64);
bool newSPI = (newType == SSD1306_SPI || newType == SSD1306_SPI64 || newType == SSD1309_SPI64);
if (isSPI) {
if (pinsChanged || !newSPI) pinManager.deallocateMultiplePins((const uint8_t*)oldPin, 3, PinOwner::UM_FourLineDisplay);
if (!newSPI) {
// was SPI but is no longer SPI
int8_t oldPins[] = {spi_sclk, spi_mosi};
pinManager.deallocateMultiplePins((const uint8_t*)oldPins, 2, PinOwner::HW_SPI);
PinManagerPinType pins[2] = { {i2c_scl, true }, { i2c_sda, true } };
if (i2c_scl==-1 || i2c_sda==-1 || !pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_I2C)) { newType=NONE; }
if (i2c_scl<0 || i2c_sda<0) { newType=NONE; }
} else {
// still SPI but pins changed
PinManagerPinType cspins[3] = { { ioPin[0], true }, { ioPin[1], true }, { ioPin[2], true } };
if (ioPin[0]==-1 || ioPin[1]==-1 || ioPin[1]==-1) { newType=NONE; }
if (ioPin[0]<0 || ioPin[1]<0 || ioPin[1]<0) { newType=NONE; }
else if (!pinManager.allocateMultiplePins(cspins, 3, PinOwner::UM_FourLineDisplay)) { newType=NONE; }
}
} else if (newSPI) {
// was I2C but is now SPI
int8_t oldPins[] = {i2c_scl, i2c_sda};
pinManager.deallocateMultiplePins((const uint8_t*)oldPins, 2, PinOwner::HW_I2C);
if (spi_sclk<0 || spi_mosi<0) {
newType=NONE;
} else {
PinManagerPinType pins[3] = { { ioPin[0], true }, { ioPin[1], true }, { ioPin[2], true } };
if (ioPin[0]==-1 || ioPin[1]==-1 || ioPin[1]==-1) { newType=NONE; }
if (ioPin[0]<0 || ioPin[1]<0 || ioPin[1]<0) { newType=NONE; }
else if (!pinManager.allocateMultiplePins(pins, 3, PinOwner::UM_FourLineDisplay)) { newType=NONE; }
else {
PinManagerPinType pins[2] = { { spi_sclk, true }, { spi_mosi, true } };
if (spi_sclk==-1 || spi_mosi==-1 || !pinManager.allocateMultiplePins(pins, 2, PinOwner::HW_SPI)) {
pinManager.deallocateMultiplePins(pins, 3, PinOwner::UM_FourLineDisplay);
newType = NONE;
}
}
} else {
// just I2C tye changed
// just I2C type changed
}
type = newType;
switch (type) {
@ -1369,8 +1353,12 @@ bool FourLineDisplayUsermod::readFromConfig(JsonObject& root) {
u8x8_Setup(u8x8->getU8x8(), u8x8_d_ssd1306_128x64_noname, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
u8x8_SetPin_4Wire_HW_SPI(u8x8->getU8x8(), ioPin[0], ioPin[1], ioPin[2]); // Pins are cs, dc, reset
break;
case SSD1309_SPI64:
u8x8_Setup(u8x8->getU8x8(), u8x8_d_ssd1309_128x64_noname0, u8x8_cad_001, u8x8_byte_arduino_hw_spi, u8x8_gpio_and_delay_arduino);
u8x8_SetPin_4Wire_HW_SPI(u8x8->getU8x8(), ioPin[0], ioPin[1], ioPin[2]); // Pins are cs, dc, reset
default:
u8x8_Setup(u8x8->getU8x8(), u8x8_d_null_cb, u8x8_cad_empty, u8x8_byte_empty, u8x8_dummy_cb);
enabled = false;
break;
}
startDisplay();

View File

@ -474,7 +474,7 @@ void RotaryEncoderUIUsermod::setup()
DEBUG_PRINTLN(F("Usermod Rotary Encoder init."));
if (usePcf8574) {
if ((i2c_sda == i2c_scl && i2c_sda == -1) || pinA<0 || pinB<0 || pinC<0) {
if (i2c_sda < 0 || i2c_scl < 0 || pinA < 0 || pinB < 0 || pinC < 0) {
DEBUG_PRINTLN(F("I2C and/or PCF8574 pins unused, disabling."));
enabled = false;
return;

View File

@ -1,25 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.2046
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wled00", "wled00\wled00.vcxproj", "{C5F80730-F44F-4478-BDAE-6634EFC2CA88}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Debug|x86.ActiveCfg = Debug|Win32
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Debug|x86.Build.0 = Debug|Win32
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Release|x86.ActiveCfg = Release|Win32
{C5F80730-F44F-4478-BDAE-6634EFC2CA88}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9A679C2B-61D3-400B-B96F-06E604E9CED2}
EndGlobalSection
EndGlobal

View File

@ -5879,7 +5879,7 @@ uint16_t mode_2Dscrollingtext(void) {
}
const bool zero = SEGMENT.check3;
const int yoffset = map(SEGMENT.intensity, 0, 255, -rows/2, rows/2) + (rows-letterHeight)/2;
char text[33] = {'\0'};
char text[WLED_MAX_SEGNAME_LEN+1] = {'\0'};
if (SEGMENT.name) for (size_t i=0,j=0; i<strlen(SEGMENT.name); i++) if (SEGMENT.name[i]>31 && SEGMENT.name[i]<128) text[j++] = SEGMENT.name[i];
if (!strlen(text)

View File

@ -202,7 +202,6 @@ void /*IRAM_ATTR*/ Segment::setPixelColorXY(int x, int y, uint32_t col)
if (leds) leds[XY(x,y)] = col;
uint8_t _bri_t = currentBri(on ? opacity : 0);
if (!_bri_t && !transitional) return;
if (_bri_t < 255) {
byte r = scale8(R(col), _bri_t);
byte g = scale8(G(col), _bri_t);

View File

@ -305,23 +305,26 @@ CRGBPalette16 &Segment::loadPalette(CRGBPalette16 &targetPalette, uint8_t pal) {
}
void Segment::startTransition(uint16_t dur) {
if (transitional || _t) return; // already in transition no need to store anything
if (!dur) {
transitional = false;
if (_t) {
delete _t;
_t = nullptr;
}
return;
}
if (transitional && _t) return; // already in transition no need to store anything
// starting a transition has to occur before change so we get current values 1st
uint8_t _briT = currentBri(on ? opacity : 0);
uint8_t _cctT = currentBri(cct, true);
CRGBPalette16 _palT = CRGBPalette16(DEFAULT_COLOR); loadPalette(_palT, palette);
uint8_t _modeP = mode;
uint32_t _colorT[NUM_COLORS];
for (size_t i=0; i<NUM_COLORS; i++) _colorT[i] = currentColor(i, colors[i]);
if (!_t) _t = new Transition(dur); // no previous transition running
_t = new Transition(dur); // no previous transition running
if (!_t) return; // failed to allocate data
_t->_briT = _briT;
_t->_cctT = _cctT;
CRGBPalette16 _palT = CRGBPalette16(DEFAULT_COLOR); loadPalette(_palT, palette);
_t->_briT = on ? opacity : 0;
_t->_cctT = cct;
_t->_palT = _palT;
_t->_modeP = _modeP;
for (size_t i=0; i<NUM_COLORS; i++) _t->_colorT[i] = _colorT[i];
_t->_modeP = mode;
for (size_t i=0; i<NUM_COLORS; i++) _t->_colorT[i] = colors[i];
transitional = true; // setOption(SEG_OPTION_TRANSITIONAL, true);
}
@ -334,10 +337,10 @@ uint16_t Segment::progress() {
}
uint8_t Segment::currentBri(uint8_t briNew, bool useCct) {
if (transitional && _t) {
uint32_t prog = progress() + 1;
if (useCct) return ((briNew * prog) + _t->_cctT * (0x10000 - prog)) >> 16;
else return ((briNew * prog) + _t->_briT * (0x10000 - prog)) >> 16;
uint32_t prog = progress();
if (transitional && _t && prog < 0xFFFFU) {
if (useCct) return ((briNew * prog) + _t->_cctT * (0xFFFFU - prog)) >> 16;
else return ((briNew * prog) + _t->_briT * (0xFFFFU - prog)) >> 16;
} else {
return briNew;
}
@ -368,6 +371,7 @@ CRGBPalette16 &Segment::currentPalette(CRGBPalette16 &targetPalette, uint8_t pal
void Segment::handleTransition() {
if (!transitional) return;
uint16_t _progress = progress();
if (_progress == 0xFFFFU) transitional = false; // finish transitioning segment
if (_t) { // thanks to @nXm AKA https://github.com/NMeirer
if (_progress >= 32767U && _t->_modeP != mode) markForReset();
if (_progress == 0xFFFFU) {
@ -375,7 +379,6 @@ void Segment::handleTransition() {
_t = nullptr;
}
}
if (_progress == 0xFFFFU) transitional = false; // finish transitioning segment
}
void Segment::setUp(uint16_t i1, uint16_t i2, uint8_t grp, uint8_t spc, uint16_t ofs, uint16_t i1Y, uint16_t i2Y) {
@ -622,7 +625,6 @@ void IRAM_ATTR Segment::setPixelColor(int i, uint32_t col)
uint16_t len = length();
uint8_t _bri_t = currentBri(on ? opacity : 0);
if (!_bri_t && !transitional && fadeTransition) return; // if _bri_t == 0 && segment is not transitionig && transitions are enabled then save a few CPU cycles
if (_bri_t < 255) {
byte r = scale8(R(col), _bri_t);
byte g = scale8(G(col), _bri_t);
@ -1590,7 +1592,7 @@ void WS2812FX::setRange(uint16_t i, uint16_t i2, uint32_t col) {
}
void WS2812FX::setTransitionMode(bool t) {
for (segment &seg : _segments) if (!seg.transitional) seg.startTransition(t ? _transitionDur : 0);
for (segment &seg : _segments) seg.startTransition(t ? _transitionDur : 0);
}
#ifdef WLED_DEBUG

View File

@ -810,97 +810,97 @@ class PolyBus {
switch (busType) {
case I_NONE: break;
#ifdef ESP8266
case I_8266_U0_NEO_3: (static_cast<B_8266_U0_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_NEO_3: (static_cast<B_8266_U1_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_NEO_3: (static_cast<B_8266_DM_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_NEO_3: (static_cast<B_8266_BB_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_NEO_4: (static_cast<B_8266_U0_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_NEO_4: (static_cast<B_8266_U1_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_NEO_4: (static_cast<B_8266_DM_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_NEO_4: (static_cast<B_8266_BB_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_400_3: (static_cast<B_8266_U0_400_3*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_400_3: (static_cast<B_8266_U1_400_3*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_400_3: (static_cast<B_8266_DM_400_3*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_400_3: (static_cast<B_8266_BB_400_3*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_TM1_4: (static_cast<B_8266_U0_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_TM1_4: (static_cast<B_8266_U1_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_TM1_4: (static_cast<B_8266_DM_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_TM1_4: (static_cast<B_8266_BB_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_TM2_3: (static_cast<B_8266_U0_TM2_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_TM2_3: (static_cast<B_8266_U1_TM2_4*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_TM2_3: (static_cast<B_8266_DM_TM2_4*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_TM2_3: (static_cast<B_8266_BB_TM2_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_UCS_3: (static_cast<B_8266_U0_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_UCS_3: (static_cast<B_8266_U1_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_UCS_3: (static_cast<B_8266_DM_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_UCS_3: (static_cast<B_8266_BB_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_UCS_4: (static_cast<B_8266_U0_UCS_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U1_UCS_4: (static_cast<B_8266_U1_UCS_4*>(busPtr))->SetLuminance(b); break;
case I_8266_DM_UCS_4: (static_cast<B_8266_DM_UCS_4*>(busPtr))->SetLuminance(b); break;
case I_8266_BB_UCS_4: (static_cast<B_8266_BB_UCS_4*>(busPtr))->SetLuminance(b); break;
case I_8266_U0_NEO_3: (static_cast<B_8266_U0_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_NEO_3: (static_cast<B_8266_U1_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_NEO_3: (static_cast<B_8266_DM_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_NEO_3: (static_cast<B_8266_BB_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U0_NEO_4: (static_cast<B_8266_U0_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_NEO_4: (static_cast<B_8266_U1_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_NEO_4: (static_cast<B_8266_DM_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_NEO_4: (static_cast<B_8266_BB_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U0_400_3: (static_cast<B_8266_U0_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_400_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_400_3: (static_cast<B_8266_U1_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_400_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_400_3: (static_cast<B_8266_DM_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_400_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_400_3: (static_cast<B_8266_BB_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_400_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U0_TM1_4: (static_cast<B_8266_U0_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_TM1_4: (static_cast<B_8266_U1_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_TM1_4: (static_cast<B_8266_DM_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_TM1_4: (static_cast<B_8266_BB_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U0_TM2_3: (static_cast<B_8266_U0_TM2_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_TM2_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_TM2_3: (static_cast<B_8266_U1_TM2_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_TM2_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_TM2_3: (static_cast<B_8266_DM_TM2_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_TM2_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_TM2_3: (static_cast<B_8266_BB_TM2_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_TM2_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U0_UCS_3: (static_cast<B_8266_U0_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_UCS_3: (static_cast<B_8266_U1_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_UCS_3: (static_cast<B_8266_DM_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_UCS_3: (static_cast<B_8266_BB_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U0_UCS_4: (static_cast<B_8266_U0_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U0_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_U1_UCS_4: (static_cast<B_8266_U1_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_U1_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_DM_UCS_4: (static_cast<B_8266_DM_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_DM_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_8266_BB_UCS_4: (static_cast<B_8266_BB_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_8266_BB_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifdef ARDUINO_ARCH_ESP32
case I_32_RN_NEO_3: (static_cast<B_32_RN_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_32_RN_NEO_3: (static_cast<B_32_RN_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
#ifndef WLED_NO_I2S0_PIXELBUS
case I_32_I0_NEO_3: (static_cast<B_32_I0_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_32_I0_NEO_3: (static_cast<B_32_I0_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifndef WLED_NO_I2S1_PIXELBUS
case I_32_I1_NEO_3: (static_cast<B_32_I1_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_32_I1_NEO_3: (static_cast<B_32_I1_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
// case I_32_BB_NEO_3: (static_cast<B_32_BB_NEO_3*>(busPtr))->SetLuminance(b); break;
case I_32_RN_NEO_4: (static_cast<B_32_RN_NEO_4*>(busPtr))->SetLuminance(b); break;
// case I_32_BB_NEO_3: (static_cast<B_32_BB_NEO_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_BB_NEO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_RN_NEO_4: (static_cast<B_32_RN_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
#ifndef WLED_NO_I2S0_PIXELBUS
case I_32_I0_NEO_4: (static_cast<B_32_I0_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_32_I0_NEO_4: (static_cast<B_32_I0_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifndef WLED_NO_I2S1_PIXELBUS
case I_32_I1_NEO_4: (static_cast<B_32_I1_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_32_I1_NEO_4: (static_cast<B_32_I1_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
#endif
// case I_32_BB_NEO_4: (static_cast<B_32_BB_NEO_4*>(busPtr))->SetLuminance(b); break;
case I_32_RN_400_3: (static_cast<B_32_RN_400_3*>(busPtr))->SetLuminance(b); break;
// case I_32_BB_NEO_4: (static_cast<B_32_BB_NEO_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_BB_NEO_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_RN_400_3: (static_cast<B_32_RN_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_400_3*>(busPtr))->ApplyPostAdjustments(); break;
#ifndef WLED_NO_I2S0_PIXELBUS
case I_32_I0_400_3: (static_cast<B_32_I0_400_3*>(busPtr))->SetLuminance(b); break;
case I_32_I0_400_3: (static_cast<B_32_I0_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_400_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifndef WLED_NO_I2S1_PIXELBUS
case I_32_I1_400_3: (static_cast<B_32_I1_400_3*>(busPtr))->SetLuminance(b); break;
case I_32_I1_400_3: (static_cast<B_32_I1_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_400_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
// case I_32_BB_400_3: (static_cast<B_32_BB_400_3*>(busPtr))->SetLuminance(b); break;
case I_32_RN_TM1_4: (static_cast<B_32_RN_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_32_RN_TM2_3: (static_cast<B_32_RN_TM2_3*>(busPtr))->SetLuminance(b); break;
// case I_32_BB_400_3: (static_cast<B_32_BB_400_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_BB_400_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_RN_TM1_4: (static_cast<B_32_RN_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_RN_TM2_3: (static_cast<B_32_RN_TM2_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_TM2_3*>(busPtr))->ApplyPostAdjustments(); break;
#ifndef WLED_NO_I2S0_PIXELBUS
case I_32_I0_TM1_4: (static_cast<B_32_I0_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_32_I0_TM2_3: (static_cast<B_32_I0_TM2_3*>(busPtr))->SetLuminance(b); break;
case I_32_I0_TM1_4: (static_cast<B_32_I0_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_I0_TM2_3: (static_cast<B_32_I0_TM2_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_TM2_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifndef WLED_NO_I2S1_PIXELBUS
case I_32_I1_TM1_4: (static_cast<B_32_I1_TM1_4*>(busPtr))->SetLuminance(b); break;
case I_32_I1_TM2_3: (static_cast<B_32_I1_TM2_3*>(busPtr))->SetLuminance(b); break;
case I_32_I1_TM1_4: (static_cast<B_32_I1_TM1_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_TM1_4*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_I1_TM2_3: (static_cast<B_32_I1_TM2_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_TM2_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
case I_32_RN_UCS_3: (static_cast<B_32_RN_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_32_RN_UCS_3: (static_cast<B_32_RN_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
#ifndef WLED_NO_I2S0_PIXELBUS
case I_32_I0_UCS_3: (static_cast<B_32_I0_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_32_I0_UCS_3: (static_cast<B_32_I0_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifndef WLED_NO_I2S1_PIXELBUS
case I_32_I1_UCS_3: (static_cast<B_32_I1_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_32_I1_UCS_3: (static_cast<B_32_I1_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
#endif
// case I_32_BB_UCS_3: (static_cast<B_32_BB_UCS_3*>(busPtr))->SetLuminance(b); break;
case I_32_RN_UCS_4: (static_cast<B_32_RN_UCS_4*>(busPtr))->SetLuminance(b); break;
// case I_32_BB_UCS_3: (static_cast<B_32_BB_UCS_3*>(busPtr))->SetLuminance(b); (static_cast<B_32_BB_UCS_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_32_RN_UCS_4: (static_cast<B_32_RN_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_RN_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
#ifndef WLED_NO_I2S0_PIXELBUS
case I_32_I0_UCS_4: (static_cast<B_32_I0_UCS_4*>(busPtr))->SetLuminance(b); break;
case I_32_I0_UCS_4: (static_cast<B_32_I0_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_I0_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
#endif
#ifndef WLED_NO_I2S1_PIXELBUS
case I_32_I1_UCS_4: (static_cast<B_32_I1_UCS_4*>(busPtr))->SetLuminance(b); break;
case I_32_I1_UCS_4: (static_cast<B_32_I1_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_I1_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
#endif
// case I_32_BB_UCS_4: (static_cast<B_32_BB_UCS_4*>(busPtr))->SetLuminance(b); break;
// case I_32_BB_UCS_4: (static_cast<B_32_BB_UCS_4*>(busPtr))->SetLuminance(b); (static_cast<B_32_BB_UCS_4*>(busPtr))->ApplyPostAdjustments(); break;
#endif
case I_HS_DOT_3: (static_cast<B_HS_DOT_3*>(busPtr))->SetLuminance(b); break;
case I_SS_DOT_3: (static_cast<B_SS_DOT_3*>(busPtr))->SetLuminance(b); break;
case I_HS_LPD_3: (static_cast<B_HS_LPD_3*>(busPtr))->SetLuminance(b); break;
case I_SS_LPD_3: (static_cast<B_SS_LPD_3*>(busPtr))->SetLuminance(b); break;
case I_HS_LPO_3: (static_cast<B_HS_LPO_3*>(busPtr))->SetLuminance(b); break;
case I_SS_LPO_3: (static_cast<B_SS_LPO_3*>(busPtr))->SetLuminance(b); break;
case I_HS_WS1_3: (static_cast<B_HS_WS1_3*>(busPtr))->SetLuminance(b); break;
case I_SS_WS1_3: (static_cast<B_SS_WS1_3*>(busPtr))->SetLuminance(b); break;
case I_HS_P98_3: (static_cast<B_HS_P98_3*>(busPtr))->SetLuminance(b); break;
case I_SS_P98_3: (static_cast<B_SS_P98_3*>(busPtr))->SetLuminance(b); break;
case I_HS_DOT_3: (static_cast<B_HS_DOT_3*>(busPtr))->SetLuminance(b); (static_cast<B_HS_DOT_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_SS_DOT_3: (static_cast<B_SS_DOT_3*>(busPtr))->SetLuminance(b); (static_cast<B_SS_DOT_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_HS_LPD_3: (static_cast<B_HS_LPD_3*>(busPtr))->SetLuminance(b); (static_cast<B_HS_LPD_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_SS_LPD_3: (static_cast<B_SS_LPD_3*>(busPtr))->SetLuminance(b); (static_cast<B_SS_LPD_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_HS_LPO_3: (static_cast<B_HS_LPO_3*>(busPtr))->SetLuminance(b); (static_cast<B_HS_LPO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_SS_LPO_3: (static_cast<B_SS_LPO_3*>(busPtr))->SetLuminance(b); (static_cast<B_SS_LPO_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_HS_WS1_3: (static_cast<B_HS_WS1_3*>(busPtr))->SetLuminance(b); (static_cast<B_HS_WS1_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_SS_WS1_3: (static_cast<B_SS_WS1_3*>(busPtr))->SetLuminance(b); (static_cast<B_SS_WS1_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_HS_P98_3: (static_cast<B_HS_P98_3*>(busPtr))->SetLuminance(b); (static_cast<B_HS_P98_3*>(busPtr))->ApplyPostAdjustments(); break;
case I_SS_P98_3: (static_cast<B_SS_P98_3*>(busPtr))->SetLuminance(b); (static_cast<B_SS_P98_3*>(busPtr))->ApplyPostAdjustments(); break;
}
};
static uint32_t getPixelColor(void* busPtr, uint8_t busType, uint16_t pix, uint8_t co) {

View File

@ -443,6 +443,13 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
CJSON(retainMqttMsg, if_mqtt[F("rtn")]);
#endif
#ifndef WLED_DISABLE_ESPNOW
JsonObject remote = doc["remote"];
CJSON(enable_espnow_remote, remote[F("remote_enabled")]);
getStringFromJson(linked_remote, remote[F("linked_remote")], 13);
#endif
#ifndef WLED_DISABLE_HUESYNC
JsonObject if_hue = interfaces["hue"];
CJSON(huePollingEnabled, if_hue["en"]);
@ -895,6 +902,13 @@ void serializeConfig() {
if_mqtt_topics[F("group")] = mqttGroupTopic;
#endif
#ifndef WLED_DISABLE_ESPNOW
JsonObject remote = doc.createNestedObject(F("remote"));
remote[F("remote_enabled")] = enable_espnow_remote;
remote[F("linked_remote")] = linked_remote;
#endif
#ifndef WLED_DISABLE_HUESYNC
JsonObject if_hue = interfaces.createNestedObject("hue");
if_hue["en"] = huePollingEnabled;

View File

@ -91,6 +91,21 @@
#endif
#endif
#ifndef WLED_MAX_SEGNAME_LEN
#ifdef ESP8266
#define WLED_MAX_SEGNAME_LEN 32
#else
#define WLED_MAX_SEGNAME_LEN 64
#endif
#else
#if WLED_MAX_SEGNAME_LEN<32
#undef WLED_MAX_SEGNAME_LEN
#define WLED_MAX_SEGNAME_LEN 32
#else
#warning WLED UI does not support modified maximum segment name length!
#endif
#endif
//Usermod IDs
#define USERMOD_ID_RESERVED 0 //Unused. Might indicate no usermod present
#define USERMOD_ID_UNSPECIFIED 1 //Default value for a general user mod that does not specify a custom ID
@ -389,7 +404,7 @@
#ifdef ESP8266
#define SETTINGS_STACK_BUF_SIZE 2048
#else
#define SETTINGS_STACK_BUF_SIZE 3096
#define SETTINGS_STACK_BUF_SIZE 3608 // warning: quite a large value for stack
#endif
#ifdef WLED_USE_ETHERNET

View File

@ -42,6 +42,6 @@
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAbUExURQAAAAB81gCU/zKq/////9bW1oCAgGhoaAAAAGPLX8AAAAAJdFJOU///////////AFNPeBIAAAAJcEhZcwAADsAAAA7AAWrWiQkAAACdSURBVDhPxc9bDoUgEANQebP/FUuHMjBGY/B+3EYR7RH0qC/ZBc6HwCljgHO+xZIVSI2sYgHaG7EBWh8jWoxTrCBFdDJ+BD4lbIHxAcz8APAVLTsrZE4eQD5qzt3cAFTYokC4YCN9Gybgu4yAQtBFLQXHuHABA7JMeOEC/E0W5uy9gv4vo5QHK2i7yq2C8UABM4HmL+CSTXCTF1DrCX6+Gp9zB5dsAAAAAElFTkSuQmCC">
<h1>404 Not Found</h1>
<b>Akemi does not know where you are headed...</b><br><br>
<button onclick="window.location.href='../sliders'">Back to controls</button>
<button onclick="window.location.href='../?sliders'">Back to controls</button>
</body>
</html>

View File

@ -379,8 +379,8 @@
</div>
</div>
<div id="mliveview2D" class="modal">
<div id="kliveview2D" style="width:100%; height:100%">Loading...</div><br>
<div id="mlv2D" class="modal">
<div id="klv2D" style="width:100%; height:100%">Loading...</div>
</div>
<div id="rover" class="modal">

View File

@ -22,7 +22,7 @@ var pN = "", pI = 0, pNum = 0;
var pmt = 1, pmtLS = 0, pmtLast = 0;
var lastinfo = {};
var isM = false, mw = 0, mh=0;
var ws, cpick, ranges;
var ws, cpick, ranges, wsRpt=0;
var cfg = {
theme:{base:"dark", bg:{url:""}, alpha:{bg:0.6,tab:0.8}, color:{bg:""}},
comp :{colors:{picker: true, rgb: false, quick: true, hex: false},
@ -217,6 +217,7 @@ function onLoad()
// detect reverse proxy and/or HTTPS
let pathn = l.pathname;
let paths = pathn.slice(1,pathn.endsWith('/')?-1:undefined).split("/");
//if (paths[0]==="sliders") paths.shift();
//while (paths[0]==="") paths.shift();
locproto = l.protocol;
locip = l.hostname + (l.port ? ":" + l.port : "");
@ -772,7 +773,7 @@ function populateSegments(s)
`<i class="icons e-icon flr" id="sege${i}" onclick="expand(${i})">&#xe395;</i>`+
(cfg.comp.segpwr ? segp : '') +
`<div class="segin" id="seg${i}in">`+
`<input type="text" class="ptxt" id="seg${i}t" autocomplete="off" maxlength=32 value="${inst.n?inst.n:""}" placeholder="Enter name..."/>`+
`<input type="text" class="ptxt" id="seg${i}t" autocomplete="off" maxlength=${li.arch=="esp8266"?32:64} value="${inst.n?inst.n:""}" placeholder="Enter name..."/>`+
`<table class="infot segt">`+
`<tr>`+
`<td>${isMSeg?'Start X':'Start LED'}</td>`+
@ -1330,11 +1331,12 @@ function makeWS() {
};
ws.onclose = (e)=>{
gId('connind').style.backgroundColor = "var(--c-r)";
setTimeout(makeWS,1500); // retry WS connection
if (wsRpt++ < 5) setTimeout(makeWS,1500); // retry WS connection
ws = null;
}
ws.onopen = (e)=>{
//ws.send("{'v':true}"); // unnecessary (https://github.com/Aircoookie/WLED/blob/master/wled00/ws.cpp#L18)
wsRpt = 0;
reqsLegal = true;
}
}
@ -1636,6 +1638,7 @@ function requestJson(command=null)
//load presets and open websocket sequentially
if (!pJson || isEmpty(pJson)) setTimeout(()=>{
loadPresets(()=>{
wsRpt = 0;
if (!(ws && ws.readyState === WebSocket.OPEN)) makeWS();
});
},25);
@ -1683,27 +1686,22 @@ function toggleSync()
function toggleLiveview()
{
//WLEDSR adding liveview2D support
if (isInfo && isM) toggleInfo();
if (isNodes && isM) toggleNodes();
isLv = !isLv;
let wsOn = ws && ws.readyState === WebSocket.OPEN;
var lvID = "liveview";
if (isM) {
lvID = "liveview2D"
if (isLv) {
var cn = '<iframe id="liveview2D" src="about:blank"></iframe>';
d.getElementById('kliveview2D').innerHTML = cn;
}
gId('mliveview2D').style.transform = (isLv) ? "translateY(0px)":"translateY(100%)";
if (isM && wsOn) {
lvID += "2D";
if (isLv) gId('klv2D').innerHTML = `<iframe id="${lvID}" src="about:blank"></iframe>`;
gId('mlv2D').style.transform = (isLv) ? "translateY(0px)":"translateY(100%)";
}
gId(lvID).style.display = (isLv) ? "block":"none";
var url = getURL("/" + lvID);
gId(lvID).src = (isLv) ? url:"about:blank";
gId('buttonSr').className = (isLv) ? "active":"";
if (!isLv && ws && ws.readyState === WebSocket.OPEN) ws.send('{"lv":false}');
gId(lvID).src = (isLv) ? getURL("/" + lvID + ((wsOn) ? "?ws":"")):"about:blank";
gId('buttonSr').classList.toggle("active");
if (!isLv && wsOn) ws.send('{"lv":false}');
size();
}

View File

@ -17,14 +17,10 @@
position: absolute;
}
</style>
</head>
<body>
<div id="canv" />
<script>
update();
var ws;
var tmout = null;
function update()
function update() // via HTTP (/json/live)
{
if (document.hidden) {
clearTimeout(tmout);
@ -57,8 +53,57 @@
clearTimeout(tmout);
tmout = setTimeout(update, 2500);
})
}
function S() { // Startup function (onload)
let wsOn = (window.location.href.indexOf("?ws") > 0);
if (!wsOn) {update(); return;}
// Initialize WebSocket connection
try {
ws = top.window.ws;
} catch (e) {}
if (ws && ws.readyState === WebSocket.OPEN) {
//console.info("Peek uses top WS");
ws.send("{'lv':true}");
} else {
//console.info("Peek WS opening");
let l = window.location;
let pathn = l.pathname;
let paths = pathn.slice(1,pathn.endsWith('/')?-1:undefined).split("/");
let url = l.origin.replace("http","ws");
if (paths.length > 1) {
url += "/" + paths[0];
}
ws = new WebSocket(url+"/ws");
ws.onopen = function () {
//console.info("Peek WS open");
ws.send("{'lv':true}");
}
}
ws.binaryType = "arraybuffer";
ws.addEventListener('message', (e) => {
try {
if (toString.call(e.data) === '[object ArrayBuffer]') {
let leds = new Uint8Array(event.data);
if (leds[0] != 76) return; //'L'
let str = "linear-gradient(90deg,";
let len = leds.length;
let start = leds[1]==2 ? 4 : 2; // 1 = 1D, 2 = 1D/2D (leds[2]=w, leds[3]=h)
for (i = start; i < len; i+=3) {
str += `rgb(${leds[i]},${leds[i+1]},${leds[i+2]})`;
if (i < len -3) str += ","
}
str += ")";
document.getElementById("canv").style.background = str;
}
} catch (err) {
console.error("Peek WS error:",err);
}
});
}
</script>
</head>
<body onload="S()">
<div id="canv"></div>
</body>
</html>

View File

@ -1,68 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
<meta charset="utf-8">
<meta name="theme-color" content="#222222">
<title>WLED Live Preview</title>
<style>
body {
margin: 0;
}
#canv {
background: black;
filter: brightness(175%);
width: 100%;
height: 100%;
position: absolute;
}
</style>
</head>
<body>
<div id="canv"></div>
<script>
var ws;
try {
ws = top.window.ws;
} catch (e) {}
if (ws && ws.readyState === WebSocket.OPEN) {
//console.info("Peek uses top WS");
ws.send("{'lv':true}");
} else {
//console.info("Peek WS opening");
let l = window.location;
let pathn = l.pathname;
let paths = pathn.slice(1,pathn.endsWith('/')?-1:undefined).split("/");
let url = l.origin.replace("http","ws");
if (paths.length > 1) {
url += "/" + paths[0];
}
ws = new WebSocket(url+"/ws");
ws.onopen = function () {
//console.info("Peek WS open");
ws.send("{'lv':true}");
}
}
ws.binaryType = "arraybuffer";
ws.addEventListener('message', (e) => {
try {
if (toString.call(e.data) === '[object ArrayBuffer]') {
let leds = new Uint8Array(event.data);
if (leds[0] != 76) return; //'L'
let str = "linear-gradient(90deg,";
let len = leds.length;
let start = leds[1]==2 ? 4 : 2; // 1 = 1D, 2 = 1D/2D (leds[2]=w, leds[3]=h)
for (i = start; i < len; i+=3) {
str += `rgb(${leds[i]},${leds[i+1]},${leds[i+2]})`;
if (i < len -3) str += ","
}
str += ")";
document.getElementById("canv").style.background = str;
}
} catch (err) {
console.error("Peek WS error:",err);
}
});
</script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -193,6 +193,17 @@
Disable WiFi sleep: <input type="checkbox" name="WS"><br>
<i>Can help with connectivity issues.<br>
Do not enable if WiFi is working correctly, increases power consumption.</i>
<div id="remd">
<h3>Wireless Remote</h3>
<i>Listen for events over ESP-NOW<br>
Keep disabled if not using a remote, increases power consumption.<br></i>
Enable Remote: <input type="checkbox" name="RE"><br>
Hardware MAC: <input type="text" name="RMAC"><br>
Last Seen: <span class="rlid">None</span> <br>
</div>
<div id="ethd">
<h3>Ethernet Type</h3>
<select name="ETH">

View File

@ -171,6 +171,7 @@ async function onLoad()
// detect reverse proxy and/or HTTPS
let pathn = l.pathname;
let paths = pathn.slice(1,pathn.endsWith('/')?-1:undefined).split("/");
if (paths[0]==="sliders") paths.shift();
//while (paths[0]==="") paths.shift();
locproto = l.protocol;
locip = l.hostname + (l.port ? ":" + l.port : "");

View File

@ -57,7 +57,7 @@
Connect the module to your local WiFi here!<br>
<button onclick="window.location.href='./settings/wifi'">WiFi settings</button><br>
<i>Just trying this out in AP mode?</i><br>
<button onclick="window.location.href='./sliders'">To the controls!</button><br>
<button onclick="window.location.href='./?sliders'">To the controls!</button><br>
</div>
</body>
</html>

View File

@ -104,10 +104,20 @@ void sendHuePoll();
void onHueData(void* arg, AsyncClient* client, void *data, size_t len);
//improv.cpp
enum ImprovRPCType {
Command_Wifi = 0x01,
Request_State = 0x02,
Request_Info = 0x03,
Request_Scan = 0x04
};
void handleImprovPacket();
void sendImprovRPCResult(ImprovRPCType type, uint8_t n_strings = 0, const char **strings = nullptr);
void sendImprovStateResponse(uint8_t state, bool error = false);
void sendImprovInfoResponse();
void sendImprovRPCResponse(byte commandId);
void startImprovWifiScan();
void handleImprovWifiScan();
void sendImprovIPRPCResult(ImprovRPCType type);
//ir.cpp
void applyRepeatActions();
@ -200,12 +210,16 @@ void serializePlaylist(JsonObject obj);
void initPresetsFile();
void handlePresets();
bool applyPreset(byte index, byte callMode = CALL_MODE_DIRECT_CHANGE);
void applyPresetWithFallback(uint8_t presetID, uint8_t callMode, uint8_t effectID = 0, uint8_t paletteID = 0);
inline bool applyTemporaryPreset() {return applyPreset(255);};
void savePreset(byte index, const char* pname = nullptr, JsonObject saveobj = JsonObject());
inline void saveTemporaryPreset() {savePreset(255);};
void deletePreset(byte index);
bool getPresetName(byte index, String& name);
//remote.cpp
void handleRemote();
//set.cpp
bool isAsterisksOnly(const char* str, byte maxLen);
void handleSettingsSet(AsyncWebServerRequest *request, byte subPage);

File diff suppressed because it is too large Load Diff

549
wled00/html_pxmagic.h Normal file
View File

@ -0,0 +1,549 @@
/*
* Binary array for the Web UI.
* gzip is used for smaller size and improved speeds.
*
* Please see https://kno.wled.ge/advanced/custom-features/#changing-web-ui
* to find out how to easily modify the web UI source!
*/
// Autogenerated from wled00/data/pxmagic/pxmagic.htm, do not edit!!
const uint16_t PAGE_pxmagic_L = 8581;
const uint8_t PAGE_pxmagic[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xbd, 0x7d, 0xdb, 0x76, 0xdb, 0x46,
0xb2, 0xe8, 0x3b, 0xbf, 0x02, 0x86, 0x3d, 0x0e, 0x61, 0x81, 0x20, 0xa9, 0x5b, 0x14, 0x50, 0x90,
0x26, 0xb1, 0x9d, 0x89, 0xf7, 0xf2, 0x24, 0x39, 0xb1, 0x66, 0xf6, 0x64, 0x69, 0x6b, 0xc5, 0x4d,
0xa2, 0x49, 0x22, 0x06, 0xd1, 0x1c, 0x00, 0xd4, 0x25, 0x14, 0x3e, 0xe8, 0x3c, 0x9f, 0x4f, 0xd8,
0x3f, 0x76, 0xaa, 0xaa, 0xbb, 0x81, 0xc6, 0x85, 0xb2, 0x14, 0xef, 0xb5, 0x3d, 0x33, 0x02, 0xd0,
0xe8, 0x4b, 0x75, 0xdd, 0xab, 0xba, 0xc0, 0x39, 0x7d, 0xf6, 0xe6, 0xa7, 0xd7, 0x17, 0xbf, 0xfe,
0xfc, 0xd6, 0x5a, 0xe6, 0xab, 0xf8, 0xcc, 0x3a, 0xc5, 0x8b, 0x15, 0xb3, 0x64, 0x11, 0xd8, 0x3c,
0xb1, 0xb1, 0x81, 0xb3, 0x10, 0x2e, 0x2b, 0x9e, 0x33, 0x6b, 0xb6, 0x64, 0x69, 0xc6, 0xf3, 0xc0,
0xfe, 0xc7, 0xc5, 0xf7, 0x83, 0x13, 0x5b, 0x37, 0xf7, 0x12, 0xb6, 0xe2, 0x81, 0x7d, 0x1d, 0xf1,
0x9b, 0xb5, 0x48, 0x73, 0xdb, 0x9a, 0x89, 0x24, 0xe7, 0x09, 0xf4, 0xbb, 0x89, 0xc2, 0x7c, 0x19,
0x84, 0xfc, 0x3a, 0x9a, 0xf1, 0x01, 0x3d, 0xb8, 0x51, 0x12, 0xe5, 0x11, 0x8b, 0x07, 0xd9, 0x8c,
0xc5, 0x3c, 0x18, 0x37, 0x27, 0x61, 0x9b, 0x7c, 0x29, 0x52, 0x63, 0x8a, 0xbf, 0xb2, 0xdf, 0x45,
0xce, 0x92, 0x19, 0x76, 0xcc, 0xa3, 0x3c, 0xe6, 0x67, 0x3f, 0x47, 0xb7, 0x3c, 0xb6, 0xfe, 0xce,
0x16, 0xd1, 0xcc, 0xba, 0x10, 0x22, 0x3e, 0x1d, 0xca, 0x76, 0xeb, 0x34, 0xcb, 0xef, 0xe0, 0xda,
0xf3, 0x53, 0x21, 0xf2, 0xed, 0x60, 0x20, 0xae, 0x79, 0x1a, 0xb3, 0x3b, 0x3f, 0x5d, 0x4c, 0x59,
0x7f, 0xe4, 0x5a, 0xea, 0xbf, 0xde, 0x91, 0x33, 0x19, 0x0c, 0xa6, 0x6c, 0xf6, 0x69, 0x91, 0x8a,
0x4d, 0x12, 0xfa, 0xcf, 0xc7, 0xe3, 0x31, 0xb4, 0xe4, 0xfc, 0x36, 0xf7, 0x9f, 0x4f, 0xa7, 0x53,
0xb8, 0x5f, 0xa4, 0xec, 0x6e, 0x10, 0xb2, 0xf4, 0x93, 0xff, 0x7c, 0x7f, 0x7f, 0x5f, 0x37, 0xac,
0x78, 0x18, 0x6d, 0x56, 0xfe, 0xf3, 0x83, 0x83, 0x03, 0xdd, 0x14, 0x47, 0x8b, 0x25, 0x8c, 0xe2,
0xf4, 0x0f, 0xa7, 0x8d, 0x37, 0x5c, 0x0f, 0x3c, 0x39, 0x3c, 0x38, 0xda, 0xd7, 0x6d, 0xe5, 0xd8,
0xe9, 0xd7, 0xa3, 0x93, 0xa9, 0x6e, 0x55, 0xc3, 0x0f, 0x4f, 0x18, 0xb4, 0x64, 0x9b, 0xd9, 0x8c,
0x67, 0x99, 0x1a, 0x3e, 0x3a, 0x38, 0x3c, 0x1c, 0xcd, 0x8c, 0x66, 0x3d, 0xc3, 0xd1, 0xe1, 0xc9,
0x6c, 0x7f, 0x6e, 0xbc, 0x50, 0x93, 0x9c, 0xb0, 0xd9, 0x37, 0xfb, 0xc7, 0xd0, 0xce, 0xd3, 0x54,
0xa4, 0x6a, 0x16, 0x76, 0x32, 0x62, 0x23, 0x56, 0x36, 0xea, 0x39, 0xb0, 0xe7, 0xfe, 0xb4, 0x6c,
0x56, 0x33, 0xcc, 0xe7, 0x47, 0xdf, 0x1c, 0xe1, 0x2e, 0x6e, 0x58, 0x9a, 0x44, 0xc9, 0x42, 0xcd,
0x11, 0xc2, 0x72, 0xa3, 0x7d, 0xa3, 0x59, 0xcf, 0xc2, 0x4f, 0x8e, 0xc2, 0xd1, 0xa1, 0xf1, 0x42,
0xcf, 0x03, 0x10, 0x8e, 0x8e, 0x0b, 0xdf, 0xcf, 0x78, 0xcc, 0x67, 0x79, 0x24, 0x92, 0xad, 0x81,
0xee, 0x6b, 0x96, 0xf6, 0xcd, 0xed, 0x3b, 0xc5, 0xab, 0xed, 0x1c, 0xc8, 0x3d, 0x98, 0xb3, 0x55,
0x14, 0xdf, 0xf9, 0x3f, 0xf0, 0xf8, 0x9a, 0xe7, 0xd1, 0x8c, 0xb9, 0xff, 0xe4, 0x69, 0xc8, 0x12,
0xe6, 0x66, 0x2c, 0xc9, 0x06, 0x19, 0x4f, 0xa3, 0xf9, 0x64, 0x2a, 0x6e, 0x07, 0x59, 0xf4, 0x07,
0x2c, 0xe6, 0x4f, 0x45, 0x1a, 0xf2, 0x74, 0x00, 0x2d, 0x93, 0x15, 0x4b, 0x17, 0x51, 0xe2, 0x8f,
0x26, 0x6b, 0x16, 0x86, 0xf8, 0x6e, 0x54, 0x4c, 0x45, 0x78, 0xb7, 0x0d, 0xa3, 0x6c, 0x8d, 0x1c,
0x30, 0x8f, 0xf9, 0xed, 0xe4, 0xf7, 0x4d, 0x96, 0x47, 0xf3, 0xbb, 0x81, 0x62, 0x2d, 0x7f, 0x06,
0x7f, 0x78, 0x3a, 0x61, 0x00, 0x44, 0x32, 0x88, 0x72, 0xbe, 0xca, 0x74, 0xd3, 0x2a, 0x4a, 0x06,
0x4b, 0x4e, 0x7b, 0x19, 0x8f, 0x46, 0xd7, 0xcb, 0x49, 0x1b, 0xfa, 0xb2, 0xc1, 0x29, 0x66, 0x2c,
0xb9, 0x66, 0xd9, 0x96, 0xd8, 0x1b, 0xfb, 0xff, 0xa5, 0x98, 0x8b, 0x74, 0xb5, 0x95, 0x30, 0x01,
0x78, 0x79, 0x2e, 0x56, 0xfe, 0xfe, 0x68, 0x7d, 0x5b, 0x64, 0x2b, 0x16, 0xc7, 0x25, 0x50, 0xd3,
0x58, 0xcc, 0x3e, 0x4d, 0x68, 0xe7, 0x37, 0x72, 0xb1, 0xc3, 0xd1, 0x48, 0x6f, 0x65, 0x7f, 0x7d,
0x6b, 0x8d, 0xac, 0xa3, 0xf5, 0xed, 0x64, 0x26, 0x62, 0x91, 0xaa, 0x65, 0x91, 0x45, 0x1d, 0x39,
0x04, 0x90, 0xc0, 0xfd, 0x31, 0x74, 0x83, 0xd5, 0x04, 0x00, 0x6d, 0xac, 0x5f, 0xa2, 0xc3, 0x02,
0x69, 0x12, 0x16, 0x2e, 0x3d, 0xa9, 0x2f, 0x8a, 0xf3, 0x0c, 0x68, 0xe3, 0x6a, 0xcb, 0x05, 0xdb,
0x52, 0x5b, 0xc8, 0x67, 0x22, 0x65, 0x48, 0x31, 0x3f, 0x11, 0x09, 0xaf, 0x2d, 0x6e, 0x50, 0xac,
0x01, 0x42, 0x6d, 0x13, 0xc7, 0xa3, 0x51, 0xe1, 0x47, 0x59, 0x9f, 0xf9, 0x4b, 0x14, 0x40, 0x97,
0xf9, 0x73, 0x31, 0xdb, 0x64, 0x70, 0x65, 0xc0, 0x0a, 0xd7, 0xdc, 0xd9, 0xb6, 0x26, 0x95, 0xfc,
0xe4, 0x14, 0xde, 0x6a, 0xf0, 0x07, 0x4f, 0xc5, 0x56, 0xc3, 0xff, 0x2c, 0x5a, 0xa1, 0x42, 0x61,
0x49, 0x8e, 0xaf, 0x24, 0x26, 0x1b, 0x78, 0x1d, 0xc3, 0xe6, 0xea, 0xdd, 0x72, 0xb1, 0xd6, 0x7d,
0xe0, 0xb6, 0xd5, 0x01, 0xa9, 0xcf, 0xa2, 0xa4, 0x8e, 0xb0, 0x1a, 0x9f, 0x74, 0x30, 0xc4, 0x0e,
0xd6, 0xc1, 0xee, 0x83, 0x30, 0x4a, 0x25, 0x8f, 0xfb, 0xb0, 0xaf, 0xcd, 0x2a, 0x91, 0x4b, 0x40,
0x07, 0xb5, 0x00, 0xe8, 0xb9, 0x59, 0x1f, 0x57, 0xb1, 0x06, 0xd6, 0x21, 0x00, 0xe3, 0x00, 0x79,
0x6e, 0xa5, 0x32, 0xf4, 0xbf, 0x3e, 0x3e, 0x59, 0x97, 0xdc, 0x4b, 0x2c, 0xe2, 0xa5, 0xe2, 0xa6,
0xce, 0xb6, 0xb4, 0xc8, 0x4d, 0xca, 0xd6, 0x40, 0x11, 0xbc, 0xb4, 0x80, 0xc9, 0xd6, 0x0c, 0xb4,
0xeb, 0x94, 0xe7, 0x37, 0x9c, 0x27, 0xe6, 0x64, 0xc0, 0x40, 0x23, 0x84, 0x06, 0xa1, 0xda, 0xd2,
0x34, 0x53, 0x96, 0x45, 0x99, 0x84, 0xe8, 0x88, 0x00, 0x1a, 0x13, 0x40, 0x6b, 0x91, 0x45, 0xb4,
0x83, 0x94, 0xc7, 0x0c, 0x69, 0x54, 0xc9, 0x11, 0xb2, 0xa0, 0x9e, 0x63, 0x30, 0xdf, 0x00, 0xfb,
0x1a, 0x13, 0x11, 0xee, 0x3e, 0x37, 0x38, 0x66, 0x53, 0xde, 0x64, 0xfa, 0x3a, 0x0d, 0x8f, 0x1a,
0x1c, 0xf4, 0x35, 0x88, 0x41, 0x8b, 0xeb, 0x8b, 0x28, 0x59, 0x6f, 0xf2, 0xcb, 0xfc, 0x6e, 0xcd,
0x83, 0x64, 0xb3, 0x9a, 0xf2, 0xf4, 0xca, 0x35, 0x9a, 0xb0, 0xcf, 0x95, 0x2b, 0xf5, 0x8d, 0x8b,
0x0f, 0x2c, 0xe5, 0xcc, 0x24, 0xb1, 0x06, 0x0a, 0x77, 0x3c, 0x51, 0xaa, 0x23, 0x65, 0xc0, 0x77,
0x99, 0x7f, 0x44, 0x4d, 0xa5, 0x44, 0x0f, 0xcc, 0xb5, 0x0d, 0xbd, 0xef, 0xa8, 0x61, 0xfe, 0x18,
0x50, 0x9b, 0x89, 0x38, 0x0a, 0xad, 0x8e, 0x3e, 0x62, 0x93, 0xc7, 0xc0, 0x5e, 0x7e, 0x7d, 0x0b,
0x95, 0xad, 0xa8, 0xc9, 0xce, 0x21, 0xe0, 0xc7, 0xd8, 0x04, 0x8d, 0xb8, 0x52, 0x50, 0x1f, 0xa0,
0x60, 0x29, 0x2d, 0x44, 0xf7, 0xb3, 0x4d, 0x9a, 0xc1, 0x84, 0x6b, 0x11, 0x11, 0xf3, 0x55, 0x58,
0x06, 0x78, 0xaa, 0x65, 0x0b, 0x8f, 0x26, 0x1c, 0xe0, 0x5e, 0xd6, 0x7f, 0x52, 0x01, 0xd6, 0xe6,
0xb0, 0xe8, 0x1e, 0x98, 0x2f, 0xef, 0x4b, 0x28, 0x53, 0xf0, 0x0e, 0xf8, 0x95, 0xb3, 0xad, 0x23,
0xf1, 0x44, 0xf2, 0x9b, 0x75, 0x82, 0xfc, 0x62, 0x0e, 0x57, 0x0f, 0x21, 0xcf, 0x66, 0x69, 0xb4,
0x26, 0x63, 0xa0, 0x36, 0x78, 0x62, 0x6c, 0x10, 0xef, 0x4d, 0x12, 0x59, 0x1d, 0xf8, 0x43, 0x6b,
0xe4, 0xb4, 0x75, 0xb1, 0x89, 0xdb, 0x3a, 0x4c, 0xc4, 0x80, 0xf4, 0xbf, 0xd1, 0x83, 0xb4, 0xab,
0x0f, 0x8e, 0xf9, 0x3c, 0x07, 0xf2, 0xb5, 0x74, 0x64, 0x83, 0x70, 0x13, 0xc4, 0x77, 0x69, 0x26,
0x8e, 0x3b, 0xb4, 0x60, 0x1d, 0x0d, 0xd9, 0xbf, 0x37, 0xc0, 0x93, 0x6d, 0xac, 0x55, 0xca, 0x49,
0x8b, 0x05, 0x01, 0x80, 0x48, 0x28, 0x4a, 0x46, 0x4e, 0x39, 0xad, 0x0b, 0xfa, 0x14, 0x0d, 0x63,
0x6c, 0x5a, 0xa8, 0xfd, 0x51, 0x9b, 0xa3, 0x89, 0x08, 0xa0, 0x74, 0x41, 0xba, 0x06, 0x52, 0x26,
0xb6, 0x2d, 0x31, 0x6d, 0x74, 0xb0, 0x54, 0x3f, 0xb6, 0x5e, 0x73, 0x06, 0x24, 0x9e, 0x71, 0x69,
0x01, 0x60, 0x43, 0xd3, 0x4f, 0x11, 0x60, 0xa2, 0xd9, 0xbe, 0x12, 0x7f, 0xb4, 0x1a, 0x0d, 0x21,
0x8a, 0x56, 0x6c, 0xa1, 0x5a, 0x15, 0x5d, 0x07, 0xa9, 0x82, 0xb7, 0xc5, 0xcb, 0x4d, 0x50, 0x48,
0x65, 0xf8, 0x3e, 0x9b, 0xa3, 0x5d, 0xd3, 0xdc, 0x6a, 0xdb, 0x95, 0xaa, 0x61, 0x53, 0xa0, 0xe1,
0x26, 0xe7, 0x13, 0xd4, 0xf0, 0xa5, 0x3a, 0xdb, 0xb3, 0x8e, 0x51, 0x9b, 0xa5, 0x15, 0x45, 0x72,
0x80, 0x2d, 0x43, 0x6b, 0x0c, 0x2e, 0x61, 0xce, 0x72, 0xde, 0x1f, 0x1f, 0x1c, 0x85, 0x7c, 0xe1,
0x4c, 0x24, 0x07, 0x1e, 0x57, 0x0c, 0x78, 0x5c, 0xe1, 0x10, 0xe7, 0xdc, 0xff, 0x3c, 0x9b, 0xa8,
0xdd, 0x3c, 0xd0, 0x51, 0xed, 0x6e, 0xc0, 0xaf, 0x01, 0xfe, 0x8c, 0x70, 0x51, 0x78, 0x61, 0x2a,
0xd6, 0x7f, 0xc0, 0x9d, 0xa9, 0x9b, 0x0c, 0xde, 0x0c, 0x59, 0xb6, 0xe4, 0x9d, 0xab, 0x3e, 0xa0,
0x9f, 0xa4, 0x60, 0xec, 0xd2, 0x37, 0x6d, 0x46, 0xd6, 0x82, 0x86, 0xe6, 0xc8, 0x1a, 0x77, 0xb2,
0x4f, 0xd3, 0x8e, 0x48, 0x54, 0x2a, 0xec, 0xc7, 0xb1, 0xe5, 0x1d, 0x65, 0x16, 0x67, 0x19, 0x1f,
0x00, 0x23, 0x82, 0xee, 0xa9, 0xf6, 0x25, 0xad, 0xfe, 0xb6, 0xa1, 0xac, 0x3e, 0x2b, 0xcb, 0x83,
0x5d, 0xd0, 0x2b, 0xc8, 0xba, 0x27, 0xa8, 0x96, 0x85, 0x1b, 0xb6, 0xa0, 0x95, 0x1f, 0xa1, 0xc8,
0xc1, 0xca, 0xa2, 0x0e, 0x1b, 0x64, 0x40, 0x37, 0x18, 0xf1, 0x00, 0x17, 0xef, 0x82, 0x4a, 0x71,
0x0d, 0x22, 0xaa, 0x45, 0x47, 0x8d, 0x45, 0x42, 0x6c, 0x65, 0x0e, 0x14, 0x42, 0x91, 0x2f, 0xd1,
0x2c, 0x9b, 0x10, 0xf8, 0xbe, 0x96, 0x32, 0xf9, 0x3c, 0xc8, 0x97, 0x60, 0xe1, 0x5a, 0x70, 0x99,
0xba, 0x46, 0xad, 0x7a, 0xfc, 0x19, 0xcb, 0xa5, 0xd0, 0xdc, 0x30, 0x77, 0x7f, 0x69, 0xda, 0x12,
0xc5, 0x80, 0x00, 0x56, 0x76, 0x13, 0xe5, 0xb3, 0x65, 0x5b, 0x5b, 0x94, 0x2e, 0x52, 0x94, 0x90,
0xde, 0x93, 0x76, 0xbc, 0xad, 0xc8, 0xa5, 0x13, 0x23, 0x67, 0x91, 0x96, 0x63, 0x5b, 0xa1, 0x40,
0xcf, 0x21, 0x25, 0x41, 0x76, 0xd2, 0x44, 0x68, 0xcb, 0x76, 0x03, 0x46, 0x14, 0xcb, 0xd1, 0x44,
0x29, 0x67, 0x29, 0x7c, 0xa8, 0xd5, 0xc9, 0x83, 0x18, 0x3d, 0xc1, 0x7c, 0x6b, 0x34, 0x1c, 0x1c,
0x6a, 0x05, 0x21, 0xd7, 0xf5, 0x0e, 0xb3, 0x06, 0x4c, 0xfe, 0x94, 0x83, 0xee, 0xe0, 0x5d, 0xa0,
0x55, 0x3a, 0x49, 0x13, 0xe5, 0xb0, 0x22, 0x0a, 0x19, 0x07, 0x84, 0xf3, 0x80, 0x24, 0x8b, 0x20,
0x3c, 0xe8, 0x22, 0x14, 0x04, 0x5c, 0xf3, 0x0e, 0xe2, 0x34, 0x80, 0x92, 0xf6, 0x77, 0xb6, 0xe4,
0xb3, 0x4f, 0x3c, 0xdc, 0x6b, 0xa0, 0x6d, 0xc7, 0xbe, 0xcd, 0xe8, 0x4a, 0x8e, 0x27, 0x27, 0xbc,
0x35, 0x1a, 0xa3, 0xa9, 0x25, 0x0b, 0xc5, 0x8d, 0x8f, 0xb6, 0x1b, 0x15, 0xd0, 0xae, 0xf1, 0xdd,
0xeb, 0x6b, 0x14, 0x55, 0x8a, 0x96, 0xee, 0x80, 0x67, 0xf8, 0xbf, 0xfa, 0x63, 0xe0, 0x0b, 0xa7,
0x78, 0x9e, 0x0b, 0x96, 0xe5, 0x83, 0xca, 0xef, 0x2e, 0xd1, 0x39, 0x87, 0x40, 0x3e, 0x9c, 0x18,
0x01, 0xd2, 0xc4, 0xb0, 0x10, 0x7f, 0x80, 0x66, 0x09, 0xf9, 0xad, 0xff, 0x0d, 0xfc, 0x2b, 0x3c,
0x9a, 0x63, 0xfb, 0x39, 0x37, 0x5d, 0xe2, 0x1f, 0x83, 0x9e, 0x52, 0xc5, 0xa1, 0xb4, 0x51, 0x88,
0xa2, 0xc5, 0x4f, 0xeb, 0xb3, 0xb6, 0xc6, 0xeb, 0xd8, 0xc3, 0xaf, 0xfd, 0x03, 0x72, 0x90, 0x05,
0xb8, 0xd8, 0x51, 0x7e, 0x07, 0x7c, 0x76, 0x1d, 0x65, 0xd1, 0x34, 0x8a, 0xf1, 0x61, 0x19, 0x85,
0x21, 0x4f, 0x14, 0x6c, 0x96, 0xbc, 0x0c, 0x28, 0xec, 0xd4, 0x8b, 0x93, 0x4f, 0xd4, 0x74, 0x0b,
0x3a, 0x02, 0xba, 0x98, 0xe7, 0x68, 0x27, 0xd0, 0x91, 0xc7, 0x61, 0x1e, 0xf9, 0xdc, 0x34, 0x9f,
0xa7, 0x62, 0xfc, 0x5d, 0x74, 0xae, 0xe7, 0x06, 0x1c, 0x3d, 0x8a, 0xa2, 0xfa, 0x5d, 0x63, 0x8c,
0x90, 0xbf, 0x1c, 0xa0, 0x02, 0xf8, 0x5d, 0x43, 0x6a, 0xf1, 0xbd, 0x1e, 0x34, 0x58, 0xa7, 0x62,
0x91, 0x22, 0x70, 0x6d, 0x01, 0x21, 0xf6, 0x3f, 0xac, 0xd8, 0xbf, 0x92, 0x0e, 0x33, 0x1c, 0x42,
0xfe, 0x28, 0x3d, 0xc0, 0x1a, 0x05, 0x28, 0x3b, 0xf4, 0xaf, 0xfe, 0xc8, 0xa9, 0xda, 0x06, 0x02,
0xb8, 0x03, 0x28, 0x88, 0x53, 0x37, 0xa8, 0x17, 0x25, 0x4b, 0x9e, 0x46, 0x79, 0x03, 0x67, 0x56,
0x13, 0x4c, 0xc3, 0x73, 0x44, 0x85, 0xc4, 0x52, 0x54, 0x0f, 0x61, 0x04, 0xbc, 0xd3, 0x87, 0x30,
0x99, 0x78, 0xcf, 0xad, 0xa3, 0x55, 0xee, 0xd7, 0xed, 0xc4, 0x75, 0x1d, 0xd9, 0x5f, 0xb0, 0x98,
0x49, 0x8f, 0x5a, 0x53, 0x73, 0x21, 0x45, 0x85, 0x2f, 0x58, 0xaa, 0x4e, 0xc7, 0x46, 0x63, 0xb5,
0x1c, 0xe6, 0xfc, 0x40, 0x50, 0xdb, 0x61, 0x68, 0x33, 0xd6, 0xed, 0x12, 0xc2, 0x2a, 0x2e, 0x19,
0x59, 0xd2, 0x1a, 0xc8, 0xe9, 0x2c, 0x6f, 0x0a, 0xa4, 0x0c, 0xeb, 0x79, 0x0a, 0x1d, 0x08, 0x4b,
0x27, 0xb6, 0xca, 0xb9, 0xfc, 0xa5, 0x91, 0xb0, 0xa8, 0x6c, 0x48, 0x65, 0xaa, 0x66, 0x0c, 0xf6,
0x9c, 0x19, 0xb1, 0x25, 0xc1, 0x69, 0xce, 0x61, 0x2c, 0xd5, 0x72, 0x38, 0xd5, 0x60, 0x2b, 0x5a,
0x2d, 0x1a, 0xc1, 0xa9, 0x31, 0xca, 0x9c, 0x4c, 0x39, 0xe7, 0x86, 0x8a, 0x6a, 0x83, 0x82, 0xb3,
0xf9, 0x31, 0xa9, 0xbb, 0x65, 0x14, 0x87, 0xdb, 0xda, 0x18, 0xe8, 0x37, 0xdd, 0x80, 0x34, 0x24,
0x1d, 0xae, 0xdf, 0xa8, 0x1e, 0xfc, 0xa0, 0xe6, 0xec, 0x0a, 0x52, 0xdb, 0xaa, 0xa3, 0x61, 0x24,
0xcb, 0xcc, 0xcf, 0x48, 0xf9, 0x75, 0x9d, 0xc1, 0xd2, 0x63, 0xe2, 0x59, 0xe9, 0x39, 0x3c, 0xec,
0xf5, 0x35, 0x23, 0xa2, 0x56, 0x00, 0x24, 0xf7, 0xab, 0x5c, 0xc2, 0x6e, 0x58, 0x4c, 0x0f, 0xe5,
0xc1, 0xc8, 0xba, 0x9c, 0xad, 0x8d, 0x5f, 0xed, 0x05, 0xe8, 0x2e, 0xd9, 0x63, 0x58, 0xd7, 0xc8,
0xd7, 0x3d, 0x57, 0x99, 0xe2, 0xa6, 0x69, 0xaa, 0xb9, 0x1c, 0x3b, 0xd8, 0x62, 0x87, 0xc6, 0x54,
0x33, 0x3a, 0x75, 0x9f, 0x47, 0x2f, 0xe4, 0xc5, 0x82, 0x11, 0xb5, 0xdb, 0x31, 0x4e, 0x9d, 0x17,
0x3f, 0x13, 0xf1, 0x0c, 0xac, 0xf1, 0x37, 0xa8, 0x43, 0x09, 0xc4, 0x56, 0xab, 0x12, 0x2d, 0x23,
0xca, 0xd9, 0xaf, 0xc2, 0x1c, 0xb2, 0x8c, 0x9f, 0x09, 0x71, 0x60, 0xad, 0xc7, 0xbb, 0x94, 0x2c,
0x81, 0x90, 0x8f, 0x60, 0xcd, 0xd6, 0x51, 0x62, 0x8d, 0x33, 0x4b, 0x2a, 0x23, 0xf0, 0x02, 0xe7,
0x98, 0xf4, 0x87, 0xdd, 0x03, 0x05, 0x20, 0x98, 0xcd, 0x79, 0xf8, 0x0e, 0x83, 0xc3, 0x6d, 0x2d,
0xc4, 0xc0, 0x68, 0xf9, 0x1a, 0xd4, 0x49, 0xb8, 0xdd, 0xc1, 0x0b, 0x55, 0x56, 0xdb, 0x31, 0xf3,
0x79, 0x5a, 0x55, 0x66, 0x19, 0x4e, 0x59, 0xc7, 0x5e, 0xdb, 0xea, 0x49, 0xe0, 0xcb, 0xf8, 0xa7,
0xd3, 0x3e, 0x37, 0xd2, 0xab, 0x7f, 0x45, 0xfe, 0x63, 0x56, 0xdf, 0xcc, 0xda, 0x7d, 0x0d, 0xe8,
0xdd, 0x6a, 0x35, 0xa9, 0xc3, 0xdb, 0x8a, 0x0b, 0x31, 0x87, 0x57, 0xa5, 0xed, 0x28, 0x69, 0xd7,
0xcd, 0x83, 0x5a, 0x5c, 0x75, 0x86, 0xcd, 0x7d, 0x30, 0xd3, 0xd6, 0x0c, 0xc9, 0xaa, 0x64, 0x77,
0xf1, 0xd7, 0x4f, 0xfc, 0x6e, 0x9e, 0x32, 0x40, 0x83, 0x85, 0xd8, 0xdf, 0xe6, 0x62, 0xdb, 0x8a,
0x7d, 0x0f, 0x8e, 0x47, 0x18, 0xfb, 0xd6, 0x3a, 0x97, 0x36, 0xa4, 0x36, 0x40, 0x59, 0xdf, 0x71,
0xbd, 0xef, 0x1c, 0x76, 0xfb, 0x2e, 0xd9, 0x1e, 0xfd, 0x65, 0xab, 0xdd, 0xa1, 0xb1, 0xe9, 0x0e,
0xd1, 0x6d, 0xcc, 0xbb, 0xdd, 0xa8, 0x91, 0x53, 0x7c, 0x53, 0x1b, 0xb8, 0xab, 0x57, 0xd1, 0x3b,
0x1d, 0xca, 0x63, 0x1c, 0xeb, 0x74, 0xa8, 0xce, 0x9e, 0xd0, 0xa7, 0x82, 0x4b, 0x18, 0x5d, 0x5b,
0x33, 0x10, 0xfe, 0x2c, 0xb0, 0x4b, 0x67, 0xd2, 0x6e, 0xb7, 0x83, 0x1c, 0x61, 0x2b, 0xce, 0x6d,
0xf5, 0xa2, 0x30, 0xb0, 0xf1, 0xee, 0x6f, 0x1c, 0x3a, 0xc3, 0x1a, 0xb6, 0x95, 0x08, 0xe2, 0x32,
0xb8, 0xaf, 0x0f, 0x95, 0xc4, 0xc4, 0x91, 0xd9, 0xf5, 0x42, 0x37, 0x92, 0xc5, 0xb2, 0xad, 0xde,
0xed, 0x2a, 0x4e, 0xb0, 0x4f, 0x9e, 0xaf, 0xfd, 0xe1, 0xf0, 0xe6, 0xe6, 0xc6, 0xbb, 0x39, 0xf0,
0x44, 0xba, 0x18, 0x82, 0xdd, 0x1a, 0x0d, 0x61, 0x80, 0x6d, 0xc9, 0xa3, 0x2e, 0x1b, 0x1a, 0x6c,
0x4b, 0x4a, 0x5b, 0x60, 0x8f, 0x0f, 0xe0, 0xa1, 0x87, 0xe7, 0x62, 0xdf, 0x89, 0xdb, 0xc0, 0x96,
0x16, 0x11, 0x34, 0x33, 0x34, 0x9f, 0x9d, 0x52, 0x82, 0x64, 0xe7, 0xb0, 0xe1, 0xd9, 0x29, 0xce,
0x8b, 0x58, 0x00, 0x20, 0x15, 0xa8, 0x3d, 0x05, 0x16, 0xf0, 0x57, 0x6b, 0xe3, 0xc8, 0x36, 0xb6,
0x65, 0xec, 0x8d, 0x92, 0x28, 0x16, 0x6c, 0x1e, 0xe0, 0x16, 0x59, 0x8e, 0xc7, 0x6b, 0xf6, 0xd9,
0x0f, 0xea, 0x0e, 0xb0, 0x4c, 0xef, 0xa1, 0x1f, 0xb9, 0xf7, 0x16, 0x65, 0xf6, 0x6c, 0xb4, 0x29,
0x80, 0x22, 0x3a, 0x89, 0x2b, 0x07, 0x59, 0x88, 0xc4, 0xea, 0x29, 0xe5, 0xff, 0xde, 0x00, 0x1f,
0x87, 0xdd, 0xa0, 0x3d, 0x0c, 0x88, 0x04, 0xe2, 0x67, 0xe0, 0x38, 0x9e, 0x5b, 0x3f, 0xc2, 0x43,
0x13, 0x8c, 0x5e, 0x1b, 0x8e, 0x0a, 0x06, 0x79, 0x07, 0x33, 0x6f, 0xa0, 0xf9, 0x47, 0x7e, 0x63,
0xc9, 0x89, 0xba, 0x40, 0x92, 0x97, 0x9e, 0x89, 0xa2, 0x47, 0x21, 0xcd, 0x7c, 0x6b, 0xa6, 0xa4,
0x6c, 0x9c, 0xcc, 0xd8, 0xc8, 0x9a, 0xa1, 0xc7, 0x9e, 0xc0, 0x5e, 0xe4, 0x4d, 0xb5, 0x0f, 0x95,
0xc2, 0x92, 0xb0, 0xeb, 0x6e, 0x04, 0x7e, 0xf9, 0xd0, 0x33, 0xe0, 0x15, 0x94, 0x11, 0x95, 0x9b,
0x3a, 0xfb, 0x20, 0xc7, 0xe2, 0x41, 0xab, 0x88, 0x66, 0x80, 0x1c, 0xf9, 0xb6, 0xd1, 0x0d, 0x18,
0x04, 0xe6, 0xa0, 0x33, 0xcf, 0xc0, 0xbe, 0xfc, 0x6a, 0x4e, 0xff, 0xbe, 0xba, 0xb2, 0x55, 0x06,
0x8f, 0xc3, 0x52, 0xfa, 0x0e, 0xc0, 0x7e, 0x97, 0xc0, 0x9e, 0xa2, 0x70, 0xc3, 0x62, 0x6b, 0xe7,
0x7c, 0xfb, 0xc6, 0x7c, 0x23, 0xd7, 0xaa, 0xa6, 0x3c, 0x7b, 0x87, 0x31, 0xd8, 0xce, 0x71, 0x07,
0xb6, 0x65, 0x0c, 0x3b, 0xaa, 0x8d, 0xec, 0xfd, 0x82, 0x09, 0x0e, 0x63, 0xe8, 0x50, 0x02, 0xd5,
0xa4, 0xd1, 0x23, 0x08, 0xd2, 0xdb, 0x41, 0x11, 0x93, 0x20, 0xe0, 0x8d, 0x00, 0xff, 0xd8, 0x67,
0x3f, 0xd1, 0x75, 0x07, 0x39, 0x54, 0x27, 0xa9, 0x16, 0xf4, 0xc3, 0x9f, 0x26, 0x46, 0x4f, 0x61,
0xe1, 0xf7, 0x4c, 0x24, 0xdd, 0xc8, 0xff, 0xcf, 0xf7, 0x6f, 0xdf, 0x58, 0xff, 0xf1, 0xe1, 0xa7,
0x1f, 0x77, 0x62, 0x70, 0xc9, 0x00, 0x53, 0x3f, 0x88, 0x15, 0xb7, 0xbe, 0xcd, 0x40, 0xcf, 0xa3,
0x49, 0xdb, 0xd9, 0x17, 0x5c, 0xbd, 0xd8, 0x3e, 0x7b, 0xfd, 0x8f, 0x5f, 0xde, 0x3f, 0x80, 0xd5,
0xde, 0x6e, 0xec, 0x82, 0x00, 0x58, 0x7a, 0xd3, 0xa4, 0x62, 0x03, 0xdb, 0x74, 0x4e, 0x76, 0x08,
0x47, 0xaf, 0x5b, 0x92, 0xe5, 0x99, 0xbe, 0x7d, 0xf6, 0x86, 0xae, 0x9f, 0xd7, 0x26, 0xaa, 0xbf,
0x44, 0xbd, 0x7e, 0xe8, 0x56, 0x25, 0x9f, 0xd3, 0x24, 0x3d, 0x02, 0x60, 0x93, 0x44, 0xff, 0xde,
0xf0, 0x77, 0x80, 0xe5, 0x7f, 0xd0, 0x9d, 0xf5, 0x2e, 0xfc, 0x3c, 0x14, 0xe5, 0x20, 0x09, 0x47,
0xf5, 0xf8, 0x25, 0x90, 0xcc, 0x53, 0x08, 0xb5, 0xc2, 0xf8, 0xee, 0x47, 0x52, 0x6e, 0xdf, 0xab,
0xa7, 0x4e, 0xf5, 0xd6, 0x86, 0xa8, 0x36, 0x58, 0xd9, 0xab, 0x5a, 0xd3, 0x2e, 0xdd, 0xf6, 0x38,
0xd5, 0xd6, 0x7b, 0x9c, 0x6e, 0x33, 0x29, 0x9b, 0xf1, 0xc5, 0x0a, 0xf3, 0xd5, 0x36, 0x48, 0x00,
0xdd, 0x99, 0x98, 0xed, 0xd5, 0x05, 0xaa, 0xec, 0x4b, 0x0a, 0xae, 0x1a, 0xd9, 0x64, 0x5d, 0x30,
0x6e, 0x00, 0x04, 0x1b, 0x28, 0x6b, 0x37, 0x3e, 0x06, 0xc8, 0xa8, 0xa1, 0x34, 0x79, 0xc7, 0x30,
0x48, 0xaf, 0x37, 0xb2, 0x1e, 0xa9, 0x36, 0x1e, 0x67, 0x74, 0xa6, 0x14, 0x7e, 0x25, 0xe0, 0xe5,
0xd8, 0x67, 0xdf, 0x95, 0xf7, 0x15, 0x69, 0xcc, 0x99, 0x8c, 0x13, 0x1b, 0xbb, 0x41, 0x35, 0x4a,
0xd8, 0x6a, 0xb2, 0x19, 0x73, 0xd2, 0xd6, 0xcd, 0xe7, 0xde, 0x2a, 0x4a, 0x68, 0xcb, 0xe0, 0x31,
0x82, 0x6e, 0x3d, 0x3a, 0x2a, 0x6d, 0xd6, 0x78, 0xff, 0xc4, 0x2e, 0x69, 0x66, 0xe4, 0x7f, 0xed,
0x4e, 0x06, 0xe9, 0xd5, 0x27, 0xfe, 0x27, 0xce, 0x51, 0x0e, 0x6f, 0x1d, 0xaa, 0x59, 0xf2, 0x7c,
0xa9, 0xb6, 0x56, 0x03, 0x69, 0xbd, 0xa7, 0xf1, 0x4e, 0x37, 0x36, 0x4b, 0x37, 0x1f, 0x14, 0xd7,
0xb7, 0xfa, 0xbe, 0x42, 0xa6, 0xec, 0xa9, 0x66, 0x92, 0xa9, 0xc2, 0xe6, 0xee, 0x28, 0x93, 0x38,
0x15, 0xb7, 0x76, 0x59, 0xf3, 0x53, 0x4e, 0x49, 0xb8, 0x34, 0x56, 0x00, 0xfd, 0xbd, 0x66, 0x49,
0x7d, 0xba, 0x12, 0x67, 0xc0, 0x1a, 0xf0, 0x12, 0x37, 0x57, 0x32, 0xe7, 0x13, 0x64, 0x97, 0x36,
0x43, 0xbe, 0xe7, 0x1a, 0xd0, 0x96, 0xe4, 0x14, 0x92, 0xc0, 0x9e, 0x2e, 0xaa, 0x26, 0x8b, 0xda,
0xbe, 0x6c, 0x6f, 0xad, 0x15, 0x68, 0x8b, 0xed, 0x75, 0x1f, 0xdc, 0x69, 0xaf, 0xb5, 0xd5, 0x27,
0xef, 0x54, 0x1e, 0x20, 0xea, 0x4d, 0xfe, 0x42, 0x4f, 0xff, 0x13, 0xfb, 0x33, 0xe7, 0xa5, 0xad,
0xd5, 0x16, 0x7a, 0x14, 0xfd, 0x7a, 0xad, 0x5d, 0x75, 0xdb, 0xae, 0xda, 0x52, 0x0f, 0x18, 0xb0,
0xc7, 0x69, 0x05, 0x52, 0x45, 0x60, 0xa2, 0xf1, 0xd2, 0xad, 0xa6, 0x65, 0x95, 0x41, 0xb9, 0x53,
0x39, 0x80, 0xf6, 0xa8, 0x6e, 0xb5, 0xa4, 0x1d, 0xdb, 0x7f, 0xc6, 0x6c, 0x48, 0xd5, 0x07, 0x2e,
0x39, 0x5d, 0x1f, 0x06, 0x41, 0x79, 0xe4, 0x72, 0x84, 0xf4, 0xc7, 0xd5, 0x7d, 0xaf, 0x0b, 0x88,
0x6e, 0xfc, 0x19, 0x62, 0xf6, 0xc5, 0xd8, 0x93, 0x21, 0x21, 0x5a, 0x3b, 0xbc, 0xee, 0xf0, 0xe2,
0xeb, 0xd0, 0xab, 0x21, 0x96, 0x34, 0x71, 0xf2, 0x5e, 0x01, 0x7f, 0xf8, 0x30, 0x02, 0x77, 0xb9,
0x20, 0x9b, 0x54, 0xa9, 0x89, 0x37, 0xea, 0xae, 0xae, 0xd3, 0x3b, 0x55, 0x7a, 0xef, 0x01, 0xfc,
0x96, 0x13, 0x12, 0x8c, 0xd5, 0x93, 0x36, 0x62, 0xde, 0x91, 0xe1, 0xbb, 0x23, 0xa7, 0xcb, 0x3b,
0x50, 0xf4, 0x4a, 0xe1, 0x67, 0x39, 0x5f, 0x63, 0x3f, 0xf0, 0xcf, 0x69, 0x95, 0x95, 0x08, 0xe5,
0x22, 0x3c, 0x8d, 0x66, 0x76, 0xa7, 0xa9, 0x31, 0x34, 0xb8, 0x7d, 0x96, 0xf1, 0x59, 0x83, 0x84,
0x8f, 0xe1, 0xaa, 0x5e, 0x4b, 0xa3, 0x45, 0x72, 0xba, 0x8b, 0xf2, 0xfe, 0x11, 0x88, 0x79, 0x88,
0x74, 0xc6, 0xa4, 0x95, 0xfa, 0x8a, 0x1a, 0xc8, 0xd9, 0xaf, 0x7c, 0x15, 0x13, 0x37, 0xbd, 0x27,
0x21, 0xe7, 0x11, 0xb8, 0xe9, 0x59, 0x9f, 0xc5, 0x11, 0x72, 0x7b, 0x5b, 0xf1, 0x76, 0x33, 0x7d,
0xaf, 0x8d, 0x5c, 0xca, 0xbe, 0xec, 0xe2, 0x7c, 0xca, 0x29, 0x81, 0x1b, 0xbe, 0x14, 0x22, 0xe3,
0x18, 0x1d, 0xe0, 0xb3, 0xe9, 0x1f, 0x61, 0x8d, 0xdf, 0x99, 0xf5, 0x1a, 0x9b, 0xad, 0x7c, 0xc9,
0x72, 0x08, 0xf1, 0xe3, 0x18, 0x50, 0x03, 0x8b, 0xce, 0x38, 0xb4, 0x70, 0xac, 0x53, 0x4d, 0x45,
0xb2, 0x38, 0x33, 0x40, 0xb4, 0xd6, 0x58, 0xd4, 0x9a, 0x61, 0xee, 0x83, 0x5e, 0xf5, 0x00, 0x47,
0xd4, 0x57, 0x66, 0x09, 0xa0, 0x5d, 0x4e, 0x5b, 0x57, 0xc6, 0x04, 0x8a, 0xa2, 0x91, 0x7a, 0x40,
0xf2, 0xa8, 0x5b, 0xad, 0x1a, 0x54, 0x71, 0xaa, 0xfd, 0x67, 0x3c, 0x48, 0x85, 0x8a, 0x3f, 0xe1,
0x46, 0x12, 0xe0, 0xa0, 0x21, 0x08, 0xf9, 0x59, 0x33, 0x20, 0xeb, 0x29, 0xa8, 0x55, 0x2f, 0x02,
0x5b, 0xdf, 0x3f, 0x39, 0x20, 0xeb, 0x35, 0xbc, 0xcd, 0xcd, 0x1a, 0xd3, 0xab, 0x10, 0x18, 0xd0,
0xf5, 0x21, 0x5f, 0x52, 0x62, 0xb5, 0x27, 0x0d, 0x61, 0x66, 0xc9, 0x81, 0x3c, 0xb4, 0x72, 0x61,
0x9d, 0x32, 0xa9, 0xea, 0x63, 0x1e, 0xbe, 0x0d, 0x23, 0xd0, 0xb4, 0xcb, 0x94, 0xcf, 0xcb, 0x14,
0xd0, 0x25, 0xb6, 0x0f, 0xa2, 0xf5, 0xd5, 0x90, 0xd3, 0xcb, 0x5e, 0xce, 0xd2, 0x05, 0x56, 0x46,
0xff, 0x36, 0x8d, 0x59, 0xf2, 0x89, 0x2c, 0x9f, 0xa4, 0x24, 0xc6, 0x80, 0x25, 0x59, 0x61, 0x61,
0x76, 0x66, 0x01, 0x63, 0xc8, 0x95, 0x5a, 0xd4, 0x6d, 0xc4, 0x70, 0x88, 0x6a, 0x52, 0x45, 0xaa,
0xc8, 0xa1, 0xf4, 0xfe, 0xaa, 0x06, 0x4d, 0x98, 0x5d, 0x2a, 0x7d, 0xad, 0x22, 0x2e, 0x35, 0xe0,
0x3d, 0x52, 0x01, 0xda, 0xdf, 0xa4, 0x6c, 0x01, 0x06, 0x21, 0xb4, 0xf0, 0x05, 0xa0, 0x74, 0x1e,
0xc5, 0xdc, 0x5a, 0xf2, 0x94, 0x23, 0x70, 0xb3, 0x38, 0x9a, 0x7d, 0x42, 0x1c, 0x64, 0x1a, 0xe3,
0xf4, 0xfa, 0x74, 0xb8, 0x6e, 0xea, 0x4f, 0x6c, 0xd7, 0x0c, 0x98, 0x89, 0x4d, 0x3a, 0x53, 0x4e,
0x80, 0xbe, 0xef, 0xb1, 0xd9, 0x8c, 0xaf, 0x73, 0x45, 0xdb, 0xe1, 0xef, 0xeb, 0x85, 0xab, 0xef,
0xb8, 0xbe, 0x5d, 0x27, 0xfa, 0x6e, 0x11, 0xcd, 0x77, 0x9a, 0xa6, 0x27, 0x24, 0x74, 0x24, 0xcf,
0x62, 0xde, 0x90, 0x0e, 0x03, 0x14, 0xa8, 0xf2, 0xc1, 0x2e, 0xd5, 0xaf, 0x7e, 0x26, 0x27, 0x3b,
0x4f, 0xca, 0x04, 0xe1, 0x99, 0xa5, 0x6f, 0x61, 0x51, 0xd9, 0xa9, 0x25, 0x38, 0x43, 0x4c, 0x29,
0x6a, 0x75, 0x4e, 0xa9, 0x9d, 0x94, 0x63, 0x96, 0xef, 0x41, 0xc3, 0x2a, 0x9d, 0x23, 0x33, 0x01,
0x8e, 0x2e, 0x90, 0x9c, 0x50, 0xd7, 0x79, 0x19, 0x5e, 0xd5, 0x5a, 0x24, 0x59, 0xe5, 0x52, 0xa9,
0x27, 0xe8, 0x12, 0x8a, 0x24, 0xbe, 0xc3, 0x36, 0x79, 0x87, 0x1a, 0xcc, 0x2a, 0xff, 0x9d, 0x0e,
0xf5, 0x4c, 0x75, 0xc4, 0xa8, 0x63, 0x11, 0x7b, 0xa7, 0xd0, 0x37, 0xac, 0xfe, 0x2e, 0xe4, 0x75,
0xe3, 0xee, 0xb5, 0x58, 0xdf, 0x5d, 0x88, 0xd7, 0x71, 0xb4, 0x9e, 0x0a, 0x96, 0x82, 0xe0, 0xf5,
0x2c, 0x6c, 0x42, 0x0e, 0x2a, 0x1b, 0x3b, 0x90, 0xd9, 0x36, 0x6a, 0x4f, 0xa4, 0xd9, 0x07, 0x76,
0x0d, 0x38, 0xc4, 0xbf, 0x4f, 0x9b, 0xbc, 0xf7, 0x98, 0x4d, 0xbd, 0x11, 0x37, 0x09, 0xca, 0xa8,
0xca, 0x31, 0x82, 0xc8, 0xa8, 0x86, 0xf6, 0x4e, 0x7a, 0x3b, 0x14, 0xaa, 0x14, 0x85, 0x68, 0xb5,
0x89, 0x29, 0xf3, 0xfc, 0x68, 0xa7, 0xeb, 0x61, 0x06, 0x6e, 0x80, 0xdb, 0xd3, 0xc8, 0x50, 0xeb,
0x94, 0xf0, 0xea, 0x86, 0x07, 0xd8, 0xb8, 0xe3, 0xd2, 0x3b, 0x95, 0xe5, 0xe4, 0x67, 0xa8, 0x00,
0x2b, 0x95, 0x97, 0x81, 0xce, 0x5b, 0x44, 0xf9, 0x72, 0x33, 0xf5, 0x66, 0x62, 0x35, 0x54, 0xdf,
0x64, 0x0c, 0xe9, 0x53, 0x0c, 0xfa, 0x12, 0x03, 0x3f, 0xc4, 0xb0, 0xad, 0xa6, 0x16, 0xec, 0x59,
0x7f, 0xa3, 0x41, 0xd6, 0xcb, 0x19, 0x30, 0xc4, 0xc4, 0x6a, 0x7e, 0xba, 0x21, 0xf5, 0x21, 0xca,
0x93, 0x5a, 0xb3, 0xa1, 0xf8, 0x1a, 0xa5, 0x23, 0x14, 0x09, 0xd5, 0x7b, 0xa8, 0x03, 0xb5, 0x4a,
0x94, 0x86, 0xea, 0xb4, 0x40, 0xba, 0x0e, 0x67, 0x3d, 0x18, 0x9c, 0xe5, 0x56, 0x18, 0x84, 0x62,
0xb6, 0xc1, 0xec, 0x82, 0x0b, 0x06, 0x97, 0xad, 0xb2, 0x20, 0xe1, 0x37, 0xd6, 0x3f, 0x7e, 0x79,
0xff, 0x81, 0xb3, 0x74, 0xb6, 0xfc, 0x99, 0xda, 0xfa, 0x37, 0x51, 0x12, 0x8a, 0x1b, 0x2f, 0x16,
0x33, 0xf2, 0xfc, 0xbc, 0x8c, 0x5e, 0x3a, 0x2e, 0x26, 0xbf, 0x03, 0x39, 0xce, 0x83, 0xfd, 0xf5,
0xed, 0x65, 0x62, 0x3b, 0xe7, 0xcd, 0x06, 0xbf, 0x39, 0x1c, 0x87, 0x9d, 0x77, 0x35, 0xfa, 0xe0,
0x06, 0xd1, 0x7f, 0x6c, 0x77, 0x9d, 0x8a, 0x5c, 0x00, 0xd9, 0xa5, 0x2e, 0xf5, 0xed, 0x20, 0x08,
0x9a, 0x23, 0x74, 0x97, 0x73, 0x69, 0x7c, 0x6c, 0x7f, 0x57, 0x07, 0xac, 0x23, 0xb1, 0xd0, 0xde,
0xfc, 0x06, 0x1b, 0x0b, 0x3e, 0xbe, 0xd8, 0xea, 0x17, 0xc5, 0x70, 0xf8, 0x62, 0x8b, 0x0b, 0x17,
0x1f, 0x27, 0x12, 0x1f, 0x3a, 0x9d, 0x1f, 0x80, 0x86, 0x47, 0xac, 0xf4, 0xab, 0x04, 0xbf, 0x33,
0xd1, 0xb7, 0x9e, 0xb4, 0xa7, 0xf8, 0xe8, 0x96, 0x6d, 0x2c, 0x0c, 0xdf, 0x62, 0x3d, 0xe3, 0xfb,
0x08, 0x1c, 0x3a, 0xa0, 0x49, 0x1f, 0x62, 0x42, 0xca, 0x8c, 0xb8, 0x2c, 0xbb, 0x4b, 0x66, 0x7d,
0x27, 0x38, 0xdb, 0x3e, 0x08, 0x43, 0x35, 0x73, 0xf1, 0xd1, 0x65, 0x37, 0x2c, 0xc2, 0xd2, 0x53,
0x99, 0x38, 0xea, 0x3b, 0xaa, 0x41, 0xba, 0x02, 0x7d, 0xa7, 0x5c, 0x96, 0xec, 0x56, 0xdf, 0x29,
0xa8, 0x56, 0xc6, 0xc2, 0x8c, 0x2b, 0x8a, 0x3d, 0xae, 0x13, 0x5c, 0x5e, 0xb9, 0xf4, 0xcc, 0x93,
0x90, 0x9e, 0xb7, 0xc5, 0x64, 0xbe, 0x49, 0xe8, 0x98, 0xcd, 0xd2, 0xbb, 0xe3, 0xce, 0x36, 0xe5,
0xf9, 0x26, 0x4d, 0xac, 0x10, 0xe9, 0xf5, 0x56, 0x36, 0x7f, 0x77, 0xf7, 0x2e, 0x84, 0x57, 0x45,
0xd9, 0xbd, 0xb1, 0xda, 0x56, 0xe2, 0xca, 0x40, 0x52, 0xe9, 0x0d, 0x38, 0x13, 0xee, 0x91, 0x74,
0xc8, 0x8b, 0xa7, 0xdc, 0xbb, 0xbe, 0x5d, 0x3a, 0x06, 0xb6, 0x5b, 0xdf, 0xac, 0x53, 0x10, 0x7e,
0xac, 0x72, 0x31, 0x54, 0x02, 0x31, 0x20, 0x51, 0xaf, 0xb3, 0xa5, 0x6e, 0x3e, 0x2f, 0xaa, 0xe5,
0xca, 0x10, 0xc4, 0x71, 0xd5, 0xdb, 0xdc, 0x78, 0x6b, 0x78, 0xe1, 0xe5, 0xfb, 0xc4, 0x78, 0x2f,
0xa9, 0xe9, 0xb2, 0x40, 0x93, 0x63, 0xcf, 0x1e, 0xae, 0x49, 0x3b, 0x64, 0x1e, 0xe5, 0xac, 0xdd,
0xcc, 0x7c, 0x45, 0x4d, 0x93, 0x3c, 0xbd, 0x53, 0xdb, 0x16, 0x81, 0xa4, 0xc5, 0x9c, 0x43, 0xd0,
0xde, 0x67, 0x8e, 0x1b, 0xab, 0x06, 0x41, 0xa3, 0x81, 0x38, 0x51, 0xf0, 0xd3, 0xf4, 0x77, 0x70,
0x10, 0xbc, 0x4f, 0xfc, 0x2e, 0xeb, 0xc7, 0x8e, 0x9b, 0x06, 0x91, 0x07, 0x6c, 0x0c, 0xa2, 0xdc,
0xe7, 0xc1, 0x99, 0x2d, 0xe8, 0x2d, 0xb0, 0x34, 0x2a, 0x30, 0x31, 0xb7, 0xe2, 0x4b, 0x7e, 0xf5,
0xf2, 0xe5, 0x33, 0xbc, 0x78, 0x7a, 0xf7, 0x2f, 0x5f, 0xd2, 0x63, 0xa2, 0xaf, 0x5e, 0x06, 0x3a,
0x24, 0xcf, 0xfe, 0x13, 0xd4, 0x46, 0x3f, 0x71, 0x1c, 0x77, 0x46, 0x53, 0x26, 0xe1, 0x03, 0x13,
0x3e, 0x38, 0x1f, 0xc8, 0x53, 0xe2, 0xdc, 0xdf, 0xaf, 0xf1, 0xc3, 0xb5, 0x77, 0x80, 0x95, 0xc8,
0x5b, 0x8b, 0x75, 0xdf, 0x71, 0xf6, 0xc6, 0x6e, 0x18, 0x6c, 0xd7, 0x19, 0x70, 0x91, 0x5f, 0xbe,
0x9c, 0x39, 0x6e, 0xe2, 0x27, 0xae, 0x48, 0xfc, 0x67, 0x23, 0x57, 0xf8, 0xcf, 0xc6, 0xae, 0x9e,
0xd6, 0x87, 0xae, 0x7e, 0xea, 0x02, 0x41, 0xfc, 0x6f, 0xd3, 0x94, 0xdd, 0x79, 0xf3, 0x54, 0xac,
0xfa, 0xdb, 0x98, 0x27, 0x8b, 0x7c, 0xe9, 0xa7, 0x9e, 0xbc, 0x29, 0x5c, 0x64, 0xff, 0xf1, 0xe8,
0x15, 0x77, 0x5c, 0xa3, 0x72, 0xe2, 0x31, 0x23, 0x72, 0xc0, 0x1e, 0x5f, 0x83, 0x6f, 0xe0, 0x8f,
0x5c, 0xe0, 0x64, 0x3c, 0xd3, 0x75, 0x57, 0xc1, 0x76, 0xc5, 0xf3, 0xa5, 0x08, 0x7d, 0xfb, 0xe7,
0x9f, 0x3e, 0x5c, 0xd8, 0x2e, 0xaa, 0x36, 0x1f, 0xcf, 0x13, 0x00, 0x4b, 0x69, 0x94, 0x80, 0xbf,
0x74, 0xd7, 0x0f, 0x9d, 0xc2, 0x20, 0x1a, 0xaf, 0x11, 0x2d, 0x73, 0x57, 0xc0, 0x19, 0xaa, 0x6e,
0x09, 0x79, 0x47, 0xbe, 0xe4, 0x8a, 0x80, 0x13, 0xc0, 0x16, 0x69, 0xd8, 0xfe, 0xc7, 0x9f, 0xd5,
0x3e, 0x2d, 0xfb, 0xc5, 0x36, 0x29, 0xc0, 0x56, 0x01, 0x5e, 0x2c, 0x35, 0x10, 0xad, 0xd1, 0xdd,
0x47, 0xfc, 0xce, 0x09, 0xe7, 0x04, 0x51, 0x92, 0x63, 0xec, 0xb7, 0x54, 0xf7, 0x04, 0x3d, 0xb1,
0x26, 0x49, 0x32, 0x96, 0x6f, 0xd9, 0x7b, 0xdc, 0xb5, 0xe9, 0xac, 0xdd, 0x76, 0x8a, 0xe6, 0x10,
0xf3, 0x55, 0x43, 0x1a, 0x22, 0xf0, 0x6f, 0x52, 0xec, 0x91, 0x07, 0x80, 0xf6, 0x24, 0x38, 0xe2,
0x07, 0x5a, 0xfe, 0x9e, 0xc6, 0xc0, 0xa8, 0x1f, 0x44, 0x30, 0x9a, 0x64, 0x4b, 0x71, 0xd3, 0x77,
0x94, 0xba, 0x8b, 0x41, 0x4e, 0x57, 0x6c, 0xdd, 0x97, 0x8b, 0x02, 0x2b, 0x25, 0x74, 0x7a, 0x28,
0x56, 0x51, 0xc6, 0xfb, 0xfd, 0xdc, 0x8d, 0x51, 0x6b, 0xc1, 0xbc, 0x17, 0xd1, 0x8a, 0x8b, 0x4d,
0xde, 0xaf, 0x54, 0x59, 0x85, 0xda, 0xa4, 0x29, 0x0f, 0x5a, 0x40, 0x12, 0x2d, 0x0f, 0x71, 0x4d,
0x1e, 0x04, 0x0a, 0x48, 0x2c, 0x99, 0x37, 0xef, 0x60, 0x5e, 0x71, 0x99, 0xa3, 0x34, 0xe0, 0xc5,
0xe0, 0x5e, 0x7a, 0x44, 0xae, 0xe5, 0x5e, 0x8d, 0x6f, 0xe3, 0x8a, 0x6f, 0x53, 0xbd, 0x0c, 0xf8,
0x01, 0xd1, 0x22, 0x01, 0x9c, 0x35, 0xf9, 0x38, 0x02, 0x45, 0x09, 0x92, 0xf3, 0x08, 0xee, 0x49,
0x6b, 0xdc, 0x93, 0x37, 0xb8, 0x67, 0x66, 0x70, 0x4f, 0xa2, 0xb9, 0x27, 0xd7, 0xdc, 0x93, 0x54,
0xdc, 0x23, 0x0f, 0x74, 0x81, 0x77, 0x00, 0xea, 0xff, 0x0d, 0xee, 0x01, 0xa4, 0x42, 0xc0, 0x74,
0xb7, 0x05, 0xe5, 0x09, 0x72, 0x92, 0xbc, 0x12, 0x7b, 0x7b, 0xb0, 0x65, 0x67, 0x22, 0x21, 0x54,
0x84, 0xf5, 0xa0, 0x0b, 0x6a, 0xa5, 0xfc, 0xbc, 0x93, 0xb2, 0xb2, 0x6f, 0xa5, 0x85, 0x3d, 0x08,
0xb7, 0x93, 0x3e, 0xbd, 0x5a, 0x46, 0x21, 0x47, 0x63, 0xe3, 0xa9, 0x75, 0xea, 0xad, 0xb0, 0xa0,
0xe3, 0xab, 0x87, 0x26, 0x17, 0x2b, 0xbb, 0x55, 0x4a, 0xa3, 0xc1, 0x9e, 0x18, 0x28, 0x9e, 0xe3,
0x52, 0xc1, 0xd0, 0x06, 0x2e, 0x2f, 0xd5, 0xb4, 0x0a, 0x7b, 0x1d, 0xcd, 0xb1, 0xbb, 0x38, 0x8e,
0xa3, 0x2a, 0x6f, 0x70, 0x5c, 0x16, 0x5c, 0xda, 0x18, 0x4a, 0xd9, 0x2e, 0x5c, 0xf0, 0x2f, 0x04,
0x53, 0xf0, 0x17, 0x03, 0xa9, 0x2b, 0xe4, 0x4f, 0x43, 0x1b, 0x2b, 0x23, 0x83, 0x46, 0x81, 0xac,
0x88, 0x7b, 0x99, 0xb8, 0xec, 0x2a, 0xc8, 0x3d, 0xf0, 0x46, 0x23, 0x00, 0xc3, 0x03, 0x08, 0x94,
0x8d, 0x04, 0x22, 0xa2, 0x6b, 0x90, 0x57, 0x56, 0x0d, 0x20, 0xb6, 0xc1, 0x94, 0x64, 0x5e, 0x94,
0xcc, 0xe2, 0x4d, 0x08, 0x5b, 0x64, 0xc8, 0x62, 0x71, 0x70, 0x49, 0x9f, 0x0d, 0xfa, 0x76, 0x23,
0x36, 0xb7, 0x5d, 0x69, 0x8e, 0x6c, 0xbb, 0x70, 0x55, 0x0f, 0x19, 0x8c, 0x97, 0x2f, 0x54, 0x8c,
0x5e, 0x5c, 0x4d, 0xc4, 0xcb, 0x97, 0xc8, 0xdd, 0x9b, 0x6c, 0xd9, 0xf7, 0x3c, 0x4f, 0x90, 0x9c,
0xf6, 0x25, 0x9c, 0xbc, 0x00, 0xbc, 0xf7, 0xe5, 0x04, 0x5c, 0x8d, 0x04, 0x97, 0x42, 0x23, 0xb5,
0x00, 0x8f, 0x02, 0x9c, 0x08, 0x20, 0x3c, 0x10, 0x19, 0x40, 0x03, 0x6f, 0xe4, 0x87, 0x8b, 0xbf,
0xbf, 0x0f, 0x6c, 0xdb, 0x05, 0xb9, 0x13, 0xe9, 0x5b, 0x06, 0x68, 0x6b, 0x0c, 0x4f, 0x70, 0xca,
0x52, 0xb1, 0xa0, 0x1a, 0xf8, 0x89, 0xb2, 0x03, 0xc0, 0x5d, 0x09, 0xe0, 0xde, 0xc3, 0x9a, 0xfb,
0x24, 0x7c, 0x8d, 0xd5, 0x65, 0xb4, 0x47, 0xe7, 0x11, 0x5c, 0xa8, 0x78, 0xa1, 0xc9, 0x0c, 0x95,
0x57, 0xd3, 0x76, 0x24, 0xca, 0xa3, 0x32, 0xc7, 0x64, 0x05, 0x5d, 0x21, 0x00, 0x66, 0xc8, 0xf0,
0x39, 0x28, 0xd9, 0x8c, 0xc4, 0xaf, 0x7c, 0x35, 0x99, 0xfc, 0xed, 0x60, 0x99, 0x96, 0x42, 0x1c,
0x66, 0x58, 0xfb, 0x63, 0xbb, 0x75, 0x6b, 0x9e, 0xa1, 0x60, 0xf3, 0x85, 0x1f, 0x17, 0x6d, 0x9b,
0x5e, 0x91, 0x54, 0x9e, 0xc6, 0xbd, 0xe1, 0x73, 0xb6, 0x89, 0x73, 0x4d, 0xb9, 0x91, 0xab, 0x3f,
0x3d, 0x70, 0xcb, 0xef, 0x11, 0x80, 0x8a, 0x31, 0x50, 0x31, 0x22, 0x5e, 0x02, 0x7e, 0x19, 0xc1,
0x3c, 0x25, 0x45, 0x63, 0x45, 0xd1, 0x28, 0x04, 0x22, 0x24, 0x7e, 0xee, 0x92, 0x85, 0x07, 0x33,
0x9b, 0x61, 0x29, 0x1b, 0x93, 0x8f, 0xbf, 0xfa, 0x19, 0x3d, 0xff, 0xea, 0x0b, 0x83, 0xe6, 0xf9,
0xfd, 0x7d, 0x09, 0x06, 0xaa, 0x06, 0xe5, 0x21, 0x29, 0x08, 0xd8, 0x20, 0xd1, 0x20, 0x88, 0x41,
0x86, 0x5c, 0xe0, 0xb8, 0xbc, 0xce, 0x06, 0x51, 0x93, 0x0d, 0x32, 0x35, 0x87, 0x50, 0x73, 0xc4,
0x7a, 0x86, 0xa8, 0x70, 0xd3, 0x8a, 0x33, 0x66, 0x26, 0x67, 0x64, 0xae, 0x00, 0x3b, 0xe2, 0xe1,
0x79, 0x25, 0x28, 0x12, 0x4f, 0x9e, 0x61, 0xc6, 0x6e, 0xd5, 0xa2, 0x0e, 0x31, 0x23, 0x77, 0x04,
0x7a, 0x3b, 0x05, 0x44, 0xcc, 0xbc, 0xb2, 0x1a, 0x00, 0x1c, 0x89, 0x44, 0xf9, 0xd1, 0xb1, 0xcb,
0xd4, 0x5d, 0x04, 0xec, 0xaa, 0xda, 0x5e, 0x45, 0x67, 0x47, 0xe3, 0xfd, 0xf3, 0x03, 0x7f, 0x8c,
0xc0, 0x83, 0x73, 0x0d, 0x4e, 0x48, 0xf1, 0x14, 0xa6, 0x7b, 0x56, 0xe7, 0x3a, 0x60, 0xb6, 0xa7,
0xfa, 0xd4, 0xa5, 0x95, 0xd4, 0x49, 0x22, 0xc3, 0x01, 0xd5, 0x79, 0x26, 0x90, 0x7d, 0x4a, 0xe9,
0x18, 0x1c, 0x2c, 0x53, 0x3c, 0x4e, 0xe5, 0x6c, 0xa3, 0x40, 0x53, 0x5e, 0xc3, 0x70, 0xb7, 0x1b,
0x76, 0x36, 0x69, 0x0a, 0x1f, 0xf5, 0x9f, 0xb0, 0x8e, 0xa8, 0x42, 0x6a, 0x8b, 0xbe, 0xb1, 0xaf,
0x5c, 0x0a, 0xa4, 0xdb, 0xd5, 0x5b, 0x62, 0xa7, 0xd6, 0x3d, 0xe9, 0xe3, 0x02, 0x64, 0x66, 0xb4,
0xb5, 0x51, 0x55, 0x97, 0x12, 0x15, 0xb6, 0xa3, 0x66, 0xcb, 0xd2, 0x59, 0x00, 0x9a, 0xa6, 0x29,
0xbe, 0x0b, 0x95, 0x06, 0xea, 0x14, 0x5f, 0xb5, 0x79, 0xd4, 0xaf, 0x3c, 0xbb, 0x1c, 0x5d, 0x75,
0xf9, 0xe7, 0x5a, 0xb1, 0x77, 0xf9, 0xe6, 0xaa, 0x0e, 0xa3, 0x43, 0x82, 0x0d, 0x31, 0x2f, 0xf3,
0x3e, 0xa8, 0xe8, 0x8d, 0xd6, 0x5a, 0x0e, 0x09, 0xfd, 0x10, 0xad, 0x4d, 0x81, 0xfd, 0xf2, 0x73,
0x90, 0x7d, 0x4f, 0xf6, 0x90, 0x6e, 0x02, 0x3c, 0x03, 0x41, 0x40, 0xee, 0xb4, 0xff, 0x5e, 0xd1,
0x09, 0x5c, 0x94, 0xad, 0xfc, 0x7a, 0xdd, 0x8f, 0xdc, 0x69, 0x1a, 0x81, 0x87, 0x0b, 0x52, 0x3a,
0x73, 0x23, 0x3f, 0x2c, 0x02, 0xbd, 0x0e, 0x98, 0x50, 0x65, 0x57, 0x4d, 0x62, 0xa2, 0x45, 0xa9,
0xbb, 0x21, 0x66, 0x10, 0xe6, 0x6e, 0xa5, 0x0f, 0x2d, 0xe7, 0x44, 0x4d, 0xb3, 0x2d, 0x27, 0x06,
0xbb, 0x41, 0x66, 0x54, 0x31, 0xdd, 0x2a, 0xc0, 0x64, 0x1a, 0xcb, 0x65, 0xe1, 0x4e, 0x3f, 0x71,
0x1b, 0x1e, 0x8a, 0x39, 0x2d, 0x5a, 0x78, 0x25, 0x38, 0x2b, 0x30, 0x46, 0xa6, 0xae, 0x8e, 0xbe,
0x40, 0x51, 0x6b, 0x4a, 0x97, 0xc7, 0xd9, 0x8f, 0x23, 0x79, 0x87, 0x0d, 0x37, 0xf5, 0xb6, 0x41,
0x3d, 0xc5, 0x00, 0xac, 0x1d, 0x9c, 0xa9, 0x37, 0x99, 0xf1, 0x46, 0x9d, 0x8d, 0x95, 0xef, 0x44,
0x07, 0xdb, 0xe8, 0x77, 0xf1, 0x8e, 0x60, 0x91, 0x74, 0x5d, 0xa4, 0x74, 0x5d, 0x5a, 0xa0, 0x95,
0x57, 0x0a, 0x49, 0xea, 0x34, 0x84, 0xbf, 0xcd, 0x7a, 0x39, 0x89, 0xe4, 0xf7, 0x40, 0x8e, 0x37,
0xa0, 0xd9, 0x26, 0xd1, 0xbc, 0x6f, 0x30, 0x56, 0xea, 0x68, 0xe3, 0xa8, 0xb6, 0x6b, 0xbb, 0x1c,
0xa2, 0xe0, 0x38, 0xe3, 0x9d, 0xa1, 0x47, 0x8a, 0xb8, 0xd0, 0xe1, 0xc6, 0x34, 0x16, 0x53, 0xd4,
0x43, 0x72, 0x7e, 0xc0, 0x5f, 0xff, 0x32, 0xb9, 0x72, 0x23, 0x80, 0x13, 0x5c, 0x61, 0x3f, 0xf1,
0xf0, 0x52, 0x54, 0xd6, 0xb7, 0x5c, 0x00, 0xe4, 0x5d, 0xeb, 0x63, 0x73, 0xee, 0x32, 0x23, 0x45,
0x87, 0x26, 0x2b, 0xcc, 0x26, 0xe5, 0x42, 0xc4, 0xde, 0x35, 0x07, 0x0a, 0xc5, 0x38, 0xc9, 0x90,
0xad, 0xa3, 0x21, 0x46, 0xe2, 0x43, 0x89, 0xcd, 0x73, 0xb6, 0x12, 0x1b, 0xfc, 0x35, 0x91, 0xbd,
0xcc, 0xed, 0xf2, 0x8a, 0x73, 0x60, 0xca, 0xad, 0xaa, 0x21, 0xf6, 0x43, 0x57, 0x0e, 0xf2, 0x57,
0xda, 0x3a, 0xce, 0xb4, 0xcb, 0x0b, 0x28, 0x79, 0x36, 0xf3, 0xc4, 0x27, 0x47, 0xa9, 0xb7, 0x6b,
0x11, 0xe1, 0x61, 0x01, 0xb2, 0x5b, 0x58, 0xb2, 0xdb, 0xa4, 0x91, 0x9e, 0x50, 0x8c, 0xbe, 0xc1,
0x4c, 0xc5, 0x1a, 0xff, 0x2c, 0x83, 0x31, 0x3f, 0x78, 0x15, 0xbb, 0x8b, 0x60, 0x55, 0x45, 0x25,
0x18, 0xfa, 0x54, 0xda, 0x31, 0x69, 0xc9, 0x2a, 0xaf, 0x64, 0x35, 0x23, 0xb9, 0x12, 0x28, 0xab,
0x31, 0x88, 0x54, 0x64, 0xc8, 0x6a, 0x82, 0x41, 0xb8, 0x21, 0x7c, 0xa2, 0x14, 0x3e, 0xd9, 0xb3,
0x80, 0xb0, 0x00, 0x3c, 0x28, 0x56, 0x58, 0x2f, 0xb6, 0xf9, 0xde, 0xb8, 0xf8, 0x38, 0xd9, 0x48,
0x43, 0x0d, 0x8d, 0xb3, 0xe2, 0xfe, 0xc5, 0xb6, 0x1d, 0x1f, 0x7c, 0x74, 0xdc, 0xb5, 0xec, 0x03,
0x5e, 0x83, 0xb9, 0x35, 0xd9, 0x58, 0x57, 0x02, 0xa9, 0xbb, 0x4d, 0x40, 0xce, 0x21, 0x76, 0x1e,
0xa1, 0xef, 0xd4, 0xe5, 0x91, 0x2f, 0xb4, 0xe4, 0xdf, 0x05, 0x1b, 0xda, 0x7e, 0xe9, 0x9c, 0x5e,
0x82, 0x81, 0xb8, 0x82, 0xc0, 0x47, 0x79, 0xa4, 0xf7, 0xe4, 0xf4, 0xd4, 0xb4, 0x83, 0x40, 0x27,
0x4d, 0xe2, 0x1e, 0x00, 0xbe, 0xc4, 0xf2, 0x39, 0x57, 0xd6, 0xc5, 0x5d, 0x55, 0xae, 0xa9, 0x70,
0xce, 0xed, 0xe7, 0xb6, 0x6f, 0x0f, 0x87, 0x36, 0x6d, 0xb3, 0xf8, 0xaf, 0x04, 0x77, 0x0c, 0x7e,
0xe2, 0x44, 0x9b, 0xe2, 0x3b, 0xef, 0x77, 0x11, 0x25, 0x7d, 0xfb, 0xbf, 0x50, 0x5a, 0x14, 0xfd,
0x20, 0x62, 0x52, 0x5f, 0x71, 0xb4, 0x74, 0xac, 0xbb, 0x76, 0x97, 0x4f, 0xd1, 0x2f, 0xa5, 0x66,
0x29, 0xe9, 0xc2, 0xeb, 0x49, 0x1e, 0xd3, 0x4c, 0x54, 0x4e, 0x5f, 0x87, 0x9d, 0x30, 0xfc, 0xc4,
0x0e, 0x25, 0x62, 0x54, 0x1d, 0x75, 0xaa, 0x12, 0xed, 0x3a, 0x76, 0x68, 0x12, 0xed, 0x42, 0x02,
0x53, 0xc9, 0x0f, 0xfb, 0x6a, 0xba, 0xc4, 0x2c, 0xb5, 0x40, 0x8e, 0x2a, 0x23, 0xcb, 0x0c, 0xe3,
0xca, 0xf2, 0x09, 0xed, 0x87, 0xf4, 0xa3, 0x42, 0xed, 0x47, 0xad, 0x3a, 0x81, 0xef, 0x50, 0x3f,
0xda, 0x7b, 0x72, 0x37, 0xd5, 0x7c, 0x40, 0x83, 0x75, 0xf5, 0xb4, 0x02, 0x57, 0x05, 0xc3, 0x60,
0x06, 0xe4, 0x66, 0x31, 0x15, 0x6a, 0x80, 0xc8, 0x94, 0x0d, 0xb2, 0x6e, 0xc2, 0xbd, 0x0b, 0xe2,
0xf3, 0xd4, 0x5f, 0xba, 0x73, 0xb8, 0xce, 0xfc, 0x85, 0x7b, 0x0d, 0xd7, 0x8d, 0x7f, 0xe7, 0xde,
0xc0, 0x75, 0xed, 0xcf, 0xdd, 0xf7, 0xc1, 0xdf, 0x59, 0xbe, 0xf4, 0xe6, 0xb1, 0x00, 0x3f, 0xa0,
0xbf, 0x19, 0xdc, 0x39, 0xc3, 0x7d, 0xc7, 0x7d, 0x5b, 0x6b, 0x5d, 0x0f, 0xe6, 0xd4, 0x3a, 0x0d,
0x0e, 0x4f, 0x5e, 0x5d, 0xbb, 0xbf, 0xe3, 0xe5, 0xc6, 0xbd, 0x0d, 0xa6, 0xa7, 0xc1, 0xd7, 0xc7,
0x27, 0xe7, 0xe3, 0x43, 0x7f, 0x7c, 0xe2, 0x7e, 0x40, 0xd1, 0xdd, 0xce, 0xf2, 0x5b, 0xff, 0xa2,
0x08, 0x24, 0x59, 0x5f, 0x93, 0x3c, 0xf6, 0xef, 0xdc, 0xb9, 0x33, 0xb9, 0xc0, 0x2f, 0x90, 0x6f,
0x94, 0xac, 0xba, 0x23, 0xf8, 0x0f, 0x35, 0x4b, 0x56, 0x7f, 0x13, 0x5c, 0x60, 0xde, 0x91, 0xde,
0xa2, 0x6e, 0xed, 0xeb, 0xf7, 0x84, 0x85, 0x52, 0xb0, 0x5f, 0xb8, 0x38, 0xfd, 0xa7, 0xc6, 0xf4,
0x53, 0xf7, 0x77, 0x67, 0xf2, 0x09, 0xed, 0x4e, 0xfc, 0x41, 0x1e, 0x21, 0x3c, 0x1f, 0xd1, 0x3f,
0xdb, 0x95, 0xad, 0xbf, 0x00, 0x6a, 0x69, 0x46, 0xea, 0x09, 0x02, 0xd3, 0xc7, 0x24, 0x08, 0x0f,
0x46, 0x13, 0x7e, 0x7a, 0x33, 0xe1, 0x10, 0x1b, 0xeb, 0xb6, 0x1c, 0xda, 0xf2, 0xd3, 0xeb, 0x49,
0x0e, 0x6d, 0x5b, 0x6c, 0x00, 0x7b, 0xf5, 0xea, 0x7a, 0x0f, 0x34, 0x01, 0x48, 0x1a, 0x6c, 0x1a,
0x9c, 0x73, 0xbc, 0x70, 0xf0, 0x29, 0xf2, 0xc1, 0x7b, 0x08, 0x06, 0xf8, 0xe0, 0x2d, 0x90, 0xdf,
0x56, 0xeb, 0xa1, 0xfe, 0x03, 0x47, 0x5f, 0x9c, 0x05, 0x23, 0xf8, 0x7b, 0x7a, 0xf7, 0xf2, 0x65,
0x44, 0xb7, 0xd1, 0xe9, 0xfc, 0xfe, 0xfe, 0x19, 0xbc, 0xc9, 0xb1, 0x8d, 0x9f, 0xce, 0xf5, 0xe4,
0xf1, 0x79, 0xf4, 0xea, 0x6e, 0x4f, 0xf8, 0x1c, 0xfe, 0xe6, 0x13, 0xe0, 0x23, 0x54, 0xd8, 0x74,
0x34, 0xde, 0x7f, 0x73, 0x79, 0xf8, 0x0a, 0x8c, 0x00, 0x5d, 0xf6, 0xc6, 0xfa, 0x66, 0x5f, 0xdf,
0x1c, 0x5c, 0x51, 0xaa, 0x77, 0x9b, 0x82, 0x36, 0x59, 0x00, 0x7b, 0x4d, 0x91, 0xb3, 0x96, 0xfc,
0xf6, 0x42, 0xfc, 0xb2, 0x98, 0x82, 0x5a, 0x9a, 0x7c, 0x90, 0xea, 0x07, 0xec, 0x8c, 0x89, 0x9a,
0x8f, 0x29, 0xbc, 0x45, 0x55, 0xe6, 0x82, 0xe4, 0x87, 0xf4, 0x77, 0x55, 0x38, 0x1f, 0x4d, 0x44,
0x41, 0xc4, 0xe1, 0x1e, 0x9e, 0xc0, 0x7f, 0x9d, 0x02, 0xad, 0x97, 0xa5, 0x26, 0xd2, 0x7b, 0x44,
0x54, 0xe3, 0x87, 0x2b, 0xc4, 0x6f, 0xc1, 0x18, 0x46, 0xe2, 0xd9, 0xed, 0x27, 0xae, 0x51, 0x3f,
0xa6, 0x7f, 0x76, 0xd9, 0xde, 0x98, 0x93, 0xf2, 0x4f, 0x60, 0xae, 0xf6, 0xf6, 0x0f, 0xdd, 0x30,
0xc8, 0xe0, 0x82, 0xa4, 0x13, 0x60, 0x7b, 0x6e, 0xf7, 0xec, 0xf5, 0xad, 0xf5, 0x6d, 0x1a, 0xb1,
0xd8, 0xae, 0xc1, 0xac, 0x57, 0x46, 0x23, 0x7b, 0x5e, 0x9e, 0xd6, 0xfb, 0xe6, 0x52, 0x68, 0xcf,
0xbf, 0xc5, 0x4f, 0xed, 0x02, 0x5b, 0x7e, 0x65, 0xa7, 0x1b, 0xbf, 0x03, 0x11, 0x42, 0x68, 0x03,
0x7b, 0x15, 0x85, 0x61, 0xcc, 0xf5, 0xcc, 0x17, 0xf0, 0x0e, 0x7c, 0xa9, 0x99, 0x1b, 0x3a, 0x85,
0x2c, 0xbb, 0xea, 0xe7, 0xa0, 0x82, 0xa0, 0xb7, 0x3d, 0xb6, 0xfd, 0x28, 0xf8, 0x30, 0x99, 0x02,
0x8b, 0x7d, 0x9a, 0x50, 0xcb, 0x3e, 0xb6, 0xd0, 0xd7, 0xb6, 0xfd, 0x0f, 0x8e, 0xf9, 0xe2, 0x00,
0x5f, 0x50, 0xa1, 0x22, 0xbc, 0x28, 0xa4, 0xde, 0xad, 0x78, 0x15, 0xed, 0x4b, 0x29, 0xac, 0xcc,
0x41, 0x73, 0x54, 0x3e, 0x82, 0x1d, 0x22, 0x73, 0x53, 0x69, 0x42, 0x9a, 0x85, 0x4b, 0xc6, 0x00,
0x36, 0x04, 0xef, 0x60, 0x84, 0x21, 0x2d, 0x3a, 0x52, 0x19, 0x1a, 0x49, 0x5e, 0x85, 0x6a, 0xc0,
0x7e, 0x68, 0x09, 0x81, 0xd9, 0xf8, 0xb3, 0x20, 0x60, 0xe0, 0xca, 0x07, 0x62, 0x32, 0x0e, 0x82,
0x64, 0x90, 0x9f, 0x67, 0x92, 0x5a, 0xcc, 0xf1, 0xd5, 0x1d, 0xd8, 0x0c, 0xf0, 0x13, 0xc0, 0x19,
0x13, 0x05, 0x43, 0x37, 0x5e, 0x27, 0x31, 0xc6, 0x94, 0x43, 0x93, 0x59, 0xd6, 0xee, 0x71, 0xfa,
0x2d, 0x0e, 0xcf, 0x2a, 0x48, 0x0d, 0x1e, 0x05, 0x93, 0x4c, 0xb3, 0x2b, 0xdd, 0xad, 0x35, 0x65,
0xd6, 0x4c, 0xc2, 0x9b, 0x65, 0x26, 0x9d, 0xda, 0x56, 0x56, 0x64, 0x94, 0xb0, 0x61, 0x9c, 0xc8,
0xce, 0xb3, 0x73, 0x51, 0x65, 0x58, 0x9e, 0x53, 0x86, 0xc5, 0xcb, 0xc5, 0x7b, 0x71, 0xc3, 0xd3,
0xd7, 0x80, 0xfd, 0xbe, 0x83, 0x3f, 0x5c, 0x76, 0x21, 0x7e, 0x00, 0xb2, 0xec, 0x1f, 0x1d, 0xb9,
0xea, 0x7f, 0x46, 0x2b, 0x81, 0x67, 0x1e, 0x5f, 0x68, 0xf1, 0x00, 0x34, 0x1f, 0xc0, 0x12, 0x60,
0x59, 0x79, 0x73, 0x05, 0x47, 0x6d, 0x1a, 0xa2, 0x54, 0xf3, 0xed, 0xb0, 0xef, 0x39, 0xc3, 0x85,
0x6b, 0xbf, 0x18, 0xbf, 0x18, 0x43, 0xa7, 0x49, 0x69, 0x8f, 0x31, 0x47, 0x84, 0xb9, 0x53, 0xe4,
0xa0, 0xa1, 0xb7, 0xdd, 0x2f, 0x86, 0x0b, 0x47, 0x5b, 0xed, 0x92, 0xda, 0xdc, 0x1d, 0x1f, 0x3b,
0x7a, 0x77, 0x20, 0xb2, 0x39, 0x88, 0x6c, 0x02, 0x22, 0xcb, 0x4c, 0x06, 0xa8, 0x43, 0xad, 0x02,
0xc4, 0x52, 0xec, 0xf6, 0xfa, 0xfc, 0xf4, 0x74, 0x7c, 0x7c, 0x9f, 0x9f, 0x9e, 0x9e, 0xdc, 0x27,
0x88, 0x88, 0x0f, 0xe4, 0x84, 0xf4, 0x71, 0x66, 0x2f, 0xa3, 0xb4, 0xc2, 0xe0, 0xd8, 0xd8, 0xac,
0xe4, 0x57, 0x6d, 0x57, 0x81, 0xa5, 0x80, 0x87, 0xca, 0xfc, 0x95, 0xc1, 0x4a, 0x14, 0x72, 0xe6,
0x92, 0xe6, 0x09, 0xb8, 0xac, 0xe0, 0xe9, 0xe5, 0xd5, 0x2c, 0x35, 0x45, 0x8b, 0x1e, 0x58, 0xe9,
0x7f, 0x85, 0x2a, 0x88, 0x7a, 0x5b, 0xd2, 0x90, 0x3a, 0xd9, 0xe8, 0x44, 0xc8, 0x14, 0x00, 0xcc,
0xad, 0x43, 0xff, 0x7c, 0x52, 0x06, 0xb5, 0xa8, 0xe7, 0x5f, 0xe3, 0x67, 0x48, 0x20, 0x80, 0xf6,
0x3e, 0x84, 0xb0, 0xdb, 0x1b, 0xd2, 0x3c, 0x2c, 0xfc, 0x1e, 0x0b, 0x5b, 0x60, 0xaa, 0xf8, 0x8e,
0xbc, 0x23, 0x0d, 0x2d, 0xf3, 0xc8, 0xdb, 0xfd, 0xb0, 0x12, 0x22, 0x5f, 0xc2, 0x8e, 0xff, 0xcf,
0x86, 0xe1, 0xf7, 0x54, 0x81, 0xbd, 0x84, 0xa9, 0xc1, 0x07, 0x6e, 0xbc, 0x7e, 0x9b, 0xb0, 0x69,
0x8c, 0x89, 0x85, 0x71, 0x69, 0x36, 0x12, 0x32, 0x1b, 0x26, 0xb2, 0x6b, 0x4e, 0x13, 0x6d, 0x4b,
0x2e, 0x86, 0x0e, 0x13, 0xca, 0xc5, 0xf9, 0x1d, 0x5b, 0xc5, 0xa0, 0x11, 0x7c, 0xe9, 0x3c, 0x51,
0x13, 0xde, 0x61, 0x93, 0x81, 0x9d, 0x50, 0x1d, 0x79, 0x93, 0xcb, 0xae, 0xe8, 0x86, 0xf2, 0x0b,
0xea, 0x6e, 0xa2, 0xb4, 0x4a, 0xa2, 0xb4, 0x0a, 0x25, 0xdf, 0x7d, 0x16, 0xd8, 0xe0, 0x7d, 0x03,
0xb1, 0x28, 0x12, 0x19, 0xea, 0x24, 0xbd, 0x7c, 0x6b, 0x6a, 0x16, 0x80, 0xa3, 0xd9, 0xf9, 0x76,
0x80, 0x40, 0x51, 0x77, 0xba, 0x31, 0xbb, 0x13, 0x94, 0x38, 0x00, 0xd1, 0x3a, 0x04, 0x96, 0x8d,
0xe4, 0xbc, 0xf9, 0x6d, 0x6e, 0x17, 0xfa, 0xb8, 0x0a, 0x83, 0x8b, 0xef, 0x30, 0xd2, 0xb8, 0xe4,
0x57, 0x2a, 0xb4, 0x60, 0x94, 0xa4, 0xec, 0x8a, 0x88, 0x29, 0x3b, 0xdf, 0xa2, 0x31, 0x03, 0xf2,
0x46, 0xf2, 0x60, 0x0f, 0xfc, 0x65, 0x4f, 0xef, 0x1f, 0x5d, 0xe6, 0xbc, 0xf0, 0x5e, 0x6c, 0xb3,
0xe2, 0x23, 0x34, 0x53, 0x7d, 0x0c, 0xc4, 0x33, 0x38, 0x6f, 0xca, 0xaf, 0xc1, 0x08, 0x54, 0xf3,
0xc6, 0x06, 0x8b, 0x12, 0x92, 0x1f, 0xf0, 0xfc, 0xd4, 0x67, 0x10, 0x9d, 0x8e, 0x5f, 0xed, 0x23,
0x80, 0x4e, 0xe7, 0xaf, 0xfc, 0x78, 0xa1, 0xd3, 0xf5, 0x33, 0x8e, 0x73, 0x41, 0x8f, 0x96, 0x0c,
0x80, 0xbf, 0xab, 0x88, 0x3f, 0x22, 0x74, 0x21, 0x7e, 0x45, 0xe0, 0xb6, 0x92, 0x8a, 0x10, 0xeb,
0x6c, 0x2f, 0xf3, 0x2b, 0x7f, 0xab, 0x57, 0xfd, 0x8d, 0xd2, 0xaf, 0x89, 0x2b, 0xd7, 0xf8, 0x0d,
0x34, 0x3b, 0x73, 0x67, 0x62, 0xb5, 0x62, 0x49, 0xf8, 0x1b, 0x04, 0x17, 0x1f, 0x91, 0x1e, 0xd6,
0xe0, 0x5f, 0x16, 0x86, 0x50, 0x96, 0xae, 0x89, 0x42, 0xf4, 0x98, 0x39, 0x47, 0x6b, 0x10, 0x5a,
0x5f, 0x61, 0x86, 0xf6, 0x2b, 0x6b, 0xf0, 0x83, 0x65, 0xbf, 0x96, 0xdf, 0xe6, 0x0d, 0x2e, 0x90,
0x30, 0x56, 0x8b, 0x4d, 0x3e, 0x56, 0x0b, 0xcc, 0xe7, 0x4f, 0x59, 0x61, 0x6b, 0x23, 0xe7, 0xcd,
0x19, 0xd8, 0xf2, 0x47, 0xae, 0x54, 0x14, 0x85, 0xe9, 0xa4, 0x13, 0xe3, 0x3f, 0x40, 0x26, 0x03,
0x95, 0x2a, 0xf4, 0xd8, 0x01, 0x5c, 0xfe, 0x25, 0xdb, 0x37, 0xe0, 0xa9, 0x91, 0x08, 0x00, 0x2b,
0xdf, 0xa0, 0x2c, 0x83, 0xdd, 0xac, 0x0e, 0xc6, 0x6c, 0xcb, 0xb2, 0x3d, 0x79, 0x6e, 0xd8, 0x2f,
0x23, 0x23, 0x4b, 0x85, 0x64, 0xb0, 0x1a, 0x90, 0x13, 0xd4, 0x9a, 0x54, 0xd8, 0x20, 0x16, 0x6e,
0x76, 0xe5, 0x54, 0x27, 0x51, 0xcf, 0xf4, 0x49, 0x54, 0x76, 0x7f, 0x2f, 0x8f, 0x28, 0xa3, 0x8c,
0xae, 0xe0, 0xe5, 0x9f, 0x53, 0x90, 0x88, 0xd0, 0xfb, 0xe0, 0x42, 0x95, 0x59, 0x35, 0x5e, 0x69,
0xee, 0xd6, 0x2c, 0xbc, 0x39, 0x0b, 0x77, 0xce, 0x01, 0x91, 0x38, 0x66, 0x6f, 0xec, 0x14, 0xfd,
0x0c, 0x6d, 0xd5, 0x47, 0xbf, 0x9a, 0x18, 0xc3, 0xb2, 0x1c, 0x9b, 0xf1, 0xf5, 0x47, 0xc7, 0x08,
0xc9, 0x94, 0xab, 0x81, 0xfb, 0x35, 0xc4, 0x49, 0x87, 0x5d, 0x10, 0xc6, 0xab, 0xb3, 0x25, 0x1b,
0xb0, 0xb1, 0xcf, 0x0f, 0xc0, 0x8f, 0x28, 0x2b, 0xb0, 0x9c, 0x32, 0x11, 0xae, 0xe9, 0x47, 0x27,
0x75, 0x2d, 0x49, 0x0f, 0xa3, 0x6b, 0xa0, 0xa7, 0xf0, 0xa8, 0x28, 0xc7, 0x2b, 0x4b, 0xa3, 0x03,
0x5b, 0x7e, 0xe5, 0x6a, 0xbb, 0xad, 0x57, 0xba, 0xc8, 0x38, 0x00, 0x78, 0x47, 0xa3, 0x3d, 0x7b,
0x95, 0x75, 0x74, 0xba, 0x88, 0x56, 0xa0, 0xa3, 0xbf, 0x57, 0x20, 0x07, 0xb6, 0xfc, 0x04, 0x1a,
0x3b, 0x52, 0xd9, 0x0e, 0x26, 0x2c, 0x29, 0xc9, 0x2b, 0x2b, 0x5b, 0x6c, 0x37, 0xaf, 0x4e, 0x28,
0x5b, 0x20, 0x62, 0x75, 0x3c, 0xc0, 0x18, 0x77, 0x0e, 0xa5, 0x1f, 0x1a, 0x01, 0xd1, 0x8f, 0xc9,
0x0d, 0x54, 0xcc, 0x05, 0x26, 0x49, 0xd4, 0xb2, 0x62, 0xb1, 0x9e, 0x3e, 0xda, 0x85, 0x81, 0xa8,
0x7b, 0x76, 0xfd, 0x5d, 0xb0, 0x8d, 0x99, 0xfc, 0x16, 0x8e, 0xca, 0xb7, 0xed, 0x97, 0x5d, 0x58,
0x6a, 0x77, 0xe2, 0x31, 0x03, 0x03, 0x37, 0x22, 0x0c, 0xd6, 0xb3, 0x78, 0x6e, 0xe5, 0x59, 0x35,
0x6a, 0x7f, 0x9c, 0x5a, 0x4f, 0xd0, 0xdf, 0xc6, 0xa9, 0x1e, 0x9d, 0xcf, 0x69, 0x62, 0xa8, 0x8f,
0x8c, 0xc1, 0xbf, 0x6c, 0xf7, 0x48, 0xf9, 0x4a, 0x5c, 0x63, 0x8c, 0xee, 0x02, 0x74, 0x74, 0x92,
0xa7, 0xa3, 0x78, 0xcc, 0x9d, 0x82, 0x53, 0x94, 0xa9, 0x49, 0x54, 0x95, 0x56, 0x60, 0x53, 0x99,
0x96, 0xc1, 0x85, 0x65, 0x92, 0x80, 0xec, 0x61, 0x70, 0x80, 0xe7, 0xd4, 0x64, 0x13, 0x83, 0xd1,
0x44, 0xb3, 0xde, 0x0e, 0x5c, 0x67, 0x4d, 0x5c, 0xeb, 0xb9, 0x30, 0x09, 0x61, 0xfa, 0x2c, 0x94,
0x08, 0xca, 0xd1, 0x49, 0xbc, 0xbf, 0xef, 0xf3, 0x6e, 0x88, 0x1a, 0xf9, 0x4f, 0x5e, 0x65, 0x54,
0x45, 0x50, 0x95, 0xbd, 0x50, 0x38, 0x12, 0x57, 0x39, 0xfa, 0x08, 0x53, 0x9b, 0x31, 0xb0, 0xa4,
0xc6, 0x4b, 0x8c, 0x06, 0xb2, 0x89, 0xa7, 0xfc, 0x92, 0x5d, 0x75, 0xae, 0xea, 0xb2, 0xbd, 0x3d,
0x97, 0x9d, 0x05, 0x79, 0xe5, 0x45, 0xc2, 0xbe, 0x01, 0xfa, 0x8e, 0x01, 0xf4, 0x09, 0x3e, 0x10,
0x1f, 0x0c, 0x25, 0xf9, 0xbb, 0x2f, 0x5f, 0x02, 0x6e, 0x67, 0xa9, 0x80, 0xe0, 0x44, 0x60, 0xb4,
0x4a, 0xd8, 0x2f, 0x44, 0xfd, 0xc0, 0xa6, 0xce, 0x0e, 0x99, 0x43, 0xc3, 0xb3, 0x8e, 0x84, 0xff,
0x0a, 0x11, 0x87, 0xc5, 0x5f, 0x36, 0x55, 0x50, 0x34, 0x37, 0x55, 0x3c, 0x34, 0x6a, 0x93, 0xab,
0x41, 0x11, 0x1d, 0xe7, 0x56, 0x07, 0x76, 0x94, 0x10, 0x6d, 0xa7, 0x7e, 0x75, 0x8d, 0x19, 0x16,
0xfd, 0x34, 0x28, 0xa8, 0x4e, 0x14, 0x6c, 0x3c, 0xbc, 0xe9, 0xde, 0xbf, 0x6e, 0x97, 0x3f, 0xd4,
0x81, 0x78, 0xc4, 0x1f, 0x63, 0x8b, 0xc1, 0xcb, 0x07, 0xdf, 0x30, 0xf4, 0x50, 0x8c, 0x35, 0xdf,
0xc2, 0x32, 0x73, 0x78, 0x81, 0x9e, 0x1f, 0xfe, 0xb2, 0x90, 0x6d, 0x78, 0xf6, 0x94, 0x58, 0x7a,
0x2c, 0x64, 0x8a, 0xc9, 0x1f, 0x02, 0x4e, 0x52, 0xb3, 0x09, 0x5b, 0xa8, 0x8f, 0xfa, 0x76, 0xc0,
0x85, 0xbf, 0xac, 0x64, 0x40, 0xa5, 0x6b, 0x8f, 0xd1, 0x46, 0x71, 0x0f, 0x35, 0x30, 0x00, 0xa5,
0x8e, 0x0b, 0xcb, 0x43, 0x25, 0x23, 0x4b, 0x5e, 0xfb, 0x10, 0xdf, 0xf1, 0xc0, 0xb3, 0x48, 0xef,
0xe4, 0xc1, 0xb1, 0x48, 0xbf, 0x8d, 0xe3, 0xbe, 0x2c, 0xfb, 0x77, 0x55, 0xd9, 0xb1, 0x6b, 0xe9,
0x5a, 0x56, 0x5b, 0xb2, 0x71, 0x12, 0x3c, 0x1b, 0x95, 0x7e, 0xb6, 0xbd, 0x06, 0x15, 0x48, 0x52,
0xdb, 0x4f, 0xd8, 0x75, 0xb4, 0x60, 0x30, 0x87, 0x87, 0xbf, 0x5b, 0xbd, 0x01, 0x67, 0xf9, 0xfe,
0xbe, 0x6a, 0x03, 0x82, 0xa7, 0xef, 0x55, 0xbb, 0x73, 0x6e, 0xbf, 0x05, 0x56, 0x00, 0x19, 0x5e,
0xad, 0x85, 0xf5, 0xdf, 0xff, 0xd7, 0x12, 0x98, 0x41, 0x63, 0xf9, 0x7f, 0xff, 0xbf, 0x34, 0x12,
0x10, 0x71, 0x5f, 0x2c, 0xa3, 0xcc, 0x9a, 0x47, 0x3c, 0x0e, 0x2d, 0xb8, 0x29, 0xbf, 0x61, 0xd0,
0x76, 0xb5, 0x92, 0xd1, 0x32, 0x65, 0x89, 0xdb, 0x03, 0xcc, 0x8b, 0x8c, 0x63, 0x4d, 0xc3, 0xa5,
0xc6, 0xc8, 0x95, 0x74, 0xbb, 0x9e, 0xe5, 0x2a, 0x51, 0x4c, 0xf0, 0x67, 0x78, 0x18, 0x28, 0x82,
0x9c, 0x32, 0x34, 0x13, 0x01, 0xa1, 0xad, 0x44, 0xf3, 0xa4, 0x22, 0xac, 0xaa, 0xec, 0xa3, 0x10,
0x62, 0x05, 0xb8, 0xe0, 0x21, 0xa5, 0x08, 0x40, 0xdb, 0x51, 0x36, 0x9e, 0xa8, 0x46, 0x71, 0xad,
0x22, 0xe4, 0xfd, 0xbd, 0xe6, 0x15, 0xb3, 0xd5, 0xd9, 0xc2, 0x52, 0x63, 0xe9, 0x3f, 0x17, 0x22,
0x10, 0x9e, 0x8c, 0x4f, 0x7f, 0x14, 0x21, 0x2f, 0x60, 0x9a, 0x0c, 0xa4, 0xf6, 0x19, 0x40, 0x8d,
0xd1, 0xec, 0x3f, 0x11, 0x60, 0x50, 0x96, 0x7d, 0x07, 0xa6, 0xa2, 0x6a, 0x6e, 0x9a, 0x08, 0x4d,
0xfa, 0xcb, 0x97, 0x23, 0xba, 0xa7, 0xf3, 0x0e, 0x25, 0xef, 0x0e, 0x12, 0xba, 0x21, 0x02, 0xea,
0x67, 0x3b, 0x6c, 0xa7, 0x54, 0x7f, 0xbc, 0x3c, 0x19, 0x25, 0xd5, 0xfa, 0x77, 0x99, 0x57, 0xbf,
0xbf, 0xa7, 0x4a, 0x38, 0xc4, 0x0f, 0x30, 0x4f, 0xd9, 0xc8, 0x54, 0xc5, 0x4e, 0x5e, 0xe7, 0x87,
0xbe, 0x5d, 0xff, 0x65, 0x0f, 0x34, 0xd6, 0xa0, 0x0c, 0x77, 0x59, 0xf2, 0xb6, 0x81, 0x6d, 0x8c,
0x76, 0xf3, 0x86, 0xf9, 0xc0, 0x21, 0xa4, 0x7a, 0x30, 0x55, 0x12, 0x80, 0x17, 0x02, 0x28, 0xa3,
0x84, 0xd0, 0xb6, 0x4b, 0x94, 0x9a, 0x9b, 0x4c, 0x1e, 0x01, 0x2f, 0xd6, 0xc7, 0xa8, 0x09, 0xe4,
0xa2, 0xa0, 0xee, 0x40, 0x2f, 0x25, 0x45, 0xf9, 0x9b, 0x85, 0x6d, 0x05, 0xa5, 0x7f, 0xc5, 0x10,
0x64, 0x13, 0x58, 0xac, 0x2d, 0x54, 0x30, 0xfe, 0xc1, 0xd1, 0x62, 0xbd, 0x6b, 0x64, 0x5b, 0x1c,
0xeb, 0xdf, 0x04, 0x80, 0x79, 0xa2, 0x13, 0x2e, 0x49, 0x6f, 0x45, 0x43, 0xfa, 0x82, 0x68, 0xce,
0x53, 0xd9, 0x38, 0x31, 0x4a, 0x48, 0x20, 0x56, 0x31, 0xfb, 0xe3, 0x79, 0x52, 0x5e, 0x73, 0x45,
0x3e, 0x52, 0x3a, 0xc4, 0xc2, 0x72, 0xb2, 0xf2, 0xdb, 0xf8, 0x67, 0x1f, 0x5d, 0x43, 0x67, 0x3c,
0xbc, 0x17, 0x0a, 0xb2, 0x94, 0x9e, 0x56, 0x2b, 0xa9, 0xb8, 0xab, 0xd0, 0x87, 0xd1, 0x0f, 0xd4,
0xa2, 0xd6, 0x04, 0x74, 0xc7, 0x86, 0xcd, 0xb0, 0xcb, 0x93, 0x95, 0xcb, 0x28, 0x65, 0x89, 0xb3,
0xad, 0xef, 0x53, 0xbf, 0x7c, 0xda, 0x4e, 0x65, 0x72, 0xb1, 0xde, 0xd3, 0xfe, 0x13, 0x9f, 0x5d,
0xd8, 0x93, 0x3a, 0xca, 0xaa, 0xe4, 0x7f, 0xab, 0xe6, 0xdb, 0xd9, 0x8d, 0xc6, 0xaa, 0xec, 0xa9,
0xa3, 0x32, 0xc9, 0xac, 0x13, 0xc9, 0x1f, 0x53, 0x35, 0x56, 0x3b, 0x93, 0x2d, 0x3e, 0x5b, 0xb8,
0x04, 0xfe, 0x4c, 0x55, 0x47, 0xc6, 0x8a, 0x46, 0x11, 0xd3, 0x84, 0xe9, 0x3a, 0x32, 0xfb, 0x83,
0x51, 0x32, 0x66, 0xe9, 0xc2, 0xf9, 0x50, 0x55, 0x87, 0xd9, 0x4f, 0x39, 0x81, 0x69, 0xe0, 0x09,
0x3f, 0x14, 0x78, 0x3c, 0x76, 0xca, 0x44, 0x9f, 0x59, 0x8b, 0x5b, 0x7d, 0x3d, 0xd9, 0x59, 0x8c,
0xab, 0x02, 0x44, 0x7e, 0xae, 0x8a, 0x2d, 0x64, 0x39, 0xa3, 0x79, 0x5c, 0xe6, 0x3e, 0x1b, 0x39,
0x7e, 0xad, 0xc5, 0x28, 0x97, 0xf9, 0xdc, 0xb9, 0xda, 0xb6, 0x70, 0xeb, 0xe7, 0xeb, 0x58, 0x48,
0x83, 0x15, 0xaa, 0x54, 0xc2, 0xb0, 0x6b, 0x49, 0xa7, 0xc9, 0x30, 0xcd, 0x2f, 0x35, 0x9e, 0xc4,
0x31, 0x1d, 0x27, 0xdb, 0xe0, 0x76, 0x48, 0x66, 0x55, 0xe4, 0x57, 0x94, 0x2d, 0x8d, 0xef, 0x4c,
0xaf, 0xe4, 0xdd, 0xa4, 0x51, 0xce, 0x29, 0x2b, 0xad, 0xeb, 0xa1, 0xd5, 0xb9, 0x9b, 0x8d, 0x8d,
0x10, 0xf3, 0xae, 0x23, 0xf9, 0xdd, 0xd5, 0xac, 0x02, 0xce, 0xa0, 0x77, 0x39, 0x77, 0xe8, 0xf1,
0x5b, 0x3e, 0x7b, 0x2d, 0x53, 0x05, 0x98, 0x58, 0x5d, 0xdf, 0xd9, 0x4f, 0x9b, 0xaa, 0x55, 0x89,
0xda, 0xc0, 0x51, 0xe3, 0xc3, 0x0f, 0xe7, 0x33, 0xba, 0x69, 0x57, 0xed, 0x76, 0xfb, 0xf8, 0x3f,
0xef, 0xaa, 0xff, 0x68, 0xa4, 0xd8, 0x6c, 0x12, 0x4b, 0x7b, 0x8f, 0x6a, 0x57, 0xde, 0x00, 0xf7,
0x3b, 0xe8, 0x0c, 0xa0, 0x5f, 0x0b, 0x7e, 0x70, 0x5e, 0x23, 0xa7, 0x71, 0xba, 0xf6, 0x44, 0x3d,
0xa8, 0x8f, 0x05, 0x93, 0xae, 0xe3, 0x40, 0x55, 0x5b, 0xa5, 0xcf, 0xf3, 0x32, 0x43, 0xff, 0xed,
0x3e, 0xc4, 0x9b, 0xe8, 0x7a, 0x26, 0x56, 0x56, 0x3b, 0x65, 0x26, 0xac, 0x7a, 0xbb, 0x8f, 0x84,
0xd4, 0x2c, 0xd2, 0xcf, 0xbe, 0xbb, 0x7b, 0x8d, 0xe6, 0x18, 0x13, 0x61, 0xed, 0x02, 0x88, 0xe4,
0x41, 0xf0, 0x26, 0x46, 0xe5, 0x75, 0xee, 0x54, 0x11, 0x56, 0x95, 0xcf, 0x40, 0x7f, 0xa6, 0xe1,
0x1a, 0xcb, 0x14, 0x69, 0x72, 0x6e, 0xe3, 0xcf, 0x6f, 0x81, 0x53, 0x48, 0x4e, 0x57, 0xd1, 0x10,
0xa5, 0xc6, 0xaf, 0x32, 0x74, 0x6d, 0x8c, 0x9c, 0xd9, 0x1d, 0x14, 0xe8, 0x3a, 0xb8, 0x35, 0xcd,
0x90, 0x0c, 0x28, 0x93, 0xd3, 0x60, 0xff, 0xe8, 0xe8, 0x3c, 0xf1, 0xe1, 0xaf, 0x81, 0xe1, 0x72,
0xc3, 0xaa, 0xa1, 0x1b, 0xb0, 0x2f, 0x80, 0x49, 0xed, 0xa9, 0x0b, 0x30, 0xbd, 0x68, 0x62, 0x2e,
0xaa, 0xab, 0x5f, 0xfe, 0xac, 0x3d, 0x7e, 0x34, 0x39, 0xeb, 0x15, 0x29, 0x49, 0x47, 0x40, 0xd4,
0x34, 0xf1, 0x49, 0x47, 0xc1, 0x1a, 0xff, 0x72, 0x9b, 0x5c, 0x72, 0x39, 0x84, 0xac, 0x79, 0x77,
0xe0, 0xa7, 0xed, 0x7f, 0x57, 0xe0, 0x65, 0x22, 0xaf, 0x7d, 0x80, 0xf4, 0xc5, 0x42, 0xd2, 0x75,
0x26, 0xa5, 0x4d, 0x9a, 0x49, 0xcc, 0x3f, 0x21, 0x1d, 0x0f, 0x8b, 0x45, 0xad, 0x6c, 0xe0, 0x8b,
0xb7, 0x51, 0x2f, 0x42, 0x48, 0x3a, 0x2b, 0x26, 0xf4, 0xb6, 0xd8, 0xd3, 0xb6, 0xc5, 0xce, 0xfb,
0x9a, 0x82, 0x07, 0xed, 0xe0, 0x98, 0x76, 0x08, 0xb6, 0x5a, 0x77, 0x19, 0xef, 0x88, 0x9f, 0x9d,
0xc6, 0xf6, 0x0d, 0x17, 0xe1, 0x8b, 0x37, 0x6f, 0xba, 0x1b, 0x9d, 0x5b, 0x67, 0x6d, 0xce, 0x76,
0x6b, 0x27, 0x94, 0x4f, 0x40, 0x47, 0x76, 0xde, 0x97, 0x66, 0xf1, 0xab, 0x77, 0x73, 0xeb, 0x4e,
0x6c, 0xac, 0x1b, 0x96, 0x00, 0xaf, 0xc7, 0xb1, 0xa5, 0x7e, 0xfa, 0xcf, 0xfc, 0x18, 0x1d, 0xe3,
0x73, 0xf0, 0x36, 0x72, 0x94, 0x0a, 0x7b, 0x64, 0x7f, 0xe5, 0xda, 0xea, 0x07, 0x64, 0x6d, 0x17,
0x3f, 0xda, 0xc0, 0x82, 0x4a, 0x9e, 0x7f, 0x9b, 0x83, 0xb3, 0x38, 0x85, 0x00, 0x16, 0x76, 0x42,
0x9f, 0x00, 0xdb, 0xae, 0x5d, 0x7d, 0xe4, 0xeb, 0xec, 0xc0, 0x79, 0x29, 0x56, 0x07, 0x80, 0xfd,
0xcf, 0xcc, 0xf3, 0x88, 0x6f, 0x89, 0x77, 0xe6, 0x3d, 0x4a, 0xc2, 0x36, 0x29, 0x68, 0x7e, 0x08,
0xfc, 0x39, 0xdf, 0xc8, 0xe2, 0x2d, 0x7f, 0x31, 0xdf, 0xe1, 0x2f, 0x9a, 0x04, 0xd4, 0x79, 0x6a,
0x97, 0x3d, 0x50, 0xd2, 0x69, 0x94, 0x7b, 0x96, 0xdf, 0x8f, 0x3a, 0x66, 0x20, 0x00, 0x21, 0xfc,
0x0e, 0x4f, 0x32, 0xd9, 0x91, 0x87, 0x62, 0xf5, 0x44, 0x5b, 0x7e, 0xbe, 0x23, 0xd5, 0xa9, 0xbc,
0xc9, 0x8e, 0x9a, 0x48, 0xa0, 0x49, 0xd6, 0x4d, 0xb6, 0xfa, 0x10, 0xe8, 0x09, 0x48, 0xc5, 0xdf,
0xac, 0x91, 0x9f, 0x60, 0xe2, 0x0f, 0x39, 0xd2, 0xff, 0xb9, 0xd8, 0xff, 0x07, 0xff, 0x03, 0x8d,
0x05, 0x6d, 0x6c, 0x00, 0x00
};

View File

@ -8,7 +8,7 @@
// Autogenerated from wled00/data/style.css, do not edit!!
const uint16_t PAGE_settingsCss_length = 888;
const uint8_t PAGE_settingsCss[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x56, 0x51, 0x8b, 0xab, 0x38,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x56, 0x51, 0x8b, 0xab, 0x38,
0x14, 0xfe, 0x2b, 0x2e, 0x65, 0x60, 0x2e, 0x54, 0x51, 0xab, 0x9d, 0xde, 0xc8, 0xc2, 0xb2, 0xef,
0xf7, 0x6d, 0x58, 0x16, 0x96, 0x79, 0x88, 0xe6, 0x58, 0x43, 0x63, 0x22, 0x49, 0xbc, 0xb5, 0x23,
0xfe, 0xf7, 0x4d, 0xa2, 0x8e, 0xb6, 0x23, 0x73, 0x5f, 0x2e, 0xa5, 0x25, 0xe6, 0xc4, 0xe4, 0x3b,
@ -70,7 +70,7 @@ const uint8_t PAGE_settingsCss[] PROGMEM = {
// Autogenerated from wled00/data/settings.htm, do not edit!!
const uint16_t PAGE_settings_length = 1115;
const uint8_t PAGE_settings[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xb5, 0x56, 0xdb, 0x52, 0xe3, 0x46,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xb5, 0x56, 0xdb, 0x52, 0xe3, 0x46,
0x10, 0x7d, 0xf7, 0x57, 0x0c, 0xb3, 0x15, 0x56, 0x2a, 0x64, 0xf9, 0x42, 0x2a, 0x95, 0xc8, 0x96,
0xa9, 0x2c, 0x97, 0x8d, 0x53, 0x50, 0x4b, 0x05, 0x58, 0x92, 0x4a, 0xf2, 0x30, 0xd6, 0xb4, 0xac,
0x59, 0xa4, 0x19, 0xd5, 0x4c, 0xcb, 0xe0, 0xb0, 0xfc, 0x7b, 0x7a, 0x64, 0x63, 0x60, 0xe1, 0x21,
@ -144,157 +144,165 @@ const uint8_t PAGE_settings[] PROGMEM = {
// Autogenerated from wled00/data/settings_wifi.htm, do not edit!!
const uint16_t PAGE_settings_wifi_length = 2269;
const uint16_t PAGE_settings_wifi_length = 2387;
const uint8_t PAGE_settings_wifi[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xb5, 0x58, 0x6d, 0x73, 0xdb, 0xb8,
0x11, 0xfe, 0xae, 0x5f, 0x01, 0xa3, 0x1d, 0x0f, 0x39, 0xa6, 0x29, 0xc9, 0x4a, 0x72, 0xa9, 0x2c,
0x2a, 0xf5, 0x8b, 0x2e, 0x76, 0xeb, 0x73, 0xd4, 0xca, 0xbd, 0x4c, 0x27, 0xcd, 0xdc, 0xd1, 0xe4,
0x4a, 0x42, 0x4c, 0x01, 0x2c, 0x01, 0x4a, 0xf6, 0xd8, 0xfe, 0xef, 0xdd, 0x05, 0x48, 0xbd, 0xd9,
0x4e, 0x3b, 0x19, 0x77, 0x32, 0x49, 0x48, 0x60, 0xb1, 0xfb, 0xec, 0xdb, 0x83, 0xa5, 0x7a, 0x3b,
0xa7, 0x9f, 0x4e, 0xae, 0xfe, 0x39, 0x1c, 0xb0, 0xa9, 0x99, 0x65, 0xfd, 0x1e, 0xfd, 0xcb, 0xb2,
0x58, 0x4e, 0x22, 0x0e, 0x92, 0xe3, 0x3b, 0xc4, 0x69, 0xbf, 0x37, 0x03, 0x13, 0xb3, 0x64, 0x1a,
0x17, 0x1a, 0x4c, 0xc4, 0x4b, 0x33, 0xde, 0x7f, 0xcf, 0xab, 0xd5, 0x86, 0x8c, 0x67, 0x10, 0xf1,
0xb9, 0x80, 0x45, 0xae, 0x0a, 0xc3, 0x59, 0xa2, 0xa4, 0x01, 0x89, 0x62, 0x0b, 0x91, 0x9a, 0x69,
0xf4, 0xb6, 0xd5, 0x5a, 0x8a, 0x6e, 0x6d, 0xa5, 0x30, 0x17, 0x09, 0xec, 0xdb, 0x97, 0x40, 0x48,
0x61, 0x44, 0x9c, 0xed, 0xeb, 0x24, 0xce, 0x20, 0x6a, 0x07, 0xb3, 0xf8, 0x56, 0xcc, 0xca, 0xd9,
0xf2, 0xbd, 0xd4, 0x50, 0xd8, 0x97, 0xf8, 0x1a, 0xdf, 0xa5, 0xe2, 0x4f, 0x2c, 0xf7, 0x7b, 0x46,
0x98, 0x0c, 0xfa, 0x9f, 0xc5, 0xcf, 0x82, 0x8d, 0xc0, 0x18, 0x21, 0x27, 0xba, 0xd7, 0x74, 0x8b,
0x3d, 0x9d, 0x14, 0x22, 0x37, 0xfd, 0xc6, 0x3c, 0x2e, 0x58, 0xa6, 0x12, 0x91, 0x07, 0x69, 0x94,
0xaa, 0xa4, 0x9c, 0x21, 0xa0, 0x00, 0x17, 0xa2, 0x9d, 0x36, 0xfd, 0x97, 0x17, 0xca, 0xa8, 0x88,
0x4f, 0x8d, 0xc9, 0xbb, 0x3c, 0x40, 0x7b, 0xf2, 0x42, 0xa9, 0x5c, 0x47, 0xad, 0x20, 0x2f, 0x60,
0x84, 0xaf, 0xa3, 0xd1, 0xf9, 0x69, 0xc4, 0xf9, 0xe1, 0xb8, 0x94, 0x89, 0x11, 0x4a, 0xb2, 0xc9,
0x79, 0xea, 0x19, 0xff, 0xbe, 0x00, 0x53, 0x16, 0x92, 0xa5, 0xe1, 0x04, 0xcc, 0x20, 0x03, 0x52,
0x7b, 0x7c, 0x67, 0xb7, 0x1e, 0x97, 0xa2, 0xc9, 0x60, 0x43, 0x32, 0x29, 0x20, 0x36, 0x50, 0x09,
0x6f, 0x08, 0x9e, 0x79, 0xfe, 0xfd, 0x42, 0xc8, 0x54, 0x2d, 0x42, 0x95, 0x83, 0xf4, 0x2c, 0x1e,
0xdd, 0x6d, 0x36, 0x6f, 0xa4, 0x0a, 0x17, 0x19, 0x90, 0x95, 0xe6, 0x18, 0x4f, 0x97, 0x05, 0xe8,
0xa6, 0xae, 0x7c, 0x6d, 0xfe, 0x61, 0x21, 0xc6, 0x62, 0xbf, 0x7e, 0xe5, 0x6b, 0x0a, 0x8f, 0xb7,
0x14, 0x22, 0xc8, 0x7f, 0xfc, 0xfd, 0xc2, 0xe3, 0xcd, 0x95, 0x70, 0xc0, 0x7f, 0xd3, 0x90, 0x8d,
0xd7, 0x4f, 0x5d, 0xe2, 0x29, 0xcc, 0x99, 0x36, 0xcc, 0x44, 0xe4, 0x26, 0xa7, 0x78, 0x70, 0xff,
0xd0, 0x84, 0xa9, 0xd0, 0x94, 0x87, 0x34, 0xda, 0x69, 0x05, 0x26, 0x34, 0x70, 0x6b, 0x4e, 0xea,
0xdc, 0x52, 0x90, 0x24, 0xaa, 0x0c, 0xc3, 0x90, 0x07, 0x63, 0x30, 0xc9, 0x74, 0x65, 0xed, 0x9b,
0x56, 0xb2, 0x29, 0xc1, 0x70, 0xdf, 0x0f, 0xcd, 0x14, 0x71, 0x98, 0xa8, 0x6f, 0x42, 0x5a, 0xf5,
0xd6, 0x56, 0x3e, 0x5d, 0x7f, 0x83, 0xc4, 0x84, 0xb1, 0xd6, 0x62, 0x22, 0xbd, 0xfb, 0xc7, 0xe0,
0x1e, 0x8f, 0x2c, 0x54, 0x71, 0xa3, 0xbb, 0x5f, 0xbe, 0x3e, 0x06, 0xc6, 0x0f, 0xeb, 0xf7, 0x50,
0x63, 0xe2, 0x3d, 0xcf, 0x04, 0xe0, 0x47, 0x7d, 0x08, 0x0b, 0x3c, 0xb1, 0x6f, 0xec, 0x7f, 0x7e,
0x58, 0x40, 0x5a, 0x26, 0x50, 0x6f, 0x7a, 0x06, 0x65, 0x67, 0xe0, 0x0c, 0xe2, 0x7e, 0x1a, 0x45,
0x11, 0xd8, 0x07, 0xff, 0xe1, 0xc1, 0x84, 0x79, 0xa9, 0xa7, 0x1e, 0xf8, 0xa8, 0x3b, 0xf8, 0xf2,
0xb5, 0x86, 0x02, 0x51, 0xff, 0x5e, 0x8c, 0xbd, 0x96, 0x15, 0xcd, 0x40, 0x4e, 0xcc, 0x74, 0x77,
0x77, 0x59, 0x12, 0xbd, 0x76, 0xcb, 0xaf, 0x52, 0xb9, 0x5c, 0xdb, 0xdb, 0x0b, 0xe6, 0x4a, 0xa4,
0x0c, 0xa3, 0x7a, 0x25, 0x66, 0xa0, 0x4a, 0xe3, 0x5d, 0x06, 0x6d, 0xe8, 0xf8, 0x87, 0x6b, 0x95,
0x74, 0x98, 0x81, 0x61, 0xd2, 0x05, 0xf4, 0x64, 0x84, 0xe1, 0x44, 0x1b, 0xd2, 0xbf, 0xa7, 0x55,
0x13, 0x61, 0x89, 0x70, 0x4c, 0x03, 0xfa, 0x6f, 0xe3, 0x8c, 0x8a, 0x8e, 0x8c, 0x29, 0xc4, 0x75,
0x69, 0xc0, 0xe3, 0x22, 0xe5, 0x81, 0x3d, 0x12, 0x6c, 0xef, 0x50, 0x2b, 0xbc, 0xb4, 0xa7, 0x24,
0x76, 0xae, 0x9c, 0xd0, 0xfe, 0x95, 0xe7, 0xa3, 0xc0, 0x7a, 0x25, 0xcb, 0x70, 0x1e, 0x67, 0x25,
0x1c, 0x8e, 0x55, 0xe1, 0x11, 0x02, 0x40, 0x7c, 0xd0, 0x33, 0x61, 0x32, 0x15, 0x59, 0x5a, 0x80,
0xac, 0xfc, 0x3e, 0x84, 0xbd, 0x3d, 0x1f, 0x23, 0x0b, 0x33, 0x35, 0x87, 0x13, 0xda, 0xf3, 0x56,
0x32, 0x5f, 0xe0, 0xab, 0xbf, 0x54, 0xa0, 0x50, 0x81, 0xea, 0xd5, 0xf1, 0x3a, 0x54, 0x78, 0xae,
0xaa, 0x21, 0x61, 0x9d, 0x53, 0x39, 0x95, 0x16, 0x79, 0xbd, 0x05, 0xd3, 0xe2, 0xe0, 0x01, 0x7c,
0x51, 0x5f, 0x5d, 0x5e, 0x02, 0xb1, 0x51, 0x58, 0xbf, 0xff, 0xf1, 0x7e, 0xb9, 0xf7, 0xc8, 0xbc,
0xea, 0x8d, 0x72, 0xfd, 0xc8, 0xd2, 0xe3, 0x99, 0xff, 0xfb, 0xea, 0x28, 0x26, 0xac, 0xf2, 0x6b,
0x77, 0x77, 0xdb, 0x8c, 0x0b, 0x2e, 0x50, 0x24, 0x97, 0x8f, 0x14, 0xb3, 0x38, 0xc7, 0xbe, 0x48,
0x9d, 0x6b, 0xc2, 0x7f, 0x74, 0x90, 0xd5, 0x26, 0x64, 0xf5, 0x3c, 0x64, 0xbe, 0x73, 0x42, 0xfd,
0xa3, 0x36, 0xfb, 0xe0, 0x13, 0xd6, 0x50, 0xc1, 0xaa, 0x4a, 0xb5, 0xcd, 0xb0, 0x69, 0x44, 0xf9,
0x81, 0xc4, 0x80, 0xe6, 0x59, 0x9c, 0xc0, 0x67, 0x61, 0xa6, 0x44, 0x00, 0xeb, 0x8d, 0xd5, 0x7e,
0xae, 0xb1, 0xf8, 0xe3, 0x5a, 0x7b, 0x62, 0x36, 0xab, 0xaa, 0xd9, 0xa8, 0xa5, 0x1d, 0xf3, 0xf0,
0x60, 0x21, 0xed, 0x44, 0xc6, 0x45, 0xa1, 0xaa, 0xd3, 0x43, 0x97, 0x60, 0x72, 0x49, 0xc8, 0xbc,
0xa4, 0x0a, 0x83, 0xd0, 0xdc, 0xe5, 0x48, 0xa2, 0x64, 0x08, 0x63, 0x1f, 0x62, 0xec, 0x48, 0x0f,
0x3e, 0x39, 0x72, 0x75, 0xcf, 0x9b, 0x5e, 0x23, 0x33, 0xbb, 0xe4, 0xf2, 0xa0, 0x73, 0xe0, 0xe3,
0xb6, 0xb5, 0x11, 0xad, 0x55, 0x55, 0x60, 0x36, 0x1c, 0x83, 0x35, 0xcc, 0x99, 0x8a, 0xd3, 0xbf,
0x8c, 0xa8, 0x29, 0x91, 0x3a, 0x1c, 0x7c, 0xe9, 0x8a, 0xde, 0xf2, 0x33, 0x42, 0x92, 0xdb, 0x09,
0x2b, 0x12, 0x4e, 0x7d, 0xb9, 0xbd, 0x4e, 0xc0, 0x31, 0xf6, 0x84, 0xbc, 0xf9, 0x2d, 0x9e, 0xc7,
0xb5, 0x82, 0x27, 0x82, 0xb1, 0xbe, 0x93, 0xa8, 0x02, 0xbb, 0x3b, 0x0d, 0xaf, 0x55, 0x7a, 0xb7,
0x91, 0x05, 0x49, 0xf2, 0x71, 0x9a, 0x0e, 0xe6, 0x18, 0xe3, 0x0b, 0xa1, 0x31, 0xd4, 0x50, 0x78,
0x9c, 0x60, 0xf2, 0xc0, 0x43, 0xe2, 0xb8, 0xff, 0x08, 0xe6, 0x57, 0xcf, 0x7f, 0x7c, 0x5e, 0x0e,
0x8a, 0x42, 0x15, 0x08, 0x0f, 0xe5, 0xa8, 0x62, 0x54, 0x86, 0x85, 0xaf, 0x26, 0x1e, 0x1f, 0xd0,
0x3a, 0xab, 0xfc, 0x45, 0x32, 0x64, 0x63, 0x91, 0x81, 0x75, 0x03, 0x6f, 0x33, 0xa4, 0x2c, 0x7e,
0x51, 0xad, 0xab, 0x31, 0x5d, 0x98, 0x63, 0x31, 0x29, 0x8b, 0xd8, 0x06, 0xc8, 0xb9, 0xc1, 0xc6,
0xb1, 0x20, 0x9a, 0xff, 0x97, 0x3c, 0x97, 0x89, 0x9a, 0xe5, 0x18, 0x27, 0x60, 0x79, 0x3c, 0x01,
0x96, 0xc6, 0x26, 0xde, 0x41, 0x92, 0x5e, 0x8b, 0xe9, 0x68, 0x59, 0x07, 0x15, 0xc5, 0xe3, 0x3d,
0x66, 0x95, 0x51, 0x35, 0x70, 0xb2, 0xdc, 0xe5, 0x11, 0xd6, 0x82, 0xbd, 0xdb, 0x12, 0x95, 0xf9,
0xf6, 0xba, 0x6b, 0x05, 0x9e, 0xbd, 0x07, 0x23, 0x92, 0xce, 0x46, 0x46, 0x15, 0xa8, 0x9e, 0x6e,
0xaf, 0x73, 0x03, 0x33, 0x8a, 0x40, 0x72, 0x9e, 0x23, 0x4f, 0x3f, 0x3c, 0x54, 0x62, 0x78, 0x7a,
0x96, 0x23, 0xf2, 0x9f, 0x51, 0x1f, 0xfb, 0x45, 0xa5, 0x10, 0xb2, 0x61, 0x06, 0xb1, 0x06, 0x86,
0x11, 0xc1, 0x4a, 0xff, 0x7c, 0x31, 0x38, 0x65, 0xe7, 0x43, 0xc4, 0x16, 0x6c, 0x68, 0xd4, 0x9b,
0x1a, 0x03, 0xab, 0xcd, 0xc7, 0xd2, 0xcb, 0x34, 0xdc, 0xbb, 0x8a, 0x44, 0x68, 0xb1, 0x99, 0x52,
0xc5, 0x05, 0x92, 0x58, 0x39, 0xc3, 0xb1, 0xc0, 0x6b, 0x63, 0x65, 0x61, 0x9a, 0xb4, 0x2d, 0x21,
0xde, 0xe4, 0xfe, 0x87, 0xfd, 0x76, 0xd7, 0xb2, 0x6b, 0xcb, 0x0f, 0x75, 0x9e, 0x09, 0x63, 0x57,
0x0f, 0x6b, 0x8a, 0xea, 0x1f, 0xec, 0xee, 0x7a, 0xcb, 0x1b, 0x7c, 0xe5, 0x6d, 0x50, 0x79, 0xeb,
0xbc, 0x30, 0xe1, 0x54, 0x69, 0x43, 0xa6, 0xf6, 0x90, 0xc1, 0x68, 0x6e, 0xf8, 0xc0, 0xbb, 0x7c,
0xcf, 0x3d, 0x76, 0x39, 0xf7, 0xf7, 0x50, 0xe9, 0x9e, 0xfc, 0xd2, 0xfa, 0xea, 0x3f, 0x56, 0xb5,
0xfa, 0xe4, 0xae, 0x6c, 0x6a, 0xbc, 0xb2, 0x3e, 0xe4, 0x51, 0x1b, 0x5d, 0xdd, 0x69, 0x5b, 0x77,
0xd1, 0x74, 0x1a, 0x8e, 0xc6, 0x61, 0x6c, 0x33, 0x12, 0x3d, 0x3d, 0x42, 0x37, 0x33, 0x46, 0x73,
0x95, 0xb4, 0x4a, 0x64, 0x39, 0x0f, 0x10, 0xf4, 0x0f, 0x35, 0x7c, 0x04, 0x81, 0x28, 0x2c, 0x62,
0x8b, 0xc9, 0x3c, 0x36, 0x7a, 0xcd, 0x6a, 0x82, 0xe9, 0x69, 0x73, 0x87, 0x03, 0xcd, 0x9f, 0xc5,
0x8c, 0x20, 0xb3, 0xb2, 0xc8, 0xb0, 0x47, 0x68, 0x29, 0x4c, 0x34, 0xd2, 0xd0, 0x21, 0x0a, 0x5a,
0x81, 0x5e, 0xd3, 0xcd, 0x6e, 0x54, 0xf2, 0x58, 0x89, 0xe4, 0x0c, 0x72, 0x08, 0x5e, 0x00, 0xfd,
0x1e, 0x72, 0xf5, 0xac, 0xc1, 0xa8, 0xd7, 0xe9, 0xe9, 0x37, 0xcd, 0x99, 0xeb, 0xf6, 0xd1, 0x98,
0x33, 0x9c, 0xd4, 0xa6, 0x0a, 0x77, 0x72, 0x0c, 0x13, 0x8a, 0xa6, 0x62, 0xce, 0x92, 0x0c, 0xaf,
0x62, 0xe4, 0x08, 0x85, 0xd8, 0x16, 0x9b, 0x6b, 0x53, 0xc8, 0xf2, 0x63, 0xde, 0x6f, 0xf4, 0xb0,
0xd5, 0x0c, 0x7a, 0xe5, 0xd8, 0xc4, 0xbd, 0x70, 0xb4, 0x9a, 0x60, 0x2a, 0x6f, 0x22, 0x7e, 0x46,
0x66, 0x3f, 0xf4, 0x9a, 0x6e, 0x03, 0xa1, 0xa1, 0x8a, 0xfe, 0xf3, 0x67, 0x1a, 0xcb, 0x43, 0xc7,
0x74, 0xe8, 0x38, 0x4e, 0x6e, 0x56, 0xe7, 0x36, 0x4e, 0xe8, 0xf2, 0x7a, 0x26, 0x10, 0xe3, 0x28,
0x9e, 0x03, 0xdb, 0x65, 0xc8, 0x93, 0x12, 0xe9, 0x7c, 0x25, 0x3c, 0x2d, 0x10, 0x97, 0xb3, 0x34,
0x3d, 0x70, 0x53, 0x21, 0xa6, 0xa3, 0xcc, 0x31, 0x30, 0x07, 0xb8, 0xd4, 0xe9, 0x57, 0x27, 0x98,
0x51, 0x0c, 0x6e, 0xb1, 0xa5, 0xa9, 0x1f, 0x2b, 0xbe, 0x46, 0x99, 0xce, 0xd2, 0x5c, 0x63, 0x13,
0x21, 0xc5, 0xcd, 0x0e, 0x42, 0x2b, 0xff, 0x2e, 0x09, 0x2a, 0xb1, 0xdf, 0x1a, 0x54, 0xb4, 0x7e,
0xe9, 0x94, 0xd9, 0xe8, 0x32, 0xcf, 0x32, 0x23, 0x03, 0x6c, 0xa2, 0x3b, 0x32, 0x29, 0x95, 0xa1,
0xd6, 0x27, 0x04, 0x7e, 0x97, 0xc4, 0x7b, 0x96, 0x94, 0xd9, 0x1a, 0x21, 0xb3, 0x8a, 0x8e, 0xeb,
0x51, 0x97, 0x1e, 0x97, 0xec, 0x1b, 0xf1, 0xce, 0x01, 0xb7, 0x76, 0x6a, 0x33, 0x39, 0xa6, 0x04,
0x1f, 0xd2, 0xa7, 0xda, 0xea, 0x9d, 0x95, 0xa6, 0xe1, 0x86, 0xa6, 0x77, 0x1d, 0xa7, 0x69, 0x64,
0x90, 0x37, 0x12, 0xec, 0x62, 0x86, 0x77, 0x39, 0x85, 0x35, 0x36, 0xac, 0x15, 0xda, 0x3f, 0x0c,
0x4b, 0x85, 0x9d, 0x9e, 0x9d, 0x0c, 0x37, 0xc0, 0x56, 0xea, 0xce, 0x5b, 0xbc, 0xb2, 0x24, 0xcb,
0xd9, 0x35, 0x14, 0xbc, 0xae, 0x0f, 0x2c, 0xad, 0x99, 0x90, 0x11, 0x6f, 0x59, 0x73, 0x11, 0x3f,
0x78, 0xfb, 0x96, 0xb3, 0x02, 0xfe, 0x5d, 0x0a, 0x1c, 0xcf, 0xfa, 0x2c, 0x64, 0x5b, 0x7a, 0xda,
0xaf, 0xa4, 0xe7, 0xe0, 0x95, 0xf4, 0x74, 0x7e, 0x48, 0xcf, 0x5a, 0x28, 0x27, 0x38, 0xe1, 0x2f,
0xe2, 0xbb, 0x6e, 0x63, 0x2d, 0x68, 0x4e, 0xf7, 0xc7, 0x1f, 0x8e, 0x59, 0x63, 0x53, 0xcf, 0x2b,
0xc5, 0xec, 0xe3, 0x2b, 0xc5, 0xec, 0xe3, 0x8f, 0xc7, 0xac, 0x51, 0x05, 0x0d, 0x3b, 0x1b, 0xfb,
0x10, 0xa5, 0xf4, 0x4d, 0xf7, 0x49, 0xdc, 0x46, 0xff, 0x43, 0xdc, 0x1a, 0xdf, 0x05, 0x5a, 0xe9,
0x69, 0xbf, 0x92, 0x9e, 0x83, 0x57, 0xd2, 0xd3, 0xf9, 0x31, 0x3d, 0x14, 0xa0, 0xd9, 0xe9, 0xe5,
0x88, 0xe1, 0x74, 0x82, 0x5f, 0x83, 0xba, 0x6e, 0x5d, 0x47, 0x34, 0xd4, 0xb5, 0x52, 0x31, 0x12,
0x70, 0x8d, 0x6b, 0xbf, 0x6c, 0x9b, 0xcd, 0xca, 0x76, 0x63, 0x83, 0x6e, 0x2a, 0x6e, 0xf8, 0xe5,
0x09, 0xcb, 0x30, 0x3b, 0x52, 0x64, 0x74, 0xfe, 0x24, 0x13, 0x78, 0xdf, 0x23, 0x45, 0x74, 0x59,
0x4f, 0xe7, 0xb1, 0x5c, 0xa2, 0x14, 0x39, 0xde, 0x03, 0x97, 0x2b, 0x52, 0x83, 0x14, 0x6f, 0x22,
0x14, 0xb0, 0x00, 0x2b, 0xba, 0xb5, 0x73, 0x0e, 0xb0, 0xa3, 0x24, 0x21, 0xa0, 0x43, 0x25, 0xa4,
0xb1, 0x4c, 0xdb, 0x38, 0x1a, 0x32, 0xa2, 0xc7, 0x67, 0xb1, 0x1f, 0x0d, 0x5f, 0xe4, 0x47, 0x07,
0xf8, 0xe8, 0x29, 0x2d, 0xda, 0x76, 0x3b, 0x13, 0x29, 0xda, 0x1a, 0x5a, 0xa9, 0x2e, 0xdb, 0x38,
0x9e, 0x4c, 0x21, 0xb9, 0xb9, 0x56, 0xb7, 0x4b, 0x15, 0x67, 0x8e, 0x00, 0x09, 0x48, 0x4d, 0x96,
0x4f, 0xc1, 0xd0, 0xa7, 0xb3, 0xff, 0x3d, 0x76, 0xad, 0x94, 0x0d, 0x5d, 0xa6, 0xd6, 0xd8, 0x15,
0x95, 0x1a, 0x1c, 0x92, 0x30, 0x8b, 0x5e, 0x78, 0xff, 0x3e, 0x78, 0xd7, 0x79, 0xf4, 0x1f, 0xf0,
0xce, 0x60, 0xf6, 0xc7, 0x89, 0x88, 0x0f, 0xac, 0x09, 0xb4, 0x80, 0x89, 0x0e, 0xd9, 0x7b, 0xfb,
0x53, 0x0b, 0x8e, 0x12, 0x50, 0xe8, 0x1a, 0xd6, 0x5a, 0xc4, 0x98, 0xbd, 0xca, 0xe8, 0x9b, 0x4e,
0x42, 0xd6, 0xdd, 0x2c, 0xa2, 0xa3, 0x93, 0x17, 0x8a, 0xe8, 0xb6, 0xae, 0xa2, 0x76, 0x5d, 0x45,
0xed, 0xce, 0x56, 0x11, 0xa1, 0xeb, 0xe4, 0xa0, 0xa6, 0xc4, 0xda, 0x2f, 0xa3, 0x5a, 0x27, 0x5e,
0xf0, 0x3d, 0xf7, 0x0d, 0xc4, 0xdc, 0xa8, 0x8f, 0xa5, 0x48, 0xa9, 0xae, 0x33, 0x4d, 0x1b, 0xf1,
0x98, 0x66, 0xc0, 0x6b, 0xa5, 0x30, 0xa1, 0x4e, 0x76, 0xfb, 0x4c, 0x9b, 0xf7, 0x4f, 0x85, 0x5e,
0x2b, 0x8e, 0x2d, 0xb1, 0x46, 0x25, 0x87, 0xd9, 0x3b, 0xca, 0x90, 0x32, 0xf5, 0x4b, 0x8a, 0xf0,
0xae, 0xba, 0x84, 0x39, 0x5a, 0xf3, 0xe8, 0x0a, 0x2d, 0x00, 0xe7, 0xe3, 0x19, 0x0e, 0x8a, 0x90,
0xfa, 0xcb, 0x13, 0x34, 0x2d, 0x59, 0x17, 0x6a, 0xc7, 0x9e, 0x2f, 0x57, 0xaa, 0x56, 0x9a, 0xd8,
0xe6, 0xb0, 0x55, 0xaa, 0x83, 0xdb, 0x1c, 0x0a, 0x41, 0x3f, 0xcb, 0x60, 0xd1, 0xdb, 0x02, 0x3d,
0x75, 0xdf, 0x65, 0x2e, 0xf6, 0x3a, 0x03, 0xc8, 0xff, 0x4b, 0x45, 0x7d, 0x1e, 0xb9, 0xd4, 0xf5,
0x44, 0xbf, 0x71, 0x82, 0x76, 0x69, 0x52, 0x62, 0x0b, 0x9c, 0x65, 0x97, 0x51, 0x9b, 0x0b, 0xcc,
0xb9, 0xd0, 0xba, 0x04, 0x1d, 0xda, 0x24, 0x9f, 0xba, 0xa1, 0x00, 0xa4, 0xb5, 0x24, 0xc6, 0xce,
0x98, 0xd0, 0x8c, 0x6e, 0x77, 0x1a, 0x4e, 0x12, 0x55, 0xa0, 0xbb, 0x26, 0xbb, 0x0b, 0x98, 0x90,
0xf4, 0xeb, 0x91, 0x06, 0xcd, 0x72, 0xb5, 0xc0, 0x58, 0xd0, 0xd7, 0x47, 0x39, 0xb3, 0xde, 0x87,
0xbd, 0xa6, 0xb0, 0x43, 0x9a, 0x1b, 0xf1, 0x70, 0x9e, 0x4b, 0xb9, 0xf3, 0x8a, 0xbe, 0x48, 0x89,
0x58, 0xaf, 0x10, 0xb1, 0x9b, 0x70, 0x36, 0x12, 0x3d, 0xb8, 0x3a, 0x7b, 0x2e, 0xd3, 0x97, 0x4a,
0x42, 0xe3, 0xa5, 0x64, 0xfc, 0x09, 0xb3, 0x75, 0x7c, 0xb2, 0xe3, 0xa6, 0xff, 0x5f, 0xdf, 0x74,
0x70, 0x10, 0xa3, 0xef, 0x15, 0xa4, 0x71, 0xf4, 0xe1, 0xa5, 0x43, 0xd4, 0xa0, 0x83, 0xd1, 0xb0,
0x73, 0xb0, 0x3f, 0xfc, 0x34, 0x78, 0x49, 0xe8, 0x1d, 0xef, 0x5b, 0x99, 0x53, 0x28, 0x6f, 0x5f,
0x92, 0xf9, 0x89, 0xf7, 0xff, 0x7a, 0x7e, 0xb5, 0xff, 0xeb, 0xe0, 0x45, 0x7c, 0xef, 0x79, 0xff,
0x6f, 0xa5, 0x90, 0x88, 0x6e, 0xff, 0x54, 0x4c, 0xf6, 0x3f, 0x25, 0x26, 0x46, 0x88, 0x57, 0xfb,
0xe8, 0xeb, 0xb3, 0xc6, 0xeb, 0x2a, 0x7c, 0xb3, 0x3a, 0x67, 0x51, 0xbc, 0x58, 0xd5, 0x18, 0xa0,
0x11, 0x14, 0x93, 0x9f, 0xde, 0x90, 0xca, 0x67, 0xe4, 0x6a, 0x85, 0x6f, 0x79, 0xff, 0x6a, 0x21,
0x32, 0x31, 0x99, 0x9a, 0x0b, 0xe4, 0x8a, 0xef, 0x6b, 0xc5, 0x12, 0xff, 0xfc, 0xbc, 0x40, 0x63,
0xd5, 0x4d, 0x9f, 0xaf, 0x30, 0x80, 0x68, 0xb4, 0xd5, 0x5e, 0x49, 0xad, 0x97, 0xbd, 0xfd, 0x5b,
0xcd, 0xbf, 0xc5, 0xff, 0x7d, 0xda, 0x6e, 0xd2, 0xa7, 0x04, 0x35, 0x1e, 0x7d, 0x6f, 0xd0, 0xc7,
0x07, 0xfd, 0x9c, 0xfc, 0x1f, 0x82, 0xf2, 0xab, 0x04, 0x5e, 0x16, 0x00, 0x00
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xb5, 0x58, 0xff, 0x53, 0xdb, 0x3a,
0x12, 0xff, 0x3d, 0x7f, 0x85, 0xd0, 0xdd, 0x30, 0xf6, 0xe0, 0x38, 0x09, 0x69, 0xfb, 0x7a, 0x21,
0x4e, 0x0f, 0x42, 0x5e, 0xe1, 0x1e, 0x85, 0x5c, 0xc3, 0x95, 0xb9, 0xe1, 0x3a, 0xef, 0x19, 0x5b,
0x49, 0x54, 0x1c, 0xc9, 0xcf, 0x92, 0x13, 0x18, 0xc8, 0xff, 0x7e, 0xbb, 0x92, 0x9d, 0xc4, 0x01,
0xda, 0x9b, 0x0e, 0x37, 0x9d, 0x29, 0xb6, 0xb5, 0xda, 0xfd, 0xec, 0xb7, 0x8f, 0x56, 0xe9, 0xee,
0x1c, 0x5f, 0xf4, 0x2f, 0xff, 0x3d, 0x1c, 0x90, 0xa9, 0x9e, 0x25, 0xbd, 0x2e, 0xfe, 0x4f, 0x92,
0x50, 0x4c, 0x02, 0xca, 0x04, 0x85, 0x77, 0x16, 0xc6, 0xbd, 0xee, 0x8c, 0xe9, 0x90, 0x44, 0xd3,
0x30, 0x53, 0x4c, 0x07, 0x34, 0xd7, 0xe3, 0xfa, 0x7b, 0x5a, 0x7c, 0xad, 0x89, 0x70, 0xc6, 0x02,
0x3a, 0xe7, 0x6c, 0x91, 0xca, 0x4c, 0x53, 0x12, 0x49, 0xa1, 0x99, 0x00, 0xb1, 0x05, 0x8f, 0xf5,
0x34, 0x78, 0xdb, 0x6c, 0xae, 0x44, 0xb7, 0x96, 0x62, 0x36, 0xe7, 0x11, 0xab, 0x9b, 0x17, 0x8f,
0x0b, 0xae, 0x79, 0x98, 0xd4, 0x55, 0x14, 0x26, 0x2c, 0x68, 0x79, 0xb3, 0xf0, 0x8e, 0xcf, 0xf2,
0xd9, 0xea, 0x3d, 0x57, 0x2c, 0x33, 0x2f, 0xe1, 0x0d, 0xbc, 0x0b, 0x49, 0x9f, 0x58, 0xee, 0x75,
0x35, 0xd7, 0x09, 0xeb, 0x5d, 0xf1, 0x5f, 0x39, 0x19, 0x31, 0xad, 0xb9, 0x98, 0xa8, 0x6e, 0xc3,
0x7e, 0xec, 0xaa, 0x28, 0xe3, 0xa9, 0xee, 0xd5, 0xe6, 0x61, 0x46, 0x12, 0x19, 0xf1, 0xd4, 0x8b,
0x83, 0x58, 0x46, 0xf9, 0x0c, 0x00, 0x79, 0xf0, 0x21, 0xd8, 0x69, 0xe1, 0x9f, 0x34, 0x93, 0x5a,
0x06, 0x74, 0xaa, 0x75, 0xda, 0xa1, 0x1e, 0xd8, 0x13, 0x67, 0x52, 0xa6, 0x2a, 0x68, 0x7a, 0x69,
0xc6, 0x46, 0xf0, 0x3a, 0x1a, 0x9d, 0x1e, 0x07, 0x94, 0x1e, 0x8c, 0x73, 0x11, 0x69, 0x2e, 0x05,
0x99, 0x9c, 0xc6, 0x8e, 0x76, 0x1f, 0x32, 0xa6, 0xf3, 0x4c, 0x90, 0xd8, 0x9f, 0x30, 0x3d, 0x48,
0x18, 0xaa, 0x3d, 0xba, 0x37, 0x4b, 0xcb, 0x95, 0x68, 0x34, 0xa8, 0x48, 0x46, 0x19, 0x0b, 0x35,
0x2b, 0x84, 0x2b, 0x82, 0x27, 0x8e, 0xfb, 0xb0, 0xe0, 0x22, 0x96, 0x0b, 0x5f, 0xa6, 0x4c, 0x38,
0x06, 0x8f, 0xea, 0x34, 0x1a, 0xb7, 0x42, 0xfa, 0x8b, 0x84, 0xa1, 0x95, 0xc6, 0x18, 0x76, 0xe7,
0x19, 0x53, 0x0d, 0x55, 0xf8, 0xda, 0xf8, 0xcb, 0x82, 0x8f, 0x79, 0xbd, 0x7c, 0xa5, 0x1b, 0x0a,
0x8f, 0xb6, 0x14, 0x02, 0xc8, 0x7f, 0x7d, 0x3e, 0x73, 0x68, 0x63, 0x2d, 0xec, 0xd1, 0xdf, 0x15,
0x4b, 0xc6, 0x9b, 0xbb, 0xce, 0x61, 0x17, 0xe4, 0x4c, 0x69, 0xa2, 0x03, 0x74, 0x93, 0x62, 0x3c,
0xa8, 0x7b, 0xa0, 0xfd, 0x98, 0x2b, 0xcc, 0x43, 0x1c, 0xec, 0x34, 0x3d, 0xed, 0x6b, 0x76, 0xa7,
0xfb, 0x65, 0x6e, 0x31, 0x48, 0x02, 0x54, 0xfa, 0xbe, 0x4f, 0xbd, 0x31, 0xd3, 0xd1, 0x74, 0x6d,
0xed, 0x9b, 0x92, 0xa2, 0x21, 0x98, 0xa6, 0xae, 0xeb, 0xeb, 0x29, 0xe0, 0xd0, 0x41, 0x4f, 0xfb,
0xf8, 0xd5, 0xd9, 0xf8, 0x72, 0x71, 0xf3, 0x8d, 0x45, 0xda, 0x0f, 0x95, 0xe2, 0x13, 0xe1, 0x3c,
0x2c, 0xbd, 0x07, 0xd8, 0xb2, 0x90, 0xd9, 0xad, 0xea, 0x5c, 0x7f, 0x5d, 0x7a, 0xda, 0xf5, 0xcb,
0x77, 0x5f, 0x41, 0xe2, 0x1d, 0x47, 0x7b, 0xcc, 0x0d, 0x7a, 0xcc, 0xcf, 0x60, 0x47, 0x5d, 0x9b,
0x3f, 0xae, 0x9f, 0xb1, 0x38, 0x8f, 0x58, 0xb9, 0xe8, 0x68, 0x90, 0x9d, 0x31, 0x6b, 0x10, 0xd6,
0xe3, 0x20, 0x08, 0x98, 0x79, 0x70, 0x1f, 0x1f, 0xb5, 0x9f, 0xe6, 0x6a, 0xea, 0x30, 0x17, 0x74,
0x7b, 0xd7, 0x5f, 0x4b, 0x28, 0x2c, 0xe8, 0x3d, 0xf0, 0xb1, 0xd3, 0x34, 0xa2, 0x09, 0x13, 0x13,
0x3d, 0xdd, 0xdd, 0x5d, 0x95, 0x44, 0xb7, 0xd5, 0x74, 0x8b, 0x54, 0xae, 0xbe, 0xed, 0xed, 0x79,
0x73, 0xc9, 0x63, 0x02, 0x51, 0xbd, 0xe4, 0x33, 0x26, 0x73, 0xed, 0x9c, 0x7b, 0x2d, 0xd6, 0x76,
0x0f, 0x36, 0x2a, 0xe9, 0x20, 0x61, 0x9a, 0x08, 0x1b, 0xd0, 0xfe, 0x08, 0xc2, 0x09, 0x36, 0x84,
0xfb, 0x80, 0x5f, 0x75, 0x00, 0x25, 0x42, 0x21, 0x0d, 0xe0, 0xbf, 0x89, 0x33, 0x28, 0x3a, 0xd4,
0x3a, 0xe3, 0x37, 0xb9, 0x66, 0x0e, 0xe5, 0x31, 0xf5, 0xcc, 0x16, 0x6f, 0x7b, 0x05, 0x5b, 0xe1,
0xa5, 0x35, 0x29, 0xa0, 0x73, 0xc5, 0x04, 0xd7, 0x2f, 0x1d, 0x17, 0x04, 0x36, 0x2b, 0x59, 0xf8,
0xf3, 0x30, 0xc9, 0xd9, 0xc1, 0x58, 0x66, 0x0e, 0x22, 0x60, 0x80, 0x8f, 0x75, 0xb5, 0x1f, 0x4d,
0x79, 0x12, 0x67, 0x4c, 0x14, 0x7e, 0x1f, 0xb0, 0xbd, 0x3d, 0x17, 0x22, 0xcb, 0x66, 0x72, 0xce,
0xfa, 0xb8, 0xe6, 0xac, 0x65, 0xae, 0xd9, 0x57, 0x77, 0xa5, 0x40, 0x82, 0x02, 0xd9, 0x2d, 0xe3,
0x75, 0x20, 0x61, 0x5f, 0x51, 0x43, 0xdc, 0x38, 0x27, 0x53, 0x2c, 0x2d, 0xf4, 0x7a, 0x0b, 0xa6,
0xc1, 0x41, 0x3d, 0x76, 0x2d, 0xbf, 0xda, 0xbc, 0x78, 0xbc, 0x52, 0x58, 0x7f, 0xfc, 0xf5, 0x61,
0xb5, 0xb6, 0x24, 0x4e, 0xf1, 0x86, 0xb9, 0x5e, 0x92, 0xf8, 0x68, 0xe6, 0xfe, 0xb1, 0xde, 0x0a,
0x09, 0x2b, 0xfc, 0xda, 0xdd, 0xdd, 0x36, 0x63, 0x83, 0xcb, 0x30, 0x92, 0xab, 0x47, 0x8c, 0x59,
0x98, 0x42, 0x5f, 0xc4, 0xd6, 0x35, 0xee, 0x2e, 0x2d, 0x64, 0x59, 0x85, 0x2c, 0x9f, 0x87, 0x4c,
0x77, 0xfa, 0xd8, 0x3f, 0xb2, 0xda, 0x07, 0x17, 0x50, 0x43, 0x19, 0x29, 0x2a, 0xd5, 0x34, 0x43,
0xd5, 0x88, 0x74, 0x3d, 0x01, 0x01, 0x4d, 0x93, 0x30, 0x62, 0x57, 0x5c, 0x4f, 0x91, 0x00, 0x36,
0x1b, 0xab, 0xf5, 0x5c, 0x63, 0xd1, 0xe5, 0x46, 0x7b, 0x42, 0x36, 0x8b, 0xaa, 0xa9, 0xd4, 0xd2,
0x8e, 0x7e, 0x7c, 0x34, 0x90, 0x76, 0x02, 0x6d, 0xa3, 0x50, 0xd4, 0xe9, 0x81, 0x4d, 0x30, 0xba,
0xc4, 0x45, 0x9a, 0x63, 0x85, 0x31, 0x5f, 0xdf, 0xa7, 0x40, 0xa2, 0x68, 0x08, 0x62, 0xef, 0x43,
0xec, 0x50, 0x0f, 0x3c, 0x59, 0x72, 0xb5, 0xcf, 0x55, 0xaf, 0x81, 0x99, 0x6d, 0x72, 0xa9, 0xd7,
0xde, 0x77, 0x61, 0xd9, 0xd8, 0x08, 0x36, 0xaa, 0xca, 0xd3, 0x15, 0xc7, 0xd8, 0x06, 0xe6, 0x44,
0x86, 0xf1, 0x3f, 0x46, 0xd8, 0x94, 0x40, 0x1d, 0x16, 0xbe, 0xb0, 0x45, 0x6f, 0xf8, 0x19, 0x20,
0x89, 0xed, 0x84, 0x65, 0x11, 0xc5, 0xbe, 0xdc, 0xfe, 0x8e, 0xc0, 0x21, 0xf6, 0x88, 0xbc, 0xf1,
0x2d, 0x9c, 0x87, 0xa5, 0x82, 0x27, 0x82, 0xa1, 0xba, 0x17, 0xa0, 0x02, 0xba, 0x3b, 0xf6, 0x6f,
0x64, 0x7c, 0x5f, 0xc9, 0x82, 0x40, 0xf9, 0x30, 0x8e, 0x07, 0x73, 0x88, 0xf1, 0x19, 0x57, 0x10,
0x6a, 0x96, 0x39, 0x14, 0x61, 0x52, 0xcf, 0x01, 0xe2, 0x78, 0xf8, 0xc8, 0xf4, 0x17, 0xc7, 0x5d,
0x3e, 0x2f, 0xc7, 0xb2, 0x4c, 0x66, 0x00, 0x0f, 0xe4, 0xb0, 0x62, 0x64, 0x02, 0x85, 0x2f, 0x27,
0x0e, 0x1d, 0xe0, 0x77, 0x52, 0xf8, 0x0b, 0x64, 0x48, 0xc6, 0x3c, 0x61, 0xc6, 0x0d, 0x38, 0xcd,
0x80, 0xb2, 0xe8, 0x59, 0xf1, 0x5d, 0x8e, 0xf1, 0xc0, 0x1c, 0xf3, 0x49, 0x9e, 0x85, 0x26, 0x40,
0xd6, 0x0d, 0x32, 0x0e, 0x39, 0xd2, 0xfc, 0x7f, 0xc4, 0xa9, 0x88, 0xe4, 0x2c, 0x85, 0x38, 0x31,
0x92, 0x86, 0x13, 0x46, 0xe2, 0x50, 0x87, 0x3b, 0x40, 0xd2, 0x1b, 0x31, 0x1d, 0xad, 0xea, 0xa0,
0xa0, 0x78, 0x38, 0xc7, 0x8c, 0x32, 0xac, 0x06, 0x8a, 0x96, 0x3b, 0x34, 0x80, 0x5a, 0x30, 0x67,
0x5b, 0x24, 0x13, 0xd7, 0x1c, 0x77, 0x4d, 0xcf, 0x31, 0xe7, 0x60, 0x80, 0xd2, 0xc9, 0x48, 0xcb,
0x0c, 0xd4, 0xe3, 0xe9, 0x75, 0xaa, 0xd9, 0x0c, 0x23, 0x10, 0x9d, 0xa6, 0xc0, 0xd3, 0x8f, 0x8f,
0x85, 0x18, 0xec, 0x9e, 0xa5, 0x80, 0xfc, 0x57, 0xd0, 0x47, 0x3e, 0xc9, 0x98, 0xf9, 0x64, 0x98,
0xb0, 0x50, 0x31, 0x02, 0x11, 0x81, 0x4a, 0xbf, 0x3a, 0x1b, 0x1c, 0x93, 0xd3, 0x21, 0x60, 0xf3,
0x2a, 0x1a, 0x55, 0x55, 0xa3, 0x67, 0xb4, 0xb9, 0x50, 0x7a, 0x89, 0x62, 0x0f, 0xb6, 0x22, 0x01,
0x5a, 0xa8, 0xa7, 0x58, 0x71, 0x9e, 0x40, 0x56, 0x4e, 0x60, 0x2c, 0x70, 0x5a, 0x50, 0x59, 0x90,
0x26, 0x65, 0x4a, 0x88, 0x36, 0xa8, 0xfb, 0xa1, 0xde, 0xea, 0x18, 0x76, 0x6d, 0xba, 0xbe, 0x4a,
0x13, 0xae, 0xcd, 0xd7, 0x83, 0x92, 0xa2, 0x7a, 0xfb, 0xbb, 0xbb, 0xce, 0xea, 0x04, 0x5f, 0x7b,
0xeb, 0x15, 0xde, 0x5a, 0x2f, 0xb4, 0x3f, 0x95, 0x4a, 0xa3, 0xa9, 0x3d, 0x60, 0x30, 0x9c, 0x1b,
0x3e, 0xd0, 0x0e, 0xdd, 0xb3, 0x8f, 0x1d, 0x4a, 0xdd, 0x3d, 0x50, 0xba, 0x27, 0xae, 0x9b, 0x5f,
0xdd, 0x65, 0x51, 0xab, 0x4f, 0xce, 0xca, 0x86, 0x82, 0x23, 0xeb, 0x43, 0x1a, 0xb4, 0xc0, 0xd5,
0x9d, 0x96, 0x71, 0x17, 0x4c, 0xc7, 0xfe, 0x68, 0xec, 0x87, 0x26, 0x23, 0xc1, 0xd3, 0x2d, 0x78,
0x32, 0x43, 0x34, 0xd7, 0x49, 0x2b, 0x44, 0x56, 0xf3, 0x00, 0x42, 0xff, 0x50, 0xc2, 0x07, 0x10,
0x80, 0xc2, 0x20, 0x36, 0x98, 0xf4, 0xb2, 0xd6, 0x6d, 0x14, 0x13, 0x4c, 0x57, 0xe9, 0x7b, 0x18,
0x68, 0xfe, 0xce, 0x67, 0x08, 0x99, 0xe4, 0x59, 0x02, 0x3d, 0x82, 0x9f, 0xfc, 0x48, 0x01, 0x0d,
0x1d, 0x80, 0xa0, 0x11, 0xe8, 0x36, 0xec, 0xec, 0x86, 0x25, 0x0f, 0x95, 0x88, 0xce, 0x00, 0x87,
0xc0, 0x01, 0xd0, 0xeb, 0x02, 0x57, 0xcf, 0x6a, 0x04, 0x7b, 0x1d, 0x9f, 0x7e, 0x57, 0x94, 0xd8,
0x6e, 0x1f, 0x8d, 0x29, 0x81, 0x49, 0x6d, 0x2a, 0x61, 0x25, 0x85, 0x30, 0x81, 0x68, 0xcc, 0xe7,
0x24, 0x4a, 0xe0, 0x28, 0x06, 0x8e, 0x90, 0x80, 0x6d, 0x51, 0xfd, 0x36, 0x65, 0x49, 0x7a, 0x44,
0x7b, 0xb5, 0x2e, 0xb4, 0x9a, 0x06, 0xaf, 0x2c, 0x9b, 0xd8, 0x17, 0x0a, 0x56, 0x23, 0x48, 0xe5,
0x6d, 0x40, 0x4f, 0xd0, 0xec, 0x87, 0x6e, 0xc3, 0x2e, 0x00, 0x34, 0x50, 0xd1, 0x7b, 0x7e, 0x4f,
0x6d, 0xb5, 0xe9, 0x08, 0x37, 0x1d, 0x85, 0xd1, 0xed, 0x7a, 0x5f, 0x65, 0x87, 0xca, 0x6f, 0x66,
0x1c, 0x30, 0x8e, 0xc2, 0x39, 0x23, 0xbb, 0x04, 0x78, 0x52, 0x00, 0x9d, 0xaf, 0x85, 0xa7, 0x19,
0xe0, 0xb2, 0x96, 0xa6, 0xfb, 0x76, 0x2a, 0x84, 0x74, 0xe4, 0x29, 0x04, 0x66, 0x1f, 0x3e, 0xb5,
0x7b, 0xc5, 0x0e, 0xa2, 0x25, 0x61, 0x77, 0xd0, 0xd2, 0xd8, 0x8f, 0x05, 0x5f, 0x83, 0x4c, 0x7b,
0x65, 0xae, 0x56, 0x45, 0x88, 0x71, 0x33, 0x83, 0xd0, 0xda, 0xbf, 0x73, 0x84, 0x8a, 0xec, 0xb7,
0x01, 0x15, 0xac, 0x9f, 0x5b, 0x65, 0x26, 0xba, 0xc4, 0x31, 0xcc, 0x48, 0x18, 0x34, 0xd1, 0x3d,
0x9a, 0x14, 0x52, 0x63, 0xeb, 0x23, 0x02, 0xb7, 0x83, 0xe2, 0x5d, 0x43, 0xca, 0x64, 0x83, 0x90,
0x49, 0x41, 0xc7, 0xe5, 0xa8, 0x8b, 0x8f, 0x2b, 0xf6, 0x0d, 0x68, 0x7b, 0x9f, 0x1a, 0x3b, 0xa5,
0x99, 0x14, 0x52, 0x02, 0x0f, 0xf1, 0x53, 0x6d, 0xe5, 0xca, 0x5a, 0xd3, 0xb0, 0xa2, 0xe9, 0x5d,
0xdb, 0x6a, 0x1a, 0x69, 0xe0, 0x8d, 0x08, 0xba, 0x98, 0xc0, 0x59, 0x8e, 0x61, 0x0d, 0x35, 0x69,
0xfa, 0xe6, 0x1f, 0x81, 0x52, 0x21, 0xc7, 0x27, 0xfd, 0x61, 0x05, 0x6c, 0xa1, 0xee, 0xb4, 0x49,
0x0b, 0x4b, 0x22, 0x9f, 0xdd, 0xb0, 0x8c, 0x96, 0xf5, 0x01, 0xa5, 0x35, 0xe3, 0x22, 0xa0, 0x4d,
0x63, 0x2e, 0xa0, 0xfb, 0x6f, 0xdf, 0x52, 0x92, 0xb1, 0x3f, 0x73, 0x0e, 0xe3, 0x59, 0x8f, 0xf8,
0x64, 0x4b, 0x4f, 0xeb, 0x95, 0xf4, 0xec, 0xbf, 0x92, 0x9e, 0xf6, 0x4f, 0xe9, 0xd9, 0x08, 0xe5,
0x04, 0x26, 0xfc, 0x45, 0x78, 0xdf, 0xa9, 0x6d, 0x04, 0xcd, 0xea, 0xfe, 0xf8, 0xd3, 0x31, 0xab,
0x55, 0xf5, 0xbc, 0x52, 0xcc, 0x3e, 0xbe, 0x52, 0xcc, 0x3e, 0xfe, 0x7c, 0xcc, 0x6a, 0x45, 0xd0,
0xa0, 0xb3, 0xa1, 0x0f, 0x41, 0x4a, 0xdd, 0x76, 0x9e, 0xc4, 0x6d, 0xf4, 0x3f, 0xc4, 0xad, 0xf6,
0x5d, 0xa0, 0x85, 0x9e, 0xd6, 0x2b, 0xe9, 0xd9, 0x7f, 0x25, 0x3d, 0xed, 0x9f, 0xd3, 0x83, 0x01,
0x9a, 0x1d, 0x9f, 0x8f, 0x08, 0x4c, 0x27, 0x70, 0x1b, 0x54, 0x65, 0xeb, 0x5a, 0xa2, 0xc1, 0xae,
0x15, 0x92, 0xa0, 0x80, 0x6d, 0x5c, 0x73, 0xb3, 0x6d, 0x34, 0x0a, 0xdb, 0xb5, 0x0a, 0xdd, 0x14,
0xdc, 0xf0, 0xe9, 0x09, 0xcb, 0x10, 0x33, 0x52, 0x24, 0xb8, 0xbf, 0x9f, 0x70, 0x38, 0xef, 0x81,
0x22, 0x3a, 0xa4, 0xab, 0xd2, 0x50, 0xac, 0x50, 0xf2, 0x14, 0xce, 0x81, 0xf3, 0x35, 0xa9, 0xb1,
0x18, 0x4e, 0x22, 0x10, 0x30, 0x00, 0x0b, 0xba, 0x35, 0x73, 0x0e, 0x23, 0x87, 0x51, 0x84, 0x40,
0x87, 0x92, 0x0b, 0x6d, 0x98, 0xb6, 0x76, 0x38, 0x24, 0x48, 0x8f, 0xcf, 0x62, 0x3f, 0x1c, 0xbe,
0xc8, 0x8f, 0x16, 0xf0, 0xe1, 0x53, 0x5a, 0x34, 0xed, 0x76, 0xc2, 0x63, 0xb0, 0x35, 0x34, 0x52,
0x1d, 0x52, 0xd9, 0x1e, 0x4d, 0x59, 0x74, 0x7b, 0x23, 0xef, 0x56, 0x2a, 0x4e, 0x2c, 0x01, 0x22,
0x90, 0x92, 0x2c, 0x9f, 0x82, 0xc1, 0xab, 0xb3, 0xfb, 0x3d, 0x76, 0x2d, 0x94, 0x0d, 0x6d, 0xa6,
0x36, 0xd8, 0x15, 0x94, 0x6a, 0x18, 0x92, 0x20, 0x8b, 0x8e, 0xff, 0xf0, 0xde, 0x7b, 0xd7, 0x5e,
0xba, 0x8f, 0x70, 0x66, 0x10, 0xf3, 0xe3, 0x44, 0x40, 0x07, 0xc6, 0x04, 0x58, 0x80, 0x44, 0xfb,
0xe4, 0xbd, 0xf9, 0xa9, 0x05, 0x46, 0x09, 0x96, 0xa9, 0x12, 0xd6, 0x46, 0xc4, 0x88, 0x39, 0xca,
0xf0, 0x4e, 0x27, 0x58, 0xd2, 0xa9, 0x16, 0xd1, 0x61, 0xff, 0x85, 0x22, 0xba, 0x2b, 0xab, 0xa8,
0x55, 0x56, 0x51, 0xab, 0xbd, 0x55, 0x44, 0xe0, 0x3a, 0x3a, 0xa8, 0x30, 0xb1, 0xe6, 0x66, 0x54,
0xea, 0x84, 0x03, 0xbe, 0x6b, 0xef, 0x40, 0xc4, 0x8e, 0xfa, 0x50, 0x8a, 0x98, 0xea, 0x32, 0xd3,
0xb8, 0x10, 0x8e, 0x71, 0x06, 0xbc, 0x91, 0x12, 0x12, 0x6a, 0x65, 0xb7, 0xf7, 0xb4, 0x68, 0xef,
0x98, 0xab, 0x8d, 0xe2, 0xd8, 0x12, 0xab, 0x15, 0x72, 0x90, 0xbd, 0xc3, 0x04, 0x28, 0x53, 0xbd,
0xa4, 0x08, 0xce, 0xaa, 0x73, 0x36, 0x07, 0x6b, 0x0e, 0x1e, 0xa1, 0x19, 0x83, 0xf9, 0x78, 0x06,
0x83, 0x22, 0x8b, 0xdd, 0xd5, 0x0e, 0x9c, 0x96, 0x8c, 0x0b, 0xa5, 0x63, 0xcf, 0x97, 0x2b, 0x56,
0x2b, 0x4e, 0x6c, 0x73, 0xb6, 0x55, 0xaa, 0x83, 0xbb, 0x94, 0x65, 0x1c, 0x7f, 0x96, 0x81, 0xa2,
0x37, 0x05, 0x7a, 0x6c, 0xef, 0x65, 0x36, 0xf6, 0x2a, 0x61, 0x2c, 0xfd, 0x41, 0x45, 0x5d, 0x8d,
0x6c, 0xea, 0xba, 0xbc, 0x57, 0xeb, 0x83, 0x5d, 0x9c, 0x94, 0xc8, 0x02, 0x66, 0xd9, 0x55, 0xd4,
0xe6, 0x1c, 0x72, 0xce, 0x95, 0xca, 0x99, 0xf2, 0x4d, 0x92, 0x8f, 0xed, 0x50, 0xc0, 0x84, 0xb1,
0xc4, 0xc7, 0xd6, 0x18, 0x57, 0x04, 0x4f, 0x77, 0x1c, 0x4e, 0x22, 0x99, 0x81, 0xbb, 0x3a, 0xb9,
0xf7, 0x08, 0x17, 0xf8, 0xeb, 0x91, 0x62, 0x8a, 0xa4, 0x72, 0x01, 0xb1, 0xc0, 0xdb, 0x47, 0x3e,
0x33, 0xde, 0xfb, 0xdd, 0x06, 0x37, 0x43, 0x9a, 0x1d, 0xf1, 0xe0, 0xce, 0x1e, 0x53, 0xe3, 0xd5,
0x15, 0xa4, 0x3a, 0xc1, 0x32, 0xfa, 0x0c, 0xd7, 0x78, 0xcd, 0xec, 0x8c, 0xc3, 0x7b, 0xf6, 0x36,
0x63, 0x0a, 0x9c, 0xe1, 0xed, 0x46, 0x11, 0x89, 0xd1, 0x1d, 0x8c, 0x86, 0xf5, 0xf3, 0x8b, 0x2b,
0x83, 0xec, 0x37, 0xf0, 0x97, 0x94, 0x57, 0x53, 0x44, 0x86, 0x38, 0x73, 0x85, 0x98, 0x42, 0x92,
0x19, 0x6d, 0x3f, 0x80, 0x84, 0x91, 0x00, 0x58, 0xb5, 0x81, 0x75, 0xce, 0x22, 0xf8, 0x41, 0x08,
0x3f, 0x0f, 0x6c, 0x08, 0x4f, 0xc2, 0x2c, 0x5e, 0x84, 0xc0, 0x1b, 0x9f, 0x0e, 0xfb, 0xab, 0x2d,
0xb5, 0xa7, 0x3c, 0xf0, 0x19, 0xd6, 0xed, 0x8e, 0xb3, 0x10, 0x2e, 0xef, 0x23, 0xc6, 0xc4, 0x56,
0xd6, 0xb3, 0x84, 0xc7, 0x98, 0x76, 0x51, 0x49, 0xb8, 0x99, 0x11, 0x6b, 0x66, 0xac, 0xc5, 0x80,
0xc1, 0x00, 0x5c, 0x04, 0x6c, 0x80, 0x57, 0x78, 0x3c, 0x89, 0x2e, 0xc1, 0x96, 0x0d, 0x57, 0xa5,
0x33, 0x06, 0x97, 0x27, 0xcf, 0xb5, 0x06, 0xea, 0xaf, 0xbd, 0x54, 0xbd, 0x7f, 0x83, 0xf2, 0x3e,
0xea, 0xef, 0xd8, 0xeb, 0xd2, 0x97, 0x37, 0x6d, 0x98, 0x5c, 0xf1, 0x82, 0x07, 0xe7, 0x1e, 0xc4,
0xe5, 0xa5, 0x4d, 0xc8, 0x68, 0x90, 0x8f, 0xf6, 0x7e, 0x7d, 0x78, 0x31, 0x78, 0x49, 0xe8, 0x1d,
0xed, 0x19, 0x99, 0x63, 0x96, 0xdf, 0xbd, 0x24, 0xf3, 0x0b, 0xed, 0xfd, 0x76, 0x7a, 0x59, 0xff,
0x32, 0x78, 0x11, 0xdf, 0x7b, 0xda, 0xfb, 0x67, 0xce, 0x05, 0xa0, 0xab, 0x1f, 0xf3, 0x49, 0xfd,
0x22, 0xd2, 0x21, 0x40, 0xbc, 0xac, 0x83, 0xaf, 0xcf, 0x1a, 0x2f, 0xdb, 0xf6, 0xcd, 0x7a, 0x9f,
0x41, 0xf1, 0x22, 0x0d, 0x40, 0x80, 0x46, 0x2c, 0x9b, 0xfc, 0xf2, 0x06, 0x55, 0x3e, 0x23, 0x57,
0x2a, 0x7c, 0x4b, 0x7b, 0x97, 0x0b, 0x9e, 0xf0, 0xc9, 0x54, 0x9f, 0x01, 0xb9, 0x7e, 0x5f, 0x2b,
0x70, 0xc2, 0xd5, 0xf3, 0x02, 0xb5, 0x35, 0xfd, 0x5c, 0x5d, 0x42, 0x00, 0xc1, 0x68, 0xb3, 0xb5,
0x96, 0xda, 0xe4, 0x89, 0x75, 0x31, 0xe0, 0xdd, 0xe1, 0xff, 0x7d, 0x3d, 0x69, 0xe0, 0xdd, 0x0b,
0x99, 0x0a, 0x2f, 0x68, 0x78, 0x5b, 0xc3, 0xdf, 0xdf, 0xff, 0x0b, 0x68, 0xad, 0xac, 0xd2, 0x8f,
0x17, 0x00, 0x00
};
// Autogenerated from wled00/data/settings_leds.htm, do not edit!!
const uint16_t PAGE_settings_leds_length = 8389;
const uint8_t PAGE_settings_leds[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xdd, 0x7d, 0xeb, 0x76, 0xdb, 0x38,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xdd, 0x7d, 0xeb, 0x76, 0xdb, 0x38,
0xd2, 0xe0, 0x7f, 0x3d, 0x05, 0x8d, 0xee, 0x76, 0xc8, 0x16, 0x25, 0x91, 0xb2, 0x95, 0x76, 0x24,
0x51, 0x5e, 0x5f, 0x92, 0xb4, 0xbf, 0xb1, 0x63, 0x1f, 0xdb, 0xe9, 0xcc, 0x77, 0xd2, 0xd9, 0x0e,
0x44, 0x41, 0x12, 0x63, 0x8a, 0xd4, 0x90, 0x94, 0x2f, 0x6b, 0x7b, 0x9f, 0x69, 0x9f, 0x61, 0x9f,
@ -825,7 +833,7 @@ const uint8_t PAGE_settings_leds[] PROGMEM = {
// Autogenerated from wled00/data/settings_dmx.htm, do not edit!!
const uint16_t PAGE_settings_dmx_length = 1751;
const uint8_t PAGE_settings_dmx[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x95, 0x57, 0x5b, 0x73, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x95, 0x57, 0x5b, 0x73, 0xdb, 0x36,
0x16, 0x7e, 0xd7, 0xaf, 0x40, 0xf0, 0x50, 0x93, 0x63, 0x86, 0x94, 0x9c, 0x55, 0xb7, 0x91, 0x44,
0x7a, 0x63, 0xc7, 0x6b, 0x7b, 0xc7, 0x76, 0x3d, 0x51, 0xd2, 0x74, 0xa7, 0xe9, 0x74, 0x20, 0x12,
0x12, 0x51, 0x93, 0x04, 0x17, 0x00, 0x25, 0xbb, 0x69, 0xfe, 0xfb, 0x7e, 0x00, 0xa9, 0x8b, 0x6f,
@ -941,7 +949,7 @@ const uint8_t PAGE_settings_dmx[] PROGMEM = {
// Autogenerated from wled00/data/settings_ui.htm, do not edit!!
const uint16_t PAGE_settings_ui_length = 3327;
const uint8_t PAGE_settings_ui[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x5a, 0x6b, 0x73, 0xdb, 0xb8,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x5a, 0x6b, 0x73, 0xdb, 0xb8,
0x15, 0xfd, 0xae, 0x5f, 0x81, 0x60, 0x77, 0xbc, 0xe2, 0x98, 0xa1, 0xe5, 0x6c, 0x3b, 0x4d, 0x24,
0x51, 0x6e, 0xe2, 0x64, 0x37, 0xee, 0x78, 0x37, 0x69, 0xe4, 0x74, 0xdb, 0x49, 0x33, 0x5e, 0x88,
0x84, 0x24, 0x6c, 0x28, 0x82, 0x25, 0x40, 0x3f, 0xaa, 0xd5, 0x7f, 0xef, 0xb9, 0x00, 0x29, 0x51,
@ -1155,7 +1163,7 @@ const uint8_t PAGE_settings_ui[] PROGMEM = {
// Autogenerated from wled00/data/settings_sync.htm, do not edit!!
const uint16_t PAGE_settings_sync_length = 3474;
const uint8_t PAGE_settings_sync[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x1a, 0x6b, 0x53, 0xdb, 0x48,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x9d, 0x1a, 0x6b, 0x53, 0xdb, 0x48,
0xf2, 0xbb, 0x7e, 0xc5, 0x44, 0x57, 0x95, 0xb5, 0x17, 0xe3, 0x07, 0x60, 0x42, 0xc0, 0x52, 0x0e,
0x30, 0x01, 0xdf, 0x41, 0xe2, 0xd8, 0xb0, 0xc9, 0xd6, 0xdd, 0xd5, 0xd6, 0x58, 0x1a, 0xdb, 0x03,
0x92, 0x46, 0xab, 0x19, 0xf1, 0xa8, 0x6c, 0xfe, 0xfb, 0x75, 0xcf, 0x48, 0xb2, 0x2d, 0xfc, 0xca,
@ -1379,7 +1387,7 @@ const uint8_t PAGE_settings_sync[] PROGMEM = {
// Autogenerated from wled00/data/settings_time.htm, do not edit!!
const uint16_t PAGE_settings_time_length = 3444;
const uint8_t PAGE_settings_time[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x38,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xd5, 0x1a, 0x6b, 0x57, 0xdb, 0x38,
0xf6, 0x7b, 0x7e, 0x85, 0x50, 0x7b, 0x18, 0x7b, 0x70, 0x9e, 0x90, 0x16, 0x92, 0xd8, 0x6c, 0x08,
0x69, 0xa1, 0x4d, 0x02, 0xa7, 0x49, 0x87, 0xdd, 0x3e, 0xce, 0x54, 0x89, 0x95, 0xc4, 0xe0, 0x48,
0x59, 0x5b, 0x26, 0xb0, 0x94, 0xff, 0xbe, 0x57, 0x92, 0xe3, 0x3c, 0x0d, 0x6d, 0x67, 0xf6, 0xc3,
@ -1601,7 +1609,7 @@ const uint8_t PAGE_settings_time[] PROGMEM = {
// Autogenerated from wled00/data/settings_sec.htm, do not edit!!
const uint16_t PAGE_settings_sec_length = 2563;
const uint8_t PAGE_settings_sec[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x9d, 0x58, 0x6d, 0x73, 0xdb, 0xb8,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x9d, 0x58, 0x6d, 0x73, 0xdb, 0xb8,
0x11, 0xfe, 0xae, 0x5f, 0x01, 0xe1, 0x66, 0x72, 0x64, 0x43, 0x53, 0xb2, 0x93, 0xde, 0xe4, 0x6c,
0x51, 0xae, 0x1d, 0x3b, 0x8d, 0x3b, 0x76, 0xec, 0xb1, 0xe4, 0x4b, 0x3b, 0x69, 0x26, 0x43, 0x91,
0x90, 0x88, 0x88, 0x22, 0x78, 0x00, 0x68, 0x45, 0xcd, 0xe5, 0xbf, 0xf7, 0x59, 0x90, 0xd4, 0x8b,
@ -1768,7 +1776,7 @@ const uint8_t PAGE_settings_sec[] PROGMEM = {
// Autogenerated from wled00/data/settings_um.htm, do not edit!!
const uint16_t PAGE_settings_um_length = 3306;
const uint8_t PAGE_settings_um[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xad, 0x59, 0x6d, 0x73, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xad, 0x59, 0x6d, 0x73, 0xdb, 0x36,
0x12, 0xfe, 0xee, 0x5f, 0x41, 0xa3, 0x19, 0x99, 0x1c, 0xd1, 0x94, 0x9c, 0xb6, 0x33, 0x39, 0x49,
0x94, 0x2e, 0x76, 0xdc, 0x46, 0x97, 0x17, 0x7b, 0xe2, 0xa4, 0x99, 0x1b, 0xc7, 0x17, 0x53, 0x22,
0x24, 0x21, 0xa6, 0x08, 0x96, 0x00, 0xed, 0xf8, 0x64, 0xfd, 0xf7, 0x7b, 0x16, 0x20, 0x29, 0xca,
@ -1981,7 +1989,7 @@ const uint8_t PAGE_settings_um[] PROGMEM = {
// Autogenerated from wled00/data/settings_2D.htm, do not edit!!
const uint16_t PAGE_settings_2D_length = 3296;
const uint8_t PAGE_settings_2D[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xc5, 0x5a, 0x5b, 0x77, 0xdb, 0x36,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xc5, 0x5a, 0x5b, 0x77, 0xdb, 0x36,
0x12, 0x7e, 0xd7, 0xaf, 0x80, 0xb1, 0x5d, 0x97, 0xb4, 0xa8, 0x9b, 0x9b, 0xf4, 0xb4, 0x92, 0x28,
0x35, 0x8e, 0xd3, 0xd8, 0x7b, 0xec, 0x44, 0xc7, 0x72, 0xed, 0xe4, 0xb4, 0x3d, 0x0d, 0x4d, 0x42,
0x12, 0x12, 0x0a, 0x60, 0x09, 0xd0, 0x97, 0x3a, 0xfe, 0xef, 0x3b, 0x03, 0xf0, 0xa6, 0x8b, 0x9d,
@ -2193,7 +2201,7 @@ const uint8_t PAGE_settings_2D[] PROGMEM = {
// Autogenerated from wled00/data/settings_pin.htm, do not edit!!
const uint16_t PAGE_settings_pin_length = 473;
const uint8_t PAGE_settings_pin[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0x5d, 0x52, 0x4d, 0x6f, 0x13, 0x31,
0x10, 0xbd, 0xef, 0xaf, 0x30, 0x73, 0x69, 0x82, 0x92, 0xdd, 0x50, 0x81, 0x04, 0xaa, 0xbd, 0x42,
0x81, 0x1e, 0xb8, 0x94, 0x48, 0xe5, 0x82, 0xaa, 0xaa, 0x72, 0xec, 0xd9, 0xc4, 0xaa, 0x3f, 0x16,
0xdb, 0x9b, 0x10, 0x2a, 0xfe, 0x3b, 0xe3, 0xdd, 0x50, 0x50, 0x2f, 0x6b, 0xbf, 0x99, 0xf1, 0x9b,

View File

@ -7,7 +7,7 @@
*/
// Autogenerated from wled00/data/simple.htm, do not edit!!
const uint16_t PAGE_simple_L = 18050;
const uint16_t PAGE_simple_L = 18061;
const uint8_t PAGE_simple[] PROGMEM = {
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xcd, 0x7d, 0x69, 0x77, 0xe2, 0xba,
0xb2, 0xe8, 0xf7, 0xfc, 0x0a, 0xda, 0x7d, 0x4e, 0x1a, 0x1f, 0x1c, 0x30, 0xf3, 0xd4, 0x24, 0x87,
@ -688,454 +688,454 @@ const uint8_t PAGE_simple[] PROGMEM = {
0x06, 0x51, 0xa0, 0xd0, 0x78, 0xbe, 0x0e, 0x92, 0x98, 0x78, 0x44, 0x0c, 0x5d, 0x93, 0xdc, 0x3e,
0xba, 0x08, 0x61, 0x7e, 0xe8, 0x79, 0x0e, 0x85, 0x24, 0xb3, 0x80, 0x35, 0x40, 0x99, 0x73, 0x0f,
0x06, 0x03, 0xe0, 0x96, 0xe3, 0x77, 0xb6, 0xb2, 0xb5, 0x91, 0xa9, 0xa9, 0x09, 0x11, 0x56, 0x89,
0x05, 0xa6, 0x01, 0x4d, 0xad, 0x07, 0xb6, 0xf3, 0x62, 0x80, 0xac, 0x0d, 0x48, 0xe8, 0x9b, 0x8e,
0x8b, 0x60, 0x53, 0x49, 0xc8, 0x34, 0x6d, 0x77, 0x07, 0xb4, 0x88, 0x14, 0x7b, 0x44, 0x7c, 0xc2,
0x2c, 0x31, 0x3d, 0x6e, 0x5b, 0x04, 0xfd, 0x99, 0xfb, 0xd2, 0x68, 0x98, 0x40, 0x23, 0x3b, 0x49,
0x0f, 0x3f, 0x14, 0x4a, 0xaa, 0x01, 0xad, 0xa4, 0x30, 0x9d, 0xaf, 0x79, 0xf6, 0x0c, 0xaa, 0x28,
0x7e, 0xab, 0x40, 0xee, 0xac, 0x34, 0x3f, 0x67, 0x94, 0xb8, 0x1a, 0x9b, 0x0b, 0xf5, 0x88, 0xc7,
0x49, 0x71, 0xf1, 0x15, 0x6d, 0x60, 0xab, 0x0e, 0x88, 0xdd, 0x23, 0x7b, 0x84, 0x58, 0xf8, 0x8b,
0x29, 0x4e, 0x74, 0x99, 0x25, 0x5d, 0x9e, 0xe7, 0xc1, 0x90, 0x7e, 0x21, 0xf7, 0x1d, 0x50, 0xb9,
0x16, 0x0a, 0x8b, 0xc0, 0x71, 0x11, 0xf5, 0xa8, 0x97, 0x86, 0xb5, 0xf3, 0xfb, 0x77, 0x60, 0x68,
0x81, 0xa9, 0xea, 0x0c, 0x07, 0x69, 0xab, 0x0f, 0x5d, 0x73, 0x32, 0xd9, 0x6a, 0x4e, 0xcc, 0x64,
0xc5, 0x8a, 0x18, 0x53, 0xaa, 0x68, 0x2d, 0xb6, 0x74, 0xcc, 0xa5, 0xf4, 0x7a, 0x97, 0xb8, 0x4a,
0x3f, 0x19, 0x10, 0x75, 0x1f, 0x77, 0x02, 0xa4, 0xa9, 0x93, 0x7e, 0x06, 0xa3, 0x0a, 0x70, 0x36,
0x1b, 0x10, 0xb7, 0x6f, 0xaa, 0x35, 0x0e, 0x4a, 0x70, 0x73, 0x1e, 0xeb, 0x1a, 0x49, 0x60, 0x13,
0x84, 0x16, 0x48, 0xf2, 0x8b, 0x94, 0x59, 0xdc, 0xfa, 0x80, 0x51, 0xa3, 0x09, 0x0c, 0x66, 0x08,
0x9f, 0x06, 0x0a, 0x85, 0x56, 0xe8, 0x4b, 0x08, 0x4d, 0xc3, 0x31, 0x81, 0x2d, 0xe8, 0x66, 0x0f,
0x56, 0x6a, 0xb8, 0xb5, 0x84, 0x6a, 0x12, 0x87, 0x1e, 0x08, 0xf2, 0xc2, 0x9c, 0x13, 0x12, 0x42,
0x4a, 0x80, 0x71, 0x13, 0x94, 0x4b, 0x78, 0x1e, 0x6f, 0x87, 0x32, 0x09, 0xa2, 0xa6, 0x39, 0x84,
0xde, 0xd5, 0x0c, 0x58, 0x78, 0x53, 0xf6, 0xbe, 0x3c, 0xdf, 0x94, 0x20, 0x0d, 0xdf, 0x6e, 0x14,
0x5c, 0x50, 0xe3, 0xdd, 0xef, 0x00, 0xc4, 0x57, 0xe4, 0x5d, 0x50, 0xe4, 0x3d, 0x46, 0x07, 0xe6,
0x17, 0x64, 0xfc, 0x70, 0x7f, 0x22, 0x2d, 0xd0, 0x39, 0x6c, 0x03, 0x3b, 0x7a, 0x24, 0xc0, 0xb2,
0xf9, 0x5a, 0x90, 0x03, 0x36, 0x86, 0x0f, 0x2d, 0xe9, 0x08, 0x5e, 0x72, 0xf6, 0xa7, 0xff, 0x94,
0xfb, 0x09, 0xcb, 0x60, 0x51, 0xc2, 0xc0, 0x17, 0x37, 0xc2, 0x4a, 0xa0, 0x3f, 0x74, 0x84, 0x49,
0x9f, 0xf8, 0x94, 0x57, 0x3c, 0x0f, 0xc5, 0xc9, 0x76, 0x03, 0x4c, 0x5b, 0xf2, 0x5d, 0x07, 0x34,
0x99, 0x7e, 0x17, 0x0a, 0x3f, 0xf9, 0x39, 0xa3, 0xcc, 0xcd, 0x4d, 0x8f, 0xf7, 0x03, 0xfb, 0xe0,
0xe7, 0xb8, 0x7a, 0x7c, 0x61, 0xb0, 0x34, 0xb3, 0xf5, 0x30, 0xbf, 0xe4, 0x90, 0x2b, 0xb5, 0x90,
0x29, 0x05, 0x36, 0x95, 0xd3, 0xa0, 0x12, 0x07, 0x43, 0x37, 0x60, 0x22, 0x90, 0x27, 0xd9, 0xc4,
0xf8, 0xc0, 0x68, 0x5a, 0x30, 0x6d, 0xea, 0xdf, 0xa2, 0xe1, 0x6f, 0x49, 0xd0, 0xa1, 0xf0, 0x7f,
0x1e, 0x4c, 0xa7, 0x70, 0xe8, 0xc6, 0xa7, 0xdf, 0xde, 0xc8, 0xbc, 0x39, 0xeb, 0x97, 0xcc, 0x25,
0x18, 0x2a, 0xc8, 0x4e, 0x24, 0xd5, 0xdb, 0xe3, 0x70, 0xd8, 0x8c, 0x86, 0x53, 0xd0, 0xbf, 0x96,
0xb4, 0x89, 0x6a, 0x4b, 0x63, 0x48, 0xba, 0xb4, 0xc9, 0x88, 0xd5, 0x68, 0x3f, 0x2c, 0xca, 0xb6,
0x1f, 0x68, 0x29, 0x0f, 0x14, 0x8b, 0xa5, 0x60, 0xb9, 0x51, 0x87, 0x01, 0xfd, 0x4f, 0x50, 0x57,
0x48, 0xc3, 0xc5, 0xb1, 0x32, 0xff, 0x0d, 0x93, 0xab, 0xfd, 0x14, 0xc2, 0x97, 0x6c, 0x60, 0x29,
0x31, 0x24, 0x8f, 0x02, 0xa1, 0xee, 0x4b, 0x42, 0x91, 0x1a, 0xc9, 0xfa, 0x2a, 0x63, 0x73, 0xe5,
0xbb, 0x20, 0x17, 0x13, 0x27, 0x21, 0xe9, 0xeb, 0xbc, 0xb4, 0xa2, 0x83, 0xf4, 0xfd, 0x0c, 0xe8,
0xcf, 0xc4, 0xb7, 0x53, 0x52, 0xa7, 0xe8, 0x2e, 0xdd, 0x5d, 0x06, 0xee, 0xb1, 0xae, 0x34, 0x9d,
0x95, 0x48, 0xd9, 0x90, 0xc7, 0xa4, 0x6f, 0x8e, 0x6f, 0x70, 0x2b, 0x07, 0xbd, 0x21, 0x0d, 0x18,
0xd4, 0x0c, 0x79, 0x16, 0x1b, 0x91, 0xb7, 0xf7, 0xc3, 0xaf, 0xa3, 0x0c, 0xff, 0x54, 0x9f, 0x0d,
0xba, 0x4d, 0x9d, 0x31, 0x19, 0x5a, 0x91, 0x6d, 0x0d, 0x51, 0x11, 0x8b, 0xb7, 0x9a, 0x1c, 0xde,
0x9c, 0x9d, 0x52, 0x49, 0xab, 0xf8, 0x7e, 0x91, 0x06, 0x30, 0x68, 0x7a, 0xbf, 0x2e, 0xb0, 0x69,
0xec, 0x00, 0x18, 0xa2, 0xb8, 0x59, 0xe7, 0xbf, 0x76, 0xd2, 0x73, 0x9a, 0x22, 0xdb, 0x66, 0x2d,
0x07, 0xb7, 0xec, 0x36, 0x3c, 0x63, 0xd9, 0x2b, 0xd1, 0x08, 0xbf, 0xab, 0x12, 0x67, 0xd9, 0x6b,
0x03, 0xc7, 0x0f, 0x72, 0x7d, 0x60, 0x8e, 0x40, 0x27, 0xa0, 0x0d, 0xf0, 0x73, 0x21, 0x57, 0x15,
0x81, 0x62, 0x61, 0x74, 0x61, 0x3e, 0x14, 0x47, 0xc5, 0x3e, 0xf6, 0x8a, 0xe1, 0x83, 0x9f, 0x8d,
0x9d, 0xcd, 0xcd, 0xb1, 0x13, 0x7a, 0xe1, 0x26, 0x70, 0xd7, 0x7b, 0x22, 0x77, 0xc0, 0xd6, 0x26,
0x6e, 0xfa, 0xe2, 0x72, 0xff, 0x1c, 0x50, 0x05, 0x05, 0x14, 0x74, 0x46, 0x03, 0x1d, 0x8c, 0x1d,
0xaa, 0xd0, 0x04, 0x9e, 0xca, 0xf4, 0xd8, 0xd9, 0xde, 0xca, 0x6e, 0x6e, 0x86, 0x7a, 0xc9, 0x58,
0xbd, 0x50, 0x84, 0xae, 0x00, 0xf9, 0x04, 0xb8, 0xe7, 0x5a, 0x80, 0x6b, 0xe2, 0x99, 0xb8, 0x66,
0x82, 0x1a, 0xc0, 0x89, 0xae, 0x04, 0x12, 0x58, 0xfd, 0xc2, 0x09, 0x28, 0x74, 0x16, 0x06, 0x2c,
0x62, 0x2a, 0xd2, 0xcd, 0x30, 0xce, 0x43, 0x38, 0x5e, 0x9d, 0x0c, 0xa3, 0xa1, 0xfb, 0xae, 0x49,
0x6f, 0x02, 0x40, 0xd0, 0xf0, 0x11, 0x25, 0xe5, 0x7a, 0x68, 0x20, 0x76, 0x3b, 0xae, 0x8d, 0xba,
0x0a, 0x93, 0x75, 0x54, 0x56, 0x1d, 0x81, 0xf2, 0x44, 0x50, 0xd5, 0x3c, 0x03, 0x19, 0x9e, 0xee,
0xea, 0x26, 0xd0, 0xaa, 0x9b, 0xa9, 0x94, 0x0a, 0x88, 0x56, 0x27, 0x9c, 0x9a, 0x74, 0xb7, 0x68,
0xf2, 0xbf, 0x4c, 0x3e, 0x93, 0x2f, 0x61, 0xb6, 0xb1, 0x3a, 0x7b, 0x0b, 0x73, 0xff, 0xe5, 0xf0,
0x99, 0x92, 0x88, 0x5c, 0xd4, 0xdc, 0x01, 0x45, 0x28, 0xc1, 0xa5, 0x92, 0xd9, 0x06, 0xfa, 0x47,
0x80, 0xed, 0x73, 0xe8, 0xd8, 0x9d, 0x02, 0x4b, 0x4b, 0x71, 0x42, 0x82, 0xc3, 0xfb, 0x29, 0x3c,
0x3f, 0x98, 0x9e, 0x6a, 0x38, 0xbf, 0x7f, 0x9b, 0x3b, 0x4e, 0x50, 0xc1, 0xd9, 0x01, 0x99, 0x32,
0x44, 0x8a, 0xc2, 0x2f, 0xa8, 0x02, 0xa5, 0x85, 0x2f, 0xc0, 0x4d, 0x1d, 0x14, 0xdd, 0x20, 0xdd,
0x01, 0x00, 0x4c, 0xff, 0x76, 0xb1, 0xba, 0xb9, 0xf9, 0xc5, 0x64, 0x69, 0x46, 0x8a, 0x06, 0x7f,
0x60, 0xfa, 0x77, 0xec, 0xca, 0xe6, 0x26, 0xcb, 0x0f, 0x95, 0xf7, 0xd2, 0x31, 0xc5, 0xdd, 0x2a,
0x89, 0xff, 0xc2, 0x2a, 0x0e, 0x41, 0xcb, 0x48, 0x0f, 0x79, 0xe9, 0x60, 0xb2, 0x6d, 0x73, 0x8c,
0x4b, 0x08, 0xf0, 0x03, 0x18, 0xf5, 0x74, 0xbc, 0x5f, 0xdf, 0x5d, 0x7b, 0xfb, 0xbb, 0xab, 0xfa,
0x3b, 0x0f, 0xf4, 0xdd, 0x02, 0xdc, 0xf6, 0x3f, 0x66, 0x64, 0xfe, 0x3d, 0xe3, 0xaa, 0xe1, 0x2c,
0xfa, 0x86, 0x00, 0xcc, 0x72, 0xe7, 0xa0, 0x21, 0x7b, 0xd9, 0x19, 0xa8, 0xfe, 0x6b, 0xd1, 0x8c,
0xe5, 0xf9, 0x14, 0xbd, 0x59, 0xf1, 0x22, 0xcb, 0x60, 0xfc, 0xc4, 0x47, 0x0b, 0x75, 0xb4, 0x6f,
0x6e, 0xd2, 0xaf, 0x1f, 0xe4, 0xe7, 0xe2, 0x29, 0x0d, 0xa9, 0x49, 0x98, 0xc8, 0xe0, 0x27, 0x0c,
0x2d, 0xec, 0x65, 0xbc, 0xd4, 0xa5, 0x29, 0xee, 0xa6, 0x84, 0x5c, 0x8d, 0x41, 0x59, 0xcb, 0xcb,
0x0b, 0x41, 0xf3, 0x93, 0xd2, 0x96, 0x13, 0xea, 0x9e, 0x64, 0x69, 0x77, 0x92, 0xee, 0x2b, 0xee,
0xb4, 0xf0, 0xef, 0xdf, 0x5f, 0xfc, 0x4a, 0x3c, 0x83, 0x0b, 0x73, 0xc8, 0xba, 0xef, 0x79, 0x3e,
0x61, 0xf4, 0x5a, 0xcf, 0x48, 0xe2, 0x56, 0x80, 0x5f, 0xd0, 0x1f, 0x8d, 0x9b, 0x06, 0x3d, 0x77,
0x87, 0x7e, 0xd6, 0x92, 0x2a, 0xc1, 0x37, 0xe1, 0x42, 0x9a, 0x21, 0x04, 0x8f, 0xd6, 0xe2, 0xf1,
0x55, 0x8f, 0xfb, 0xa3, 0xdc, 0xb0, 0x37, 0xea, 0x55, 0xf7, 0x71, 0xf7, 0x21, 0xa6, 0x5e, 0xf5,
0x9d, 0xd0, 0x33, 0xee, 0x13, 0x2c, 0xd6, 0x9e, 0xb5, 0x4b, 0x5f, 0xf7, 0xcc, 0x94, 0x0c, 0xba,
0xc0, 0x64, 0x05, 0x8d, 0x09, 0xe2, 0xdd, 0x14, 0x01, 0x4c, 0x80, 0x2a, 0xc2, 0x1d, 0xff, 0x3e,
0x29, 0xfa, 0x12, 0x60, 0x10, 0x9f, 0x55, 0xfa, 0x0f, 0x45, 0x0e, 0x99, 0x10, 0xa5, 0x65, 0x0e,
0x06, 0x20, 0x55, 0x90, 0xc5, 0x5a, 0x53, 0x2e, 0xc6, 0x08, 0x2c, 0x8d, 0xa8, 0xc8, 0x04, 0xf0,
0x62, 0x38, 0xd9, 0x94, 0x6c, 0xe0, 0x00, 0x31, 0x0b, 0xc9, 0x17, 0x6c, 0x84, 0xb2, 0x1b, 0x8a,
0x6d, 0x02, 0x03, 0x18, 0xb8, 0x8d, 0x06, 0x15, 0xb4, 0xf4, 0x79, 0x5b, 0xe4, 0xc3, 0x43, 0x6d,
0x84, 0x94, 0xce, 0x77, 0xe4, 0x30, 0x18, 0x02, 0x82, 0x65, 0xd2, 0x37, 0x13, 0x11, 0xbf, 0x19,
0x3e, 0xd8, 0x84, 0x81, 0x6f, 0x81, 0x6a, 0xe6, 0xc0, 0xed, 0xea, 0x49, 0xf2, 0xfb, 0x37, 0x24,
0x7c, 0x69, 0x78, 0xb9, 0xa8, 0xf5, 0x85, 0x0b, 0xc6, 0xd4, 0x4b, 0x8b, 0x41, 0xfb, 0x48, 0xbb,
0x04, 0x05, 0xde, 0x7c, 0xf9, 0xfd, 0x3b, 0xce, 0x8b, 0x85, 0x40, 0xeb, 0x0c, 0xa9, 0x9d, 0x4b,
0xac, 0xd0, 0xdb, 0x68, 0x22, 0xcb, 0x43, 0x08, 0x14, 0xd1, 0xc5, 0x2b, 0x8d, 0x81, 0x16, 0xc2,
0xc2, 0xef, 0x0b, 0xaa, 0x33, 0x51, 0xc9, 0xc0, 0xc7, 0xf4, 0x4b, 0x12, 0x61, 0xe5, 0x04, 0x26,
0x15, 0xcb, 0xc4, 0xe6, 0xc6, 0xd7, 0x5f, 0xfc, 0xc9, 0x89, 0xa1, 0x01, 0x47, 0x91, 0xf1, 0xb7,
0x0c, 0xff, 0x63, 0x78, 0x60, 0xdb, 0x6b, 0xde, 0x0a, 0x03, 0x85, 0xc0, 0xd6, 0xb0, 0x47, 0xa1,
0xa9, 0xf5, 0x7b, 0xf9, 0x39, 0xc4, 0xac, 0xc2, 0x04, 0xa1, 0x6a, 0x54, 0x64, 0xec, 0xa0, 0x89,
0xbd, 0x37, 0x6a, 0xe2, 0x85, 0x6a, 0xfe, 0xa7, 0x06, 0x4d, 0x3e, 0x18, 0xb4, 0x17, 0x2a, 0xfa,
0xff, 0x7a, 0xcc, 0x54, 0xe3, 0x7c, 0x6f, 0xdc, 0x6c, 0x1f, 0xf4, 0x3f, 0x36, 0xec, 0xa4, 0xb7,
0xcf, 0x0a, 0xcb, 0xf1, 0xc7, 0x4f, 0xd0, 0xd5, 0xfa, 0x5a, 0x17, 0x93, 0x59, 0x6a, 0x7a, 0x68,
0xb0, 0x04, 0xee, 0xdf, 0xf5, 0x2f, 0x75, 0x6e, 0xcd, 0xd0, 0x17, 0x3b, 0xb5, 0x9f, 0x43, 0x82,
0xc0, 0xe2, 0x29, 0x6f, 0x8f, 0x28, 0x3e, 0x90, 0x1b, 0x62, 0x47, 0xbd, 0x85, 0x21, 0x58, 0x57,
0xa7, 0x00, 0x6a, 0xb1, 0xd1, 0xe7, 0xe3, 0xff, 0xea, 0x34, 0x60, 0x9d, 0x20, 0x04, 0x80, 0x69,
0x41, 0xc1, 0xc0, 0x2e, 0xe7, 0x7d, 0xd5, 0xd7, 0x05, 0xd5, 0x97, 0xe6, 0x38, 0x60, 0xbc, 0x27,
0xe9, 0x1e, 0x1d, 0xd8, 0x9c, 0x60, 0x88, 0x6d, 0xbb, 0x68, 0x9b, 0x23, 0x74, 0x3a, 0x50, 0x9e,
0xa4, 0x1a, 0xbf, 0x96, 0x43, 0x06, 0x12, 0xec, 0x96, 0xcb, 0x04, 0x5e, 0xb6, 0xe6, 0x85, 0x2a,
0x82, 0x4c, 0x85, 0x9a, 0xf3, 0x57, 0x5d, 0xe6, 0xfc, 0xf8, 0x55, 0x4c, 0xca, 0xfd, 0xdc, 0xc1,
0x0f, 0x64, 0xf0, 0xb1, 0x60, 0x2c, 0xca, 0x34, 0x92, 0x5e, 0x35, 0xbe, 0x4e, 0xa5, 0x32, 0x98,
0x7c, 0xf3, 0x20, 0xd4, 0xe0, 0x17, 0xdb, 0xe7, 0xc2, 0xe3, 0xb1, 0x7c, 0x58, 0xc7, 0x9d, 0x2f,
0x8d, 0x39, 0x60, 0x40, 0xc8, 0xa4, 0x29, 0x77, 0xe2, 0x67, 0x9e, 0xcc, 0x62, 0x42, 0x46, 0xfc,
0x59, 0xf7, 0x51, 0x22, 0xb8, 0x71, 0xe2, 0x65, 0x15, 0xea, 0x2e, 0xc3, 0x85, 0x32, 0xb0, 0x2e,
0x79, 0x1f, 0xbb, 0x4c, 0xdd, 0x46, 0x34, 0xfb, 0xb6, 0x1e, 0xc5, 0x1b, 0xdb, 0x42, 0x77, 0x19,
0x86, 0xa8, 0x18, 0x66, 0x3b, 0x88, 0x0e, 0xf4, 0x9f, 0xe7, 0xd1, 0xba, 0xd6, 0x8c, 0x21, 0xf1,
0x5e, 0x38, 0x1f, 0xa8, 0x75, 0x0e, 0x62, 0x96, 0x82, 0x34, 0x1a, 0x58, 0x12, 0xe4, 0x5e, 0x1d,
0x85, 0x23, 0xcc, 0x82, 0x35, 0x74, 0xfa, 0xc9, 0x1f, 0xae, 0x60, 0x08, 0x4c, 0xfb, 0x70, 0xf9,
0x9f, 0xa8, 0x97, 0xd3, 0x64, 0xd0, 0xd0, 0xe9, 0x24, 0xc4, 0xe2, 0xcf, 0x12, 0x4a, 0x02, 0x99,
0xfd, 0x02, 0xfb, 0x73, 0x73, 0x1d, 0x82, 0xe7, 0x3c, 0xb7, 0xfd, 0x8b, 0x02, 0xf9, 0xc7, 0x2c,
0xa4, 0x84, 0xb8, 0xfc, 0x0e, 0x17, 0x44, 0x96, 0x7e, 0x63, 0xf1, 0x1a, 0xfe, 0x7d, 0x9f, 0xdf,
0x68, 0x7c, 0x46, 0x36, 0xcf, 0xa2, 0x86, 0x51, 0x27, 0x9c, 0x47, 0xa2, 0x72, 0xfc, 0xdb, 0x91,
0x70, 0xd6, 0xfc, 0x2e, 0xcf, 0xbd, 0x90, 0x18, 0x16, 0x19, 0xf2, 0x8b, 0x46, 0x1a, 0xa4, 0x52,
0x73, 0x36, 0x89, 0x2c, 0x10, 0x3e, 0x62, 0xaa, 0x30, 0xf2, 0xbe, 0x6c, 0x26, 0x17, 0xcc, 0x03,
0x89, 0x97, 0x19, 0xe3, 0x7e, 0x30, 0x43, 0x58, 0xf1, 0xa1, 0x78, 0xc4, 0x70, 0x26, 0x8f, 0xbe,
0x7d, 0x0b, 0x40, 0x40, 0x9f, 0x17, 0xf6, 0x86, 0x11, 0xcc, 0x22, 0x38, 0x2e, 0xdc, 0x9e, 0x0b,
0x0b, 0x5d, 0xd7, 0x46, 0x84, 0x6a, 0x68, 0x5c, 0xf2, 0x14, 0x1e, 0x79, 0x50, 0xea, 0x5c, 0xea,
0x5f, 0xf3, 0x13, 0xbd, 0x14, 0x35, 0xcd, 0x28, 0xd8, 0xf5, 0xe3, 0x41, 0xa0, 0x2a, 0x51, 0x9d,
0xf4, 0x78, 0xb4, 0x08, 0xd4, 0xf0, 0x92, 0x14, 0xfc, 0x21, 0xa0, 0x1b, 0xf1, 0xa6, 0xa7, 0x5f,
0x13, 0x65, 0x04, 0x19, 0xa0, 0x1d, 0xf9, 0x61, 0x1b, 0x5e, 0x29, 0xf8, 0xe5, 0x90, 0x1e, 0x0d,
0xba, 0x20, 0xe9, 0xae, 0x93, 0x46, 0xc9, 0x8d, 0x01, 0x26, 0x3e, 0x10, 0xc5, 0x5d, 0x26, 0x6a,
0x3a, 0xd4, 0x85, 0x1a, 0xca, 0x09, 0xe8, 0x93, 0xeb, 0xda, 0x84, 0xf4, 0x89, 0x64, 0x65, 0xb2,
0x24, 0x5f, 0x37, 0x1b, 0x66, 0xda, 0x35, 0xdb, 0xf8, 0x2e, 0x8b, 0x64, 0x96, 0x51, 0x96, 0xe3,
0x83, 0xb4, 0xc6, 0x36, 0xd8, 0x03, 0xdc, 0x39, 0x7a, 0x7b, 0x24, 0x5d, 0xa1, 0x10, 0x55, 0xae,
0xee, 0x6c, 0x43, 0xc5, 0x1d, 0xa3, 0x91, 0x74, 0xe0, 0xff, 0x4c, 0x03, 0x7e, 0xf0, 0x01, 0x08,
0xc8, 0x13, 0x77, 0xc4, 0x5a, 0x96, 0x07, 0x3b, 0x20, 0xd1, 0xe4, 0x6a, 0x0e, 0xfa, 0xf1, 0x92,
0xb4, 0x6c, 0x51, 0xfc, 0x17, 0x35, 0x2d, 0xa8, 0x5d, 0x0a, 0x15, 0x8b, 0x22, 0x2d, 0x34, 0x68,
0x7a, 0x26, 0xa9, 0xee, 0xf1, 0x1a, 0x92, 0x1e, 0x52, 0x16, 0x83, 0xb4, 0x04, 0x76, 0xb7, 0x60,
0xfe, 0x04, 0x0b, 0x3b, 0x2e, 0x2b, 0xa0, 0x0c, 0x6f, 0x02, 0xfd, 0xef, 0x80, 0xb6, 0xef, 0xeb,
0xf4, 0x50, 0x94, 0xfa, 0x93, 0x71, 0x01, 0xd5, 0xa2, 0xe9, 0xac, 0x05, 0xa9, 0xc1, 0x9d, 0x0c,
0x87, 0x7d, 0xe9, 0x65, 0xc8, 0x81, 0x1e, 0x38, 0x22, 0x76, 0x9a, 0x5a, 0xe7, 0x9e, 0x3f, 0x53,
0x4c, 0x67, 0x0b, 0x69, 0x0e, 0x75, 0x23, 0x28, 0x77, 0x68, 0x02, 0x33, 0xe6, 0x90, 0xb1, 0x63,
0x31, 0x0d, 0x96, 0xc4, 0x10, 0xe3, 0x99, 0xb8, 0x2d, 0x59, 0xf7, 0x8b, 0x74, 0x86, 0xd6, 0xff,
0xf9, 0xdf, 0x00, 0x0a, 0x0b, 0x29, 0x06, 0x4d, 0xc3, 0x07, 0x50, 0xd7, 0x61, 0x91, 0x8c, 0xc0,
0x72, 0xc0, 0xaa, 0xf3, 0x04, 0x70, 0x30, 0x69, 0xce, 0x61, 0x70, 0x12, 0xfd, 0xa3, 0x2f, 0xf4,
0xd8, 0xfe, 0x5f, 0xc6, 0x3f, 0x66, 0xfa, 0x1c, 0x3f, 0xfd, 0x4e, 0x72, 0xbb, 0x43, 0x4d, 0x47,
0xef, 0x7e, 0x7a, 0xa4, 0xa9, 0x7c, 0x34, 0xab, 0x03, 0x6a, 0xb7, 0xa4, 0x27, 0x80, 0x24, 0x28,
0x0b, 0xc6, 0x42, 0x63, 0xad, 0xab, 0xa5, 0x1d, 0x9a, 0x9e, 0xe2, 0xfe, 0x99, 0x48, 0xa2, 0x0f,
0x95, 0xa6, 0xd9, 0xa0, 0xa4, 0x0b, 0x5c, 0x42, 0xdd, 0x1d, 0x80, 0xa9, 0x1f, 0x05, 0x73, 0x6b,
0xa1, 0xb9, 0xc8, 0x09, 0x31, 0xd3, 0x31, 0x3d, 0xa4, 0xe9, 0x7c, 0xac, 0x74, 0x1b, 0xa8, 0x24,
0x81, 0x64, 0x02, 0x44, 0x03, 0x00, 0x5f, 0x76, 0x3d, 0x70, 0x04, 0x2c, 0x09, 0x5b, 0x1a, 0xec,
0x44, 0x0b, 0x5e, 0x76, 0xae, 0x9b, 0x67, 0x9c, 0x90, 0xf4, 0x72, 0x33, 0x59, 0x31, 0x57, 0xe0,
0x43, 0x84, 0xe5, 0x41, 0x40, 0x1e, 0x10, 0x69, 0x65, 0x1f, 0x56, 0xdf, 0x00, 0xc9, 0x2a, 0xe1,
0x85, 0x39, 0x71, 0x82, 0x11, 0xeb, 0x48, 0x13, 0xd0, 0x08, 0xea, 0x6f, 0xa2, 0x7d, 0xd9, 0xc1,
0x91, 0x53, 0xca, 0xec, 0x5a, 0x4e, 0xac, 0xd4, 0x59, 0xb3, 0x95, 0x90, 0x54, 0x15, 0xf8, 0x95,
0x83, 0xa5, 0x06, 0x92, 0x12, 0x1f, 0x0f, 0x98, 0xe8, 0xce, 0xd4, 0x01, 0x05, 0x1a, 0xf3, 0x61,
0xfd, 0x0c, 0x53, 0xe8, 0x46, 0xa6, 0x8f, 0x6e, 0x0a, 0xbb, 0x87, 0x58, 0x0c, 0x51, 0x68, 0x16,
0x0c, 0x5e, 0x56, 0x30, 0xc3, 0x0a, 0x01, 0xb5, 0xfe, 0x73, 0x09, 0xa9, 0xfb, 0xc6, 0x48, 0xb3,
0x4d, 0x63, 0x40, 0xbb, 0x4e, 0xd2, 0x18, 0x88, 0x4c, 0x0d, 0x5d, 0x0c, 0xc9, 0xb0, 0x09, 0x3c,
0xd2, 0xa9, 0xd1, 0xc7, 0x9a, 0x95, 0xe2, 0x58, 0x65, 0xb0, 0x15, 0x29, 0x0d, 0xfc, 0x62, 0xde,
0xa8, 0x97, 0x51, 0x94, 0xc5, 0x2c, 0x2f, 0x62, 0xff, 0x68, 0x53, 0x78, 0x21, 0xe3, 0x42, 0x09,
0x42, 0xbf, 0x92, 0x68, 0xc9, 0xf4, 0x98, 0x52, 0xc1, 0xa4, 0x74, 0x3c, 0x00, 0xcc, 0x8b, 0xfb,
0xf2, 0x6b, 0x6c, 0x67, 0xf9, 0x45, 0x30, 0x87, 0x58, 0x37, 0xbf, 0xfb, 0x19, 0x9b, 0x9b, 0xe6,
0xf7, 0x42, 0xdd, 0x5c, 0x78, 0x5e, 0x29, 0xe4, 0x1f, 0xe6, 0x4f, 0x2a, 0x87, 0x8c, 0x90, 0x1c,
0x4a, 0x03, 0x95, 0xd6, 0xbd, 0x48, 0xb6, 0x1f, 0xc6, 0xcf, 0x86, 0x93, 0x36, 0xd1, 0x5f, 0xd9,
0x08, 0x37, 0x4c, 0x3d, 0xf1, 0xa1, 0x7e, 0x18, 0x29, 0x20, 0x04, 0x63, 0x1b, 0x3b, 0x83, 0x59,
0xd8, 0x27, 0x6f, 0xb9, 0x44, 0x04, 0x93, 0x7f, 0x08, 0xe8, 0x1f, 0x33, 0x07, 0x8d, 0x61, 0xea,
0x6b, 0x85, 0xa7, 0x1d, 0xf8, 0xab, 0xf9, 0xe7, 0xbc, 0x00, 0xc3, 0x68, 0x7a, 0xa3, 0x90, 0x00,
0x8c, 0xb2, 0xaf, 0xc4, 0x77, 0x56, 0xd5, 0x3f, 0x03, 0x41, 0x6f, 0xa9, 0xa4, 0xf7, 0xa2, 0x72,
0x98, 0x9b, 0xd8, 0x34, 0x64, 0xc7, 0xaa, 0xe3, 0x53, 0x24, 0xde, 0x9d, 0x96, 0x93, 0xcd, 0x09,
0xe7, 0x9f, 0x11, 0xfb, 0xc7, 0xcc, 0x98, 0x3b, 0x5e, 0x58, 0x74, 0x70, 0x5c, 0x05, 0x7b, 0x9b,
0xc4, 0x1c, 0x9e, 0x4b, 0x60, 0xc7, 0x20, 0x65, 0x87, 0xf3, 0x2e, 0xcc, 0xa4, 0xa2, 0x8d, 0x36,
0x11, 0x91, 0x6f, 0xc1, 0xfd, 0x98, 0xb4, 0x13, 0x9c, 0x1f, 0xed, 0x89, 0x1d, 0xcd, 0xd0, 0x9e,
0xd2, 0xc7, 0xd8, 0x0d, 0x2c, 0xac, 0x7b, 0x6b, 0x0f, 0xe8, 0x24, 0x80, 0x27, 0x43, 0xfb, 0x0b,
0xc4, 0xef, 0x70, 0x92, 0xe2, 0x72, 0x4c, 0x35, 0x0a, 0xf5, 0x1f, 0x8a, 0x45, 0x25, 0x39, 0x74,
0xff, 0x72, 0x6c, 0xfb, 0x23, 0x08, 0x94, 0x2b, 0xc0, 0xe9, 0x3c, 0x7a, 0xb3, 0x10, 0xed, 0x40,
0x70, 0x62, 0x8e, 0x1d, 0x87, 0x62, 0x30, 0xe9, 0x6d, 0x2d, 0xab, 0x8f, 0xfd, 0x60, 0xa5, 0xc8,
0x31, 0x2a, 0x56, 0x43, 0x5e, 0xba, 0xdf, 0x05, 0x40, 0xe1, 0x15, 0x2f, 0x5e, 0x37, 0xfe, 0xfe,
0x2d, 0x2f, 0x38, 0x02, 0x68, 0x05, 0x06, 0x9f, 0xf1, 0x3a, 0xf1, 0xd1, 0xf9, 0x1f, 0x3a, 0xbe,
0xc5, 0xd3, 0xa7, 0x0e, 0x01, 0xd1, 0x29, 0xf3, 0x68, 0x8d, 0x29, 0x26, 0x4c, 0x23, 0xf1, 0x0f,
0x14, 0x46, 0x16, 0x70, 0xa0, 0xe7, 0x79, 0xde, 0xfb, 0x60, 0x69, 0x19, 0xb0, 0xb4, 0xd0, 0x85,
0x1f, 0x1e, 0x2c, 0x82, 0xf9, 0xb5, 0xc0, 0xd6, 0xaf, 0xb0, 0x91, 0x2a, 0xe3, 0x80, 0xa9, 0xbd,
0x33, 0xd6, 0xe8, 0xce, 0x0c, 0x3f, 0x53, 0x70, 0x73, 0x2f, 0x57, 0xa3, 0x5f, 0xf9, 0x5c, 0xcd,
0xf3, 0xd3, 0xec, 0x77, 0x2e, 0xf3, 0x39, 0xae, 0x4e, 0x53, 0xb3, 0x2c, 0xb3, 0x12, 0xce, 0xac,
0xe4, 0x4a, 0x25, 0x6e, 0xee, 0xfd, 0xde, 0x09, 0x79, 0x49, 0x64, 0x23, 0xe2, 0x6a, 0xe1, 0x70,
0xc3, 0x90, 0xee, 0x4b, 0x62, 0xfa, 0x0e, 0x49, 0x6b, 0x56, 0x8d, 0x3d, 0x2f, 0x33, 0x25, 0x16,
0xdf, 0x4b, 0x03, 0xf8, 0x18, 0x1b, 0x01, 0xe5, 0xc2, 0xc1, 0x0f, 0x1c, 0x35, 0xee, 0xa7, 0xa5,
0x69, 0x0c, 0x33, 0x3f, 0xf3, 0x1e, 0xa2, 0x46, 0x02, 0x05, 0x4a, 0x37, 0x45, 0x75, 0xd2, 0x32,
0x07, 0xf8, 0x9e, 0x13, 0xac, 0x21, 0xa1, 0x18, 0x0a, 0xf0, 0xa7, 0x03, 0x24, 0xfd, 0xbb, 0x5f,
0xdf, 0xdb, 0x03, 0xd1, 0x7d, 0xde, 0x24, 0x35, 0xbc, 0x9c, 0x1f, 0xfa, 0x4f, 0x6c, 0x50, 0x62,
0xd5, 0x9d, 0x85, 0xdc, 0x5f, 0x65, 0x73, 0x00, 0xeb, 0x0d, 0x51, 0xbf, 0x04, 0x23, 0x9c, 0x47,
0xc2, 0x9e, 0xbd, 0x4b, 0xa2, 0x3c, 0x57, 0xd7, 0x37, 0x1a, 0xfb, 0x9b, 0xc9, 0x78, 0x25, 0xbf,
0x31, 0x0b, 0x83, 0x61, 0x4d, 0xe2, 0x43, 0x56, 0x86, 0x00, 0x5a, 0x31, 0x9b, 0x2e, 0x89, 0x6e,
0x49, 0x43, 0x1e, 0x0a, 0x7b, 0x0d, 0x4a, 0x8b, 0x8d, 0x86, 0x84, 0x32, 0x7d, 0x87, 0x3b, 0xcf,
0x80, 0x42, 0x44, 0x9f, 0xe7, 0xb8, 0xd0, 0x7e, 0x01, 0x2f, 0x04, 0xd5, 0x76, 0x0e, 0xc8, 0x50,
0x95, 0xef, 0xe2, 0x8e, 0x99, 0x6a, 0x70, 0x91, 0x00, 0xf9, 0x84, 0x86, 0xb7, 0xce, 0x39, 0x28,
0x2c, 0xd4, 0x34, 0x57, 0x03, 0x40, 0xa8, 0x65, 0x60, 0xb1, 0x73, 0x33, 0x61, 0x82, 0x9d, 0x69,
0x2f, 0xa2, 0xbf, 0x13, 0x5d, 0x94, 0x59, 0x69, 0xdc, 0x40, 0x45, 0x76, 0xca, 0x5e, 0x1b, 0xe6,
0x33, 0x11, 0x7c, 0x99, 0x2a, 0x5d, 0xa3, 0xb0, 0x5a, 0xe6, 0xf4, 0x2b, 0x10, 0x5f, 0x2d, 0x26,
0x75, 0x03, 0x40, 0x35, 0x14, 0x62, 0x14, 0x91, 0x73, 0x4a, 0xf4, 0x51, 0x51, 0x65, 0x44, 0x28,
0xdd, 0x8c, 0xda, 0xd7, 0x5e, 0xc4, 0xf7, 0x4a, 0xc3, 0x9a, 0xc5, 0xb3, 0x7f, 0xca, 0xae, 0x0e,
0xbc, 0x6b, 0x43, 0x5d, 0xa5, 0x1b, 0x8d, 0x08, 0x3b, 0x81, 0xc0, 0x69, 0x10, 0x39, 0x73, 0xb2,
0x7f, 0xd6, 0xc9, 0x14, 0x21, 0xd6, 0x40, 0xd5, 0x27, 0x7f, 0xd5, 0xc9, 0xb4, 0xbc, 0x0c, 0x02,
0x4f, 0x85, 0x67, 0x4e, 0x50, 0xcf, 0x86, 0x40, 0x25, 0x34, 0xf1, 0x0d, 0x7c, 0x4a, 0xd0, 0xcc,
0x8e, 0xc3, 0x2d, 0x4e, 0x12, 0xde, 0xe0, 0x24, 0x3f, 0xdc, 0x9f, 0x8d, 0x99, 0xa6, 0xd6, 0x88,
0xbf, 0x87, 0x09, 0xb8, 0x67, 0x3f, 0xc0, 0x8c, 0x45, 0x18, 0x9f, 0x5d, 0x36, 0x80, 0x12, 0xdf,
0x83, 0x80, 0xf0, 0x44, 0x06, 0x89, 0xa3, 0xa7, 0xc6, 0xd0, 0xa3, 0x20, 0x02, 0xbe, 0x83, 0x9e,
0x30, 0xd6, 0x44, 0xc2, 0x1b, 0x8b, 0xa8, 0x79, 0xe3, 0xde, 0x22, 0x6d, 0x82, 0xde, 0x25, 0x7a,
0xd1, 0x4d, 0x72, 0xd7, 0x9d, 0xbb, 0x3d, 0x8e, 0xff, 0x2e, 0xfa, 0xab, 0x7c, 0x45, 0x91, 0x7f,
0xa3, 0x5b, 0x14, 0x07, 0x6c, 0x6e, 0x8b, 0x3b, 0x4e, 0xa8, 0x84, 0x33, 0x94, 0x41, 0x65, 0x4d,
0x9a, 0x7c, 0xcd, 0x6c, 0x54, 0xab, 0x55, 0x14, 0xf4, 0x3d, 0xdc, 0xeb, 0x02, 0xb4, 0x21, 0x79,
0xa3, 0x2f, 0xf3, 0xd0, 0x1d, 0xe8, 0x49, 0xae, 0x3b, 0x01, 0xaa, 0xc3, 0x6a, 0x9a, 0x2a, 0x2c,
0x55, 0x17, 0x41, 0x7b, 0x17, 0x16, 0x47, 0xe1, 0x70, 0x1b, 0x04, 0xff, 0x07, 0xfd, 0x8f, 0xd2,
0xa4, 0x7f, 0x46, 0xf0, 0x7d, 0x15, 0x6a, 0xe1, 0x45, 0xf3, 0xcd, 0x3e, 0x9c, 0xa7, 0xff, 0x4f,
0xa6, 0xc8, 0xdb, 0x2e, 0xc7, 0xf9, 0x09, 0xd4, 0x3b, 0xbf, 0x3f, 0x4c, 0x3d, 0x0b, 0xfa, 0x83,
0x9a, 0xd9, 0x5a, 0x34, 0x7a, 0xbe, 0x4a, 0xc4, 0xa5, 0xe9, 0xe1, 0xd2, 0x64, 0xb8, 0x14, 0x42,
0x67, 0xd2, 0x38, 0xe1, 0xdb, 0x7b, 0xc7, 0xd0, 0x80, 0xc7, 0x31, 0x63, 0xdb, 0x3f, 0xc7, 0xb7,
0x1a, 0xb1, 0x91, 0xdd, 0xdd, 0x20, 0xd8, 0x65, 0x55, 0xac, 0xee, 0x57, 0x0f, 0x52, 0x82, 0xde,
0x70, 0xcc, 0xbd, 0x8b, 0xea, 0x19, 0x1b, 0x32, 0xe2, 0x36, 0x8d, 0x7e, 0x2e, 0xe8, 0x35, 0x8e,
0xc3, 0x61, 0x29, 0xf1, 0x60, 0xdd, 0xa0, 0xeb, 0x7c, 0x1d, 0x77, 0x8e, 0x1c, 0xb6, 0x05, 0x89,
0xc8, 0xf1, 0xfa, 0xd5, 0x72, 0x1c, 0xa0, 0xbe, 0x68, 0x68, 0x4f, 0x38, 0x8f, 0x6d, 0x7f, 0x84,
0x4f, 0x85, 0x2c, 0xb6, 0xd1, 0x16, 0x69, 0x3f, 0x08, 0x95, 0x2f, 0x5f, 0x5c, 0x7f, 0x5b, 0xc4,
0xbf, 0x44, 0x21, 0xc1, 0x02, 0x89, 0xb3, 0x0d, 0x90, 0x44, 0x6c, 0x10, 0xe8, 0x02, 0x00, 0xa2,
0x68, 0xa0, 0x3b, 0x4a, 0x88, 0x86, 0x5a, 0x60, 0x3a, 0xef, 0xe5, 0x43, 0x6e, 0x03, 0x34, 0x1b,
0x9e, 0x8f, 0xfa, 0x86, 0x18, 0x0e, 0xc5, 0x3a, 0xf9, 0xee, 0xc3, 0xab, 0x13, 0x44, 0x0a, 0x35,
0x84, 0x41, 0x17, 0x77, 0xb1, 0x27, 0x74, 0xf5, 0x0a, 0xba, 0x20, 0x09, 0x76, 0xe3, 0x4b, 0x16,
0x3b, 0x16, 0x6d, 0xc7, 0xe1, 0x79, 0xbb, 0x81, 0x5e, 0xa2, 0x0c, 0xb4, 0xf0, 0x2f, 0xb0, 0x61,
0x04, 0xe6, 0x28, 0x12, 0x74, 0xf8, 0xca, 0xfd, 0x14, 0x24, 0xf8, 0xca, 0xff, 0xa4, 0xa1, 0x3e,
0x09, 0x8c, 0x45, 0xb2, 0x41, 0xde, 0x3b, 0xbc, 0x81, 0xfd, 0xf1, 0xcc, 0x73, 0x7a, 0xcf, 0x13,
0x7a, 0xa6, 0x57, 0xa4, 0x49, 0xcb, 0x69, 0x01, 0xa8, 0xe0, 0x9c, 0x8d, 0x4f, 0x0d, 0xd8, 0xec,
0x56, 0xb6, 0x0e, 0xed, 0xfb, 0x39, 0x30, 0x00, 0xc4, 0x8c, 0x1e, 0x4d, 0xc9, 0xd2, 0x5e, 0x85,
0x53, 0x72, 0x3f, 0xe7, 0x5f, 0x00, 0xad, 0x0d, 0x1b, 0x10, 0x66, 0x37, 0x48, 0xc6, 0xc7, 0x07,
0x8e, 0x27, 0xf0, 0x69, 0xfd, 0xc2, 0x70, 0x07, 0xd4, 0x9b, 0x04, 0xb4, 0xa5, 0x05, 0x34, 0xb3,
0x79, 0x10, 0x6d, 0xf6, 0xfc, 0x9f, 0xbf, 0x78, 0x4f, 0xd9, 0xf9, 0x15, 0xba, 0xa4, 0x2a, 0xb1,
0xf6, 0x96, 0x2a, 0x8c, 0x73, 0x7b, 0x36, 0x35, 0x1a, 0x6d, 0x50, 0xff, 0x15, 0xa5, 0x16, 0xba,
0xcc, 0x2e, 0xe8, 0x1b, 0x5d, 0x82, 0x85, 0x46, 0x95, 0x1e, 0x7f, 0xdb, 0x90, 0xbd, 0xed, 0x65,
0xa1, 0x8e, 0x92, 0x39, 0xdb, 0x1a, 0x04, 0xdd, 0x91, 0xe6, 0x84, 0x77, 0x05, 0x57, 0x2e, 0x5b,
0xba, 0x13, 0x29, 0x38, 0xe8, 0x68, 0xe1, 0x04, 0xf4, 0x81, 0x00, 0x32, 0xc2, 0xfb, 0x92, 0x71,
0x97, 0x1d, 0x0e, 0x36, 0x74, 0x3c, 0x15, 0xdb, 0xf2, 0x7e, 0x42, 0x83, 0x0d, 0xe6, 0x6d, 0x00,
0x8d, 0xa6, 0xc5, 0x34, 0x1a, 0x94, 0xf8, 0xbe, 0xfb, 0x2e, 0x66, 0x6d, 0x84, 0xee, 0x3b, 0xe7,
0x96, 0x8d, 0x97, 0x85, 0x73, 0x8e, 0xaa, 0xd5, 0xb8, 0xd3, 0xc9, 0x34, 0xe7, 0x85, 0x0d, 0xe3,
0xe9, 0xd0, 0x38, 0x05, 0x0b, 0xbd, 0x38, 0x18, 0x6c, 0x58, 0xcb, 0x65, 0x0b, 0x0d, 0xfd, 0xee,
0x5f, 0x1a, 0x81, 0x11, 0x4b, 0xd2, 0x7d, 0xc9, 0x69, 0xba, 0xae, 0xad, 0x81, 0x16, 0x45, 0x92,
0x1c, 0x28, 0xfc, 0x1c, 0x0f, 0x4a, 0xa7, 0xe4, 0x27, 0x51, 0x97, 0x17, 0xbb, 0x87, 0xa5, 0x06,
0x64, 0x27, 0x98, 0x0d, 0x66, 0x92, 0xd3, 0x94, 0x8c, 0x5b, 0x4f, 0x9a, 0x0b, 0x7b, 0x14, 0x96,
0xf9, 0xf7, 0xa2, 0xc8, 0xd4, 0xa3, 0x9c, 0xef, 0xc6, 0xfa, 0xb5, 0xfa, 0x75, 0x88, 0xa1, 0x97,
0x0e, 0xd0, 0x71, 0xfd, 0x53, 0x08, 0xdd, 0x39, 0xcd, 0x52, 0xf8, 0x5f, 0x75, 0x8c, 0x80, 0x43,
0xd5, 0x08, 0x75, 0x87, 0x75, 0x87, 0x46, 0x62, 0x16, 0x06, 0x86, 0x33, 0x2e, 0x45, 0x60, 0x34,
0x1c, 0xcf, 0x5d, 0x1b, 0x01, 0xb8, 0x0e, 0x76, 0x10, 0x1f, 0xc9, 0x2c, 0x0f, 0x0a, 0x12, 0x1d,
0xbc, 0x49, 0x23, 0xec, 0xf6, 0xf4, 0x2e, 0xa7, 0x09, 0x91, 0x6a, 0x38, 0x66, 0x84, 0x86, 0xcc,
0xa7, 0xd9, 0xe9, 0xc3, 0xbf, 0xda, 0x66, 0x28, 0x3a, 0x83, 0x81, 0x4e, 0x72, 0xf1, 0xb7, 0x25,
0x86, 0xf7, 0x3a, 0x17, 0x6e, 0x58, 0x7f, 0xc7, 0x95, 0x9e, 0xbb, 0xe1, 0xa8, 0x77, 0xf9, 0x43,
0xe9, 0xba, 0x2a, 0x14, 0xc4, 0x3b, 0x09, 0x87, 0x3b, 0xb6, 0x01, 0x30, 0xdc, 0x28, 0xf8, 0x9b,
0xc0, 0x80, 0x0c, 0x23, 0xe7, 0xe9, 0xb6, 0x45, 0x9f, 0x1c, 0xa9, 0x25, 0x66, 0xfd, 0x63, 0x16,
0xc9, 0x9e, 0x9b, 0xbf, 0xf8, 0x3a, 0x98, 0x6e, 0x6e, 0x08, 0xaa, 0xa4, 0xaa, 0x61, 0x90, 0x42,
0x72, 0x5d, 0xdd, 0x57, 0x5d, 0x06, 0x7b, 0xee, 0xdd, 0xca, 0xf3, 0x38, 0x0a, 0x71, 0xa3, 0x86,
0x85, 0x89, 0x84, 0xef, 0x08, 0x0e, 0x07, 0x8b, 0xe0, 0xd1, 0x43, 0x6a, 0xf4, 0x6b, 0x23, 0x42,
0xe3, 0x2c, 0x18, 0xc2, 0xa9, 0xd1, 0xa5, 0xb3, 0xad, 0x72, 0xfa, 0xe5, 0xe1, 0x85, 0x0f, 0x62,
0xed, 0x18, 0xbe, 0xc2, 0x79, 0x14, 0x67, 0x7e, 0x35, 0x44, 0x1d, 0x30, 0x94, 0x46, 0xe8, 0x0c,
0x22, 0x90, 0x11, 0x98, 0xb3, 0xb2, 0x4d, 0xa4, 0x97, 0xb9, 0xaf, 0x14, 0xe0, 0x5d, 0x12, 0x61,
0x9d, 0xe0, 0xdb, 0xda, 0x7b, 0x25, 0xe8, 0x01, 0xfc, 0x6f, 0x29, 0x3d, 0x08, 0x64, 0x40, 0x3b,
0x12, 0xb5, 0xcc, 0x86, 0xc8, 0x36, 0x00, 0x37, 0x37, 0xc9, 0x52, 0x47, 0xbd, 0x49, 0x5d, 0xd1,
0x49, 0xb2, 0xaa, 0x93, 0xed, 0x49, 0xb8, 0x8f, 0x9e, 0x8a, 0x1a, 0x6e, 0x30, 0xa2, 0xa6, 0x82,
0x26, 0xd5, 0xa0, 0x3c, 0xa2, 0x41, 0x77, 0xf8, 0x3d, 0xfd, 0xf1, 0x73, 0x23, 0x0a, 0xae, 0xe3,
0xf8, 0x96, 0x8a, 0x36, 0x10, 0x52, 0x53, 0xe7, 0x71, 0xcb, 0x3e, 0x74, 0xcd, 0x2d, 0xef, 0x6f,
0xc5, 0x2d, 0xe5, 0xb2, 0xcb, 0x66, 0xd6, 0xe7, 0x2f, 0xee, 0x4f, 0xe1, 0xbd, 0x3e, 0xb3, 0xdb,
0xc1, 0xe2, 0xe7, 0x94, 0xd8, 0x36, 0x43, 0xfc, 0xb0, 0x12, 0xab, 0x80, 0x57, 0x6a, 0xc5, 0xcb,
0x2b, 0x8a, 0xbb, 0xb2, 0xf0, 0xcb, 0x4a, 0xe8, 0xb4, 0x34, 0x2d, 0x55, 0xf3, 0x2a, 0x85, 0xf7,
0x5e, 0x62, 0xea, 0xa0, 0x9f, 0xd5, 0xa1, 0x03, 0x00, 0xad, 0xdb, 0x63, 0xc8, 0xf1, 0x63, 0x3f,
0xc6, 0xc7, 0xa7, 0xbb, 0x18, 0x41, 0x44, 0x88, 0x81, 0x52, 0x41, 0xb4, 0x77, 0x4e, 0x6c, 0x24,
0xa1, 0x40, 0x90, 0x81, 0x75, 0x19, 0x96, 0xd8, 0x09, 0x82, 0xbb, 0x66, 0xc6, 0x0e, 0x28, 0xec,
0xf8, 0xe0, 0x87, 0xc7, 0xec, 0x70, 0xff, 0x0d, 0x75, 0x13, 0x18, 0xd0, 0x4d, 0xf3, 0xf9, 0x98,
0x0a, 0x4f, 0xf5, 0xb6, 0x15, 0xa5, 0x69, 0xb2, 0xc1, 0x42, 0x2d, 0x44, 0x61, 0x66, 0x0c, 0x07,
0xc4, 0xd6, 0x94, 0xda, 0x17, 0x71, 0xce, 0xd7, 0x82, 0xad, 0xd0, 0x45, 0x6f, 0xfc, 0xf8, 0x61,
0x14, 0x87, 0x63, 0xc7, 0x53, 0x28, 0xeb, 0x4c, 0x5d, 0xc2, 0x28, 0xf3, 0xc0, 0x6a, 0x1e, 0x03,
0xa7, 0x5b, 0x04, 0x80, 0xa1, 0x1b, 0x02, 0xac, 0x9e, 0x31, 0x8d, 0x95, 0x1a, 0x63, 0x54, 0x31,
0x97, 0x5a, 0xba, 0xd7, 0xda, 0x0f, 0xac, 0xa6, 0x95, 0xeb, 0x49, 0x0c, 0x71, 0x23, 0xe3, 0x44,
0x10, 0x05, 0x87, 0xa1, 0xf9, 0x69, 0x74, 0x54, 0x3b, 0x0e, 0x46, 0xf8, 0xfb, 0xa7, 0x08, 0xdc,
0x70, 0xb8, 0x09, 0xa1, 0x5a, 0x37, 0xcf, 0xd4, 0x5d, 0xea, 0x69, 0xe7, 0x67, 0x91, 0x78, 0xbf,
0xd0, 0xe6, 0x31, 0x2f, 0x84, 0x7e, 0x2c, 0xa2, 0xe9, 0xbc, 0x83, 0xc9, 0x41, 0x58, 0xef, 0xb2,
0x51, 0xfe, 0x67, 0x11, 0x8b, 0x3a, 0xcf, 0x79, 0x5a, 0x32, 0x98, 0x02, 0x60, 0xbc, 0xd7, 0xcd,
0x9d, 0xc0, 0x90, 0x6f, 0x98, 0x42, 0x68, 0x43, 0xcf, 0x3b, 0x8c, 0xbd, 0xb9, 0x19, 0xd9, 0xfc,
0x02, 0xc5, 0x00, 0xcc, 0xcf, 0xc0, 0xf4, 0xc7, 0x08, 0x41, 0x1a, 0x20, 0x98, 0xc4, 0xa3, 0x0f,
0xf0, 0xbd, 0xe3, 0x7d, 0xd7, 0x5c, 0x60, 0xc6, 0xc2, 0x18, 0xdd, 0xd8, 0x34, 0x48, 0x90, 0x22,
0xe8, 0x8f, 0x83, 0x2b, 0xff, 0x30, 0xb0, 0xd0, 0x6b, 0xd0, 0xb4, 0x88, 0x41, 0xdb, 0x1b, 0xa3,
0x5f, 0x19, 0xa3, 0x8d, 0x66, 0xdf, 0x46, 0xdf, 0x6a, 0xae, 0x3d, 0x04, 0x6d, 0x12, 0x17, 0xd7,
0xab, 0x73, 0x4a, 0x7a, 0x92, 0x8e, 0x11, 0xf0, 0x4b, 0xf8, 0x9c, 0x87, 0x8d, 0x32, 0x7f, 0x70,
0x7e, 0x84, 0x28, 0x4e, 0x24, 0xf1, 0xc8, 0x0c, 0xad, 0x05, 0x3c, 0xb6, 0x4e, 0xd0, 0x53, 0x1f,
0xe7, 0x4e, 0x4c, 0xa3, 0x80, 0x3c, 0xd9, 0xd6, 0x04, 0x43, 0x6f, 0xa2, 0x0f, 0x50, 0xa7, 0x2e,
0x7d, 0x7d, 0x6f, 0x68, 0xb3, 0x5f, 0xea, 0xd0, 0x86, 0x9f, 0x37, 0x92, 0xf7, 0xd3, 0x65, 0x45,
0xdb, 0x92, 0x4a, 0x58, 0x02, 0xbe, 0x98, 0x9d, 0xee, 0x62, 0x76, 0x60, 0x0c, 0x90, 0x34, 0x54,
0x2d, 0x83, 0x8e, 0x27, 0x76, 0x84, 0x1d, 0x34, 0x11, 0xfd, 0xbb, 0xb8, 0x83, 0x5b, 0x45, 0x35,
0x7c, 0xc6, 0xe3, 0xe8, 0xa0, 0xaf, 0x04, 0xaf, 0x35, 0xca, 0x64, 0x45, 0x6f, 0xca, 0x45, 0x30,
0xfd, 0xc4, 0xfa, 0x8a, 0x7d, 0x90, 0x98, 0x12, 0xb0, 0xbc, 0x01, 0xc2, 0xcc, 0x49, 0xba, 0x9b,
0x88, 0x1b, 0x18, 0xc8, 0x30, 0x08, 0xc8, 0x33, 0x13, 0xb4, 0x31, 0x26, 0x2b, 0x9c, 0x54, 0x6a,
0xee, 0xeb, 0x65, 0xde, 0x16, 0x07, 0x22, 0xcb, 0xf0, 0x43, 0xb1, 0x42, 0xae, 0xa8, 0x73, 0x33,
0xe1, 0x37, 0xed, 0x79, 0x9f, 0xe8, 0x72, 0x5f, 0x08, 0xec, 0x7a, 0x60, 0xbc, 0x34, 0x0c, 0x3c,
0x5e, 0xeb, 0x6d, 0x67, 0xae, 0x88, 0xe8, 0x0e, 0xd9, 0x79, 0x7e, 0x9c, 0x3b, 0x58, 0x48, 0x64,
0x1b, 0xad, 0xbe, 0xad, 0x2d, 0xcf, 0xb1, 0x29, 0xd8, 0x82, 0x26, 0x28, 0x75, 0x89, 0x01, 0xf3,
0x6c, 0x26, 0x7b, 0xf1, 0x0b, 0xec, 0x25, 0x6d, 0xf1, 0x0b, 0x6c, 0x3a, 0xc6, 0xf9, 0xf1, 0x00,
0xc3, 0x22, 0x19, 0xc3, 0xd7, 0xf1, 0xe1, 0xbd, 0x58, 0x71, 0x2e, 0x25, 0xa5, 0x80, 0xad, 0xa4,
0x6c, 0xfa, 0xa9, 0xe1, 0x06, 0xd5, 0x02, 0x16, 0xbb, 0xb4, 0x00, 0x20, 0x2c, 0x94, 0x6c, 0x05,
0x23, 0x61, 0x17, 0x51, 0xe5, 0x78, 0x3f, 0x01, 0x8f, 0x12, 0x3d, 0x44, 0x4c, 0xf7, 0x01, 0x29,
0x79, 0xf5, 0xb1, 0xd0, 0x4f, 0xc1, 0xc0, 0xed, 0xe9, 0xcd, 0x4d, 0xfa, 0xb5, 0x4d, 0x65, 0x70,
0xa8, 0x4e, 0x33, 0xa8, 0x43, 0xf3, 0x79, 0x61, 0x59, 0x38, 0x06, 0xf9, 0xce, 0x44, 0x58, 0x2d,
0x1a, 0x83, 0x12, 0xda, 0x44, 0x20, 0x69, 0x1a, 0x31, 0xbb, 0xb9, 0x29, 0x82, 0xb9, 0xc1, 0x9e,
0x19, 0x6a, 0x55, 0x74, 0xad, 0xf8, 0xde, 0x74, 0x3f, 0x83, 0xb9, 0xcd, 0xc5, 0x1a, 0xbd, 0x28,
0xd8, 0x77, 0x3a, 0x0e, 0xd0, 0x65, 0x9f, 0xe8, 0x06, 0x7b, 0x86, 0x5f, 0x38, 0x46, 0x37, 0x9e,
0x93, 0x3d, 0x8b, 0xa5, 0x71, 0x5f, 0x9c, 0x18, 0xe6, 0xb0, 0xd7, 0x4f, 0xd0, 0x37, 0x3b, 0x61,
0x28, 0xa0, 0x23, 0x8d, 0x48, 0x82, 0x05, 0xd0, 0xc5, 0xaa, 0xe4, 0x6a, 0xc1, 0x0d, 0x83, 0xb4,
0x05, 0xcf, 0x61, 0x1b, 0x29, 0x93, 0xc7, 0x32, 0x67, 0x9a, 0xe3, 0xe0, 0x7b, 0x30, 0x8e, 0xae,
0xa9, 0x8f, 0x33, 0x56, 0xa4, 0x8a, 0x45, 0x9a, 0xa1, 0x9e, 0x25, 0xe8, 0x30, 0x12, 0x60, 0x4b,
0x25, 0x4c, 0x05, 0x16, 0x1a, 0xfa, 0x8a, 0xe7, 0x21, 0xea, 0xa5, 0xbc, 0x82, 0x6e, 0x48, 0xd2,
0x82, 0x29, 0xae, 0x06, 0x3f, 0x54, 0x1a, 0x32, 0x14, 0xbe, 0x6e, 0xc2, 0x00, 0x11, 0xa0, 0x87,
0x6f, 0xa3, 0x30, 0xd2, 0xdd, 0x49, 0x38, 0x7a, 0x08, 0xf1, 0x17, 0xe2, 0x44, 0xd9, 0x7a, 0x88,
0xed, 0x2c, 0x02, 0xf6, 0x43, 0x81, 0x8e, 0x7f, 0xce, 0x3c, 0xbf, 0x90, 0xdf, 0xbf, 0x83, 0x26,
0xf8, 0x59, 0x48, 0xbe, 0xfc, 0xfe, 0x1d, 0x16, 0x3d, 0xe1, 0x60, 0xf2, 0x68, 0x28, 0x96, 0x90,
0x27, 0x79, 0xde, 0x77, 0xa3, 0x51, 0x46, 0x6c, 0x36, 0x3e, 0x8e, 0x0d, 0x47, 0x07, 0xd3, 0x0e,
0x67, 0x81, 0x00, 0xe5, 0x98, 0x67, 0x1a, 0x4f, 0xd1, 0x27, 0x31, 0xf4, 0x18, 0x79, 0x14, 0xb4,
0x0d, 0x06, 0x57, 0x83, 0x79, 0x9d, 0x71, 0xa7, 0x3c, 0x1c, 0x21, 0x8d, 0x32, 0x2e, 0x6d, 0x98,
0xe3, 0x24, 0x8f, 0xd1, 0x14, 0xd4, 0x18, 0x88, 0x05, 0xb7, 0xa2, 0xd8, 0xf5, 0x42, 0xa7, 0xb2,
0x78, 0x1f, 0x42, 0x12, 0xaf, 0x0b, 0x81, 0x85, 0x64, 0xee, 0xf8, 0xdc, 0x1e, 0x46, 0xf7, 0x6d,
0xc6, 0x8d, 0x38, 0xc6, 0xf0, 0xbf, 0xf1, 0x35, 0x8c, 0x11, 0xc5, 0x96, 0x23, 0x62, 0x23, 0x84,
0x65, 0x21, 0x87, 0x6e, 0x90, 0x55, 0x7e, 0x76, 0x47, 0x0b, 0x39, 0xd9, 0x1d, 0x01, 0x0f, 0xd9,
0x11, 0xbc, 0x2f, 0x03, 0xa3, 0xd6, 0xd1, 0xd0, 0xdf, 0xc2, 0xcd, 0x09, 0x18, 0x24, 0x1e, 0x5f,
0xd2, 0x98, 0xe2, 0x40, 0x2b, 0xd6, 0xf1, 0x02, 0x59, 0x1b, 0x99, 0xf3, 0xed, 0x4d, 0x7b, 0xab,
0xc2, 0xcd, 0x05, 0x7c, 0x61, 0x4b, 0xcd, 0xfd, 0x8b, 0xa1, 0x6f, 0xc9, 0xff, 0x61, 0xa5, 0xa1,
0xc7, 0xe3, 0xc5, 0x07, 0x3b, 0xa8, 0x9c, 0x2b, 0x0a, 0x28, 0x3c, 0x74, 0x0a, 0x35, 0xaa, 0x1c,
0x2c, 0x94, 0x07, 0x96, 0xf2, 0xb1, 0x06, 0xe1, 0x57, 0xe0, 0xf9, 0x90, 0xf6, 0x40, 0x3c, 0xed,
0xc1, 0xfb, 0xae, 0x91, 0xa8, 0x98, 0xe6, 0x6b, 0xe1, 0x15, 0x88, 0x97, 0x49, 0xc0, 0x2a, 0x71,
0x2c, 0xb0, 0x26, 0x08, 0x3b, 0x24, 0xf0, 0xd7, 0xf6, 0x1f, 0x96, 0x2d, 0x7e, 0xef, 0x6d, 0x31,
0x91, 0x43, 0x33, 0x33, 0xd3, 0xa8, 0xb1, 0x0b, 0x6a, 0xf0, 0x33, 0x1c, 0x06, 0x19, 0xbe, 0xce,
0x69, 0xe6, 0xdd, 0x58, 0x03, 0xf6, 0x69, 0xf8, 0xc2, 0x1e, 0x21, 0xe9, 0xdf, 0x69, 0xc3, 0xbe,
0xf9, 0xd8, 0x0d, 0x1e, 0xde, 0xc9, 0x58, 0xbc, 0x07, 0xcc, 0x9f, 0x86, 0xe0, 0x0a, 0xf7, 0x06,
0xab, 0xb2, 0xc3, 0x85, 0xae, 0x72, 0xc7, 0x37, 0x21, 0x01, 0xc1, 0x85, 0x52, 0xf0, 0xb5, 0x63,
0xbc, 0x67, 0x6b, 0xf8, 0x6f, 0xa4, 0x89, 0x1a, 0xb8, 0x0c, 0xc8, 0xc2, 0xc4, 0x8d, 0x0f, 0xc0,
0xdf, 0x69, 0xf2, 0xa7, 0x2b, 0x3c, 0x2c, 0xec, 0xbf, 0x77, 0x13, 0x8f, 0xf7, 0xc0, 0xb3, 0x63,
0x5a, 0xfe, 0xf8, 0x58, 0x78, 0x17, 0xdb, 0x8f, 0x5a, 0x31, 0x00, 0x5a, 0xec, 0x8f, 0x47, 0x70,
0xee, 0xc1, 0x0b, 0x8f, 0xc2, 0x83, 0xb4, 0x72, 0x18, 0xec, 0x5d, 0x30, 0x7e, 0x88, 0xa5, 0x57,
0x04, 0xf8, 0x52, 0x08, 0x64, 0xeb, 0x32, 0x0c, 0xaf, 0xbe, 0x36, 0x07, 0x59, 0x17, 0xae, 0x68,
0x06, 0x83, 0x75, 0xca, 0xbb, 0x17, 0x3f, 0x6e, 0xc3, 0x91, 0xb8, 0x05, 0x47, 0x0b, 0x8f, 0x56,
0xda, 0x7b, 0xab, 0xcb, 0xfa, 0x17, 0xac, 0x7f, 0x54, 0xda, 0xdf, 0xc8, 0x60, 0xbf, 0xfc, 0x81,
0xb1, 0xcb, 0x8d, 0x63, 0x75, 0xeb, 0xeb, 0xb3, 0x1a, 0x71, 0x93, 0x33, 0x8a, 0xc1, 0x50, 0x40,
0x8c, 0xef, 0x80, 0x21, 0x73, 0xc5, 0x81, 0xac, 0x5f, 0x7c, 0xda, 0x0b, 0xcd, 0xa8, 0x2f, 0x72,
0xcc, 0xec, 0xaf, 0x15, 0xf0, 0x97, 0x0d, 0x60, 0xaf, 0x74, 0xee, 0xd7, 0xe7, 0x7b, 0xe3, 0x85,
0x87, 0x90, 0xd8, 0x3a, 0x04, 0xbd, 0xb2, 0x46, 0x37, 0x8e, 0x50, 0xae, 0xd6, 0x16, 0x5b, 0xfd,
0x04, 0x25, 0xef, 0xa2, 0x8f, 0xf3, 0x79, 0xf4, 0xda, 0x8c, 0xc8, 0x95, 0x9e, 0xe1, 0x13, 0x0c,
0xe1, 0xab, 0x1d, 0xbd, 0xce, 0xd5, 0x17, 0xdd, 0x5b, 0x20, 0x3b, 0x48, 0x5b, 0x39, 0x87, 0xa1,
0x3b, 0x3d, 0xe3, 0x23, 0xf4, 0xb0, 0xb0, 0x02, 0xd2, 0xe6, 0xe6, 0xaa, 0x1e, 0xd0, 0x97, 0xc9,
0x81, 0x12, 0x66, 0xde, 0x69, 0x64, 0x9c, 0x9c, 0xc9, 0xa4, 0x2f, 0x8d, 0x34, 0xd3, 0xae, 0x71,
0xce, 0xc0, 0x34, 0x31, 0x50, 0x8d, 0x02, 0xaa, 0xf9, 0x57, 0xfd, 0xc6, 0xc6, 0x19, 0xbe, 0x1e,
0x35, 0x3c, 0xcc, 0xe5, 0x0e, 0xfe, 0x85, 0x51, 0xae, 0xc0, 0xd5, 0xe7, 0x87, 0x19, 0xed, 0xc1,
0xdf, 0x18, 0xe5, 0x22, 0xf0, 0x66, 0x3d, 0x6d, 0x00, 0xb7, 0xfe, 0xe2, 0xc7, 0xf3, 0x90, 0x9f,
0xf3, 0xe5, 0xea, 0x18, 0x30, 0xb3, 0xbe, 0x3a, 0x58, 0x61, 0xb5, 0x40, 0x43, 0x0f, 0xd3, 0x18,
0x0d, 0x27, 0x09, 0x3c, 0xc5, 0x51, 0xa8, 0xde, 0xb5, 0xa2, 0xa4, 0x21, 0xf2, 0xb3, 0xd8, 0x4c,
0x08, 0xcb, 0xed, 0x74, 0x27, 0xb5, 0xf0, 0xb9, 0xb2, 0xee, 0x44, 0x25, 0x5d, 0x74, 0x71, 0xc4,
0x80, 0xfa, 0x97, 0x5e, 0xfa, 0x3a, 0x60, 0x9c, 0x94, 0x57, 0x40, 0x86, 0x59, 0xaa, 0x91, 0x38,
0x1c, 0xfa, 0x0e, 0xa8, 0xe8, 0x70, 0x97, 0x06, 0xb9, 0x6c, 0xbb, 0xf2, 0x71, 0xc4, 0xb1, 0xfb,
0x9a, 0x57, 0xa0, 0xcd, 0x99, 0xac, 0x84, 0x15, 0x31, 0x35, 0x96, 0x30, 0x16, 0xba, 0xad, 0x78,
0xd5, 0x4c, 0xac, 0x06, 0xb9, 0x64, 0x9f, 0x2c, 0x81, 0xc5, 0x9b, 0xec, 0xe2, 0x73, 0x8b, 0xf7,
0x9e, 0x91, 0x38, 0x6e, 0x59, 0x20, 0x76, 0xc0, 0xf0, 0x66, 0x68, 0x3b, 0xcf, 0xeb, 0x91, 0xe3,
0x60, 0xb8, 0xbb, 0x08, 0x26, 0x3b, 0xd5, 0x54, 0x43, 0xea, 0x87, 0xff, 0x5e, 0x3d, 0xcb, 0x3f,
0x83, 0xe6, 0x1f, 0x4e, 0xf3, 0x82, 0x13, 0x69, 0x5c, 0x62, 0x64, 0x6e, 0xdc, 0x48, 0xdb, 0x81,
0xbd, 0x87, 0xf1, 0x47, 0x78, 0x25, 0x1d, 0xa9, 0x2f, 0x98, 0xee, 0x7a, 0xfb, 0x76, 0x69, 0x1f,
0x13, 0xb7, 0x2f, 0x57, 0x38, 0xe7, 0xe9, 0x7b, 0xe2, 0x39, 0xbe, 0x1e, 0xcb, 0xa6, 0x8e, 0x72,
0x2f, 0x4f, 0x40, 0x04, 0x50, 0x91, 0x96, 0x74, 0xd7, 0x9a, 0xb4, 0x11, 0xb3, 0x71, 0xc9, 0x0c,
0x25, 0x3f, 0x3f, 0xf4, 0x51, 0x52, 0x0b, 0x07, 0x95, 0xbd, 0x3e, 0xf4, 0x7d, 0x11, 0x41, 0xd0,
0xf2, 0x76, 0xaf, 0xe8, 0xfb, 0x70, 0x1a, 0xb8, 0x7d, 0x05, 0x04, 0x3e, 0xeb, 0xd7, 0x44, 0xc1,
0x81, 0xbf, 0x11, 0xbe, 0x45, 0x15, 0xb4, 0xb9, 0xc8, 0xa9, 0xca, 0x20, 0xd2, 0xd9, 0xdb, 0x22,
0x4d, 0x15, 0x45, 0xbe, 0xae, 0x9a, 0x33, 0x92, 0xee, 0x87, 0x8b, 0xe5, 0x4b, 0xb1, 0x72, 0xfc,
0x1c, 0x7a, 0xab, 0x93, 0x24, 0x4d, 0x94, 0x64, 0x0c, 0x73, 0xee, 0xd3, 0xfb, 0xd4, 0xfa, 0xb8,
0xb9, 0xc5, 0xd7, 0x59, 0xe7, 0x20, 0x71, 0xbe, 0x40, 0x08, 0xa1, 0xd8, 0xf1, 0x5f, 0xd2, 0xb0,
0xb4, 0x23, 0x13, 0x8c, 0xce, 0x63, 0xb0, 0xec, 0x18, 0x38, 0xbb, 0x2d, 0x0c, 0x84, 0x79, 0x3d,
0x84, 0xb3, 0xeb, 0x90, 0x17, 0xc8, 0x0e, 0x23, 0xf3, 0x20, 0x94, 0xd1, 0x8b, 0x78, 0x8e, 0xc2,
0x7e, 0xa3, 0x7a, 0x18, 0x74, 0x9f, 0x4c, 0x3a, 0xd4, 0x02, 0xf2, 0xdc, 0xe3, 0xf0, 0xe4, 0x47,
0x97, 0xbb, 0x11, 0xcf, 0x40, 0xdd, 0xc5, 0x00, 0x71, 0xdc, 0x64, 0xea, 0x78, 0xa5, 0x4a, 0x91,
0x03, 0xca, 0xfe, 0x8b, 0x76, 0xf0, 0x88, 0x32, 0x6b, 0x2a, 0xdc, 0x0c, 0x4d, 0xf1, 0x7c, 0xcb,
0x30, 0x25, 0x91, 0x1e, 0x0c, 0x41, 0xea, 0x46, 0x52, 0x1c, 0xc9, 0x1d, 0xda, 0xd4, 0xe4, 0xf1,
0x66, 0x4d, 0x30, 0x1a, 0x9a, 0x6d, 0xa6, 0x5b, 0xac, 0xbc, 0x33, 0xba, 0x31, 0xf1, 0x75, 0x1f,
0x0e, 0xee, 0x7c, 0x7b, 0xee, 0x11, 0x23, 0xcd, 0x5c, 0x23, 0x46, 0xba, 0xe7, 0x7d, 0xcb, 0xb8,
0x5a, 0xa0, 0x2f, 0x06, 0x99, 0xf8, 0x3b, 0x68, 0x1d, 0x4d, 0xd6, 0xe9, 0x48, 0x57, 0xdf, 0xa4,
0xb2, 0x66, 0x0f, 0x12, 0x6f, 0x51, 0x4a, 0x88, 0xff, 0x14, 0xe8, 0x7e, 0x2e, 0xff, 0x2b, 0x8c,
0xd6, 0x93, 0x00, 0xad, 0xe1, 0xee, 0xbf, 0x10, 0x7d, 0xa4, 0x19, 0x51, 0xa6, 0xe0, 0x93, 0x80,
0xc7, 0x14, 0xd0, 0x7e, 0x0a, 0x46, 0x84, 0x5e, 0x32, 0x97, 0xc1, 0xd9, 0x16, 0x77, 0x22, 0x88,
0x20, 0x78, 0x6e, 0xa3, 0x16, 0x4b, 0x6a, 0xb1, 0x37, 0x88, 0x24, 0x39, 0xc0, 0x04, 0x8c, 0x15,
0xfe, 0xc2, 0xe4, 0xe4, 0xbd, 0xce, 0x68, 0xf6, 0x61, 0xa5, 0xa5, 0xdb, 0xf8, 0x16, 0x53, 0xe8,
0xb3, 0xc0, 0x08, 0xd0, 0x93, 0x65, 0xa0, 0xc9, 0x19, 0x1b, 0x6b, 0x6d, 0x1d, 0xac, 0x00, 0x41,
0xf3, 0x18, 0x30, 0xfa, 0xba, 0x96, 0xd9, 0x02, 0x33, 0x5e, 0x88, 0xc0, 0x2a, 0x22, 0xc7, 0x80,
0x81, 0x55, 0x34, 0x1e, 0x4b, 0xdf, 0x5d, 0x34, 0xf5, 0x6b, 0xcd, 0x4a, 0x0b, 0x12, 0x23, 0xda,
0x68, 0x9c, 0x31, 0x66, 0x81, 0x75, 0x6c, 0x6e, 0x46, 0xaf, 0x68, 0x68, 0x34, 0x5c, 0xb6, 0x0a,
0x56, 0x73, 0xb4, 0xcd, 0xcd, 0x0f, 0xb1, 0x4d, 0xe3, 0x21, 0xde, 0x05, 0x12, 0x5f, 0xf1, 0x6c,
0x99, 0x09, 0xb9, 0x2f, 0xd8, 0x9d, 0x64, 0x78, 0x29, 0x36, 0x56, 0x49, 0xb0, 0x80, 0x91, 0x06,
0xc1, 0x2a, 0x31, 0x78, 0x02, 0xac, 0x3c, 0x2a, 0x02, 0x21, 0xa5, 0xf6, 0xe3, 0x87, 0x09, 0xac,
0xc3, 0x04, 0x2e, 0x61, 0xa6, 0x65, 0x21, 0x0c, 0xfc, 0xa7, 0xf0, 0x03, 0xff, 0x07, 0xf5, 0xa6,
0x9e, 0xa5, 0x4d, 0xc7, 0x4c, 0x83, 0xd5, 0x16, 0x0b, 0xd8, 0xed, 0xe8, 0x23, 0xe9, 0xa5, 0xbb,
0x13, 0xd0, 0x54, 0x04, 0xc0, 0x21, 0x02, 0xdb, 0x89, 0x36, 0x09, 0x70, 0xdf, 0x6b, 0x15, 0x9a,
0xac, 0xe5, 0x58, 0x45, 0x7a, 0x11, 0x52, 0xac, 0xea, 0x7b, 0xb5, 0x51, 0x19, 0x8b, 0x08, 0x46,
0x27, 0xa6, 0xa8, 0x78, 0xef, 0x8b, 0x59, 0xa9, 0x9c, 0x29, 0x8a, 0x1b, 0xd6, 0x9a, 0xe6, 0xde,
0xf1, 0xbb, 0xbe, 0x12, 0x96, 0x2e, 0xe8, 0xf9, 0x3f, 0x38, 0xc4, 0x0b, 0x0c, 0xd8, 0x6e, 0x0e,
0xfe, 0x4e, 0x06, 0x57, 0xc7, 0x78, 0x17, 0x73, 0xe2, 0x25, 0xa2, 0x8b, 0x7b, 0x88, 0x33, 0x18,
0xa4, 0x9b, 0x19, 0x6b, 0x2f, 0xa0, 0xf9, 0xcc, 0x3d, 0xc5, 0xc4, 0x86, 0x29, 0x62, 0xa7, 0xfe,
0x7c, 0x93, 0x38, 0x99, 0xec, 0x2b, 0xa9, 0x46, 0xb6, 0xc2, 0x6f, 0xe7, 0xe9, 0xa1, 0x78, 0x6c,
0x96, 0x17, 0xfa, 0xca, 0x76, 0xce, 0xff, 0x99, 0x17, 0x4b, 0x80, 0xd1, 0x42, 0xa1, 0xd1, 0xe8,
0x2b, 0x34, 0x25, 0xd5, 0xc8, 0x63, 0x8a, 0x58, 0x09, 0xa5, 0x00, 0x00, 0xc6, 0x99, 0xd8, 0x4d,
0xc9, 0xfe, 0xf4, 0xd0, 0xd9, 0x6f, 0xfc, 0xea, 0x3b, 0x78, 0x49, 0x54, 0x5f, 0x99, 0xe3, 0x8d,
0x5b, 0xc8, 0xcb, 0x8a, 0x60, 0x17, 0xff, 0xe2, 0xe7, 0x42, 0x35, 0x2b, 0x32, 0x72, 0x51, 0x8c,
0xae, 0x1d, 0xf1, 0x15, 0x2e, 0xae, 0x6f, 0xa6, 0x7b, 0x13, 0x98, 0x1f, 0xd1, 0xfd, 0x83, 0x1b,
0x9f, 0x83, 0xa3, 0xe5, 0x24, 0xd2, 0x26, 0xf7, 0x15, 0x5f, 0x60, 0x27, 0x90, 0xd0, 0x7e, 0x2d,
0x47, 0x5f, 0xc6, 0x6a, 0x0f, 0x12, 0xec, 0x3a, 0x68, 0x8e, 0x7a, 0xe7, 0x93, 0xac, 0x65, 0x58,
0xa7, 0x6b, 0xde, 0xff, 0x4a, 0x1b, 0xe2, 0x56, 0x9f, 0x08, 0x8e, 0x9c, 0x13, 0x8d, 0x47, 0x88,
0x79, 0x7b, 0x76, 0x1f, 0x5d, 0x2d, 0x04, 0xb0, 0x26, 0xde, 0xcd, 0x42, 0xbc, 0x6b, 0x4f, 0x11,
0x4c, 0x32, 0xb2, 0xd7, 0xe6, 0xb2, 0xd0, 0x80, 0x11, 0x6e, 0x67, 0x07, 0xbb, 0x45, 0x78, 0xf6,
0xc7, 0x3f, 0x0b, 0x1e, 0x6a, 0xb4, 0x81, 0x07, 0xe8, 0xe9, 0xb0, 0xd8, 0xa9, 0x4e, 0x7e, 0xee,
0xdd, 0xd5, 0xc3, 0xcf, 0xe6, 0x91, 0x72, 0xb3, 0x39, 0x9e, 0xee, 0x89, 0x8c, 0x43, 0x14, 0xbc,
0x3b, 0x57, 0xd6, 0xdd, 0x11, 0x49, 0x7b, 0x1a, 0x3f, 0x92, 0x3f, 0xb3, 0x6a, 0x91, 0xdb, 0x92,
0xa1, 0x63, 0xb5, 0x70, 0x2f, 0xe7, 0x18, 0xcd, 0xb8, 0xea, 0x90, 0x75, 0xe4, 0x86, 0x8a, 0x28,
0x42, 0x71, 0x13, 0x76, 0xcd, 0x19, 0xeb, 0xc9, 0x8e, 0x85, 0xc2, 0x12, 0xb4, 0xd1, 0x58, 0x8c,
0xf0, 0xdf, 0x70, 0x61, 0xfe, 0x05, 0xdf, 0xa5, 0x09, 0x88, 0x8a, 0xe0, 0x73, 0xf9, 0xe6, 0x83,
0x30, 0x52, 0xcc, 0xb4, 0x05, 0x30, 0xbe, 0x9b, 0xe9, 0xc1, 0x4e, 0xfc, 0x7a, 0x93, 0xa5, 0xc1,
0xa7, 0xb2, 0x78, 0x85, 0xad, 0x00, 0x6a, 0x5c, 0xcd, 0x4d, 0x46, 0x6f, 0x5b, 0x5a, 0x3a, 0xc9,
0x1b, 0x66, 0x32, 0xf4, 0xcd, 0x09, 0xb8, 0x9d, 0xb7, 0xb8, 0x40, 0x60, 0xbd, 0xf2, 0x11, 0x18,
0xb8, 0x78, 0x64, 0xc6, 0x8b, 0x12, 0x8a, 0xbb, 0x38, 0x82, 0x80, 0x7d, 0x5c, 0x6f, 0x2e, 0xbf,
0x72, 0xff, 0x7d, 0x11, 0xa8, 0xa9, 0x61, 0x60, 0xc9, 0x77, 0xff, 0x52, 0xae, 0xba, 0xb6, 0x38,
0x19, 0x64, 0xfe, 0xd0, 0xf0, 0xc6, 0x25, 0x67, 0x65, 0x58, 0x26, 0x8d, 0x1c, 0xf3, 0x82, 0x2a,
0x6e, 0xa0, 0xb7, 0xa0, 0xdf, 0xdd, 0xe2, 0xdb, 0xb3, 0x5b, 0x12, 0x5e, 0xbf, 0x52, 0x77, 0x62,
0xfd, 0x35, 0x82, 0x30, 0x0d, 0xaf, 0xd3, 0xd1, 0xf2, 0xfc, 0xf6, 0x56, 0x96, 0x3a, 0xb9, 0xd8,
0xde, 0xfe, 0x3c, 0x7a, 0xc5, 0x8a, 0xc1, 0xe2, 0x9d, 0x56, 0x99, 0xf8, 0x75, 0x3f, 0xd2, 0x0c,
0xc3, 0x44, 0x35, 0x73, 0xe8, 0x44, 0xb1, 0xe6, 0xeb, 0x47, 0xf4, 0x44, 0x6f, 0x9a, 0xbe, 0xac,
0x22, 0x89, 0xb7, 0xe4, 0x21, 0x10, 0x9c, 0x1d, 0x7a, 0x43, 0x4f, 0x12, 0xb5, 0x2a, 0xf6, 0xc4,
0xae, 0x4e, 0xe2, 0xc2, 0x71, 0xe0, 0x43, 0xf6, 0x8e, 0x8b, 0x85, 0x9a, 0xbd, 0x64, 0x9c, 0xca,
0xfa, 0xd0, 0x4e, 0xae, 0xdc, 0xd3, 0x5a, 0xce, 0x09, 0xdb, 0x8b, 0x2c, 0x77, 0xce, 0x82, 0x3f,
0xff, 0xab, 0xb5, 0xe2, 0xb2, 0xda, 0xc5, 0x8b, 0x86, 0x79, 0xe1, 0xbc, 0x91, 0xa5, 0x61, 0x04,
0x63, 0x41, 0xa3, 0x7d, 0x69, 0x88, 0xc2, 0x44, 0x64, 0x0e, 0x76, 0xe6, 0xbf, 0xe8, 0xd0, 0x5b,
0xc1, 0xd1, 0xdd, 0x14, 0xe1, 0xc7, 0x43, 0x83, 0xed, 0x51, 0x04, 0xd1, 0x11, 0x69, 0x76, 0x58,
0x47, 0xbd, 0xa1, 0xd7, 0x11, 0x39, 0x3b, 0xf1, 0x84, 0x1f, 0xe2, 0xcf, 0x5a, 0xe8, 0x38, 0x48,
0x5f, 0x72, 0x8e, 0x6c, 0x93, 0x46, 0xc4, 0xd1, 0xe3, 0xe9, 0x91, 0x58, 0x23, 0xb2, 0xb4, 0x19,
0xcb, 0x22, 0x37, 0x16, 0x67, 0x2e, 0xa1, 0x2e, 0xa0, 0xd3, 0xdb, 0x9f, 0x16, 0xe7, 0xfe, 0x46,
0x75, 0x98, 0x2d, 0x2b, 0x2f, 0xc9, 0x50, 0xc8, 0xa0, 0x17, 0xd5, 0x16, 0xd8, 0x89, 0xf4, 0x40,
0x6b, 0x24, 0xd4, 0xcd, 0xbf, 0x44, 0x3a, 0x28, 0x02, 0xb3, 0xec, 0x61, 0xca, 0x49, 0x06, 0x2f,
0x7e, 0xe3, 0x7f, 0xff, 0x0e, 0x77, 0xdd, 0x8d, 0xfd, 0x36, 0xf1, 0x92, 0x3d, 0x40, 0xa0, 0x8f,
0x1e, 0x80, 0x86, 0xca, 0xfb, 0x43, 0x80, 0x4c, 0x2f, 0x24, 0x2d, 0xf4, 0x4e, 0x67, 0xfe, 0x07,
0xc3, 0xfc, 0x4f, 0xcf, 0x61, 0x74, 0x63, 0x5a, 0xc2, 0x7f, 0xb5, 0x56, 0xc5, 0xd1, 0x79, 0x5e,
0xa3, 0x2f, 0x49, 0x7f, 0x3e, 0x44, 0x3e, 0x4c, 0x52, 0xd4, 0x2c, 0x66, 0x36, 0x27, 0x2b, 0xe0,
0x8f, 0x7e, 0xa9, 0x33, 0x66, 0xc3, 0xdd, 0x9a, 0x88, 0xfe, 0x8d, 0x3e, 0x94, 0x45, 0x99, 0x78,
0x83, 0x4f, 0x2a, 0xe9, 0xfc, 0xcb, 0xcc, 0x8c, 0x17, 0xe7, 0x2f, 0x73, 0x7c, 0x5d, 0xfc, 0xd2,
0xc0, 0xeb, 0xa2, 0x58, 0x1f, 0xb7, 0x45, 0x60, 0x86, 0xdf, 0x45, 0x3e, 0x48, 0xf8, 0x8e, 0x09,
0xdb, 0x98, 0x60, 0x6c, 0xa7, 0xb3, 0xb9, 0xcd, 0xcd, 0x4f, 0x8d, 0xaf, 0xd1, 0xf0, 0xd0, 0x01,
0x70, 0x60, 0xa8, 0xcb, 0xd7, 0x76, 0x73, 0x5b, 0x5b, 0x1a, 0xe7, 0x51, 0xe4, 0x56, 0xc3, 0xc1,
0xbe, 0x65, 0xb7, 0x0c, 0x3f, 0xd0, 0x49, 0xc2, 0x45, 0xf8, 0xe2, 0x78, 0x5d, 0x00, 0x81, 0xb2,
0x0e, 0x46, 0x17, 0x0f, 0x85, 0x7e, 0x16, 0x99, 0xb8, 0xb7, 0xe6, 0x91, 0x7e, 0x88, 0x51, 0xb0,
0xfb, 0xbf, 0xc2, 0x9a, 0x86, 0x6b, 0x5a, 0x9c, 0x8f, 0xca, 0x43, 0x82, 0x81, 0xc0, 0xf5, 0xe0,
0xc2, 0x65, 0x3c, 0x62, 0x9b, 0xe2, 0xa2, 0x97, 0x30, 0x5b, 0x90, 0xb6, 0x95, 0x8c, 0xa9, 0xad,
0xfe, 0x3b, 0xd7, 0x63, 0x7a, 0xeb, 0x8e, 0x58, 0x8b, 0x65, 0xb3, 0x76, 0x00, 0x67, 0x7c, 0x0c,
0x2e, 0xbd, 0x8c, 0x14, 0x6f, 0x7d, 0x0e, 0x53, 0x40, 0x70, 0x07, 0x21, 0x11, 0xd2, 0xe9, 0xb4,
0xcb, 0x74, 0x25, 0xdf, 0x99, 0xe2, 0x2b, 0x08, 0xa4, 0xce, 0x78, 0x03, 0xbd, 0x9f, 0xd1, 0x3b,
0xc6, 0x00, 0xe5, 0xfc, 0x7b, 0xc8, 0x37, 0x37, 0xd9, 0x93, 0xc9, 0x2f, 0x4e, 0x53, 0x27, 0xf0,
0xa0, 0x4f, 0xc2, 0xe4, 0xbd, 0x1c, 0x58, 0x8d, 0xfc, 0x0e, 0x5d, 0x94, 0xbf, 0x7f, 0x47, 0x25,
0x1d, 0x11, 0x66, 0x90, 0x5a, 0x9b, 0xa1, 0x02, 0x1c, 0xea, 0x0d, 0xa4, 0x09, 0xb4, 0x16, 0x5f,
0x5b, 0x59, 0x1e, 0xf3, 0xe6, 0x81, 0xe6, 0xb6, 0x34, 0x8c, 0xb9, 0x77, 0x0b, 0x9b, 0xa7, 0x92,
0x2d, 0xdf, 0x81, 0x06, 0x4a, 0x19, 0x94, 0xe0, 0xe8, 0x6d, 0x6d, 0xf4, 0xda, 0x36, 0x98, 0xf3,
0xe5, 0x52, 0x03, 0x13, 0x4f, 0x93, 0xa2, 0x73, 0x96, 0x72, 0xb4, 0xf5, 0x05, 0xc3, 0x17, 0xb0,
0xbd, 0x5f, 0x92, 0x82, 0x04, 0xe1, 0xcd, 0x09, 0xb8, 0xfa, 0x3e, 0x28, 0x37, 0xb4, 0x3e, 0x2a,
0xb6, 0xb8, 0xcb, 0xcd, 0x2f, 0xb7, 0xf1, 0x3d, 0xe3, 0xbd, 0x99, 0x22, 0xf1, 0x3d, 0x83, 0x7b,
0xab, 0xf8, 0xdd, 0x77, 0x07, 0xfa, 0x76, 0xe2, 0xff, 0x02, 0x77, 0x7d, 0xe1, 0x05, 0xcc, 0xc4,
0x00, 0x00
0x05, 0xa6, 0x01, 0x4d, 0xad, 0x7b, 0x7b, 0x29, 0x0e, 0x2a, 0x0e, 0x26, 0x4c, 0xf1, 0xe6, 0x26,
0x10, 0x52, 0x5f, 0xeb, 0xba, 0x4c, 0x57, 0x61, 0x76, 0xf5, 0x62, 0xf0, 0xac, 0x7d, 0x48, 0xe8,
0x9b, 0x8e, 0x8b, 0x4d, 0xa6, 0x92, 0x90, 0x69, 0xda, 0xee, 0x0e, 0x68, 0x18, 0x29, 0xf6, 0x88,
0xb8, 0x86, 0x19, 0x64, 0x3a, 0xde, 0xb6, 0x08, 0xba, 0x35, 0xf7, 0x85, 0x01, 0xdf, 0x49, 0x7a,
0xb8, 0xa3, 0x50, 0x52, 0x0d, 0xe8, 0x41, 0x0a, 0xd3, 0xf9, 0x9a, 0x67, 0xeb, 0x60, 0x2f, 0xfc,
0x56, 0x61, 0x29, 0xb0, 0xd2, 0xfc, 0x9c, 0x51, 0xe9, 0x6a, 0x4c, 0x2f, 0x54, 0x27, 0x1e, 0x27,
0xcc, 0xc5, 0xd7, 0xb7, 0x81, 0x1d, 0x3b, 0x20, 0x76, 0x8f, 0xec, 0x11, 0x62, 0xe1, 0x2f, 0xa6,
0x54, 0xd1, 0x25, 0x98, 0x74, 0x79, 0x9e, 0x07, 0x23, 0xfb, 0x85, 0xdc, 0x77, 0x60, 0x88, 0x0b,
0x65, 0x46, 0xe0, 0xb8, 0x88, 0xea, 0xd4, 0x4b, 0xc3, 0xba, 0xfa, 0xfd, 0x3b, 0x30, 0xc2, 0xc0,
0x8c, 0x75, 0x86, 0x83, 0xb4, 0xd5, 0x87, 0xae, 0x39, 0x99, 0x6c, 0x35, 0x27, 0x66, 0xb2, 0x62,
0x45, 0x8c, 0x29, 0x5c, 0xb4, 0x16, 0x5b, 0x56, 0xe6, 0x52, 0x7a, 0xbd, 0x4b, 0x5c, 0xa5, 0x9f,
0x0c, 0x08, 0xbe, 0x8f, 0xbb, 0x04, 0xd2, 0xd4, 0x49, 0x3f, 0x83, 0xc1, 0x05, 0x38, 0x9b, 0x0d,
0x88, 0xdb, 0x37, 0xd5, 0x1a, 0x07, 0x25, 0xb8, 0x39, 0x8f, 0x75, 0x8d, 0x24, 0xb0, 0x10, 0x42,
0x0b, 0x24, 0xf9, 0x45, 0xca, 0x2c, 0x6e, 0x99, 0xc0, 0xa8, 0xd1, 0x3c, 0x06, 0x13, 0x85, 0x4f,
0x03, 0xf5, 0x42, 0x2b, 0xf4, 0x05, 0x85, 0xa6, 0xe1, 0x98, 0xc0, 0x32, 0x74, 0xb3, 0x07, 0xab,
0x38, 0xdc, 0x5a, 0x42, 0x35, 0x89, 0x43, 0x0f, 0x0b, 0x79, 0x21, 0xd0, 0x09, 0x09, 0x21, 0x25,
0xc0, 0xf0, 0x09, 0xca, 0x25, 0x3c, 0x6f, 0xb8, 0x43, 0x19, 0x08, 0x51, 0xd3, 0x1c, 0x42, 0xef,
0x6a, 0x06, 0x2c, 0xca, 0x29, 0x7b, 0x97, 0x9e, 0x6f, 0x66, 0x90, 0x86, 0x6f, 0x53, 0x0a, 0x2e,
0xa8, 0xf8, 0xee, 0x77, 0x00, 0xe2, 0x2b, 0xf9, 0x2e, 0x28, 0xf9, 0x1e, 0x13, 0x04, 0xd3, 0x0c,
0x32, 0x7e, 0xb8, 0x3f, 0x91, 0x16, 0xe8, 0x1c, 0xb6, 0x81, 0x55, 0x3d, 0x12, 0x60, 0xe7, 0x7c,
0x2d, 0xc8, 0x01, 0xfb, 0xc3, 0x87, 0x96, 0x74, 0x04, 0x2f, 0x39, 0xfb, 0xd3, 0x7f, 0xca, 0xfd,
0x04, 0xca, 0x5c, 0x94, 0x30, 0xf0, 0xa5, 0x8e, 0xb0, 0x4a, 0xe8, 0x0f, 0x1d, 0x61, 0xd2, 0x27,
0x3e, 0xe5, 0x15, 0xcf, 0x43, 0x71, 0xb2, 0xdd, 0x00, 0xb3, 0x97, 0x7c, 0xd7, 0x01, 0x4d, 0xa6,
0xdf, 0x85, 0xc2, 0x4f, 0x7e, 0xce, 0x28, 0x73, 0x73, 0xd3, 0x93, 0x0b, 0xc0, 0x5a, 0xf8, 0x39,
0xae, 0x2c, 0x5f, 0x50, 0x2c, 0xcd, 0x6c, 0x3d, 0xcc, 0x4b, 0x39, 0xe4, 0x58, 0x2d, 0x64, 0x58,
0x81, 0xbd, 0xe5, 0x34, 0xa8, 0x34, 0xc2, 0xb0, 0x0e, 0x98, 0x08, 0xe4, 0x57, 0x36, 0x31, 0x3e,
0x30, 0xa8, 0x16, 0x0c, 0x9d, 0xfa, 0xbe, 0x68, 0x68, 0x5c, 0x12, 0xf4, 0x2b, 0xfc, 0x9f, 0x07,
0xb3, 0x2a, 0x1c, 0xd6, 0xf1, 0xe9, 0x37, 0x3b, 0x32, 0x4f, 0xcf, 0xfa, 0x25, 0x73, 0x09, 0x46,
0x0c, 0xae, 0x70, 0x49, 0xf5, 0xf6, 0x3f, 0x1c, 0x36, 0xa3, 0xe1, 0x14, 0xf4, 0xbd, 0x25, 0x6d,
0xa2, 0xda, 0xd2, 0x18, 0x92, 0x2e, 0x6d, 0x32, 0x62, 0x35, 0xda, 0x0f, 0x8b, 0xb2, 0xed, 0x07,
0x5a, 0xca, 0x03, 0xc5, 0xe2, 0x2c, 0x58, 0x6e, 0xd4, 0x99, 0x40, 0xff, 0x13, 0xd4, 0x15, 0x92,
0x72, 0x71, 0xe4, 0xcc, 0x7f, 0xfb, 0xe4, 0x6a, 0x1f, 0x86, 0xf0, 0x25, 0x1b, 0x58, 0x51, 0x0c,
0xc9, 0xa3, 0x40, 0xe0, 0xfb, 0x52, 0x52, 0xa4, 0x06, 0xb4, 0xbe, 0xca, 0x10, 0x5d, 0xf9, 0x9e,
0xc8, 0xc5, 0xc4, 0x49, 0x48, 0xfa, 0x3a, 0x2f, 0xad, 0xe8, 0x20, 0x7d, 0x77, 0x03, 0xfa, 0x3a,
0xf1, 0xcd, 0x95, 0xd4, 0x61, 0xba, 0x4b, 0x77, 0x9e, 0x81, 0x7b, 0xac, 0x2b, 0x4d, 0x67, 0x25,
0x52, 0x36, 0xe4, 0x4d, 0xe9, 0x9b, 0xe3, 0x1b, 0xdc, 0xe6, 0x41, 0x4f, 0x49, 0x03, 0x06, 0x35,
0x43, 0x9e, 0xc5, 0x46, 0xe4, 0xed, 0x0b, 0xf1, 0xeb, 0x28, 0xc3, 0x3f, 0xf1, 0x67, 0x83, 0xde,
0x53, 0x67, 0x4c, 0x86, 0x56, 0x64, 0xdb, 0x46, 0x54, 0xfc, 0xe2, 0x8d, 0x27, 0x87, 0x37, 0x67,
0xa7, 0x54, 0x0a, 0x2b, 0xbe, 0xcf, 0xa4, 0x01, 0x0c, 0x9a, 0xde, 0xbd, 0x0b, 0x6c, 0x1a, 0x3b,
0x00, 0x46, 0x2a, 0x6e, 0xe4, 0xf9, 0xaf, 0xa4, 0xf4, 0x1c, 0xaa, 0xc8, 0xb6, 0x59, 0xcb, 0xc1,
0x0d, 0xbc, 0x0d, 0xcf, 0x90, 0xf6, 0x4a, 0x34, 0xc2, 0xef, 0xb1, 0xc4, 0x59, 0xf6, 0xda, 0xc0,
0xf1, 0x83, 0xcc, 0x1f, 0x98, 0x23, 0xd0, 0x17, 0x68, 0x03, 0xfc, 0x5c, 0xc8, 0x55, 0x45, 0xa0,
0x58, 0x18, 0x5d, 0x98, 0x0f, 0xc5, 0x51, 0xb1, 0x8f, 0xbd, 0x62, 0xf8, 0xe0, 0x67, 0x63, 0x67,
0x73, 0x73, 0xec, 0x84, 0x5e, 0xc6, 0x09, 0xdc, 0xf5, 0x9e, 0xc8, 0x1d, 0xb0, 0xc3, 0x89, 0x9b,
0xbe, 0xb8, 0xdc, 0x3f, 0x07, 0x54, 0x41, 0x01, 0x05, 0x1d, 0xd5, 0x40, 0x07, 0x63, 0x87, 0x2a,
0x3b, 0x81, 0x17, 0x33, 0x3d, 0x76, 0xb6, 0xb7, 0xb2, 0x9b, 0x9b, 0xa1, 0x5e, 0x32, 0x56, 0x2f,
0x14, 0xa1, 0x2b, 0x40, 0x3e, 0x01, 0xee, 0xb9, 0x16, 0xe0, 0x9a, 0x78, 0xe6, 0xaf, 0x99, 0xa0,
0xc6, 0x71, 0xa2, 0x2b, 0x81, 0x74, 0x56, 0xbf, 0x70, 0x02, 0x0a, 0x9d, 0x85, 0x71, 0x8b, 0x98,
0x8a, 0x74, 0x33, 0x8c, 0xf3, 0x10, 0x8e, 0x57, 0x27, 0xc3, 0x68, 0xe8, 0x9e, 0x6c, 0xd2, 0x9b,
0x00, 0x10, 0x34, 0x7c, 0x44, 0x81, 0xb9, 0x1e, 0x1a, 0x88, 0xdd, 0x8e, 0x6b, 0xa3, 0x1e, 0xc3,
0x64, 0x1d, 0x95, 0x55, 0x47, 0xa0, 0x58, 0x11, 0x54, 0x43, 0xcf, 0x40, 0xbe, 0xa7, 0xbb, 0xba,
0x09, 0xb4, 0xea, 0x66, 0x2a, 0xa5, 0x02, 0xa2, 0xd5, 0x09, 0xa7, 0x26, 0xdd, 0x2d, 0x9a, 0xfc,
0x2f, 0x93, 0xcf, 0xe4, 0x4b, 0x98, 0x6d, 0xac, 0xce, 0xde, 0xc2, 0xdc, 0x7f, 0x39, 0x7c, 0xa6,
0x24, 0x22, 0x17, 0x35, 0x77, 0x40, 0x49, 0x4a, 0x70, 0xa9, 0x64, 0xb6, 0x81, 0xbe, 0x13, 0x60,
0xfb, 0x1c, 0x3a, 0x7d, 0xa7, 0xc0, 0xd2, 0x52, 0x9c, 0x90, 0xe0, 0xf0, 0xee, 0x0a, 0xcf, 0x47,
0xa6, 0xa7, 0x1a, 0xce, 0xef, 0xdf, 0xe6, 0x8e, 0x13, 0x54, 0x70, 0x76, 0x40, 0xa6, 0x0c, 0x91,
0xa2, 0xf0, 0x0b, 0xaa, 0x40, 0x69, 0xe1, 0x0b, 0x70, 0x53, 0x07, 0x45, 0x37, 0x48, 0x77, 0x00,
0x00, 0xd3, 0xbf, 0x5d, 0xac, 0x6e, 0x6e, 0x7e, 0x31, 0x59, 0x9a, 0x91, 0xa2, 0x81, 0x21, 0x98,
0xfe, 0x1d, 0xbb, 0xb2, 0xb9, 0xc9, 0xf2, 0x43, 0xe5, 0xbd, 0x74, 0x4c, 0x71, 0xb7, 0x4a, 0xe2,
0xbf, 0xb0, 0x8a, 0x43, 0xd0, 0x6a, 0xd2, 0x43, 0x1e, 0x3c, 0x98, 0x6c, 0xdb, 0x1c, 0xe3, 0x12,
0x02, 0xfc, 0x00, 0x46, 0x3d, 0xfd, 0xef, 0xd7, 0x77, 0xd7, 0xde, 0xfe, 0xee, 0xaa, 0xfe, 0xae,
0x04, 0x7d, 0xef, 0x00, 0xb7, 0xfd, 0x8f, 0x19, 0x99, 0x7f, 0xcf, 0xb8, 0x6a, 0x38, 0x8b, 0xbe,
0x3d, 0x00, 0xb3, 0xdc, 0x39, 0x68, 0xcf, 0x5e, 0x76, 0x06, 0xaa, 0xff, 0x5a, 0x34, 0x63, 0x79,
0xfe, 0x46, 0x6f, 0x56, 0xbc, 0xa8, 0x33, 0x18, 0x3f, 0xf1, 0xd1, 0x42, 0x9d, 0xf0, 0x9b, 0x9b,
0xf4, 0xeb, 0x07, 0xf9, 0xb9, 0x78, 0x4a, 0x43, 0x6a, 0x12, 0x26, 0x32, 0xf8, 0x09, 0x43, 0x0b,
0x7b, 0x20, 0x2f, 0x75, 0x69, 0x8a, 0x3b, 0x2d, 0x21, 0x37, 0x64, 0x50, 0xd6, 0xf2, 0xf2, 0x42,
0xd0, 0xfc, 0xa4, 0xb4, 0xe5, 0x84, 0xba, 0x27, 0x59, 0xda, 0x9d, 0xa4, 0xfb, 0x4a, 0x3d, 0x2d,
0xfc, 0xfb, 0xf7, 0x17, 0xbf, 0x12, 0xcf, 0xe0, 0xc2, 0x1c, 0xb2, 0xee, 0x7b, 0x5e, 0x51, 0x18,
0xbd, 0xd6, 0x33, 0x92, 0xb8, 0x4d, 0xe0, 0x17, 0xf4, 0x47, 0xe3, 0xa6, 0x41, 0x07, 0xde, 0xa1,
0x9f, 0xb5, 0xa4, 0x4a, 0xf0, 0x2d, 0xb9, 0x90, 0x66, 0x08, 0xc1, 0xa3, 0xb5, 0x78, 0x7c, 0xd5,
0xe3, 0xbe, 0x2a, 0x37, 0xec, 0xa9, 0x7a, 0xd5, 0x7d, 0xdc, 0x7d, 0x88, 0xa9, 0x57, 0x7d, 0x27,
0xf4, 0x8c, 0x7b, 0x08, 0x8b, 0xb5, 0x67, 0xed, 0xd2, 0x57, 0x41, 0x33, 0x25, 0x83, 0x2e, 0x30,
0x59, 0x41, 0x43, 0x83, 0x78, 0xb7, 0x48, 0x00, 0x13, 0xa0, 0x4a, 0x72, 0xc7, 0xbf, 0x6b, 0x8a,
0xbe, 0x20, 0x18, 0xc4, 0x67, 0x95, 0xfe, 0x43, 0x91, 0x43, 0x26, 0x44, 0x69, 0x99, 0x83, 0x01,
0x48, 0x15, 0x64, 0xb1, 0xd6, 0x94, 0x8b, 0x31, 0x02, 0x4b, 0x23, 0x2a, 0x32, 0x01, 0xbc, 0x34,
0x4e, 0x36, 0x25, 0x1b, 0x38, 0x40, 0xcc, 0x7a, 0xf2, 0x05, 0x1b, 0xa1, 0xec, 0x86, 0x62, 0x9b,
0xc0, 0x00, 0x06, 0x6e, 0xa3, 0x41, 0x05, 0x2d, 0x7d, 0xde, 0x16, 0xf9, 0xf0, 0x50, 0x1b, 0x21,
0xa5, 0xf3, 0x1d, 0x39, 0x0c, 0x46, 0x82, 0x60, 0x99, 0xf4, 0xad, 0x45, 0xc4, 0x6f, 0x86, 0x0f,
0x36, 0x68, 0xe0, 0x5b, 0xa0, 0x5a, 0x3b, 0x70, 0xbb, 0x7a, 0x92, 0xfc, 0xfe, 0x0d, 0x09, 0x5f,
0x1a, 0x5e, 0x2e, 0x6a, 0x7d, 0xe1, 0x82, 0x31, 0xf5, 0xd2, 0x62, 0xd0, 0x3e, 0xd2, 0x2e, 0x41,
0x81, 0x37, 0x5f, 0x7e, 0xff, 0x8e, 0xf3, 0x62, 0x21, 0xd0, 0x3a, 0x43, 0x6a, 0xe7, 0x12, 0x2b,
0xf4, 0x36, 0xa1, 0xc8, 0xf2, 0x10, 0x02, 0x45, 0x74, 0xf1, 0xba, 0x63, 0xa0, 0x85, 0xb0, 0xf0,
0xfb, 0x82, 0xea, 0x4c, 0x54, 0x32, 0xf0, 0x31, 0xfd, 0x92, 0x44, 0x58, 0x39, 0x81, 0x49, 0xc5,
0x32, 0xb1, 0xb9, 0xf1, 0xf5, 0x17, 0x7f, 0x72, 0x62, 0x68, 0xc0, 0x51, 0x64, 0xfc, 0xed, 0xc4,
0xff, 0x18, 0x1e, 0xd8, 0xd6, 0x9b, 0xb7, 0xc2, 0x40, 0x21, 0xb0, 0x35, 0xec, 0x51, 0x68, 0x6a,
0xfd, 0x5e, 0x7e, 0x0e, 0x31, 0xab, 0x30, 0x41, 0xa8, 0x1a, 0x15, 0x19, 0x3b, 0x68, 0x62, 0xef,
0x8d, 0x9a, 0x78, 0x61, 0x9c, 0xff, 0xa9, 0x41, 0x93, 0x0f, 0x06, 0xed, 0x85, 0x91, 0xfe, 0xbf,
0x1e, 0x33, 0xd5, 0x38, 0xdf, 0x1b, 0x37, 0xdb, 0x23, 0xfd, 0x8f, 0x0d, 0x3b, 0xe9, 0xed, 0xc1,
0xc2, 0x72, 0xfc, 0xf1, 0x93, 0x0f, 0xcc, 0x65, 0x96, 0x9a, 0x1e, 0x1a, 0x2c, 0x81, 0xfb, 0x77,
0xfd, 0x4b, 0x9d, 0x5b, 0x33, 0xf4, 0xc5, 0x2e, 0xee, 0xe7, 0x90, 0x20, 0xb0, 0x58, 0xcb, 0xdb,
0x23, 0x8a, 0x0f, 0xe4, 0x86, 0xd8, 0x51, 0x6f, 0x61, 0x08, 0xd6, 0xd5, 0x29, 0x80, 0x5a, 0x6c,
0x02, 0xfa, 0xf8, 0xbf, 0x3a, 0x0d, 0x58, 0x27, 0x08, 0x01, 0x60, 0x5a, 0x50, 0x30, 0xb0, 0xcb,
0x79, 0x5f, 0xf5, 0x75, 0x41, 0xf5, 0xa5, 0x39, 0x0e, 0x18, 0xef, 0x49, 0xba, 0x7f, 0x07, 0x36,
0x27, 0x18, 0x62, 0xdb, 0x2e, 0xda, 0xe6, 0x08, 0x9d, 0x0e, 0x94, 0x27, 0xa9, 0xc6, 0xaf, 0xe5,
0x70, 0x82, 0x04, 0xbb, 0x01, 0x33, 0x81, 0x17, 0xb1, 0x79, 0x61, 0x8c, 0x20, 0x53, 0xa1, 0xe6,
0xfc, 0x55, 0x97, 0x39, 0x3f, 0xb6, 0x15, 0x93, 0x72, 0x3f, 0x77, 0xf0, 0x03, 0x19, 0x7c, 0x2c,
0x50, 0x8b, 0x32, 0x8d, 0xa4, 0x57, 0x8d, 0xaf, 0x53, 0xa9, 0x0c, 0x26, 0xdf, 0x3c, 0x08, 0x43,
0xf8, 0xc5, 0xf6, 0xc0, 0xf0, 0xe8, 0x2c, 0x1f, 0xd6, 0x71, 0xe7, 0x4b, 0x63, 0x0e, 0x18, 0x10,
0x32, 0x69, 0xca, 0x9d, 0xf8, 0x99, 0x27, 0xb3, 0x98, 0x90, 0x11, 0x7f, 0xd6, 0x7d, 0x94, 0x08,
0x6e, 0x9c, 0x78, 0x59, 0x85, 0xba, 0xcb, 0x70, 0xa1, 0x0c, 0xac, 0x4b, 0xde, 0xc7, 0x2e, 0x53,
0xb7, 0x11, 0xcd, 0xbe, 0xad, 0x47, 0xf1, 0xc6, 0xb6, 0xd7, 0x5d, 0x86, 0x21, 0x2a, 0x86, 0xd9,
0xee, 0xa2, 0x03, 0xfd, 0xe7, 0x79, 0xb4, 0xae, 0x35, 0x63, 0x48, 0xbc, 0x97, 0xd1, 0x07, 0x6a,
0x9d, 0x83, 0x98, 0xa5, 0x20, 0x8d, 0x06, 0x96, 0x04, 0xb9, 0x57, 0x47, 0xe1, 0x08, 0xb3, 0x60,
0x0d, 0x9d, 0x7e, 0xf2, 0x87, 0x2b, 0x18, 0x02, 0xd3, 0x3e, 0x5c, 0xfe, 0x27, 0xea, 0xe5, 0x34,
0x19, 0x34, 0x74, 0x3a, 0x09, 0xb1, 0xd8, 0xb4, 0x84, 0x92, 0x40, 0x66, 0xbf, 0xc0, 0xfe, 0xdc,
0x5c, 0x87, 0xe0, 0x39, 0xcf, 0x6d, 0xff, 0xa2, 0x40, 0xfe, 0x31, 0x0b, 0x29, 0x21, 0x2e, 0xbf,
0xc3, 0x05, 0x51, 0xa7, 0xdf, 0x58, 0x2c, 0x87, 0x7f, 0x17, 0xe8, 0x37, 0x1a, 0xbb, 0x91, 0xcd,
0xb3, 0x88, 0x62, 0xd4, 0x09, 0xe7, 0x91, 0x88, 0x1d, 0xff, 0xe6, 0x24, 0x9c, 0x35, 0xbf, 0xcb,
0x73, 0x2f, 0x5c, 0x86, 0x45, 0x8d, 0xfc, 0xa2, 0x51, 0x08, 0xa9, 0xd4, 0x9c, 0x4d, 0x22, 0x0b,
0x92, 0x8f, 0x98, 0x2a, 0x8c, 0xbc, 0x2f, 0x9b, 0xc9, 0x05, 0xf3, 0x40, 0xe2, 0x65, 0xc6, 0xb8,
0x1f, 0xe8, 0x10, 0x56, 0x7c, 0x28, 0x1e, 0x31, 0xd4, 0xc9, 0xa3, 0x6f, 0xdf, 0x02, 0x10, 0xd0,
0x1f, 0x86, 0xbd, 0x61, 0x04, 0xb3, 0x08, 0x9c, 0x0b, 0xb7, 0xe7, 0xc2, 0x42, 0xd7, 0xb5, 0x11,
0xa1, 0x1a, 0x1a, 0x97, 0x3c, 0x85, 0x47, 0x1e, 0x94, 0x3a, 0x97, 0xba, 0xbc, 0xfc, 0x44, 0x2f,
0x45, 0x4d, 0x33, 0x0a, 0x76, 0xfd, 0x58, 0x11, 0xa8, 0x4a, 0x54, 0x27, 0x3d, 0x1e, 0x2d, 0x82,
0x38, 0xbc, 0x24, 0x05, 0x7f, 0x08, 0xe8, 0x62, 0xbc, 0xe9, 0xe9, 0xd7, 0x44, 0x19, 0x41, 0x06,
0x68, 0x47, 0x7e, 0x48, 0x87, 0x57, 0x0a, 0x7e, 0x39, 0xa4, 0x47, 0x03, 0x32, 0x48, 0xba, 0xeb,
0xa4, 0x51, 0x72, 0x63, 0xf0, 0x89, 0x0f, 0x44, 0x71, 0x97, 0x89, 0x9a, 0x0e, 0x75, 0xa1, 0x86,
0x72, 0x02, 0xfa, 0xe4, 0xba, 0x36, 0x21, 0x7d, 0x22, 0x59, 0x99, 0x2c, 0xc9, 0xd7, 0xcd, 0x86,
0x99, 0x76, 0xcd, 0x36, 0xbe, 0xe7, 0x22, 0x99, 0x65, 0x94, 0xe5, 0xf8, 0x20, 0xad, 0xb1, 0x0d,
0xf6, 0x00, 0x77, 0x8e, 0xde, 0x1e, 0x49, 0x57, 0x28, 0x44, 0x95, 0xab, 0x3b, 0xdb, 0x50, 0x71,
0xc7, 0x68, 0x24, 0x1d, 0xf8, 0x3f, 0xd3, 0x80, 0x1f, 0x7c, 0x00, 0x02, 0xf2, 0xc4, 0x1d, 0xb1,
0x96, 0xe5, 0xc1, 0x0e, 0x48, 0x34, 0xb9, 0x9a, 0x83, 0x7e, 0xbc, 0x24, 0x2d, 0x5b, 0x14, 0xff,
0x45, 0x4d, 0x0b, 0x6a, 0x97, 0x42, 0xc5, 0xa2, 0x48, 0x0b, 0x0d, 0x9a, 0x9e, 0x49, 0xaa, 0x7b,
0xbc, 0x86, 0xa4, 0x87, 0x94, 0xc5, 0x20, 0x2d, 0x81, 0xdd, 0x2d, 0x98, 0x3f, 0xc1, 0xc2, 0x8e,
0xcb, 0x0a, 0x28, 0xc3, 0x9b, 0x40, 0xff, 0x3b, 0xa0, 0xed, 0xfb, 0x3a, 0x3d, 0x14, 0xa5, 0xbe,
0x66, 0x5c, 0x40, 0xb5, 0x68, 0x3a, 0x6b, 0x41, 0x6a, 0x70, 0x27, 0xc3, 0x61, 0x5f, 0x7a, 0x19,
0x72, 0xa0, 0x07, 0x8e, 0x88, 0x9d, 0xa6, 0xd6, 0xb9, 0xe7, 0xeb, 0x14, 0xd3, 0xd9, 0x42, 0x9a,
0x43, 0xdd, 0x08, 0xca, 0x1d, 0x9a, 0xc0, 0x8c, 0x39, 0x64, 0xec, 0x58, 0x4c, 0x83, 0x25, 0x31,
0xc4, 0x58, 0x27, 0x6e, 0x4b, 0xd6, 0xfd, 0x22, 0x9d, 0xa1, 0xf5, 0x7f, 0xfe, 0x37, 0x80, 0xc2,
0x42, 0x8a, 0x41, 0xd3, 0xf0, 0x01, 0xd4, 0x75, 0x58, 0x24, 0x23, 0xb0, 0x1c, 0xb0, 0xea, 0x3c,
0x01, 0x1c, 0x4c, 0x9a, 0x73, 0x18, 0xb8, 0x44, 0xff, 0xe8, 0xcb, 0x3e, 0xb6, 0xff, 0x97, 0xf1,
0x8f, 0x99, 0x3e, 0xc7, 0x4f, 0xbf, 0x93, 0xdc, 0xee, 0x50, 0xd3, 0xd1, 0xf3, 0x9f, 0x1e, 0x69,
0x2a, 0x1f, 0xcd, 0xea, 0x80, 0xda, 0x2d, 0xe9, 0x09, 0x20, 0x09, 0xca, 0x82, 0xb1, 0xd0, 0x58,
0xeb, 0x6a, 0x69, 0x87, 0xa6, 0xa7, 0xb8, 0x7f, 0x26, 0x92, 0xe8, 0x43, 0xa5, 0x69, 0x36, 0x28,
0xe9, 0x02, 0x97, 0x50, 0x77, 0x07, 0x60, 0xea, 0x47, 0xc1, 0xdc, 0x5a, 0x68, 0x2e, 0x72, 0x42,
0xcc, 0x74, 0x4c, 0x0f, 0x69, 0x3a, 0x1f, 0x2b, 0xdd, 0x06, 0x2a, 0x49, 0x20, 0x99, 0x00, 0xd1,
0x00, 0xc0, 0x97, 0x5d, 0x0f, 0x1c, 0x01, 0x4b, 0xc2, 0x96, 0x06, 0x3b, 0xd1, 0x82, 0x97, 0x9d,
0xeb, 0xe6, 0x19, 0x27, 0x24, 0xbd, 0xdc, 0x4c, 0x56, 0xcc, 0x15, 0xf8, 0x10, 0x61, 0x79, 0x10,
0x90, 0x07, 0x44, 0x5a, 0xd9, 0x87, 0xd5, 0x37, 0x40, 0xb2, 0x4a, 0x78, 0x21, 0x50, 0x9c, 0x60,
0xc4, 0x3a, 0xd2, 0x04, 0x34, 0x82, 0xfa, 0x9b, 0x68, 0x5f, 0x76, 0x70, 0xe4, 0x94, 0x32, 0xbb,
0x96, 0x13, 0x2b, 0x75, 0xd6, 0x6c, 0x25, 0x24, 0x55, 0x05, 0x7e, 0xe5, 0x60, 0xa9, 0x81, 0xa4,
0xc4, 0xc7, 0x03, 0x26, 0xba, 0x33, 0x75, 0x40, 0x81, 0xc6, 0x7c, 0x58, 0x3f, 0xc3, 0x14, 0xba,
0x91, 0xe9, 0xa3, 0x9b, 0xc2, 0xee, 0x21, 0x16, 0x43, 0x14, 0x9a, 0x05, 0x83, 0x97, 0x15, 0xcc,
0xb0, 0x42, 0x40, 0xad, 0xff, 0x5c, 0x42, 0xea, 0xbe, 0x31, 0xd2, 0x6c, 0xd3, 0x18, 0xd0, 0xae,
0x93, 0x34, 0x06, 0x29, 0x53, 0x43, 0x17, 0xc3, 0x35, 0x6c, 0x02, 0x8f, 0x74, 0x6a, 0xf4, 0xb1,
0x66, 0xa5, 0x38, 0x56, 0x19, 0x6c, 0x45, 0x4a, 0x03, 0xbf, 0x98, 0x37, 0xea, 0x65, 0x14, 0x65,
0x31, 0xcb, 0x8b, 0xd8, 0x3f, 0xf6, 0x14, 0x5e, 0xc8, 0xb8, 0x50, 0x82, 0xb0, 0xb0, 0x24, 0x5a,
0x32, 0x3d, 0xa6, 0x54, 0x30, 0x29, 0x1d, 0x0f, 0x0e, 0xf3, 0x62, 0xc2, 0xfc, 0x1a, 0xdb, 0x59,
0x7e, 0x11, 0xe8, 0x21, 0xd6, 0xcd, 0xef, 0x7e, 0xc6, 0xe6, 0xa6, 0xf9, 0xbd, 0x50, 0x37, 0x17,
0x9e, 0x57, 0x0a, 0xf9, 0x87, 0xf9, 0x93, 0xca, 0x21, 0x23, 0x24, 0x87, 0xd2, 0x40, 0xa5, 0x75,
0x2f, 0xca, 0xed, 0x87, 0xf1, 0xb3, 0xe1, 0xa4, 0x4d, 0xf4, 0x57, 0x36, 0xc2, 0x0d, 0x53, 0x4f,
0x7c, 0xa8, 0x1f, 0x46, 0x0a, 0x08, 0xc1, 0xd8, 0xc6, 0xce, 0x60, 0x16, 0xf6, 0xc9, 0x5b, 0x2e,
0x11, 0xc1, 0xe4, 0x1f, 0x10, 0xfa, 0xc7, 0xcc, 0x41, 0x63, 0x98, 0xfa, 0x5a, 0xe1, 0x69, 0x07,
0xfe, 0x6a, 0xfe, 0x19, 0x30, 0xc0, 0x30, 0x9a, 0xde, 0x28, 0x24, 0x00, 0xa3, 0xec, 0x2b, 0xf1,
0x9d, 0x55, 0xf5, 0xcf, 0x47, 0xd0, 0x1b, 0x2c, 0xe9, 0x9d, 0xa9, 0x1c, 0xe6, 0x26, 0x36, 0x0d,
0xd9, 0xb1, 0xea, 0xf8, 0x14, 0x89, 0x85, 0xa7, 0xe5, 0x64, 0x73, 0xc2, 0xf9, 0xe7, 0xc7, 0xfe,
0x31, 0x33, 0xe6, 0x8e, 0x17, 0x32, 0x1d, 0x1c, 0x65, 0xc1, 0xde, 0x26, 0x31, 0x87, 0xe7, 0x12,
0xd8, 0x31, 0x48, 0xd9, 0xe1, 0xbc, 0xcb, 0x34, 0xa9, 0x68, 0xa3, 0x4d, 0x44, 0xe4, 0x5b, 0x70,
0x77, 0x26, 0xed, 0x04, 0xe7, 0x47, 0x82, 0x62, 0x47, 0x33, 0xb4, 0xa7, 0xf4, 0x31, 0x76, 0x3b,
0x0b, 0xeb, 0xde, 0xda, 0xc3, 0x3b, 0x09, 0xe0, 0xc9, 0xd0, 0xfe, 0x02, 0xf1, 0x3b, 0x9c, 0xa4,
0xb8, 0x1c, 0x53, 0x8d, 0x42, 0xfd, 0x87, 0x62, 0x51, 0x49, 0x0e, 0xdd, 0xbf, 0x1c, 0xdb, 0xfe,
0x08, 0x02, 0xe5, 0x0a, 0x70, 0x3a, 0x8f, 0xde, 0x3a, 0x44, 0x3b, 0x10, 0x9c, 0xa6, 0x63, 0x47,
0xa5, 0x18, 0x4c, 0x7a, 0x93, 0xcb, 0xea, 0x23, 0x41, 0x58, 0x29, 0x72, 0xc4, 0x8a, 0xd5, 0x90,
0x97, 0xee, 0x7e, 0x01, 0x50, 0x78, 0xfd, 0x8b, 0xd7, 0x8d, 0xbf, 0x7f, 0x03, 0x0c, 0x8e, 0x00,
0x5a, 0x81, 0xc1, 0x67, 0xbc, 0x4e, 0x7c, 0x74, 0x36, 0x88, 0x8e, 0x6f, 0xf1, 0xf4, 0xa9, 0x03,
0x42, 0x74, 0xca, 0x3c, 0x5a, 0x63, 0x8a, 0x09, 0xd3, 0x48, 0xfc, 0xc3, 0x86, 0x91, 0x05, 0x1c,
0xe8, 0x79, 0x9e, 0xf7, 0x3e, 0x58, 0x5a, 0x06, 0x2c, 0x2d, 0x74, 0xe1, 0x87, 0x07, 0x8b, 0x60,
0x7e, 0x2d, 0xb0, 0xf5, 0x2b, 0x6c, 0xa4, 0xca, 0x38, 0x60, 0x6a, 0xef, 0x8c, 0x35, 0xba, 0x33,
0xc3, 0xcf, 0x14, 0xdc, 0xf8, 0xcb, 0xd5, 0xe8, 0x57, 0x3e, 0x57, 0xf3, 0xfc, 0x34, 0xfb, 0x9d,
0xcb, 0x7c, 0x8e, 0xab, 0xd3, 0xd4, 0x2c, 0xcb, 0xac, 0x84, 0x33, 0x2b, 0xb9, 0x52, 0x89, 0x9b,
0x7b, 0xbf, 0x77, 0x42, 0x5e, 0x12, 0xd9, 0x88, 0xb8, 0x5a, 0x38, 0xdc, 0x4c, 0xa4, 0x7b, 0x96,
0x98, 0xbe, 0x43, 0xd2, 0x9a, 0x55, 0x63, 0xcf, 0xcb, 0x4c, 0x89, 0xc5, 0xfe, 0xd2, 0xe0, 0x3e,
0xc6, 0x46, 0x40, 0xb9, 0x70, 0xf0, 0x03, 0x47, 0x8d, 0xfb, 0x69, 0x69, 0x1a, 0xdf, 0xcc, 0xcf,
0xbc, 0x87, 0xa8, 0x91, 0x40, 0x81, 0xd2, 0x0d, 0x53, 0x9d, 0xb4, 0xcc, 0x01, 0xbe, 0x03, 0x05,
0x6b, 0x48, 0x28, 0x86, 0x02, 0xfc, 0xe9, 0x00, 0x49, 0xff, 0xee, 0xd7, 0xf7, 0xf6, 0x40, 0x74,
0x9f, 0x37, 0x49, 0x0d, 0x2f, 0xe7, 0x87, 0xfe, 0x13, 0x1b, 0x94, 0x58, 0x75, 0x67, 0x21, 0xf7,
0x57, 0xd9, 0x1c, 0xc0, 0x7a, 0x43, 0xd4, 0x2f, 0xc1, 0x08, 0xe7, 0x91, 0x90, 0x68, 0xef, 0x02,
0x29, 0xcf, 0xd5, 0xf5, 0x8d, 0xc6, 0x05, 0x67, 0x32, 0x5e, 0xc9, 0x6f, 0xcc, 0xc2, 0x60, 0x58,
0x93, 0xf8, 0x90, 0x95, 0x21, 0x80, 0x56, 0xcc, 0xa6, 0x4b, 0xa2, 0xdb, 0xd5, 0x90, 0x87, 0xc2,
0x5e, 0x83, 0xd2, 0x62, 0xa3, 0x21, 0xa1, 0x4c, 0xdf, 0xe1, 0xce, 0x33, 0xa0, 0x10, 0xd1, 0xe7,
0x39, 0x2e, 0xb4, 0x5f, 0xc0, 0x0b, 0x41, 0xb5, 0x9d, 0x03, 0x32, 0x54, 0xe5, 0xbb, 0xb8, 0x63,
0xa6, 0x1a, 0x5c, 0x24, 0x78, 0x3e, 0xa1, 0xe1, 0x8d, 0x74, 0x0e, 0x0a, 0x0b, 0x35, 0xcd, 0xd5,
0x00, 0x10, 0x6a, 0x19, 0x58, 0xec, 0xdc, 0x4c, 0x98, 0x60, 0x67, 0xda, 0x8b, 0xc8, 0xf0, 0x44,
0x17, 0x65, 0x56, 0x1a, 0x37, 0x50, 0x91, 0x9d, 0xb2, 0x57, 0x8a, 0xf9, 0x4c, 0x04, 0x5f, 0xb4,
0x4a, 0xd7, 0x28, 0xac, 0x96, 0x39, 0xfd, 0x0a, 0xc4, 0x57, 0x8b, 0x49, 0xdd, 0x00, 0x50, 0x0d,
0x85, 0x18, 0x45, 0xe4, 0x9c, 0x12, 0x7d, 0x54, 0x54, 0x19, 0x11, 0x4a, 0x37, 0xa3, 0xf6, 0xb5,
0x17, 0x0d, 0xbe, 0xd2, 0xb0, 0x66, 0xb1, 0xee, 0x9f, 0xb2, 0xab, 0x03, 0xef, 0xda, 0x50, 0x57,
0xe9, 0x46, 0x23, 0xc2, 0x4e, 0x20, 0x70, 0x1a, 0x60, 0xce, 0x9c, 0xec, 0x9f, 0x75, 0x32, 0x45,
0x88, 0x35, 0x50, 0xf5, 0xc9, 0x5f, 0x75, 0x32, 0x2d, 0x2f, 0x83, 0xc0, 0x53, 0xe1, 0x99, 0x13,
0xd4, 0xb3, 0x21, 0x50, 0x09, 0x4d, 0x7c, 0x03, 0x9f, 0x12, 0x34, 0xb3, 0xe3, 0x70, 0x8b, 0x93,
0x84, 0x37, 0x38, 0xc9, 0x0f, 0xf7, 0x67, 0x63, 0xa6, 0xa9, 0x35, 0xe2, 0xef, 0x61, 0x02, 0xee,
0xd9, 0x0f, 0x30, 0x63, 0x11, 0xc6, 0x67, 0x97, 0x0d, 0xa0, 0xc4, 0xf7, 0x20, 0x20, 0x3c, 0x91,
0x41, 0xe2, 0xe8, 0x89, 0x32, 0xf4, 0x28, 0x88, 0x80, 0xef, 0xa0, 0x27, 0x8c, 0x35, 0x91, 0xf0,
0xc6, 0x22, 0x6a, 0xde, 0xb8, 0xb7, 0x48, 0x9b, 0xa0, 0xf7, 0x8c, 0x5e, 0x74, 0x93, 0xdc, 0x75,
0xe7, 0x6e, 0x8f, 0xe3, 0xbf, 0x8b, 0xfe, 0x2a, 0x5f, 0x51, 0xe4, 0xdf, 0xe8, 0x16, 0xc5, 0x01,
0x9b, 0xdb, 0xe2, 0x8e, 0x13, 0x2a, 0xe1, 0x0c, 0x65, 0x50, 0x59, 0x93, 0x26, 0x5f, 0x33, 0x1b,
0xd5, 0x6a, 0x15, 0x05, 0x7d, 0x0f, 0xf7, 0xba, 0x00, 0x6d, 0x48, 0xde, 0xe8, 0xcb, 0x3c, 0x74,
0x07, 0x7a, 0x92, 0xeb, 0x4e, 0x80, 0xea, 0xb0, 0x9a, 0xa6, 0x0a, 0x4b, 0xd5, 0x45, 0xd0, 0xde,
0x85, 0xc5, 0x31, 0x39, 0xdc, 0x06, 0xc1, 0xff, 0x41, 0xff, 0xa3, 0x34, 0xe9, 0x9f, 0x1f, 0x7c,
0x5f, 0x85, 0x5a, 0x78, 0xd1, 0x7c, 0xb3, 0x0f, 0xe7, 0xe9, 0xff, 0x93, 0x29, 0xf2, 0xb6, 0xcb,
0x71, 0x7e, 0x02, 0xf5, 0xce, 0xef, 0x0f, 0x53, 0xcf, 0x82, 0xfe, 0xa0, 0x66, 0xb6, 0x16, 0x8d,
0x9e, 0xaf, 0x12, 0x71, 0x69, 0x7a, 0xb8, 0x34, 0x19, 0x2e, 0x85, 0xd0, 0x79, 0x35, 0x4e, 0xf8,
0xf6, 0xde, 0x11, 0x35, 0xe0, 0x71, 0xcc, 0xd8, 0xf6, 0xcf, 0xf8, 0xad, 0x46, 0x6c, 0x64, 0x77,
0x37, 0x08, 0x84, 0x59, 0x15, 0xc7, 0xfb, 0xd5, 0x83, 0x94, 0xa0, 0xb7, 0x1f, 0x73, 0xef, 0xa2,
0x7a, 0xc6, 0x86, 0x8c, 0xb8, 0x4d, 0xa3, 0x9f, 0x0b, 0x7a, 0x8d, 0xe3, 0x70, 0x58, 0x4a, 0x3c,
0x90, 0x37, 0xe8, 0x3a, 0x5f, 0xc7, 0x9d, 0x23, 0x87, 0x6d, 0x41, 0x22, 0x72, 0xbc, 0x7e, 0xb5,
0x1c, 0x07, 0xa8, 0x2f, 0x1a, 0xf6, 0x13, 0xce, 0x63, 0xdb, 0x1f, 0xe1, 0x13, 0x23, 0x8b, 0x6d,
0xb4, 0x45, 0xda, 0x0f, 0x42, 0xe5, 0xcb, 0x17, 0xd7, 0xdf, 0x16, 0xf1, 0x2f, 0x58, 0x48, 0xb0,
0x20, 0xe3, 0x6c, 0x03, 0x24, 0x11, 0x1b, 0x04, 0xba, 0x00, 0x80, 0x28, 0x1a, 0xe8, 0x8e, 0x12,
0xa2, 0xa1, 0x16, 0x98, 0xce, 0x7b, 0xf9, 0x90, 0xdb, 0x00, 0xcd, 0x86, 0xe7, 0xa3, 0xbe, 0x21,
0x86, 0x43, 0xb1, 0x4e, 0xbe, 0xfb, 0xf0, 0xea, 0x04, 0x91, 0x42, 0x0d, 0x61, 0xd0, 0xc5, 0x5d,
0xec, 0x09, 0x5d, 0xbd, 0x82, 0x2e, 0x48, 0x82, 0xdd, 0xf8, 0x92, 0xc5, 0x8e, 0x45, 0xdb, 0x71,
0x78, 0xde, 0x6e, 0xa0, 0x97, 0x28, 0x03, 0x2d, 0xfc, 0x0b, 0x6c, 0x18, 0x81, 0x39, 0x8a, 0x04,
0x1d, 0xbe, 0x72, 0x3f, 0x05, 0x09, 0xbe, 0xf2, 0x3f, 0x69, 0x18, 0x50, 0x02, 0xe3, 0x94, 0x6c,
0x90, 0xf7, 0x0e, 0x6f, 0x60, 0x7f, 0x3c, 0xf3, 0x9c, 0xde, 0x01, 0x85, 0x9e, 0xe9, 0x15, 0x69,
0xd2, 0x72, 0x5a, 0x00, 0x2a, 0x38, 0x83, 0xe3, 0x53, 0x03, 0x36, 0xbb, 0x95, 0xad, 0x43, 0xfb,
0x7e, 0x0e, 0x0c, 0x00, 0x31, 0xa3, 0x47, 0x53, 0xb2, 0xb4, 0x57, 0xe1, 0x94, 0xdc, 0xcf, 0xf9,
0x17, 0x40, 0x6b, 0xc3, 0x06, 0x84, 0xd9, 0x0d, 0x92, 0xf1, 0xf1, 0x81, 0xe3, 0x09, 0x7c, 0x5a,
0xbf, 0x30, 0xdc, 0x01, 0xf5, 0x26, 0x01, 0x6d, 0x69, 0x01, 0xcd, 0x6c, 0x1e, 0x44, 0x9b, 0x3d,
0xff, 0xe7, 0x2f, 0xde, 0x53, 0x76, 0x7e, 0x85, 0x2e, 0xb0, 0x4a, 0xac, 0xbd, 0xc1, 0x0a, 0x63,
0xe0, 0x9e, 0x4d, 0x8d, 0x46, 0x1b, 0xd4, 0x7f, 0x45, 0xa9, 0x85, 0x2e, 0xb3, 0x0b, 0xfa, 0xb6,
0x97, 0x60, 0xa1, 0x51, 0xa5, 0xc7, 0xdf, 0x36, 0x64, 0x6f, 0x82, 0x59, 0xa8, 0xa3, 0x64, 0xce,
0xb6, 0x06, 0x41, 0x77, 0xa4, 0x39, 0xe1, 0x5d, 0xc1, 0x95, 0xcb, 0x96, 0xee, 0x44, 0x0a, 0x0e,
0x3a, 0x5a, 0x38, 0x01, 0x7d, 0x20, 0x80, 0x8c, 0xf0, 0xbe, 0x64, 0xdc, 0x65, 0x87, 0x83, 0x0d,
0x1d, 0x5d, 0xc5, 0xb6, 0xbc, 0x9f, 0xd0, 0x60, 0x83, 0x79, 0x1b, 0x40, 0xa3, 0x69, 0x31, 0x8d,
0x06, 0x25, 0xbe, 0xef, 0xbe, 0x8b, 0x59, 0x1b, 0xa1, 0xbb, 0xd0, 0xb9, 0x65, 0xe3, 0x65, 0xe1,
0x9c, 0xa3, 0x6a, 0x35, 0xee, 0x74, 0x32, 0xcd, 0x79, 0x61, 0xc3, 0x78, 0x3a, 0x34, 0x4e, 0xc1,
0x42, 0x2f, 0x0e, 0x06, 0x1b, 0xd6, 0x72, 0xd9, 0x42, 0x43, 0xbf, 0xfb, 0x97, 0x46, 0x60, 0xc4,
0x92, 0x74, 0x5f, 0x72, 0x9a, 0xae, 0x6b, 0x6b, 0xa0, 0x45, 0x91, 0x24, 0x07, 0x0a, 0x3f, 0xc7,
0x83, 0xd2, 0x29, 0xf9, 0x49, 0xd4, 0xe5, 0xc5, 0xee, 0x68, 0xa9, 0x01, 0xd9, 0x09, 0x66, 0x83,
0x99, 0xe4, 0x34, 0x25, 0xe3, 0xd6, 0x93, 0xe6, 0xc2, 0x1e, 0x85, 0x65, 0xfe, 0xbd, 0x28, 0x32,
0xf5, 0x28, 0xe7, 0xbb, 0xb1, 0x7e, 0xad, 0x7e, 0x55, 0x62, 0xe8, 0x85, 0x04, 0x74, 0x5c, 0xff,
0x14, 0x42, 0xf7, 0x51, 0xb3, 0x14, 0xfe, 0x57, 0x1d, 0xa3, 0xe3, 0x50, 0x35, 0x42, 0xdd, 0x61,
0xdd, 0x81, 0x92, 0x98, 0x85, 0x81, 0xa1, 0x8e, 0x4b, 0x11, 0x18, 0x0d, 0xc7, 0x73, 0xd7, 0x46,
0x00, 0xae, 0x83, 0x1d, 0xc4, 0x4e, 0x32, 0xcb, 0x83, 0x82, 0x44, 0x07, 0x6f, 0xd2, 0x08, 0xbb,
0x3d, 0xbd, 0x8b, 0x6b, 0x42, 0xa4, 0x1a, 0x8e, 0x19, 0xa1, 0xe1, 0xf4, 0x69, 0x76, 0x32, 0xf1,
0xaf, 0xb6, 0x19, 0x8a, 0xce, 0x60, 0xa0, 0x93, 0x5c, 0xfc, 0x4d, 0x8a, 0xe1, 0xbd, 0xce, 0x85,
0x1b, 0xd6, 0xdf, 0x71, 0xa5, 0x67, 0x72, 0x38, 0xea, 0x5d, 0xfe, 0x50, 0xba, 0xae, 0x0a, 0x05,
0xf1, 0x4e, 0xc9, 0xe1, 0x8e, 0x6d, 0x00, 0x0c, 0x37, 0x0a, 0xfe, 0x26, 0x30, 0x20, 0xc3, 0xc8,
0x59, 0xbb, 0x6d, 0xd1, 0x27, 0x47, 0x6a, 0x89, 0x59, 0xff, 0x98, 0x45, 0xb2, 0xe7, 0xe6, 0x2f,
0xbe, 0x0e, 0xa6, 0x9b, 0x1b, 0x82, 0x2a, 0xa9, 0x6a, 0x18, 0xa4, 0x90, 0x5c, 0x57, 0xf7, 0x55,
0x97, 0xc1, 0x9e, 0x7b, 0xb7, 0xf2, 0x3c, 0x8e, 0x42, 0xdc, 0xa8, 0x61, 0x61, 0x22, 0xe1, 0xfb,
0x83, 0xc3, 0xc1, 0x22, 0x78, 0x2c, 0x91, 0x1a, 0xfd, 0xda, 0x88, 0xd0, 0x38, 0x0b, 0x86, 0x70,
0x6a, 0x74, 0xe9, 0x6c, 0xab, 0x9c, 0x7e, 0x79, 0x78, 0xe1, 0x83, 0x58, 0x3b, 0x86, 0xaf, 0x70,
0x1e, 0xc5, 0x99, 0x5f, 0x0d, 0x51, 0x07, 0x0c, 0xa5, 0x11, 0x3a, 0x9f, 0x08, 0x64, 0x04, 0xe6,
0xac, 0x6c, 0x13, 0xe9, 0x65, 0xee, 0x2b, 0x05, 0x78, 0xcf, 0x44, 0x58, 0x27, 0xf8, 0xb6, 0xf6,
0xce, 0x09, 0x7a, 0x38, 0xff, 0x5b, 0x4a, 0x0f, 0x02, 0x19, 0xd0, 0x8e, 0x44, 0x2d, 0xb3, 0x21,
0xb2, 0x0d, 0xc0, 0xcd, 0x4d, 0xb2, 0xd4, 0x51, 0x6f, 0x52, 0x57, 0x74, 0x92, 0xac, 0xea, 0x64,
0x7b, 0x12, 0xee, 0xa3, 0xa7, 0xa2, 0x86, 0x1b, 0x8c, 0xa8, 0xa9, 0xa0, 0x49, 0x35, 0x28, 0x8f,
0x68, 0xd0, 0x1d, 0x7e, 0x4f, 0x7f, 0xfc, 0xdc, 0x88, 0x82, 0xab, 0x3a, 0xbe, 0xa5, 0xa2, 0x0d,
0x84, 0xd4, 0xd4, 0x79, 0xdc, 0xb2, 0x0f, 0x5d, 0x81, 0xcb, 0xfb, 0x5b, 0x71, 0x4b, 0xb9, 0xec,
0x22, 0x9a, 0xf5, 0xf9, 0x8b, 0xbb, 0x55, 0x78, 0xaf, 0xcf, 0xec, 0xe6, 0xb0, 0xf8, 0x19, 0x26,
0xb6, 0xcd, 0x10, 0x3f, 0xc8, 0xc4, 0x2a, 0xe0, 0x75, 0x5b, 0xf1, 0xf2, 0x8a, 0xe2, 0xae, 0x2c,
0xfc, 0xb2, 0x12, 0x3a, 0x2d, 0x4d, 0x4b, 0xd5, 0xbc, 0x4a, 0xe1, 0xbd, 0x97, 0x98, 0x3a, 0xe8,
0x67, 0x75, 0x58, 0x8c, 0x70, 0xd2, 0x67, 0xc8, 0xf1, 0x23, 0x41, 0xc6, 0xc7, 0x27, 0xbf, 0x18,
0x41, 0x44, 0x88, 0x81, 0x52, 0x41, 0xb4, 0x77, 0x4e, 0x6c, 0x24, 0xa1, 0x40, 0x90, 0x81, 0x75,
0x19, 0x96, 0xd8, 0x09, 0x82, 0xbb, 0x66, 0xc6, 0x0e, 0x28, 0xec, 0xf8, 0xe0, 0x87, 0xc7, 0xec,
0x70, 0xff, 0x0d, 0x75, 0x13, 0x18, 0xec, 0x4d, 0xf3, 0xf9, 0x98, 0x0a, 0x4f, 0xf5, 0xb6, 0x15,
0xa5, 0x69, 0xb2, 0xc1, 0x42, 0x2d, 0x44, 0x61, 0x66, 0x0c, 0x07, 0xc4, 0xd6, 0x94, 0xda, 0x17,
0x71, 0xce, 0xd7, 0x82, 0xad, 0xd0, 0x45, 0x6f, 0xfc, 0xf8, 0x61, 0x14, 0x87, 0x63, 0xc7, 0x53,
0x28, 0xeb, 0x4c, 0x5d, 0xc2, 0x08, 0xf4, 0xc0, 0x6a, 0x1e, 0x03, 0xa7, 0x5b, 0x04, 0x80, 0xa1,
0x1b, 0x02, 0xac, 0x9e, 0x31, 0x8d, 0x95, 0x1a, 0x63, 0x54, 0x31, 0x97, 0x5a, 0xba, 0xf3, 0xda,
0x0f, 0xac, 0xa6, 0x95, 0xeb, 0x49, 0x0c, 0x71, 0x23, 0xe3, 0x44, 0x10, 0x05, 0x87, 0x61, 0xfb,
0x69, 0x74, 0x54, 0x3b, 0x0e, 0x46, 0xff, 0xfb, 0x27, 0x0c, 0xdc, 0x70, 0xb8, 0x09, 0xa1, 0x5a,
0x37, 0xcf, 0xd4, 0x5d, 0xea, 0x69, 0xe7, 0x67, 0x91, 0x78, 0xbf, 0xd0, 0xe6, 0x31, 0x2f, 0x84,
0x7e, 0x2c, 0xa2, 0xe9, 0xbc, 0x43, 0xcb, 0x41, 0x58, 0xef, 0xb2, 0x51, 0xfe, 0x67, 0x11, 0x8b,
0x3a, 0xcf, 0x79, 0x5a, 0x32, 0x98, 0x02, 0x60, 0xbc, 0xd7, 0xcd, 0x9d, 0xc0, 0x90, 0x6f, 0x98,
0x42, 0x68, 0x43, 0xcf, 0x3b, 0xa8, 0xbd, 0xb9, 0x19, 0xd9, 0xfc, 0x02, 0xc5, 0x00, 0xcc, 0xcf,
0xc0, 0xf4, 0xc7, 0x08, 0x41, 0x1a, 0x20, 0x98, 0xc4, 0x63, 0x11, 0xf0, 0xbd, 0xe3, 0x7d, 0xd7,
0x5c, 0x60, 0xc6, 0xc2, 0x18, 0xdd, 0xd8, 0x34, 0x48, 0x90, 0x22, 0xe8, 0x8f, 0x83, 0x2b, 0xff,
0x30, 0xb0, 0xd0, 0x6b, 0xd0, 0xb4, 0x88, 0x41, 0xdb, 0x1b, 0xa3, 0x5f, 0x19, 0xa3, 0x8d, 0x66,
0xdf, 0x46, 0xdf, 0x6a, 0xae, 0x3d, 0x04, 0x6d, 0x12, 0x17, 0xd7, 0xab, 0x73, 0x4a, 0x7a, 0x92,
0x8e, 0x11, 0xf0, 0x4b, 0xf8, 0x9c, 0x87, 0x8d, 0x32, 0x7f, 0x70, 0x7e, 0x84, 0x28, 0x4e, 0x24,
0xf1, 0xc8, 0x0c, 0xad, 0x05, 0x3c, 0xd2, 0x4e, 0xd0, 0x53, 0x1f, 0xe7, 0x4e, 0x4c, 0xa3, 0x80,
0x3c, 0xd9, 0xd6, 0x04, 0x43, 0x6f, 0xa2, 0x0f, 0x50, 0xa7, 0x2e, 0x7d, 0x7d, 0x6f, 0x68, 0xb3,
0x5f, 0xea, 0xd0, 0x86, 0x9f, 0x37, 0x92, 0xf7, 0xd3, 0x65, 0x45, 0xdb, 0x92, 0x4a, 0x58, 0x02,
0xbe, 0xb4, 0x9d, 0xee, 0x62, 0x76, 0x60, 0x0c, 0x90, 0x34, 0x54, 0x2d, 0x83, 0x8e, 0x27, 0x76,
0xbc, 0x1d, 0x34, 0x11, 0xfd, 0xbb, 0xb8, 0x83, 0x5b, 0x45, 0x35, 0x7c, 0xc6, 0xa3, 0xea, 0xa0,
0xaf, 0x04, 0xaf, 0x3c, 0xca, 0x64, 0x45, 0x6f, 0xca, 0x45, 0x30, 0xfd, 0xc4, 0xfa, 0x8a, 0x7d,
0x90, 0x98, 0x12, 0xb0, 0xbc, 0x01, 0xc2, 0xcc, 0x49, 0xba, 0x9b, 0x88, 0x1b, 0x18, 0xc8, 0x30,
0x08, 0xc8, 0x33, 0x13, 0xb4, 0x31, 0x26, 0x2b, 0x9c, 0x54, 0x6a, 0xee, 0xeb, 0x65, 0xde, 0x16,
0x07, 0x22, 0xcb, 0xf0, 0x43, 0xb1, 0x42, 0xae, 0xa8, 0x73, 0x33, 0xe1, 0x37, 0xed, 0x79, 0x9f,
0xe8, 0x72, 0x5f, 0x08, 0xec, 0x7a, 0x60, 0xbc, 0x34, 0x0c, 0x3c, 0x7a, 0xeb, 0x6d, 0x67, 0xae,
0x88, 0xe8, 0x0e, 0xd9, 0x79, 0x7e, 0x9c, 0x3b, 0x58, 0x48, 0x64, 0x1b, 0xad, 0xbe, 0xad, 0x2d,
0xcf, 0xb1, 0x29, 0xd8, 0x82, 0x26, 0x28, 0x75, 0x89, 0x01, 0xf3, 0x6c, 0x26, 0x7b, 0xf1, 0x0b,
0xec, 0x25, 0x6d, 0xf1, 0x0b, 0x6c, 0x3a, 0xc6, 0xf9, 0xf1, 0x00, 0xc3, 0x22, 0x19, 0xc3, 0xd7,
0xf1, 0xe1, 0xbd, 0x58, 0x71, 0x2e, 0x25, 0xa5, 0x80, 0xad, 0xa4, 0x6c, 0xfa, 0xa9, 0xe1, 0x06,
0xd5, 0x02, 0x16, 0xbb, 0xd0, 0x00, 0x20, 0x2c, 0x94, 0x6c, 0x05, 0x23, 0x61, 0x17, 0x51, 0xe5,
0x78, 0x77, 0x01, 0x8f, 0x12, 0x3d, 0x44, 0x4c, 0xf7, 0x01, 0x29, 0x79, 0xf5, 0xb1, 0xd0, 0x4f,
0xc1, 0xc0, 0xed, 0xe9, 0xcd, 0x4d, 0xfa, 0xb5, 0x4d, 0x65, 0x70, 0xa8, 0x4e, 0x33, 0xa8, 0x43,
0xf3, 0x79, 0x61, 0x59, 0x38, 0x06, 0xf9, 0xce, 0x44, 0x58, 0x2d, 0x1a, 0x83, 0x12, 0xda, 0x44,
0x20, 0x69, 0x1a, 0x31, 0xbb, 0xb9, 0x29, 0x82, 0xb9, 0xc1, 0x9e, 0x19, 0x6a, 0x55, 0x74, 0xad,
0xf8, 0xde, 0x74, 0x3f, 0x83, 0xb9, 0xcd, 0xc5, 0x1a, 0xbd, 0x44, 0xd8, 0x77, 0x3a, 0x0e, 0xd0,
0x65, 0x9f, 0xe8, 0x06, 0x7b, 0x86, 0x5f, 0x38, 0x46, 0x37, 0x9e, 0x93, 0x3d, 0x8b, 0xa5, 0x71,
0x5f, 0x9c, 0x18, 0xe6, 0xb0, 0xd7, 0x4f, 0xd0, 0xb7, 0x3e, 0x61, 0x28, 0xa0, 0x23, 0x8d, 0x48,
0x82, 0x05, 0xd0, 0xc5, 0xaa, 0xe4, 0x6a, 0xc1, 0xed, 0x83, 0xb4, 0x05, 0xcf, 0x61, 0x1b, 0x29,
0x93, 0xc7, 0x32, 0x67, 0x9a, 0xe3, 0xe0, 0x3b, 0x32, 0x8e, 0xae, 0xa9, 0x8f, 0x33, 0x56, 0xa4,
0x8a, 0x45, 0x9a, 0xa1, 0x9e, 0x25, 0xe8, 0x30, 0x12, 0x60, 0x4b, 0x25, 0x4c, 0x05, 0x16, 0x1a,
0xfa, 0x8a, 0xe7, 0x21, 0xea, 0xa5, 0xbc, 0x82, 0x6e, 0x48, 0xd2, 0x82, 0x29, 0xae, 0x06, 0x3f,
0x54, 0x1a, 0x32, 0x14, 0xbe, 0x8a, 0xc2, 0x00, 0x11, 0xa0, 0x87, 0x6f, 0xaa, 0x30, 0xd2, 0xdd,
0x49, 0x38, 0x7a, 0x08, 0xf1, 0x17, 0xe2, 0x44, 0xd9, 0x7a, 0x88, 0xed, 0x2c, 0x02, 0xf6, 0x43,
0x81, 0x8e, 0x7f, 0xce, 0x3c, 0xbf, 0x90, 0xdf, 0xbf, 0x83, 0x26, 0xf8, 0x59, 0x48, 0xbe, 0xfc,
0xfe, 0x1d, 0x16, 0x3d, 0xe1, 0x60, 0xf2, 0x68, 0x28, 0x96, 0x90, 0x27, 0x79, 0xde, 0x77, 0xa3,
0x51, 0x46, 0x6c, 0x36, 0x3e, 0x8e, 0x0d, 0x47, 0x07, 0xd3, 0x0e, 0x67, 0x81, 0x00, 0xe5, 0x98,
0x67, 0x1a, 0x4f, 0xd8, 0x27, 0x31, 0xf4, 0x18, 0x79, 0x14, 0xb4, 0x0d, 0x06, 0x57, 0x83, 0x79,
0x9d, 0x71, 0xa7, 0x3c, 0x1c, 0x21, 0x8d, 0x32, 0x2e, 0x6d, 0x98, 0xe3, 0x24, 0x8f, 0xd1, 0x14,
0xd4, 0x18, 0x88, 0x05, 0xb7, 0xa2, 0xd8, 0xf5, 0x42, 0xa7, 0xb2, 0x78, 0x57, 0x42, 0x12, 0xaf,
0x12, 0x81, 0x85, 0x64, 0xee, 0xf8, 0xdc, 0x1e, 0x46, 0xf7, 0x6d, 0xc6, 0x8d, 0x38, 0xc6, 0xf0,
0xbf, 0xf1, 0x35, 0x8c, 0x11, 0xc5, 0x96, 0x23, 0x62, 0x23, 0x84, 0x65, 0x21, 0x87, 0x6e, 0x90,
0x55, 0x7e, 0x76, 0x47, 0x0b, 0x39, 0xd9, 0x1d, 0x01, 0x0f, 0xe0, 0x11, 0xbc, 0x4b, 0x03, 0xa3,
0xd6, 0xd1, 0xd0, 0xdf, 0xc2, 0xcd, 0x09, 0x18, 0x24, 0x1e, 0x5f, 0xd2, 0x98, 0xe2, 0x40, 0x2b,
0xd6, 0xf1, 0x72, 0x59, 0x1b, 0x99, 0xf3, 0xed, 0x4d, 0x7b, 0xab, 0xc2, 0xcd, 0x05, 0x7c, 0x99,
0x4b, 0xcd, 0xfd, 0x8b, 0xa1, 0x6f, 0xc9, 0xff, 0x61, 0xa5, 0xa1, 0xc7, 0xe3, 0xa5, 0x08, 0x3b,
0xa8, 0x9c, 0x2b, 0x0a, 0x28, 0x3c, 0x74, 0x0a, 0x35, 0xaa, 0x1c, 0x2c, 0x94, 0x07, 0x96, 0xf2,
0xb1, 0x06, 0xe1, 0x57, 0xe0, 0xf9, 0x90, 0xf6, 0x40, 0x3c, 0xed, 0xc1, 0xfb, 0xae, 0x91, 0xa8,
0x98, 0xe6, 0x6b, 0xe1, 0x15, 0x88, 0x17, 0x4d, 0xc0, 0x2a, 0x71, 0x2c, 0xb0, 0x26, 0x08, 0x3b,
0x24, 0xf0, 0xd7, 0xf6, 0x1f, 0x96, 0x2d, 0x7e, 0xef, 0x4d, 0x32, 0x91, 0x43, 0x33, 0x33, 0xd3,
0xa8, 0xb1, 0xcb, 0x6b, 0xf0, 0x33, 0x1c, 0x06, 0x19, 0xbe, 0xea, 0x69, 0xe6, 0xdd, 0x66, 0x03,
0xf6, 0x69, 0xf8, 0x32, 0x1f, 0x21, 0xe9, 0xdf, 0x77, 0xc3, 0xbe, 0xf9, 0xd8, 0xed, 0x1e, 0xde,
0xa9, 0x59, 0xbc, 0x23, 0xcc, 0x9f, 0x86, 0xe0, 0x7a, 0xf7, 0x06, 0xab, 0xb2, 0xc3, 0x85, 0xae,
0x79, 0xc7, 0xb7, 0x24, 0x01, 0xc1, 0x85, 0x52, 0xf0, 0x95, 0x64, 0xbc, 0x67, 0x6b, 0xf8, 0x6f,
0xab, 0x89, 0x1a, 0xb8, 0x0c, 0xc8, 0xc2, 0xc4, 0x8d, 0x0f, 0xc0, 0xdf, 0x69, 0xf2, 0xa7, 0x2b,
0x3c, 0x2c, 0xec, 0xbf, 0x77, 0x4b, 0x8f, 0xf7, 0xc0, 0xb3, 0x63, 0x5a, 0xfe, 0xf8, 0x58, 0x78,
0x17, 0xdb, 0x8f, 0x5a, 0x31, 0x00, 0x5a, 0xec, 0x8f, 0x47, 0x70, 0xee, 0xc1, 0x0b, 0x8f, 0xc2,
0x83, 0xb4, 0x72, 0x18, 0xec, 0x3d, 0x31, 0x7e, 0x88, 0xa5, 0x57, 0x04, 0xf8, 0x52, 0x08, 0x64,
0xeb, 0x32, 0x0c, 0xaf, 0xbe, 0x36, 0x07, 0x59, 0x17, 0xae, 0x68, 0x06, 0x83, 0x75, 0xca, 0xbb,
0x33, 0x3f, 0x6e, 0xc3, 0x91, 0xb8, 0x05, 0x47, 0x0b, 0x8f, 0x56, 0xda, 0x7b, 0xab, 0xcb, 0xfa,
0x97, 0xaf, 0x7f, 0x54, 0xda, 0xdf, 0xc8, 0x60, 0xbf, 0xfc, 0x81, 0xb1, 0x8b, 0x8f, 0x63, 0x75,
0xeb, 0xeb, 0xb3, 0x1a, 0x71, 0x93, 0x33, 0x8a, 0xc1, 0x50, 0x40, 0x8c, 0xef, 0x80, 0x21, 0x73,
0xc5, 0x81, 0xac, 0x5f, 0x7c, 0xda, 0x0b, 0xcd, 0xa8, 0x2f, 0x72, 0xcc, 0xec, 0xaf, 0x15, 0xf0,
0x97, 0x0d, 0x60, 0xaf, 0x74, 0xee, 0xd7, 0xe7, 0x7b, 0xe3, 0x85, 0x87, 0x90, 0xd8, 0x3a, 0x04,
0xbd, 0xb2, 0x46, 0x37, 0x8e, 0x50, 0xae, 0xd6, 0x16, 0x5b, 0xfd, 0x04, 0x25, 0xef, 0xa2, 0x8f,
0xf3, 0x79, 0xf4, 0x4a, 0x8d, 0xc8, 0x75, 0x9f, 0xe1, 0x13, 0x0c, 0xe1, 0x6b, 0x1f, 0xbd, 0xce,
0xd5, 0x17, 0xdd, 0x5b, 0x20, 0x3b, 0x48, 0x5b, 0x39, 0x87, 0xa1, 0xfb, 0x3e, 0xe3, 0x23, 0xf4,
0xb0, 0xb0, 0x02, 0xd2, 0xe6, 0xe6, 0xaa, 0x1e, 0xd0, 0x17, 0xcd, 0x81, 0x12, 0x66, 0xde, 0x69,
0x64, 0x9c, 0x9c, 0xc9, 0xa4, 0x2f, 0x8d, 0x34, 0xd3, 0xae, 0x71, 0xce, 0xc0, 0x34, 0x31, 0x50,
0x8d, 0x02, 0xaa, 0xf9, 0xd7, 0x00, 0xc7, 0xc6, 0x19, 0xbe, 0x3a, 0x35, 0x3c, 0xcc, 0xe5, 0x0e,
0xfe, 0x85, 0x51, 0xae, 0xc0, 0xd5, 0xe7, 0x87, 0x19, 0xed, 0xc1, 0xdf, 0x18, 0xe5, 0x22, 0xf0,
0x66, 0x3d, 0x6d, 0x00, 0xb7, 0xfe, 0xe2, 0xc7, 0xf3, 0x90, 0x9f, 0xf3, 0xe5, 0xea, 0x18, 0x30,
0xb3, 0xbe, 0x3a, 0x58, 0x61, 0xb5, 0x40, 0x43, 0x0f, 0xd3, 0x18, 0x0d, 0x27, 0x09, 0x3c, 0xc5,
0x51, 0xa8, 0xde, 0x95, 0xa3, 0xa4, 0x21, 0xf2, 0xb3, 0xd8, 0x4c, 0x08, 0xcb, 0xed, 0x74, 0x27,
0xb5, 0xf0, 0xb9, 0xb2, 0xee, 0x44, 0x25, 0x5d, 0x74, 0x71, 0xc4, 0x80, 0xfa, 0x17, 0x62, 0xfa,
0x3a, 0x60, 0x9c, 0x94, 0x57, 0x40, 0x86, 0x59, 0xaa, 0x91, 0x38, 0x1c, 0xfa, 0x7e, 0xa8, 0xe8,
0x70, 0x97, 0x06, 0xb9, 0x6c, 0xbb, 0xf2, 0x71, 0xc4, 0xb1, 0xbb, 0x9c, 0x57, 0xa0, 0xcd, 0x99,
0xac, 0x84, 0x15, 0x31, 0x35, 0x96, 0x30, 0x16, 0xba, 0xc9, 0x78, 0xd5, 0x4c, 0xac, 0x06, 0xb9,
0x64, 0x9f, 0x2c, 0x81, 0xc5, 0x5b, 0xee, 0xe2, 0x73, 0x8b, 0x77, 0xa2, 0x91, 0x38, 0x6e, 0x59,
0x20, 0x76, 0xc0, 0xf0, 0x66, 0x68, 0x3b, 0xcf, 0xeb, 0x91, 0xe3, 0x60, 0xb8, 0xbb, 0x08, 0x26,
0x3b, 0xd5, 0x54, 0x43, 0xea, 0x87, 0xff, 0xce, 0x3d, 0xcb, 0x3f, 0x83, 0xe6, 0x1f, 0x4e, 0xf3,
0x82, 0x13, 0x69, 0x5c, 0x62, 0x64, 0x6e, 0xdc, 0x48, 0xdb, 0x81, 0xbd, 0x87, 0xf1, 0x47, 0x78,
0x5d, 0x1d, 0xa9, 0x2f, 0x98, 0xee, 0x7a, 0xfb, 0x76, 0x69, 0x1f, 0x13, 0xb7, 0x2f, 0x57, 0x38,
0xe7, 0xe9, 0x3b, 0xe4, 0x39, 0xbe, 0x1e, 0xcb, 0xa6, 0x8e, 0x72, 0x2f, 0x4f, 0x40, 0x04, 0x50,
0x91, 0x96, 0x74, 0xd7, 0x9a, 0xb4, 0x11, 0xb3, 0x71, 0xc9, 0x0c, 0x25, 0x3f, 0x3f, 0xf4, 0x51,
0x52, 0x0b, 0x07, 0x95, 0xbd, 0x3e, 0xf4, 0x7d, 0x11, 0x41, 0xd0, 0xf2, 0x76, 0xaf, 0xe8, 0xbb,
0x72, 0x1a, 0xb8, 0x7d, 0x05, 0x04, 0x3e, 0xeb, 0xd7, 0x44, 0xc1, 0x81, 0xbf, 0x11, 0xbe, 0x61,
0x15, 0xb4, 0xb9, 0xc8, 0xa9, 0xca, 0x20, 0xd2, 0xd9, 0xdb, 0x22, 0x4d, 0x15, 0x45, 0xbe, 0xae,
0x9a, 0x33, 0x92, 0xee, 0x87, 0x8b, 0xe5, 0x4b, 0xb1, 0x72, 0xfc, 0x1c, 0x7a, 0xab, 0x93, 0x24,
0x4d, 0x94, 0x64, 0x0c, 0x73, 0xee, 0xd3, 0xbb, 0xd6, 0xfa, 0xb8, 0xb9, 0xc5, 0xd7, 0x59, 0xe7,
0x20, 0x71, 0xbe, 0x40, 0x08, 0xa1, 0xd8, 0xf1, 0x5f, 0xe0, 0xb0, 0xb4, 0x23, 0x13, 0x8c, 0xce,
0x63, 0xb0, 0xec, 0x18, 0x38, 0xbb, 0x49, 0x0c, 0x84, 0x79, 0x3d, 0x84, 0xb3, 0xeb, 0x90, 0x17,
0xc8, 0x0e, 0x23, 0xf3, 0x20, 0x94, 0xd1, 0x8b, 0x78, 0x8e, 0xc2, 0x7e, 0xa3, 0x7a, 0x18, 0x74,
0x9f, 0x4c, 0x3a, 0xd4, 0x02, 0xf2, 0xdc, 0xe3, 0xf0, 0xe4, 0x47, 0x97, 0xbb, 0x11, 0xcf, 0x40,
0xdd, 0xc5, 0x00, 0x71, 0xdc, 0x64, 0xea, 0x78, 0xa5, 0x4a, 0x91, 0x03, 0xca, 0xfe, 0x4b, 0x78,
0xf0, 0x88, 0x32, 0x6b, 0x2a, 0xdc, 0x0c, 0x4d, 0xf1, 0x7c, 0xcb, 0x30, 0x25, 0x91, 0x1e, 0x0c,
0x41, 0xea, 0x46, 0x52, 0x1c, 0xc9, 0x1d, 0xda, 0xd4, 0xe4, 0xf1, 0x66, 0x4d, 0x30, 0x1a, 0x9a,
0x6d, 0xa6, 0x5b, 0xac, 0xbc, 0x33, 0xba, 0x31, 0xf1, 0x55, 0x20, 0x0e, 0xee, 0x7c, 0x7b, 0xee,
0x11, 0x23, 0xcd, 0x5c, 0x23, 0x46, 0xba, 0xe7, 0x7d, 0xcb, 0xb8, 0x5a, 0xa0, 0x2f, 0x06, 0x99,
0xf8, 0x3b, 0x68, 0x1d, 0x4d, 0xd6, 0xe9, 0x48, 0x57, 0xdf, 0xb2, 0xb2, 0x66, 0x0f, 0x12, 0x6f,
0x58, 0x4a, 0x88, 0xff, 0x14, 0xe8, 0x7e, 0x2e, 0xff, 0x2b, 0x8c, 0xd6, 0x93, 0x00, 0xad, 0xe1,
0xee, 0xbf, 0x10, 0x7d, 0xa4, 0x19, 0x51, 0xa6, 0xe0, 0x93, 0x80, 0xc7, 0x14, 0xd0, 0x7e, 0x0a,
0x46, 0x84, 0x5e, 0x32, 0x97, 0xc1, 0xd9, 0x16, 0x77, 0x22, 0x88, 0x20, 0x78, 0x6e, 0xa3, 0x16,
0x4b, 0x6a, 0xb1, 0xb7, 0x8b, 0x24, 0x39, 0xc0, 0x04, 0x8c, 0x15, 0xfe, 0xc2, 0xe4, 0xe4, 0xbd,
0xea, 0x68, 0xf6, 0x61, 0xa5, 0xa5, 0x9b, 0xfa, 0x16, 0x53, 0xe8, 0xb3, 0xc0, 0x08, 0xd0, 0x93,
0x65, 0xa0, 0xc9, 0x19, 0x1b, 0x6b, 0x6d, 0x1d, 0xac, 0x00, 0x41, 0xf3, 0x18, 0x30, 0xfa, 0x2a,
0x97, 0xd9, 0x02, 0x33, 0x5e, 0x88, 0xc0, 0x2a, 0x22, 0xc7, 0x80, 0x81, 0x55, 0x34, 0x1e, 0x4b,
0xdf, 0x5d, 0x34, 0xf5, 0x6b, 0xcd, 0x4a, 0x0b, 0x12, 0x23, 0xda, 0x68, 0x9c, 0x31, 0x66, 0x81,
0x75, 0x6c, 0x6e, 0x46, 0xaf, 0x68, 0x68, 0x34, 0x5c, 0xb6, 0x0a, 0x56, 0x73, 0xb4, 0xcd, 0xcd,
0x0f, 0xb1, 0x4d, 0xe3, 0x21, 0xde, 0x05, 0x12, 0x5f, 0xf1, 0x6c, 0x99, 0x09, 0xb9, 0x2f, 0xd8,
0x9d, 0x64, 0x78, 0x29, 0x36, 0x56, 0x49, 0xb0, 0x80, 0x91, 0x06, 0xc1, 0x2a, 0x31, 0x78, 0x02,
0xac, 0x3c, 0x2a, 0x02, 0x21, 0xa5, 0xf6, 0xe3, 0x87, 0x09, 0xac, 0xc3, 0x04, 0x2e, 0x61, 0xa6,
0x65, 0x21, 0x0c, 0xfc, 0xa7, 0xf0, 0x03, 0xff, 0x07, 0xf5, 0xa6, 0x9e, 0xa5, 0x4d, 0xc7, 0x4c,
0x83, 0xd5, 0x16, 0x0b, 0xd8, 0xed, 0xe8, 0x23, 0xe9, 0xa5, 0xbb, 0x13, 0xd0, 0x54, 0x04, 0xc0,
0x21, 0x02, 0xdb, 0x89, 0x36, 0x09, 0x70, 0xdf, 0x6b, 0x15, 0x9a, 0xac, 0xe5, 0x58, 0x45, 0x7a,
0x49, 0x52, 0xac, 0xea, 0x7b, 0xb5, 0x51, 0x19, 0x8b, 0x08, 0x46, 0x27, 0xa6, 0xa8, 0x78, 0xef,
0x92, 0x59, 0xa9, 0x9c, 0x29, 0x8a, 0x1b, 0xd6, 0x9a, 0xe6, 0xde, 0xf1, 0xbb, 0xbe, 0x12, 0x96,
0x2e, 0xe8, 0xf9, 0x3f, 0x38, 0xc4, 0x0b, 0x0c, 0xd8, 0x6e, 0x0e, 0xfe, 0x4e, 0x06, 0x57, 0xc7,
0x78, 0x97, 0x76, 0xe2, 0x05, 0xa3, 0x8b, 0x3b, 0x8a, 0x33, 0x18, 0xa4, 0x9b, 0x19, 0x6b, 0x2f,
0xa0, 0xf9, 0xcc, 0x3d, 0xc5, 0xc4, 0x86, 0x29, 0x62, 0xa7, 0xfe, 0x7c, 0x93, 0x38, 0x99, 0xec,
0x2b, 0xa9, 0x46, 0xb6, 0xc2, 0x6f, 0xe7, 0xe9, 0xa1, 0x78, 0x6c, 0x96, 0x17, 0xfa, 0xca, 0x76,
0xce, 0xff, 0x99, 0x17, 0x4b, 0x80, 0xd1, 0x42, 0xa1, 0xd1, 0xe8, 0x2b, 0x34, 0x25, 0xd5, 0xc8,
0x63, 0x8a, 0x58, 0x09, 0xa5, 0x00, 0x00, 0xc6, 0x99, 0xd8, 0x2d, 0xca, 0xfe, 0xf4, 0xd0, 0xd9,
0x6f, 0xfc, 0xea, 0x3b, 0x78, 0x81, 0x54, 0x5f, 0x99, 0xe3, 0x6d, 0x5c, 0xc8, 0xcb, 0x8a, 0x60,
0x17, 0xff, 0xe2, 0xe7, 0x42, 0x35, 0x2b, 0x32, 0x72, 0x51, 0x8c, 0xae, 0x1d, 0xf1, 0x15, 0x2e,
0xae, 0x76, 0xa6, 0x7b, 0x13, 0x98, 0x1f, 0xd1, 0xfd, 0x83, 0xdb, 0xa0, 0x83, 0xa3, 0xe5, 0x24,
0xd2, 0x26, 0xf7, 0x15, 0x5f, 0x6e, 0x27, 0x90, 0xd0, 0x7e, 0x2d, 0x47, 0x5f, 0xd4, 0x6a, 0x0f,
0x12, 0xec, 0xaa, 0x68, 0x8e, 0x7a, 0xe7, 0x93, 0xac, 0x65, 0x58, 0xa7, 0x6b, 0xde, 0x0d, 0x4b,
0x1b, 0xe2, 0x56, 0x9f, 0x08, 0x8e, 0x9c, 0x13, 0x8d, 0x47, 0x88, 0x79, 0x7b, 0x76, 0x1f, 0x5d,
0x2d, 0x04, 0xb0, 0x26, 0xde, 0xcd, 0x42, 0xbc, 0x6b, 0x4f, 0x11, 0x4c, 0x32, 0xb2, 0xd7, 0xe6,
0xb2, 0xd0, 0x80, 0x11, 0x6e, 0x67, 0x07, 0xbb, 0x45, 0x78, 0xf6, 0xc7, 0x3f, 0x0b, 0x1e, 0x6a,
0xb4, 0x81, 0x07, 0xe8, 0xe9, 0xb0, 0xd8, 0xa9, 0x4e, 0x7e, 0xee, 0xdd, 0xd5, 0xc3, 0xcf, 0xe6,
0x91, 0x72, 0xb3, 0x39, 0x9e, 0xee, 0x89, 0x8c, 0x43, 0x14, 0xbc, 0x3b, 0x57, 0xd6, 0xdd, 0x1f,
0x49, 0x7b, 0x1a, 0x3f, 0x92, 0x3f, 0xb3, 0x6a, 0x91, 0x9b, 0x94, 0xa1, 0x63, 0xb5, 0x70, 0x2f,
0xe7, 0x18, 0xcd, 0xb8, 0xea, 0x90, 0x75, 0xe4, 0x86, 0x8a, 0x28, 0x42, 0x71, 0x13, 0x76, 0xcd,
0x19, 0xeb, 0xc9, 0x8e, 0x85, 0xc2, 0x12, 0xb4, 0xd1, 0x58, 0x8c, 0xf0, 0xdf, 0x70, 0x61, 0xfe,
0x05, 0xdf, 0xa5, 0x09, 0x88, 0x8a, 0xe0, 0x73, 0xf9, 0xe6, 0x83, 0x30, 0x52, 0xcc, 0xb4, 0x05,
0x30, 0xbe, 0x9b, 0xe9, 0xc1, 0x4e, 0xfc, 0x7a, 0x93, 0xa5, 0xc1, 0xa7, 0xb2, 0x78, 0xbd, 0xad,
0x00, 0x6a, 0x5c, 0xcd, 0x4d, 0x46, 0x6f, 0x5b, 0x5a, 0x3a, 0xc9, 0x1b, 0x66, 0x32, 0xf4, 0xad,
0x0a, 0xb8, 0x9d, 0xb7, 0xb8, 0x40, 0x60, 0xbd, 0xf2, 0x11, 0x18, 0xb8, 0x78, 0x64, 0xc6, 0x8b,
0x12, 0x8a, 0xbb, 0x38, 0x82, 0x80, 0x7d, 0x5c, 0x6f, 0x2e, 0xbf, 0x72, 0xff, 0x7d, 0x11, 0xa8,
0xa9, 0x61, 0x60, 0xc9, 0x77, 0xff, 0x52, 0xae, 0xba, 0xb6, 0x38, 0x19, 0x64, 0xfe, 0xd0, 0xf0,
0xc6, 0x25, 0x67, 0x65, 0x58, 0x26, 0x8d, 0x1c, 0xf3, 0x82, 0x2a, 0x6e, 0xa0, 0xb7, 0xa0, 0xdf,
0xdd, 0xe2, 0x9b, 0xb5, 0x5b, 0x12, 0x5e, 0xbf, 0x52, 0x77, 0x62, 0xfd, 0x35, 0x82, 0x30, 0x0d,
0xaf, 0xd3, 0xd1, 0xf2, 0xfc, 0xf6, 0x56, 0x96, 0x3a, 0xb9, 0xd8, 0xde, 0xfe, 0x3c, 0x7a, 0xc5,
0x8a, 0xc1, 0xe2, 0x9d, 0x56, 0x99, 0xf8, 0x75, 0x3f, 0xd2, 0x0c, 0xc3, 0x44, 0x35, 0x73, 0xe8,
0x44, 0xb1, 0xe6, 0xeb, 0x47, 0xf4, 0x44, 0x6f, 0x9a, 0xbe, 0xc8, 0x22, 0x89, 0x37, 0xe8, 0x21,
0x10, 0x9c, 0x1d, 0x7a, 0x43, 0x4f, 0x12, 0xb5, 0x2a, 0xf6, 0xc4, 0xae, 0x4e, 0xe2, 0xc2, 0x71,
0xe0, 0x43, 0xf6, 0xfe, 0x8b, 0x85, 0x9a, 0xbd, 0x64, 0x9c, 0xca, 0xfa, 0xd0, 0x4e, 0xae, 0xdc,
0xd3, 0x5a, 0xce, 0x09, 0xdb, 0x8b, 0x2c, 0x77, 0xce, 0x82, 0x3f, 0xff, 0xab, 0xb5, 0xe2, 0x22,
0xdb, 0xc5, 0x4b, 0x88, 0x79, 0xe1, 0xbc, 0x91, 0xa5, 0x61, 0x04, 0x63, 0x41, 0xa3, 0x7d, 0x69,
0x88, 0xc2, 0x44, 0x64, 0x0e, 0x76, 0xe6, 0xbf, 0xe8, 0xd0, 0x1b, 0xc3, 0xd1, 0xdd, 0x14, 0xe1,
0xc7, 0x43, 0x83, 0xed, 0x51, 0x04, 0xd1, 0x11, 0x69, 0x76, 0x58, 0x47, 0xbd, 0xa1, 0xd7, 0x11,
0x39, 0x3b, 0xf1, 0x84, 0x1f, 0xe2, 0xcf, 0x5a, 0xe8, 0x38, 0x48, 0x5f, 0x72, 0x8e, 0x6c, 0x93,
0x46, 0xc4, 0xd1, 0xe3, 0xe9, 0x91, 0x58, 0x23, 0xb2, 0xb4, 0x19, 0xcb, 0x22, 0x37, 0x16, 0x67,
0x2e, 0xa1, 0x2e, 0xa0, 0xd3, 0xdb, 0x9f, 0x16, 0xe7, 0xfe, 0x46, 0x75, 0x98, 0x2d, 0x2b, 0x2f,
0xc9, 0x50, 0xc8, 0xa0, 0x17, 0xd5, 0x16, 0xd8, 0x89, 0xf4, 0x40, 0x6b, 0x24, 0xd4, 0xcd, 0xbf,
0x60, 0x3a, 0x28, 0x02, 0xb3, 0xec, 0x61, 0xca, 0x49, 0x06, 0x2f, 0x85, 0xe3, 0x7f, 0xff, 0x0e,
0x77, 0xdd, 0x8d, 0xfd, 0x36, 0xf1, 0x02, 0x3e, 0x40, 0xa0, 0x8f, 0x1e, 0x80, 0x86, 0xca, 0xfb,
0x43, 0x80, 0x4c, 0x2f, 0x24, 0x2d, 0xf4, 0xbe, 0x67, 0xfe, 0x07, 0xc3, 0xfc, 0x4f, 0xcf, 0x61,
0x74, 0x63, 0x5a, 0xc2, 0x7f, 0xb5, 0x56, 0xc5, 0xd1, 0x79, 0x5e, 0xa3, 0x2f, 0x49, 0x7f, 0x3e,
0x44, 0x3e, 0x4c, 0x52, 0xd4, 0x2c, 0x66, 0x36, 0x27, 0x2b, 0xe0, 0x8f, 0x7e, 0xa9, 0x33, 0x66,
0xc3, 0xdd, 0x9a, 0x88, 0xfe, 0x8d, 0x3e, 0x94, 0x45, 0x99, 0x78, 0x83, 0x4f, 0x2a, 0xe9, 0xfc,
0xcb, 0xcc, 0x8c, 0x17, 0xe7, 0x2f, 0x73, 0x7c, 0x5d, 0xfc, 0xd2, 0xc0, 0xeb, 0xa2, 0x58, 0x1f,
0xb7, 0x45, 0x60, 0x86, 0xdf, 0x45, 0x3e, 0x48, 0xf8, 0x8e, 0x09, 0xdb, 0x98, 0x60, 0x6c, 0xa7,
0xb3, 0xb9, 0xcd, 0xcd, 0x4f, 0x8d, 0xaf, 0xd1, 0xf0, 0xd0, 0x01, 0x70, 0x60, 0xa8, 0xcb, 0x57,
0x7a, 0x73, 0x5b, 0x5b, 0x1a, 0xe7, 0x51, 0xe4, 0x56, 0xc3, 0xc1, 0xbe, 0x65, 0xb7, 0x0c, 0x3f,
0xd0, 0x49, 0xc2, 0x45, 0xf8, 0xe2, 0x78, 0x5d, 0x00, 0x81, 0xb2, 0x0e, 0x46, 0x17, 0x0f, 0x85,
0x7e, 0x16, 0x99, 0xb8, 0xb7, 0xe6, 0x91, 0x7e, 0x88, 0x51, 0xb0, 0xfb, 0xbf, 0xc2, 0x9a, 0x86,
0x6b, 0x5a, 0x9c, 0x8f, 0xca, 0x43, 0x82, 0x81, 0xc0, 0xf5, 0xe0, 0x32, 0x66, 0x3c, 0x62, 0x9b,
0xe2, 0xa2, 0x17, 0x34, 0x5b, 0x90, 0xb6, 0x95, 0x8c, 0xa9, 0xad, 0xfe, 0xfb, 0xd8, 0x63, 0x7a,
0xeb, 0x8e, 0x58, 0x8b, 0x65, 0xb3, 0x76, 0x00, 0x67, 0x7c, 0x0c, 0x2e, 0xbd, 0xa8, 0x14, 0x6f,
0x84, 0x0e, 0x53, 0x40, 0x70, 0x07, 0x21, 0x11, 0xd2, 0xe9, 0xb4, 0xcb, 0x74, 0x25, 0xdf, 0x99,
0xe2, 0x2b, 0x08, 0xa4, 0xce, 0x78, 0x03, 0xbd, 0xbb, 0xd1, 0x3b, 0xc6, 0x00, 0xe5, 0xfc, 0x3b,
0xca, 0x37, 0x37, 0xd9, 0x93, 0xc9, 0x2f, 0x4e, 0x53, 0x27, 0xf0, 0xa0, 0x4f, 0xc2, 0xe4, 0xbd,
0x1c, 0x58, 0x8d, 0xfc, 0x0e, 0x5d, 0x94, 0xbf, 0x7f, 0x47, 0x25, 0x1d, 0x11, 0x66, 0x90, 0x5a,
0x9b, 0xa1, 0x02, 0x1c, 0xea, 0x0d, 0xa4, 0x09, 0xb4, 0x16, 0x5f, 0x5b, 0x59, 0x1e, 0xf3, 0xe6,
0x81, 0xe6, 0xb6, 0x34, 0x8c, 0xb9, 0x77, 0x0b, 0x9b, 0xa7, 0x92, 0x2d, 0xdf, 0x81, 0x06, 0x4a,
0x19, 0x94, 0xe0, 0xe8, 0x6d, 0x6d, 0xf4, 0xda, 0x36, 0x98, 0xf3, 0xe5, 0x52, 0x03, 0x13, 0x4f,
0x93, 0xa2, 0x73, 0x96, 0x72, 0xb4, 0xf5, 0x05, 0xc3, 0x17, 0xb0, 0xbd, 0x5f, 0x92, 0x82, 0x04,
0xe1, 0xcd, 0x09, 0xb8, 0xfa, 0x3e, 0x28, 0x37, 0xb4, 0x3e, 0x2a, 0xb6, 0xb8, 0xcb, 0xcd, 0x2f,
0xb7, 0xf1, 0x3d, 0xe3, 0xbd, 0xb5, 0x22, 0xf1, 0x3d, 0x83, 0x7b, 0xab, 0xf8, 0xdd, 0x77, 0x07,
0xfa, 0x76, 0xe2, 0xff, 0x02, 0x56, 0xec, 0xce, 0xa9, 0xe8, 0xc4, 0x00, 0x00
};

File diff suppressed because it is too large Load Diff

View File

@ -10,6 +10,11 @@
#define DIMPROV_PRINTF(x...)
#endif
#if defined(CONFIG_IDF_TARGET_ESP32S2) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32S3)
#undef WLED_DISABLE_IMPROV_WIFISCAN
#define WLED_DISABLE_IMPROV_WIFISCAN
#endif
#define IMPROV_VERSION 1
void parseWiFiCommand(char *rpcData);
@ -28,20 +33,14 @@ enum ImprovPacketByte {
RPC_CommandType = 9
};
enum ImprovRPCType {
Command_Wifi = 0x01,
Request_State = 0x02,
Request_Info = 0x03
};
//File dbgf;
#ifndef WLED_DISABLE_IMPROV_WIFISCAN
static bool improvWifiScanRunning = false;
#endif
//blocking function to parse an Improv Serial packet
void handleImprovPacket() {
uint8_t header[6] = {'I','M','P','R','O','V'};
//dbgf = WLED_FS.open("/improv.log","a");
bool timeout = false;
uint8_t waitTime = 25;
uint16_t packetByte = 0;
@ -62,12 +61,11 @@ void handleImprovPacket() {
byte next = Serial.read();
DIMPROV_PRINT("Received improv byte: "); DIMPROV_PRINTF("%x\r\n",next);
//f.write(next);
switch (packetByte) {
case ImprovPacketByte::Version: {
if (next != IMPROV_VERSION) {
DIMPROV_PRINTLN(F("Invalid version"));
//dbgf.close();
return;
}
break;
@ -75,7 +73,6 @@ void handleImprovPacket() {
case ImprovPacketByte::PacketType: {
if (next != ImprovPacketType::RPC_Command) {
DIMPROV_PRINTF("Non RPC-command improv packet type %i\n",next);
//dbgf.close();
return;
}
if (!improvActive) improvActive = 1;
@ -89,7 +86,6 @@ void handleImprovPacket() {
if (checksum != next) {
DIMPROV_PRINTF("Got RPC checksum %i, expected %i",next,checksum);
sendImprovStateResponse(0x01, true);
//dbgf.close();
return;
}
@ -100,22 +96,23 @@ void handleImprovPacket() {
if (WLED_WIFI_CONFIGURED) improvState = 0x03; //provisioning
if (Network.isConnected()) improvState = 0x04; //provisioned
sendImprovStateResponse(improvState, false);
if (improvState == 0x04) sendImprovRPCResponse(ImprovRPCType::Request_State);
if (improvState == 0x04) sendImprovIPRPCResult(ImprovRPCType::Request_State);
break;
}
case ImprovRPCType::Request_Info: sendImprovInfoResponse(); break;
#ifndef WLED_DISABLE_IMPROV_WIFISCAN
case ImprovRPCType::Request_Scan: startImprovWifiScan(); break;
#endif
default: {
DIMPROV_PRINTF("Unknown RPC command %i\n",next);
sendImprovStateResponse(0x02, true);
}
}
//dbgf.close();
return;
}
if (packetByte < 6) { //check header
if (next != header[packetByte]) {
DIMPROV_PRINTLN(F("Invalid improv header"));
//dbgf.close();
return;
}
} else if (packetByte > 9) { //RPC data
@ -128,7 +125,6 @@ void handleImprovPacket() {
checksum += next;
packetByte++;
}
//dbgf.close();
}
void sendImprovStateResponse(uint8_t state, bool error) {
@ -147,79 +143,116 @@ void sendImprovStateResponse(uint8_t state, bool error) {
Serial.write('\n');
}
void sendImprovRPCResponse(byte commandId) {
// used by sendImprovIPRPCResult(), sendImprovInfoResponse(), and handleImprovWifiScan()
void sendImprovRPCResult(ImprovRPCType type, uint8_t n_strings, const char **strings) {
if (improvError > 0 && improvError < 3) sendImprovStateResponse(0x00, true);
uint8_t packetLen = 12;
char out[64] = {'I','M','P','R','O','V'};
char out[256] = {'I','M','P','R','O','V'};
out[6] = IMPROV_VERSION;
out[7] = ImprovPacketType::RPC_Response;
out[8] = 2; //Length (set below)
out[9] = commandId;
out[10] = 0; //Data len (set below)
out[11] = '\0'; //URL len (set below)
//out[8] = 2; //Length (set below)
out[9] = type;
//out[10] = 0; //Data len (set below)
uint16_t pos = 11;
if (Network.isConnected())
{
IPAddress localIP = Network.localIP();
uint8_t len = sprintf(out+12, "http://%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]);
if (len > 24) return; //sprintf fail?
out[11] = len;
out[10] = 1 + len;
out[8] = 3 + len; //RPC command type + data len + url len + url
packetLen = 13 + len;
for (uint8_t s = 0; s < n_strings; s++) {
size_t len = strlen(strings[s]);
if (pos + len > 254) continue; // simple buffer overflow guard
out[pos++] = len;
strcpy(out + pos, strings[s]);
pos += len;
}
packetLen = pos +1;
out[8] = pos -9; // Length of packet (excluding first 9 header bytes and final checksum byte)
out[10] = pos -11; // Data len
uint8_t checksum = 0;
for (uint8_t i = 0; i < packetLen -1; i++) checksum += out[i];
out[packetLen -1] = checksum;
Serial.write((uint8_t*)out, packetLen);
Serial.write('\n');
DIMPROV_PRINT("RPC result checksum");
DIMPROV_PRINTLN(checksum);
}
void sendImprovIPRPCResult(ImprovRPCType type) {
if (Network.isConnected())
{
char urlStr[64];
IPAddress localIP = Network.localIP();
uint8_t len = sprintf(urlStr, "http://%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]);
if (len > 24) return; //sprintf fail?
const char *str[1] = {urlStr};
sendImprovRPCResult(type, 1, str);
} else {
sendImprovRPCResult(type, 0);
}
improvActive = 1; //no longer provisioning
}
void sendImprovInfoResponse() {
if (improvError > 0 && improvError < 3) sendImprovStateResponse(0x00, true);
uint8_t packetLen = 12;
char out[128] = {'I','M','P','R','O','V'};
out[6] = IMPROV_VERSION;
out[7] = ImprovPacketType::RPC_Response;
//out[8] = 2; //Length (set below)
out[9] = ImprovRPCType::Request_Info;
//out[10] = 0; //Data len (set below)
out[11] = 4; //Firmware len ("WLED")
out[12] = 'W'; out[13] = 'L'; out[14] = 'E'; out[15] = 'D';
uint8_t lengthSum = 17;
uint8_t vlen = sprintf_P(out+lengthSum,PSTR("0.14.0-b3/%i"),VERSION);
out[16] = vlen; lengthSum += vlen;
uint8_t hlen = 7;
const char* bString =
#ifdef ESP8266
strcpy(out+lengthSum+1,"esp8266");
#else
hlen = 5;
strcpy(out+lengthSum+1,"esp32");
"esp8266"
#elif CONFIG_IDF_TARGET_ESP32C3
"esp32-c3"
#elif CONFIG_IDF_TARGET_ESP32S2
"esp32-s2"
#elif CONFIG_IDF_TARGET_ESP32S3
"esp32-s3";
#else // ESP32
"esp32";
#endif
out[lengthSum] = hlen;
lengthSum += hlen + 1;
;
//Use serverDescription if it has been changed from the default "WLED", else mDNS name
bool useMdnsName = (strcmp(serverDescription, "WLED") == 0 && strlen(cmDNS) > 0);
strcpy(out+lengthSum+1,useMdnsName ? cmDNS : serverDescription);
uint8_t nlen = strlen(useMdnsName ? cmDNS : serverDescription);
out[lengthSum] = nlen;
lengthSum += nlen + 1;
char vString[20];
sprintf_P(vString, PSTR("0.14.0-b3/%i"), VERSION);
const char *str[4] = {"WLED", vString, bString, useMdnsName ? cmDNS : serverDescription};
packetLen = lengthSum +1;
out[8] = lengthSum -9;
out[10] = lengthSum -11;
uint8_t checksum = 0;
for (uint8_t i = 0; i < packetLen -1; i++) checksum += out[i];
out[packetLen -1] = checksum;
Serial.write((uint8_t*)out, packetLen);
Serial.write('\n');
DIMPROV_PRINT("Info checksum");
DIMPROV_PRINTLN(checksum);
sendImprovRPCResult(ImprovRPCType::Request_Info, 4, str);
}
#ifndef WLED_DISABLE_IMPROV_WIFISCAN
void startImprovWifiScan() {
if (improvWifiScanRunning) return;
WiFi.scanNetworks(true);
improvWifiScanRunning = true;
}
void handleImprovWifiScan() {
if (!improvWifiScanRunning) return;
int16_t status = WiFi.scanComplete();
if (status == WIFI_SCAN_RUNNING) return;
// here scan completed or failed (-2)
improvWifiScanRunning = false;
for (int i = 0; i < status; i++) {
char rssiStr[8];
sprintf(rssiStr, "%d", WiFi.RSSI(i));
#ifdef ESP8266
bool isOpen = WiFi.encryptionType(i) == ENC_TYPE_NONE;
#else
bool isOpen = WiFi.encryptionType(i) == WIFI_AUTH_OPEN;
#endif
char ssidStr[33];
strcpy(ssidStr, WiFi.SSID(i).c_str());
const char *str[3] = {ssidStr, rssiStr, isOpen ? "NO":"YES"};
sendImprovRPCResult(ImprovRPCType::Request_Scan, 3, str);
}
sendImprovRPCResult(ImprovRPCType::Request_Scan, 0);
WiFi.scanDelete();
}
#else
void startImprovWifiScan() {}
void handleImprovWifiScan() {}
#endif
void parseWiFiCommand(char* rpcData) {
uint8_t len = rpcData[0];
if (!len || len > 126) return;

View File

@ -70,13 +70,9 @@ void decBrightness()
}
}
// apply preset or fallback to a effect and palette if it doesn't exist
void presetFallback(uint8_t presetID, uint8_t effectID, uint8_t paletteID)
{
applyPreset(presetID, CALL_MODE_BUTTON_PRESET);
//these two will be overwritten if preset exists in handlePresets()
effectCurrent = effectID;
effectPalette = paletteID;
applyPresetWithFallback(presetID, CALL_MODE_BUTTON_PRESET, effectID, paletteID);
}
byte relativeChange(byte property, int8_t amount, byte lowerBoundary, byte higherBoundary)

View File

@ -70,9 +70,10 @@ bool deserializeSegment(JsonObject elem, byte it, byte presetId)
const char * name = elem["n"].as<const char*>();
size_t len = 0;
if (name != nullptr) len = strlen(name);
if (len > 0 && len < 33) {
if (len > 0) {
if (len > WLED_MAX_SEGNAME_LEN) len = WLED_MAX_SEGNAME_LEN;
seg.name = new char[len+1];
if (seg.name) strlcpy(seg.name, name, 33);
if (seg.name) strlcpy(seg.name, name, WLED_MAX_SEGNAME_LEN+1);
} else {
// but is empty (already deleted above)
elem.remove("n");
@ -425,7 +426,7 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId)
// a) already applied preset content (requires "seg" or "win" but will ignore the rest)
if (!root["pd"].isNull() && stateChanged) {
currentPreset = root[F("pd")] | currentPreset;
if (root["win"].isNull()) presetCycCurr = currentPreset;
if (root["win"].isNull()) presetCycCurr = currentPreset; // otherwise it was set in handleSet() [set.cpp]
presetToRestore = currentPreset; // stateUpdated() will clear the preset, so we need to restore it after
//unloadPlaylist(); // applying a preset unloads the playlist, may be needed here too?
} else if (!root["ps"].isNull()) {

View File

@ -146,7 +146,7 @@ void stateUpdated(byte callMode) {
if (transitionActive) {
briOld = briT;
tperLast = 0;
}
} else
strip.setTransitionMode(true); // force all segments to transition mode
transitionActive = true;
transitionStartTime = millis();

View File

@ -120,6 +120,15 @@ bool applyPreset(byte index, byte callMode)
return true;
}
// apply preset or fallback to a effect and palette if it doesn't exist
void applyPresetWithFallback(uint8_t index, uint8_t callMode, uint8_t effectID, uint8_t paletteID)
{
applyPreset(index, callMode);
//these two will be overwritten if preset exists in handlePresets()
effectCurrent = effectID;
effectPalette = paletteID;
}
void handlePresets()
{
if (presetToSave) {

200
wled00/remote.cpp Normal file
View File

@ -0,0 +1,200 @@
#include "wled.h"
#define ESP_NOW_STATE_UNINIT 0
#define ESP_NOW_STATE_ON 1
#define ESP_NOW_STATE_ERROR 2
#define NIGHT_MODE_DEACTIVATED -1
#define NIGHT_MODE_BRIGHTNESS 5
#define WIZMOTE_BUTTON_ON 1
#define WIZMOTE_BUTTON_OFF 2
#define WIZMOTE_BUTTON_NIGHT 3
#define WIZMOTE_BUTTON_ONE 16
#define WIZMOTE_BUTTON_TWO 17
#define WIZMOTE_BUTTON_THREE 18
#define WIZMOTE_BUTTON_FOUR 19
#define WIZMOTE_BUTTON_BRIGHT_UP 9
#define WIZMOTE_BUTTON_BRIGHT_DOWN 8
#ifdef WLED_DISABLE_ESPNOW
void handleRemote(){}
#else
// This is kind of an esoteric strucure because it's pulled from the "Wizmote"
// product spec. That remote is used as the baseline for behavior and availability
// since it's broadly commercially available and works out of the box as a drop-in
typedef struct message_structure {
uint8_t program; // 0x91 for ON button, 0x81 for all others
uint8_t seq[4]; // Incremetal sequence number 32 bit unsigned integer LSB first
uint8_t byte5 = 32; // Unknown
uint8_t button; // Identifies which button is being pressed
uint8_t byte8 = 1; // Unknown, but always 0x01
uint8_t byte9 = 100; // Unnkown, but always 0x64
uint8_t byte10; // Unknown, maybe checksum
uint8_t byte11; // Unknown, maybe checksum
uint8_t byte12; // Unknown, maybe checksum
uint8_t byte13; // Unknown, maybe checksum
} message_structure;
static int esp_now_state = ESP_NOW_STATE_UNINIT;
static uint32_t last_seq = -1;
static int brightnessBeforeNightMode = NIGHT_MODE_DEACTIVATED;
static message_structure incoming;
// Pulled from the IR Remote logic but reduced to 10 steps with a constant of 3
const byte brightnessSteps[] = {
6, 9, 14, 22, 33, 50, 75, 113, 170, 255
};
const size_t numBrightnessSteps = sizeof(brightnessSteps) / sizeof(uint8_t);
bool nightModeActive() {
return brightnessBeforeNightMode != NIGHT_MODE_DEACTIVATED;
}
void activateNightMode() {
brightnessBeforeNightMode = bri;
bri = NIGHT_MODE_BRIGHTNESS;
}
bool resetNightMode() {
if (!nightModeActive()) {
return false;
}
bri = brightnessBeforeNightMode;
brightnessBeforeNightMode = NIGHT_MODE_DEACTIVATED;
return true;
}
// increment `bri` to the next `brightnessSteps` value
void brightnessUp() {
if (nightModeActive()) { return; }
// dumb incremental search is efficient enough for so few items
for (uint8_t index = 0; index < numBrightnessSteps; ++index) {
if (brightnessSteps[index] > bri) {
bri = brightnessSteps[index];
break;
}
}
}
// decrement `bri` to the next `brightnessSteps` value
void brightnessDown() {
if (nightModeActive()) { return; }
// dumb incremental search is efficient enough for so few items
for (int index = numBrightnessSteps - 1; index >= 0; --index) {
if (brightnessSteps[index] < bri) {
bri = brightnessSteps[index];
break;
}
}
}
void setOn() {
if (resetNightMode()) {
stateUpdated(CALL_MODE_BUTTON);
}
if (!bri) {
toggleOnOff();
}
}
void setOff() {
if (resetNightMode()) {
stateUpdated(CALL_MODE_BUTTON);
}
if (bri) {
toggleOnOff();
}
}
void presetWithFallback(uint8_t presetID, uint8_t effectID, uint8_t paletteID) {
applyPresetWithFallback(presetID, CALL_MODE_BUTTON_PRESET, effectID, paletteID);
}
// Callback function that will be executed when data is received
#ifdef ESP8266
void OnDataRecv(uint8_t * mac, uint8_t *incomingData, uint8_t len) {
#else
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
#endif
sprintf (last_signal_src, "%02x%02x%02x%02x%02x%02x",
mac [0], mac [1], mac [2], mac [3], mac [4], mac [5]);
if (strcmp(last_signal_src, linked_remote) != 0) {
DEBUG_PRINT(F("ESP Now Message Received from Unlinked Sender: "));
DEBUG_PRINTLN(last_signal_src);
return;
}
if (len != sizeof(incoming)) {
DEBUG_PRINT(F("Unknown incoming ESP Now message received of length "));
DEBUG_PRINTLN(len);
return;
}
memcpy(&(incoming.program), incomingData, sizeof(incoming));
uint32_t cur_seq = incoming.seq[0] | (incoming.seq[1] << 8) | (incoming.seq[2] << 16) | (incoming.seq[3] << 24);
if (cur_seq == last_seq) {
return;
}
DEBUG_PRINT(F("Incoming ESP Now Packet["));
DEBUG_PRINT(cur_seq);
DEBUG_PRINT(F("] from sender["));
DEBUG_PRINT(last_signal_src);
DEBUG_PRINT(F("] button: "));
DEBUG_PRINTLN(incoming.button);
switch (incoming.button) {
case WIZMOTE_BUTTON_ON : setOn(); stateUpdated(CALL_MODE_BUTTON); break;
case WIZMOTE_BUTTON_OFF : setOff(); stateUpdated(CALL_MODE_BUTTON); break;
case WIZMOTE_BUTTON_ONE : presetWithFallback(1, FX_MODE_STATIC, 0); resetNightMode(); break;
case WIZMOTE_BUTTON_TWO : presetWithFallback(2, FX_MODE_BREATH, 0); resetNightMode(); break;
case WIZMOTE_BUTTON_THREE : presetWithFallback(3, FX_MODE_FIRE_FLICKER, 0); resetNightMode(); break;
case WIZMOTE_BUTTON_FOUR : presetWithFallback(4, FX_MODE_RAINBOW, 0); resetNightMode(); break;
case WIZMOTE_BUTTON_NIGHT : activateNightMode(); stateUpdated(CALL_MODE_BUTTON); break;
case WIZMOTE_BUTTON_BRIGHT_UP : brightnessUp(); stateUpdated(CALL_MODE_BUTTON); break;
case WIZMOTE_BUTTON_BRIGHT_DOWN : brightnessDown(); stateUpdated(CALL_MODE_BUTTON); break;
default: break;
}
last_seq = cur_seq;
}
void handleRemote() {
if (enable_espnow_remote) {
if (esp_now_state == ESP_NOW_STATE_UNINIT) {
DEBUG_PRINTLN(F("Initializing ESP_NOW listener"));
// Init ESP-NOW
if (esp_now_init() != 0) {
DEBUG_PRINTLN(F("Error initializing ESP-NOW"));
esp_now_state = ESP_NOW_STATE_ERROR;
}
#ifdef ESP8266
esp_now_set_self_role(ESP_NOW_ROLE_SLAVE);
#endif
esp_now_register_recv_cb(OnDataRecv);
esp_now_state = ESP_NOW_STATE_ON;
}
} else {
if (esp_now_state == ESP_NOW_STATE_ON) {
DEBUG_PRINTLN(F("Disabling ESP-NOW Remote Listener"));
if (esp_now_deinit() != 0) {
DEBUG_PRINTLN(F("Error de-initializing ESP-NOW"));
}
esp_now_state = ESP_NOW_STATE_UNINIT;
} else if (esp_now_state == ESP_NOW_STATE_ERROR) {
//Clear any error states (allows retrying by cycling)
esp_now_state = ESP_NOW_STATE_UNINIT;
}
}
}
#endif

View File

@ -34,6 +34,14 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
noWifiSleep = request->hasArg(F("WS"));
#ifndef WLED_DISABLE_ESPNOW
enable_espnow_remote = request->hasArg(F("RE"));
strlcpy(linked_remote,request->arg(F("RMAC")).c_str(), 13);
//Normalize MAC format to lowercase
strlcpy(linked_remote,strlwr(linked_remote), 13);
#endif
#ifdef WLED_USE_ETHERNET
ethernetType = request->arg(F("ETH")).toInt();
WLED::instance().initEthernet();

View File

@ -46,7 +46,9 @@ void WLED::loop()
handleIR(); // 2nd call to function needed for ESP32 to return valid results -- should be good for ESP8266, too
#endif
handleConnection();
handleRemote();
handleSerial();
handleImprovWifiScan();
handleNotifications();
handleTransitions();
#ifdef WLED_ENABLE_DMX
@ -645,7 +647,6 @@ void WLED::initConnection()
ws.onEvent(wsEvent);
#endif
WiFi.disconnect(true); // close old connections
#ifdef ESP8266
WiFi.setPhyMode(WIFI_PHY_MODE_11N);
@ -844,7 +845,7 @@ void WLED::handleConnection()
if (improvActive) {
if (improvError == 3) sendImprovStateResponse(0x00, true);
sendImprovStateResponse(0x04);
if (improvActive > 1) sendImprovRPCResponse(0x01);
if (improvActive > 1) sendImprovIPRPCResult(ImprovRPCType::Command_Wifi);
}
initInterfaces();
userConnected();

View File

@ -8,7 +8,7 @@
*/
// version code in format yymmddb (b = daily build)
#define VERSION 2306180
#define VERSION 2306270
//uncomment this if you have a "my_config.h" file you'd like to use
//#define WLED_USE_MY_CONFIG
@ -36,7 +36,7 @@
#undef WLED_ENABLE_ADALIGHT // disable has priority over enable
#endif
//#define WLED_ENABLE_DMX // uses 3.5kb (use LEDPIN other than 2)
//#define WLED_ENABLE_JSONLIVE // peek LED output via /json/live (WS binary peek is always enabled)
#define WLED_ENABLE_JSONLIVE // peek LED output via /json/live (WS binary peek is always enabled)
#ifndef WLED_DISABLE_LOXONE
#define WLED_ENABLE_LOXONE // uses 1.2kb
#endif
@ -44,6 +44,8 @@
#define WLED_ENABLE_WEBSOCKETS
#endif
//#define WLED_DISABLE_ESPNOW // Removes dependence on esp now
#define WLED_ENABLE_FS_EDITOR // enable /edit page for editing FS content. Will also be disabled with OTA lock
// to toggle usb serial debug (un)comment the following line
@ -73,6 +75,9 @@
{
#include <user_interface.h>
}
#ifndef WLED_DISABLE_ESPNOW
#include <espnow.h>
#endif
#else // ESP32
#include <HardwareSerial.h> // ensure we have the correct "Serial" on new MCUs (depends on ARDUINO_USB_MODE and ARDUINO_USB_CDC_ON_BOOT)
#include <WiFi.h>
@ -89,6 +94,10 @@
#include <LittleFS.h>
#endif
#include "esp_task_wdt.h"
#ifndef WLED_DISABLE_ESPNOW
#include <esp_now.h>
#endif
#endif
#include <Wire.h>
#include <SPI.h>
@ -444,6 +453,12 @@ WLED_GLOBAL bool hueApplyColor _INIT(true);
WLED_GLOBAL uint16_t serialBaud _INIT(1152); // serial baud rate, multiply by 100
#ifndef WLED_DISABLE_ESPNOW
WLED_GLOBAL bool enable_espnow_remote _INIT(false);
WLED_GLOBAL char linked_remote[13] _INIT("");
WLED_GLOBAL char last_signal_src[13] _INIT("");
#endif
// Time CONFIG
WLED_GLOBAL bool ntpEnabled _INIT(false); // get internet time. Only required if you use clock overlays or time-activated macros
WLED_GLOBAL bool useAMPM _INIT(false); // 12h/24h clock format

File diff suppressed because one or more lines are too long

View File

@ -1,387 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="Source Files\Dependencies">
<UniqueIdentifier>{72fe60da-ba26-45b4-82c1-bdff809975da}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Dependencies">
<UniqueIdentifier>{8880888d-efea-4189-a25a-834b7b3bb756}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<None Include="wled00.ino" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="__vm\.wled00.vsarduino.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="html_classic.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="html_mobile.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="html_other.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="html_settings.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="FX.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\json\ArduinoJson-v6.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\json\AsyncJson-v6.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkApi.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkApiArduino.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkArduinoClient.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkConfig.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkDateTime.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkDebug.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkDetectDevice.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkEveryN.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkFifo.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkHandlers.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkParam.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkProtocol.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkProtocolDefs.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\BlynkSimpleEsp.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkTemplates.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkTimer.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkUtility.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkWidgetBase.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\blynk\Blynk\BlynkWiFiCommon.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Callbacks.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\ConnAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\DisconnectReasons.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\espalexa\Espalexa.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\espalexa\EspalexaDevice.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\e131\ESPAsyncE131.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Flags.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Helpers.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\MessageProperties.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="NpbWrapper.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\Packet.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\ParsingInformation.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PingRespPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubCompPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PublishPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRecPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRelPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Storage.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\SubAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\time\Time.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\time\TimeLib.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\timezone\Timezone.h">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\UnsubAckPacket.hpp">
<Filter>Header Files\Dependencies</Filter>
</ClInclude>
<ClInclude Include="alexa.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="blynk.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="button.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="colors.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="const.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="cronixie.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="dmx.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="file.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="html_ui.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="hue.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ir.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="json.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="led.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="mqtt.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="notify.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ntp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="overlay.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="set.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="usermod.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="wled.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="wled_eeprom.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="wled_server.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="xml.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ir_codes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="palettes.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="FX.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="FX_fcn.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\utility.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\BlynkDebug.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\BlynkHandlers.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\blynk\Blynk\BlynkTimer.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\ConnAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\time\DateStrings.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\espalexa\EspalexaDevice.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\e131\ESPAsyncE131.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PingRespPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubCompPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PublishPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRecPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\PubRelPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\SubAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\time\Time.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\timezone\Timezone.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="src\dependencies\async-mqtt-client\AsyncMqttClient\Packets\UnsubAckPacket.cpp">
<Filter>Source Files\Dependencies</Filter>
</ClCompile>
<ClCompile Include="alexa.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="blynk.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="button.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="colors.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="cronixie.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="file.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="hue.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ir.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="json.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="led.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="mqtt.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="notify.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ntp.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="overlay.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="set.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="usermod.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wled.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wled_eeprom.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="wled_server.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="xml.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>

View File

@ -9,6 +9,9 @@
#ifdef WLED_ENABLE_PIXART
#include "html_pixart.h"
#endif
#ifndef WLED_DISABLE_PXMAGIC
#include "html_pxmagic.h"
#endif
#include "html_cpal.h"
/*
@ -113,14 +116,6 @@ void initServer()
DefaultHeaders::Instance().addHeader(F("Access-Control-Allow-Headers"), "*");
#ifdef WLED_ENABLE_WEBSOCKETS
server.on("/liveview", HTTP_GET, [](AsyncWebServerRequest *request){
if (handleIfNoneMatchCacheHeader(request)) return;
AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_liveviewws, PAGE_liveviewws_length);
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
//request->send_P(200, "text/html", PAGE_liveviewws);
});
#ifndef WLED_DISABLE_2D
server.on("/liveview2D", HTTP_GET, [](AsyncWebServerRequest *request){
if (handleIfNoneMatchCacheHeader(request)) return;
@ -128,19 +123,16 @@ void initServer()
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
//request->send_P(200, "text/html", PAGE_liveviewws);
});
#endif
#else
#endif
server.on("/liveview", HTTP_GET, [](AsyncWebServerRequest *request){
if (handleIfNoneMatchCacheHeader(request)) return;
AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_liveview, PAGE_liveview_length);
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
//request->send_P(200, "text/html", PAGE_liveview);
});
#endif
//settings page
server.on("/settings", HTTP_GET, [](AsyncWebServerRequest *request){
@ -164,10 +156,6 @@ void initServer()
}
});
server.on("/sliders", HTTP_GET, [](AsyncWebServerRequest *request){
serveIndex(request);
});
server.on("/welcome", HTTP_GET, [](AsyncWebServerRequest *request){
serveSettings(request);
});
@ -244,19 +232,15 @@ void initServer()
request->send(200, "text/plain", (String)ESP.getFreeHeap());
});
#ifdef WLED_ENABLE_USERMOD_PAGE
server.on("/u", HTTP_GET, [](AsyncWebServerRequest *request){
if (handleIfNoneMatchCacheHeader(request)) return;
AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_usermod, PAGE_usermod_length);
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
//request->send_P(200, "text/html", PAGE_usermod);
});
//Deprecated, use of /json/state and presets recommended instead
server.on("/url", HTTP_GET, [](AsyncWebServerRequest *request){
URL_response(request);
});
#endif
server.on("/teapot", HTTP_GET, [](AsyncWebServerRequest *request){
serveMessage(request, 418, F("418. I'm a teapot."), F("(Tangible Embedded Advanced Project Of Twinkling)"), 254);
@ -353,9 +337,14 @@ void initServer()
serveMessage(request, 501, "Not implemented", F("DMX support is not enabled in this build."), 254);
});
#endif
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
if (captivePortal(request)) return;
serveIndexOrWelcome(request);
if (!showWelcomePage || request->hasArg(F("sliders"))){
serveIndex(request);
} else {
serveSettings(request);
}
});
#ifdef WLED_ENABLE_PIXART
@ -369,6 +358,17 @@ void initServer()
});
#endif
#ifndef WLED_DISABLE_PXMAGIC
server.on("/pxmagic.htm", HTTP_GET, [](AsyncWebServerRequest *request){
if (handleFileRead(request, "/pxmagic.htm")) return;
if (handleIfNoneMatchCacheHeader(request)) return;
AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", PAGE_pxmagic, PAGE_pxmagic_L);
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
});
#endif
server.on("/cpal.htm", HTTP_GET, [](AsyncWebServerRequest *request){
if (handleFileRead(request, "/cpal.htm")) return;
if (handleIfNoneMatchCacheHeader(request)) return;
@ -406,20 +406,9 @@ void initServer()
response->addHeader(FPSTR(s_content_enc),"gzip");
setStaticContentCacheHeaders(response);
request->send(response);
//request->send_P(404, "text/html", PAGE_404);
});
}
void serveIndexOrWelcome(AsyncWebServerRequest *request)
{
if (!showWelcomePage){
serveIndex(request);
} else {
serveSettings(request);
}
}
bool handleIfNoneMatchCacheHeader(AsyncWebServerRequest* request)
{
AsyncWebHeader* header = request->getHeader("If-None-Match");

View File

@ -72,55 +72,6 @@ void XML_response(AsyncWebServerRequest *request, char* dest)
if (request != nullptr) request->send(200, "text/xml", obuf);
}
//Deprecated, use of /json/state and presets recommended instead
void URL_response(AsyncWebServerRequest *request)
{
char sbuf[256];
char s2buf[100];
obuf = s2buf;
olen = 0;
char s[16];
oappend(SET_F("http://"));
IPAddress localIP = Network.localIP();
sprintf(s, "%d.%d.%d.%d", localIP[0], localIP[1], localIP[2], localIP[3]);
oappend(s);
oappend(SET_F("/win&A="));
oappendi(bri);
oappend(SET_F("&CL=h"));
for (int i = 0; i < 3; i++)
{
sprintf(s,"%02X", col[i]);
oappend(s);
}
oappend(SET_F("&C2=h"));
for (int i = 0; i < 3; i++)
{
sprintf(s,"%02X", colSec[i]);
oappend(s);
}
oappend(SET_F("&FX="));
oappendi(effectCurrent);
oappend(SET_F("&SX="));
oappendi(effectSpeed);
oappend(SET_F("&IX="));
oappendi(effectIntensity);
oappend(SET_F("&FP="));
oappendi(effectPalette);
obuf = sbuf;
olen = 0;
oappend(SET_F("<html><body><a href=\""));
oappend(s2buf);
oappend(SET_F("\" target=\"_blank\">"));
oappend(s2buf);
oappend(SET_F("</a></body></html>"));
if (request != nullptr) request->send(200, "text/html", obuf);
}
void extractPin(JsonObject &obj, const char *key) {
if (obj[key].is<JsonArray>()) {
JsonArray pins = obj[key].as<JsonArray>();
@ -328,6 +279,14 @@ void getSettingsJS(byte subPage, char* dest)
sappend('v',SET_F("AC"),apChannel);
sappend('c',SET_F("WS"),noWifiSleep);
#ifndef WLED_DISABLE_ESPNOW
sappend('c',SET_F("RE"),enable_espnow_remote);
sappends('s',SET_F("RMAC"),linked_remote);
#else
//hide remote settings if not compiled
oappend(SET_F("document.getElementById('remd').style.display='none';"));
#endif
#ifdef WLED_USE_ETHERNET
sappend('v',SET_F("ETH"),ethernetType);
#else
@ -360,6 +319,19 @@ void getSettingsJS(byte subPage, char* dest)
{
sappends('m',SET_F("(\"sip\")[1]"),(char*)F("Not active"));
}
#ifndef WLED_DISABLE_ESPNOW
if (last_signal_src[0] != 0) //Have seen an ESP-NOW Remote
{
sappends('m',SET_F("(\"rlid\")[0]"),last_signal_src);
} else if (!enable_espnow_remote)
{
sappends('m',SET_F("(\"rlid\")[0]"),(char*)F("(Enable remote to listen)"));
} else
{
sappends('m',SET_F("(\"rlid\")[0]"),(char*)F("None"));
}
#endif
}
if (subPage == SUBPAGE_LEDS)