diff --git a/.github/workflows/compile-rtk-firmware.yml b/.github/workflows/compile-rtk-firmware.yml index 56f73be28..e2e122770 100644 --- a/.github/workflows/compile-rtk-firmware.yml +++ b/.github/workflows/compile-rtk-firmware.yml @@ -6,7 +6,7 @@ on: env: FILENAME_PREFIX: RTK_Surveyor_Firmware FIRMWARE_VERSION_MAJOR: 3 - FIRMWARE_VERSION_MINOR: 9 + FIRMWARE_VERSION_MINOR: 10 POINTPERFECT_TOKEN: ${{ secrets.POINTPERFECT_TOKEN }} jobs: @@ -77,6 +77,7 @@ jobs: "SparkFun MAX1704x Fuel Gauge Arduino Library"@1.0.4 "SparkFun u-blox GNSS v3"@3.0.14 SparkFun_WebServer_ESP32_W5500@1.5.5 + SSLClientESP32@2.0.0 - name: Enable external libs run: arduino-cli config set library.enable_unsafe_install true diff --git a/.gitignore b/.gitignore index 7e7b06746..5fce5b65b 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,4 @@ NMEA_Client Read_Map_File RTK_Reset Split_Messages +X.509_crt_bundle_bin_to_c diff --git a/Firmware/RTKFirmware.csv b/Firmware/RTKFirmware.csv new file mode 100644 index 000000000..7b89daee9 --- /dev/null +++ b/Firmware/RTKFirmware.csv @@ -0,0 +1,6 @@ +# Name, Type, SubType, Offset, Size, Flags +nvs, data, nvs, 0x9000, 0x5000, +otadata, data, ota, 0xe000, 0x2000, +app0, app, ota_0, 0x10000, 0x640000, +app1, app, ota_1, 0x650000,0x640000, +spiffs, data, spiffs, 0xc90000,0x370000, diff --git a/Firmware/RTK_Surveyor/AP-Config/index.html b/Firmware/RTK_Surveyor/AP-Config/index.html index 4872a1176..ae1f40b2d 100644 --- a/Firmware/RTK_Surveyor/AP-Config/index.html +++ b/Firmware/RTK_Surveyor/AP-Config/index.html @@ -1274,8 +1274,8 @@
- - TCP Client + @@ -1283,12 +1283,12 @@
-

+

- - TCP Server + @@ -1296,19 +1296,46 @@
-

+

-
+
+ +
+ + + + + +
+
+

+
+ +
+
+ +
+ +

diff --git a/Firmware/RTK_Surveyor/AP-Config/src/main.js b/Firmware/RTK_Surveyor/AP-Config/src/main.js index 0e075dfed..5f6c3bb69 100644 --- a/Firmware/RTK_Surveyor/AP-Config/src/main.js +++ b/Firmware/RTK_Surveyor/AP-Config/src/main.js @@ -123,7 +123,7 @@ function parseIncoming(msg) { ge("muxChannel2").innerHTML = "Wheel/Dir Encoder"; } - else if (platformPrefix == "Facet L-Band") { + else if (platformPrefix == "Facet L-Band" || platformPrefix == "Facet L-Band Direct") { show("baseConfig"); hide("sensorConfig"); show("ppConfig"); @@ -353,6 +353,7 @@ function parseIncoming(msg) { updateECEFList(); updateGeodeticList(); tcpBoxes(); + udpBoxes(); tcpBoxesEthernet(); dhcpEthernet(); updateLatLong(); @@ -562,7 +563,7 @@ function validateFields() { } //PointPerfect Config - if (platformPrefix == "Facet L-Band") { + if (platformPrefix == "Facet L-Band" || platformPrefix == "Facet L-Band Direct") { if (ge("enablePointPerfectCorrections").checked == true) { value = ge("pointPerfectDeviceProfileToken").value; if (value.length > 0) @@ -592,10 +593,13 @@ function validateFields() { checkElementString("wifiNetwork2Password", 0, 50, "Must be 0 to 50 characters", "collapseWiFiConfig"); checkElementString("wifiNetwork3SSID", 0, 50, "Must be 0 to 50 characters", "collapseWiFiConfig"); checkElementString("wifiNetwork3Password", 0, 50, "Must be 0 to 50 characters", "collapseWiFiConfig"); - if (ge("enableTcpClient").checked || ge("enableTcpServer").checked) { - checkElementString("wifiTcpPort", 1, 65535, "Must be 1 to 65535", "collapseWiFiConfig"); + if (ge("enablePvtClient").checked || ge("enablePvtServer").checked) { + checkElementString("pvtServerPort", 1, 65535, "Must be 1 to 65535", "collapseWiFiConfig"); } - checkCheckboxMutex("enableTcpClient", "enableTcpServer", "TCP Client and Server can not be enabled at the same time", "collapseWiFiConfig"); + if (ge("enablePvtUdpServer").checked) { + checkElementString("pvtUdpServerPort", 1, 65535, "Must be 1 to 65535", "collapseWiFiConfig"); + } + checkCheckboxMutex("enablePvtClient", "enablePvtServer", "TCP Client and Server can not be enabled at the same time", "collapseWiFiConfig"); //System Config if (ge("enableLogging").checked) { @@ -1062,7 +1066,7 @@ document.addEventListener("DOMContentLoaded", (event) => { if (platformPrefix == "Facet") { ge("antennaReferencePoint").value = 61.4; } - else if (platformPrefix == "Facet L-Band") { + else if (platformPrefix == "Facet L-Band" || platformPrefix == "Facet L-Band Direct") { ge("antennaReferencePoint").value = 69.0; } else { @@ -1567,12 +1571,22 @@ function abortHandler(event) { } function tcpBoxes() { - if (ge("enableTcpClient").checked || ge("enableTcpServer").checked) { + if (ge("enablePvtServer").checked || ge("enablePvtClient").checked) { show("tcpSettingsConfig"); } else { hide("tcpSettingsConfig"); - ge("wifiTcpPort").value = 2947; + ge("pvtServerPort").value = 2947; + } +} + +function udpBoxes() { + if (ge("enablePvtUdpServer").checked) { + show("udpSettingsConfig"); + } + else { + hide("udpSettingsConfig"); + ge("pvtUdpServerPort").value = 10110; } } diff --git a/Firmware/RTK_Surveyor/Begin.ino b/Firmware/RTK_Surveyor/Begin.ino index 744be214e..37eb43277 100644 --- a/Firmware/RTK_Surveyor/Begin.ino +++ b/Firmware/RTK_Surveyor/Begin.ino @@ -1,62 +1,93 @@ -// Initial startup functions for GNSS, SD, display, radio, etc +/*------------------------------------------------------------------------------ +Begin.ino -void identifyBoard() + This module implements the initial startup functions for GNSS, SD, display, + radio, etc. +------------------------------------------------------------------------------*/ + +//---------------------------------------- +// Constants +//---------------------------------------- + +#define MAX_ADC_VOLTAGE 3300 // Millivolts + +// Testing shows the combined ADC+resistors is under a 1% window +#define TOLERANCE 4.75 // Percent: 95.25% - 104.75% + +//---------------------------------------- +// Macros +//---------------------------------------- + +// ADC input +// Ra KOhms | Rb KOhms +// MAX_ADC_VOLTAGE -----/\/\/\/\-----+-----/\/\/\/\----- Ground +// +#define ADC_ID_mV(RaK, RbK) ((uint16_t)(MAX_ADC_VOLTAGE * RbK / (RaK + RbK))) + +//---------------------------------------- +// Hardware initialization functions +//---------------------------------------- + +// Determine if the measured value matches the product ID value +bool idWithAdc(uint16_t mvMeasured, uint16_t mvProduct) { - // Use ADC to check resistor divider - // Express: 10/3.3 - // Express+: 3.3/10 - // Facet: 10/10 - // Facet L-Band: 10/20 - // Reference Station: 20/10 - // Facet L-Band Direct: 10/100 - // Surveyor: ID resistors do not exist - - const float rtkExpressID = 3.3 / (10 + 3.3) * 3300; // 819mV - const float rtkExressPlusID = 10.0 / (10 + 3.3) * 3300; // 2418mV - const float rtkFacetID = 10.0 / (10 + 10) * 3300; // 1650mV - const float rtkFacetLbandID = 20.0 / (20 + 10) * 3300; // 2200mV - const float rtkReferenceStationID = 10.0 / (10 + 20) * 3300; // 1100mV - const float rtkFacetLbandDirectID = 1.0 / (4.7 + 1) * 3300; // 579mV - - const float tolerance = 0.0475; // 4.75% Testing shows the combined ADC+resistors is under a 1% window - const float upperThreshold = 1 + tolerance; // 104.75% - const float lowerThreshold = 1 - tolerance; // 95.25% + uint16_t lowerThreshold; + uint16_t upperThreshold; + + // Return true if the mvMeasured value is within the tolerance range + // of the mvProduct value + upperThreshold = (1.0 + (TOLERANCE / 100.)) * mvProduct; + lowerThreshold = (1.0 - (TOLERANCE / 100.)) * mvProduct; + return (upperThreshold > mvMeasured) && (mvMeasured > lowerThreshold); +} +// Use a pair of resistors on pin 35 to ID the board type +// If the ID resistors are not available then use a variety of other methods +// (I2C, GPIO test, etc) to ID the board. +// Assume no hardware interfaces have been started so we need to start/stop any hardware +// used in tests accordingly. +void identifyBoard() +{ + // Use ADC to check the resistor divider int pin_deviceID = 35; uint16_t idValue = analogReadMilliVolts(pin_deviceID); log_d("Board ADC ID (mV): %d", idValue); - if (idValue > (rtkFacetID * lowerThreshold) && idValue < (rtkFacetID * upperThreshold)) - { - productVariant = RTK_FACET; - } - else if (idValue > (rtkFacetLbandID * lowerThreshold) && idValue < (rtkFacetLbandID * upperThreshold)) - { - productVariant = RTK_FACET_LBAND; - } - else if (idValue > (rtkExpressID * lowerThreshold) && idValue < (rtkExpressID * upperThreshold)) - { + // Order checks by millivolt values high to low + + // Facet L-Band Direct: 4.7/1 --> 551mV < 579mV < 607mV + if (idWithAdc(idValue, ADC_ID_mV(4.7, 1))) + productVariant = RTK_FACET_LBAND_DIRECT; + + // Express: 10/3.3 --> 779mV < 819mV < 858mV + else if (idWithAdc(idValue, ADC_ID_mV(10, 3.3))) productVariant = RTK_EXPRESS; - } - else if (idValue > (rtkExressPlusID * lowerThreshold) && idValue < (rtkExressPlusID * upperThreshold)) - { - productVariant = RTK_EXPRESS_PLUS; - } - else if (idValue > (rtkReferenceStationID * lowerThreshold) && idValue < (rtkReferenceStationID * upperThreshold)) + + // Reference Station: 20/10 --> 1047mV < 1100mV < 1153mV + else if (idWithAdc(idValue, ADC_ID_mV(20, 10))) { productVariant = REFERENCE_STATION; // We can't auto-detect the ZED version if the firmware is in configViaEthernet mode, // so fake it here - otherwise messageSupported always returns false zedFirmwareVersionInt = 112; } - else if (idValue > (rtkFacetLbandDirectID * lowerThreshold) && idValue < (rtkFacetLbandDirectID * upperThreshold)) - { - productVariant = RTK_FACET_LBAND_DIRECT; - } + // Facet: 10/10 --> 1571mV < 1650mV < 1729mV + else if (idWithAdc(idValue, ADC_ID_mV(10, 10))) + productVariant = RTK_FACET; + + // Facet L-Band: 10/20 --> 2095mV < 2200mV < 2305mV + else if (idWithAdc(idValue, ADC_ID_mV(10, 20))) + productVariant = RTK_FACET_LBAND; + + // Express+: 3.3/10 --> 2363mV < 2481mV < 2600mV + else if (idWithAdc(idValue, ADC_ID_mV(3.3, 10))) + productVariant = RTK_EXPRESS_PLUS; + + // ID resistors do not exist for the following: + // Surveyor + // Unknown else - { productVariant = RTK_UNKNOWN; // Need to wait until the GNSS and Accel have been initialized - } } // Setup any essential power pins @@ -172,9 +203,6 @@ void beginBoard() // Bug in ZED-F9P v1.13 firmware causes RTK LED to not light when RTK Floating with SBAS on. // The following changes the POR default but will be overwritten by settings in NVM or settings file settings.ubxConstellations[1].enabled = false; - - strncpy(platformFilePrefix, "SFE_Surveyor", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Surveyor", sizeof(platformPrefix) - 1); } else if (productVariant == RTK_EXPRESS || productVariant == RTK_EXPRESS_PLUS) { @@ -198,17 +226,6 @@ void beginBoard() pinMode(pin_setupButton, INPUT_PULLUP); setMuxport(settings.dataPortChannel); // Set mux to user's choice: NMEA, I2C, PPS, or DAC - - if (productVariant == RTK_EXPRESS) - { - strncpy(platformFilePrefix, "SFE_Express", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Express", sizeof(platformPrefix) - 1); - } - else if (productVariant == RTK_EXPRESS_PLUS) - { - strncpy(platformFilePrefix, "SFE_Express_Plus", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Express Plus", sizeof(platformPrefix) - 1); - } } else if (productVariant == RTK_FACET || productVariant == RTK_FACET_LBAND || productVariant == RTK_FACET_LBAND_DIRECT) @@ -247,21 +264,8 @@ void beginBoard() pinMode(pin_radio_cts, OUTPUT); digitalWrite(pin_radio_cts, LOW); - if (productVariant == RTK_FACET) - { - strncpy(platformFilePrefix, "SFE_Facet", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Facet", sizeof(platformPrefix) - 1); - } - else if (productVariant == RTK_FACET_LBAND) - { - strncpy(platformFilePrefix, "SFE_Facet_LBand", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Facet L-Band", sizeof(platformPrefix) - 1); - } - else if (productVariant == RTK_FACET_LBAND_DIRECT) + if (productVariant == RTK_FACET_LBAND_DIRECT) { - strncpy(platformFilePrefix, "SFE_Facet_LBand_Direct", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Facet L-Band Direct", sizeof(platformPrefix) - 1); - // Override the default setting if a user has not explicitly configured the setting if (settings.useI2cForLbandCorrectionsConfigured == false) settings.useI2cForLbandCorrections = false; @@ -272,9 +276,6 @@ void beginBoard() // No powerOnCheck settings.enablePrintBatteryMessages = false; // No pesky battery messages - - strncpy(platformFilePrefix, "SFE_Reference_Station", sizeof(platformFilePrefix) - 1); - strncpy(platformPrefix, "Reference Station", sizeof(platformPrefix) - 1); } char versionString[21]; @@ -1239,25 +1240,77 @@ void beginI2C() // Assign I2C interrupts to the core that started the task. See: https://github.com/espressif/arduino-esp32/issues/3386 void pinI2CTask(void *pvParameters) { + bool i2cBusAvailable; + uint32_t timer; + Wire.begin(); // Start I2C on core the core that was chosen when the task was started // Wire.setClock(400000); - // begin/end wire transmission to see if bus is responding correctly - // All good: 0ms, response 2 - // SDA/SCL shorted: 1000ms timeout, response 5 - // SCL/VCC shorted: 14ms, response 5 - // SCL/GND shorted: 1000ms, response 5 - // SDA/VCC shorted: 1000ms, reponse 5 - // SDA/GND shorted: 14ms, response 5 - Wire.beginTransmission(0x15); // Dummy address - int endValue = Wire.endTransmission(); - if (endValue == 2) - online.i2c = true; - else - systemPrintln("Error: I2C Bus Not Responding"); + // Display the device addresses + i2cBusAvailable = false; + for (uint8_t addr = 0; addr < 127; addr++) + { + // begin/end wire transmission to see if the bus is responding correctly + // All good: 0ms, response 2 + // SDA/SCL shorted: 1000ms timeout, response 5 + // SCL/VCC shorted: 14ms, response 5 + // SCL/GND shorted: 1000ms, response 5 + // SDA/VCC shorted: 1000ms, response 5 + // SDA/GND shorted: 14ms, response 5 + timer = millis(); + Wire.beginTransmission(addr); + if (Wire.endTransmission() == 0) + { + i2cBusAvailable = true; + switch (addr) + { + default: { + systemPrintf("0x%02x\r\n", addr); + break; + } - i2cPinned = true; + case 0x19: { + systemPrintf("0x%02x - LIS2DH12 Accelerometer\r\n", addr); + break; + } + + case 0x36: { + systemPrintf("0x%02x - MAX17048 Fuel Gauge\r\n", addr); + break; + } + + case 0x3d: { + systemPrintf("0x%02x - SSD1306 (64x48) OLED Driver\r\n", addr); + break; + } + + case 0x42: { + systemPrintf("0x%02x - u-blox ZED-F9P GNSS Receiver\r\n", addr); + break; + } + + case 0x43: { + systemPrintf("0x%02x - u-blox NEO-D9S-00B Correction Data Receiver\r\n", addr); + break; + } + case 0x60: { + systemPrintf("0x%02x - Crypto Coprocessor\r\n", addr); + break; + } + } + } + else if ((millis() - timer) > 3) + { + systemPrintln("Error: I2C Bus Not Responding"); + i2cBusAvailable = false; + break; + } + } + + // Update the I2C status + online.i2c = i2cBusAvailable; + i2cPinned = true; vTaskDelete(nullptr); // Delete task once it has run once } diff --git a/Firmware/RTK_Surveyor/Bluetooth.ino b/Firmware/RTK_Surveyor/Bluetooth.ino index f75dbc798..783765cbd 100644 --- a/Firmware/RTK_Surveyor/Bluetooth.ino +++ b/Firmware/RTK_Surveyor/Bluetooth.ino @@ -27,9 +27,10 @@ // Locals - compiled out //---------------------------------------- +static volatile BTState bluetoothState = BT_OFF; + #ifdef COMPILE_BT BTSerialInterface *bluetoothSerial; -static volatile BTState bluetoothState = BT_OFF; //---------------------------------------- // Bluetooth Routines - compiled out @@ -157,9 +158,28 @@ void bluetoothStart() else log_d("State out of range for Bluetooth Broadcast: %d", systemState); - snprintf(deviceName, sizeof(deviceName), "%s %s%02X%02X", platformPrefix, stateName, btMACAddress[4], + char productName[50] = {0}; + strncpy(productName, platformPrefix, sizeof(productName)); + + // BLE is limited to ~28 characters in the device name. Shorten platformPrefix if needed. + if (settings.bluetoothRadioType == BLUETOOTH_RADIO_BLE) + { + if (strcmp(productName, "Facet L-Band Direct") == 0) + { + strncpy(productName, "Facet L-Band", sizeof(productName)); + } + } + + snprintf(deviceName, sizeof(deviceName), "%s %s%02X%02X", productName, stateName, btMACAddress[4], btMACAddress[5]); + if (strlen(deviceName) > 28) + { + if (ENABLE_DEVELOPER) + systemPrintf("Warning! The Bluetooth device name '%s' is %d characters long. It may not work in BLE mode.\r\n", deviceName, + strlen(deviceName)); + } + // Select Bluetooth setup if (settings.bluetoothRadioType == BLUETOOTH_RADIO_OFF) return; diff --git a/Firmware/RTK_Surveyor/Developer.ino b/Firmware/RTK_Surveyor/Developer.ino index 23df21c68..6e2bcf114 100644 --- a/Firmware/RTK_Surveyor/Developer.ino +++ b/Firmware/RTK_Surveyor/Developer.ino @@ -44,16 +44,13 @@ void ntpServerStop() {} void menuNetwork() {systemPrint("Network not compiled");} void networkUpdate() {} void networkVerifyTables() {} +void networkStop(uint8_t networkType) {} //---------------------------------------- // NTRIP client //---------------------------------------- void ntripClientPrintStatus() {systemPrint("NTRIP Client not compiled");} -void ntripClientStart() -{ - systemPrintln("NTRIP Client not available: Ethernet and WiFi not compiled"); -} void ntripClientStop(bool clientAllocated) {online.ntripClient = false;} void ntripClientUpdate() {} void ntripClientValidateTables() {} @@ -65,14 +62,36 @@ void ntripClientValidateTables() {} bool ntripServerIsCasting() {return false;} void ntripServerPrintStatus() {systemPrint("NTRIP Server not compiled");} void ntripServerProcessRTCM(uint8_t incoming) {} -void ntripServerStart() -{ - systemPrintln("NTRIP Server not available: Ethernet and WiFi not compiled"); -} void ntripServerStop(bool clientAllocated) {online.ntripServer = false;} void ntripServerUpdate() {} void ntripServerValidateTables() {} +//---------------------------------------- +// OTA client +//---------------------------------------- + +void otaVerifyTables() {} + +//---------------------------------------- +// PVT client +//---------------------------------------- + +int32_t pvtClientSendData(uint16_t dataHead) {return 0;} +void pvtClientUpdate() {} +void pvtClientValidateTables() {} +void pvtClientZeroTail() {} +void discardPvtClientBytes(RING_BUFFER_OFFSET previousTail, RING_BUFFER_OFFSET newTail) {} + +//---------------------------------------- +// PVT UDP server +//---------------------------------------- + +int32_t pvtUdpServerSendData(uint16_t dataHead) {return 0;} +void pvtUdpServerStop() {} +void pvtUdpServerUpdate() {} +void pvtUdpServerZeroTail() {} +void discardPvtUdpServerBytes(RING_BUFFER_OFFSET previousTail, RING_BUFFER_OFFSET newTail) {} + #endif // COMPILE_NETWORK //---------------------------------------- @@ -92,22 +111,12 @@ bool parseIncomingSettings() {return false;} #endif // COMPILE_AP #ifndef COMPILE_WIFI -//---------------------------------------- -// PVT client -//---------------------------------------- - -uint16_t pvtClientSendData(uint16_t dataHead) {return 0;}; -void pvtClientUpdate() {} -void pvtClientValidateTables() {} -void pvtClientZeroTail() {} -void discardPvtClientBytes(RING_BUFFER_OFFSET previousTail, RING_BUFFER_OFFSET newTail) {} - - //---------------------------------------- // PVT server //---------------------------------------- -int pvtServerSendData(uint16_t dataHead) {return 0;} +int32_t pvtServerSendData(uint16_t dataHead) {return 0;} +void pvtServerStop() {} void pvtServerUpdate() {} void pvtServerZeroTail() {} void pvtServerValidateTables() {} @@ -131,5 +140,6 @@ void wifiStart() {} void wifiStop() {} void wifiUpdate() {} void wifiShutdown() {} +#define WIFI_STOP() {} #endif // COMPILE_WIFI diff --git a/Firmware/RTK_Surveyor/Display.ino b/Firmware/RTK_Surveyor/Display.ino index 6f7a1ea95..28cb785ec 100644 --- a/Firmware/RTK_Surveyor/Display.ino +++ b/Firmware/RTK_Surveyor/Display.ino @@ -605,35 +605,7 @@ void displaySplash() printTextCenter("RTK", yPos, QW_FONT_8X16, 1, false); yPos = yPos + fontHeight + 5; - - if (productVariant == RTK_SURVEYOR) - { - printTextCenter("Surveyor", yPos, QW_FONT_8X16, 1, false); - } - else if (productVariant == RTK_EXPRESS) - { - printTextCenter("Express", yPos, QW_FONT_8X16, 1, false); - } - else if (productVariant == RTK_EXPRESS_PLUS) - { - printTextCenter("Express+", yPos, QW_FONT_8X16, 1, false); - } - else if (productVariant == RTK_FACET) - { - printTextCenter("Facet", yPos, QW_FONT_8X16, 1, false); - } - else if (productVariant == RTK_FACET_LBAND) - { - printTextCenter("Facet LB", yPos, QW_FONT_8X16, 1, false); - } - else if (productVariant == RTK_FACET_LBAND_DIRECT) - { - printTextCenter("Facet LB", yPos, QW_FONT_8X16, 1, false); //Same as L-Band at boot - } - else if (productVariant == REFERENCE_STATION) - { - printTextCenter("Ref Stn", yPos, QW_FONT_8X16, 1, false); - } + printTextCenter(productDisplayNames[productVariant], yPos, QW_FONT_8X16, 1, false); yPos = yPos + fontHeight + 7; char unitFirmware[50]; @@ -2581,7 +2553,13 @@ void paintDisplaySetupProfile(const char *firstState) { // Lookup next available profile, limit to 8 characters getProfileNameFromUnit(index, profileName, sizeof(profileName)); - printTextCenter(profileName, 12 * itemsDisplayed, QW_FONT_8X16, 1, itemsDisplayed == 3); + + profileName[6]= 0; //Shorten profileName to 6 characters + + char miniProfileName[16] = {0}; + snprintf(miniProfileName, sizeof(miniProfileName), "%d_%s", index, profileName); //Prefix with index # + + printTextCenter(miniProfileName, 12 * itemsDisplayed, QW_FONT_8X16, 1, itemsDisplayed == 3); index++; } } diff --git a/Firmware/RTK_Surveyor/Ethernet.ino b/Firmware/RTK_Surveyor/Ethernet.ino index c7b3cb242..9273715b7 100644 --- a/Firmware/RTK_Surveyor/Ethernet.ino +++ b/Firmware/RTK_Surveyor/Ethernet.ino @@ -146,7 +146,7 @@ void ethernetBegin() Ethernet.init(pin_Ethernet_CS); // First we start Ethernet without DHCP to detect if a cable is connected - // DHCP causes system freeze for ~62 seconds so we avoid it until a cable is conncted + // DHCP causes system freeze for ~62 seconds so we avoid it until a cable is connected Ethernet.begin(ethernetMACAddress, settings.ethernetIP, settings.ethernetDNS, settings.ethernetGateway, settings.ethernetSubnet); @@ -254,7 +254,8 @@ bool ethernetIsNeeded() return true; // Does PVT client or server need Ethernet? - if (settings.enablePvtClient || settings.enablePvtServer) + if (settings.enablePvtClient || settings.enablePvtServer + || settings.enablePvtUdpServer || settings.enableAutoFirmwareUpdate) return true; return false; diff --git a/Firmware/RTK_Surveyor/Form.ino b/Firmware/RTK_Surveyor/Form.ino index 810d31186..496699fd8 100644 --- a/Firmware/RTK_Surveyor/Form.ino +++ b/Firmware/RTK_Surveyor/Form.ino @@ -104,8 +104,10 @@ bool startWebServer(bool startWiFi = true, int httpPort = 80) break; } + if(settings.enableCaptivePortal == true) + webserver->addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER); // only when requested from AP + websocket->onEvent(onWsEvent); - webserver->addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER); // only when requested from AP webserver->addHandler(websocket); // * index.html (not gz'd) @@ -620,7 +622,9 @@ void createSettingsString(char *newSettings) newSettings[0] = '\0'; // Erase current settings string // System Info - stringRecord(newSettings, "platformPrefix", platformPrefix); + char apPlatformPrefix[80]; + strncpy(apPlatformPrefix, platformPrefixTable[productVariant], sizeof(apPlatformPrefix)); + stringRecord(newSettings, "platformPrefix", apPlatformPrefix); char apRtkFirmwareVersion[86]; getFirmwareVersion(apRtkFirmwareVersion, sizeof(apRtkFirmwareVersion), true); @@ -757,6 +761,10 @@ void createSettingsString(char *newSettings) snprintf(ntpRefId, sizeof(ntpRefId), "%s", settings.ntpReferenceId); stringRecord(newSettings, "ntpReferenceId", ntpRefId); + // Automatic firmware update settings + stringRecord(newSettings, "enableAutoFirmwareUpdate", settings.enableAutoFirmwareUpdate); + stringRecord(newSettings, "autoFirmwareCheckMinutes", settings.autoFirmwareCheckMinutes); + // Turn on SD display block last stringRecord(newSettings, "sdMounted", online.microSD); @@ -1004,7 +1012,11 @@ void createSettingsString(char *newSettings) else stringRecord(newSettings, "wifiConfigOverAP", 0); // 1 = AP mode, 0 = WiFi + stringRecord(newSettings, "enablePvtServer", settings.enablePvtServer); + stringRecord(newSettings, "enablePvtClient", settings.enablePvtClient); stringRecord(newSettings, "pvtServerPort", settings.pvtServerPort); + stringRecord(newSettings, "enablePvtUdpServer", settings.enablePvtUdpServer); + stringRecord(newSettings, "pvtUdpServerPort", settings.pvtUdpServerPort); stringRecord(newSettings, "enableRCFirmware", enableRCFirmware); // New settings not yet integrated @@ -1250,6 +1262,8 @@ void updateSettingWithValue(const char *settingName, const char *settingValueStr } else if (strcmp(settingName, "pvtServerPort") == 0) settings.pvtServerPort = settingValue; + else if (strcmp(settingName, "pvtUdpServerPort") == 0) + settings.pvtUdpServerPort = settingValue; else if (strcmp(settingName, "wifiConfigOverAP") == 0) { if (settingValue == 1) // Drop downs come back as a value @@ -1262,6 +1276,8 @@ void updateSettingWithValue(const char *settingName, const char *settingValueStr settings.enablePvtClient = settingValueBool; else if (strcmp(settingName, "enablePvtServer") == 0) settings.enablePvtServer = settingValueBool; + else if (strcmp(settingName, "enablePvtUdpServer") == 0) + settings.enablePvtUdpServer = settingValueBool; else if (strcmp(settingName, "enableRCFirmware") == 0) enableRCFirmware = settingValueBool; else if (strcmp(settingName, "minElev") == 0) @@ -1341,6 +1357,12 @@ void updateSettingWithValue(const char *settingName, const char *settingValueStr else if (strcmp(settingName, "mdnsEnable") == 0) settings.mdnsEnable = settingValueBool; + // Automatic firmware update settings + else if (strcmp(settingName, "enableAutoFirmwareUpdate") == 0) + settings.enableAutoFirmwareUpdate = settingValueBool; + else if (strcmp(settingName, "autoFirmwareCheckMinutes") == 0) + settings.autoFirmwareCheckMinutes = settingValueBool; + // Unused variables - read to avoid errors else if (strcmp(settingName, "measurementRateSec") == 0) { diff --git a/Firmware/RTK_Surveyor/GpsMessageParser.h b/Firmware/RTK_Surveyor/GpsMessageParser.h new file mode 100644 index 000000000..50a32c8ef --- /dev/null +++ b/Firmware/RTK_Surveyor/GpsMessageParser.h @@ -0,0 +1,146 @@ +/*------------------------------------------------------------------------------ +GpsMessageParser.h + + Constant and routine declarations for the GPS message parser. +------------------------------------------------------------------------------*/ + +#ifndef __GPS_MESSAGE_PARSER_H__ +#define __GPS_MESSAGE_PARSER_H__ + +#include + +#include "crc24q.h" // 24-bit CRC-24Q cyclic redundancy checksum for RTCM parsing + +//---------------------------------------- +// Constants +//---------------------------------------- + +#define PARSE_BUFFER_LENGTH 3000 // Some USB RAWX messages can be > 2k + +enum +{ + SENTENCE_TYPE_NONE = 0, + + // Add new sentence types below in alphabetical order + SENTENCE_TYPE_NMEA, + SENTENCE_TYPE_RTCM, + SENTENCE_TYPE_UBX, +}; + +//---------------------------------------- +// Types +//---------------------------------------- + +typedef struct _PARSE_STATE *P_PARSE_STATE; + +// Parse routine +typedef uint8_t (*PARSE_ROUTINE)(P_PARSE_STATE parse, // Parser state + uint8_t data); // Incoming data byte + +// End of message callback routine +typedef void (*PARSE_EOM_CALLBACK)(P_PARSE_STATE parse, // Parser state + uint8_t type); // Message type + +typedef struct _PARSE_STATE +{ + PARSE_ROUTINE state; // Parser state routine + PARSE_EOM_CALLBACK eomCallback; // End of message callback routine + const char *parserName; // Name of parser + uint32_t crc; // RTCM computed CRC + uint32_t rtcmCrc; // Computed CRC value for the RTCM message + uint32_t invalidRtcmCrcs; // Number of bad RTCM CRCs detected + uint16_t bytesRemaining; // Bytes remaining in RTCM CRC calculation + uint16_t length; // Message length including line termination + uint16_t maxLength; // Maximum message length including line termination + uint16_t message; // RTCM message number + uint16_t nmeaLength; // Length of the NMEA message without line termination + uint8_t buffer[PARSE_BUFFER_LENGTH]; // Buffer containing the message + uint8_t nmeaMessageName[16]; // Message name + uint8_t nmeaMessageNameLength; // Length of the message name + uint8_t ck_a; // U-blox checksum byte 1 + uint8_t ck_b; // U-blox checksum byte 2 + bool computeCrc; // Compute the CRC when true +} PARSE_STATE; + +//---------------------------------------- +// Macros +//---------------------------------------- + +#ifdef PARSE_NMEA_MESSAGES +#define NMEA_PREAMBLE nmeaPreamble, +#else +#define NMEA_PREAMBLE +#endif // PARSE_NMEA_MESSAGES + +#ifdef PARSE_RTCM_MESSAGES +#define RTCM_PREAMBLE rtcmPreamble, +#else +#define RTCM_PREAMBLE +#endif // PARSE_RTCM_MESSAGES + +#ifdef PARSE_UBLOX_MESSAGES +#define UBLOX_PREAMBLE ubloxPreamble, +#else +#define UBLOX_PREAMBLE +#endif // PARSE_UBLOX_MESSAGES + +#define GPS_PARSE_TABLE \ +PARSE_ROUTINE const gpsParseTable[] = \ +{ \ + NMEA_PREAMBLE \ + RTCM_PREAMBLE \ + UBLOX_PREAMBLE \ +}; \ + \ +const int gpsParseTableEntries = sizeof(gpsParseTable) / sizeof(gpsParseTable[0]); + +//---------------------------------------- +// External values +//---------------------------------------- + +extern PARSE_ROUTINE const gpsParseTable[]; +extern const int gpsParseTableEntries; + +//---------------------------------------- +// External routines +//---------------------------------------- + +// Main parser routine +uint8_t gpsMessageParserFirstByte(PARSE_STATE *parse, uint8_t data); + +// NMEA parse routines +uint8_t nmeaPreamble(PARSE_STATE *parse, uint8_t data); +uint8_t nmeaFindFirstComma(PARSE_STATE *parse, uint8_t data); +uint8_t nmeaFindAsterisk(PARSE_STATE *parse, uint8_t data); +uint8_t nmeaChecksumByte1(PARSE_STATE *parse, uint8_t data); +uint8_t nmeaChecksumByte2(PARSE_STATE *parse, uint8_t data); +uint8_t nmeaLineTermination(PARSE_STATE *parse, uint8_t data); + +// RTCM parse routines +uint8_t rtcmPreamble(PARSE_STATE *parse, uint8_t data); +uint8_t rtcmReadLength1(PARSE_STATE *parse, uint8_t data); +uint8_t rtcmReadLength2(PARSE_STATE *parse, uint8_t data); +uint8_t rtcmReadMessage1(PARSE_STATE *parse, uint8_t data); +uint8_t rtcmReadMessage2(PARSE_STATE *parse, uint8_t data); +uint8_t rtcmReadData(PARSE_STATE *parse, uint8_t data); +uint8_t rtcmReadCrc(PARSE_STATE *parse, uint8_t data); + +// u-blox parse routines +uint8_t ubloxPreamble(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxSync2(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxClass(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxId(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxLength1(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxLength2(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxPayload(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxCkA(PARSE_STATE *parse, uint8_t data); +uint8_t ubloxCkB(PARSE_STATE *parse, uint8_t data); + +// External print routines +void printNmeaChecksumError(PARSE_STATE *parse); +void printRtcmChecksumError(PARSE_STATE *parse); +void printRtcmMaxLength(PARSE_STATE *parse); +void printUbloxChecksumError(PARSE_STATE *parse); +void printUbloxInvalidData(PARSE_STATE *parse); + +#endif // __GPS_MESSAGE_PARSER_H__ diff --git a/Firmware/RTK_Surveyor/GpsMessageParser.ino b/Firmware/RTK_Surveyor/GpsMessageParser.ino new file mode 100644 index 000000000..74d5d643c --- /dev/null +++ b/Firmware/RTK_Surveyor/GpsMessageParser.ino @@ -0,0 +1,27 @@ +/*------------------------------------------------------------------------------ +GpsMessageParser.ino + + Parse messages from GPS radios +------------------------------------------------------------------------------*/ + +// Wait for the first byte in the GPS message +uint8_t gpsMessageParserFirstByte(PARSE_STATE *parse, uint8_t data) +{ + int index; + PARSE_ROUTINE parseRoutine; + uint8_t sentenceType; + + // Walk through the parse table + for (index = 0; index < gpsParseTableEntries; index++) + { + parseRoutine = gpsParseTable[index]; + sentenceType = parseRoutine(parse, data); + if (sentenceType) + return sentenceType; + } + + // preamble byte not found + parse->length = 0; + parse->state = gpsMessageParserFirstByte; + return SENTENCE_TYPE_NONE; +} diff --git a/Firmware/RTK_Surveyor/NTP.ino b/Firmware/RTK_Surveyor/NTP.ino index 5943be704..d07ce6169 100644 --- a/Firmware/RTK_Surveyor/NTP.ino +++ b/Firmware/RTK_Surveyor/NTP.ino @@ -75,6 +75,8 @@ const char * const ntpServerStateName[] = }; const int ntpServerStateNameEntries = sizeof(ntpServerStateName) / sizeof(ntpServerStateName[0]); +const RtkMode_t ntpServerMode = RTK_MODE_NTP; + //---------------------------------------- // Locals //---------------------------------------- @@ -762,17 +764,6 @@ bool configureUbloxModuleNTP() // NTP Server routines //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -// Stop the NTP server -void ntpServerEnd() -{ -} - -// Determine if the NTP server is enabled -bool ntpServerIsEnabled() -{ - return (systemState >= STATE_NTPSERVER_NOT_STARTED) && (systemState <= STATE_NTPSERVER_SYNC); -} - // Update the state of the NTP server state machine void ntpServerSetState(uint8_t newState) { @@ -830,6 +821,14 @@ void ntpServerUpdate() if (!HAS_ETHERNET) return; + // Shutdown the NTP server when the mode or setting changes + if (NEQ_RTK_MODE(ntpServerMode)) + { + if (ntpServerState > NTP_STATE_OFF) + ntpServerStop(); + return; + } + // Process the NTP state DMW_st(ntpServerSetState, ntpServerState); switch (ntpServerState) @@ -839,7 +838,7 @@ void ntpServerUpdate() case NTP_STATE_OFF: // Determine if the NTP server is enabled - if (ntpServerIsEnabled()) + if (EQ_RTK_MODE(ntpServerMode)) { // Start the network if (networkUserOpen(NETWORK_USER_NTP_SERVER, NETWORK_TYPE_ETHERNET)) @@ -850,7 +849,7 @@ void ntpServerUpdate() // Wait for the network conection case NTP_STATE_NETWORK_STARTING: // Determine if the network has failed - if (networkIsShuttingDown(NETWORK_USER_NTP_SERVER) || (!ntpServerIsEnabled())) + if (networkIsShuttingDown(NETWORK_USER_NTP_SERVER)) // Stop the NTP server, restart it if possible ntpServerStop(); @@ -861,7 +860,7 @@ void ntpServerUpdate() case NTP_STATE_NETWORK_CONNECTED: // Determine if the network has failed - if (networkIsShuttingDown(NETWORK_USER_NTP_SERVER) || (!ntpServerIsEnabled())) + if (networkIsShuttingDown(NETWORK_USER_NTP_SERVER)) // Stop the NTP server, restart it if possible ntpServerStop(); @@ -889,7 +888,7 @@ void ntpServerUpdate() case NTP_STATE_SERVER_RUNNING: // Determine if the network has failed - if (networkIsShuttingDown(NETWORK_USER_NTP_SERVER) || (!ntpServerIsEnabled())) + if (networkIsShuttingDown(NETWORK_USER_NTP_SERVER)) // Stop the NTP server, restart it if possible ntpServerStop(); diff --git a/Firmware/RTK_Surveyor/NVM.ino b/Firmware/RTK_Surveyor/NVM.ino index 22ec198c0..69c5724fa 100644 --- a/Firmware/RTK_Surveyor/NVM.ino +++ b/Firmware/RTK_Surveyor/NVM.ino @@ -259,6 +259,8 @@ void recordSystemSettingsToFile(File *settingsFile) settingsFile->printf("%s=%s\r\n", "ntripClient_MountPointPW", settings.ntripClient_MountPointPW); settingsFile->printf("%s=%d\r\n", "ntripClient_TransmitGGA", settings.ntripClient_TransmitGGA); settingsFile->printf("%s=%d\r\n", "serialTimeoutGNSS", settings.serialTimeoutGNSS); + + // Point Perfect settingsFile->printf("%s=%s\r\n", "pointPerfectDeviceProfileToken", settings.pointPerfectDeviceProfileToken); settingsFile->printf("%s=%d\r\n", "enablePointPerfectCorrections", settings.enablePointPerfectCorrections); settingsFile->printf("%s=%d\r\n", "autoKeyRenewal", settings.autoKeyRenewal); @@ -272,6 +274,8 @@ void recordSystemSettingsToFile(File *settingsFile) settingsFile->printf("%s=%llu\r\n", "pointPerfectNextKeyDuration", settings.pointPerfectNextKeyDuration); settingsFile->printf("%s=%llu\r\n", "pointPerfectNextKeyStart", settings.pointPerfectNextKeyStart); settingsFile->printf("%s=%llu\r\n", "lastKeyAttempt", settings.lastKeyAttempt); + settingsFile->printf("%s=%d\r\n", "debugPpCertificate", settings.debugPpCertificate); + settingsFile->printf("%s=%d\r\n", "updateZEDSettings", settings.updateZEDSettings); settingsFile->printf("%s=%d\r\n", "LBandFreq", settings.LBandFreq); settingsFile->printf("%s=%d\r\n", "enableLogging", settings.enableLogging); @@ -323,8 +327,10 @@ void recordSystemSettingsToFile(File *settingsFile) settingsFile->printf("%s=%d\r\n", "bluetoothRadioType", settings.bluetoothRadioType); settingsFile->printf("%s=%d\r\n", "enablePvtClient", settings.enablePvtClient); settingsFile->printf("%s=%d\r\n", "enablePvtServer", settings.enablePvtServer); + settingsFile->printf("%s=%d\r\n", "enablePvtUdpServer", settings.enablePvtUdpServer); settingsFile->printf("%s=%d\r\n", "debugPvtClient", settings.debugPvtClient); settingsFile->printf("%s=%d\r\n", "debugPvtServer", settings.debugPvtServer); + settingsFile->printf("%s=%d\r\n", "debugPvtUdpServer", settings.debugPvtUdpServer); settingsFile->printf("%s=%d\r\n", "espnowBroadcast", settings.espnowBroadcast); settingsFile->printf("%s=%d\r\n", "antennaHeight", settings.antennaHeight); settingsFile->printf("%s=%0.2f\r\n", "antennaReferencePoint", settings.antennaReferencePoint); @@ -350,6 +356,7 @@ void recordSystemSettingsToFile(File *settingsFile) settingsFile->printf("%s=%d\r\n", "wifiConfigOverAP", settings.wifiConfigOverAP); settingsFile->printf("%s=%d\r\n", "pvtServerPort", settings.pvtServerPort); + settingsFile->printf("%s=%d\r\n", "pvtUdpServerPort", settings.pvtUdpServerPort); settingsFile->printf("%s=%d\r\n", "minElev", settings.minElev); settingsFile->printf("%s=%d\r\n", "imuYaw", settings.imuYaw); @@ -432,8 +439,15 @@ void recordSystemSettingsToFile(File *settingsFile) settingsFile->printf("%s=%d\r\n", "i2cInterruptsCore", settings.i2cInterruptsCore); settingsFile->printf("%s=%d\r\n", "rtcmTimeoutBeforeUsingLBand_s", settings.rtcmTimeoutBeforeUsingLBand_s); - //Add new settings above - //<------------------------------------------------------------> + // Automatic Firmware Update + settingsFile->printf("%s=%d\r\n", "autoFirmwareCheckMinutes", settings.autoFirmwareCheckMinutes); + settingsFile->printf("%s=%d\r\n", "debugFirmwareUpdate", settings.debugFirmwareUpdate); + settingsFile->printf("%s=%d\r\n", "enableAutoFirmwareUpdate", settings.enableAutoFirmwareUpdate); + + settingsFile->printf("%s=%d\r\n", "debugLBand", settings.debugLBand); + settingsFile->printf("%s=%d\r\n", "enableCaptivePortal", settings.enableCaptivePortal); + + //Add new settings above <------------------------------------------------------------> } // Given a fileName, parse the file and load the given settings struct @@ -1036,6 +1050,8 @@ bool parseLine(char *str, Settings *settings) settings->ntripClient_TransmitGGA = d; else if (strcmp(settingName, "serialTimeoutGNSS") == 0) settings->serialTimeoutGNSS = d; + + // Point Perfect else if (strcmp(settingName, "pointPerfectDeviceProfileToken") == 0) strcpy(settings->pointPerfectDeviceProfileToken, settingValue); else if (strcmp(settingName, "enablePointPerfectCorrections") == 0) @@ -1065,6 +1081,9 @@ bool parseLine(char *str, Settings *settings) else if (strcmp(settingName, "lastKeyAttempt") == 0) settings->lastKeyAttempt = d; + else if (strcmp(settingName, "debugPpCertificate") == 0) + settings->debugPpCertificate = d; + else if (strcmp(settingName, "updateZEDSettings") == 0) { if (settings->updateZEDSettings != d) @@ -1130,10 +1149,14 @@ bool parseLine(char *str, Settings *settings) settings->enablePvtClient = d; else if (strcmp(settingName, "enablePvtServer") == 0) settings->enablePvtServer = d; + else if (strcmp(settingName, "enablePvtUdpServer") == 0) + settings->enablePvtUdpServer = d; else if (strcmp(settingName, "debugPvtClient") == 0) settings->debugPvtClient = d; else if (strcmp(settingName, "debugPvtServer") == 0) settings->debugPvtServer = d; + else if (strcmp(settingName, "debugPvtUdpServer") == 0) + settings->debugPvtUdpServer = d; else if (strcmp(settingName, "espnowBroadcast") == 0) settings->espnowBroadcast = d; else if (strcmp(settingName, "antennaHeight") == 0) @@ -1162,6 +1185,8 @@ bool parseLine(char *str, Settings *settings) settings->wifiConfigOverAP = d; else if (strcmp(settingName, "pvtServerPort") == 0) settings->pvtServerPort = d; + else if (strcmp(settingName, "pvtUdpServerPort") == 0) + settings->pvtUdpServerPort = d; else if (strcmp(settingName, "minElev") == 0) { if (settings->minElev != d) @@ -1335,6 +1360,21 @@ bool parseLine(char *str, Settings *settings) else if (strcmp(settingName, "rtcmTimeoutBeforeUsingLBand_s") == 0) settings->rtcmTimeoutBeforeUsingLBand_s = d; + // Automatic Firmware Update + else if (strcmp(settingName, "autoFirmwareCheckMinutes") == 0) + settings->autoFirmwareCheckMinutes = d; + else if (strcmp(settingName, "debugFirmwareUpdate") == 0) + settings->debugFirmwareUpdate = d; + else if (strcmp(settingName, "enableAutoFirmwareUpdate") == 0) + settings->enableAutoFirmwareUpdate = d; + + else if (strcmp(settingName, "debugLBand") == 0) + settings->debugLBand = d; + else if (strcmp(settingName, "enableCaptivePortal") == 0) + settings->enableCaptivePortal = d; + + + //Add new settings above //<------------------------------------------------------------> diff --git a/Firmware/RTK_Surveyor/Network.ino b/Firmware/RTK_Surveyor/Network.ino index af0735623..01c6c73f6 100644 --- a/Firmware/RTK_Surveyor/Network.ino +++ b/Firmware/RTK_Surveyor/Network.ino @@ -184,8 +184,10 @@ const char * const networkUser[] = "NTP Server", "NTRIP Client", "NTRIP Server", + "OTA Firmware Update", "PVT Client", "PVT Server", + "PVT UDP Server", }; const int networkUserEntries = sizeof(networkUser) / sizeof(networkUser[0]); @@ -228,6 +230,11 @@ void menuNetwork() if (settings.enablePvtServer) systemPrintf("5) PVT Server Port: %ld\r\n", settings.pvtServerPort); + systemPrintf("6) PVT UDP Server: %s\r\n", settings.enablePvtUdpServer ? "Enabled" : "Disabled"); + + if (settings.enablePvtUdpServer) + systemPrintf("7) PVT UDP Server Port: %ld\r\n", settings.pvtUdpServerPort); + if (HAS_ETHERNET) { //------------------------------ @@ -319,6 +326,27 @@ void menuNetwork() } } + //------------------------------ + // Get the PVT UDP server parameters + //------------------------------ + + else if (incoming == 6) + // Toggle WiFi UDP NEMA server + settings.enablePvtUdpServer ^= 1; + + else if (incoming == 7 && settings.enablePvtUdpServer) + { + systemPrint("Enter the UDP port to use (0 to 65535): "); + int portNumber = getNumber(); // Returns EXIT, TIMEOUT, or long + if ((portNumber != INPUT_RESPONSE_GETNUMBER_EXIT) && (portNumber != INPUT_RESPONSE_GETNUMBER_TIMEOUT)) + { + if (portNumber < 0 || portNumber > 65535) + systemPrintln("Error: UDP Port out of range"); + else + settings.pvtUdpServerPort = portNumber; // Recorded to NVM and file at main menu exit + } + } + //------------------------------ // Get the network layer parameters //------------------------------ @@ -351,6 +379,38 @@ void menuNetwork() } } +//---------------------------------------- +// Allocate a network client +//---------------------------------------- +NetworkClient * networkClient(uint8_t user, bool useSSL) +{ + NetworkClient * client; + int type; + + type = networkGetType(user); +#if defined(COMPILE_ETHERNET) + if (type == NETWORK_TYPE_ETHERNET) + { + if (useSSL) + client = new NetworkEthernetSslClient(); + else + client = new NetworkEthernetClient; + } + else +#endif // COMPILE_ETHERNET + { +#if defined(COMPILE_WIFI) + if (useSSL) + client = new NetworkWiFiSslClient(); + else + client = new NetworkWiFiClient(); +#else // COMPILE_WIFI + client = nullptr; +#endif // COMPILE_WIFI + } + return client; +} + //---------------------------------------- // Display the IP address //---------------------------------------- @@ -834,6 +894,12 @@ void networkStop(uint8_t networkType) ntripServerRestart(); break; + case NETWORK_USER_OTA_FIRMWARE_UPDATE: + if (settings.debugNetworkLayer) + systemPrintln("Network layer stopping OTA firmware update"); + otaStop(); + break; + case NETWORK_USER_PVT_CLIENT: if (settings.debugNetworkLayer) systemPrintln("Network layer stopping PVT client"); @@ -845,6 +911,12 @@ void networkStop(uint8_t networkType) systemPrintln("Network layer stopping PVT server"); pvtServerStop(); break; + + case NETWORK_USER_PVT_UDP_SERVER: + if (settings.debugNetworkLayer) + systemPrintln("Network layer stopping PVT UDP server"); + pvtUdpServerStop(); + break; } } } @@ -1015,7 +1087,6 @@ void networkTypeUpdate(uint8_t networkType) { if (settings.debugNetworkLayer) systemPrintf("Network connected to %s\r\n", networkName[network->type]); - network->connectionAttempt = 0; network->timerStart = millis(); network->timeout = NETWORK_MAX_IDLE_TIME; network->activeUsers = network->userOpens; @@ -1030,14 +1101,6 @@ void networkTypeUpdate(uint8_t networkType) if (network->shutdown) networkStop(network->type); - // Without users there is no need for the network. - else if ((!network->activeUsers) && ((millis() - network->timerStart) >= network->timeout)) - { - if (settings.debugNetworkLayer) - systemPrintf("Network shutting down %s, no users\r\n", networkName[network->type]); - networkStop(network->type); - } - // Verify that the RTK device is still connected to the network else if (!networkIsMediaConnected(network)) { @@ -1047,6 +1110,29 @@ void networkTypeUpdate(uint8_t networkType) networkRestartNetwork(network); networkStop(network->type); } + + // Check for the idle timeout + else if ((millis() - network->timerStart) >= network->timeout) + { + // Determine if the network is in use + network->timerStart = millis(); + if (network->activeUsers) + { + // Network in use, reduce future connection delays + network->connectionAttempt = 0; + + // Set the next time that network idle should be checked + network->timeout = NETWORK_MAX_IDLE_TIME; + } + + // Without users there is no need for the network. + else + { + if (settings.debugNetworkLayer) + systemPrintf("Network shutting down %s, no users\r\n", networkName[network->type]); + networkStop(network->type); + } + } break; case NETWORK_STATE_WAIT_NO_USERS: @@ -1074,15 +1160,14 @@ void networkUpdate() if (PERIODIC_DISPLAY(PD_NETWORK_STATE)) PERIODIC_CLEAR(PD_NETWORK_STATE); - // Skip updates if in configure-via-ethernet mode - if (!configureViaEthernet) - { - ntpServerUpdate(); // Process any received NTP requests - ntripClientUpdate(); // Check the NTRIP client connection and move data NTRIP --> ZED - ntripServerUpdate(); // Check the NTRIP server connection and move data ZED --> NTRIP - pvtClientUpdate(); // Turn on the PVT client as needed - pvtServerUpdate(); // Turn on the PVT server as needed - } + // Update the network services + ntpServerUpdate(); // Process any received NTP requests + ntripClientUpdate(); // Check the NTRIP client connection and move data NTRIP --> ZED + ntripServerUpdate(); // Check the NTRIP server connection and move data ZED --> NTRIP + otaClientUpdate(); // Perform automatic over-the-air firmware updates + pvtClientUpdate(); // Turn on the PVT client as needed + pvtServerUpdate(); // Turn on the PVT server as needed + pvtUdpServerUpdate(); // Turn on the PVT UDP server as needed // Display the IP addresses networkPeriodicallyDisplayIpAddress(); diff --git a/Firmware/RTK_Surveyor/NetworkClient.h b/Firmware/RTK_Surveyor/NetworkClient.h index d9a9e4614..0ceba6fa4 100644 --- a/Firmware/RTK_Surveyor/NetworkClient.h +++ b/Firmware/RTK_Surveyor/NetworkClient.h @@ -237,7 +237,9 @@ class NetworkClient : public Client //------------------------------ friend class NetworkEthernetClient; + friend class NetworkEthernetSslClient; friend class NetworkWiFiClient; + friend class NetworkWiFiSslClient; }; #ifdef COMPILE_ETHERNET @@ -245,13 +247,18 @@ class NetworkEthernetClient : public NetworkClient { private: - EthernetClient _client; + EthernetClient _ethernetClient; public: + NetworkEthernetClient() : + NetworkClient(&_ethernetClient, NETWORK_TYPE_ETHERNET) + { + } + NetworkEthernetClient(EthernetClient& client) : - _client{client}, - NetworkClient(&_client, NETWORK_TYPE_ETHERNET) + _ethernetClient{client}, + NetworkClient(&_ethernetClient, NETWORK_TYPE_ETHERNET) { } @@ -260,17 +267,45 @@ class NetworkEthernetClient : public NetworkClient this->~NetworkClient(); } }; + +class NetworkEthernetSslClient : public NetworkClient +{ + protected: + + EthernetClient _ethernetClient; + SSLClientESP32 _sslClient; + + public: + + NetworkEthernetSslClient() : + _sslClient(), + NetworkClient(&_sslClient, NETWORK_TYPE_ETHERNET) + { + _sslClient.setClient(&_ethernetClient); + _sslClient.setCACertBundle(x509CertificateBundle); + } + + ~NetworkEthernetSslClient() + { + this->~NetworkClient(); + } +}; #endif // COMPILE_ETHERNET #ifdef COMPILE_WIFI class NetworkWiFiClient : public NetworkClient { - private: + protected: WiFiClient _client; public: + NetworkWiFiClient() : + NetworkClient(&_client, NETWORK_TYPE_WIFI) + { + } + NetworkWiFiClient(WiFiClient& client) : _client{client}, NetworkClient(&_client, NETWORK_TYPE_WIFI) @@ -282,6 +317,29 @@ class NetworkWiFiClient : public NetworkClient this->~NetworkClient(); } }; + +class NetworkWiFiSslClient : public NetworkClient +{ + protected: + + WiFiClient _wifiClient; + SSLClientESP32 _sslClient; + + public: + + NetworkWiFiSslClient() : + _sslClient(), + NetworkClient(&_sslClient, NETWORK_TYPE_WIFI) + { + _sslClient.setClient(&_wifiClient); + _sslClient.setCACertBundle(x509CertificateBundle); + } + + ~NetworkWiFiSslClient() + { + this->~NetworkClient(); + } +}; #endif // COMPILE_WIFI #endif // __NETWORK_CLIENT_H__ diff --git a/Firmware/RTK_Surveyor/NetworkUDP.h b/Firmware/RTK_Surveyor/NetworkUDP.h new file mode 100644 index 000000000..3548d0c75 --- /dev/null +++ b/Firmware/RTK_Surveyor/NetworkUDP.h @@ -0,0 +1,306 @@ +#ifndef __NETWORK_UDP_H__ +#define __NETWORK_UDP_H__ + +extern uint8_t networkGetType(uint8_t user); + +class NetworkUDP : public UDP +{ + protected: + + UDP * _udp; // Ethernet or WiFi udp + bool _friendClass; + uint8_t _networkType; + + public: + + //------------------------------ + // Create the network client + //------------------------------ + NetworkUDP(UDP * udp, uint8_t networkType) + { + _friendClass = true; + _networkType = networkType; + _udp = udp; + } + + NetworkUDP(uint8_t user) + { + _friendClass = false; + _networkType = networkGetType(user); +#if defined(COMPILE_ETHERNET) + if (_networkType == NETWORK_TYPE_ETHERNET) + _udp = new EthernetUDP; + else +#endif // COMPILE_ETHERNET +#if defined(COMPILE_WIFI) + _udp = new WiFiUDP; +#else // COMPILE_WIFI + _udp = nullptr; +#endif // COMPILE_WIFI + }; + + //------------------------------ + // Delete the network client + //------------------------------ + ~NetworkUDP() + { + if (_udp) + { + _udp->stop(); + if (!_friendClass) + delete _udp; + _udp = nullptr; + } + }; + + + //------------------------------ + // Determine if the network client was allocated + //------------------------------ + + operator bool() + { + return _udp; + } + + //------------------------------ + // Start to the server + //------------------------------ + + uint8_t begin(uint16_t port) + { + if (_udp) + return _udp->begin(port); + return 0; + } + + //------------------------------ + // Stop the network client + //------------------------------ + + void stop() + { + if (_udp) + _udp->stop(); + } + + //------------------------------ + // Determine if receive data is available + //------------------------------ + + int available() + { + if (_udp) + return _udp->available(); + return 0; + } + + //------------------------------ + // Read available data + //------------------------------ + + int read() + { + if (_udp) + return _udp->read(); + return 0; + } + + //------------------------------ + // Read available data + //------------------------------ + + int read(unsigned char* buf, size_t length) + { + if (_udp) + return _udp->read(buf, length); + return 0; + } + + //------------------------------ + // Read available data + //------------------------------ + + int read(char* buf, size_t length) + { + if (_udp) + return _udp->read(buf, length); + return 0; + } + + //------------------------------ + // Look at the next received byte in the data stream + //------------------------------ + + int peek() + { + if (_udp) + return _udp->peek(); + return 0; + } + + //------------------------------ + // Finish transmitting all the data + //------------------------------ + + void flush() + { + if (_udp) + _udp->flush(); + } + + //------------------------------ + // Send a data byte to the server + //------------------------------ + + size_t write(uint8_t b) + { + if (_udp) + return _udp->write(b); + return 0; + } + + //------------------------------ + // Send a buffer of data to the server + //------------------------------ + + size_t write(const uint8_t *buf, size_t size) + { + if (_udp) + return _udp->write(buf, size); + return 0; + } + + //------------------------------ + // Begin a UDP packet + //------------------------------ + + int beginPacket(IPAddress ip, uint16_t port) + { + if (_udp) + return _udp->beginPacket(ip, port); + return 0; + } + + //------------------------------ + // Begin a UDP packet + //------------------------------ + + int beginPacket(const char* host, uint16_t port) + { + if (_udp) + return _udp->beginPacket(host, port); + return 0; + } + + //------------------------------ + // Parse UDP packet + //------------------------------ + + int parsePacket() + { + if (_udp) + return _udp->parsePacket(); + return 0; + } + + //------------------------------ + // End the current UDP packet + //------------------------------ + + int endPacket() + { + if (_udp) + return _udp->endPacket(); + return 0; + } + + //------------------------------ + // Get the remote IP address + //------------------------------ + + IPAddress remoteIP() + { +#if defined(COMPILE_ETHERNET) + if (_networkType == NETWORK_TYPE_ETHERNET) + return ((EthernetUDP *)_udp)->remoteIP(); +#endif // COMPILE_ETHERNET +#if defined(COMPILE_WIFI) + if (_networkType == NETWORK_TYPE_WIFI) + return ((WiFiUDP *)_udp)->remoteIP(); +#endif // COMPILE_WIFI + return IPAddress((uint32_t)0); + } + + //------------------------------ + // Get the remote port number + //------------------------------ + + uint16_t remotePort() + { +#if defined(COMPILE_ETHERNET) + if (_networkType == NETWORK_TYPE_ETHERNET) + return ((EthernetUDP *)_udp)->remotePort(); +#endif // COMPILE_ETHERNET +#if defined(COMPILE_WIFI) + if (_networkType == NETWORK_TYPE_WIFI) + return ((WiFiUDP *)_udp)->remotePort(); +#endif // COMPILE_WIFI + return 0; + } + + protected: + + //------------------------------ + // Declare the friend classes + //------------------------------ + + friend class NetworkEthernetUdp; + friend class NetworkWiFiUdp; +}; + +#ifdef COMPILE_ETHERNET +class NetworkEthernetUdp : public NetworkUDP +{ + private: + + EthernetUDP _udp; + + public: + + NetworkEthernetUdp(EthernetUDP& udp) : + _udp{udp}, + NetworkUDP(&_udp, NETWORK_TYPE_ETHERNET) + { + } + + ~NetworkEthernetUdp() + { + this->~NetworkUDP(); + } +}; +#endif // COMPILE_ETHERNET + +#ifdef COMPILE_WIFI +class NetworkWiFiUdp : public NetworkUDP +{ + private: + + WiFiUDP _udp; + + public: + + NetworkWiFiUdp(WiFiUDP& udp) : + _udp{udp}, + NetworkUDP(&_udp, NETWORK_TYPE_WIFI) + { + } + + ~NetworkWiFiUdp() + { + this->~NetworkUDP(); + } +}; +#endif // COMPILE_WIFI + +#endif // __NETWORK_CLIENT_H__ diff --git a/Firmware/RTK_Surveyor/NtripClient.ino b/Firmware/RTK_Surveyor/NtripClient.ino index d6a20c149..fc2c57d72 100644 --- a/Firmware/RTK_Surveyor/NtripClient.ino +++ b/Firmware/RTK_Surveyor/NtripClient.ino @@ -175,6 +175,9 @@ const char * const ntripClientStateName[] = const int ntripClientStateNameEntries = sizeof(ntripClientStateName) / sizeof(ntripClientStateName[0]); +const RtkMode_t ntripClientMode = RTK_MODE_ROVER + | RTK_MODE_BASE_SURVEY_IN; + //---------------------------------------- // Locals //---------------------------------------- @@ -307,6 +310,10 @@ bool ntripClientConnectLimitReached() // Retry the connection a few times bool limitReached = (ntripClientConnectionAttempts >= MAX_NTRIP_CLIENT_CONNECTION_ATTEMPTS); + // Attempt to restart the network if possible + if (settings.enableNtripClient && (!limitReached)) + networkRestart(NETWORK_USER_NTRIP_CLIENT); + // Restart the NTRIP client ntripClientStop(limitReached || (!settings.enableNtripClient)); @@ -345,28 +352,6 @@ bool ntripClientConnectLimitReached() return limitReached; } -// Determine if NTRIP Client is needed -bool ntripClientIsNeeded() -{ - if (settings.enableNtripClient == false) - { - // If user turns off NTRIP Client via settings, stop server - if (ntripClientState > NTRIP_CLIENT_OFF) - ntripClientShutdown(); - return (false); - } - - if (wifiInConfigMode()) - return (false); // Do not service NTRIP during network config - - // Allow NTRIP Client to run during Survey-In, - // but do not allow NTRIP Client to run during Base - if (systemState == STATE_BASE_TEMP_TRANSMITTING) - return (false); - - return (true); -} - // Print the NTRIP client state summary void ntripClientPrintStateSummary() { @@ -504,20 +489,12 @@ void ntripClientShutdown() // Start the NTRIP client void ntripClientStart() { - // Stop NTRIP client - ntripClientShutdown(); - // Display the heap state reportHeapNow(settings.debugNtripClientState); - // Start the NTRIP client if enabled - if (settings.enableNtripClient == true) - { - systemPrintln("NTRIP Client start"); - ntripClientSetState(NTRIP_CLIENT_ON); - } - - ntripClientConnectionAttempts = 0; + // Start the NTRIP client + systemPrintln("NTRIP Client start"); + ntripClientStop(false); } // Shutdown or restart the NTRIP client @@ -529,14 +506,6 @@ void ntripClientStop(bool shutdown) if (ntripClient->connected()) ntripClient->stop(); - // Attempt to restart the network if possible - if (!shutdown) - networkRestart(NETWORK_USER_NTRIP_CLIENT); - - // Done with the network - if (networkGetUserNetwork(NETWORK_USER_NTRIP_CLIENT)) - networkUserClose(NETWORK_USER_NTRIP_CLIENT); - // Free the NTRIP client resources delete ntripClient; ntripClient = nullptr; @@ -545,9 +514,15 @@ void ntripClientStop(bool shutdown) // Increase timeouts if we started the network if (ntripClientState > NTRIP_CLIENT_ON) + { // Mark the Client stop so that we don't immediately attempt re-connect to Caster ntripClientTimer = millis(); + // Done with the network + if (networkGetUserNetwork(NETWORK_USER_NTRIP_CLIENT)) + networkUserClose(NETWORK_USER_NTRIP_CLIENT); + } + // Return the Main Talker ID to "GN". if (online.gnss) { @@ -556,23 +531,42 @@ void ntripClientStop(bool shutdown) } // Determine the next NTRIP client state - ntripClientSetState(shutdown ? NTRIP_CLIENT_OFF : NTRIP_CLIENT_ON); online.ntripClient = false; netIncomingRTCM = false; + if (shutdown) + { + ntripClientSetState(NTRIP_CLIENT_OFF); + settings.enableNtripClient = false; + ntripClientConnectionAttempts = 0; + ntripClientConnectionAttemptTimeout = 0; + } + else + ntripClientSetState(NTRIP_CLIENT_ON); } // Check for the arrival of any correction data. Push it to the GNSS. // Stop task if the connection has dropped or if we receive no data for maxTimeBeforeHangup_ms void ntripClientUpdate() { - if (ntripClientIsNeeded() == false) - return; + // Shutdown the NTRIP client when the mode or setting changes + DMW_st(ntripClientSetState, ntripClientState); + if (NEQ_RTK_MODE(ntripClientMode) || (!settings.enableNtripClient)) + { + if (ntripClientState > NTRIP_CLIENT_OFF) + { + ntripClientStop(false); + ntripClientConnectionAttempts = 0; + ntripClientConnectionAttemptTimeout = 0; + ntripClientSetState(NTRIP_CLIENT_OFF); + } + } // Enable the network and the NTRIP client if requested - DMW_st(ntripClientSetState, ntripClientState); switch (ntripClientState) { case NTRIP_CLIENT_OFF: + if (EQ_RTK_MODE(ntripClientMode) && settings.enableNtripClient) + ntripClientStart(); break; // Start the network diff --git a/Firmware/RTK_Surveyor/NtripServer.ino b/Firmware/RTK_Surveyor/NtripServer.ino index 631190255..9bc3696aa 100644 --- a/Firmware/RTK_Surveyor/NtripServer.ino +++ b/Firmware/RTK_Surveyor/NtripServer.ino @@ -33,7 +33,7 @@ NtripServer.ino Using Ethernet on RTK Reference Station: 1. Network failure - Disconnect Ethernet cable at RTK Reference Station, - expecting retry NTRIP client connection after network restarts + expecting retry NTRIP server connection after network restarts Using WiFi on RTK Express or RTK Reference Station: @@ -138,7 +138,7 @@ NtripServer.ino // 5 minutes. The NTRIP server stops retrying after 25 hours and 18 minutes static const int MAX_NTRIP_SERVER_CONNECTION_ATTEMPTS = 28; -// NTRIP client connection delay before resetting the connect accempt counter +// NTRIP server connection delay before resetting the connect accempt counter static const int NTRIP_SERVER_CONNECTION_TIME = 5 * 60 * 1000; // Define the NTRIP server states @@ -170,6 +170,8 @@ const char * const ntripServerStateName[] = const int ntripServerStateNameEntries = sizeof(ntripServerStateName) / sizeof(ntripServerStateName[0]); +const RtkMode_t ntripServerMode = RTK_MODE_BASE_FIXED; + //---------------------------------------- // Locals //---------------------------------------- @@ -187,9 +189,6 @@ static uint32_t ntripServerConnectionAttemptTimeout; static uint32_t ntripServerLastConnectionAttempt; static int ntripServerConnectionAttempts; // Count the number of connection attempts between restarts -// Last time the NTRIP server state was displayed -static uint32_t ntripServerStateLastDisplayed; - // NTRIP server timer usage: // * Reconnection delay // * Measure the connection response time @@ -261,6 +260,10 @@ bool ntripServerConnectLimitReached() // Retry the connection a few times bool limitReached = (ntripServerConnectionAttempts >= MAX_NTRIP_SERVER_CONNECTION_ATTEMPTS); + // Attempt to restart the network if possible + if (settings.enableNtripServer && (!limitReached)) + networkRestart(NETWORK_USER_NTRIP_SERVER); + // Shutdown the NTRIP server ntripServerStop(limitReached || (!settings.enableNtripServer)); @@ -493,20 +496,12 @@ void ntripServerShutdown() // Start the NTRIP server void ntripServerStart() { - // Stop the NTRIP server and network - ntripServerShutdown(); - // Display the heap state reportHeapNow(settings.debugNtripServerState); - // Start the NTRIP server if enabled - if ((settings.ntripServer_StartAtSurveyIn == true) || (settings.enableNtripServer == true)) - { - systemPrintln ("NTRIP Server start"); - ntripServerSetState(NTRIP_SERVER_ON); - } - - ntripServerConnectionAttempts = 0; + // Start the NTRIP server + systemPrintln ("NTRIP Server start"); + ntripServerStop(false); } // Shutdown or restart the NTRIP server @@ -518,14 +513,6 @@ void ntripServerStop(bool shutdown) if (ntripServer->connected()) ntripServer->stop(); - // Attempt to restart the network if possible - if (!shutdown) - networkRestart(NETWORK_USER_NTRIP_SERVER); - - // Done with the network - if (networkGetUserNetwork(NETWORK_USER_NTRIP_SERVER)) - networkUserClose(NETWORK_USER_NTRIP_SERVER); - // Free the NTRIP server resources delete ntripServer; ntripServer = nullptr; @@ -534,12 +521,26 @@ void ntripServerStop(bool shutdown) // Increase timeouts if we started the network if (ntripServerState > NTRIP_SERVER_ON) + { // Mark the Server stop so that we don't immediately attempt re-connect to Caster ntripServerTimer = millis(); + // Done with the network + if (networkGetUserNetwork(NETWORK_USER_NTRIP_SERVER)) + networkUserClose(NETWORK_USER_NTRIP_SERVER); + } + // Determine the next NTRIP server state - ntripServerSetState(shutdown ? NTRIP_SERVER_OFF : NTRIP_SERVER_ON); online.ntripServer = false; + if (shutdown) + { + ntripServerSetState(NTRIP_SERVER_OFF); + settings.enableNtripServer = false; + ntripServerConnectionAttempts = 0; + ntripServerConnectionAttemptTimeout = 0; + } + else + ntripServerSetState(NTRIP_SERVER_ON); } // Update the NTRIP server state machine @@ -549,29 +550,25 @@ void ntripServerUpdate() // This causes the state change from NTRIP_SERVER_WAIT_GNSS_DATA to NTRIP_SERVER_CONNECTING processRTCMBuffer(); - if (settings.enableNtripServer == false) + // Shutdown the NTRIP server when the mode or setting changes + DMW_st(ntripServerSetState, ntripServerState); + if (NEQ_RTK_MODE(ntripServerMode) || (!settings.enableNtripServer)) { - // If user turns off NTRIP Server via settings, stop server if (ntripServerState > NTRIP_SERVER_OFF) - ntripServerShutdown(); - return; - } - - if (wifiInConfigMode()) - return; // Do not service NTRIP during WiFi config - - // Periodically display the NTRIP server state - if (settings.debugNtripServerState && ((millis() - ntripServerStateLastDisplayed) > 15000)) - { - ntripServerSetState(ntripServerState); - ntripServerStateLastDisplayed = millis(); + { + ntripServerStop(false); + ntripServerConnectionAttempts = 0; + ntripServerConnectionAttemptTimeout = 0; + ntripServerSetState(NTRIP_SERVER_OFF); + } } // Enable the network and the NTRIP server if requested - DMW_st(ntripServerSetState, ntripServerState); switch (ntripServerState) { case NTRIP_SERVER_OFF: + if (EQ_RTK_MODE(ntripServerMode) && settings.enableNtripServer) + ntripServerStart(); break; // Start the network diff --git a/Firmware/RTK_Surveyor/OtaClient.ino b/Firmware/RTK_Surveyor/OtaClient.ino new file mode 100644 index 000000000..b4ac985b8 --- /dev/null +++ b/Firmware/RTK_Surveyor/OtaClient.ino @@ -0,0 +1,868 @@ +/*------------------------------------------------------------------------------ +OtaClient.ino + + The Over-The-Air (OTA) client sits on top of the network layer and requests + a JSON file from the GitHub server that describes the version and URL of + the released firmware. If the released firmware is more recent then the OTA + client downloads and flashes the released firmware. + + RTK + Device + ^ + | OTA client + V + GitHub + +------------------------------------------------------------------------------*/ + +#if COMPILE_NETWORK + +//---------------------------------------- +// Constants +//---------------------------------------- + +#define HTTPS_TRANSPORT (OTA_USE_SSL ? "https://" : "http://") + +#define OTA_JSON_FILE_URL \ + "/sparkfun/SparkFun_RTK_Firmware_Binaries/main/RTK-Firmware.json" +#define OTA_NO_PROGRESS_TIMEOUT (3 * 60 * 1000) // 3 minutes +#define OTA_SERVER "raw.githubusercontent.com" +#define OTA_SERVER_PORT 443 +#define OTA_USE_SSL 1 + +enum OtaState +{ + OTA_STATE_OFF = 0, + OTA_STATE_START_NETWORK, + OTA_STATE_WAIT_FOR_NETWORK, + OTA_STATE_JSON_FILE_REQUEST, + OTA_STATE_JSON_FILE_PARSE_HTTP_STATUS, + OTA_STATE_JSON_FILE_PARSE_LENGTH, + OTA_STATE_JSON_FILE_SKIP_HEADERS, + OTA_STATE_JSON_FILE_READ_DATA, + OTA_STATE_PARSE_JSON_DATA, + OTA_STATE_BIN_FILE_REQUEST, + OTA_STATE_BIN_FILE_PARSE_HTTP_STATUS, + OTA_STATE_BIN_FILE_PARSE_LENGTH, + OTA_STATE_BIN_FILE_SKIP_HEADERS, + OTA_STATE_BIN_FILE_READ_DATA, + // Insert new states before this line + OTA_STATE_MAX +}; + +const char * const otaStateNames[] = +{ + "OTA_STATE_OFF", + "OTA_STATE_START_NETWORK", + "OTA_STATE_WAIT_FOR_NETWORK", + "OTA_STATE_JSON_FILE_REQUEST", + "OTA_STATE_JSON_FILE_PARSE_HTTP_STATUS", + "OTA_STATE_JSON_FILE_PARSE_LENGTH", + "OTA_STATE_JSON_FILE_SKIP_HEADERS", + "OTA_STATE_JSON_FILE_READ_DATA", + "OTA_STATE_PARSE_JSON_DATA", + "OTA_STATE_BIN_FILE_REQUEST", + "OTA_STATE_BIN_FILE_PARSE_HTTP_STATUS", + "OTA_STATE_BIN_FILE_PARSE_LENGTH", + "OTA_STATE_BIN_FILE_SKIP_HEADERS", + "OTA_STATE_BIN_FILE_READ_DATA" +}; +const int otaStateEntries = sizeof(otaStateNames) / sizeof(otaStateNames[0]); + +const RtkMode_t otaClientMode = RTK_MODE_BASE_FIXED + | RTK_MODE_BASE_SURVEY_IN + | RTK_MODE_BUBBLE_LEVEL + | RTK_MODE_NTP + | RTK_MODE_ROVER; + +//---------------------------------------- +// Locals +//---------------------------------------- + +static byte otaBluetoothState = BT_OFF; +static char otaBuffer[1379]; +static int otaBufferData; +static NetworkClient * otaClient; +static int otaFileBytes; +static int otaFileSize; +static String otaJsonFileData; +static String otaReleasedFirmwareURL; +static uint8_t otaState; +static uint32_t otaTimer; + +//---------------------------------------- +// Over-The-Air (OTA) firmware update support routines +//---------------------------------------- + +// Get the OTA state name +const char * otaGetStateName(uint8_t state, char * string) +{ + if (state < OTA_STATE_MAX) + return otaStateNames[state]; + sprintf(string, "Unknown state (%d)", state); + return string; +} + +// Get the file length from the HTTP header +int otaParseFileLength() +{ + int fileLength; + + // Parse the file length from the HTTP header + otaBufferData = 0; + if (sscanf(otaBuffer, "Content-Length: %d", &fileLength) == 1) + return fileLength; + return -1; +} + +// Get the server file status from the HTTP header +int otaParseJsonStatus() +{ + int status; + + // Parse the status from the HTTP header + if (sscanf(otaBuffer, "HTTP/1.1 %d", &status) == 1) + return status; + return -1; +} + +// Read data from the JSON or firmware file +void otaReadFileData(int bufferLength) +{ + int bytesToRead; + + // Determine how much data is available + otaBufferData = 0; + bytesToRead = otaClient->available(); + if (bytesToRead) + { + // Determine the number of bytes to read + if (bytesToRead > bufferLength) + bytesToRead = bufferLength; + + // Read in the file data + otaBufferData = otaClient->read((uint8_t *)otaBuffer, bytesToRead); + } +} + +// Read a line from the HTTP header +int otaReadHeaderLine() +{ + int bytesToRead; + String otaReleasedFirmwareVersion; + int status; + + // Determine if the network is shutting down + if (networkIsShuttingDown(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network is shutting down!"); + otaStop(); + return -1; + } + + // Determine if the network is connected to the media + if (!networkUserConnected(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network has failed!"); + otaStop(); + return -1; + } + + // Verify the connection to the HTTP server + if (!otaClient->connected()) + { + systemPrintln("OTA: HTTP connection broken!"); + otaStop(); + return -1; + } + + // Read in the released firmware data + while (otaClient->available()) + { + otaBuffer[otaBufferData] = otaClient->read(); + + // Drop the carriage return + if (otaBuffer[otaBufferData] != '\r') + { + // Build the header line + if (otaBuffer[otaBufferData] != '\n') + otaBufferData += 1; + else + { + // Zero-terminate the header line + otaBuffer[otaBufferData] = 0; + return 0; + } + } + } + return 1; +} + +// Set the next OTA state +void otaSetState(uint8_t newState) +{ + char string1[40]; + char string2[40]; + const char * arrow; + const char * asterisk; + const char * initialState; + const char * endingState; + bool pd; + + // Display the state transition + pd = PERIODIC_DISPLAY(PD_OTA_CLIENT_STATE); + if ((settings.debugFirmwareUpdate) || pd) + { + arrow = ""; + asterisk = ""; + initialState = ""; + if (newState == otaState) + asterisk = "*"; + else + { + initialState = otaGetStateName(otaState, string1); + arrow = " --> "; + } + } + + // Set the new state + otaState = newState; + if ((settings.debugFirmwareUpdate) || pd) + { + // Display the new firmware update state + PERIODIC_CLEAR(PD_OTA_CLIENT_STATE); + endingState = otaGetStateName(newState, string2); + if (!online.rtc) + systemPrintf("%s%s%s%s\r\n", asterisk, initialState, arrow, endingState); + else + { + // Timestamp the state change + // 1 2 + // 12345678901234567890123456 + // YYYY-mm-dd HH:MM:SS.xxxrn0 + struct tm timeinfo = rtc.getTimeStruct(); + char s[30]; + strftime(s, sizeof(s), "%Y-%m-%d %H:%M:%S", &timeinfo); + systemPrintf("%s%s%s%s, %s.%03ld\r\n", asterisk, initialState, arrow, endingState, s, rtc.getMillis()); + } + } + + // Display the starting percentage + if (otaState == OTA_STATE_BIN_FILE_READ_DATA) + otaDisplayPercentage(otaFileBytes, otaFileSize, pd); + + // Validate the firmware update state + if (newState >= OTA_STATE_MAX) + reportFatalError("Invalid OTA state"); +} + +// Stop the OTA firmware update +void otaStop() +{ + if (settings.debugFirmwareUpdate) + systemPrintln("otaStop called"); + + if (otaState != OTA_STATE_OFF) + { + // Stop WiFi + systemPrintln("OTA stopping WiFi"); + online.otaFirmwareUpdate = false; + + // Stop writing to flash + if (Update.isRunning()) + Update.abort(); + + // Close the SSL connection + if (otaClient) + { + delete otaClient; + otaClient = nullptr; + } + + // Close the network connection + if (networkGetUserNetwork(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + networkUserClose(NETWORK_USER_OTA_FIRMWARE_UPDATE); + + // Stop the firmware update + otaBufferData = 0; + otaJsonFileData = String(""); + otaSetState(OTA_STATE_OFF); + otaTimer = millis(); + + // Restart bluetooth if necessary + if (otaBluetoothState == BT_CONNECTED) + { + otaBluetoothState = BT_OFF; + if (settings.debugFirmwareUpdate) + systemPrintln("Firmware update restarting Bluetooth"); + bluetoothStart(); // Restart BT according to settings + } + } +}; + +int otaWriteDataToFlash(int bytesToWrite) +{ + int bytesWritten; + + bytesWritten = 0; + if (bytesToWrite) + { + // Write the data to flash + bytesWritten = Update.write((uint8_t *)otaBuffer, bytesToWrite); + if (bytesWritten) + { + otaFileBytes += bytesWritten; + if (bytesWritten != bytesToWrite) + { + // Only a portion of the data was written, move the rest of + // the data to the beginning of the buffer + memcpy(otaBuffer, &otaBuffer[bytesWritten], bytesToWrite - bytesWritten); + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Wrote only %d of %d bytes to flash\r\n", bytesWritten, otaBufferData); + } + + // Display the percentage written + otaPullCallback(otaFileBytes, otaFileSize); + } + } + + // Return the number of bytes to write + return bytesToWrite - bytesWritten; +} + +//---------------------------------------- +// Over-The-Air (OTA) firmware update state machine +//---------------------------------------- + +// Perform the over-the-air (OTA) firmware updates +void otaClientUpdate() +{ + int bytesWritten; + int32_t checkIntervalMillis; + NETWORK_DATA * network; + String otaReleasedFirmwareVersion; + int status; + + // Perform the firmware update + if (!inMainMenu) + { + // Shutdown the OTA client when the mode or setting changes + DMW_st(otaSetState, otaState); + if (NEQ_RTK_MODE(otaClientMode) || (!settings.enableAutoFirmwareUpdate)) + { + if (otaState > OTA_STATE_OFF) + { + otaStop(); + + // Due to the interruption, enable a fast retry + otaTimer = millis() - checkIntervalMillis + OTA_NO_PROGRESS_TIMEOUT; + } + } + + // Walk the state machine to do the firmware update + switch (otaState) + { + // Handle invalid OTA states + default: { + systemPrintf("ERROR: Unknown OTA state (%d)\r\n", otaState); + otaStop(); + break; + } + + // Over-the-air firmware updates are not active + case OTA_STATE_OFF: { + // Determine if the user enabled automatic firmware updates + if (EQ_RTK_MODE(otaClientMode) && settings.enableAutoFirmwareUpdate) + { + // Wait until it is time to check for a firmware update + checkIntervalMillis = settings.autoFirmwareCheckMinutes * 60 * 1000; + if ((int32_t)(millis() - otaTimer) >= checkIntervalMillis) + { + otaTimer = millis(); + online.otaFirmwareUpdate = true; + otaSetState(OTA_STATE_START_NETWORK); + } + } + break; + } + + // Start the network + case OTA_STATE_START_NETWORK: { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA starting network"); + if (!networkUserOpen(NETWORK_USER_OTA_FIRMWARE_UPDATE, NETWORK_TYPE_ACTIVE)) + { + systemPrintln("OTA: Firmware update failed, unable to start network"); + otaStop(); + } + else + otaSetState(OTA_STATE_WAIT_FOR_NETWORK); + break; + } + + // Wait for connection to the network + case OTA_STATE_WAIT_FOR_NETWORK: { + // Determine if the network has failed + if (networkIsShuttingDown(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network is shutting down!"); + otaStop(); + } + + // Determine if the network is connected to the media + else if (networkUserConnected(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA connected to network"); + + // Allocate the OTA firmware update client + otaClient = networkClient(NETWORK_USER_OTA_FIRMWARE_UPDATE, OTA_USE_SSL); + if (!otaClient) + { + systemPrintln("ERROR: Failed to allocate OTA client!"); + otaStop(); + } + else + { + // Stop Bluetooth + otaBluetoothState = bluetoothGetState(); + if (otaBluetoothState != BT_OFF) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA stopping Bluetooth"); + bluetoothStop(); + } + + // Connect to GitHub + otaSetState(OTA_STATE_JSON_FILE_REQUEST); + } + } + break; + } + + // Issue the HTTP request to get the JSON file + case OTA_STATE_JSON_FILE_REQUEST: { + // Determine if the network is shutting down + if (networkIsShuttingDown(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network is shutting down!"); + otaStop(); + } + + // Determine if the network is connected to the media + else if (!networkUserConnected(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network has failed!"); + otaStop(); + } + + // Attempt to connect to the server using HTTPS + else if (!otaClient->connect(OTA_SERVER, OTA_SERVER_PORT)) + { + // if you didn't get a connection to the server: + Serial.println("OTA: Connection failed"); + otaStop(); + } + else + { + Serial.println("OTA: Requesting JSON file"); + + // Make the HTTP request: + otaClient->print("GET "); + otaClient->print(OTA_FIRMWARE_JSON_URL); + otaClient->println(" HTTP/1.1"); + otaClient->println("User-Agent: RTK OTA Client"); + otaClient->print("Host: "); + otaClient->println(OTA_SERVER); + otaClient->println("Connection: close"); + otaClient->println(); + otaBufferData = 0; + otaSetState(OTA_STATE_JSON_FILE_PARSE_HTTP_STATUS); + } + break; + } + + // Locate the HTTP status header + case OTA_STATE_JSON_FILE_PARSE_HTTP_STATUS: { + status = otaReadHeaderLine(); + if (status) + break; + + // Verify that the server found the file + status = otaParseJsonStatus(); + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Server file status: %d\r\n", status); + if (status != 200) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA: Server failed to locate the JSON file"); + otaStop(); + } + else + { + otaBufferData = 0; + otaSetState(OTA_STATE_JSON_FILE_PARSE_LENGTH); + } + break; + } + + // Locate the file length header + case OTA_STATE_JSON_FILE_PARSE_LENGTH: { + status = otaReadHeaderLine(); + if (status) + break; + + // Verify the header line length + if (!otaBufferData) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA: JSON file length not found"); + otaStop(); + break; + } + + // Get the file length + otaFileSize = otaParseFileLength(); + if (otaFileSize >= 0) + { + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: JSON file length %d bytes\r\n", otaFileSize); + otaBufferData = 0; + otaFileBytes = 0; + otaSetState(OTA_STATE_JSON_FILE_SKIP_HEADERS); + } + break; + } + + // Skip over the rest of the HTTP headers + case OTA_STATE_JSON_FILE_SKIP_HEADERS: { + status = otaReadHeaderLine(); + if (status) + break; + + // Determine if this is the separater between the HTTP headers + // and the file data + if (!otaBufferData) + otaSetState(OTA_STATE_JSON_FILE_READ_DATA); + otaBufferData = 0; + break; + } + + // Receive the JSON data from the HTTP server + case OTA_STATE_JSON_FILE_READ_DATA: { + // Determine if the network is shutting down + if (networkIsShuttingDown(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintf("OTA: Network is shutting down after %d bytes!\r\n", otaFileBytes); + otaStop(); + } + + // Determine if the network is connected to the media + else if (!networkUserConnected(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintf("OTA: Network has failed after %d bytes!\r\n", otaFileBytes); + otaStop(); + } + + // Verify the connection to the HTTP server + else if (!otaClient->connected()) + { + systemPrintf("OTA: HTTP connection broken after %d bytes!\r\n", otaFileBytes); + otaStop(); + } + else + { + // Read data from the JSON file + otaReadFileData(sizeof(otaBuffer) - 1); + if (otaBufferData) + { + // Zero terminate the file data in the buffer + otaBuffer[otaBufferData] = 0; + + // Append the JSON file data to the string + otaJsonFileData += String(&otaBuffer[0]); + otaBufferData = 0; + } + + // Done if not at the end-of-file + if (otaJsonFileData.length() != otaFileSize) + break; + + // Reached end-of-file + // Parse the JSON file + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: JSON data: %s\r\n", otaJsonFileData.c_str()); + otaSetState(OTA_STATE_PARSE_JSON_DATA); + } + break; + } + + // Parse the JSON data and determine if new firmware is available + case OTA_STATE_PARSE_JSON_DATA: { + // Locate the fields in the JSON file + DynamicJsonDocument doc(1000); + if (deserializeJson(doc, otaJsonFileData.c_str()) != DeserializationError::Ok) + { + systemPrintln("OTA: Failed to parse the JSON file data"); + otaStop(); + } + else + { + char versionString[9]; + + // Get the current version + getFirmwareVersion(versionString, sizeof(versionString), false); + + // Step through the configurations looking for a match + for (auto config : doc["Configurations"].as()) + { + // Get the latest released version + otaReleasedFirmwareVersion = config["Version"].isNull() ? "" : (const char *)config["Version"]; + otaReleasedFirmwareURL = config["URL"].isNull() ? "" : (const char *)config["URL"]; + if ((tolower(versionString[0]) != 'd') + && (FIRMWARE_VERSION_MAJOR != 99) + && (String(&versionString[1]) >= otaReleasedFirmwareVersion)) + { + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Current firmware %s is beyond released %s, no change necessary.\r\n", + versionString, otaReleasedFirmwareVersion.c_str()); + otaStop(); + } + else + { + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Firmware URL %s\r\n", otaReleasedFirmwareURL.c_str()); + if ((strncasecmp(HTTPS_TRANSPORT, + otaReleasedFirmwareURL.c_str(), + strlen(HTTPS_TRANSPORT)) != 0) + || (strncasecmp(OTA_SERVER, + &otaReleasedFirmwareURL.c_str()[strlen(HTTPS_TRANSPORT)], + strlen(OTA_SERVER)) != 0)) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA: Invalid firmware URL"); + otaStop(); + } + else + { + // Break the connection with the HTTP server + otaClient->stop(); + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Upgrading firmware from %s to %s\r\n", + versionString, otaReleasedFirmwareVersion.c_str()); + otaReleasedFirmwareURL.remove(0, strlen(HTTPS_TRANSPORT) + strlen(OTA_SERVER)); + otaSetState(OTA_STATE_BIN_FILE_REQUEST); + } + } + break; + } + } + break; + } + + // Issue the HTTP request to get the released firmware file + case OTA_STATE_BIN_FILE_REQUEST: { + // Determine if the network is shutting down + if (networkIsShuttingDown(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network is shutting down!"); + otaStop(); + } + + // Determine if the network is connected to the media + else if (!networkUserConnected(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network has failed!"); + otaStop(); + } + + // Attempt to connect to the server using HTTPS + else if (!otaClient->connect(OTA_SERVER, OTA_SERVER_PORT)) + { + // if you didn't get a connection to the server: + Serial.println("OTA: Connection failed"); + otaStop(); + } + else + { + Serial.println("OTA: Requesting BIN file"); + + // Make the HTTP request: + otaClient->print("GET "); + otaClient->print(otaReleasedFirmwareURL.c_str()); + otaClient->println(" HTTP/1.1"); + otaClient->println("User-Agent: RTK OTA Client"); + otaClient->print("Host: "); + otaClient->println(OTA_SERVER); + otaClient->println("Connection: close"); + otaClient->println(); + otaBufferData = 0; + otaSetState(OTA_STATE_BIN_FILE_PARSE_HTTP_STATUS); + } + break; + } + + // Locate the HTTP status header + case OTA_STATE_BIN_FILE_PARSE_HTTP_STATUS: { + status = otaReadHeaderLine(); + if (status) + break; + + // Verify that the server found the file + status = otaParseJsonStatus(); + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Server file status: %d\r\n", status); + if (status != 200) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA: Server failed to locate the JSON file"); + otaStop(); + } + else + { + otaBufferData = 0; + otaSetState(OTA_STATE_BIN_FILE_PARSE_LENGTH); + } + break; + } + + // Locate the file length header + case OTA_STATE_BIN_FILE_PARSE_LENGTH: { + status = otaReadHeaderLine(); + if (status) + break; + + // Verify the header line length + if (!otaBufferData) + { + if (settings.debugFirmwareUpdate) + systemPrintln("OTA: BIN file length not found"); + otaStop(); + break; + } + + // Get the file length + otaFileSize = otaParseFileLength(); + if (otaFileSize >= 0) + { + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: BIN file length %d bytes\r\n", otaFileSize); + otaBufferData = 0; + otaFileBytes = 0; + otaSetState(OTA_STATE_BIN_FILE_SKIP_HEADERS); + } + break; + } + + // Skip over the rest of the HTTP headers + case OTA_STATE_BIN_FILE_SKIP_HEADERS: { + status = otaReadHeaderLine(); + if (status) + break; + + // Determine if this is the separater between the HTTP headers + // and the file data + if (!otaBufferData) + { + // Start the firmware update process + if (!Update.begin(UPDATE_SIZE_UNKNOWN)) + otaStop(); + else + { + otaTimer = millis(); + otaSetState(OTA_STATE_BIN_FILE_READ_DATA); + } + } + otaBufferData = 0; + break; + } + + // Receive the bin file from the HTTP server + case OTA_STATE_BIN_FILE_READ_DATA: { + do + { + bytesWritten = 0; + + // Determine if the network is shutting down + if (networkIsShuttingDown(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network is shutting down!"); + otaStop(); + } + + // Determine if the network is connected to the media + else if (!networkUserConnected(NETWORK_USER_OTA_FIRMWARE_UPDATE)) + { + systemPrintln("OTA: Network has failed!"); + otaStop(); + } + + // Verify the connection to the HTTP server + else if (!otaClient->connected()) + { + systemPrintf("OTA: HTTP connection broken after %d bytes!\r\n", otaFileBytes); + otaStop(); + } + + // Determine if progress is being made + else if ((millis() - otaTimer) >= OTA_NO_PROGRESS_TIMEOUT) + { + systemPrintln("OTA: No progress being made, link broken!"); + otaStop(); + checkIntervalMillis = settings.autoFirmwareCheckMinutes * 60 * 1000; + + // Delay for OTA_NO_PROGRESS_TIMEOUT + otaTimer = millis() - checkIntervalMillis + OTA_NO_PROGRESS_TIMEOUT; + } + + // Read data and write it to the flash + else + { + // Read data from the binary file + if (!otaBufferData) + otaReadFileData(sizeof(otaBuffer)); + + // Write the data to the flash + if (otaBufferData) + { + bytesWritten = otaBufferData; + otaBufferData = otaWriteDataToFlash(otaBufferData); + bytesWritten -= otaBufferData; + otaTimer = millis(); + + // Check for end-of-file + if (otaFileBytes == otaFileSize) + { + // The end-of-file was reached + if (settings.debugFirmwareUpdate) + systemPrintf("OTA: Downloaded %d bytes\r\n", otaFileBytes); + Update.end(true); + + // Reset the system + systemPrintln("OTA: Starting the new firmware"); + delay(1000); + ESP.restart(); + break; + } + } + } + } while (bytesWritten); + break; + } + } + + // Periodically display the PVT client state + if (PERIODIC_DISPLAY(PD_OTA_CLIENT_STATE)) + otaSetState(otaState); + } +} + +// Verify the firmware update tables +void otaVerifyTables() +{ + // Verify the table lengths + if (otaStateEntries != OTA_STATE_MAX) + reportFatalError("Fix otaStateNames table to match OtaState"); +} + +#endif // COMPILE_NETWORK diff --git a/Firmware/RTK_Surveyor/Parse_NMEA.ino b/Firmware/RTK_Surveyor/Parse_NMEA.ino new file mode 100644 index 000000000..a05dd0c4d --- /dev/null +++ b/Firmware/RTK_Surveyor/Parse_NMEA.ino @@ -0,0 +1,116 @@ +/*------------------------------------------------------------------------------ +Parse_NMEA.ino + + NMEA message parsing support routines +------------------------------------------------------------------------------*/ + +// +// NMEA Message +// +// +----------+---------+--------+---------+----------+----------+ +// | Preamble | Name | Comma | Data | Asterisk | Checksum | +// | 8 bits | n bytes | 8 bits | n bytes | 8 bits | 2 bytes | +// | $ | | , | | | | +// +----------+---------+--------+---------+----------+----------+ +// | | +// |<-------- Checksum -------->| +// + +// Check for the preamble +uint8_t nmeaPreamble(PARSE_STATE *parse, uint8_t data) +{ + if (data == '$') + { + parse->crc = 0; + parse->computeCrc = false; + parse->nmeaMessageNameLength = 0; + parse->state = nmeaFindFirstComma; + return SENTENCE_TYPE_NMEA; + } + return SENTENCE_TYPE_NONE; +} + +// Read the message name +uint8_t nmeaFindFirstComma(PARSE_STATE *parse, uint8_t data) +{ + parse->crc ^= data; + if ((data != ',') || (parse->nmeaMessageNameLength == 0)) + { + if ((data < 'A') || (data > 'Z')) + { + parse->length = 0; + parse->buffer[parse->length++] = data; + return gpsMessageParserFirstByte(parse, data); + } + + // Save the message name + parse->nmeaMessageName[parse->nmeaMessageNameLength++] = data; + } + else + { + // Zero terminate the message name + parse->nmeaMessageName[parse->nmeaMessageNameLength++] = 0; + parse->state = nmeaFindAsterisk; + } + return SENTENCE_TYPE_NMEA; +} + +// Read the message data +uint8_t nmeaFindAsterisk(PARSE_STATE *parse, uint8_t data) +{ + if (data != '*') + parse->crc ^= data; + else + parse->state = nmeaChecksumByte1; + return SENTENCE_TYPE_NMEA; +} + +// Read the first checksum byte +uint8_t nmeaChecksumByte1(PARSE_STATE *parse, uint8_t data) +{ + parse->state = nmeaChecksumByte2; + return SENTENCE_TYPE_NMEA; +} + +// Read the second checksum byte +uint8_t nmeaChecksumByte2(PARSE_STATE *parse, uint8_t data) +{ + parse->nmeaLength = parse->length; + parse->state = nmeaLineTermination; + return SENTENCE_TYPE_NMEA; +} + +// Read the line termination +uint8_t nmeaLineTermination(PARSE_STATE *parse, uint8_t data) +{ + int checksum; + + // Process the line termination + if ((data != '\r') && (data != '\n')) + { + // Don't include this character in the buffer + parse->length--; + + // Convert the checksum characters into binary + checksum = AsciiToNibble(parse->buffer[parse->nmeaLength - 2]) << 4; + checksum |= AsciiToNibble(parse->buffer[parse->nmeaLength - 1]); + + // Validate the checksum + if (checksum == parse->crc) + parse->crc = 0; + if (settings.enablePrintBadMessages && parse->crc && (!inMainMenu)) + printNmeaChecksumError(parse); + + // Process this message if CRC is valid + if (parse->crc == 0) + parse->eomCallback(parse, SENTENCE_TYPE_NMEA); + else + failedParserMessages_NMEA++; + + // Add this character to the beginning of the buffer + parse->length = 0; + parse->buffer[parse->length++] = data; + return gpsMessageParserFirstByte(parse, data); + } + return SENTENCE_TYPE_NMEA; +} diff --git a/Firmware/RTK_Surveyor/Parse_RTCM.ino b/Firmware/RTK_Surveyor/Parse_RTCM.ino new file mode 100644 index 000000000..e3402c1dd --- /dev/null +++ b/Firmware/RTK_Surveyor/Parse_RTCM.ino @@ -0,0 +1,134 @@ +/*------------------------------------------------------------------------------ +Parse_RTCM.ino + + RTCM message parsing support routines +------------------------------------------------------------------------------*/ + +// +// RTCM Standard 10403.2 - Chapter 4, Transport Layer +// +// |<------------- 3 bytes ------------>|<----- length ----->|<- 3 bytes ->| +// | | | | +// +----------+--------+----------------+---------+----------+-------------+ +// | Preamble | Fill | Message Length | Message | Fill | CRC-24Q | +// | 8 bits | 6 bits | 10 bits | n-bits | 0-7 bits | 24 bits | +// | 0xd3 | 000000 | (in bytes) | | zeros | | +// +----------+--------+----------------+---------+----------+-------------+ +// | | +// |<------------------------ CRC -------------------------->| +// + +// Check for the preamble +uint8_t rtcmPreamble(PARSE_STATE *parse, uint8_t data) +{ + if (data == 0xd3) + { + // Start the CRC with this byte + parse->crc = 0; + parse->crc = COMPUTE_CRC24Q(parse, data); + parse->computeCrc = true; + + // Get the message length + parse->state = rtcmReadLength1; + return SENTENCE_TYPE_RTCM; + } + return SENTENCE_TYPE_NONE; +} + +// Read the upper two bits of the length +uint8_t rtcmReadLength1(PARSE_STATE *parse, uint8_t data) +{ + // Verify the length byte - check the 6 MS bits are all zero + if (data & (~3)) + { + // Invalid length, place this byte at the beginning of the buffer + parse->length = 0; + parse->buffer[parse->length++] = data; + parse->computeCrc = false; + + // Start searching for a preamble byte + return gpsMessageParserFirstByte(parse, data); + } + + // Save the upper 2 bits of the length + parse->bytesRemaining = data << 8; + parse->state = rtcmReadLength2; + return SENTENCE_TYPE_RTCM; +} + +// Read the lower 8 bits of the length +uint8_t rtcmReadLength2(PARSE_STATE *parse, uint8_t data) +{ + parse->bytesRemaining |= data; + parse->state = rtcmReadMessage1; + return SENTENCE_TYPE_RTCM; +} + +// Read the upper 8 bits of the message number +uint8_t rtcmReadMessage1(PARSE_STATE *parse, uint8_t data) +{ + parse->message = data << 4; + parse->bytesRemaining -= 1; + parse->state = rtcmReadMessage2; + return SENTENCE_TYPE_RTCM; +} + +// Read the lower 4 bits of the message number +uint8_t rtcmReadMessage2(PARSE_STATE *parse, uint8_t data) +{ + parse->message |= data >> 4; + parse->bytesRemaining -= 1; + parse->state = rtcmReadData; + return SENTENCE_TYPE_RTCM; +} + +// Read the rest of the message +uint8_t rtcmReadData(PARSE_STATE *parse, uint8_t data) +{ + // Account for this data byte + parse->bytesRemaining -= 1; + + // Wait until all the data is received + if (parse->bytesRemaining <= 0) + { + parse->rtcmCrc = parse->crc & 0x00ffffff; + parse->bytesRemaining = 3; + parse->state = rtcmReadCrc; + } + return SENTENCE_TYPE_RTCM; +} + +// Read the CRC +uint8_t rtcmReadCrc(PARSE_STATE *parse, uint8_t data) +{ + // Account for this data byte + parse->bytesRemaining -= 1; + + // Wait until all the data is received + if (parse->bytesRemaining > 0) + return SENTENCE_TYPE_RTCM; + + // Update the maximum message length + if (parse->length > parse->maxLength) + { + parse->maxLength = parse->length; + printRtcmMaxLength(parse); + } + + // Display the RTCM messages with bad CRC + parse->crc &= 0x00ffffff; + if (settings.enablePrintBadMessages && parse->crc && (!inMainMenu)) + printRtcmChecksumError(parse); + + // Process the message if CRC is valid + if (parse->crc == 0) + parse->eomCallback(parse, SENTENCE_TYPE_RTCM); + else + failedParserMessages_RTCM++; + + // Search for another preamble byte + parse->length = 0; + parse->computeCrc = false; + parse->state = gpsMessageParserFirstByte; + return SENTENCE_TYPE_NONE; +} diff --git a/Firmware/RTK_Surveyor/Parse_UBLOX.ino b/Firmware/RTK_Surveyor/Parse_UBLOX.ino new file mode 100644 index 000000000..3d613acd8 --- /dev/null +++ b/Firmware/RTK_Surveyor/Parse_UBLOX.ino @@ -0,0 +1,155 @@ +/*------------------------------------------------------------------------------ +Parse_UBLOX.ino + + u-blox message parsing support routines +------------------------------------------------------------------------------*/ + +// +// U-BLOX Message +// +// |<-- Preamble --->| +// | | +// +--------+--------+---------+--------+---------+---------+--------+--------+ +// | SYNC | SYNC | Class | ID | Length | Payload | CK_A | CK_B | +// | 8 bits | 8 bits | 8 bits | 8 bits | 2 bytes | n bytes | 8 bits | 8 bits | +// | 0xb5 | 0x62 | | | | | | | +// +--------+--------+---------+--------+---------+---------+--------+--------+ +// | | +// |<------------- Checksum ------------->| +// +// 8-Bit Fletcher Algorithm, which is used in the TCP standard (RFC 1145) +// http://www.ietf.org/rfc/rfc1145.txt +// Checksum calculation +// Initialization: CK_A = CK_B = 0 +// CK_A += data +// CK_B += CK_A +// + +// Check for the preamble +uint8_t ubloxPreamble(PARSE_STATE *parse, uint8_t data) +{ + if (data == 0xb5) + { + parse->state = ubloxSync2; + return SENTENCE_TYPE_UBX; + } + return SENTENCE_TYPE_NONE; +} + +// Read the second sync byte +uint8_t ubloxSync2(PARSE_STATE *parse, uint8_t data) +{ + // Verify the sync 2 byte + if (data != 0x62) + { + // Display the invalid data + if (settings.enablePrintBadMessages && (!inMainMenu)) + printUbloxInvalidData(parse); + + // Invalid sync 2 byte, place this byte at the beginning of the buffer + parse->length = 0; + parse->buffer[parse->length++] = data; + + // Start searching for a preamble byte + return gpsMessageParserFirstByte(parse, data); + } + + parse->state = ubloxClass; + return SENTENCE_TYPE_UBX; +} + +// Read the class byte +uint8_t ubloxClass(PARSE_STATE *parse, uint8_t data) +{ + // Start the checksum calculation + parse->ck_a = data; + parse->ck_b = data; + + // Save the class as the upper 8-bits of the message + parse->message = ((uint16_t)data) << 8; + parse->state = ubloxId; + return SENTENCE_TYPE_UBX; +} + +// Read the ID byte +uint8_t ubloxId(PARSE_STATE *parse, uint8_t data) +{ + // Calculate the checksum + parse->ck_a += data; + parse->ck_b += parse->ck_a; + + // Save the ID as the lower 8-bits of the message + parse->message |= data; + parse->state = ubloxLength1; + return SENTENCE_TYPE_UBX; +} + +// Read the first length byte +uint8_t ubloxLength1(PARSE_STATE *parse, uint8_t data) +{ + // Calculate the checksum + parse->ck_a += data; + parse->ck_b += parse->ck_a; + + // Save the first length byte + parse->bytesRemaining = data; + parse->state = ubloxLength2; + return SENTENCE_TYPE_UBX; +} + +// Read the second length byte +uint8_t ubloxLength2(PARSE_STATE *parse, uint8_t data) +{ + // Calculate the checksum + parse->ck_a += data; + parse->ck_b += parse->ck_a; + + // Save the second length byte + parse->bytesRemaining |= ((uint16_t)data) << 8; + parse->state = ubloxPayload; + return SENTENCE_TYPE_UBX; +} + +// Read the payload +uint8_t ubloxPayload(PARSE_STATE *parse, uint8_t data) +{ + // Compute the checksum over the payload + if (parse->bytesRemaining--) + { + // Calculate the checksum + parse->ck_a += data; + parse->ck_b += parse->ck_a; + return SENTENCE_TYPE_UBX; + } + return ubloxCkA(parse, data); +} + +// Read the CK_A byte +uint8_t ubloxCkA(PARSE_STATE *parse, uint8_t data) +{ + parse->state = ubloxCkB; + return SENTENCE_TYPE_UBX; +} + +// Read the CK_B byte +uint8_t ubloxCkB(PARSE_STATE *parse, uint8_t data) +{ + bool badChecksum; + + // Validate the checksum + badChecksum = + ((parse->buffer[parse->length - 2] != parse->ck_a) || (parse->buffer[parse->length - 1] != parse->ck_b)); + if (settings.enablePrintBadMessages && badChecksum && (!inMainMenu)) + printUbloxChecksumError(parse); + + // Process this message if checksum is valid + if (badChecksum == false) + parse->eomCallback(parse, SENTENCE_TYPE_UBX); + else + failedParserMessages_UBX++; + + // Search for the next preamble byte + parse->length = 0; + parse->state = gpsMessageParserFirstByte; + return SENTENCE_TYPE_NONE; +} diff --git a/Firmware/RTK_Surveyor/PvtClient.ino b/Firmware/RTK_Surveyor/PvtClient.ino index a9bdcfb84..287a94060 100644 --- a/Firmware/RTK_Surveyor/PvtClient.ino +++ b/Firmware/RTK_Surveyor/PvtClient.ino @@ -116,7 +116,7 @@ PvtClient.ino * private SNIP NTRIP caster */ -#ifdef COMPILE_WIFI +#if COMPILE_NETWORK //---------------------------------------- // Constants @@ -146,6 +146,10 @@ const char * const pvtClientStateName[] = const int pvtClientStateNameEntries = sizeof(pvtClientStateName) / sizeof(pvtClientStateName[0]); +const RtkMode_t pvtClientMode = RTK_MODE_BASE_FIXED + | RTK_MODE_BASE_SURVEY_IN + | RTK_MODE_ROVER; + //---------------------------------------- // Locals //---------------------------------------- @@ -374,6 +378,14 @@ void pvtClientUpdate() byte seconds; static uint32_t timer; + // Shutdown the PVT client when the mode or setting changes + DMW_st(pvtClientSetState, pvtClientState); + if (NEQ_RTK_MODE(pvtClientMode) || (!settings.enablePvtClient)) + { + if (pvtClientState > PVT_CLIENT_STATE_OFF) + pvtClientStop(); + } + /* PVT Client state machine @@ -395,7 +407,6 @@ void pvtClientUpdate() '--------------PVT_CLIENT_STATE_CONNECTED */ - DMW_st(pvtClientSetState, pvtClientState); switch (pvtClientState) { default: @@ -406,7 +417,7 @@ void pvtClientUpdate() // Wait until the PVT client is enabled case PVT_CLIENT_STATE_OFF: // Determine if the PVT client should be running - if (settings.enablePvtClient) + if (EQ_RTK_MODE(pvtClientMode) && settings.enablePvtClient) { if (networkUserOpen(NETWORK_USER_PVT_CLIENT, NETWORK_TYPE_ACTIVE)) { @@ -520,4 +531,4 @@ void pvtClientZeroTail() pvtClientTail = 0; } -#endif // COMPILE_WIFI +#endif // COMPILE_NETWORK diff --git a/Firmware/RTK_Surveyor/PvtServer.ino b/Firmware/RTK_Surveyor/PvtServer.ino index 3a094a7b6..ed91cd710 100644 --- a/Firmware/RTK_Surveyor/PvtServer.ino +++ b/Firmware/RTK_Surveyor/PvtServer.ino @@ -59,6 +59,10 @@ const char * const pvtServerStateName[] = const int pvtServerStateNameEntries = sizeof(pvtServerStateName) / sizeof(pvtServerStateName[0]); +const RtkMode_t pvtServerMode = RTK_MODE_BASE_FIXED + | RTK_MODE_BASE_SURVEY_IN + | RTK_MODE_ROVER; + //---------------------------------------- // Locals //---------------------------------------- @@ -339,6 +343,14 @@ void pvtServerUpdate() int index; IPAddress ipAddress; + // Shutdown the PVT server when the mode or setting changes + DMW_st(pvtServerSetState, pvtServerState); + if (NEQ_RTK_MODE(pvtServerMode) || (!settings.enablePvtServer)) + { + if (pvtServerState > PVT_SERVER_STATE_OFF) + pvtServerStop(); + } + /* PVT Server state machine @@ -360,7 +372,6 @@ void pvtServerUpdate() '-----------PVT_SERVER_STATE_WAIT_NO_CLIENTS */ - DMW_st(pvtServerSetState, pvtServerState); switch (pvtServerState) { default: @@ -369,7 +380,7 @@ void pvtServerUpdate() // Wait until the PVT server is enabled case PVT_SERVER_STATE_OFF: // Determine if the PVT server should be running - if (settings.enablePvtServer && (!wifiInConfigMode()) && (!wifiIsConnected())) + if (EQ_RTK_MODE(pvtServerMode) && settings.enablePvtServer && (!wifiIsConnected())) { if (networkUserOpen(NETWORK_USER_PVT_SERVER, NETWORK_TYPE_ACTIVE)) { diff --git a/Firmware/RTK_Surveyor/PvtUdpServer.ino b/Firmware/RTK_Surveyor/PvtUdpServer.ino new file mode 100644 index 000000000..36637b0e4 --- /dev/null +++ b/Firmware/RTK_Surveyor/PvtUdpServer.ino @@ -0,0 +1,383 @@ +/* +pvtUdpServer.ino + + The PVT (position, velocity and time) server sits on top of the network layer + and sends position data to one or more computers or cell phones for display. + + Satellite ... Satellite + | | | + | | | + | V | + | RTK | + '------> Base <------' + Station + | + | NTRIP Server sends correction data + V + NTRIP Caster + | + | NTRIP Client receives correction data + | + V + Bluetooth RTK Network: PVT Client + .---------------- Rover ----------------------------------. + | | | + | | Network: PVT Server | + | PVT data | Position, velocity & time data | PVT data + | V | + | Computer or | + '------------> Cell Phone <-------------------------------' + for display + + PVT UDP Server Testing: + + RTK Express(+) with WiFi enabled, PvtUdpServer enabled, PvtUdpPort setup, + Smartphone with QField: + + Network Setup: + Connect the Smartphone and the RTK Express to the same Network (e.g. the Smartphones HotSpot). + + QField Setup: + * Open a project + * Open the left menu + * Click on the gear icon + * Click on Settings + * Click on Positioning + * Add a new Positioning device + * Set Connection type to UDP (NMEA) + * Set the Adress to + * Set the Port to the value of the specified PvtUdpPort (default 10110) + * Optional: give it a name (e.g. RTK Express UDP) + * Click on the Checkmark + * Make sure the new device is set as the Postioning device in use + * Exit the menus + + 1. Long press on the location icon in the lower right corner + + 2. Enable Show Position Information + + 3. Verify that the displayed coordinates, fix tpe etc. are valid +*/ + +#if COMPILE_NETWORK + +//---------------------------------------- +// Constants +//---------------------------------------- + +// Define the PVT server states +enum PvtUdpServerStates +{ + PVT_UDP_SERVER_STATE_OFF = 0, + PVT_UDP_SERVER_STATE_NETWORK_STARTED, + PVT_UDP_SERVER_STATE_RUNNING, + // Insert new states here + PVT_UDP_SERVER_STATE_MAX // Last entry in the state list +}; + +const char * const pvtUdpServerStateName[] = +{ + "PVT_UDP_SERVER_STATE_OFF", + "PVT_UDP_SERVER_STATE_NETWORK_STARTED", + "PVT_UDP_SERVER_STATE_RUNNING", +}; + +const int pvtUdpServerStateNameEntries = sizeof(pvtUdpServerStateName) / sizeof(pvtUdpServerStateName[0]); + +const RtkMode_t pvtUdpServerMode = RTK_MODE_BASE_FIXED + | RTK_MODE_BASE_SURVEY_IN + | RTK_MODE_ROVER; + +//---------------------------------------- +// Locals +//---------------------------------------- + +// PVT UDP server +static NetworkUDP *pvtUdpServer = nullptr; +static uint8_t pvtUdpServerState; +static uint32_t pvtUdpServerTimer; +static volatile RING_BUFFER_OFFSET pvtUdpServerTail; +//---------------------------------------- +// PVT UDP Server handleGnssDataTask Support Routines +//---------------------------------------- + +// Send data as broadcast +int32_t pvtUdpServerSendDataBroadcast(uint8_t *data, uint16_t length) +{ + if (!length) + return 0; + + // Send the data as broadcast + if (settings.enablePvtUdpServer && online.pvtUdpServer && wifiIsConnected()) + { + pvtUdpServer->beginPacket(WiFi.broadcastIP(), settings.pvtUdpServerPort); + pvtUdpServer->write(data, length); + if(pvtUdpServer->endPacket()){ + if ((settings.debugPvtUdpServer || PERIODIC_DISPLAY(PD_PVT_UDP_SERVER_BROADCAST_DATA)) && (!inMainMenu)) + { + systemPrintf("PVT UDP Server wrote %d bytes as broadcast on port %d\r\n", length, settings.pvtUdpServerPort); + PERIODIC_CLEAR(PD_PVT_UDP_SERVER_BROADCAST_DATA); + } + } + // Failed to write the data + else if ((settings.debugPvtUdpServer || PERIODIC_DISPLAY(PD_PVT_UDP_SERVER_BROADCAST_DATA)) && (!inMainMenu)) + { + PERIODIC_CLEAR(PD_PVT_UDP_SERVER_BROADCAST_DATA); + systemPrintf("PVT UDP Server failed to write %d bytes as broadcast\r\n", length); + length = 0; + } + } + return length; +} + +// Send PVT data as broadcast +int32_t pvtUdpServerSendData(uint16_t dataHead) +{ + int32_t usedSpace = 0; + + int32_t bytesToSend; + + uint16_t tail; + + tail = pvtUdpServerTail; + + // Determine the amount of PVT data in the buffer + bytesToSend = dataHead - tail; + if (bytesToSend < 0) + bytesToSend += settings.gnssHandlerBufferSize; + if (bytesToSend > 0) + { + // Reduce bytes to send if we have more to send then the end of the buffer + // We'll wrap next loop + if ((tail + bytesToSend) > settings.gnssHandlerBufferSize) + bytesToSend = settings.gnssHandlerBufferSize - tail; + + // Send the data + bytesToSend = pvtUdpServerSendDataBroadcast(&ringBuffer[tail], bytesToSend); + + // Assume all data was sent, wrap the buffer pointer + tail += bytesToSend; + if (tail >= settings.gnssHandlerBufferSize) + tail -= settings.gnssHandlerBufferSize; + + // Update space available for use in UART task + bytesToSend = dataHead - tail; + if (bytesToSend < 0) + bytesToSend += settings.gnssHandlerBufferSize; + if (usedSpace < bytesToSend) + usedSpace = bytesToSend; + } + + pvtUdpServerTail = tail; + + // Return the amount of space that PVT server client is using in the buffer + return usedSpace; +} + +// Remove previous messages from the ring buffer +void discardPvtUdpServerBytes(RING_BUFFER_OFFSET previousTail, RING_BUFFER_OFFSET newTail) +{ + int index; + uint16_t tail; + + tail = pvtUdpServerTail; + if (previousTail < newTail) + { + // No buffer wrap occurred + if ((tail >= previousTail) && (tail < newTail)) + pvtUdpServerTail = newTail; + } + else + { + // Buffer wrap occurred + if ((tail >= previousTail) || (tail < newTail)) + pvtUdpServerTail = newTail; + } +} + +//---------------------------------------- +// PVT Server Routines +//---------------------------------------- + +// Update the state of the PVT server state machine +void pvtUdpServerSetState(uint8_t newState) +{ + if ((settings.debugPvtUdpServer || PERIODIC_DISPLAY(PD_PVT_UDP_SERVER_STATE)) && (!inMainMenu)) + { + if (pvtUdpServerState == newState) + systemPrint("*"); + else + systemPrintf("%s --> ", pvtUdpServerStateName[pvtUdpServerState]); + } + pvtUdpServerState = newState; + if ((settings.debugPvtUdpServer || PERIODIC_DISPLAY(PD_PVT_UDP_SERVER_STATE)) && (!inMainMenu)) + { + PERIODIC_CLEAR(PD_PVT_UDP_SERVER_STATE); + if (newState >= PVT_UDP_SERVER_STATE_MAX) + { + systemPrintf("Unknown PVT UDP Server state: %d\r\n", pvtUdpServerState); + reportFatalError("Unknown PVT UDP Server state"); + } + else + systemPrintln(pvtUdpServerStateName[pvtUdpServerState]); + } +} + +// Start the PVT server +bool pvtUdpServerStart() +{ + IPAddress localIp; + + if (settings.debugPvtUdpServer && (!inMainMenu)) + systemPrintln("PVT UDP server starting"); + + // Start the PVT server + pvtUdpServer = new NetworkUDP(NETWORK_USER_PVT_UDP_SERVER); + if (!pvtUdpServer) + return false; + + pvtUdpServer->begin(settings.pvtUdpServerPort); + online.pvtUdpServer = true; + systemPrintf("PVT UDP server online, broadcasting to port %d\r\n", settings.pvtUdpServerPort); + return true; +} + +// Stop the PVT UDP server +void pvtUdpServerStop() +{ + int index; + + // Notify the rest of the system that the PVT server is shutting down + if (online.pvtUdpServer) + { + // Notify the UART2 tasks of the PVT server shutdown + online.pvtUdpServer = false; + delay(5); + } + + // Shutdown the PVT server + if (pvtUdpServer != nullptr) + { + // Stop the PVT server + if (settings.debugPvtUdpServer && (!inMainMenu)) + systemPrintln("PVT UDP server stopping"); + pvtUdpServer->stop(); + delete pvtUdpServer; + pvtUdpServer = nullptr; + } + + // Stop using the network + if (pvtUdpServerState != PVT_UDP_SERVER_STATE_OFF) + { + networkUserClose(NETWORK_USER_PVT_UDP_SERVER); + + // The PVT server is now off + pvtUdpServerSetState(PVT_UDP_SERVER_STATE_OFF); + pvtUdpServerTimer = millis(); + } +} + +// Update the PVT server state +void pvtUdpServerUpdate() +{ + bool connected; + bool dataSent; + int index; + IPAddress ipAddress; + + // Shutdown the PVT UDP server when the mode or setting changes + DMW_st(pvtUdpServerSetState, pvtUdpServerState); + if (NEQ_RTK_MODE(pvtUdpServerMode) || (!settings.enablePvtUdpServer)) + { + if (pvtUdpServerState > PVT_UDP_SERVER_STATE_OFF) + pvtUdpServerStop(); + } + + /* + PVT UDP Server state machine + + .--------------->PVT_UDP_SERVER_STATE_OFF + | | + | pvtUdpServerStop | settings.enablePvtUdpServer + | | + | V + +<---------PVT_UDP_SERVER_STATE_NETWORK_STARTED + ^ | + | | networkUserConnected + | | + | V + '--------------PVT_UDP_SERVER_STATE_RUNNING + */ + + switch (pvtUdpServerState) + { + default: + break; + + // Wait until the PVT server is enabled + case PVT_UDP_SERVER_STATE_OFF: + // Determine if the PVT server should be running + if (EQ_RTK_MODE(pvtUdpServerMode) && settings.enablePvtUdpServer && (!wifiIsConnected())) + { + if (networkUserOpen(NETWORK_USER_PVT_UDP_SERVER, NETWORK_TYPE_ACTIVE)) + { + if (settings.debugPvtUdpServer && (!inMainMenu)) + systemPrintln("PVT UDP server starting the network"); + pvtUdpServerSetState(PVT_UDP_SERVER_STATE_NETWORK_STARTED); + } + } + break; + + // Wait until the network is connected + case PVT_UDP_SERVER_STATE_NETWORK_STARTED: + // Determine if the network has failed + if (networkIsShuttingDown(NETWORK_USER_PVT_UDP_SERVER)) + // Failed to connect to to the network, attempt to restart the network + pvtUdpServerStop(); + + // Wait for the network to connect to the media + else if (networkUserConnected(NETWORK_USER_PVT_UDP_SERVER)) + { + // Delay before starting the PVT server + if ((millis() - pvtUdpServerTimer) >= (1 * 1000)) + { + // The network type and host provide a valid configuration + pvtUdpServerTimer = millis(); + + // Start the PVT UDP server + if (pvtUdpServerStart()) + pvtUdpServerSetState(PVT_UDP_SERVER_STATE_RUNNING); + } + } + break; + + // Handle client connections and link failures + case PVT_UDP_SERVER_STATE_RUNNING: + // Determine if the network has failed + if ((!settings.enablePvtUdpServer) || networkIsShuttingDown(NETWORK_USER_PVT_UDP_SERVER)) + { + if ((settings.debugPvtUdpServer || PERIODIC_DISPLAY(PD_PVT_UDP_SERVER_DATA)) && (!inMainMenu)) + { + PERIODIC_CLEAR(PD_PVT_UDP_SERVER_DATA); + systemPrintln("PVT server initiating shutdown"); + } + + // Network connection failed, attempt to restart the network + pvtUdpServerStop(); + break; + } + break; + } + + // Periodically display the PVT state + if (PERIODIC_DISPLAY(PD_PVT_UDP_SERVER_STATE) && (!inMainMenu)) + pvtUdpServerSetState(pvtUdpServerState); +} + +// Zero the PVT server client tails +void pvtUdpServerZeroTail() +{ + pvtUdpServerTail = 0; +} + +#endif // COMPILE_NETWORK diff --git a/Firmware/RTK_Surveyor/RTK_Surveyor.ino b/Firmware/RTK_Surveyor/RTK_Surveyor.ino index d246eaca9..109da6707 100644 --- a/Firmware/RTK_Surveyor/RTK_Surveyor.ino +++ b/Firmware/RTK_Surveyor/RTK_Surveyor.ino @@ -60,7 +60,6 @@ // the minor firmware version #define RTK_IDENTIFIER (FIRMWARE_VERSION_MAJOR * 0x10 + FIRMWARE_VERSION_MINOR) -#include "crc24q.h" //24-bit CRC-24Q cyclic redundancy checksum for RTCM parsing #include "settings.h" #define MAX_CPU_CORES 2 @@ -156,7 +155,7 @@ SdFat *sd; #include "FileSdFatMMC.h" //Hybrid SdFat and SD_MMC file access -char platformFilePrefix[40] = "SFE_Surveyor"; // Sets the prefix for logs and settings files +#define platformFilePrefix platformFilePrefixTable[productVariant] // Sets the prefix for logs and settings files FileSdFatMMC *ubxFile; // File that all GNSS ubx messages sentences are written to unsigned long lastUBXLogSyncTime = 0; // Used to record to SD every half second @@ -201,10 +200,24 @@ char logFileName[sizeof("SFE_Reference_Station_230101_120101.ubx_plusExtraSpace" // Over-the-Air (OTA) update support //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +#if COMPILE_NETWORK +#include // http://librarymanager/All#SSLClientESP32 +#include "X509_Certificate_Bundle.h" // Root certificates +#endif // COMPILE_NETWORK +#include //http://librarymanager/All#Arduino_JSON_messagepack v6.19.4 + #include "esp_ota_ops.h" //Needed for partition counting and updateFromSD #ifdef COMPILE_WIFI #include "ESP32OTAPull.h" //http://librarymanager/All#ESP-OTA-Pull Used for getting + +#define WIFI_STOP() \ +{ \ + if (settings.debugWifiState) \ + systemPrintf("wifiStop called by %s %d\r\n", __FILE__, __LINE__); \ + wifiStop(); \ +} + #endif // COMPILE_WIFI #define OTA_FIRMWARE_JSON_URL \ @@ -218,7 +231,6 @@ unsigned int binBytesSent = 0; // Tracks firmware bytes sent over WiFi O // Connection settings to NTRIP Caster //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #ifdef COMPILE_WIFI -#include //http://librarymanager/All#Arduino_JSON_messagepack v6.19.4 #include //Built-in. #include //Built-in. Needed for ThingStream API for ZTP #include //http://librarymanager/All#PubSubClient_MQTT_Lightweight by Nick O'Leary v2.8.0 Used for MQTT obtaining of keys @@ -246,11 +258,6 @@ int wifiOriginalMaxConnectionAttempts = wifiMaxConnectionAttempts; // Modified d //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #include //http://librarymanager/All#SparkFun_u-blox_GNSS_v3 v3.0.5 -#define SENTENCE_TYPE_NMEA DevUBLOXGNSS::SFE_UBLOX_SENTENCE_TYPE_NMEA -#define SENTENCE_TYPE_NONE DevUBLOXGNSS::SFE_UBLOX_SENTENCE_TYPE_NONE -#define SENTENCE_TYPE_RTCM DevUBLOXGNSS::SFE_UBLOX_SENTENCE_TYPE_RTCM -#define SENTENCE_TYPE_UBX DevUBLOXGNSS::SFE_UBLOX_SENTENCE_TYPE_UBX - char zedFirmwareVersion[20]; // The string looks like 'HPG 1.12'. Output to system status menu and settings file. char neoFirmwareVersion[20]; // Output to system status menu. uint8_t zedFirmwareVersionInt = 0; // Controls which features (constellations) can be configured (v1.12 doesn't support @@ -370,6 +377,21 @@ bool lBandCommunicationEnabled = false; unsigned long rtcmLastPacketReceived = 0; //Monitors the last time we received RTCM. Proctors PMP vs RTCM prioritization. //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +// GPS parse table +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +// Define the parsers that get included +#define PARSE_NMEA_MESSAGES +#define PARSE_RTCM_MESSAGES +#define PARSE_UBLOX_MESSAGES + +// Build the GPS_PARSE_TABLE macro +#include "GpsMessageParser.h" // Include the parser + +// Create the GPS message parse table instance +GPS_PARSE_TABLE; + +//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + // Battery fuel gauge and PWM LEDs //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= #include //Click here to get the library: http://librarymanager/All#SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library @@ -397,7 +419,7 @@ float battChangeRate = 0.0; #include "bluetoothSelect.h" #endif // COMPILE_BT -char platformPrefix[55] = "Surveyor"; // Sets the prefix for broadcast names +#define platformPrefix platformPrefixTable[productVariant] // Sets the prefix for broadcast names #include //Required for uart_set_rx_full_threshold() on cores = 28 && daysRemaining <= 56) + if (checkCertificates() && (daysRemaining > 28 && daysRemaining <= 56)) changeState(STATE_KEYS_DAYS_REMAINING); else changeState(STATE_KEYS_NEEDED); @@ -777,7 +784,7 @@ void updateSystemState() break; case (STATE_KEYS_NEEDED): { - forceSystemStateUpdate = true; // Imediately go to this new state + forceSystemStateUpdate = true; //immediately go to this new state if (online.rtc == false) { @@ -988,6 +995,7 @@ void updateSystemState() #ifdef COMPILE_ETHERNET case (STATE_NTPSERVER_NOT_STARTED): { + RTK_MODE(RTK_MODE_NTP); firstRoverStart = false; // If NTP is starting, no test menu, normal button use. if (online.gnss == false) @@ -1056,6 +1064,7 @@ void updateSystemState() break; case (STATE_CONFIG_VIA_ETH_STARTED): { + RTK_MODE(RTK_MODE_ETHERNET_CONFIG); // The code should only be able to enter this state if configureViaEthernet is true. // If configureViaEthernet is not true, we need to restart again. //(If we continue, startEthernerWebServerESP32W5500 will fail as it won't have exclusive access to SPI and diff --git a/Firmware/RTK_Surveyor/System.ino b/Firmware/RTK_Surveyor/System.ino index 6fe16aee9..caf1a54f3 100644 --- a/Firmware/RTK_Surveyor/System.ino +++ b/Firmware/RTK_Surveyor/System.ino @@ -154,7 +154,10 @@ bool configureUbloxModule() response &= theGNSS.addCfgValset(UBLOX_CFG_USBINPROT_NMEA, 1); response &= theGNSS.addCfgValset(UBLOX_CFG_USBINPROT_RTCM3X, 1); if (commandSupported(UBLOX_CFG_USBINPROT_SPARTN) == true) - response &= theGNSS.addCfgValset(UBLOX_CFG_USBINPROT_SPARTN, 0); + { + //See issue: https://github.com/sparkfun/SparkFun_RTK_Firmware/issues/713 + response &= theGNSS.addCfgValset(UBLOX_CFG_USBINPROT_SPARTN, 1); + } if (commandSupported(UBLOX_CFG_NAVSPG_INFIL_MINCNO) == true) { @@ -1167,7 +1170,7 @@ void reportFatalError(const char *errorMsg) { while (1) { - systemPrint("ERROR: "); + systemPrint("HALTED: "); systemPrint(errorMsg); systemPrintln(); sleep(15); diff --git a/Firmware/RTK_Surveyor/Tasks.ino b/Firmware/RTK_Surveyor/Tasks.ino index 9f87b9a91..7bae303c3 100644 --- a/Firmware/RTK_Surveyor/Tasks.ino +++ b/Firmware/RTK_Surveyor/Tasks.ino @@ -16,7 +16,7 @@ Tasks.ino '------->+<-------' | | gnssReadTask - | waitForPreamble + | gpsMessageParserFirstByte | ... | processUart1Message | @@ -55,6 +55,7 @@ enum RingBufferConsumers RBC_PVT_CLIENT, RBC_PVT_SERVER, RBC_SD_CARD, + RBC_PVT_UDP_SERVER, // Insert new consumers here RBC_MAX }; @@ -65,6 +66,7 @@ const char * const ringBufferConsumer[] = "PVT Client", "PVT Server", "SD Card", + "PVT UDP Server", }; const int ringBufferConsumerEntries = sizeof(ringBufferConsumer) / sizeof(ringBufferConsumer[0]); @@ -294,7 +296,7 @@ void feedWdt() // time. void gnssReadTask(void *e) { - static PARSE_STATE parse = {waitForPreamble, processUart1Message, "Log"}; + static PARSE_STATE parse = {gpsMessageParserFirstByte, processUart1Message, "Log"}; uint8_t incomingData = 0; @@ -626,6 +628,7 @@ void updateRingBufferTails(RING_BUFFER_OFFSET previousTail, RING_BUFFER_OFFSET n discardRingBufferBytes(&sdRingBufferTail, previousTail, newTail); discardPvtClientBytes(previousTail, newTail); discardPvtServerBytes(previousTail, newTail); + discardPvtUdpServerBytes(previousTail, newTail); } // Remove previous messages from the ring buffer @@ -685,6 +688,7 @@ void handleGnssDataTask(void *e) btRingBufferTail = 0; pvtClientZeroTail(); pvtServerZeroTail(); + pvtUdpServerZeroTail(); sdRingBufferTail = 0; while (true) @@ -801,6 +805,21 @@ void handleGnssDataTask(void *e) if (maxMillis[RBC_PVT_SERVER] < deltaMillis) maxMillis[RBC_PVT_SERVER] = deltaMillis; + startMillis = millis(); + + // Update space available for use in UART task + bytesToSend = pvtUdpServerSendData(dataHead); + if (usedSpace < bytesToSend) + { + usedSpace = bytesToSend; + slowConsumer = "PVT UDP server"; + } + + // Remember the maximum transfer time + deltaMillis = millis() - startMillis; + if (maxMillis[RBC_PVT_UDP_SERVER] < deltaMillis) + maxMillis[RBC_PVT_UDP_SERVER] = deltaMillis; + //---------------------------------------------------------------------- // Log data to the SD card //---------------------------------------------------------------------- diff --git a/Firmware/RTK_Surveyor/WiFi.ino b/Firmware/RTK_Surveyor/WiFi.ino index bc8e7b9de..49640e91c 100644 --- a/Firmware/RTK_Surveyor/WiFi.ino +++ b/Firmware/RTK_Surveyor/WiFi.ino @@ -86,6 +86,9 @@ void menuWiFi() systemPrint("a) Configure device via WiFi Access Point or connect to WiFi: "); systemPrintf("%s\r\n", settings.wifiConfigOverAP ? "AP" : "WiFi"); + systemPrint("c) Captive Portal: "); + systemPrintf("%s\r\n", settings.enableCaptivePortal ? "Enabled" : "Disabled"); + systemPrint("m) MDNS: "); systemPrintf("%s\r\n", settings.mdnsEnable ? "Enabled" : "Disabled"); @@ -115,7 +118,10 @@ void menuWiFi() settings.wifiConfigOverAP ^= 1; restartWiFi = true; } - + else if (incoming == 'c') + { + settings.enableCaptivePortal ^= 1; + } else if (incoming == 'm') { settings.mdnsEnable ^= 1; @@ -149,7 +155,7 @@ void menuWiFi() if (wifiIsConnected()) { log_d("Menu caused restarting of WiFi"); - wifiStop(); + WIFI_STOP(); wifiStart(); wifiConnectionAttempts = 0; // Reset the timeout } @@ -222,7 +228,7 @@ bool wifiStartAP(bool forceAP) if (settings.wifiConfigOverAP == true || forceAP) { // Stop any current WiFi activity - wifiStop(); + WIFI_STOP(); // Start in AP mode WiFi.mode(WIFI_AP); @@ -347,7 +353,7 @@ void wifiUpdate() { systemPrintln("WiFi connection failed. Giving up."); displayNoWiFi(2000); - wifiStop(); // Move back to WIFI_OFF + WIFI_STOP(); // Move back to WIFI_OFF } } } @@ -365,13 +371,13 @@ void wifiUpdate() // If WiFi is connected, and no services require WiFi, shut it off else if (wifiIsNeeded() == false) - wifiStop(); + WIFI_STOP(); break; } // Process DNS when we are in AP mode for captive portal - if (WiFi.getMode() == WIFI_AP) + if (WiFi.getMode() == WIFI_AP && settings.enableCaptivePortal) { dnsServer.processNextRequest(); } @@ -387,7 +393,7 @@ void wifiStart() { systemPrintln("Error: Please enter at least one SSID before using WiFi"); // paintNoWiFi(2000); //TODO - wifiStop(); + WIFI_STOP(); return; } @@ -416,7 +422,7 @@ void wifiStop() MDNS.end(); // Stop the DNS server if we were using the captive portal - if (WiFi.getMode() == WIFI_AP) + if (WiFi.getMode() == WIFI_AP && settings.enableCaptivePortal) dnsServer.stop(); // Stop the other network clients and then WiFi @@ -441,7 +447,7 @@ void wifiShutdown() // esp_wifi_set_protocol requires WiFi to be started esp_err_t response = esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR); if (response != ESP_OK) - systemPrintf("wifiStop: Error setting ESP-Now lone protocol: %s\r\n", esp_err_to_name(response)); + systemPrintf("wifiShutdown: Error setting ESP-Now lone protocol: %s\r\n", esp_err_to_name(response)); else log_d("WiFi disabled, ESP-Now left in place"); } @@ -518,7 +524,7 @@ bool wifiConnect(unsigned long timeout) int wifiResponse = wifiMulti.run(timeout); if (wifiResponse == WL_CONNECTED) { - if (settings.enablePvtClient == true || settings.enablePvtServer == true) + if (settings.enablePvtClient == true || settings.enablePvtServer == true || settings.enablePvtUdpServer == true) { if (settings.mdnsEnable == true) { @@ -545,39 +551,41 @@ bool wifiConnect(unsigned long timeout) // This function is used to turn WiFi off if nothing needs it. bool wifiIsNeeded() { - bool needed = false; - if (settings.enablePvtClient == true) - needed = true; + return true; if (settings.enablePvtServer == true) - needed = true; + return true; + if (settings.enablePvtUdpServer == true) + return true; + if (settings.enableAutoFirmwareUpdate) + return true; // Handle WiFi within systemStates if (systemState <= STATE_ROVER_RTK_FIX && settings.enableNtripClient == true) - needed = true; + return true; if (systemState >= STATE_BASE_NOT_STARTED && systemState <= STATE_BASE_FIXED_TRANSMITTING && settings.enableNtripServer == true) - needed = true; + return true; // If the user has enabled NTRIP Client for an Assisted Survey-In, and Survey-In is running, keep WiFi on. if (systemState >= STATE_BASE_NOT_STARTED && systemState <= STATE_BASE_TEMP_SURVEY_STARTED && settings.enableNtripClient == true && settings.fixedBase == false) - needed = true; + return true; // If WiFi is on while we are in the following states, allow WiFi to continue to operate if (systemState >= STATE_BUBBLE_LEVEL && systemState <= STATE_PROFILE) { // Keep WiFi on if user presses setup button, enters bubble level, is in AP config mode, etc - needed = true; + return true; } if (systemState == STATE_KEYS_WIFI_STARTED || systemState == STATE_KEYS_WIFI_CONNECTED) - needed = true; + return true; if (systemState == STATE_KEYS_PROVISION_WIFI_STARTED || systemState == STATE_KEYS_PROVISION_WIFI_CONNECTED) - needed = true; + return true; - return needed; + return false; } // Counts the number of entered SSIDs diff --git a/Firmware/RTK_Surveyor/X509_Certificate_Bundle.h b/Firmware/RTK_Surveyor/X509_Certificate_Bundle.h new file mode 100644 index 000000000..d64efab17 --- /dev/null +++ b/Firmware/RTK_Surveyor/X509_Certificate_Bundle.h @@ -0,0 +1,1056 @@ +const uint8_t x509CertificateBundle[] = +{ + 0x00, 0x29, 0x00, 0x3b, 0x01, 0x26, 0x30, 0x39, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, // 16 + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, // 32 + 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, // 48 + 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, // 64 + 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, // 80 + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, // 96 + 0x01, 0x00, 0xb2, 0x78, 0x80, 0x71, 0xca, 0x78, 0xd5, 0xe3, 0x71, 0xaf, 0x47, 0x80, 0x50, 0x74, // 112 + 0x7d, 0x6e, 0xd8, 0xd7, 0x88, 0x76, 0xf4, 0x99, 0x68, 0xf7, 0x58, 0x21, 0x60, 0xf9, 0x74, 0x84, // 128 + 0x01, 0x2f, 0xac, 0x02, 0x2d, 0x86, 0xd3, 0xa0, 0x43, 0x7a, 0x4e, 0xb2, 0xa4, 0xd0, 0x36, 0xba, // 144 + 0x01, 0xbe, 0x8d, 0xdb, 0x48, 0xc8, 0x07, 0x17, 0x36, 0x4c, 0xf4, 0xee, 0x88, 0x23, 0xc7, 0x3e, // 160 + 0xeb, 0x37, 0xf5, 0xb5, 0x19, 0xf8, 0x49, 0x68, 0xb0, 0xde, 0xd7, 0xb9, 0x76, 0x38, 0x1d, 0x61, // 176 + 0x9e, 0xa4, 0xfe, 0x82, 0x36, 0xa5, 0xe5, 0x4a, 0x56, 0xe4, 0x45, 0xe1, 0xf9, 0xfd, 0xb4, 0x16, // 192 + 0xfa, 0x74, 0xda, 0x9c, 0x9b, 0x35, 0x39, 0x2f, 0xfa, 0xb0, 0x20, 0x50, 0x06, 0x6c, 0x7a, 0xd0, // 208 + 0x80, 0xb2, 0xa6, 0xf9, 0xaf, 0xec, 0x47, 0x19, 0x8f, 0x50, 0x38, 0x07, 0xdc, 0xa2, 0x87, 0x39, // 224 + 0x58, 0xf8, 0xba, 0xd5, 0xa9, 0xf9, 0x48, 0x67, 0x30, 0x96, 0xee, 0x94, 0x78, 0x5e, 0x6f, 0x89, // 240 + 0xa3, 0x51, 0xc0, 0x30, 0x86, 0x66, 0xa1, 0x45, 0x66, 0xba, 0x54, 0xeb, 0xa3, 0xc3, 0x91, 0xf9, // 256 + 0x48, 0xdc, 0xff, 0xd1, 0xe8, 0x30, 0x2d, 0x7d, 0x2d, 0x74, 0x70, 0x35, 0xd7, 0x88, 0x24, 0xf7, // 272 + 0x9e, 0xc4, 0x59, 0x6e, 0xbb, 0x73, 0x87, 0x17, 0xf2, 0x32, 0x46, 0x28, 0xb8, 0x43, 0xfa, 0xb7, // 288 + 0x1d, 0xaa, 0xca, 0xb4, 0xf2, 0x9f, 0x24, 0x0e, 0x2d, 0x4b, 0xf7, 0x71, 0x5c, 0x5e, 0x69, 0xff, // 304 + 0xea, 0x95, 0x02, 0xcb, 0x38, 0x8a, 0xae, 0x50, 0x38, 0x6f, 0xdb, 0xfb, 0x2d, 0x62, 0x1b, 0xc5, // 320 + 0xc7, 0x1e, 0x54, 0xe1, 0x77, 0xe0, 0x67, 0xc8, 0x0f, 0x9c, 0x87, 0x23, 0xd6, 0x3f, 0x40, 0x20, // 336 + 0x7f, 0x20, 0x80, 0xc4, 0x80, 0x4c, 0x3e, 0x3b, 0x24, 0x26, 0x8e, 0x04, 0xae, 0x6c, 0x9a, 0xc8, // 352 + 0xaa, 0x0d, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x3b, 0x02, 0x26, 0x30, 0x39, 0x31, 0x0b, 0x30, // 368 + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, // 384 + 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, 0x17, 0x06, // 400 + 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, // 416 + 0x74, 0x20, 0x43, 0x41, 0x20, 0x32, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, // 432 + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, // 448 + 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xad, 0x96, 0x9f, 0x2d, 0x9c, 0x4a, 0x4c, 0x4a, 0x81, // 464 + 0x79, 0x51, 0x99, 0xec, 0x8a, 0xcb, 0x6b, 0x60, 0x51, 0x13, 0xbc, 0x4d, 0x6d, 0x06, 0xfc, 0xb0, // 480 + 0x08, 0x8d, 0xdd, 0x19, 0x10, 0x6a, 0xc7, 0x26, 0x0c, 0x35, 0xd8, 0xc0, 0x6f, 0x20, 0x84, 0xe9, // 496 + 0x94, 0xb1, 0x9b, 0x85, 0x03, 0xc3, 0x5b, 0xdb, 0x4a, 0xe8, 0xc8, 0xf8, 0x90, 0x76, 0xd9, 0x5b, // 512 + 0x4f, 0xe3, 0x4c, 0xe8, 0x06, 0x36, 0x4d, 0xcc, 0x9a, 0xac, 0x3d, 0x0c, 0x90, 0x2b, 0x92, 0xd4, // 528 + 0x06, 0x19, 0x60, 0xac, 0x37, 0x44, 0x79, 0x85, 0x81, 0x82, 0xad, 0x5a, 0x37, 0xe0, 0x0d, 0xcc, // 544 + 0x9d, 0xa6, 0x4c, 0x52, 0x76, 0xea, 0x43, 0x9d, 0xb7, 0x04, 0xd1, 0x50, 0xf6, 0x55, 0xe0, 0xd5, // 560 + 0xd2, 0xa6, 0x49, 0x85, 0xe9, 0x37, 0xe9, 0xca, 0x7e, 0xae, 0x5c, 0x95, 0x4d, 0x48, 0x9a, 0x3f, // 576 + 0xae, 0x20, 0x5a, 0x6d, 0x88, 0x95, 0xd9, 0x34, 0xb8, 0x52, 0x1a, 0x43, 0x90, 0xb0, 0xbf, 0x6c, // 592 + 0x05, 0xb9, 0xb6, 0x78, 0xb7, 0xea, 0xd0, 0xe4, 0x3a, 0x3c, 0x12, 0x53, 0x62, 0xff, 0x4a, 0xf2, // 608 + 0x7b, 0xbe, 0x35, 0x05, 0xa9, 0x12, 0x34, 0xe3, 0xf3, 0x64, 0x74, 0x62, 0x2c, 0x3d, 0x00, 0x49, // 624 + 0x5a, 0x28, 0xfe, 0x32, 0x44, 0xbb, 0x87, 0xdd, 0x65, 0x27, 0x02, 0x71, 0x3b, 0xda, 0x4a, 0xf7, // 640 + 0x1f, 0xda, 0xcd, 0xf7, 0x21, 0x55, 0x90, 0x4f, 0x0f, 0xec, 0xae, 0x82, 0xe1, 0x9f, 0x6b, 0xd9, // 656 + 0x45, 0xd3, 0xbb, 0xf0, 0x5f, 0x87, 0xed, 0x3c, 0x2c, 0x39, 0x86, 0xda, 0x3f, 0xde, 0xec, 0x72, // 672 + 0x55, 0xeb, 0x79, 0xa3, 0xad, 0xdb, 0xdd, 0x7c, 0xb0, 0xba, 0x1c, 0xce, 0xfc, 0xde, 0x4f, 0x35, // 688 + 0x76, 0xcf, 0x0f, 0xf8, 0x78, 0x1f, 0x6a, 0x36, 0x51, 0x46, 0x27, 0x61, 0x5b, 0xe9, 0x9e, 0xcf, // 704 + 0xf0, 0xa2, 0x55, 0x7d, 0x7c, 0x25, 0x8a, 0x6f, 0x2f, 0xb4, 0xc5, 0xcf, 0x84, 0x2e, 0x2b, 0xfd, // 720 + 0x0d, 0x51, 0x10, 0x6c, 0xfb, 0x5f, 0x1b, 0xbc, 0x1b, 0x7e, 0xc5, 0xae, 0x3b, 0x98, 0x01, 0x31, // 736 + 0x92, 0xff, 0x0b, 0x57, 0xf4, 0x9a, 0xb2, 0xb9, 0x57, 0xe9, 0xab, 0xef, 0x0d, 0x76, 0xd1, 0xf0, // 752 + 0xee, 0xf4, 0xce, 0x86, 0xa7, 0xe0, 0x6e, 0xe9, 0xb4, 0x69, 0xa1, 0xdf, 0x69, 0xf6, 0x33, 0xc6, // 768 + 0x69, 0x2e, 0x97, 0x13, 0x9e, 0xa5, 0x87, 0xb0, 0x57, 0x10, 0x81, 0x37, 0xc9, 0x53, 0xb3, 0xbb, // 784 + 0x7f, 0xf6, 0x92, 0xd1, 0x9c, 0xd0, 0x18, 0xf4, 0x92, 0x6e, 0xda, 0x83, 0x4f, 0xa6, 0x63, 0x99, // 800 + 0x4c, 0xa5, 0xfb, 0x5e, 0xef, 0x21, 0x64, 0x7a, 0x20, 0x5f, 0x6c, 0x64, 0x85, 0x15, 0xcb, 0x37, // 816 + 0xe9, 0x62, 0x0c, 0x0b, 0x2a, 0x16, 0xdc, 0x01, 0x2e, 0x32, 0xda, 0x3e, 0x4b, 0xf5, 0x9e, 0x3a, // 832 + 0xf6, 0x17, 0x40, 0x94, 0xef, 0x9e, 0x91, 0x08, 0x86, 0xfa, 0xbe, 0x63, 0xa8, 0x5a, 0x33, 0xec, // 848 + 0xcb, 0x74, 0x43, 0x95, 0xf9, 0x6c, 0x69, 0x52, 0x36, 0xc7, 0x29, 0x6f, 0xfc, 0x55, 0x03, 0x5c, // 864 + 0x1f, 0xfb, 0x9f, 0xbd, 0x47, 0xeb, 0xe7, 0x49, 0x47, 0x95, 0x0b, 0x4e, 0x89, 0x22, 0x09, 0x49, // 880 + 0xe0, 0xf5, 0x61, 0x1e, 0xf1, 0xbf, 0x2e, 0x8a, 0x72, 0x6e, 0x80, 0x59, 0xff, 0x57, 0x3a, 0xf9, // 896 + 0x75, 0x32, 0xa3, 0x4e, 0x5f, 0xec, 0xed, 0x28, 0x62, 0xd9, 0x4d, 0x73, 0xf2, 0xcc, 0x81, 0x17, // 912 + 0x60, 0xed, 0xcd, 0xeb, 0xdc, 0xdb, 0xa7, 0xca, 0xc5, 0x7e, 0x02, 0xbd, 0xf2, 0x54, 0x08, 0x54, // 928 + 0xfd, 0xb4, 0x2d, 0x09, 0x2c, 0x17, 0x54, 0x4a, 0x98, 0xd1, 0x54, 0xe1, 0x51, 0x67, 0x08, 0xd2, // 944 + 0xed, 0x6e, 0x7e, 0x6f, 0x3f, 0xd2, 0x2d, 0x81, 0x59, 0x29, 0x66, 0xcb, 0x90, 0x39, 0x95, 0x11, // 960 + 0x1e, 0x74, 0x27, 0xfe, 0xdd, 0xeb, 0xaf, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x3b, 0x00, 0x5b, // 976 + 0x30, 0x39, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, // 992 + 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, // 1008 + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, // 1024 + 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x33, 0x30, 0x59, 0x30, 0x13, 0x06, // 1040 + 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, // 1056 + 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x29, 0x97, 0xa7, 0xc6, 0x41, 0x7f, 0xc0, 0x0d, 0x9b, 0xe8, // 1072 + 0x01, 0x1b, 0x56, 0xc6, 0xf2, 0x52, 0xa5, 0xba, 0x2d, 0xb2, 0x12, 0xe8, 0xd2, 0x2e, 0xd7, 0xfa, // 1088 + 0xc9, 0xc5, 0xd8, 0xaa, 0x6d, 0x1f, 0x73, 0x81, 0x3b, 0x3b, 0x98, 0x6b, 0x39, 0x7c, 0x33, 0xa5, // 1104 + 0xc5, 0x4e, 0x86, 0x8e, 0x80, 0x17, 0x68, 0x62, 0x45, 0x57, 0x7d, 0x44, 0x58, 0x1d, 0xb3, 0x37, // 1120 + 0xe5, 0x67, 0x08, 0xeb, 0x66, 0xde, 0x00, 0x3b, 0x00, 0x78, 0x30, 0x39, 0x31, 0x0b, 0x30, 0x09, // 1136 + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, // 1152 + 0x04, 0x0a, 0x13, 0x06, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, // 1168 + 0x55, 0x04, 0x03, 0x13, 0x10, 0x41, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, // 1184 + 0x20, 0x43, 0x41, 0x20, 0x34, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, // 1200 + 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0xd2, 0xab, 0x8a, // 1216 + 0x37, 0x4f, 0xa3, 0x53, 0x0d, 0xfe, 0xc1, 0x8a, 0x7b, 0x4b, 0xa8, 0x7b, 0x46, 0x4b, 0x63, 0xb0, // 1232 + 0x62, 0xf6, 0x2d, 0x1b, 0xdb, 0x08, 0x71, 0x21, 0xd2, 0x00, 0xe8, 0x63, 0xbd, 0x9a, 0x27, 0xfb, // 1248 + 0xf0, 0x39, 0x6e, 0x5d, 0xea, 0x3d, 0xa5, 0xc9, 0x81, 0xaa, 0xa3, 0x5b, 0x20, 0x98, 0x45, 0x5d, // 1264 + 0x16, 0xdb, 0xfd, 0xe8, 0x10, 0x6d, 0xe3, 0x9c, 0xe0, 0xe3, 0xbd, 0x5f, 0x84, 0x62, 0xf3, 0x70, // 1280 + 0x64, 0x33, 0xa0, 0xcb, 0x24, 0x2f, 0x70, 0xba, 0x88, 0xa1, 0x2a, 0xa0, 0x75, 0xf8, 0x81, 0xae, // 1296 + 0x62, 0x06, 0xc4, 0x81, 0xdb, 0x39, 0x6e, 0x29, 0xb0, 0x1e, 0xfa, 0x2e, 0x5c, 0x00, 0x41, 0x01, // 1312 + 0x26, 0x30, 0x3f, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1b, 0x44, 0x69, // 1328 + 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, // 1344 + 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x2e, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, // 1360 + 0x04, 0x03, 0x13, 0x0e, 0x44, 0x53, 0x54, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, // 1376 + 0x58, 0x33, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, // 1392 + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, // 1408 + 0x01, 0x01, 0x00, 0xdf, 0xaf, 0xe9, 0x97, 0x50, 0x08, 0x83, 0x57, 0xb4, 0xcc, 0x62, 0x65, 0xf6, // 1424 + 0x90, 0x82, 0xec, 0xc7, 0xd3, 0x2c, 0x6b, 0x30, 0xca, 0x5b, 0xec, 0xd9, 0xc3, 0x7d, 0xc7, 0x40, // 1440 + 0xc1, 0x18, 0x14, 0x8b, 0xe0, 0xe8, 0x33, 0x76, 0x49, 0x2a, 0xe3, 0x3f, 0x21, 0x49, 0x93, 0xac, // 1456 + 0x4e, 0x0e, 0xaf, 0x3e, 0x48, 0xcb, 0x65, 0xee, 0xfc, 0xd3, 0x21, 0x0f, 0x65, 0xd2, 0x2a, 0xd9, // 1472 + 0x32, 0x8f, 0x8c, 0xe5, 0xf7, 0x77, 0xb0, 0x12, 0x7b, 0xb5, 0x95, 0xc0, 0x89, 0xa3, 0xa9, 0xba, // 1488 + 0xed, 0x73, 0x2e, 0x7a, 0x0c, 0x06, 0x32, 0x83, 0xa2, 0x7e, 0x8a, 0x14, 0x30, 0xcd, 0x11, 0xa0, // 1504 + 0xe1, 0x2a, 0x38, 0xb9, 0x79, 0x0a, 0x31, 0xfd, 0x50, 0xbd, 0x80, 0x65, 0xdf, 0xb7, 0x51, 0x63, // 1520 + 0x83, 0xc8, 0xe2, 0x88, 0x61, 0xea, 0x4b, 0x61, 0x81, 0xec, 0x52, 0x6b, 0xb9, 0xa2, 0xe2, 0x4b, // 1536 + 0x1a, 0x28, 0x9f, 0x48, 0xa3, 0x9e, 0x0c, 0xda, 0x09, 0x8e, 0x3e, 0x17, 0x2e, 0x1e, 0xdd, 0x20, // 1552 + 0xdf, 0x5b, 0xc6, 0x2a, 0x8a, 0xab, 0x2e, 0xbd, 0x70, 0xad, 0xc5, 0x0b, 0x1a, 0x25, 0x90, 0x74, // 1568 + 0x72, 0xc5, 0x7b, 0x6a, 0xab, 0x34, 0xd6, 0x30, 0x89, 0xff, 0xe5, 0x68, 0x13, 0x7b, 0x54, 0x0b, // 1584 + 0xc8, 0xd6, 0xae, 0xec, 0x5a, 0x9c, 0x92, 0x1e, 0x3d, 0x64, 0xb3, 0x8c, 0xc6, 0xdf, 0xbf, 0xc9, // 1600 + 0x41, 0x70, 0xec, 0x16, 0x72, 0xd5, 0x26, 0xec, 0x38, 0x55, 0x39, 0x43, 0xd0, 0xfc, 0xfd, 0x18, // 1616 + 0x5c, 0x40, 0xf1, 0x97, 0xeb, 0xd5, 0x9a, 0x9b, 0x8d, 0x1d, 0xba, 0xda, 0x25, 0xb9, 0xc6, 0xd8, // 1632 + 0xdf, 0xc1, 0x15, 0x02, 0x3a, 0xab, 0xda, 0x6e, 0xf1, 0x3e, 0x2e, 0xf5, 0x5c, 0x08, 0x9c, 0x3c, // 1648 + 0xd6, 0x83, 0x69, 0xe4, 0x10, 0x9b, 0x19, 0x2a, 0xb6, 0x29, 0x57, 0xe3, 0xe5, 0x3d, 0x9b, 0x9f, // 1664 + 0xf0, 0x02, 0x5d, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x48, 0x00, 0x78, 0x30, 0x46, 0x31, 0x0b, // 1680 + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, 0x06, // 1696 + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, // 1712 + 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, // 1728 + 0x13, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, // 1744 + 0x20, 0x45, 0x34, 0x36, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, // 1760 + 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0x9c, 0x0e, 0xb1, 0xcf, // 1776 + 0xb7, 0xe8, 0x9e, 0x52, 0x77, 0x75, 0x34, 0xfa, 0xa5, 0x46, 0xa7, 0xad, 0x32, 0x19, 0x32, 0xb4, // 1792 + 0x07, 0xa9, 0x27, 0xca, 0x94, 0xbb, 0x0c, 0xd2, 0x0a, 0x10, 0xc7, 0xda, 0x89, 0xb0, 0x97, 0x0c, // 1808 + 0x70, 0x13, 0x09, 0x01, 0x8e, 0xd8, 0xea, 0x47, 0xea, 0xbe, 0xb2, 0x80, 0x2b, 0xcd, 0xfc, 0x28, // 1824 + 0x0d, 0xdb, 0xac, 0xbc, 0xa4, 0x86, 0x37, 0xed, 0x70, 0x08, 0x00, 0x75, 0xea, 0x93, 0x0b, 0x7b, // 1840 + 0x2e, 0x52, 0x9c, 0x23, 0x68, 0x23, 0x06, 0x43, 0xec, 0x92, 0x2f, 0x53, 0x84, 0xdb, 0xfb, 0x47, // 1856 + 0x14, 0x07, 0xe8, 0x5f, 0x94, 0x67, 0x5d, 0xc9, 0x7a, 0x81, 0x3c, 0x20, 0x00, 0x48, 0x02, 0x26, // 1872 + 0x30, 0x46, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, // 1888 + 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, // 1904 + 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, // 1920 + 0x55, 0x04, 0x03, 0x13, 0x13, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, // 1936 + 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x34, 0x36, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, // 1952 + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, // 1968 + 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xac, 0xac, 0x74, 0x32, 0xe8, 0xb3, 0x65, // 1984 + 0xe5, 0xba, 0xed, 0x43, 0x26, 0x1d, 0xa6, 0x89, 0x0d, 0x45, 0xba, 0x29, 0x88, 0xb2, 0xa4, 0x1d, // 2000 + 0x63, 0xdd, 0xd3, 0xc1, 0x2c, 0x09, 0x57, 0x89, 0x39, 0xa1, 0x55, 0xe9, 0x67, 0x34, 0x77, 0x0c, // 2016 + 0x6e, 0xe4, 0x55, 0x1d, 0x52, 0x25, 0xd2, 0x13, 0x6b, 0x5e, 0xe1, 0x1d, 0xa9, 0xb7, 0x7d, 0x89, // 2032 + 0x32, 0x5f, 0x0d, 0x9e, 0x9f, 0x2c, 0x7a, 0x63, 0x60, 0x40, 0x1f, 0xa6, 0xb0, 0xb6, 0x78, 0x8f, // 2048 + 0x99, 0x54, 0x96, 0x08, 0x58, 0xae, 0xe4, 0x06, 0xbc, 0x62, 0x05, 0x02, 0x16, 0xbf, 0xaf, 0xa8, // 2064 + 0x23, 0x03, 0xb6, 0x94, 0x0f, 0xbc, 0x6e, 0x6c, 0xc2, 0xcb, 0xd5, 0xa6, 0xbb, 0x0c, 0xe9, 0xf6, // 2080 + 0xc1, 0x02, 0xfb, 0x21, 0xde, 0x66, 0xdd, 0x17, 0xab, 0x74, 0x42, 0xef, 0xf0, 0x74, 0x2f, 0x25, // 2096 + 0xf4, 0xea, 0x6b, 0x55, 0x5b, 0x90, 0xdb, 0x9d, 0xdf, 0x5e, 0x87, 0x0a, 0x40, 0xfb, 0xad, 0x19, // 2112 + 0x6b, 0xfb, 0xf7, 0xca, 0x60, 0x88, 0xde, 0xda, 0xc1, 0x8f, 0xd6, 0xae, 0xd5, 0x7f, 0xd4, 0x3c, // 2128 + 0x83, 0xee, 0xd7, 0x16, 0x4c, 0x83, 0x45, 0x33, 0x6b, 0x27, 0xd0, 0x86, 0xd0, 0x1c, 0x2d, 0x6b, // 2144 + 0xf3, 0xab, 0x7d, 0xf1, 0x85, 0xa9, 0xf5, 0x28, 0xd2, 0xad, 0xef, 0xf3, 0x84, 0x4b, 0x1c, 0x87, // 2160 + 0xfc, 0x13, 0xa3, 0x3a, 0x72, 0xa2, 0x5a, 0x11, 0x2b, 0xd6, 0x27, 0x71, 0x27, 0xed, 0x81, 0x2d, // 2176 + 0x6d, 0x66, 0x81, 0x92, 0x87, 0xb4, 0x1b, 0x58, 0x7a, 0xcc, 0x3f, 0x0a, 0xfa, 0x46, 0x4f, 0x4d, // 2192 + 0x78, 0x5c, 0xf8, 0x2b, 0x48, 0xe3, 0x04, 0x84, 0xcb, 0x5d, 0xf6, 0xb4, 0x6a, 0xb3, 0x65, 0xfc, // 2208 + 0x42, 0x9e, 0x51, 0x26, 0x23, 0x20, 0xcb, 0x3d, 0x14, 0xf9, 0x81, 0xed, 0x65, 0x16, 0x00, 0x4f, // 2224 + 0x1a, 0x64, 0x97, 0x66, 0x08, 0xcf, 0x8c, 0x7b, 0xe3, 0x2b, 0xc0, 0x9d, 0xf9, 0x14, 0xf2, 0x1b, // 2240 + 0xf1, 0x56, 0x6a, 0x16, 0xbf, 0x2c, 0x85, 0x85, 0xcd, 0x78, 0x38, 0x9a, 0xeb, 0x42, 0x6a, 0x02, // 2256 + 0x34, 0x18, 0x83, 0x17, 0x4e, 0x94, 0x56, 0xf8, 0xb6, 0x82, 0xb5, 0xf3, 0x96, 0xdd, 0x3d, 0xf3, // 2272 + 0xbe, 0x7f, 0x20, 0x77, 0x3e, 0x7b, 0x19, 0x23, 0x6b, 0x2c, 0xd4, 0x72, 0x73, 0x43, 0x57, 0x7d, // 2288 + 0xe0, 0xf8, 0xd7, 0x69, 0x4f, 0x17, 0x36, 0x04, 0xf9, 0xc0, 0x90, 0x60, 0x37, 0x45, 0xde, 0xe6, // 2304 + 0x0c, 0xd8, 0x74, 0x8d, 0xae, 0x9c, 0xa2, 0x6d, 0x74, 0x5d, 0x42, 0xbe, 0x06, 0xf5, 0xd9, 0x64, // 2320 + 0x6e, 0x02, 0x10, 0xac, 0x89, 0xb0, 0x4c, 0x3b, 0x07, 0x4d, 0x40, 0x7e, 0x24, 0xc5, 0x8a, 0x98, // 2336 + 0x82, 0x79, 0x8e, 0xa4, 0xa7, 0x82, 0x20, 0x8d, 0x23, 0xfa, 0x27, 0x71, 0xc9, 0xdf, 0xc6, 0x41, // 2352 + 0x74, 0xa0, 0x4d, 0xf6, 0x91, 0x16, 0xdc, 0x46, 0x8c, 0x5f, 0x29, 0x63, 0x31, 0x59, 0x71, 0x0c, // 2368 + 0xd8, 0x6f, 0xc2, 0xb6, 0x32, 0x7d, 0xfb, 0xe6, 0x5d, 0x53, 0xa6, 0x7e, 0x15, 0xfc, 0xbb, 0x75, // 2384 + 0x7c, 0x5d, 0xec, 0xf8, 0xf6, 0x17, 0x1c, 0xec, 0xc7, 0x6b, 0x19, 0xcb, 0xf3, 0x7b, 0xf0, 0x2b, // 2400 + 0x07, 0xa5, 0xd9, 0x6c, 0x79, 0x54, 0x76, 0x6c, 0x9d, 0x1c, 0xa6, 0x6e, 0x0e, 0xe9, 0x79, 0x0c, // 2416 + 0xa8, 0x23, 0x6a, 0xa3, 0xdf, 0x1b, 0x30, 0x31, 0x9f, 0xb1, 0x54, 0x7b, 0xfe, 0x6a, 0xcb, 0x66, // 2432 + 0xaa, 0xdc, 0x65, 0xd0, 0xa2, 0x9e, 0x4a, 0x9a, 0x07, 0x21, 0x6b, 0x81, 0x8f, 0xdb, 0xc4, 0x59, // 2448 + 0xfa, 0xde, 0x22, 0xc0, 0x04, 0x9c, 0xe3, 0xaa, 0x5b, 0x36, 0x93, 0xe8, 0x3d, 0xbd, 0x7a, 0xa1, // 2464 + 0x9d, 0x0b, 0x76, 0xb1, 0x0b, 0xc7, 0x9d, 0xfd, 0xcf, 0x98, 0xa8, 0x06, 0xc2, 0xf8, 0x2a, 0xa3, // 2480 + 0xa1, 0x83, 0xa0, 0xb7, 0x25, 0x72, 0xa5, 0x02, 0xe3, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x49, // 2496 + 0x02, 0x26, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, // 2512 + 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x19, 0x47, 0x6f, 0x6f, 0x67, // 2528 + 0x6c, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, // 2544 + 0x73, 0x20, 0x4c, 0x4c, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0b, // 2560 + 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x31, 0x30, 0x82, 0x02, 0x22, 0x30, // 2576 + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, // 2592 + 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xb6, 0x11, 0x02, 0x8b, // 2608 + 0x1e, 0xe3, 0xa1, 0x77, 0x9b, 0x3b, 0xdc, 0xbf, 0x94, 0x3e, 0xb7, 0x95, 0xa7, 0x40, 0x3c, 0xa1, // 2624 + 0xfd, 0x82, 0xf9, 0x7d, 0x32, 0x06, 0x82, 0x71, 0xf6, 0xf6, 0x8c, 0x7f, 0xfb, 0xe8, 0xdb, 0xbc, // 2640 + 0x6a, 0x2e, 0x97, 0x97, 0xa3, 0x8c, 0x4b, 0xf9, 0x2b, 0xf6, 0xb1, 0xf9, 0xce, 0x84, 0x1d, 0xb1, // 2656 + 0xf9, 0xc5, 0x97, 0xde, 0xef, 0xb9, 0xf2, 0xa3, 0xe9, 0xbc, 0x12, 0x89, 0x5e, 0xa7, 0xaa, 0x52, // 2672 + 0xab, 0xf8, 0x23, 0x27, 0xcb, 0xa4, 0xb1, 0x9c, 0x63, 0xdb, 0xd7, 0x99, 0x7e, 0xf0, 0x0a, 0x5e, // 2688 + 0xeb, 0x68, 0xa6, 0xf4, 0xc6, 0x5a, 0x47, 0x0d, 0x4d, 0x10, 0x33, 0xe3, 0x4e, 0xb1, 0x13, 0xa3, // 2704 + 0xc8, 0x18, 0x6c, 0x4b, 0xec, 0xfc, 0x09, 0x90, 0xdf, 0x9d, 0x64, 0x29, 0x25, 0x23, 0x07, 0xa1, // 2720 + 0xb4, 0xd2, 0x3d, 0x2e, 0x60, 0xe0, 0xcf, 0xd2, 0x09, 0x87, 0xbb, 0xcd, 0x48, 0xf0, 0x4d, 0xc2, // 2736 + 0xc2, 0x7a, 0x88, 0x8a, 0xbb, 0xba, 0xcf, 0x59, 0x19, 0xd6, 0xaf, 0x8f, 0xb0, 0x07, 0xb0, 0x9e, // 2752 + 0x31, 0xf1, 0x82, 0xc1, 0xc0, 0xdf, 0x2e, 0xa6, 0x6d, 0x6c, 0x19, 0x0e, 0xb5, 0xd8, 0x7e, 0x26, // 2768 + 0x1a, 0x45, 0x03, 0x3d, 0xb0, 0x79, 0xa4, 0x94, 0x28, 0xad, 0x0f, 0x7f, 0x26, 0xe5, 0xa8, 0x08, // 2784 + 0xfe, 0x96, 0xe8, 0x3c, 0x68, 0x94, 0x53, 0xee, 0x83, 0x3a, 0x88, 0x2b, 0x15, 0x96, 0x09, 0xb2, // 2800 + 0xe0, 0x7a, 0x8c, 0x2e, 0x75, 0xd6, 0x9c, 0xeb, 0xa7, 0x56, 0x64, 0x8f, 0x96, 0x4f, 0x68, 0xae, // 2816 + 0x3d, 0x97, 0xc2, 0x84, 0x8f, 0xc0, 0xbc, 0x40, 0xc0, 0x0b, 0x5c, 0xbd, 0xf6, 0x87, 0xb3, 0x35, // 2832 + 0x6c, 0xac, 0x18, 0x50, 0x7f, 0x84, 0xe0, 0x4c, 0xcd, 0x92, 0xd3, 0x20, 0xe9, 0x33, 0xbc, 0x52, // 2848 + 0x99, 0xaf, 0x32, 0xb5, 0x29, 0xb3, 0x25, 0x2a, 0xb4, 0x48, 0xf9, 0x72, 0xe1, 0xca, 0x64, 0xf7, // 2864 + 0xe6, 0x82, 0x10, 0x8d, 0xe8, 0x9d, 0xc2, 0x8a, 0x88, 0xfa, 0x38, 0x66, 0x8a, 0xfc, 0x63, 0xf9, // 2880 + 0x01, 0xf9, 0x78, 0xfd, 0x7b, 0x5c, 0x77, 0xfa, 0x76, 0x87, 0xfa, 0xec, 0xdf, 0xb1, 0x0e, 0x79, // 2896 + 0x95, 0x57, 0xb4, 0xbd, 0x26, 0xef, 0xd6, 0x01, 0xd1, 0xeb, 0x16, 0x0a, 0xbb, 0x8e, 0x0b, 0xb5, // 2912 + 0xc5, 0xc5, 0x8a, 0x55, 0xab, 0xd3, 0xac, 0xea, 0x91, 0x4b, 0x29, 0xcc, 0x19, 0xa4, 0x32, 0x25, // 2928 + 0x4e, 0x2a, 0xf1, 0x65, 0x44, 0xd0, 0x02, 0xce, 0xaa, 0xce, 0x49, 0xb4, 0xea, 0x9f, 0x7c, 0x83, // 2944 + 0xb0, 0x40, 0x7b, 0xe7, 0x43, 0xab, 0xa7, 0x6c, 0xa3, 0x8f, 0x7d, 0x89, 0x81, 0xfa, 0x4c, 0xa5, // 2960 + 0xff, 0xd5, 0x8e, 0xc3, 0xce, 0x4b, 0xe0, 0xb5, 0xd8, 0xb3, 0x8e, 0x45, 0xcf, 0x76, 0xc0, 0xed, // 2976 + 0x40, 0x2b, 0xfd, 0x53, 0x0f, 0xb0, 0xa7, 0xd5, 0x3b, 0x0d, 0xb1, 0x8a, 0xa2, 0x03, 0xde, 0x31, // 2992 + 0xad, 0xcc, 0x77, 0xea, 0x6f, 0x7b, 0x3e, 0xd6, 0xdf, 0x91, 0x22, 0x12, 0xe6, 0xbe, 0xfa, 0xd8, // 3008 + 0x32, 0xfc, 0x10, 0x63, 0x14, 0x51, 0x72, 0xde, 0x5d, 0xd6, 0x16, 0x93, 0xbd, 0x29, 0x68, 0x33, // 3024 + 0xef, 0x3a, 0x66, 0xec, 0x07, 0x8a, 0x26, 0xdf, 0x13, 0xd7, 0x57, 0x65, 0x78, 0x27, 0xde, 0x5e, // 3040 + 0x49, 0x14, 0x00, 0xa2, 0x00, 0x7f, 0x9a, 0xa8, 0x21, 0xb6, 0xa9, 0xb1, 0x95, 0xb0, 0xa5, 0xb9, // 3056 + 0x0d, 0x16, 0x11, 0xda, 0xc7, 0x6c, 0x48, 0x3c, 0x40, 0xe0, 0x7e, 0x0d, 0x5a, 0xcd, 0x56, 0x3c, // 3072 + 0xd1, 0x97, 0x05, 0xb9, 0xcb, 0x4b, 0xed, 0x39, 0x4b, 0x9c, 0xc4, 0x3f, 0xd2, 0x55, 0x13, 0x6e, // 3088 + 0x24, 0xb0, 0xd6, 0x71, 0xfa, 0xf4, 0xc1, 0xba, 0xcc, 0xed, 0x1b, 0xf5, 0xfe, 0x81, 0x41, 0xd8, // 3104 + 0x00, 0x98, 0x3d, 0x3a, 0xc8, 0xae, 0x7a, 0x98, 0x37, 0x18, 0x05, 0x95, 0x02, 0x03, 0x01, 0x00, // 3120 + 0x01, 0x00, 0x49, 0x02, 0x26, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, // 3136 + 0x13, 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x19, 0x47, // 3152 + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, // 3168 + 0x69, 0x63, 0x65, 0x73, 0x20, 0x4c, 0x4c, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, // 3184 + 0x03, 0x13, 0x0b, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x32, 0x30, 0x82, // 3200 + 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, // 3216 + 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xce, // 3232 + 0xde, 0xfd, 0xa6, 0xfb, 0xec, 0xec, 0x14, 0x34, 0x3c, 0x07, 0x06, 0x5a, 0x6c, 0x59, 0xf7, 0x19, // 3248 + 0x35, 0xdd, 0xf7, 0xc1, 0x9d, 0x55, 0xaa, 0xd3, 0xcd, 0x3b, 0xa4, 0x93, 0x72, 0xef, 0x0a, 0xfa, // 3264 + 0x6d, 0x9d, 0xf6, 0xf0, 0x85, 0x80, 0x5b, 0xa1, 0x48, 0x52, 0x9f, 0x39, 0xc5, 0xb7, 0xee, 0x28, // 3280 + 0xac, 0xef, 0xcb, 0x76, 0x68, 0x14, 0xb9, 0xdf, 0xad, 0x01, 0x6c, 0x99, 0x1f, 0xc4, 0x22, 0x1d, // 3296 + 0x9f, 0xfe, 0x72, 0x77, 0xe0, 0x2c, 0x5b, 0xaf, 0xe4, 0x04, 0xbf, 0x4f, 0x72, 0xa0, 0x1a, 0x34, // 3312 + 0x98, 0xe8, 0x39, 0x68, 0xec, 0x95, 0x25, 0x7b, 0x76, 0xa1, 0xe6, 0x69, 0xb9, 0x85, 0x19, 0xbd, // 3328 + 0x89, 0x8c, 0xfe, 0xad, 0xed, 0x36, 0xea, 0x73, 0xbc, 0xff, 0x83, 0xe2, 0xcb, 0x7d, 0xc1, 0xd2, // 3344 + 0xce, 0x4a, 0xb3, 0x8d, 0x05, 0x9e, 0x8b, 0x49, 0x93, 0xdf, 0xc1, 0x5b, 0xd0, 0x6e, 0x5e, 0xf0, // 3360 + 0x2e, 0x30, 0x2e, 0x82, 0xfc, 0xfa, 0xbc, 0xb4, 0x17, 0x0a, 0x48, 0xe5, 0x88, 0x9b, 0xc5, 0x9b, // 3376 + 0x6b, 0xde, 0xb0, 0xca, 0xb4, 0x03, 0xf0, 0xda, 0xf4, 0x90, 0xb8, 0x65, 0x64, 0xf7, 0x5c, 0x4c, // 3392 + 0xad, 0xe8, 0x7e, 0x66, 0x5e, 0x99, 0xd7, 0xb8, 0xc2, 0x3e, 0xc8, 0xd0, 0x13, 0x9d, 0xad, 0xee, // 3408 + 0xe4, 0x45, 0x7b, 0x89, 0x55, 0xf7, 0x8a, 0x1f, 0x62, 0x52, 0x84, 0x12, 0xb3, 0xc2, 0x40, 0x97, // 3424 + 0xe3, 0x8a, 0x1f, 0x47, 0x91, 0xa6, 0x74, 0x5a, 0xd2, 0xf8, 0xb1, 0x63, 0x28, 0x10, 0xb8, 0xb3, // 3440 + 0x09, 0xb8, 0x56, 0x77, 0x40, 0xa2, 0x26, 0x98, 0x79, 0xc6, 0xfe, 0xdf, 0x25, 0xee, 0x3e, 0xe5, // 3456 + 0xa0, 0x7f, 0xd4, 0x61, 0x0f, 0x51, 0x4b, 0x3c, 0x3f, 0x8c, 0xda, 0xe1, 0x70, 0x74, 0xd8, 0xc2, // 3472 + 0x68, 0xa1, 0xf9, 0xc1, 0x0c, 0xe9, 0xa1, 0xe2, 0x7f, 0xbb, 0x55, 0x3c, 0x76, 0x06, 0xee, 0x6a, // 3488 + 0x4e, 0xcc, 0x92, 0x88, 0x30, 0x4d, 0x9a, 0xbd, 0x4f, 0x0b, 0x48, 0x9a, 0x84, 0xb5, 0x98, 0xa3, // 3504 + 0xd5, 0xfb, 0x73, 0xc1, 0x57, 0x61, 0xdd, 0x28, 0x56, 0x75, 0x13, 0xae, 0x87, 0x8e, 0xe7, 0x0c, // 3520 + 0x51, 0x09, 0x10, 0x75, 0x88, 0x4c, 0xbc, 0x8d, 0xf9, 0x7b, 0x3c, 0xd4, 0x22, 0x48, 0x1f, 0x2a, // 3536 + 0xdc, 0xeb, 0x6b, 0xbb, 0x44, 0xb1, 0xcb, 0x33, 0x71, 0x32, 0x46, 0xaf, 0xad, 0x4a, 0xf1, 0x8c, // 3552 + 0xe8, 0x74, 0x3a, 0xac, 0xe7, 0x1a, 0x22, 0x73, 0x80, 0xd2, 0x30, 0xf7, 0x25, 0x42, 0xc7, 0x22, // 3568 + 0x3b, 0x3b, 0x12, 0xad, 0x96, 0x2e, 0xc6, 0xc3, 0x76, 0x07, 0xaa, 0x20, 0xb7, 0x35, 0x49, 0x57, // 3584 + 0xe9, 0x92, 0x49, 0xe8, 0x76, 0x16, 0x72, 0x31, 0x67, 0x2b, 0x96, 0x7e, 0x8a, 0xa3, 0xc7, 0x94, // 3600 + 0x56, 0x22, 0xbf, 0x6a, 0x4b, 0x7e, 0x01, 0x21, 0xb2, 0x23, 0x32, 0xdf, 0xe4, 0x9a, 0x44, 0x6d, // 3616 + 0x59, 0x5b, 0x5d, 0xf5, 0x00, 0xa0, 0x1c, 0x9b, 0xc6, 0x78, 0x97, 0x8d, 0x90, 0xff, 0x9b, 0xc8, // 3632 + 0xaa, 0xb4, 0xaf, 0x11, 0x51, 0x39, 0x5e, 0xd9, 0xfb, 0x67, 0xad, 0xd5, 0x5b, 0x11, 0x9d, 0x32, // 3648 + 0x9a, 0x1b, 0xbd, 0xd5, 0xba, 0x5b, 0xa5, 0xc9, 0xcb, 0x25, 0x69, 0x53, 0x55, 0x27, 0x5c, 0xe0, // 3664 + 0xca, 0x36, 0xcb, 0x88, 0x61, 0xfb, 0x1e, 0xb7, 0xd0, 0xcb, 0xee, 0x16, 0xfb, 0xd3, 0xa6, 0x4c, // 3680 + 0xde, 0x92, 0xa5, 0xd4, 0xe2, 0xdf, 0xf5, 0x06, 0x54, 0xde, 0x2e, 0x9d, 0x4b, 0xb4, 0x93, 0x30, // 3696 + 0xaa, 0x81, 0xce, 0xdd, 0x1a, 0xdc, 0x51, 0x73, 0x0d, 0x4f, 0x70, 0xe9, 0xe5, 0xb6, 0x16, 0x21, // 3712 + 0x19, 0x79, 0xb2, 0xe6, 0x89, 0x0b, 0x75, 0x64, 0xca, 0xd5, 0xab, 0xbc, 0x09, 0xc1, 0x18, 0xa1, // 3728 + 0xff, 0xd4, 0x54, 0xa1, 0x85, 0x3c, 0xfd, 0x14, 0x24, 0x03, 0xb2, 0x87, 0xd3, 0xa4, 0xb7, 0x02, // 3744 + 0x03, 0x01, 0x00, 0x01, 0x00, 0x49, 0x00, 0x78, 0x30, 0x47, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, // 3760 + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, 0x0a, // 3776 + 0x13, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, // 3792 + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x4c, 0x4c, 0x43, 0x31, 0x14, 0x30, 0x12, 0x06, // 3808 + 0x03, 0x55, 0x04, 0x03, 0x13, 0x0b, 0x47, 0x54, 0x53, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x52, // 3824 + 0x33, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, // 3840 + 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0x1f, 0x4f, 0x33, 0x87, 0x33, 0x29, 0x8a, // 3856 + 0xa1, 0x84, 0xde, 0xcb, 0xc7, 0x21, 0x58, 0x41, 0x89, 0xea, 0x56, 0x9d, 0x2b, 0x4b, 0x85, 0xc6, // 3872 + 0x1d, 0x4c, 0x27, 0xbc, 0x7f, 0x26, 0x51, 0x72, 0x6f, 0xe2, 0x9f, 0xd6, 0xa3, 0xca, 0xcc, 0x45, // 3888 + 0x14, 0x46, 0x8b, 0xad, 0xef, 0x7e, 0x86, 0x8c, 0xec, 0xb1, 0x7e, 0x2f, 0xff, 0xa9, 0x71, 0x9d, // 3904 + 0x18, 0x84, 0x45, 0x04, 0x41, 0x55, 0x6e, 0x2b, 0xea, 0x26, 0x7f, 0xbb, 0x90, 0x01, 0xe3, 0x4b, // 3920 + 0x19, 0xba, 0xe4, 0x54, 0x96, 0x45, 0x09, 0xb1, 0xd5, 0x6c, 0x91, 0x44, 0xad, 0x84, 0x13, 0x8e, // 3936 + 0x9a, 0x8c, 0x0d, 0x80, 0x0c, 0x32, 0xf6, 0xe0, 0x27, 0x00, 0x49, 0x00, 0x78, 0x30, 0x47, 0x31, // 3952 + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x22, 0x30, 0x20, // 3968 + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x19, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x20, 0x54, 0x72, // 3984 + 0x75, 0x73, 0x74, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x4c, 0x4c, 0x43, // 4000 + 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0b, 0x47, 0x54, 0x53, 0x20, 0x52, // 4016 + 0x6f, 0x6f, 0x74, 0x20, 0x52, 0x34, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, // 4032 + 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0xf3, 0x74, // 4048 + 0x73, 0xa7, 0x68, 0x8b, 0x60, 0xae, 0x43, 0xb8, 0x35, 0xc5, 0x81, 0x30, 0x7b, 0x4b, 0x49, 0x9d, // 4064 + 0xfb, 0xc1, 0x61, 0xce, 0xe6, 0xde, 0x46, 0xbd, 0x6b, 0xd5, 0x61, 0x18, 0x35, 0xae, 0x40, 0xdd, // 4080 + 0x73, 0xf7, 0x89, 0x91, 0x30, 0x5a, 0xeb, 0x3c, 0xee, 0x85, 0x7c, 0xa2, 0x40, 0x76, 0x3b, 0xa9, // 4096 + 0xc6, 0xb8, 0x47, 0xd8, 0x2a, 0xe7, 0x92, 0x91, 0x6a, 0x73, 0xe9, 0xb1, 0x72, 0x39, 0x9f, 0x29, // 4112 + 0x9f, 0xa2, 0x98, 0xd3, 0x5f, 0x5e, 0x58, 0x86, 0x65, 0x0f, 0xa1, 0x84, 0x65, 0x06, 0xd1, 0xdc, // 4128 + 0x8b, 0xc9, 0xc7, 0x73, 0xc8, 0x8c, 0x6a, 0x2f, 0xe5, 0xc4, 0xab, 0xd1, 0x1d, 0x8a, 0x00, 0x4c, // 4144 + 0x02, 0x26, 0x30, 0x4a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, // 4160 + 0x53, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x49, 0x64, 0x65, 0x6e, // 4176 + 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, // 4192 + 0x49, 0x64, 0x65, 0x6e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x72, // 4208 + 0x63, 0x69, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x30, 0x82, // 4224 + 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, // 4240 + 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xa7, // 4256 + 0x50, 0x19, 0xde, 0x3f, 0x99, 0x3d, 0xd4, 0x33, 0x46, 0xf1, 0x6f, 0x51, 0x61, 0x82, 0xb2, 0xa9, // 4272 + 0x4f, 0x8f, 0x67, 0x89, 0x5d, 0x84, 0xd9, 0x53, 0xdd, 0x0c, 0x28, 0xd9, 0xd7, 0xf0, 0xff, 0xae, // 4288 + 0x95, 0x43, 0x72, 0x99, 0xf9, 0xb5, 0x5d, 0x7c, 0x8a, 0xc1, 0x42, 0xe1, 0x31, 0x50, 0x74, 0xd1, // 4304 + 0x81, 0x0d, 0x7c, 0xcd, 0x9b, 0x21, 0xab, 0x43, 0xe2, 0xac, 0xad, 0x5e, 0x86, 0x6e, 0xf3, 0x09, // 4320 + 0x8a, 0x1f, 0x5a, 0x32, 0xbd, 0xa2, 0xeb, 0x94, 0xf9, 0xe8, 0x5c, 0x0a, 0xec, 0xff, 0x98, 0xd2, // 4336 + 0xaf, 0x71, 0xb3, 0xb4, 0x53, 0x9f, 0x4e, 0x87, 0xef, 0x92, 0xbc, 0xbd, 0xec, 0x4f, 0x32, 0x30, // 4352 + 0x88, 0x4b, 0x17, 0x5e, 0x57, 0xc4, 0x53, 0xc2, 0xf6, 0x02, 0x97, 0x8d, 0xd9, 0x62, 0x2b, 0xbf, // 4368 + 0x24, 0x1f, 0x62, 0x8d, 0xdf, 0xc3, 0xb8, 0x29, 0x4b, 0x49, 0x78, 0x3c, 0x93, 0x60, 0x88, 0x22, // 4384 + 0xfc, 0x99, 0xda, 0x36, 0xc8, 0xc2, 0xa2, 0xd4, 0x2c, 0x54, 0x00, 0x67, 0x35, 0x6e, 0x73, 0xbf, // 4400 + 0x02, 0x58, 0xf0, 0xa4, 0xdd, 0xe5, 0xb0, 0xa2, 0x26, 0x7a, 0xca, 0xe0, 0x36, 0xa5, 0x19, 0x16, // 4416 + 0xf5, 0xfd, 0xb7, 0xef, 0xae, 0x3f, 0x40, 0xf5, 0x6d, 0x5a, 0x04, 0xfd, 0xce, 0x34, 0xca, 0x24, // 4432 + 0xdc, 0x74, 0x23, 0x1b, 0x5d, 0x33, 0x13, 0x12, 0x5d, 0xc4, 0x01, 0x25, 0xf6, 0x30, 0xdd, 0x02, // 4448 + 0x5d, 0x9f, 0xe0, 0xd5, 0x47, 0xbd, 0xb4, 0xeb, 0x1b, 0xa1, 0xbb, 0x49, 0x49, 0xd8, 0x9f, 0x5b, // 4464 + 0x02, 0xf3, 0x8a, 0xe4, 0x24, 0x90, 0xe4, 0x62, 0x4f, 0x4f, 0xc1, 0xaf, 0x8b, 0x0e, 0x74, 0x17, // 4480 + 0xa8, 0xd1, 0x72, 0x88, 0x6a, 0x7a, 0x01, 0x49, 0xcc, 0xb4, 0x46, 0x79, 0xc6, 0x17, 0xb1, 0xda, // 4496 + 0x98, 0x1e, 0x07, 0x59, 0xfa, 0x75, 0x21, 0x85, 0x65, 0xdd, 0x90, 0x56, 0xce, 0xfb, 0xab, 0xa5, // 4512 + 0x60, 0x9d, 0xc4, 0x9d, 0xf9, 0x52, 0xb0, 0x8b, 0xbd, 0x87, 0xf9, 0x8f, 0x2b, 0x23, 0x0a, 0x23, // 4528 + 0x76, 0x3b, 0xf7, 0x33, 0xe1, 0xc9, 0x00, 0xf3, 0x69, 0xf9, 0x4b, 0xa2, 0xe0, 0x4e, 0xbc, 0x7e, // 4544 + 0x93, 0x39, 0x84, 0x07, 0xf7, 0x44, 0x70, 0x7e, 0xfe, 0x07, 0x5a, 0xe5, 0xb1, 0xac, 0xd1, 0x18, // 4560 + 0xcc, 0xf2, 0x35, 0xe5, 0x49, 0x49, 0x08, 0xca, 0x56, 0xc9, 0x3d, 0xfb, 0x0f, 0x18, 0x7d, 0x8b, // 4576 + 0x3b, 0xc1, 0x13, 0xc2, 0x4d, 0x8f, 0xc9, 0x4f, 0x0e, 0x37, 0xe9, 0x1f, 0xa1, 0x0e, 0x6a, 0xdf, // 4592 + 0x62, 0x2e, 0xcb, 0x35, 0x06, 0x51, 0x79, 0x2c, 0xc8, 0x25, 0x38, 0xf4, 0xfa, 0x4b, 0xa7, 0x89, // 4608 + 0x5c, 0x9c, 0xd2, 0xe3, 0x0d, 0x39, 0x86, 0x4a, 0x74, 0x7c, 0xd5, 0x59, 0x87, 0xc2, 0x3f, 0x4e, // 4624 + 0x0c, 0x5c, 0x52, 0xf4, 0x3d, 0xf7, 0x52, 0x82, 0xf1, 0xea, 0xa3, 0xac, 0xfd, 0x49, 0x34, 0x1a, // 4640 + 0x28, 0xf3, 0x41, 0x88, 0x3a, 0x13, 0xee, 0xe8, 0xde, 0xff, 0x99, 0x1d, 0x5f, 0xba, 0xcb, 0xe8, // 4656 + 0x1e, 0xf2, 0xb9, 0x50, 0x60, 0xc0, 0x31, 0xd3, 0x73, 0xe5, 0xef, 0xbe, 0xa0, 0xed, 0x33, 0x0b, // 4672 + 0x74, 0xbe, 0x20, 0x20, 0xc4, 0x67, 0x6c, 0xf0, 0x08, 0x03, 0x7a, 0x55, 0x80, 0x7f, 0x46, 0x4e, // 4688 + 0x96, 0xa7, 0xf4, 0x1e, 0x3e, 0xe1, 0xf6, 0xd8, 0x09, 0xe1, 0x33, 0x64, 0x2b, 0x63, 0xd7, 0x32, // 4704 + 0x5e, 0x9f, 0xf9, 0xc0, 0x7b, 0x0f, 0x78, 0x6f, 0x97, 0xbc, 0x93, 0x9a, 0xf9, 0x9c, 0x12, 0x90, // 4720 + 0x78, 0x7a, 0x80, 0x87, 0x15, 0xd7, 0x72, 0x74, 0x9c, 0x55, 0x74, 0x78, 0xb1, 0xba, 0xe1, 0x6e, // 4736 + 0x70, 0x04, 0xba, 0x4f, 0xa0, 0xba, 0x68, 0xc3, 0x7b, 0xff, 0x31, 0xf0, 0x73, 0x3d, 0x3d, 0x94, // 4752 + 0x2a, 0xb1, 0x0b, 0x41, 0x0e, 0xa0, 0xfe, 0x4d, 0x88, 0x65, 0x6b, 0x79, 0x33, 0xb4, 0xd7, 0x02, // 4768 + 0x03, 0x01, 0x00, 0x01, 0x00, 0x4e, 0x01, 0x26, 0x30, 0x4c, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, // 4784 + 0x55, 0x04, 0x0b, 0x13, 0x17, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, // 4800 + 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d, 0x20, 0x52, 0x33, 0x31, 0x13, 0x30, 0x11, // 4816 + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, // 4832 + 0x6e, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0a, 0x47, 0x6c, 0x6f, 0x62, // 4848 + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, // 4864 + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, // 4880 + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xcc, 0x25, 0x76, 0x90, 0x79, 0x06, 0x78, 0x22, 0x16, // 4896 + 0xf5, 0xc0, 0x83, 0xb6, 0x84, 0xca, 0x28, 0x9e, 0xfd, 0x05, 0x76, 0x11, 0xc5, 0xad, 0x88, 0x72, // 4912 + 0xfc, 0x46, 0x02, 0x43, 0xc7, 0xb2, 0x8a, 0x9d, 0x04, 0x5f, 0x24, 0xcb, 0x2e, 0x4b, 0xe1, 0x60, // 4928 + 0x82, 0x46, 0xe1, 0x52, 0xab, 0x0c, 0x81, 0x47, 0x70, 0x6c, 0xdd, 0x64, 0xd1, 0xeb, 0xf5, 0x2c, // 4944 + 0xa3, 0x0f, 0x82, 0x3d, 0x0c, 0x2b, 0xae, 0x97, 0xd7, 0xb6, 0x14, 0x86, 0x10, 0x79, 0xbb, 0x3b, // 4960 + 0x13, 0x80, 0x77, 0x8c, 0x08, 0xe1, 0x49, 0xd2, 0x6a, 0x62, 0x2f, 0x1f, 0x5e, 0xfa, 0x96, 0x68, // 4976 + 0xdf, 0x89, 0x27, 0x95, 0x38, 0x9f, 0x06, 0xd7, 0x3e, 0xc9, 0xcb, 0x26, 0x59, 0x0d, 0x73, 0xde, // 4992 + 0xb0, 0xc8, 0xe9, 0x26, 0x0e, 0x83, 0x15, 0xc6, 0xef, 0x5b, 0x8b, 0xd2, 0x04, 0x60, 0xca, 0x49, // 5008 + 0xa6, 0x28, 0xf6, 0x69, 0x3b, 0xf6, 0xcb, 0xc8, 0x28, 0x91, 0xe5, 0x9d, 0x8a, 0x61, 0x57, 0x37, // 5024 + 0xac, 0x74, 0x14, 0xdc, 0x74, 0xe0, 0x3a, 0xee, 0x72, 0x2f, 0x2e, 0x9c, 0xfb, 0xd0, 0xbb, 0xbf, // 5040 + 0xf5, 0x3d, 0x00, 0xe1, 0x06, 0x33, 0xe8, 0x82, 0x2b, 0xae, 0x53, 0xa6, 0x3a, 0x16, 0x73, 0x8c, // 5056 + 0xdd, 0x41, 0x0e, 0x20, 0x3a, 0xc0, 0xb4, 0xa7, 0xa1, 0xe9, 0xb2, 0x4f, 0x90, 0x2e, 0x32, 0x60, // 5072 + 0xe9, 0x57, 0xcb, 0xb9, 0x04, 0x92, 0x68, 0x68, 0xe5, 0x38, 0x26, 0x60, 0x75, 0xb2, 0x9f, 0x77, // 5088 + 0xff, 0x91, 0x14, 0xef, 0xae, 0x20, 0x49, 0xfc, 0xad, 0x40, 0x15, 0x48, 0xd1, 0x02, 0x31, 0x61, // 5104 + 0x19, 0x5e, 0xb8, 0x97, 0xef, 0xad, 0x77, 0xb7, 0x64, 0x9a, 0x7a, 0xbf, 0x5f, 0xc1, 0x13, 0xef, // 5120 + 0x9b, 0x62, 0xfb, 0x0d, 0x6c, 0xe0, 0x54, 0x69, 0x16, 0xa9, 0x03, 0xda, 0x6e, 0xe9, 0x83, 0x93, // 5136 + 0x71, 0x76, 0xc6, 0x69, 0x85, 0x82, 0x17, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x4e, 0x02, 0x26, // 5152 + 0x30, 0x4c, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x17, 0x47, 0x6c, 0x6f, // 5168 + 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, // 5184 + 0x2d, 0x20, 0x52, 0x36, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0a, 0x47, // 5200 + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, // 5216 + 0x04, 0x03, 0x13, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x30, 0x82, // 5232 + 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, // 5248 + 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0x95, // 5264 + 0x07, 0xe8, 0x73, 0xca, 0x66, 0xf9, 0xec, 0x14, 0xca, 0x7b, 0x3c, 0xf7, 0x0d, 0x08, 0xf1, 0xb4, // 5280 + 0x45, 0x0b, 0x2c, 0x82, 0xb4, 0x48, 0xc6, 0xeb, 0x5b, 0x3c, 0xae, 0x83, 0xb8, 0x41, 0x92, 0x33, // 5296 + 0x14, 0xa4, 0x6f, 0x7f, 0xe9, 0x2a, 0xcc, 0xc6, 0xb0, 0x88, 0x6b, 0xc5, 0xb6, 0x89, 0xd1, 0xc6, // 5312 + 0xb2, 0xff, 0x14, 0xce, 0x51, 0x14, 0x21, 0xec, 0x4a, 0xdd, 0x1b, 0x5a, 0xc6, 0xd6, 0x87, 0xee, // 5328 + 0x4d, 0x3a, 0x15, 0x06, 0xed, 0x64, 0x66, 0x0b, 0x92, 0x80, 0xca, 0x44, 0xde, 0x73, 0x94, 0x4e, // 5344 + 0xf3, 0xa7, 0x89, 0x7f, 0x4f, 0x78, 0x63, 0x08, 0xc8, 0x12, 0x50, 0x6d, 0x42, 0x66, 0x2f, 0x4d, // 5360 + 0xb9, 0x79, 0x28, 0x4d, 0x52, 0x1a, 0x8a, 0x1a, 0x80, 0xb7, 0x19, 0x81, 0x0e, 0x7e, 0xc4, 0x8a, // 5376 + 0xbc, 0x64, 0x4c, 0x21, 0x1c, 0x43, 0x68, 0xd7, 0x3d, 0x3c, 0x8a, 0xc5, 0xb2, 0x66, 0xd5, 0x90, // 5392 + 0x9a, 0xb7, 0x31, 0x06, 0xc5, 0xbe, 0xe2, 0x6d, 0x32, 0x06, 0xa6, 0x1e, 0xf9, 0xb9, 0xeb, 0xaa, // 5408 + 0xa3, 0xb8, 0xbf, 0xbe, 0x82, 0x63, 0x50, 0xd0, 0xf0, 0x18, 0x89, 0xdf, 0xe4, 0x0f, 0x79, 0xf5, // 5424 + 0xea, 0xa2, 0x1f, 0x2a, 0xd2, 0x70, 0x2e, 0x7b, 0xe7, 0xbc, 0x93, 0xbb, 0x6d, 0x53, 0xe2, 0x48, // 5440 + 0x7c, 0x8c, 0x10, 0x07, 0x38, 0xff, 0x66, 0xb2, 0x77, 0x61, 0x7e, 0xe0, 0xea, 0x8c, 0x3c, 0xaa, // 5456 + 0xb4, 0xa4, 0xf6, 0xf3, 0x95, 0x4a, 0x12, 0x07, 0x6d, 0xfd, 0x8c, 0xb2, 0x89, 0xcf, 0xd0, 0xa0, // 5472 + 0x61, 0x77, 0xc8, 0x58, 0x74, 0xb0, 0xd4, 0x23, 0x3a, 0xf7, 0x5d, 0x3a, 0xca, 0xa2, 0xdb, 0x9d, // 5488 + 0x09, 0xde, 0x5d, 0x44, 0x2d, 0x90, 0xf1, 0x81, 0xcd, 0x57, 0x92, 0xfa, 0x7e, 0xbc, 0x50, 0x04, // 5504 + 0x63, 0x34, 0xdf, 0x6b, 0x93, 0x18, 0xbe, 0x6b, 0x36, 0xb2, 0x39, 0xe4, 0xac, 0x24, 0x36, 0xb7, // 5520 + 0xf0, 0xef, 0xb6, 0x1c, 0x13, 0x57, 0x93, 0xb6, 0xde, 0xb2, 0xf8, 0xe2, 0x85, 0xb7, 0x73, 0xa2, // 5536 + 0xb8, 0x35, 0xaa, 0x45, 0xf2, 0xe0, 0x9d, 0x36, 0xa1, 0x6f, 0x54, 0x8a, 0xf1, 0x72, 0x56, 0x6e, // 5552 + 0x2e, 0x88, 0xc5, 0x51, 0x42, 0x44, 0x15, 0x94, 0xee, 0xa3, 0xc5, 0x38, 0x96, 0x9b, 0x4e, 0x4e, // 5568 + 0x5a, 0x0b, 0x47, 0xf3, 0x06, 0x36, 0x49, 0x77, 0x30, 0xbc, 0x71, 0x37, 0xe5, 0xa6, 0xec, 0x21, // 5584 + 0x08, 0x75, 0xfc, 0xe6, 0x61, 0x16, 0x3f, 0x77, 0xd5, 0xd9, 0x91, 0x97, 0x84, 0x0a, 0x6c, 0xd4, // 5600 + 0x02, 0x4d, 0x74, 0xc0, 0x14, 0xed, 0xfd, 0x39, 0xfb, 0x83, 0xf2, 0x5e, 0x14, 0xa1, 0x04, 0xb0, // 5616 + 0x0b, 0xe9, 0xfe, 0xee, 0x8f, 0xe1, 0x6e, 0x0b, 0xb2, 0x08, 0xb3, 0x61, 0x66, 0x09, 0x6a, 0xb1, // 5632 + 0x06, 0x3a, 0x65, 0x96, 0x59, 0xc0, 0xf0, 0x35, 0xfd, 0xc9, 0xda, 0x28, 0x8d, 0x1a, 0x11, 0x87, // 5648 + 0x70, 0x81, 0x0a, 0xa8, 0x9a, 0x75, 0x1d, 0x9e, 0x3a, 0x86, 0x05, 0x00, 0x9e, 0xdb, 0x80, 0xd6, // 5664 + 0x25, 0xf9, 0xdc, 0x05, 0x9e, 0x27, 0x59, 0x4c, 0x76, 0x39, 0x5b, 0xea, 0xf9, 0xa5, 0xa1, 0xd8, // 5680 + 0x83, 0x0f, 0xd1, 0xff, 0xdf, 0x30, 0x11, 0xf9, 0x85, 0xcf, 0x33, 0x48, 0xf5, 0xca, 0x6d, 0x64, // 5696 + 0x14, 0x2c, 0x7a, 0x58, 0x4f, 0xd3, 0x4b, 0x08, 0x49, 0xc5, 0x95, 0x64, 0x1a, 0x63, 0x0e, 0x79, // 5712 + 0x3d, 0xf5, 0xb3, 0x8c, 0xca, 0x58, 0xad, 0x9c, 0x42, 0x45, 0x79, 0x6e, 0x0e, 0x87, 0x19, 0x5c, // 5728 + 0x54, 0xb1, 0x65, 0xb6, 0xbf, 0x8c, 0x9b, 0xdc, 0x13, 0xe9, 0x0d, 0x6f, 0xb8, 0x2e, 0xdc, 0x67, // 5744 + 0x6e, 0xc9, 0x8b, 0x11, 0xb5, 0x84, 0x14, 0x8a, 0x00, 0x19, 0x70, 0x83, 0x79, 0x91, 0x97, 0x91, // 5760 + 0xd4, 0x1a, 0x27, 0xbf, 0x37, 0x1e, 0x32, 0x07, 0xd8, 0x14, 0x63, 0x3c, 0x28, 0x4c, 0xaf, 0x02, // 5776 + 0x03, 0x01, 0x00, 0x01, 0x00, 0x4f, 0x02, 0x26, 0x30, 0x4d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, // 5792 + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, // 5808 + 0x13, 0x09, 0x49, 0x64, 0x65, 0x6e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x2a, 0x30, 0x28, 0x06, // 5824 + 0x03, 0x55, 0x04, 0x03, 0x13, 0x21, 0x49, 0x64, 0x65, 0x6e, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, // 5840 + 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x53, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x20, 0x52, 0x6f, // 5856 + 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x31, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, // 5872 + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, // 5888 + 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xb6, 0x22, 0x94, 0xfc, 0xa4, 0x48, 0xaf, 0xe8, // 5904 + 0x47, 0x6b, 0x0a, 0xfb, 0x27, 0x76, 0xe4, 0xf2, 0x3f, 0x8a, 0x3b, 0x7a, 0x4a, 0x2c, 0x31, 0x2a, // 5920 + 0x8c, 0x8d, 0xb0, 0xa9, 0xc3, 0x31, 0x6b, 0xa8, 0x77, 0x76, 0x84, 0x26, 0xb6, 0xac, 0x81, 0x42, // 5936 + 0x0d, 0x08, 0xeb, 0x55, 0x58, 0xbb, 0x7a, 0xf8, 0xbc, 0x65, 0x7d, 0xf2, 0xa0, 0x6d, 0x8b, 0xa8, // 5952 + 0x47, 0xe9, 0x62, 0x76, 0x1e, 0x11, 0xee, 0x08, 0x14, 0xd1, 0xb2, 0x44, 0x16, 0xf4, 0xea, 0xd0, // 5968 + 0xfa, 0x1e, 0x2f, 0x5e, 0xdb, 0xcb, 0x73, 0x41, 0xae, 0xbc, 0x00, 0xb0, 0x4a, 0x2b, 0x40, 0xb2, // 5984 + 0xac, 0xe1, 0x3b, 0x4b, 0xc2, 0x2d, 0x9d, 0xe4, 0xa1, 0x9b, 0xec, 0x1a, 0x3a, 0x1e, 0xf0, 0x08, // 6000 + 0xb3, 0xd0, 0xe4, 0x24, 0x35, 0x07, 0x9f, 0x9c, 0xb4, 0xc9, 0x52, 0x6d, 0xdb, 0x07, 0xca, 0x8f, // 6016 + 0xb5, 0x5b, 0xf0, 0x83, 0xf3, 0x4f, 0xc7, 0x2d, 0xa5, 0xc8, 0xad, 0xcb, 0x95, 0x20, 0xa4, 0x31, // 6032 + 0x28, 0x57, 0x58, 0x5a, 0xe4, 0x8d, 0x1b, 0x9a, 0xab, 0x9e, 0x0d, 0x0c, 0xf2, 0x0a, 0x33, 0x39, // 6048 + 0x22, 0x39, 0x0a, 0x97, 0x2e, 0xf3, 0x53, 0x77, 0xb9, 0x44, 0x45, 0xfd, 0x84, 0xcb, 0x36, 0x20, // 6064 + 0x81, 0x59, 0x2d, 0x9a, 0x6f, 0x6d, 0x48, 0x48, 0x61, 0xca, 0x4c, 0xdf, 0x53, 0xd1, 0xaf, 0x52, // 6080 + 0xbc, 0x44, 0x9f, 0xab, 0x2f, 0x6b, 0x83, 0x72, 0xef, 0x75, 0x80, 0xda, 0x06, 0x33, 0x1b, 0x5d, // 6096 + 0xc8, 0xda, 0x63, 0xc6, 0x4d, 0xcd, 0xac, 0x66, 0x31, 0xcd, 0xd1, 0xde, 0x3e, 0x87, 0x10, 0x36, // 6112 + 0xe1, 0xb9, 0xa4, 0x7a, 0xef, 0x60, 0x50, 0xb2, 0xcb, 0xca, 0xa6, 0x56, 0xe0, 0x37, 0xaf, 0xab, // 6128 + 0x34, 0x13, 0x39, 0x25, 0xe8, 0x39, 0x66, 0xe4, 0x98, 0x7a, 0xaa, 0x12, 0x98, 0x9c, 0x59, 0x66, // 6144 + 0x86, 0x3e, 0xad, 0xf1, 0xb0, 0xca, 0x3e, 0x06, 0x0f, 0x7b, 0xf0, 0x11, 0x4b, 0x37, 0xa0, 0x44, // 6160 + 0x6d, 0x7b, 0xcb, 0xa8, 0x8c, 0x71, 0xf4, 0xd5, 0xb5, 0x91, 0x36, 0xcc, 0xf0, 0x15, 0xc6, 0x2b, // 6176 + 0xde, 0x51, 0x17, 0xb1, 0x97, 0x4c, 0x50, 0x3d, 0xb1, 0x95, 0x59, 0x7c, 0x05, 0x7d, 0x2d, 0x21, // 6192 + 0xd5, 0x00, 0xbf, 0x01, 0x67, 0xa2, 0x5e, 0x7b, 0xa6, 0x5c, 0xf2, 0xf7, 0x22, 0xf1, 0x90, 0x0d, // 6208 + 0x93, 0xdb, 0xaa, 0x44, 0x51, 0x66, 0xcc, 0x7d, 0x76, 0x03, 0xeb, 0x6a, 0xa8, 0x2a, 0x38, 0x19, // 6224 + 0x97, 0x76, 0x0d, 0x6b, 0x8a, 0x61, 0xf9, 0xbc, 0xf6, 0xee, 0x76, 0xfd, 0x70, 0x2b, 0xdd, 0x29, // 6240 + 0x3c, 0xf8, 0x0a, 0x1e, 0x5b, 0x42, 0x1c, 0x8b, 0x56, 0x2f, 0x55, 0x1b, 0x1c, 0xa1, 0x2e, 0xb5, // 6256 + 0xc7, 0x16, 0xe6, 0xf8, 0xaa, 0x3c, 0x92, 0x8e, 0x69, 0xb6, 0x01, 0xc1, 0xb5, 0x86, 0x9d, 0x89, // 6272 + 0x0f, 0x0b, 0x38, 0x94, 0x54, 0xe8, 0xea, 0xdc, 0x9e, 0x3d, 0x25, 0xbc, 0x53, 0x26, 0xed, 0xd5, // 6288 + 0xab, 0x39, 0xaa, 0xc5, 0x40, 0x4c, 0x54, 0xab, 0xb2, 0xb4, 0xd9, 0xd9, 0xf8, 0xd7, 0x72, 0xdb, // 6304 + 0x1c, 0xbc, 0x6d, 0xbd, 0x65, 0x5f, 0xef, 0x88, 0x35, 0x2a, 0x66, 0x2f, 0xee, 0xf6, 0xb3, 0x65, // 6320 + 0xf0, 0x33, 0x8d, 0x7c, 0x98, 0x41, 0x69, 0x46, 0x0f, 0x43, 0x1c, 0x69, 0xfa, 0x9b, 0xb5, 0xd0, // 6336 + 0x61, 0x6a, 0xcd, 0xca, 0x4b, 0xd9, 0x4c, 0x90, 0x46, 0xab, 0x15, 0x59, 0xa1, 0x47, 0x54, 0x29, // 6352 + 0x2e, 0x83, 0x28, 0x5f, 0x1c, 0xc2, 0xa2, 0xab, 0x72, 0x17, 0x00, 0x06, 0x8e, 0x45, 0xec, 0x8b, // 6368 + 0xe2, 0x33, 0x3d, 0x7f, 0xda, 0x19, 0x44, 0xe4, 0x62, 0x72, 0xc3, 0xdf, 0x22, 0xc6, 0xf2, 0x56, // 6384 + 0xd4, 0xdd, 0x5f, 0x95, 0x72, 0xed, 0x6d, 0x5f, 0xf7, 0x48, 0x03, 0x5b, 0xfd, 0xc5, 0x2a, 0xa0, // 6400 + 0xf6, 0x73, 0x23, 0x84, 0x10, 0x1b, 0x01, 0xe7, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x4f, 0x02, // 6416 + 0x26, 0x30, 0x4d, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, // 6432 + 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x44, 0x69, 0x67, 0x69, 0x43, // 6448 + 0x65, 0x72, 0x74, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, // 6464 + 0x04, 0x03, 0x13, 0x1c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x4c, 0x53, // 6480 + 0x20, 0x52, 0x53, 0x41, 0x34, 0x30, 0x39, 0x36, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x35, // 6496 + 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, // 6512 + 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, // 6528 + 0x00, 0xb3, 0xd0, 0xf4, 0xc9, 0x79, 0x11, 0x9d, 0xfd, 0xfc, 0x66, 0x81, 0xe7, 0xcc, 0xd5, 0xe4, // 6544 + 0xbc, 0xec, 0x81, 0x3e, 0x6a, 0x35, 0x8e, 0x2e, 0xb7, 0xe7, 0xde, 0xaf, 0xf9, 0x07, 0x4d, 0xcf, // 6560 + 0x30, 0x9d, 0xea, 0x09, 0x0b, 0x99, 0xbd, 0x6c, 0x57, 0xda, 0x18, 0x4a, 0xb8, 0x78, 0xac, 0x3a, // 6576 + 0x39, 0xa8, 0xa6, 0x48, 0xac, 0x2e, 0x72, 0xe5, 0xbd, 0xeb, 0xf1, 0x1a, 0xcd, 0xe7, 0xa4, 0x03, // 6592 + 0xa9, 0x3f, 0x11, 0xb4, 0xd8, 0x2f, 0x89, 0x16, 0xfb, 0x94, 0x01, 0x3d, 0xbb, 0x2f, 0xf8, 0x13, // 6608 + 0x05, 0xa1, 0x78, 0x1c, 0x8e, 0x28, 0xe0, 0x45, 0xe0, 0x83, 0xf4, 0x59, 0x1b, 0x95, 0xb3, 0xae, // 6624 + 0x7e, 0x03, 0x45, 0xe5, 0xbe, 0xc2, 0x42, 0xfe, 0xee, 0xf2, 0x3c, 0xb6, 0x85, 0x13, 0x98, 0x32, // 6640 + 0x9d, 0x16, 0xa8, 0x29, 0xc2, 0x0b, 0x1c, 0x38, 0xdc, 0x9f, 0x31, 0x77, 0x5c, 0xbf, 0x27, 0xa3, // 6656 + 0xfc, 0x27, 0xac, 0xb7, 0x2b, 0xbd, 0x74, 0x9b, 0x17, 0x2d, 0xf2, 0x81, 0xda, 0x5d, 0xb0, 0xe1, // 6672 + 0x23, 0x17, 0x3e, 0x88, 0x4a, 0x12, 0x23, 0xd0, 0xea, 0xcf, 0x9d, 0xde, 0x03, 0x17, 0xb1, 0x42, // 6688 + 0x4a, 0xa0, 0x16, 0x4c, 0xa4, 0x6d, 0x93, 0xe9, 0x3f, 0x3a, 0xee, 0x3a, 0x7c, 0x9d, 0x58, 0x9d, // 6704 + 0xf4, 0x4e, 0x8f, 0xfc, 0x3b, 0x23, 0xc8, 0x6d, 0xb8, 0xe2, 0x05, 0xda, 0xcc, 0xeb, 0xec, 0xc3, // 6720 + 0x31, 0xf4, 0xd7, 0xa7, 0x29, 0x54, 0x80, 0xcf, 0x44, 0x5b, 0x4c, 0x6f, 0x30, 0x9e, 0xf3, 0xcc, // 6736 + 0xdd, 0x1f, 0x94, 0x43, 0x9d, 0x4d, 0x7f, 0x70, 0x70, 0x0d, 0xd4, 0x3a, 0xd1, 0x37, 0xf0, 0x6c, // 6752 + 0x9d, 0x9b, 0xc0, 0x14, 0x93, 0x58, 0xef, 0xcd, 0x41, 0x38, 0x75, 0xbc, 0x13, 0x03, 0x95, 0x7c, // 6768 + 0x7f, 0xe3, 0x5c, 0xe9, 0xd5, 0x0d, 0xd5, 0xe2, 0x7c, 0x10, 0x62, 0xaa, 0x6b, 0xf0, 0x3d, 0x76, // 6784 + 0xf3, 0x3f, 0xa3, 0xe8, 0xb0, 0xc1, 0xfd, 0xef, 0xaa, 0x57, 0x4d, 0xac, 0x86, 0xa7, 0x18, 0xb4, // 6800 + 0x29, 0xc1, 0x2c, 0x0e, 0xbf, 0x64, 0xbe, 0x29, 0x8c, 0xd8, 0x02, 0x2d, 0xcd, 0x5c, 0x2f, 0xf2, // 6816 + 0x7f, 0xef, 0x15, 0xf4, 0x0c, 0x15, 0xac, 0x0a, 0xb0, 0xf1, 0xd3, 0x0d, 0x4f, 0x6a, 0x4d, 0x77, // 6832 + 0x97, 0x01, 0xa0, 0xf1, 0x66, 0xb7, 0xb7, 0xce, 0xef, 0xce, 0xec, 0xec, 0xa5, 0x75, 0xca, 0xac, // 6848 + 0xe3, 0xe1, 0x63, 0xf7, 0xb8, 0xa1, 0x04, 0xc8, 0xbc, 0x7b, 0x3f, 0x5d, 0x2d, 0x16, 0x22, 0x56, // 6864 + 0xed, 0x48, 0x49, 0xfe, 0xa7, 0x2f, 0x79, 0x30, 0x25, 0x9b, 0xba, 0x6b, 0x2d, 0x3f, 0x9d, 0x3b, // 6880 + 0xc4, 0x17, 0xe7, 0x1d, 0x2e, 0xfb, 0xf2, 0xcf, 0xa6, 0xfc, 0xe3, 0x14, 0x2c, 0x96, 0x98, 0x21, // 6896 + 0x8c, 0xb4, 0x91, 0xe9, 0x19, 0x60, 0x83, 0xf2, 0x30, 0x2b, 0x06, 0x73, 0x50, 0xd5, 0x98, 0x3b, // 6912 + 0x06, 0xe9, 0xc7, 0x8a, 0x0c, 0x60, 0x8c, 0x28, 0xf8, 0x52, 0x9b, 0x6e, 0xe1, 0xf6, 0x4d, 0xbb, // 6928 + 0x06, 0x24, 0x9b, 0xd7, 0x2b, 0x26, 0x3f, 0xfd, 0x2a, 0x2f, 0x71, 0xf5, 0xd6, 0x24, 0xbe, 0x7f, // 6944 + 0x31, 0x9e, 0x0f, 0x6d, 0xe8, 0x8f, 0x4f, 0x4d, 0xa3, 0x3f, 0xff, 0x35, 0xea, 0xdf, 0x49, 0x5e, // 6960 + 0x41, 0x8f, 0x86, 0xf9, 0xf1, 0x77, 0x79, 0x4b, 0x1b, 0xb4, 0xa3, 0x5e, 0x2f, 0xfb, 0x46, 0x02, // 6976 + 0xd0, 0x66, 0x13, 0x5e, 0x5e, 0x85, 0x4f, 0xce, 0xd8, 0x70, 0x88, 0x7b, 0xce, 0x01, 0xb5, 0x96, // 6992 + 0x97, 0xd7, 0xcd, 0x7d, 0xfd, 0x82, 0xf8, 0xc2, 0x24, 0xc1, 0xca, 0x01, 0x39, 0x4f, 0x8d, 0xa2, // 7008 + 0xc1, 0x14, 0x40, 0x1f, 0x9c, 0x66, 0xd5, 0x0c, 0x09, 0x46, 0xd6, 0xf2, 0xd0, 0xd1, 0x48, 0x76, // 7024 + 0x56, 0x3a, 0x43, 0xcb, 0xb6, 0x0a, 0x11, 0x39, 0xba, 0x8c, 0x13, 0x6c, 0x06, 0xb5, 0x9e, 0xcf, // 7040 + 0xeb, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x50, 0x00, 0x78, 0x30, 0x4e, 0x31, 0x0b, 0x30, 0x09, // 7056 + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, // 7072 + 0x04, 0x0a, 0x13, 0x0e, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x2c, 0x20, 0x49, 0x6e, // 7088 + 0x63, 0x2e, 0x31, 0x26, 0x30, 0x24, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1d, 0x44, 0x69, 0x67, // 7104 + 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x4c, 0x53, 0x20, 0x45, 0x43, 0x43, 0x20, 0x50, 0x33, // 7120 + 0x38, 0x34, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x35, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, // 7136 + 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, // 7152 + 0x00, 0x04, 0xc1, 0x44, 0xa1, 0xcf, 0x11, 0x97, 0x50, 0x9a, 0xde, 0x23, 0x82, 0x35, 0x07, 0xcd, // 7168 + 0xd0, 0xcb, 0x18, 0x9d, 0xd2, 0xf1, 0x7f, 0x77, 0x35, 0x4f, 0x3b, 0xdd, 0x94, 0x72, 0x52, 0xed, // 7184 + 0xc2, 0x3b, 0xf8, 0xec, 0xfa, 0x7b, 0x6b, 0x58, 0x20, 0xec, 0x99, 0xae, 0xc9, 0xfc, 0x68, 0xb3, // 7200 + 0x75, 0xb9, 0xdb, 0x09, 0xec, 0xc8, 0x13, 0xf5, 0x4e, 0xc6, 0x0a, 0x1d, 0x66, 0x30, 0x4c, 0xbb, // 7216 + 0x1f, 0x47, 0x0a, 0x3c, 0x61, 0x10, 0x42, 0x29, 0x7c, 0xa5, 0x08, 0x0e, 0xe0, 0x22, 0xe9, 0xd3, // 7232 + 0x35, 0x68, 0xce, 0x9b, 0x63, 0x9f, 0x84, 0xb5, 0x99, 0x4d, 0x58, 0xa0, 0x8e, 0xf5, 0x54, 0xe7, // 7248 + 0x95, 0xc9, 0x00, 0x51, 0x02, 0x26, 0x30, 0x4f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, // 7264 + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x20, // 7280 + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, // 7296 + 0x79, 0x20, 0x52, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, // 7312 + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0c, 0x49, 0x53, 0x52, 0x47, 0x20, // 7328 + 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x58, 0x31, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, // 7344 + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, // 7360 + 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, 0xad, 0xe8, 0x24, 0x73, 0xf4, 0x14, 0x37, 0xf3, // 7376 + 0x9b, 0x9e, 0x2b, 0x57, 0x28, 0x1c, 0x87, 0xbe, 0xdc, 0xb7, 0xdf, 0x38, 0x90, 0x8c, 0x6e, 0x3c, // 7392 + 0xe6, 0x57, 0xa0, 0x78, 0xf7, 0x75, 0xc2, 0xa2, 0xfe, 0xf5, 0x6a, 0x6e, 0xf6, 0x00, 0x4f, 0x28, // 7408 + 0xdb, 0xde, 0x68, 0x86, 0x6c, 0x44, 0x93, 0xb6, 0xb1, 0x63, 0xfd, 0x14, 0x12, 0x6b, 0xbf, 0x1f, // 7424 + 0xd2, 0xea, 0x31, 0x9b, 0x21, 0x7e, 0xd1, 0x33, 0x3c, 0xba, 0x48, 0xf5, 0xdd, 0x79, 0xdf, 0xb3, // 7440 + 0xb8, 0xff, 0x12, 0xf1, 0x21, 0x9a, 0x4b, 0xc1, 0x8a, 0x86, 0x71, 0x69, 0x4a, 0x66, 0x66, 0x6c, // 7456 + 0x8f, 0x7e, 0x3c, 0x70, 0xbf, 0xad, 0x29, 0x22, 0x06, 0xf3, 0xe4, 0xc0, 0xe6, 0x80, 0xae, 0xe2, // 7472 + 0x4b, 0x8f, 0xb7, 0x99, 0x7e, 0x94, 0x03, 0x9f, 0xd3, 0x47, 0x97, 0x7c, 0x99, 0x48, 0x23, 0x53, // 7488 + 0xe8, 0x38, 0xae, 0x4f, 0x0a, 0x6f, 0x83, 0x2e, 0xd1, 0x49, 0x57, 0x8c, 0x80, 0x74, 0xb6, 0xda, // 7504 + 0x2f, 0xd0, 0x38, 0x8d, 0x7b, 0x03, 0x70, 0x21, 0x1b, 0x75, 0xf2, 0x30, 0x3c, 0xfa, 0x8f, 0xae, // 7520 + 0xdd, 0xda, 0x63, 0xab, 0xeb, 0x16, 0x4f, 0xc2, 0x8e, 0x11, 0x4b, 0x7e, 0xcf, 0x0b, 0xe8, 0xff, // 7536 + 0xb5, 0x77, 0x2e, 0xf4, 0xb2, 0x7b, 0x4a, 0xe0, 0x4c, 0x12, 0x25, 0x0c, 0x70, 0x8d, 0x03, 0x29, // 7552 + 0xa0, 0xe1, 0x53, 0x24, 0xec, 0x13, 0xd9, 0xee, 0x19, 0xbf, 0x10, 0xb3, 0x4a, 0x8c, 0x3f, 0x89, // 7568 + 0xa3, 0x61, 0x51, 0xde, 0xac, 0x87, 0x07, 0x94, 0xf4, 0x63, 0x71, 0xec, 0x2e, 0xe2, 0x6f, 0x5b, // 7584 + 0x98, 0x81, 0xe1, 0x89, 0x5c, 0x34, 0x79, 0x6c, 0x76, 0xef, 0x3b, 0x90, 0x62, 0x79, 0xe6, 0xdb, // 7600 + 0xa4, 0x9a, 0x2f, 0x26, 0xc5, 0xd0, 0x10, 0xe1, 0x0e, 0xde, 0xd9, 0x10, 0x8e, 0x16, 0xfb, 0xb7, // 7616 + 0xf7, 0xa8, 0xf7, 0xc7, 0xe5, 0x02, 0x07, 0x98, 0x8f, 0x36, 0x08, 0x95, 0xe7, 0xe2, 0x37, 0x96, // 7632 + 0x0d, 0x36, 0x75, 0x9e, 0xfb, 0x0e, 0x72, 0xb1, 0x1d, 0x9b, 0xbc, 0x03, 0xf9, 0x49, 0x05, 0xd8, // 7648 + 0x81, 0xdd, 0x05, 0xb4, 0x2a, 0xd6, 0x41, 0xe9, 0xac, 0x01, 0x76, 0x95, 0x0a, 0x0f, 0xd8, 0xdf, // 7664 + 0xd5, 0xbd, 0x12, 0x1f, 0x35, 0x2f, 0x28, 0x17, 0x6c, 0xd2, 0x98, 0xc1, 0xa8, 0x09, 0x64, 0x77, // 7680 + 0x6e, 0x47, 0x37, 0xba, 0xce, 0xac, 0x59, 0x5e, 0x68, 0x9d, 0x7f, 0x72, 0xd6, 0x89, 0xc5, 0x06, // 7696 + 0x41, 0x29, 0x3e, 0x59, 0x3e, 0xdd, 0x26, 0xf5, 0x24, 0xc9, 0x11, 0xa7, 0x5a, 0xa3, 0x4c, 0x40, // 7712 + 0x1f, 0x46, 0xa1, 0x99, 0xb5, 0xa7, 0x3a, 0x51, 0x6e, 0x86, 0x3b, 0x9e, 0x7d, 0x72, 0xa7, 0x12, // 7728 + 0x05, 0x78, 0x59, 0xed, 0x3e, 0x51, 0x78, 0x15, 0x0b, 0x03, 0x8f, 0x8d, 0xd0, 0x2f, 0x05, 0xb2, // 7744 + 0x3e, 0x7b, 0x4a, 0x1c, 0x4b, 0x73, 0x05, 0x12, 0xfc, 0xc6, 0xea, 0xe0, 0x50, 0x13, 0x7c, 0x43, // 7760 + 0x93, 0x74, 0xb3, 0xca, 0x74, 0xe7, 0x8e, 0x1f, 0x01, 0x08, 0xd0, 0x30, 0xd4, 0x5b, 0x71, 0x36, // 7776 + 0xb4, 0x07, 0xba, 0xc1, 0x30, 0x30, 0x5c, 0x48, 0xb7, 0x82, 0x3b, 0x98, 0xa6, 0x7d, 0x60, 0x8a, // 7792 + 0xa2, 0xa3, 0x29, 0x82, 0xcc, 0xba, 0xbd, 0x83, 0x04, 0x1b, 0xa2, 0x83, 0x03, 0x41, 0xa1, 0xd6, // 7808 + 0x05, 0xf1, 0x1b, 0xc2, 0xb6, 0xf0, 0xa8, 0x7c, 0x86, 0x3b, 0x46, 0xa8, 0x48, 0x2a, 0x88, 0xdc, // 7824 + 0x76, 0x9a, 0x76, 0xbf, 0x1f, 0x6a, 0xa5, 0x3d, 0x19, 0x8f, 0xeb, 0x38, 0xf3, 0x64, 0xde, 0xc8, // 7840 + 0x2b, 0x0d, 0x0a, 0x28, 0xff, 0xf7, 0xdb, 0xe2, 0x15, 0x42, 0xd4, 0x22, 0xd0, 0x27, 0x5d, 0xe1, // 7856 + 0x79, 0xfe, 0x18, 0xe7, 0x70, 0x88, 0xad, 0x4e, 0xe6, 0xd9, 0x8b, 0x3a, 0xc6, 0xdd, 0x27, 0x51, // 7872 + 0x6e, 0xff, 0xbc, 0x64, 0xf5, 0x33, 0x43, 0x4f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x51, 0x00, // 7888 + 0x78, 0x30, 0x4f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, // 7904 + 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x20, 0x49, 0x6e, 0x74, 0x65, 0x72, // 7920 + 0x6e, 0x65, 0x74, 0x20, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x20, 0x52, 0x65, 0x73, // 7936 + 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x31, 0x15, 0x30, 0x13, 0x06, // 7952 + 0x03, 0x55, 0x04, 0x03, 0x13, 0x0c, 0x49, 0x53, 0x52, 0x47, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, // 7968 + 0x58, 0x32, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, // 7984 + 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0xcd, 0x9b, 0xd5, 0x9f, 0x80, 0x83, // 8000 + 0x0a, 0xec, 0x09, 0x4a, 0xf3, 0x16, 0x4a, 0x3e, 0x5c, 0xcf, 0x77, 0xac, 0xde, 0x67, 0x05, 0x0d, // 8016 + 0x1d, 0x07, 0xb6, 0xdc, 0x16, 0xfb, 0x5a, 0x8b, 0x14, 0xdb, 0xe2, 0x71, 0x60, 0xc4, 0xba, 0x45, // 8032 + 0x95, 0x11, 0x89, 0x8e, 0xea, 0x06, 0xdf, 0xf7, 0x2a, 0x16, 0x1c, 0xa4, 0xb9, 0xc5, 0xc5, 0x32, // 8048 + 0xe0, 0x03, 0xe0, 0x1e, 0x82, 0x18, 0x38, 0x8b, 0xd7, 0x45, 0xd8, 0x0a, 0x6a, 0x6e, 0xe6, 0x00, // 8064 + 0x77, 0xfb, 0x02, 0x51, 0x7d, 0x22, 0xd8, 0x0a, 0x6e, 0x9a, 0x5b, 0x77, 0xdf, 0xf0, 0xfa, 0x41, // 8080 + 0xec, 0x39, 0xdc, 0x75, 0xca, 0x68, 0x07, 0x0c, 0x1f, 0xea, 0x00, 0x52, 0x00, 0x5b, 0x30, 0x50, // 8096 + 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1b, 0x47, 0x6c, 0x6f, 0x62, 0x61, // 8112 + 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, // 8128 + 0x41, 0x20, 0x2d, 0x20, 0x52, 0x34, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, // 8144 + 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x31, 0x13, 0x30, 0x11, 0x06, // 8160 + 0x03, 0x55, 0x04, 0x03, 0x13, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, // 8176 + 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a, // 8192 + 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xb8, 0xc6, 0x79, 0xd3, 0x8f, // 8208 + 0x6c, 0x25, 0x0e, 0x9f, 0x2e, 0x39, 0x19, 0x1c, 0x03, 0xa4, 0xae, 0x9a, 0xe5, 0x39, 0x07, 0x09, // 8224 + 0x16, 0xca, 0x63, 0xb1, 0xb9, 0x86, 0xf8, 0x8a, 0x57, 0xc1, 0x57, 0xce, 0x42, 0xfa, 0x73, 0xa1, // 8240 + 0xf7, 0x65, 0x42, 0xff, 0x1e, 0xc1, 0x00, 0xb2, 0x6e, 0x73, 0x0e, 0xff, 0xc7, 0x21, 0xe5, 0x18, // 8256 + 0xa4, 0xaa, 0xd9, 0x71, 0x3f, 0xa8, 0xd4, 0xb9, 0xce, 0x8c, 0x1d, 0x00, 0x52, 0x00, 0x78, 0x30, // 8272 + 0x50, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1b, 0x47, 0x6c, 0x6f, 0x62, // 8288 + 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x45, 0x43, 0x43, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, // 8304 + 0x43, 0x41, 0x20, 0x2d, 0x20, 0x52, 0x35, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0a, // 8320 + 0x13, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x31, 0x13, 0x30, 0x11, // 8336 + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0a, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, // 8352 + 0x6e, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, // 8368 + 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0x47, 0x45, 0x0e, 0x96, 0xfb, 0x7d, 0x5d, // 8384 + 0xbf, 0xe9, 0x39, 0xd1, 0x21, 0xf8, 0x9f, 0x0b, 0xb6, 0xd5, 0x7b, 0x1e, 0x92, 0x3a, 0x48, 0x59, // 8400 + 0x1c, 0xf0, 0x62, 0x31, 0x2d, 0xc0, 0x7a, 0x28, 0xfe, 0x1a, 0xa7, 0x5c, 0xb3, 0xb6, 0xcc, 0x97, // 8416 + 0xe7, 0x45, 0xd4, 0x58, 0xfa, 0xd1, 0x77, 0x6d, 0x43, 0xa2, 0xc0, 0x87, 0x65, 0x34, 0x0a, 0x1f, // 8432 + 0x7a, 0xdd, 0xeb, 0x3c, 0x33, 0xa1, 0xc5, 0x9d, 0x4d, 0xa4, 0x6f, 0x41, 0x95, 0x38, 0x7f, 0xc9, // 8448 + 0x1e, 0x84, 0xeb, 0xd1, 0x9e, 0x49, 0x92, 0x87, 0x94, 0x87, 0x0c, 0x3a, 0x85, 0x4a, 0x66, 0x9f, // 8464 + 0x9d, 0x59, 0x93, 0x4d, 0x97, 0x61, 0x06, 0x86, 0x4a, 0x00, 0x59, 0x01, 0x26, 0x30, 0x57, 0x31, // 8480 + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x42, 0x45, 0x31, 0x19, 0x30, 0x17, // 8496 + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x10, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, // 8512 + 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x0b, // 8528 + 0x13, 0x07, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, // 8544 + 0x04, 0x03, 0x13, 0x12, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, // 8560 + 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, // 8576 + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, // 8592 + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xda, 0x0e, 0xe6, 0x99, 0x8d, 0xce, 0xa3, 0xe3, 0x4f, // 8608 + 0x8a, 0x7e, 0xfb, 0xf1, 0x8b, 0x83, 0x25, 0x6b, 0xea, 0x48, 0x1f, 0xf1, 0x2a, 0xb0, 0xb9, 0x95, // 8624 + 0x11, 0x04, 0xbd, 0xf0, 0x63, 0xd1, 0xe2, 0x67, 0x66, 0xcf, 0x1c, 0xdd, 0xcf, 0x1b, 0x48, 0x2b, // 8640 + 0xee, 0x8d, 0x89, 0x8e, 0x9a, 0xaf, 0x29, 0x80, 0x65, 0xab, 0xe9, 0xc7, 0x2d, 0x12, 0xcb, 0xab, // 8656 + 0x1c, 0x4c, 0x70, 0x07, 0xa1, 0x3d, 0x0a, 0x30, 0xcd, 0x15, 0x8d, 0x4f, 0xf8, 0xdd, 0xd4, 0x8c, // 8672 + 0x50, 0x15, 0x1c, 0xef, 0x50, 0xee, 0xc4, 0x2e, 0xf7, 0xfc, 0xe9, 0x52, 0xf2, 0x91, 0x7d, 0xe0, // 8688 + 0x6d, 0xd5, 0x35, 0x30, 0x8e, 0x5e, 0x43, 0x73, 0xf2, 0x41, 0xe9, 0xd5, 0x6a, 0xe3, 0xb2, 0x89, // 8704 + 0x3a, 0x56, 0x39, 0x38, 0x6f, 0x06, 0x3c, 0x88, 0x69, 0x5b, 0x2a, 0x4d, 0xc5, 0xa7, 0x54, 0xb8, // 8720 + 0x6c, 0x89, 0xcc, 0x9b, 0xf9, 0x3c, 0xca, 0xe5, 0xfd, 0x89, 0xf5, 0x12, 0x3c, 0x92, 0x78, 0x96, // 8736 + 0xd6, 0xdc, 0x74, 0x6e, 0x93, 0x44, 0x61, 0xd1, 0x8d, 0xc7, 0x46, 0xb2, 0x75, 0x0e, 0x86, 0xe8, // 8752 + 0x19, 0x8a, 0xd5, 0x6d, 0x6c, 0xd5, 0x78, 0x16, 0x95, 0xa2, 0xe9, 0xc8, 0x0a, 0x38, 0xeb, 0xf2, // 8768 + 0x24, 0x13, 0x4f, 0x73, 0x54, 0x93, 0x13, 0x85, 0x3a, 0x1b, 0xbc, 0x1e, 0x34, 0xb5, 0x8b, 0x05, // 8784 + 0x8c, 0xb9, 0x77, 0x8b, 0xb1, 0xdb, 0x1f, 0x20, 0x91, 0xab, 0x09, 0x53, 0x6e, 0x90, 0xce, 0x7b, // 8800 + 0x37, 0x74, 0xb9, 0x70, 0x47, 0x91, 0x22, 0x51, 0x63, 0x16, 0x79, 0xae, 0xb1, 0xae, 0x41, 0x26, // 8816 + 0x08, 0xc8, 0x19, 0x2b, 0xd1, 0x46, 0xaa, 0x48, 0xd6, 0x64, 0x2a, 0xd7, 0x83, 0x34, 0xff, 0x2c, // 8832 + 0x2a, 0xc1, 0x6c, 0x19, 0x43, 0x4a, 0x07, 0x85, 0xe7, 0xd3, 0x7c, 0xf6, 0x21, 0x68, 0xef, 0xea, // 8848 + 0xf2, 0x52, 0x9f, 0x7f, 0x93, 0x90, 0xcf, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x5c, 0x01, 0x26, // 8864 + 0x30, 0x5a, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x49, 0x45, 0x31, // 8880 + 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x09, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, // 8896 + 0x6f, 0x72, 0x65, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x0a, 0x43, 0x79, // 8912 + 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x31, 0x22, 0x30, 0x20, 0x06, 0x03, 0x55, 0x04, // 8928 + 0x03, 0x13, 0x19, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62, // 8944 + 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x82, 0x01, 0x22, // 8960 + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, // 8976 + 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa3, 0x04, 0xbb, // 8992 + 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, 0xd4, 0x29, 0xe2, 0xe1, 0xe8, // 9008 + 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1, 0x5d, 0xed, 0xb0, // 9024 + 0x09, 0x05, 0x6d, 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88, 0xda, 0x12, 0xeb, // 9040 + 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, 0x77, 0xd3, 0x1c, 0x8f, 0xc7, // 9056 + 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1, 0xcc, 0xca, 0x62, // 9072 + 0x8d, 0x2d, 0xe5, 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea, 0xf5, 0xab, 0x25, // 9088 + 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, 0xf7, 0xf9, 0x52, 0x13, 0x2f, // 9104 + 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a, 0xe1, 0xd9, 0xca, // 9120 + 0x33, 0x7a, 0x77, 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13, 0xd2, 0xc0, 0xc2, // 9136 + 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, 0x07, 0x59, 0x02, 0xd4, 0x59, // 9152 + 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06, 0x7a, 0xf3, 0x85, // 9168 + 0xea, 0xeb, 0xd4, 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69, 0xbc, 0xf9, 0x39, // 9184 + 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, 0xb9, 0x3d, 0xe5, 0xc9, 0x23, // 9200 + 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a, 0xec, 0xe7, 0x6e, // 9216 + 0x86, 0x3a, 0x6b, 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78, 0x8d, 0x76, 0xbf, // 9232 + 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, 0x1a, 0x39, 0x02, 0x03, 0x01, // 9248 + 0x00, 0x01, 0x00, 0x63, 0x01, 0x26, 0x30, 0x61, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, // 9264 + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, // 9280 + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, // 9296 + 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, // 9312 + 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, // 9328 + 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, // 9344 + 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, // 9360 + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, // 9376 + 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xe2, 0x3b, 0xe1, 0x11, 0x72, 0xde, // 9392 + 0xa8, 0xa4, 0xd3, 0xa3, 0x57, 0xaa, 0x50, 0xa2, 0x8f, 0x0b, 0x77, 0x90, 0xc9, 0xa2, 0xa5, 0xee, // 9408 + 0x12, 0xce, 0x96, 0x5b, 0x01, 0x09, 0x20, 0xcc, 0x01, 0x93, 0xa7, 0x4e, 0x30, 0xb7, 0x53, 0xf7, // 9424 + 0x43, 0xc4, 0x69, 0x00, 0x57, 0x9d, 0xe2, 0x8d, 0x22, 0xdd, 0x87, 0x06, 0x40, 0x00, 0x81, 0x09, // 9440 + 0xce, 0xce, 0x1b, 0x83, 0xbf, 0xdf, 0xcd, 0x3b, 0x71, 0x46, 0xe2, 0xd6, 0x66, 0xc7, 0x05, 0xb3, // 9456 + 0x76, 0x27, 0x16, 0x8f, 0x7b, 0x9e, 0x1e, 0x95, 0x7d, 0xee, 0xb7, 0x48, 0xa3, 0x08, 0xda, 0xd6, // 9472 + 0xaf, 0x7a, 0x0c, 0x39, 0x06, 0x65, 0x7f, 0x4a, 0x5d, 0x1f, 0xbc, 0x17, 0xf8, 0xab, 0xbe, 0xee, // 9488 + 0x28, 0xd7, 0x74, 0x7f, 0x7a, 0x78, 0x99, 0x59, 0x85, 0x68, 0x6e, 0x5c, 0x23, 0x32, 0x4b, 0xbf, // 9504 + 0x4e, 0xc0, 0xe8, 0x5a, 0x6d, 0xe3, 0x70, 0xbf, 0x77, 0x10, 0xbf, 0xfc, 0x01, 0xf6, 0x85, 0xd9, // 9520 + 0xa8, 0x44, 0x10, 0x58, 0x32, 0xa9, 0x75, 0x18, 0xd5, 0xd1, 0xa2, 0xbe, 0x47, 0xe2, 0x27, 0x6a, // 9536 + 0xf4, 0x9a, 0x33, 0xf8, 0x49, 0x08, 0x60, 0x8b, 0xd4, 0x5f, 0xb4, 0x3a, 0x84, 0xbf, 0xa1, 0xaa, // 9552 + 0x4a, 0x4c, 0x7d, 0x3e, 0xcf, 0x4f, 0x5f, 0x6c, 0x76, 0x5e, 0xa0, 0x4b, 0x37, 0x91, 0x9e, 0xdc, // 9568 + 0x22, 0xe6, 0x6d, 0xce, 0x14, 0x1a, 0x8e, 0x6a, 0xcb, 0xfe, 0xcd, 0xb3, 0x14, 0x64, 0x17, 0xc7, // 9584 + 0x5b, 0x29, 0x9e, 0x32, 0xbf, 0xf2, 0xee, 0xfa, 0xd3, 0x0b, 0x42, 0xd4, 0xab, 0xb7, 0x41, 0x32, // 9600 + 0xda, 0x0c, 0xd4, 0xef, 0xf8, 0x81, 0xd5, 0xbb, 0x8d, 0x58, 0x3f, 0xb5, 0x1b, 0xe8, 0x49, 0x28, // 9616 + 0xa2, 0x70, 0xda, 0x31, 0x04, 0xdd, 0xf7, 0xb2, 0x16, 0xf2, 0x4c, 0x0a, 0x4e, 0x07, 0xa8, 0xed, // 9632 + 0x4a, 0x3d, 0x5e, 0xb5, 0x7f, 0xa3, 0x90, 0xc3, 0xaf, 0x27, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, // 9648 + 0x63, 0x01, 0x26, 0x30, 0x61, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, // 9664 + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, // 9680 + 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, // 9696 + 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, // 9712 + 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x44, // 9728 + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, // 9744 + 0x6f, 0x6f, 0x74, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, // 9760 + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, // 9776 + 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbb, 0x37, 0xcd, 0x34, 0xdc, 0x7b, 0x6b, 0xc9, 0xb2, // 9792 + 0x68, 0x90, 0xad, 0x4a, 0x75, 0xff, 0x46, 0xba, 0x21, 0x0a, 0x08, 0x8d, 0xf5, 0x19, 0x54, 0xc9, // 9808 + 0xfb, 0x88, 0xdb, 0xf3, 0xae, 0xf2, 0x3a, 0x89, 0x91, 0x3c, 0x7a, 0xe6, 0xab, 0x06, 0x1a, 0x6b, // 9824 + 0xcf, 0xac, 0x2d, 0xe8, 0x5e, 0x09, 0x24, 0x44, 0xba, 0x62, 0x9a, 0x7e, 0xd6, 0xa3, 0xa8, 0x7e, // 9840 + 0xe0, 0x54, 0x75, 0x20, 0x05, 0xac, 0x50, 0xb7, 0x9c, 0x63, 0x1a, 0x6c, 0x30, 0xdc, 0xda, 0x1f, // 9856 + 0x19, 0xb1, 0xd7, 0x1e, 0xde, 0xfd, 0xd7, 0xe0, 0xcb, 0x94, 0x83, 0x37, 0xae, 0xec, 0x1f, 0x43, // 9872 + 0x4e, 0xdd, 0x7b, 0x2c, 0xd2, 0xbd, 0x2e, 0xa5, 0x2f, 0xe4, 0xa9, 0xb8, 0xad, 0x3a, 0xd4, 0x99, // 9888 + 0xa4, 0xb6, 0x25, 0xe9, 0x9b, 0x6b, 0x00, 0x60, 0x92, 0x60, 0xff, 0x4f, 0x21, 0x49, 0x18, 0xf7, // 9904 + 0x67, 0x90, 0xab, 0x61, 0x06, 0x9c, 0x8f, 0xf2, 0xba, 0xe9, 0xb4, 0xe9, 0x92, 0x32, 0x6b, 0xb5, // 9920 + 0xf3, 0x57, 0xe8, 0x5d, 0x1b, 0xcd, 0x8c, 0x1d, 0xab, 0x95, 0x04, 0x95, 0x49, 0xf3, 0x35, 0x2d, // 9936 + 0x96, 0xe3, 0x49, 0x6d, 0xdd, 0x77, 0xe3, 0xfb, 0x49, 0x4b, 0xb4, 0xac, 0x55, 0x07, 0xa9, 0x8f, // 9952 + 0x95, 0xb3, 0xb4, 0x23, 0xbb, 0x4c, 0x6d, 0x45, 0xf0, 0xf6, 0xa9, 0xb2, 0x95, 0x30, 0xb4, 0xfd, // 9968 + 0x4c, 0x55, 0x8c, 0x27, 0x4a, 0x57, 0x14, 0x7c, 0x82, 0x9d, 0xcd, 0x73, 0x92, 0xd3, 0x16, 0x4a, // 9984 + 0x06, 0x0c, 0x8c, 0x50, 0xd1, 0x8f, 0x1e, 0x09, 0xbe, 0x17, 0xa1, 0xe6, 0x21, 0xca, 0xfd, 0x83, // 10000 + 0xe5, 0x10, 0xbc, 0x83, 0xa5, 0x0a, 0xc4, 0x67, 0x28, 0xf6, 0x73, 0x14, 0x14, 0x3d, 0x46, 0x76, // 10016 + 0xc3, 0x87, 0x14, 0x89, 0x21, 0x34, 0x4d, 0xaf, 0x0f, 0x45, 0x0c, 0xa6, 0x49, 0xa1, 0xba, 0xbb, // 10032 + 0x9c, 0xc5, 0xb1, 0x33, 0x83, 0x29, 0x85, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x63, 0x00, 0x78, // 10048 + 0x30, 0x61, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, // 10064 + 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, // 10080 + 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, // 10096 + 0x10, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, // 10112 + 0x6d, 0x31, 0x20, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x17, 0x44, 0x69, 0x67, 0x69, // 10128 + 0x43, 0x65, 0x72, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, // 10144 + 0x20, 0x47, 0x33, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, // 10160 + 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0xdd, 0xa7, 0xd9, 0xbb, 0x8a, // 10176 + 0xb8, 0x0b, 0xfb, 0x0b, 0x7f, 0x21, 0xd2, 0xf0, 0xbe, 0xbe, 0x73, 0xf3, 0x33, 0x5d, 0x1a, 0xbc, // 10192 + 0x34, 0xea, 0xde, 0xc6, 0x9b, 0xbc, 0xd0, 0x95, 0xf6, 0xf0, 0xcc, 0xd0, 0x0b, 0xba, 0x61, 0x5b, // 10208 + 0x51, 0x46, 0x7e, 0x9e, 0x2d, 0x9f, 0xee, 0x8e, 0x63, 0x0c, 0x17, 0xec, 0x07, 0x70, 0xf5, 0xcf, // 10224 + 0x84, 0x2e, 0x40, 0x83, 0x9c, 0xe8, 0x3f, 0x41, 0x6d, 0x3b, 0xad, 0xd3, 0xa4, 0x14, 0x59, 0x36, // 10240 + 0x78, 0x9d, 0x03, 0x43, 0xee, 0x10, 0x13, 0x6c, 0x72, 0xde, 0xae, 0x88, 0xa7, 0xa1, 0x6b, 0xb5, // 10256 + 0x43, 0xce, 0x67, 0xdc, 0x23, 0xff, 0x03, 0x1c, 0xa3, 0xe2, 0x3e, 0x00, 0x64, 0x02, 0x26, 0x30, // 10272 + 0x62, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, // 10288 + 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, // 10304 + 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, // 10320 + 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, // 10336 + 0x31, 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x44, 0x69, 0x67, 0x69, 0x43, // 10352 + 0x65, 0x72, 0x74, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, // 10368 + 0x20, 0x47, 0x34, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, // 10384 + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, // 10400 + 0x82, 0x02, 0x01, 0x00, 0xbf, 0xe6, 0x90, 0x73, 0x68, 0xde, 0xbb, 0xe4, 0x5d, 0x4a, 0x3c, 0x30, // 10416 + 0x22, 0x30, 0x69, 0x33, 0xec, 0xc2, 0xa7, 0x25, 0x2e, 0xc9, 0x21, 0x3d, 0xf2, 0x8a, 0xd8, 0x59, // 10432 + 0xc2, 0xe1, 0x29, 0xa7, 0x3d, 0x58, 0xab, 0x76, 0x9a, 0xcd, 0xae, 0x7b, 0x1b, 0x84, 0x0d, 0xc4, // 10448 + 0x30, 0x1f, 0xf3, 0x1b, 0xa4, 0x38, 0x16, 0xeb, 0x56, 0xc6, 0x97, 0x6d, 0x1d, 0xab, 0xb2, 0x79, // 10464 + 0xf2, 0xca, 0x11, 0xd2, 0xe4, 0x5f, 0xd6, 0x05, 0x3c, 0x52, 0x0f, 0x52, 0x1f, 0xc6, 0x9e, 0x15, // 10480 + 0xa5, 0x7e, 0xbe, 0x9f, 0xa9, 0x57, 0x16, 0x59, 0x55, 0x72, 0xaf, 0x68, 0x93, 0x70, 0xc2, 0xb2, // 10496 + 0xba, 0x75, 0x99, 0x6a, 0x73, 0x32, 0x94, 0xd1, 0x10, 0x44, 0x10, 0x2e, 0xdf, 0x82, 0xf3, 0x07, // 10512 + 0x84, 0xe6, 0x74, 0x3b, 0x6d, 0x71, 0xe2, 0x2d, 0x0c, 0x1b, 0xee, 0x20, 0xd5, 0xc9, 0x20, 0x1d, // 10528 + 0x63, 0x29, 0x2d, 0xce, 0xec, 0x5e, 0x4e, 0xc8, 0x93, 0xf8, 0x21, 0x61, 0x9b, 0x34, 0xeb, 0x05, // 10544 + 0xc6, 0x5e, 0xec, 0x5b, 0x1a, 0xbc, 0xeb, 0xc9, 0xcf, 0xcd, 0xac, 0x34, 0x40, 0x5f, 0xb1, 0x7a, // 10560 + 0x66, 0xee, 0x77, 0xc8, 0x48, 0xa8, 0x66, 0x57, 0x57, 0x9f, 0x54, 0x58, 0x8e, 0x0c, 0x2b, 0xb7, // 10576 + 0x4f, 0xa7, 0x30, 0xd9, 0x56, 0xee, 0xca, 0x7b, 0x5d, 0xe3, 0xad, 0xc9, 0x4f, 0x5e, 0xe5, 0x35, // 10592 + 0xe7, 0x31, 0xcb, 0xda, 0x93, 0x5e, 0xdc, 0x8e, 0x8f, 0x80, 0xda, 0xb6, 0x91, 0x98, 0x40, 0x90, // 10608 + 0x79, 0xc3, 0x78, 0xc7, 0xb6, 0xb1, 0xc4, 0xb5, 0x6a, 0x18, 0x38, 0x03, 0x10, 0x8d, 0xd8, 0xd4, // 10624 + 0x37, 0xa4, 0x2e, 0x05, 0x7d, 0x88, 0xf5, 0x82, 0x3e, 0x10, 0x91, 0x70, 0xab, 0x55, 0x82, 0x41, // 10640 + 0x32, 0xd7, 0xdb, 0x04, 0x73, 0x2a, 0x6e, 0x91, 0x01, 0x7c, 0x21, 0x4c, 0xd4, 0xbc, 0xae, 0x1b, // 10656 + 0x03, 0x75, 0x5d, 0x78, 0x66, 0xd9, 0x3a, 0x31, 0x44, 0x9a, 0x33, 0x40, 0xbf, 0x08, 0xd7, 0x5a, // 10672 + 0x49, 0xa4, 0xc2, 0xe6, 0xa9, 0xa0, 0x67, 0xdd, 0xa4, 0x27, 0xbc, 0xa1, 0x4f, 0x39, 0xb5, 0x11, // 10688 + 0x58, 0x17, 0xf7, 0x24, 0x5c, 0x46, 0x8f, 0x64, 0xf7, 0xc1, 0x69, 0x88, 0x76, 0x98, 0x76, 0x3d, // 10704 + 0x59, 0x5d, 0x42, 0x76, 0x87, 0x89, 0x97, 0x69, 0x7a, 0x48, 0xf0, 0xe0, 0xa2, 0x12, 0x1b, 0x66, // 10720 + 0x9a, 0x74, 0xca, 0xde, 0x4b, 0x1e, 0xe7, 0x0e, 0x63, 0xae, 0xe6, 0xd4, 0xef, 0x92, 0x92, 0x3a, // 10736 + 0x9e, 0x3d, 0xdc, 0x00, 0xe4, 0x45, 0x25, 0x89, 0xb6, 0x9a, 0x44, 0x19, 0x2b, 0x7e, 0xc0, 0x94, // 10752 + 0xb4, 0xd2, 0x61, 0x6d, 0xeb, 0x33, 0xd9, 0xc5, 0xdf, 0x4b, 0x04, 0x00, 0xcc, 0x7d, 0x1c, 0x95, // 10768 + 0xc3, 0x8f, 0xf7, 0x21, 0xb2, 0xb2, 0x11, 0xb7, 0xbb, 0x7f, 0xf2, 0xd5, 0x8c, 0x70, 0x2c, 0x41, // 10784 + 0x60, 0xaa, 0xb1, 0x63, 0x18, 0x44, 0x95, 0x1a, 0x76, 0x62, 0x7e, 0xf6, 0x80, 0xb0, 0xfb, 0xe8, // 10800 + 0x64, 0xa6, 0x33, 0xd1, 0x89, 0x07, 0xe1, 0xbd, 0xb7, 0xe6, 0x43, 0xa4, 0x18, 0xb8, 0xa6, 0x77, // 10816 + 0x01, 0xe1, 0x0f, 0x94, 0x0c, 0x21, 0x1d, 0xb2, 0x54, 0x29, 0x25, 0x89, 0x6c, 0xe5, 0x0e, 0x52, // 10832 + 0x51, 0x47, 0x74, 0xbe, 0x26, 0xac, 0xb6, 0x41, 0x75, 0xde, 0x7a, 0xac, 0x5f, 0x8d, 0x3f, 0xc9, // 10848 + 0xbc, 0xd3, 0x41, 0x11, 0x12, 0x5b, 0xe5, 0x10, 0x50, 0xeb, 0x31, 0xc5, 0xca, 0x72, 0x16, 0x22, // 10864 + 0x09, 0xdf, 0x7c, 0x4c, 0x75, 0x3f, 0x63, 0xec, 0x21, 0x5f, 0xc4, 0x20, 0x51, 0x6b, 0x6f, 0xb1, // 10880 + 0xab, 0x86, 0x8b, 0x4f, 0xc2, 0xd6, 0x45, 0x5f, 0x9d, 0x20, 0xfc, 0xa1, 0x1e, 0xc5, 0xc0, 0x8f, // 10896 + 0xa2, 0xb1, 0x7e, 0x0a, 0x26, 0x99, 0xf5, 0xe4, 0x69, 0x2f, 0x98, 0x1d, 0x2d, 0xf5, 0xd9, 0xa9, // 10912 + 0xb2, 0x1d, 0xe5, 0x1b, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x65, 0x01, 0x24, 0x30, 0x63, 0x31, // 10928 + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x21, 0x30, 0x1f, // 10944 + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x18, 0x54, 0x68, 0x65, 0x20, 0x47, 0x6f, 0x20, 0x44, 0x61, // 10960 + 0x64, 0x64, 0x79, 0x20, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, // 10976 + 0x31, 0x30, 0x2f, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, // 10992 + 0x64, 0x79, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, // 11008 + 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, // 11024 + 0x74, 0x79, 0x30, 0x82, 0x01, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, // 11040 + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0d, 0x00, 0x30, 0x82, 0x01, 0x08, 0x02, 0x82, // 11056 + 0x01, 0x01, 0x00, 0xde, 0x9d, 0xd7, 0xea, 0x57, 0x18, 0x49, 0xa1, 0x5b, 0xeb, 0xd7, 0x5f, 0x48, // 11072 + 0x86, 0xea, 0xbe, 0xdd, 0xff, 0xe4, 0xef, 0x67, 0x1c, 0xf4, 0x65, 0x68, 0xb3, 0x57, 0x71, 0xa0, // 11088 + 0x5e, 0x77, 0xbb, 0xed, 0x9b, 0x49, 0xe9, 0x70, 0x80, 0x3d, 0x56, 0x18, 0x63, 0x08, 0x6f, 0xda, // 11104 + 0xf2, 0xcc, 0xd0, 0x3f, 0x7f, 0x02, 0x54, 0x22, 0x54, 0x10, 0xd8, 0xb2, 0x81, 0xd4, 0xc0, 0x75, // 11120 + 0x3d, 0x4b, 0x7f, 0xc7, 0x77, 0xc3, 0x3e, 0x78, 0xab, 0x1a, 0x03, 0xb5, 0x20, 0x6b, 0x2f, 0x6a, // 11136 + 0x2b, 0xb1, 0xc5, 0x88, 0x7e, 0xc4, 0xbb, 0x1e, 0xb0, 0xc1, 0xd8, 0x45, 0x27, 0x6f, 0xaa, 0x37, // 11152 + 0x58, 0xf7, 0x87, 0x26, 0xd7, 0xd8, 0x2d, 0xf6, 0xa9, 0x17, 0xb7, 0x1f, 0x72, 0x36, 0x4e, 0xa6, // 11168 + 0x17, 0x3f, 0x65, 0x98, 0x92, 0xdb, 0x2a, 0x6e, 0x5d, 0xa2, 0xfe, 0x88, 0xe0, 0x0b, 0xde, 0x7f, // 11184 + 0xe5, 0x8d, 0x15, 0xe1, 0xeb, 0xcb, 0x3a, 0xd5, 0xe2, 0x12, 0xa2, 0x13, 0x2d, 0xd8, 0x8e, 0xaf, // 11200 + 0x5f, 0x12, 0x3d, 0xa0, 0x08, 0x05, 0x08, 0xb6, 0x5c, 0xa5, 0x65, 0x38, 0x04, 0x45, 0x99, 0x1e, // 11216 + 0xa3, 0x60, 0x60, 0x74, 0xc5, 0x41, 0xa5, 0x72, 0x62, 0x1b, 0x62, 0xc5, 0x1f, 0x6f, 0x5f, 0x1a, // 11232 + 0x42, 0xbe, 0x02, 0x51, 0x65, 0xa8, 0xae, 0x23, 0x18, 0x6a, 0xfc, 0x78, 0x03, 0xa9, 0x4d, 0x7f, // 11248 + 0x80, 0xc3, 0xfa, 0xab, 0x5a, 0xfc, 0xa1, 0x40, 0xa4, 0xca, 0x19, 0x16, 0xfe, 0xb2, 0xc8, 0xef, // 11264 + 0x5e, 0x73, 0x0d, 0xee, 0x77, 0xbd, 0x9a, 0xf6, 0x79, 0x98, 0xbc, 0xb1, 0x07, 0x67, 0xa2, 0x15, // 11280 + 0x0d, 0xdd, 0xa0, 0x58, 0xc6, 0x44, 0x7b, 0x0a, 0x3e, 0x62, 0x28, 0x5f, 0xba, 0x41, 0x07, 0x53, // 11296 + 0x58, 0xcf, 0x11, 0x7e, 0x38, 0x74, 0xc5, 0xf8, 0xff, 0xb5, 0x69, 0x90, 0x8f, 0x84, 0x74, 0xea, // 11312 + 0x97, 0x1b, 0xaf, 0x02, 0x01, 0x03, 0x00, 0x67, 0x01, 0x26, 0x30, 0x65, 0x31, 0x0b, 0x30, 0x09, // 11328 + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, // 11344 + 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, // 11360 + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2e, 0x64, // 11376 + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x24, 0x30, 0x22, 0x06, // 11392 + 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, // 11408 + 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, // 11424 + 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, // 11440 + 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, // 11456 + 0x01, 0x00, 0xad, 0x0e, 0x15, 0xce, 0xe4, 0x43, 0x80, 0x5c, 0xb1, 0x87, 0xf3, 0xb7, 0x60, 0xf9, // 11472 + 0x71, 0x12, 0xa5, 0xae, 0xdc, 0x26, 0x94, 0x88, 0xaa, 0xf4, 0xce, 0xf5, 0x20, 0x39, 0x28, 0x58, // 11488 + 0x60, 0x0c, 0xf8, 0x80, 0xda, 0xa9, 0x15, 0x95, 0x32, 0x61, 0x3c, 0xb5, 0xb1, 0x28, 0x84, 0x8a, // 11504 + 0x8a, 0xdc, 0x9f, 0x0a, 0x0c, 0x83, 0x17, 0x7a, 0x8f, 0x90, 0xac, 0x8a, 0xe7, 0x79, 0x53, 0x5c, // 11520 + 0x31, 0x84, 0x2a, 0xf6, 0x0f, 0x98, 0x32, 0x36, 0x76, 0xcc, 0xde, 0xdd, 0x3c, 0xa8, 0xa2, 0xef, // 11536 + 0x6a, 0xfb, 0x21, 0xf2, 0x52, 0x61, 0xdf, 0x9f, 0x20, 0xd7, 0x1f, 0xe2, 0xb1, 0xd9, 0xfe, 0x18, // 11552 + 0x64, 0xd2, 0x12, 0x5b, 0x5f, 0xf9, 0x58, 0x18, 0x35, 0xbc, 0x47, 0xcd, 0xa1, 0x36, 0xf9, 0x6b, // 11568 + 0x7f, 0xd4, 0xb0, 0x38, 0x3e, 0xc1, 0x1b, 0xc3, 0x8c, 0x33, 0xd9, 0xd8, 0x2f, 0x18, 0xfe, 0x28, // 11584 + 0x0f, 0xb3, 0xa7, 0x83, 0xd6, 0xc3, 0x6e, 0x44, 0xc0, 0x61, 0x35, 0x96, 0x16, 0xfe, 0x59, 0x9c, // 11600 + 0x8b, 0x76, 0x6d, 0xd7, 0xf1, 0xa2, 0x4b, 0x0d, 0x2b, 0xff, 0x0b, 0x72, 0xda, 0x9e, 0x60, 0xd0, // 11616 + 0x8e, 0x90, 0x35, 0xc6, 0x78, 0x55, 0x87, 0x20, 0xa1, 0xcf, 0xe5, 0x6d, 0x0a, 0xc8, 0x49, 0x7c, // 11632 + 0x31, 0x98, 0x33, 0x6c, 0x22, 0xe9, 0x87, 0xd0, 0x32, 0x5a, 0xa2, 0xba, 0x13, 0x82, 0x11, 0xed, // 11648 + 0x39, 0x17, 0x9d, 0x99, 0x3a, 0x72, 0xa1, 0xe6, 0xfa, 0xa4, 0xd9, 0xd5, 0x17, 0x31, 0x75, 0xae, // 11664 + 0x85, 0x7d, 0x22, 0xae, 0x3f, 0x01, 0x46, 0x86, 0xf6, 0x28, 0x79, 0xc8, 0xb1, 0xda, 0xe4, 0x57, // 11680 + 0x17, 0xc4, 0x7e, 0x1c, 0x0e, 0xb0, 0xb4, 0x92, 0xa6, 0x56, 0xb3, 0xbd, 0xb2, 0x97, 0xed, 0xaa, // 11696 + 0xa7, 0xf0, 0xb7, 0xc5, 0xa8, 0x3f, 0x95, 0x16, 0xd0, 0xff, 0xa1, 0x96, 0xeb, 0x08, 0x5f, 0x18, // 11712 + 0x77, 0x4f, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x67, 0x01, 0x26, 0x30, 0x65, 0x31, 0x0b, 0x30, // 11728 + 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, // 11744 + 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, // 11760 + 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2e, // 11776 + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x24, 0x30, 0x22, // 11792 + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, // 11808 + 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, // 11824 + 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, // 11840 + 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, // 11856 + 0x01, 0x01, 0x00, 0xd9, 0xe7, 0x28, 0x2f, 0x52, 0x3f, 0x36, 0x72, 0x49, 0x88, 0x93, 0x34, 0xf3, // 11872 + 0xf8, 0x6a, 0x1e, 0x31, 0x54, 0x80, 0x9f, 0xad, 0x54, 0x41, 0xb5, 0x47, 0xdf, 0x96, 0xa8, 0xd4, // 11888 + 0xaf, 0x80, 0x2d, 0xb9, 0x0a, 0xcf, 0x75, 0xfd, 0x89, 0xa5, 0x7d, 0x24, 0xfa, 0xe3, 0x22, 0x0c, // 11904 + 0x2b, 0xbc, 0x95, 0x17, 0x0b, 0x33, 0xbf, 0x19, 0x4d, 0x41, 0x06, 0x90, 0x00, 0xbd, 0x0c, 0x4d, // 11920 + 0x10, 0xfe, 0x07, 0xb5, 0xe7, 0x1c, 0x6e, 0x22, 0x55, 0x31, 0x65, 0x97, 0xbd, 0xd3, 0x17, 0xd2, // 11936 + 0x1e, 0x62, 0xf3, 0xdb, 0xea, 0x6c, 0x50, 0x8c, 0x3f, 0x84, 0x0c, 0x96, 0xcf, 0xb7, 0xcb, 0x03, // 11952 + 0xe0, 0xca, 0x6d, 0xa1, 0x14, 0x4c, 0x1b, 0x89, 0xdd, 0xed, 0x00, 0xb0, 0x52, 0x7c, 0xaf, 0x91, // 11968 + 0x6c, 0xb1, 0x38, 0x13, 0xd1, 0xe9, 0x12, 0x08, 0xc0, 0x00, 0xb0, 0x1c, 0x2b, 0x11, 0xda, 0x77, // 11984 + 0x70, 0x36, 0x9b, 0xae, 0xce, 0x79, 0x87, 0xdc, 0x82, 0x70, 0xe6, 0x09, 0x74, 0x70, 0x55, 0x69, // 12000 + 0xaf, 0xa3, 0x68, 0x9f, 0xbf, 0xdd, 0xb6, 0x79, 0xb3, 0xf2, 0x9d, 0x70, 0x29, 0x55, 0xf4, 0xab, // 12016 + 0xff, 0x95, 0x61, 0xf3, 0xc9, 0x40, 0x6f, 0x1d, 0xd1, 0xbe, 0x93, 0xbb, 0xd3, 0x88, 0x2a, 0xbb, // 12032 + 0x9d, 0xbf, 0x72, 0x5a, 0x56, 0x71, 0x3b, 0x3f, 0xd4, 0xf3, 0xd1, 0x0a, 0xfe, 0x28, 0xef, 0xa3, // 12048 + 0xee, 0xd9, 0x99, 0xaf, 0x03, 0xd3, 0x8f, 0x60, 0xb7, 0xf2, 0x92, 0xa1, 0xb1, 0xbd, 0x89, 0x89, // 12064 + 0x1f, 0x30, 0xcd, 0xc3, 0xa6, 0x2e, 0x62, 0x33, 0xae, 0x16, 0x02, 0x77, 0x44, 0x5a, 0xe7, 0x81, // 12080 + 0x0a, 0x3c, 0xa7, 0x44, 0x2e, 0x79, 0xb8, 0x3f, 0x04, 0xbc, 0x5c, 0xa0, 0x87, 0xe1, 0x1b, 0xaf, // 12096 + 0x51, 0x8e, 0xcd, 0xec, 0x2c, 0xfa, 0xf8, 0xfe, 0x6d, 0xf0, 0x3a, 0x7c, 0xaa, 0x8b, 0xe4, 0x67, // 12112 + 0x95, 0x31, 0x8d, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x67, 0x00, 0x78, 0x30, 0x65, 0x31, 0x0b, // 12128 + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, // 12144 + 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, // 12160 + 0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x10, 0x77, 0x77, 0x77, // 12176 + 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x31, 0x24, 0x30, // 12192 + 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1b, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, // 12208 + 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6f, 0x6f, 0x74, // 12224 + 0x20, 0x47, 0x33, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, // 12240 + 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0x19, 0xe7, 0xbc, 0xac, 0x44, // 12256 + 0x65, 0xed, 0xcd, 0xb8, 0x3f, 0x58, 0xfb, 0x8d, 0xb1, 0x57, 0xa9, 0x44, 0x2d, 0x05, 0x15, 0xf2, // 12272 + 0xef, 0x0b, 0xff, 0x10, 0x74, 0x9f, 0xb5, 0x62, 0x52, 0x5f, 0x66, 0x7e, 0x1f, 0xe5, 0xdc, 0x1b, // 12288 + 0x45, 0x79, 0x0b, 0xcc, 0xc6, 0x53, 0x0a, 0x9d, 0x8d, 0x5d, 0x02, 0xd9, 0xa9, 0x59, 0xde, 0x02, // 12304 + 0x5a, 0xf6, 0x95, 0x2a, 0x0e, 0x8d, 0x38, 0x4a, 0x8a, 0x49, 0xc6, 0xbc, 0xc6, 0x03, 0x38, 0x07, // 12320 + 0x5f, 0x55, 0xda, 0x7e, 0x09, 0x6e, 0xe2, 0x7f, 0x5e, 0xd0, 0x45, 0x20, 0x0f, 0x59, 0x76, 0x10, // 12336 + 0xd6, 0xa0, 0x24, 0xf0, 0x2d, 0xde, 0x36, 0xf2, 0x6c, 0x29, 0x39, 0x00, 0x6a, 0x01, 0x24, 0x30, // 12352 + 0x68, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x25, // 12368 + 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, // 12384 + 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, // 12400 + 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x29, // 12416 + 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, // 12432 + 0x32, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, // 12448 + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x20, 0x30, 0x0d, 0x06, // 12464 + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0d, // 12480 + 0x00, 0x30, 0x82, 0x01, 0x08, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb7, 0x32, 0xc8, 0xfe, 0xe9, 0x71, // 12496 + 0xa6, 0x04, 0x85, 0xad, 0x0c, 0x11, 0x64, 0xdf, 0xce, 0x4d, 0xef, 0xc8, 0x03, 0x18, 0x87, 0x3f, // 12512 + 0xa1, 0xab, 0xfb, 0x3c, 0xa6, 0x9f, 0xf0, 0xc3, 0xa1, 0xda, 0xd4, 0xd8, 0x6e, 0x2b, 0x53, 0x90, // 12528 + 0xfb, 0x24, 0xa4, 0x3e, 0x84, 0xf0, 0x9e, 0xe8, 0x5f, 0xec, 0xe5, 0x27, 0x44, 0xf5, 0x28, 0xa6, // 12544 + 0x3f, 0x7b, 0xde, 0xe0, 0x2a, 0xf0, 0xc8, 0xaf, 0x53, 0x2f, 0x9e, 0xca, 0x05, 0x01, 0x93, 0x1e, // 12560 + 0x8f, 0x66, 0x1c, 0x39, 0xa7, 0x4d, 0xfa, 0x5a, 0xb6, 0x73, 0x04, 0x25, 0x66, 0xeb, 0x77, 0x7f, // 12576 + 0xe7, 0x59, 0xc6, 0x4a, 0x99, 0x25, 0x14, 0x54, 0xeb, 0x26, 0xc7, 0xf3, 0x7f, 0x19, 0xd5, 0x30, // 12592 + 0x70, 0x8f, 0xaf, 0xb0, 0x46, 0x2a, 0xff, 0xad, 0xeb, 0x29, 0xed, 0xd7, 0x9f, 0xaa, 0x04, 0x87, // 12608 + 0xa3, 0xd4, 0xf9, 0x89, 0xa5, 0x34, 0x5f, 0xdb, 0x43, 0x91, 0x82, 0x36, 0xd9, 0x66, 0x3c, 0xb1, // 12624 + 0xb8, 0xb9, 0x82, 0xfd, 0x9c, 0x3a, 0x3e, 0x10, 0xc8, 0x3b, 0xef, 0x06, 0x65, 0x66, 0x7a, 0x9b, // 12640 + 0x19, 0x18, 0x3d, 0xff, 0x71, 0x51, 0x3c, 0x30, 0x2e, 0x5f, 0xbe, 0x3d, 0x77, 0x73, 0xb2, 0x5d, // 12656 + 0x06, 0x6c, 0xc3, 0x23, 0x56, 0x9a, 0x2b, 0x85, 0x26, 0x92, 0x1c, 0xa7, 0x02, 0xb3, 0xe4, 0x3f, // 12672 + 0x0d, 0xaf, 0x08, 0x79, 0x82, 0xb8, 0x36, 0x3d, 0xea, 0x9c, 0xd3, 0x35, 0xb3, 0xbc, 0x69, 0xca, // 12688 + 0xf5, 0xcc, 0x9d, 0xe8, 0xfd, 0x64, 0x8d, 0x17, 0x80, 0x33, 0x6e, 0x5e, 0x4a, 0x5d, 0x99, 0xc9, // 12704 + 0x1e, 0x87, 0xb4, 0x9d, 0x1a, 0xc0, 0xd5, 0x6e, 0x13, 0x35, 0x23, 0x5e, 0xdf, 0x9b, 0x5f, 0x3d, // 12720 + 0xef, 0xd6, 0xf7, 0x76, 0xc2, 0xea, 0x3e, 0xbb, 0x78, 0x0d, 0x1c, 0x42, 0x67, 0x6b, 0x04, 0xd8, // 12736 + 0xf8, 0xd6, 0xda, 0x6f, 0x8b, 0xf2, 0x44, 0xa0, 0x01, 0xab, 0x02, 0x01, 0x03, 0x00, 0x6e, 0x01, // 12752 + 0x26, 0x30, 0x6c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, // 12768 + 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0c, 0x44, 0x69, 0x67, 0x69, 0x43, // 12784 + 0x65, 0x72, 0x74, 0x20, 0x49, 0x6e, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0b, // 12800 + 0x13, 0x10, 0x77, 0x77, 0x77, 0x2e, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, // 12816 + 0x6f, 0x6d, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x44, 0x69, 0x67, // 12832 + 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, // 12848 + 0x61, 0x6e, 0x63, 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x30, // 12864 + 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, // 12880 + 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, // 12896 + 0xc6, 0xcc, 0xe5, 0x73, 0xe6, 0xfb, 0xd4, 0xbb, 0xe5, 0x2d, 0x2d, 0x32, 0xa6, 0xdf, 0xe5, 0x81, // 12912 + 0x3f, 0xc9, 0xcd, 0x25, 0x49, 0xb6, 0x71, 0x2a, 0xc3, 0xd5, 0x94, 0x34, 0x67, 0xa2, 0x0a, 0x1c, // 12928 + 0xb0, 0x5f, 0x69, 0xa6, 0x40, 0xb1, 0xc4, 0xb7, 0xb2, 0x8f, 0xd0, 0x98, 0xa4, 0xa9, 0x41, 0x59, // 12944 + 0x3a, 0xd3, 0xdc, 0x94, 0xd6, 0x3c, 0xdb, 0x74, 0x38, 0xa4, 0x4a, 0xcc, 0x4d, 0x25, 0x82, 0xf7, // 12960 + 0x4a, 0xa5, 0x53, 0x12, 0x38, 0xee, 0xf3, 0x49, 0x6d, 0x71, 0x91, 0x7e, 0x63, 0xb6, 0xab, 0xa6, // 12976 + 0x5f, 0xc3, 0xa4, 0x84, 0xf8, 0x4f, 0x62, 0x51, 0xbe, 0xf8, 0xc5, 0xec, 0xdb, 0x38, 0x92, 0xe3, // 12992 + 0x06, 0xe5, 0x08, 0x91, 0x0c, 0xc4, 0x28, 0x41, 0x55, 0xfb, 0xcb, 0x5a, 0x89, 0x15, 0x7e, 0x71, // 13008 + 0xe8, 0x35, 0xbf, 0x4d, 0x72, 0x09, 0x3d, 0xbe, 0x3a, 0x38, 0x50, 0x5b, 0x77, 0x31, 0x1b, 0x8d, // 13024 + 0xb3, 0xc7, 0x24, 0x45, 0x9a, 0xa7, 0xac, 0x6d, 0x00, 0x14, 0x5a, 0x04, 0xb7, 0xba, 0x13, 0xeb, // 13040 + 0x51, 0x0a, 0x98, 0x41, 0x41, 0x22, 0x4e, 0x65, 0x61, 0x87, 0x81, 0x41, 0x50, 0xa6, 0x79, 0x5c, // 13056 + 0x89, 0xde, 0x19, 0x4a, 0x57, 0xd5, 0x2e, 0xe6, 0x5d, 0x1c, 0x53, 0x2c, 0x7e, 0x98, 0xcd, 0x1a, // 13072 + 0x06, 0x16, 0xa4, 0x68, 0x73, 0xd0, 0x34, 0x04, 0x13, 0x5c, 0xa1, 0x71, 0xd3, 0x5a, 0x7c, 0x55, // 13088 + 0xdb, 0x5e, 0x64, 0xe1, 0x37, 0x87, 0x30, 0x56, 0x04, 0xe5, 0x11, 0xb4, 0x29, 0x80, 0x12, 0xf1, // 13104 + 0x79, 0x39, 0x88, 0xa2, 0x02, 0x11, 0x7c, 0x27, 0x66, 0xb7, 0x88, 0xb7, 0x78, 0xf2, 0xca, 0x0a, // 13120 + 0xa8, 0x38, 0xab, 0x0a, 0x64, 0xc2, 0xbf, 0x66, 0x5d, 0x95, 0x84, 0xc1, 0xa1, 0x25, 0x1e, 0x87, // 13136 + 0x5d, 0x1a, 0x50, 0x0b, 0x20, 0x12, 0xcc, 0x41, 0xbb, 0x6e, 0x0b, 0x51, 0x38, 0xb8, 0x4b, 0xcb, // 13152 + 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x84, 0x01, 0x26, 0x30, 0x81, 0x81, 0x31, 0x0b, 0x30, 0x09, // 13168 + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, // 13184 + 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, // 13200 + 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, // 13216 + 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, // 13232 + 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, // 13248 + 0x69, 0x74, 0x65, 0x64, 0x31, 0x27, 0x30, 0x25, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1e, 0x43, // 13264 + 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, // 13280 + 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, // 13296 + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, // 13312 + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xd0, 0x40, // 13328 + 0x8b, 0x8b, 0x72, 0xe3, 0x91, 0x1b, 0xf7, 0x51, 0xc1, 0x1b, 0x54, 0x04, 0x98, 0xd3, 0xa9, 0xbf, // 13344 + 0xc1, 0xe6, 0x8a, 0x5d, 0x3b, 0x87, 0xfb, 0xbb, 0x88, 0xce, 0x0d, 0xe3, 0x2f, 0x3f, 0x06, 0x96, // 13360 + 0xf0, 0xa2, 0x29, 0x50, 0x99, 0xae, 0xdb, 0x3b, 0xa1, 0x57, 0xb0, 0x74, 0x51, 0x71, 0xcd, 0xed, // 13376 + 0x42, 0x91, 0x4d, 0x41, 0xfe, 0xa9, 0xc8, 0xd8, 0x6a, 0x86, 0x77, 0x44, 0xbb, 0x59, 0x66, 0x97, // 13392 + 0x50, 0x5e, 0xb4, 0xd4, 0x2c, 0x70, 0x44, 0xcf, 0xda, 0x37, 0x95, 0x42, 0x69, 0x3c, 0x30, 0xc4, // 13408 + 0x71, 0xb3, 0x52, 0xf0, 0x21, 0x4d, 0xa1, 0xd8, 0xba, 0x39, 0x7c, 0x1c, 0x9e, 0xa3, 0x24, 0x9d, // 13424 + 0xf2, 0x83, 0x16, 0x98, 0xaa, 0x16, 0x7c, 0x43, 0x9b, 0x15, 0x5b, 0xb7, 0xae, 0x34, 0x91, 0xfe, // 13440 + 0xd4, 0x62, 0x26, 0x18, 0x46, 0x9a, 0x3f, 0xeb, 0xc1, 0xf9, 0xf1, 0x90, 0x57, 0xeb, 0xac, 0x7a, // 13456 + 0x0d, 0x8b, 0xdb, 0x72, 0x30, 0x6a, 0x66, 0xd5, 0xe0, 0x46, 0xa3, 0x70, 0xdc, 0x68, 0xd9, 0xff, // 13472 + 0x04, 0x48, 0x89, 0x77, 0xde, 0xb5, 0xe9, 0xfb, 0x67, 0x6d, 0x41, 0xe9, 0xbc, 0x39, 0xbd, 0x32, // 13488 + 0xd9, 0x62, 0x02, 0xf1, 0xb1, 0xa8, 0x3d, 0x6e, 0x37, 0x9c, 0xe2, 0x2f, 0xe2, 0xd3, 0xa2, 0x26, // 13504 + 0x8b, 0xc6, 0xb8, 0x55, 0x43, 0x88, 0xe1, 0x23, 0x3e, 0xa5, 0xd2, 0x24, 0x39, 0x6a, 0x47, 0xab, // 13520 + 0x00, 0xd4, 0xa1, 0xb3, 0xa9, 0x25, 0xfe, 0x0d, 0x3f, 0xa7, 0x1d, 0xba, 0xd3, 0x51, 0xc1, 0x0b, // 13536 + 0xa4, 0xda, 0xac, 0x38, 0xef, 0x55, 0x50, 0x24, 0x05, 0x65, 0x46, 0x93, 0x34, 0x4f, 0x2d, 0x8d, // 13552 + 0xad, 0xc6, 0xd4, 0x21, 0x19, 0xd2, 0x8e, 0xca, 0x05, 0x61, 0x71, 0x07, 0x73, 0x47, 0xe5, 0x8a, // 13568 + 0x19, 0x12, 0xbd, 0x04, 0x4d, 0xce, 0x4e, 0x9c, 0xa5, 0x48, 0xac, 0xbb, 0x26, 0xf7, 0x02, 0x03, // 13584 + 0x01, 0x00, 0x01, 0x00, 0x86, 0x01, 0x26, 0x30, 0x81, 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, // 13600 + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, // 13616 + 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, // 13632 + 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x1a, // 13648 + 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x11, 0x47, 0x6f, 0x44, 0x61, 0x64, 0x64, 0x79, // 13664 + 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x31, 0x30, 0x2f, 0x06, 0x03, // 13680 + 0x55, 0x04, 0x03, 0x13, 0x28, 0x47, 0x6f, 0x20, 0x44, 0x61, 0x64, 0x64, 0x79, 0x20, 0x52, 0x6f, // 13696 + 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, // 13712 + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, // 13728 + 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, // 13744 + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbf, 0x71, // 13760 + 0x62, 0x08, 0xf1, 0xfa, 0x59, 0x34, 0xf7, 0x1b, 0xc9, 0x18, 0xa3, 0xf7, 0x80, 0x49, 0x58, 0xe9, // 13776 + 0x22, 0x83, 0x13, 0xa6, 0xc5, 0x20, 0x43, 0x01, 0x3b, 0x84, 0xf1, 0xe6, 0x85, 0x49, 0x9f, 0x27, // 13792 + 0xea, 0xf6, 0x84, 0x1b, 0x4e, 0xa0, 0xb4, 0xdb, 0x70, 0x98, 0xc7, 0x32, 0x01, 0xb1, 0x05, 0x3e, // 13808 + 0x07, 0x4e, 0xee, 0xf4, 0xfa, 0x4f, 0x2f, 0x59, 0x30, 0x22, 0xe7, 0xab, 0x19, 0x56, 0x6b, 0xe2, // 13824 + 0x80, 0x07, 0xfc, 0xf3, 0x16, 0x75, 0x80, 0x39, 0x51, 0x7b, 0xe5, 0xf9, 0x35, 0xb6, 0x74, 0x4e, // 13840 + 0xa9, 0x8d, 0x82, 0x13, 0xe4, 0xb6, 0x3f, 0xa9, 0x03, 0x83, 0xfa, 0xa2, 0xbe, 0x8a, 0x15, 0x6a, // 13856 + 0x7f, 0xde, 0x0b, 0xc3, 0xb6, 0x19, 0x14, 0x05, 0xca, 0xea, 0xc3, 0xa8, 0x04, 0x94, 0x3b, 0x46, // 13872 + 0x7c, 0x32, 0x0d, 0xf3, 0x00, 0x66, 0x22, 0xc8, 0x8d, 0x69, 0x6d, 0x36, 0x8c, 0x11, 0x18, 0xb7, // 13888 + 0xd3, 0xb2, 0x1c, 0x60, 0xb4, 0x38, 0xfa, 0x02, 0x8c, 0xce, 0xd3, 0xdd, 0x46, 0x07, 0xde, 0x0a, // 13904 + 0x3e, 0xeb, 0x5d, 0x7c, 0xc8, 0x7c, 0xfb, 0xb0, 0x2b, 0x53, 0xa4, 0x92, 0x62, 0x69, 0x51, 0x25, // 13920 + 0x05, 0x61, 0x1a, 0x44, 0x81, 0x8c, 0x2c, 0xa9, 0x43, 0x96, 0x23, 0xdf, 0xac, 0x3a, 0x81, 0x9a, // 13936 + 0x0e, 0x29, 0xc5, 0x1c, 0xa9, 0xe9, 0x5d, 0x1e, 0xb6, 0x9e, 0x9e, 0x30, 0x0a, 0x39, 0xce, 0xf1, // 13952 + 0x88, 0x80, 0xfb, 0x4b, 0x5d, 0xcc, 0x32, 0xec, 0x85, 0x62, 0x43, 0x25, 0x34, 0x02, 0x56, 0x27, // 13968 + 0x01, 0x91, 0xb4, 0x3b, 0x70, 0x2a, 0x3f, 0x6e, 0xb1, 0xe8, 0x9c, 0x88, 0x01, 0x7d, 0x9f, 0xd4, // 13984 + 0xf9, 0xdb, 0x53, 0x6d, 0x60, 0x9d, 0xbf, 0x2c, 0xe7, 0x58, 0xab, 0xb8, 0x5f, 0x46, 0xfc, 0xce, // 14000 + 0xc4, 0x1b, 0x03, 0x3c, 0x09, 0xeb, 0x49, 0x31, 0x5c, 0x69, 0x46, 0xb3, 0xe0, 0x47, 0x02, 0x03, // 14016 + 0x01, 0x00, 0x01, 0x00, 0x88, 0x00, 0x78, 0x30, 0x81, 0x85, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, // 14032 + 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, // 14048 + 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, 0x6e, 0x63, 0x68, 0x65, // 14064 + 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, // 14080 + 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, // 14096 + 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, 0x69, 0x6d, 0x69, 0x74, // 14112 + 0x65, 0x64, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x43, 0x4f, 0x4d, // 14128 + 0x4f, 0x44, 0x4f, 0x20, 0x45, 0x43, 0x43, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, // 14144 + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, // 14160 + 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, // 14176 + 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, 0x03, 0x47, 0x7b, 0x2f, 0x75, 0xc9, 0x82, 0x15, 0x85, // 14192 + 0xfb, 0x75, 0xe4, 0x91, 0x16, 0xd4, 0xab, 0x62, 0x99, 0xf5, 0x3e, 0x52, 0x0b, 0x06, 0xce, 0x41, // 14208 + 0x00, 0x7f, 0x97, 0xe1, 0x0a, 0x24, 0x3c, 0x1d, 0x01, 0x04, 0xee, 0x3d, 0xd2, 0x8d, 0x09, 0x97, // 14224 + 0x0c, 0xe0, 0x75, 0xe4, 0xfa, 0xfb, 0x77, 0x8a, 0x2a, 0xf5, 0x03, 0x60, 0x4b, 0x36, 0x8b, 0x16, // 14240 + 0x23, 0x16, 0xad, 0x09, 0x71, 0xf4, 0x4a, 0xf4, 0x28, 0x50, 0xb4, 0xfe, 0x88, 0x1c, 0x6e, 0x3f, // 14256 + 0x6c, 0x2f, 0x2f, 0x09, 0x59, 0x5b, 0xa5, 0x5b, 0x0b, 0x33, 0x99, 0xe2, 0xc3, 0x3d, 0x89, 0xf9, // 14272 + 0x6a, 0x2c, 0xef, 0xb2, 0xd3, 0x06, 0xe9, 0x00, 0x88, 0x02, 0x26, 0x30, 0x81, 0x85, 0x31, 0x0b, // 14288 + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1b, 0x30, 0x19, 0x06, // 14304 + 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4d, 0x61, // 14320 + 0x6e, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, // 14336 + 0x07, 0x13, 0x07, 0x53, 0x61, 0x6c, 0x66, 0x6f, 0x72, 0x64, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, // 14352 + 0x55, 0x04, 0x0a, 0x13, 0x11, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x43, 0x41, 0x20, 0x4c, // 14368 + 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, // 14384 + 0x22, 0x43, 0x4f, 0x4d, 0x4f, 0x44, 0x4f, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, // 14400 + 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, // 14416 + 0x69, 0x74, 0x79, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, // 14432 + 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, // 14448 + 0x82, 0x02, 0x01, 0x00, 0x91, 0xe8, 0x54, 0x92, 0xd2, 0x0a, 0x56, 0xb1, 0xac, 0x0d, 0x24, 0xdd, // 14464 + 0xc5, 0xcf, 0x44, 0x67, 0x74, 0x99, 0x2b, 0x37, 0xa3, 0x7d, 0x23, 0x70, 0x00, 0x71, 0xbc, 0x53, // 14480 + 0xdf, 0xc4, 0xfa, 0x2a, 0x12, 0x8f, 0x4b, 0x7f, 0x10, 0x56, 0xbd, 0x9f, 0x70, 0x72, 0xb7, 0x61, // 14496 + 0x7f, 0xc9, 0x4b, 0x0f, 0x17, 0xa7, 0x3d, 0xe3, 0xb0, 0x04, 0x61, 0xee, 0xff, 0x11, 0x97, 0xc7, // 14512 + 0xf4, 0x86, 0x3e, 0x0a, 0xfa, 0x3e, 0x5c, 0xf9, 0x93, 0xe6, 0x34, 0x7a, 0xd9, 0x14, 0x6b, 0xe7, // 14528 + 0x9c, 0xb3, 0x85, 0xa0, 0x82, 0x7a, 0x76, 0xaf, 0x71, 0x90, 0xd7, 0xec, 0xfd, 0x0d, 0xfa, 0x9c, // 14544 + 0x6c, 0xfa, 0xdf, 0xb0, 0x82, 0xf4, 0x14, 0x7e, 0xf9, 0xbe, 0xc4, 0xa6, 0x2f, 0x4f, 0x7f, 0x99, // 14560 + 0x7f, 0xb5, 0xfc, 0x67, 0x43, 0x72, 0xbd, 0x0c, 0x00, 0xd6, 0x89, 0xeb, 0x6b, 0x2c, 0xd3, 0xed, // 14576 + 0x8f, 0x98, 0x1c, 0x14, 0xab, 0x7e, 0xe5, 0xe3, 0x6e, 0xfc, 0xd8, 0xa8, 0xe4, 0x92, 0x24, 0xda, // 14592 + 0x43, 0x6b, 0x62, 0xb8, 0x55, 0xfd, 0xea, 0xc1, 0xbc, 0x6c, 0xb6, 0x8b, 0xf3, 0x0e, 0x8d, 0x9a, // 14608 + 0xe4, 0x9b, 0x6c, 0x69, 0x99, 0xf8, 0x78, 0x48, 0x30, 0x45, 0xd5, 0xad, 0xe1, 0x0d, 0x3c, 0x45, // 14624 + 0x60, 0xfc, 0x32, 0x96, 0x51, 0x27, 0xbc, 0x67, 0xc3, 0xca, 0x2e, 0xb6, 0x6b, 0xea, 0x46, 0xc7, // 14640 + 0xc7, 0x20, 0xa0, 0xb1, 0x1f, 0x65, 0xde, 0x48, 0x08, 0xba, 0xa4, 0x4e, 0xa9, 0xf2, 0x83, 0x46, // 14656 + 0x37, 0x84, 0xeb, 0xe8, 0xcc, 0x81, 0x48, 0x43, 0x67, 0x4e, 0x72, 0x2a, 0x9b, 0x5c, 0xbd, 0x4c, // 14672 + 0x1b, 0x28, 0x8a, 0x5c, 0x22, 0x7b, 0xb4, 0xab, 0x98, 0xd9, 0xee, 0xe0, 0x51, 0x83, 0xc3, 0x09, // 14688 + 0x46, 0x4e, 0x6d, 0x3e, 0x99, 0xfa, 0x95, 0x17, 0xda, 0x7c, 0x33, 0x57, 0x41, 0x3c, 0x8d, 0x51, // 14704 + 0xed, 0x0b, 0xb6, 0x5c, 0xaf, 0x2c, 0x63, 0x1a, 0xdf, 0x57, 0xc8, 0x3f, 0xbc, 0xe9, 0x5d, 0xc4, // 14720 + 0x9b, 0xaf, 0x45, 0x99, 0xe2, 0xa3, 0x5a, 0x24, 0xb4, 0xba, 0xa9, 0x56, 0x3d, 0xcf, 0x6f, 0xaa, // 14736 + 0xff, 0x49, 0x58, 0xbe, 0xf0, 0xa8, 0xff, 0xf4, 0xb8, 0xad, 0xe9, 0x37, 0xfb, 0xba, 0xb8, 0xf4, // 14752 + 0x0b, 0x3a, 0xf9, 0xe8, 0x43, 0x42, 0x1e, 0x89, 0xd8, 0x84, 0xcb, 0x13, 0xf1, 0xd9, 0xbb, 0xe1, // 14768 + 0x89, 0x60, 0xb8, 0x8c, 0x28, 0x56, 0xac, 0x14, 0x1d, 0x9c, 0x0a, 0xe7, 0x71, 0xeb, 0xcf, 0x0e, // 14784 + 0xdd, 0x3d, 0xa9, 0x96, 0xa1, 0x48, 0xbd, 0x3c, 0xf7, 0xaf, 0xb5, 0x0d, 0x22, 0x4c, 0xc0, 0x11, // 14800 + 0x81, 0xec, 0x56, 0x3b, 0xf6, 0xd3, 0xa2, 0xe2, 0x5b, 0xb7, 0xb2, 0x04, 0x22, 0x52, 0x95, 0x80, // 14816 + 0x93, 0x69, 0xe8, 0x8e, 0x4c, 0x65, 0xf1, 0x91, 0x03, 0x2d, 0x70, 0x74, 0x02, 0xea, 0x8b, 0x67, // 14832 + 0x15, 0x29, 0x69, 0x52, 0x02, 0xbb, 0xd7, 0xdf, 0x50, 0x6a, 0x55, 0x46, 0xbf, 0xa0, 0xa3, 0x28, // 14848 + 0x61, 0x7f, 0x70, 0xd0, 0xc3, 0xa2, 0xaa, 0x2c, 0x21, 0xaa, 0x47, 0xce, 0x28, 0x9c, 0x06, 0x45, // 14864 + 0x76, 0xbf, 0x82, 0x18, 0x27, 0xb4, 0xd5, 0xae, 0xb4, 0xcb, 0x50, 0xe6, 0x6b, 0xf4, 0x4c, 0x86, // 14880 + 0x71, 0x30, 0xe9, 0xa6, 0xdf, 0x16, 0x86, 0xe0, 0xd8, 0xff, 0x40, 0xdd, 0xfb, 0xd0, 0x42, 0x88, // 14896 + 0x7f, 0xa3, 0x33, 0x3a, 0x2e, 0x5c, 0x1e, 0x41, 0x11, 0x81, 0x63, 0xce, 0x18, 0x71, 0x6b, 0x2b, // 14912 + 0xec, 0xa6, 0x8a, 0xb7, 0x31, 0x5c, 0x3a, 0x6a, 0x47, 0xe0, 0xc3, 0x79, 0x59, 0xd6, 0x20, 0x1a, // 14928 + 0xaf, 0xf2, 0x6a, 0x98, 0xaa, 0x72, 0xbc, 0x57, 0x4a, 0xd2, 0x4b, 0x9d, 0xbb, 0x10, 0xfc, 0xb0, // 14944 + 0x4c, 0x41, 0xe5, 0xed, 0x1d, 0x3d, 0x5e, 0x28, 0x9d, 0x9c, 0xcc, 0xbf, 0xb3, 0x51, 0xda, 0xa7, // 14960 + 0x47, 0xe5, 0x84, 0x53, 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x8b, 0x00, 0x78, 0x30, 0x81, 0x88, // 14976 + 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, // 14992 + 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x4e, 0x65, 0x77, 0x20, 0x4a, 0x65, 0x72, 0x73, // 15008 + 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0b, 0x4a, 0x65, 0x72, // 15024 + 0x73, 0x65, 0x79, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, // 15040 + 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, // 15056 + 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, // 15072 + 0x03, 0x13, 0x25, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x45, 0x43, 0x43, // 15088 + 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, // 15104 + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x76, 0x30, 0x10, 0x06, 0x07, 0x2a, 0x86, // 15120 + 0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x05, 0x2b, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, // 15136 + 0x1a, 0xac, 0x54, 0x5a, 0xa9, 0xf9, 0x68, 0x23, 0xe7, 0x7a, 0xd5, 0x24, 0x6f, 0x53, 0xc6, 0x5a, // 15152 + 0xd8, 0x4b, 0xab, 0xc6, 0xd5, 0xb6, 0xd1, 0xe6, 0x73, 0x71, 0xae, 0xdd, 0x9c, 0xd6, 0x0c, 0x61, // 15168 + 0xfd, 0xdb, 0xa0, 0x89, 0x03, 0xb8, 0x05, 0x14, 0xec, 0x57, 0xce, 0xee, 0x5d, 0x3f, 0xe2, 0x21, // 15184 + 0xb3, 0xce, 0xf7, 0xd4, 0x8a, 0x79, 0xe0, 0xa3, 0x83, 0x7e, 0x2d, 0x97, 0xd0, 0x61, 0xc4, 0xf1, // 15200 + 0x99, 0xdc, 0x25, 0x91, 0x63, 0xab, 0x7f, 0x30, 0xa3, 0xb4, 0x70, 0xe2, 0xc7, 0xa1, 0x33, 0x9c, // 15216 + 0xf3, 0xbf, 0x2e, 0x5c, 0x53, 0xb1, 0x5f, 0xb3, 0x7d, 0x32, 0x7f, 0x8a, 0x34, 0xe3, 0x79, 0x79, // 15232 + 0x00, 0x8b, 0x02, 0x26, 0x30, 0x81, 0x88, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, // 15248 + 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x4e, // 15264 + 0x65, 0x77, 0x20, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, // 15280 + 0x04, 0x07, 0x13, 0x0b, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43, 0x69, 0x74, 0x79, 0x31, // 15296 + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, // 15312 + 0x45, 0x52, 0x54, 0x52, 0x55, 0x53, 0x54, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, // 15328 + 0x2e, 0x30, 0x2c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, // 15344 + 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, // 15360 + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, // 15376 + 0x82, 0x02, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, // 15392 + 0x05, 0x00, 0x03, 0x82, 0x02, 0x0f, 0x00, 0x30, 0x82, 0x02, 0x0a, 0x02, 0x82, 0x02, 0x01, 0x00, // 15408 + 0x80, 0x12, 0x65, 0x17, 0x36, 0x0e, 0xc3, 0xdb, 0x08, 0xb3, 0xd0, 0xac, 0x57, 0x0d, 0x76, 0xed, // 15424 + 0xcd, 0x27, 0xd3, 0x4c, 0xad, 0x50, 0x83, 0x61, 0xe2, 0xaa, 0x20, 0x4d, 0x09, 0x2d, 0x64, 0x09, // 15440 + 0xdc, 0xce, 0x89, 0x9f, 0xcc, 0x3d, 0xa9, 0xec, 0xf6, 0xcf, 0xc1, 0xdc, 0xf1, 0xd3, 0xb1, 0xd6, // 15456 + 0x7b, 0x37, 0x28, 0x11, 0x2b, 0x47, 0xda, 0x39, 0xc6, 0xbc, 0x3a, 0x19, 0xb4, 0x5f, 0xa6, 0xbd, // 15472 + 0x7d, 0x9d, 0xa3, 0x63, 0x42, 0xb6, 0x76, 0xf2, 0xa9, 0x3b, 0x2b, 0x91, 0xf8, 0xe2, 0x6f, 0xd0, // 15488 + 0xec, 0x16, 0x20, 0x90, 0x09, 0x3e, 0xe2, 0xe8, 0x74, 0xc9, 0x18, 0xb4, 0x91, 0xd4, 0x62, 0x64, // 15504 + 0xdb, 0x7f, 0xa3, 0x06, 0xf1, 0x88, 0x18, 0x6a, 0x90, 0x22, 0x3c, 0xbc, 0xfe, 0x13, 0xf0, 0x87, // 15520 + 0x14, 0x7b, 0xf6, 0xe4, 0x1f, 0x8e, 0xd4, 0xe4, 0x51, 0xc6, 0x11, 0x67, 0x46, 0x08, 0x51, 0xcb, // 15536 + 0x86, 0x14, 0x54, 0x3f, 0xbc, 0x33, 0xfe, 0x7e, 0x6c, 0x9c, 0xff, 0x16, 0x9d, 0x18, 0xbd, 0x51, // 15552 + 0x8e, 0x35, 0xa6, 0xa7, 0x66, 0xc8, 0x72, 0x67, 0xdb, 0x21, 0x66, 0xb1, 0xd4, 0x9b, 0x78, 0x03, // 15568 + 0xc0, 0x50, 0x3a, 0xe8, 0xcc, 0xf0, 0xdc, 0xbc, 0x9e, 0x4c, 0xfe, 0xaf, 0x05, 0x96, 0x35, 0x1f, // 15584 + 0x57, 0x5a, 0xb7, 0xff, 0xce, 0xf9, 0x3d, 0xb7, 0x2c, 0xb6, 0xf6, 0x54, 0xdd, 0xc8, 0xe7, 0x12, // 15600 + 0x3a, 0x4d, 0xae, 0x4c, 0x8a, 0xb7, 0x5c, 0x9a, 0xb4, 0xb7, 0x20, 0x3d, 0xca, 0x7f, 0x22, 0x34, // 15616 + 0xae, 0x7e, 0x3b, 0x68, 0x66, 0x01, 0x44, 0xe7, 0x01, 0x4e, 0x46, 0x53, 0x9b, 0x33, 0x60, 0xf7, // 15632 + 0x94, 0xbe, 0x53, 0x37, 0x90, 0x73, 0x43, 0xf3, 0x32, 0xc3, 0x53, 0xef, 0xdb, 0xaa, 0xfe, 0x74, // 15648 + 0x4e, 0x69, 0xc7, 0x6b, 0x8c, 0x60, 0x93, 0xde, 0xc4, 0xc7, 0x0c, 0xdf, 0xe1, 0x32, 0xae, 0xcc, // 15664 + 0x93, 0x3b, 0x51, 0x78, 0x95, 0x67, 0x8b, 0xee, 0x3d, 0x56, 0xfe, 0x0c, 0xd0, 0x69, 0x0f, 0x1b, // 15680 + 0x0f, 0xf3, 0x25, 0x26, 0x6b, 0x33, 0x6d, 0xf7, 0x6e, 0x47, 0xfa, 0x73, 0x43, 0xe5, 0x7e, 0x0e, // 15696 + 0xa5, 0x66, 0xb1, 0x29, 0x7c, 0x32, 0x84, 0x63, 0x55, 0x89, 0xc4, 0x0d, 0xc1, 0x93, 0x54, 0x30, // 15712 + 0x19, 0x13, 0xac, 0xd3, 0x7d, 0x37, 0xa7, 0xeb, 0x5d, 0x3a, 0x6c, 0x35, 0x5c, 0xdb, 0x41, 0xd7, // 15728 + 0x12, 0xda, 0xa9, 0x49, 0x0b, 0xdf, 0xd8, 0x80, 0x8a, 0x09, 0x93, 0x62, 0x8e, 0xb5, 0x66, 0xcf, // 15744 + 0x25, 0x88, 0xcd, 0x84, 0xb8, 0xb1, 0x3f, 0xa4, 0x39, 0x0f, 0xd9, 0x02, 0x9e, 0xeb, 0x12, 0x4c, // 15760 + 0x95, 0x7c, 0xf3, 0x6b, 0x05, 0xa9, 0x5e, 0x16, 0x83, 0xcc, 0xb8, 0x67, 0xe2, 0xe8, 0x13, 0x9d, // 15776 + 0xcc, 0x5b, 0x82, 0xd3, 0x4c, 0xb3, 0xed, 0x5b, 0xff, 0xde, 0xe5, 0x73, 0xac, 0x23, 0x3b, 0x2d, // 15792 + 0x00, 0xbf, 0x35, 0x55, 0x74, 0x09, 0x49, 0xd8, 0x49, 0x58, 0x1a, 0x7f, 0x92, 0x36, 0xe6, 0x51, // 15808 + 0x92, 0x0e, 0xf3, 0x26, 0x7d, 0x1c, 0x4d, 0x17, 0xbc, 0xc9, 0xec, 0x43, 0x26, 0xd0, 0xbf, 0x41, // 15824 + 0x5f, 0x40, 0xa9, 0x44, 0x44, 0xf4, 0x99, 0xe7, 0x57, 0x87, 0x9e, 0x50, 0x1f, 0x57, 0x54, 0xa8, // 15840 + 0x3e, 0xfd, 0x74, 0x63, 0x2f, 0xb1, 0x50, 0x65, 0x09, 0xe6, 0x58, 0x42, 0x2e, 0x43, 0x1a, 0x4c, // 15856 + 0xb4, 0xf0, 0x25, 0x47, 0x59, 0xfa, 0x04, 0x1e, 0x93, 0xd4, 0x26, 0x46, 0x4a, 0x50, 0x81, 0xb2, // 15872 + 0xde, 0xbe, 0x78, 0xb7, 0xfc, 0x67, 0x15, 0xe1, 0xc9, 0x57, 0x84, 0x1e, 0x0f, 0x63, 0xd6, 0xe9, // 15888 + 0x62, 0xba, 0xd6, 0x5f, 0x55, 0x2e, 0xea, 0x5c, 0xc6, 0x28, 0x08, 0x04, 0x25, 0x39, 0xb8, 0x0e, // 15904 + 0x2b, 0xa9, 0xf2, 0x4c, 0x97, 0x1c, 0x07, 0x3f, 0x0d, 0x52, 0xf5, 0xed, 0xef, 0x2f, 0x82, 0x0f, // 15920 + 0x02, 0x03, 0x01, 0x00, 0x01, 0x00, 0x92, 0x01, 0x26, 0x30, 0x81, 0x8f, 0x31, 0x0b, 0x30, 0x09, // 15936 + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, // 15952 + 0x04, 0x08, 0x13, 0x07, 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, // 15968 + 0x03, 0x55, 0x04, 0x07, 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, // 15984 + 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, // 16000 + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, // 16016 + 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, // 16032 + 0x13, 0x29, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x52, 0x6f, 0x6f, 0x74, // 16048 + 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, // 16064 + 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x82, 0x01, 0x22, 0x30, // 16080 + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, // 16096 + 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbd, 0xed, 0xc1, 0x03, // 16112 + 0xfc, 0xf6, 0x8f, 0xfc, 0x02, 0xb1, 0x6f, 0x5b, 0x9f, 0x48, 0xd9, 0x9d, 0x79, 0xe2, 0xa2, 0xb7, // 16128 + 0x03, 0x61, 0x56, 0x18, 0xc3, 0x47, 0xb6, 0xd7, 0xca, 0x3d, 0x35, 0x2e, 0x89, 0x43, 0xf7, 0xa1, // 16144 + 0x69, 0x9b, 0xde, 0x8a, 0x1a, 0xfd, 0x13, 0x20, 0x9c, 0xb4, 0x49, 0x77, 0x32, 0x29, 0x56, 0xfd, // 16160 + 0xb9, 0xec, 0x8c, 0xdd, 0x22, 0xfa, 0x72, 0xdc, 0x27, 0x61, 0x97, 0xee, 0xf6, 0x5a, 0x84, 0xec, // 16176 + 0x6e, 0x19, 0xb9, 0x89, 0x2c, 0xdc, 0x84, 0x5b, 0xd5, 0x74, 0xfb, 0x6b, 0x5f, 0xc5, 0x89, 0xa5, // 16192 + 0x10, 0x52, 0x89, 0x46, 0x55, 0xf4, 0xb8, 0x75, 0x1c, 0xe6, 0x7f, 0xe4, 0x54, 0xae, 0x4b, 0xf8, // 16208 + 0x55, 0x72, 0x57, 0x02, 0x19, 0xf8, 0x17, 0x71, 0x59, 0xeb, 0x1e, 0x28, 0x07, 0x74, 0xc5, 0x9d, // 16224 + 0x48, 0xbe, 0x6c, 0xb4, 0xf4, 0xa4, 0xb0, 0xf3, 0x64, 0x37, 0x79, 0x92, 0xc0, 0xec, 0x46, 0x5e, // 16240 + 0x7f, 0xe1, 0x6d, 0x53, 0x4c, 0x62, 0xaf, 0xcd, 0x1f, 0x0b, 0x63, 0xbb, 0x3a, 0x9d, 0xfb, 0xfc, // 16256 + 0x79, 0x00, 0x98, 0x61, 0x74, 0xcf, 0x26, 0x82, 0x40, 0x63, 0xf3, 0xb2, 0x72, 0x6a, 0x19, 0x0d, // 16272 + 0x99, 0xca, 0xd4, 0x0e, 0x75, 0xcc, 0x37, 0xfb, 0x8b, 0x89, 0xc1, 0x59, 0xf1, 0x62, 0x7f, 0x5f, // 16288 + 0xb3, 0x5f, 0x65, 0x30, 0xf8, 0xa7, 0xb7, 0x4d, 0x76, 0x5a, 0x1e, 0x76, 0x5e, 0x34, 0xc0, 0xe8, // 16304 + 0x96, 0x56, 0x99, 0x8a, 0xb3, 0xf0, 0x7f, 0xa4, 0xcd, 0xbd, 0xdc, 0x32, 0x31, 0x7c, 0x91, 0xcf, // 16320 + 0xe0, 0x5f, 0x11, 0xf8, 0x6b, 0xaa, 0x49, 0x5c, 0xd1, 0x99, 0x94, 0xd1, 0xa2, 0xe3, 0x63, 0x5b, // 16336 + 0x09, 0x76, 0xb5, 0x56, 0x62, 0xe1, 0x4b, 0x74, 0x1d, 0x96, 0xd4, 0x26, 0xd4, 0x08, 0x04, 0x59, // 16352 + 0xd0, 0x98, 0x0e, 0x0e, 0xe6, 0xde, 0xfc, 0xc3, 0xec, 0x1f, 0x90, 0xf1, 0x02, 0x03, 0x01, 0x00, // 16368 + 0x01, 0x00, 0x9b, 0x01, 0x26, 0x30, 0x81, 0x98, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, // 16384 + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x07, // 16400 + 0x41, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x61, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x07, // 16416 + 0x13, 0x0a, 0x53, 0x63, 0x6f, 0x74, 0x74, 0x73, 0x64, 0x61, 0x6c, 0x65, 0x31, 0x25, 0x30, 0x23, // 16432 + 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x1c, 0x53, 0x74, 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, // 16448 + 0x20, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x69, 0x65, 0x73, 0x2c, 0x20, 0x49, // 16464 + 0x6e, 0x63, 0x2e, 0x31, 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x32, 0x53, 0x74, // 16480 + 0x61, 0x72, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, // 16496 + 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, // 16512 + 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, // 16528 + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, // 16544 + 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, // 16560 + 0x00, 0xd5, 0x0c, 0x3a, 0xc4, 0x2a, 0xf9, 0x4e, 0xe2, 0xf5, 0xbe, 0x19, 0x97, 0x5f, 0x8e, 0x88, // 16576 + 0x53, 0xb1, 0x1f, 0x3f, 0xcb, 0xcf, 0x9f, 0x20, 0x13, 0x6d, 0x29, 0x3a, 0xc8, 0x0f, 0x7d, 0x3c, // 16592 + 0xf7, 0x6b, 0x76, 0x38, 0x63, 0xd9, 0x36, 0x60, 0xa8, 0x9b, 0x5e, 0x5c, 0x00, 0x80, 0xb2, 0x2f, // 16608 + 0x59, 0x7f, 0xf6, 0x87, 0xf9, 0x25, 0x43, 0x86, 0xe7, 0x69, 0x1b, 0x52, 0x9a, 0x90, 0xe1, 0x71, // 16624 + 0xe3, 0xd8, 0x2d, 0x0d, 0x4e, 0x6f, 0xf6, 0xc8, 0x49, 0xd9, 0xb6, 0xf3, 0x1a, 0x56, 0xae, 0x2b, // 16640 + 0xb6, 0x74, 0x14, 0xeb, 0xcf, 0xfb, 0x26, 0xe3, 0x1a, 0xba, 0x1d, 0x96, 0x2e, 0x6a, 0x3b, 0x58, // 16656 + 0x94, 0x89, 0x47, 0x56, 0xff, 0x25, 0xa0, 0x93, 0x70, 0x53, 0x83, 0xda, 0x84, 0x74, 0x14, 0xc3, // 16672 + 0x67, 0x9e, 0x04, 0x68, 0x3a, 0xdf, 0x8e, 0x40, 0x5a, 0x1d, 0x4a, 0x4e, 0xcf, 0x43, 0x91, 0x3b, // 16688 + 0xe7, 0x56, 0xd6, 0x00, 0x70, 0xcb, 0x52, 0xee, 0x7b, 0x7d, 0xae, 0x3a, 0xe7, 0xbc, 0x31, 0xf9, // 16704 + 0x45, 0xf6, 0xc2, 0x60, 0xcf, 0x13, 0x59, 0x02, 0x2b, 0x80, 0xcc, 0x34, 0x47, 0xdf, 0xb9, 0xde, // 16720 + 0x90, 0x65, 0x6d, 0x02, 0xcf, 0x2c, 0x91, 0xa6, 0xa6, 0xe7, 0xde, 0x85, 0x18, 0x49, 0x7c, 0x66, // 16736 + 0x4e, 0xa3, 0x3a, 0x6d, 0xa9, 0xb5, 0xee, 0x34, 0x2e, 0xba, 0x0d, 0x03, 0xb8, 0x33, 0xdf, 0x47, // 16752 + 0xeb, 0xb1, 0x6b, 0x8d, 0x25, 0xd9, 0x9b, 0xce, 0x81, 0xd1, 0x45, 0x46, 0x32, 0x96, 0x70, 0x87, // 16768 + 0xde, 0x02, 0x0e, 0x49, 0x43, 0x85, 0xb6, 0x6c, 0x73, 0xbb, 0x64, 0xea, 0x61, 0x41, 0xac, 0xc9, // 16784 + 0xd4, 0x54, 0xdf, 0x87, 0x2f, 0xc7, 0x22, 0xb2, 0x26, 0xcc, 0x9f, 0x59, 0x54, 0x68, 0x9f, 0xfc, // 16800 + 0xbe, 0x2a, 0x2f, 0xc4, 0x55, 0x1c, 0x75, 0x40, 0x60, 0x17, 0x85, 0x02, 0x55, 0x39, 0x8b, 0x7f, // 16816 + 0x05, 0x02, 0x03, 0x01, 0x00, 0x01, // 16822 +}; + diff --git a/Firmware/RTK_Surveyor/form.h b/Firmware/RTK_Surveyor/form.h index 4e027c83c..0d0424623 100644 --- a/Firmware/RTK_Surveyor/form.h +++ b/Firmware/RTK_Surveyor/form.h @@ -26,769 +26,773 @@ // python main_js_zipper.py static const uint8_t main_js[] PROGMEM = { - 0x1F, 0x8B, 0x08, 0x08, 0x64, 0x5F, 0x14, 0x65, 0x02, 0xFF, 0x6D, 0x61, 0x69, 0x6E, 0x2E, 0x6A, - 0x73, 0x2E, 0x67, 0x7A, 0x69, 0x70, 0x00, 0xED, 0x7D, 0xEB, 0x7A, 0xDB, 0x38, 0xB2, 0xE0, 0xFF, - 0x3C, 0x05, 0x5A, 0x3B, 0xDB, 0x92, 0x26, 0xB2, 0x2C, 0xC9, 0x97, 0xC4, 0x71, 0xEC, 0xB3, 0xBE, - 0x26, 0xDE, 0x89, 0x1D, 0x7F, 0x96, 0xD3, 0xE9, 0xA4, 0x27, 0xEB, 0x43, 0x8B, 0xB0, 0xCC, 0x89, - 0x44, 0x6A, 0x49, 0xCA, 0x97, 0x99, 0xC9, 0x3B, 0x9D, 0x67, 0x38, 0x4F, 0xB6, 0x55, 0xB8, 0x90, - 0x00, 0x08, 0x5E, 0x74, 0x71, 0x3A, 0x33, 0xDB, 0xFE, 0x66, 0xD2, 0x36, 0x01, 0x54, 0x15, 0xAA, - 0x0A, 0x05, 0xA0, 0x50, 0x28, 0xDC, 0x39, 0x21, 0x19, 0x3A, 0x31, 0xBD, 0x77, 0x1E, 0xC9, 0x0E, - 0xF9, 0xCF, 0xFB, 0xE8, 0xD5, 0xEA, 0xEA, 0x9F, 0xFE, 0x71, 0xEF, 0xF9, 0x6E, 0x70, 0xDF, 0x1E, - 0x05, 0x03, 0x27, 0xF6, 0x02, 0xBF, 0x7D, 0x1B, 0x44, 0xB1, 0xEF, 0x8C, 0xE9, 0xB7, 0xD5, 0xFB, - 0xE8, 0x3F, 0xB7, 0x9F, 0xDD, 0x41, 0xA3, 0x7B, 0x7A, 0x1D, 0x05, 0x83, 0xAF, 0x34, 0xDE, 0x7E, - 0xF6, 0x4C, 0x54, 0x77, 0x5C, 0xF7, 0xE8, 0x8E, 0xFA, 0xF1, 0x3B, 0x2F, 0x8A, 0xA9, 0x4F, 0xC3, - 0x46, 0x7D, 0x14, 0x38, 0x6E, 0xBD, 0x45, 0x02, 0xFF, 0x1D, 0xFC, 0xD2, 0x84, 0x9A, 0x37, 0x53, - 0x7F, 0x80, 0x10, 0xC5, 0xA7, 0x06, 0xC5, 0xFA, 0x4D, 0xF2, 0x8F, 0x67, 0x04, 0x7E, 0x3C, 0xDF, - 0x8B, 0x3F, 0xD2, 0xEB, 0x3E, 0x03, 0xDB, 0x80, 0xEA, 0xDF, 0x94, 0x06, 0x46, 0xA1, 0x68, 0x92, - 0x50, 0x01, 0xC4, 0xFB, 0xF4, 0x9E, 0xA4, 0x35, 0x44, 0xA7, 0x00, 0x8A, 0x56, 0xAF, 0x1D, 0xF8, - 0x63, 0x1A, 0x45, 0xCE, 0x90, 0x42, 0x8B, 0x04, 0x78, 0x63, 0x1C, 0x0D, 0x25, 0x48, 0xFC, 0x99, - 0x38, 0x61, 0x44, 0x4F, 0xFC, 0x41, 0x30, 0xF6, 0xFC, 0x21, 0x16, 0xB6, 0x5D, 0x27, 0x76, 0x04, - 0xAC, 0x6F, 0x3A, 0x61, 0x43, 0xDA, 0xA0, 0xB2, 0x6D, 0x48, 0xE3, 0x69, 0xE8, 0x13, 0x37, 0x18, - 0x4C, 0xC7, 0xD0, 0xB1, 0xF6, 0x90, 0xC6, 0x47, 0x23, 0x8A, 0xBF, 0xEE, 0x3F, 0x9E, 0x40, 0x6F, - 0x79, 0x9F, 0x90, 0x7D, 0x37, 0xDE, 0x03, 0x75, 0xDF, 0x39, 0x48, 0x77, 0x67, 0x5B, 0xF9, 0x12, - 0xF8, 0xC3, 0xF4, 0xD3, 0x64, 0xE4, 0xC4, 0x37, 0x41, 0x38, 0x3E, 0x0F, 0x29, 0x94, 0xC2, 0xF7, - 0x5A, 0x7F, 0x1A, 0xDE, 0xD1, 0xC7, 0x20, 0xAC, 0xF1, 0x0A, 0x43, 0x1A, 0xB8, 0x34, 0xF6, 0x06, - 0x1C, 0xD0, 0x7A, 0xA7, 0xDD, 0xE9, 0x1A, 0x05, 0x40, 0xE0, 0x0E, 0x59, 0xE9, 0x76, 0x36, 0xDA, - 0xDD, 0x2D, 0xBD, 0x68, 0x6F, 0x84, 0x6D, 0xBA, 0x1B, 0x9D, 0x4E, 0x5B, 0x34, 0xA2, 0x03, 0x7A, - 0xF3, 0x2B, 0xAB, 0xDE, 0x7B, 0xD9, 0xE9, 0x75, 0x36, 0xDB, 0x1B, 0x9B, 0x2F, 0xD3, 0x92, 0x4F, - 0x58, 0xB2, 0xFE, 0xA2, 0xBB, 0xF9, 0xB2, 0xB3, 0xDE, 0x5E, 0xEF, 0xAC, 0xA5, 0x25, 0x9F, 0x19, - 0xEE, 0x97, 0x9B, 0x9B, 0x9B, 0x1B, 0xED, 0xF5, 0x97, 0xEB, 0xBC, 0x60, 0xE4, 0x44, 0xF1, 0xB1, - 0x37, 0xA2, 0x67, 0xA0, 0x36, 0x48, 0x79, 0x4D, 0xF6, 0x12, 0x3E, 0x4D, 0xC7, 0xD7, 0x34, 0x4C, - 0xBB, 0xE9, 0xB3, 0xBF, 0xDF, 0xDF, 0x60, 0xF5, 0xA8, 0x4F, 0x47, 0x74, 0x10, 0x53, 0x37, 0x2D, - 0x8E, 0xC4, 0x17, 0x56, 0xAC, 0x80, 0x8A, 0x6E, 0x03, 0x50, 0xBC, 0x21, 0x7E, 0x46, 0x8D, 0x43, - 0x79, 0x3A, 0xA3, 0x88, 0xF2, 0xC2, 0xE0, 0x3A, 0x76, 0x3C, 0x9F, 0xBA, 0xA7, 0x5C, 0xD8, 0x95, - 0x2A, 0xEC, 0x3B, 0x11, 0xD5, 0x2B, 0x09, 0x14, 0xA2, 0xCE, 0xC5, 0xE5, 0xC1, 0x69, 0x16, 0x10, - 0xF6, 0xE8, 0xD2, 0xB9, 0x86, 0x7F, 0xE8, 0x43, 0xAC, 0x90, 0x27, 0xD4, 0xCC, 0xF8, 0x8A, 0x6C, - 0x11, 0xE0, 0x2E, 0x1F, 0x27, 0x34, 0xBF, 0x44, 0x10, 0x83, 0xA5, 0xAC, 0x38, 0xA4, 0x83, 0x20, - 0x74, 0xA3, 0xA3, 0x83, 0xA3, 0x63, 0xF8, 0xFC, 0xDB, 0x97, 0x6D, 0xF5, 0xEB, 0x1B, 0x21, 0x53, - 0xA5, 0xE4, 0x66, 0x3A, 0x1A, 0x9D, 0x03, 0xAC, 0x0F, 0x13, 0x50, 0x5D, 0xA5, 0x5B, 0xA2, 0x59, - 0x44, 0xE3, 0x4B, 0x6F, 0x4C, 0x83, 0x69, 0x2C, 0x99, 0xEC, 0xBB, 0x87, 0xA0, 0xE3, 0xDA, 0xC7, - 0xC1, 0x2D, 0x1D, 0x7C, 0x3D, 0xA3, 0xF7, 0xC7, 0x5E, 0x38, 0xBE, 0x77, 0x42, 0xAA, 0x15, 0x82, - 0x6E, 0xDB, 0x8A, 0x9E, 0x0D, 0x02, 0x1F, 0x58, 0x74, 0x10, 0x00, 0x5D, 0x9E, 0x0F, 0xA8, 0xB1, - 0x33, 0x28, 0x36, 0x3E, 0x42, 0x0E, 0xDE, 0xBF, 0xBF, 0x38, 0x3C, 0x39, 0xDB, 0xBB, 0x3C, 0xBA, - 0x3A, 0x39, 0x3B, 0xFF, 0x70, 0x79, 0x75, 0xF9, 0xE9, 0xFC, 0xE8, 0xEA, 0xF0, 0xF0, 0x15, 0xE9, - 0xB4, 0xC8, 0xEA, 0xEA, 0x21, 0xBD, 0x71, 0xA6, 0xA0, 0x98, 0x87, 0x87, 0x6D, 0x57, 0xFE, 0x14, - 0xB6, 0x3B, 0x3D, 0x7D, 0x45, 0xBA, 0xAC, 0x25, 0xFC, 0xDA, 0x1E, 0xE3, 0x4F, 0x61, 0xFD, 0x2B, - 0x6C, 0xD0, 0xE3, 0x0D, 0x48, 0xD5, 0x16, 0x57, 0x87, 0x7B, 0xFD, 0xB7, 0xAF, 0xC8, 0x1A, 0x6F, - 0xB6, 0x52, 0xB9, 0x59, 0xFF, 0xD3, 0xE9, 0xFE, 0xFB, 0x77, 0xAF, 0xC8, 0x3A, 0x6F, 0xF8, 0xDF, - 0xFF, 0x25, 0x5B, 0x8E, 0xC7, 0xF5, 0x92, 0x5E, 0xF5, 0xFB, 0xAF, 0xC8, 0x46, 0x42, 0x26, 0xE9, - 0xF7, 0xDB, 0x11, 0xFB, 0x29, 0xC7, 0x09, 0x0D, 0x37, 0xE7, 0x6B, 0x28, 0xBA, 0xF9, 0x22, 0xE9, - 0xE6, 0xCA, 0x4C, 0xAD, 0x65, 0x6F, 0x5F, 0xA6, 0xBD, 0xAD, 0x27, 0x00, 0x6A, 0xA5, 0xFD, 0xBD, - 0x3A, 0x7B, 0x7F, 0x75, 0x78, 0x74, 0x70, 0x72, 0xBA, 0x07, 0x30, 0xB6, 0xA4, 0x48, 0xFB, 0x7D, - 0xB2, 0x42, 0xCE, 0x02, 0xE2, 0xD2, 0x81, 0x37, 0x76, 0x46, 0x55, 0xE8, 0x50, 0xE1, 0x74, 0x3B, - 0x2A, 0x2B, 0x66, 0x06, 0x85, 0x0C, 0xD1, 0xE1, 0x75, 0x55, 0xE6, 0x54, 0x85, 0x77, 0x72, 0xF6, - 0xCB, 0xDE, 0xBB, 0x93, 0xC3, 0xAB, 0x0F, 0x67, 0x7F, 0x39, 0x7B, 0xFF, 0xF1, 0x0C, 0xC0, 0xF4, - 0x5A, 0x72, 0x22, 0x80, 0xE1, 0x72, 0x47, 0x43, 0x30, 0x6F, 0xE9, 0x88, 0x41, 0xD3, 0xD7, 0x16, - 0xC6, 0x6F, 0x90, 0x7C, 0x3D, 0xF1, 0x27, 0xD3, 0x58, 0xD8, 0x0C, 0x63, 0x74, 0xB5, 0xF3, 0xBA, - 0xA1, 0xCE, 0xB8, 0x99, 0x39, 0x4D, 0x4E, 0x5A, 0xAB, 0xAB, 0x38, 0x64, 0x83, 0x11, 0x85, 0xF9, - 0x7E, 0xD8, 0xA8, 0x79, 0xA2, 0x8A, 0x34, 0x60, 0xAF, 0x48, 0x8D, 0x3C, 0x27, 0x58, 0x1F, 0xA0, - 0x61, 0x7D, 0x24, 0x0B, 0xA7, 0x43, 0xA0, 0x03, 0x67, 0xC6, 0x68, 0x32, 0xF2, 0xE2, 0x46, 0xBD, - 0x55, 0x17, 0xD3, 0x23, 0x4C, 0x58, 0xA4, 0x31, 0x82, 0x19, 0xF9, 0x81, 0x99, 0x70, 0xF8, 0xCF, - 0x6B, 0x56, 0xBD, 0x3D, 0xA2, 0xFE, 0x30, 0xBE, 0x05, 0x9E, 0x75, 0xF1, 0xE3, 0xF3, 0x1D, 0xD2, - 0x53, 0xA7, 0x5C, 0x84, 0xEA, 0xA1, 0xD5, 0xC7, 0xBA, 0xBF, 0x3D, 0x7C, 0xD9, 0xD6, 0x4A, 0xEE, - 0x9C, 0x51, 0x52, 0x04, 0xD4, 0x74, 0x95, 0x62, 0x93, 0x7C, 0x97, 0x13, 0x0C, 0xB0, 0x9E, 0x93, - 0x5A, 0x0B, 0x5B, 0xF2, 0x0F, 0xF0, 0x8B, 0xEC, 0x01, 0x6F, 0xD6, 0x9F, 0x80, 0xE0, 0x00, 0x2E, - 0x74, 0x77, 0xEC, 0xF8, 0x6E, 0x94, 0x14, 0x79, 0x37, 0xA4, 0xE1, 0xB9, 0x6D, 0x60, 0xC4, 0x68, - 0xEA, 0xD2, 0xA8, 0x51, 0x8B, 0xDC, 0xD3, 0x60, 0xEA, 0x83, 0x8C, 0x6A, 0x4D, 0x95, 0x64, 0x0E, - 0xE6, 0x12, 0x67, 0xFC, 0xC0, 0x5F, 0x0D, 0x6E, 0x6E, 0x48, 0xFF, 0x90, 0x80, 0x2D, 0x74, 0xB4, - 0x1A, 0x08, 0x8D, 0x91, 0x0F, 0xC6, 0x9C, 0xD9, 0xE0, 0x9A, 0x09, 0x03, 0x7F, 0x6E, 0x3D, 0x97, - 0x36, 0x6A, 0x38, 0x97, 0x9C, 0x3A, 0x3E, 0x70, 0x3D, 0xAC, 0x35, 0xB7, 0xB5, 0x4A, 0xDF, 0xB4, - 0xBF, 0x28, 0xC0, 0xD1, 0x20, 0xC7, 0xE1, 0xD4, 0x0E, 0x18, 0xA7, 0xB0, 0x8A, 0x80, 0xD3, 0xDF, - 0x12, 0xF0, 0x28, 0x11, 0x80, 0xAE, 0x2F, 0x44, 0x32, 0x78, 0x32, 0xEB, 0x14, 0xA0, 0x4A, 0x47, - 0x92, 0xAC, 0x88, 0x62, 0x2F, 0x1E, 0xB1, 0x79, 0xED, 0xE2, 0xF2, 0x2F, 0x4C, 0x2C, 0x46, 0x5B, - 0x90, 0x19, 0xE9, 0xC3, 0x2A, 0x6A, 0x52, 0xD3, 0x01, 0x64, 0xA6, 0x33, 0xEC, 0xB0, 0x22, 0x4E, - 0xC9, 0x69, 0x93, 0x14, 0x75, 0xCD, 0x94, 0xCF, 0x9E, 0x6B, 0x98, 0x6C, 0x0F, 0x02, 0xFF, 0xC6, - 0x1B, 0x9A, 0xDC, 0x49, 0x65, 0x03, 0x33, 0x64, 0x14, 0x84, 0x65, 0xB5, 0x26, 0x93, 0xB2, 0x1A, - 0x34, 0xBE, 0xA5, 0xA1, 0x4F, 0xE3, 0xB2, 0x7A, 0x7E, 0x5C, 0x00, 0x6A, 0x75, 0x95, 0x57, 0x72, - 0x46, 0xA3, 0xE0, 0xFE, 0xA3, 0x77, 0xEC, 0xBD, 0x07, 0x23, 0x72, 0x24, 0x21, 0x8F, 0x3C, 0x60, - 0x35, 0x34, 0x83, 0x6A, 0xC7, 0x01, 0x2E, 0x05, 0x60, 0x55, 0x4A, 0x09, 0x7D, 0x98, 0x38, 0x7E, - 0x04, 0xA6, 0x60, 0x36, 0x68, 0x7D, 0x0A, 0xEC, 0x0B, 0x0B, 0xA0, 0xE5, 0xD0, 0x8F, 0x83, 0xF5, - 0x3C, 0x08, 0xE3, 0x83, 0x5B, 0xC7, 0xF7, 0xE9, 0xE8, 0x30, 0x0C, 0x26, 0xB0, 0x49, 0xF0, 0x2B, - 0xEA, 0xB5, 0x45, 0x8E, 0x47, 0x0F, 0x13, 0x58, 0xB7, 0x44, 0x35, 0xF2, 0xCF, 0x7F, 0x12, 0x4B, - 0xF1, 0xB1, 0x33, 0xA0, 0xF1, 0x1F, 0x32, 0x7E, 0x1A, 0x19, 0x2F, 0x24, 0x31, 0x72, 0x3E, 0x9A, - 0x46, 0x05, 0x56, 0xAF, 0x58, 0x32, 0x5C, 0x7A, 0x7F, 0x48, 0xA6, 0xEA, 0xE8, 0x83, 0xFD, 0x68, - 0x6D, 0x3C, 0x7D, 0x10, 0xC3, 0xAE, 0x57, 0x6B, 0xC2, 0x44, 0x06, 0x9B, 0xF1, 0xB7, 0x97, 0xA7, - 0xEF, 0xD0, 0xEE, 0x7E, 0xBC, 0xA5, 0x74, 0xB4, 0x7A, 0xE8, 0x85, 0xE4, 0x08, 0x26, 0x7A, 0x97, - 0x86, 0xB5, 0x79, 0xC7, 0x23, 0x1B, 0x70, 0xE4, 0xDD, 0xCA, 0x3E, 0x4C, 0x9E, 0x4F, 0x3C, 0xEE, - 0x38, 0xA4, 0x3F, 0xC6, 0x5D, 0x45, 0xC9, 0x5C, 0xD0, 0x1B, 0x1A, 0x52, 0x7F, 0x40, 0x49, 0x3F, - 0x66, 0x0E, 0x9C, 0xDF, 0xDD, 0x2C, 0x72, 0x5C, 0xE5, 0xE2, 0xE1, 0xF5, 0xFE, 0xC5, 0xC5, 0x63, - 0x5D, 0x47, 0x29, 0xCB, 0xC9, 0xBF, 0xA3, 0x2F, 0x83, 0x6F, 0x9B, 0x7F, 0xA1, 0x21, 0x02, 0x3A, - 0x41, 0x9A, 0xB3, 0x4B, 0xCB, 0xD3, 0x29, 0xEC, 0xA4, 0x61, 0x79, 0x4A, 0x89, 0x73, 0x1D, 0xDC, - 0x51, 0x92, 0x6D, 0x48, 0x62, 0x1A, 0xC5, 0x66, 0xAB, 0xC0, 0xF5, 0x6E, 0x1E, 0x61, 0x47, 0x1F, - 0xC7, 0xB0, 0x8C, 0x8F, 0x88, 0x3B, 0xA5, 0x24, 0x0E, 0xC8, 0x8D, 0x68, 0x49, 0x46, 0xDE, 0xD8, - 0xE3, 0x6A, 0x11, 0x59, 0x17, 0xAA, 0xBB, 0x3B, 0xB0, 0x3F, 0xE9, 0x5A, 0x35, 0x86, 0x79, 0x62, - 0xC0, 0x8A, 0xA0, 0x8D, 0x71, 0x1F, 0x7D, 0x67, 0xEC, 0x0D, 0x00, 0x1B, 0x1D, 0xD9, 0xE4, 0x84, - 0x5B, 0x00, 0x9F, 0xDE, 0xBF, 0x9F, 0xB0, 0xDD, 0x07, 0x77, 0xCF, 0xF1, 0x3F, 0x1A, 0xF5, 0xD3, - 0xE0, 0x9E, 0x86, 0xF5, 0x16, 0xA9, 0x77, 0xBB, 0x75, 0x9B, 0x16, 0x30, 0x3C, 0xE8, 0x4F, 0x6C, - 0x24, 0x10, 0x5A, 0x64, 0xEA, 0xBB, 0xA0, 0xE1, 0x3E, 0x75, 0x2D, 0x2D, 0xF2, 0x10, 0x1D, 0xAD, - 0xF4, 0x61, 0x07, 0x15, 0x0B, 0x64, 0xBD, 0xC5, 0x91, 0xD9, 0xA4, 0x0C, 0x5B, 0x89, 0x38, 0x64, - 0xAC, 0x1E, 0xA2, 0xDB, 0xD3, 0x41, 0xEF, 0xD5, 0xF5, 0x23, 0xC1, 0x15, 0xEE, 0xD4, 0xF7, 0xE2, - 0x12, 0x6D, 0x88, 0xDC, 0xE3, 0x90, 0xD2, 0xFE, 0x04, 0xAC, 0x69, 0xAD, 0xA9, 0xE1, 0x82, 0x75, - 0x8E, 0x51, 0xB3, 0xEF, 0xFD, 0xBD, 0xAC, 0xD2, 0xAD, 0x13, 0xBA, 0x28, 0xE6, 0x93, 0xC3, 0x92, - 0x8A, 0x59, 0x65, 0x2A, 0x69, 0xE0, 0x3A, 0x8F, 0xD1, 0x05, 0x1D, 0x3B, 0x9E, 0x0F, 0x7D, 0x2D, - 0xA9, 0x3B, 0x09, 0x03, 0xDC, 0x72, 0x74, 0xD0, 0xFB, 0x57, 0xAD, 0x6A, 0xB7, 0x7A, 0xD5, 0x5E, - 0xF5, 0xAA, 0x6B, 0xD5, 0xAB, 0xAE, 0x57, 0xAF, 0xBA, 0x51, 0xBD, 0xEA, 0x66, 0xF5, 0xAA, 0x2F, - 0x2A, 0x54, 0x0D, 0x1D, 0xD7, 0x0B, 0x4E, 0xF7, 0x0E, 0xCA, 0x44, 0x45, 0xEF, 0xBC, 0x01, 0xDD, - 0xBF, 0x2C, 0x55, 0x02, 0xD8, 0x32, 0x4B, 0x27, 0x6D, 0x49, 0xCD, 0x6B, 0x27, 0x86, 0x61, 0xF4, - 0x78, 0x4E, 0xC3, 0x01, 0xB3, 0xB0, 0x49, 0x65, 0xD3, 0x50, 0x80, 0x6D, 0xF0, 0x5C, 0x7D, 0xD1, - 0xA1, 0x6D, 0x07, 0xCB, 0xAC, 0x63, 0x18, 0x7F, 0xCD, 0xE8, 0xA5, 0x05, 0x87, 0xB5, 0x5E, 0x3E, - 0xD6, 0xFC, 0x56, 0x1F, 0x26, 0x43, 0xE0, 0x2A, 0xAD, 0x2D, 0x40, 0xF2, 0x00, 0x27, 0xAB, 0x70, - 0x7C, 0x81, 0x5E, 0xD5, 0x2C, 0xB1, 0xCC, 0xD9, 0x7A, 0x10, 0x8C, 0x27, 0x60, 0x11, 0x69, 0xA3, - 0x39, 0x33, 0x58, 0x74, 0xCB, 0x5E, 0xD0, 0x01, 0xF5, 0x26, 0x16, 0xE0, 0xD9, 0x3A, 0x3A, 0x86, - 0x12, 0x14, 0x42, 0xF5, 0xB8, 0x47, 0xDE, 0x02, 0x7D, 0x1A, 0xC2, 0x3A, 0x22, 0x3E, 0x57, 0x6B, - 0xD9, 0x38, 0xFB, 0x27, 0x74, 0x1B, 0x4D, 0xA6, 0xF1, 0x6F, 0x78, 0x48, 0xB4, 0x23, 0x80, 0x5E, - 0xA0, 0xAE, 0x7E, 0xF9, 0x0D, 0x2A, 0x4F, 0xE9, 0x0E, 0x6E, 0xF5, 0xAD, 0xD0, 0x60, 0xC3, 0xFF, - 0x05, 0x78, 0x0F, 0x6D, 0x26, 0x8D, 0x3A, 0x73, 0x38, 0x53, 0x3C, 0x32, 0xC2, 0xED, 0xFD, 0x0C, - 0xAC, 0x92, 0x93, 0xDB, 0x87, 0x09, 0x1E, 0x39, 0x49, 0x66, 0x67, 0x3B, 0x64, 0xAF, 0xD7, 0x98, - 0x1B, 0x13, 0xAE, 0xAF, 0x70, 0x6F, 0x53, 0x8C, 0x87, 0xD7, 0x6A, 0x70, 0x0F, 0x54, 0x55, 0x44, - 0xCA, 0xD9, 0x8E, 0x6D, 0x00, 0xA8, 0x07, 0x3F, 0x36, 0x4D, 0x5F, 0x68, 0x0C, 0x2A, 0xC7, 0x47, - 0x05, 0xB8, 0xD9, 0x6C, 0xFB, 0x64, 0xB8, 0xF7, 0x46, 0x05, 0xFD, 0xE6, 0x87, 0x57, 0x4B, 0xC7, - 0xCD, 0x4E, 0xC0, 0xB2, 0x58, 0xE5, 0xC1, 0xD8, 0x93, 0xE0, 0xFB, 0x64, 0xC7, 0xF7, 0xE9, 0xA9, - 0xF0, 0x7D, 0xB6, 0xE3, 0xFB, 0xFC, 0x24, 0xF8, 0xA2, 0x89, 0x1F, 0xDC, 0x9F, 0x53, 0x0A, 0x9B, - 0x87, 0xA9, 0x6D, 0x8D, 0x9B, 0xAC, 0x39, 0x49, 0xA7, 0x69, 0xDD, 0xC9, 0x4E, 0xA0, 0x2D, 0xCC, - 0x77, 0x91, 0xB9, 0x8D, 0xAD, 0x55, 0x27, 0x42, 0x80, 0xB0, 0xCF, 0x22, 0x56, 0xF8, 0xCF, 0x59, - 0x37, 0xD1, 0x34, 0xBD, 0xBE, 0x0E, 0x77, 0x67, 0x40, 0x15, 0xF1, 0x75, 0x35, 0x1E, 0xD2, 0xD9, - 0xE6, 0x81, 0xE4, 0x04, 0xAF, 0x3D, 0x99, 0x46, 0xB7, 0x33, 0xDA, 0x03, 0x01, 0x5B, 0x1E, 0xF5, - 0xE5, 0xC2, 0x97, 0x15, 0xE6, 0xC1, 0x71, 0x33, 0xE6, 0x2B, 0x01, 0x13, 0xB4, 0x71, 0x98, 0x3B, - 0x93, 0x0E, 0xDC, 0x8C, 0xF9, 0xAA, 0x35, 0x6B, 0x22, 0xD5, 0x73, 0x53, 0x60, 0x79, 0xED, 0x75, - 0x1C, 0x12, 0x67, 0xE4, 0x0D, 0xFD, 0x9D, 0xFA, 0x88, 0xDE, 0xC4, 0xF5, 0x5D, 0xD3, 0x07, 0x6C, - 0x69, 0xE1, 0xEE, 0xE2, 0xCC, 0xA2, 0xD1, 0x87, 0x62, 0x5B, 0xC5, 0x82, 0xAA, 0xAD, 0xA5, 0xAC, - 0x2B, 0x37, 0x7A, 0xCD, 0x26, 0x3B, 0x12, 0x3F, 0x4E, 0xE8, 0x0E, 0x9F, 0xB3, 0xAE, 0x83, 0x87, - 0x3A, 0xAC, 0x97, 0x76, 0xEA, 0x36, 0x6A, 0xEA, 0x84, 0x4D, 0x8B, 0x75, 0x04, 0x76, 0x72, 0x58, - 0x27, 0x03, 0xA8, 0x10, 0xC1, 0x9F, 0xB0, 0x69, 0x5F, 0x61, 0xAD, 0x57, 0x38, 0x3C, 0xC5, 0x49, - 0x7F, 0x80, 0x9F, 0xEB, 0xBB, 0x15, 0x49, 0x5A, 0x8D, 0x67, 0xD2, 0x52, 0x90, 0x32, 0x34, 0xCD, - 0x4A, 0x04, 0xCF, 0x80, 0x91, 0xEE, 0x59, 0xA6, 0xC3, 0x0F, 0xFB, 0xBF, 0x5E, 0x65, 0x21, 0x29, - 0xE7, 0xDF, 0x42, 0x65, 0x3C, 0x77, 0x3B, 0xAF, 0xC6, 0x05, 0x77, 0xE8, 0x67, 0x8C, 0x8F, 0x01, - 0xE4, 0x9D, 0x73, 0x4D, 0x47, 0xF2, 0x44, 0x3C, 0xA7, 0xDE, 0xA1, 0x38, 0x96, 0x4A, 0x5B, 0xC9, - 0xE3, 0xA9, 0x2B, 0x73, 0xEB, 0x87, 0x3D, 0x51, 0x5A, 0xC9, 0xD3, 0x29, 0xD8, 0xFC, 0xAE, 0xD9, - 0xB6, 0xBE, 0xEA, 0x89, 0x3E, 0x3F, 0x83, 0x53, 0x1A, 0xFF, 0xD6, 0xFD, 0x82, 0x2E, 0x02, 0xE4, - 0x05, 0xC6, 0x08, 0x5C, 0x75, 0x3B, 0x2F, 0xD6, 0xA1, 0x06, 0xFE, 0x9E, 0x01, 0x84, 0x78, 0xCD, - 0x20, 0x80, 0x9F, 0x76, 0x54, 0xD8, 0x36, 0xF4, 0x72, 0x10, 0x9E, 0xDA, 0x48, 0xC0, 0xBF, 0xB6, - 0xAD, 0x4D, 0xD4, 0x18, 0x04, 0xA6, 0x29, 0xB7, 0xA1, 0xA9, 0x4E, 0xC6, 0x32, 0xD1, 0x68, 0xA9, - 0x32, 0x5E, 0xEF, 0x30, 0x2A, 0xF6, 0x15, 0x3B, 0x19, 0x54, 0x3E, 0xF7, 0x18, 0x1F, 0x12, 0x1E, - 0x58, 0x3B, 0x6F, 0x61, 0xFA, 0xCE, 0x0E, 0x59, 0xCF, 0xEB, 0xF5, 0xBC, 0x84, 0x58, 0x3F, 0xAF, - 0xA5, 0xF4, 0xAD, 0x77, 0x5E, 0xF4, 0xAE, 0xBA, 0x55, 0x58, 0x01, 0x0D, 0xE8, 0x18, 0xDD, 0x2F, - 0x2C, 0x24, 0x03, 0xBA, 0x10, 0x51, 0xEA, 0xCF, 0xC0, 0xB0, 0xE4, 0x93, 0xD4, 0x45, 0x84, 0x53, - 0x6F, 0xB6, 0xFF, 0x16, 0x78, 0x7E, 0xA3, 0x5E, 0x6F, 0x66, 0x54, 0x07, 0xCB, 0x9F, 0x15, 0x10, - 0x95, 0x91, 0xAA, 0xEB, 0xDD, 0x69, 0x46, 0x65, 0x18, 0x06, 0xD3, 0x09, 0x09, 0x83, 0x7B, 0x6E, - 0x93, 0xC6, 0xD1, 0x50, 0x61, 0x44, 0x62, 0x95, 0x4C, 0x4D, 0xC8, 0x80, 0x1D, 0xB1, 0x7E, 0x00, - 0x44, 0x6E, 0xD6, 0xCC, 0xF6, 0x12, 0xE5, 0x20, 0x18, 0xAD, 0x44, 0xE3, 0x95, 0x75, 0x82, 0xBF, - 0x6C, 0xB2, 0x7F, 0x19, 0x15, 0xAC, 0x79, 0x7D, 0xD7, 0x68, 0xCA, 0x99, 0x03, 0xED, 0x5F, 0xBD, - 0x5E, 0x65, 0x35, 0x4A, 0xC9, 0x50, 0x7A, 0xA7, 0xA1, 0x5A, 0xAF, 0xEB, 0x86, 0x98, 0x87, 0x11, - 0x19, 0xE6, 0x35, 0xF0, 0xE3, 0x30, 0x18, 0xD5, 0x4B, 0x70, 0x48, 0xCB, 0x9D, 0xE9, 0x22, 0xDF, - 0xBC, 0xA8, 0x65, 0xCC, 0x5A, 0x55, 0x62, 0xDF, 0x84, 0xE4, 0x80, 0x3D, 0x0A, 0xC3, 0x20, 0xA5, - 0xD3, 0xF3, 0x47, 0x9E, 0x4F, 0xF9, 0x37, 0x30, 0xF8, 0x93, 0x52, 0xB8, 0xAB, 0xC0, 0x90, 0x5D, - 0xFE, 0xEF, 0x0C, 0x46, 0x9F, 0x4D, 0x34, 0x9E, 0x3F, 0x54, 0x62, 0x76, 0x2C, 0xFB, 0xBD, 0x6C, - 0xA5, 0x59, 0x26, 0x03, 0x3F, 0x6D, 0x96, 0xBB, 0x75, 0xCF, 0xD6, 0x99, 0x79, 0x5F, 0xC4, 0xFC, - 0x9A, 0x85, 0xFD, 0xC8, 0xD6, 0x99, 0xA5, 0x1B, 0x41, 0xEC, 0xC8, 0x66, 0x79, 0xFB, 0xBB, 0x4C, - 0x95, 0x19, 0x3B, 0x21, 0xBC, 0x29, 0x27, 0xA0, 0x9F, 0xA9, 0xFF, 0xC5, 0xB6, 0x3E, 0xB5, 0x56, - 0x6C, 0x47, 0xE1, 0x60, 0x76, 0x1F, 0x45, 0x26, 0x90, 0xC4, 0xE6, 0x4D, 0xB0, 0x45, 0x9B, 0xCC, - 0xB6, 0xDC, 0x13, 0x81, 0x8D, 0xB6, 0x05, 0x5F, 0x12, 0xF2, 0x38, 0x07, 0xC4, 0x00, 0x7D, 0x8E, - 0x76, 0x90, 0x3C, 0x66, 0xD2, 0x80, 0xA9, 0x78, 0x67, 0xD9, 0x62, 0x8A, 0xC0, 0x12, 0x8D, 0x46, - 0x64, 0x95, 0x30, 0x17, 0x1A, 0xB9, 0x9E, 0xC6, 0xB1, 0xEA, 0x00, 0xAF, 0x16, 0x50, 0x11, 0x87, - 0x8F, 0x96, 0x69, 0x4A, 0xEC, 0x92, 0x84, 0xF3, 0x22, 0x89, 0x4D, 0xD0, 0x2C, 0x38, 0x19, 0x38, - 0xF1, 0xE0, 0x96, 0x34, 0x28, 0x8E, 0x73, 0xDB, 0x5C, 0xA7, 0x05, 0xB1, 0x9C, 0x44, 0xD1, 0x94, - 0x92, 0x7B, 0x0F, 0xE6, 0xC6, 0x93, 0x43, 0x19, 0xCF, 0xD2, 0xAC, 0x7E, 0xDC, 0x50, 0x1C, 0x6F, - 0x52, 0xB1, 0x17, 0x22, 0x60, 0xF0, 0xFB, 0x75, 0x43, 0x11, 0xD9, 0xDE, 0x68, 0x04, 0xFB, 0x99, - 0xE1, 0x74, 0x84, 0x51, 0x41, 0xCC, 0xC6, 0x73, 0xF1, 0x39, 0xBE, 0xCB, 0x6D, 0xB2, 0x21, 0xB9, - 0x19, 0x3A, 0xC8, 0x9A, 0xDB, 0xD6, 0x9B, 0x4F, 0x2F, 0xA3, 0x6F, 0xB6, 0x78, 0xAB, 0xBE, 0x3C, - 0xA7, 0x41, 0x4F, 0x11, 0x86, 0x18, 0x89, 0xE5, 0x2D, 0xDB, 0x9D, 0x72, 0x57, 0x19, 0x9E, 0xE5, - 0x0E, 0xA9, 0x58, 0xFB, 0x19, 0x3B, 0xE1, 0x7A, 0x7D, 0x3B, 0xA9, 0xCE, 0x3C, 0x8D, 0xC2, 0xBD, - 0x76, 0x0A, 0x93, 0x7E, 0xB6, 0xA6, 0x20, 0xE0, 0x30, 0xF0, 0xEB, 0x31, 0x99, 0xF2, 0x58, 0x1A, - 0x50, 0x18, 0x07, 0xD8, 0x7D, 0x4F, 0x71, 0x07, 0x49, 0xBD, 0x3B, 0x10, 0xFE, 0xBD, 0x13, 0x29, - 0xB6, 0x00, 0x24, 0x70, 0x13, 0x3C, 0x93, 0xEB, 0x37, 0x3D, 0x12, 0x47, 0x65, 0x53, 0x6E, 0xC8, - 0x69, 0x2A, 0xD7, 0xE3, 0x20, 0x1C, 0x50, 0x10, 0x19, 0x8B, 0x89, 0x16, 0x04, 0xA4, 0xA2, 0x64, - 0x47, 0xD7, 0xD4, 0x89, 0xA6, 0x21, 0x2B, 0xC7, 0xA9, 0xF6, 0xED, 0xDF, 0xA1, 0x17, 0xAE, 0x17, - 0x4D, 0x50, 0x34, 0x2C, 0xBA, 0x1C, 0x4F, 0x69, 0xC8, 0xC1, 0x34, 0x8A, 0x83, 0x31, 0xFF, 0x1B, - 0x76, 0x60, 0xC8, 0x9E, 0x7A, 0x53, 0xB1, 0xBF, 0x43, 0x11, 0x56, 0x80, 0x16, 0x8C, 0xC7, 0xFF, - 0x9C, 0xF8, 0x0B, 0x03, 0x3A, 0x46, 0x6B, 0x33, 0x37, 0x14, 0x66, 0xAB, 0xF6, 0xD9, 0x69, 0xAB, - 0x1A, 0xBC, 0xC7, 0x7D, 0x05, 0xCB, 0x85, 0xF9, 0x86, 0x06, 0x73, 0x83, 0xA4, 0x3E, 0xEE, 0x2D, - 0xDF, 0x05, 0xC3, 0x21, 0x3B, 0xE5, 0x59, 0x08, 0xCA, 0x59, 0x1C, 0x7A, 0x13, 0x79, 0x24, 0xBB, - 0x38, 0x24, 0x79, 0x1C, 0x3B, 0x27, 0x24, 0x23, 0x20, 0x69, 0x41, 0x8A, 0x8E, 0x1E, 0x60, 0x5E, - 0xF6, 0x9D, 0xD1, 0xF9, 0x94, 0x99, 0xD8, 0x85, 0x60, 0x9D, 0xC3, 0x4E, 0x20, 0x3E, 0xA7, 0xE1, - 0x0D, 0x1D, 0xC4, 0x07, 0x41, 0x08, 0xC3, 0x90, 0x9D, 0xCE, 0xCE, 0x0D, 0x95, 0x4D, 0x71, 0x7C, - 0x86, 0x9F, 0x13, 0x82, 0xE3, 0xC7, 0xD4, 0xF7, 0x9D, 0x24, 0x90, 0x80, 0x51, 0x38, 0x3F, 0xB4, - 0x69, 0x1C, 0x9C, 0x9C, 0x7E, 0x18, 0xA3, 0x0F, 0x70, 0x0F, 0x1D, 0x3C, 0xE3, 0xC5, 0x35, 0x62, - 0xEF, 0xE2, 0x7C, 0x1E, 0x25, 0x4D, 0x20, 0x71, 0xDB, 0x83, 0xA3, 0x0F, 0x43, 0xFA, 0xD5, 0xE5, - 0x21, 0x2F, 0x91, 0x6E, 0x34, 0xB3, 0x34, 0x1E, 0x4C, 0xF6, 0x71, 0x2A, 0xB2, 0x7D, 0x93, 0x71, - 0x03, 0x6A, 0x99, 0x7B, 0x3B, 0x98, 0xD8, 0xBE, 0x73, 0x2C, 0xB0, 0x1C, 0xC2, 0xE5, 0x8B, 0x2C, - 0x80, 0x39, 0x50, 0xBD, 0x5A, 0xC2, 0x42, 0x13, 0x60, 0x52, 0x11, 0x36, 0x56, 0x4C, 0x60, 0x51, - 0xFC, 0x08, 0x73, 0x07, 0x76, 0x79, 0xC4, 0x2E, 0xED, 0xD4, 0xFC, 0xC0, 0xA7, 0x35, 0xFD, 0x52, - 0x0A, 0x8B, 0xA3, 0x28, 0x6F, 0x79, 0x3D, 0x0A, 0x06, 0x5F, 0x79, 0x53, 0x58, 0x26, 0x85, 0x14, - 0xCD, 0xF6, 0x41, 0xFF, 0x17, 0x12, 0xF0, 0x29, 0x41, 0x84, 0x10, 0xB0, 0xB8, 0x5B, 0x05, 0xB6, - 0xB8, 0x2A, 0x90, 0x5C, 0xC2, 0xE1, 0xF7, 0x07, 0x58, 0x55, 0x6C, 0xAC, 0xB8, 0x68, 0x56, 0x57, - 0x4F, 0xD2, 0xC9, 0x3B, 0xA9, 0x3B, 0x18, 0x45, 0xE2, 0x56, 0x0C, 0xDE, 0x0B, 0x48, 0x42, 0x43, - 0xFF, 0xEF, 0x14, 0x16, 0xBA, 0xFC, 0xFA, 0x47, 0x10, 0xC2, 0x02, 0xA0, 0x51, 0x6B, 0xAB, 0x7B, - 0xB8, 0x16, 0xE1, 0x7F, 0xBA, 0x46, 0x20, 0xA1, 0x2D, 0xDE, 0x58, 0xC1, 0x20, 0x7C, 0x0C, 0xF0, - 0xFD, 0xF9, 0x73, 0x75, 0xB2, 0x52, 0x08, 0x86, 0x5D, 0x95, 0xD2, 0xE0, 0xB7, 0x87, 0x2F, 0x6D, - 0x11, 0x3C, 0xCC, 0x0E, 0xAD, 0xF4, 0x12, 0xBE, 0x7A, 0x60, 0x85, 0x89, 0xC8, 0x32, 0xAB, 0xCC, - 0x96, 0x65, 0x91, 0x99, 0x78, 0x11, 0x70, 0x72, 0x26, 0x63, 0xEE, 0xE6, 0x63, 0x7F, 0xF0, 0xF2, - 0x59, 0x99, 0x92, 0xFA, 0x0D, 0x5F, 0xF9, 0x41, 0xDC, 0x68, 0x9B, 0xCE, 0xC3, 0xA6, 0xE4, 0x17, - 0x23, 0x25, 0x59, 0x55, 0x7C, 0x5F, 0x6E, 0xC9, 0xC5, 0x64, 0x96, 0x5F, 0x36, 0x3A, 0x54, 0x07, - 0x79, 0x25, 0x3A, 0x34, 0x7F, 0x3B, 0x20, 0xC1, 0xF0, 0xE1, 0x7A, 0xAB, 0x0E, 0xFF, 0x2A, 0xA0, - 0x80, 0x8E, 0xD9, 0xF0, 0x27, 0x0E, 0xF4, 0x99, 0x68, 0x48, 0xFC, 0xF2, 0x36, 0x3A, 0x64, 0xA1, - 0x9D, 0x16, 0x63, 0x39, 0xE8, 0xC3, 0x44, 0x3E, 0xE4, 0x0B, 0xCA, 0x14, 0x55, 0xE6, 0x1E, 0x1B, - 0x8E, 0xC2, 0x86, 0x56, 0xFE, 0x4C, 0xFA, 0x70, 0x95, 0x7B, 0x3C, 0xD0, 0xB9, 0xF4, 0xA6, 0x4F, - 0x43, 0x16, 0xB6, 0x48, 0xAF, 0xD3, 0xE9, 0x34, 0xB3, 0x26, 0x83, 0x79, 0x21, 0xC0, 0x54, 0xB4, - 0x08, 0x5B, 0x03, 0xA3, 0xCF, 0x41, 0x33, 0x21, 0xD8, 0x2F, 0xEE, 0xA9, 0x30, 0x96, 0x96, 0x78, - 0x4E, 0xC2, 0x0A, 0x5E, 0x11, 0xEC, 0x76, 0xD2, 0x5A, 0x47, 0x31, 0x18, 0x51, 0x27, 0x94, 0x38, - 0xAA, 0x01, 0xAE, 0x67, 0x89, 0xEC, 0x4F, 0x07, 0x03, 0x58, 0x0A, 0x33, 0x32, 0x95, 0x6B, 0x0C, - 0x09, 0x1C, 0x51, 0x6E, 0x23, 0x51, 0x14, 0x71, 0x22, 0xA1, 0x2D, 0x02, 0xD7, 0xA9, 0x4B, 0x81, - 0x57, 0x85, 0x6B, 0xA1, 0x10, 0xD6, 0xDE, 0x92, 0x3A, 0xC1, 0x49, 0xB9, 0x18, 0x4E, 0xAE, 0x3A, - 0xDE, 0x88, 0x6D, 0x06, 0x6E, 0xD3, 0xD8, 0x59, 0xB7, 0xA2, 0x60, 0xD9, 0xED, 0x8B, 0xDC, 0x9B, - 0xA1, 0xC7, 0x08, 0x27, 0xA4, 0x76, 0xC8, 0x6C, 0x49, 0x43, 0x38, 0x8F, 0x12, 0xCA, 0xB6, 0x8B, - 0x5B, 0x61, 0x8C, 0x93, 0xE6, 0x6F, 0xB2, 0x7A, 0x2C, 0xF8, 0x2E, 0xE8, 0x1F, 0xDA, 0x9E, 0xC5, - 0xD8, 0x64, 0xCD, 0x4C, 0x61, 0x06, 0x5D, 0x19, 0x7D, 0x96, 0x2E, 0x15, 0x53, 0x68, 0x39, 0xAA, - 0x64, 0x22, 0xB7, 0x49, 0x5A, 0xC8, 0x28, 0xD5, 0x76, 0x45, 0x8D, 0x54, 0xF9, 0xD5, 0x84, 0x4A, - 0x8B, 0x0B, 0x30, 0x49, 0x54, 0x82, 0xA9, 0x34, 0x8A, 0xBC, 0x8D, 0x19, 0xD7, 0xA2, 0x29, 0xEC, - 0xD6, 0x24, 0xC2, 0x65, 0x47, 0xA2, 0xFC, 0x9A, 0xA3, 0x02, 0x0F, 0x2D, 0xA6, 0xD8, 0xE9, 0xFD, - 0x82, 0x73, 0x8D, 0xA2, 0x89, 0xAC, 0x4C, 0x98, 0x57, 0x59, 0xD6, 0xC2, 0x7B, 0x73, 0xBD, 0x8D, - 0x0D, 0x20, 0x96, 0x45, 0x0B, 0x5E, 0x53, 0xF8, 0x5F, 0x7C, 0x4F, 0xA9, 0x4F, 0x3A, 0x6C, 0xB7, - 0x0C, 0x65, 0x35, 0x28, 0x1C, 0x04, 0xA3, 0x91, 0x33, 0x89, 0xE8, 0x9B, 0xB3, 0x7E, 0x9F, 0xC7, - 0x56, 0xB2, 0x0D, 0xA2, 0x31, 0x3E, 0x45, 0xA5, 0x3E, 0x5F, 0x80, 0x82, 0xBD, 0x18, 0xF0, 0x68, - 0xB8, 0x81, 0x13, 0x52, 0xD5, 0x12, 0x88, 0x02, 0x9B, 0xBC, 0x91, 0x7F, 0x52, 0x6A, 0x50, 0x93, - 0xB7, 0xB4, 0xE9, 0x05, 0x58, 0xBD, 0x15, 0x56, 0xBA, 0x82, 0xB3, 0xF9, 0x8C, 0x4D, 0xA6, 0x93, - 0xA2, 0x06, 0x5C, 0x8F, 0xB2, 0x08, 0xD4, 0xBE, 0xC2, 0x44, 0xEE, 0xE1, 0x0A, 0xEC, 0xD8, 0xA3, - 0x23, 0x37, 0x6A, 0xA4, 0x97, 0xA1, 0x0E, 0x04, 0x13, 0xC4, 0x0A, 0x68, 0x90, 0x06, 0x4A, 0x9A, - 0xEC, 0x49, 0x98, 0x2A, 0xB6, 0xDC, 0x22, 0x66, 0x15, 0xB8, 0x2D, 0xF7, 0xED, 0x88, 0x5D, 0xAE, - 0x53, 0x72, 0x5B, 0xA7, 0x22, 0xC1, 0xA6, 0x43, 0x3F, 0x8A, 0x66, 0x6D, 0x87, 0xA2, 0x14, 0x4D, - 0xE1, 0xD7, 0x6A, 0xAD, 0xF7, 0xD3, 0xB8, 0x5F, 0x68, 0xCA, 0xA2, 0x80, 0x2B, 0xB5, 0xEB, 0xAB, - 0xB1, 0xC0, 0xD0, 0x52, 0xC4, 0x06, 0x57, 0x6A, 0x7B, 0x7E, 0xAE, 0xB0, 0x48, 0xDD, 0xF3, 0x54, - 0x6B, 0x0D, 0x7B, 0xB7, 0x48, 0x05, 0x80, 0x7F, 0x56, 0x6A, 0xC9, 0x22, 0x91, 0xD2, 0x96, 0x6C, - 0x45, 0x54, 0xB1, 0xB7, 0x8F, 0x51, 0x4C, 0xC7, 0x4A, 0x6F, 0xF9, 0xDF, 0x95, 0xDA, 0x1E, 0xE9, - 0xD1, 0xCE, 0xD0, 0x3A, 0x89, 0x7F, 0xAE, 0xD4, 0xFE, 0xEC, 0x52, 0x61, 0x17, 0x86, 0x44, 0xCB, - 0x56, 0xDC, 0x22, 0x9B, 0x26, 0x84, 0x6B, 0xAF, 0x50, 0x45, 0xC2, 0x5B, 0x66, 0xCC, 0x06, 0x0F, - 0x54, 0x4D, 0xE3, 0xBE, 0xD0, 0x9D, 0xDC, 0xC2, 0x0B, 0xB4, 0xEB, 0x5B, 0x8A, 0x05, 0xE9, 0x62, - 0xBC, 0xF0, 0xFA, 0x16, 0xB4, 0x74, 0x42, 0x67, 0x00, 0xFB, 0xDC, 0x48, 0x35, 0x21, 0xBA, 0xB6, - 0x37, 0x13, 0xD4, 0xA8, 0x8F, 0x79, 0x78, 0xB9, 0xB9, 0xB2, 0x38, 0x77, 0x5A, 0x78, 0xD5, 0xB1, - 0xD3, 0xE9, 0xF6, 0x5A, 0xEC, 0xAE, 0x66, 0xD6, 0x88, 0xF1, 0x52, 0x66, 0xCA, 0xBA, 0x1D, 0xD6, - 0xC0, 0x36, 0x70, 0x24, 0x2F, 0x11, 0xE5, 0x01, 0x5E, 0x40, 0xA6, 0x50, 0x85, 0x8D, 0xDC, 0x86, - 0x24, 0xD0, 0x46, 0x8E, 0xE7, 0xC3, 0x87, 0xBB, 0x1A, 0x33, 0xA2, 0x5B, 0x9D, 0x5C, 0x1B, 0xBA, - 0xD5, 0xA9, 0x80, 0x36, 0x03, 0xFA, 0xE0, 0xEC, 0xFD, 0x42, 0x90, 0x93, 0x85, 0x42, 0x9E, 0x43, - 0x45, 0xAC, 0xAE, 0xD5, 0xA5, 0x83, 0x4D, 0xD6, 0x7E, 0xDA, 0xE8, 0xEA, 0xC0, 0x01, 0xD6, 0x84, - 0x6F, 0x83, 0x28, 0x16, 0x62, 0xDF, 0xC8, 0x88, 0x7D, 0x23, 0x47, 0xEC, 0xD9, 0x6E, 0xE7, 0x74, - 0x3D, 0x8B, 0x0F, 0x47, 0x2E, 0xC7, 0xB7, 0x85, 0x3F, 0x26, 0x4A, 0xF6, 0x71, 0x36, 0x54, 0xB6, - 0xBE, 0xB1, 0x3B, 0x9A, 0xDC, 0x51, 0xC1, 0x70, 0xAD, 0x75, 0x4C, 0x44, 0x6B, 0x9D, 0xB9, 0xFB, - 0xC6, 0x3B, 0xF2, 0x21, 0xA2, 0xA1, 0xAD, 0x83, 0xF8, 0x9D, 0x59, 0x96, 0xF8, 0x6B, 0x6F, 0x18, - 0xB4, 0x07, 0xC1, 0x18, 0xFF, 0xC2, 0xAF, 0x64, 0x8C, 0x04, 0x4C, 0x61, 0x3A, 0x81, 0xB1, 0xEF, - 0xC1, 0xCC, 0x3F, 0x76, 0xBC, 0x11, 0x81, 0x09, 0x8A, 0x5D, 0x65, 0x7B, 0x02, 0x12, 0xEE, 0xEF, - 0xEF, 0xDB, 0x4B, 0x25, 0xC3, 0xBA, 0x00, 0xE4, 0x2B, 0x79, 0x4E, 0x57, 0x81, 0x86, 0xA9, 0x0C, - 0x51, 0x7B, 0x55, 0xD2, 0x5A, 0xE8, 0x4B, 0xAF, 0xDB, 0xE9, 0x56, 0x6A, 0xA5, 0x49, 0xBE, 0x76, - 0x3D, 0x72, 0xC3, 0xAB, 0xFE, 0xC4, 0x09, 0xBF, 0x1E, 0x4F, 0xFD, 0x6E, 0x6D, 0x46, 0x08, 0xE7, - 0x1F, 0x67, 0xA1, 0x54, 0x72, 0x1D, 0xAF, 0x61, 0xFC, 0x2F, 0xFC, 0x67, 0xD6, 0xAE, 0x22, 0x00, - 0x40, 0x09, 0x20, 0x6A, 0x86, 0x9B, 0x4B, 0xAD, 0x7B, 0x19, 0x3A, 0x7E, 0x34, 0xF6, 0xE2, 0x37, - 0x6F, 0xF6, 0x6A, 0xF6, 0x83, 0x26, 0xC3, 0x0D, 0x81, 0x6B, 0x97, 0x0F, 0xFB, 0xBF, 0xCA, 0xC3, - 0x63, 0xC3, 0x01, 0x33, 0xBD, 0x7E, 0x10, 0x4B, 0xCC, 0x62, 0x5F, 0x43, 0x9D, 0x07, 0xF5, 0x7A, - 0xEE, 0xFF, 0xD9, 0xC1, 0x00, 0x85, 0x2F, 0x3C, 0x56, 0x61, 0xCC, 0x56, 0xDF, 0x88, 0xC1, 0x73, - 0x23, 0x02, 0xDB, 0xDF, 0x90, 0x39, 0x89, 0xD8, 0x49, 0x08, 0x56, 0xCB, 0xDD, 0x5F, 0x2B, 0x68, - 0xF3, 0xF6, 0xD6, 0xD9, 0xC0, 0x21, 0xA5, 0x11, 0xF7, 0x35, 0x18, 0x83, 0x43, 0x5B, 0x2B, 0x2B, - 0x4D, 0x9B, 0x06, 0x5F, 0x58, 0xF0, 0x86, 0x32, 0x3B, 0x59, 0xAE, 0x4E, 0xFD, 0x54, 0x74, 0x65, - 0x51, 0x1A, 0x62, 0xCB, 0xA9, 0x82, 0xC5, 0x0E, 0xE7, 0x98, 0xC6, 0xE0, 0x1A, 0xC4, 0x7D, 0xC7, - 0x26, 0x26, 0x98, 0xEE, 0x03, 0xDF, 0xC5, 0xB1, 0xB7, 0xD9, 0xC1, 0xFF, 0xDB, 0xE6, 0x88, 0xCD, - 0x0E, 0x5A, 0x2D, 0x28, 0x53, 0x47, 0xE8, 0x7E, 0xEE, 0x85, 0xAD, 0x62, 0x84, 0xE7, 0x41, 0xE4, - 0xE1, 0x7F, 0xF7, 0x06, 0x83, 0x29, 0x98, 0xC0, 0x47, 0x6E, 0x24, 0x37, 0xDA, 0x5D, 0x0B, 0xE2, - 0x6E, 0x9B, 0x61, 0xDE, 0x68, 0x17, 0x60, 0xD6, 0x51, 0x6B, 0x6A, 0xCE, 0x8E, 0x25, 0x8E, 0x58, - 0x2C, 0x6D, 0x4B, 0xCB, 0x26, 0x63, 0x12, 0x6C, 0x6F, 0xF5, 0x09, 0x5B, 0x29, 0x99, 0x66, 0xAA, - 0xB5, 0xFA, 0x0C, 0xAD, 0x94, 0x2C, 0x34, 0xE5, 0x8D, 0xDE, 0x39, 0x31, 0xBA, 0x28, 0x58, 0xB3, - 0x76, 0x67, 0xAB, 0xD3, 0xDB, 0x5A, 0x7F, 0xB1, 0x55, 0xA1, 0x59, 0xE0, 0x0F, 0x45, 0x3B, 0x9E, - 0x57, 0xE7, 0xE5, 0x46, 0x67, 0xE3, 0xC5, 0x66, 0xB7, 0xBC, 0xE5, 0xDE, 0x28, 0xF6, 0xE2, 0xA9, - 0xCB, 0x56, 0x5C, 0x1B, 0x9B, 0x80, 0xF3, 0x65, 0x31, 0x3A, 0xE1, 0x84, 0x7F, 0x4B, 0xBD, 0xE1, - 0x2D, 0xA2, 0xEB, 0x54, 0xA9, 0x6D, 0xB8, 0xEC, 0xF5, 0x56, 0xDF, 0x8A, 0x4E, 0x4D, 0x75, 0x70, - 0x39, 0xAA, 0x5A, 0x48, 0x42, 0xB1, 0xB6, 0x81, 0x36, 0x35, 0x2D, 0x37, 0xF6, 0xCB, 0xCF, 0xC6, - 0x72, 0xC6, 0xD7, 0x02, 0x62, 0x5D, 0x4C, 0xB4, 0x73, 0x8B, 0x77, 0x76, 0x11, 0xCF, 0x26, 0xE6, - 0x6C, 0xD3, 0xAC, 0x45, 0xD0, 0xC7, 0xE6, 0x8B, 0x0E, 0xFB, 0x69, 0x91, 0xE4, 0x97, 0xC4, 0x16, - 0xC8, 0x32, 0x34, 0x04, 0xE2, 0xD7, 0x6A, 0x66, 0xA8, 0x0C, 0xF1, 0xA7, 0xDF, 0x0B, 0xF1, 0xE7, - 0xA7, 0x42, 0x6C, 0xB9, 0x99, 0x5B, 0x49, 0x55, 0x2B, 0x98, 0xC8, 0xF9, 0xCD, 0xE4, 0x4C, 0xA6, - 0xD2, 0xCE, 0xC7, 0xF4, 0x74, 0x0A, 0x26, 0xD0, 0x5F, 0x68, 0x88, 0xD7, 0x4A, 0xE1, 0xDB, 0x2A, - 0x8B, 0xB8, 0x49, 0x43, 0xEF, 0x2A, 0x0B, 0x41, 0x19, 0x21, 0x2B, 0xDD, 0x6E, 0x67, 0x6D, 0xBD, - 0x45, 0x5E, 0xBE, 0xD4, 0x76, 0x9E, 0xFC, 0x33, 0x0A, 0x00, 0x0B, 0x2A, 0x4E, 0x3E, 0x39, 0x28, - 0xCD, 0xB1, 0xB5, 0x82, 0xB9, 0xCE, 0x3A, 0x2D, 0x22, 0xFE, 0xA3, 0xE0, 0xDC, 0x10, 0x42, 0x67, - 0xBF, 0x2C, 0xA4, 0x6B, 0x79, 0xA3, 0x73, 0xA5, 0xD7, 0x01, 0x83, 0xC0, 0xFC, 0xEE, 0x6D, 0x0D, - 0x37, 0xFB, 0x80, 0xB8, 0xD9, 0x2F, 0xB3, 0xAA, 0x9B, 0x12, 0x33, 0x63, 0xD9, 0x28, 0x26, 0xE7, - 0xE5, 0xC9, 0x82, 0x31, 0xEB, 0x6B, 0x2E, 0xDC, 0x58, 0x71, 0x00, 0x99, 0x4D, 0xE3, 0x0C, 0x1B, - 0xAB, 0x99, 0x16, 0x2B, 0x59, 0x9C, 0xB3, 0x6E, 0x1C, 0xAB, 0xA1, 0xB3, 0xF5, 0x71, 0x81, 0xCD, - 0xE3, 0x32, 0x90, 0xB2, 0x2D, 0xC0, 0x32, 0xD0, 0xCE, 0x30, 0xC3, 0xE7, 0x8A, 0x38, 0x67, 0xD7, - 0x56, 0x05, 0x82, 0x7D, 0xE7, 0x56, 0xA5, 0xA5, 0xDC, 0x49, 0xD5, 0xE6, 0x68, 0x97, 0xDD, 0x40, - 0x15, 0xB7, 0xB4, 0xEC, 0x17, 0xDD, 0x7B, 0x3F, 0xBE, 0xF7, 0x7B, 0xF3, 0xC0, 0xE0, 0xD8, 0x3F, - 0x5E, 0x6C, 0xDC, 0x5F, 0x04, 0xEB, 0x6F, 0xB3, 0xC2, 0x48, 0xB6, 0x20, 0x6A, 0x98, 0x47, 0xC9, - 0x56, 0xA4, 0x30, 0xBF, 0x86, 0x3E, 0xD4, 0xF3, 0x83, 0x47, 0x4A, 0x86, 0xBD, 0x0C, 0x84, 0x63, - 0x81, 0x66, 0x0A, 0x90, 0x43, 0x76, 0x79, 0x58, 0x78, 0xF9, 0x2E, 0x83, 0xAF, 0x14, 0xF7, 0x38, - 0xAC, 0xF2, 0xB6, 0xED, 0xEE, 0xD6, 0x94, 0x26, 0x77, 0x27, 0x6C, 0x97, 0xB8, 0xAC, 0xDE, 0xC7, - 0x62, 0x6C, 0x30, 0x0C, 0x36, 0xF9, 0xFF, 0x93, 0xA1, 0xB0, 0xB6, 0x99, 0xE7, 0x8C, 0x3C, 0x5F, - 0x68, 0x0C, 0x94, 0x52, 0x92, 0xD1, 0x2A, 0x19, 0xCF, 0xF2, 0x17, 0xFA, 0x78, 0x41, 0x7D, 0x7A, - 0xEF, 0x8C, 0x6A, 0xF9, 0xA1, 0x9F, 0x86, 0x02, 0x70, 0xDF, 0x79, 0x05, 0xD1, 0x97, 0xEE, 0x42, - 0xF3, 0x22, 0x6A, 0x14, 0x91, 0x6B, 0xE7, 0x8D, 0x05, 0x56, 0xD7, 0x1B, 0x4F, 0x3F, 0x39, 0xF7, - 0xDC, 0x53, 0xB9, 0xB6, 0x99, 0xE3, 0x83, 0x65, 0x96, 0x68, 0xD3, 0x98, 0xA1, 0xFA, 0x05, 0x69, - 0x41, 0xEC, 0x88, 0xCE, 0xBD, 0x78, 0x70, 0x8B, 0xD3, 0xE1, 0x56, 0x9E, 0x5B, 0x14, 0x4A, 0x38, - 0xB6, 0xAD, 0x85, 0x91, 0x5D, 0x40, 0x4B, 0x36, 0xED, 0xBF, 0xC4, 0x49, 0xFF, 0xA5, 0x15, 0x1B, - 0x7C, 0xE6, 0xE8, 0xD8, 0x2F, 0x55, 0xF0, 0x19, 0x22, 0xC5, 0x94, 0x21, 0x65, 0xCE, 0xF6, 0x7B, - 0xEF, 0xC6, 0x3B, 0x03, 0x8C, 0x41, 0xF8, 0xB5, 0xD3, 0xEF, 0x9F, 0x1C, 0x72, 0x5E, 0x6F, 0xA8, - 0x04, 0xF1, 0xED, 0x76, 0x9E, 0xA9, 0x47, 0x24, 0xF9, 0x1E, 0x67, 0x1B, 0x9A, 0x73, 0x27, 0x8A, - 0xE0, 0x17, 0xF7, 0xE9, 0x51, 0x75, 0xBF, 0x4F, 0x8F, 0xBA, 0xDF, 0xAF, 0x47, 0xBD, 0xEF, 0xD3, - 0xA3, 0xDE, 0xF7, 0xEB, 0xD1, 0xDA, 0xF7, 0xE9, 0xD1, 0xDA, 0x12, 0x7B, 0xA4, 0xCF, 0x71, 0x97, - 0x83, 0xCC, 0xA9, 0x07, 0x26, 0xA8, 0xD0, 0x2A, 0x98, 0xAB, 0xDD, 0xB2, 0x63, 0x11, 0x24, 0x1C, - 0x9A, 0xA5, 0x4B, 0xCC, 0xCD, 0x8D, 0x8D, 0xB5, 0xCC, 0x71, 0x08, 0xFB, 0x58, 0x4C, 0xEA, 0x37, - 0xE5, 0xE8, 0x49, 0xDC, 0x05, 0x3D, 0x9D, 0xC6, 0xF4, 0x21, 0x4B, 0x3C, 0x1E, 0x01, 0x1A, 0xE4, - 0xC2, 0xA7, 0xCB, 0x83, 0x73, 0xC2, 0x2B, 0xB0, 0x23, 0x21, 0x5E, 0x40, 0x06, 0x8E, 0x4F, 0xFC, - 0x80, 0x11, 0xC2, 0xDB, 0xB8, 0xC4, 0x89, 0xD1, 0x7B, 0x4F, 0x22, 0x74, 0x8C, 0xC6, 0x1E, 0x3B, - 0xB9, 0xCB, 0x21, 0x4B, 0xCE, 0x37, 0xEC, 0xB4, 0xD2, 0x9C, 0x6F, 0x6C, 0x51, 0xBE, 0x25, 0x3C, - 0x93, 0x87, 0x5A, 0xCE, 0x03, 0x34, 0xC1, 0x68, 0xA2, 0xAB, 0xB1, 0xE7, 0x43, 0x1F, 0x23, 0xCE, - 0xB9, 0x6E, 0x67, 0xA3, 0xDB, 0xEB, 0x64, 0x96, 0xAE, 0xDD, 0x16, 0x7C, 0x6F, 0xF5, 0xF4, 0x2D, - 0x95, 0x76, 0xA2, 0x5A, 0x7C, 0x90, 0xC4, 0xD1, 0xBD, 0x63, 0x8B, 0x8B, 0xE5, 0x22, 0xAC, 0x70, - 0xA6, 0x61, 0xED, 0xEB, 0x66, 0x87, 0xFC, 0x99, 0xF4, 0xD6, 0x73, 0xFD, 0xFB, 0x39, 0x14, 0xEB, - 0xCD, 0xBE, 0xD9, 0x4E, 0xF6, 0xB4, 0x70, 0xD6, 0x6A, 0xD2, 0x48, 0x9B, 0x9C, 0xC0, 0xAE, 0x33, - 0x84, 0xA5, 0x98, 0xD0, 0xE3, 0x2C, 0x63, 0x36, 0x97, 0xC2, 0x12, 0x3B, 0xC2, 0x8E, 0xE9, 0x69, - 0x97, 0xE7, 0xDE, 0x45, 0x0B, 0x9C, 0xE2, 0x0C, 0x65, 0xAB, 0xAB, 0x09, 0x73, 0x04, 0xAC, 0xC3, - 0xB7, 0x07, 0xE7, 0x25, 0xCB, 0x1B, 0x95, 0x43, 0x27, 0xE7, 0x7B, 0xFC, 0x68, 0x2B, 0x85, 0x70, - 0x72, 0x5E, 0x53, 0xB8, 0xE2, 0xFB, 0x7E, 0x5B, 0xF9, 0xBF, 0xCA, 0x9C, 0xA3, 0xDC, 0x24, 0x65, - 0x25, 0x18, 0x0E, 0xCF, 0xFA, 0x4F, 0x8D, 0xE2, 0x0D, 0x4F, 0x6A, 0xFF, 0xD4, 0x68, 0xFA, 0xD3, - 0x6B, 0xF8, 0x77, 0xA9, 0x58, 0x84, 0xCE, 0x4A, 0x0C, 0x6F, 0xE3, 0x58, 0x5A, 0xDE, 0x4E, 0xD6, - 0xF2, 0x76, 0xAC, 0x96, 0x77, 0x2E, 0x44, 0x67, 0xCB, 0xC4, 0x93, 0x33, 0x29, 0xC9, 0x06, 0xD5, - 0x8E, 0x82, 0xE4, 0xFC, 0x23, 0x29, 0x9C, 0x63, 0x0E, 0x3A, 0x2A, 0xCC, 0xA3, 0x67, 0x43, 0x86, - 0x0F, 0x38, 0x1C, 0x07, 0x21, 0x4C, 0x35, 0xC9, 0x54, 0x34, 0xDB, 0x0C, 0x9D, 0x8F, 0x52, 0xCD, - 0x83, 0xA6, 0xFE, 0x6E, 0x98, 0x92, 0xD5, 0xD5, 0xAC, 0x41, 0xD1, 0xC7, 0x66, 0x77, 0xAB, 0xD7, - 0xEE, 0x6E, 0xBE, 0x6C, 0x77, 0xDA, 0xDD, 0xDE, 0x9A, 0x8A, 0xA1, 0xA8, 0xA9, 0x18, 0x74, 0xB2, - 0xED, 0x7A, 0xBB, 0x0B, 0xA6, 0xAE, 0x62, 0x5B, 0x65, 0x34, 0x29, 0xB8, 0xAB, 0xB6, 0x4E, 0x07, - 0x49, 0x6F, 0x63, 0xA3, 0x2D, 0xFF, 0x5F, 0x19, 0xB9, 0x32, 0x02, 0x5E, 0x76, 0x2A, 0xB6, 0x49, - 0x95, 0x19, 0x38, 0xA4, 0xB5, 0x31, 0x76, 0x25, 0x67, 0x97, 0xE7, 0xF3, 0x5B, 0x5F, 0xAB, 0x67, - 0x0E, 0x10, 0x8F, 0x46, 0xB0, 0x2D, 0x0D, 0x7C, 0xAE, 0x3D, 0x6B, 0x40, 0xC3, 0x0B, 0x75, 0x83, - 0xCE, 0xE6, 0xDF, 0x17, 0xAA, 0xCA, 0xA4, 0xF1, 0x4B, 0x65, 0xF1, 0x22, 0x13, 0xA0, 0x6D, 0xE0, - 0xB1, 0xFB, 0xC2, 0xB0, 0x5F, 0x43, 0x1F, 0x98, 0xE6, 0x23, 0x5D, 0x63, 0xAA, 0xD9, 0x99, 0x13, - 0xF6, 0x45, 0x10, 0xC0, 0xD6, 0x7E, 0xC4, 0xE4, 0x8C, 0x1B, 0xC1, 0x4E, 0xC6, 0xEF, 0xCF, 0x37, - 0x80, 0x9D, 0x16, 0x7E, 0x35, 0x1C, 0xC0, 0xB3, 0xE2, 0xF1, 0xA2, 0x89, 0xB8, 0xF8, 0xFC, 0x14, - 0xC8, 0x52, 0x1F, 0xE2, 0x24, 0x11, 0xE1, 0x89, 0x2B, 0x22, 0x79, 0x32, 0x81, 0x3C, 0x6C, 0x24, - 0x47, 0x85, 0x08, 0x14, 0xD7, 0x54, 0x18, 0x57, 0x38, 0x1D, 0xB7, 0xA6, 0xD2, 0xD6, 0xAD, 0xA2, - 0x79, 0x2F, 0xAA, 0xFA, 0xE1, 0x38, 0x55, 0x5B, 0xE2, 0xC2, 0x6B, 0x9F, 0xEF, 0xD2, 0xD9, 0xDF, - 0x57, 0xD3, 0x28, 0x59, 0xDD, 0x98, 0x2C, 0x15, 0x4B, 0x1C, 0x1B, 0x4B, 0xD5, 0x98, 0xC1, 0x72, - 0xA7, 0x81, 0x46, 0x81, 0x58, 0xC5, 0x2D, 0x15, 0xEF, 0x0C, 0x9E, 0xA9, 0x2A, 0xDC, 0x60, 0x04, - 0x15, 0x7A, 0x2C, 0xF3, 0x7B, 0xD4, 0xB1, 0x35, 0x1E, 0x9A, 0x4C, 0x80, 0x51, 0xEF, 0x84, 0x5E, - 0xFC, 0x58, 0x4B, 0xEF, 0xCD, 0x76, 0xB2, 0xBE, 0x10, 0xF9, 0x94, 0x81, 0x3D, 0x5B, 0x9C, 0x11, - 0xDF, 0x8C, 0x57, 0xB1, 0x44, 0x15, 0xE5, 0x06, 0x91, 0x1E, 0x8C, 0xAB, 0x04, 0xBF, 0xA9, 0x71, - 0x8E, 0x3B, 0x44, 0x4B, 0x4B, 0x9A, 0xDE, 0x58, 0xA8, 0x47, 0xCE, 0x1D, 0xDD, 0x8F, 0xFD, 0x3A, - 0x88, 0xE0, 0x1C, 0x18, 0x00, 0xBC, 0x65, 0x7C, 0x60, 0x91, 0xDB, 0x0A, 0x04, 0xCC, 0x2E, 0xCF, - 0xFE, 0xCC, 0x84, 0xE8, 0xC8, 0xB8, 0xFF, 0x04, 0x92, 0x52, 0xE1, 0x49, 0xB3, 0xDB, 0x29, 0xEB, - 0x6E, 0xA3, 0xBB, 0xBB, 0x4B, 0xEB, 0x6D, 0xF4, 0x43, 0x76, 0xF7, 0x1F, 0x5A, 0xB8, 0x53, 0x95, - 0xAB, 0xCE, 0xF8, 0x64, 0x14, 0x18, 0xC0, 0x36, 0x11, 0xBD, 0xBE, 0x77, 0xBC, 0xB8, 0xDD, 0x6E, - 0xD7, 0x95, 0xF3, 0xC0, 0x1C, 0x1D, 0xB4, 0xC7, 0x38, 0xC9, 0x00, 0xA7, 0x6C, 0x47, 0x5F, 0x49, - 0xE2, 0x13, 0xCF, 0xF7, 0x33, 0x35, 0x4B, 0x12, 0xBF, 0xFE, 0x66, 0xEE, 0x02, 0x75, 0xE1, 0x28, - 0xC5, 0xEA, 0xAD, 0x15, 0x55, 0x78, 0x7D, 0xE7, 0x0E, 0xBB, 0xD3, 0x6E, 0x6B, 0x47, 0x9A, 0xC6, - 0x1D, 0x9F, 0x5A, 0x7A, 0xA7, 0xBB, 0x55, 0xC4, 0xF8, 0x96, 0x06, 0x04, 0x59, 0x9A, 0x13, 0xB0, - 0x6B, 0x06, 0xCA, 0xAB, 0x11, 0xFB, 0x8B, 0x04, 0xAA, 0x2F, 0x1E, 0xAC, 0xBE, 0x48, 0xC0, 0xFA, - 0xA2, 0x41, 0xEB, 0x8B, 0x07, 0xAE, 0x2F, 0x16, 0xBC, 0xBE, 0x68, 0x18, 0xFA, 0x32, 0x42, 0xD1, - 0xE7, 0x0B, 0x47, 0x4F, 0xE6, 0x80, 0xF4, 0x7E, 0x0D, 0xA8, 0x38, 0xAF, 0xFB, 0x2F, 0x60, 0xE1, - 0x7F, 0x2C, 0x03, 0x6C, 0xB5, 0x8F, 0x4F, 0x65, 0x72, 0x2C, 0x57, 0x8E, 0xAD, 0x11, 0xF4, 0xCA, - 0xA5, 0x35, 0xB4, 0x2B, 0xD3, 0xEB, 0x07, 0xBD, 0xC6, 0x9B, 0xF3, 0xBE, 0xC5, 0x39, 0x93, 0xD0, - 0xF2, 0xF3, 0xCF, 0xC4, 0xDE, 0x0C, 0x74, 0x62, 0xC4, 0x52, 0x15, 0xCC, 0xDC, 0x74, 0x9F, 0x7A, - 0x87, 0xC1, 0x74, 0x2E, 0xA4, 0xEF, 0xDE, 0x9F, 0xED, 0xF5, 0x73, 0xE9, 0x6D, 0x1A, 0xD3, 0x92, - 0x2D, 0x2E, 0xBA, 0xCC, 0x80, 0x2A, 0x8A, 0x92, 0x41, 0xAF, 0xAA, 0xCC, 0x6D, 0x10, 0xC0, 0x7F, - 0x60, 0x47, 0xC5, 0x6E, 0x80, 0x26, 0x75, 0x54, 0x5D, 0x49, 0x95, 0xE9, 0xF9, 0x73, 0x53, 0x41, - 0x6C, 0xAA, 0x90, 0xED, 0x6F, 0xE6, 0x8E, 0x17, 0xF6, 0x7A, 0xDF, 0x8B, 0x4F, 0x9D, 0x49, 0x7A, - 0x87, 0x6C, 0xEC, 0xF9, 0xF0, 0x8F, 0xF3, 0xD0, 0x22, 0xD7, 0xAC, 0x44, 0xB9, 0xFF, 0xD9, 0x4A, - 0x2C, 0xC2, 0xC9, 0xA1, 0x32, 0x98, 0xE5, 0xC9, 0x71, 0x92, 0x51, 0x85, 0x53, 0x37, 0x76, 0xA2, - 0xAF, 0xBC, 0x80, 0x03, 0xD2, 0x0A, 0x51, 0x7F, 0xF8, 0x89, 0x31, 0x79, 0x8D, 0x28, 0x9B, 0xE8, - 0xC3, 0x17, 0x1F, 0x76, 0x11, 0x3D, 0xFF, 0xD0, 0x60, 0x40, 0x7E, 0x26, 0x8D, 0x2E, 0x79, 0xFD, - 0x9A, 0xE3, 0x6A, 0x36, 0x51, 0x4A, 0x9D, 0xA6, 0x21, 0x9D, 0x82, 0x7B, 0xA3, 0xF6, 0xCB, 0xA8, - 0x4A, 0x5B, 0xA5, 0x57, 0x65, 0xF2, 0x2C, 0x12, 0x42, 0xC6, 0x59, 0x2A, 0x6F, 0xB7, 0x2A, 0x76, - 0x51, 0x06, 0x65, 0x43, 0xFF, 0x2D, 0xD1, 0x53, 0x11, 0x3E, 0x19, 0xC5, 0x1E, 0x11, 0x9B, 0x80, - 0x49, 0xC6, 0x2D, 0x94, 0x21, 0xAC, 0x24, 0x0A, 0x4B, 0xB9, 0x6E, 0xCF, 0x5E, 0xCA, 0xD2, 0xE3, - 0x1D, 0xB7, 0xD3, 0xFB, 0xF5, 0x49, 0xD7, 0xB0, 0x92, 0x65, 0xFE, 0x4C, 0x33, 0xC6, 0xB8, 0x34, - 0xE6, 0x6F, 0x2B, 0xC2, 0x3E, 0x4F, 0xC0, 0x49, 0x57, 0xFA, 0xC9, 0x35, 0xFE, 0x3B, 0x99, 0x85, - 0x07, 0x83, 0x32, 0x79, 0x06, 0x27, 0xCF, 0x85, 0x35, 0x88, 0x77, 0xF3, 0x98, 0xE4, 0x89, 0x6A, - 0xA8, 0xCA, 0xD0, 0x4C, 0xE4, 0xAD, 0x37, 0xAB, 0xFA, 0x72, 0x99, 0xF1, 0x60, 0x9A, 0x19, 0x21, - 0x9E, 0x48, 0x14, 0x89, 0x54, 0xDE, 0x4D, 0xBB, 0x61, 0xBD, 0x20, 0x53, 0xFF, 0xAB, 0x8F, 0x09, - 0x02, 0xB6, 0x7F, 0x34, 0x5D, 0x41, 0x86, 0xD8, 0xDE, 0x7B, 0x7B, 0xCD, 0x0E, 0xA2, 0x51, 0xF9, - 0x6D, 0xA5, 0xBB, 0x78, 0x38, 0x5D, 0xC8, 0x82, 0x34, 0x92, 0xED, 0xA5, 0x3C, 0xCC, 0xFE, 0xE1, - 0x3A, 0x9F, 0x3B, 0x4C, 0xB8, 0xAA, 0x28, 0xFA, 0x2C, 0x83, 0x70, 0xB7, 0x2D, 0xBA, 0xC7, 0x53, - 0x7D, 0xCD, 0xAE, 0x7C, 0xAC, 0xDD, 0x1F, 0xDA, 0xF7, 0x87, 0xF6, 0xD9, 0xB5, 0x2F, 0xA3, 0x2B, - 0x3F, 0xED, 0x68, 0x06, 0xAF, 0xB0, 0xFF, 0xDC, 0x76, 0x46, 0xFC, 0x8A, 0x15, 0xBB, 0x1C, 0xF3, - 0x83, 0x74, 0xBF, 0xD0, 0xC8, 0xAB, 0x74, 0x4C, 0x42, 0xD8, 0xD2, 0xE0, 0xCC, 0x93, 0x0E, 0xA8, - 0xF9, 0x46, 0x4A, 0x2E, 0xDB, 0xE7, 0x25, 0x43, 0x13, 0x82, 0xC8, 0x53, 0x83, 0x13, 0x99, 0x4B, - 0xF0, 0xED, 0x9B, 0x5B, 0x6A, 0xCB, 0x58, 0xD8, 0x92, 0x23, 0x11, 0xCB, 0x61, 0x15, 0xB4, 0x3A, - 0x42, 0x89, 0xC6, 0x28, 0x2D, 0x7E, 0x0D, 0x2A, 0x99, 0x5E, 0x8D, 0x1C, 0x3C, 0xE9, 0xFD, 0x76, - 0x7D, 0x66, 0x4D, 0x67, 0x44, 0x31, 0x40, 0x18, 0xAA, 0x86, 0xAC, 0xD3, 0xB2, 0x11, 0x91, 0xDE, - 0x4E, 0x37, 0xAC, 0x5A, 0x21, 0x30, 0xA8, 0x54, 0x04, 0x2D, 0x1B, 0x94, 0xCD, 0x53, 0xAD, 0x45, - 0xAC, 0xAB, 0x92, 0xBF, 0xA2, 0xFB, 0xD9, 0x55, 0x5F, 0x26, 0x75, 0x40, 0xBA, 0xEC, 0x9B, 0x73, - 0xB9, 0x97, 0x84, 0x00, 0xF2, 0x05, 0x1D, 0xDA, 0x10, 0x65, 0x39, 0x97, 0xFE, 0x89, 0x87, 0x0E, - 0xB5, 0xDF, 0x67, 0xF1, 0xC6, 0xAD, 0x5E, 0xBA, 0x20, 0xDA, 0xC9, 0xCD, 0x85, 0x30, 0xF7, 0x7A, - 0x7F, 0x2E, 0xC3, 0x93, 0x27, 0x1D, 0xE1, 0xE3, 0x5F, 0xAE, 0x78, 0x64, 0x84, 0xA6, 0x2E, 0xA5, - 0x34, 0x6E, 0x93, 0xAD, 0xBD, 0xFF, 0xF1, 0xAF, 0x62, 0xB3, 0xF3, 0x58, 0x97, 0x9E, 0x64, 0x6B, - 0x19, 0x6C, 0x66, 0xE3, 0x99, 0xF2, 0xBA, 0x2D, 0x67, 0x92, 0x48, 0xDA, 0xDC, 0xAE, 0x2B, 0x91, - 0x49, 0x0D, 0xF5, 0x41, 0xDB, 0x9F, 0x30, 0x7B, 0xF5, 0x33, 0xE5, 0xDD, 0x1C, 0x5E, 0xFC, 0x5B, - 0xE7, 0x8B, 0xD4, 0x7B, 0xFC, 0xE6, 0x45, 0x67, 0xCE, 0x59, 0x83, 0xBB, 0xEB, 0x64, 0x79, 0xB3, - 0xC9, 0xCB, 0x64, 0xF5, 0xD7, 0xB0, 0xC5, 0xD1, 0x3E, 0xEC, 0x62, 0xFA, 0x8E, 0xA6, 0x0D, 0x78, - 0xB7, 0x04, 0x78, 0x57, 0x07, 0xDE, 0x35, 0x81, 0x77, 0x8B, 0x80, 0xF7, 0x4A, 0x80, 0xF7, 0x74, - 0xE0, 0x3D, 0x13, 0x78, 0xAF, 0x08, 0xF8, 0x5A, 0x09, 0xF0, 0x35, 0x1D, 0xF8, 0x9A, 0x09, 0x7C, - 0x2D, 0x01, 0xFE, 0x6F, 0xA0, 0xB2, 0xCA, 0x9D, 0x6E, 0xD4, 0xD9, 0x6B, 0xC7, 0xC5, 0xDF, 0xF1, - 0xFE, 0x6A, 0x89, 0x02, 0x4B, 0x5F, 0x4C, 0xCE, 0xD5, 0x6B, 0xA1, 0xD2, 0xED, 0x38, 0x78, 0x87, - 0x4F, 0xAD, 0x41, 0x09, 0x1E, 0xB6, 0x20, 0xDF, 0xD5, 0xD8, 0xFE, 0xE2, 0x08, 0x39, 0x24, 0xA8, - 0xCB, 0x83, 0x04, 0xEC, 0xA4, 0xCC, 0xDF, 0x7B, 0x3D, 0x4E, 0xCE, 0x73, 0x01, 0x8D, 0xE7, 0xF6, - 0x2A, 0x74, 0x99, 0x2F, 0xF4, 0xBB, 0xCA, 0xB1, 0xE2, 0xCF, 0x3F, 0x13, 0xFE, 0xB1, 0x97, 0x7E, - 0xCC, 0x28, 0x46, 0x77, 0x7E, 0xCD, 0x00, 0xC0, 0x3F, 0xAC, 0x93, 0xA1, 0x6B, 0xF7, 0x07, 0x22, - 0x2F, 0x6C, 0x6E, 0x59, 0xED, 0x68, 0x10, 0xA5, 0xCB, 0xB7, 0x4B, 0x7A, 0xC6, 0x22, 0x25, 0x3D, - 0xAE, 0x34, 0x89, 0x45, 0xE2, 0x64, 0x29, 0x67, 0x2F, 0x83, 0x63, 0x07, 0xCF, 0x53, 0x1E, 0x0F, - 0xE9, 0x8D, 0x33, 0x1D, 0xC5, 0x91, 0xBE, 0x96, 0xD2, 0xCB, 0xB2, 0x89, 0x69, 0x6B, 0xB2, 0x88, - 0xEC, 0x4D, 0xC0, 0xD8, 0x52, 0x57, 0x3B, 0xE0, 0x61, 0x57, 0xC9, 0xF9, 0x83, 0x66, 0x1C, 0x1B, - 0x3A, 0x2F, 0xAD, 0xD9, 0xD0, 0x0C, 0x4C, 0xEC, 0x39, 0xAE, 0x56, 0xB7, 0x65, 0x7A, 0xC0, 0xFE, - 0x4E, 0xC3, 0x20, 0xE5, 0x42, 0x4E, 0xF7, 0x3B, 0xD9, 0x36, 0xF2, 0x1A, 0x3A, 0xEB, 0xDC, 0xBF, - 0xDB, 0x5D, 0x7A, 0x95, 0x29, 0xB6, 0x5B, 0xF4, 0xDF, 0x32, 0x22, 0x3F, 0x1B, 0x53, 0x27, 0x23, - 0x6F, 0x9D, 0x4F, 0xE9, 0x1A, 0x18, 0xFB, 0x72, 0x76, 0x7A, 0xB4, 0x77, 0xC5, 0x33, 0x18, 0x48, - 0x2E, 0x77, 0x6D, 0x35, 0xFA, 0xE5, 0x35, 0x2E, 0x4B, 0x6B, 0xFC, 0xA2, 0xD4, 0x58, 0xB7, 0xD4, - 0xB8, 0x38, 0x3D, 0xD0, 0x61, 0x64, 0x3B, 0x28, 0x62, 0x1D, 0xFF, 0x8D, 0xFA, 0xA8, 0xD6, 0xB8, - 0xF8, 0xF5, 0xF4, 0xEA, 0x62, 0xEF, 0xE3, 0xAF, 0xC5, 0x35, 0xFA, 0xC7, 0x17, 0xFB, 0xBF, 0x9A, - 0x8C, 0xCA, 0x70, 0x0A, 0x5F, 0xAE, 0xB0, 0x0E, 0x7D, 0xE5, 0x59, 0x8B, 0xCE, 0x06, 0xEE, 0xDB, - 0x0A, 0xB0, 0xA9, 0xAF, 0x5F, 0x94, 0x57, 0x7B, 0x61, 0x54, 0xEB, 0x58, 0xAB, 0xBD, 0xAC, 0x06, - 0xED, 0xA5, 0x05, 0x9A, 0xAD, 0xDE, 0x56, 0x35, 0x70, 0x5B, 0x95, 0x88, 0xEB, 0xF6, 0x2A, 0x41, - 0xEB, 0xF6, 0x2A, 0x41, 0xEB, 0xAD, 0x75, 0x4C, 0x68, 0xD6, 0x4E, 0xB0, 0x67, 0x4F, 0x3A, 0x15, - 0x20, 0xF2, 0xF7, 0x51, 0xB2, 0x15, 0x2D, 0xE2, 0x87, 0x25, 0x06, 0xDE, 0x51, 0xBB, 0xF7, 0xDC, - 0xF8, 0x16, 0xDB, 0x56, 0x57, 0x81, 0x4E, 0x35, 0x1D, 0xE8, 0x2D, 0x55, 0x07, 0x7A, 0xCB, 0xD5, - 0x81, 0xDE, 0x52, 0x75, 0xA0, 0xF7, 0xAF, 0xA6, 0x03, 0xD3, 0x88, 0xA5, 0x69, 0x48, 0xFD, 0x45, - 0x51, 0xD6, 0x91, 0xC2, 0xEF, 0xB9, 0xA7, 0x20, 0xD8, 0x7B, 0x7A, 0xDB, 0xD9, 0x3A, 0x9F, 0x8C, - 0x3A, 0x9F, 0x2C, 0x75, 0x3E, 0x1B, 0x75, 0x3E, 0x6B, 0xA6, 0x1B, 0xA8, 0x91, 0xB9, 0x56, 0x0B, - 0x29, 0xCA, 0xBA, 0x76, 0x94, 0x17, 0x15, 0xCB, 0x5D, 0x37, 0xCA, 0x13, 0x88, 0x46, 0xE5, 0xB7, - 0x7B, 0x47, 0x57, 0x7B, 0xE7, 0x07, 0x96, 0xBA, 0x7B, 0xA3, 0x58, 0x08, 0x43, 0x0F, 0xB0, 0x19, - 0x3B, 0xE1, 0x57, 0x2D, 0xBA, 0xA6, 0x5B, 0x12, 0x42, 0x53, 0xD2, 0xBC, 0x67, 0x6B, 0xCE, 0xA3, - 0xE5, 0x05, 0x7E, 0xC7, 0xFD, 0xDB, 0x34, 0x8A, 0x81, 0xD2, 0x86, 0x99, 0x02, 0x16, 0xD7, 0x1F, - 0x67, 0xF4, 0x1E, 0x66, 0xBE, 0x84, 0x65, 0x99, 0x68, 0x94, 0xB4, 0x8E, 0x65, 0x6D, 0x45, 0x1F, - 0xBC, 0xD8, 0x38, 0xF9, 0xE7, 0xEF, 0x6B, 0xE3, 0xB3, 0xC1, 0xE7, 0x2C, 0xA4, 0x67, 0xFB, 0x59, - 0xFA, 0xD0, 0x37, 0x33, 0x20, 0x27, 0xFE, 0x79, 0x18, 0xE0, 0x41, 0x75, 0x12, 0xC0, 0x62, 0xE2, - 0x44, 0xA8, 0x7B, 0xBE, 0xAB, 0x2E, 0xE8, 0x92, 0x87, 0x55, 0xAD, 0x89, 0x6E, 0x53, 0x32, 0xAC, - 0xA9, 0x6E, 0x8D, 0x17, 0x59, 0x65, 0x7A, 0x4D, 0x5C, 0xE6, 0x4A, 0x08, 0x2A, 0x6C, 0x81, 0xCE, - 0xDE, 0x11, 0xFE, 0x35, 0xDB, 0x11, 0xA3, 0x93, 0xE9, 0x93, 0xA4, 0x32, 0xDB, 0x36, 0x2C, 0xFA, - 0xF0, 0xA5, 0x85, 0x5B, 0xCA, 0x1D, 0x99, 0x47, 0xFD, 0xF3, 0xB5, 0x1E, 0xB9, 0x65, 0x0F, 0x2F, - 0xB0, 0x27, 0x5D, 0xA1, 0x30, 0xE4, 0x2F, 0xBA, 0x62, 0x3A, 0x6E, 0xE6, 0x92, 0x08, 0xF0, 0x62, - 0x50, 0xC2, 0x1C, 0x72, 0x13, 0x06, 0x63, 0xB2, 0x77, 0xCE, 0x1B, 0x0C, 0xC9, 0x04, 0xA8, 0x52, - 0x73, 0x79, 0x66, 0x1F, 0x86, 0x4D, 0x72, 0x5C, 0x1E, 0x02, 0x25, 0xE1, 0xD8, 0xF3, 0x61, 0x85, - 0x7D, 0xEB, 0xC1, 0x02, 0x54, 0xCD, 0xED, 0xCD, 0xFD, 0xA6, 0x41, 0xE8, 0xC1, 0xE2, 0xC7, 0x19, - 0xF1, 0xDC, 0xDF, 0x72, 0xFB, 0x65, 0x66, 0x17, 0xFE, 0x69, 0x87, 0xF8, 0xD3, 0xD1, 0xA8, 0x69, - 0x6E, 0x50, 0xCC, 0x84, 0xC3, 0x3A, 0x23, 0x8B, 0xE2, 0x13, 0xF0, 0xE1, 0x8F, 0x3E, 0xFC, 0xE9, - 0xFE, 0x54, 0x7C, 0x31, 0x45, 0x4D, 0x99, 0xFC, 0x81, 0x9F, 0xB8, 0x10, 0xF8, 0x3F, 0xF0, 0x07, - 0x98, 0x65, 0x7B, 0x38, 0xD7, 0xB6, 0x21, 0xD2, 0x5F, 0x69, 0xFD, 0x08, 0x9B, 0x0D, 0xED, 0x90, - 0x95, 0x25, 0x52, 0xE4, 0xF7, 0xA3, 0xA3, 0xE9, 0xF5, 0xD8, 0x8B, 0xE5, 0x93, 0x3F, 0xF8, 0x12, - 0x0F, 0x0C, 0x32, 0x96, 0xBC, 0xFB, 0xB7, 0xCE, 0x97, 0xD4, 0x71, 0x84, 0x9E, 0x57, 0xE1, 0x3C, - 0xC2, 0x24, 0xF4, 0xE8, 0xE9, 0x56, 0xE3, 0x36, 0x64, 0x71, 0xDB, 0x99, 0x4C, 0xF8, 0x60, 0xCA, - 0x82, 0x6D, 0x31, 0xB4, 0xCD, 0x14, 0xA6, 0xF3, 0x37, 0xE7, 0x41, 0xC0, 0xFB, 0xF5, 0xF4, 0x1D, - 0x86, 0x8D, 0x5F, 0x50, 0xD8, 0x5D, 0xA4, 0x59, 0xE9, 0xB1, 0x42, 0x3B, 0x00, 0x80, 0x8D, 0xDA, - 0xF9, 0x7B, 0x58, 0x36, 0x02, 0x17, 0x57, 0xA7, 0xAC, 0x47, 0x35, 0xB5, 0x06, 0x1B, 0x4A, 0x92, - 0x02, 0xF5, 0x91, 0x11, 0x9D, 0x0B, 0x96, 0xED, 0x19, 0xA6, 0xD1, 0xE5, 0x85, 0x1E, 0xFA, 0xA7, - 0x27, 0x5A, 0xF0, 0x9D, 0x91, 0x78, 0x3E, 0xF7, 0xE1, 0x5B, 0xCD, 0x02, 0x17, 0x23, 0x64, 0x2F, - 0xB3, 0xE4, 0x03, 0xCD, 0x0C, 0x5C, 0x3E, 0xCC, 0xF2, 0x9E, 0x00, 0xCE, 0x1B, 0xBC, 0x1A, 0x82, - 0x20, 0x1C, 0xD2, 0xF8, 0xDC, 0xF1, 0x42, 0xEA, 0x32, 0x63, 0xAA, 0x4F, 0x19, 0xD7, 0xB1, 0x7F, - 0xCC, 0x6A, 0xF0, 0x32, 0x0B, 0x8B, 0xD8, 0x7B, 0x35, 0xAC, 0x90, 0xC1, 0x0A, 0xE2, 0x98, 0xFA, - 0x6D, 0xE5, 0x9C, 0x3D, 0xEF, 0x19, 0xD3, 0x33, 0x9E, 0xBA, 0xDF, 0xBA, 0x99, 0x65, 0x18, 0x8F, - 0xA2, 0xC9, 0x19, 0x7F, 0x41, 0x35, 0xB2, 0x98, 0x5B, 0x20, 0xEC, 0x42, 0x79, 0xF3, 0x45, 0x23, - 0xBA, 0xF8, 0x31, 0x98, 0x1A, 0x6B, 0xC7, 0x36, 0x9B, 0x22, 0xF0, 0x31, 0x6F, 0x53, 0xAD, 0xC2, - 0x49, 0x49, 0x48, 0x36, 0xBA, 0x8E, 0xEB, 0xB2, 0x57, 0x16, 0xD0, 0xB3, 0x41, 0x7D, 0xCC, 0x4D, - 0x78, 0xF8, 0xFE, 0x14, 0x6C, 0x6F, 0x8C, 0xDF, 0xF8, 0x8B, 0x36, 0x2D, 0xD2, 0xA0, 0x58, 0xA5, - 0x49, 0x76, 0x76, 0xD5, 0xAD, 0xB3, 0x60, 0x58, 0x85, 0x5D, 0x73, 0x36, 0x40, 0xB3, 0xAE, 0x66, - 0xFF, 0x67, 0x67, 0xC4, 0xB8, 0x34, 0x61, 0xEE, 0x72, 0xF8, 0x85, 0x43, 0x4E, 0x36, 0xC6, 0x1E, - 0x3A, 0xBE, 0x9D, 0x07, 0xF8, 0x45, 0xDF, 0x21, 0xF3, 0x6A, 0xBF, 0x79, 0x5F, 0xDA, 0x81, 0x3F, - 0x18, 0x79, 0x03, 0x0C, 0x5D, 0x49, 0x78, 0xDB, 0xC8, 0x86, 0xAC, 0x6B, 0xA1, 0xCB, 0x39, 0x57, - 0xC2, 0xF3, 0xDE, 0xB0, 0xC9, 0xF2, 0x89, 0xC3, 0xC3, 0x01, 0x6F, 0x45, 0x69, 0x01, 0xD4, 0xA7, - 0x03, 0x75, 0x71, 0xD7, 0xEE, 0x90, 0xD5, 0x5C, 0x7C, 0x8A, 0xFF, 0xE6, 0x9B, 0x3A, 0xDA, 0xAD, - 0x20, 0x97, 0x41, 0x5C, 0x8A, 0xB5, 0x88, 0x36, 0xA5, 0x0B, 0x16, 0xE2, 0x2C, 0xC9, 0xF5, 0x66, - 0x26, 0x6D, 0xF6, 0x44, 0x7D, 0xDC, 0x7E, 0x44, 0xA2, 0x9E, 0xFD, 0xB6, 0x00, 0xB7, 0x1F, 0x6C, - 0x89, 0x97, 0x9B, 0x13, 0xC0, 0xD6, 0x13, 0xF9, 0x66, 0xD0, 0xC2, 0xDD, 0x90, 0x80, 0x0A, 0xFB, - 0x90, 0x43, 0x5F, 0xDA, 0x81, 0xFC, 0x4E, 0x5A, 0xFA, 0x50, 0x9C, 0x95, 0x6D, 0xEE, 0x1E, 0xCD, - 0x95, 0xEC, 0x8D, 0xF7, 0x0F, 0x17, 0xFC, 0x45, 0xDD, 0x1B, 0x26, 0x6B, 0xFF, 0xF9, 0xBB, 0xC7, - 0x1F, 0x4F, 0x5A, 0x76, 0xEF, 0xDE, 0xA8, 0x71, 0x8E, 0x66, 0xE7, 0x38, 0xF1, 0xF9, 0x9D, 0xE3, - 0x9D, 0xCF, 0x76, 0x2E, 0x93, 0x8E, 0x25, 0x2F, 0x8B, 0x4C, 0xAD, 0x69, 0x7F, 0x0F, 0x2D, 0xF7, - 0x9D, 0x1F, 0x39, 0x8E, 0x37, 0xBB, 0xED, 0xF5, 0xD2, 0x5C, 0x67, 0xB3, 0xE6, 0xAF, 0x99, 0x89, - 0x80, 0xAD, 0x76, 0x67, 0x8E, 0x64, 0x6B, 0x55, 0x40, 0x77, 0xF2, 0x21, 0x5B, 0xB4, 0xC5, 0x96, - 0x57, 0x6B, 0x6E, 0x25, 0x29, 0x48, 0xD2, 0x65, 0x57, 0x7C, 0x25, 0xF3, 0xD0, 0x8C, 0xB7, 0x8A, - 0xB8, 0x6E, 0x55, 0x68, 0x9F, 0xD7, 0xDB, 0x24, 0xF1, 0xC2, 0x32, 0x7A, 0x5B, 0x94, 0xBB, 0xDA, - 0xE8, 0x2D, 0xAF, 0x3A, 0x7F, 0x6F, 0x8B, 0xDB, 0x5B, 0x7A, 0x6B, 0x9C, 0x61, 0x2C, 0xDE, 0xE3, - 0x2C, 0xC0, 0x9C, 0x5E, 0x5B, 0x4E, 0x49, 0xF8, 0xA3, 0x56, 0x3C, 0xEF, 0x43, 0xE6, 0x29, 0xC6, - 0x42, 0x16, 0x94, 0x02, 0xB3, 0xA6, 0x28, 0x52, 0xD9, 0x91, 0x7D, 0x28, 0x6D, 0x6E, 0x46, 0x64, - 0x41, 0x25, 0x01, 0x21, 0x1D, 0xBB, 0xEC, 0x65, 0x8B, 0x7D, 0x67, 0xEA, 0x1E, 0x1A, 0x4F, 0x3D, - 0x19, 0xF6, 0x52, 0xBD, 0xA8, 0x56, 0xAA, 0x27, 0x15, 0x28, 0xEA, 0xDA, 0xED, 0x72, 0x15, 0x8A, - 0xC4, 0xF4, 0x34, 0x13, 0x45, 0xF3, 0xE2, 0x9A, 0xA1, 0xF7, 0xBA, 0x58, 0x1F, 0x61, 0x19, 0xED, - 0x0D, 0x4E, 0x61, 0x16, 0x59, 0x4C, 0xA6, 0x3A, 0x1C, 0xCE, 0x3E, 0x0C, 0x82, 0x90, 0x31, 0xF7, - 0x5C, 0xFB, 0xF9, 0x9D, 0x9B, 0xE3, 0x29, 0x7F, 0x06, 0xB8, 0x48, 0xF5, 0x55, 0x80, 0x6A, 0xAB, - 0x23, 0x7E, 0x8F, 0x23, 0xBB, 0x19, 0xFD, 0xE8, 0x84, 0x3E, 0x7B, 0x23, 0xE9, 0x90, 0xB7, 0x24, - 0xAC, 0x29, 0x4B, 0x97, 0x02, 0x7B, 0x15, 0x8C, 0x41, 0xDC, 0x9B, 0xC6, 0xC1, 0x38, 0x88, 0xBD, - 0x3B, 0xDA, 0x26, 0x22, 0xEB, 0x16, 0x87, 0x49, 0xBC, 0x88, 0x5C, 0x53, 0x9E, 0x0B, 0xDD, 0xE5, - 0xE7, 0x6C, 0xE8, 0xEE, 0x48, 0xEB, 0xEB, 0x30, 0xDB, 0xB5, 0x19, 0x46, 0xDD, 0x4C, 0xFD, 0xA8, - 0x55, 0xB0, 0x48, 0x06, 0x0B, 0xFF, 0x90, 0xD8, 0x0F, 0x2F, 0xB1, 0xFC, 0x64, 0x7C, 0x0B, 0xCE, - 0x25, 0xA5, 0x59, 0xFE, 0xEC, 0xD6, 0x74, 0x32, 0x91, 0xCF, 0xCB, 0xCE, 0x65, 0x8E, 0xCA, 0x9B, - 0x5B, 0x78, 0x60, 0xDE, 0x00, 0x5F, 0xB0, 0xE7, 0x15, 0x2F, 0x94, 0xE7, 0x5A, 0xE0, 0x43, 0x1A, - 0x3B, 0xDE, 0x28, 0x9A, 0xB1, 0xE7, 0xB3, 0x00, 0xD2, 0x78, 0xA0, 0xBE, 0xBD, 0x39, 0x77, 0xCF, - 0x55, 0x20, 0xF9, 0x13, 0xA6, 0x70, 0x3D, 0x63, 0xDD, 0xF2, 0x4E, 0x16, 0x82, 0xEE, 0xDA, 0xB9, - 0x59, 0x0C, 0xDA, 0xB6, 0x84, 0x52, 0xBC, 0x64, 0x4B, 0x58, 0x3F, 0xE9, 0xD0, 0x0A, 0xEC, 0x91, - 0xE1, 0xA0, 0x5B, 0x6C, 0xF1, 0x54, 0x08, 0xAC, 0x74, 0xF1, 0x64, 0x66, 0xD6, 0x5A, 0x90, 0x07, - 0x85, 0x49, 0xA1, 0x14, 0xBD, 0x57, 0x2B, 0xCF, 0xA9, 0xF1, 0x95, 0x40, 0x58, 0xFA, 0xAA, 0xA5, - 0xAE, 0x5A, 0xB0, 0xBB, 0x65, 0x69, 0xB0, 0xCC, 0x1E, 0xA7, 0xF5, 0x17, 0xE9, 0x74, 0x05, 0x28, - 0x59, 0xCF, 0x41, 0x92, 0xCC, 0x7A, 0x8E, 0x4E, 0x6B, 0x27, 0x70, 0x19, 0xF0, 0x7A, 0xE2, 0xEA, - 0xA7, 0x02, 0x9F, 0xD9, 0x17, 0x2F, 0x19, 0x8D, 0x71, 0x1C, 0xBA, 0xEC, 0x4E, 0xE4, 0x24, 0x40, - 0x9D, 0x5B, 0xFF, 0x4A, 0x32, 0xAA, 0xDA, 0xAC, 0x8E, 0xC8, 0x9C, 0x5A, 0x60, 0x1F, 0x94, 0x9A, - 0x3C, 0xF5, 0x69, 0xB5, 0xBA, 0x2C, 0x73, 0x69, 0xA9, 0xD9, 0x29, 0x30, 0x61, 0x36, 0xCA, 0x0C, - 0x33, 0x58, 0x4C, 0x5A, 0x7E, 0xE5, 0x2C, 0x6D, 0x56, 0xFB, 0xCA, 0x84, 0xF5, 0xAD, 0xA9, 0x9C, - 0x55, 0xA0, 0x64, 0x0E, 0x8E, 0x8E, 0x13, 0xE6, 0x5B, 0x1F, 0x30, 0xF3, 0xBD, 0xC1, 0x57, 0x74, - 0xF6, 0xB3, 0x37, 0x60, 0xA5, 0xA3, 0x86, 0xBF, 0xFF, 0xB7, 0xEF, 0xB8, 0x07, 0x98, 0xD0, 0xA6, - 0x91, 0xAD, 0x63, 0x7B, 0xE2, 0x2B, 0xC9, 0x95, 0xA3, 0xD4, 0x9E, 0xF9, 0xA9, 0xB3, 0x6C, 0x8E, - 0xED, 0xEF, 0xFA, 0xA2, 0xC2, 0x77, 0x7D, 0x45, 0xE1, 0xBB, 0xBD, 0x9C, 0x90, 0x73, 0xF1, 0xBF, - 0xA3, 0x67, 0x00, 0xE4, 0x57, 0x66, 0x51, 0x72, 0xC4, 0x19, 0x3A, 0x9E, 0x1F, 0x89, 0xFB, 0x3C, - 0x30, 0xAE, 0xB5, 0x08, 0x47, 0xCF, 0x77, 0xE9, 0x83, 0x9E, 0x96, 0x86, 0x9D, 0x09, 0x6D, 0x8B, - 0x12, 0xFB, 0xB3, 0xC2, 0xCF, 0x9F, 0xB3, 0xD2, 0x6C, 0x4A, 0xEC, 0x90, 0x4C, 0x9C, 0x90, 0x3D, - 0xC1, 0xAC, 0x3E, 0x21, 0xCC, 0x2A, 0x7F, 0x91, 0x57, 0x01, 0x88, 0xF9, 0x90, 0x69, 0x12, 0x8C, - 0xAD, 0xEA, 0x9A, 0xB2, 0xBC, 0x62, 0x20, 0x31, 0xDE, 0xDF, 0xE2, 0xA9, 0xCC, 0xA2, 0xC1, 0xC3, - 0xDE, 0xEC, 0x30, 0x78, 0x4E, 0xEA, 0x2C, 0xD0, 0x38, 0xD5, 0xB6, 0xBC, 0x82, 0x4F, 0x79, 0x05, - 0x9F, 0x6D, 0x59, 0xBC, 0xF1, 0xE7, 0x3A, 0xA4, 0xCE, 0xD7, 0x62, 0x5F, 0x68, 0x7A, 0x4D, 0x8E, - 0xB1, 0x7B, 0xC7, 0xC2, 0x55, 0x3D, 0xF7, 0xB7, 0x5A, 0x3E, 0x99, 0x46, 0xB7, 0x8D, 0x27, 0xED, - 0x93, 0x9E, 0xCF, 0x2A, 0xFB, 0xB6, 0xBB, 0x7A, 0x68, 0x0A, 0x7B, 0x3D, 0xCA, 0x4B, 0xF5, 0x48, - 0x5E, 0x00, 0x24, 0x4E, 0xFB, 0x45, 0x56, 0x34, 0x25, 0x82, 0x48, 0x95, 0xA8, 0x76, 0xB7, 0x86, - 0xEC, 0x1A, 0x37, 0x9B, 0xF2, 0x54, 0x08, 0xEA, 0xDA, 0x15, 0x08, 0x1B, 0x20, 0x6F, 0x44, 0x8C, - 0xAE, 0xD4, 0x95, 0xED, 0x67, 0xC6, 0x15, 0x26, 0x16, 0xD2, 0xD0, 0xA8, 0x1D, 0x32, 0xEA, 0xC9, - 0x28, 0x18, 0x30, 0x1A, 0x59, 0xCA, 0x89, 0xA4, 0xF9, 0x73, 0x52, 0xFB, 0x8F, 0x5A, 0x33, 0x2F, - 0xE1, 0xBB, 0x2A, 0x12, 0xA4, 0x64, 0x40, 0xB1, 0x07, 0x60, 0x13, 0x2D, 0x67, 0x99, 0xE5, 0x6C, - 0xC4, 0x53, 0x76, 0xCD, 0xA0, 0xFF, 0x8E, 0x3C, 0xCC, 0x8D, 0x34, 0xE3, 0xDC, 0xEC, 0x7E, 0xC9, - 0xA9, 0xFA, 0x29, 0x53, 0xB5, 0x97, 0x57, 0xF5, 0x73, 0xA6, 0xEA, 0x9A, 0x51, 0xD5, 0x3E, 0xFA, - 0x15, 0x81, 0xDA, 0xF2, 0x35, 0xA8, 0x54, 0x97, 0xD4, 0xF8, 0x54, 0x5A, 0xE3, 0x73, 0x5E, 0x0D, - 0x9D, 0x34, 0x2D, 0x35, 0x41, 0x72, 0x9B, 0x52, 0x61, 0x34, 0x71, 0xC2, 0xD0, 0x79, 0x6C, 0x09, - 0x05, 0x60, 0x59, 0x89, 0xC7, 0x81, 0x1F, 0x44, 0x13, 0x67, 0x40, 0x09, 0x73, 0x87, 0x30, 0x33, - 0x6C, 0xDC, 0xA3, 0x4C, 0x15, 0x45, 0x89, 0x42, 0xC8, 0x55, 0x03, 0x71, 0x79, 0x2A, 0x9D, 0xFA, - 0x51, 0x19, 0xB2, 0x46, 0x25, 0x33, 0x33, 0xF0, 0x75, 0x7B, 0x1E, 0xD8, 0xB4, 0xFB, 0x6A, 0x97, - 0x31, 0x7A, 0xCF, 0x8C, 0xBB, 0x50, 0xAE, 0x59, 0x62, 0xE0, 0x7D, 0x10, 0x52, 0xB7, 0x56, 0x94, - 0x82, 0x85, 0x6D, 0x3A, 0x16, 0x46, 0x2B, 0x4A, 0x5F, 0x91, 0x5F, 0x57, 0x3F, 0xAD, 0x7E, 0xAE, - 0xE9, 0xD7, 0x14, 0x2D, 0xBD, 0x7F, 0x4D, 0x36, 0x9A, 0x99, 0x55, 0x58, 0x2E, 0x4F, 0x23, 0xEF, - 0xEF, 0x94, 0xD8, 0x4C, 0xB3, 0x66, 0x1D, 0x93, 0xEB, 0x04, 0xE9, 0xD4, 0x39, 0xEB, 0x5C, 0x89, - 0x03, 0x34, 0x98, 0x30, 0xD9, 0x2B, 0xD1, 0x1B, 0x03, 0x98, 0x46, 0x40, 0x0D, 0xC4, 0x2D, 0x82, - 0x3A, 0xAF, 0xA0, 0x0E, 0x53, 0xFE, 0xA5, 0x1D, 0xF3, 0x8B, 0xD3, 0xD9, 0x99, 0x2F, 0x53, 0x53, - 0x8E, 0x21, 0x56, 0xAC, 0x8F, 0xB6, 0x5C, 0x26, 0xE0, 0xED, 0x1A, 0xDE, 0x5C, 0x9F, 0x14, 0xFE, - 0xD4, 0xA8, 0xFD, 0x0F, 0x7B, 0x23, 0x81, 0x0D, 0xDA, 0x52, 0x67, 0x70, 0xDB, 0xB0, 0xEF, 0x13, - 0x54, 0x9B, 0xF4, 0xA7, 0x46, 0x7C, 0xEB, 0x45, 0x4D, 0xD6, 0x91, 0x46, 0xB3, 0xD0, 0xAA, 0xFB, - 0xBA, 0x55, 0x6F, 0x47, 0xD3, 0xEB, 0x88, 0xAF, 0x4C, 0xD9, 0x4B, 0x44, 0x5A, 0xDA, 0x35, 0x05, - 0x68, 0xD2, 0x14, 0x26, 0x3C, 0x7E, 0xC1, 0x48, 0x5A, 0xB2, 0x64, 0x0A, 0x94, 0xF6, 0xCA, 0xF8, - 0xB0, 0xF6, 0x85, 0x83, 0x48, 0xF7, 0x4C, 0xDF, 0xF4, 0x45, 0xB8, 0x8C, 0x8F, 0xAD, 0xB6, 0x10, - 0x97, 0xB5, 0xCB, 0x16, 0xE3, 0x7A, 0xBD, 0x2A, 0x0B, 0x72, 0xD9, 0x62, 0x59, 0x8B, 0xF2, 0xF4, - 0x5E, 0xF4, 0xB3, 0xEF, 0xF3, 0x06, 0xD5, 0xF7, 0x7C, 0x76, 0xEA, 0x7B, 0x3E, 0x35, 0xF5, 0x3B, - 0xAD, 0xCF, 0x13, 0x0D, 0x9A, 0x7D, 0x8D, 0x2E, 0x9B, 0xCE, 0xBA, 0x4E, 0x4F, 0x54, 0x70, 0xB6, - 0xB5, 0xBA, 0x81, 0x4E, 0x59, 0xAF, 0x1B, 0xA3, 0x45, 0x5B, 0xAD, 0x8A, 0x90, 0x73, 0x6B, 0x91, - 0x88, 0x30, 0xB7, 0x95, 0x49, 0x7D, 0x35, 0xCA, 0x34, 0x2D, 0xB3, 0x97, 0xE9, 0x9A, 0xF1, 0x04, - 0x6B, 0x7F, 0x43, 0x62, 0xD6, 0xF5, 0x7F, 0x52, 0x47, 0xDB, 0x03, 0xFC, 0xF0, 0x7C, 0xB2, 0xED, - 0x27, 0x24, 0xD1, 0xF9, 0x7B, 0x8A, 0x8C, 0x69, 0x2D, 0x5B, 0x12, 0x9B, 0x0A, 0x38, 0xF3, 0xB2, - 0x38, 0x51, 0xC5, 0x1F, 0x67, 0x7B, 0x91, 0xC8, 0xB6, 0xFA, 0x16, 0xA3, 0x88, 0xB3, 0x8A, 0x1B, - 0x50, 0xDD, 0xAC, 0xDD, 0x3A, 0xF4, 0x94, 0xC6, 0xB7, 0x81, 0x5B, 0x2D, 0xB9, 0x67, 0x7A, 0x4B, - 0x22, 0x9B, 0xD9, 0x53, 0x01, 0x99, 0xF2, 0x5F, 0x81, 0x6F, 0x1C, 0x8F, 0x58, 0x7C, 0x9B, 0xF9, - 0xCE, 0x30, 0x9B, 0xB7, 0x38, 0xD7, 0xAD, 0x07, 0x38, 0xE1, 0x9B, 0xB8, 0x0B, 0x9F, 0x77, 0xA3, - 0xA4, 0x49, 0x56, 0x48, 0x43, 0xA9, 0x63, 0x3A, 0x8B, 0x45, 0xA5, 0x55, 0x96, 0xE1, 0x17, 0x24, - 0x96, 0xAD, 0x6A, 0x0F, 0x88, 0x92, 0x4D, 0x9A, 0xC5, 0xC4, 0xCB, 0x65, 0x00, 0xD0, 0xDA, 0x8E, - 0x03, 0x16, 0x94, 0xD8, 0x58, 0x2B, 0xCB, 0xED, 0x9A, 0xCF, 0x2E, 0x9D, 0x01, 0x25, 0xDC, 0x32, - 0x78, 0x6B, 0x67, 0x97, 0x49, 0x6B, 0x13, 0x78, 0xF0, 0xBD, 0xF9, 0x95, 0xBD, 0x04, 0x64, 0x67, - 0x97, 0xB9, 0x9D, 0xFE, 0x11, 0xED, 0x47, 0xF1, 0x7C, 0x69, 0xD9, 0xDD, 0x16, 0xDC, 0xB1, 0x2A, - 0xD8, 0x8D, 0x5B, 0x2E, 0x59, 0xD9, 0x37, 0xE4, 0x56, 0xF9, 0x25, 0xB5, 0xD7, 0xED, 0xB5, 0x73, - 0x63, 0x00, 0x79, 0xAB, 0x8D, 0x2F, 0x46, 0xE6, 0xDC, 0x3C, 0xAD, 0x4F, 0x37, 0xFE, 0x39, 0xD9, - 0x92, 0xAB, 0x5D, 0xE6, 0x92, 0xB7, 0xB1, 0x2A, 0xC2, 0xE8, 0x15, 0x5C, 0x08, 0xB3, 0x1F, 0x97, - 0x14, 0x3A, 0x01, 0x52, 0x29, 0x16, 0xB8, 0x13, 0x12, 0xE1, 0x15, 0xD5, 0x49, 0x64, 0x56, 0x50, - 0x29, 0xE5, 0xA2, 0xBD, 0x92, 0x21, 0xCF, 0xC2, 0x4A, 0xA6, 0x18, 0x0B, 0x1D, 0x19, 0xB2, 0x9B, - 0xF3, 0x39, 0x33, 0xF4, 0x29, 0xA9, 0xD0, 0xA1, 0xA1, 0x8C, 0x8A, 0x22, 0xA7, 0x86, 0xB1, 0x5A, - 0xAA, 0xEC, 0xD8, 0xB0, 0x89, 0xCB, 0x14, 0xE5, 0x13, 0x3A, 0x38, 0xE6, 0x44, 0x9F, 0x38, 0x3A, - 0x64, 0xC6, 0xCB, 0x55, 0x50, 0x04, 0xBB, 0xBF, 0xC3, 0x64, 0x4C, 0x45, 0x9F, 0x87, 0xC2, 0x76, - 0xDD, 0xEF, 0x61, 0x6E, 0x24, 0x66, 0xF4, 0x7D, 0x54, 0xD9, 0x87, 0x2C, 0xD3, 0xFF, 0x61, 0xEC, - 0x26, 0x16, 0xF3, 0x81, 0x28, 0x4C, 0x99, 0xCD, 0x0F, 0x92, 0x8C, 0x96, 0xDF, 0xD5, 0x17, 0xA2, - 0xA9, 0x07, 0xAB, 0x97, 0xE4, 0xA8, 0xDA, 0x21, 0x2F, 0xCC, 0x05, 0xE7, 0xD2, 0x3C, 0x26, 0x99, - 0x4D, 0x91, 0x5E, 0x61, 0xDD, 0x6C, 0xB1, 0x61, 0x7E, 0xD8, 0x2C, 0x03, 0xF1, 0x42, 0xF3, 0xCA, - 0x94, 0x9E, 0xE1, 0x3E, 0x89, 0x2F, 0x48, 0xD1, 0x81, 0x6F, 0x99, 0x0B, 0xB1, 0x9A, 0x53, 0x47, - 0xB9, 0xAF, 0xC7, 0x57, 0x1F, 0xF0, 0xAF, 0x22, 0xD9, 0xF6, 0xDF, 0xC0, 0xFC, 0x36, 0xEA, 0xF5, - 0xE4, 0x92, 0xA2, 0x51, 0xA5, 0x55, 0x5E, 0xE5, 0xAF, 0x7F, 0xCD, 0xD4, 0x09, 0x69, 0x3C, 0x0D, - 0x7D, 0xB6, 0x72, 0x31, 0xA8, 0x1B, 0xD2, 0x18, 0xAF, 0x46, 0x6A, 0xA6, 0x98, 0xDD, 0x46, 0x05, - 0x93, 0x05, 0xDA, 0x23, 0xCB, 0xAC, 0xAF, 0x82, 0x65, 0xEA, 0x88, 0x25, 0xA7, 0xE2, 0xC9, 0x38, - 0xB9, 0x61, 0x9E, 0x8B, 0xD8, 0xB9, 0x26, 0xF7, 0x4E, 0x44, 0x70, 0x1A, 0x25, 0x78, 0x9D, 0x92, - 0xBA, 0x2D, 0xC2, 0x87, 0x34, 0x61, 0x59, 0x09, 0xF9, 0x7D, 0xDB, 0x68, 0x10, 0x62, 0xCE, 0x16, - 0x63, 0xB9, 0x30, 0xA2, 0xA7, 0x8E, 0xEF, 0x0C, 0x69, 0x78, 0x89, 0x35, 0x33, 0x11, 0x90, 0xAC, - 0xFD, 0xEE, 0xEB, 0x38, 0x24, 0x0E, 0x86, 0x16, 0xEC, 0xD4, 0x47, 0xF4, 0x26, 0xAE, 0xC3, 0x87, - 0xDB, 0x5D, 0xDC, 0x58, 0xBD, 0x5E, 0x85, 0x5F, 0xF0, 0x8F, 0x3E, 0x18, 0x32, 0xF1, 0x87, 0xBB, - 0xFB, 0x3A, 0xCD, 0x11, 0xBC, 0xC3, 0x27, 0xFE, 0xEB, 0xE0, 0xA1, 0x4E, 0x3C, 0x77, 0xA7, 0x8E, - 0x08, 0xF9, 0x3E, 0x67, 0x6F, 0x34, 0xAA, 0x13, 0x96, 0x5A, 0x08, 0xBE, 0x06, 0xE1, 0x78, 0x85, - 0x55, 0x5C, 0xE1, 0x4D, 0x15, 0xBA, 0x98, 0xBB, 0xA6, 0x0E, 0xD3, 0xE3, 0x01, 0xDE, 0x73, 0xE3, - 0x10, 0x24, 0xC9, 0xC1, 0x70, 0x88, 0x17, 0xDA, 0x80, 0x9E, 0x55, 0x44, 0xBB, 0x1A, 0x87, 0xC9, - 0x3F, 0x8C, 0x6E, 0xC5, 0x6C, 0xB3, 0xA7, 0x71, 0xD9, 0xE3, 0x57, 0x22, 0xF9, 0x65, 0x4D, 0x61, - 0xE5, 0xC3, 0x78, 0x74, 0x1B, 0xC7, 0x93, 0xC2, 0xCB, 0xAA, 0x4A, 0x3D, 0x71, 0x67, 0xF5, 0xCD, - 0x11, 0xBF, 0xB2, 0x8A, 0xB3, 0x30, 0xBB, 0x51, 0x5B, 0xCB, 0x2E, 0x90, 0x64, 0x0B, 0x76, 0x23, - 0x51, 0xB5, 0x13, 0xA0, 0xE7, 0x11, 0x3D, 0xF1, 0x07, 0xC1, 0x18, 0xCD, 0x88, 0xAC, 0x16, 0xD2, - 0x68, 0x12, 0xF8, 0x11, 0x23, 0x92, 0xA5, 0xD9, 0x11, 0xF7, 0xB2, 0xC9, 0x41, 0xFF, 0x17, 0x7E, - 0x93, 0x1A, 0x96, 0x0F, 0x01, 0x9B, 0xFC, 0x9F, 0x55, 0x17, 0xE4, 0xF3, 0x1D, 0xBD, 0xFB, 0x25, - 0x93, 0xA9, 0xAE, 0x75, 0xCA, 0xDE, 0xE5, 0x9B, 0xA9, 0xDC, 0x22, 0x99, 0x4C, 0x46, 0xBF, 0x83, - 0xEB, 0xD8, 0xF1, 0x40, 0x0D, 0x95, 0x72, 0xAB, 0x8E, 0x5B, 0xEB, 0x99, 0x7A, 0xCE, 0xEF, 0xE2, - 0x25, 0x15, 0x0A, 0x82, 0x5B, 0x45, 0xAD, 0xA7, 0x91, 0xB0, 0x4C, 0x9C, 0xF3, 0x3B, 0x0A, 0x39, - 0x8F, 0x0B, 0x20, 0x5F, 0xA5, 0xEB, 0xE5, 0xB2, 0xDA, 0xE7, 0x49, 0xD5, 0x0A, 0xE5, 0x85, 0x75, - 0xAA, 0xCA, 0x8C, 0xD7, 0x2D, 0x91, 0x9B, 0x48, 0xC6, 0xF1, 0xBB, 0xCA, 0x8E, 0xD1, 0xF0, 0x43, - 0xC8, 0x2F, 0xC3, 0x8D, 0x72, 0x19, 0x2A, 0x43, 0xFC, 0x30, 0xB8, 0xF7, 0x71, 0xDB, 0x9D, 0x5E, - 0x24, 0x67, 0x26, 0x95, 0xBA, 0x38, 0x6E, 0xAB, 0xDF, 0x4B, 0x46, 0x88, 0x27, 0x87, 0x8A, 0x63, - 0x89, 0xA3, 0xF5, 0x99, 0x23, 0xE1, 0xFD, 0x0D, 0x03, 0xD6, 0x17, 0x90, 0xE7, 0x07, 0xAA, 0xAD, - 0x66, 0xCD, 0xF7, 0x95, 0xE4, 0x23, 0x11, 0xC7, 0xFC, 0x66, 0x32, 0x3E, 0xFD, 0x8A, 0x69, 0x3A, - 0xF0, 0xE2, 0x7C, 0x14, 0xB3, 0x12, 0x3D, 0xCF, 0x47, 0x52, 0x55, 0xD1, 0x5E, 0x15, 0xE6, 0x8E, - 0x9D, 0xFA, 0xA6, 0x98, 0xA4, 0x53, 0x9F, 0xD9, 0x34, 0x1C, 0xC5, 0xC1, 0x00, 0xF3, 0x97, 0x81, - 0xB6, 0xAD, 0x22, 0x88, 0xFF, 0x60, 0xE4, 0xA3, 0xDB, 0x50, 0xE3, 0xE6, 0x6F, 0x29, 0x78, 0x4C, - 0x3C, 0x86, 0xAE, 0xC4, 0x9F, 0x1D, 0x46, 0xCD, 0x8E, 0x2B, 0xC4, 0x20, 0xD4, 0x58, 0x4D, 0xED, - 0x90, 0x80, 0x17, 0x3C, 0x05, 0xA3, 0x0A, 0xB5, 0xDB, 0xD2, 0x3B, 0xD9, 0xBE, 0x0D, 0xE9, 0x0D, - 0xE6, 0x35, 0x93, 0xD5, 0x84, 0xD2, 0xA5, 0xB8, 0x30, 0x97, 0x5E, 0x8E, 0xF4, 0xE5, 0xB4, 0xA7, - 0xB8, 0x5A, 0xE4, 0x24, 0x3B, 0xBB, 0xF0, 0xF3, 0xAE, 0xA3, 0xE3, 0xFE, 0x20, 0x85, 0xAA, 0x5D, - 0x48, 0xF7, 0x33, 0xD7, 0xD1, 0xD3, 0x8A, 0x78, 0x25, 0x3D, 0x7D, 0x53, 0x5E, 0xCE, 0x4C, 0xC9, - 0x8C, 0x9F, 0x86, 0x25, 0x96, 0x69, 0x38, 0xD5, 0x13, 0x25, 0x2C, 0x4B, 0xBF, 0x9F, 0xE5, 0xF9, - 0x8D, 0x33, 0x72, 0x97, 0xEB, 0x77, 0x7C, 0x0A, 0x85, 0xCD, 0xEE, 0xC2, 0x81, 0x9C, 0x31, 0x88, - 0xAA, 0x66, 0x99, 0x9B, 0x35, 0x25, 0xEF, 0x9D, 0x0D, 0xB8, 0x35, 0xF3, 0x5D, 0x75, 0xCD, 0x7C, - 0xC8, 0x28, 0x24, 0xEB, 0x4B, 0x6D, 0xBB, 0xB2, 0xE9, 0x2C, 0xB4, 0x9D, 0x09, 0x21, 0xE5, 0x16, - 0x53, 0x7B, 0x92, 0xEF, 0x82, 0xDE, 0x80, 0x89, 0xBC, 0xE5, 0x59, 0x48, 0x92, 0x63, 0xB5, 0xC2, - 0x95, 0x85, 0xB6, 0x50, 0x36, 0xD2, 0x34, 0xB1, 0xAC, 0x18, 0xC7, 0x9E, 0xA1, 0xF1, 0x4A, 0x8A, - 0x13, 0xFC, 0xB5, 0xBB, 0x94, 0xAC, 0x26, 0x1C, 0xD2, 0x9C, 0x89, 0x4C, 0x38, 0xA1, 0x96, 0x38, - 0xDE, 0x49, 0x18, 0x0C, 0x31, 0xB9, 0x2F, 0x00, 0x96, 0xBF, 0xBE, 0x75, 0x7C, 0x77, 0x44, 0x43, - 0x9D, 0xB1, 0x0C, 0x4A, 0xB6, 0x39, 0xB3, 0x30, 0x98, 0x56, 0x94, 0xE7, 0x05, 0x99, 0xA5, 0x29, - 0x7F, 0x4F, 0x48, 0x64, 0x27, 0x9D, 0xA5, 0xA1, 0x73, 0xCD, 0x5F, 0xEB, 0x64, 0xFF, 0xCD, 0x6F, - 0x68, 0xE4, 0x6E, 0x29, 0xCC, 0xDA, 0xA2, 0xE4, 0xBA, 0x32, 0xB8, 0x20, 0x73, 0x6C, 0xA4, 0xC2, - 0x9D, 0xD0, 0x70, 0x40, 0xD9, 0xA9, 0x3E, 0x2F, 0x6B, 0x8F, 0x58, 0x3E, 0x0E, 0xB2, 0x4A, 0xF8, - 0x9F, 0x71, 0x10, 0xE3, 0x46, 0xEF, 0xCF, 0xE8, 0xC7, 0x56, 0x52, 0x95, 0x08, 0xB0, 0xFB, 0x4E, - 0xA8, 0x78, 0x3E, 0x4F, 0x9D, 0xF8, 0xB6, 0x1D, 0x06, 0x53, 0xA0, 0x46, 0x80, 0x55, 0x32, 0x1F, - 0x4E, 0x95, 0x64, 0x2F, 0xC6, 0xE2, 0xC4, 0xD2, 0x0E, 0x87, 0xDA, 0xFF, 0x14, 0x0A, 0x49, 0xDD, - 0x34, 0x9B, 0x27, 0xDB, 0xF3, 0x0B, 0x92, 0x77, 0x31, 0x77, 0x59, 0xC7, 0x3C, 0x76, 0x29, 0xC0, - 0x53, 0x53, 0x32, 0x86, 0xB6, 0xC8, 0x7D, 0xE8, 0xB1, 0xD4, 0x26, 0x4C, 0xBD, 0x61, 0x11, 0xC1, - 0x74, 0x9A, 0xBD, 0x99, 0x55, 0xB3, 0x24, 0xB4, 0x34, 0x74, 0x42, 0x67, 0x64, 0x19, 0x5E, 0x9E, - 0x6E, 0x86, 0x24, 0xF9, 0x66, 0xCA, 0x18, 0xD9, 0xD9, 0x5E, 0xDE, 0x00, 0x67, 0xDF, 0x12, 0x23, - 0x8E, 0xD9, 0x62, 0xB8, 0xEF, 0x69, 0xFF, 0xF1, 0xC4, 0x9D, 0x95, 0x6A, 0x85, 0x1F, 0xAA, 0x9E, - 0xCF, 0xC5, 0x8C, 0x63, 0x07, 0x88, 0x74, 0x75, 0xA0, 0xEA, 0x18, 0x98, 0x0B, 0xE8, 0x1E, 0x02, - 0x10, 0x50, 0x53, 0xB0, 0xF1, 0x60, 0xB2, 0x8F, 0x33, 0x66, 0xE6, 0x91, 0x2A, 0xE3, 0x8D, 0x66, - 0xE5, 0xBD, 0xA7, 0x7F, 0xFE, 0x93, 0x68, 0x15, 0x8A, 0x6E, 0xE0, 0x73, 0xAF, 0x68, 0x3C, 0xC8, - 0xB9, 0x07, 0x67, 0xDD, 0xFC, 0x71, 0x47, 0x6E, 0x6E, 0x1B, 0xD9, 0xE5, 0x7B, 0xEF, 0xC6, 0x93, - 0x6F, 0x3F, 0x2B, 0xF9, 0xFF, 0xB6, 0xD6, 0x5F, 0xD8, 0x26, 0x75, 0xD9, 0x4F, 0xF9, 0x92, 0x5B, - 0x59, 0x7F, 0x8B, 0xDF, 0xA4, 0xCE, 0xE9, 0x56, 0xDA, 0x68, 0xF6, 0xEE, 0x99, 0x6D, 0xB9, 0x8E, - 0xAB, 0x6F, 0xB8, 0x57, 0xEF, 0xAC, 0x7B, 0x3B, 0x98, 0xE4, 0x77, 0xD4, 0xFA, 0x24, 0x7C, 0xD6, - 0x93, 0xCE, 0x4E, 0x1F, 0x4E, 0xCE, 0xE7, 0xE8, 0xA1, 0x92, 0x4B, 0xA5, 0xBC, 0xBD, 0x4A, 0x37, - 0x14, 0xDC, 0x07, 0xE1, 0x57, 0x16, 0x32, 0xA3, 0x2F, 0x2C, 0x8D, 0xE8, 0x2A, 0xFC, 0x86, 0xF2, - 0x3F, 0xE3, 0x0D, 0x2A, 0x67, 0x0E, 0x56, 0xDA, 0x7C, 0xA9, 0xE3, 0xE5, 0xDD, 0xA4, 0xEC, 0x4F, - 0x3B, 0xFD, 0xBE, 0xB9, 0x0E, 0x35, 0x96, 0x4E, 0x2A, 0xC2, 0xBC, 0x95, 0x13, 0x32, 0x59, 0xAD, - 0x87, 0x8B, 0x23, 0xE3, 0xAD, 0x80, 0x8E, 0xEE, 0x9C, 0x1F, 0xE8, 0x29, 0xAB, 0x35, 0x57, 0x1E, - 0x2B, 0xB3, 0xE5, 0xFF, 0x3E, 0xA3, 0xF7, 0x32, 0xE9, 0x99, 0x26, 0x5F, 0x83, 0x81, 0xE6, 0x11, - 0x09, 0x0A, 0xE6, 0x34, 0x1A, 0x8A, 0xB7, 0xD5, 0x64, 0xC2, 0xAF, 0x03, 0x01, 0x11, 0x4A, 0x30, - 0x83, 0xDC, 0x47, 0xEF, 0xD8, 0x63, 0xE6, 0x14, 0x2F, 0x0E, 0xD3, 0xF1, 0x04, 0x1F, 0xAF, 0xDD, - 0x2E, 0x5A, 0x66, 0x8A, 0x3B, 0x7F, 0x07, 0x06, 0x61, 0x79, 0x07, 0xD5, 0x82, 0x88, 0x5C, 0xFC, - 0xA0, 0x28, 0x3E, 0xDE, 0xCE, 0xC5, 0x37, 0x47, 0x02, 0x82, 0xD4, 0xD4, 0x8C, 0xFC, 0x8B, 0x28, - 0x7D, 0x91, 0x7C, 0x0B, 0xF7, 0xBA, 0xCA, 0x3E, 0x1D, 0xF6, 0x6D, 0x30, 0xDF, 0xCB, 0x27, 0x3E, - 0x59, 0x63, 0x82, 0x72, 0x65, 0xA7, 0x56, 0xE7, 0x1F, 0xA3, 0x54, 0xA1, 0x46, 0x91, 0xB0, 0xF5, - 0xF3, 0xE9, 0x4E, 0x81, 0x9A, 0x28, 0xA0, 0xF3, 0xB4, 0x44, 0x21, 0x1E, 0x36, 0xDC, 0x4A, 0x83, - 0x74, 0x2D, 0xCD, 0x9F, 0x2A, 0xD5, 0x4B, 0x64, 0xF4, 0x0D, 0x14, 0x6A, 0x02, 0xD0, 0x4D, 0xD8, - 0xC5, 0x81, 0x22, 0x01, 0xE5, 0x8D, 0x3E, 0x76, 0xE0, 0x99, 0x43, 0x42, 0xA6, 0x69, 0x0B, 0x6B, - 0x4B, 0x34, 0x5A, 0x6E, 0xFA, 0xB2, 0x86, 0x4C, 0x52, 0x2D, 0x29, 0x10, 0xA3, 0xB6, 0xA9, 0xBC, - 0x98, 0x0F, 0x4D, 0x86, 0x3A, 0xAA, 0x19, 0x09, 0xA5, 0x6A, 0xB0, 0x9D, 0x36, 0xBB, 0xF7, 0xCE, - 0xB7, 0x1D, 0x12, 0x58, 0xD3, 0x9A, 0x6A, 0x4D, 0x2B, 0x4F, 0xC3, 0xFE, 0x14, 0x7C, 0xD6, 0x64, - 0x97, 0x19, 0xA2, 0x6C, 0x29, 0x2F, 0x59, 0x25, 0x00, 0x6E, 0x1B, 0x79, 0x5A, 0xCA, 0xC6, 0x1C, - 0x94, 0xCD, 0xEC, 0xE6, 0xBC, 0x76, 0x80, 0xED, 0x98, 0x9E, 0x0B, 0xB2, 0x50, 0x9D, 0x72, 0xDA, - 0x27, 0x81, 0x85, 0xA5, 0xC3, 0x47, 0x10, 0x9A, 0x24, 0xFD, 0x23, 0x77, 0xE2, 0x45, 0x75, 0xA3, - 0x47, 0x7E, 0x8A, 0xE3, 0x17, 0x5E, 0xA3, 0x71, 0xA3, 0xFF, 0xAD, 0xF5, 0x2F, 0x17, 0xA7, 0xF2, - 0xAC, 0x87, 0xD1, 0x9E, 0x65, 0x31, 0x3A, 0xBA, 0xB8, 0x78, 0x7F, 0x51, 0x9B, 0xCF, 0x0A, 0x01, - 0x3B, 0xF8, 0xE2, 0x82, 0x25, 0x3A, 0x70, 0xEE, 0x60, 0x59, 0xC4, 0xBD, 0xCA, 0xDB, 0xC6, 0x5C, - 0xE5, 0x7A, 0x77, 0x6F, 0x68, 0xAC, 0x19, 0x1F, 0x7D, 0xB1, 0x50, 0x6A, 0x9F, 0x8C, 0xD8, 0x18, - 0xDD, 0xCC, 0x69, 0x97, 0xC0, 0x6D, 0x9D, 0x3C, 0xF8, 0x70, 0x71, 0x71, 0x74, 0x76, 0x69, 0xEB, - 0x66, 0x6E, 0x0F, 0x25, 0x1D, 0x68, 0x66, 0xA7, 0x13, 0xB4, 0x75, 0x78, 0x6E, 0xFE, 0xDD, 0xFB, - 0xA6, 0x9A, 0x70, 0x13, 0x8F, 0xB9, 0x8E, 0x64, 0x01, 0x00, 0x40, 0xE8, 0x5D, 0x8D, 0x45, 0x0D, - 0x6A, 0x7C, 0xD8, 0x2E, 0x04, 0x64, 0xA7, 0x46, 0x4F, 0x66, 0x89, 0xD0, 0xCF, 0xF3, 0xD6, 0xFC, - 0x76, 0x3D, 0xD4, 0x1B, 0x29, 0xDA, 0x28, 0x72, 0xE1, 0xD8, 0x58, 0x67, 0x38, 0xA4, 0xCD, 0x01, - 0xFD, 0x1D, 0xE7, 0xD2, 0xDF, 0x5F, 0xBE, 0xD6, 0x09, 0xBA, 0xD2, 0x70, 0xCF, 0x68, 0x77, 0x56, - 0x14, 0xD0, 0xFF, 0x37, 0x22, 0x45, 0x26, 0xFA, 0x2C, 0x6E, 0x94, 0xEE, 0xFD, 0x31, 0x8D, 0xEB, - 0xD3, 0xB8, 0x65, 0xAA, 0xD4, 0x55, 0xF3, 0xA9, 0x27, 0x4A, 0x1D, 0x9B, 0x75, 0x9A, 0x34, 0x08, - 0xB2, 0x4D, 0x92, 0x43, 0x0E, 0x57, 0x1D, 0x52, 0xCA, 0x51, 0xB8, 0x0C, 0xAB, 0x43, 0x83, 0xD9, - 0xAD, 0xE5, 0xE6, 0x3C, 0xB6, 0x92, 0x62, 0x7F, 0x6B, 0x5A, 0x42, 0xCB, 0xCE, 0x31, 0x4F, 0x34, - 0xB4, 0xCA, 0x6C, 0x3A, 0xB3, 0x06, 0x92, 0x0D, 0xBA, 0xD6, 0x6B, 0x29, 0xC8, 0xF5, 0x6D, 0x4F, - 0x10, 0x3B, 0x12, 0xBB, 0x48, 0xF8, 0x2B, 0xDC, 0x38, 0xD2, 0xBD, 0x60, 0x5D, 0x68, 0xE4, 0xF1, - 0xA9, 0xFA, 0xF0, 0x34, 0xB0, 0x70, 0xBF, 0x92, 0x99, 0xF8, 0xB7, 0xAA, 0x8D, 0x36, 0x80, 0x29, - 0x3E, 0x6E, 0x13, 0xCD, 0x4E, 0xC6, 0x37, 0x65, 0xE4, 0x13, 0xD7, 0xC2, 0xD2, 0xDE, 0x78, 0x77, - 0xD4, 0x27, 0x0E, 0x66, 0x2F, 0x0A, 0xEB, 0x18, 0x88, 0x15, 0xB2, 0x24, 0xCA, 0x71, 0xF8, 0x88, - 0x33, 0x91, 0x7C, 0xC9, 0x94, 0x47, 0x20, 0x3C, 0x4E, 0x78, 0x7C, 0x9A, 0xD8, 0x3F, 0xE9, 0xEF, - 0x1B, 0x12, 0xCF, 0x27, 0x87, 0x87, 0x6D, 0x57, 0xFE, 0xC8, 0x67, 0xFE, 0x12, 0x31, 0x64, 0x5F, - 0x45, 0x45, 0x9C, 0x47, 0x3E, 0xA0, 0xD2, 0xF7, 0xA2, 0x99, 0xE7, 0x05, 0xC9, 0x9C, 0x2F, 0xA3, - 0xAA, 0x2F, 0xA6, 0x45, 0xB7, 0xCA, 0x15, 0xA2, 0xC4, 0x3C, 0x62, 0x90, 0x9D, 0xE5, 0x3B, 0xBE, - 0x76, 0x3C, 0x76, 0x46, 0x96, 0x12, 0x6E, 0xAA, 0xDE, 0xDF, 0xBC, 0xA3, 0x2C, 0xDB, 0xB4, 0x79, - 0xC8, 0x65, 0x7B, 0xA1, 0x94, 0x67, 0x72, 0xC4, 0x2B, 0x29, 0xEC, 0x0D, 0xF6, 0xFB, 0x5B, 0x87, - 0x4D, 0x57, 0x43, 0xC6, 0x78, 0xE0, 0xF1, 0x34, 0x4A, 0xAC, 0xF2, 0xC0, 0xF1, 0x09, 0x45, 0x86, - 0x30, 0x93, 0xE9, 0xF9, 0xEC, 0x55, 0x7A, 0x76, 0xCD, 0x28, 0x12, 0x55, 0xF6, 0xF8, 0x4B, 0xF5, - 0xA2, 0x16, 0xA6, 0x63, 0x0F, 0xFC, 0xD1, 0xA3, 0x38, 0x0E, 0x8B, 0x5A, 0x64, 0xA5, 0x85, 0x11, - 0x36, 0x2D, 0x26, 0xA6, 0xB6, 0x7E, 0xE4, 0xA3, 0xBE, 0xCE, 0x23, 0x19, 0x6F, 0x9A, 0x5E, 0xFD, - 0x3E, 0x45, 0xE4, 0x7A, 0x43, 0x2F, 0x4E, 0xC5, 0x04, 0xD6, 0xB5, 0x69, 0x06, 0x39, 0x61, 0x45, - 0x9D, 0x5D, 0x6C, 0x22, 0xB7, 0xF2, 0xE9, 0xF9, 0xF3, 0xA2, 0xEC, 0x3F, 0x2A, 0x1A, 0x84, 0x52, - 0x5F, 0xA9, 0x37, 0x53, 0xC1, 0xC1, 0x16, 0x1E, 0xBB, 0x3F, 0x1A, 0x91, 0x61, 0x10, 0xB8, 0x15, - 0x5A, 0x13, 0x68, 0x9D, 0xCA, 0x77, 0xE6, 0xE6, 0x6D, 0x44, 0xAE, 0xF4, 0xAB, 0x08, 0x80, 0xF4, - 0x27, 0xCC, 0xF9, 0x28, 0x29, 0x3B, 0x0E, 0x65, 0x1B, 0x15, 0x50, 0x1F, 0x3C, 0x76, 0x8F, 0x34, - 0xD1, 0xB3, 0x1B, 0x66, 0xFA, 0xD9, 0x0B, 0x2C, 0xDB, 0x51, 0x79, 0x26, 0x41, 0x14, 0x79, 0x18, - 0xF9, 0xC3, 0xB5, 0x81, 0xBD, 0xD6, 0x2D, 0x6B, 0x24, 0x43, 0x31, 0xFD, 0x70, 0x7A, 0xDA, 0x1E, - 0xF3, 0x9F, 0xF4, 0x1B, 0xB1, 0x7D, 0x5C, 0xB1, 0x7D, 0x3C, 0x3D, 0xED, 0xF7, 0xDB, 0x11, 0xFB, - 0xD1, 0x9A, 0x13, 0xCB, 0x67, 0x00, 0xB0, 0x92, 0x7E, 0x7E, 0x66, 0xD5, 0x93, 0x5D, 0xBC, 0xB6, - 0xB0, 0x38, 0xE7, 0xFE, 0x37, 0x86, 0x43, 0xF9, 0x41, 0x9B, 0xAC, 0xC3, 0x28, 0xDB, 0xEA, 0xAC, - 0xAD, 0xAD, 0xBF, 0xE8, 0xE0, 0xF0, 0x62, 0xFC, 0x6B, 0xA7, 0xB1, 0x58, 0xE9, 0x48, 0xDF, 0x25, - 0xBD, 0x65, 0x20, 0x7E, 0x8F, 0xE3, 0xAE, 0xC3, 0x2E, 0x07, 0xC2, 0x08, 0xEB, 0xE1, 0x23, 0x59, - 0xC1, 0x3D, 0xBE, 0x0D, 0xB6, 0xDE, 0x21, 0x9D, 0x0D, 0xD2, 0xDB, 0x68, 0xF7, 0x3A, 0xEB, 0x5B, - 0x16, 0x52, 0x52, 0x5B, 0xB4, 0x4B, 0xD6, 0x96, 0x4C, 0x49, 0x8F, 0x11, 0xB3, 0x96, 0x12, 0xB3, - 0xD2, 0xED, 0x6C, 0xAC, 0x74, 0xBB, 0x2B, 0x9D, 0x8D, 0x76, 0x77, 0xB3, 0x67, 0x23, 0xC7, 0x6E, - 0xD1, 0x76, 0x31, 0x9C, 0x71, 0x49, 0xA4, 0xBD, 0x40, 0x9A, 0x6E, 0xE8, 0x3D, 0x0D, 0x39, 0x3D, - 0xDD, 0x2E, 0x52, 0xF3, 0xF2, 0xE5, 0xD6, 0x56, 0x8F, 0x34, 0x0E, 0xB9, 0x66, 0x61, 0x15, 0xFE, - 0x5B, 0x33, 0xA1, 0x31, 0x5D, 0xC6, 0xFA, 0x74, 0xE8, 0x60, 0x2A, 0xBD, 0xBE, 0x37, 0xF4, 0xF5, - 0x55, 0x83, 0x3E, 0x76, 0x3B, 0xA9, 0xE1, 0x48, 0xAD, 0x54, 0x52, 0xCC, 0xD7, 0x5B, 0x18, 0x42, - 0xB8, 0xA7, 0x18, 0xB5, 0x16, 0xB2, 0xAE, 0xCE, 0x9F, 0x3B, 0xBB, 0x60, 0x71, 0x86, 0x60, 0xBC, - 0x18, 0x2B, 0xB8, 0xF9, 0x48, 0xA3, 0x8A, 0x75, 0x22, 0xF4, 0xAB, 0x21, 0x89, 0x50, 0x57, 0x56, - 0xD8, 0xBB, 0xB7, 0x60, 0x15, 0x52, 0x39, 0x3B, 0xFC, 0x01, 0x5C, 0xCF, 0xE7, 0x39, 0xDB, 0x58, - 0x09, 0xE5, 0x96, 0xBB, 0xC5, 0xB6, 0xDE, 0xEC, 0x66, 0xA2, 0x40, 0x2A, 0xD1, 0x90, 0x08, 0xF0, - 0x98, 0x6E, 0x28, 0x75, 0xC2, 0x02, 0x3B, 0x8B, 0x2E, 0x56, 0x65, 0x6A, 0x13, 0x5F, 0x72, 0x44, - 0x0A, 0xC5, 0x2F, 0xF0, 0x70, 0x21, 0xB7, 0x74, 0x13, 0x8C, 0xFB, 0xEA, 0x6A, 0x76, 0xA4, 0xAB, - 0xCF, 0x5A, 0xCC, 0x3F, 0x37, 0x73, 0xB8, 0xCA, 0x61, 0x34, 0xBF, 0x7D, 0x19, 0xA3, 0xCF, 0x9D, - 0x07, 0x2A, 0xB3, 0xB3, 0x38, 0x60, 0xAB, 0x3F, 0x90, 0x17, 0x62, 0xD2, 0x05, 0x02, 0x13, 0x0F, - 0x2C, 0x36, 0x89, 0xD0, 0x17, 0x0D, 0x8A, 0xB0, 0x2B, 0x3A, 0x08, 0x05, 0x34, 0xBF, 0x09, 0xD3, - 0x51, 0x61, 0xA4, 0x13, 0x5D, 0x5A, 0x6D, 0x65, 0x27, 0x31, 0x51, 0xFC, 0xD0, 0x51, 0xBB, 0x3D, - 0xC3, 0x9E, 0xAB, 0xF3, 0xFC, 0x69, 0xCC, 0x42, 0x13, 0x0A, 0x10, 0x25, 0x68, 0x4E, 0x4F, 0xD5, - 0x30, 0xCE, 0x63, 0x0F, 0xA6, 0x64, 0x98, 0x56, 0xB4, 0x29, 0x36, 0x9D, 0x88, 0x59, 0xF8, 0xF4, - 0xFB, 0x1B, 0xF6, 0x90, 0x2B, 0x0A, 0x63, 0xA5, 0x6B, 0xFA, 0xB1, 0x17, 0x65, 0xFD, 0xD5, 0xD9, - 0xFB, 0xAB, 0xC3, 0xA3, 0x83, 0x93, 0xD3, 0xBD, 0x77, 0x86, 0x14, 0x22, 0x0A, 0x13, 0x8F, 0x8B, - 0xDD, 0x4A, 0xE8, 0x31, 0xD8, 0xAD, 0xAA, 0x03, 0xDF, 0x4C, 0xF1, 0x16, 0x56, 0x96, 0xA5, 0x03, - 0x49, 0x65, 0xB4, 0xDA, 0x44, 0xF2, 0xF1, 0xCF, 0x09, 0xBF, 0x44, 0x03, 0x60, 0x99, 0xF2, 0x84, - 0x8A, 0x65, 0x29, 0x25, 0x91, 0x3D, 0x4F, 0x81, 0xAC, 0x92, 0x4D, 0x30, 0xFD, 0xEC, 0x1E, 0x95, - 0xC4, 0xB1, 0x4A, 0xD6, 0x36, 0xF1, 0x12, 0x71, 0xE6, 0x9D, 0xE5, 0x0C, 0xC8, 0xA6, 0x15, 0xCF, - 0x9F, 0x91, 0xFF, 0xD6, 0x2D, 0xD1, 0x82, 0x03, 0x70, 0xA3, 0x70, 0x00, 0xAE, 0x27, 0x03, 0x50, - 0x9B, 0x7E, 0x97, 0x37, 0xFE, 0x2A, 0x8E, 0xBE, 0x74, 0xD8, 0x69, 0x6A, 0x90, 0x33, 0xE6, 0x4C, - 0xFD, 0x9F, 0x75, 0x94, 0xE5, 0x8E, 0x31, 0xBB, 0x32, 0x6A, 0xAC, 0x61, 0x31, 0x85, 0xA2, 0x81, - 0x05, 0xB0, 0x5D, 0x13, 0x67, 0xD5, 0x2C, 0x5D, 0x89, 0xD4, 0x69, 0xA0, 0x82, 0xF6, 0xE8, 0xEA, - 0xA3, 0xE9, 0x4A, 0x97, 0x4B, 0x7B, 0xE5, 0x89, 0xC4, 0x7D, 0x75, 0x7A, 0x7A, 0x75, 0xB8, 0xD7, - 0x7F, 0x6B, 0x08, 0x5D, 0x44, 0xCA, 0xA4, 0x96, 0x47, 0x84, 0xBC, 0xAF, 0x98, 0x57, 0x22, 0x52, - 0x09, 0x1B, 0xAF, 0x42, 0xA7, 0xE2, 0xC8, 0x11, 0x9C, 0xF1, 0xD0, 0x73, 0x6A, 0x0F, 0x33, 0xB2, - 0xFB, 0xAE, 0xA2, 0xC8, 0x97, 0x44, 0x2F, 0x91, 0x84, 0x5C, 0xB6, 0x2E, 0x5D, 0x12, 0x60, 0x7F, - 0x7F, 0x30, 0x61, 0xFC, 0x30, 0x93, 0x93, 0xC2, 0x9E, 0x2A, 0x73, 0x94, 0xF1, 0xD2, 0xB7, 0xEC, - 0x50, 0x76, 0x92, 0x7A, 0x82, 0x19, 0x64, 0x11, 0x8D, 0x33, 0xA6, 0x0E, 0xAE, 0x72, 0xA9, 0xBF, - 0x64, 0xA9, 0x1A, 0xB7, 0x5D, 0xC2, 0x84, 0xD4, 0xB4, 0x3E, 0x51, 0xF7, 0x84, 0x6D, 0x23, 0x4F, - 0x67, 0xDB, 0x2A, 0x8E, 0x24, 0xF2, 0xFF, 0x97, 0x59, 0xD3, 0xA5, 0xD0, 0x4B, 0xA4, 0x40, 0x9E, - 0x66, 0x49, 0xCF, 0x87, 0xEE, 0x0F, 0x24, 0x8A, 0x1F, 0xCD, 0xA8, 0xFD, 0x7B, 0xD9, 0x33, 0xE1, - 0xE1, 0xD1, 0x8E, 0x48, 0x2C, 0x8D, 0xF8, 0x29, 0x89, 0xA5, 0x20, 0xC9, 0x31, 0xB0, 0xD5, 0x34, - 0x6E, 0xD5, 0x59, 0x98, 0x2D, 0x5F, 0xA2, 0x94, 0x1E, 0x6A, 0xC5, 0xD5, 0x8C, 0xDE, 0xCD, 0xF4, - 0xF6, 0x59, 0x8B, 0x04, 0xD3, 0x18, 0xFF, 0x70, 0x84, 0xFB, 0x1A, 0x1A, 0xF5, 0x03, 0xDD, 0x19, - 0x8D, 0x9E, 0xD5, 0x6B, 0xE0, 0xC5, 0x98, 0x92, 0xBA, 0x31, 0x20, 0xEA, 0x2D, 0x42, 0xE3, 0x81, - 0xF6, 0x32, 0x25, 0xD2, 0xCD, 0xE8, 0x50, 0xE8, 0x6A, 0xD9, 0x14, 0xC2, 0xEE, 0xB8, 0x16, 0xDE, - 0x3C, 0xE5, 0xC4, 0x8D, 0xEF, 0x3E, 0x2C, 0xFA, 0x54, 0x5D, 0xA1, 0x9A, 0xD6, 0x41, 0x9B, 0xEA, - 0x4F, 0xFA, 0xAD, 0xA9, 0xB0, 0xD9, 0x3C, 0xB6, 0x54, 0xC9, 0xB0, 0x1F, 0xFA, 0x2C, 0x48, 0xE6, - 0x95, 0xB2, 0x4F, 0x80, 0xBD, 0xCE, 0x82, 0xD0, 0x96, 0x0A, 0x4C, 0x2E, 0x88, 0x97, 0x0C, 0xB2, - 0xFF, 0xE9, 0x74, 0xFF, 0xFD, 0x3B, 0x06, 0xD4, 0x0C, 0xF2, 0x1F, 0x05, 0xFE, 0x90, 0x65, 0x17, - 0x38, 0xA4, 0xC3, 0x90, 0x9A, 0x8E, 0x83, 0x8C, 0x24, 0x0C, 0xD1, 0xC2, 0x86, 0xC6, 0x04, 0x60, - 0xAD, 0x07, 0x43, 0x74, 0xB3, 0x63, 0xEE, 0x74, 0x93, 0xD2, 0xD7, 0x24, 0xD7, 0xAE, 0xC9, 0xC1, - 0x6D, 0xD7, 0xAB, 0x41, 0x76, 0xD8, 0xBE, 0x68, 0x66, 0xF2, 0xF2, 0x2C, 0x28, 0xDE, 0x3C, 0xD2, - 0x92, 0x21, 0x94, 0x61, 0xE1, 0x73, 0x18, 0x55, 0xCC, 0xBA, 0xC8, 0xAA, 0xDB, 0x59, 0x6F, 0xFE, - 0x92, 0x14, 0x65, 0x2E, 0xE2, 0x56, 0xBE, 0x07, 0x75, 0x5C, 0xE7, 0xE6, 0xA2, 0xEF, 0xBF, 0xFF, - 0x4B, 0x27, 0x10, 0xBF, 0xD5, 0x6B, 0x3A, 0x99, 0xF3, 0xC0, 0x25, 0xB6, 0x7E, 0x2F, 0xDD, 0xB6, - 0x5C, 0x29, 0xAE, 0xBF, 0x65, 0x98, 0x97, 0xA5, 0x82, 0x53, 0x36, 0x32, 0xCB, 0x87, 0xAA, 0x98, - 0x99, 0xE5, 0x75, 0x5E, 0x59, 0x9F, 0x2C, 0x9F, 0xE2, 0xA7, 0x84, 0x6D, 0x6C, 0x16, 0xFF, 0x2D, - 0xAC, 0xAF, 0x46, 0xF3, 0xA9, 0xCD, 0xD5, 0x3C, 0x0B, 0xCD, 0x02, 0x40, 0x11, 0xCD, 0x95, 0xED, - 0xFE, 0xE6, 0xD2, 0xED, 0x7E, 0xBF, 0x3F, 0xB7, 0xE5, 0xCF, 0xB0, 0xE8, 0x3B, 0xCD, 0x08, 0x42, - 0xEB, 0xE6, 0x9F, 0x14, 0x6C, 0x84, 0xAF, 0x7C, 0x27, 0xCA, 0x17, 0x9E, 0x30, 0x6C, 0xC4, 0xD7, - 0xB3, 0x33, 0xC9, 0x5F, 0x6B, 0xB5, 0xA7, 0xEA, 0x43, 0x73, 0xEE, 0x59, 0xC9, 0x46, 0x3B, 0x79, - 0x6A, 0xC6, 0x1B, 0xE6, 0x75, 0xE9, 0xEA, 0xAE, 0xDC, 0x5C, 0xB3, 0x9A, 0x85, 0x25, 0x2B, 0xD0, - 0x82, 0x3D, 0x29, 0x96, 0xC3, 0x77, 0xEE, 0x8B, 0x31, 0x79, 0x3C, 0xC1, 0x88, 0x2E, 0xEA, 0x50, - 0xE6, 0x12, 0x8A, 0x8E, 0xCF, 0x88, 0xF9, 0x93, 0x41, 0x38, 0x03, 0x98, 0xDD, 0x64, 0x9B, 0xD5, - 0xBF, 0xBA, 0xAB, 0xED, 0x18, 0x6F, 0xA6, 0x0E, 0x9A, 0xDB, 0x44, 0xBF, 0x39, 0x2F, 0xCF, 0xB7, - 0x61, 0x27, 0xDC, 0xE2, 0x39, 0x99, 0x60, 0xE3, 0x7A, 0x1B, 0xAA, 0x41, 0x82, 0x3C, 0xA1, 0xD4, - 0x2E, 0x6E, 0x96, 0xE5, 0xB5, 0x99, 0x15, 0x25, 0x18, 0x03, 0x3E, 0x6B, 0x7B, 0x73, 0xAC, 0xA6, - 0xA5, 0x42, 0x12, 0xE9, 0xA6, 0x9E, 0x23, 0x5C, 0x8C, 0x86, 0xD4, 0xCA, 0x39, 0xF0, 0xE7, 0x2C, - 0xA3, 0xA6, 0xBA, 0x7D, 0xF7, 0xB5, 0x0D, 0xBB, 0x00, 0xED, 0x90, 0x09, 0x34, 0xE2, 0xD9, 0x6B, - 0xC4, 0xD6, 0x5D, 0xB9, 0x3E, 0x2A, 0x4A, 0xD2, 0x78, 0xB1, 0x82, 0x0D, 0x78, 0x74, 0x8F, 0x8F, - 0xC4, 0x90, 0xA2, 0x2A, 0xEC, 0x98, 0x9E, 0xBF, 0x38, 0xFA, 0xCA, 0x48, 0x0C, 0xCA, 0x25, 0x51, - 0xFB, 0xE0, 0x7F, 0xF5, 0x2D, 0x0F, 0x5A, 0x1A, 0x29, 0x68, 0x07, 0x78, 0x8F, 0xB3, 0x51, 0x79, - 0xDB, 0x9E, 0x83, 0x4B, 0xF5, 0x4E, 0x2C, 0x15, 0x21, 0xEC, 0xA9, 0x72, 0x51, 0xA6, 0xAE, 0xCA, - 0xA5, 0xA2, 0xBC, 0x2A, 0xC2, 0x49, 0x9E, 0x0E, 0x29, 0x9F, 0x8F, 0x73, 0x31, 0xAF, 0x3C, 0x11, - 0x66, 0xB6, 0x7A, 0x29, 0xE0, 0x71, 0xE2, 0x59, 0x5A, 0x7A, 0x7F, 0x8B, 0xF0, 0x6A, 0x3E, 0xAD, - 0xA5, 0xF7, 0x57, 0x35, 0x97, 0x85, 0x5D, 0x7F, 0x82, 0x3E, 0x57, 0xC2, 0xCD, 0xBB, 0xFF, 0x14, - 0xD8, 0xCD, 0xD9, 0xA2, 0x48, 0xDF, 0x56, 0x0A, 0x49, 0xF8, 0xF6, 0x2C, 0xCF, 0xDC, 0x7C, 0xFB, - 0x7F, 0x90, 0xAA, 0xD0, 0x44, 0xE8, 0x16, 0x00 + 0x1F, 0x8B, 0x08, 0x08, 0xC0, 0x23, 0x3C, 0x65, 0x02, 0xFF, 0x6D, 0x61, 0x69, 0x6E, 0x2E, 0x6A, + 0x73, 0x2E, 0x67, 0x7A, 0x69, 0x70, 0x00, 0xED, 0x7D, 0xEB, 0x7A, 0xDB, 0x38, 0x92, 0xE8, 0xFF, + 0x3C, 0x05, 0x5A, 0x3B, 0xA7, 0x25, 0x4D, 0x64, 0x59, 0x92, 0x2F, 0x89, 0xE3, 0xD8, 0x7B, 0x7C, + 0x4D, 0xBC, 0x13, 0x3B, 0xFE, 0xAC, 0xA4, 0xD3, 0x49, 0x4F, 0x8E, 0x97, 0x16, 0x61, 0x99, 0x13, + 0x89, 0xD4, 0x21, 0x29, 0x5F, 0x66, 0x36, 0xEF, 0xB4, 0xCF, 0xB0, 0x4F, 0x76, 0xAA, 0x70, 0x21, + 0x01, 0x10, 0xBC, 0xE8, 0x62, 0x77, 0x66, 0x4E, 0xFB, 0x9B, 0x49, 0xDB, 0x04, 0x50, 0x55, 0xA8, + 0x2A, 0x14, 0x80, 0x42, 0xA1, 0x70, 0xEB, 0x84, 0x64, 0xE8, 0xC4, 0xF4, 0xCE, 0x79, 0x20, 0x3B, + 0xE4, 0x3F, 0xEF, 0xA2, 0x57, 0xAB, 0xAB, 0x7F, 0xFA, 0xC7, 0x9D, 0xE7, 0xBB, 0xC1, 0x5D, 0x7B, + 0x14, 0x0C, 0x9C, 0xD8, 0x0B, 0xFC, 0xF6, 0x4D, 0x10, 0xC5, 0xBE, 0x33, 0xA6, 0xDF, 0x57, 0xEF, + 0xA2, 0xFF, 0xDC, 0x7E, 0x76, 0x0B, 0x8D, 0xEE, 0xE8, 0x55, 0x14, 0x0C, 0xBE, 0xD1, 0x78, 0xFB, + 0xD9, 0x33, 0x51, 0xDD, 0x71, 0xDD, 0xA3, 0x5B, 0xEA, 0xC7, 0xEF, 0xBC, 0x28, 0xA6, 0x3E, 0x0D, + 0x1B, 0xF5, 0x51, 0xE0, 0xB8, 0xF5, 0x16, 0x09, 0xFC, 0x77, 0xF0, 0x4B, 0x13, 0x6A, 0x5E, 0x4F, + 0xFD, 0x01, 0x42, 0x14, 0x9F, 0x1A, 0x14, 0xEB, 0x37, 0xC9, 0x3F, 0x9E, 0x11, 0xF8, 0xF1, 0x7C, + 0x2F, 0xFE, 0x44, 0xAF, 0xFA, 0x0C, 0x6C, 0x03, 0xAA, 0x7F, 0x57, 0x1A, 0x18, 0x85, 0xA2, 0x49, + 0x42, 0x05, 0x10, 0xEF, 0xD3, 0x3B, 0x92, 0xD6, 0x10, 0x9D, 0x02, 0x28, 0x5A, 0xBD, 0x76, 0xE0, + 0x8F, 0x69, 0x14, 0x39, 0x43, 0x0A, 0x2D, 0x12, 0xE0, 0x8D, 0x71, 0x34, 0x94, 0x20, 0xF1, 0x67, + 0xE2, 0x84, 0x11, 0x3D, 0xF1, 0x07, 0xC1, 0xD8, 0xF3, 0x87, 0x58, 0xD8, 0x76, 0x9D, 0xD8, 0x11, + 0xB0, 0xBE, 0xEB, 0x84, 0x0D, 0x69, 0x83, 0xCA, 0xB6, 0x21, 0x8D, 0xA7, 0xA1, 0x4F, 0xDC, 0x60, + 0x30, 0x1D, 0x43, 0xC7, 0xDA, 0x43, 0x1A, 0x1F, 0x8D, 0x28, 0xFE, 0xBA, 0xFF, 0x70, 0x02, 0xBD, + 0xE5, 0x7D, 0x42, 0xF6, 0x5D, 0x7B, 0xF7, 0xD4, 0x7D, 0xE7, 0x20, 0xDD, 0x9D, 0x6D, 0xE5, 0x4B, + 0xE0, 0x0F, 0xD3, 0x4F, 0x93, 0x91, 0x13, 0x5F, 0x07, 0xE1, 0xF8, 0x3C, 0xA4, 0x50, 0x0A, 0xDF, + 0x6B, 0xFD, 0x69, 0x78, 0x4B, 0x1F, 0x82, 0xB0, 0xC6, 0x2B, 0x0C, 0x69, 0xE0, 0xD2, 0xD8, 0x1B, + 0x70, 0x40, 0xEB, 0x9D, 0x76, 0xA7, 0x6B, 0x14, 0x00, 0x81, 0x3B, 0x64, 0xA5, 0xDB, 0xD9, 0x68, + 0x77, 0xB7, 0xF4, 0xA2, 0xBD, 0x11, 0xB6, 0xE9, 0x6E, 0x74, 0x3A, 0x6D, 0xD1, 0x88, 0x0E, 0xE8, + 0xF5, 0xAF, 0xAC, 0x7A, 0xEF, 0x65, 0xA7, 0xD7, 0xD9, 0x6C, 0x6F, 0x6C, 0xBE, 0x4C, 0x4B, 0x3E, + 0x63, 0xC9, 0xFA, 0x8B, 0xEE, 0xE6, 0xCB, 0xCE, 0x7A, 0x7B, 0xBD, 0xB3, 0x96, 0x96, 0x7C, 0x61, + 0xB8, 0x5F, 0x6E, 0x6E, 0x6E, 0x6E, 0xB4, 0xD7, 0x5F, 0xAE, 0xF3, 0x82, 0x91, 0x13, 0xC5, 0xC7, + 0xDE, 0x88, 0x9E, 0x81, 0xDA, 0x20, 0xE5, 0x35, 0xD9, 0x4B, 0xF8, 0x34, 0x1D, 0x5F, 0xD1, 0x30, + 0xED, 0xA6, 0xCF, 0xFE, 0x7E, 0x7F, 0x8D, 0xD5, 0xA3, 0x3E, 0x1D, 0xD1, 0x41, 0x4C, 0xDD, 0xB4, + 0x38, 0x12, 0x5F, 0x58, 0xB1, 0x02, 0x2A, 0xBA, 0x09, 0x40, 0xF1, 0x86, 0xF8, 0x19, 0x35, 0x0E, + 0xE5, 0xE9, 0x8C, 0x22, 0xCA, 0x0B, 0x83, 0xAB, 0xD8, 0xF1, 0x7C, 0xEA, 0x9E, 0x72, 0x61, 0x57, + 0xAA, 0xB0, 0xEF, 0x44, 0x54, 0xAF, 0x24, 0x50, 0x88, 0x3A, 0x17, 0x1F, 0x0E, 0x4E, 0xB3, 0x80, + 0xB0, 0x47, 0x1F, 0x9C, 0x2B, 0xF8, 0x87, 0xDE, 0xC7, 0x0A, 0x79, 0x42, 0xCD, 0x8C, 0xAF, 0xC8, + 0x16, 0x01, 0xEE, 0xC3, 0xC3, 0x84, 0xE6, 0x97, 0x08, 0x62, 0xB0, 0x94, 0x15, 0x87, 0x74, 0x10, + 0x84, 0x6E, 0x74, 0x74, 0x70, 0x74, 0x0C, 0x9F, 0x7F, 0xFB, 0xBA, 0xAD, 0x7E, 0x7D, 0x23, 0x64, + 0xAA, 0x94, 0x5C, 0x4F, 0x47, 0xA3, 0x73, 0x80, 0xF5, 0x71, 0x02, 0xAA, 0xAB, 0x74, 0x4B, 0x34, + 0x8B, 0x68, 0xFC, 0xC1, 0x1B, 0xD3, 0x60, 0x1A, 0x4B, 0x26, 0xFB, 0xEE, 0x21, 0xE8, 0xB8, 0xF6, + 0x71, 0x70, 0x43, 0x07, 0xDF, 0xCE, 0xE8, 0xDD, 0xB1, 0x17, 0x8E, 0xEF, 0x9C, 0x90, 0x6A, 0x85, + 0xA0, 0xDB, 0xB6, 0xA2, 0x67, 0x83, 0xC0, 0x07, 0x16, 0x1D, 0x04, 0x40, 0x97, 0xE7, 0x03, 0x6A, + 0xEC, 0x0C, 0x8A, 0x8D, 0x8F, 0x90, 0x83, 0xF7, 0xEF, 0x2F, 0x0E, 0x4F, 0xCE, 0xF6, 0x3E, 0x1C, + 0x5D, 0x9E, 0x9C, 0x9D, 0x7F, 0xFC, 0x70, 0xF9, 0xE1, 0xF3, 0xF9, 0xD1, 0xE5, 0xE1, 0xE1, 0x2B, + 0xD2, 0x69, 0x91, 0xD5, 0xD5, 0x43, 0x7A, 0xED, 0x4C, 0x41, 0x31, 0x0F, 0x0F, 0xDB, 0xAE, 0xFC, + 0x29, 0x6C, 0x77, 0x7A, 0xFA, 0x8A, 0x74, 0x59, 0x4B, 0xF8, 0xB5, 0x3D, 0xC6, 0x9F, 0xC2, 0xFA, + 0x97, 0xD8, 0xA0, 0xC7, 0x1B, 0x90, 0xAA, 0x2D, 0x2E, 0x0F, 0xF7, 0xFA, 0x6F, 0x5F, 0x91, 0x35, + 0xDE, 0x6C, 0xA5, 0x72, 0xB3, 0xFE, 0xE7, 0xD3, 0xFD, 0xF7, 0xEF, 0x5E, 0x91, 0x75, 0xDE, 0xF0, + 0x7F, 0xFE, 0x5B, 0xB6, 0x1C, 0x8F, 0xEB, 0x25, 0xBD, 0xEA, 0xF7, 0x5F, 0x91, 0x8D, 0x84, 0x4C, + 0xD2, 0xEF, 0xB7, 0x23, 0xF6, 0x53, 0x8E, 0x13, 0x1A, 0x6E, 0xCE, 0xD7, 0x50, 0x74, 0xF3, 0x45, + 0xD2, 0xCD, 0x95, 0x99, 0x5A, 0xCB, 0xDE, 0xBE, 0x4C, 0x7B, 0x5B, 0x4F, 0x00, 0xD4, 0x4A, 0xFB, + 0x7B, 0x79, 0xF6, 0xFE, 0xF2, 0xF0, 0xE8, 0xE0, 0xE4, 0x74, 0x0F, 0x60, 0x6C, 0x49, 0x91, 0xF6, + 0xFB, 0x64, 0x85, 0x9C, 0x05, 0xC4, 0xA5, 0x03, 0x6F, 0xEC, 0x8C, 0xAA, 0xD0, 0xA1, 0xC2, 0xE9, + 0x76, 0x54, 0x56, 0xCC, 0x0C, 0x0A, 0x19, 0xA2, 0xC3, 0xEB, 0xAA, 0xCC, 0xA9, 0x0A, 0xEF, 0xE4, + 0xEC, 0x97, 0xBD, 0x77, 0x27, 0x87, 0x97, 0x1F, 0xCF, 0xFE, 0x72, 0xF6, 0xFE, 0xD3, 0x19, 0x80, + 0xE9, 0xB5, 0xE4, 0x44, 0x00, 0xC3, 0xE5, 0x96, 0x86, 0x60, 0xDE, 0xD2, 0x11, 0x83, 0xA6, 0xAF, + 0x2D, 0x8C, 0xDF, 0x20, 0xF9, 0x7A, 0xE2, 0x4F, 0xA6, 0xB1, 0xB0, 0x19, 0xC6, 0xE8, 0x6A, 0xE7, + 0x75, 0x43, 0x9D, 0x71, 0x33, 0x73, 0x9A, 0x9C, 0xB4, 0x56, 0x57, 0x71, 0xC8, 0x06, 0x23, 0x0A, + 0xF3, 0xFD, 0xB0, 0x51, 0xF3, 0x44, 0x15, 0x69, 0xC0, 0x5E, 0x91, 0x1A, 0x79, 0x4E, 0xB0, 0x3E, + 0x40, 0xC3, 0xFA, 0x48, 0x16, 0x4E, 0x87, 0x40, 0x07, 0xCE, 0x8C, 0xD1, 0x64, 0xE4, 0xC5, 0x8D, + 0x7A, 0xAB, 0x2E, 0xA6, 0x47, 0x98, 0xB0, 0x48, 0x63, 0x04, 0x33, 0xF2, 0x3D, 0x33, 0xE1, 0xF0, + 0x9F, 0xD7, 0xAC, 0x7A, 0x7B, 0x44, 0xFD, 0x61, 0x7C, 0x03, 0x3C, 0xEB, 0xE2, 0xC7, 0xE7, 0x3B, + 0xA4, 0xA7, 0x4E, 0xB9, 0x08, 0xD5, 0x43, 0xAB, 0x8F, 0x75, 0x7F, 0xBB, 0xFF, 0xBA, 0xAD, 0x95, + 0xDC, 0x3A, 0xA3, 0xA4, 0x08, 0xA8, 0xE9, 0x2A, 0xC5, 0x26, 0xF9, 0x2E, 0x27, 0x18, 0x60, 0x3D, + 0x27, 0xB5, 0x16, 0xB6, 0xE4, 0x1F, 0xE0, 0x17, 0xD9, 0x03, 0xDE, 0xAC, 0x3F, 0x01, 0xC1, 0x01, + 0x5C, 0xE8, 0xEE, 0xD8, 0xF1, 0xDD, 0x28, 0x29, 0xF2, 0xAE, 0x49, 0xC3, 0x73, 0xDB, 0xC0, 0x88, + 0xD1, 0xD4, 0xA5, 0x51, 0xA3, 0x16, 0xB9, 0xA7, 0xC1, 0xD4, 0x07, 0x19, 0xD5, 0x9A, 0x2A, 0xC9, + 0x1C, 0xCC, 0x07, 0x9C, 0xF1, 0x03, 0x7F, 0x35, 0xB8, 0xBE, 0x26, 0xFD, 0x43, 0x02, 0xB6, 0xD0, + 0xD1, 0x6A, 0x20, 0x34, 0x46, 0x3E, 0x18, 0x73, 0x66, 0x83, 0x6B, 0x26, 0x0C, 0xFC, 0xB9, 0xF1, + 0x5C, 0xDA, 0xA8, 0xE1, 0x5C, 0x72, 0xEA, 0xF8, 0xC0, 0xF5, 0xB0, 0xD6, 0xDC, 0xD6, 0x2A, 0x7D, + 0xD7, 0xFE, 0xA2, 0x00, 0x47, 0x83, 0x1C, 0x87, 0x53, 0x3B, 0x60, 0x9C, 0xC2, 0x2A, 0x02, 0x4E, + 0x7F, 0x4B, 0xC0, 0xA3, 0x44, 0x00, 0xBA, 0xBE, 0x10, 0xC9, 0xE0, 0xC9, 0xAC, 0x53, 0x80, 0x2A, + 0x1D, 0x49, 0xB2, 0x22, 0x8A, 0xBD, 0x78, 0xC4, 0xE6, 0xB5, 0x8B, 0x0F, 0x7F, 0x61, 0x62, 0x31, + 0xDA, 0x82, 0xCC, 0x48, 0x1F, 0x56, 0x51, 0x93, 0x9A, 0x0E, 0x20, 0x33, 0x9D, 0x61, 0x87, 0x15, + 0x71, 0x4A, 0x4E, 0x9B, 0xA4, 0xA8, 0x6B, 0xA6, 0x7C, 0xF6, 0x5C, 0xC1, 0x64, 0x7B, 0x10, 0xF8, + 0xD7, 0xDE, 0xD0, 0xE4, 0x4E, 0x2A, 0x1B, 0x98, 0x21, 0xA3, 0x20, 0x2C, 0xAB, 0x35, 0x99, 0x94, + 0xD5, 0xA0, 0xF1, 0x0D, 0x0D, 0x7D, 0x1A, 0x97, 0xD5, 0xF3, 0xE3, 0x02, 0x50, 0xAB, 0xAB, 0xBC, + 0x92, 0x33, 0x1A, 0x05, 0x77, 0x9F, 0xBC, 0x63, 0xEF, 0x3D, 0x18, 0x91, 0x23, 0x09, 0x79, 0xE4, + 0x01, 0xAB, 0xA1, 0x19, 0x54, 0x3B, 0x0E, 0x70, 0x29, 0x00, 0xAB, 0x52, 0x4A, 0xE8, 0xFD, 0xC4, + 0xF1, 0x23, 0x30, 0x05, 0xB3, 0x41, 0xEB, 0x53, 0x60, 0x5F, 0x58, 0x00, 0x2D, 0x87, 0x7E, 0x1C, + 0xAC, 0xE7, 0x41, 0x18, 0x1F, 0xDC, 0x38, 0xBE, 0x4F, 0x47, 0x87, 0x61, 0x30, 0x81, 0x4D, 0x82, + 0x5F, 0x51, 0xAF, 0x2D, 0x72, 0x3C, 0xBA, 0x9F, 0xC0, 0xBA, 0x25, 0xAA, 0x91, 0xFF, 0xFA, 0x2F, + 0x62, 0x29, 0x3E, 0x76, 0x06, 0x34, 0xFE, 0x43, 0xC6, 0x8F, 0x23, 0xE3, 0x85, 0x24, 0x46, 0xCE, + 0x47, 0xD3, 0xA8, 0xC0, 0xEA, 0x15, 0x4B, 0x86, 0x4B, 0xEF, 0x0F, 0xC9, 0x54, 0x1D, 0x7D, 0xB0, + 0x1F, 0xAD, 0x8D, 0xA7, 0xF7, 0x62, 0xD8, 0xF5, 0x6A, 0x4D, 0x98, 0xC8, 0x60, 0x33, 0xFE, 0xF6, + 0xC3, 0xE9, 0x3B, 0xB4, 0xBB, 0x9F, 0x6E, 0x28, 0x1D, 0xAD, 0x1E, 0x7A, 0x21, 0x39, 0x82, 0x89, + 0xDE, 0xA5, 0x61, 0x6D, 0xDE, 0xF1, 0xC8, 0x06, 0x1C, 0x79, 0xB7, 0xB2, 0x0F, 0x93, 0x67, 0xE1, + 0xA0, 0x14, 0x75, 0x08, 0x20, 0x85, 0x8D, 0xDC, 0x23, 0x0F, 0x51, 0x0E, 0xE9, 0x8F, 0x21, 0x5A, + 0x51, 0x88, 0x17, 0xF4, 0x9A, 0x86, 0xD4, 0x1F, 0x50, 0xD2, 0x8F, 0x99, 0xAF, 0xE7, 0x77, 0xB7, + 0xA0, 0x1C, 0x57, 0xB9, 0x78, 0x78, 0xBD, 0x7F, 0x72, 0xF1, 0x58, 0x97, 0x5C, 0xCA, 0xCA, 0xF3, + 0xEF, 0xE8, 0xF6, 0xE0, 0x3B, 0xEC, 0x5F, 0x68, 0x88, 0x80, 0x4E, 0x90, 0xE6, 0xEC, 0x2A, 0xF4, + 0x74, 0x0A, 0x9B, 0x6E, 0x58, 0xC9, 0x52, 0xE2, 0x5C, 0x05, 0xB7, 0x94, 0x64, 0x1B, 0x92, 0x98, + 0x46, 0xB1, 0xD9, 0x2A, 0x70, 0xBD, 0xEB, 0x07, 0xD8, 0xFC, 0xC7, 0x31, 0xAC, 0xF8, 0x23, 0xE2, + 0x4E, 0x29, 0x89, 0x03, 0x72, 0x2D, 0x5A, 0x92, 0x91, 0x37, 0xF6, 0xB8, 0x5A, 0x44, 0xD6, 0x35, + 0xED, 0xEE, 0x0E, 0x6C, 0x65, 0xBA, 0x56, 0x8D, 0x61, 0x4E, 0x1B, 0x30, 0x38, 0x68, 0x8E, 0xDC, + 0x07, 0xDF, 0x19, 0x7B, 0x03, 0xC0, 0x46, 0x47, 0x36, 0x39, 0xE1, 0x6E, 0xC1, 0xA7, 0x77, 0xEF, + 0x27, 0x6C, 0xA3, 0xC2, 0x3D, 0x79, 0xFC, 0x8F, 0x46, 0xFD, 0x34, 0xB8, 0xA3, 0x61, 0xBD, 0x45, + 0xEA, 0xDD, 0x6E, 0xDD, 0xA6, 0x05, 0x0C, 0x0F, 0xBA, 0x1E, 0x1B, 0x09, 0x84, 0x16, 0x99, 0xFA, + 0x2E, 0x68, 0xB8, 0x4F, 0x5D, 0x4B, 0x8B, 0x3C, 0x44, 0x47, 0x2B, 0x7D, 0xD8, 0x6C, 0xC5, 0x02, + 0x59, 0x6F, 0x71, 0x64, 0x36, 0x29, 0xC3, 0xAE, 0x23, 0x0E, 0x19, 0xAB, 0x87, 0xE8, 0x21, 0x75, + 0xD0, 0xD1, 0x75, 0xF5, 0x40, 0x70, 0x31, 0x3C, 0xF5, 0xBD, 0xB8, 0x44, 0x1B, 0x22, 0xF7, 0x38, + 0xA4, 0xB4, 0x3F, 0x01, 0xA3, 0x5A, 0x6B, 0x6A, 0xB8, 0xC0, 0xFA, 0x1A, 0x35, 0xFB, 0xDE, 0xDF, + 0xCB, 0x2A, 0xDD, 0x38, 0xA1, 0x8B, 0x62, 0x3E, 0x39, 0x2C, 0xA9, 0x98, 0x55, 0xA6, 0x92, 0x06, + 0xAE, 0xF3, 0x10, 0x5D, 0xD0, 0xB1, 0xE3, 0xF9, 0xD0, 0xD7, 0x92, 0xBA, 0x93, 0x30, 0xC0, 0xDD, + 0x49, 0x07, 0x1D, 0x85, 0xD5, 0xAA, 0x76, 0xAB, 0x57, 0xED, 0x55, 0xAF, 0xBA, 0x56, 0xBD, 0xEA, + 0x7A, 0xF5, 0xAA, 0x1B, 0xD5, 0xAB, 0x6E, 0x56, 0xAF, 0xFA, 0xA2, 0x42, 0xD5, 0xD0, 0x71, 0xBD, + 0xE0, 0x74, 0xEF, 0xA0, 0x4C, 0x54, 0xF4, 0xD6, 0x1B, 0xD0, 0xFD, 0x0F, 0xA5, 0x4A, 0x00, 0xBB, + 0x6B, 0xE9, 0xCF, 0x2D, 0xA9, 0x79, 0xE5, 0xC4, 0x30, 0x8C, 0x1E, 0xCE, 0x69, 0x38, 0x60, 0x16, + 0x36, 0xA9, 0x6C, 0x1A, 0x0A, 0xB0, 0x0D, 0x9E, 0xAB, 0xAF, 0x4F, 0xB4, 0x9D, 0x63, 0x99, 0x75, + 0x0C, 0xE3, 0x6F, 0x19, 0xBD, 0xB4, 0xE0, 0xB0, 0xD6, 0xCB, 0xC7, 0x9A, 0xDF, 0xEA, 0xE3, 0x64, + 0x08, 0x5C, 0xA5, 0xB5, 0x05, 0x48, 0x1E, 0xE0, 0x64, 0x15, 0x8E, 0x2F, 0xD0, 0x01, 0x9B, 0x25, + 0x96, 0xF9, 0x65, 0x0F, 0x82, 0xF1, 0x04, 0x2C, 0x22, 0x6D, 0x34, 0x67, 0x06, 0x8B, 0x1E, 0xDC, + 0x0B, 0x3A, 0xA0, 0xDE, 0xC4, 0x02, 0x3C, 0x5B, 0x47, 0xC7, 0x50, 0x82, 0x42, 0xA8, 0x1E, 0x77, + 0xDE, 0x5B, 0xA0, 0x4F, 0x43, 0x58, 0x47, 0xC4, 0xE7, 0x6A, 0x2D, 0x1B, 0x67, 0xFF, 0x84, 0x1E, + 0xA6, 0xC9, 0x34, 0xFE, 0x0D, 0xCF, 0x93, 0x76, 0x04, 0xD0, 0x0B, 0xD4, 0xD5, 0xAF, 0xBF, 0x41, + 0xE5, 0x29, 0xDD, 0x41, 0xAF, 0x80, 0x15, 0xDA, 0x73, 0x52, 0xFB, 0x0A, 0xBC, 0x87, 0x36, 0x93, + 0x46, 0x9D, 0xF9, 0xA6, 0x29, 0x9E, 0x2E, 0xA1, 0x27, 0x60, 0x06, 0x56, 0xC9, 0xC9, 0xED, 0xE3, + 0x04, 0x4F, 0xA7, 0x24, 0xB3, 0xB3, 0x1D, 0xB2, 0xD7, 0x6B, 0xCC, 0x8D, 0x09, 0xD7, 0x57, 0xB8, + 0x0D, 0x2A, 0xC6, 0xC3, 0x6B, 0x35, 0xB8, 0xB3, 0xAA, 0x2A, 0x22, 0xE5, 0x18, 0xC8, 0x36, 0x00, + 0xD4, 0x33, 0x22, 0x9B, 0xA6, 0x2F, 0x34, 0x06, 0x95, 0x93, 0xA6, 0x02, 0xDC, 0x6C, 0xB6, 0x7D, + 0x34, 0xDC, 0x7B, 0xA3, 0x82, 0x7E, 0xF3, 0x73, 0xAE, 0xA5, 0xE3, 0x66, 0x87, 0x65, 0x59, 0xAC, + 0xF2, 0x0C, 0xED, 0x51, 0xF0, 0x7D, 0xB6, 0xE3, 0xFB, 0xFC, 0x58, 0xF8, 0xBE, 0xD8, 0xF1, 0x7D, + 0x79, 0x14, 0x7C, 0xD1, 0xC4, 0x0F, 0xEE, 0xCE, 0x29, 0x85, 0xCD, 0xC3, 0xD4, 0xB6, 0xC6, 0x4D, + 0xD6, 0x9C, 0xA4, 0xD3, 0xB4, 0x6E, 0x7A, 0x27, 0xD0, 0x16, 0xE6, 0xBB, 0xC8, 0xDC, 0xF1, 0xD6, + 0xAA, 0x13, 0x21, 0x40, 0xD8, 0x67, 0x11, 0x2B, 0xFC, 0xE7, 0xAC, 0x9B, 0x68, 0x9A, 0x5E, 0x5F, + 0x85, 0xBB, 0x33, 0xA0, 0x8A, 0xF8, 0xBA, 0x1A, 0xCF, 0xF3, 0x6C, 0xF3, 0x40, 0x72, 0xD8, 0xD7, + 0x9E, 0x4C, 0xA3, 0x9B, 0x19, 0xED, 0x81, 0x80, 0x2D, 0x4F, 0x05, 0x73, 0xE1, 0xCB, 0x0A, 0xF3, + 0xE0, 0xB8, 0x1E, 0xF3, 0x95, 0x80, 0x09, 0xDA, 0x38, 0xF7, 0x9D, 0x49, 0x07, 0xAE, 0xC7, 0x7C, + 0xD5, 0x9A, 0x35, 0x91, 0xEA, 0x11, 0x2B, 0xB0, 0xBC, 0xF6, 0x3A, 0x0E, 0x89, 0x33, 0xF2, 0x86, + 0xFE, 0x4E, 0x7D, 0x44, 0xAF, 0xE3, 0xFA, 0xAE, 0xE9, 0x2E, 0xB6, 0xB4, 0x70, 0x77, 0x71, 0x66, + 0xD1, 0xE8, 0x43, 0xB1, 0xAD, 0x62, 0x41, 0xD5, 0xD6, 0x52, 0xD6, 0x95, 0x1B, 0xBD, 0x66, 0x93, + 0x1D, 0x89, 0x1F, 0x26, 0x74, 0x87, 0xCF, 0x59, 0x57, 0xC1, 0x7D, 0x1D, 0xD6, 0x4B, 0x3B, 0x75, + 0x1B, 0x35, 0x75, 0xC2, 0xA6, 0xC5, 0x3A, 0x02, 0x3B, 0x39, 0xAC, 0x93, 0x01, 0x54, 0x88, 0xE0, + 0x4F, 0xD8, 0xB4, 0xAF, 0xB0, 0xD6, 0x2B, 0x1C, 0x9E, 0xE2, 0xCF, 0x3F, 0xC0, 0xCF, 0xF5, 0xDD, + 0x8A, 0x24, 0xAD, 0xC6, 0x33, 0x69, 0x29, 0x48, 0x19, 0x9A, 0x66, 0x25, 0x82, 0xC7, 0xC5, 0x48, + 0xF7, 0x2C, 0xD3, 0xE1, 0xC7, 0xFD, 0x5F, 0x2F, 0xB3, 0x90, 0x94, 0xA3, 0x72, 0xA1, 0x32, 0x9E, + 0xBB, 0x9D, 0x57, 0xE3, 0x82, 0xFB, 0xFE, 0x33, 0xC6, 0xC7, 0x00, 0xF2, 0xCE, 0xB9, 0xA2, 0x23, + 0x79, 0x78, 0x9E, 0x53, 0xEF, 0x50, 0x9C, 0x60, 0xA5, 0xAD, 0xE4, 0x49, 0xD6, 0xA5, 0xB9, 0xF5, + 0xC3, 0x9E, 0x28, 0xAD, 0xE4, 0x41, 0x16, 0x6C, 0x7E, 0xD7, 0x6C, 0x5B, 0x5F, 0xF5, 0xF0, 0x9F, + 0x1F, 0xD7, 0x29, 0x8D, 0x7F, 0xEB, 0x7E, 0x45, 0x17, 0x01, 0xF2, 0x02, 0xC3, 0x09, 0x2E, 0xBB, + 0x9D, 0x17, 0xEB, 0x50, 0x03, 0x7F, 0xCF, 0x00, 0x42, 0xBC, 0x66, 0xBC, 0xC0, 0x4F, 0x3B, 0x2A, + 0x6C, 0x1B, 0x7A, 0x39, 0x08, 0x4F, 0x6D, 0x24, 0xE0, 0x5F, 0xDB, 0xD6, 0x26, 0x6A, 0xB8, 0x02, + 0xD3, 0x94, 0x9B, 0xD0, 0x54, 0x27, 0x63, 0x99, 0x68, 0xB4, 0x54, 0x19, 0xAF, 0x77, 0x18, 0x15, + 0xFB, 0x92, 0x1D, 0x22, 0x2A, 0x9F, 0x7B, 0x8C, 0x0F, 0x09, 0x0F, 0xAC, 0x9D, 0xB7, 0x30, 0x7D, + 0x67, 0x87, 0xAC, 0xE7, 0xF5, 0x7A, 0x5E, 0x42, 0xAC, 0x9F, 0xD7, 0x52, 0xFA, 0xD6, 0x3B, 0x2F, + 0x7A, 0x97, 0xDD, 0x2A, 0xAC, 0x80, 0x06, 0x74, 0x8C, 0xEE, 0x17, 0x16, 0xBD, 0x01, 0x5D, 0x88, + 0x28, 0xF5, 0x67, 0x60, 0x58, 0xF2, 0x49, 0xEA, 0x22, 0xC2, 0xA9, 0x37, 0xDB, 0x7F, 0x0B, 0x3C, + 0xBF, 0x51, 0xAF, 0x37, 0x33, 0xAA, 0x83, 0xE5, 0xCF, 0x0A, 0x88, 0xCA, 0x48, 0xD5, 0xF5, 0x6E, + 0x35, 0xA3, 0x32, 0x0C, 0x83, 0xE9, 0x84, 0x84, 0xC1, 0x1D, 0xB7, 0x49, 0xE3, 0x68, 0xA8, 0x30, + 0x22, 0xB1, 0x4A, 0xA6, 0x26, 0x64, 0xC0, 0x8E, 0x58, 0x3F, 0x00, 0x22, 0x37, 0x6B, 0x66, 0x7B, + 0x89, 0x72, 0x10, 0x8C, 0x56, 0xA2, 0xF1, 0xCA, 0x3A, 0xC1, 0x5F, 0x36, 0xD9, 0xBF, 0x8C, 0x0A, + 0xD6, 0xBC, 0xBE, 0x6B, 0x34, 0xE5, 0xCC, 0x81, 0xF6, 0xAF, 0x5E, 0xAF, 0xB2, 0x1A, 0xA5, 0x64, + 0x28, 0xBD, 0xD3, 0x50, 0xAD, 0xD7, 0x75, 0x43, 0xCC, 0x23, 0x8E, 0x0C, 0xF3, 0x1A, 0xF8, 0x71, + 0x18, 0x8C, 0xEA, 0x25, 0x38, 0xA4, 0xE5, 0xCE, 0x74, 0x91, 0x6F, 0x5E, 0xD4, 0x32, 0x66, 0xAD, + 0x2A, 0xB1, 0x6F, 0x42, 0x72, 0xC0, 0x1E, 0x85, 0x61, 0x90, 0xD2, 0xE9, 0xF9, 0x23, 0xCF, 0xA7, + 0xFC, 0x1B, 0x18, 0xFC, 0x49, 0x29, 0xDC, 0x55, 0x60, 0xC8, 0x2E, 0xFF, 0x77, 0x06, 0xA3, 0xCF, + 0x26, 0x1A, 0xCF, 0x1F, 0x2A, 0xE1, 0x3D, 0x96, 0xFD, 0x5E, 0xB6, 0xD2, 0x2C, 0x93, 0x81, 0x9F, + 0x36, 0xCB, 0xDD, 0xBA, 0x67, 0xEB, 0xCC, 0xBC, 0x2F, 0x62, 0x7E, 0xCD, 0xC2, 0x7E, 0x64, 0xEB, + 0xCC, 0xD2, 0x8D, 0x20, 0x76, 0x64, 0xB3, 0xBC, 0xFD, 0x5D, 0xA6, 0xCA, 0x8C, 0x9D, 0x10, 0xDE, + 0x94, 0x13, 0xD0, 0xCF, 0xD4, 0xFF, 0x62, 0x5B, 0x9F, 0x5A, 0x2B, 0xB6, 0xA3, 0x70, 0x30, 0xBB, + 0x8F, 0x22, 0x13, 0x73, 0x62, 0xF3, 0x26, 0xD8, 0x02, 0x53, 0x66, 0x5B, 0xEE, 0x89, 0x18, 0x48, + 0xDB, 0x82, 0x2F, 0x89, 0x8E, 0x9C, 0x03, 0x62, 0x80, 0x3E, 0x47, 0x3B, 0x48, 0x1E, 0x5E, 0x69, + 0xC0, 0x54, 0xBC, 0xB3, 0x6C, 0x31, 0x45, 0x60, 0x89, 0x46, 0x23, 0xB2, 0x4A, 0x98, 0x0B, 0x8D, + 0x5C, 0x4D, 0xE3, 0x58, 0x75, 0x80, 0x57, 0x8B, 0xBD, 0x88, 0xC3, 0x07, 0xCB, 0x34, 0x25, 0x76, + 0x49, 0xC2, 0x79, 0x91, 0x84, 0x31, 0x68, 0x16, 0x9C, 0x0C, 0x9C, 0x78, 0x70, 0x43, 0x1A, 0x14, + 0xC7, 0xB9, 0x6D, 0xAE, 0xD3, 0xE2, 0x5D, 0x4E, 0xA2, 0x68, 0x4A, 0xC9, 0x9D, 0x07, 0x73, 0xE3, + 0xC9, 0xA1, 0x0C, 0x7D, 0x69, 0x56, 0x3F, 0x6E, 0x28, 0x0E, 0x4D, 0xA9, 0xD8, 0x0B, 0x11, 0x5B, + 0xF8, 0x74, 0xDD, 0x50, 0x44, 0xB6, 0x37, 0x1A, 0xC1, 0x7E, 0x66, 0x38, 0x1D, 0x61, 0x00, 0x11, + 0xB3, 0xF1, 0x5C, 0x7C, 0x78, 0xE2, 0xC8, 0x6C, 0xB2, 0x21, 0xB9, 0x19, 0x3A, 0xC8, 0x9A, 0xDB, + 0xD6, 0x9B, 0x8F, 0x2F, 0xA3, 0xEF, 0xB6, 0xD0, 0xAC, 0xBE, 0x3C, 0xA7, 0x41, 0x4F, 0x11, 0x46, + 0x23, 0x89, 0xE5, 0x2D, 0xDB, 0x9D, 0x72, 0x57, 0x19, 0x1E, 0xFB, 0x0E, 0xA9, 0x58, 0xFB, 0x19, + 0x3B, 0xE1, 0x7A, 0x7D, 0x3B, 0xA9, 0xCE, 0x3C, 0x8D, 0xC2, 0xBD, 0x76, 0x0A, 0x93, 0x7E, 0xB6, + 0xA6, 0x20, 0xE0, 0x30, 0xF0, 0xEB, 0x31, 0x99, 0xF2, 0xB0, 0x1B, 0x50, 0x18, 0x07, 0xD8, 0x7D, + 0x47, 0x71, 0x07, 0x49, 0xBD, 0x5B, 0x10, 0xFE, 0x9D, 0x13, 0x29, 0xB6, 0x00, 0x24, 0x70, 0x1D, + 0x3C, 0x93, 0xEB, 0x37, 0x3D, 0x68, 0x47, 0x65, 0x53, 0x6E, 0x74, 0x6A, 0x2A, 0xD7, 0xE3, 0x20, + 0x1C, 0x50, 0x10, 0x19, 0x0B, 0x9F, 0x16, 0x04, 0xA4, 0xA2, 0x64, 0xA7, 0xDC, 0xD4, 0x89, 0xA6, + 0x21, 0x2B, 0xC7, 0xA9, 0xF6, 0xED, 0xDF, 0xA1, 0x17, 0xAE, 0x17, 0x4D, 0x50, 0x34, 0x2C, 0x10, + 0x1D, 0x4F, 0x69, 0xC8, 0xC1, 0x34, 0x8A, 0x83, 0x31, 0xFF, 0x1B, 0x76, 0x60, 0xC8, 0x9E, 0x7A, + 0x53, 0xB1, 0xBF, 0x43, 0x11, 0x81, 0x80, 0x16, 0x8C, 0x87, 0x0A, 0x9D, 0xF8, 0x0B, 0x03, 0x3A, + 0x46, 0x6B, 0x33, 0x37, 0x14, 0x66, 0xAB, 0xF6, 0xD9, 0x69, 0xAB, 0x1A, 0xE7, 0xC7, 0x7D, 0x05, + 0xCB, 0x85, 0xF9, 0x86, 0x06, 0x73, 0x83, 0xA4, 0x3E, 0xEE, 0x2D, 0xDF, 0x05, 0xC3, 0x21, 0x3B, + 0xE5, 0x59, 0x08, 0xCA, 0x59, 0x1C, 0x7A, 0x13, 0x79, 0x24, 0xBB, 0x38, 0x24, 0x79, 0x1C, 0x3B, + 0x27, 0x24, 0x23, 0x76, 0x69, 0x41, 0x8A, 0x8E, 0xEE, 0x61, 0x5E, 0xF6, 0x9D, 0xD1, 0xF9, 0x94, + 0x99, 0xD8, 0x85, 0x60, 0x9D, 0xC3, 0x4E, 0x20, 0x3E, 0xA7, 0xE1, 0x35, 0x1D, 0xC4, 0x07, 0x41, + 0x88, 0x01, 0x15, 0x78, 0x3A, 0x3B, 0x37, 0x54, 0x36, 0xC5, 0xF1, 0x19, 0x7E, 0x4E, 0x08, 0x8E, + 0x1F, 0x53, 0xDF, 0x77, 0x92, 0x40, 0x02, 0x46, 0xE1, 0xFC, 0xD0, 0xA6, 0x71, 0x70, 0x72, 0xFA, + 0x71, 0x8C, 0x3E, 0xC0, 0x3D, 0x74, 0xF0, 0x8C, 0x17, 0xD7, 0x88, 0xBD, 0x8B, 0xF3, 0x79, 0x94, + 0x34, 0x81, 0xC4, 0x6D, 0x0F, 0x8E, 0x3E, 0x8C, 0xFE, 0x57, 0x97, 0x87, 0xBC, 0x44, 0xBA, 0xD1, + 0xCC, 0xD2, 0x78, 0x30, 0xD9, 0xC7, 0xA9, 0x48, 0x6B, 0xE1, 0x66, 0xBF, 0xC9, 0x7A, 0x32, 0x96, + 0x40, 0x2D, 0x73, 0x6F, 0x06, 0x13, 0xDB, 0x77, 0x8E, 0x19, 0x96, 0x48, 0xB8, 0xA4, 0x91, 0x05, + 0x30, 0x2F, 0xAA, 0x37, 0x53, 0x58, 0xB8, 0x02, 0x4C, 0x34, 0xC2, 0xEE, 0x8A, 0x49, 0x2D, 0x8A, + 0x1F, 0x60, 0x3E, 0x41, 0x36, 0x8C, 0xD8, 0x9D, 0x9F, 0x9A, 0x1F, 0xF8, 0xB4, 0xA6, 0xDF, 0x69, + 0x61, 0xB1, 0x15, 0xE5, 0x2D, 0xAF, 0x46, 0xC1, 0xE0, 0x1B, 0x6F, 0x0A, 0x4B, 0xA7, 0x90, 0xA2, + 0x29, 0x3F, 0xE8, 0xFF, 0x42, 0x02, 0x3E, 0x4D, 0x88, 0xB0, 0x02, 0x16, 0xB6, 0xAB, 0xC0, 0x16, + 0x37, 0x0D, 0x92, 0x3B, 0x3C, 0xFC, 0xFA, 0x01, 0xAB, 0x8A, 0x8D, 0x15, 0xB7, 0xCD, 0xEA, 0xEA, + 0x49, 0x3A, 0xA1, 0x27, 0x75, 0x07, 0xA3, 0x48, 0x5C, 0xAA, 0xC1, 0x6B, 0x05, 0x49, 0x64, 0xE9, + 0xFF, 0x9D, 0xC2, 0xE2, 0x97, 0xDF, 0x1E, 0x09, 0x42, 0x58, 0x14, 0x34, 0x6A, 0x6D, 0x75, 0x5F, + 0xD7, 0x22, 0xFC, 0x4F, 0xD7, 0x88, 0x43, 0xB4, 0x85, 0x2B, 0x2B, 0x18, 0x84, 0xDF, 0x01, 0xBE, + 0x3F, 0x7F, 0xAE, 0x4E, 0x60, 0x0A, 0xC1, 0xB0, 0xD3, 0x52, 0x1A, 0xFC, 0x76, 0xFF, 0xB5, 0x2D, + 0x62, 0x8F, 0xD9, 0x41, 0x96, 0x5E, 0xC2, 0x57, 0x14, 0xAC, 0x30, 0x11, 0x59, 0x66, 0xE5, 0xD9, + 0xB2, 0x2C, 0x3C, 0x13, 0xCF, 0x02, 0x4E, 0xD8, 0x64, 0xCC, 0x5D, 0x7F, 0xEC, 0x0F, 0x5E, 0x3E, + 0x2B, 0x53, 0x52, 0x5F, 0xE2, 0x2B, 0x3F, 0x88, 0x1B, 0x6D, 0xD3, 0xA1, 0xD8, 0x94, 0xFC, 0x62, + 0xA4, 0x24, 0x2B, 0x8D, 0xA7, 0xE5, 0x96, 0x5C, 0x60, 0x66, 0xF9, 0x65, 0xA3, 0x43, 0x75, 0x9A, + 0x57, 0xA2, 0x43, 0xF3, 0xC1, 0x03, 0x12, 0x8C, 0x3E, 0xAE, 0xB7, 0xEA, 0xF0, 0xAF, 0x02, 0x0A, + 0xE8, 0x98, 0x0D, 0x7F, 0xE2, 0x54, 0x9F, 0x89, 0x86, 0xC4, 0x57, 0x6F, 0xA3, 0x43, 0x16, 0xDA, + 0x69, 0x31, 0x96, 0x88, 0x3E, 0x4C, 0xEE, 0x43, 0xBE, 0xC8, 0x4C, 0x51, 0x65, 0xAE, 0xC1, 0xE1, + 0x28, 0x6C, 0x68, 0xE5, 0xCF, 0xA4, 0x5F, 0x57, 0xB9, 0x06, 0x04, 0x9D, 0x4B, 0x2F, 0x0A, 0x35, + 0x64, 0x61, 0x8B, 0xF4, 0x3A, 0x9D, 0x4E, 0x33, 0x6B, 0x32, 0x98, 0x67, 0x02, 0x4C, 0x45, 0x8B, + 0xB0, 0x75, 0x31, 0xFA, 0x21, 0x34, 0x13, 0x82, 0xFD, 0xE2, 0xDE, 0x0B, 0x63, 0xB9, 0x89, 0x67, + 0x27, 0xAC, 0xE0, 0x15, 0xC1, 0x6E, 0x27, 0xAD, 0x75, 0x14, 0x83, 0x11, 0x75, 0x42, 0x89, 0xA3, + 0x1A, 0xE0, 0x7A, 0x96, 0xC8, 0xFE, 0x74, 0x30, 0x80, 0xE5, 0x31, 0x23, 0x53, 0xB9, 0x05, 0x91, + 0xC0, 0x11, 0xE5, 0x36, 0x12, 0x45, 0x11, 0x27, 0x12, 0xDA, 0x22, 0x70, 0x9D, 0xBA, 0x14, 0x78, + 0x55, 0xB8, 0x16, 0x0A, 0x61, 0x3D, 0x2E, 0xA9, 0x13, 0x9C, 0x94, 0x0B, 0xE4, 0xE4, 0xA6, 0xE4, + 0xB5, 0xD8, 0x7A, 0xE0, 0xD6, 0x8D, 0x9D, 0x7F, 0x2B, 0x0A, 0x96, 0xDD, 0xD2, 0xC8, 0xFD, 0x1A, + 0x7A, 0x91, 0x70, 0x92, 0x6A, 0x87, 0xCC, 0x96, 0x34, 0x84, 0x43, 0x29, 0xA1, 0x6C, 0xBB, 0xB8, + 0x15, 0xC6, 0x3D, 0x69, 0x3E, 0x28, 0xAB, 0x17, 0x83, 0xEF, 0x8C, 0xFE, 0xA1, 0xED, 0x63, 0x8C, + 0x8D, 0xD7, 0xCC, 0x14, 0x66, 0xD0, 0x95, 0xD1, 0x67, 0xE9, 0x52, 0x31, 0x85, 0x96, 0xE3, 0x4B, + 0x26, 0x72, 0x9B, 0xA4, 0x85, 0x8C, 0x52, 0x6D, 0x57, 0xD4, 0x48, 0x95, 0x5F, 0x4D, 0xA8, 0xB4, + 0xB8, 0x3F, 0x93, 0x44, 0x2A, 0x98, 0x4A, 0xA3, 0xC8, 0xDB, 0x98, 0x71, 0x2D, 0x9A, 0xC2, 0x2E, + 0x5D, 0x22, 0x5C, 0x76, 0x4C, 0xCA, 0x6F, 0x49, 0x2A, 0xF0, 0xD0, 0x62, 0x8A, 0xDD, 0xDF, 0x2F, + 0x38, 0xD7, 0x28, 0x9A, 0xC8, 0xCA, 0x84, 0x79, 0x95, 0x65, 0x2D, 0xBC, 0x76, 0xD7, 0xDB, 0xD8, + 0x00, 0x62, 0x59, 0x04, 0xE1, 0x15, 0x85, 0xFF, 0xC5, 0x77, 0x94, 0xFA, 0xA4, 0xC3, 0x76, 0xD0, + 0x50, 0x56, 0x83, 0xC2, 0x41, 0x30, 0x1A, 0x39, 0x93, 0x88, 0xBE, 0x39, 0xEB, 0xF7, 0x79, 0xBC, + 0x25, 0xDB, 0x34, 0x1A, 0xE3, 0x53, 0x54, 0xEA, 0xF3, 0x45, 0x29, 0xD8, 0x8B, 0x01, 0x8F, 0x90, + 0x1B, 0x38, 0x21, 0x55, 0x2D, 0x81, 0x28, 0xB0, 0xC9, 0x1B, 0xF9, 0x27, 0xA5, 0x06, 0x35, 0x79, + 0x4B, 0x9B, 0x5E, 0x80, 0xD5, 0x5B, 0x61, 0xA5, 0x2B, 0x38, 0x9B, 0xCF, 0xD8, 0x64, 0x3A, 0x29, + 0x6A, 0xC0, 0xF5, 0x28, 0x8B, 0x40, 0xED, 0x2B, 0x4C, 0xE4, 0x1E, 0xAE, 0xC0, 0x8E, 0x3D, 0x3A, + 0x72, 0xA3, 0x46, 0x7A, 0x97, 0xEA, 0x40, 0x30, 0x41, 0xAC, 0x80, 0x06, 0x69, 0xF0, 0xA4, 0xC9, + 0x9E, 0x84, 0xA9, 0x62, 0x1B, 0x2E, 0xE2, 0x58, 0x81, 0xDB, 0x72, 0x2F, 0x8F, 0xD8, 0xE5, 0x3A, + 0x25, 0xB7, 0x75, 0x2A, 0x12, 0x6C, 0x3A, 0xF4, 0xA3, 0x68, 0xD6, 0x76, 0x28, 0x4A, 0xD1, 0x14, + 0x7E, 0xAD, 0xD6, 0x7A, 0x3F, 0x8D, 0x05, 0x86, 0xA6, 0x2C, 0x32, 0xB8, 0x52, 0xBB, 0xBE, 0x1A, + 0x1F, 0x0C, 0x2D, 0x45, 0xBC, 0x70, 0xA5, 0xB6, 0xE7, 0xE7, 0x0A, 0x8B, 0xD4, 0x7D, 0x50, 0xB5, + 0xD6, 0xB0, 0x9F, 0x8B, 0x54, 0x00, 0xF8, 0x67, 0xA5, 0x96, 0x2C, 0x3A, 0x29, 0x6D, 0xC9, 0x56, + 0x44, 0x15, 0x7B, 0xFB, 0x10, 0xC5, 0x74, 0xAC, 0xF4, 0x96, 0xFF, 0x5D, 0xA9, 0xED, 0x91, 0x1E, + 0x01, 0x0D, 0xAD, 0x93, 0x98, 0xE8, 0x4A, 0xED, 0xCF, 0x3E, 0x28, 0xEC, 0xC2, 0x30, 0x69, 0xD9, + 0x8A, 0x5B, 0x64, 0xD3, 0x84, 0x70, 0xED, 0x15, 0xAA, 0x48, 0x78, 0xCB, 0x8C, 0xD9, 0xE0, 0xC1, + 0xAB, 0x69, 0x2C, 0x18, 0xBA, 0x98, 0x5B, 0x78, 0xFF, 0x76, 0x7D, 0x4B, 0xB1, 0x20, 0x5D, 0x8C, + 0x21, 0x5E, 0xDF, 0x82, 0x96, 0x4E, 0xE8, 0x0C, 0x60, 0xEF, 0x1B, 0xA9, 0x26, 0x44, 0xD7, 0xF6, + 0x66, 0x82, 0x1A, 0xF5, 0x31, 0x0F, 0x2F, 0x37, 0x57, 0x16, 0x87, 0x4F, 0x0B, 0x6F, 0x4A, 0x76, + 0x3A, 0xDD, 0x5E, 0x8B, 0x5D, 0xF5, 0xCC, 0x1A, 0x31, 0x5E, 0xCA, 0x4C, 0x59, 0xB7, 0xC3, 0x1A, + 0xD8, 0x06, 0x8E, 0xE4, 0x25, 0xA2, 0x3C, 0xC0, 0xFB, 0xCB, 0x14, 0xAA, 0xB0, 0x91, 0xDB, 0x90, + 0x04, 0xDA, 0xC8, 0xF1, 0x7C, 0xF8, 0x70, 0x5B, 0x63, 0x46, 0x74, 0xAB, 0x93, 0x6B, 0x43, 0xB7, + 0x3A, 0x15, 0xD0, 0x66, 0x40, 0x1F, 0x9C, 0xBD, 0x5F, 0x08, 0x72, 0xB2, 0x50, 0xC8, 0x73, 0xB2, + 0x88, 0xD5, 0xB5, 0xBA, 0x74, 0xB0, 0xC9, 0xDA, 0x4F, 0x1B, 0x5D, 0x1E, 0x38, 0xC0, 0x9A, 0xF0, + 0x6D, 0x10, 0xC5, 0x42, 0xEC, 0x1B, 0x19, 0xB1, 0x6F, 0xE4, 0x88, 0x3D, 0xDB, 0xED, 0x9C, 0xAE, + 0x67, 0xF1, 0xE1, 0xC8, 0xE5, 0xF8, 0xB6, 0xF0, 0xC7, 0x44, 0xC9, 0x3E, 0xCE, 0x86, 0xCA, 0xD6, + 0x37, 0x76, 0xC5, 0x93, 0x3B, 0x2F, 0x18, 0xAE, 0xB5, 0x8E, 0x89, 0x68, 0xAD, 0x33, 0x77, 0xDF, + 0x78, 0x47, 0x3E, 0x46, 0x34, 0xB4, 0x75, 0x10, 0xBF, 0x33, 0xCB, 0x12, 0x7F, 0xEB, 0x0D, 0x83, + 0xF6, 0x20, 0x18, 0xE3, 0x5F, 0xF8, 0x95, 0x8C, 0x91, 0x80, 0x29, 0x4C, 0x27, 0x30, 0xF6, 0x3D, + 0x98, 0xF9, 0xC7, 0x8E, 0x37, 0x22, 0x30, 0x41, 0xB1, 0x9B, 0x70, 0x8F, 0x40, 0xC2, 0xDD, 0xDD, + 0x5D, 0x7B, 0xA9, 0x64, 0x58, 0x17, 0x80, 0x7C, 0x25, 0xCF, 0xE9, 0x2A, 0xD0, 0x30, 0x95, 0x21, + 0x6A, 0xAF, 0x4A, 0x5A, 0x0B, 0x7D, 0xE9, 0x75, 0x3B, 0xDD, 0x4A, 0xAD, 0x34, 0xC9, 0xD7, 0xAE, + 0x46, 0x6E, 0x78, 0xD9, 0x9F, 0x38, 0xE1, 0xB7, 0xE3, 0xA9, 0xDF, 0xAD, 0xCD, 0x08, 0xE1, 0xFC, + 0xD3, 0x2C, 0x94, 0x4A, 0xAE, 0xE3, 0xD5, 0x8C, 0xFF, 0x8D, 0xFF, 0xCC, 0xDA, 0x55, 0x04, 0x00, + 0x28, 0x01, 0x44, 0xCD, 0x70, 0x7D, 0xA9, 0x75, 0x3F, 0x84, 0x8E, 0x1F, 0x8D, 0xBD, 0xF8, 0xCD, + 0x9B, 0xBD, 0x9A, 0xFD, 0xF0, 0xC9, 0x70, 0x43, 0xE0, 0xDA, 0xE5, 0xE3, 0xFE, 0xAF, 0xF2, 0x40, + 0xD9, 0x70, 0xC0, 0x4C, 0xAF, 0xEE, 0xC5, 0x12, 0xB3, 0xD8, 0xD7, 0x50, 0xE7, 0x81, 0xBE, 0x9E, + 0xFB, 0x7F, 0x76, 0x30, 0x68, 0xE1, 0x2B, 0x8F, 0x5F, 0x18, 0xB3, 0xD5, 0x37, 0x62, 0xF0, 0xDC, + 0x88, 0xC0, 0xF6, 0x37, 0x64, 0x4E, 0x22, 0x76, 0x3A, 0x82, 0xD5, 0x72, 0xF7, 0xD7, 0x0A, 0xDA, + 0xBC, 0xBD, 0x75, 0x36, 0x98, 0x48, 0x69, 0xC4, 0x7D, 0x0D, 0xC6, 0xE0, 0xD0, 0xD6, 0xCA, 0x4A, + 0xD3, 0xA6, 0xC1, 0x17, 0x16, 0xD0, 0xA1, 0xCC, 0x4E, 0x96, 0xEB, 0x54, 0x3F, 0x15, 0xDD, 0x78, + 0x94, 0x86, 0xD8, 0x72, 0xD2, 0x60, 0xB1, 0xC3, 0x39, 0xA6, 0x31, 0xB8, 0x02, 0x71, 0xDF, 0xB2, + 0x89, 0x09, 0xA6, 0xFB, 0xC0, 0x77, 0x71, 0xEC, 0x6D, 0x76, 0xF0, 0xFF, 0xB6, 0x39, 0x62, 0xB3, + 0x83, 0x56, 0x0B, 0xCA, 0xD4, 0x11, 0xBA, 0x9F, 0x7B, 0x89, 0xAB, 0x18, 0xE1, 0x79, 0x10, 0x79, + 0xF8, 0xDF, 0xBD, 0xC1, 0x60, 0x0A, 0x26, 0xF0, 0x81, 0x1B, 0xC9, 0x8D, 0x76, 0xD7, 0x82, 0xB8, + 0xDB, 0x66, 0x98, 0x37, 0xDA, 0x05, 0x98, 0x75, 0xD4, 0x9A, 0x9A, 0xB3, 0xA3, 0x8A, 0x23, 0x16, + 0x5F, 0xDB, 0xD2, 0x92, 0xD1, 0x98, 0x04, 0xDB, 0x5B, 0x7D, 0xC6, 0x56, 0x4A, 0xA2, 0x9A, 0x6A, + 0xAD, 0xBE, 0x40, 0x2B, 0x25, 0x89, 0x4D, 0x79, 0xA3, 0x77, 0x4E, 0x8C, 0x2E, 0x0A, 0xD6, 0xAC, + 0xDD, 0xD9, 0xEA, 0xF4, 0xB6, 0xD6, 0x5F, 0x6C, 0x55, 0x68, 0x16, 0xF8, 0x43, 0xD1, 0x8E, 0xA7, + 0xE5, 0x79, 0xB9, 0xD1, 0xD9, 0x78, 0xB1, 0xD9, 0x2D, 0x6F, 0xB9, 0x37, 0x8A, 0xBD, 0x78, 0xEA, + 0xB2, 0x15, 0xD7, 0xC6, 0x26, 0xE0, 0x7C, 0x59, 0x8C, 0x4E, 0x38, 0xE6, 0xDF, 0x52, 0x6F, 0x78, + 0x83, 0xE8, 0x3A, 0x55, 0x6A, 0x1B, 0x6E, 0x7C, 0xBD, 0xD5, 0xF7, 0xA2, 0x93, 0x54, 0x1D, 0x5C, + 0x8E, 0xAA, 0x16, 0x92, 0x50, 0xAC, 0x6D, 0xA0, 0x4D, 0x4D, 0xCB, 0x85, 0xFF, 0xF2, 0xF3, 0xB2, + 0x9C, 0xF1, 0xB5, 0x80, 0x58, 0x17, 0x13, 0xED, 0xDC, 0xE2, 0x9D, 0x5D, 0xC4, 0xB3, 0x89, 0x39, + 0xDB, 0x34, 0x6B, 0x11, 0xF4, 0xB1, 0xF9, 0xA2, 0xC3, 0x7E, 0x5A, 0x24, 0xF9, 0x25, 0xB1, 0x05, + 0xB2, 0x0C, 0x0D, 0x81, 0xF8, 0xB5, 0x9A, 0x19, 0x2A, 0x43, 0xFC, 0xF9, 0xF7, 0x42, 0xFC, 0xE5, + 0xB1, 0x10, 0x5B, 0x6E, 0xEB, 0x56, 0x52, 0xD5, 0x0A, 0x26, 0x72, 0x7E, 0x33, 0x39, 0x93, 0xA9, + 0xB4, 0xF3, 0x31, 0x3D, 0x9D, 0x82, 0x09, 0xF4, 0x17, 0x1A, 0xE2, 0x55, 0x53, 0xF8, 0xB6, 0xCA, + 0xA2, 0x70, 0xD2, 0x70, 0xBC, 0xCA, 0x42, 0x50, 0x46, 0xC8, 0x4A, 0xB7, 0xDB, 0x59, 0x5B, 0x6F, + 0x91, 0x97, 0x2F, 0xB5, 0x9D, 0x27, 0xFF, 0x8C, 0x02, 0xC0, 0x82, 0x8A, 0x93, 0x4F, 0x0E, 0x4A, + 0x73, 0x6C, 0xAD, 0x60, 0xAA, 0xB4, 0x4E, 0x8B, 0x88, 0xFF, 0x28, 0x38, 0x37, 0x84, 0xD0, 0xD9, + 0x2F, 0x0B, 0xE9, 0x5A, 0xDE, 0xE8, 0x5C, 0xE9, 0x75, 0xC0, 0x20, 0x30, 0xBF, 0x7B, 0x5B, 0xC3, + 0xCD, 0x3E, 0x20, 0x6E, 0xF6, 0xCB, 0xAC, 0xEA, 0xA6, 0xC4, 0xD1, 0x58, 0x36, 0x8A, 0xC9, 0x19, + 0x7A, 0xB2, 0x60, 0xCC, 0xFA, 0x9A, 0x0B, 0x37, 0x56, 0x1C, 0x40, 0x66, 0xD3, 0x38, 0xC3, 0xC6, + 0x6A, 0xA6, 0xC5, 0x4A, 0x16, 0xE7, 0xAC, 0x1B, 0xC7, 0x6A, 0xE8, 0x6C, 0x7D, 0x5C, 0x60, 0xF3, + 0xB8, 0x0C, 0xA4, 0x6C, 0x0B, 0xB0, 0x0C, 0xB4, 0x33, 0xCC, 0xF0, 0xB9, 0x22, 0xCE, 0xD9, 0xB5, + 0x55, 0x81, 0x60, 0xDF, 0xB9, 0x55, 0x69, 0x29, 0x77, 0x52, 0xB5, 0x39, 0xDA, 0x65, 0x37, 0x50, + 0xC5, 0x2D, 0x2D, 0xFB, 0x45, 0xF7, 0xCE, 0x8F, 0xEF, 0xFC, 0xDE, 0x3C, 0x30, 0x38, 0xF6, 0x4F, + 0x17, 0x1B, 0x77, 0x17, 0xC1, 0xFA, 0xDB, 0xAC, 0x30, 0x92, 0x2D, 0x88, 0x1A, 0xFA, 0x51, 0xB2, + 0x15, 0x59, 0x56, 0x7A, 0x0E, 0xDD, 0x2A, 0xE4, 0xC7, 0x9E, 0x94, 0x58, 0x08, 0x19, 0x47, 0xC7, + 0xE2, 0xD4, 0x14, 0x20, 0x87, 0xEC, 0xEE, 0xB1, 0x70, 0x08, 0x7E, 0x08, 0xBE, 0x51, 0xDC, 0x0E, + 0xB1, 0xCA, 0xDB, 0xB6, 0xAB, 0x5F, 0x53, 0x9A, 0x5C, 0xBD, 0xB0, 0xDD, 0x01, 0xB3, 0x3A, 0x2A, + 0x8B, 0xB1, 0xC1, 0x88, 0xD9, 0xE4, 0xFF, 0x4F, 0x46, 0xCD, 0xDA, 0x66, 0x9E, 0xDF, 0xF2, 0x7C, + 0xA1, 0xE1, 0x52, 0x4A, 0x49, 0x46, 0x01, 0x65, 0x38, 0xCC, 0x5F, 0xE8, 0xC3, 0x05, 0xF5, 0xE9, + 0x9D, 0x33, 0xAA, 0xE5, 0x47, 0x8E, 0x1A, 0xBA, 0xC2, 0xDD, 0xEC, 0x15, 0xB4, 0xA4, 0x74, 0xC3, + 0x9A, 0x17, 0x90, 0xA3, 0x88, 0x5C, 0x3B, 0x9A, 0x2C, 0x30, 0xD0, 0xDE, 0x78, 0xFA, 0xD9, 0xB9, + 0xE3, 0x4E, 0xCD, 0xB5, 0xCD, 0x1C, 0x77, 0x2D, 0x33, 0x5A, 0x9B, 0xC6, 0x64, 0xD6, 0x2F, 0xC8, + 0x2A, 0x62, 0x47, 0x74, 0xEE, 0xC5, 0x83, 0x1B, 0x9C, 0x39, 0xB7, 0xF2, 0x3C, 0xA8, 0x50, 0xC2, + 0xB1, 0x6D, 0x2D, 0x8C, 0xEC, 0x02, 0x5A, 0xB2, 0x15, 0xC2, 0x4B, 0x5C, 0x1F, 0xBC, 0xB4, 0x62, + 0x83, 0xCF, 0x1C, 0x1D, 0xFB, 0xA5, 0x0A, 0x3E, 0x43, 0xA4, 0x98, 0x71, 0xA4, 0xCC, 0x2F, 0x7F, + 0xE7, 0x5D, 0x7B, 0x67, 0x80, 0x31, 0x08, 0xBF, 0x75, 0xFA, 0xFD, 0x93, 0x43, 0xCE, 0xEB, 0x0D, + 0x95, 0x20, 0xBE, 0x33, 0xCF, 0x9B, 0x15, 0x10, 0x49, 0xBE, 0x73, 0xDA, 0x86, 0xE6, 0xDC, 0x89, + 0x22, 0xF8, 0xC5, 0x7D, 0x7C, 0x54, 0xDD, 0xA7, 0xE9, 0x51, 0xF7, 0xE9, 0x7A, 0xD4, 0x7B, 0x9A, + 0x1E, 0xF5, 0x9E, 0xAE, 0x47, 0x6B, 0x4F, 0xD3, 0xA3, 0xB5, 0x25, 0xF6, 0xC8, 0x98, 0xE3, 0x6E, + 0x63, 0xF3, 0x80, 0x04, 0xE7, 0x4E, 0xAD, 0x82, 0xB9, 0x30, 0x2E, 0x3B, 0x41, 0x99, 0xC8, 0x26, + 0xE9, 0x7A, 0x74, 0x73, 0x63, 0x63, 0x2D, 0x73, 0x76, 0xC2, 0x3E, 0x16, 0x13, 0xFB, 0xDD, 0x4E, + 0xF2, 0x47, 0x77, 0x32, 0x07, 0x51, 0x49, 0xAB, 0x65, 0xD1, 0xC5, 0xCF, 0xCF, 0xC4, 0x25, 0xD7, + 0xD3, 0x69, 0x4C, 0xEF, 0xB3, 0x6C, 0xC5, 0x73, 0x4C, 0x83, 0x91, 0xF0, 0xE9, 0xC3, 0xC1, 0x39, + 0xE1, 0x15, 0xD8, 0xB9, 0x16, 0x2F, 0x20, 0x03, 0xC7, 0x27, 0x7E, 0xC0, 0x08, 0xE1, 0x6D, 0x5C, + 0xE2, 0xC4, 0x78, 0x04, 0x41, 0x22, 0xF4, 0xEE, 0xC6, 0x1E, 0x3B, 0x7E, 0xCC, 0x21, 0x4B, 0xCE, + 0x84, 0xEC, 0xC8, 0xD5, 0x9C, 0x09, 0x6D, 0xE1, 0xCB, 0x25, 0x8C, 0x93, 0x27, 0x73, 0xCE, 0x3D, + 0x34, 0xC1, 0x90, 0xA8, 0xCB, 0xB1, 0xE7, 0x43, 0x1F, 0x23, 0xCE, 0xB9, 0x6E, 0x67, 0xA3, 0xDB, + 0xEB, 0x64, 0xD6, 0xDF, 0xDD, 0x16, 0x7C, 0x6F, 0xF5, 0xF4, 0x7D, 0xA1, 0x76, 0x2C, 0x5C, 0x7C, + 0x1A, 0xC6, 0xD1, 0xBD, 0x63, 0xCB, 0x9E, 0xE5, 0x22, 0xAC, 0x70, 0x30, 0x63, 0xED, 0xEB, 0x66, + 0x87, 0xFC, 0x99, 0xF4, 0xD6, 0x73, 0x0F, 0x29, 0x72, 0x28, 0xD6, 0x9B, 0x7D, 0xB7, 0x1D, 0x4F, + 0x6A, 0x71, 0xBA, 0xD5, 0xA4, 0x91, 0x36, 0x39, 0x81, 0xAD, 0x73, 0x08, 0x8B, 0x44, 0xA1, 0xC7, + 0x59, 0xC6, 0x6C, 0x2E, 0x85, 0x25, 0x76, 0x84, 0x1D, 0xF3, 0xB8, 0x40, 0x1E, 0xDE, 0x17, 0x2D, + 0xBD, 0x8A, 0x53, 0xAF, 0xAD, 0xAE, 0x26, 0xCC, 0x11, 0xB0, 0x0E, 0xDF, 0x1E, 0x9C, 0x97, 0x2C, + 0xBC, 0x54, 0x0E, 0x9D, 0x9C, 0xEF, 0xF1, 0xF3, 0xB9, 0x14, 0xC2, 0xC9, 0x79, 0x4D, 0xE1, 0x8A, + 0xEF, 0xFB, 0x6D, 0xE5, 0xFF, 0x2A, 0x73, 0x8E, 0x72, 0xB3, 0xAF, 0x95, 0x60, 0x38, 0x3C, 0xEB, + 0x3F, 0x36, 0x8A, 0x37, 0x3C, 0xB1, 0xFF, 0x63, 0xA3, 0xE9, 0x4F, 0xAF, 0xE0, 0xDF, 0xA5, 0x62, + 0x11, 0x3A, 0x2B, 0x31, 0xBC, 0x8D, 0xE3, 0x89, 0xB0, 0xBC, 0x9D, 0xAC, 0xE5, 0xED, 0x58, 0x2D, + 0xEF, 0x5C, 0x88, 0xCE, 0x96, 0x89, 0x47, 0x1F, 0xB2, 0x1F, 0x06, 0xE2, 0x8C, 0x51, 0x36, 0xA8, + 0x76, 0x9E, 0x25, 0x27, 0x21, 0x49, 0x21, 0x80, 0x99, 0x75, 0x0E, 0x3A, 0x2A, 0x4C, 0x10, 0x68, + 0x43, 0x86, 0x8F, 0x58, 0x1C, 0x07, 0x21, 0x4C, 0x35, 0xC9, 0x54, 0x34, 0xDB, 0xDA, 0x21, 0x1F, + 0xA5, 0x9A, 0xE0, 0x4D, 0xFD, 0xDD, 0x30, 0x25, 0xAB, 0xAB, 0x59, 0x83, 0xA2, 0x8F, 0xCD, 0xEE, + 0x56, 0xAF, 0xDD, 0xDD, 0x7C, 0xD9, 0xEE, 0xB4, 0xBB, 0xBD, 0x35, 0x15, 0x43, 0x51, 0x53, 0x31, + 0xE8, 0x64, 0xDB, 0xF5, 0x76, 0x17, 0x4C, 0x5D, 0xC5, 0xB6, 0xCA, 0x68, 0x52, 0x70, 0x57, 0x6D, + 0x9D, 0x0E, 0x92, 0xDE, 0xC6, 0x46, 0x5B, 0xFE, 0xBF, 0x32, 0x72, 0x65, 0x04, 0xBC, 0xEC, 0x54, + 0x6C, 0x93, 0x2A, 0x33, 0x70, 0x48, 0x6B, 0x63, 0xEC, 0x97, 0xCE, 0x3E, 0x9C, 0xCF, 0x6F, 0x7D, + 0xAD, 0xEE, 0x45, 0x40, 0x3C, 0x1A, 0xC1, 0x86, 0x39, 0xF0, 0xB9, 0xF6, 0xAC, 0x01, 0x0D, 0x2F, + 0x54, 0xD7, 0x01, 0x9B, 0x7F, 0x5F, 0xA8, 0x2A, 0x93, 0x06, 0x61, 0x95, 0x05, 0xBD, 0x4C, 0x80, + 0xB6, 0x81, 0xC7, 0x2E, 0x42, 0xC3, 0x4E, 0x12, 0x1D, 0x79, 0x9A, 0xA3, 0x77, 0x8D, 0xA9, 0x66, + 0x67, 0x4E, 0xD8, 0x17, 0x41, 0x10, 0x1F, 0xD2, 0x11, 0x93, 0x33, 0x6E, 0x51, 0x3B, 0x99, 0xC3, + 0x0B, 0xBE, 0x35, 0xED, 0xB4, 0xF0, 0xAB, 0xE1, 0xC5, 0x9E, 0x15, 0x8F, 0x17, 0x4D, 0xC4, 0x8D, + 0xEE, 0xC7, 0x40, 0x96, 0x3A, 0x42, 0x27, 0x89, 0x08, 0x4F, 0x5C, 0x11, 0x8E, 0x94, 0x89, 0x46, + 0x62, 0x23, 0x39, 0x2A, 0x44, 0xA0, 0xF8, 0xD7, 0xC2, 0xB8, 0xC2, 0x11, 0xBF, 0x35, 0x9D, 0xB8, + 0x6E, 0x15, 0xCD, 0x0B, 0x5F, 0xD5, 0x4F, 0xF8, 0xA9, 0xDA, 0x12, 0x17, 0x5E, 0xFB, 0xDC, 0x7F, + 0xC0, 0xFE, 0xBE, 0x9C, 0x46, 0xC9, 0xEA, 0xC6, 0x64, 0xA9, 0x58, 0xE2, 0xD8, 0x58, 0xAA, 0x06, + 0x3E, 0x96, 0xBB, 0x33, 0x34, 0x0A, 0xC4, 0x2A, 0x6E, 0xA9, 0x78, 0x67, 0xF0, 0x99, 0x55, 0xE1, + 0x06, 0x23, 0xA8, 0xD0, 0xED, 0x9A, 0xDF, 0xA3, 0x8E, 0xAD, 0xF1, 0xD0, 0x64, 0x02, 0x8C, 0x7A, + 0x27, 0xF4, 0xE2, 0x87, 0x5A, 0x7A, 0x21, 0xB8, 0x93, 0xF5, 0xD2, 0xC8, 0xE7, 0x1C, 0xEC, 0x69, + 0xF0, 0x8C, 0x20, 0x6D, 0xBC, 0x63, 0x26, 0xAA, 0x28, 0xD7, 0xA0, 0xF4, 0x88, 0x62, 0x25, 0x82, + 0x4F, 0x0D, 0xD6, 0xDC, 0x21, 0x5A, 0xBE, 0xD5, 0xF4, 0xDA, 0x45, 0x3D, 0x72, 0x6E, 0xE9, 0x7E, + 0xEC, 0xD7, 0x41, 0x04, 0xE7, 0xC0, 0x00, 0xE0, 0x2D, 0xE3, 0x03, 0x0B, 0x3F, 0x57, 0x20, 0x60, + 0x86, 0x7D, 0xF6, 0x67, 0x26, 0xCE, 0x48, 0x5E, 0x5E, 0x48, 0x20, 0x29, 0x15, 0x1E, 0x35, 0x6D, + 0x9F, 0xB2, 0xEE, 0x36, 0xBA, 0xBB, 0xBB, 0xB4, 0xDE, 0x46, 0x3F, 0x64, 0x77, 0xFF, 0xA1, 0xC5, + 0x6C, 0x55, 0xB9, 0xC3, 0x8D, 0xCF, 0x66, 0x81, 0x01, 0x6C, 0x13, 0xD1, 0xEB, 0x3B, 0xC7, 0x8B, + 0xDB, 0xED, 0x76, 0x5D, 0x39, 0xD4, 0xCC, 0xD1, 0x41, 0x7B, 0xA0, 0x96, 0x8C, 0xD2, 0xCA, 0x76, + 0xF4, 0x95, 0x24, 0x3E, 0xF1, 0xC9, 0x3F, 0x53, 0xD3, 0x3F, 0xF1, 0x3B, 0x7C, 0xE6, 0x2E, 0x50, + 0x17, 0x8E, 0x52, 0xAC, 0x5E, 0xBD, 0x51, 0x85, 0xD7, 0x77, 0x6E, 0xB1, 0x3B, 0xED, 0xB6, 0x76, + 0x2E, 0x6B, 0x5C, 0x54, 0xAA, 0xA5, 0x97, 0xD5, 0x5B, 0x45, 0x8C, 0x6F, 0x69, 0x40, 0x90, 0xA5, + 0x39, 0x51, 0xC7, 0x66, 0xB4, 0xBF, 0x7A, 0xED, 0x60, 0x91, 0x68, 0xFB, 0xC5, 0x23, 0xEE, 0x17, + 0x89, 0xBA, 0x5F, 0x34, 0xF2, 0x7E, 0xF1, 0xE8, 0xFB, 0xC5, 0x22, 0xF0, 0x17, 0x8D, 0xA5, 0x5F, + 0x46, 0x3C, 0xFD, 0x7C, 0x31, 0xF5, 0xC9, 0x1C, 0x90, 0x5E, 0x12, 0x02, 0x15, 0xE7, 0x75, 0xFF, + 0x09, 0x2C, 0xFC, 0x8F, 0x65, 0x80, 0xAD, 0xF6, 0xF1, 0xB1, 0x4C, 0x8E, 0xE5, 0xDE, 0xB4, 0xF5, + 0x1A, 0x80, 0x72, 0xF3, 0x0E, 0xED, 0xCA, 0xF4, 0xEA, 0x5E, 0xAF, 0xF1, 0xE6, 0xBC, 0x6F, 0x71, + 0xCE, 0x24, 0xB4, 0xFC, 0xFC, 0x33, 0xB1, 0x37, 0x03, 0x9D, 0x18, 0xB1, 0x1C, 0x0C, 0x33, 0x37, + 0xDD, 0xA7, 0xDE, 0x61, 0x30, 0x9D, 0x0B, 0xE9, 0xBB, 0xF7, 0x67, 0x7B, 0xFD, 0x5C, 0x7A, 0x9B, + 0xC6, 0xB4, 0x64, 0x0B, 0xEE, 0x2E, 0x33, 0xA0, 0x8A, 0xA2, 0x64, 0xD0, 0xAB, 0x2A, 0x73, 0x13, + 0x04, 0xF0, 0x1F, 0xD8, 0x51, 0xB1, 0x6B, 0xAC, 0x49, 0x1D, 0x55, 0x57, 0x52, 0x65, 0x7A, 0xFE, + 0xDC, 0x54, 0x10, 0x9B, 0x2A, 0x64, 0xFB, 0x9B, 0xB9, 0xA8, 0x86, 0xBD, 0xDE, 0xF7, 0xE2, 0x53, + 0x67, 0x92, 0x5E, 0x84, 0x1B, 0x7B, 0x3E, 0xFC, 0xE3, 0xDC, 0xB7, 0xC8, 0x15, 0x2B, 0x51, 0x2E, + 0xB1, 0xB6, 0x12, 0x8B, 0x70, 0x72, 0xA8, 0x0C, 0x66, 0x79, 0xA6, 0x9D, 0xA4, 0x8A, 0xE1, 0xD4, + 0x8D, 0x9D, 0xE8, 0x1B, 0x2F, 0xE0, 0x80, 0xB4, 0x42, 0xD4, 0x1F, 0x7E, 0x96, 0x4D, 0x5E, 0x23, + 0xCA, 0x26, 0x9E, 0x2E, 0x88, 0x0F, 0xBB, 0x88, 0x9E, 0x7F, 0x68, 0x30, 0x20, 0x3F, 0x93, 0x46, + 0x97, 0xBC, 0x7E, 0xCD, 0x71, 0x35, 0x9B, 0x28, 0xA5, 0x4E, 0xD3, 0x90, 0x4E, 0xC1, 0xE5, 0x57, + 0xFB, 0x8D, 0x5A, 0xA5, 0xAD, 0xD2, 0xAB, 0x32, 0x79, 0x16, 0x09, 0x21, 0xE3, 0x2C, 0x95, 0x57, + 0x74, 0x15, 0xBB, 0x28, 0x23, 0xCB, 0xA1, 0xFF, 0x96, 0x10, 0xB0, 0x08, 0x9F, 0xCD, 0x62, 0x0F, + 0xA9, 0x4D, 0xC0, 0x24, 0xE3, 0x16, 0xCA, 0x10, 0x56, 0x12, 0x4A, 0xA6, 0xE4, 0x0C, 0x60, 0xAF, + 0x85, 0xE9, 0x41, 0x9B, 0xDB, 0x69, 0x92, 0x80, 0xA4, 0x6B, 0x58, 0xC9, 0x32, 0x7F, 0xA6, 0xA9, + 0x70, 0x5C, 0x1A, 0xF3, 0xF7, 0x25, 0x61, 0x9F, 0x27, 0xE0, 0xA4, 0x2B, 0xFD, 0x24, 0x17, 0xC1, + 0xAD, 0x4C, 0x2F, 0x84, 0x91, 0xA5, 0x3C, 0x35, 0x95, 0xE7, 0xC2, 0x1A, 0xC4, 0xBB, 0x7E, 0x48, + 0x12, 0x60, 0x35, 0x54, 0x65, 0x68, 0x26, 0xF2, 0xD6, 0x9B, 0x55, 0x7D, 0xBD, 0xCD, 0x78, 0x34, + 0xCE, 0x0C, 0x73, 0x4F, 0x24, 0x8A, 0x44, 0x2A, 0x6F, 0xC7, 0x5D, 0xB3, 0x5E, 0x90, 0xA9, 0xFF, + 0xCD, 0xC7, 0x2C, 0x07, 0xDB, 0x3F, 0x9A, 0xAE, 0x20, 0x43, 0x6C, 0x6F, 0xDE, 0xBD, 0x66, 0x47, + 0xE4, 0xA8, 0xFC, 0xB6, 0xD2, 0x5D, 0x3C, 0x36, 0x2F, 0x64, 0x41, 0x1A, 0x8E, 0xF7, 0x52, 0x1E, + 0xB3, 0xFF, 0x70, 0x9D, 0xCF, 0x1D, 0x26, 0x5C, 0x55, 0x14, 0x7D, 0x96, 0x91, 0xC4, 0xDB, 0x16, + 0xDD, 0xE3, 0x39, 0xCC, 0x66, 0x57, 0x3E, 0xD6, 0xEE, 0x0F, 0xED, 0xFB, 0x43, 0xFB, 0xEC, 0xDA, + 0x97, 0xD1, 0x95, 0x9F, 0x76, 0x34, 0x83, 0x57, 0xD8, 0x7F, 0x6E, 0x3B, 0x23, 0x7E, 0x4F, 0x8C, + 0xDD, 0xF0, 0xF9, 0x41, 0xBA, 0x5F, 0x68, 0xE4, 0x55, 0x3A, 0x26, 0x21, 0x6C, 0x69, 0x70, 0xE6, + 0x49, 0x07, 0xD4, 0x7C, 0x23, 0x25, 0x97, 0xED, 0xF3, 0x92, 0xA1, 0x09, 0x41, 0x24, 0xDB, 0xC1, + 0x89, 0xCC, 0x25, 0xF8, 0xA8, 0xCF, 0x0D, 0xB5, 0xA5, 0x62, 0x6C, 0xC9, 0x91, 0x88, 0xE5, 0xB0, + 0x0A, 0x5A, 0x1D, 0xA1, 0x44, 0x63, 0x94, 0x16, 0xBF, 0xCB, 0x95, 0x4C, 0xAF, 0x46, 0x22, 0xA1, + 0xF4, 0x92, 0xBE, 0x3E, 0xB3, 0xA6, 0x33, 0xA2, 0x18, 0x20, 0x0C, 0x55, 0x43, 0xD6, 0x69, 0xD9, + 0x88, 0x48, 0xAF, 0xD8, 0x1B, 0x56, 0xAD, 0x10, 0x18, 0x54, 0x2A, 0x82, 0x96, 0x8D, 0x2C, 0xE7, + 0x39, 0xE4, 0x22, 0xD6, 0x55, 0xC9, 0x5F, 0xD1, 0xFD, 0xEC, 0xAA, 0x2F, 0x93, 0xFF, 0x20, 0x5D, + 0xF6, 0xCD, 0xB9, 0xDC, 0x4B, 0x82, 0x13, 0xF9, 0x82, 0x0E, 0x6D, 0x88, 0xB2, 0x9C, 0x4B, 0xFF, + 0xC4, 0x43, 0x87, 0xDA, 0xEF, 0xB3, 0x78, 0xE3, 0x56, 0x2F, 0x5D, 0x10, 0xED, 0xE4, 0x26, 0x74, + 0x98, 0x7B, 0xBD, 0x3F, 0x97, 0xE1, 0xC9, 0x93, 0x8E, 0xF0, 0xF1, 0x2F, 0x57, 0x3C, 0x32, 0x76, + 0x54, 0x97, 0x52, 0x1A, 0x51, 0xCA, 0xD6, 0xDE, 0xFF, 0xF8, 0x67, 0xB1, 0xD9, 0x79, 0xAC, 0x4B, + 0x4F, 0xB2, 0xB5, 0x34, 0x3C, 0xB3, 0xF1, 0x4C, 0x79, 0xE1, 0x97, 0x33, 0x49, 0x64, 0xA3, 0x6E, + 0xD7, 0x95, 0x98, 0xA9, 0x86, 0xFA, 0xA8, 0xEF, 0x4F, 0x98, 0x96, 0xFB, 0x99, 0xF2, 0x20, 0x10, + 0x2F, 0xFE, 0xAD, 0xF3, 0x55, 0xEA, 0x3D, 0x7E, 0xF3, 0xA2, 0x33, 0xE7, 0xAC, 0xC1, 0xDD, 0x75, + 0xB2, 0xBC, 0xD9, 0xE4, 0x65, 0xB2, 0xFA, 0x6B, 0xD8, 0xE2, 0x68, 0x1F, 0x76, 0x31, 0x07, 0x49, + 0xD3, 0x06, 0xBC, 0x5B, 0x02, 0xBC, 0xAB, 0x03, 0xEF, 0x9A, 0xC0, 0xBB, 0x45, 0xC0, 0x7B, 0x25, + 0xC0, 0x7B, 0x3A, 0xF0, 0x9E, 0x09, 0xBC, 0x57, 0x04, 0x7C, 0xAD, 0x04, 0xF8, 0x9A, 0x0E, 0x7C, + 0xCD, 0x04, 0xBE, 0x96, 0x00, 0xFF, 0x17, 0x50, 0x59, 0xE5, 0x62, 0x3A, 0xEA, 0xEC, 0x95, 0xE3, + 0xE2, 0xEF, 0x78, 0x09, 0xB7, 0x44, 0x81, 0xA5, 0x2F, 0x26, 0xE7, 0xFE, 0xB8, 0x50, 0xE9, 0x76, + 0x1C, 0xBC, 0xC3, 0x37, 0xE4, 0xA0, 0x04, 0x0F, 0x5B, 0x90, 0xEF, 0xEA, 0x05, 0x85, 0xE2, 0x30, + 0x39, 0x24, 0xA8, 0xCB, 0x83, 0x04, 0xEC, 0xA4, 0xCC, 0xDF, 0x7B, 0x3D, 0x4E, 0xCE, 0x73, 0x01, + 0x8D, 0xE7, 0xF6, 0x2A, 0x74, 0x99, 0x2F, 0xF4, 0xBB, 0xCA, 0xB1, 0xE2, 0xCF, 0x3F, 0x13, 0xFE, + 0xB1, 0x97, 0x7E, 0xCC, 0x28, 0x46, 0x77, 0x7E, 0xCD, 0x00, 0xC0, 0x3F, 0xAC, 0x93, 0xA1, 0x6B, + 0xF7, 0x07, 0x22, 0x2F, 0x6C, 0x6E, 0x59, 0xED, 0x68, 0x10, 0xA5, 0xCB, 0xB7, 0x4B, 0x7A, 0xDA, + 0x25, 0x25, 0xEF, 0xAF, 0x34, 0x89, 0x45, 0xE2, 0x64, 0xB9, 0x74, 0x3F, 0x04, 0xC7, 0x0E, 0x9E, + 0xA7, 0x3C, 0x1C, 0xD2, 0x6B, 0x67, 0x3A, 0x8A, 0x23, 0x7D, 0x2D, 0xA5, 0x97, 0x65, 0x33, 0xEE, + 0xD6, 0x64, 0x11, 0xD9, 0x9B, 0x80, 0xB1, 0xA5, 0xAE, 0x76, 0xC0, 0xC3, 0xEE, 0xC3, 0xF3, 0x97, + 0xDA, 0x38, 0x36, 0x74, 0x5E, 0x5A, 0x53, 0xBA, 0x19, 0x98, 0xD8, 0x3B, 0x63, 0xAD, 0x6E, 0xCB, + 0xF4, 0x80, 0xFD, 0x9D, 0x86, 0x41, 0xCA, 0x85, 0x9C, 0xEE, 0x77, 0xB2, 0x6D, 0xE4, 0x5D, 0x7A, + 0xD6, 0xB9, 0x7F, 0xB5, 0x84, 0x00, 0x2A, 0x53, 0x6C, 0xA9, 0x00, 0xBE, 0x67, 0x44, 0x7E, 0x36, + 0xA6, 0x4E, 0x46, 0xDE, 0x3A, 0x9F, 0xD2, 0x35, 0x30, 0xF6, 0xE5, 0xEC, 0xF4, 0x68, 0xEF, 0x92, + 0xA7, 0x61, 0x90, 0x5C, 0xEE, 0xDA, 0x6A, 0xF4, 0xCB, 0x6B, 0x7C, 0x28, 0xAD, 0xF1, 0x8B, 0x52, + 0x63, 0xDD, 0x52, 0xE3, 0xE2, 0xF4, 0x40, 0x87, 0x91, 0xED, 0xA0, 0x88, 0x75, 0xFC, 0x17, 0xEA, + 0xA3, 0x5A, 0xE3, 0xE2, 0xD7, 0xD3, 0xCB, 0x8B, 0xBD, 0x4F, 0xBF, 0x16, 0xD7, 0xE8, 0x1F, 0x5F, + 0xEC, 0xFF, 0x6A, 0x32, 0x2A, 0xC3, 0x29, 0x7C, 0x92, 0xC3, 0x3A, 0xF4, 0x95, 0xF7, 0x3A, 0x3A, + 0x1B, 0xB8, 0x6F, 0x2B, 0xC0, 0xA6, 0x3E, 0xEB, 0x51, 0x5E, 0xED, 0x85, 0x51, 0xAD, 0x63, 0xAD, + 0xF6, 0xB2, 0x1A, 0xB4, 0x97, 0x16, 0x68, 0xB6, 0x7A, 0x5B, 0xD5, 0xC0, 0x6D, 0x55, 0x22, 0xAE, + 0xDB, 0xAB, 0x04, 0xAD, 0xDB, 0xAB, 0x04, 0xAD, 0xB7, 0xD6, 0x31, 0xA1, 0x59, 0x3B, 0xC1, 0xDE, + 0x73, 0xE9, 0x54, 0x80, 0xC8, 0x1F, 0x7E, 0xC9, 0x56, 0xB4, 0x88, 0x1F, 0x96, 0x18, 0x78, 0x89, + 0xEE, 0xCE, 0x73, 0xE3, 0x1B, 0x6C, 0x5B, 0x5D, 0x05, 0x3A, 0xD5, 0x74, 0xA0, 0xB7, 0x54, 0x1D, + 0xE8, 0x2D, 0x57, 0x07, 0x7A, 0x4B, 0xD5, 0x81, 0xDE, 0x3F, 0x9B, 0x0E, 0x4C, 0x23, 0x96, 0x6B, + 0x22, 0xF5, 0x17, 0x45, 0x59, 0x47, 0x0A, 0xBF, 0xAC, 0x9F, 0x82, 0x60, 0x0F, 0x05, 0x6E, 0x67, + 0xEB, 0x7C, 0x36, 0xEA, 0x7C, 0xB6, 0xD4, 0xF9, 0x62, 0xD4, 0xF9, 0xA2, 0x99, 0x6E, 0xA0, 0x46, + 0x26, 0x8C, 0x2D, 0xA4, 0x28, 0xEB, 0xDA, 0x51, 0x9E, 0x8A, 0x2C, 0x77, 0xDD, 0x28, 0x6F, 0x3B, + 0x1A, 0x95, 0xDF, 0xEE, 0x1D, 0x5D, 0xEE, 0x9D, 0x1F, 0x58, 0xEA, 0xEE, 0x8D, 0x62, 0x21, 0x0C, + 0x3D, 0xC0, 0x66, 0xEC, 0x84, 0xDF, 0xB4, 0xE8, 0x9A, 0x6E, 0x49, 0x08, 0x4D, 0x49, 0xF3, 0x9E, + 0xAD, 0x39, 0x8F, 0x96, 0x17, 0xF8, 0x1D, 0xF7, 0x6F, 0xD3, 0x28, 0x06, 0x4A, 0x1B, 0x66, 0x1E, + 0x5B, 0x5C, 0x7F, 0x9C, 0xD1, 0x3B, 0x98, 0xF9, 0x12, 0x96, 0x65, 0xA2, 0x51, 0xD2, 0x3A, 0x96, + 0xB5, 0x15, 0xBD, 0xF7, 0x62, 0xE3, 0xE4, 0x9F, 0x3F, 0x1C, 0x8E, 0xEF, 0x21, 0x9F, 0xB3, 0x90, + 0x9E, 0xED, 0x67, 0xE9, 0x0B, 0xE6, 0xCC, 0x80, 0x9C, 0xF8, 0xE7, 0x61, 0x80, 0x07, 0xD5, 0x49, + 0x00, 0x8B, 0x89, 0x13, 0xA1, 0xEE, 0xF9, 0xAE, 0xBA, 0xA0, 0x4B, 0x5E, 0x8C, 0xB5, 0x66, 0xEB, + 0x4D, 0xC9, 0xB0, 0xE6, 0xEB, 0x35, 0x9E, 0x9A, 0x95, 0x39, 0x42, 0x71, 0x99, 0x2B, 0x21, 0xA8, + 0xB0, 0x05, 0x3A, 0x7B, 0x47, 0xF8, 0xD7, 0x6C, 0x47, 0x8C, 0x4E, 0xA6, 0x6F, 0xAD, 0xCA, 0x94, + 0xE1, 0xB0, 0xE8, 0xC3, 0x27, 0x24, 0x6E, 0x28, 0x77, 0x64, 0x1E, 0xF5, 0xCF, 0xD7, 0x7A, 0xE4, + 0x86, 0xBD, 0x28, 0xC1, 0xDE, 0xAA, 0x85, 0xC2, 0x90, 0x3F, 0x55, 0x8B, 0x39, 0xC5, 0x99, 0x4B, + 0x22, 0xC0, 0x8B, 0x41, 0x09, 0x73, 0xC8, 0x75, 0x18, 0x8C, 0xC9, 0xDE, 0x39, 0x6F, 0x30, 0x24, + 0x13, 0xA0, 0x4A, 0x4D, 0x48, 0x9A, 0x7D, 0xF1, 0x36, 0x49, 0xD4, 0x79, 0x08, 0x94, 0x84, 0x63, + 0xCF, 0x87, 0x15, 0xF6, 0x8D, 0x07, 0x0B, 0x50, 0x35, 0x41, 0x39, 0xF7, 0x9B, 0x06, 0xA1, 0x07, + 0x8B, 0x1F, 0x67, 0xC4, 0x13, 0x98, 0xCB, 0xED, 0x97, 0x99, 0x22, 0xF9, 0xA7, 0x1D, 0xE2, 0x4F, + 0x47, 0xA3, 0xA6, 0xB9, 0x41, 0x31, 0xB3, 0x26, 0xEB, 0x8C, 0x2C, 0x8A, 0x4F, 0xC0, 0x17, 0x4D, + 0xFA, 0xF0, 0xA7, 0xFB, 0x53, 0xF1, 0xC5, 0x14, 0x35, 0xEF, 0xF3, 0x47, 0x7E, 0xE2, 0x42, 0xE0, + 0xFF, 0xC0, 0x1F, 0x60, 0x96, 0xED, 0x45, 0x60, 0xDB, 0x86, 0x48, 0x7F, 0x7E, 0xF6, 0x13, 0x6C, + 0x36, 0xB4, 0x43, 0x56, 0x96, 0x0D, 0x92, 0xDF, 0xDC, 0x8E, 0xA6, 0x57, 0x63, 0x2F, 0x96, 0x6F, + 0x19, 0xE1, 0x13, 0x43, 0x30, 0xC8, 0x58, 0x06, 0xF2, 0xDF, 0x3A, 0x5F, 0x53, 0xC7, 0x11, 0x7A, + 0x5E, 0x85, 0xF3, 0x08, 0xB3, 0xEB, 0xA3, 0xA7, 0x5B, 0x8D, 0xDB, 0x90, 0xC5, 0x6D, 0x67, 0x32, + 0xE1, 0x83, 0x29, 0x0B, 0xB6, 0xC5, 0xD0, 0x36, 0x53, 0x98, 0xCE, 0xDF, 0x9C, 0x7B, 0x01, 0xEF, + 0xD7, 0xD3, 0x77, 0x18, 0x36, 0x7E, 0x41, 0x61, 0x77, 0x91, 0xA6, 0xDB, 0xC7, 0x0A, 0xED, 0x00, + 0x00, 0x36, 0x6A, 0xE7, 0xEF, 0x61, 0xD9, 0x08, 0x5C, 0x5C, 0x9D, 0xB2, 0x1E, 0xD5, 0xD4, 0x1A, + 0x6C, 0x28, 0x49, 0x0A, 0xD4, 0xD7, 0x53, 0x74, 0x2E, 0x58, 0xB6, 0x67, 0x98, 0x0B, 0x98, 0x17, + 0x7A, 0xE8, 0x9F, 0x9E, 0x68, 0xC1, 0x77, 0x46, 0xF6, 0xFC, 0xDC, 0x17, 0x7D, 0x35, 0x0B, 0x5C, + 0x8C, 0x90, 0x3D, 0x39, 0x93, 0x0F, 0x34, 0x33, 0x70, 0xF9, 0x30, 0xCB, 0x7B, 0xDB, 0x38, 0x6F, + 0xF0, 0x6A, 0x08, 0x82, 0x70, 0x48, 0xE3, 0x73, 0xC7, 0x0B, 0xA9, 0xCB, 0x8C, 0xA9, 0x3E, 0x65, + 0x5C, 0xC5, 0xFE, 0x31, 0xAB, 0xC1, 0xCB, 0x2C, 0x2C, 0x62, 0x0F, 0xF1, 0xB0, 0x42, 0x06, 0x2B, + 0x88, 0x63, 0xEA, 0xB7, 0x95, 0x73, 0xF6, 0xBC, 0xF7, 0x59, 0xCF, 0xF8, 0xFB, 0x03, 0xD6, 0xCD, + 0x2C, 0xC3, 0x78, 0x14, 0x4D, 0xCE, 0xF8, 0xD3, 0xB0, 0x91, 0xC5, 0xDC, 0x02, 0x61, 0x17, 0xCA, + 0x63, 0x36, 0x1A, 0xD1, 0xC5, 0xAF, 0xDC, 0xD4, 0x58, 0x3B, 0xB6, 0xD9, 0x14, 0x81, 0x8F, 0x79, + 0x9B, 0x6A, 0x15, 0x4E, 0x4A, 0x42, 0xB2, 0xD1, 0x75, 0x5C, 0x97, 0x3D, 0x1F, 0x81, 0x9E, 0x0D, + 0xEA, 0x63, 0x82, 0xC5, 0xC3, 0xF7, 0xA7, 0x60, 0x7B, 0x63, 0xFC, 0xC6, 0x9F, 0xEA, 0x69, 0x91, + 0x06, 0xC5, 0x2A, 0x4D, 0xB2, 0xB3, 0xAB, 0x6E, 0x9D, 0x05, 0xC3, 0x2A, 0xEC, 0x9A, 0xB3, 0x01, + 0x9A, 0x75, 0xF5, 0x09, 0x03, 0x76, 0x46, 0x8C, 0x4B, 0x13, 0xE6, 0x2E, 0x87, 0x5F, 0x38, 0xE4, + 0x64, 0x63, 0xEC, 0xA1, 0xE3, 0xDB, 0xB9, 0x87, 0x5F, 0xF4, 0x1D, 0x32, 0xAF, 0xF6, 0x9B, 0xF7, + 0xB5, 0x1D, 0xF8, 0x83, 0x91, 0x37, 0xC0, 0xD0, 0x95, 0x84, 0xB7, 0x8D, 0x6C, 0xC8, 0xBA, 0x16, + 0xBA, 0x9C, 0x73, 0x59, 0x3D, 0xEF, 0x71, 0x9E, 0x2C, 0x9F, 0x38, 0x3C, 0x1C, 0xF0, 0x56, 0x94, + 0x16, 0x40, 0x7D, 0x3A, 0x50, 0x17, 0x77, 0xED, 0x0E, 0x59, 0xCD, 0xC5, 0xA7, 0xF8, 0x6F, 0xBE, + 0xAB, 0xA3, 0xDD, 0x0A, 0x72, 0x19, 0xC4, 0xA5, 0x58, 0x8B, 0x68, 0x53, 0xBA, 0x60, 0x21, 0xCE, + 0x92, 0x21, 0x70, 0x66, 0xD2, 0x66, 0xCF, 0x36, 0xC8, 0xED, 0x47, 0x24, 0xEA, 0xD9, 0x6F, 0x0B, + 0x70, 0xFB, 0xC1, 0x96, 0x78, 0xB9, 0xD9, 0x0A, 0x6C, 0x3D, 0x91, 0x8F, 0x21, 0x2D, 0xDC, 0x0D, + 0x09, 0xA8, 0xB0, 0x0F, 0x39, 0xF4, 0xA5, 0x1D, 0xC8, 0xEF, 0xA4, 0xA5, 0x0F, 0xC5, 0xA9, 0xE5, + 0xE6, 0xEE, 0xD1, 0x5C, 0x19, 0xEB, 0x78, 0xFF, 0x70, 0xC1, 0x5F, 0xD4, 0xBD, 0x61, 0xB2, 0xF6, + 0x9F, 0xBF, 0x7B, 0xFC, 0x55, 0xA8, 0x65, 0xF7, 0xEE, 0x8D, 0x1A, 0xE7, 0x68, 0x76, 0x8E, 0x13, + 0x9F, 0xDF, 0x39, 0xDE, 0xF9, 0x6C, 0xE7, 0x32, 0x89, 0x62, 0xF2, 0xD2, 0xDC, 0xD4, 0x9A, 0xF6, + 0x87, 0xDE, 0x72, 0x1F, 0x30, 0x92, 0xE3, 0x78, 0xB3, 0xDB, 0x5E, 0x2F, 0x4D, 0xD8, 0xF6, 0x88, + 0x49, 0x78, 0x66, 0xA2, 0x75, 0xAB, 0xDD, 0x99, 0x23, 0xB9, 0x5C, 0x15, 0xD0, 0x9D, 0x7C, 0xC8, + 0x16, 0xC5, 0xB2, 0xE5, 0x11, 0x9B, 0x5B, 0x9F, 0x0A, 0x92, 0x92, 0xD9, 0xC7, 0x88, 0x92, 0x69, + 0x69, 0xC6, 0x0B, 0x48, 0x5C, 0x0D, 0x2B, 0xB4, 0xCF, 0xEB, 0x6D, 0x92, 0x3D, 0x62, 0x19, 0xBD, + 0x2D, 0xCA, 0xD5, 0x6D, 0xF4, 0x96, 0x57, 0x9D, 0xBF, 0xB7, 0xC5, 0xED, 0x2D, 0xBD, 0x35, 0x8E, + 0x3B, 0x16, 0xEF, 0x71, 0x16, 0x60, 0x4E, 0xAF, 0x2D, 0x07, 0x2A, 0xFC, 0x61, 0x2F, 0x9E, 0x22, + 0x22, 0xF3, 0x1C, 0x65, 0x21, 0x0B, 0x4A, 0x81, 0x59, 0xF3, 0x2C, 0xA9, 0xEC, 0xC8, 0x3E, 0x16, + 0x37, 0x37, 0x23, 0xB2, 0xA0, 0x92, 0xD8, 0x91, 0x8E, 0x5D, 0xF6, 0xB2, 0xC5, 0xBE, 0x33, 0x75, + 0x0F, 0x8D, 0xA7, 0xAD, 0x0C, 0xD3, 0xAA, 0xDE, 0x69, 0x2B, 0xD5, 0x93, 0x0A, 0x14, 0x75, 0xED, + 0x26, 0xBC, 0x0A, 0x45, 0x62, 0x26, 0x9B, 0x89, 0xA2, 0x79, 0x71, 0xCD, 0xD0, 0x7B, 0x5D, 0xAC, + 0x0F, 0xB0, 0xE2, 0xF6, 0x06, 0xA7, 0x30, 0xE1, 0x2C, 0x26, 0x53, 0x1D, 0x0E, 0x67, 0x1F, 0xC6, + 0x4B, 0xC8, 0xF0, 0x7C, 0xAE, 0xFD, 0xFC, 0x7A, 0xCE, 0xF1, 0x94, 0x3F, 0x85, 0x5C, 0xA4, 0xFA, + 0x2A, 0x40, 0xB5, 0xD5, 0x11, 0xBF, 0xF2, 0x91, 0xDD, 0xB7, 0x7E, 0x72, 0x42, 0x9F, 0xBD, 0x09, + 0x75, 0xC8, 0x5B, 0x12, 0xD6, 0x94, 0x65, 0x56, 0x81, 0x6D, 0x0D, 0x86, 0x2B, 0xEE, 0x4D, 0xE3, + 0x60, 0x1C, 0xC4, 0xDE, 0x2D, 0x6D, 0x13, 0x91, 0x3A, 0x8C, 0xC3, 0x24, 0x5E, 0x44, 0xAE, 0x28, + 0xCF, 0xFD, 0xEE, 0xF2, 0x23, 0x39, 0xF4, 0x8C, 0xA4, 0xF5, 0x75, 0x98, 0xED, 0xDA, 0x0C, 0xA3, + 0x6E, 0xA6, 0x7E, 0xD4, 0x2A, 0x58, 0x24, 0x83, 0x85, 0x7F, 0x48, 0xEC, 0x87, 0x97, 0x58, 0x7E, + 0x46, 0xC1, 0x05, 0xE7, 0x92, 0xD2, 0x54, 0x85, 0x76, 0x6B, 0x3A, 0x99, 0xC8, 0x27, 0x76, 0xE7, + 0x32, 0x47, 0xE5, 0xCD, 0x2D, 0x3C, 0x30, 0x2F, 0x8B, 0x2F, 0xD8, 0xF3, 0x8A, 0x77, 0xCF, 0x73, + 0x2D, 0xF0, 0x21, 0x8D, 0x1D, 0x6F, 0x14, 0xCD, 0xD8, 0xF3, 0x59, 0x00, 0x69, 0x3C, 0x50, 0xDF, + 0x1F, 0x9D, 0xBB, 0xE7, 0x2A, 0x90, 0xFC, 0x09, 0x53, 0x78, 0xA9, 0xB1, 0x6E, 0x79, 0x27, 0x0B, + 0x41, 0x77, 0xED, 0xDC, 0x2C, 0x06, 0x6D, 0x5B, 0x42, 0x29, 0x0E, 0xB5, 0x25, 0xAC, 0x9F, 0x74, + 0x68, 0x05, 0xF6, 0xC8, 0xF0, 0xE5, 0x2D, 0xB6, 0x78, 0x2A, 0x04, 0x56, 0xBA, 0x78, 0x32, 0x93, + 0x70, 0x2D, 0xC8, 0x83, 0xC2, 0xFC, 0x51, 0x8A, 0xDE, 0xAB, 0x95, 0xE7, 0xD4, 0xF8, 0x4A, 0x20, + 0x2C, 0x7D, 0xD5, 0xB2, 0x5C, 0x2D, 0xD8, 0xDD, 0xB2, 0x8C, 0x59, 0x66, 0x8F, 0xD3, 0xFA, 0x8B, + 0x74, 0xBA, 0x02, 0x94, 0xAC, 0x93, 0x21, 0x49, 0xDE, 0x3D, 0x47, 0xA7, 0xB5, 0xC3, 0xBA, 0x0C, + 0x78, 0x3D, 0x51, 0xF7, 0x63, 0x81, 0xCF, 0xEC, 0x8B, 0x97, 0x8C, 0xC6, 0x38, 0x39, 0x5D, 0x76, + 0x27, 0x72, 0xB2, 0xB8, 0xCE, 0xAD, 0x7F, 0x25, 0x69, 0x61, 0x6D, 0x56, 0x47, 0xA4, 0x7F, 0x2D, + 0xB0, 0x0F, 0x4A, 0x4D, 0x9E, 0xBF, 0xB5, 0x5A, 0x5D, 0x96, 0x7E, 0xB5, 0xD4, 0xEC, 0x14, 0x98, + 0x30, 0x1B, 0x65, 0x86, 0x19, 0x2C, 0x26, 0x2D, 0xBF, 0x72, 0x96, 0x36, 0xAB, 0x7D, 0x65, 0xC2, + 0xFA, 0xDE, 0x54, 0x8E, 0x35, 0x50, 0x32, 0x07, 0x47, 0xC7, 0x09, 0xF3, 0xAD, 0x0F, 0xB6, 0xF9, + 0xDE, 0xE0, 0x1B, 0x9E, 0x0B, 0xB0, 0x37, 0x6F, 0xA5, 0xA3, 0x86, 0xBF, 0x77, 0xB8, 0xEF, 0xB8, + 0x07, 0x98, 0xFB, 0xA6, 0x91, 0xAD, 0x63, 0x7B, 0xD2, 0x2C, 0x49, 0xAB, 0xA3, 0xD4, 0x9E, 0xF9, + 0x69, 0xB7, 0x6C, 0x4E, 0xF1, 0x27, 0x7D, 0x41, 0xE2, 0x49, 0x5F, 0x8D, 0x78, 0xB2, 0x97, 0x22, + 0x72, 0x72, 0x04, 0x74, 0xF4, 0x64, 0x81, 0xFC, 0x76, 0x2D, 0x4A, 0x8E, 0x38, 0x43, 0xC7, 0xF3, + 0x23, 0x71, 0xF5, 0x07, 0xC6, 0xB5, 0x16, 0x0C, 0xE9, 0xF9, 0x2E, 0xBD, 0xD7, 0x33, 0xD8, 0xB0, + 0xE3, 0xA3, 0x6D, 0x51, 0x62, 0x7F, 0x46, 0xF9, 0xF9, 0x73, 0x56, 0x9A, 0xCD, 0xEB, 0x1D, 0x92, + 0x89, 0x13, 0xB2, 0x27, 0xA7, 0xD5, 0x27, 0x93, 0x59, 0xE5, 0xAF, 0xF2, 0xD6, 0x00, 0x31, 0x1F, + 0x6E, 0x4D, 0xE2, 0xB6, 0x55, 0x5D, 0x53, 0x96, 0x57, 0x0C, 0x24, 0x5E, 0x0D, 0xB0, 0x78, 0x2A, + 0xB3, 0x68, 0xF0, 0x5C, 0x38, 0x3B, 0x0C, 0x9E, 0x93, 0x3A, 0x8B, 0x49, 0x4E, 0xB5, 0x2D, 0xAF, + 0xE0, 0x73, 0x5E, 0xC1, 0x17, 0x5B, 0x2A, 0x72, 0xFC, 0xB9, 0x0A, 0xA9, 0xF3, 0xAD, 0xD8, 0x17, + 0x9A, 0xDE, 0xA8, 0x63, 0xEC, 0xDE, 0xB1, 0x70, 0x55, 0x4F, 0x60, 0xAE, 0x96, 0x4F, 0xA6, 0xD1, + 0x4D, 0xE3, 0x51, 0xFB, 0xA4, 0xA7, 0xBE, 0xCA, 0xBE, 0x6F, 0xAF, 0x9E, 0xAF, 0xC2, 0x5E, 0x8F, + 0xF2, 0x52, 0x3D, 0xE8, 0x17, 0x00, 0x89, 0xC0, 0x00, 0x91, 0x40, 0x4D, 0x09, 0x36, 0x52, 0x25, + 0xAA, 0x5D, 0xC3, 0x21, 0xBB, 0xC6, 0x25, 0xA8, 0x3C, 0x15, 0x82, 0xBA, 0x76, 0x05, 0xC2, 0x06, + 0xC8, 0x1B, 0x11, 0xCE, 0x2B, 0x75, 0x65, 0xFB, 0x99, 0x71, 0xDB, 0x89, 0x45, 0x3F, 0x34, 0x6A, + 0x87, 0x8C, 0x7A, 0x32, 0x0A, 0x06, 0x8C, 0x46, 0x96, 0x9D, 0x22, 0x69, 0xFE, 0x9C, 0xD4, 0xFE, + 0xBD, 0xD6, 0xCC, 0xCB, 0x5A, 0xAF, 0x8A, 0x04, 0x29, 0x19, 0x50, 0xEC, 0x01, 0xD8, 0x44, 0xCB, + 0xB1, 0x67, 0x39, 0x1B, 0xF1, 0x40, 0x5E, 0x33, 0xE8, 0xBF, 0x23, 0x0F, 0x73, 0x83, 0xD2, 0x38, + 0x37, 0xBB, 0x5F, 0x73, 0xAA, 0x7E, 0xCE, 0x54, 0xED, 0xE5, 0x55, 0xFD, 0x92, 0xA9, 0xBA, 0x66, + 0x54, 0xB5, 0x8F, 0x7E, 0x45, 0xA0, 0xB6, 0xD4, 0x0E, 0x2A, 0xD5, 0x25, 0x35, 0x3E, 0x97, 0xD6, + 0xF8, 0x92, 0x57, 0x43, 0x27, 0x4D, 0xCB, 0x62, 0x90, 0x5C, 0xBC, 0x54, 0x18, 0x4D, 0x9C, 0x30, + 0x74, 0x1E, 0x5A, 0x42, 0x01, 0x58, 0x02, 0xE3, 0x71, 0xE0, 0x07, 0xD1, 0xC4, 0x19, 0x50, 0xC2, + 0xDC, 0x21, 0xCC, 0x0C, 0x1B, 0x57, 0x2E, 0x53, 0x45, 0x51, 0x02, 0x16, 0x72, 0xD5, 0x40, 0xDC, + 0xB3, 0x4A, 0xA7, 0x7E, 0x54, 0x86, 0xAC, 0x51, 0xC9, 0xCC, 0x0C, 0x7C, 0xDD, 0x9E, 0x07, 0x36, + 0xED, 0xBE, 0xDA, 0x65, 0x0C, 0xF4, 0x33, 0x43, 0x34, 0x94, 0x1B, 0x99, 0x18, 0xA3, 0x1F, 0x84, + 0xD4, 0xAD, 0x15, 0x65, 0x6B, 0x61, 0x9B, 0x8E, 0x85, 0xD1, 0x8A, 0xD2, 0x57, 0xE4, 0xD7, 0xD5, + 0xCF, 0xAB, 0x5F, 0x6A, 0xFA, 0x8D, 0x46, 0x4B, 0xEF, 0x5F, 0x93, 0x8D, 0x66, 0x66, 0x15, 0x96, + 0xCB, 0xD3, 0xC8, 0xFB, 0x3B, 0x25, 0x36, 0xD3, 0xAC, 0x59, 0xC7, 0xE4, 0xE6, 0x41, 0x3A, 0x75, + 0xCE, 0x3A, 0x57, 0xE2, 0x00, 0x0D, 0x26, 0x4C, 0xF6, 0x4A, 0xA0, 0xC7, 0x00, 0xA6, 0x11, 0x50, + 0x03, 0x71, 0xE1, 0xA0, 0xCE, 0x2B, 0xA8, 0xC3, 0x94, 0x7F, 0x69, 0xC7, 0xFC, 0x8E, 0x75, 0x76, + 0xE6, 0xCB, 0xD4, 0x94, 0x63, 0x88, 0x15, 0xEB, 0xA3, 0x2D, 0x97, 0x09, 0x78, 0x11, 0x87, 0x37, + 0xD7, 0x27, 0x85, 0x3F, 0x35, 0x6A, 0xFF, 0x66, 0x6F, 0x24, 0xB0, 0x41, 0x5B, 0xEA, 0x0C, 0x6E, + 0x1A, 0xF6, 0x7D, 0x82, 0x6A, 0x93, 0xFE, 0xD4, 0x88, 0x6F, 0xBC, 0xA8, 0xC9, 0x3A, 0xD2, 0x68, + 0x16, 0x5A, 0x75, 0x5F, 0xB7, 0xEA, 0xED, 0x68, 0x7A, 0x15, 0xF1, 0x95, 0x29, 0x7B, 0x79, 0x49, + 0xCB, 0xD0, 0xA6, 0x00, 0x4D, 0x9A, 0xC2, 0x84, 0xC7, 0xEF, 0x22, 0x49, 0x4B, 0x96, 0x4C, 0x81, + 0xD2, 0x5E, 0x19, 0x1F, 0xD6, 0xBE, 0x72, 0x10, 0xE9, 0x9E, 0xE9, 0xBB, 0xBE, 0x08, 0x97, 0xA1, + 0xB4, 0xD5, 0x16, 0xE2, 0xB2, 0x76, 0xD9, 0x62, 0x5C, 0xAF, 0x57, 0x65, 0x41, 0x2E, 0x5B, 0x2C, + 0x6B, 0x51, 0x9E, 0x5E, 0xA1, 0x7E, 0xF6, 0x34, 0x6F, 0x6E, 0x3D, 0xE5, 0x33, 0x5B, 0x4F, 0xF9, + 0xB4, 0xD6, 0xEF, 0xB4, 0x3E, 0x4F, 0x34, 0x68, 0xF6, 0x35, 0xBA, 0x6C, 0x3A, 0xEB, 0x3A, 0x3D, + 0x51, 0xC1, 0xD9, 0xD6, 0xEA, 0x06, 0x3A, 0x65, 0xBD, 0x6E, 0x8C, 0x16, 0x6D, 0xB5, 0x2A, 0xA2, + 0xD3, 0xAD, 0x45, 0x22, 0x18, 0xDD, 0x56, 0x26, 0xF5, 0xD5, 0x28, 0xD3, 0xB4, 0xCC, 0x5E, 0xA6, + 0x6B, 0xC6, 0x23, 0xAC, 0xFD, 0x0D, 0x89, 0x59, 0xD7, 0xFF, 0x49, 0x1D, 0x6D, 0x0F, 0xF0, 0xC3, + 0xF3, 0xC9, 0xB6, 0x9F, 0x90, 0x44, 0xE7, 0xEF, 0x29, 0x32, 0xA6, 0xB5, 0x6C, 0x49, 0x6C, 0x2A, + 0xE0, 0xCC, 0xCB, 0xE2, 0x44, 0x15, 0x7F, 0x9C, 0xED, 0x45, 0x22, 0xDB, 0xEA, 0x5B, 0x8C, 0x22, + 0xCE, 0x2A, 0x6E, 0x40, 0x75, 0xB3, 0x76, 0xE3, 0xD0, 0x53, 0x1A, 0xDF, 0x04, 0x6E, 0xB5, 0x3C, + 0xA0, 0xE9, 0x85, 0x8A, 0x6C, 0x12, 0x50, 0x05, 0x64, 0xCA, 0x7F, 0x05, 0xBE, 0x71, 0x3C, 0x62, + 0xF1, 0x6D, 0xE6, 0x3B, 0xC3, 0x6C, 0xDE, 0xE2, 0x5C, 0xB7, 0x1E, 0xE0, 0x84, 0x6F, 0xE2, 0xDA, + 0x7C, 0xDE, 0xE5, 0x93, 0x26, 0x59, 0x21, 0x0D, 0xA5, 0x8E, 0xE9, 0x2C, 0x16, 0x95, 0x56, 0x59, + 0x32, 0x60, 0x90, 0x58, 0xB6, 0xAA, 0x3D, 0x20, 0x4A, 0x36, 0x69, 0x16, 0x13, 0x2F, 0x97, 0x01, + 0x40, 0x6B, 0x3B, 0x0E, 0x58, 0xFC, 0x62, 0x63, 0xAD, 0x2C, 0x0D, 0x6C, 0x3E, 0xBB, 0x74, 0x06, + 0x94, 0x70, 0xCB, 0xE0, 0xAD, 0x9D, 0x5D, 0x26, 0xAD, 0x4D, 0xE0, 0xC1, 0x53, 0xF3, 0x2B, 0x7B, + 0x5F, 0xC8, 0xCE, 0x2E, 0x73, 0x3B, 0xFD, 0x23, 0xDA, 0x8F, 0xE2, 0xF9, 0xD2, 0xB2, 0xBB, 0x2D, + 0xB8, 0x8E, 0x55, 0xB0, 0x1B, 0xB7, 0xDC, 0xC7, 0xB2, 0x6F, 0xC8, 0xAD, 0xF2, 0x4B, 0x6A, 0xAF, + 0xDB, 0x6B, 0xE7, 0xC6, 0x00, 0xF2, 0x56, 0x1B, 0x5F, 0x8D, 0x24, 0xBB, 0x79, 0x5A, 0x9F, 0x6E, + 0xFC, 0x73, 0x12, 0x2B, 0x57, 0xBB, 0xF7, 0x25, 0x2F, 0x6E, 0x55, 0x84, 0xD1, 0x2B, 0xB8, 0x3B, + 0x66, 0x3F, 0x2E, 0x29, 0x74, 0x02, 0xA4, 0x52, 0x2C, 0x70, 0x27, 0x24, 0xC2, 0x2B, 0xAA, 0x93, + 0xC8, 0xAC, 0xA0, 0x52, 0xCA, 0x45, 0x7B, 0x25, 0x43, 0x9E, 0x85, 0x95, 0x4C, 0x31, 0x16, 0x3A, + 0x32, 0x64, 0x37, 0xE7, 0x73, 0x66, 0xE8, 0x53, 0x52, 0xA1, 0x43, 0x43, 0x19, 0x15, 0x45, 0x4E, + 0x0D, 0x63, 0xB5, 0x54, 0xD9, 0xB1, 0x61, 0x13, 0x97, 0x29, 0xCA, 0x47, 0x74, 0x70, 0xCC, 0x89, + 0x3E, 0x71, 0x74, 0xC8, 0xE4, 0x98, 0xAB, 0xA0, 0x08, 0x76, 0x7F, 0x87, 0xC9, 0x98, 0x8A, 0x3E, + 0x0F, 0x85, 0xED, 0xBA, 0xDF, 0xC3, 0xDC, 0x48, 0xCC, 0xE8, 0xFB, 0xA8, 0xB2, 0x0F, 0x59, 0xA6, + 0xFF, 0xC3, 0xD8, 0x4D, 0x2C, 0xE6, 0x03, 0x51, 0x98, 0x32, 0x9B, 0x1F, 0x24, 0x19, 0x2D, 0xBF, + 0xAB, 0x2F, 0x44, 0x53, 0x0F, 0x56, 0x2F, 0x49, 0x67, 0xB5, 0x43, 0x5E, 0x98, 0x0B, 0xCE, 0xA5, + 0x79, 0x4C, 0x32, 0x9B, 0x22, 0xBD, 0xC2, 0xBA, 0xD9, 0x62, 0xC3, 0xFC, 0xB0, 0x59, 0x06, 0xE2, + 0x85, 0xE6, 0x95, 0x29, 0x3D, 0xC3, 0x7D, 0x14, 0x5F, 0x90, 0xA2, 0x03, 0xDF, 0x33, 0x77, 0x67, + 0x35, 0xA7, 0x8E, 0x72, 0xB5, 0x8F, 0xAF, 0x3E, 0xE0, 0x5F, 0x45, 0xB2, 0xED, 0xBF, 0x81, 0xF9, + 0x6D, 0xD4, 0xEB, 0xC9, 0x7D, 0x46, 0xA3, 0x4A, 0xAB, 0xBC, 0xCA, 0x5F, 0xFF, 0x9A, 0xA9, 0x13, + 0xD2, 0x78, 0x1A, 0xFA, 0x6C, 0xE5, 0x62, 0x50, 0x37, 0xA4, 0x31, 0xDE, 0xA2, 0xD4, 0x4C, 0x31, + 0xBB, 0xB8, 0x0A, 0x26, 0x0B, 0xB4, 0x47, 0x96, 0x59, 0x1F, 0x10, 0xCB, 0xD4, 0x11, 0x4B, 0x4E, + 0xC5, 0x93, 0x71, 0x72, 0xCD, 0x3C, 0x17, 0xB1, 0x73, 0x45, 0xEE, 0x9C, 0x88, 0xE0, 0x34, 0x4A, + 0xF0, 0xE6, 0x25, 0x75, 0x5B, 0x84, 0x0F, 0x69, 0xC2, 0x12, 0x18, 0xF2, 0xAB, 0xB9, 0xD1, 0x20, + 0xC4, 0xF4, 0x2E, 0xC6, 0x72, 0x61, 0x44, 0x4F, 0x1D, 0xDF, 0x19, 0xD2, 0xF0, 0x03, 0xD6, 0xCC, + 0x44, 0x40, 0xB2, 0xF6, 0xBB, 0xAF, 0xE3, 0x90, 0x38, 0x18, 0x5A, 0xB0, 0x53, 0x1F, 0xD1, 0xEB, + 0xB8, 0x0E, 0x1F, 0x6E, 0x76, 0x71, 0x63, 0xF5, 0x7A, 0x15, 0x7E, 0xC1, 0x3F, 0xFA, 0x60, 0xC8, + 0xC4, 0x1F, 0xEE, 0xEE, 0xEB, 0x34, 0x9D, 0xF0, 0x0E, 0x9F, 0xF8, 0xAF, 0x82, 0xFB, 0x3A, 0xF1, + 0xDC, 0x9D, 0x3A, 0x22, 0xE4, 0xFB, 0x9C, 0xBD, 0xD1, 0xA8, 0x4E, 0x58, 0x16, 0x22, 0xF8, 0x1A, + 0x84, 0xE3, 0x15, 0x56, 0x71, 0x85, 0x37, 0x55, 0xE8, 0x62, 0xEE, 0x9A, 0x3A, 0x4C, 0x8F, 0x07, + 0x78, 0x25, 0x8E, 0x43, 0x90, 0x24, 0x07, 0xC3, 0x21, 0xDE, 0x7D, 0x03, 0x7A, 0x56, 0x11, 0xED, + 0x6A, 0x1C, 0x26, 0xFF, 0x30, 0xBA, 0x15, 0xB3, 0xCD, 0xDE, 0xF7, 0x65, 0xEF, 0x64, 0x89, 0x3C, + 0x99, 0x35, 0x85, 0x95, 0xF7, 0xE3, 0xD1, 0x4D, 0x1C, 0x4F, 0x0A, 0xEF, 0xB5, 0x2A, 0xF5, 0xC4, + 0xF5, 0xD6, 0x37, 0x47, 0xFC, 0x76, 0x2B, 0xCE, 0xC2, 0xEC, 0xF2, 0x6D, 0x2D, 0xBB, 0x40, 0x92, + 0x2D, 0xD8, 0xE5, 0x45, 0xD5, 0x4E, 0x80, 0x9E, 0x47, 0xF4, 0xC4, 0x1F, 0x04, 0x63, 0x34, 0x23, + 0xB2, 0x5A, 0x48, 0xA3, 0x49, 0xE0, 0x47, 0x8C, 0x48, 0x96, 0x91, 0x47, 0x5C, 0xE1, 0x26, 0x07, + 0xFD, 0x5F, 0xF8, 0xA5, 0x6B, 0x58, 0x3E, 0x04, 0x6C, 0xF2, 0x7F, 0x56, 0x5D, 0x90, 0xCF, 0x77, + 0xF4, 0xEE, 0x97, 0x4C, 0xA6, 0xBA, 0xD6, 0x29, 0x7B, 0x97, 0xEF, 0xA6, 0x72, 0x8B, 0xBC, 0x33, + 0x19, 0xFD, 0x0E, 0xAE, 0x62, 0xC7, 0x03, 0x35, 0x54, 0xCA, 0xAD, 0x3A, 0x6E, 0xAD, 0x67, 0xEA, + 0x39, 0xBF, 0xB6, 0x97, 0x54, 0x28, 0x08, 0x6E, 0x15, 0xB5, 0x1E, 0x47, 0xC2, 0x32, 0xC7, 0xCE, + 0xEF, 0x28, 0xE4, 0x3C, 0x2E, 0x80, 0x7C, 0x95, 0xAE, 0x97, 0xCB, 0x6A, 0x9F, 0xE7, 0x5F, 0x2B, + 0x94, 0x17, 0xD6, 0xA9, 0x2A, 0x33, 0x5E, 0xB7, 0x44, 0x6E, 0x22, 0x6F, 0xC7, 0xEF, 0x2A, 0x3B, + 0x46, 0xC3, 0x0F, 0x21, 0xBF, 0x0C, 0x37, 0xCA, 0x65, 0xA8, 0x0C, 0xF1, 0xC3, 0xE0, 0xCE, 0xC7, + 0x6D, 0x77, 0x7A, 0xE7, 0x9C, 0x99, 0x54, 0xEA, 0xE2, 0xB8, 0xAD, 0x7E, 0x85, 0x19, 0x21, 0x9E, + 0x1C, 0x2A, 0x8E, 0x25, 0x8E, 0xD6, 0x67, 0x8E, 0x84, 0xF7, 0xD7, 0x0C, 0x58, 0x5F, 0x40, 0x9E, + 0x1F, 0xA8, 0xB6, 0x9A, 0x35, 0x9F, 0x62, 0x92, 0xEF, 0x49, 0x1C, 0xF3, 0x4B, 0xCC, 0xF8, 0x4A, + 0x2C, 0x66, 0xF4, 0xC0, 0x3B, 0xF6, 0x51, 0xCC, 0x4A, 0xF4, 0x94, 0x20, 0x49, 0x55, 0x45, 0x7B, + 0x55, 0x98, 0x3B, 0x76, 0xEA, 0x9B, 0x62, 0x92, 0x4E, 0x7D, 0x66, 0xD3, 0x70, 0x14, 0x07, 0x03, + 0x4C, 0x75, 0x06, 0xDA, 0xB6, 0x8A, 0x20, 0xFE, 0x9D, 0x91, 0x8F, 0x6E, 0x43, 0x8D, 0x9B, 0xBF, + 0xA5, 0xE0, 0x31, 0x47, 0x19, 0xBA, 0x12, 0x7F, 0x76, 0x18, 0x35, 0x3B, 0xAE, 0x10, 0x83, 0x50, + 0x63, 0x35, 0x0B, 0x44, 0x02, 0x5E, 0xF0, 0x14, 0x8C, 0x2A, 0xD4, 0x6E, 0x4B, 0xEF, 0x64, 0xFB, + 0x26, 0xA4, 0xD7, 0x98, 0x02, 0x4D, 0x56, 0x13, 0x4A, 0x97, 0xE2, 0xC2, 0xB4, 0x7B, 0x39, 0xD2, + 0x97, 0xD3, 0x9E, 0xE2, 0x6A, 0x91, 0x93, 0xEC, 0xEC, 0xC2, 0xCF, 0xBB, 0xB9, 0x8E, 0xFB, 0x83, + 0x14, 0xAA, 0x76, 0x77, 0xDD, 0xCF, 0xDC, 0x5C, 0x4F, 0x2B, 0xE2, 0xED, 0xF5, 0xE4, 0x25, 0x8B, + 0x64, 0x66, 0x4A, 0x66, 0xFC, 0x34, 0x2C, 0xB1, 0x4C, 0xC3, 0xA9, 0x9E, 0x53, 0x61, 0x59, 0xFA, + 0xFD, 0x2C, 0xCF, 0x6F, 0x9C, 0x91, 0xBB, 0x5C, 0xBF, 0xE3, 0xAB, 0x29, 0x6C, 0x76, 0x17, 0x0E, + 0xE4, 0x8C, 0x41, 0x54, 0x35, 0xCB, 0xDC, 0xAC, 0x29, 0x29, 0xF2, 0x6C, 0xC0, 0xAD, 0x49, 0xF2, + 0xAA, 0x6B, 0xE6, 0x7D, 0x46, 0x21, 0x59, 0x5F, 0x6A, 0xDB, 0x95, 0x4D, 0x67, 0xA1, 0xED, 0x4C, + 0x08, 0x29, 0xB7, 0x98, 0xDA, 0xEB, 0x7D, 0x17, 0xF4, 0x1A, 0x4C, 0xE4, 0x0D, 0x4F, 0x58, 0x92, + 0x1C, 0xAB, 0x15, 0xAE, 0x2C, 0xB4, 0x85, 0xB2, 0x91, 0xD1, 0x89, 0x25, 0xD0, 0x38, 0xF6, 0x0C, + 0x8D, 0x57, 0xB2, 0xA1, 0xE0, 0xAF, 0xDD, 0xA5, 0x24, 0x40, 0xE1, 0x90, 0xE6, 0xCC, 0x79, 0xC2, + 0x09, 0xB5, 0xC4, 0xF1, 0x4E, 0xC2, 0x60, 0x88, 0x79, 0x80, 0x01, 0xB0, 0xFC, 0xF5, 0xAD, 0xE3, + 0xBB, 0x23, 0x1A, 0xEA, 0x8C, 0x65, 0x50, 0xB2, 0xCD, 0x99, 0x85, 0xC1, 0x0C, 0xA4, 0x3C, 0x85, + 0xC8, 0x2C, 0x4D, 0xF9, 0xD3, 0x43, 0x22, 0x91, 0xE9, 0x2C, 0x0D, 0x9D, 0x2B, 0xFE, 0xB0, 0x27, + 0xFB, 0x6F, 0x7E, 0x43, 0x23, 0xCD, 0x4B, 0x61, 0x82, 0x17, 0x25, 0x2D, 0x96, 0xC1, 0x05, 0x99, + 0x8E, 0x23, 0x15, 0xEE, 0x84, 0x86, 0x03, 0xCA, 0x4E, 0xF5, 0x79, 0x59, 0x7B, 0xC4, 0x52, 0x77, + 0x90, 0x55, 0xC2, 0xFF, 0x8C, 0x83, 0x18, 0x37, 0x7A, 0x7F, 0x46, 0x3F, 0xB6, 0x92, 0xD5, 0x44, + 0x80, 0xDD, 0x77, 0x42, 0xC5, 0xF3, 0x79, 0xEA, 0xC4, 0x37, 0xED, 0x30, 0x98, 0x02, 0x35, 0x02, + 0xAC, 0x92, 0x24, 0x71, 0xAA, 0xE4, 0x85, 0x31, 0x16, 0x27, 0x96, 0x76, 0x38, 0xD4, 0xFE, 0x97, + 0x50, 0x48, 0xEA, 0xA6, 0x89, 0x3F, 0xD9, 0x9E, 0x5F, 0x90, 0xBC, 0x8B, 0x69, 0xCE, 0x3A, 0xE6, + 0xB1, 0x4B, 0x01, 0x9E, 0x9A, 0x92, 0x5C, 0xB4, 0x45, 0xEE, 0x42, 0x8F, 0x65, 0x41, 0x61, 0xEA, + 0x0D, 0x8B, 0x08, 0xA6, 0xD3, 0xEC, 0x79, 0xAD, 0x9A, 0x25, 0xF7, 0xA5, 0xA1, 0x13, 0x3A, 0x23, + 0xCB, 0xF0, 0xF2, 0xCC, 0x34, 0x24, 0x49, 0x4D, 0x53, 0xC6, 0xC8, 0xCE, 0xF6, 0xF2, 0x06, 0x38, + 0xFB, 0x96, 0x18, 0x71, 0x4C, 0x2C, 0xC3, 0x7D, 0x4F, 0xFB, 0x0F, 0x27, 0xEE, 0xAC, 0x54, 0x2B, + 0xFC, 0x50, 0xF5, 0x7C, 0x2E, 0x66, 0x1C, 0x3B, 0x40, 0xA4, 0xAB, 0x03, 0x55, 0xC7, 0xC0, 0x5C, + 0x40, 0xF7, 0x10, 0x80, 0x80, 0x9A, 0x82, 0x8D, 0x07, 0x93, 0x7D, 0x9C, 0x31, 0x33, 0xEF, 0x59, + 0x89, 0x6B, 0x73, 0xB7, 0xB1, 0x79, 0xC1, 0x1E, 0x93, 0x16, 0x68, 0x15, 0x8A, 0xEE, 0xA4, 0x73, + 0xAF, 0x28, 0x20, 0xB1, 0xDF, 0x83, 0xB3, 0x6E, 0xFE, 0xB8, 0x23, 0x37, 0xB7, 0x4D, 0xA2, 0x1E, + 0x92, 0x34, 0xF6, 0xFA, 0xAF, 0x92, 0x2C, 0x70, 0x6B, 0xFD, 0x85, 0x6D, 0x5A, 0x9F, 0xBA, 0x65, + 0x3D, 0xFD, 0xE8, 0x16, 0x66, 0x13, 0xE0, 0x7D, 0x99, 0xBA, 0xB3, 0xF7, 0x25, 0xB7, 0x8D, 0xD2, + 0x97, 0x04, 0xB9, 0xD1, 0x9D, 0x6E, 0xA7, 0x2B, 0x33, 0x42, 0x7E, 0xB7, 0x4A, 0x4E, 0x3E, 0x63, + 0x97, 0xD3, 0xAF, 0x8A, 0x0F, 0x72, 0xE7, 0x08, 0x2A, 0x6D, 0x34, 0xBB, 0xC0, 0xCC, 0xB6, 0x7C, + 0xD4, 0xAA, 0x0F, 0xD8, 0xCB, 0x57, 0xBE, 0xCB, 0x85, 0xE7, 0xDE, 0x0C, 0x26, 0xF9, 0x1D, 0x95, + 0xCF, 0x5E, 0xBF, 0x3D, 0x38, 0xB7, 0xF7, 0x4E, 0x49, 0x54, 0x73, 0x72, 0x3E, 0x47, 0x0F, 0x95, + 0x44, 0x32, 0xE5, 0xED, 0x55, 0xBA, 0xA1, 0xE0, 0x2E, 0x08, 0xBF, 0xB1, 0x20, 0x20, 0x7D, 0xA9, + 0x6C, 0xC4, 0x8B, 0xE1, 0xB7, 0x3B, 0xEF, 0xDA, 0x3B, 0xE3, 0x0D, 0x2A, 0xA7, 0x4D, 0x56, 0xDA, + 0x7C, 0xAD, 0xE3, 0x75, 0xE4, 0xA4, 0xEC, 0x4F, 0x3B, 0xFD, 0xBE, 0xB9, 0xB2, 0x36, 0x16, 0x83, + 0x2A, 0xC2, 0xBC, 0xB5, 0x20, 0x32, 0x59, 0xAD, 0x87, 0xCB, 0x3D, 0xE3, 0xA1, 0x84, 0x8E, 0x7E, + 0xDC, 0x30, 0xD0, 0xF3, 0x75, 0x6B, 0xCE, 0x49, 0x56, 0x66, 0x4B, 0x7E, 0x7E, 0x46, 0xEF, 0x64, + 0xC6, 0x37, 0x4D, 0xBE, 0x06, 0x03, 0xCD, 0x43, 0x1F, 0x14, 0xCC, 0x69, 0x34, 0x14, 0x0F, 0xCB, + 0xC9, 0x6C, 0x67, 0x07, 0x02, 0x22, 0x94, 0x60, 0xFA, 0xBC, 0x4F, 0xDE, 0xB1, 0xC7, 0x26, 0x08, + 0xBC, 0x0A, 0x4D, 0xC7, 0x13, 0x7C, 0xB9, 0x77, 0xBB, 0x68, 0xE1, 0x2C, 0x6E, 0x31, 0x1E, 0x18, + 0x84, 0xE5, 0x1D, 0xBD, 0x0B, 0x22, 0x72, 0xF1, 0x83, 0xA2, 0xF8, 0x78, 0xDF, 0x18, 0x1F, 0x5C, + 0x09, 0x08, 0x52, 0x53, 0x33, 0x92, 0x4F, 0xA2, 0xF4, 0x45, 0xE6, 0x31, 0xDC, 0xBD, 0x2B, 0x9E, + 0x07, 0xD8, 0x89, 0xC2, 0x0A, 0x46, 0xBE, 0x6F, 0xCA, 0x1A, 0x13, 0x94, 0x2B, 0x3B, 0x87, 0x3B, + 0xFF, 0x14, 0xA5, 0x0A, 0x35, 0x8A, 0xC4, 0xEC, 0x35, 0x9F, 0xEE, 0x14, 0xA8, 0x89, 0x02, 0x3A, + 0x4F, 0x4B, 0x14, 0xE2, 0x9F, 0xEF, 0xA8, 0x0D, 0xD2, 0xDD, 0x01, 0x7F, 0xA7, 0x55, 0x2F, 0x91, + 0xF1, 0x44, 0x50, 0xA8, 0x09, 0x40, 0x37, 0x61, 0x17, 0x07, 0x8A, 0x04, 0x94, 0x07, 0x0A, 0xD9, + 0x11, 0x6E, 0x0E, 0x09, 0x99, 0xA6, 0x2D, 0xAC, 0x2D, 0xD1, 0x68, 0x89, 0xF9, 0xCB, 0x1A, 0x32, + 0x49, 0xB5, 0xA4, 0x40, 0x8C, 0xDA, 0xA6, 0xF2, 0x62, 0x32, 0x38, 0x19, 0xBC, 0xA9, 0xA6, 0x63, + 0x94, 0xAA, 0xC1, 0x7C, 0x07, 0xEC, 0x26, 0x3F, 0xDF, 0x48, 0x49, 0x60, 0x4D, 0x6B, 0x9E, 0x39, + 0xAD, 0x3C, 0x0D, 0x64, 0x54, 0xF0, 0x59, 0x33, 0x7D, 0x66, 0x88, 0xB2, 0xE5, 0xFB, 0x64, 0x95, + 0x00, 0xB8, 0x6D, 0xE4, 0x69, 0xF9, 0x2A, 0x73, 0x50, 0x36, 0xB3, 0xEE, 0x86, 0xDA, 0x01, 0xB6, + 0x63, 0x7A, 0x2E, 0xC8, 0x42, 0x75, 0xCA, 0x69, 0x9F, 0x84, 0x4A, 0x96, 0x0E, 0x1F, 0x41, 0x68, + 0x92, 0xF1, 0x90, 0xDC, 0x8A, 0xE7, 0xE4, 0x8D, 0x1E, 0xF9, 0x29, 0x8E, 0x5F, 0x78, 0x8D, 0xC6, + 0xB5, 0xFE, 0xB7, 0xD6, 0xBF, 0x5C, 0x9C, 0xCA, 0x9B, 0x26, 0x46, 0x7B, 0x96, 0x9E, 0xE9, 0xE8, + 0xE2, 0xE2, 0xFD, 0x45, 0x6D, 0x3E, 0x2B, 0x04, 0xEC, 0xE0, 0xB3, 0x3C, 0x4B, 0xDD, 0xE0, 0xDC, + 0xC2, 0x42, 0x8F, 0xFB, 0xC9, 0xB7, 0x8D, 0xB9, 0xCA, 0xF5, 0x6E, 0xDF, 0xD0, 0x58, 0x33, 0x3E, + 0xFA, 0x92, 0xA1, 0xD4, 0x3E, 0x19, 0xD1, 0x3E, 0xBA, 0x99, 0xD3, 0xAE, 0xB5, 0xDB, 0x3A, 0x79, + 0xF0, 0xF1, 0xE2, 0xE2, 0xE8, 0xEC, 0x83, 0xAD, 0x9B, 0xB9, 0x3D, 0x94, 0x74, 0xA0, 0x99, 0x9D, + 0x4E, 0xD0, 0xD6, 0x61, 0x24, 0xC0, 0x93, 0xF7, 0x4D, 0x35, 0xE1, 0x26, 0x1E, 0x73, 0x65, 0xCC, + 0x42, 0x1A, 0x80, 0xD0, 0xDB, 0x1A, 0x8B, 0x83, 0xD4, 0xF8, 0xB0, 0x5D, 0x08, 0xC8, 0x4E, 0x8D, + 0x9E, 0xC9, 0x13, 0xA1, 0x9F, 0xE7, 0xED, 0x62, 0xEC, 0x7A, 0xA8, 0x37, 0x52, 0xB4, 0x51, 0x64, + 0xF7, 0xB1, 0xB1, 0xCE, 0x70, 0xB1, 0x9B, 0x03, 0xFA, 0x09, 0xE7, 0xD2, 0xDF, 0x5F, 0xBE, 0xD6, + 0x09, 0xBA, 0xD2, 0x70, 0xCF, 0x68, 0x77, 0x56, 0x14, 0xD0, 0xFF, 0x37, 0x22, 0x3F, 0x28, 0x7A, + 0x61, 0xAE, 0x95, 0xEE, 0xFD, 0x31, 0x8D, 0xEB, 0xD3, 0xB8, 0x65, 0xAA, 0xD4, 0x55, 0xF3, 0xB1, + 0x27, 0x4A, 0x1D, 0x9B, 0x75, 0x9A, 0x34, 0x08, 0xB2, 0x4D, 0x92, 0x43, 0x0E, 0x57, 0x1D, 0x52, + 0xCA, 0xE1, 0xBE, 0x0C, 0x14, 0x44, 0x83, 0xD9, 0xAD, 0xE5, 0x26, 0x7C, 0xB6, 0x92, 0x62, 0x7F, + 0x68, 0x5B, 0x42, 0xCB, 0xCE, 0x31, 0x8F, 0x34, 0xB4, 0xCA, 0x6C, 0x3A, 0xB3, 0x06, 0x92, 0x0D, + 0xBA, 0xD6, 0x6B, 0xF9, 0xD7, 0xF5, 0x6D, 0x4F, 0x10, 0x3B, 0x12, 0xBB, 0xC8, 0x76, 0x2C, 0x1C, + 0x53, 0xD2, 0x61, 0x62, 0x5D, 0x68, 0xE4, 0xF1, 0xA9, 0xFA, 0xF0, 0x34, 0xB0, 0x70, 0x4F, 0x99, + 0x99, 0xF5, 0xB8, 0xAA, 0x8D, 0x36, 0x80, 0x29, 0x5E, 0x7B, 0x13, 0xCD, 0x4E, 0xC6, 0xDB, 0x66, + 0x24, 0x53, 0xD7, 0x02, 0xED, 0xDE, 0x78, 0xB7, 0xD4, 0x27, 0x0E, 0xE6, 0x63, 0x0A, 0xEB, 0x18, + 0x5A, 0x16, 0xB2, 0x0C, 0xD2, 0x71, 0xF8, 0x80, 0x33, 0x91, 0x7C, 0xC6, 0x95, 0xC7, 0x54, 0x3C, + 0x4C, 0x78, 0xC4, 0x9D, 0xD8, 0x3F, 0xE9, 0x8F, 0x3B, 0x12, 0xCF, 0x27, 0x87, 0x87, 0x6D, 0x57, + 0xFE, 0xC8, 0x37, 0x0E, 0x13, 0x31, 0x64, 0x9F, 0x84, 0x45, 0x9C, 0x47, 0x3E, 0xA0, 0xD2, 0xF7, + 0xA2, 0x99, 0xB7, 0x15, 0xC9, 0x9C, 0xCF, 0xC2, 0xAA, 0xCF, 0xC5, 0x45, 0x37, 0xCA, 0xA5, 0xA8, + 0xC4, 0x3C, 0x62, 0xD8, 0xA0, 0xE5, 0x3B, 0x3E, 0xF5, 0x3C, 0x76, 0x46, 0x96, 0x12, 0x6E, 0xAA, + 0xDE, 0x5F, 0xBF, 0xA3, 0x2C, 0xD5, 0xB6, 0x79, 0x6C, 0x67, 0x7B, 0x9E, 0x95, 0xE7, 0xA6, 0xC4, + 0x4B, 0x36, 0xEC, 0x01, 0xFA, 0xBB, 0x1B, 0x87, 0x4D, 0x57, 0x43, 0xC6, 0x78, 0xE0, 0xF1, 0x34, + 0x4A, 0xAC, 0xF2, 0xC0, 0xF1, 0x09, 0x45, 0x86, 0x30, 0x93, 0xE9, 0xF9, 0x20, 0x7C, 0xB0, 0x73, + 0x78, 0x71, 0x2A, 0x12, 0x55, 0xF6, 0x08, 0xFF, 0xC6, 0x6B, 0x61, 0x2E, 0xFA, 0xC0, 0x1F, 0x3D, + 0x88, 0x03, 0xBE, 0xA8, 0x45, 0x56, 0x5A, 0x18, 0x33, 0xD4, 0x62, 0x62, 0x6A, 0xEB, 0x87, 0x58, + 0xEA, 0xD3, 0x44, 0x92, 0xF1, 0xA6, 0xE9, 0xD5, 0x6F, 0x88, 0x44, 0xAE, 0x37, 0xF4, 0xE2, 0x54, + 0x4C, 0x60, 0x5D, 0x9B, 0x66, 0xD8, 0x16, 0x56, 0xD4, 0xD9, 0xC5, 0x26, 0x72, 0x2B, 0x9F, 0x9E, + 0x3F, 0x2F, 0xCA, 0x67, 0xA4, 0xA2, 0x41, 0x28, 0xF5, 0x95, 0x7A, 0x33, 0x15, 0x1C, 0x6C, 0xE1, + 0xB1, 0xFB, 0xA3, 0x11, 0x19, 0x06, 0x81, 0x5B, 0xA1, 0x35, 0x81, 0xD6, 0xA9, 0x7C, 0x67, 0x6E, + 0xDE, 0x46, 0xE4, 0x4A, 0xBF, 0x8A, 0x00, 0x48, 0x7F, 0xC2, 0x9C, 0x2F, 0xB2, 0xB2, 0x03, 0x5E, + 0xB6, 0x51, 0x01, 0xF5, 0xC1, 0x40, 0x82, 0x48, 0x13, 0x3D, 0xBB, 0x33, 0xA7, 0x9F, 0x26, 0xC1, + 0xB2, 0x1D, 0x95, 0x67, 0x12, 0x44, 0x91, 0x87, 0xB1, 0x4C, 0x5C, 0x1B, 0xD8, 0x53, 0xE5, 0xB2, + 0x46, 0x32, 0x14, 0xD3, 0x0F, 0xA7, 0xA7, 0xED, 0x31, 0xFF, 0x49, 0xBF, 0x11, 0xDB, 0xC7, 0x15, + 0xDB, 0xC7, 0xD3, 0xD3, 0x7E, 0xBF, 0x1D, 0xB1, 0x1F, 0xAD, 0x39, 0xB1, 0x7C, 0x06, 0x00, 0x2B, + 0xE9, 0xE7, 0x67, 0x56, 0x3D, 0xD9, 0xC5, 0x8B, 0x18, 0x8B, 0x73, 0xEE, 0x3F, 0x30, 0xC0, 0xCB, + 0x0F, 0xDA, 0x64, 0x1D, 0x46, 0xD9, 0x56, 0x67, 0x6D, 0x6D, 0xFD, 0x45, 0x07, 0x87, 0x17, 0xE3, + 0x5F, 0x3B, 0x8D, 0x2E, 0x4B, 0x47, 0xFA, 0x2E, 0xE9, 0x2D, 0x03, 0xF1, 0x7B, 0x1C, 0x77, 0x1D, + 0x76, 0xDD, 0x11, 0x46, 0x58, 0x0F, 0x5F, 0x08, 0x0B, 0xEE, 0xF0, 0x61, 0xB4, 0xF5, 0x0E, 0xE9, + 0x6C, 0x90, 0xDE, 0x46, 0xBB, 0xD7, 0x59, 0xDF, 0xB2, 0x90, 0x92, 0xDA, 0xA2, 0x5D, 0xB2, 0xB6, + 0x64, 0x4A, 0x7A, 0x8C, 0x98, 0xB5, 0x94, 0x98, 0x95, 0x6E, 0x67, 0x63, 0xA5, 0xDB, 0x5D, 0xE9, + 0x6C, 0xB4, 0xBB, 0x9B, 0x3D, 0x1B, 0x39, 0x76, 0x8B, 0xB6, 0x8B, 0x01, 0x9A, 0x4B, 0x22, 0xED, + 0x05, 0xD2, 0x74, 0x4D, 0xEF, 0x68, 0xC8, 0xE9, 0xE9, 0x76, 0x91, 0x9A, 0x97, 0x2F, 0xB7, 0xB6, + 0x7A, 0xA4, 0x71, 0xC8, 0x35, 0x0B, 0xAB, 0xF0, 0xDF, 0x9A, 0x09, 0x8D, 0xE9, 0x32, 0xD6, 0xA7, + 0x43, 0x07, 0x93, 0x03, 0xF6, 0xBD, 0xA1, 0xAF, 0xAF, 0x1A, 0xF4, 0xB1, 0xDB, 0x49, 0x0D, 0x47, + 0x6A, 0xA5, 0x92, 0x62, 0xBE, 0xDE, 0xC2, 0xA0, 0xC8, 0x3D, 0xC5, 0xA8, 0xB5, 0x90, 0x75, 0x75, + 0xFE, 0xD6, 0xDB, 0x05, 0x8B, 0x9C, 0x04, 0xE3, 0xC5, 0x58, 0xC1, 0xCD, 0x47, 0x1A, 0x27, 0xAD, + 0x13, 0xA1, 0x5F, 0x76, 0x49, 0x84, 0xBA, 0xB2, 0xC2, 0x1E, 0xFD, 0x05, 0xAB, 0x90, 0xCA, 0xD9, + 0xE1, 0xAF, 0xFF, 0x7A, 0x3E, 0xCF, 0x42, 0xC7, 0x4A, 0x28, 0xB7, 0xDC, 0x2D, 0xB6, 0xF5, 0x66, + 0x77, 0x2D, 0x05, 0x52, 0x89, 0x86, 0x44, 0x80, 0xC7, 0x74, 0x43, 0xA9, 0x13, 0x16, 0xD8, 0x59, + 0x74, 0xB1, 0x2A, 0x53, 0x9B, 0xF8, 0x92, 0x23, 0x52, 0x28, 0x7E, 0x81, 0xC7, 0x25, 0xB9, 0xA5, + 0x9B, 0x60, 0xDC, 0x57, 0x57, 0xB3, 0x23, 0x5D, 0x7D, 0xD3, 0x63, 0xFE, 0xB9, 0x99, 0xC3, 0x55, + 0x8E, 0xD7, 0xF9, 0x7D, 0xD2, 0x18, 0x7D, 0xEE, 0x3C, 0xF4, 0x9A, 0x9D, 0x2E, 0x02, 0x5B, 0xFD, + 0x81, 0xBC, 0xE2, 0x93, 0x2E, 0x10, 0x98, 0x78, 0x60, 0xB1, 0x49, 0x84, 0xBE, 0x68, 0x50, 0x84, + 0x5D, 0xD1, 0x41, 0x28, 0xA0, 0xF9, 0xDD, 0x9E, 0x8E, 0x0A, 0x23, 0x9D, 0xE8, 0xD2, 0x6A, 0x2B, + 0x3B, 0x89, 0x89, 0xE2, 0xC7, 0xA8, 0xDA, 0x7D, 0x20, 0xF6, 0x56, 0x9F, 0xE7, 0x4F, 0x63, 0x16, + 0x6C, 0x51, 0x80, 0x28, 0x41, 0x73, 0x7A, 0xAA, 0x06, 0xA6, 0x1E, 0x7B, 0x30, 0x25, 0xC3, 0xB4, + 0xA2, 0x4D, 0xB1, 0xE9, 0x44, 0xCC, 0x02, 0xC2, 0xDF, 0x5F, 0xB3, 0x57, 0x6C, 0x51, 0x18, 0x2B, + 0x5D, 0xD3, 0x8F, 0xBD, 0x28, 0xEB, 0x2F, 0xCF, 0xDE, 0x5F, 0x1E, 0x1E, 0x1D, 0x9C, 0x9C, 0xEE, + 0xBD, 0x33, 0xA4, 0x10, 0x51, 0x98, 0x78, 0x5C, 0xEC, 0x56, 0x42, 0x8F, 0xC1, 0x6E, 0x55, 0x1D, + 0xF8, 0x66, 0x8A, 0xB7, 0xB0, 0xB2, 0x2C, 0x1D, 0x48, 0x2A, 0xA3, 0xD5, 0x26, 0x92, 0x8F, 0x7F, + 0x4E, 0xF8, 0x25, 0x1A, 0x00, 0xCB, 0x94, 0xF7, 0x63, 0x2C, 0x4B, 0x29, 0x89, 0xEC, 0x79, 0x0A, + 0x64, 0x95, 0x6C, 0x82, 0xE9, 0x67, 0x37, 0xC3, 0x24, 0x8E, 0x55, 0xB2, 0xB6, 0x89, 0xD7, 0xA2, + 0x33, 0x8F, 0x4C, 0x67, 0x40, 0x36, 0xAD, 0x78, 0xFE, 0x8C, 0xFC, 0xB7, 0x6E, 0x89, 0x16, 0x1C, + 0x80, 0x1B, 0x85, 0x03, 0x70, 0x3D, 0x19, 0x80, 0xDA, 0xF4, 0xBB, 0xBC, 0xF1, 0x57, 0x71, 0xF4, + 0xA5, 0xC3, 0x4E, 0x53, 0x83, 0x9C, 0x31, 0x67, 0xEA, 0xFF, 0xAC, 0xA3, 0x2C, 0x77, 0x8C, 0xD9, + 0x95, 0x51, 0x63, 0x0D, 0x8B, 0x92, 0x14, 0x0D, 0x2C, 0x80, 0xED, 0x9A, 0x38, 0xAB, 0x66, 0xE9, + 0x4A, 0xA4, 0x4E, 0x03, 0x15, 0xB4, 0x47, 0x57, 0x1F, 0x4D, 0x57, 0xBA, 0x5C, 0xDA, 0x2B, 0x8F, + 0x24, 0xEE, 0xCB, 0xD3, 0xD3, 0xCB, 0xC3, 0xBD, 0xFE, 0x5B, 0x43, 0xE8, 0x22, 0xF6, 0x27, 0xB5, + 0x3C, 0x22, 0x88, 0x7F, 0xC5, 0xBC, 0xE4, 0x91, 0x4A, 0xD8, 0x78, 0x12, 0x3B, 0x15, 0x47, 0x8E, + 0xE0, 0x8C, 0x57, 0xAE, 0x53, 0x7B, 0x98, 0x91, 0xDD, 0x93, 0x8A, 0x22, 0x5F, 0x12, 0xBD, 0x44, + 0x12, 0x72, 0xD9, 0xBA, 0x74, 0x49, 0x80, 0xFD, 0xFD, 0xC1, 0x84, 0xF1, 0xC3, 0x4C, 0x4E, 0x0A, + 0x7B, 0xAA, 0xCC, 0x51, 0xC6, 0x33, 0xE7, 0xB2, 0x43, 0xD9, 0x49, 0xEA, 0x11, 0x66, 0x90, 0x45, + 0x34, 0xCE, 0x98, 0x3A, 0xB8, 0xCA, 0xA5, 0xFE, 0x92, 0xA5, 0x6A, 0xDC, 0x76, 0x09, 0x13, 0x52, + 0xD3, 0xFA, 0x48, 0xDD, 0x13, 0xB6, 0x8D, 0x3C, 0x9E, 0x6D, 0xAB, 0x38, 0x92, 0xC8, 0xFF, 0x5F, + 0x66, 0x4D, 0x97, 0x42, 0x2F, 0x91, 0x02, 0x79, 0x9C, 0x25, 0x3D, 0x1F, 0xBA, 0x3F, 0x90, 0x28, + 0x7E, 0x34, 0xA3, 0xF6, 0xAF, 0x65, 0xCF, 0x84, 0x87, 0x47, 0x3B, 0x22, 0xB1, 0x34, 0xE2, 0xA7, + 0x24, 0x96, 0x82, 0x24, 0x6B, 0xC2, 0x56, 0xD3, 0xB8, 0x27, 0x68, 0x61, 0xB6, 0x7C, 0x86, 0x53, + 0x7A, 0xA8, 0x15, 0x57, 0x33, 0x7A, 0x37, 0xD3, 0xFB, 0x74, 0x2D, 0x12, 0x4C, 0x63, 0xFC, 0xC3, + 0x11, 0xEE, 0x6B, 0x68, 0xD4, 0x0F, 0x74, 0x67, 0x34, 0x7A, 0x56, 0xAF, 0x80, 0x17, 0x63, 0x4A, + 0xEA, 0xC6, 0x80, 0xA8, 0xB7, 0x08, 0x8D, 0x07, 0xDA, 0xB3, 0x9C, 0x48, 0x37, 0xA3, 0x43, 0xA1, + 0xAB, 0x65, 0x53, 0x08, 0xBB, 0xE3, 0x5A, 0x78, 0xF3, 0x94, 0x13, 0x37, 0xBE, 0xFB, 0xB0, 0xE8, + 0x53, 0x75, 0x85, 0x6A, 0x5A, 0x07, 0x6D, 0xAA, 0x3F, 0xE9, 0xB7, 0xA6, 0xC2, 0x66, 0xF3, 0xD8, + 0x52, 0x25, 0xC3, 0x7E, 0xE8, 0xB3, 0x20, 0x99, 0x97, 0xCA, 0x3E, 0x01, 0xF6, 0x3A, 0x0B, 0x42, + 0x5B, 0x2A, 0x30, 0xB9, 0x20, 0x5E, 0x32, 0xC8, 0xFE, 0xE7, 0xD3, 0xFD, 0xF7, 0xEF, 0x18, 0x50, + 0xF3, 0xDA, 0xC2, 0x28, 0xF0, 0x87, 0x2C, 0x5F, 0xC2, 0x21, 0x1D, 0x86, 0xD4, 0x74, 0x1C, 0x64, + 0x24, 0x61, 0x88, 0x16, 0x36, 0x34, 0x26, 0x00, 0x6B, 0x3D, 0x18, 0xA2, 0x9B, 0x1D, 0x73, 0xA7, + 0x9B, 0x94, 0xBE, 0x26, 0xB9, 0x76, 0x4D, 0x0E, 0x6E, 0xBB, 0x5E, 0x0D, 0xB2, 0xC3, 0xF6, 0x45, + 0x33, 0x93, 0x69, 0x68, 0x41, 0xF1, 0xE6, 0x91, 0x96, 0x0C, 0xA1, 0x0C, 0x0B, 0x9F, 0xC3, 0xA8, + 0x62, 0xD6, 0x45, 0x56, 0xDD, 0xCE, 0x7A, 0xF3, 0x97, 0xA4, 0x28, 0x73, 0x11, 0xB7, 0xF2, 0x14, + 0xD4, 0x71, 0x9D, 0x9B, 0x8B, 0xBE, 0xFF, 0xF9, 0x6F, 0x9D, 0x40, 0xFC, 0x56, 0xAF, 0xE9, 0x64, + 0xCE, 0x03, 0x97, 0xD8, 0xFA, 0xBD, 0x74, 0xDB, 0x72, 0xA9, 0xB8, 0xFE, 0x96, 0x61, 0x5E, 0x96, + 0x0A, 0x4E, 0xD9, 0xC8, 0x2C, 0x1F, 0xAA, 0x62, 0x66, 0x96, 0xD7, 0x79, 0x65, 0x7D, 0xB2, 0x7C, + 0x8A, 0x1F, 0x13, 0xB6, 0xB1, 0x59, 0xFC, 0x97, 0xB0, 0xBE, 0x1A, 0xCD, 0xA7, 0x36, 0x57, 0xF3, + 0x2C, 0x34, 0x0B, 0x00, 0x45, 0x34, 0x57, 0xB6, 0xFB, 0x9B, 0x4B, 0xB7, 0xFB, 0xFD, 0xFE, 0xDC, + 0x96, 0x3F, 0xC3, 0xA2, 0x27, 0x9A, 0x11, 0x84, 0xD6, 0xCD, 0x3F, 0x29, 0xD8, 0x08, 0x5F, 0x79, + 0x22, 0xCA, 0x17, 0x9E, 0x30, 0x6C, 0xC4, 0xD7, 0xB3, 0x33, 0xC9, 0x5F, 0x6B, 0xB5, 0xC7, 0xEA, + 0x43, 0x73, 0xEE, 0x59, 0xC9, 0x46, 0x3B, 0x79, 0x6C, 0xC6, 0x1B, 0xE6, 0x75, 0xE9, 0xEA, 0xAE, + 0xDC, 0xC5, 0xB3, 0x9A, 0x85, 0x25, 0x2B, 0xD0, 0x82, 0x3D, 0x29, 0x96, 0xC3, 0x13, 0xF7, 0xC5, + 0x98, 0x3C, 0x1E, 0x61, 0x44, 0x17, 0x75, 0x28, 0x73, 0x09, 0x45, 0xC7, 0x67, 0xC4, 0xFC, 0xC9, + 0x20, 0x9C, 0x01, 0xCC, 0x6E, 0xB2, 0xCD, 0xEA, 0x5F, 0xDD, 0xD5, 0x76, 0x8C, 0x77, 0x6D, 0x07, + 0xCD, 0x6D, 0xA2, 0xE7, 0x02, 0x90, 0xE7, 0xDB, 0xB0, 0x13, 0x6E, 0xF1, 0x2C, 0x53, 0xB0, 0x71, + 0xBD, 0x09, 0xD5, 0x20, 0x41, 0x9E, 0x22, 0x6B, 0x17, 0x37, 0xCB, 0xF2, 0xDA, 0xCC, 0x8A, 0x12, + 0x8C, 0x01, 0x9F, 0xB5, 0xBD, 0x39, 0x56, 0xD3, 0x92, 0x3B, 0x89, 0x04, 0x5A, 0xCF, 0x11, 0x2E, + 0x46, 0x43, 0x6A, 0xE5, 0x1C, 0xF8, 0x73, 0x96, 0x23, 0x54, 0xDD, 0xBE, 0xFB, 0xDA, 0x86, 0x5D, + 0x80, 0x76, 0xC8, 0x04, 0x1A, 0xF1, 0x7C, 0x3C, 0x62, 0xEB, 0xAE, 0x5C, 0x88, 0x15, 0x25, 0x69, + 0xBC, 0x58, 0xC1, 0x06, 0x3C, 0xBA, 0xC3, 0x67, 0x6F, 0x48, 0x51, 0x15, 0x76, 0x4C, 0xCF, 0xDF, + 0x50, 0x7D, 0x65, 0xA4, 0x3A, 0xE5, 0x92, 0xA8, 0x7D, 0xF4, 0xBF, 0xF9, 0x96, 0x27, 0x3A, 0x8D, + 0xA4, 0xBA, 0x03, 0xBC, 0x99, 0xDA, 0xA8, 0xBC, 0x6D, 0xCF, 0xC1, 0xA5, 0x7A, 0x27, 0x96, 0x8A, + 0x10, 0xF6, 0x54, 0xB9, 0x28, 0x53, 0x57, 0xE5, 0x52, 0x51, 0x5E, 0x16, 0xE1, 0x24, 0x8F, 0x87, + 0x94, 0xCF, 0xC7, 0xB9, 0x98, 0x57, 0x1E, 0x09, 0x33, 0x5B, 0xBD, 0x14, 0xF0, 0x38, 0xF1, 0x2C, + 0x2D, 0xBD, 0xBF, 0x45, 0x78, 0x35, 0x9F, 0xD6, 0xD2, 0xFB, 0xAB, 0x9A, 0xCB, 0xC2, 0xAE, 0x3F, + 0x42, 0x9F, 0x2B, 0xE1, 0xE6, 0xDD, 0x7F, 0x0C, 0xEC, 0xE6, 0x6C, 0x51, 0xA4, 0x6F, 0x2B, 0x85, + 0x24, 0x7C, 0x7F, 0x96, 0x67, 0x6E, 0xBE, 0xFF, 0x3F, 0xB0, 0x0B, 0x15, 0x39, 0xE9, 0x18, 0x00 }; ///main_js //To convert AP-Config\index.html to index_html[], run the Python index_html_zipper.py script in the Tools folder: @@ -796,875 +800,881 @@ static const uint8_t main_js[] PROGMEM = { // python index_html_zipper.py static const uint8_t index_html[] PROGMEM = { - 0x1F, 0x8B, 0x08, 0x08, 0x64, 0x5F, 0x14, 0x65, 0x02, 0xFF, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, + 0x1F, 0x8B, 0x08, 0x08, 0xBF, 0x23, 0x3C, 0x65, 0x02, 0xFF, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x2E, 0x67, 0x7A, 0x69, 0x70, 0x00, 0xED, 0x7D, 0xD9, 0x72, 0xE3, 0x48, 0x92, 0xE0, 0x7B, 0x7E, 0x45, 0x0C, 0x67, 0x67, 0x52, 0x9A, 0x16, 0x29, 0x92, 0x3A, 0x52, 0xA9, - 0xCE, 0xA4, 0x19, 0x75, 0x65, 0xCA, 0x5A, 0x52, 0x72, 0x45, 0x55, 0xD7, 0xB1, 0xB6, 0x5B, 0x06, - 0x02, 0x41, 0x12, 0x9D, 0x20, 0xC0, 0x02, 0x02, 0xA2, 0x54, 0x63, 0x33, 0xD6, 0x9F, 0x31, 0xF3, - 0x21, 0xFB, 0x03, 0xFB, 0x29, 0xFD, 0x25, 0xEB, 0xEE, 0x11, 0x00, 0x01, 0xF0, 0xC0, 0x21, 0x9E, - 0x2A, 0x65, 0x59, 0x49, 0x22, 0x88, 0xB8, 0x3C, 0xDC, 0x3D, 0xDC, 0x3D, 0xFC, 0xF8, 0xF4, 0x4F, - 0x17, 0xDF, 0xCE, 0x1F, 0x7E, 0x6E, 0x5D, 0xB2, 0xBE, 0x18, 0x58, 0x8D, 0x77, 0x9F, 0xF0, 0x17, - 0xB3, 0x34, 0xBB, 0xF7, 0xB9, 0xC4, 0xED, 0x52, 0xE3, 0x1D, 0x3C, 0xE1, 0x9A, 0xD1, 0x78, 0xC7, - 0xE0, 0xDF, 0xA7, 0x01, 0x17, 0x1A, 0xD3, 0xFB, 0x9A, 0xEB, 0x71, 0xF1, 0xB9, 0xE4, 0x8B, 0x6E, - 0xF9, 0xA4, 0xC4, 0xF6, 0xA3, 0x5F, 0xF6, 0x85, 0x18, 0x96, 0xF9, 0x6F, 0xBE, 0xF9, 0xF8, 0xB9, - 0xF4, 0x53, 0xF9, 0x87, 0x66, 0xF9, 0xDC, 0x19, 0x0C, 0x35, 0x61, 0x76, 0x2C, 0x5E, 0x62, 0xBA, - 0x63, 0x0B, 0x6E, 0x43, 0xCB, 0xEB, 0xCB, 0xCF, 0xDC, 0xE8, 0xF1, 0x3D, 0xBD, 0xEF, 0x3A, 0x03, - 0xFE, 0xB9, 0x36, 0xEE, 0x44, 0x98, 0xC2, 0xE2, 0x8D, 0xF6, 0x50, 0x73, 0xBF, 0x5F, 0xF9, 0x36, - 0xBB, 0x7F, 0xF8, 0x0B, 0x6B, 0x73, 0xE1, 0x0F, 0x3F, 0xED, 0xCB, 0x6F, 0x22, 0x43, 0xD9, 0x1A, - 0x34, 0x2D, 0x3D, 0x9A, 0x7C, 0x34, 0x74, 0x5C, 0x51, 0xA2, 0x6F, 0xF0, 0x5F, 0x38, 0xCA, 0xC8, - 0x34, 0x44, 0xFF, 0xB3, 0xC1, 0x1F, 0x4D, 0x9D, 0x97, 0xE9, 0xC3, 0x1E, 0x33, 0x6D, 0x53, 0x98, - 0x9A, 0x55, 0xF6, 0x74, 0xCD, 0x82, 0x81, 0xF7, 0xD8, 0x40, 0x7B, 0x32, 0x07, 0xFE, 0x60, 0xFC, - 0xC0, 0xF7, 0xB8, 0x4B, 0x9F, 0x34, 0x98, 0xF3, 0xE7, 0xEA, 0x1E, 0xF3, 0xFA, 0xAE, 0x69, 0x7F, - 0x2F, 0x0B, 0xA7, 0xDC, 0x35, 0xC5, 0xE7, 0x67, 0xEE, 0x8D, 0x67, 0x6B, 0xC1, 0x17, 0xCC, 0xE5, - 0xD6, 0xE7, 0x92, 0x27, 0x9E, 0x2D, 0xEE, 0xF5, 0x39, 0x17, 0x25, 0xD6, 0x77, 0x79, 0x17, 0x9E, - 0xB8, 0xFA, 0x7E, 0xC7, 0x71, 0x84, 0x27, 0x5C, 0x6D, 0x58, 0x19, 0x98, 0x76, 0x45, 0xF7, 0xBC, - 0x52, 0xC6, 0x86, 0xF4, 0x34, 0xDA, 0xC0, 0xD3, 0x5D, 0x73, 0x28, 0x18, 0x7C, 0x27, 0x5F, 0xF8, - 0xDB, 0x6F, 0x3E, 0x77, 0x9F, 0xCB, 0x07, 0x95, 0xE3, 0x4A, 0x95, 0x3A, 0xFF, 0x1B, 0xBC, 0xFA, - 0x69, 0x5F, 0xBE, 0x36, 0xA3, 0x4D, 0x7C, 0x36, 0xB9, 0x1A, 0x74, 0x7C, 0xDB, 0x80, 0x09, 0x4D, - 0xB6, 0x8B, 0x36, 0x6C, 0x84, 0x5B, 0xF0, 0x3F, 0x76, 0x0C, 0x47, 0xF7, 0x07, 0xB0, 0x0B, 0xBB, - 0x15, 0xC7, 0xDE, 0x79, 0xAF, 0x5B, 0xA6, 0xFE, 0xFD, 0xFD, 0x1E, 0x7B, 0x5F, 0x11, 0x4E, 0xAF, - 0x67, 0xF1, 0x72, 0x47, 0xD8, 0xF0, 0xB1, 0xEB, 0xDB, 0xBA, 0x30, 0x1D, 0x9B, 0xED, 0xF0, 0x5D, - 0xF6, 0xEF, 0x61, 0x6B, 0xD9, 0x03, 0x2C, 0xDF, 0x77, 0x5D, 0xE8, 0xE2, 0x41, 0x73, 0x7B, 0x5C, - 0x54, 0xF4, 0xBE, 0x69, 0x19, 0xF0, 0xF9, 0x7F, 0x55, 0xFF, 0xF7, 0xAE, 0xEA, 0xE6, 0xDC, 0xD2, - 0x3C, 0x6F, 0xE7, 0xBD, 0x09, 0x3B, 0x5E, 0xD6, 0x35, 0x97, 0x8B, 0xB2, 0xE1, 0x8C, 0x6C, 0x16, - 0xF9, 0xEC, 0x0F, 0xDF, 0xEF, 0xFE, 0x39, 0xEC, 0xF8, 0x3F, 0x76, 0xE5, 0x74, 0x93, 0xB3, 0x47, - 0x60, 0x8F, 0x27, 0x5F, 0xF1, 0x04, 0x20, 0xAC, 0x5E, 0xEE, 0xB9, 0x8E, 0x3F, 0x4C, 0x4C, 0xAB, - 0xCF, 0xCD, 0x5E, 0x5F, 0x9C, 0xB2, 0xEA, 0x9F, 0x63, 0x8F, 0x9D, 0x47, 0xEE, 0x76, 0x2D, 0x67, - 0x74, 0xCA, 0xFA, 0xA6, 0x61, 0x70, 0x3B, 0xFE, 0x2D, 0x40, 0xD0, 0xF6, 0x4C, 0x5C, 0xE8, 0xA9, - 0xEA, 0x80, 0x55, 0x2B, 0x87, 0x1E, 0xE3, 0x9A, 0xC7, 0xE3, 0x6F, 0x76, 0x1C, 0xD7, 0x00, 0xEC, - 0xEB, 0x38, 0x42, 0x38, 0x83, 0x53, 0xE6, 0x39, 0x96, 0x69, 0xB0, 0xDA, 0xF0, 0x89, 0xFD, 0xB3, - 0x5E, 0xC5, 0xFF, 0x22, 0x4B, 0x79, 0x37, 0x9E, 0xAF, 0x65, 0x7A, 0x62, 0xB3, 0x67, 0x8B, 0xFF, - 0x86, 0x9A, 0x61, 0x98, 0x76, 0xAF, 0xEC, 0xCA, 0x39, 0x1D, 0x55, 0x87, 0x4F, 0xD3, 0x97, 0x23, - 0xBB, 0x05, 0xA2, 0xF0, 0x98, 0x30, 0xF6, 0xA6, 0x3F, 0xEF, 0x27, 0x56, 0x2A, 0xBF, 0x3B, 0x65, - 0xB6, 0x63, 0x27, 0x26, 0x39, 0x00, 0xEC, 0x31, 0xED, 0xB2, 0xC5, 0xBB, 0x08, 0x88, 0x19, 0x63, - 0x76, 0x7C, 0x58, 0x82, 0x7D, 0xDA, 0x05, 0xA4, 0xF5, 0x12, 0x3D, 0x3B, 0xBE, 0x00, 0x62, 0xE5, - 0x31, 0x20, 0x46, 0x67, 0x6B, 0xDA, 0xF8, 0xF5, 0xA5, 0xEB, 0x3A, 0x6E, 0xA2, 0xA5, 0x61, 0x7A, - 0x43, 0x4B, 0x7B, 0x3E, 0x65, 0xF2, 0x95, 0xF8, 0xB4, 0x74, 0xC7, 0x72, 0x60, 0xBE, 0x2E, 0x37, - 0xE2, 0xCF, 0xBB, 0xC0, 0xBC, 0xCA, 0x9E, 0xF9, 0x3B, 0x0C, 0xE8, 0x0D, 0x34, 0xCB, 0xE2, 0xEE, - 0xBC, 0x61, 0xDB, 0xBE, 0xAE, 0x23, 0x3C, 0xF2, 0x0F, 0xDC, 0x73, 0x79, 0x72, 0xE3, 0xE7, 0x0D, - 0x1D, 0x7E, 0x3F, 0x52, 0x28, 0xD5, 0x71, 0x2C, 0x63, 0xD6, 0xF6, 0x3D, 0x95, 0xA9, 0x7D, 0x62, - 0x56, 0xB3, 0x37, 0x02, 0xFF, 0x11, 0x7B, 0x3E, 0x65, 0x07, 0xD5, 0x7F, 0x99, 0xDD, 0xAB, 0xEC, - 0xA1, 0x5E, 0x9D, 0xD7, 0x71, 0x7D, 0x0E, 0x5A, 0x05, 0x3D, 0x1C, 0xCE, 0xED, 0xE1, 0x70, 0x76, - 0x0F, 0x9A, 0x10, 0xC0, 0x74, 0x13, 0x8D, 0x87, 0x4E, 0x40, 0x2D, 0x5A, 0x07, 0x48, 0xC0, 0x17, - 0x09, 0x80, 0xFF, 0x5E, 0x36, 0x6D, 0x83, 0x3F, 0x9D, 0xB2, 0x5A, 0xB5, 0x9A, 0x20, 0x09, 0x45, - 0x0A, 0xB5, 0x09, 0x68, 0xC0, 0xA1, 0x54, 0x56, 0x10, 0x39, 0xAE, 0x4E, 0xF9, 0x96, 0xA6, 0x2B, - 0x9C, 0x21, 0x90, 0x51, 0x7C, 0xB2, 0x8A, 0xBD, 0x49, 0x86, 0xF6, 0x69, 0x5F, 0x1E, 0xDD, 0xEF, - 0x3E, 0x75, 0x1C, 0xE3, 0x59, 0xF1, 0x78, 0xC3, 0x7C, 0x64, 0x3A, 0xF2, 0xCD, 0xCF, 0x25, 0x3C, - 0x28, 0x35, 0x40, 0x10, 0xB7, 0xC4, 0x4C, 0xE3, 0x73, 0x49, 0x2D, 0xEF, 0x1A, 0x1E, 0x97, 0xC6, - 0xDC, 0x90, 0x1A, 0x68, 0x96, 0xD9, 0xB3, 0x3F, 0x97, 0x68, 0xBE, 0xA5, 0xA0, 0xB9, 0x7A, 0x3F, - 0xF2, 0x2E, 0xBD, 0x6F, 0x0E, 0x7A, 0xC9, 0xEE, 0xAE, 0x4C, 0x8B, 0xDF, 0xC1, 0x69, 0x5D, 0x1A, - 0x1F, 0x2D, 0x67, 0xF2, 0xDB, 0xFA, 0xAF, 0xE7, 0x7D, 0x5A, 0x4D, 0xAF, 0x32, 0xB4, 0x7B, 0x25, - 0x18, 0x08, 0xCE, 0x6D, 0xF5, 0x1D, 0xB3, 0xF8, 0x23, 0xB7, 0x4A, 0x0D, 0x60, 0xD0, 0x43, 0xCD, - 0x8E, 0xF6, 0xD9, 0xE2, 0xAE, 0x0E, 0x07, 0x43, 0x29, 0x36, 0x30, 0x21, 0xB7, 0x9C, 0x19, 0xA1, - 0x1F, 0x0C, 0x86, 0x60, 0xF8, 0x5C, 0x0A, 0xC8, 0x41, 0x51, 0x43, 0xA9, 0xF1, 0xA7, 0xE3, 0x0F, - 0x00, 0x23, 0xE8, 0x33, 0xB2, 0xCA, 0x7D, 0x58, 0xA6, 0x82, 0x90, 0xFC, 0x73, 0x1E, 0xB4, 0x12, - 0x1D, 0x13, 0xD3, 0x89, 0xEE, 0x0A, 0x21, 0xE1, 0x78, 0x0F, 0xE5, 0x16, 0x4A, 0x20, 0xBB, 0x1C, - 0x44, 0xA7, 0x6B, 0xBB, 0xE5, 0x3A, 0x48, 0xB8, 0x51, 0x38, 0x77, 0x1A, 0xF7, 0xF8, 0x9D, 0x00, - 0x58, 0x7C, 0xDA, 0xEF, 0x34, 0x3E, 0x75, 0x5C, 0xFA, 0x1F, 0x25, 0x20, 0x29, 0xC2, 0x30, 0xD3, - 0x03, 0x7E, 0x81, 0x67, 0x32, 0x82, 0x8B, 0xB5, 0x2C, 0xE4, 0xC8, 0x6C, 0xA4, 0x99, 0xA2, 0x52, - 0xA9, 0xAC, 0x6A, 0xEA, 0x28, 0xCE, 0x59, 0x5C, 0xF0, 0x29, 0x33, 0x67, 0x17, 0xD0, 0xD9, 0x8C, - 0xA9, 0xF7, 0x35, 0x0F, 0x78, 0xF3, 0x88, 0x51, 0x1F, 0xAB, 0x98, 0x6C, 0xD7, 0x74, 0x07, 0x23, - 0x10, 0x01, 0x7E, 0x18, 0x5A, 0x8E, 0x66, 0x4C, 0x9F, 0x75, 0x72, 0xBE, 0x57, 0xAA, 0x0D, 0xF3, - 0x87, 0x86, 0x26, 0x38, 0xB0, 0x4A, 0xD9, 0xAA, 0xC2, 0xE2, 0x9B, 0x20, 0x17, 0x12, 0x6C, 0x44, - 0xC6, 0xC5, 0x34, 0xDE, 0x4D, 0x25, 0x29, 0xC4, 0x63, 0x5C, 0x6A, 0xF8, 0x3E, 0x88, 0xA6, 0x83, - 0x72, 0xAD, 0x0E, 0x32, 0x16, 0x12, 0x52, 0x48, 0x2F, 0xAE, 0xF8, 0x5E, 0xF6, 0x50, 0x10, 0x8E, - 0xD0, 0x49, 0x4C, 0x4A, 0xFE, 0xD1, 0xBC, 0x32, 0xA5, 0xA8, 0x8C, 0xE2, 0x59, 0x64, 0x36, 0x99, - 0xC1, 0x1C, 0x01, 0x6C, 0x6D, 0x36, 0x60, 0x07, 0xD0, 0xA8, 0xA5, 0xF5, 0x78, 0xC6, 0x05, 0xB9, - 0xCE, 0x68, 0x62, 0x1F, 0x3B, 0x96, 0xA3, 0x7F, 0xFF, 0x73, 0xB4, 0x83, 0x94, 0x4E, 0xE4, 0x71, - 0x82, 0xEC, 0x39, 0xC1, 0x6C, 0xF0, 0x1F, 0x2E, 0x3E, 0xD8, 0xB9, 0xD3, 0x08, 0xAF, 0x00, 0x88, - 0x05, 0x8F, 0xFF, 0xCA, 0x5D, 0x0F, 0x38, 0xF4, 0x6C, 0x8E, 0xF0, 0x58, 0xAD, 0x54, 0x15, 0x4B, - 0x40, 0x44, 0x98, 0x18, 0x63, 0xDC, 0xEB, 0xEF, 0xDC, 0xC8, 0xDC, 0xEB, 0x2F, 0x97, 0x17, 0xE5, - 0xAB, 0x8F, 0xAD, 0xC8, 0xEC, 0x22, 0xE3, 0xB0, 0x94, 0x81, 0x24, 0xBA, 0x9D, 0x3D, 0x5C, 0x5F, - 0xCC, 0x1E, 0xE0, 0x42, 0xA2, 0xE4, 0x99, 0xE5, 0x73, 0x01, 0xD8, 0xD8, 0x67, 0xD7, 0x17, 0x70, - 0xB4, 0xC2, 0xBF, 0x8C, 0x63, 0xE8, 0x0E, 0x88, 0x4D, 0xA6, 0x0D, 0xB8, 0xEE, 0xDD, 0xDC, 0x7C, - 0x9D, 0x3D, 0xCE, 0xCD, 0x4D, 0xFF, 0x74, 0xA2, 0x9B, 0x78, 0x57, 0x3D, 0xEE, 0x18, 0x1C, 0xA4, - 0xE6, 0x1B, 0x4D, 0xCC, 0xEE, 0xE7, 0x10, 0x96, 0xFF, 0xB1, 0x5A, 0xFF, 0x78, 0xF8, 0xE1, 0xA3, - 0x9A, 0xE1, 0x5E, 0xD6, 0x6E, 0xE7, 0xC1, 0xB9, 0x5C, 0xAB, 0x1E, 0x55, 0x6A, 0x27, 0x47, 0xD5, - 0xA3, 0x0F, 0xC7, 0xB5, 0x9C, 0x1D, 0x37, 0xAD, 0x39, 0xF3, 0xAD, 0x1D, 0x1D, 0xC3, 0x8C, 0x4F, - 0x82, 0xC9, 0xB2, 0x9D, 0x66, 0xEB, 0x7C, 0x77, 0x12, 0x9E, 0x99, 0x10, 0x27, 0x02, 0xEB, 0xCB, - 0xF3, 0xCB, 0xAB, 0xD9, 0x83, 0xE2, 0xB7, 0x69, 0xD0, 0xE6, 0x3A, 0xEF, 0xFE, 0x34, 0x0F, 0x20, - 0xF5, 0x93, 0x6A, 0xBD, 0x7A, 0x5C, 0x39, 0x3A, 0x3E, 0xC9, 0x08, 0x0F, 0xEC, 0xF1, 0xE7, 0x39, - 0x3D, 0x1E, 0x7E, 0xA8, 0x1D, 0x9F, 0x54, 0x0F, 0x2B, 0x87, 0xD5, 0x83, 0x1C, 0x3D, 0xFE, 0x32, - 0x0F, 0x17, 0x4E, 0x8E, 0x8F, 0x8F, 0x8F, 0x2A, 0x87, 0x27, 0x87, 0xC9, 0xC3, 0x38, 0x0D, 0xB0, - 0x51, 0x96, 0x36, 0xF5, 0x73, 0xDF, 0x0D, 0x38, 0xC7, 0x40, 0x94, 0xAB, 0x49, 0x61, 0x66, 0x92, - 0xDD, 0xD1, 0x39, 0x32, 0xC1, 0x8F, 0xFE, 0xA9, 0x5C, 0x66, 0xE5, 0xE0, 0x1F, 0x83, 0x13, 0xBB, - 0x0B, 0x62, 0x0C, 0x3B, 0x77, 0xEC, 0xAE, 0xD9, 0x8B, 0x7C, 0x51, 0x2E, 0x37, 0x26, 0xF9, 0x98, - 0x1A, 0xDE, 0x00, 0xB5, 0x0C, 0x74, 0xA2, 0x9E, 0x36, 0x2C, 0xD7, 0xA7, 0xB0, 0xAE, 0x4F, 0x52, - 0xEF, 0x08, 0x05, 0x2A, 0x61, 0x33, 0xF8, 0xBF, 0x3C, 0x74, 0x4D, 0x98, 0xDC, 0x33, 0x1B, 0xEB, - 0xCA, 0x92, 0xF5, 0x0E, 0xE5, 0x14, 0xE4, 0x0C, 0x4A, 0x4C, 0x3C, 0x0F, 0x61, 0x19, 0xB2, 0x8B, - 0x12, 0x83, 0x13, 0x4B, 0x2B, 0xCB, 0x16, 0x74, 0x8C, 0x58, 0xDA, 0xD0, 0xE3, 0xA5, 0xA9, 0x7B, - 0x24, 0x5F, 0x25, 0xAD, 0xFA, 0x73, 0xE9, 0x9F, 0x83, 0x77, 0x5B, 0xF1, 0xDE, 0x35, 0xD7, 0xD4, - 0xCA, 0xFC, 0x09, 0x36, 0xC0, 0xE0, 0x78, 0x9E, 0x6A, 0x16, 0x74, 0x27, 0x9F, 0xE2, 0xD1, 0xE1, - 0x3A, 0x96, 0x37, 0x1E, 0x27, 0xDE, 0xB6, 0x31, 0x75, 0xD4, 0x38, 0x00, 0x7D, 0x57, 0x23, 0xCD, - 0xFF, 0x93, 0x19, 0x5B, 0x1A, 0x2A, 0xED, 0xE3, 0xC3, 0x90, 0x54, 0x78, 0xD4, 0xE6, 0x59, 0xC7, - 0x64, 0x09, 0x2D, 0x1F, 0x4F, 0x39, 0x73, 0x1A, 0xCE, 0x48, 0x80, 0x4C, 0xC5, 0x98, 0x59, 0xDB, - 0x14, 0x2C, 0x83, 0x0D, 0x3A, 0xB0, 0x4F, 0x8A, 0x5C, 0xB3, 0xAD, 0x2C, 0xD6, 0x8D, 0xE6, 0x1A, - 0x0C, 0x7F, 0x94, 0x51, 0xDE, 0x4E, 0xE2, 0xD3, 0xB4, 0x16, 0x5D, 0xC7, 0x1D, 0x28, 0xCD, 0x1D, - 0x30, 0xB5, 0x3E, 0x03, 0x72, 0x11, 0xE8, 0x9D, 0xCE, 0x7C, 0x41, 0x12, 0x9E, 0xEA, 0x57, 0x08, - 0x85, 0x10, 0x1D, 0xAF, 0x0C, 0x64, 0xA7, 0xF3, 0x01, 0x19, 0xC4, 0xA4, 0xFC, 0x3E, 0xB3, 0x0B, - 0xD2, 0xFE, 0xD1, 0xCA, 0x06, 0xA2, 0x05, 0xB7, 0xB8, 0x2E, 0x98, 0xC6, 0xD4, 0xC6, 0x30, 0x40, - 0x03, 0xD0, 0xBA, 0xB9, 0xCD, 0xA0, 0x7F, 0x38, 0xA2, 0x99, 0x92, 0x54, 0x41, 0x15, 0x77, 0xE0, - 0xB9, 0x26, 0x82, 0x17, 0x2B, 0xAC, 0x29, 0xA4, 0x94, 0xB7, 0x17, 0x95, 0x9A, 0x46, 0x26, 0x1C, - 0xE0, 0x3E, 0x40, 0xD8, 0xA3, 0x8E, 0xB9, 0x31, 0x7E, 0x3F, 0xC0, 0x0B, 0xBD, 0xAF, 0xD9, 0x3D, - 0xEE, 0x31, 0x14, 0xC0, 0x3C, 0xED, 0x11, 0x5E, 0x19, 0xD1, 0x78, 0xA0, 0xCE, 0x76, 0xBB, 0x1C, - 0x0D, 0x41, 0xE1, 0x64, 0x40, 0x06, 0x0B, 0xFB, 0x01, 0xB5, 0x9B, 0xDE, 0x7B, 0xDF, 0x86, 0x36, - 0x71, 0xE4, 0x7A, 0x8F, 0x2F, 0x0E, 0x61, 0x32, 0x1E, 0x37, 0x2A, 0x73, 0x60, 0x3B, 0x01, 0x3E, - 0x42, 0x35, 0xD3, 0xEE, 0x3A, 0x65, 0xDD, 0x74, 0x75, 0x18, 0x50, 0xF0, 0x27, 0x11, 0x92, 0xE5, - 0xC0, 0xC3, 0x9D, 0x9A, 0xC5, 0xB4, 0x12, 0xCC, 0x6B, 0x3A, 0x0A, 0x24, 0x18, 0x56, 0x06, 0xF4, - 0x40, 0x39, 0xAA, 0x91, 0xB2, 0xF9, 0xD3, 0x59, 0x6D, 0x4C, 0xBB, 0x0D, 0x38, 0xDD, 0x5C, 0x50, - 0x98, 0xF6, 0xD0, 0x17, 0x8A, 0xBD, 0xB8, 0x9A, 0x61, 0x3A, 0x25, 0x65, 0x6B, 0x55, 0xF0, 0xBF, - 0x97, 0xCF, 0x1E, 0x35, 0x90, 0x3B, 0x3E, 0x97, 0xAA, 0x69, 0xDD, 0x59, 0x5A, 0x87, 0x5B, 0x51, - 0x2A, 0xAF, 0x92, 0x2E, 0xD8, 0x50, 0x1B, 0x0F, 0x27, 0x36, 0xBD, 0xF1, 0x22, 0x50, 0xBE, 0x0A, - 0x48, 0xD6, 0x72, 0x43, 0xB2, 0x26, 0x21, 0x59, 0xAB, 0x1F, 0x1C, 0x1E, 0x1D, 0x7F, 0x38, 0xF9, - 0x58, 0x1D, 0xFF, 0xF5, 0x06, 0x55, 0x05, 0xD5, 0x7A, 0x6E, 0xA8, 0xD6, 0x25, 0x54, 0xDF, 0x20, - 0xA8, 0x20, 0x78, 0x90, 0x1B, 0x82, 0x07, 0x6F, 0x10, 0x8C, 0x41, 0xF0, 0x30, 0x37, 0x04, 0x0F, - 0xDF, 0x20, 0x18, 0x83, 0xE0, 0x51, 0x6E, 0x08, 0x1E, 0xBD, 0x41, 0x30, 0x06, 0xC1, 0xE3, 0xDC, - 0x10, 0x3C, 0x7E, 0x83, 0x60, 0x0C, 0x82, 0x1F, 0x72, 0x43, 0xF0, 0xC3, 0xE2, 0x20, 0xB8, 0x40, - 0x10, 0xCA, 0x69, 0xC2, 0xFB, 0xE1, 0x3C, 0xA5, 0x71, 0x3E, 0x50, 0x43, 0xA3, 0x57, 0x2D, 0xCA, - 0x20, 0x79, 0x40, 0x7F, 0x1C, 0xD2, 0x4F, 0x1A, 0x88, 0xFA, 0x08, 0x65, 0xB8, 0xB9, 0x60, 0xC1, - 0xCE, 0x4F, 0xD3, 0x41, 0x10, 0xD7, 0xC7, 0x70, 0xD0, 0x13, 0x1A, 0xEE, 0x43, 0x9E, 0x4D, 0x44, - 0x41, 0xBD, 0x14, 0x83, 0x88, 0x52, 0x56, 0x63, 0x1A, 0xB4, 0xDC, 0x95, 0xF9, 0xBD, 0x0E, 0x93, - 0x0D, 0xE8, 0x8A, 0x2F, 0xEC, 0x3B, 0x72, 0xED, 0x87, 0xFB, 0x3B, 0x9C, 0xB7, 0xB7, 0x33, 0x29, - 0x60, 0x72, 0xA0, 0x73, 0x52, 0x82, 0x6E, 0x41, 0x65, 0x41, 0x13, 0x6B, 0x7C, 0x30, 0x75, 0xD9, - 0x37, 0x67, 0xB8, 0xC5, 0xA3, 0xCA, 0xA4, 0xBD, 0x44, 0xDD, 0xF6, 0x1E, 0x65, 0xA0, 0x2E, 0x65, - 0xDD, 0x88, 0xDB, 0x29, 0xE8, 0x1A, 0x47, 0xD8, 0x74, 0x63, 0xA0, 0xB0, 0xA7, 0x34, 0xCB, 0x00, - 0x32, 0x15, 0x13, 0xE7, 0xEB, 0xAF, 0x74, 0x65, 0x6B, 0x9F, 0xA3, 0xBF, 0xC1, 0xC4, 0x38, 0x3B, - 0xBB, 0x25, 0x75, 0x53, 0xA1, 0x1E, 0x4C, 0x37, 0x16, 0x2C, 0x49, 0xB3, 0x8E, 0x68, 0xD7, 0x72, - 0x12, 0x49, 0x55, 0x18, 0x55, 0xE9, 0xAE, 0xA6, 0x0B, 0x07, 0x56, 0x6E, 0xF0, 0xAE, 0xE6, 0x5B, - 0xC2, 0x4B, 0x53, 0x5B, 0x97, 0xA2, 0xBA, 0xA6, 0x71, 0xA4, 0xEC, 0x58, 0xED, 0x46, 0xA0, 0x7F, - 0xEB, 0xF5, 0x16, 0x86, 0xD0, 0xD3, 0xEC, 0x39, 0x53, 0x5E, 0x4D, 0x98, 0xF0, 0xBE, 0xDC, 0xB5, - 0xDB, 0xAB, 0xB4, 0xDF, 0x0D, 0x04, 0xF0, 0xCD, 0xA8, 0x11, 0x6F, 0xC1, 0x16, 0x3B, 0x5C, 0x4F, - 0x21, 0x73, 0x5D, 0xA4, 0xE1, 0x74, 0xB8, 0x47, 0x20, 0x95, 0x30, 0xD4, 0xF5, 0x6C, 0xCF, 0x5B, - 0xB3, 0x95, 0x2E, 0x6E, 0xA0, 0x9B, 0xBB, 0x96, 0xD9, 0xD6, 0x39, 0x36, 0x14, 0xE5, 0xDA, 0x5C, - 0x13, 0x1D, 0x5D, 0x76, 0x71, 0xCD, 0xF3, 0x5D, 0xA2, 0xF1, 0x7B, 0x4D, 0xF0, 0x6B, 0x3C, 0x69, - 0xE6, 0x50, 0xE4, 0xED, 0xF8, 0x75, 0x86, 0xEF, 0x9F, 0x66, 0x3A, 0xED, 0xE6, 0xB3, 0xE0, 0x19, - 0x67, 0x63, 0x9D, 0xF8, 0x61, 0xAD, 0x8E, 0x24, 0x7D, 0xC0, 0xC6, 0x0C, 0x3D, 0x0B, 0xBF, 0x88, - 0x9C, 0xFF, 0x89, 0x05, 0x7E, 0xFD, 0x3D, 0x76, 0x13, 0x19, 0x3D, 0xE9, 0xAF, 0xED, 0xD4, 0x8E, - 0xF1, 0xDF, 0xD7, 0xDF, 0x4F, 0x33, 0xBD, 0xB7, 0x40, 0xA6, 0x9A, 0x60, 0xAE, 0x0F, 0x7D, 0xCE, - 0x6C, 0x7F, 0xD0, 0xE1, 0x2E, 0x73, 0xBA, 0x8C, 0x3C, 0x32, 0x00, 0x7F, 0x3D, 0x34, 0x14, 0x5A, - 0x8E, 0x2E, 0x91, 0xF9, 0x1F, 0x7F, 0xFF, 0xAF, 0xAE, 0xF9, 0xC4, 0xBD, 0x7F, 0xFC, 0xFD, 0xBF, - 0xD9, 0x10, 0x5E, 0xF4, 0x38, 0xA0, 0xAD, 0x51, 0x61, 0x4D, 0xFB, 0x59, 0xF4, 0x4D, 0xBB, 0xC7, - 0xB4, 0x8E, 0xF3, 0xC8, 0xD9, 0xE1, 0xD7, 0xDF, 0x41, 0xA6, 0x7C, 0x06, 0xAC, 0x41, 0xD3, 0xE5, - 0xF8, 0x9A, 0x0D, 0x5E, 0xEE, 0x71, 0x8F, 0x7A, 0x02, 0x7A, 0xDB, 0xA7, 0x9E, 0x7B, 0xE8, 0xC4, - 0x80, 0xAE, 0x37, 0xBA, 0xCB, 0x61, 0x69, 0xBA, 0xC9, 0xBD, 0x0A, 0xBB, 0x73, 0x00, 0x09, 0x18, - 0xCE, 0x28, 0x02, 0x68, 0xE6, 0xE2, 0xE5, 0xB2, 0xE9, 0x91, 0x1F, 0x96, 0x4B, 0x1E, 0x58, 0xC8, - 0xFA, 0x6B, 0x30, 0x18, 0x59, 0x32, 0x4D, 0x9B, 0x9D, 0xE1, 0xCD, 0xFE, 0xC0, 0x31, 0x78, 0x85, - 0x5D, 0xC8, 0x93, 0xE0, 0x14, 0x27, 0x53, 0x61, 0x37, 0xE6, 0xC0, 0x44, 0xF7, 0x99, 0x4A, 0xB5, - 0x5A, 0xAD, 0xD5, 0xEB, 0xD4, 0xAE, 0x0A, 0x5F, 0x64, 0xD8, 0xF6, 0xA5, 0x1E, 0x17, 0x59, 0x8F, - 0x8D, 0xF1, 0x7B, 0x29, 0xE2, 0x60, 0x86, 0x33, 0x66, 0x06, 0x65, 0x48, 0x21, 0xF5, 0xA8, 0x08, - 0x61, 0x44, 0x25, 0x49, 0x89, 0x42, 0x53, 0x65, 0xC9, 0xC8, 0x35, 0xC1, 0x24, 0xFD, 0x64, 0x18, - 0x66, 0x38, 0xBD, 0x69, 0x51, 0x01, 0x33, 0x4D, 0xF2, 0x8B, 0x8C, 0x1B, 0xBB, 0x4F, 0x27, 0x00, - 0xE1, 0x05, 0x19, 0xAE, 0xA7, 0x0A, 0x83, 0xF0, 0x41, 0xC3, 0x71, 0x3F, 0xED, 0xC3, 0x2F, 0x1A, - 0x6F, 0x33, 0x58, 0x52, 0x9B, 0xEB, 0xA5, 0x46, 0x9B, 0xE8, 0xD3, 0x63, 0x1D, 0x2E, 0x46, 0x1C, - 0x48, 0x24, 0xF2, 0x8E, 0xB7, 0x61, 0xFC, 0x66, 0xCE, 0x4C, 0x2B, 0xC0, 0x09, 0x80, 0xEC, 0x25, - 0x96, 0x99, 0xE8, 0xC5, 0x08, 0x6C, 0xC0, 0x06, 0x26, 0x00, 0xC4, 0x0E, 0x4D, 0xC5, 0x34, 0x36, - 0x81, 0xF7, 0x2E, 0xF0, 0x2A, 0xF0, 0x9F, 0xAE, 0x6F, 0x49, 0xFE, 0x20, 0xB4, 0xEF, 0xC4, 0xA2, - 0x62, 0x2F, 0xF3, 0x47, 0xF4, 0x98, 0xEA, 0xF2, 0x51, 0x38, 0x03, 0x4D, 0x77, 0x1D, 0x0F, 0x7E, - 0x01, 0x6F, 0x82, 0xB7, 0xE1, 0xC5, 0x47, 0xFE, 0xCC, 0x76, 0xEA, 0x87, 0x7F, 0x62, 0x7D, 0xC7, - 0x77, 0xBD, 0xDD, 0x45, 0x70, 0xA7, 0x90, 0x1D, 0xD5, 0xF0, 0x9D, 0x93, 0xDA, 0xC7, 0xE3, 0x60, - 0x78, 0xE0, 0x48, 0x04, 0xF2, 0xCC, 0xD0, 0x8C, 0xB8, 0x6F, 0xBD, 0x31, 0xA5, 0x85, 0x32, 0x25, - 0xA2, 0xA0, 0x82, 0x5C, 0x09, 0xDA, 0x2E, 0x80, 0x2D, 0x15, 0xF8, 0x3A, 0x55, 0x95, 0x25, 0x1F, - 0x99, 0x67, 0x5B, 0x1B, 0x98, 0xFA, 0x2D, 0xA0, 0xA2, 0x75, 0xE1, 0x3A, 0x43, 0x29, 0x71, 0x66, - 0x32, 0x7C, 0x44, 0x9B, 0x96, 0x1A, 0x17, 0xF2, 0x13, 0xA3, 0x8F, 0x19, 0x6C, 0x15, 0x52, 0x75, - 0x53, 0xB6, 0xA2, 0x58, 0x57, 0x13, 0xF3, 0x8A, 0x6F, 0x96, 0xA1, 0x66, 0x29, 0x77, 0x2B, 0x05, - 0x78, 0xCE, 0x90, 0x44, 0x8C, 0xF1, 0x3D, 0x5B, 0xCB, 0x71, 0x05, 0x46, 0x25, 0x7C, 0xDA, 0x97, - 0x5F, 0xE5, 0x6A, 0x0F, 0xC3, 0xB5, 0x05, 0x89, 0x3F, 0x40, 0x45, 0x85, 0x7A, 0x38, 0x80, 0x19, - 0x70, 0x03, 0x04, 0x1F, 0xD0, 0x2A, 0xEC, 0x42, 0x3D, 0x1C, 0x96, 0x1A, 0x4D, 0x5F, 0x38, 0x03, - 0x47, 0x98, 0x8F, 0xC5, 0x56, 0x71, 0x84, 0x87, 0x81, 0x56, 0xA8, 0xE9, 0x31, 0x0C, 0x6E, 0xBA, - 0x1D, 0xC7, 0xB5, 0x39, 0xAB, 0xF5, 0x0A, 0x75, 0xF1, 0x21, 0xD2, 0x45, 0xBD, 0x58, 0x17, 0x27, - 0x91, 0x2E, 0x0E, 0x8B, 0x75, 0xF1, 0xB1, 0xD4, 0xF8, 0xD1, 0x35, 0x3D, 0x51, 0xA8, 0x71, 0x0D, - 0xF0, 0xE8, 0xCC, 0xFC, 0x9E, 0x01, 0xFA, 0xC0, 0x36, 0x09, 0xCD, 0x1B, 0x2B, 0xF2, 0x39, 0x68, - 0x1A, 0x7F, 0xF3, 0x3D, 0x11, 0x1C, 0x8B, 0x82, 0xBB, 0xB6, 0x66, 0x31, 0xCD, 0xEA, 0x39, 0xAE, - 0x29, 0xFA, 0x03, 0x3C, 0x60, 0x06, 0x9A, 0xD0, 0xFB, 0xF4, 0x3D, 0x68, 0xBA, 0xD2, 0x76, 0xA2, - 0x0D, 0x87, 0x96, 0xA9, 0xA4, 0x7A, 0x6E, 0x3F, 0x9A, 0xAE, 0x63, 0xE3, 0xB8, 0xEA, 0xA8, 0x55, - 0x5E, 0x0A, 0xCC, 0x1C, 0x0C, 0x5D, 0x38, 0xCF, 0x64, 0xDF, 0x2E, 0xD7, 0x39, 0xA0, 0x9F, 0xFB, - 0xDE, 0x93, 0xC3, 0x0C, 0x41, 0x59, 0x95, 0x1D, 0xC0, 0x21, 0x1C, 0x3D, 0xAF, 0x95, 0xD3, 0x83, - 0x8F, 0x4E, 0x04, 0xCE, 0xA3, 0x69, 0xA0, 0x73, 0x02, 0x9C, 0x7B, 0x2E, 0x9C, 0xCA, 0xBA, 0xEE, - 0xD3, 0x39, 0x19, 0x38, 0x7F, 0x63, 0x98, 0x00, 0xB0, 0xE9, 0x0A, 0x7A, 0x60, 0xD2, 0x88, 0xD1, - 0x81, 0x70, 0xEA, 0x00, 0x27, 0xDF, 0xF6, 0x7C, 0x93, 0xE8, 0x97, 0x01, 0x7C, 0x04, 0xF2, 0x03, - 0x3A, 0x45, 0x89, 0x23, 0x51, 0x83, 0x1E, 0xBC, 0x6D, 0xCF, 0x5A, 0x12, 0x9E, 0xC9, 0x16, 0x6C, - 0x9C, 0x85, 0x8E, 0x41, 0xE8, 0x62, 0x01, 0x5A, 0x01, 0x9E, 0xC6, 0x78, 0xC0, 0xC3, 0x39, 0x0F, - 0x73, 0x0F, 0xC7, 0x03, 0x95, 0x06, 0x7B, 0x07, 0x2D, 0x44, 0x0A, 0x10, 0xE1, 0x2C, 0xE5, 0xBC, - 0xF5, 0xE7, 0x88, 0x5A, 0x11, 0xF0, 0x94, 0x4D, 0xF2, 0x8F, 0x88, 0x9C, 0x47, 0x51, 0x56, 0xDA, - 0xE6, 0xB6, 0xE7, 0xB8, 0x57, 0x3E, 0x7A, 0x5D, 0x16, 0xB6, 0xC6, 0x4E, 0xF3, 0xD2, 0x5B, 0xBA, - 0x99, 0x7D, 0x60, 0xDA, 0x97, 0x16, 0x7F, 0x2C, 0x4D, 0x95, 0x0A, 0x8E, 0x27, 0xAC, 0xEA, 0xB7, - 0xB0, 0xAD, 0xED, 0xBF, 0x32, 0x6C, 0x42, 0x68, 0x70, 0xBA, 0x62, 0xFB, 0x24, 0x8C, 0x8F, 0x31, - 0x71, 0x8C, 0x07, 0x13, 0x40, 0x3C, 0x33, 0x38, 0xC6, 0x8C, 0x78, 0x84, 0xAC, 0x9A, 0xB4, 0x10, - 0x79, 0x40, 0x02, 0x96, 0x65, 0x0A, 0x32, 0x5D, 0x76, 0x38, 0x4A, 0xA9, 0x86, 0x44, 0x49, 0xD0, - 0xAE, 0x37, 0xD8, 0x74, 0x99, 0xFF, 0x2A, 0x42, 0xED, 0x54, 0x9E, 0xAB, 0x88, 0x39, 0xB2, 0x9A, - 0x12, 0xD3, 0x14, 0x52, 0x64, 0xBA, 0x88, 0x50, 0x2F, 0x2F, 0xE1, 0x12, 0x62, 0xD9, 0x88, 0x7F, - 0x7E, 0xF7, 0x2D, 0x0F, 0xDE, 0x9F, 0xEF, 0xDF, 0x55, 0xD7, 0x85, 0xEF, 0x63, 0x7C, 0x46, 0x1F, - 0x37, 0xCD, 0x92, 0x11, 0x28, 0x53, 0x91, 0x7B, 0xCC, 0x40, 0x8F, 0x8D, 0x33, 0xD0, 0x8D, 0x90, - 0x2A, 0x02, 0x7F, 0x6F, 0x64, 0xB9, 0xF5, 0x6A, 0xE2, 0xF1, 0xFD, 0x1B, 0x3D, 0xA4, 0xD3, 0x03, - 0xE2, 0x4A, 0x56, 0x72, 0x80, 0x77, 0xD7, 0x41, 0x0D, 0xD2, 0xF6, 0x6C, 0x7B, 0x88, 0x29, 0xC4, - 0x1B, 0xCF, 0xFB, 0x5C, 0xFF, 0x7E, 0xE6, 0x3C, 0x71, 0x2F, 0x23, 0x4D, 0xC4, 0x5A, 0x43, 0xA3, - 0xF3, 0xD8, 0xE7, 0x2C, 0xDA, 0xC7, 0x22, 0xA5, 0xAE, 0x87, 0xA8, 0xA0, 0x02, 0x22, 0x86, 0xAE, - 0x0D, 0x49, 0x44, 0x01, 0x79, 0x02, 0x26, 0xAA, 0x42, 0x70, 0x41, 0xE6, 0x90, 0xEF, 0xA0, 0x68, - 0x23, 0x69, 0x03, 0x0E, 0x02, 0xD7, 0x01, 0x01, 0x06, 0x68, 0xC0, 0x1C, 0x5A, 0x7C, 0x4C, 0x3B, - 0xA1, 0xE5, 0x21, 0xFC, 0x2A, 0xBE, 0x60, 0x90, 0x91, 0x9C, 0x01, 0x8F, 0x4A, 0x39, 0x1E, 0x33, - 0x4C, 0x5D, 0xA0, 0x38, 0x85, 0x42, 0x90, 0xCD, 0x81, 0xCE, 0xD0, 0xAB, 0xD4, 0x77, 0x51, 0x22, - 0x83, 0x69, 0x70, 0x17, 0x23, 0x55, 0xE2, 0xDD, 0xD0, 0x7C, 0x48, 0x80, 0x45, 0x52, 0x94, 0x82, - 0xAA, 0xB4, 0x8A, 0x48, 0x21, 0x2A, 0xFE, 0x32, 0xB9, 0x9F, 0x4A, 0x2B, 0x6E, 0x52, 0x30, 0x83, - 0xC5, 0xA0, 0x44, 0x27, 0xFA, 0x8E, 0xC7, 0xC3, 0xA5, 0x81, 0x48, 0x08, 0x9D, 0x04, 0x82, 0xDC, - 0x40, 0x2E, 0xB5, 0xC3, 0xF1, 0x33, 0xB1, 0x01, 0xC3, 0x77, 0xF1, 0xEF, 0x50, 0xAE, 0xD2, 0x35, - 0x4B, 0xF7, 0xC3, 0xF5, 0x85, 0xAC, 0xE1, 0x4B, 0xAB, 0xBD, 0xC7, 0xDA, 0x67, 0x4D, 0xF8, 0xF9, - 0xE5, 0xE6, 0xDB, 0x5D, 0xB3, 0x0D, 0x7F, 0x9C, 0x71, 0xF3, 0xC2, 0xF1, 0xF7, 0x88, 0x49, 0x7C, - 0xD1, 0x2C, 0xD3, 0xE2, 0xCE, 0x26, 0xFA, 0xA6, 0x66, 0x3A, 0x0D, 0x74, 0x44, 0xFD, 0xD8, 0x2D, - 0x6D, 0x3A, 0x09, 0x4C, 0xB4, 0x57, 0xCC, 0x5F, 0xD2, 0x86, 0xDF, 0x79, 0x8A, 0x93, 0x03, 0x80, - 0xB0, 0xD4, 0x80, 0x1F, 0xFB, 0xFF, 0xF3, 0x97, 0x76, 0x3B, 0x9D, 0x34, 0x24, 0xC3, 0x99, 0x1C, - 0x83, 0x9E, 0x07, 0x17, 0x70, 0xF4, 0x08, 0x66, 0x1D, 0x3A, 0x76, 0x48, 0xFE, 0x33, 0x7D, 0xEC, - 0x6D, 0x00, 0x12, 0xA2, 0x18, 0xE8, 0xC5, 0xF0, 0x73, 0xC5, 0x10, 0x92, 0x03, 0x6F, 0x05, 0x1E, - 0x49, 0x52, 0x03, 0x5C, 0x92, 0x7F, 0xAC, 0x1A, 0x95, 0x82, 0xE1, 0xB7, 0x01, 0x56, 0x92, 0x45, - 0x95, 0x1A, 0xF2, 0xF7, 0x8A, 0x21, 0x15, 0x0C, 0xBE, 0x15, 0x48, 0x25, 0x99, 0x3A, 0x20, 0x95, - 0xFC, 0x63, 0xD5, 0x48, 0x15, 0x0C, 0x9F, 0x1B, 0x56, 0xC3, 0xE9, 0x1D, 0xA6, 0xC9, 0x53, 0x79, - 0x00, 0x8F, 0xCE, 0x0F, 0x2F, 0x05, 0x38, 0xB7, 0x51, 0x14, 0xB9, 0x13, 0xAE, 0x39, 0x3C, 0xB7, - 0x4C, 0x8C, 0xF8, 0x6E, 0x5C, 0xD2, 0x23, 0x76, 0xF7, 0x70, 0x7F, 0xDD, 0x62, 0xF2, 0xE1, 0x72, - 0xA1, 0x3E, 0x65, 0x0E, 0x2B, 0x92, 0xCC, 0x7E, 0x20, 0x69, 0x05, 0x44, 0x32, 0xB9, 0x58, 0x9D, - 0x46, 0x47, 0x91, 0x05, 0x0D, 0xC8, 0x18, 0xD5, 0x0C, 0x42, 0x0E, 0x48, 0x67, 0x32, 0x83, 0x0A, - 0x8E, 0x24, 0xC5, 0x14, 0x0D, 0xA4, 0x11, 0x8F, 0x44, 0x17, 0x8F, 0xBB, 0x18, 0x7C, 0x53, 0x61, - 0x3F, 0x3B, 0xBE, 0x1B, 0x44, 0xE2, 0x0C, 0x7C, 0x4F, 0xA0, 0x3A, 0x33, 0x32, 0xF1, 0xA6, 0x5B, - 0x86, 0x0D, 0xBB, 0xE8, 0x74, 0xC6, 0x34, 0xC1, 0xF0, 0x5A, 0x50, 0x98, 0x03, 0x1E, 0x15, 0x62, - 0x2E, 0x4C, 0x0F, 0x21, 0xB0, 0x65, 0x11, 0x34, 0xB8, 0x75, 0xF6, 0x78, 0xD3, 0x02, 0x37, 0x99, - 0xA9, 0x01, 0x5F, 0xD9, 0x34, 0x9F, 0xCC, 0xFA, 0x6F, 0x52, 0xDE, 0x8F, 0x4C, 0xE3, 0xD7, 0x73, - 0xD8, 0x1A, 0xEE, 0x7E, 0x75, 0xBC, 0x0C, 0xCA, 0x69, 0xAA, 0x3B, 0xE6, 0xD1, 0x84, 0x02, 0x2D, - 0xBB, 0x4F, 0xED, 0x19, 0xC7, 0x3F, 0xCD, 0x76, 0xDB, 0x35, 0xCB, 0x2B, 0xF3, 0x38, 0xEF, 0xD5, - 0x55, 0x8A, 0x67, 0xE6, 0x0C, 0x20, 0x65, 0xBE, 0xB7, 0x9A, 0xDE, 0x7E, 0xF9, 0x77, 0x57, 0xAB, - 0x46, 0x9D, 0x56, 0x2C, 0xD5, 0xD5, 0xEA, 0x51, 0x07, 0xC7, 0x5F, 0x35, 0xEA, 0xA4, 0x5A, 0x0E, - 0x66, 0x80, 0xE9, 0x05, 0xC8, 0x83, 0xED, 0x5F, 0x1F, 0xF2, 0xC0, 0x89, 0xE2, 0xAE, 0x13, 0x79, - 0x70, 0xFC, 0x8D, 0xE7, 0x3B, 0x04, 0xA4, 0x17, 0xA0, 0x0E, 0xB6, 0x7F, 0x9D, 0xA8, 0xD3, 0xFA, - 0x71, 0xDD, 0xC8, 0xC3, 0x5A, 0x3F, 0x6E, 0x05, 0xFE, 0x00, 0xA4, 0x5E, 0x88, 0x41, 0xAD, 0x1F, - 0x5F, 0x13, 0x0E, 0xDD, 0x3A, 0xBE, 0x2D, 0x5A, 0x8E, 0x69, 0x8B, 0x52, 0x11, 0x0C, 0xA1, 0xE6, - 0x19, 0x8E, 0x26, 0xE8, 0x7F, 0x83, 0xD1, 0x23, 0x02, 0x84, 0x42, 0xC8, 0x31, 0x6E, 0xFF, 0x3A, - 0x51, 0xE3, 0x85, 0xEC, 0x65, 0xE6, 0xA5, 0x52, 0x76, 0xE4, 0x49, 0x7F, 0xAB, 0x38, 0xFB, 0xF9, - 0x20, 0x71, 0x7B, 0x25, 0xF8, 0x55, 0x94, 0xFD, 0x44, 0x7B, 0xD8, 0x24, 0x1C, 0x0B, 0x2D, 0x0A, - 0xB5, 0xAC, 0xF6, 0x9C, 0xCC, 0x26, 0x86, 0xE8, 0xF2, 0x1F, 0x30, 0xF3, 0xE5, 0xC0, 0x14, 0x5F, - 0xBE, 0x34, 0x4B, 0x8D, 0xE0, 0x03, 0x83, 0x4F, 0xA8, 0x74, 0x4B, 0xD6, 0x9C, 0x6D, 0xF7, 0x5F, - 0x62, 0x6F, 0x98, 0x35, 0xA1, 0xD4, 0xFD, 0xF4, 0x6D, 0xEA, 0x91, 0x1B, 0xAB, 0x8E, 0x66, 0xA2, - 0xEB, 0x1C, 0x9D, 0xC0, 0x83, 0x09, 0xEA, 0x7E, 0xF3, 0x4D, 0xF4, 0x90, 0x81, 0xBF, 0x7A, 0xBE, - 0xA5, 0xB9, 0xE3, 0x4B, 0x12, 0x95, 0x55, 0x8D, 0x8C, 0x14, 0x74, 0x0B, 0x83, 0x1E, 0xA6, 0x6C, - 0x07, 0xE1, 0x3B, 0x90, 0x01, 0x6F, 0xBB, 0xCC, 0x53, 0xD9, 0x44, 0xF0, 0x7B, 0xD9, 0x25, 0xFC, - 0xB2, 0x99, 0x86, 0x4E, 0x63, 0x98, 0x94, 0x55, 0xB3, 0xAC, 0x67, 0x15, 0x38, 0xA5, 0x2E, 0x8B, - 0x34, 0x97, 0x7B, 0x82, 0x69, 0x8F, 0x9A, 0x49, 0x09, 0x7B, 0x93, 0x36, 0x91, 0x29, 0x86, 0x8C, - 0x0D, 0x0F, 0xA9, 0x9A, 0xFD, 0x3D, 0x46, 0x33, 0x5D, 0x39, 0x2E, 0xEB, 0xFA, 0xC2, 0x77, 0xC9, - 0x07, 0x0A, 0x33, 0xB5, 0x3A, 0xF6, 0x7C, 0x42, 0x42, 0xA4, 0x02, 0xB0, 0x39, 0x23, 0x34, 0xF5, - 0x7C, 0x03, 0x90, 0x5F, 0x02, 0xE0, 0x5C, 0x9B, 0x8B, 0x54, 0x73, 0xD6, 0x02, 0x69, 0xB1, 0x08, - 0x3D, 0x82, 0x18, 0x84, 0x53, 0xBE, 0x73, 0x44, 0x30, 0xE3, 0x52, 0x03, 0x6D, 0x62, 0x64, 0xB2, - 0xC2, 0x8B, 0xF5, 0xA8, 0x11, 0x90, 0x95, 0x99, 0xED, 0x08, 0x16, 0xBC, 0x99, 0x89, 0x4E, 0x17, - 0x49, 0xAB, 0xD3, 0x26, 0x9B, 0x0F, 0xCD, 0x5E, 0xEE, 0x94, 0xAE, 0xE8, 0xF1, 0x9B, 0x4C, 0x08, - 0x38, 0x74, 0x1D, 0xC3, 0xD7, 0x85, 0xC7, 0x46, 0x7D, 0x53, 0xEF, 0xB3, 0x3E, 0xA6, 0xC7, 0x09, - 0xE6, 0x86, 0xD7, 0xA3, 0x36, 0x52, 0xC9, 0xA3, 0x29, 0x9E, 0xF7, 0xD8, 0xB3, 0xE3, 0x13, 0x99, - 0xF9, 0x01, 0x74, 0x4D, 0xB4, 0x0A, 0x6B, 0x06, 0x5E, 0x02, 0x87, 0x4D, 0x26, 0x20, 0xDE, 0x79, - 0x66, 0x64, 0x1C, 0x95, 0xB7, 0xA4, 0xE8, 0x31, 0x1E, 0xDE, 0xC7, 0xE6, 0xA7, 0xB8, 0xA5, 0x51, - 0x5D, 0x56, 0x07, 0xF0, 0x4C, 0x67, 0xD6, 0x44, 0xB0, 0x60, 0x2E, 0x7B, 0xA4, 0xE2, 0x72, 0xE8, - 0x57, 0x7D, 0x26, 0x63, 0x00, 0xE7, 0xF9, 0xA9, 0xC9, 0xD0, 0xC2, 0x30, 0x96, 0xB5, 0xC7, 0x85, - 0x0A, 0x0B, 0xBE, 0x31, 0x3D, 0xB1, 0xB3, 0x3B, 0x11, 0x34, 0x3B, 0x30, 0xE8, 0x97, 0xCA, 0x57, - 0x3C, 0x33, 0x08, 0x71, 0xBE, 0xE5, 0x39, 0x43, 0x80, 0x62, 0x6A, 0x30, 0x22, 0x06, 0x7A, 0xCE, - 0x1D, 0xA5, 0x60, 0xAC, 0x22, 0xF6, 0x3B, 0x7F, 0x0F, 0x15, 0x80, 0x28, 0xF6, 0xCE, 0x8B, 0x46, - 0x2C, 0x42, 0xD3, 0x97, 0x07, 0x2D, 0x8E, 0xF7, 0x3A, 0x2D, 0x6A, 0x78, 0xB1, 0xF7, 0x00, 0x77, - 0xB7, 0x97, 0x4D, 0x72, 0x17, 0xB8, 0x6F, 0xFE, 0xF8, 0x13, 0xA5, 0xC7, 0xC2, 0x93, 0x4F, 0x8C, - 0x1C, 0x36, 0x70, 0x3C, 0x24, 0xE5, 0xC1, 0xC0, 0xB1, 0xC9, 0x43, 0x03, 0xF3, 0xE0, 0xA3, 0xF3, - 0x04, 0xEC, 0xA2, 0x27, 0x9D, 0x59, 0x25, 0x3C, 0x3A, 0xBE, 0x88, 0xFB, 0x3D, 0x78, 0xFE, 0x10, - 0xDF, 0xF5, 0xA4, 0x37, 0x2B, 0x9C, 0xB8, 0x36, 0xFB, 0x50, 0x8D, 0x24, 0xDA, 0x52, 0x0D, 0xBD, - 0x0A, 0xBB, 0xD4, 0x80, 0x77, 0x04, 0xFD, 0xC8, 0xD0, 0x10, 0xC9, 0x30, 0xD5, 0x46, 0x29, 0xEE, - 0x12, 0x34, 0xA0, 0xE9, 0x19, 0x8A, 0xEC, 0xD9, 0x4E, 0x75, 0x97, 0x26, 0xDE, 0x77, 0x46, 0x30, - 0x1D, 0x81, 0x91, 0x24, 0x14, 0x6C, 0x22, 0x7B, 0xA3, 0x74, 0xB6, 0x6A, 0xCA, 0x3B, 0x35, 0xF6, - 0x19, 0x70, 0x7D, 0xFC, 0x65, 0xF8, 0x0D, 0x86, 0xE7, 0xD5, 0xD0, 0xE5, 0x6A, 0x8F, 0x1D, 0xA9, - 0x77, 0xE4, 0x77, 0x2A, 0xE4, 0xE5, 0x88, 0x51, 0x24, 0xDF, 0x6E, 0x84, 0xED, 0x10, 0xC0, 0x40, - 0xAC, 0xD8, 0x63, 0x5F, 0xDA, 0xF4, 0xE3, 0x01, 0x7F, 0xFC, 0x55, 0xFA, 0x5C, 0xDC, 0xDF, 0x9E, - 0xAB, 0x30, 0x3A, 0xEF, 0x94, 0x55, 0x51, 0xB2, 0xAB, 0x57, 0xB7, 0x32, 0x39, 0x58, 0x5A, 0x38, - 0xEC, 0x7C, 0x72, 0x99, 0x93, 0xB7, 0x6E, 0x4A, 0x82, 0xC4, 0xA3, 0x29, 0xF9, 0x11, 0xA7, 0xF6, - 0x58, 0x34, 0x57, 0x40, 0x94, 0xE5, 0x4D, 0xE6, 0x0B, 0xB0, 0x07, 0x5C, 0x53, 0xBB, 0xEB, 0xCD, - 0x4A, 0x16, 0x90, 0xED, 0x88, 0x0C, 0xD9, 0x29, 0x45, 0xA6, 0x3F, 0x38, 0x77, 0x91, 0x9E, 0xC7, - 0xE9, 0x01, 0x00, 0x29, 0xDA, 0x14, 0x2F, 0x05, 0x47, 0x5B, 0xA6, 0x6E, 0x83, 0x2E, 0xD8, 0x0E, - 0xE2, 0xDE, 0xD3, 0xD1, 0x6E, 0xC6, 0xCC, 0x02, 0x19, 0x63, 0x89, 0x96, 0x03, 0x55, 0x15, 0xB3, - 0xBA, 0x1C, 0xC0, 0xDE, 0xC4, 0x3B, 0x8F, 0xC1, 0x56, 0x7D, 0x57, 0x08, 0xB2, 0xEC, 0x4F, 0xEC, - 0xFE, 0xA7, 0xDB, 0xA7, 0x7A, 0x3E, 0x08, 0x67, 0xC0, 0xDC, 0xC8, 0x01, 0x8D, 0x07, 0x6C, 0x69, - 0xC9, 0x81, 0x4D, 0x19, 0x1E, 0x4F, 0x9D, 0x7B, 0x22, 0xA5, 0x01, 0x85, 0xE2, 0xAD, 0x33, 0xA5, - 0x81, 0xCC, 0xCA, 0xEE, 0x2D, 0x2B, 0x29, 0xE9, 0x59, 0xA4, 0xEB, 0x5C, 0x62, 0x43, 0xA4, 0xE1, - 0x8C, 0x7D, 0x40, 0x40, 0x4E, 0x49, 0x30, 0x5E, 0x9A, 0x2D, 0xE4, 0x45, 0x80, 0x9D, 0xC8, 0x8A, - 0x40, 0x10, 0xD8, 0xA4, 0xAC, 0x08, 0x73, 0x97, 0x5F, 0x30, 0x67, 0x29, 0xF6, 0x2F, 0xC3, 0x48, - 0xAF, 0x6D, 0x99, 0x18, 0x29, 0xD5, 0xE5, 0x22, 0x96, 0x59, 0x29, 0x00, 0xD4, 0x03, 0x3C, 0x6C, - 0xAB, 0x7E, 0x82, 0x7C, 0x4B, 0xC1, 0xF3, 0xB8, 0xA9, 0x4B, 0x35, 0x4C, 0xB5, 0x6B, 0x44, 0x6D, - 0x8B, 0x13, 0x23, 0x34, 0xE4, 0x5F, 0xE5, 0x6B, 0x7B, 0xC5, 0x9E, 0xB5, 0xD7, 0x32, 0xA4, 0x77, - 0x08, 0x52, 0x97, 0x09, 0x88, 0x13, 0x26, 0x1F, 0x00, 0xC1, 0x4C, 0x63, 0x38, 0x4D, 0xE6, 0xA9, - 0xB8, 0x23, 0xCA, 0x29, 0x2F, 0xD8, 0x77, 0x9B, 0xAA, 0xD7, 0x08, 0xCA, 0x39, 0xD0, 0xE1, 0xCC, - 0xE9, 0x50, 0x86, 0x76, 0x03, 0x35, 0xAD, 0x7F, 0xFC, 0xFD, 0xBF, 0xBC, 0xE0, 0x48, 0xC2, 0xAC, - 0x05, 0xD8, 0x73, 0xD0, 0x63, 0x85, 0x62, 0x78, 0xA9, 0x47, 0xE8, 0x09, 0xC5, 0x21, 0x72, 0x54, - 0x47, 0x51, 0x89, 0x26, 0x2E, 0xE3, 0x98, 0xB4, 0xEF, 0x28, 0x9E, 0x0D, 0x41, 0x2D, 0x7C, 0x02, - 0x5A, 0x16, 0x18, 0x47, 0x74, 0x5C, 0x0D, 0xA3, 0x85, 0x47, 0x20, 0x51, 0xF5, 0x65, 0x10, 0x91, - 0x66, 0x04, 0x89, 0x5D, 0xE5, 0x04, 0x70, 0xB6, 0x68, 0x63, 0xE9, 0xC2, 0xCC, 0xC2, 0x45, 0xE0, - 0x68, 0xA0, 0x1F, 0xDA, 0xC9, 0xA8, 0xE5, 0x20, 0xC8, 0x79, 0xC0, 0x45, 0xDF, 0x31, 0x18, 0x48, - 0x8F, 0x26, 0xC7, 0xC0, 0xAB, 0xFF, 0x3C, 0xA8, 0xEA, 0x83, 0x29, 0x71, 0x53, 0x28, 0x9A, 0xA2, - 0xEA, 0xF9, 0x08, 0xDC, 0xA5, 0xC2, 0xAE, 0x6D, 0x1D, 0xC6, 0xF7, 0x82, 0x00, 0xAA, 0xC0, 0x2F, - 0xFF, 0x5B, 0x07, 0x5D, 0x59, 0xE4, 0xC0, 0x0F, 0xE6, 0x80, 0x07, 0x59, 0x17, 0xEE, 0xA5, 0xB1, - 0xC9, 0xC0, 0xC4, 0x1B, 0x36, 0xC3, 0x6C, 0xE8, 0x11, 0x77, 0x5F, 0x53, 0xF6, 0xC5, 0xC3, 0xA0, - 0x27, 0x1A, 0x8B, 0x24, 0x65, 0x8C, 0xC7, 0x82, 0x29, 0x98, 0x18, 0x27, 0x76, 0xC6, 0xB1, 0xA4, - 0xC4, 0xF8, 0x25, 0xD3, 0x0B, 0x26, 0x6D, 0x90, 0x8F, 0x0C, 0x85, 0x4F, 0x97, 0xE1, 0x95, 0x41, - 0x98, 0xE4, 0x41, 0x85, 0x54, 0x51, 0x3E, 0x5A, 0x4C, 0x60, 0x43, 0xE5, 0x18, 0xC6, 0xF1, 0x00, - 0x55, 0x19, 0x38, 0x76, 0x54, 0xA9, 0x0E, 0xC6, 0x92, 0xE6, 0x31, 0x89, 0x9A, 0x1F, 0xAB, 0x55, - 0x6F, 0x8F, 0xD5, 0x2A, 0xF4, 0x81, 0x5E, 0xD8, 0x3A, 0xA7, 0x9A, 0x80, 0x03, 0xAC, 0xD3, 0xA3, - 0xC6, 0x19, 0xE3, 0x83, 0xCA, 0x0C, 0x30, 0xF7, 0x5A, 0xA9, 0x56, 0x9F, 0x16, 0x69, 0x82, 0x98, - 0x95, 0x9E, 0x4A, 0x2A, 0x82, 0x79, 0xE8, 0x18, 0xC5, 0x76, 0xBC, 0xDD, 0xC2, 0x57, 0x00, 0xB1, - 0x20, 0xF0, 0x0C, 0x01, 0xC0, 0xF9, 0x1D, 0x21, 0xA6, 0x00, 0x26, 0xF3, 0x45, 0xC0, 0x64, 0xDB, - 0x6D, 0xBF, 0x66, 0x8A, 0xAC, 0xA8, 0xA5, 0xF8, 0x4D, 0x53, 0x91, 0xF9, 0x8B, 0x6E, 0x9A, 0xA6, - 0xE0, 0x53, 0xC0, 0x89, 0x52, 0xBB, 0x25, 0x4E, 0x75, 0x70, 0xC1, 0xDA, 0x02, 0x78, 0x04, 0x9E, - 0xBD, 0x21, 0xD7, 0x4A, 0x6D, 0xBA, 0x33, 0x78, 0x09, 0xEA, 0x11, 0xD2, 0x29, 0xFC, 0xEB, 0x94, - 0x0F, 0x96, 0x89, 0x7A, 0x13, 0xC0, 0x2E, 0x82, 0x83, 0xC9, 0x4E, 0x36, 0x38, 0x0D, 0x01, 0x9D, - 0xB8, 0x2F, 0x95, 0x88, 0xAE, 0xB0, 0x93, 0x49, 0x71, 0x28, 0x4C, 0x0D, 0x3D, 0x45, 0x30, 0xCA, - 0x27, 0x10, 0xC9, 0x01, 0x1A, 0xF4, 0x2B, 0x76, 0xAC, 0xC8, 0x6A, 0x49, 0x0D, 0xB6, 0x73, 0xDE, - 0x77, 0x30, 0x08, 0x06, 0x0B, 0x50, 0x30, 0x27, 0xDD, 0x21, 0xE3, 0x8B, 0x2A, 0xA1, 0xB1, 0x1B, - 0xD4, 0x69, 0x58, 0x8B, 0x78, 0x15, 0x15, 0xAB, 0x44, 0x44, 0x0C, 0x0A, 0x85, 0x29, 0x94, 0x2E, - 0x40, 0x98, 0xA2, 0x8A, 0x32, 0x52, 0x30, 0xE2, 0x26, 0xDA, 0xB4, 0x83, 0x75, 0x86, 0xEB, 0x60, - 0x91, 0x12, 0x1D, 0x28, 0x8A, 0x48, 0xA3, 0x36, 0x46, 0x68, 0xC7, 0x8D, 0x67, 0x52, 0xBA, 0x18, - 0x0C, 0xB8, 0x61, 0x4A, 0x31, 0xAA, 0xC3, 0x7B, 0x66, 0x10, 0x01, 0x4E, 0x8E, 0xB7, 0xF7, 0x0F, - 0xE7, 0xB7, 0x93, 0x17, 0x51, 0x4D, 0x25, 0x9A, 0x85, 0xB2, 0x8F, 0xE9, 0x49, 0xC1, 0x2A, 0x94, - 0xF3, 0x48, 0xDE, 0x68, 0xB5, 0x5A, 0x6C, 0x67, 0x28, 0x8B, 0x3B, 0x79, 0x1C, 0xA4, 0x40, 0xDF, - 0x65, 0xC2, 0x17, 0x0E, 0xE8, 0x39, 0xD6, 0x2E, 0xA5, 0xBB, 0xC7, 0xB7, 0x12, 0xF2, 0x07, 0xD3, - 0x7A, 0x1A, 0x1A, 0xED, 0xE9, 0xDE, 0x8D, 0x8C, 0x78, 0x7A, 0x28, 0x5E, 0x46, 0x64, 0x93, 0xA0, - 0x62, 0xD0, 0x7B, 0x6F, 0x0C, 0x37, 0x4C, 0xE8, 0xE2, 0xF8, 0x96, 0xC1, 0xDD, 0x3D, 0x50, 0x6E, - 0x2C, 0x07, 0x70, 0xCB, 0xD9, 0x3E, 0xB1, 0x84, 0x40, 0xBB, 0x00, 0x99, 0x24, 0xC5, 0x6D, 0x7D, - 0x1E, 0x25, 0xD3, 0x14, 0xA4, 0xE2, 0x15, 0xE0, 0x11, 0xD2, 0x9D, 0xAC, 0xF6, 0xA2, 0xD2, 0xCA, - 0xAA, 0xAD, 0x8F, 0xD1, 0x76, 0x35, 0xF3, 0x61, 0x34, 0xA6, 0xFD, 0x02, 0xF7, 0xE0, 0xC4, 0x0C, - 0xE6, 0xCD, 0x91, 0x2A, 0xCF, 0xB0, 0xF1, 0x17, 0x5E, 0x40, 0xD0, 0x33, 0x63, 0xE6, 0x33, 0x9F, - 0xE4, 0x41, 0x3D, 0x98, 0x94, 0x0D, 0xCA, 0x77, 0x13, 0x99, 0x55, 0x24, 0x48, 0x36, 0x8E, 0x15, - 0x02, 0x8C, 0x79, 0xFF, 0x9C, 0x4C, 0x9C, 0xEB, 0xD9, 0xEE, 0xAD, 0x66, 0x9A, 0xD8, 0x7C, 0x8F, - 0x40, 0x1B, 0x81, 0x69, 0xA6, 0x5C, 0xA7, 0xD9, 0x73, 0x50, 0x85, 0x66, 0xB7, 0xC9, 0x91, 0xD0, - 0xE4, 0x76, 0x83, 0x51, 0x02, 0xB4, 0xAD, 0x57, 0x78, 0xEB, 0xFE, 0xCB, 0xE5, 0x45, 0x36, 0xB3, - 0xD9, 0x92, 0x2E, 0x28, 0x23, 0xDC, 0xBB, 0xE5, 0xAB, 0x4C, 0x1F, 0x2A, 0xC2, 0x54, 0xCE, 0x32, - 0xC2, 0x81, 0x31, 0x37, 0x87, 0x43, 0x6F, 0x48, 0xAE, 0xF9, 0xD3, 0xFE, 0xCF, 0xFB, 0xBF, 0x20, - 0x94, 0xB8, 0xB7, 0x85, 0xD9, 0xEE, 0xD2, 0xED, 0xBC, 0x59, 0x12, 0xB8, 0x2D, 0x8A, 0x02, 0x62, - 0x09, 0xDB, 0x0E, 0xB2, 0x62, 0x79, 0x92, 0x8D, 0x5C, 0xCA, 0x22, 0x54, 0xB3, 0xA8, 0x2A, 0x4A, - 0x46, 0x3F, 0x9D, 0x66, 0xBF, 0x90, 0x4F, 0x87, 0xD5, 0x5C, 0xF5, 0xEA, 0x24, 0xEB, 0x72, 0x72, - 0x49, 0xB7, 0x91, 0x05, 0x67, 0xEC, 0x7E, 0x98, 0x68, 0xF7, 0x12, 0xF9, 0xF5, 0x75, 0xE3, 0xD0, - 0xCF, 0xD9, 0x70, 0xE8, 0xE7, 0x57, 0x83, 0x43, 0x3F, 0x17, 0xC4, 0xA1, 0x9F, 0xDF, 0x70, 0x68, - 0x16, 0x0E, 0xFD, 0x92, 0x0D, 0x87, 0x7E, 0x79, 0x35, 0x38, 0xF4, 0x4B, 0x41, 0x1C, 0xFA, 0xE5, - 0x0D, 0x87, 0x92, 0xCE, 0xC8, 0x20, 0x3F, 0xA1, 0x74, 0x2E, 0xE5, 0xF4, 0x2C, 0x58, 0x94, 0xAD, - 0xA0, 0xC1, 0x5A, 0x11, 0x29, 0xCD, 0x6D, 0x38, 0xBA, 0xE6, 0x5C, 0x88, 0x14, 0x6D, 0xF9, 0x2A, - 0x50, 0x49, 0xEE, 0xE2, 0x79, 0xE0, 0x44, 0xF3, 0x03, 0x5E, 0x6B, 0x44, 0xA4, 0xE8, 0xB5, 0x27, - 0x97, 0xA5, 0xAC, 0x6F, 0x68, 0x24, 0xE8, 0xC6, 0xA4, 0x63, 0x65, 0xD5, 0xA0, 0x6C, 0x24, 0x20, - 0x27, 0xFF, 0xE6, 0xC3, 0xBE, 0xC0, 0xF4, 0x75, 0x67, 0xF8, 0xBC, 0x3F, 0x44, 0xC7, 0x59, 0x65, - 0x00, 0x99, 0x90, 0xA8, 0xB7, 0x5B, 0x8E, 0xCE, 0x9E, 0xA0, 0x75, 0xB9, 0xDC, 0x27, 0x8F, 0xFA, - 0x94, 0x24, 0x9B, 0x07, 0xA2, 0xCD, 0x59, 0x75, 0x51, 0xEF, 0xD4, 0x9B, 0xA7, 0x72, 0xA7, 0xE6, - 0x56, 0xF2, 0x9D, 0x3E, 0x66, 0x34, 0x37, 0xA9, 0xCA, 0xF8, 0x79, 0x9E, 0x2C, 0x3E, 0x8B, 0x73, - 0x9A, 0xF5, 0x9D, 0x67, 0xFE, 0x4E, 0x89, 0x36, 0x33, 0xE3, 0x46, 0xE8, 0x9E, 0x12, 0xD4, 0x8B, - 0x3E, 0x38, 0xAA, 0x66, 0x73, 0x4E, 0x09, 0x27, 0x9D, 0xC8, 0x51, 0x89, 0x9A, 0xAB, 0x34, 0x4F, - 0x35, 0x59, 0xB4, 0x98, 0x2D, 0x8B, 0xD6, 0xA1, 0x65, 0xB1, 0x12, 0xB2, 0x59, 0x52, 0x61, 0xCE, - 0x19, 0xB2, 0x3E, 0x1E, 0xF2, 0x6C, 0x45, 0x43, 0x1E, 0xD0, 0x90, 0xE7, 0x2B, 0x1A, 0x0D, 0x53, - 0xAF, 0xE2, 0xC1, 0xF5, 0xD0, 0xD7, 0xC4, 0xB5, 0xF7, 0xE0, 0x38, 0x37, 0x8E, 0xDD, 0x7B, 0x70, - 0xCE, 0xF8, 0x85, 0xC4, 0x40, 0xE0, 0x23, 0x33, 0x27, 0x92, 0x2B, 0x89, 0x73, 0xE1, 0x49, 0xA7, - 0xE7, 0x1B, 0xDD, 0x54, 0x19, 0x64, 0xE2, 0x92, 0x68, 0x81, 0x26, 0x24, 0xCD, 0x30, 0xE2, 0x92, - 0xC9, 0x62, 0xED, 0x46, 0xAA, 0x7B, 0x34, 0x16, 0x35, 0x0D, 0x23, 0xA7, 0x75, 0x68, 0x8E, 0x6B, - 0x99, 0xB6, 0xD4, 0x59, 0x07, 0xFD, 0x07, 0x36, 0xAE, 0x45, 0xCD, 0xDB, 0x00, 0x04, 0x14, 0x7C, - 0x99, 0x33, 0x1F, 0x8F, 0x80, 0x73, 0xBF, 0xA0, 0x4F, 0x9B, 0x62, 0x93, 0x03, 0x04, 0x00, 0x59, - 0x62, 0x4F, 0x56, 0xCA, 0xD0, 0x0C, 0x8A, 0xD4, 0xD9, 0x23, 0x13, 0x5C, 0x58, 0xAA, 0xC8, 0xE5, - 0x3A, 0x9C, 0x16, 0x11, 0x49, 0x82, 0xDE, 0x96, 0x8B, 0x62, 0xA6, 0x78, 0xC5, 0x96, 0xB9, 0x45, - 0xDC, 0x64, 0x2F, 0xFE, 0x72, 0xE1, 0x0B, 0x77, 0xE6, 0xDE, 0x2D, 0xD4, 0xD6, 0x7F, 0xB7, 0xF0, - 0x85, 0xB2, 0x6E, 0xA9, 0x3B, 0xB6, 0xC5, 0x5E, 0x29, 0xF4, 0x54, 0xAF, 0x05, 0xEF, 0x7D, 0xB6, - 0xF8, 0x56, 0xE1, 0x4B, 0xB8, 0xF2, 0xF1, 0xCD, 0x42, 0x66, 0xCA, 0xCB, 0xC2, 0xD9, 0x62, 0x37, - 0x0B, 0x53, 0x46, 0x0B, 0x6F, 0x17, 0x6E, 0x6E, 0xFA, 0x99, 0x07, 0xDE, 0xF8, 0x4B, 0x08, 0x58, - 0x4C, 0xF2, 0xDE, 0x01, 0x1F, 0xBD, 0xDD, 0x3A, 0xBC, 0x4C, 0xBD, 0x8E, 0xF0, 0x87, 0x1B, 0x4D, - 0x90, 0xFE, 0xF3, 0x2E, 0x0F, 0xA2, 0x4E, 0x21, 0xAD, 0x59, 0x05, 0x29, 0xA1, 0x7F, 0x53, 0xF8, - 0x46, 0x1E, 0xFB, 0x4C, 0xD1, 0xEC, 0xB6, 0x45, 0x0C, 0x2F, 0x31, 0x18, 0xE4, 0xB7, 0xE0, 0xA9, - 0x96, 0xAF, 0xC7, 0xF0, 0x12, 0xC5, 0x0C, 0xD4, 0x47, 0x96, 0x8A, 0x1A, 0x30, 0xC0, 0xE6, 0xE3, - 0x46, 0x00, 0x85, 0x02, 0xC8, 0xA1, 0x9A, 0xBE, 0x1A, 0x0B, 0xAF, 0x94, 0xC8, 0x05, 0x49, 0x9E, - 0x57, 0x58, 0xCF, 0x40, 0x4C, 0xB5, 0xCF, 0xE6, 0xB3, 0xF9, 0xCE, 0x0A, 0x3F, 0x06, 0x59, 0x5C, - 0x8E, 0xC4, 0xE4, 0x50, 0xD9, 0x91, 0x24, 0x6E, 0xE9, 0x89, 0x4F, 0x78, 0xBE, 0xAD, 0x67, 0x5B, - 0xEF, 0x8F, 0x73, 0x37, 0x9E, 0x4A, 0xF0, 0x4D, 0x4B, 0xB2, 0xEA, 0x52, 0x3A, 0x31, 0x4F, 0x66, - 0xF5, 0xF8, 0xDA, 0xBC, 0xCC, 0x7C, 0x1A, 0xDF, 0x6A, 0xEE, 0xF7, 0x7D, 0x18, 0x0D, 0x1D, 0x28, - 0x8B, 0x1D, 0xE1, 0x8B, 0x91, 0x3A, 0x22, 0x92, 0xC7, 0x57, 0x8E, 0x4D, 0x59, 0x93, 0xCA, 0x0C, - 0x5E, 0x5A, 0x96, 0x39, 0xF4, 0x1C, 0xD3, 0x08, 0xAB, 0x80, 0xC1, 0x84, 0x83, 0x62, 0x61, 0x4A, - 0x40, 0x09, 0x25, 0x2F, 0xD4, 0xB7, 0x34, 0x05, 0xB9, 0xE8, 0xFB, 0xF8, 0x7C, 0xE0, 0xD8, 0x3E, - 0x95, 0x0A, 0x51, 0x7E, 0xF9, 0xB8, 0x45, 0xB6, 0x91, 0x47, 0x70, 0x59, 0xBA, 0xF0, 0x92, 0x47, - 0x80, 0xC9, 0x6C, 0xF2, 0x4D, 0x65, 0xD7, 0x87, 0x79, 0x64, 0xB7, 0xFC, 0x17, 0x72, 0x21, 0x26, - 0x67, 0x5D, 0x53, 0xB6, 0x1B, 0xA1, 0x8C, 0xAF, 0x0D, 0x27, 0x27, 0xB2, 0xF4, 0x52, 0x82, 0x2F, - 0xE2, 0x24, 0x59, 0x4B, 0xB8, 0x1F, 0xE6, 0xB0, 0x22, 0xCF, 0x2E, 0xE5, 0x8E, 0xC4, 0x11, 0xAF, - 0xE3, 0x5E, 0x2B, 0x45, 0xED, 0x5F, 0x58, 0x74, 0x08, 0xB8, 0x09, 0x2A, 0x34, 0x79, 0xF8, 0x18, - 0x45, 0x5B, 0x69, 0x96, 0x0E, 0x4D, 0x91, 0xBF, 0x60, 0x1A, 0x33, 0x99, 0x03, 0x9E, 0x33, 0x78, - 0x44, 0x3C, 0xA7, 0xC0, 0x09, 0xB2, 0x0C, 0x2D, 0xE7, 0xBA, 0x2B, 0xF3, 0x34, 0x70, 0x63, 0x2F, - 0x9C, 0x9A, 0xCC, 0xF4, 0xAF, 0x26, 0x4C, 0x01, 0x46, 0xFF, 0xE6, 0xF9, 0x1D, 0xE1, 0x6A, 0x94, - 0x45, 0xFF, 0xDF, 0x64, 0x8D, 0x25, 0xE5, 0x31, 0xDB, 0x84, 0xDF, 0xB6, 0xAD, 0x31, 0xC5, 0xB3, - 0x30, 0xB6, 0xA5, 0x79, 0xDF, 0x1A, 0xE7, 0x71, 0x09, 0xB9, 0x51, 0x18, 0xB3, 0x0D, 0xDD, 0xE1, - 0x17, 0x54, 0x23, 0x26, 0x70, 0x9B, 0x1D, 0xF3, 0xB3, 0x3E, 0xF4, 0xF0, 0x2C, 0x8B, 0x09, 0xCA, - 0xC0, 0x21, 0x55, 0xCD, 0x10, 0xA7, 0x45, 0xBE, 0xAD, 0x9A, 0xBA, 0xBB, 0x1A, 0x3A, 0xC0, 0x6F, - 0xFA, 0xB1, 0x51, 0xF7, 0x28, 0x88, 0xC7, 0xB7, 0xE5, 0x0B, 0xD4, 0x24, 0x2C, 0x52, 0x13, 0x2D, - 0x68, 0x18, 0xAE, 0x93, 0xB6, 0x9C, 0x82, 0x7A, 0xAC, 0x91, 0xF6, 0xEC, 0x29, 0x03, 0x96, 0xAA, - 0x30, 0xD0, 0xC7, 0x70, 0xBE, 0x19, 0x17, 0x7F, 0x8C, 0xAA, 0x22, 0x6D, 0xA1, 0xD2, 0xF7, 0xE2, - 0x54, 0x17, 0xDB, 0x4F, 0xE0, 0xF5, 0x19, 0x04, 0xCE, 0x32, 0x65, 0x48, 0x9A, 0x4E, 0xE8, 0x16, - 0x74, 0xD1, 0x6C, 0x9D, 0x27, 0xE9, 0x1C, 0x1E, 0x6D, 0x28, 0x99, 0xC3, 0xCC, 0xA6, 0x50, 0xB9, - 0x66, 0x18, 0x59, 0x09, 0x5C, 0x51, 0x48, 0x56, 0xF2, 0x7E, 0x23, 0xBE, 0x3C, 0xC4, 0xB7, 0x22, - 0xCD, 0x5A, 0x93, 0x5B, 0x2B, 0x77, 0x36, 0x83, 0xA0, 0x3D, 0x99, 0x7B, 0x51, 0x21, 0x47, 0xB6, - 0xE2, 0xDF, 0x34, 0xCC, 0xCE, 0x20, 0xAB, 0x9C, 0xBD, 0x3C, 0x62, 0xB8, 0x30, 0x3D, 0x41, 0xE5, - 0xEF, 0xC2, 0x53, 0x8A, 0xE2, 0x42, 0x94, 0xBC, 0xAC, 0xA0, 0x12, 0xA0, 0xA1, 0x14, 0x9F, 0x63, - 0x22, 0x73, 0x78, 0x58, 0xF9, 0x9E, 0x4F, 0x39, 0xC7, 0x28, 0xE5, 0x8A, 0x23, 0xA8, 0x26, 0x94, - 0xDD, 0x93, 0xA1, 0xB2, 0x32, 0xBA, 0xD7, 0xF4, 0x06, 0xF2, 0xA4, 0x42, 0xBA, 0xD1, 0xEC, 0x67, - 0x06, 0xB8, 0xC6, 0x29, 0x2F, 0x97, 0x57, 0x61, 0xCD, 0x01, 0xA6, 0xD4, 0x23, 0x12, 0x30, 0x14, - 0xE2, 0x23, 0x75, 0x74, 0x78, 0x17, 0x13, 0xAF, 0xC0, 0x1C, 0x5D, 0x0A, 0x18, 0x91, 0xA6, 0x46, - 0x9C, 0xE2, 0xF6, 0xFA, 0x64, 0x14, 0x37, 0xA6, 0x1C, 0x2D, 0xC5, 0x55, 0x2E, 0x8E, 0xFA, 0xB9, - 0xCC, 0x29, 0xB1, 0xA6, 0xAF, 0xCD, 0xD8, 0xA6, 0x16, 0x77, 0x1F, 0x84, 0x09, 0xCD, 0x4A, 0xCB, - 0xAA, 0x58, 0xC3, 0xCB, 0x38, 0x42, 0x38, 0x8A, 0x4C, 0xB0, 0xB9, 0x09, 0xAC, 0x01, 0x8F, 0x36, - 0xA5, 0x55, 0x1B, 0x79, 0xB8, 0x44, 0xF0, 0x71, 0xD8, 0xC7, 0x77, 0x74, 0x3A, 0x3C, 0x27, 0xF9, - 0x04, 0x10, 0x9C, 0x2D, 0xC6, 0x91, 0xF1, 0x9E, 0x69, 0x4C, 0xF4, 0xA7, 0x4A, 0x7A, 0x47, 0x0E, - 0x66, 0x55, 0x4E, 0x2A, 0x78, 0x01, 0xBE, 0x31, 0x3B, 0xAE, 0x92, 0x69, 0xF3, 0x73, 0x10, 0x75, - 0xAC, 0xE2, 0x19, 0xEE, 0x9D, 0xB2, 0x2B, 0x00, 0x97, 0xD8, 0xF9, 0x50, 0xAB, 0x9C, 0x00, 0xEC, - 0xE5, 0x27, 0x76, 0x53, 0x3E, 0xC3, 0x49, 0xEC, 0x1C, 0x7F, 0xC4, 0x67, 0x0F, 0xDF, 0x5A, 0xB5, - 0xEA, 0xF1, 0xCE, 0x51, 0xBD, 0xF2, 0x71, 0xF7, 0x55, 0x7A, 0x84, 0xAD, 0x8F, 0xF9, 0x24, 0x88, - 0xAC, 0x08, 0x13, 0x8A, 0x77, 0xF1, 0x2A, 0x2D, 0xFF, 0x80, 0xCF, 0xBF, 0xA2, 0x68, 0x5D, 0x44, - 0x3C, 0x51, 0x92, 0xEE, 0xCE, 0xFA, 0xF9, 0xCA, 0x7C, 0x93, 0x5E, 0x20, 0x63, 0xB7, 0x88, 0x7B, - 0x9C, 0x27, 0xB8, 0x07, 0xB1, 0x0A, 0x7F, 0x90, 0xE4, 0x14, 0x52, 0xF7, 0xDD, 0x8B, 0xB1, 0x1C, - 0x99, 0xC5, 0x8C, 0x44, 0x16, 0xF9, 0x35, 0x49, 0xDE, 0xE8, 0x08, 0xEA, 0x32, 0x6E, 0xC8, 0xFA, - 0xC2, 0x7B, 0xCC, 0xEB, 0xA3, 0x7E, 0x8C, 0x29, 0x1B, 0x91, 0x28, 0xD1, 0x12, 0x4D, 0x21, 0xB2, - 0x20, 0x6B, 0x57, 0xDE, 0x48, 0x7C, 0x81, 0x96, 0xBF, 0x10, 0x75, 0x83, 0x9C, 0x77, 0xF9, 0xAF, - 0x6D, 0x54, 0x17, 0x2B, 0xA3, 0x6C, 0x72, 0xBD, 0x58, 0x0D, 0x75, 0x07, 0x5E, 0xAF, 0x81, 0xFF, - 0x40, 0xA9, 0xC8, 0xB5, 0x1D, 0x79, 0xDB, 0xAF, 0x99, 0xB6, 0xBF, 0x80, 0x8A, 0x2B, 0xC3, 0xC1, - 0x29, 0x6B, 0x0C, 0xD3, 0x58, 0xB0, 0xB4, 0xE0, 0x20, 0x96, 0x7A, 0x35, 0xC6, 0x9B, 0x2B, 0x71, - 0x21, 0x4C, 0xCB, 0x48, 0x2E, 0xDA, 0x51, 0x37, 0x6C, 0x74, 0xE7, 0xFE, 0x03, 0x52, 0xE1, 0xF1, - 0x12, 0xE3, 0x18, 0x42, 0x04, 0x2B, 0x14, 0xCB, 0x10, 0xB4, 0x7E, 0x8B, 0x67, 0x58, 0x3A, 0x21, - 0x2D, 0x3E, 0x9E, 0xE1, 0x46, 0x13, 0xFB, 0x78, 0xF3, 0x8D, 0x17, 0x7C, 0x6F, 0x61, 0x0D, 0x6B, - 0x0A, 0x6B, 0x08, 0x28, 0x28, 0x63, 0x68, 0x43, 0xE6, 0xED, 0x89, 0x6E, 0xEE, 0xC2, 0x23, 0x21, - 0xC6, 0xA7, 0xD2, 0xF4, 0x68, 0x88, 0xF1, 0xF7, 0x1B, 0x16, 0x11, 0x71, 0x58, 0xAD, 0x54, 0x3F, - 0x56, 0xEB, 0x1F, 0x0F, 0x3F, 0x7C, 0x64, 0xE5, 0x5A, 0xF5, 0xA8, 0x52, 0x3B, 0x39, 0xAA, 0x1E, - 0x7D, 0x38, 0xAE, 0xB1, 0xDA, 0xD1, 0x31, 0x7C, 0x77, 0xF2, 0x71, 0xB1, 0xE1, 0x10, 0x2B, 0x18, - 0x2F, 0x88, 0x85, 0x58, 0xC1, 0x50, 0x19, 0x02, 0x21, 0x66, 0xCE, 0x22, 0xD7, 0x3D, 0x7A, 0xB1, - 0x19, 0xBF, 0x45, 0x41, 0xCC, 0x88, 0x82, 0x98, 0x14, 0x22, 0x17, 0x1E, 0x09, 0x11, 0x0C, 0xB1, - 0x84, 0x68, 0x88, 0x65, 0xCF, 0x3E, 0x3A, 0xC6, 0x72, 0xA2, 0x22, 0x96, 0xBD, 0x82, 0xF8, 0x28, - 0x5B, 0x1F, 0x1D, 0x11, 0x3D, 0xBA, 0xFE, 0x30, 0x41, 0x12, 0x4B, 0x49, 0xB1, 0xB6, 0xF4, 0xDA, - 0xC2, 0x6D, 0xEE, 0x3E, 0x62, 0xCD, 0xBF, 0x58, 0x6D, 0x61, 0xF9, 0x70, 0x65, 0xB5, 0x85, 0x83, - 0x39, 0xAC, 0xA7, 0xB6, 0xB0, 0x47, 0xA3, 0xA3, 0xE0, 0xED, 0x0F, 0x09, 0xB9, 0x03, 0x5B, 0xF8, - 0x7B, 0x6F, 0xA2, 0xC8, 0x30, 0x25, 0x4F, 0x9D, 0x28, 0x31, 0xFC, 0x8D, 0x52, 0xAA, 0xC9, 0x1A, - 0xC3, 0x52, 0x9A, 0x17, 0xE8, 0xE0, 0xA1, 0xE9, 0x98, 0xA0, 0x4C, 0x29, 0xC4, 0xF1, 0x7E, 0x7C, - 0x99, 0xB7, 0xCC, 0x8E, 0x95, 0x37, 0x7E, 0x3D, 0x75, 0x87, 0xE5, 0x86, 0xAE, 0xBD, 0xEE, 0xB0, - 0x9C, 0xC6, 0x5B, 0xDD, 0xE1, 0xB9, 0x05, 0xD4, 0x26, 0x81, 0x94, 0xAF, 0x7C, 0xDA, 0x44, 0xFB, - 0x57, 0x51, 0xA0, 0x2F, 0xB6, 0xAA, 0xB7, 0xBA, 0xC3, 0x99, 0x90, 0xA7, 0x40, 0xDD, 0xE1, 0x89, - 0xF6, 0xAF, 0x0F, 0x79, 0xDE, 0xEA, 0x0E, 0x67, 0x40, 0x9D, 0x02, 0x75, 0x87, 0x27, 0xDA, 0xBF, - 0x4E, 0xD4, 0x79, 0xAB, 0x3B, 0x9C, 0x15, 0x7F, 0x72, 0x17, 0xFE, 0x9C, 0xD2, 0xC3, 0x6B, 0xC2, - 0xA1, 0x3F, 0x76, 0xDD, 0xE1, 0x49, 0x20, 0x14, 0x42, 0x8E, 0x57, 0x56, 0x77, 0x78, 0x62, 0x55, - 0x6F, 0x75, 0x87, 0x17, 0x85, 0x5F, 0x45, 0xD9, 0xCF, 0xA6, 0xD4, 0x1D, 0x9E, 0x55, 0x60, 0x95, - 0x15, 0xAC, 0xB0, 0x9A, 0xAA, 0xD4, 0xCF, 0xB7, 0x71, 0x2C, 0xB1, 0xC2, 0x6A, 0xC6, 0xDA, 0xAA, - 0x72, 0x01, 0xEB, 0xAB, 0xAD, 0x2A, 0xC7, 0xFF, 0x23, 0xD5, 0x56, 0x55, 0x10, 0x7F, 0xAB, 0xAD, - 0x9A, 0xDD, 0xE6, 0x52, 0xB8, 0x88, 0x2A, 0xE6, 0x2A, 0xD9, 0xF0, 0x42, 0xAA, 0x38, 0xC5, 0x65, - 0x15, 0x53, 0xA5, 0xBE, 0xE7, 0x6F, 0x1C, 0x15, 0x32, 0x08, 0xAB, 0xA9, 0x6E, 0x61, 0xED, 0x54, - 0x5A, 0x00, 0x3A, 0xD8, 0xA9, 0x4A, 0xEA, 0x91, 0xF0, 0x15, 0x72, 0xF5, 0xD5, 0xD0, 0x97, 0xC7, - 0x90, 0x34, 0x85, 0x14, 0x59, 0xFB, 0xFA, 0x3B, 0x11, 0x63, 0x58, 0xCF, 0xB4, 0x56, 0xAD, 0x1E, - 0xED, 0xC1, 0xCF, 0x0F, 0x87, 0xF8, 0xF3, 0x84, 0x7E, 0x7E, 0xC4, 0x9F, 0xB5, 0xFA, 0xA1, 0x74, - 0xC5, 0xAB, 0x56, 0x82, 0x46, 0xB5, 0xFA, 0x41, 0x55, 0xF9, 0xF4, 0x29, 0x77, 0x06, 0x38, 0x13, - 0x28, 0xC2, 0x06, 0xBF, 0xA5, 0x98, 0x25, 0x2F, 0xA8, 0x29, 0x35, 0x82, 0xF1, 0x6D, 0x83, 0x2E, - 0x87, 0xF1, 0x72, 0x40, 0x68, 0xA6, 0xE5, 0xB8, 0x2A, 0x32, 0x26, 0xA8, 0x3C, 0xAF, 0xD9, 0xCF, - 0xFB, 0x70, 0xAE, 0xC8, 0x5D, 0x18, 0x97, 0x64, 0x4D, 0x16, 0x2F, 0x8D, 0x44, 0xDE, 0x44, 0x0A, - 0x71, 0xA9, 0x62, 0xAD, 0xC0, 0x39, 0x80, 0x9F, 0xB8, 0xA6, 0x61, 0x60, 0xF5, 0x55, 0x87, 0x16, - 0x48, 0xA1, 0x77, 0x58, 0xF6, 0x01, 0x21, 0x80, 0xF5, 0x2D, 0x5E, 0x6B, 0xFD, 0xD3, 0x14, 0x0C, - 0xDF, 0x9A, 0x1A, 0xA8, 0x33, 0x0A, 0x73, 0x4E, 0x14, 0xDD, 0x44, 0x44, 0x99, 0x56, 0x71, 0x33, - 0x57, 0xA5, 0xCD, 0x4D, 0x2F, 0x5D, 0x9A, 0x15, 0x18, 0x37, 0xCE, 0xE8, 0x2C, 0x20, 0x31, 0x04, - 0x4C, 0x08, 0x90, 0x6C, 0xE7, 0x3D, 0x96, 0x29, 0x1D, 0xB1, 0xB0, 0x07, 0xA0, 0x3A, 0xFB, 0x7B, - 0xBE, 0x9A, 0xA3, 0xA9, 0xB0, 0x49, 0x94, 0x1C, 0xCD, 0xC0, 0x8F, 0x5F, 0x7E, 0xCD, 0x96, 0xE1, - 0xF1, 0xB4, 0x41, 0x12, 0x65, 0x47, 0xDB, 0xDC, 0xF6, 0x80, 0x6B, 0xAD, 0xBB, 0xF0, 0xA8, 0x47, - 0xD3, 0x58, 0x52, 0xE9, 0xD1, 0x76, 0xAC, 0xF3, 0x5C, 0xC7, 0x6C, 0xAC, 0xE9, 0xBB, 0x39, 0x0E, - 0x42, 0xF1, 0xC2, 0xA3, 0x53, 0xDF, 0x8C, 0x81, 0x3A, 0x51, 0x76, 0x54, 0xAD, 0x7F, 0x93, 0x0A, - 0x8F, 0xC6, 0x96, 0x9E, 0xB3, 0xF4, 0xE8, 0x5A, 0x6E, 0x80, 0xE5, 0x84, 0xAF, 0x7C, 0xD4, 0xF3, - 0x4A, 0x0D, 0x05, 0x6D, 0xF9, 0x71, 0x15, 0x97, 0xBF, 0xF1, 0xE1, 0x33, 0x48, 0x45, 0x20, 0x78, - 0x7C, 0x58, 0xD8, 0x05, 0x30, 0x07, 0xAE, 0xD9, 0x71, 0x70, 0x1F, 0xAE, 0x6F, 0x7F, 0x40, 0x9E, - 0x37, 0xD0, 0x40, 0x09, 0xC7, 0x9A, 0x9F, 0x61, 0x91, 0x2A, 0x12, 0x16, 0x28, 0xD4, 0x17, 0xA3, - 0x9C, 0x6C, 0xED, 0x11, 0x24, 0x15, 0x0A, 0xCE, 0x65, 0xDF, 0xD0, 0xBF, 0x54, 0x1B, 0x0E, 0x81, - 0xEB, 0xD2, 0xBD, 0x39, 0x5E, 0x0C, 0xFB, 0xC0, 0xDE, 0x1D, 0x81, 0xDE, 0xD2, 0xA8, 0xE6, 0x80, - 0xF0, 0x42, 0xF8, 0x0A, 0x42, 0xCB, 0x8F, 0x58, 0x34, 0xCB, 0xE0, 0x3D, 0x90, 0x82, 0xC6, 0xD5, - 0x3F, 0x35, 0x2B, 0x52, 0x77, 0xD3, 0x06, 0x25, 0xD3, 0x2E, 0x47, 0x7A, 0x50, 0x5D, 0xAB, 0x0E, - 0xF2, 0x2A, 0x3E, 0xEB, 0x90, 0x59, 0x56, 0x8C, 0xC0, 0x08, 0x2B, 0xD8, 0x37, 0x0A, 0x10, 0x6B, - 0x5A, 0x66, 0xCF, 0x46, 0x24, 0x28, 0x35, 0x9A, 0xF0, 0x98, 0xF6, 0x93, 0xCC, 0x2A, 0x2C, 0xFC, - 0x66, 0xB9, 0xE8, 0x3C, 0x63, 0x32, 0x2B, 0x92, 0xF3, 0x71, 0xCD, 0x18, 0xE4, 0xA2, 0x53, 0x10, - 0x9E, 0x09, 0xC2, 0xAE, 0x30, 0xBB, 0xCF, 0xAC, 0x0F, 0x47, 0xB8, 0x8C, 0xD2, 0x25, 0x7D, 0x9D, - 0x51, 0x3D, 0x37, 0x9F, 0x02, 0xF4, 0x00, 0xDF, 0xC6, 0x95, 0xD2, 0x94, 0xCF, 0xFE, 0x23, 0x07, - 0x75, 0xDE, 0xE2, 0xFF, 0xF8, 0xFB, 0x7F, 0x7B, 0xAC, 0xEB, 0xA2, 0x77, 0x3F, 0x15, 0xC4, 0x55, - 0x6F, 0x45, 0x70, 0x50, 0x7A, 0x8A, 0x18, 0xDB, 0x28, 0x36, 0x67, 0x36, 0x9E, 0x46, 0x0D, 0xA7, - 0xE6, 0xC0, 0xFF, 0x59, 0x1B, 0x95, 0xA6, 0xFB, 0xF5, 0x4F, 0x56, 0x6A, 0xD1, 0x46, 0xAC, 0x69, - 0xC3, 0xC1, 0x7B, 0x9A, 0x1D, 0x3C, 0x73, 0x31, 0x20, 0xC2, 0xB4, 0xD0, 0xC7, 0xA4, 0x4B, 0xC5, - 0xF2, 0x10, 0xC3, 0x65, 0x6C, 0xA4, 0x86, 0x63, 0x91, 0x8E, 0xF5, 0xAC, 0x8D, 0x2A, 0x79, 0x6D, - 0x43, 0x8B, 0x32, 0x86, 0xA4, 0x6F, 0x5E, 0x1A, 0xF9, 0x15, 0x8D, 0x9C, 0xC8, 0x77, 0x69, 0xAD, - 0xF6, 0x32, 0xA5, 0xCB, 0x61, 0xE4, 0xDD, 0xA2, 0x26, 0xD9, 0x45, 0x39, 0x7D, 0x15, 0xC0, 0xD6, - 0x96, 0x29, 0xF4, 0x7E, 0x56, 0x7C, 0xA5, 0x97, 0xD7, 0x84, 0xB1, 0x43, 0x1C, 0xFB, 0x0D, 0x67, - 0xD3, 0x71, 0x56, 0xEE, 0x68, 0x56, 0xAC, 0xA5, 0xB7, 0xB7, 0x10, 0x6F, 0xEF, 0x41, 0x8C, 0xCE, - 0x8A, 0xB6, 0xF8, 0xEE, 0x9A, 0xB0, 0x16, 0x36, 0xC6, 0x7A, 0x43, 0xDA, 0x74, 0xA4, 0xA5, 0xED, - 0xCC, 0x8A, 0xB3, 0xF8, 0xF2, 0xBA, 0x51, 0x76, 0x71, 0xC2, 0xA9, 0xD7, 0x55, 0x82, 0xFA, 0x8F, - 0x7D, 0xCE, 0xAD, 0x0B, 0x53, 0xF9, 0x7E, 0x96, 0x1A, 0xEA, 0x31, 0xA3, 0xE7, 0xEC, 0xC1, 0x84, - 0xF1, 0xC2, 0x6F, 0xDF, 0xCD, 0x37, 0x50, 0x09, 0xF9, 0xD6, 0x72, 0x05, 0xD9, 0x99, 0x13, 0x5F, - 0xAF, 0x28, 0x8B, 0xF2, 0xE9, 0x88, 0x40, 0x26, 0x10, 0x64, 0x46, 0x30, 0x2F, 0xE5, 0x47, 0x4B, - 0x1A, 0x5A, 0x9F, 0x6B, 0x18, 0x85, 0x1A, 0x11, 0x54, 0xAF, 0xC8, 0x4E, 0xB1, 0xAD, 0x62, 0xEA, - 0x22, 0xB1, 0xF1, 0xDC, 0x19, 0x74, 0x80, 0x98, 0x68, 0x53, 0x11, 0xE9, 0xBC, 0x52, 0x43, 0x3D, - 0x8A, 0x60, 0xA2, 0xB7, 0x6C, 0xD4, 0x9A, 0x32, 0x8B, 0x77, 0x0B, 0xE5, 0xDB, 0x18, 0x77, 0xDC, - 0x21, 0xBE, 0xED, 0x72, 0xCD, 0x8D, 0x60, 0x8C, 0x17, 0xBD, 0x78, 0x04, 0x64, 0x9A, 0x8B, 0x12, - 0x88, 0x52, 0xB8, 0xF7, 0xD0, 0x6E, 0x1B, 0x91, 0xA9, 0x98, 0x51, 0x93, 0x1C, 0x10, 0x58, 0x8B, - 0xBB, 0x5D, 0x8C, 0x1A, 0x5C, 0xB7, 0x6D, 0x73, 0x38, 0x5C, 0x92, 0x5D, 0xB3, 0xD5, 0x2A, 0x64, - 0xD3, 0x0C, 0x9B, 0xBD, 0xD0, 0x9E, 0x29, 0xDD, 0x3C, 0x62, 0x40, 0x4E, 0x58, 0x35, 0x87, 0x91, - 0x37, 0x36, 0xCA, 0xB6, 0x19, 0x82, 0x20, 0xA7, 0x5D, 0xB3, 0xC0, 0xCD, 0xF5, 0x05, 0x05, 0x52, - 0xB0, 0xEB, 0x8B, 0xD3, 0x40, 0x40, 0xE8, 0x43, 0x87, 0x23, 0x58, 0xEC, 0xF5, 0xC5, 0x9C, 0x00, - 0xDB, 0xFD, 0x26, 0x4A, 0x09, 0x73, 0x23, 0x64, 0x2F, 0x30, 0x11, 0x1F, 0x48, 0x73, 0xA6, 0xC5, - 0xBE, 0x73, 0xF8, 0x13, 0xF6, 0x1F, 0x8E, 0x92, 0x70, 0x18, 0x03, 0xBE, 0xBE, 0xE7, 0x68, 0x06, - 0x04, 0x16, 0x30, 0x67, 0x24, 0x87, 0xFD, 0x05, 0x5A, 0xCF, 0x94, 0x49, 0xD6, 0x1A, 0xD4, 0x13, - 0x45, 0xB1, 0xF3, 0x30, 0xEA, 0xC4, 0x0B, 0x03, 0x7C, 0xA2, 0xDF, 0xCF, 0x65, 0x66, 0x91, 0xC6, - 0xAB, 0xB0, 0x05, 0xCF, 0x9C, 0xF7, 0x0A, 0x83, 0x82, 0x54, 0x6A, 0xA8, 0x18, 0x95, 0x8E, 0x23, - 0x77, 0x3C, 0x69, 0x0E, 0x8E, 0x18, 0x81, 0xB7, 0xDA, 0x24, 0x26, 0xF9, 0x6C, 0x9B, 0x0B, 0x8C, - 0x65, 0xF2, 0x66, 0x12, 0xF7, 0xCB, 0x10, 0x37, 0x97, 0x39, 0x17, 0x88, 0xEA, 0x9E, 0xDB, 0x7C, - 0xA4, 0x59, 0xCA, 0x8E, 0x0B, 0x0F, 0x98, 0x7A, 0x92, 0x31, 0x4F, 0xC0, 0x4B, 0x8D, 0xB8, 0xD1, - 0x29, 0x2C, 0x48, 0xAF, 0x4C, 0xD5, 0x13, 0x15, 0x02, 0xFE, 0x88, 0xC8, 0x45, 0x5C, 0xC9, 0x70, - 0x9D, 0x21, 0x83, 0xB5, 0x3A, 0x23, 0x56, 0x3F, 0x61, 0xC8, 0x94, 0xD0, 0x46, 0x4B, 0xBC, 0xEA, - 0x79, 0x4F, 0x5E, 0x33, 0x84, 0x22, 0xB2, 0x26, 0x04, 0x1F, 0x0C, 0x29, 0xF1, 0x8A, 0x72, 0xBD, - 0xC2, 0x3F, 0xDF, 0x7F, 0x75, 0x06, 0xFC, 0x3D, 0xB9, 0x5C, 0xED, 0x31, 0x07, 0x8D, 0xBC, 0x1A, - 0xF6, 0xB3, 0x87, 0xDF, 0xB9, 0xB8, 0x3E, 0x1A, 0x28, 0x37, 0x02, 0xAF, 0x51, 0xAB, 0x5D, 0x81, - 0x83, 0x6C, 0xF4, 0xE8, 0x95, 0x47, 0x50, 0xCB, 0x75, 0xBA, 0xA6, 0xC5, 0x1F, 0x9C, 0xEF, 0xDC, - 0x5E, 0x80, 0x17, 0xFE, 0x64, 0x7A, 0x1F, 0x75, 0xD2, 0xA9, 0x71, 0x18, 0x0D, 0x74, 0xBA, 0x26, - 0xEF, 0xBE, 0xEB, 0x2E, 0xBA, 0xEB, 0xB9, 0xCC, 0x71, 0x7B, 0x9A, 0x6D, 0xFE, 0x2E, 0xA5, 0x92, - 0xBE, 0xE6, 0x61, 0xC0, 0xA3, 0xE3, 0x0E, 0x1D, 0x72, 0xA9, 0x79, 0xE8, 0x03, 0xB3, 0x68, 0x0B, - 0x10, 0xAF, 0x07, 0x6C, 0x82, 0x55, 0x6A, 0xBA, 0x8E, 0xA6, 0x92, 0x3D, 0xE9, 0xB4, 0x67, 0x12, - 0xBF, 0x74, 0x39, 0x39, 0x01, 0x22, 0x55, 0x52, 0xEF, 0xBA, 0xEF, 0x01, 0xFA, 0xAA, 0x58, 0x49, - 0xBC, 0x9A, 0xA0, 0x85, 0x0B, 0x5C, 0x78, 0x14, 0x1D, 0x01, 0xA5, 0x9F, 0x59, 0x99, 0x05, 0x17, - 0x75, 0xED, 0xA1, 0xE6, 0x7E, 0xBF, 0xF2, 0x6D, 0x09, 0xA1, 0xED, 0xF0, 0xFA, 0x7B, 0x89, 0x47, - 0xFC, 0x87, 0x05, 0x7B, 0x2C, 0xA7, 0xA0, 0x76, 0x66, 0xBF, 0xE5, 0xF9, 0xFD, 0x2C, 0xDF, 0x7B, - 0x79, 0xE9, 0xBE, 0x1D, 0x18, 0x82, 0xE6, 0xAD, 0x55, 0xFD, 0x59, 0xB4, 0xC2, 0x83, 0x0B, 0x2A, - 0xA6, 0xF3, 0x44, 0x5A, 0xCE, 0xD2, 0x66, 0xC6, 0xC0, 0x9A, 0x50, 0x63, 0xB0, 0xF1, 0x46, 0xE9, - 0x2F, 0x73, 0x97, 0x53, 0x4C, 0x85, 0xA1, 0x01, 0xC8, 0xB5, 0x11, 0x7B, 0x3F, 0xEF, 0x6B, 0x70, - 0x00, 0x5B, 0x17, 0x70, 0x7A, 0xD3, 0x92, 0xC2, 0xC2, 0x87, 0x29, 0xE1, 0xCE, 0x91, 0x23, 0x28, - 0xEC, 0xEB, 0x4C, 0xF3, 0xE1, 0x30, 0xA6, 0xC4, 0xEE, 0x04, 0x66, 0x86, 0x0F, 0xC8, 0x19, 0xF5, - 0x34, 0x83, 0x89, 0x37, 0x96, 0xFB, 0x27, 0xDE, 0x67, 0x7C, 0xCA, 0xF2, 0x51, 0x94, 0x6D, 0x18, - 0xC1, 0xEC, 0x53, 0xC8, 0x35, 0x91, 0x56, 0xE6, 0xA4, 0x5A, 0x2D, 0x35, 0xF0, 0x67, 0xB6, 0x7C, - 0x2F, 0x89, 0xE6, 0x1F, 0x8F, 0xB1, 0x39, 0xFE, 0x2C, 0xD4, 0xBC, 0xF6, 0xB1, 0x8E, 0xED, 0xE9, - 0x57, 0xA1, 0x0E, 0x0E, 0x4E, 0x0E, 0xB1, 0x03, 0xFA, 0x55, 0xA8, 0x83, 0xA3, 0x0F, 0xB4, 0x02, - 0xFA, 0x55, 0x6C, 0x09, 0xB5, 0x23, 0xB9, 0x06, 0xFA, 0x5D, 0xA8, 0x8B, 0xFA, 0x41, 0x95, 0x56, - 0x21, 0x7F, 0x17, 0xEA, 0xE2, 0xF0, 0xB8, 0x2A, 0x37, 0x92, 0x7E, 0x17, 0xDB, 0xCA, 0x7A, 0x4D, - 0x6E, 0x26, 0xFD, 0x4E, 0xEF, 0x22, 0x3D, 0xE3, 0xCF, 0x62, 0xD5, 0xBC, 0x07, 0x72, 0x7E, 0x06, - 0x5A, 0x22, 0x71, 0x06, 0xAF, 0x73, 0x50, 0xBE, 0xB8, 0x6F, 0x5E, 0x5C, 0x7F, 0x63, 0xC8, 0xB4, - 0x02, 0xE7, 0x65, 0x1D, 0x88, 0xB9, 0x27, 0x5D, 0x92, 0x41, 0xD8, 0xD6, 0xB1, 0x2E, 0x07, 0x66, - 0x19, 0xC5, 0x94, 0x10, 0x7D, 0x07, 0x45, 0x17, 0x74, 0x8E, 0x40, 0x32, 0x8A, 0x48, 0x2D, 0xB4, - 0xFD, 0x9D, 0xA1, 0xB7, 0x49, 0x6A, 0xA0, 0x3C, 0x82, 0xDC, 0x17, 0xE8, 0x88, 0x08, 0xEE, 0x05, - 0xB1, 0xB7, 0x44, 0x57, 0xA5, 0xC6, 0xAD, 0xFF, 0xC4, 0xD4, 0x87, 0xDC, 0x7C, 0x2D, 0xD9, 0xD9, - 0xB4, 0xC9, 0x2E, 0x82, 0xB7, 0x01, 0x32, 0xDF, 0xDD, 0x5E, 0x36, 0x8B, 0x91, 0x75, 0xA9, 0xD1, - 0x6A, 0xB5, 0xF7, 0x2F, 0x1F, 0xD1, 0x27, 0xFD, 0x01, 0xB0, 0xB4, 0x87, 0x59, 0x55, 0x8A, 0x10, - 0xB7, 0x5C, 0xDE, 0xC0, 0x7F, 0x52, 0x2B, 0x03, 0x90, 0x5F, 0xD7, 0xCF, 0x8B, 0x71, 0x3B, 0xD0, - 0xAE, 0x2F, 0xCE, 0xF7, 0x2F, 0x9A, 0xE7, 0x9B, 0x49, 0x9E, 0x17, 0xCD, 0x87, 0x66, 0x9C, 0x16, - 0x95, 0x84, 0xA1, 0x62, 0x09, 0x0C, 0xB3, 0x4B, 0x4E, 0x49, 0x22, 0xE1, 0x24, 0x87, 0xBB, 0x24, - 0xB3, 0x91, 0xAB, 0x17, 0x81, 0x5E, 0x4D, 0xCD, 0x62, 0x0F, 0x3F, 0xED, 0xDF, 0xFF, 0x84, 0xF4, - 0x6A, 0xA9, 0xA4, 0x6E, 0xD1, 0xB4, 0xC0, 0x15, 0x86, 0x1B, 0xA4, 0xB6, 0x26, 0xD6, 0x7A, 0xE8, - 0x83, 0x74, 0xC4, 0x86, 0x1C, 0xFB, 0x81, 0x19, 0x18, 0xCC, 0xF1, 0x05, 0x0A, 0xDC, 0xA8, 0xF6, - 0x1C, 0xD9, 0x9E, 0x72, 0xDE, 0x03, 0x26, 0x22, 0x82, 0xC6, 0x28, 0x8F, 0xC3, 0x3C, 0x60, 0x5F, - 0xC2, 0x8E, 0x50, 0x7D, 0xB2, 0x29, 0x3F, 0xAA, 0x72, 0xF9, 0x6B, 0x5F, 0x34, 0xF7, 0xDB, 0xE7, - 0x37, 0x32, 0x0B, 0x8C, 0x2E, 0xF7, 0xB2, 0x22, 0x2F, 0x61, 0xF6, 0x2F, 0x4C, 0x57, 0x5E, 0x09, - 0x46, 0xA7, 0x11, 0xF3, 0x2A, 0x14, 0x20, 0x7A, 0x6B, 0x3A, 0xDD, 0x72, 0xA9, 0x2D, 0x8C, 0xBD, - 0xAB, 0x94, 0xAB, 0xAE, 0xE9, 0x0E, 0xD0, 0x5A, 0x3A, 0xCB, 0x89, 0x10, 0x01, 0xB5, 0x75, 0xA6, - 0xAA, 0x80, 0xB2, 0x51, 0x64, 0x59, 0x04, 0x0F, 0x92, 0x12, 0xD6, 0x05, 0x6E, 0xC3, 0x0B, 0x05, - 0xAC, 0x58, 0x8F, 0x13, 0x73, 0x7D, 0x13, 0xAF, 0xDE, 0xC4, 0xAB, 0x3F, 0x8E, 0x78, 0x75, 0x6D, - 0x4B, 0x36, 0x8C, 0x81, 0x55, 0x7B, 0x2A, 0xD2, 0x2C, 0x29, 0x6C, 0x4D, 0xF2, 0xF7, 0x99, 0xB2, - 0x56, 0x84, 0x81, 0x45, 0xF8, 0x97, 0x84, 0xDF, 0x86, 0x09, 0x5A, 0x99, 0x98, 0x18, 0x56, 0xC7, - 0x71, 0xE1, 0x18, 0x68, 0xE1, 0xD9, 0xB2, 0xA8, 0xF4, 0x58, 0x8B, 0x35, 0xC4, 0xCB, 0xDB, 0x98, - 0xCB, 0xE8, 0x44, 0xC3, 0xBB, 0xA3, 0xE0, 0x29, 0xA3, 0xC7, 0xCB, 0xB7, 0xC8, 0x4F, 0x9D, 0xCB, - 0x8A, 0xCD, 0xF2, 0x5F, 0xB8, 0xCD, 0x09, 0x7D, 0x35, 0xB9, 0x6A, 0xBC, 0x23, 0x67, 0x6D, 0x25, - 0x11, 0xC0, 0xF1, 0x0C, 0xEF, 0x0D, 0x54, 0x3C, 0xE5, 0xC0, 0x07, 0xDC, 0xED, 0x52, 0x36, 0x91, - 0x3D, 0x19, 0xEA, 0x08, 0xFB, 0x8D, 0x01, 0x89, 0xA1, 0xA3, 0x7F, 0x85, 0xDD, 0xF3, 0xDF, 0x7C, - 0xD3, 0xE5, 0xDE, 0xB8, 0x80, 0x58, 0x32, 0xB6, 0x59, 0x99, 0xE2, 0x65, 0x07, 0xB5, 0x6A, 0x75, - 0xAF, 0x5A, 0xAD, 0xFA, 0x9E, 0x12, 0x47, 0x54, 0xFD, 0x25, 0x94, 0x41, 0x3E, 0x86, 0x5F, 0xC9, - 0x19, 0x70, 0x31, 0xE2, 0xDC, 0x96, 0xEF, 0x79, 0x95, 0xAD, 0xB6, 0xE4, 0xCF, 0x20, 0x95, 0x0B, - 0x8E, 0x91, 0xA2, 0x5E, 0x6E, 0x8A, 0x79, 0xD1, 0x0D, 0x41, 0x52, 0x7E, 0x88, 0xCD, 0xEB, 0x01, - 0x20, 0x7F, 0x26, 0x01, 0x4F, 0x9F, 0x7F, 0xF5, 0xBD, 0x82, 0x15, 0xBC, 0xD3, 0xEF, 0x0A, 0x1E, - 0x26, 0x77, 0x99, 0xED, 0xFC, 0xBF, 0xFF, 0xEB, 0x65, 0xA8, 0xFD, 0xF1, 0x92, 0xFC, 0xF5, 0xD9, - 0x0D, 0xD2, 0xF9, 0x9D, 0x04, 0x53, 0x61, 0x99, 0x2B, 0xA3, 0x7D, 0x5A, 0x6F, 0xAF, 0xAD, 0x7C, - 0x4C, 0x6C, 0xBD, 0x37, 0xC4, 0x18, 0x96, 0x89, 0x7F, 0xAD, 0x28, 0x03, 0x92, 0x88, 0xB7, 0x15, - 0x78, 0x35, 0x86, 0x4C, 0x71, 0x6C, 0x0A, 0xFB, 0xD8, 0x24, 0x1C, 0x22, 0x3B, 0x3B, 0xCE, 0xEE, - 0xD2, 0xE8, 0xF1, 0xBC, 0x2A, 0x51, 0x2A, 0x42, 0xB5, 0x1C, 0x4B, 0x73, 0x4D, 0xF1, 0xBC, 0x64, - 0x7C, 0x0A, 0x86, 0x39, 0xCD, 0xC1, 0xA4, 0x62, 0xDA, 0xD7, 0xF4, 0x49, 0x4F, 0x6E, 0xE1, 0xF8, - 0xAB, 0x02, 0xFA, 0xD8, 0x6C, 0xD3, 0xD0, 0xBD, 0x49, 0x1E, 0xA8, 0xB8, 0x05, 0x39, 0x53, 0x9D, - 0x4F, 0x58, 0x8A, 0xAE, 0x34, 0xCB, 0xCA, 0xDF, 0x57, 0x8E, 0x94, 0xE9, 0x4B, 0xB9, 0x36, 0x46, - 0x8B, 0x8D, 0x94, 0x4D, 0x3C, 0xB3, 0x87, 0xB2, 0xE1, 0x08, 0x83, 0x1D, 0x41, 0xAA, 0xEF, 0x43, - 0x57, 0xCA, 0x63, 0x46, 0x27, 0xF3, 0xC5, 0x8E, 0x2B, 0x61, 0xC5, 0x61, 0x7D, 0xBB, 0x32, 0x93, - 0xF4, 0x28, 0xFE, 0x42, 0x57, 0x41, 0x80, 0xDE, 0x88, 0x88, 0x44, 0x11, 0x20, 0xBF, 0x9A, 0x8C, - 0x2F, 0xEF, 0x36, 0x43, 0xC0, 0xFF, 0xAA, 0x3C, 0xEB, 0xC8, 0x44, 0x79, 0xE3, 0xF4, 0x7A, 0xE8, - 0xF9, 0x96, 0x94, 0xF7, 0x53, 0xA1, 0x22, 0x0D, 0x9C, 0xAA, 0xF9, 0x52, 0xF5, 0x82, 0xD4, 0xA9, - 0x4C, 0xEA, 0x0D, 0xD3, 0x97, 0xB8, 0x62, 0x35, 0x02, 0xC6, 0x65, 0x01, 0x3F, 0x0A, 0xA5, 0x37, - 0x8E, 0x33, 0xF2, 0x76, 0xA5, 0xA8, 0x7F, 0x50, 0x0D, 0x8D, 0x8A, 0xFA, 0x33, 0xBB, 0xBF, 0x6D, - 0x57, 0xD0, 0xFD, 0xA1, 0xEB, 0x5B, 0x4A, 0x71, 0x46, 0x2F, 0x2D, 0x66, 0x99, 0xDF, 0x41, 0x9B, - 0xF0, 0xF1, 0x5A, 0x50, 0xB8, 0x26, 0xA8, 0xCD, 0xBE, 0xA5, 0xB4, 0xE3, 0x36, 0x97, 0xAE, 0x12, - 0x28, 0xF8, 0x50, 0x81, 0x34, 0x4F, 0xB9, 0xC8, 0xAB, 0xB2, 0x6A, 0xBF, 0x5C, 0x5E, 0x94, 0xAF, - 0x3E, 0xB6, 0xD8, 0xB5, 0x2D, 0x30, 0x10, 0x99, 0xBE, 0xBA, 0xD5, 0x6C, 0x5F, 0x93, 0xFD, 0x0F, - 0xB0, 0x8E, 0x53, 0xCC, 0x2E, 0x9A, 0xAE, 0xA9, 0xE4, 0xC8, 0xC2, 0xB4, 0x4E, 0x5D, 0x63, 0xE3, - 0x5C, 0x34, 0x7F, 0x68, 0xDE, 0x3F, 0xD4, 0x7F, 0x38, 0xFB, 0xE9, 0xDA, 0x0E, 0x29, 0x0D, 0x3E, - 0xC1, 0xCE, 0x20, 0x45, 0x7C, 0x9B, 0x1F, 0x07, 0x42, 0x9B, 0x41, 0x1D, 0xAC, 0xC2, 0x29, 0x33, - 0x3A, 0xD3, 0x15, 0x59, 0x90, 0x22, 0x00, 0x91, 0xF3, 0x77, 0xEC, 0xC8, 0xA2, 0x59, 0x99, 0xF1, - 0x4A, 0xAF, 0x32, 0x91, 0x4F, 0x9D, 0x6A, 0x98, 0xC2, 0x2C, 0x42, 0x12, 0xBB, 0xBB, 0xFC, 0x56, - 0xBE, 0xF8, 0x78, 0xBE, 0x05, 0x0E, 0xFC, 0x8B, 0x71, 0x5C, 0xA1, 0xEC, 0x6A, 0xAF, 0xC8, 0x6F, - 0x05, 0xD7, 0x53, 0xC8, 0x6D, 0x25, 0xD2, 0x70, 0x3A, 0xD8, 0x23, 0x90, 0x4A, 0x38, 0xAD, 0x8C, - 0xCC, 0xAE, 0xB9, 0x51, 0x3E, 0x2B, 0x73, 0xD7, 0x52, 0xD0, 0x65, 0x65, 0x52, 0xF3, 0x84, 0xAD, - 0x9C, 0xA7, 0x29, 0xDC, 0x81, 0x16, 0xED, 0xB8, 0xDF, 0xBD, 0xD3, 0x95, 0x31, 0x00, 0x20, 0x61, - 0xA6, 0xBB, 0x9C, 0x82, 0xBF, 0x60, 0xAF, 0xE9, 0x7C, 0x82, 0x79, 0x0A, 0x87, 0x1D, 0xCA, 0xDD, - 0xB3, 0xD5, 0x94, 0x2A, 0xAC, 0x09, 0xB2, 0x66, 0xF0, 0x29, 0x94, 0x3C, 0xE1, 0x64, 0xC4, 0xAB, - 0x37, 0x5B, 0x55, 0x72, 0xE0, 0x9E, 0x08, 0xDE, 0x19, 0x3B, 0x6F, 0x87, 0x2F, 0xE3, 0xE5, 0x59, - 0xE5, 0x0F, 0x93, 0xCB, 0x00, 0x51, 0x5C, 0x6D, 0x68, 0xB5, 0xDD, 0xC6, 0x70, 0x8A, 0x88, 0x56, - 0x7E, 0x30, 0xA1, 0xA3, 0xE1, 0x2B, 0xAC, 0x76, 0x5A, 0x24, 0xA8, 0x34, 0x9B, 0x7E, 0x9F, 0xC7, - 0x89, 0x71, 0x72, 0xEE, 0xEA, 0xC4, 0x12, 0x3C, 0xB5, 0x68, 0x81, 0x52, 0xEA, 0x93, 0x5D, 0x6C, - 0x5B, 0x90, 0x74, 0x74, 0xFE, 0x2D, 0xE8, 0x06, 0xFE, 0x30, 0x52, 0xB6, 0xB0, 0xF5, 0xE3, 0x5C, - 0xC0, 0x6C, 0xE2, 0xE6, 0x86, 0x2B, 0xCB, 0xBD, 0xA7, 0x41, 0xCB, 0x2D, 0xDE, 0xD7, 0x5A, 0x56, - 0xB2, 0xAC, 0x6F, 0xDE, 0xCE, 0xC9, 0xB9, 0xE7, 0xDD, 0xB5, 0xDA, 0x96, 0x53, 0x62, 0x6D, 0x31, - 0x94, 0xB8, 0x89, 0xFB, 0x59, 0x98, 0x12, 0x6B, 0xAF, 0x80, 0x12, 0xEB, 0x59, 0x29, 0xF1, 0x60, - 0xF3, 0x76, 0xAE, 0x5E, 0x88, 0x12, 0xEB, 0x5B, 0x4E, 0x89, 0xF5, 0xC5, 0x50, 0xE2, 0x26, 0xEE, - 0x67, 0x61, 0x4A, 0xAC, 0xBF, 0x02, 0x4A, 0x3C, 0xC8, 0x4A, 0x89, 0x87, 0x9B, 0xB7, 0x73, 0x07, - 0x85, 0x28, 0xF1, 0x60, 0xCB, 0x29, 0xF1, 0x60, 0x31, 0x94, 0xB8, 0x89, 0xFB, 0x59, 0x98, 0x12, - 0x0F, 0x36, 0x85, 0x12, 0x17, 0x6D, 0xCF, 0x7C, 0xD0, 0x87, 0xE7, 0x54, 0xC0, 0xB0, 0xD4, 0x78, - 0x38, 0x6F, 0x31, 0xF9, 0xF7, 0x2A, 0xCC, 0x93, 0xE3, 0x81, 0xE7, 0x6E, 0x45, 0x98, 0x1C, 0x59, - 0xE8, 0xC3, 0x33, 0x2C, 0x92, 0x8E, 0xD9, 0x90, 0x57, 0xE5, 0x10, 0xD7, 0x95, 0xB5, 0x0C, 0xB8, - 0xB1, 0x17, 0x04, 0x3D, 0x92, 0xE5, 0x21, 0x12, 0xAC, 0x4B, 0x26, 0x0D, 0xB4, 0x56, 0x0C, 0x7D, - 0xAF, 0x2F, 0xDD, 0xE7, 0x1C, 0x2A, 0x48, 0xD9, 0xE7, 0xAC, 0x67, 0x3E, 0x72, 0x9B, 0x21, 0x54, - 0xD1, 0x61, 0xAE, 0xB2, 0xAD, 0x69, 0x3F, 0x33, 0x71, 0x92, 0xE1, 0xB4, 0x9D, 0x2D, 0x42, 0x2B, - 0xEB, 0x26, 0x86, 0xA0, 0xF2, 0x09, 0x6E, 0xDB, 0xEA, 0x2A, 0xA9, 0x8E, 0x07, 0xDE, 0x3A, 0x62, - 0xA0, 0xFA, 0x31, 0xCC, 0xB4, 0x3B, 0x8E, 0x0F, 0x64, 0x80, 0x60, 0x0B, 0xCA, 0x88, 0x60, 0xD6, - 0x85, 0x38, 0x69, 0xC8, 0x0B, 0x63, 0x55, 0x31, 0x15, 0xBD, 0xDF, 0xD5, 0xAB, 0x9B, 0x69, 0xC5, - 0x5B, 0x1A, 0x75, 0xC8, 0xAD, 0x5E, 0x0A, 0x75, 0xE0, 0x38, 0x42, 0x7F, 0x41, 0x66, 0x88, 0x22, - 0xC1, 0xF7, 0x78, 0x4E, 0xC2, 0xB2, 0xA8, 0x84, 0x64, 0x21, 0x6F, 0x12, 0x2C, 0x91, 0xB9, 0x40, - 0x17, 0x88, 0xD0, 0xBD, 0x41, 0xB1, 0x5E, 0x2A, 0x0F, 0xEC, 0x45, 0x73, 0x7E, 0xD4, 0x3F, 0x1E, - 0x7E, 0x78, 0x8B, 0x44, 0x2F, 0x22, 0x49, 0x05, 0xFB, 0x9C, 0x39, 0xEC, 0x3C, 0xD2, 0x68, 0xAD, - 0x31, 0xE6, 0xF3, 0x69, 0x86, 0xAE, 0x8F, 0x88, 0x58, 0x1E, 0x00, 0x12, 0x93, 0x0E, 0x59, 0x99, - 0x8E, 0x98, 0x90, 0x18, 0xC6, 0x3D, 0x61, 0xAE, 0x36, 0x15, 0x00, 0xC5, 0x6E, 0x1D, 0x23, 0x7F, - 0x80, 0x4A, 0xA2, 0xBB, 0xC4, 0x64, 0xB1, 0x66, 0x57, 0xB3, 0xB5, 0x88, 0x30, 0x95, 0x5A, 0xA9, - 0xD1, 0x6C, 0x15, 0x0A, 0x6B, 0xA8, 0x96, 0x1A, 0x28, 0x05, 0x6D, 0x64, 0x3C, 0x43, 0xB3, 0x15, - 0x89, 0x66, 0x88, 0x9E, 0x5A, 0x1D, 0xD7, 0xD1, 0x0C, 0xAC, 0x05, 0x1E, 0x44, 0x79, 0xC9, 0x72, - 0xDF, 0x94, 0x23, 0x81, 0x61, 0x76, 0x16, 0x6E, 0x60, 0xBD, 0xAC, 0xB2, 0x04, 0x73, 0x85, 0x41, - 0x5F, 0x24, 0xEA, 0x4D, 0xEF, 0x2D, 0x22, 0x10, 0x62, 0x9C, 0x9A, 0x35, 0x16, 0x0B, 0x23, 0x11, - 0x70, 0x74, 0x73, 0xE5, 0xD8, 0xB2, 0xB1, 0x4C, 0x4B, 0x85, 0x49, 0x4A, 0x5B, 0x18, 0x61, 0xE6, - 0xC2, 0xE0, 0x95, 0xD7, 0x9B, 0xA0, 0x4E, 0xC6, 0xC2, 0xBF, 0xA2, 0x1B, 0x6E, 0x5A, 0x50, 0xA1, - 0x2B, 0xEE, 0x68, 0xCB, 0xE9, 0xA0, 0x8F, 0x02, 0x2B, 0x71, 0xC9, 0x4D, 0x41, 0xCB, 0x1B, 0x75, - 0xCB, 0x3D, 0x7F, 0x39, 0x2F, 0xCD, 0xCC, 0x30, 0x9D, 0x17, 0xE7, 0x4C, 0xC9, 0x20, 0xD9, 0x30, - 0x4D, 0xB4, 0x58, 0xFE, 0x85, 0x31, 0xE3, 0x8D, 0x7C, 0x5C, 0x48, 0x6C, 0xF2, 0xB7, 0x6E, 0xB7, - 0x68, 0x68, 0xF2, 0x65, 0xBB, 0x55, 0xBE, 0x73, 0x46, 0x9B, 0x19, 0x05, 0x4C, 0xC1, 0xAE, 0xE8, - 0xC9, 0x03, 0xB3, 0x3C, 0xA8, 0x07, 0xA1, 0x62, 0x61, 0x50, 0xAD, 0x64, 0xB3, 0x40, 0x80, 0x65, - 0xFA, 0x63, 0x0F, 0xFD, 0x49, 0xC3, 0x47, 0x03, 0x10, 0xD0, 0x4C, 0xC9, 0x87, 0x09, 0xDC, 0xE4, - 0x41, 0x40, 0x85, 0xC4, 0x54, 0x79, 0x31, 0xCF, 0x23, 0x4F, 0xB6, 0xAF, 0xCE, 0x88, 0x3F, 0x62, - 0xB0, 0xCE, 0x19, 0x80, 0x44, 0x38, 0x8E, 0xE8, 0xB3, 0x76, 0xAB, 0x85, 0x63, 0x61, 0xC9, 0xC7, - 0x70, 0x38, 0x41, 0xFC, 0xD6, 0xC3, 0x92, 0x08, 0x18, 0x6A, 0xF3, 0x67, 0x2A, 0x67, 0x38, 0x6E, - 0x72, 0x76, 0x73, 0x19, 0xF5, 0x55, 0xA5, 0x01, 0x61, 0x57, 0xB6, 0x2E, 0x38, 0x8D, 0x40, 0x55, - 0x34, 0xC6, 0x66, 0xBA, 0x5E, 0x9D, 0x56, 0x61, 0x8F, 0x60, 0x75, 0xDB, 0x3C, 0x0F, 0x33, 0x30, - 0xD2, 0x1C, 0xE0, 0xC1, 0xEC, 0xE4, 0x8B, 0xCD, 0xE6, 0xE9, 0xD9, 0xD9, 0xE9, 0xF9, 0xF9, 0xE9, - 0xC5, 0xC5, 0xE9, 0xE5, 0xE5, 0xE9, 0xD5, 0x55, 0x51, 0x93, 0x59, 0xE1, 0x59, 0xB7, 0x34, 0x13, - 0x43, 0xD1, 0x69, 0xF2, 0xDE, 0x69, 0x81, 0xF2, 0xA6, 0x39, 0xF2, 0x2D, 0x71, 0xEE, 0x02, 0x34, - 0xBC, 0x79, 0xB9, 0x28, 0x6D, 0xBE, 0xB9, 0xE5, 0x87, 0x97, 0x53, 0x04, 0x0D, 0x21, 0x03, 0x27, - 0x32, 0xEE, 0x83, 0xDC, 0x84, 0x59, 0x75, 0xD1, 0xD8, 0x54, 0x0D, 0x32, 0x9B, 0x7B, 0x7B, 0x68, - 0x27, 0x19, 0x86, 0xC3, 0x60, 0xB9, 0x4C, 0x43, 0xF9, 0xBC, 0x02, 0x97, 0x73, 0x7D, 0x38, 0x13, - 0x70, 0x12, 0x0A, 0x15, 0xB2, 0x15, 0x48, 0x5B, 0xB0, 0x7B, 0x71, 0x94, 0x6B, 0x46, 0x52, 0x00, - 0x8E, 0x1C, 0x25, 0x5C, 0x7A, 0x7B, 0x8C, 0x3F, 0x99, 0x02, 0xA5, 0x58, 0x25, 0x3B, 0x49, 0xF1, - 0x93, 0x8C, 0x2A, 0x28, 0x32, 0x32, 0x8F, 0x0B, 0xD8, 0x4C, 0x05, 0x68, 0x99, 0x1B, 0xF5, 0x3D, - 0xAE, 0xEA, 0x3D, 0x1A, 0x57, 0x3C, 0x8E, 0x79, 0xD9, 0x7E, 0xB0, 0x4D, 0xA1, 0xDC, 0xAB, 0xBC, - 0x91, 0x36, 0x44, 0x8A, 0x0D, 0x24, 0x4E, 0xEE, 0x29, 0x19, 0x15, 0x60, 0x8C, 0xE9, 0x97, 0x07, - 0xBE, 0x4D, 0x01, 0xBB, 0x76, 0x0F, 0xF9, 0xA6, 0x0D, 0x6C, 0x0C, 0xD8, 0xF2, 0x88, 0xBB, 0x00, - 0xCF, 0xCA, 0x1F, 0xD6, 0x77, 0xBF, 0x70, 0x11, 0xE4, 0x83, 0x45, 0xD5, 0x3D, 0x96, 0x76, 0xA3, - 0x2B, 0x07, 0x65, 0x50, 0x45, 0x33, 0x81, 0xEB, 0xB1, 0x7C, 0x88, 0x9E, 0x74, 0x99, 0x76, 0x27, - 0xC0, 0xF5, 0x55, 0x94, 0x41, 0x9E, 0x32, 0xEB, 0x4C, 0x73, 0xF4, 0x6D, 0xEA, 0x90, 0x1B, 0x6B, - 0x24, 0x45, 0x20, 0x2E, 0x0A, 0x8A, 0x00, 0xAD, 0x90, 0xD2, 0xD8, 0x6B, 0x58, 0x01, 0xCC, 0xE2, - 0x81, 0x4B, 0xFE, 0x50, 0x1E, 0x22, 0xAA, 0x2E, 0x2A, 0xCA, 0x17, 0x01, 0x0C, 0xD8, 0xC0, 0x07, - 0x95, 0xB2, 0x6B, 0xBA, 0x9E, 0x90, 0xC1, 0xF1, 0xB4, 0x12, 0xF8, 0xB3, 0x8B, 0x2E, 0xFA, 0xE4, - 0xD1, 0x28, 0x69, 0x15, 0xC8, 0x93, 0x28, 0x38, 0xDD, 0xF2, 0xB9, 0x0D, 0x94, 0xF5, 0xB2, 0xE3, - 0x72, 0xDE, 0x39, 0x11, 0xC3, 0x9F, 0x59, 0x15, 0x34, 0xF3, 0x9D, 0x09, 0x5D, 0xEA, 0x52, 0x0A, - 0x02, 0x93, 0x67, 0x43, 0x63, 0x4C, 0x52, 0xF9, 0x8F, 0x86, 0xE1, 0xB4, 0x69, 0xDF, 0x7A, 0xBD, - 0x84, 0xCD, 0xAB, 0xED, 0x93, 0xB5, 0x61, 0x05, 0x75, 0xE1, 0x37, 0x95, 0xA3, 0x79, 0x43, 0xDB, - 0x19, 0x9D, 0x05, 0x36, 0x98, 0x52, 0x23, 0xFC, 0x93, 0x7D, 0x93, 0x45, 0x7F, 0xF9, 0x8A, 0x98, - 0x54, 0x62, 0x22, 0xEB, 0xE7, 0x3E, 0x94, 0x49, 0x18, 0xC5, 0x93, 0xBD, 0xA0, 0xFE, 0x31, 0x9C, - 0xD2, 0x28, 0x4A, 0xCA, 0xB3, 0xDA, 0xE3, 0xB6, 0xE1, 0xE1, 0x9D, 0x8B, 0x0C, 0x9D, 0x78, 0x34, - 0xB5, 0x88, 0x29, 0x0B, 0xEB, 0x18, 0x5A, 0x4A, 0xE9, 0xF2, 0xA8, 0x4E, 0x1C, 0xE6, 0xE6, 0x00, - 0xB6, 0x03, 0xA7, 0xB9, 0xAC, 0xF4, 0x2E, 0x95, 0xC6, 0xE0, 0x22, 0xE7, 0x35, 0x17, 0x65, 0x7F, - 0xB7, 0x82, 0x5A, 0xB2, 0xCF, 0x9E, 0xE0, 0x83, 0xD7, 0x64, 0xD6, 0x92, 0x2B, 0x2A, 0x56, 0x39, - 0x36, 0xDA, 0x74, 0x46, 0x41, 0xD8, 0x28, 0xBC, 0x92, 0x05, 0x61, 0x65, 0xF3, 0x8D, 0x2A, 0x08, - 0x3B, 0x7F, 0x45, 0x2F, 0xB0, 0x6D, 0xF9, 0x43, 0x0B, 0x48, 0xF6, 0x8E, 0x8F, 0xAE, 0x54, 0xB2, - 0xAF, 0x0B, 0xF3, 0x31, 0xA7, 0x79, 0x6B, 0x3E, 0x7F, 0x9D, 0x18, 0xA0, 0xD4, 0x50, 0xC0, 0x0F, - 0x1E, 0x64, 0xF0, 0xCD, 0x21, 0x12, 0x27, 0xBD, 0x5E, 0x7C, 0x0F, 0x9A, 0xFD, 0x15, 0xF8, 0x10, - 0xEC, 0xDA, 0x0F, 0x43, 0x2A, 0x87, 0x3A, 0x5B, 0xB3, 0x7D, 0xAC, 0x56, 0xAA, 0x2F, 0xB1, 0x69, - 0xA4, 0x68, 0xFD, 0x1A, 0x96, 0xE9, 0x04, 0xB0, 0x73, 0xB4, 0x33, 0xA5, 0x1D, 0x67, 0xF3, 0xC4, - 0x8B, 0x73, 0x04, 0x5D, 0x14, 0x4E, 0x59, 0x94, 0xD1, 0x74, 0x7E, 0x1E, 0xCA, 0x1A, 0x7A, 0xA2, - 0x7F, 0xBC, 0xAF, 0xA7, 0x31, 0xC9, 0xAA, 0x05, 0x5F, 0x84, 0x1B, 0x32, 0x46, 0xDC, 0x15, 0x07, - 0xB7, 0xCA, 0xE9, 0x84, 0x49, 0xBA, 0xE1, 0x0C, 0x01, 0xBD, 0x91, 0x99, 0x5D, 0x86, 0x99, 0xE6, - 0xC3, 0x6C, 0x74, 0x20, 0xAF, 0x8E, 0xC3, 0x6F, 0x54, 0x4C, 0xAB, 0xA7, 0xD4, 0xD4, 0x8D, 0xCD, - 0x57, 0x13, 0x91, 0xC9, 0x82, 0x85, 0x04, 0x1B, 0x8E, 0x42, 0x99, 0x14, 0xBF, 0x52, 0x65, 0xA1, - 0x85, 0x6A, 0x71, 0xF7, 0xE7, 0x63, 0x92, 0x6C, 0x92, 0xE7, 0xC4, 0x19, 0x87, 0x73, 0x7C, 0x8C, - 0x05, 0xAB, 0x53, 0xCD, 0xA2, 0x53, 0x59, 0x93, 0xB0, 0x43, 0x6B, 0x0F, 0x71, 0x0C, 0x0F, 0x15, - 0xCD, 0xB4, 0xA5, 0x46, 0x05, 0xD8, 0x87, 0xB1, 0x5F, 0x5D, 0xAE, 0x09, 0x1F, 0x03, 0x99, 0x81, - 0x3A, 0xD8, 0x40, 0x7B, 0x66, 0xCA, 0xB8, 0xEB, 0x09, 0x59, 0xC5, 0xE3, 0x0E, 0x3E, 0xBA, 0x1C, - 0x6D, 0x17, 0x1C, 0x4F, 0x29, 0x42, 0xCD, 0xAE, 0xC9, 0x2D, 0x83, 0xA1, 0xD7, 0xDE, 0x2B, 0xB2, - 0x5A, 0xCC, 0x66, 0x6F, 0x6E, 0x9A, 0x02, 0x10, 0xE7, 0x96, 0x32, 0xC9, 0xA1, 0xF9, 0xF8, 0x85, - 0x8B, 0x18, 0xE3, 0xCB, 0x5E, 0x08, 0x29, 0x13, 0x67, 0x4D, 0x76, 0xBF, 0x58, 0xBE, 0xDA, 0x8B, - 0xF5, 0x8E, 0x5C, 0xF5, 0x87, 0xA1, 0x41, 0xF9, 0x3C, 0x1D, 0xF6, 0x78, 0x50, 0xA9, 0x1D, 0x56, - 0x6A, 0x47, 0x59, 0x39, 0xAA, 0x84, 0x4B, 0xE3, 0xD3, 0xD0, 0x75, 0x7A, 0x64, 0x54, 0x8B, 0xF2, - 0x0B, 0xD9, 0x6D, 0x4B, 0x7D, 0x75, 0xA6, 0xB9, 0x21, 0x29, 0xD5, 0xEA, 0x25, 0x40, 0xC8, 0x27, - 0xF8, 0xA3, 0x5A, 0xCD, 0x86, 0xF4, 0x0A, 0xC2, 0x23, 0xD3, 0x10, 0xFD, 0xD3, 0x83, 0x6A, 0x95, - 0xCC, 0xA8, 0xC0, 0x83, 0x54, 0xE7, 0x99, 0xF5, 0xCB, 0xE9, 0x73, 0x9B, 0xA3, 0x66, 0x1E, 0x7C, - 0xF8, 0x97, 0x0C, 0x9A, 0xA6, 0x82, 0xC3, 0x52, 0x5C, 0x2C, 0xB2, 0x1E, 0xD8, 0x71, 0x4E, 0x9A, - 0xD4, 0xF3, 0x73, 0xF8, 0x04, 0x63, 0x5D, 0x83, 0x92, 0xBA, 0xC4, 0xEB, 0x00, 0x31, 0xD3, 0x47, - 0x12, 0x34, 0xFD, 0xCE, 0xC0, 0x14, 0x01, 0xE6, 0x5C, 0xD1, 0x73, 0xC7, 0x96, 0x59, 0x0C, 0xA3, - 0xA0, 0x45, 0x01, 0xEA, 0x47, 0xCD, 0x14, 0x68, 0x1B, 0xD8, 0x9F, 0x3F, 0xB0, 0x7C, 0x99, 0x9D, - 0x5D, 0xDF, 0xBD, 0xA0, 0xB2, 0xE7, 0x62, 0xEB, 0x21, 0x29, 0x62, 0x00, 0x3E, 0xEA, 0xDB, 0xA6, - 0x78, 0xEF, 0x8D, 0x99, 0x6C, 0xE7, 0x99, 0x49, 0xE9, 0x90, 0xAC, 0xBC, 0x20, 0x58, 0xDB, 0x48, - 0x86, 0x54, 0xC8, 0x83, 0xE2, 0xF0, 0xC9, 0x9A, 0x15, 0x78, 0xE5, 0xB1, 0x61, 0x1F, 0xD8, 0x00, - 0x5E, 0xCF, 0xB5, 0xCE, 0xD7, 0xE5, 0x9E, 0x30, 0xB7, 0x26, 0xD8, 0x04, 0x45, 0xE0, 0xCA, 0x8A, - 0x18, 0x5C, 0xE6, 0x21, 0xF7, 0x4C, 0x0E, 0x1B, 0x0A, 0xF4, 0x98, 0x41, 0xF0, 0x1E, 0xD5, 0xF5, - 0x36, 0xDA, 0xE3, 0x5F, 0x72, 0x63, 0x1D, 0xEF, 0x29, 0x14, 0xDB, 0xAF, 0x61, 0x17, 0x31, 0x1D, - 0x72, 0x5B, 0x14, 0x49, 0x72, 0x9B, 0xE8, 0x74, 0xCA, 0x94, 0x17, 0x74, 0x9F, 0x4D, 0x1D, 0x16, - 0xBD, 0xD1, 0x3E, 0xD3, 0x3C, 0x5E, 0x30, 0xBF, 0x76, 0xE3, 0xEE, 0xA1, 0xB5, 0x79, 0x37, 0xE1, - 0x2D, 0x5F, 0x5D, 0x3E, 0xCB, 0x3D, 0x34, 0x6D, 0x2C, 0xE0, 0xE4, 0xD0, 0x9D, 0x35, 0xA5, 0x9C, - 0x44, 0x0D, 0xE0, 0x41, 0x3A, 0x28, 0x85, 0xF7, 0x2D, 0x2D, 0xBA, 0x6F, 0xF9, 0x66, 0xE3, 0x97, - 0xF7, 0xDC, 0xE3, 0xA2, 0xF2, 0x56, 0x03, 0x55, 0xC9, 0xAB, 0x61, 0xF6, 0x1F, 0x4C, 0xC7, 0x03, - 0xA0, 0x6C, 0x5F, 0xB0, 0x73, 0x50, 0xB9, 0x57, 0xE1, 0x9E, 0x9D, 0x9E, 0x78, 0x68, 0xE1, 0xBE, - 0xD6, 0x1A, 0x1B, 0x98, 0xBA, 0xEB, 0xC0, 0x22, 0xC9, 0xB8, 0x40, 0xCA, 0x96, 0x20, 0xA6, 0xBC, - 0x47, 0x46, 0xBE, 0x01, 0xF0, 0x33, 0xAD, 0xC7, 0xC7, 0x89, 0x13, 0x2C, 0x98, 0x63, 0xCC, 0xA4, - 0xB7, 0xAD, 0x75, 0xED, 0x62, 0x20, 0x4F, 0x73, 0x69, 0x58, 0xAE, 0x63, 0x33, 0xC8, 0x77, 0x30, - 0x0F, 0xCC, 0xCA, 0xF4, 0xEB, 0xC0, 0xB4, 0x7D, 0xC1, 0xBD, 0x29, 0xFE, 0xCD, 0x87, 0x09, 0xFF, - 0xE6, 0x0F, 0x13, 0xFE, 0xCD, 0xB7, 0xDA, 0x13, 0xE6, 0xD7, 0x4A, 0x95, 0xEF, 0x28, 0x4B, 0xE8, - 0x0E, 0x8C, 0xB4, 0xBB, 0xAE, 0x3A, 0x62, 0xDF, 0xB0, 0xDC, 0x1C, 0xF2, 0x2C, 0x58, 0x39, 0x62, - 0x94, 0x4C, 0x4F, 0x8B, 0xCA, 0xBF, 0xDE, 0x37, 0xF9, 0x23, 0x22, 0x9F, 0x25, 0x37, 0x46, 0x39, - 0x3E, 0x72, 0x0D, 0xFD, 0xAA, 0x1F, 0x54, 0xCD, 0x30, 0x7F, 0x9C, 0xF3, 0xCA, 0x32, 0x41, 0xCC, - 0xC2, 0xF7, 0x2C, 0x07, 0x7E, 0x80, 0xD4, 0x37, 0x90, 0x06, 0x6D, 0x1B, 0xE7, 0xB4, 0x87, 0xFA, - 0x9B, 0x30, 0x75, 0xE6, 0xF9, 0xEE, 0x23, 0x97, 0x25, 0xF2, 0x34, 0xE8, 0xCC, 0x45, 0xFD, 0x2F, - 0x48, 0x53, 0x89, 0xB9, 0xAF, 0x60, 0xF4, 0x08, 0x46, 0xD7, 0x0E, 0x01, 0xD6, 0x6A, 0x23, 0x2A, - 0xEC, 0x06, 0x47, 0x80, 0x87, 0xD8, 0xB8, 0x7E, 0x72, 0x32, 0xFE, 0xE6, 0xF5, 0x38, 0x76, 0x67, - 0x4C, 0x9C, 0x49, 0x5A, 0x94, 0x37, 0x00, 0xB6, 0xA0, 0x2A, 0x4D, 0x4C, 0xA2, 0x6D, 0x26, 0x23, - 0xC9, 0x64, 0xBB, 0x17, 0x46, 0xBB, 0xAD, 0x82, 0x3A, 0x55, 0x7A, 0xCF, 0x55, 0xD0, 0xE7, 0x8D, - 0xCA, 0x9F, 0x4A, 0x14, 0xBA, 0x54, 0x02, 0x04, 0x5A, 0x8A, 0x53, 0x41, 0x9C, 0x06, 0x35, 0x32, - 0xCE, 0x21, 0x7D, 0x06, 0xDC, 0x5F, 0x77, 0xB9, 0x86, 0x61, 0x34, 0xD3, 0x48, 0x91, 0xBE, 0x43, - 0x52, 0x94, 0xAE, 0x75, 0x16, 0x9D, 0x15, 0x9E, 0x8C, 0x53, 0xD3, 0x24, 0x7D, 0x4A, 0x3A, 0x7C, - 0xE5, 0xA4, 0xB6, 0x44, 0x5A, 0x4B, 0x20, 0x61, 0x0E, 0x6A, 0x8B, 0xB7, 0x5C, 0x2A, 0xBD, 0xE1, - 0xA0, 0xB0, 0xF3, 0x52, 0xE7, 0x55, 0x43, 0x64, 0xF4, 0x03, 0x2B, 0x9E, 0x97, 0x36, 0x39, 0x60, - 0x84, 0xDA, 0x63, 0xB6, 0x1F, 0x92, 0xEA, 0x48, 0x0D, 0x45, 0x9D, 0xE5, 0x54, 0xA2, 0x4C, 0x26, - 0xE4, 0xC2, 0x7F, 0x91, 0xA5, 0xDD, 0x41, 0xF3, 0xD9, 0x17, 0x13, 0xED, 0xAB, 0xCB, 0x5F, 0x61, - 0xA4, 0x8A, 0xDF, 0x79, 0xCA, 0x8E, 0x63, 0x59, 0x58, 0xF5, 0xEB, 0xF3, 0xD2, 0x83, 0x23, 0xDA, - 0x45, 0x2B, 0x1B, 0x80, 0x6B, 0x41, 0xE6, 0xBB, 0x98, 0x09, 0x2F, 0xD2, 0x3D, 0xDA, 0xEF, 0xDA, - 0xF8, 0x91, 0x6E, 0x44, 0xE0, 0xC1, 0xBA, 0xBD, 0xF1, 0xCE, 0x2D, 0x07, 0x9D, 0xE3, 0xC8, 0x16, - 0xE2, 0xBB, 0x54, 0xAE, 0x08, 0x99, 0x2D, 0x5D, 0xC0, 0xE3, 0x3C, 0x3D, 0xC5, 0x81, 0x1D, 0x9B, - 0x57, 0xFE, 0xD0, 0x49, 0x6D, 0x6B, 0x09, 0x22, 0x5E, 0x54, 0x86, 0xDB, 0xE6, 0x7D, 0x2B, 0x99, - 0xCF, 0x16, 0x1E, 0xAD, 0x24, 0x49, 0x6D, 0x44, 0x07, 0x89, 0xCC, 0x22, 0xAB, 0x63, 0xC8, 0xE2, - 0xEF, 0xE7, 0xA2, 0x71, 0xB7, 0x88, 0x90, 0x4D, 0x5B, 0x70, 0xDB, 0xD6, 0xD8, 0x3D, 0xA7, 0x42, - 0x5A, 0x58, 0x81, 0xD8, 0xF1, 0xA8, 0x42, 0x95, 0x34, 0xE0, 0x91, 0xAB, 0x7C, 0xAD, 0x5A, 0x3D, - 0xDA, 0x87, 0x1F, 0xC7, 0xA1, 0x80, 0xA0, 0x19, 0x86, 0xAC, 0xD2, 0x82, 0x7D, 0x00, 0x32, 0xBF, - 0x82, 0x22, 0x13, 0x89, 0x3D, 0xDA, 0x88, 0x0A, 0x13, 0xE3, 0xE9, 0x60, 0xAE, 0x5E, 0x17, 0x90, - 0xAA, 0x90, 0x44, 0x0A, 0xDD, 0x64, 0xE2, 0x2A, 0x6A, 0x2C, 0x16, 0x0C, 0xC6, 0x76, 0xB2, 0x94, - 0x94, 0x58, 0x02, 0xE3, 0x8C, 0x23, 0x2C, 0xD2, 0x6A, 0xA0, 0x27, 0x82, 0x2C, 0x9A, 0x15, 0x7F, - 0xE3, 0xA6, 0x0C, 0xB4, 0x89, 0x99, 0x6A, 0x5D, 0x9E, 0xCC, 0x84, 0x0C, 0x7D, 0x0D, 0x34, 0xFB, - 0x59, 0x15, 0x75, 0xCB, 0x2C, 0x7E, 0x2E, 0x95, 0xFF, 0x66, 0xE5, 0xC1, 0x99, 0x45, 0x89, 0x97, - 0x48, 0xA3, 0x53, 0xD0, 0x2F, 0xF3, 0xB5, 0xD2, 0x64, 0xDB, 0x0D, 0x8E, 0xD7, 0xED, 0x04, 0x11, - 0x3C, 0xF7, 0x73, 0xE3, 0xC4, 0x58, 0x8E, 0xC0, 0xDD, 0xC9, 0x2E, 0x4B, 0x8D, 0x71, 0xA0, 0x50, - 0xCB, 0x75, 0x84, 0x03, 0x64, 0x9A, 0xDF, 0xF8, 0x3E, 0xD9, 0xED, 0x8C, 0x15, 0x2C, 0xC8, 0x08, - 0xDF, 0x6E, 0xB5, 0x0A, 0x9B, 0xE0, 0x6F, 0x2E, 0x8B, 0x5A, 0xE0, 0x33, 0x85, 0xB2, 0xAD, 0xDA, - 0x02, 0x7F, 0x1E, 0xC6, 0x34, 0x60, 0x38, 0x18, 0x72, 0xA3, 0x73, 0xEC, 0xD9, 0xD4, 0xA3, 0x41, - 0x63, 0xB2, 0xD0, 0x24, 0xD5, 0x11, 0x54, 0x05, 0xD1, 0xD9, 0x0E, 0xC0, 0x70, 0x37, 0x1A, 0x59, - 0x76, 0xE3, 0x8C, 0xCA, 0x97, 0x36, 0x77, 0x7B, 0xCF, 0x6C, 0x07, 0x80, 0xB4, 0x4B, 0x21, 0x6B, - 0xC2, 0x77, 0xED, 0xC8, 0x3B, 0x4E, 0xB7, 0x1B, 0x51, 0xA0, 0x31, 0x16, 0x4D, 0xF3, 0x40, 0x4A, - 0xD4, 0x5C, 0xEB, 0x99, 0x2C, 0xB6, 0x5F, 0xAE, 0xDB, 0xB1, 0xA2, 0x8E, 0x14, 0x89, 0x06, 0xAF, - 0xBD, 0x59, 0xF8, 0xC3, 0x60, 0x01, 0x4D, 0x17, 0x8E, 0xFB, 0xAC, 0x60, 0x18, 0x89, 0x72, 0x90, - 0xCF, 0x03, 0xE0, 0x7A, 0xAB, 0x30, 0xF9, 0x27, 0xE7, 0x92, 0x45, 0x00, 0x5C, 0x2C, 0xF2, 0x26, - 0x57, 0x2D, 0x8F, 0x47, 0xEE, 0xE2, 0xD5, 0x11, 0x1E, 0x82, 0x58, 0x66, 0x0F, 0x03, 0x80, 0x28, - 0xD1, 0x07, 0xE9, 0x26, 0x2E, 0x5E, 0x18, 0xD1, 0x21, 0x1B, 0x06, 0x60, 0x62, 0xEA, 0x7F, 0x93, - 0x12, 0x12, 0x39, 0xA0, 0xBA, 0x38, 0xFA, 0xF7, 0xB0, 0x45, 0x05, 0x4E, 0xE2, 0x67, 0x65, 0x09, - 0xB2, 0xF1, 0x32, 0x05, 0x6F, 0x87, 0x07, 0x9A, 0x49, 0x3E, 0x38, 0x64, 0x49, 0x9A, 0x1A, 0x07, - 0x31, 0x1E, 0x63, 0x89, 0x31, 0x0F, 0x1B, 0x9B, 0xED, 0x25, 0xCD, 0x7F, 0x7E, 0xB6, 0x36, 0xDD, - 0x4D, 0xE2, 0x53, 0x91, 0x58, 0x86, 0x50, 0x79, 0xA6, 0x5D, 0x78, 0x70, 0x12, 0x48, 0x1A, 0x8B, - 0x63, 0xB8, 0x97, 0x1B, 0xE5, 0x04, 0xD4, 0x33, 0xB7, 0xE3, 0x31, 0x65, 0xA5, 0x29, 0xDE, 0xC1, - 0x8D, 0x7B, 0x7C, 0xE4, 0x17, 0x5C, 0xB9, 0xBF, 0x4B, 0x67, 0x1A, 0x94, 0xE4, 0x5C, 0x55, 0x80, - 0xE5, 0x1D, 0xBF, 0xF7, 0x0B, 0xF9, 0x26, 0x5D, 0xE0, 0x9F, 0x0C, 0xFF, 0x9E, 0xEF, 0xCC, 0xBA, - 0x00, 0xED, 0x35, 0x8F, 0x83, 0x1F, 0x82, 0xFD, 0x42, 0x9A, 0x9D, 0x60, 0x8E, 0xF2, 0x0F, 0x79, - 0x95, 0xCB, 0xCE, 0x1D, 0x1F, 0xE9, 0x72, 0x15, 0xEC, 0x2B, 0x36, 0x8D, 0xD5, 0xF3, 0xAE, 0x26, - 0x23, 0xA1, 0x94, 0x49, 0xD1, 0x75, 0xBA, 0x12, 0xAA, 0x6C, 0x73, 0xC0, 0xAB, 0x8C, 0x20, 0xEA, - 0x90, 0x1C, 0xFF, 0x64, 0x13, 0x90, 0xF7, 0x6D, 0xA0, 0x7B, 0x8A, 0x3F, 0x2C, 0xC3, 0x1F, 0x92, - 0xEF, 0xE8, 0xCF, 0xC0, 0x00, 0x3C, 0x2A, 0xAE, 0xA2, 0xEA, 0x49, 0x23, 0x12, 0xF4, 0xA8, 0xA8, - 0x72, 0xDE, 0x58, 0x86, 0xED, 0xAD, 0x17, 0x71, 0x09, 0x70, 0x72, 0x6D, 0x42, 0xA8, 0xF5, 0x85, - 0x1E, 0x10, 0xAE, 0xA9, 0x89, 0x04, 0x11, 0x03, 0x0B, 0x0E, 0x47, 0xB8, 0x4C, 0x74, 0x9F, 0x2B, - 0x20, 0x21, 0xD1, 0xF8, 0xDD, 0x1C, 0x8F, 0xBC, 0x0C, 0x3E, 0x8F, 0x09, 0x90, 0x27, 0xA2, 0x17, - 0x42, 0x38, 0x6C, 0x52, 0xFC, 0x42, 0x02, 0x00, 0x4B, 0x29, 0x42, 0xB1, 0x40, 0x09, 0x50, 0xCD, - 0xF6, 0xE2, 0xEB, 0x79, 0x0B, 0x04, 0xBF, 0x00, 0xDC, 0x3E, 0xDA, 0x61, 0xF1, 0xD9, 0x92, 0x99, - 0x66, 0x74, 0xF4, 0x6C, 0x47, 0xB0, 0xD1, 0xD7, 0x87, 0xC1, 0x34, 0xF1, 0xE0, 0x5D, 0x31, 0x87, - 0x8D, 0x9A, 0x05, 0x43, 0x68, 0x11, 0x9F, 0x45, 0xB5, 0x02, 0xD7, 0x51, 0x09, 0x18, 0xA1, 0x4A, - 0x7F, 0xC6, 0xD0, 0xD5, 0xFA, 0x49, 0xA6, 0x1C, 0x6A, 0xCA, 0x00, 0xF0, 0x3D, 0x76, 0x71, 0xD7, - 0xDE, 0x63, 0x5F, 0x40, 0x3F, 0x1A, 0x01, 0x27, 0x46, 0x19, 0xB2, 0xED, 0x77, 0xB0, 0xA7, 0x5B, - 0xCD, 0xFB, 0xBE, 0xC5, 0xBE, 0x24, 0xE9, 0x2E, 0x7B, 0x04, 0x8A, 0xEB, 0x56, 0x3C, 0x51, 0x5E, - 0x00, 0xC8, 0x65, 0x27, 0xCC, 0x0B, 0xD0, 0xED, 0xBA, 0x15, 0x4B, 0xB1, 0x7B, 0x34, 0x61, 0x07, - 0xBC, 0x4A, 0x6C, 0xD8, 0xBA, 0xFC, 0x42, 0x00, 0xDB, 0x10, 0xA5, 0xC8, 0x0D, 0x49, 0x9D, 0xAE, - 0xD3, 0xD0, 0x8E, 0x2C, 0x74, 0x49, 0x24, 0x7B, 0xCD, 0x79, 0xF6, 0x8E, 0x16, 0x9C, 0x61, 0x2F, - 0x82, 0x18, 0x99, 0xED, 0x76, 0xE3, 0x36, 0xEB, 0xB1, 0xD7, 0x2D, 0x9C, 0x2A, 0x80, 0x27, 0xA5, - 0x90, 0x05, 0xBC, 0xB1, 0x0D, 0x94, 0x80, 0x0B, 0x79, 0x43, 0xFE, 0xDC, 0xC8, 0x9F, 0x0D, 0x6C, - 0x09, 0xEC, 0x87, 0x46, 0xAF, 0x04, 0xFD, 0xD5, 0x69, 0x9C, 0x42, 0x02, 0xEA, 0xAD, 0x6D, 0x20, - 0x83, 0x60, 0x41, 0x6F, 0xA4, 0x90, 0x9B, 0x14, 0xB2, 0x83, 0x2E, 0x41, 0x0E, 0xAA, 0xE1, 0x2B, - 0x21, 0x09, 0x29, 0x94, 0xA6, 0x50, 0x44, 0x44, 0x72, 0xDD, 0x06, 0xAA, 0xF0, 0xE4, 0x74, 0x07, - 0x30, 0xDD, 0x37, 0xCA, 0xC8, 0x4F, 0x19, 0x0A, 0x25, 0x72, 0x13, 0x86, 0x6C, 0xB7, 0x81, 0x37, - 0x9B, 0xF3, 0x55, 0x96, 0x97, 0x94, 0xF6, 0x08, 0x96, 0xFE, 0x55, 0x88, 0x78, 0x8E, 0xEE, 0xE9, - 0x74, 0x14, 0xE2, 0xEB, 0xD7, 0x87, 0x87, 0x16, 0x4B, 0xCF, 0xCD, 0x9D, 0x3F, 0x2F, 0xF7, 0xE4, - 0x08, 0xA1, 0xAA, 0x89, 0xA4, 0x73, 0x52, 0xDD, 0x5C, 0xDF, 0x94, 0xFC, 0x05, 0x4D, 0x8E, 0x4A, - 0x8B, 0x71, 0xF2, 0x8E, 0xA3, 0x7F, 0xB8, 0x97, 0x99, 0x5C, 0x4D, 0x93, 0xAD, 0x96, 0x57, 0xC4, - 0x64, 0xA9, 0x08, 0x7C, 0x97, 0x0F, 0x7F, 0xEF, 0x96, 0x8D, 0xBE, 0x77, 0xD3, 0xB0, 0xB7, 0x56, - 0x3F, 0x78, 0x43, 0xDF, 0x34, 0xF4, 0xBD, 0x2B, 0x82, 0xBD, 0x77, 0xCB, 0x46, 0xDE, 0x97, 0x32, - 0xE6, 0xA5, 0xD5, 0xE6, 0x19, 0xDB, 0xA5, 0xD6, 0x54, 0xA3, 0x27, 0x9C, 0x40, 0xBE, 0xF2, 0x24, - 0x11, 0xFB, 0xE8, 0x06, 0xD5, 0xEC, 0x09, 0xE9, 0x77, 0x6B, 0xEB, 0xF6, 0xE4, 0xAC, 0xFF, 0xB1, - 0x6A, 0xB3, 0xE6, 0x5B, 0x2D, 0x90, 0xAD, 0x96, 0xC0, 0x33, 0x73, 0xF1, 0xDC, 0xB5, 0x40, 0x12, - 0x0D, 0x97, 0x2F, 0x85, 0x2F, 0x17, 0xDF, 0xFB, 0x8E, 0x27, 0xAE, 0x1C, 0x17, 0x50, 0x4B, 0x55, - 0x32, 0x2B, 0x82, 0xF0, 0x5F, 0x1D, 0xF4, 0x9E, 0x71, 0xDC, 0xF4, 0xE8, 0xD0, 0x90, 0xF5, 0xAF, - 0x4B, 0xBD, 0xC5, 0xD4, 0xEE, 0xE8, 0xD4, 0x88, 0xCE, 0x6F, 0x2A, 0x85, 0xB0, 0xF4, 0xCB, 0xE5, - 0x0C, 0x41, 0xC1, 0x46, 0x7D, 0x53, 0xEF, 0xD3, 0x47, 0x2A, 0x03, 0x25, 0xAB, 0x3C, 0x51, 0x9E, - 0xC2, 0xC0, 0x01, 0x00, 0xB9, 0x2D, 0x79, 0x00, 0x54, 0xDE, 0x28, 0x2E, 0xBB, 0xCE, 0x3B, 0x89, - 0x67, 0xD9, 0x8B, 0xA7, 0x47, 0xA8, 0x2F, 0xD9, 0xCD, 0x5A, 0x95, 0xE0, 0xC5, 0x78, 0x42, 0xA0, - 0x04, 0xBE, 0x6E, 0x27, 0x08, 0x5B, 0x0C, 0x97, 0xE4, 0xFF, 0x00, 0xAB, 0x2B, 0xE4, 0xFA, 0x30, - 0x6E, 0xF7, 0x42, 0xAF, 0x87, 0x31, 0x78, 0x13, 0x0E, 0x0F, 0xB8, 0xE6, 0x4D, 0xF2, 0x75, 0x18, - 0xAF, 0x78, 0x29, 0x6E, 0x0E, 0x79, 0x15, 0x56, 0x1B, 0x35, 0x15, 0xCB, 0xBA, 0x7C, 0x1A, 0x02, - 0x6C, 0xED, 0x34, 0x85, 0x15, 0x5F, 0x65, 0xC1, 0xBB, 0xA7, 0x2B, 0x0E, 0x2F, 0x92, 0xF1, 0xC2, - 0xD2, 0x05, 0x4B, 0x85, 0xBC, 0x0D, 0xB4, 0x27, 0x73, 0xE0, 0x0F, 0xC2, 0xE0, 0x0B, 0x60, 0xDC, - 0x62, 0xC4, 0x41, 0x24, 0xF6, 0xA4, 0x4F, 0x1F, 0x88, 0xC7, 0x61, 0xFA, 0x89, 0x0A, 0xBB, 0xAC, - 0xF4, 0x2A, 0xAA, 0x20, 0x92, 0xD4, 0x81, 0x89, 0x37, 0xE1, 0xB9, 0x70, 0x8C, 0xBE, 0xA6, 0xDE, - 0xD8, 0x1F, 0x15, 0xBB, 0xC2, 0x00, 0xE2, 0xFF, 0x73, 0xCC, 0x3E, 0xB3, 0xE3, 0x43, 0xEF, 0x4D, - 0x4D, 0x9E, 0xC5, 0xF0, 0x93, 0xF8, 0x93, 0x49, 0x4D, 0x4E, 0x34, 0xDA, 0x32, 0x1B, 0x0F, 0xCE, - 0xDE, 0xE5, 0xBA, 0x89, 0xE9, 0x45, 0xD3, 0xE8, 0x25, 0x78, 0x6F, 0x03, 0x68, 0x65, 0x18, 0xCC, - 0x25, 0x10, 0x84, 0x54, 0xB2, 0x1F, 0xDD, 0x72, 0xF4, 0xEF, 0xF3, 0x88, 0xA3, 0x0C, 0x92, 0x61, - 0x48, 0x1E, 0xE3, 0x5E, 0x88, 0x3E, 0xF0, 0xBB, 0xCF, 0xEC, 0x3F, 0x6B, 0xFE, 0x1B, 0x89, 0xCC, - 0x25, 0x91, 0x10, 0x5F, 0x32, 0xD3, 0x47, 0xD0, 0x62, 0xFB, 0x88, 0xE3, 0xDE, 0x71, 0xC4, 0x05, - 0xB7, 0x52, 0xEF, 0x85, 0xF1, 0x3D, 0x46, 0x2F, 0x6E, 0x00, 0x75, 0x08, 0x87, 0x42, 0x06, 0xB0, - 0x32, 0x6C, 0x59, 0xB8, 0xE6, 0x10, 0xAB, 0x28, 0x68, 0xCF, 0x81, 0x03, 0xB0, 0x1B, 0x46, 0x00, - 0x12, 0xB5, 0x60, 0xC2, 0x72, 0xDF, 0x8B, 0x28, 0xE6, 0x6F, 0xD7, 0x00, 0xF3, 0xB0, 0x7F, 0x8C, - 0x10, 0x59, 0xB1, 0x3F, 0x6C, 0xB1, 0xA5, 0xD8, 0x0F, 0xF2, 0xAA, 0x4C, 0x3F, 0x9D, 0x89, 0x04, - 0xC2, 0xB7, 0x37, 0x48, 0xA2, 0xE2, 0x08, 0x64, 0xC0, 0x7B, 0x0B, 0x84, 0xE9, 0x47, 0x9E, 0x95, - 0x0E, 0x6A, 0xD5, 0xEA, 0x1B, 0x29, 0xA4, 0x92, 0xC2, 0x18, 0x3B, 0x72, 0xD1, 0x43, 0xD8, 0x6C, - 0x0B, 0x89, 0x22, 0xC0, 0x9B, 0x6B, 0x23, 0x8D, 0x22, 0x42, 0x0C, 0xBB, 0xBE, 0x58, 0x0B, 0x39, - 0xE8, 0x98, 0xE3, 0x90, 0x42, 0xC8, 0xCC, 0xAE, 0xA9, 0x88, 0x22, 0x81, 0xF6, 0x11, 0x84, 0xFF, - 0xD2, 0x6A, 0x8F, 0x73, 0x0E, 0xA1, 0xC9, 0xAC, 0xAF, 0xB9, 0x9A, 0x0E, 0x1A, 0xC4, 0x1F, 0x57, - 0x1E, 0x4A, 0xB1, 0x10, 0x25, 0xB0, 0x21, 0x33, 0x05, 0x8C, 0xDB, 0xAC, 0xF0, 0x56, 0xAD, 0x98, - 0xA9, 0x07, 0x73, 0xFB, 0xB0, 0x5B, 0xCD, 0x06, 0xAD, 0xD3, 0x5D, 0xAC, 0xB1, 0xC7, 0xB1, 0xF5, - 0x30, 0xAB, 0x34, 0x8E, 0x72, 0x63, 0x7A, 0xE4, 0xD1, 0x2F, 0xDD, 0xC4, 0x2D, 0xAE, 0x06, 0x2D, - 0x15, 0xAB, 0xCA, 0x31, 0xC7, 0xDE, 0x93, 0x34, 0x0D, 0xCD, 0x30, 0x03, 0x5D, 0x45, 0xE7, 0x30, - 0xD5, 0x10, 0x34, 0x75, 0x8C, 0x19, 0xC6, 0xA1, 0x58, 0x6F, 0xD9, 0x4D, 0x41, 0x31, 0xF0, 0x2B, - 0x2B, 0x50, 0x04, 0x38, 0x1B, 0x65, 0x0D, 0x8A, 0x2E, 0x71, 0x61, 0xF6, 0xA0, 0xAC, 0x29, 0xAC, - 0xDB, 0x17, 0xAC, 0x6D, 0xFE, 0xCE, 0xC3, 0xAA, 0x98, 0x9E, 0x81, 0x1F, 0x67, 0x67, 0xA4, 0xAA, - 0xB2, 0xDB, 0x33, 0xA4, 0x30, 0xB6, 0xCF, 0xAE, 0x5C, 0x1E, 0x6D, 0x87, 0x1F, 0xDB, 0x43, 0x60, - 0xBB, 0xF3, 0x79, 0x6D, 0x5A, 0xC7, 0xF9, 0x2F, 0x12, 0x29, 0xB7, 0x7E, 0x72, 0x87, 0x1F, 0xF0, - 0xE1, 0xBC, 0xC3, 0x49, 0xB8, 0x0A, 0x46, 0xEF, 0x2D, 0xDE, 0x15, 0xEF, 0x53, 0x78, 0x90, 0xE8, - 0x37, 0x30, 0x53, 0xD7, 0xA7, 0x7D, 0xF8, 0x23, 0xF5, 0x4D, 0x84, 0x60, 0x96, 0x37, 0x8D, 0x46, - 0x8C, 0x69, 0x8E, 0xEF, 0xB6, 0x83, 0xB5, 0xB4, 0x29, 0xFD, 0x40, 0xD3, 0xB2, 0x4A, 0x33, 0xEF, - 0xC5, 0x73, 0x16, 0x13, 0x8B, 0x00, 0x88, 0xC8, 0x19, 0xAF, 0xBA, 0x61, 0xAA, 0xF3, 0xE2, 0x80, - 0xF6, 0x85, 0xBB, 0x38, 0x30, 0x1A, 0x94, 0xD2, 0xEC, 0xF2, 0x89, 0x22, 0xAB, 0x7F, 0x0D, 0xEE, - 0x7D, 0x7F, 0xAD, 0x56, 0xC4, 0x93, 0x98, 0x3F, 0x8F, 0xA0, 0xFD, 0x11, 0xE1, 0x49, 0x96, 0x37, - 0x67, 0x00, 0x57, 0xE6, 0xB9, 0x40, 0x48, 0x5C, 0x5F, 0x48, 0x50, 0xCF, 0x9E, 0x52, 0x36, 0xF0, - 0xCE, 0xD8, 0x1B, 0x16, 0x65, 0x38, 0x59, 0x2A, 0x99, 0xAD, 0x6D, 0x1F, 0xEA, 0xF5, 0x5A, 0xF5, - 0xA0, 0xF6, 0x6B, 0xB5, 0x5E, 0xAD, 0x55, 0x8F, 0x65, 0xB2, 0xB9, 0x2C, 0x00, 0x86, 0x66, 0xEC, - 0x2F, 0xCB, 0xDC, 0x8C, 0x89, 0x79, 0xFD, 0xE1, 0xF6, 0xA3, 0x5E, 0xFD, 0x98, 0x7D, 0x3F, 0x0E, - 0xAB, 0x27, 0xAB, 0xDA, 0x0F, 0x35, 0xAF, 0xAD, 0xD8, 0x0F, 0xF8, 0x06, 0x0F, 0x83, 0xC6, 0x9C, - 0xD3, 0x23, 0xD3, 0x46, 0xCA, 0xB3, 0x34, 0xC3, 0x56, 0xCE, 0xBF, 0x96, 0x2B, 0x8D, 0x25, 0xB8, - 0x08, 0x00, 0x2E, 0xB0, 0x60, 0x27, 0xB1, 0x63, 0xF9, 0x57, 0xB6, 0x9C, 0x82, 0x19, 0xF7, 0x7A, - 0x91, 0x6F, 0x15, 0x59, 0x1B, 0x88, 0x51, 0x58, 0xE9, 0x80, 0x56, 0xA7, 0xFE, 0x5E, 0xC4, 0xFA, - 0x32, 0x6C, 0xF9, 0x6C, 0x1F, 0xB9, 0x74, 0x67, 0xB7, 0xEC, 0xF5, 0x3C, 0x66, 0xD6, 0xF2, 0xC0, - 0xBF, 0x6B, 0xE3, 0xF3, 0xBC, 0x16, 0x2D, 0xDE, 0x21, 0xEB, 0x5A, 0xA0, 0xF0, 0x97, 0x52, 0xB4, - 0x43, 0x96, 0x89, 0x78, 0x97, 0x5B, 0x91, 0x9B, 0x5E, 0x2A, 0x66, 0x38, 0xA5, 0x38, 0x4C, 0x35, - 0x52, 0x1B, 0x26, 0xB5, 0xEE, 0xCB, 0xFC, 0xD2, 0x2B, 0x4A, 0x1C, 0x94, 0x8B, 0xC3, 0xFA, 0x0F, - 0xBE, 0x37, 0xAB, 0x72, 0x55, 0xC1, 0x6C, 0x02, 0xB6, 0x91, 0xD0, 0xA7, 0xE2, 0x6F, 0xF7, 0xDD, - 0xD9, 0xF2, 0xF7, 0x74, 0x7B, 0xC5, 0xB4, 0xAA, 0x43, 0x09, 0xDD, 0x17, 0xB3, 0x25, 0x79, 0xA0, - 0x10, 0xC0, 0xDF, 0x35, 0x32, 0x57, 0xD4, 0xEA, 0xC1, 0xA3, 0xEA, 0xBC, 0x84, 0x7D, 0x73, 0xD2, - 0x95, 0x6A, 0x8F, 0xFC, 0x4C, 0xD8, 0x13, 0x5A, 0x9A, 0xCC, 0x15, 0x17, 0x27, 0x25, 0x7C, 0x57, - 0xDE, 0x17, 0x53, 0xEA, 0x51, 0xF8, 0x34, 0x13, 0x57, 0x12, 0xD7, 0xDF, 0x13, 0xC6, 0x05, 0xEC, - 0x0A, 0x0D, 0x09, 0xB5, 0xD0, 0x90, 0x30, 0x9F, 0x10, 0x03, 0xE9, 0x5E, 0xCE, 0xB6, 0x88, 0xD6, - 0x1D, 0xEF, 0x21, 0xC8, 0xB3, 0x92, 0x27, 0xFB, 0xCA, 0x2C, 0x17, 0x8C, 0x0C, 0xDB, 0x26, 0xB7, - 0x2A, 0xF7, 0xE6, 0x60, 0x19, 0xF3, 0x69, 0x9B, 0xE3, 0xF8, 0x02, 0xA7, 0x3B, 0x75, 0x93, 0xB0, - 0xCD, 0x78, 0x93, 0x2E, 0xB1, 0x10, 0x3A, 0x28, 0xBD, 0x33, 0x37, 0x8A, 0x32, 0x9E, 0x4C, 0xEE, - 0x8F, 0xCB, 0x07, 0xCE, 0xA3, 0xB2, 0xFB, 0x84, 0xA3, 0x14, 0xD8, 0x30, 0xB5, 0x82, 0x69, 0x1B, - 0x96, 0x21, 0xD5, 0xCD, 0xB0, 0xF1, 0xAF, 0x76, 0xC7, 0x1B, 0xFE, 0x39, 0xEB, 0x76, 0x24, 0x1E, - 0x25, 0x3F, 0x7A, 0xBA, 0x6B, 0x0E, 0x05, 0xF3, 0x5C, 0x1D, 0xF0, 0xC0, 0xD5, 0xF7, 0x31, 0x6D, - 0x53, 0xE5, 0x6F, 0x34, 0x03, 0xF9, 0x95, 0x7C, 0x37, 0xD2, 0xEC, 0x53, 0xF4, 0x39, 0x89, 0x10, - 0x8E, 0x4D, 0x15, 0x63, 0x1D, 0x4C, 0x09, 0xEE, 0xB1, 0xCF, 0xCC, 0x70, 0x74, 0x1F, 0xED, 0x7B, - 0x95, 0xDF, 0x7C, 0xEE, 0x3E, 0x4B, 0x45, 0xC9, 0x71, 0x41, 0x55, 0xDA, 0x79, 0x5F, 0x11, 0xE2, - 0xFD, 0x6E, 0xD8, 0x32, 0x68, 0x53, 0x01, 0xF1, 0xE3, 0x52, 0xD3, 0xFB, 0x3B, 0x82, 0x7D, 0x6E, - 0xB0, 0x7F, 0x8F, 0xCD, 0x1F, 0x93, 0xE3, 0x76, 0x1C, 0x47, 0x78, 0xC2, 0xD5, 0x86, 0x95, 0x07, - 0xD9, 0x62, 0x47, 0x8C, 0x3B, 0xF9, 0x8F, 0x5D, 0x35, 0xC3, 0x60, 0x5E, 0xB0, 0x09, 0xA0, 0x81, - 0x03, 0xEF, 0xF9, 0xB4, 0xDF, 0x17, 0x03, 0xAB, 0xF1, 0xFF, 0x01, 0xB4, 0x6F, 0xB4, 0x29, 0xDF, - 0xC5, 0x00 + 0xCE, 0xA4, 0x19, 0x25, 0x4A, 0x99, 0xB2, 0x56, 0x2A, 0xB9, 0xA2, 0xB2, 0xB3, 0xAA, 0xD6, 0x76, + 0xCB, 0x40, 0x20, 0x48, 0xA2, 0x13, 0x04, 0x58, 0x40, 0x40, 0x47, 0x8D, 0xCD, 0x58, 0x7F, 0xC6, + 0xCC, 0x87, 0xEC, 0x0F, 0xEC, 0xA7, 0xF4, 0x97, 0xAC, 0xBB, 0x47, 0x00, 0x04, 0xC0, 0x03, 0x87, + 0x78, 0xAA, 0x94, 0x65, 0x25, 0x89, 0x20, 0xE2, 0xF2, 0x70, 0xF7, 0x70, 0xF7, 0xF0, 0xE3, 0xC3, + 0x3F, 0xB5, 0xBE, 0x9E, 0xDF, 0xFD, 0xDC, 0xBE, 0x60, 0x03, 0x31, 0xB4, 0x1A, 0x6F, 0x3E, 0xE0, + 0x2F, 0x66, 0x69, 0x76, 0xFF, 0x63, 0x89, 0xDB, 0xA5, 0xC6, 0x1B, 0x78, 0xC2, 0x35, 0xA3, 0xF1, + 0x86, 0xC1, 0xBF, 0x0F, 0x43, 0x2E, 0x34, 0xA6, 0x0F, 0x34, 0xD7, 0xE3, 0xE2, 0x63, 0xC9, 0x17, + 0xBD, 0xF2, 0x49, 0x89, 0xED, 0x47, 0xBF, 0x1C, 0x08, 0x31, 0x2A, 0xF3, 0xDF, 0x7C, 0xF3, 0xFE, + 0x63, 0xE9, 0xA7, 0xF2, 0xB7, 0x66, 0xF9, 0xDC, 0x19, 0x8E, 0x34, 0x61, 0x76, 0x2D, 0x5E, 0x62, + 0xBA, 0x63, 0x0B, 0x6E, 0x43, 0xCB, 0xAB, 0x8B, 0x8F, 0xDC, 0xE8, 0xF3, 0x3D, 0x7D, 0xE0, 0x3A, + 0x43, 0xFE, 0xB1, 0x36, 0xEE, 0x44, 0x98, 0xC2, 0xE2, 0x8D, 0xCE, 0x48, 0x73, 0x7F, 0x5C, 0xFA, + 0x36, 0xBB, 0xBD, 0xFB, 0x0B, 0xEB, 0x70, 0xE1, 0x8F, 0x3E, 0xEC, 0xCB, 0x6F, 0x22, 0x43, 0xD9, + 0x1A, 0x34, 0x2D, 0xDD, 0x9B, 0xFC, 0x61, 0xE4, 0xB8, 0xA2, 0x44, 0xDF, 0xE0, 0xBF, 0x70, 0x94, + 0x07, 0xD3, 0x10, 0x83, 0x8F, 0x06, 0xBF, 0x37, 0x75, 0x5E, 0xA6, 0x0F, 0x7B, 0xCC, 0xB4, 0x4D, + 0x61, 0x6A, 0x56, 0xD9, 0xD3, 0x35, 0x0B, 0x06, 0xDE, 0x63, 0x43, 0xED, 0xD1, 0x1C, 0xFA, 0xC3, + 0xF1, 0x03, 0xDF, 0xE3, 0x2E, 0x7D, 0xD2, 0x60, 0xCE, 0x1F, 0xAB, 0x7B, 0xCC, 0x1B, 0xB8, 0xA6, + 0xFD, 0xA3, 0x2C, 0x9C, 0x72, 0xCF, 0x14, 0x1F, 0x9F, 0xB8, 0x37, 0x9E, 0xAD, 0x05, 0x5F, 0x30, + 0x97, 0x5B, 0x1F, 0x4B, 0x9E, 0x78, 0xB2, 0xB8, 0x37, 0xE0, 0x5C, 0x94, 0xD8, 0xC0, 0xE5, 0x3D, + 0x78, 0xE2, 0xEA, 0xFB, 0x5D, 0xC7, 0x11, 0x9E, 0x70, 0xB5, 0x51, 0x65, 0x68, 0xDA, 0x15, 0xDD, + 0xF3, 0x4A, 0x19, 0x1B, 0xD2, 0xD3, 0x68, 0x03, 0x4F, 0x77, 0xCD, 0x91, 0x60, 0xF0, 0x9D, 0x7C, + 0xE1, 0x6F, 0xBF, 0xF9, 0xDC, 0x7D, 0x2A, 0x1F, 0x54, 0x8E, 0x2B, 0x55, 0xEA, 0xFC, 0x6F, 0xF0, + 0xEA, 0x87, 0x7D, 0xF9, 0xDA, 0x8C, 0x36, 0xF1, 0xD9, 0xE4, 0x6A, 0xD0, 0xF5, 0x6D, 0x03, 0x26, + 0x34, 0xD9, 0x2E, 0xDA, 0xB0, 0x11, 0x6E, 0xC1, 0xFF, 0xD8, 0x31, 0x1C, 0xDD, 0x1F, 0xC2, 0x2E, + 0xEC, 0x56, 0x1C, 0x7B, 0xE7, 0xAD, 0x6E, 0x99, 0xFA, 0x8F, 0xB7, 0x7B, 0xEC, 0x6D, 0x45, 0x38, + 0xFD, 0xBE, 0xC5, 0xCB, 0x5D, 0x61, 0xC3, 0xC7, 0x9E, 0x6F, 0xEB, 0xC2, 0x74, 0x6C, 0xB6, 0xC3, + 0x77, 0xD9, 0xBF, 0x87, 0xAD, 0x65, 0x0F, 0xB0, 0x7C, 0xDF, 0x75, 0xA1, 0x8B, 0x3B, 0xCD, 0xED, + 0x73, 0x51, 0xD1, 0x07, 0xA6, 0x65, 0xC0, 0xE7, 0xFF, 0x55, 0xFD, 0xDF, 0xBB, 0xAA, 0x9B, 0x73, + 0x4B, 0xF3, 0xBC, 0x9D, 0xB7, 0x26, 0xEC, 0x78, 0x59, 0xD7, 0x5C, 0x2E, 0xCA, 0x86, 0xF3, 0x60, + 0xB3, 0xC8, 0x67, 0x7F, 0xF4, 0x76, 0xF7, 0xCF, 0x61, 0xC7, 0xFF, 0xB1, 0x2B, 0xA7, 0x9B, 0x9C, + 0x3D, 0x02, 0x7B, 0x3C, 0xF9, 0x8A, 0x27, 0x00, 0x61, 0xF5, 0x72, 0xDF, 0x75, 0xFC, 0x51, 0x62, + 0x5A, 0x03, 0x6E, 0xF6, 0x07, 0xE2, 0x94, 0x55, 0xFF, 0x1C, 0x7B, 0xEC, 0xDC, 0x73, 0xB7, 0x67, + 0x39, 0x0F, 0xA7, 0x6C, 0x60, 0x1A, 0x06, 0xB7, 0xE3, 0xDF, 0x02, 0x04, 0x6D, 0xCF, 0xC4, 0x85, + 0x9E, 0xAA, 0x0E, 0x58, 0xB5, 0x72, 0xE8, 0x31, 0xAE, 0x79, 0x3C, 0xFE, 0x66, 0xD7, 0x71, 0x0D, + 0xC0, 0xBE, 0xAE, 0x23, 0x84, 0x33, 0x3C, 0x65, 0x9E, 0x63, 0x99, 0x06, 0xAB, 0x8D, 0x1E, 0xD9, + 0x3F, 0xEB, 0x55, 0xFC, 0x2F, 0xB2, 0x94, 0x37, 0xE3, 0xF9, 0x5A, 0xA6, 0x27, 0x36, 0x7B, 0xB6, + 0xF8, 0x6F, 0xA4, 0x19, 0x86, 0x69, 0xF7, 0xCB, 0xAE, 0x9C, 0xD3, 0x51, 0x75, 0xF4, 0x38, 0x7D, + 0x39, 0xB2, 0x5B, 0x20, 0x0A, 0x8F, 0x09, 0x63, 0x6F, 0xFA, 0xF3, 0x41, 0x62, 0xA5, 0xF2, 0xBB, + 0x53, 0x66, 0x3B, 0x76, 0x62, 0x92, 0x43, 0xC0, 0x1E, 0xD3, 0x2E, 0x5B, 0xBC, 0x87, 0x80, 0x98, + 0x31, 0x66, 0xD7, 0x87, 0x25, 0xD8, 0xA7, 0x3D, 0x40, 0x5A, 0x2F, 0xD1, 0xB3, 0xE3, 0x0B, 0x20, + 0x56, 0x1E, 0x03, 0x62, 0x74, 0xB6, 0xA6, 0x8D, 0x5F, 0x5F, 0xB8, 0xAE, 0xE3, 0x26, 0x5A, 0x1A, + 0xA6, 0x37, 0xB2, 0xB4, 0xA7, 0x53, 0x26, 0x5F, 0x89, 0x4F, 0x4B, 0x77, 0x2C, 0x07, 0xE6, 0xEB, + 0x72, 0x23, 0xFE, 0xBC, 0x07, 0xCC, 0xAB, 0xEC, 0x99, 0xBF, 0xC3, 0x80, 0xDE, 0x50, 0xB3, 0x2C, + 0xEE, 0xCE, 0x1B, 0xB6, 0xE3, 0xEB, 0x3A, 0xC2, 0x23, 0xFF, 0xC0, 0x7D, 0x97, 0x27, 0x37, 0x7E, + 0xDE, 0xD0, 0xE1, 0xF7, 0x0F, 0x0A, 0xA5, 0xBA, 0x8E, 0x65, 0xCC, 0xDA, 0xBE, 0xC7, 0x32, 0xB5, + 0x4F, 0xCC, 0x6A, 0xF6, 0x46, 0xE0, 0x3F, 0x62, 0xCF, 0xA7, 0xEC, 0xA0, 0xFA, 0x2F, 0xB3, 0x7B, + 0x95, 0x3D, 0xD4, 0xAB, 0xF3, 0x3A, 0xAE, 0xCF, 0x41, 0xAB, 0xA0, 0x87, 0xC3, 0xB9, 0x3D, 0x1C, + 0xCE, 0xEE, 0x41, 0x13, 0x02, 0x98, 0x6E, 0xA2, 0xF1, 0xC8, 0x09, 0xA8, 0x45, 0xEB, 0x02, 0x09, + 0xF8, 0x22, 0x01, 0xF0, 0xDF, 0xCB, 0xA6, 0x6D, 0xF0, 0xC7, 0x53, 0x56, 0xAB, 0x56, 0x13, 0x24, + 0xA1, 0x48, 0xA1, 0x36, 0x01, 0x0D, 0x38, 0x94, 0xCA, 0x0A, 0x22, 0xC7, 0xD5, 0x29, 0xDF, 0xD2, + 0x74, 0x85, 0x33, 0x02, 0x32, 0x8A, 0x4F, 0x56, 0xB1, 0x37, 0xC9, 0xD0, 0x3E, 0xEC, 0xCB, 0xA3, + 0xFB, 0xCD, 0x87, 0xAE, 0x63, 0x3C, 0x29, 0x1E, 0x6F, 0x98, 0xF7, 0x4C, 0x47, 0xBE, 0xF9, 0xB1, + 0x84, 0x07, 0xA5, 0x06, 0x08, 0xE2, 0x96, 0x98, 0x69, 0x7C, 0x2C, 0xA9, 0xE5, 0x5D, 0xC1, 0xE3, + 0xD2, 0x98, 0x1B, 0x52, 0x03, 0xCD, 0x32, 0xFB, 0xF6, 0xC7, 0x12, 0xCD, 0xB7, 0x14, 0x34, 0x57, + 0xEF, 0x47, 0xDE, 0xA5, 0xF7, 0xCD, 0x61, 0x3F, 0xD9, 0xDD, 0xA5, 0x69, 0xF1, 0x1B, 0x38, 0xAD, + 0x4B, 0xE3, 0xA3, 0xE5, 0x4C, 0x7E, 0x5B, 0xFF, 0xF5, 0x7C, 0x40, 0xAB, 0xE9, 0x57, 0x46, 0x76, + 0xBF, 0x04, 0x03, 0xC1, 0xB9, 0xAD, 0xBE, 0x63, 0x16, 0xBF, 0xE7, 0x56, 0xA9, 0x01, 0x0C, 0x7A, + 0xA4, 0xD9, 0xD1, 0x3E, 0xDB, 0xDC, 0xD5, 0xE1, 0x60, 0x28, 0xC5, 0x06, 0x26, 0xE4, 0x96, 0x33, + 0x23, 0xF4, 0x83, 0xC1, 0x10, 0x0C, 0x1F, 0x4B, 0x01, 0x39, 0x28, 0x6A, 0x28, 0x35, 0xFE, 0x74, + 0xFC, 0x0E, 0x60, 0x04, 0x7D, 0x46, 0x56, 0xB9, 0x0F, 0xCB, 0x54, 0x10, 0x92, 0x7F, 0xCE, 0x83, + 0x56, 0xA2, 0x63, 0x62, 0x3A, 0xD1, 0x5D, 0x21, 0x24, 0x1C, 0xEF, 0xA1, 0xDC, 0x42, 0x09, 0x64, + 0x97, 0x83, 0xE8, 0x74, 0x65, 0xB7, 0x5D, 0x07, 0x09, 0x37, 0x0A, 0xE7, 0x6E, 0xE3, 0x16, 0xBF, + 0x13, 0x00, 0x8B, 0x0F, 0xFB, 0xDD, 0xC6, 0x87, 0xAE, 0x4B, 0xFF, 0xA3, 0x04, 0x24, 0x45, 0x18, + 0x66, 0x7A, 0xC0, 0x2F, 0xF0, 0x4C, 0x46, 0x70, 0xB1, 0xB6, 0x85, 0x1C, 0x99, 0x3D, 0x68, 0xA6, + 0xA8, 0x54, 0x2A, 0xAB, 0x9A, 0x3A, 0x8A, 0x73, 0x16, 0x17, 0x7C, 0xCA, 0xCC, 0x59, 0x0B, 0x3A, + 0x9B, 0x31, 0xF5, 0x81, 0xE6, 0x01, 0x6F, 0x7E, 0x60, 0xD4, 0xC7, 0x2A, 0x26, 0xDB, 0x33, 0xDD, + 0xE1, 0x03, 0x88, 0x00, 0xDF, 0x46, 0x96, 0xA3, 0x19, 0xD3, 0x67, 0x9D, 0x9C, 0xEF, 0xA5, 0x6A, + 0xC3, 0xFC, 0x91, 0xA1, 0x09, 0x0E, 0xAC, 0x52, 0xB6, 0xAA, 0xB0, 0xF8, 0x26, 0xC8, 0x85, 0x04, + 0x1B, 0x91, 0x71, 0x31, 0x8D, 0x37, 0x53, 0x49, 0x0A, 0xF1, 0x18, 0x97, 0x1A, 0xBE, 0x0F, 0xA2, + 0xE9, 0xB0, 0x5C, 0xAB, 0x83, 0x8C, 0x85, 0x84, 0x14, 0xD2, 0x8B, 0x2B, 0x7E, 0x94, 0x3D, 0x14, + 0x84, 0x23, 0x74, 0x12, 0x93, 0x92, 0xBF, 0x9B, 0x97, 0xA6, 0x14, 0x95, 0x51, 0x3C, 0x8B, 0xCC, + 0x26, 0x33, 0x98, 0x23, 0x80, 0xAD, 0xCD, 0x06, 0xEC, 0x10, 0x1A, 0xB5, 0xB5, 0x3E, 0xCF, 0xB8, + 0x20, 0xD7, 0x79, 0x98, 0xD8, 0xC7, 0xAE, 0xE5, 0xE8, 0x3F, 0xFE, 0x1C, 0xED, 0x20, 0xA5, 0x13, + 0x79, 0x9C, 0x20, 0x7B, 0x4E, 0x30, 0x1B, 0xFC, 0x87, 0x8B, 0x0F, 0x76, 0xEE, 0x34, 0xC2, 0x2B, + 0x00, 0x62, 0xC1, 0xE3, 0xBF, 0x72, 0xD7, 0x03, 0x0E, 0x3D, 0x9B, 0x23, 0xDC, 0x57, 0x2B, 0x55, + 0xC5, 0x12, 0x10, 0x11, 0x26, 0xC6, 0x18, 0xF7, 0xFA, 0x3B, 0x37, 0x32, 0xF7, 0xFA, 0xCB, 0x45, + 0xAB, 0x7C, 0xF9, 0xBE, 0x1D, 0x99, 0x5D, 0x64, 0x1C, 0x96, 0x32, 0x90, 0x44, 0xB7, 0xB3, 0xBB, + 0xAB, 0xD6, 0xEC, 0x01, 0x5A, 0x12, 0x25, 0xCF, 0x2C, 0x9F, 0x0B, 0xC0, 0xC6, 0x01, 0xBB, 0x6A, + 0xC1, 0xD1, 0x0A, 0xFF, 0x32, 0x8E, 0xA1, 0x3B, 0x20, 0x36, 0x99, 0x36, 0xE0, 0xBA, 0x77, 0x7D, + 0xFD, 0x79, 0xF6, 0x38, 0xD7, 0xD7, 0x83, 0xD3, 0x89, 0x6E, 0xE2, 0x5D, 0xF5, 0xB9, 0x63, 0x70, + 0x90, 0x9A, 0xAF, 0x35, 0x31, 0xBB, 0x9F, 0x43, 0x58, 0xFE, 0xFB, 0x6A, 0xFD, 0xFD, 0xE1, 0xBB, + 0xF7, 0x6A, 0x86, 0x7B, 0x59, 0xBB, 0x9D, 0x07, 0xE7, 0x72, 0xAD, 0x7A, 0x54, 0xA9, 0x9D, 0x1C, + 0x55, 0x8F, 0xDE, 0x1D, 0xD7, 0x72, 0x76, 0xDC, 0xB4, 0xE6, 0xCC, 0xB7, 0x76, 0x74, 0x0C, 0x33, + 0x3E, 0x09, 0x26, 0xCB, 0x76, 0x9A, 0xED, 0xF3, 0xDD, 0x49, 0x78, 0x66, 0x42, 0x9C, 0x08, 0xAC, + 0x2F, 0xCE, 0x2F, 0x2E, 0x67, 0x0F, 0x8A, 0xDF, 0xA6, 0x41, 0x9B, 0xEB, 0xBC, 0xF7, 0xD3, 0x3C, + 0x80, 0xD4, 0x4F, 0xAA, 0xF5, 0xEA, 0x71, 0xE5, 0xE8, 0xF8, 0x24, 0x23, 0x3C, 0xB0, 0xC7, 0x9F, + 0xE7, 0xF4, 0x78, 0xF8, 0xAE, 0x76, 0x7C, 0x52, 0x3D, 0xAC, 0x1C, 0x56, 0x0F, 0x72, 0xF4, 0xF8, + 0xCB, 0x3C, 0x5C, 0x38, 0x39, 0x3E, 0x3E, 0x3E, 0xAA, 0x1C, 0x9E, 0x1C, 0x26, 0x0F, 0xE3, 0x34, + 0xC0, 0x46, 0x59, 0xDA, 0xD4, 0xCF, 0x03, 0x37, 0xE0, 0x1C, 0x43, 0x51, 0xAE, 0x26, 0x85, 0x99, + 0x49, 0x76, 0x47, 0xE7, 0xC8, 0x04, 0x3F, 0xFA, 0xA7, 0x72, 0x99, 0x95, 0x83, 0x7F, 0x0C, 0x4E, + 0xEC, 0x1E, 0x88, 0x31, 0xEC, 0xDC, 0xB1, 0x7B, 0x66, 0x3F, 0xF2, 0x45, 0xB9, 0xDC, 0x98, 0xE4, + 0x63, 0x6A, 0x78, 0x03, 0xD4, 0x32, 0xD0, 0x89, 0xFA, 0xDA, 0xA8, 0x5C, 0x9F, 0xC2, 0xBA, 0x3E, + 0x48, 0xBD, 0x23, 0x14, 0xA8, 0x84, 0xCD, 0xE0, 0xFF, 0xF2, 0xC8, 0x35, 0x61, 0x72, 0x4F, 0x6C, + 0xAC, 0x2B, 0x4B, 0xD6, 0x3B, 0x92, 0x53, 0x90, 0x33, 0x28, 0x31, 0xF1, 0x34, 0x82, 0x65, 0xC8, + 0x2E, 0x4A, 0x0C, 0x4E, 0x2C, 0xAD, 0x2C, 0x5B, 0xD0, 0x31, 0x62, 0x69, 0x23, 0x8F, 0x97, 0xA6, + 0xEE, 0x91, 0x7C, 0x95, 0xB4, 0xEA, 0x8F, 0xA5, 0x7F, 0x0E, 0xDE, 0x6D, 0xC7, 0x7B, 0xD7, 0x5C, + 0x53, 0x2B, 0xF3, 0x47, 0xD8, 0x00, 0x83, 0xE3, 0x79, 0xAA, 0x59, 0xD0, 0x9D, 0x7C, 0x8A, 0x47, + 0x87, 0xEB, 0x58, 0xDE, 0x78, 0x9C, 0x78, 0xDB, 0xC6, 0xD4, 0x51, 0xE3, 0x00, 0xF4, 0x5D, 0x8D, + 0x34, 0xFF, 0x0F, 0x66, 0x6C, 0x69, 0xA8, 0xB4, 0x8F, 0x0F, 0x43, 0x52, 0xE1, 0x51, 0x9B, 0x67, + 0x5D, 0x93, 0x25, 0xB4, 0x7C, 0x3C, 0xE5, 0xCC, 0x69, 0x38, 0x23, 0x01, 0x32, 0x15, 0x63, 0x66, + 0x6D, 0x53, 0xB0, 0x0C, 0x36, 0xEC, 0xC2, 0x3E, 0x29, 0x72, 0xCD, 0xB6, 0xB2, 0x58, 0x37, 0x9A, + 0x6B, 0x30, 0xFC, 0x51, 0x46, 0x79, 0x3B, 0x89, 0x4F, 0xD3, 0x5A, 0xF4, 0x1C, 0x77, 0xA8, 0x34, + 0x77, 0xC0, 0xD4, 0xFA, 0x0C, 0xC8, 0x45, 0xA0, 0x77, 0x3A, 0xF3, 0x05, 0x49, 0x78, 0xAA, 0x5F, + 0x21, 0x14, 0x42, 0x74, 0xBD, 0x32, 0x90, 0x9D, 0xCE, 0x87, 0x64, 0x10, 0x93, 0xF2, 0xFB, 0xCC, + 0x2E, 0x48, 0xFB, 0x47, 0x2B, 0x1B, 0x88, 0x16, 0xDC, 0xE2, 0xBA, 0x60, 0x1A, 0x53, 0x1B, 0xC3, + 0x00, 0x0D, 0x40, 0xEB, 0xE6, 0x36, 0x83, 0xFE, 0xE1, 0x88, 0x66, 0x4A, 0x52, 0x05, 0x55, 0xDC, + 0x81, 0xE7, 0x9A, 0x08, 0x5E, 0xAC, 0xB0, 0xA6, 0x90, 0x52, 0xDE, 0x5E, 0x54, 0x6A, 0x7A, 0x30, + 0xE1, 0x00, 0xF7, 0x01, 0xC2, 0x1E, 0x75, 0xCC, 0x8D, 0xF1, 0xFB, 0x01, 0x5E, 0xE8, 0x03, 0xCD, + 0xEE, 0x73, 0x8F, 0xA1, 0x00, 0xE6, 0x69, 0xF7, 0xF0, 0xCA, 0x03, 0x8D, 0x07, 0xEA, 0x6C, 0xAF, + 0xC7, 0xD1, 0x10, 0x14, 0x4E, 0x06, 0x64, 0xB0, 0xB0, 0x1F, 0x50, 0xBB, 0xE9, 0xBD, 0xB7, 0x1D, + 0x68, 0x13, 0x47, 0xAE, 0xB7, 0xF8, 0xE2, 0x08, 0x26, 0xE3, 0x71, 0xA3, 0x32, 0x07, 0xB6, 0x13, + 0xE0, 0x23, 0x54, 0x33, 0xED, 0x9E, 0x53, 0xD6, 0x4D, 0x57, 0x87, 0x01, 0x05, 0x7F, 0x14, 0x21, + 0x59, 0x0E, 0x3D, 0xDC, 0xA9, 0x59, 0x4C, 0x2B, 0xC1, 0xBC, 0xA6, 0xA3, 0x40, 0x82, 0x61, 0x65, + 0x40, 0x0F, 0x94, 0xA3, 0x1A, 0x29, 0x9B, 0x3F, 0x9D, 0xD5, 0xC6, 0xB4, 0xDB, 0x80, 0xD3, 0xCD, + 0x05, 0x85, 0x69, 0x8F, 0x7C, 0xA1, 0xD8, 0x8B, 0xAB, 0x19, 0xA6, 0x53, 0x52, 0xB6, 0x56, 0x05, + 0xFF, 0x5B, 0xF9, 0xEC, 0x5E, 0x03, 0xB9, 0xE3, 0x63, 0xA9, 0x9A, 0xD6, 0x9D, 0xA5, 0x75, 0xB9, + 0x15, 0xA5, 0xF2, 0x2A, 0xE9, 0x82, 0x0D, 0xB5, 0xF1, 0x70, 0x62, 0xD3, 0x1B, 0xCF, 0x02, 0xE5, + 0x8B, 0x80, 0x64, 0x2D, 0x37, 0x24, 0x6B, 0x12, 0x92, 0xB5, 0xFA, 0xC1, 0xE1, 0xD1, 0xF1, 0xBB, + 0x93, 0xF7, 0xD5, 0xF1, 0x5F, 0xAF, 0x50, 0x55, 0x50, 0xAD, 0xE7, 0x86, 0x6A, 0x5D, 0x42, 0xF5, + 0x15, 0x82, 0x0A, 0x82, 0x07, 0xB9, 0x21, 0x78, 0xF0, 0x0A, 0xC1, 0x18, 0x04, 0x0F, 0x73, 0x43, + 0xF0, 0xF0, 0x15, 0x82, 0x31, 0x08, 0x1E, 0xE5, 0x86, 0xE0, 0xD1, 0x2B, 0x04, 0x63, 0x10, 0x3C, + 0xCE, 0x0D, 0xC1, 0xE3, 0x57, 0x08, 0xC6, 0x20, 0xF8, 0x2E, 0x37, 0x04, 0xDF, 0x2D, 0x0E, 0x82, + 0x0B, 0x04, 0xA1, 0x9C, 0x26, 0xBC, 0x1F, 0xCE, 0x53, 0x1A, 0xE7, 0x03, 0x35, 0x34, 0x7A, 0xD5, + 0xA2, 0x0C, 0x92, 0x07, 0xF4, 0xC7, 0x21, 0xFD, 0xA4, 0x81, 0xA8, 0x8F, 0x50, 0x86, 0x9B, 0x0B, + 0x16, 0xEC, 0xFC, 0x34, 0x1D, 0x04, 0x71, 0x7D, 0x0C, 0x07, 0x3D, 0xA1, 0xE1, 0xDE, 0xE5, 0xD9, + 0x44, 0x14, 0xD4, 0x4B, 0x31, 0x88, 0x28, 0x65, 0x35, 0xA6, 0x41, 0xCB, 0x5D, 0x99, 0xDF, 0xEB, + 0x28, 0xD9, 0x80, 0xAE, 0xF8, 0xC2, 0xBE, 0x23, 0xD7, 0x7E, 0xB8, 0xBF, 0xA3, 0x79, 0x7B, 0x3B, + 0x93, 0x02, 0x26, 0x07, 0x3A, 0x27, 0x25, 0xE8, 0x0B, 0xA8, 0x2C, 0x68, 0x62, 0x8D, 0x0F, 0xA6, + 0x2E, 0xFB, 0xE6, 0x0C, 0xB7, 0x78, 0x54, 0x99, 0xB4, 0x97, 0xA8, 0xDB, 0xDE, 0xA3, 0x0C, 0xD4, + 0xA5, 0xAC, 0x1B, 0x71, 0x3B, 0x05, 0x5D, 0xE3, 0x08, 0x9B, 0x6E, 0x0C, 0x14, 0xF6, 0x94, 0x66, + 0x19, 0x40, 0xA6, 0x62, 0xE2, 0x7C, 0xFD, 0x95, 0xAE, 0x6C, 0xED, 0x73, 0xF4, 0x37, 0x98, 0x18, + 0x67, 0x67, 0xB7, 0xA4, 0x6E, 0x2A, 0xD4, 0x83, 0xE9, 0xC6, 0x82, 0x25, 0x69, 0xD6, 0x11, 0xED, + 0x5A, 0x4E, 0x22, 0xA9, 0x0A, 0xA3, 0x2A, 0xDD, 0xD3, 0x74, 0xE1, 0xC0, 0xCA, 0x0D, 0xDE, 0xD3, + 0x7C, 0x4B, 0x78, 0x69, 0x6A, 0xEB, 0x52, 0x54, 0xD7, 0x34, 0x8E, 0x94, 0x1D, 0xAB, 0xDD, 0x08, + 0xF4, 0xBF, 0x78, 0xFD, 0x85, 0x21, 0xF4, 0x34, 0x7B, 0xCE, 0x94, 0x57, 0x13, 0x26, 0xBC, 0x4F, + 0x37, 0x9D, 0xCE, 0x2A, 0xED, 0x77, 0x43, 0x01, 0x7C, 0x33, 0x6A, 0xC4, 0x5B, 0xB0, 0xC5, 0x0E, + 0xD7, 0x53, 0xC8, 0x5C, 0x17, 0x69, 0x38, 0x1D, 0xEE, 0x11, 0x48, 0x25, 0x0C, 0x75, 0x7D, 0xDB, + 0xF3, 0xD6, 0x6C, 0xA5, 0x8B, 0x1B, 0xE8, 0xE6, 0xAE, 0x65, 0xB6, 0x75, 0x8E, 0x8D, 0x44, 0xB9, + 0x36, 0xD7, 0x44, 0x47, 0x97, 0x5D, 0x5C, 0xF3, 0x7C, 0x97, 0x68, 0xFC, 0x56, 0x13, 0xFC, 0x0A, + 0x4F, 0x9A, 0x39, 0x14, 0xF9, 0x65, 0xFC, 0x3A, 0xC3, 0xF7, 0x4F, 0x33, 0x9D, 0x76, 0xF3, 0x59, + 0xF0, 0x8C, 0xB3, 0xB1, 0x4E, 0xFC, 0xB0, 0x56, 0x47, 0x92, 0x3E, 0x60, 0x63, 0x86, 0x9E, 0x85, + 0x5F, 0x44, 0xCE, 0xFF, 0xC4, 0x02, 0x3F, 0xFF, 0x1E, 0xBB, 0x89, 0x8C, 0x9E, 0xF4, 0x57, 0x76, + 0x6A, 0xC7, 0xF8, 0xEF, 0xF3, 0xEF, 0xA7, 0x99, 0xDE, 0x5B, 0x20, 0x53, 0x4D, 0x30, 0xD7, 0xBB, + 0x01, 0x67, 0xB6, 0x3F, 0xEC, 0x72, 0x97, 0x39, 0x3D, 0x46, 0x1E, 0x19, 0x80, 0xBF, 0x1E, 0x1A, + 0x0A, 0x2D, 0x47, 0x97, 0xC8, 0xFC, 0x8F, 0xBF, 0xFF, 0x57, 0xCF, 0x7C, 0xE4, 0xDE, 0x3F, 0xFE, + 0xFE, 0xDF, 0x6C, 0x04, 0x2F, 0x7A, 0x1C, 0xD0, 0xD6, 0xA8, 0xB0, 0xA6, 0xFD, 0x24, 0x06, 0xA6, + 0xDD, 0x67, 0x5A, 0xD7, 0xB9, 0xE7, 0xEC, 0xF0, 0xF3, 0xEF, 0x20, 0x53, 0x3E, 0x01, 0xD6, 0xA0, + 0xE9, 0x72, 0x7C, 0xCD, 0x06, 0x2F, 0xF7, 0xB9, 0x47, 0x3D, 0x01, 0xBD, 0xED, 0x53, 0xCF, 0x7D, + 0x74, 0x62, 0x40, 0xD7, 0x1B, 0xDD, 0xE5, 0xB0, 0x34, 0xDD, 0xE4, 0x5E, 0x85, 0xDD, 0x38, 0x80, + 0x04, 0x0C, 0x67, 0x14, 0x01, 0x34, 0x73, 0xF1, 0x72, 0xD9, 0xF4, 0xC8, 0x0F, 0xCB, 0x25, 0x0F, + 0x2C, 0x64, 0xFD, 0x35, 0x18, 0x8C, 0x2C, 0x99, 0xA6, 0xCD, 0xCE, 0xF0, 0x66, 0x7F, 0xE8, 0x18, + 0xBC, 0xC2, 0x5A, 0xF2, 0x24, 0x38, 0xC5, 0xC9, 0x54, 0xD8, 0xB5, 0x39, 0x34, 0xD1, 0x7D, 0xA6, + 0x52, 0xAD, 0x56, 0x6B, 0xF5, 0x3A, 0xB5, 0xAB, 0xC2, 0x17, 0x19, 0xB6, 0x7D, 0xA9, 0xC7, 0x45, + 0xD6, 0x63, 0x63, 0xFC, 0x5E, 0x8A, 0x38, 0x98, 0xE1, 0x8C, 0x99, 0x41, 0x19, 0x52, 0x48, 0x3D, + 0x2A, 0x42, 0x18, 0x51, 0x49, 0x52, 0xA2, 0xD0, 0x54, 0x59, 0x32, 0x72, 0x4D, 0x30, 0x49, 0x3F, + 0x19, 0x86, 0x19, 0x4D, 0x6F, 0x5A, 0x54, 0xC0, 0x4C, 0x93, 0xFC, 0x22, 0xE3, 0xC6, 0xEE, 0xD3, + 0x09, 0x40, 0x78, 0x41, 0x86, 0xEB, 0xA9, 0xC2, 0x20, 0x7C, 0xD8, 0x70, 0xDC, 0x0F, 0xFB, 0xF0, + 0x8B, 0xC6, 0xDB, 0x0C, 0x96, 0xD4, 0xE1, 0x7A, 0xA9, 0xD1, 0x21, 0xFA, 0xF4, 0x58, 0x97, 0x8B, + 0x07, 0x0E, 0x24, 0x12, 0x79, 0xC7, 0xDB, 0x30, 0x7E, 0x33, 0x67, 0xA6, 0x15, 0xE0, 0x04, 0x40, + 0xF6, 0x12, 0xCB, 0x4C, 0xF4, 0x62, 0x04, 0x36, 0x60, 0x03, 0x13, 0x00, 0x62, 0x87, 0xA6, 0x62, + 0x1A, 0x9B, 0xC0, 0x7B, 0x17, 0x78, 0x15, 0xF8, 0x4F, 0xCF, 0xB7, 0x24, 0x7F, 0x10, 0xDA, 0x0F, + 0x62, 0x51, 0xB1, 0x97, 0xF9, 0x3D, 0x7A, 0x4C, 0xF5, 0xF8, 0x43, 0x38, 0x03, 0x4D, 0x77, 0x1D, + 0x0F, 0x7E, 0x01, 0x6F, 0x82, 0xB7, 0xE1, 0xC5, 0x7B, 0xFE, 0xC4, 0x76, 0xEA, 0x87, 0x7F, 0x62, + 0x03, 0xC7, 0x77, 0xBD, 0xDD, 0x45, 0x70, 0xA7, 0x90, 0x1D, 0xD5, 0xF0, 0x9D, 0x93, 0xDA, 0xFB, + 0xE3, 0x60, 0x78, 0xE0, 0x48, 0x04, 0xF2, 0xCC, 0xD0, 0x8C, 0xB8, 0x6F, 0xBD, 0x32, 0xA5, 0x85, + 0x32, 0x25, 0xA2, 0xA0, 0x82, 0x5C, 0x09, 0xDA, 0x2E, 0x80, 0x2D, 0x15, 0xF8, 0x3A, 0x55, 0x95, + 0x25, 0x1F, 0x99, 0x27, 0x5B, 0x1B, 0x9A, 0xFA, 0x17, 0x40, 0x45, 0xAB, 0xE5, 0x3A, 0x23, 0x29, + 0x71, 0x66, 0x32, 0x7C, 0x44, 0x9B, 0x96, 0x1A, 0x2D, 0xF9, 0x89, 0xD1, 0xC7, 0x0C, 0xB6, 0x0A, + 0xA9, 0xBA, 0x29, 0x5B, 0x51, 0xAC, 0xAB, 0x89, 0x79, 0xC5, 0x37, 0xCB, 0x50, 0xB3, 0x94, 0xBB, + 0x95, 0x02, 0x3C, 0x67, 0x44, 0x22, 0xC6, 0xF8, 0x9E, 0xAD, 0xED, 0xB8, 0x02, 0xA3, 0x12, 0x3E, + 0xEC, 0xCB, 0xAF, 0x72, 0xB5, 0x87, 0xE1, 0x3A, 0x82, 0xC4, 0x1F, 0xA0, 0xA2, 0x42, 0x3D, 0x1C, + 0xC0, 0x0C, 0xB8, 0x01, 0x82, 0x0F, 0x68, 0x15, 0x76, 0xA1, 0x1E, 0x0E, 0x4B, 0x8D, 0xA6, 0x2F, + 0x9C, 0xA1, 0x23, 0xCC, 0xFB, 0x62, 0xAB, 0x38, 0xC2, 0xC3, 0x40, 0x2B, 0xD4, 0xF4, 0x18, 0x06, + 0x37, 0xDD, 0xAE, 0xE3, 0xDA, 0x9C, 0xD5, 0xFA, 0x85, 0xBA, 0x78, 0x17, 0xE9, 0xA2, 0x5E, 0xAC, + 0x8B, 0x93, 0x48, 0x17, 0x87, 0xC5, 0xBA, 0x78, 0x5F, 0x6A, 0x7C, 0x77, 0x4D, 0x4F, 0x14, 0x6A, + 0x5C, 0x03, 0x3C, 0x3A, 0x33, 0x7F, 0x64, 0x80, 0x3E, 0xB0, 0x4D, 0x42, 0xF3, 0xC6, 0x8A, 0x7C, + 0x0E, 0x9A, 0xC6, 0xDF, 0x7C, 0x4F, 0x04, 0xC7, 0xA2, 0xE0, 0xAE, 0xAD, 0x59, 0x4C, 0xB3, 0xFA, + 0x8E, 0x6B, 0x8A, 0xC1, 0x10, 0x0F, 0x98, 0xA1, 0x26, 0xF4, 0x01, 0x7D, 0x0F, 0x9A, 0xAE, 0xB4, + 0x9D, 0x68, 0xA3, 0x91, 0x65, 0x2A, 0xA9, 0x9E, 0xDB, 0xF7, 0xA6, 0xEB, 0xD8, 0x38, 0xAE, 0x3A, + 0x6A, 0x95, 0x97, 0x02, 0x33, 0x87, 0x23, 0x17, 0xCE, 0x33, 0xD9, 0xB7, 0xCB, 0x75, 0x0E, 0xE8, + 0xE7, 0xBE, 0xF5, 0xE4, 0x30, 0x23, 0x50, 0x56, 0x65, 0x07, 0x70, 0x08, 0x47, 0xCF, 0x6B, 0xE5, + 0xF4, 0xE0, 0xA3, 0x13, 0x81, 0x73, 0x6F, 0x1A, 0xE8, 0x9C, 0x00, 0xE7, 0x9E, 0x0B, 0xA7, 0xB2, + 0xAE, 0xFB, 0x74, 0x4E, 0x06, 0xCE, 0xDF, 0x18, 0x26, 0x00, 0x6C, 0xBA, 0x82, 0x1E, 0x98, 0x34, + 0x62, 0x74, 0x20, 0x9C, 0x3A, 0xC0, 0xC9, 0xB7, 0x3D, 0xDF, 0x24, 0xFA, 0x65, 0x00, 0x1F, 0x81, + 0xFC, 0x80, 0x4E, 0x51, 0xE2, 0x48, 0xD4, 0xA0, 0x0F, 0x6F, 0xDB, 0xB3, 0x96, 0x84, 0x67, 0xB2, + 0x05, 0x1B, 0x67, 0xA1, 0x63, 0x10, 0xBA, 0x58, 0x80, 0x56, 0x80, 0xA7, 0x31, 0x1E, 0xF0, 0x70, + 0xCE, 0xC3, 0xDC, 0xC3, 0xF1, 0x40, 0xA5, 0xC1, 0xDE, 0x41, 0x0B, 0x91, 0x02, 0x44, 0x38, 0x4B, + 0x39, 0x6F, 0xFD, 0x29, 0xA2, 0x56, 0x04, 0x3C, 0x65, 0x93, 0xFC, 0x23, 0x22, 0xE7, 0x51, 0x94, + 0x95, 0x76, 0xB8, 0xED, 0x39, 0xEE, 0xA5, 0x8F, 0x5E, 0x97, 0x85, 0xAD, 0xB1, 0xD3, 0xBC, 0xF4, + 0x96, 0x6E, 0x66, 0x1F, 0x9A, 0xF6, 0x85, 0xC5, 0xEF, 0x4B, 0x53, 0xA5, 0x82, 0xE3, 0x09, 0xAB, + 0xFA, 0x17, 0xD8, 0xD6, 0xCE, 0x5F, 0x19, 0x36, 0x21, 0x34, 0x38, 0x5D, 0xB1, 0x7D, 0x12, 0xC6, + 0xC7, 0x98, 0x38, 0xC6, 0x83, 0x09, 0x20, 0x9E, 0x19, 0x1C, 0x63, 0x46, 0x3C, 0x42, 0x56, 0x4D, + 0x5A, 0x88, 0x3C, 0x20, 0x01, 0xCB, 0x32, 0x05, 0x99, 0x2E, 0xBB, 0x1C, 0xA5, 0x54, 0x43, 0xA2, + 0x24, 0x68, 0xD7, 0x1B, 0x6C, 0xBA, 0xCC, 0x7F, 0x15, 0xA1, 0x76, 0x2A, 0xCF, 0x55, 0xC4, 0x1C, + 0x59, 0x4D, 0x89, 0x69, 0x0A, 0x29, 0x32, 0x5D, 0x44, 0xA8, 0x97, 0x97, 0x70, 0x09, 0xB1, 0x6C, + 0xC4, 0x3F, 0xBF, 0xF9, 0x9A, 0x07, 0xEF, 0xCF, 0xF7, 0x6F, 0xAA, 0xEB, 0xC2, 0xF7, 0x31, 0x3E, + 0xA3, 0x8F, 0x9B, 0x66, 0xC9, 0x08, 0x94, 0xA9, 0xC8, 0x3D, 0x66, 0xA0, 0xC7, 0xC6, 0x19, 0xE8, + 0x46, 0x48, 0x15, 0x81, 0xBF, 0x37, 0xB2, 0xDC, 0x7A, 0x35, 0xF1, 0xF8, 0xF6, 0x95, 0x1E, 0xD2, + 0xE9, 0x01, 0x71, 0x25, 0x2B, 0x39, 0xC0, 0xBB, 0xEB, 0xA0, 0x06, 0x69, 0x7B, 0xB6, 0x3D, 0xC4, + 0x14, 0xE2, 0x8D, 0xE7, 0x03, 0xAE, 0xFF, 0x38, 0x73, 0x1E, 0xB9, 0x97, 0x91, 0x26, 0x62, 0xAD, + 0xA1, 0xD1, 0x79, 0xEC, 0x73, 0x16, 0xED, 0x63, 0x91, 0x52, 0xD7, 0x5D, 0x54, 0x50, 0x01, 0x11, + 0x43, 0xD7, 0x46, 0x24, 0xA2, 0x80, 0x3C, 0x01, 0x13, 0x55, 0x21, 0xB8, 0x20, 0x73, 0xC8, 0x77, + 0x50, 0xB4, 0x91, 0xB4, 0x01, 0x07, 0x81, 0xEB, 0x80, 0x00, 0x03, 0x34, 0x60, 0x8E, 0x2C, 0x3E, + 0xA6, 0x9D, 0xD0, 0xF2, 0x10, 0x7E, 0x15, 0x5F, 0x30, 0xC8, 0x48, 0xCE, 0x90, 0x47, 0xA5, 0x1C, + 0x8F, 0x19, 0xA6, 0x2E, 0x50, 0x9C, 0x42, 0x21, 0xC8, 0xE6, 0x40, 0x67, 0xE8, 0x55, 0xEA, 0xBB, + 0x28, 0x91, 0xC1, 0x34, 0xB8, 0x8B, 0x91, 0x2A, 0xF1, 0x6E, 0x68, 0x3E, 0x24, 0xC0, 0x22, 0x29, + 0x4A, 0x41, 0x55, 0x5A, 0x45, 0xA4, 0x10, 0x15, 0x7F, 0x99, 0xDC, 0x4F, 0xA5, 0x15, 0x37, 0x29, + 0x98, 0xC1, 0x62, 0x50, 0xA2, 0x13, 0x03, 0xC7, 0xE3, 0xE1, 0xD2, 0x40, 0x24, 0x84, 0x4E, 0x02, + 0x41, 0x6E, 0x28, 0x97, 0xDA, 0xE5, 0xF8, 0x99, 0xD8, 0x80, 0xE1, 0xBB, 0xF8, 0x77, 0x28, 0x57, + 0xE9, 0x9A, 0xA5, 0xFB, 0xE1, 0xFA, 0x42, 0xD6, 0xF0, 0xA9, 0xDD, 0xD9, 0x63, 0x9D, 0xB3, 0x26, + 0xFC, 0xFC, 0x74, 0xFD, 0xF5, 0xA6, 0xD9, 0x81, 0x3F, 0xCE, 0xB8, 0xD9, 0x72, 0xFC, 0x3D, 0x62, + 0x12, 0x9F, 0x34, 0xCB, 0xB4, 0xB8, 0xB3, 0x89, 0xBE, 0xA9, 0x99, 0x4E, 0x03, 0x1D, 0x51, 0x3F, + 0x76, 0x4B, 0x9B, 0x4E, 0x02, 0x13, 0xED, 0x15, 0xF3, 0x97, 0xB4, 0xE1, 0x77, 0x1F, 0xE3, 0xE4, + 0x00, 0x20, 0x2C, 0x35, 0xE0, 0xC7, 0xFE, 0xFF, 0xFC, 0xA5, 0xD3, 0x49, 0x27, 0x0D, 0xC9, 0x70, + 0x26, 0xC7, 0xA0, 0xE7, 0xC1, 0x05, 0x1C, 0x3D, 0x82, 0x59, 0x87, 0x8E, 0x1D, 0x92, 0xFF, 0x4C, + 0x1F, 0x7B, 0x1B, 0x80, 0x84, 0x28, 0x06, 0x7A, 0x31, 0xFC, 0x5C, 0x31, 0x84, 0xE4, 0xC0, 0x5B, + 0x81, 0x47, 0x92, 0xD4, 0x00, 0x97, 0xE4, 0x1F, 0xAB, 0x46, 0xA5, 0x60, 0xF8, 0x6D, 0x80, 0x95, + 0x64, 0x51, 0xA5, 0x86, 0xFC, 0xBD, 0x62, 0x48, 0x05, 0x83, 0x6F, 0x05, 0x52, 0x49, 0xA6, 0x0E, + 0x48, 0x25, 0xFF, 0x58, 0x35, 0x52, 0x05, 0xC3, 0xE7, 0x86, 0xD5, 0x68, 0x7A, 0x87, 0x69, 0xF2, + 0x54, 0x1E, 0xC0, 0xA3, 0xF3, 0xC3, 0x73, 0x01, 0xCE, 0x6D, 0x14, 0x45, 0x6E, 0x84, 0x6B, 0x8E, + 0xCE, 0x2D, 0x13, 0x23, 0xBE, 0x1B, 0x17, 0xF4, 0x88, 0xDD, 0xDC, 0xDD, 0x5E, 0xB5, 0x99, 0x7C, + 0xB8, 0x5C, 0xA8, 0x4F, 0x99, 0xC3, 0x8A, 0x24, 0xB3, 0x6F, 0x24, 0xAD, 0x80, 0x48, 0x26, 0x17, + 0xAB, 0xD3, 0xE8, 0x28, 0xB2, 0xA0, 0x01, 0x19, 0xA3, 0x9A, 0x41, 0xC8, 0x01, 0xE9, 0x4C, 0x66, + 0x50, 0xC1, 0x91, 0xA4, 0x98, 0xA2, 0x81, 0x34, 0xE2, 0x91, 0xE8, 0xE2, 0x71, 0x17, 0x83, 0x6F, + 0x2A, 0xEC, 0x67, 0xC7, 0x77, 0x83, 0x48, 0x9C, 0xA1, 0xEF, 0x09, 0x54, 0x67, 0x1E, 0x4C, 0xBC, + 0xE9, 0x96, 0x61, 0xC3, 0x2E, 0x3A, 0x9D, 0x31, 0x4D, 0x30, 0xBC, 0x16, 0x14, 0xE6, 0x90, 0x47, + 0x85, 0x98, 0x96, 0xE9, 0x21, 0x04, 0xB6, 0x2C, 0x82, 0x06, 0xB7, 0xCE, 0x1E, 0x6F, 0x5A, 0xE0, + 0x26, 0x33, 0x35, 0xE0, 0x2B, 0x9B, 0xE6, 0x93, 0x59, 0xFF, 0x4D, 0xCA, 0xFB, 0x91, 0x69, 0xFC, + 0x7A, 0x0E, 0x5B, 0xC3, 0xDD, 0xCF, 0x8E, 0x97, 0x41, 0x39, 0x4D, 0x75, 0xC7, 0x3C, 0x9A, 0x50, + 0xA0, 0x65, 0xF7, 0xA9, 0x3D, 0xE3, 0xF8, 0xA7, 0xD9, 0x6E, 0xBB, 0x66, 0x79, 0x65, 0x1E, 0xE7, + 0xBD, 0xBA, 0x4A, 0xF1, 0xCC, 0x9C, 0x01, 0xA4, 0xCC, 0xF7, 0x56, 0xD3, 0xDB, 0x2F, 0xFF, 0xEE, + 0x6A, 0xD5, 0xA8, 0xD3, 0x8E, 0xA5, 0xBA, 0x5A, 0x3D, 0xEA, 0xE0, 0xF8, 0xAB, 0x46, 0x9D, 0x54, + 0xCB, 0xC1, 0x0C, 0x30, 0x3D, 0x03, 0x79, 0xB0, 0xFD, 0xCB, 0x43, 0x1E, 0x38, 0x51, 0xDC, 0x75, + 0x22, 0x0F, 0x8E, 0xBF, 0xF1, 0x7C, 0x87, 0x80, 0xF4, 0x0C, 0xD4, 0xC1, 0xF6, 0x2F, 0x13, 0x75, + 0xDA, 0xDF, 0xD7, 0x8D, 0x3C, 0xAC, 0xFD, 0x7D, 0x2B, 0xF0, 0x07, 0x20, 0xF5, 0x4C, 0x0C, 0x6A, + 0x7F, 0x7F, 0x49, 0x38, 0xF4, 0xC5, 0xF1, 0x6D, 0xD1, 0x76, 0x4C, 0x5B, 0x94, 0x8A, 0x60, 0x08, + 0x35, 0xCF, 0x70, 0x34, 0x41, 0xFF, 0x1B, 0x8C, 0x1E, 0x11, 0x20, 0x14, 0x42, 0x8E, 0x71, 0xFB, + 0x97, 0x89, 0x1A, 0xCF, 0x64, 0x2F, 0x33, 0x2F, 0x95, 0xB2, 0x23, 0x4F, 0xFA, 0x5B, 0xC5, 0xD9, + 0xCF, 0x3B, 0x89, 0xDB, 0x2B, 0xC1, 0xAF, 0xA2, 0xEC, 0x27, 0xDA, 0xC3, 0x26, 0xE1, 0x58, 0x68, + 0x51, 0xA8, 0x65, 0xB5, 0xE7, 0x64, 0x36, 0x31, 0x44, 0x97, 0x7F, 0x87, 0x99, 0x2F, 0x87, 0xA6, + 0xF8, 0xF4, 0xA9, 0x59, 0x6A, 0x04, 0x1F, 0x18, 0x7C, 0x42, 0xA5, 0x5B, 0xB2, 0xE6, 0x6C, 0xBB, + 0xFF, 0x1C, 0x7B, 0xC3, 0xAC, 0x09, 0xA5, 0xEE, 0xA7, 0x6F, 0x53, 0x8F, 0xDC, 0x58, 0x75, 0x34, + 0x13, 0x5D, 0xE7, 0xE8, 0x04, 0x1E, 0x4C, 0x50, 0xF7, 0x9B, 0x6F, 0xA2, 0x87, 0x0C, 0xFC, 0xD5, + 0xF7, 0x2D, 0xCD, 0x1D, 0x5F, 0x92, 0xA8, 0xAC, 0x6A, 0x64, 0xA4, 0xA0, 0x5B, 0x18, 0xF4, 0x30, + 0x65, 0x3B, 0x08, 0xDF, 0xA1, 0x0C, 0x78, 0xDB, 0x65, 0x9E, 0xCA, 0x26, 0x82, 0xDF, 0xCB, 0x2E, + 0xE1, 0x97, 0xCD, 0x34, 0x74, 0x1A, 0xC3, 0xA4, 0xAC, 0x9A, 0x65, 0x3D, 0xA9, 0xC0, 0x29, 0x75, + 0x59, 0xA4, 0xB9, 0xDC, 0x13, 0x4C, 0xBB, 0xD7, 0x4C, 0x4A, 0xD8, 0x9B, 0xB4, 0x89, 0x4C, 0x31, + 0x64, 0x6C, 0x78, 0x48, 0xD5, 0xEC, 0xEF, 0x31, 0x9A, 0xE9, 0xD2, 0x71, 0x59, 0xCF, 0x17, 0xBE, + 0x4B, 0x3E, 0x50, 0x98, 0xA9, 0xD5, 0xB1, 0xE7, 0x13, 0x12, 0x22, 0x15, 0x80, 0xCD, 0x79, 0x40, + 0x53, 0xCF, 0x57, 0x00, 0xF9, 0x05, 0x00, 0xCE, 0xB5, 0xB9, 0x48, 0x35, 0x67, 0x2D, 0x90, 0x16, + 0x8B, 0xD0, 0x23, 0x88, 0x41, 0x38, 0xE5, 0x1B, 0x47, 0x04, 0x33, 0x2E, 0x35, 0xD0, 0x26, 0x46, + 0x26, 0x2B, 0xBC, 0x58, 0x8F, 0x1A, 0x01, 0x59, 0x99, 0xD9, 0x8E, 0x60, 0xC1, 0x9B, 0x99, 0xE8, + 0x74, 0x91, 0xB4, 0x3A, 0x6D, 0xB2, 0xF9, 0xD0, 0xEC, 0xF9, 0x4E, 0xE9, 0x8A, 0x1E, 0xBF, 0xCA, + 0x84, 0x80, 0x23, 0xD7, 0x31, 0x7C, 0x5D, 0x78, 0xEC, 0x61, 0x60, 0xEA, 0x03, 0x36, 0xC0, 0xF4, + 0x38, 0xC1, 0xDC, 0xF0, 0x7A, 0xD4, 0x46, 0x2A, 0xB9, 0x37, 0xC5, 0xD3, 0x1E, 0x7B, 0x72, 0x7C, + 0x22, 0x33, 0x3F, 0x80, 0xAE, 0x89, 0x56, 0x61, 0xCD, 0xC0, 0x4B, 0xE0, 0xB0, 0xC9, 0x04, 0xC4, + 0xBB, 0x4F, 0x8C, 0x8C, 0xA3, 0xF2, 0x96, 0x14, 0x3D, 0xC6, 0xC3, 0xFB, 0xD8, 0xFC, 0x14, 0xB7, + 0x34, 0xAA, 0xCB, 0xEA, 0x00, 0x9E, 0xE9, 0xCC, 0x9A, 0x08, 0x16, 0xCC, 0x65, 0x8F, 0x54, 0x5C, + 0x0E, 0xFD, 0xAA, 0xCF, 0x64, 0x0C, 0xE0, 0x3C, 0x3F, 0x35, 0x19, 0x5A, 0x18, 0xC6, 0xB2, 0xF6, + 0xB9, 0x50, 0x61, 0xC1, 0xD7, 0xA6, 0x27, 0x76, 0x76, 0x27, 0x82, 0x66, 0x87, 0x06, 0xFD, 0x52, + 0xF9, 0x8A, 0x67, 0x06, 0x21, 0xCE, 0xB7, 0x3C, 0x67, 0x08, 0x50, 0x4C, 0x0D, 0x46, 0xC4, 0x40, + 0xCF, 0xB9, 0xA3, 0x14, 0x8C, 0x55, 0xC4, 0x7E, 0xE7, 0xEF, 0xA1, 0x02, 0x10, 0xC5, 0xDE, 0x79, + 0xD1, 0x88, 0x45, 0x68, 0xFA, 0xFC, 0xA0, 0xC5, 0xF1, 0x5E, 0xA7, 0x45, 0x0D, 0x2F, 0xF6, 0x1E, + 0xE0, 0xE6, 0xCB, 0x45, 0x93, 0xDC, 0x05, 0x6E, 0x9B, 0xDF, 0x7F, 0xA2, 0xF4, 0x58, 0x78, 0xF2, + 0x89, 0x07, 0x87, 0x0D, 0x1D, 0x0F, 0x49, 0x79, 0x38, 0x74, 0x6C, 0xF2, 0xD0, 0xC0, 0x3C, 0xF8, + 0xE8, 0x3C, 0x01, 0xBB, 0xE8, 0x49, 0x67, 0x56, 0x09, 0x8F, 0xAE, 0x2F, 0xE2, 0x7E, 0x0F, 0x9E, + 0x3F, 0xC2, 0x77, 0x3D, 0xE9, 0xCD, 0x0A, 0x27, 0xAE, 0xCD, 0xDE, 0x55, 0x23, 0x89, 0xB6, 0x54, + 0x43, 0xAF, 0xC2, 0x2E, 0x34, 0xE0, 0x1D, 0x41, 0x3F, 0x32, 0x34, 0x44, 0x32, 0x4C, 0xB5, 0x51, + 0x8A, 0xBB, 0x04, 0x0D, 0x68, 0x7A, 0x86, 0x22, 0x7B, 0xB6, 0x53, 0xDD, 0xA5, 0x89, 0x0F, 0x9C, + 0x07, 0x98, 0x8E, 0xC0, 0x48, 0x12, 0x0A, 0x36, 0x91, 0xBD, 0x51, 0x3A, 0x5B, 0x35, 0xE5, 0x9D, + 0x1A, 0xFB, 0x08, 0xB8, 0x3E, 0xFE, 0x32, 0xFC, 0x06, 0xC3, 0xF3, 0x6A, 0xE8, 0x72, 0xB5, 0xC7, + 0x8E, 0xD4, 0x3B, 0xF2, 0x3B, 0x15, 0xF2, 0x72, 0xC4, 0x28, 0x92, 0x6F, 0x37, 0xC2, 0x76, 0x08, + 0x60, 0x20, 0x56, 0xEC, 0xB1, 0x4F, 0x1D, 0xFA, 0x71, 0x87, 0x3F, 0xFE, 0x2A, 0x7D, 0x2E, 0x6E, + 0xBF, 0x9C, 0xAB, 0x30, 0x3A, 0xEF, 0x94, 0x55, 0x51, 0xB2, 0xAB, 0x57, 0xB7, 0x32, 0x39, 0x58, + 0x5A, 0x38, 0xEC, 0x7C, 0x72, 0x99, 0x93, 0xB7, 0x6E, 0x4A, 0x82, 0xC4, 0xA3, 0x29, 0xF9, 0x11, + 0xA7, 0xF6, 0x58, 0x34, 0x57, 0x40, 0x94, 0xE5, 0x4D, 0xE6, 0x0B, 0xB0, 0x87, 0x5C, 0x53, 0xBB, + 0xEB, 0xCD, 0x4A, 0x16, 0x90, 0xED, 0x88, 0x0C, 0xD9, 0x29, 0x45, 0xA6, 0xDF, 0x39, 0x37, 0x91, + 0x9E, 0xC7, 0xE9, 0x01, 0x00, 0x29, 0x3A, 0x14, 0x2F, 0x05, 0x47, 0x5B, 0xA6, 0x6E, 0x83, 0x2E, + 0xD8, 0x0E, 0xE2, 0xDE, 0xE3, 0xD1, 0x6E, 0xC6, 0xCC, 0x02, 0x19, 0x63, 0x89, 0x96, 0x03, 0x55, + 0x15, 0xB3, 0xBA, 0x1C, 0xC0, 0x5E, 0xC7, 0x3B, 0x8F, 0xC1, 0x56, 0x7D, 0x57, 0x08, 0xB2, 0xEC, + 0x4F, 0xEC, 0xF6, 0xA7, 0x2F, 0x8F, 0xF5, 0x7C, 0x10, 0xCE, 0x80, 0xB9, 0x91, 0x03, 0x1A, 0x0F, + 0xD8, 0xD2, 0x92, 0x03, 0x9B, 0x32, 0x3C, 0x9E, 0x3A, 0xF7, 0x44, 0x4A, 0x03, 0x0A, 0xC5, 0x5B, + 0x67, 0x4A, 0x03, 0x99, 0x95, 0xDD, 0x5B, 0x56, 0x52, 0xD2, 0xB3, 0x48, 0xD7, 0xB9, 0xC4, 0x86, + 0x48, 0xC3, 0x19, 0xFB, 0x80, 0x80, 0x9C, 0x92, 0x60, 0xBC, 0x34, 0x5B, 0xC8, 0x8B, 0x00, 0x3B, + 0x91, 0x15, 0x81, 0x20, 0xB0, 0x49, 0x59, 0x11, 0xE6, 0x2E, 0xBF, 0x60, 0xCE, 0x52, 0xEC, 0x5F, + 0x86, 0x91, 0x5E, 0xD9, 0x32, 0x31, 0x52, 0xAA, 0xCB, 0x45, 0x2C, 0xB3, 0x52, 0x00, 0xA8, 0x3B, + 0x78, 0xD8, 0x51, 0xFD, 0x04, 0xF9, 0x96, 0x82, 0xE7, 0x71, 0x53, 0x97, 0x6A, 0x98, 0x6A, 0xD7, + 0x88, 0xDA, 0x16, 0x27, 0x46, 0x68, 0xC8, 0xBF, 0xCA, 0x57, 0xF6, 0x8A, 0x3D, 0x6B, 0xAF, 0x64, + 0x48, 0xEF, 0x08, 0xA4, 0x2E, 0x13, 0x10, 0x27, 0x4C, 0x3E, 0x00, 0x82, 0x99, 0xC6, 0x70, 0x9A, + 0xCC, 0x53, 0x71, 0x47, 0x94, 0x53, 0x5E, 0xB0, 0x1F, 0x36, 0x55, 0xAF, 0x11, 0x94, 0x73, 0xA0, + 0xCB, 0x99, 0xD3, 0xA5, 0x0C, 0xED, 0x06, 0x6A, 0x5A, 0xFF, 0xF8, 0xFB, 0x7F, 0x79, 0xC1, 0x91, + 0x84, 0x59, 0x0B, 0xB0, 0xE7, 0xA0, 0xC7, 0x0A, 0xC5, 0xF0, 0x52, 0x8F, 0xD0, 0x13, 0x8A, 0x43, + 0xE4, 0xA8, 0x8E, 0xA2, 0x12, 0x4D, 0x5C, 0xC6, 0x31, 0x69, 0x3F, 0x50, 0x3C, 0x1B, 0x81, 0x5A, + 0xF8, 0x08, 0xB4, 0x2C, 0x30, 0x8E, 0xE8, 0xB8, 0x1A, 0x46, 0x0B, 0x3F, 0x80, 0x44, 0x35, 0x90, + 0x41, 0x44, 0x9A, 0x11, 0x24, 0x76, 0x95, 0x13, 0xC0, 0xD9, 0xA2, 0x8D, 0xA5, 0x07, 0x33, 0x0B, + 0x17, 0x81, 0xA3, 0x81, 0x7E, 0x68, 0x27, 0xA3, 0x96, 0x83, 0x20, 0xE7, 0x21, 0x17, 0x03, 0xC7, + 0x60, 0x20, 0x3D, 0x9A, 0x1C, 0x03, 0xAF, 0xFE, 0xF3, 0xA0, 0xAA, 0x0F, 0xA7, 0xC4, 0x4D, 0xA1, + 0x68, 0x8A, 0xAA, 0xE7, 0x3D, 0x70, 0x97, 0x0A, 0xBB, 0xB2, 0x75, 0x18, 0xDF, 0x0B, 0x02, 0xA8, + 0x02, 0xBF, 0xFC, 0xAF, 0x5D, 0x74, 0x65, 0x91, 0x03, 0xDF, 0x99, 0x43, 0x1E, 0x64, 0x5D, 0xB8, + 0x95, 0xC6, 0x26, 0x03, 0x13, 0x6F, 0xD8, 0x0C, 0xB3, 0xA1, 0x47, 0xDC, 0x7D, 0x4D, 0xD9, 0x17, + 0x0F, 0x83, 0x9E, 0x68, 0x2C, 0x92, 0x94, 0x31, 0x1E, 0x0B, 0xA6, 0x60, 0x62, 0x9C, 0xD8, 0x19, + 0xC7, 0x92, 0x12, 0xE3, 0x97, 0x4C, 0x2F, 0x98, 0xB4, 0x41, 0x3E, 0x32, 0x14, 0x3E, 0x5D, 0x86, + 0x57, 0x86, 0x61, 0x92, 0x07, 0x15, 0x52, 0x45, 0xF9, 0x68, 0x31, 0x81, 0x0D, 0x95, 0x63, 0x18, + 0xC7, 0x03, 0x54, 0x65, 0xE0, 0xD8, 0x51, 0xA5, 0x3A, 0x1C, 0x4B, 0x9A, 0xC7, 0x24, 0x6A, 0xBE, + 0xAF, 0x56, 0xBD, 0x3D, 0x56, 0xAB, 0xD0, 0x07, 0x7A, 0x61, 0xEB, 0x9C, 0x6A, 0x02, 0x0E, 0xB0, + 0x4E, 0x8F, 0x1A, 0x67, 0x8C, 0x0F, 0x2A, 0x33, 0xC0, 0xDC, 0x6B, 0xA5, 0x5A, 0x7D, 0x5A, 0xA4, + 0x09, 0x62, 0x56, 0x7A, 0x2A, 0xA9, 0x08, 0xE6, 0xA1, 0x63, 0x14, 0xDB, 0xF1, 0x76, 0x0B, 0x5F, + 0x01, 0xC4, 0x82, 0xC0, 0x33, 0x04, 0x00, 0xE7, 0x77, 0x84, 0x98, 0x02, 0x98, 0xCC, 0x17, 0x01, + 0x93, 0x6D, 0xB7, 0xFD, 0x9A, 0x29, 0xB2, 0xA2, 0xB6, 0xE2, 0x37, 0x4D, 0x45, 0xE6, 0xCF, 0xBA, + 0x69, 0x9A, 0x82, 0x4F, 0x01, 0x27, 0x4A, 0xED, 0x96, 0x38, 0xD5, 0x41, 0x8B, 0x75, 0x04, 0xF0, + 0x08, 0x3C, 0x7B, 0x43, 0xAE, 0x95, 0xDA, 0x74, 0x67, 0xF8, 0x1C, 0xD4, 0x23, 0xA4, 0x53, 0xF8, + 0xD7, 0x2D, 0x1F, 0x2C, 0x13, 0xF5, 0x26, 0x80, 0x5D, 0x04, 0x07, 0x93, 0x9D, 0x6C, 0x70, 0x1A, + 0x02, 0x3A, 0x71, 0x9F, 0x2B, 0x11, 0x5D, 0x62, 0x27, 0x93, 0xE2, 0x50, 0x98, 0x1A, 0x7A, 0x8A, + 0x60, 0x94, 0x4F, 0x20, 0x92, 0x03, 0x34, 0xE8, 0x57, 0xEC, 0x58, 0x91, 0xD5, 0x92, 0x1A, 0x6C, + 0xE7, 0x7C, 0xE0, 0x60, 0x10, 0x0C, 0x16, 0xA0, 0x60, 0x4E, 0xBA, 0x43, 0xC6, 0x27, 0x55, 0x42, + 0x63, 0x37, 0xA8, 0xD3, 0xB0, 0x16, 0xF1, 0x2A, 0x2A, 0x56, 0x89, 0x88, 0x18, 0x14, 0x0A, 0x53, + 0x28, 0x5D, 0x80, 0x30, 0x45, 0x15, 0x65, 0xA4, 0x60, 0xC4, 0x4D, 0xB4, 0x69, 0x07, 0xEB, 0x0C, + 0xD7, 0xC1, 0x22, 0x25, 0x3A, 0x50, 0x14, 0x91, 0x46, 0x6D, 0x8C, 0xD0, 0x8E, 0x1B, 0xCF, 0xA4, + 0x74, 0x31, 0x1C, 0x72, 0xC3, 0x94, 0x62, 0x54, 0x97, 0xF7, 0xCD, 0x20, 0x02, 0x9C, 0x1C, 0x6F, + 0x6F, 0xEF, 0xCE, 0xBF, 0x4C, 0x5E, 0x44, 0x35, 0x95, 0x68, 0x16, 0xCA, 0x3E, 0xA6, 0x27, 0x05, + 0xAB, 0x50, 0xCE, 0x23, 0x79, 0xA3, 0xDD, 0x6E, 0xB3, 0x9D, 0x91, 0x2C, 0xEE, 0xE4, 0x71, 0x90, + 0x02, 0x7D, 0x97, 0x09, 0x5F, 0x38, 0xA0, 0xE7, 0x58, 0xBB, 0x94, 0xEE, 0x1E, 0xDF, 0x4A, 0xC8, + 0x1F, 0x4C, 0xEB, 0x6B, 0x68, 0xB4, 0xA7, 0x7B, 0x37, 0x32, 0xE2, 0xE9, 0xA1, 0x78, 0x19, 0x91, + 0x4D, 0x82, 0x8A, 0x41, 0x6F, 0xBD, 0x31, 0xDC, 0x30, 0xA1, 0x8B, 0xE3, 0x5B, 0x06, 0x77, 0xF7, + 0x40, 0xB9, 0xB1, 0x1C, 0xC0, 0x2D, 0x67, 0xFB, 0xC4, 0x12, 0x02, 0xED, 0x02, 0x64, 0x92, 0x14, + 0xB7, 0xF5, 0x79, 0x94, 0x4C, 0x53, 0x90, 0x8A, 0x57, 0x80, 0x47, 0x48, 0x77, 0xB2, 0xDA, 0x8B, + 0x4A, 0x2B, 0xAB, 0xB6, 0x3E, 0x46, 0xDB, 0xD5, 0xCC, 0x87, 0xD1, 0x98, 0xF6, 0x0B, 0xDC, 0x83, + 0x13, 0x33, 0x98, 0x37, 0x47, 0xAA, 0x3C, 0xC3, 0xC6, 0x5F, 0x78, 0x01, 0x41, 0xCF, 0x8C, 0x99, + 0xCF, 0x7C, 0x92, 0x07, 0xF5, 0x60, 0x52, 0x36, 0x28, 0xDF, 0x4D, 0x64, 0x56, 0x91, 0x20, 0xD9, + 0x38, 0x56, 0x08, 0x30, 0xE6, 0xFD, 0x73, 0x32, 0x71, 0xAE, 0x67, 0xBB, 0xB7, 0x9A, 0x69, 0x62, + 0xF3, 0x3D, 0x02, 0x6D, 0x04, 0xA6, 0x99, 0x72, 0x9D, 0x66, 0xCF, 0x41, 0x15, 0x9A, 0xDD, 0x26, + 0x47, 0x42, 0x93, 0xDB, 0x35, 0x46, 0x09, 0xD0, 0xB6, 0x5E, 0xE2, 0xAD, 0xFB, 0x2F, 0x17, 0xAD, + 0x6C, 0x66, 0xB3, 0x25, 0x5D, 0x50, 0x46, 0xB8, 0x77, 0xDB, 0x57, 0x99, 0x3E, 0x54, 0x84, 0xA9, + 0x9C, 0x65, 0x84, 0x03, 0x63, 0x6E, 0x0E, 0x87, 0xDE, 0x90, 0x5C, 0xF3, 0xA7, 0xFD, 0x9F, 0xF7, + 0x7F, 0x41, 0x28, 0x71, 0x6F, 0x0B, 0xB3, 0xDD, 0xA5, 0xDB, 0x79, 0xB3, 0x24, 0x70, 0x5B, 0x14, + 0x05, 0xC4, 0x12, 0xB6, 0x1D, 0x64, 0xC5, 0xF2, 0x24, 0x1B, 0xB9, 0x90, 0x45, 0xA8, 0x66, 0x51, + 0x55, 0x94, 0x8C, 0x7E, 0x3A, 0xCD, 0x7E, 0x21, 0x9F, 0x0E, 0xAB, 0xB9, 0xEA, 0xD5, 0x49, 0xD6, + 0xE5, 0xE4, 0x92, 0x6E, 0x23, 0x0B, 0xCE, 0xD8, 0xFD, 0x28, 0xD1, 0xEE, 0x39, 0xF2, 0xEB, 0xCB, + 0xC6, 0xA1, 0x9F, 0xB3, 0xE1, 0xD0, 0xCF, 0x2F, 0x06, 0x87, 0x7E, 0x2E, 0x88, 0x43, 0x3F, 0xBF, + 0xE2, 0xD0, 0x2C, 0x1C, 0xFA, 0x25, 0x1B, 0x0E, 0xFD, 0xF2, 0x62, 0x70, 0xE8, 0x97, 0x82, 0x38, + 0xF4, 0xCB, 0x2B, 0x0E, 0x25, 0x9D, 0x91, 0x41, 0x7E, 0x42, 0xE9, 0x5C, 0xCA, 0xE9, 0x59, 0xB0, + 0x28, 0x5B, 0x41, 0x83, 0xB5, 0x22, 0x52, 0x9A, 0xDB, 0x70, 0x74, 0xCD, 0xB9, 0x10, 0x29, 0xDA, + 0xF2, 0x45, 0xA0, 0x92, 0xDC, 0xC5, 0xF3, 0xC0, 0x89, 0xE6, 0x1B, 0x5E, 0x6B, 0x44, 0xA4, 0xE8, + 0xB5, 0x27, 0x97, 0xA5, 0xAC, 0x6F, 0x68, 0x24, 0xE8, 0xC5, 0xA4, 0x63, 0x65, 0xD5, 0xA0, 0x6C, + 0x24, 0x20, 0x27, 0xFF, 0xE6, 0xC3, 0xBE, 0xC0, 0xF4, 0x75, 0x67, 0xF4, 0xB4, 0x3F, 0x42, 0xC7, + 0x59, 0x65, 0x00, 0x99, 0x90, 0xA8, 0xB7, 0x5B, 0x8E, 0xCE, 0x9E, 0xA0, 0x75, 0xB9, 0xDC, 0x27, + 0x8F, 0xFA, 0x94, 0x24, 0x9B, 0x3B, 0xA2, 0xCD, 0x59, 0x75, 0x51, 0x6F, 0xD4, 0x9B, 0xA7, 0x72, + 0xA7, 0xE6, 0x56, 0xF2, 0x9D, 0x3E, 0x66, 0x34, 0x37, 0xA9, 0xCA, 0xF8, 0x79, 0x9E, 0x2C, 0x3E, + 0x8B, 0x73, 0x9A, 0xF5, 0x9D, 0x67, 0xFE, 0x4E, 0x89, 0x36, 0x33, 0xE3, 0x46, 0xE8, 0x9E, 0x12, + 0xD4, 0x8B, 0x3E, 0x38, 0xAA, 0x66, 0x73, 0x4E, 0x09, 0x27, 0x9D, 0xC8, 0x51, 0x89, 0x9A, 0xAB, + 0x34, 0x4F, 0x35, 0x59, 0xB4, 0x98, 0x2D, 0x8B, 0xD6, 0xA1, 0x65, 0xB1, 0x12, 0xB2, 0x59, 0x52, + 0x61, 0xCE, 0x19, 0xB2, 0x3E, 0x1E, 0xF2, 0x6C, 0x45, 0x43, 0x1E, 0xD0, 0x90, 0xE7, 0x2B, 0x1A, + 0x0D, 0x53, 0xAF, 0xE2, 0xC1, 0x75, 0x37, 0xD0, 0xC4, 0x95, 0x77, 0xE7, 0x38, 0xD7, 0x8E, 0xDD, + 0xBF, 0x73, 0xCE, 0x78, 0x4B, 0x62, 0x20, 0xF0, 0x91, 0x99, 0x13, 0xC9, 0x95, 0xC4, 0xB9, 0xF0, + 0xA4, 0xD3, 0xF3, 0x8D, 0x6E, 0xAA, 0x0C, 0x32, 0x71, 0x49, 0xB4, 0x40, 0x13, 0x92, 0x66, 0x18, + 0x71, 0xC9, 0x64, 0xB1, 0x76, 0x23, 0xD5, 0x3D, 0x1A, 0x8B, 0x9A, 0x86, 0x91, 0xD3, 0x3A, 0x34, + 0xC7, 0xB5, 0x4C, 0x5B, 0xEA, 0xAC, 0x83, 0xFE, 0x03, 0x1B, 0xD7, 0xA2, 0xE6, 0x6D, 0x00, 0x02, + 0x0A, 0xBE, 0xCC, 0x99, 0x8F, 0x47, 0xC0, 0xB9, 0xB7, 0xE8, 0xD3, 0xA6, 0xD8, 0xE4, 0x00, 0x01, + 0x40, 0x96, 0xD8, 0x93, 0x95, 0x32, 0x34, 0x83, 0x22, 0x75, 0xF6, 0xC8, 0x04, 0x17, 0x96, 0x2A, + 0x72, 0xB9, 0x0E, 0xA7, 0x45, 0x44, 0x92, 0xA0, 0xB7, 0xE5, 0xA2, 0x98, 0x29, 0x5E, 0xB0, 0x65, + 0x6E, 0x11, 0x37, 0xD9, 0x8B, 0xBF, 0x5C, 0xF8, 0xC4, 0x9D, 0xB9, 0x77, 0x0B, 0xB5, 0xF5, 0xDF, + 0x2D, 0x7C, 0xA2, 0xAC, 0x5B, 0xEA, 0x8E, 0x6D, 0xB1, 0x57, 0x0A, 0x7D, 0xD5, 0x6B, 0xC1, 0x7B, + 0x9F, 0x2D, 0xBE, 0x55, 0xF8, 0x14, 0xAE, 0x7C, 0x7C, 0xB3, 0x90, 0x99, 0xF2, 0xB2, 0x70, 0xB6, + 0xD8, 0xCD, 0xC2, 0x94, 0xD1, 0xC2, 0xDB, 0x85, 0xEB, 0xEB, 0x41, 0xE6, 0x81, 0x37, 0xFE, 0x12, + 0x02, 0x16, 0x93, 0xBC, 0x77, 0xC0, 0x47, 0xAF, 0xB7, 0x0E, 0xCF, 0x53, 0xAF, 0x23, 0xFC, 0xE1, + 0x5A, 0x13, 0xA4, 0xFF, 0xBC, 0xC9, 0x83, 0xA8, 0x53, 0x48, 0x6B, 0x56, 0x41, 0x4A, 0xE8, 0xDF, + 0x14, 0xBE, 0x91, 0xC7, 0x3E, 0x53, 0x34, 0xBB, 0x6D, 0x11, 0xC3, 0x4B, 0x0C, 0x06, 0xF9, 0x2D, + 0x78, 0xAA, 0xE5, 0xCB, 0x31, 0xBC, 0x44, 0x31, 0x03, 0xF5, 0x91, 0xA5, 0xA2, 0x06, 0x0C, 0xB0, + 0xF9, 0xB8, 0x11, 0x40, 0xA1, 0x00, 0x72, 0xA8, 0xA6, 0x2F, 0xC6, 0xC2, 0x2B, 0x25, 0x72, 0x41, + 0x92, 0xE7, 0x25, 0xD6, 0x33, 0x10, 0x53, 0xED, 0xB3, 0xF9, 0x6C, 0xBE, 0xB3, 0xC2, 0x8F, 0x41, + 0x16, 0x97, 0x23, 0x31, 0x39, 0x54, 0x76, 0x24, 0x89, 0x5B, 0x7A, 0xE2, 0x13, 0x9E, 0x6F, 0xEB, + 0xD9, 0xD6, 0xFB, 0xE3, 0xDC, 0x8D, 0xA7, 0x12, 0x7C, 0xD3, 0x92, 0xAC, 0xBA, 0x94, 0x4E, 0xCC, + 0x93, 0x59, 0x3D, 0x3E, 0x37, 0x2F, 0x32, 0x9F, 0xC6, 0x5F, 0x34, 0xF7, 0xC7, 0x3E, 0x8C, 0x86, + 0x0E, 0x94, 0xC5, 0x8E, 0xF0, 0xC5, 0x48, 0x1D, 0x11, 0xC9, 0xE3, 0x33, 0xC7, 0xA6, 0xAC, 0x49, + 0x65, 0x06, 0x2F, 0x2C, 0xCB, 0x1C, 0x79, 0x8E, 0x69, 0x84, 0x55, 0xC0, 0x60, 0xC2, 0x41, 0xB1, + 0x30, 0x25, 0xA0, 0x84, 0x92, 0x17, 0xEA, 0x5B, 0x9A, 0x82, 0x5C, 0xF4, 0x7D, 0x7C, 0x3E, 0x74, + 0x6C, 0x9F, 0x4A, 0x85, 0x28, 0xBF, 0x7C, 0xDC, 0x22, 0xDB, 0xC8, 0x23, 0xB8, 0x2C, 0x5D, 0x78, + 0xC9, 0x23, 0xC0, 0x64, 0x36, 0xF9, 0xA6, 0xB2, 0xEB, 0xC3, 0x3C, 0xB2, 0x5B, 0xFE, 0x0B, 0xB9, + 0x10, 0x93, 0xB3, 0xAE, 0x29, 0xDB, 0x8D, 0x50, 0xC6, 0xD7, 0x46, 0x93, 0x13, 0x59, 0x7A, 0x29, + 0xC1, 0x67, 0x71, 0x92, 0xAC, 0x25, 0xDC, 0x0F, 0x73, 0x58, 0x91, 0x67, 0x97, 0x72, 0x47, 0xE2, + 0x88, 0xD7, 0x71, 0xAF, 0x95, 0xA2, 0xF6, 0x2F, 0x2C, 0x3A, 0x04, 0xDC, 0x04, 0x15, 0x9A, 0x3C, + 0x7C, 0x8C, 0xA2, 0xAD, 0x34, 0x4B, 0x87, 0xA6, 0xC8, 0x5F, 0x30, 0x8D, 0x99, 0xCC, 0x01, 0xCF, + 0x19, 0x3C, 0x22, 0x9E, 0x53, 0xE0, 0x04, 0x59, 0x86, 0x96, 0x73, 0xD5, 0x93, 0x79, 0x1A, 0xB8, + 0xB1, 0x17, 0x4E, 0x4D, 0x66, 0xFA, 0x57, 0x13, 0xA6, 0x00, 0xA3, 0x7F, 0xF3, 0xFC, 0xAE, 0x70, + 0x35, 0xCA, 0xA2, 0xFF, 0x6F, 0xB2, 0xC6, 0x92, 0xF2, 0x98, 0x6D, 0xC2, 0x6F, 0xDB, 0xD6, 0x98, + 0xE2, 0x59, 0x18, 0xDB, 0xD2, 0xBC, 0x6D, 0x8F, 0xF3, 0xB8, 0x84, 0xDC, 0x28, 0x8C, 0xD9, 0x86, + 0xEE, 0xF0, 0x0B, 0xAA, 0x11, 0x13, 0xB8, 0xCD, 0x8E, 0xF9, 0xD9, 0x00, 0x7A, 0x78, 0x92, 0xC5, + 0x04, 0x65, 0xE0, 0x90, 0xAA, 0x66, 0x88, 0xD3, 0x22, 0xDF, 0x56, 0x4D, 0xDD, 0x5D, 0x8D, 0x1C, + 0xE0, 0x37, 0x83, 0xD8, 0xA8, 0x7B, 0x14, 0xC4, 0xE3, 0xDB, 0xF2, 0x05, 0x6A, 0x12, 0x16, 0xA9, + 0x89, 0x16, 0x34, 0x0C, 0xD7, 0x49, 0x5B, 0x4E, 0x41, 0x3D, 0xD6, 0x83, 0xF6, 0xE4, 0x29, 0x03, + 0x96, 0xAA, 0x30, 0x30, 0xC0, 0x70, 0xBE, 0x19, 0x17, 0x7F, 0x8C, 0xAA, 0x22, 0x6D, 0xA1, 0xD2, + 0xF7, 0xEC, 0x54, 0x17, 0xDB, 0x4F, 0xE0, 0xF5, 0x19, 0x04, 0xCE, 0x32, 0x65, 0x48, 0x9A, 0x4E, + 0xE8, 0x16, 0x74, 0xD1, 0x6C, 0x9F, 0x27, 0xE9, 0x1C, 0x1E, 0x6D, 0x28, 0x99, 0xC3, 0xCC, 0xA6, + 0x50, 0xB9, 0x66, 0x18, 0x59, 0x09, 0x5C, 0x51, 0x48, 0x56, 0xF2, 0x7E, 0x25, 0xBE, 0x3C, 0xC4, + 0xB7, 0x22, 0xCD, 0x5A, 0x93, 0x5B, 0x2B, 0x77, 0x36, 0x83, 0xA0, 0x3D, 0x99, 0x7B, 0x51, 0x21, + 0x47, 0xB6, 0xE2, 0xDF, 0x34, 0xCC, 0xCE, 0x30, 0xAB, 0x9C, 0xBD, 0x3C, 0x62, 0x68, 0x99, 0x9E, + 0xA0, 0xF2, 0x77, 0xE1, 0x29, 0x45, 0x71, 0x21, 0x4A, 0x5E, 0x56, 0x50, 0x09, 0xD0, 0x50, 0x8A, + 0xCF, 0x31, 0x91, 0x39, 0x3C, 0xAC, 0x7C, 0xCF, 0xA7, 0x9C, 0x63, 0x94, 0x72, 0xC5, 0x11, 0x54, + 0x13, 0xCA, 0xEE, 0xCB, 0x50, 0x59, 0x19, 0xDD, 0x6B, 0x7A, 0x43, 0x79, 0x52, 0x21, 0xDD, 0x68, + 0xF6, 0x13, 0x03, 0x5C, 0xE3, 0x94, 0x97, 0xCB, 0xAB, 0xB0, 0xE6, 0x10, 0x53, 0xEA, 0x11, 0x09, + 0x18, 0x0A, 0xF1, 0x91, 0x3A, 0xBA, 0xBC, 0x87, 0x89, 0x57, 0x60, 0x8E, 0x2E, 0x05, 0x8C, 0x48, + 0x53, 0x23, 0x4E, 0x71, 0x7B, 0x7D, 0x32, 0x8A, 0x1B, 0x53, 0x8E, 0x96, 0xE2, 0x2A, 0x17, 0x47, + 0xFD, 0x5C, 0xE6, 0x94, 0x58, 0xD3, 0x97, 0x66, 0x6C, 0x53, 0x8B, 0xBB, 0x0D, 0xC2, 0x84, 0x66, + 0xA5, 0x65, 0x55, 0xAC, 0xE1, 0x79, 0x1C, 0x21, 0x1C, 0x45, 0x26, 0xD8, 0xDC, 0x04, 0xD6, 0x80, + 0x47, 0x9B, 0xD2, 0xAA, 0x8D, 0x3C, 0x5C, 0x22, 0xF8, 0x38, 0x1A, 0xE0, 0x3B, 0x3A, 0x1D, 0x9E, + 0x93, 0x7C, 0x02, 0x08, 0xCE, 0x16, 0xE3, 0xC8, 0x78, 0xCF, 0x34, 0x26, 0xFA, 0x53, 0x25, 0xBD, + 0x23, 0x07, 0xB3, 0x2A, 0x27, 0x15, 0xBC, 0x00, 0xDF, 0x98, 0x5D, 0x57, 0xC9, 0xB4, 0xF9, 0x39, + 0x88, 0x3A, 0x56, 0xF1, 0x0C, 0xF7, 0x4E, 0xD9, 0x25, 0x80, 0x4B, 0xEC, 0xBC, 0xAB, 0x55, 0x4E, + 0x00, 0xF6, 0xF2, 0x13, 0xBB, 0x2E, 0x9F, 0xE1, 0x24, 0x76, 0x8E, 0xDF, 0xE3, 0xB3, 0xBB, 0xAF, + 0xED, 0x5A, 0xF5, 0x78, 0xE7, 0xA8, 0x5E, 0x79, 0xBF, 0xFB, 0x22, 0x3D, 0xC2, 0xD6, 0xC7, 0x7C, + 0x12, 0x44, 0x56, 0x84, 0x09, 0xC5, 0xBB, 0x78, 0x91, 0x96, 0x7F, 0xC0, 0xE7, 0x5F, 0x51, 0xB4, + 0x2E, 0x22, 0x9E, 0x28, 0x49, 0x77, 0x67, 0xFD, 0x7C, 0x65, 0xBE, 0x49, 0x2F, 0x90, 0xB1, 0xDB, + 0xC4, 0x3D, 0xCE, 0x13, 0xDC, 0x83, 0x58, 0x85, 0x3F, 0x4C, 0x72, 0x0A, 0xA9, 0xFB, 0xEE, 0xC5, + 0x58, 0x8E, 0xCC, 0x62, 0x46, 0x22, 0x8B, 0xFC, 0x9A, 0x24, 0x6F, 0x74, 0x04, 0x75, 0x19, 0x37, + 0x64, 0x7D, 0xE1, 0x3D, 0xE6, 0x0D, 0x50, 0x3F, 0xC6, 0x94, 0x8D, 0x48, 0x94, 0x68, 0x89, 0xA6, + 0x10, 0x59, 0x90, 0xB5, 0x2B, 0xAF, 0x24, 0xBE, 0x40, 0xCB, 0x5F, 0x88, 0xBA, 0x41, 0xCE, 0xBB, + 0xFC, 0xD7, 0x36, 0xAA, 0x8B, 0x95, 0x51, 0x36, 0xB9, 0x5E, 0xAC, 0x86, 0xBA, 0x03, 0xAF, 0xD7, + 0xC0, 0x7F, 0xA0, 0x54, 0xE4, 0xDA, 0x8E, 0xBC, 0xED, 0xD7, 0x4C, 0xDB, 0x9F, 0x40, 0xC5, 0x95, + 0xE1, 0xE0, 0x94, 0x35, 0x86, 0x69, 0x2C, 0x58, 0x5A, 0x70, 0x10, 0x4B, 0xBD, 0x1A, 0xE3, 0xCD, + 0x95, 0xB8, 0x10, 0xA6, 0x65, 0x24, 0x17, 0xED, 0xA8, 0x1B, 0x36, 0xBA, 0x73, 0xFF, 0x01, 0xA9, + 0xF0, 0x78, 0x89, 0x71, 0x0C, 0x21, 0x82, 0x15, 0x8A, 0x65, 0x08, 0x5A, 0xBF, 0xC6, 0x33, 0x2C, + 0x9D, 0x90, 0x16, 0x1F, 0xCF, 0x70, 0xAD, 0x89, 0x7D, 0xBC, 0xF9, 0xC6, 0x0B, 0xBE, 0xD7, 0xB0, + 0x86, 0x35, 0x85, 0x35, 0x04, 0x14, 0x94, 0x31, 0xB4, 0x21, 0xF3, 0xF6, 0x44, 0x37, 0x77, 0xE1, + 0x91, 0x10, 0xE3, 0x53, 0x69, 0x7A, 0x34, 0xC4, 0xF8, 0xFB, 0x0D, 0x8B, 0x88, 0x38, 0xAC, 0x56, + 0xAA, 0xEF, 0xAB, 0xF5, 0xF7, 0x87, 0xEF, 0xDE, 0xB3, 0x72, 0xAD, 0x7A, 0x54, 0xA9, 0x9D, 0x1C, + 0x55, 0x8F, 0xDE, 0x1D, 0xD7, 0x58, 0xED, 0xE8, 0x18, 0xBE, 0x3B, 0x79, 0xBF, 0xD8, 0x70, 0x88, + 0x15, 0x8C, 0x17, 0xC4, 0x42, 0xAC, 0x60, 0xA8, 0x0C, 0x81, 0x10, 0x33, 0x67, 0x91, 0xEB, 0x1E, + 0xBD, 0xD8, 0x8C, 0x5F, 0xA3, 0x20, 0x66, 0x44, 0x41, 0x4C, 0x0A, 0x91, 0x0B, 0x8F, 0x84, 0x08, + 0x86, 0x58, 0x42, 0x34, 0xC4, 0xB2, 0x67, 0x1F, 0x1D, 0x63, 0x39, 0x51, 0x11, 0xCB, 0x5E, 0x41, + 0x7C, 0x94, 0xAD, 0x8F, 0x8E, 0x88, 0x1E, 0x5D, 0x7F, 0x98, 0x20, 0x89, 0xA5, 0xA4, 0x58, 0x5B, + 0x7A, 0x6D, 0xE1, 0x0E, 0x77, 0xEF, 0xB1, 0xE6, 0x5F, 0xAC, 0xB6, 0xB0, 0x7C, 0xB8, 0xB2, 0xDA, + 0xC2, 0xC1, 0x1C, 0xD6, 0x53, 0x5B, 0xD8, 0xA3, 0xD1, 0x51, 0xF0, 0xF6, 0x47, 0x84, 0xDC, 0x81, + 0x2D, 0xFC, 0xAD, 0x37, 0x51, 0x64, 0x98, 0x92, 0xA7, 0x4E, 0x94, 0x18, 0xFE, 0x4A, 0x29, 0xD5, + 0x64, 0x8D, 0x61, 0x29, 0xCD, 0x0B, 0x74, 0xF0, 0xD0, 0x74, 0x4C, 0x50, 0xA6, 0x14, 0xE2, 0x78, + 0x3F, 0xBE, 0xCC, 0x5B, 0x66, 0xC7, 0xCA, 0x1B, 0xBF, 0x9C, 0xBA, 0xC3, 0x72, 0x43, 0xD7, 0x5E, + 0x77, 0x58, 0x4E, 0xE3, 0xB5, 0xEE, 0xF0, 0xDC, 0x02, 0x6A, 0x93, 0x40, 0xCA, 0x57, 0x3E, 0x6D, + 0xA2, 0xFD, 0x8B, 0x28, 0xD0, 0x17, 0x5B, 0xD5, 0x6B, 0xDD, 0xE1, 0x4C, 0xC8, 0x53, 0xA0, 0xEE, + 0xF0, 0x44, 0xFB, 0x97, 0x87, 0x3C, 0xAF, 0x75, 0x87, 0x33, 0xA0, 0x4E, 0x81, 0xBA, 0xC3, 0x13, + 0xED, 0x5F, 0x26, 0xEA, 0xBC, 0xD6, 0x1D, 0xCE, 0x8A, 0x3F, 0xB9, 0x0B, 0x7F, 0x4E, 0xE9, 0xE1, + 0x25, 0xE1, 0xD0, 0x1F, 0xBB, 0xEE, 0xF0, 0x24, 0x10, 0x0A, 0x21, 0xC7, 0x0B, 0xAB, 0x3B, 0x3C, + 0xB1, 0xAA, 0xD7, 0xBA, 0xC3, 0x8B, 0xC2, 0xAF, 0xA2, 0xEC, 0x67, 0x53, 0xEA, 0x0E, 0xCF, 0x2A, + 0xB0, 0xCA, 0x0A, 0x56, 0x58, 0x4D, 0x55, 0xEA, 0xE7, 0xDB, 0x38, 0x96, 0x58, 0x61, 0x35, 0x63, + 0x6D, 0x55, 0xB9, 0x80, 0xF5, 0xD5, 0x56, 0x95, 0xE3, 0xFF, 0x91, 0x6A, 0xAB, 0x2A, 0x88, 0xBF, + 0xD6, 0x56, 0xCD, 0x6E, 0x73, 0x29, 0x5C, 0x44, 0x15, 0x73, 0x95, 0x6C, 0x78, 0x21, 0x55, 0x9C, + 0xE2, 0xB2, 0x8A, 0xA9, 0x52, 0xDF, 0xF3, 0x37, 0x8E, 0x0A, 0x19, 0x84, 0xD5, 0x54, 0xB7, 0xB0, + 0x76, 0x2A, 0x2D, 0x00, 0x1D, 0xEC, 0x54, 0x25, 0xF5, 0x48, 0xF8, 0x0A, 0xB9, 0xFA, 0x6A, 0xE8, + 0xCB, 0x63, 0x48, 0x9A, 0x42, 0x8A, 0xAC, 0x7D, 0xFE, 0x9D, 0x88, 0x31, 0xAC, 0x67, 0x5A, 0xAB, + 0x56, 0x8F, 0xF6, 0xE0, 0xE7, 0xBB, 0x43, 0xFC, 0x79, 0x42, 0x3F, 0xDF, 0xE3, 0xCF, 0x5A, 0xFD, + 0x50, 0xBA, 0xE2, 0x55, 0x2B, 0x41, 0xA3, 0x5A, 0xFD, 0xA0, 0xAA, 0x7C, 0xFA, 0x94, 0x3B, 0x03, + 0x9C, 0x09, 0x14, 0x61, 0x83, 0xDF, 0x52, 0xCC, 0x92, 0x17, 0xD4, 0x94, 0x7A, 0x80, 0xF1, 0x6D, + 0x83, 0x2E, 0x87, 0xF1, 0x72, 0x40, 0x68, 0xA6, 0xE5, 0xB8, 0x2A, 0x32, 0x26, 0xA8, 0x3C, 0xAF, + 0xD9, 0x4F, 0xFB, 0x70, 0xAE, 0xC8, 0x5D, 0x18, 0x97, 0x64, 0x4D, 0x16, 0x2F, 0x8D, 0x44, 0xDE, + 0x44, 0x0A, 0x71, 0xA9, 0x62, 0xAD, 0xC0, 0x39, 0x80, 0x9F, 0xB8, 0xA6, 0x61, 0x60, 0xF5, 0x55, + 0x87, 0x16, 0x48, 0xA1, 0x77, 0x58, 0xF6, 0x01, 0x21, 0x80, 0xF5, 0x2D, 0x5E, 0x6A, 0xFD, 0xD3, + 0x14, 0x0C, 0xDF, 0x9A, 0x1A, 0xA8, 0x33, 0x0A, 0x73, 0x4E, 0x14, 0xDD, 0x44, 0x44, 0x99, 0x56, + 0x71, 0x33, 0x57, 0xA5, 0xCD, 0x4D, 0x2F, 0x5D, 0x9A, 0x15, 0x18, 0xD7, 0xCE, 0xC3, 0x59, 0x40, + 0x62, 0x08, 0x98, 0x10, 0x20, 0xD9, 0xCE, 0x7B, 0x2C, 0x53, 0xFA, 0xC0, 0xC2, 0x1E, 0x80, 0xEA, + 0xEC, 0x1F, 0xF9, 0x6A, 0x8E, 0xA6, 0xC2, 0x26, 0x51, 0x72, 0x34, 0x03, 0x3F, 0x7E, 0xFE, 0x35, + 0x5B, 0x86, 0xC7, 0xD3, 0x06, 0x49, 0x94, 0x1D, 0xED, 0x70, 0xDB, 0x03, 0xAE, 0xB5, 0xEE, 0xC2, + 0xA3, 0x1E, 0x4D, 0x63, 0x49, 0xA5, 0x47, 0x3B, 0xB1, 0xCE, 0x73, 0x1D, 0xB3, 0xB1, 0xA6, 0x6F, + 0xE6, 0x38, 0x08, 0xC5, 0x0B, 0x8F, 0x4E, 0x7D, 0x33, 0x06, 0xEA, 0x44, 0xD9, 0x51, 0xB5, 0xFE, + 0x4D, 0x2A, 0x3C, 0x1A, 0x5B, 0x7A, 0xCE, 0xD2, 0xA3, 0x6B, 0xB9, 0x01, 0x96, 0x13, 0xBE, 0xF4, + 0x51, 0xCF, 0x2B, 0x35, 0x14, 0xB4, 0xE5, 0xC7, 0x55, 0x5C, 0xFE, 0xC6, 0x87, 0xCF, 0x20, 0x15, + 0x81, 0xE0, 0xF1, 0x6E, 0x61, 0x17, 0xC0, 0x1C, 0xB8, 0x66, 0xD7, 0xC1, 0x7D, 0xB8, 0xFA, 0xF2, + 0x0D, 0x79, 0xDE, 0x50, 0x03, 0x25, 0x1C, 0x6B, 0x7E, 0x86, 0x45, 0xAA, 0x48, 0x58, 0xA0, 0x50, + 0x5F, 0x8C, 0x72, 0xB2, 0xB5, 0x7B, 0x90, 0x54, 0x28, 0x38, 0x97, 0x7D, 0x45, 0xFF, 0x52, 0x6D, + 0x34, 0x02, 0xAE, 0x4B, 0xF7, 0xE6, 0x78, 0x31, 0xEC, 0x03, 0x7B, 0x77, 0x04, 0x7A, 0x4B, 0xA3, + 0x9A, 0x03, 0xC2, 0x0B, 0xE1, 0x2B, 0x08, 0x2D, 0xDF, 0xB1, 0x68, 0x96, 0xC1, 0xFB, 0x20, 0x05, + 0x8D, 0xAB, 0x7F, 0x6A, 0x56, 0xA4, 0xEE, 0xA6, 0x0D, 0x4A, 0xA6, 0x5D, 0x8E, 0xF4, 0xA0, 0xBA, + 0x56, 0x1D, 0xE4, 0x55, 0x7C, 0xD6, 0x21, 0xB3, 0xAC, 0x18, 0x81, 0x11, 0x56, 0xB0, 0x6F, 0x14, + 0x20, 0xD6, 0xB4, 0xCC, 0xBE, 0x8D, 0x48, 0x50, 0x6A, 0x34, 0xE1, 0x31, 0xED, 0x27, 0x99, 0x55, + 0x58, 0xF8, 0xCD, 0x72, 0xD1, 0x79, 0xC6, 0x64, 0x56, 0x24, 0xE7, 0xE3, 0x9A, 0x31, 0xC8, 0x45, + 0xA7, 0x20, 0x3C, 0x13, 0x84, 0x5D, 0x61, 0xF6, 0x9E, 0xD8, 0x00, 0x8E, 0x70, 0x19, 0xA5, 0x4B, + 0xFA, 0x3A, 0xA3, 0x7A, 0x6E, 0x3E, 0x05, 0xE8, 0x01, 0xBE, 0x8D, 0x2B, 0xA5, 0x29, 0x9F, 0xFD, + 0x7B, 0x0E, 0xEA, 0xBC, 0xC5, 0xFF, 0xF1, 0xF7, 0xFF, 0xF6, 0x58, 0xCF, 0x45, 0xEF, 0x7E, 0x2A, + 0x88, 0xAB, 0xDE, 0x8A, 0xE0, 0xA0, 0xF4, 0x14, 0x31, 0xB6, 0x51, 0x6C, 0xCE, 0x6C, 0x3C, 0x8D, + 0x1A, 0x4E, 0xCD, 0xA1, 0xFF, 0xB3, 0xF6, 0x50, 0x9A, 0xEE, 0xD7, 0x3F, 0x59, 0xA9, 0x45, 0x7B, + 0x60, 0x4D, 0x1B, 0x0E, 0xDE, 0xD3, 0xEC, 0xE0, 0x99, 0x8B, 0x01, 0x11, 0xA6, 0x85, 0x3E, 0x26, + 0x3D, 0x2A, 0x96, 0x87, 0x18, 0x2E, 0x63, 0x23, 0x35, 0x1C, 0x8B, 0x74, 0xAC, 0x27, 0xED, 0xA1, + 0x92, 0xD7, 0x36, 0xB4, 0x28, 0x63, 0x48, 0xFA, 0xE6, 0xA5, 0x91, 0x5F, 0xD1, 0xC8, 0x89, 0x7C, + 0x97, 0xD6, 0x6A, 0x2F, 0x53, 0xBA, 0x1C, 0x45, 0xDE, 0x2D, 0x6A, 0x92, 0x5D, 0x94, 0xD3, 0x57, + 0x01, 0x6C, 0x6D, 0x9B, 0x42, 0x1F, 0x64, 0xC5, 0x57, 0x7A, 0x79, 0x4D, 0x18, 0x3B, 0xC2, 0xB1, + 0x5F, 0x71, 0x36, 0x1D, 0x67, 0xE5, 0x8E, 0x66, 0xC5, 0x5A, 0x7A, 0x7B, 0x0B, 0xF1, 0xF6, 0x16, + 0xC4, 0xE8, 0xAC, 0x68, 0x8B, 0xEF, 0xAE, 0x09, 0x6B, 0x61, 0x63, 0xAC, 0x57, 0xA4, 0x4D, 0x47, + 0x5A, 0xDA, 0xCE, 0xAC, 0x38, 0x8B, 0x2F, 0xAF, 0x1B, 0x65, 0x17, 0x27, 0x9C, 0x7A, 0x3D, 0x25, + 0xA8, 0x7F, 0x1F, 0x70, 0x6E, 0xB5, 0x4C, 0xE5, 0xFB, 0x59, 0x6A, 0xA8, 0xC7, 0x8C, 0x9E, 0xB3, + 0x3B, 0x13, 0xC6, 0x0B, 0xBF, 0x7D, 0x33, 0xDF, 0x40, 0x25, 0xE4, 0x5B, 0xCB, 0x15, 0x64, 0x67, + 0x4E, 0x7C, 0xBD, 0xA2, 0x2C, 0xCA, 0xA7, 0x0F, 0x04, 0x32, 0x81, 0x20, 0x33, 0x82, 0x79, 0x29, + 0x3F, 0x5A, 0xD2, 0xD0, 0x06, 0x5C, 0xC3, 0x28, 0xD4, 0x88, 0xA0, 0x7A, 0x49, 0x76, 0x8A, 0x6D, + 0x15, 0x53, 0x17, 0x89, 0x8D, 0xE7, 0xCE, 0xB0, 0x0B, 0xC4, 0x44, 0x9B, 0x8A, 0x48, 0xE7, 0x95, + 0x1A, 0xEA, 0x51, 0x04, 0x13, 0xBD, 0x65, 0xA3, 0xD6, 0x94, 0x59, 0xBC, 0x59, 0x28, 0xDF, 0xC6, + 0xB8, 0xE3, 0x2E, 0xF1, 0x6D, 0x97, 0x6B, 0x6E, 0x04, 0x63, 0xBC, 0xE8, 0xC5, 0x23, 0x20, 0xD3, + 0x5C, 0x94, 0x40, 0x94, 0xC2, 0xBD, 0x87, 0x76, 0xDB, 0x88, 0x4C, 0xC5, 0x8C, 0x9A, 0xE4, 0x80, + 0xC0, 0xDA, 0xDC, 0xED, 0x61, 0xD4, 0xE0, 0xBA, 0x6D, 0x9B, 0xA3, 0xD1, 0x92, 0xEC, 0x9A, 0xED, + 0x76, 0x21, 0x9B, 0x66, 0xD8, 0xEC, 0x99, 0xF6, 0x4C, 0xE9, 0xE6, 0x11, 0x03, 0x72, 0xC2, 0xAA, + 0x39, 0x8A, 0xBC, 0xB1, 0x51, 0xB6, 0xCD, 0x10, 0x04, 0x39, 0xED, 0x9A, 0x05, 0x6E, 0xAE, 0x5B, + 0x14, 0x48, 0xC1, 0xAE, 0x5A, 0xA7, 0x81, 0x80, 0x30, 0x80, 0x0E, 0x1F, 0x60, 0xB1, 0x57, 0xAD, + 0x39, 0x01, 0xB6, 0xFB, 0x4D, 0x94, 0x12, 0xE6, 0x46, 0xC8, 0xB6, 0x30, 0x11, 0x1F, 0x48, 0x73, + 0xA6, 0xC5, 0x7E, 0x70, 0xF8, 0x13, 0xF6, 0x1F, 0x8E, 0x92, 0x70, 0x18, 0x03, 0xBE, 0xBE, 0xE5, + 0x68, 0x06, 0x04, 0x16, 0x30, 0x67, 0x24, 0x87, 0xFD, 0x05, 0x5A, 0xCF, 0x94, 0x49, 0xD6, 0x1A, + 0xD4, 0x13, 0x45, 0xB1, 0xF3, 0x30, 0xEA, 0xC4, 0x0B, 0x03, 0x7C, 0xA2, 0xDF, 0xCF, 0x65, 0x66, + 0x91, 0xC6, 0xAB, 0xB0, 0x05, 0xCF, 0x9C, 0xF7, 0x0A, 0x83, 0x82, 0x54, 0x6A, 0xA8, 0x18, 0x95, + 0x8E, 0x23, 0x77, 0x3C, 0x69, 0x0E, 0x8E, 0x18, 0x81, 0xB7, 0xDA, 0x24, 0x26, 0xF9, 0x6C, 0x87, + 0x0B, 0x8C, 0x65, 0xF2, 0x66, 0x12, 0xF7, 0xF3, 0x10, 0x37, 0x97, 0x39, 0x17, 0x88, 0xEA, 0x96, + 0xDB, 0xFC, 0x41, 0xB3, 0x94, 0x1D, 0x17, 0x1E, 0x30, 0xF5, 0x24, 0x63, 0x9E, 0x80, 0xE7, 0x1A, + 0x71, 0xA3, 0x53, 0x58, 0x90, 0x5E, 0x99, 0xAA, 0x27, 0x2A, 0x04, 0xFC, 0x8E, 0xC8, 0x45, 0x5C, + 0xC9, 0x70, 0x9D, 0x11, 0x83, 0xB5, 0x3A, 0x0F, 0xAC, 0x7E, 0xC2, 0x90, 0x29, 0xA1, 0x8D, 0x96, + 0x78, 0xD5, 0xD3, 0x9E, 0xBC, 0x66, 0x08, 0x45, 0x64, 0x4D, 0x08, 0x3E, 0x1C, 0x51, 0xE2, 0x15, + 0xE5, 0x7A, 0x85, 0x7F, 0xBE, 0xFD, 0xEC, 0x0C, 0xF9, 0x5B, 0x72, 0xB9, 0xDA, 0x63, 0x0E, 0x1A, + 0x79, 0x35, 0xEC, 0x67, 0x0F, 0xBF, 0x73, 0x71, 0x7D, 0x34, 0x50, 0x6E, 0x04, 0x5E, 0xA3, 0x56, + 0xBB, 0x02, 0x07, 0xD9, 0xE8, 0xD1, 0x2B, 0x8F, 0xA0, 0xB6, 0xEB, 0xF4, 0x4C, 0x8B, 0xDF, 0x39, + 0x3F, 0xB8, 0xBD, 0x00, 0x2F, 0xFC, 0xC9, 0xF4, 0x3E, 0xEA, 0xA4, 0x53, 0xE3, 0x30, 0x1A, 0xE8, + 0x74, 0x4D, 0xDE, 0x7D, 0x57, 0x3D, 0x74, 0xD7, 0x73, 0x99, 0xE3, 0xF6, 0x35, 0xDB, 0xFC, 0x5D, + 0x4A, 0x25, 0x03, 0xCD, 0xC3, 0x80, 0x47, 0xC7, 0x1D, 0x39, 0xE4, 0x52, 0x73, 0x37, 0x00, 0x66, + 0xD1, 0x11, 0x20, 0x5E, 0x0F, 0xD9, 0x04, 0xAB, 0xD4, 0x74, 0x1D, 0x4D, 0x25, 0x7B, 0xD2, 0x69, + 0xCF, 0x24, 0x7E, 0xE9, 0x72, 0x72, 0x02, 0x44, 0xAA, 0xA4, 0xDE, 0x75, 0xDF, 0x03, 0xF4, 0x55, + 0xB1, 0x92, 0x78, 0x35, 0x41, 0x0B, 0x17, 0xB8, 0xF0, 0x28, 0x3A, 0x02, 0x4A, 0x3F, 0xB1, 0x32, + 0x0B, 0x2E, 0xEA, 0x3A, 0x23, 0xCD, 0xFD, 0x71, 0xE9, 0xDB, 0x12, 0x42, 0xDB, 0xE1, 0xF5, 0xF7, + 0x1C, 0x8F, 0xF8, 0x77, 0x0B, 0xF6, 0x58, 0x4E, 0x41, 0xED, 0xCC, 0x7E, 0xCB, 0xF3, 0xFB, 0x59, + 0xBE, 0xF7, 0xF2, 0xD2, 0x7D, 0x3B, 0x30, 0x04, 0xCD, 0x5B, 0xAB, 0xFA, 0xB3, 0x68, 0x85, 0x07, + 0x17, 0x54, 0x4C, 0xE7, 0x89, 0xB4, 0x9C, 0xA5, 0xCD, 0x8C, 0x81, 0x35, 0xA1, 0xC6, 0x60, 0xE3, + 0x8D, 0xD2, 0x5F, 0xE6, 0x2E, 0xA7, 0x98, 0x0A, 0x43, 0x03, 0x90, 0x6B, 0x23, 0xF6, 0x7E, 0x3E, + 0xD0, 0xE0, 0x00, 0xB6, 0x5A, 0x70, 0x7A, 0xD3, 0x92, 0xC2, 0xC2, 0x87, 0x29, 0xE1, 0xCE, 0x91, + 0x23, 0x28, 0xEC, 0xEB, 0x4C, 0xF3, 0xE1, 0x30, 0xA6, 0xC4, 0xEE, 0x04, 0x66, 0x86, 0x0F, 0xC8, + 0x19, 0xF5, 0x34, 0x83, 0x89, 0x37, 0x96, 0xFB, 0x27, 0xDE, 0x67, 0x7C, 0xCA, 0xF2, 0x51, 0x94, + 0x6D, 0x18, 0xC1, 0xEC, 0x53, 0xC8, 0x35, 0x91, 0x56, 0xE6, 0xA4, 0x5A, 0x2D, 0x35, 0xF0, 0x67, + 0xB6, 0x7C, 0x2F, 0x89, 0xE6, 0xEF, 0x8F, 0xB1, 0x39, 0xFE, 0x2C, 0xD4, 0xBC, 0xF6, 0xBE, 0x8E, + 0xED, 0xE9, 0x57, 0xA1, 0x0E, 0x0E, 0x4E, 0x0E, 0xB1, 0x03, 0xFA, 0x55, 0xA8, 0x83, 0xA3, 0x77, + 0xB4, 0x02, 0xFA, 0x55, 0x6C, 0x09, 0xB5, 0x23, 0xB9, 0x06, 0xFA, 0x5D, 0xA8, 0x8B, 0xFA, 0x41, + 0x95, 0x56, 0x21, 0x7F, 0x17, 0xEA, 0xE2, 0xF0, 0xB8, 0x2A, 0x37, 0x92, 0x7E, 0x17, 0xDB, 0xCA, + 0x7A, 0x4D, 0x6E, 0x26, 0xFD, 0x4E, 0xEF, 0x22, 0x3D, 0xE3, 0xCF, 0x62, 0xD5, 0xBC, 0x3B, 0x72, + 0x7E, 0x06, 0x5A, 0x22, 0x71, 0x06, 0xAF, 0x73, 0x50, 0xBE, 0xB8, 0x6D, 0xB6, 0xAE, 0xBE, 0x32, + 0x64, 0x5A, 0x81, 0xF3, 0xB2, 0x0E, 0xC4, 0xDC, 0x97, 0x2E, 0xC9, 0x20, 0x6C, 0xEB, 0x58, 0x97, + 0x03, 0xB3, 0x8C, 0x62, 0x4A, 0x88, 0x81, 0x83, 0xA2, 0x0B, 0x3A, 0x47, 0x20, 0x19, 0x45, 0xA4, + 0x16, 0xDA, 0xFE, 0xEE, 0xC8, 0xDB, 0x24, 0x35, 0x50, 0x1E, 0x41, 0xEE, 0x33, 0x74, 0x44, 0x04, + 0xF7, 0x82, 0xD8, 0x5B, 0xA2, 0xAB, 0x52, 0xE3, 0x8B, 0xFF, 0xC8, 0xD4, 0x87, 0xDC, 0x7C, 0x2D, + 0xD9, 0xD9, 0xB4, 0xC9, 0x2E, 0x82, 0xB7, 0x01, 0x32, 0xDF, 0x7C, 0xB9, 0x68, 0x16, 0x23, 0xEB, + 0x52, 0xA3, 0xDD, 0xEE, 0xEC, 0x5F, 0xDC, 0xA3, 0x4F, 0xFA, 0x1D, 0x60, 0x69, 0x1F, 0xB3, 0xAA, + 0x14, 0x21, 0x6E, 0xB9, 0xBC, 0xA1, 0xFF, 0xA8, 0x56, 0x06, 0x20, 0xBF, 0xAA, 0x9F, 0x17, 0xE3, + 0x76, 0xA0, 0x5D, 0xB7, 0xCE, 0xF7, 0x5B, 0xCD, 0xF3, 0xCD, 0x24, 0xCF, 0x56, 0xF3, 0xAE, 0x19, + 0xA7, 0x45, 0x25, 0x61, 0xA8, 0x58, 0x02, 0xC3, 0xEC, 0x91, 0x53, 0x92, 0x48, 0x38, 0xC9, 0xE1, + 0x2E, 0xC9, 0x6C, 0xE4, 0xEA, 0x45, 0xA0, 0x57, 0x53, 0xB3, 0xD8, 0xDD, 0x4F, 0xFB, 0xB7, 0x3F, + 0x21, 0xBD, 0x5A, 0x2A, 0xA9, 0x5B, 0x34, 0x2D, 0x70, 0x85, 0xE1, 0x06, 0xA9, 0xAD, 0x89, 0xB5, + 0x1E, 0xF9, 0x20, 0x1D, 0xB1, 0x11, 0xC7, 0x7E, 0x60, 0x06, 0x06, 0x73, 0x7C, 0x81, 0x02, 0x37, + 0xAA, 0x3D, 0x47, 0xB6, 0xA7, 0x9C, 0xF7, 0x80, 0x89, 0x88, 0xA0, 0x31, 0xCA, 0xE3, 0x30, 0x0F, + 0xD8, 0x97, 0xB0, 0x23, 0x54, 0x9F, 0x6C, 0xCA, 0x8F, 0xAA, 0x5C, 0xFE, 0x3A, 0xAD, 0xE6, 0x7E, + 0xE7, 0xFC, 0x5A, 0x66, 0x81, 0xD1, 0xE5, 0x5E, 0x56, 0xE4, 0x25, 0xCC, 0x7E, 0xCB, 0x74, 0xE5, + 0x95, 0x60, 0x74, 0x1A, 0x31, 0xAF, 0x42, 0x01, 0xA2, 0xB7, 0xA6, 0xD3, 0x2D, 0x97, 0xDA, 0xC2, + 0xD8, 0xBB, 0x4A, 0xB9, 0xEA, 0x99, 0xEE, 0x10, 0xAD, 0xA5, 0xB3, 0x9C, 0x08, 0x11, 0x50, 0x5B, + 0x67, 0xAA, 0x0A, 0x28, 0x1B, 0x45, 0x96, 0x45, 0xF0, 0x20, 0x29, 0x61, 0xB5, 0x70, 0x1B, 0x9E, + 0x29, 0x60, 0xC5, 0x7A, 0x9C, 0x98, 0xEB, 0xAB, 0x78, 0xF5, 0x2A, 0x5E, 0xFD, 0x71, 0xC4, 0xAB, + 0x2B, 0x5B, 0xB2, 0x61, 0x0C, 0xAC, 0xDA, 0x53, 0x91, 0x66, 0x49, 0x61, 0x6B, 0x92, 0xBF, 0xCF, + 0x94, 0xB5, 0x22, 0x0C, 0x2C, 0xC2, 0xBF, 0x24, 0xFC, 0x36, 0x4C, 0xD0, 0xCA, 0xC4, 0xC4, 0xB0, + 0x3A, 0x8E, 0x0B, 0xC7, 0x40, 0x1B, 0xCF, 0x96, 0x45, 0xA5, 0xC7, 0x5A, 0xAC, 0x21, 0x5E, 0xDE, + 0xC6, 0x5C, 0x44, 0x27, 0x1A, 0xDE, 0x1D, 0x05, 0x4F, 0x19, 0x3D, 0x5E, 0xBE, 0x45, 0x7E, 0xEA, + 0x5C, 0x56, 0x6C, 0x96, 0xFF, 0xC4, 0x6D, 0x4E, 0xE8, 0xAB, 0xC9, 0x55, 0xE3, 0x1D, 0x39, 0xEB, + 0x28, 0x89, 0x00, 0x8E, 0x67, 0x78, 0x6F, 0xA8, 0xE2, 0x29, 0x87, 0x3E, 0xE0, 0x6E, 0x8F, 0xB2, + 0x89, 0xEC, 0xC9, 0x50, 0x47, 0xD8, 0x6F, 0x0C, 0x48, 0x0C, 0x1D, 0xFD, 0x2B, 0xEC, 0x96, 0xFF, + 0xE6, 0x9B, 0x2E, 0xF7, 0xC6, 0x05, 0xC4, 0x92, 0xB1, 0xCD, 0xCA, 0x14, 0x2F, 0x3B, 0xA8, 0x55, + 0xAB, 0x7B, 0xD5, 0x6A, 0xD5, 0xF7, 0x94, 0x38, 0xA2, 0xEA, 0x2F, 0xA1, 0x0C, 0xF2, 0x3E, 0xFC, + 0x4A, 0xCE, 0x80, 0x8B, 0x07, 0xCE, 0x6D, 0xF9, 0x9E, 0x57, 0xD9, 0x6A, 0x4B, 0xFE, 0x0C, 0x52, + 0x69, 0x71, 0x8C, 0x14, 0xF5, 0x72, 0x53, 0xCC, 0xB3, 0x6E, 0x08, 0x92, 0xF2, 0x43, 0x6C, 0x5E, + 0x77, 0x00, 0xF9, 0x33, 0x09, 0x78, 0xFA, 0xFC, 0xAB, 0xEF, 0x15, 0xAC, 0xE0, 0x9D, 0x7E, 0x57, + 0x70, 0x37, 0xB9, 0xCB, 0x6C, 0xE7, 0xFF, 0xFD, 0x5F, 0x2F, 0x43, 0xED, 0x8F, 0xE7, 0xE4, 0xAF, + 0xCF, 0x6E, 0x90, 0xCE, 0xEF, 0x24, 0x98, 0x0A, 0xCB, 0x5C, 0x19, 0xED, 0xD3, 0x7A, 0x7B, 0x69, + 0xE5, 0x63, 0x62, 0xEB, 0xBD, 0x26, 0xC6, 0xB0, 0x4C, 0xFC, 0x6B, 0x47, 0x19, 0x90, 0x44, 0xBC, + 0xAD, 0xC0, 0xAB, 0x31, 0x64, 0x8A, 0x63, 0x53, 0xD8, 0xC7, 0x26, 0xE1, 0x10, 0xD9, 0xD9, 0x71, + 0x76, 0x17, 0x46, 0x9F, 0xE7, 0x55, 0x89, 0x52, 0x11, 0xAA, 0xED, 0x58, 0x9A, 0x6B, 0x8A, 0xA7, + 0x25, 0xE3, 0x53, 0x30, 0xCC, 0x69, 0x0E, 0x26, 0x15, 0xD3, 0xBE, 0xA6, 0x4F, 0x7A, 0x72, 0x0B, + 0xC7, 0x5F, 0x15, 0xD0, 0xC7, 0x66, 0x9B, 0x86, 0x6E, 0x4D, 0xF2, 0x40, 0xC5, 0x2D, 0xC8, 0x99, + 0xEA, 0x7C, 0xC2, 0x52, 0x74, 0xA9, 0x59, 0x56, 0xFE, 0xBE, 0x72, 0xA4, 0x4C, 0x5F, 0xCA, 0xB5, + 0x31, 0x5A, 0x6C, 0xA4, 0x6C, 0xE2, 0x99, 0x7D, 0x94, 0x0D, 0x1F, 0x30, 0xD8, 0x11, 0xA4, 0xFA, + 0x01, 0x74, 0xA5, 0x3C, 0x66, 0x74, 0x32, 0x5F, 0xEC, 0xB8, 0x12, 0x56, 0x1C, 0xD6, 0xB7, 0x2B, + 0x33, 0x49, 0x3F, 0xC4, 0x5F, 0xE8, 0x29, 0x08, 0xD0, 0x1B, 0x11, 0x91, 0x28, 0x02, 0xE4, 0x17, + 0x93, 0xF1, 0xE5, 0xCD, 0x66, 0x08, 0xF8, 0x9F, 0x95, 0x67, 0x1D, 0x99, 0x28, 0xAF, 0x9D, 0x7E, + 0x1F, 0x3D, 0xDF, 0x92, 0xF2, 0x7E, 0x2A, 0x54, 0xA4, 0x81, 0x53, 0x35, 0x5F, 0xAA, 0x5E, 0x90, + 0x3A, 0x95, 0x49, 0xBD, 0x61, 0xFA, 0x12, 0x57, 0xAC, 0x46, 0xC0, 0xB8, 0x2C, 0xE0, 0x47, 0xA1, + 0xF4, 0xC6, 0x71, 0x46, 0xDE, 0xAE, 0x14, 0xF5, 0x0F, 0xAA, 0xA1, 0x51, 0x51, 0x7F, 0x62, 0xB7, + 0x5F, 0x3A, 0x15, 0x74, 0x7F, 0xE8, 0xF9, 0x96, 0x52, 0x9C, 0xD1, 0x4B, 0x8B, 0x59, 0xE6, 0x0F, + 0xD0, 0x26, 0x7C, 0xBC, 0x16, 0x14, 0xAE, 0x09, 0x6A, 0xB3, 0x6F, 0x29, 0xED, 0xB8, 0xC3, 0xA5, + 0xAB, 0x04, 0x0A, 0x3E, 0x54, 0x20, 0xCD, 0x53, 0x2E, 0xF2, 0xAA, 0xAC, 0xDA, 0x2F, 0x17, 0xAD, + 0xF2, 0xE5, 0xFB, 0x36, 0xBB, 0xB2, 0x05, 0x06, 0x22, 0xD3, 0x57, 0x5F, 0x34, 0xDB, 0xD7, 0x64, + 0xFF, 0x43, 0xAC, 0xE3, 0x14, 0xB3, 0x8B, 0xA6, 0x6B, 0x2A, 0x39, 0xB2, 0x30, 0xAD, 0x53, 0xD7, + 0xD8, 0x38, 0x17, 0xCD, 0x6F, 0xCD, 0xDB, 0xBB, 0xFA, 0xB7, 0xB3, 0x9F, 0xAE, 0xEC, 0x90, 0xD2, + 0xE0, 0x13, 0xEC, 0x0C, 0x52, 0xC4, 0xD7, 0xF9, 0x71, 0x20, 0xB4, 0x19, 0xD4, 0xC1, 0x2A, 0x9C, + 0x32, 0xA3, 0x33, 0x5D, 0x91, 0x05, 0x29, 0x02, 0x10, 0x39, 0x7F, 0xC7, 0x8E, 0x2C, 0x9A, 0x95, + 0x19, 0xAF, 0xF4, 0x2B, 0x13, 0xF9, 0xD4, 0xA9, 0x86, 0x29, 0xCC, 0x22, 0x24, 0xB1, 0x9B, 0x8B, + 0xAF, 0xE5, 0xD6, 0xFB, 0xF3, 0x2D, 0x70, 0xE0, 0x5F, 0x8C, 0xE3, 0x0A, 0x65, 0x57, 0x7B, 0x41, + 0x7E, 0x2B, 0xB8, 0x9E, 0x42, 0x6E, 0x2B, 0x91, 0x86, 0xD3, 0xC1, 0x1E, 0x81, 0x54, 0xC2, 0x69, + 0xE5, 0xC1, 0xEC, 0x99, 0x1B, 0xE5, 0xB3, 0x32, 0x77, 0x2D, 0x05, 0x5D, 0x56, 0x26, 0x35, 0x4F, + 0xD8, 0xCA, 0x79, 0x9A, 0xC2, 0x0D, 0x68, 0xD1, 0x8E, 0xFB, 0xC3, 0x3B, 0x5D, 0x19, 0x03, 0x00, + 0x12, 0x66, 0xBA, 0xCB, 0x29, 0xF8, 0x0B, 0xF6, 0x9A, 0xCE, 0x27, 0x98, 0xA7, 0x70, 0xD8, 0xA1, + 0xDC, 0x3D, 0x5B, 0x4D, 0xA9, 0xC2, 0x9A, 0x20, 0x6B, 0x06, 0x9F, 0x42, 0xC9, 0x13, 0x4E, 0x46, + 0xBC, 0x7A, 0xB3, 0x55, 0x25, 0x07, 0xEE, 0x89, 0xE0, 0x9D, 0xB1, 0xF3, 0x76, 0xF8, 0x32, 0x5E, + 0x9E, 0x55, 0xFE, 0x30, 0xB9, 0x0C, 0x10, 0xC5, 0xD5, 0x86, 0x56, 0x3B, 0x1D, 0x0C, 0xA7, 0x88, + 0x68, 0xE5, 0x07, 0x13, 0x3A, 0x1A, 0xBE, 0xC2, 0x6A, 0xA7, 0x45, 0x82, 0x4A, 0xB3, 0xE9, 0xF7, + 0x79, 0x9C, 0x18, 0x27, 0xE7, 0xAE, 0x4E, 0x2C, 0xC1, 0x53, 0x8B, 0x16, 0x28, 0xA5, 0x3E, 0xD9, + 0xC5, 0xB6, 0x05, 0x49, 0x47, 0xE7, 0xDF, 0x86, 0x6E, 0xE0, 0x0F, 0x23, 0x65, 0x0B, 0xDB, 0xDF, + 0xE7, 0x02, 0x66, 0x13, 0x37, 0x37, 0x5C, 0x59, 0xEE, 0x3D, 0x0D, 0x5A, 0x6E, 0xF1, 0xBE, 0xD6, + 0xB2, 0x92, 0x65, 0x7D, 0xF3, 0x76, 0x4E, 0xCE, 0x3D, 0xEF, 0xAE, 0xD5, 0xB6, 0x9C, 0x12, 0x6B, + 0x8B, 0xA1, 0xC4, 0x4D, 0xDC, 0xCF, 0xC2, 0x94, 0x58, 0x7B, 0x01, 0x94, 0x58, 0xCF, 0x4A, 0x89, + 0x07, 0x9B, 0xB7, 0x73, 0xF5, 0x42, 0x94, 0x58, 0xDF, 0x72, 0x4A, 0xAC, 0x2F, 0x86, 0x12, 0x37, + 0x71, 0x3F, 0x0B, 0x53, 0x62, 0xFD, 0x05, 0x50, 0xE2, 0x41, 0x56, 0x4A, 0x3C, 0xDC, 0xBC, 0x9D, + 0x3B, 0x28, 0x44, 0x89, 0x07, 0x5B, 0x4E, 0x89, 0x07, 0x8B, 0xA1, 0xC4, 0x4D, 0xDC, 0xCF, 0xC2, + 0x94, 0x78, 0xB0, 0x29, 0x94, 0xB8, 0xF0, 0x90, 0xF3, 0x7B, 0x71, 0x4E, 0x05, 0x0C, 0x4B, 0x8D, + 0xBB, 0xF3, 0x36, 0x93, 0x7F, 0xAF, 0x24, 0x66, 0x3C, 0x1C, 0x78, 0xEE, 0x56, 0x84, 0xC9, 0x91, + 0x85, 0x3E, 0x3A, 0xC3, 0x22, 0xE9, 0x98, 0x0D, 0x79, 0x55, 0x0E, 0x71, 0x3D, 0x59, 0xCB, 0x80, + 0x1B, 0x7B, 0x41, 0xD0, 0x23, 0x59, 0x1E, 0x22, 0xC1, 0xBA, 0x64, 0xD2, 0x40, 0x6B, 0xC5, 0xC8, + 0xF7, 0x06, 0xD2, 0x7D, 0xCE, 0xA1, 0x82, 0x94, 0x03, 0xCE, 0xFA, 0xE6, 0x3D, 0xB7, 0x19, 0x42, + 0x15, 0x1D, 0xE6, 0x2A, 0xDB, 0x9A, 0xF6, 0x33, 0x13, 0x27, 0x19, 0x4D, 0xDB, 0xD9, 0x22, 0xB4, + 0xB2, 0x6E, 0x62, 0x08, 0x2A, 0x9F, 0xE0, 0xB6, 0xAD, 0xAE, 0x92, 0xEA, 0x78, 0xE0, 0xAD, 0x23, + 0x06, 0xAA, 0x1F, 0xC3, 0x4C, 0xBB, 0xEB, 0xF8, 0x40, 0x06, 0x08, 0xB6, 0xA0, 0x8C, 0x08, 0x66, + 0x5D, 0x88, 0x93, 0x86, 0xBC, 0x30, 0x56, 0x15, 0x53, 0xD1, 0xFB, 0x5D, 0xBD, 0xBA, 0x99, 0x56, + 0xBC, 0xA5, 0x51, 0x87, 0xDC, 0xEA, 0xA5, 0x50, 0x07, 0x8E, 0x03, 0xC8, 0x51, 0x3C, 0x33, 0x44, + 0xA1, 0xE0, 0xFB, 0x60, 0x49, 0x54, 0x44, 0xB2, 0x90, 0x3F, 0x09, 0x16, 0xC9, 0x5C, 0xA0, 0x13, + 0x44, 0xE8, 0xE0, 0xA0, 0x98, 0x2F, 0x15, 0x08, 0xF6, 0xA2, 0x59, 0x3F, 0xEA, 0xEF, 0x0F, 0xDF, + 0xBD, 0xC6, 0xA2, 0xE7, 0x95, 0xA5, 0xE2, 0x3B, 0x9D, 0x3D, 0xF4, 0x3C, 0xDA, 0x6C, 0xAD, 0x91, + 0xE6, 0x6B, 0x3B, 0x57, 0xBE, 0x19, 0x61, 0xA5, 0xEC, 0x6F, 0xAD, 0x15, 0x1F, 0x2D, 0xE3, 0xB1, + 0xB3, 0x9D, 0x2E, 0xBE, 0xB1, 0x31, 0xA7, 0x4B, 0xD7, 0x75, 0x34, 0x03, 0x6B, 0x76, 0xCB, 0x03, + 0xC4, 0x83, 0x6E, 0x31, 0xA3, 0xB5, 0x2C, 0x0E, 0xC3, 0xBE, 0xB5, 0x5B, 0x7F, 0xA4, 0x73, 0x23, + 0xDC, 0xC7, 0xA5, 0x1D, 0x1D, 0xBE, 0xB1, 0xFA, 0xA3, 0x23, 0x5C, 0xD5, 0xC6, 0x9D, 0x1E, 0x48, + 0xA8, 0xD3, 0x4F, 0x8F, 0x5A, 0xB5, 0x56, 0xAB, 0xBE, 0x1E, 0x1F, 0x05, 0x8E, 0x8F, 0xF8, 0x6E, + 0xE7, 0x39, 0x41, 0x62, 0x2D, 0x37, 0xF4, 0x10, 0x09, 0x3D, 0x11, 0x88, 0x78, 0xEE, 0x00, 0x26, + 0x93, 0xBE, 0xBD, 0x99, 0x4E, 0x95, 0xD0, 0x26, 0x33, 0xEE, 0x09, 0xD3, 0x7E, 0xAA, 0x58, 0x5A, + 0xF6, 0xC5, 0x31, 0xF2, 0xC7, 0x3A, 0x26, 0xBA, 0x4B, 0x4C, 0x16, 0xCB, 0x3F, 0x36, 0xDB, 0x8B, + 0x88, 0x78, 0xAC, 0x95, 0x1A, 0xCD, 0x76, 0xA1, 0x08, 0x39, 0x20, 0x29, 0x54, 0xA8, 0x37, 0x32, + 0x34, 0xAE, 0xD9, 0x8E, 0x04, 0xC6, 0x4D, 0x3F, 0xA2, 0x54, 0xC0, 0xB0, 0x0E, 0xE7, 0x93, 0xC7, + 0x28, 0xDD, 0x0E, 0xC3, 0x44, 0x5F, 0xDC, 0xC0, 0xD2, 0x8B, 0x65, 0x09, 0xE6, 0x0A, 0x83, 0xBE, + 0xC8, 0x6A, 0x30, 0xBD, 0xB7, 0x88, 0x6D, 0x01, 0x43, 0x9E, 0xAD, 0xB1, 0x85, 0x21, 0x12, 0x4C, + 0x4D, 0x4E, 0x10, 0x58, 0x5F, 0x0A, 0x1B, 0xCB, 0x0C, 0x87, 0x98, 0xEF, 0xBA, 0x8D, 0xC1, 0xCA, + 0x2E, 0x0C, 0x5E, 0x79, 0xB9, 0xB9, 0x4E, 0x65, 0x5A, 0x95, 0x17, 0xE4, 0x2C, 0x45, 0x0B, 0x2A, + 0xE4, 0x2D, 0x15, 0x6D, 0x39, 0x1D, 0xF4, 0x51, 0x60, 0x25, 0xFC, 0xA5, 0x28, 0xFF, 0xC5, 0x46, + 0x39, 0x4C, 0xCD, 0x5F, 0xCE, 0x73, 0x93, 0xFC, 0x4C, 0xE7, 0xC5, 0x39, 0xB3, 0xFB, 0x48, 0x36, + 0x4C, 0x13, 0x2D, 0x96, 0xCA, 0x67, 0xCC, 0x78, 0x23, 0x1F, 0x17, 0x92, 0xE6, 0xE2, 0x6B, 0xAF, + 0x57, 0x34, 0xCB, 0xC5, 0x45, 0xA7, 0x5D, 0xBE, 0x71, 0x1E, 0x36, 0x33, 0xA1, 0x04, 0xE5, 0x4D, + 0x40, 0xA7, 0x50, 0x98, 0xE5, 0x41, 0x3D, 0x88, 0x3A, 0x0E, 0xF3, 0x33, 0x48, 0x36, 0x0B, 0x04, + 0x58, 0xA6, 0x3F, 0xF6, 0x30, 0x34, 0x21, 0x7C, 0x34, 0x04, 0x59, 0xCD, 0x94, 0x7C, 0x98, 0xC0, + 0x4D, 0xCE, 0x68, 0x54, 0x93, 0x52, 0x55, 0xAA, 0xF4, 0x3C, 0x72, 0x8A, 0xFE, 0xEC, 0x3C, 0xF0, + 0x7B, 0x8C, 0xFB, 0x3C, 0x03, 0x90, 0x08, 0xC7, 0x11, 0x03, 0xD6, 0x69, 0xB7, 0x71, 0x2C, 0xAC, + 0x1E, 0x1C, 0x0E, 0x27, 0x88, 0xDF, 0x7A, 0x58, 0x5D, 0x07, 0xA3, 0x36, 0xFF, 0x4C, 0x95, 0x71, + 0xC7, 0x4D, 0xCE, 0xAE, 0x2F, 0xA2, 0x61, 0x0F, 0x34, 0x20, 0xEC, 0xCA, 0xD6, 0xC5, 0x39, 0x13, + 0xA8, 0x8A, 0x86, 0x6B, 0x4E, 0x57, 0xA5, 0xD3, 0x8A, 0xB5, 0x12, 0xAC, 0xBE, 0x34, 0xCF, 0xC3, + 0x64, 0xBE, 0x34, 0x07, 0x78, 0x30, 0x3B, 0x8F, 0x6F, 0xB3, 0x79, 0x7A, 0x76, 0x76, 0x7A, 0x7E, + 0x7E, 0xDA, 0x6A, 0x9D, 0x5E, 0x5C, 0x9C, 0x5E, 0x5E, 0x16, 0xBD, 0x7D, 0x29, 0x3C, 0xEB, 0xB6, + 0x66, 0x62, 0x56, 0x13, 0x9A, 0xBC, 0x77, 0x5A, 0xA0, 0x52, 0x76, 0x0E, 0xE9, 0x97, 0x73, 0x17, + 0xA0, 0xE1, 0xCD, 0x4B, 0x6B, 0x6C, 0xF3, 0xCD, 0xAD, 0x64, 0xBF, 0x9C, 0x7A, 0x9A, 0x08, 0x19, + 0x38, 0x91, 0x71, 0x1F, 0xE4, 0x26, 0xCC, 0x2A, 0xB1, 0xC9, 0xA6, 0x2A, 0x93, 0xD9, 0x22, 0xA5, + 0x42, 0xA3, 0xC8, 0x28, 0x1C, 0x06, 0x2B, 0x2F, 0x1B, 0x2A, 0x7C, 0x02, 0xB8, 0x9C, 0xEB, 0xC3, + 0x99, 0x80, 0x93, 0x50, 0xA8, 0x90, 0xAD, 0xD6, 0xE6, 0x02, 0xB9, 0x65, 0x92, 0x6B, 0x46, 0xB2, + 0xC9, 0x3E, 0x38, 0x4A, 0xB8, 0xF4, 0xF6, 0x18, 0x7F, 0x34, 0x05, 0x4A, 0xB1, 0x4A, 0x76, 0x92, + 0xE2, 0x27, 0xD9, 0xE7, 0x51, 0x64, 0x64, 0x1E, 0x17, 0xB0, 0x99, 0x0A, 0xD0, 0x32, 0xCD, 0xF6, + 0x5B, 0x5C, 0xD5, 0x5B, 0xB4, 0xD3, 0x7B, 0x1C, 0x53, 0x7C, 0x7E, 0xB3, 0x4D, 0xA1, 0x3C, 0x75, + 0xBD, 0x07, 0x6D, 0x84, 0x14, 0x1B, 0x48, 0x9C, 0xDC, 0x53, 0x32, 0x2A, 0xC0, 0x18, 0x33, 0xF9, + 0x0F, 0x7D, 0x9B, 0x72, 0x3F, 0xD8, 0x7D, 0xE4, 0x9B, 0x36, 0xB0, 0x31, 0x60, 0xCB, 0x0F, 0xDC, + 0x05, 0x78, 0x56, 0xFE, 0xB0, 0x61, 0x60, 0x79, 0xC3, 0xDC, 0x33, 0xC7, 0x8E, 0xE5, 0x34, 0x47, + 0x5E, 0x3A, 0x28, 0x83, 0x2A, 0x9A, 0x09, 0xA2, 0x58, 0xE4, 0x43, 0x74, 0xCA, 0xCE, 0xB4, 0x3B, + 0x01, 0xAE, 0x67, 0x8D, 0xFB, 0x7C, 0xBE, 0x21, 0x33, 0x36, 0xEB, 0x4C, 0x73, 0xF4, 0x6D, 0xEA, + 0x90, 0x1B, 0x6B, 0x24, 0x45, 0x20, 0x2E, 0x8A, 0xAF, 0x03, 0xAD, 0x90, 0x2A, 0xA2, 0x68, 0x58, + 0x4C, 0xD2, 0xE2, 0x41, 0x74, 0xD7, 0x48, 0x1E, 0x22, 0xAA, 0xC4, 0x36, 0xCA, 0x17, 0x01, 0x0C, + 0xD8, 0xD0, 0x07, 0x95, 0xB2, 0x67, 0xBA, 0x9E, 0x90, 0x79, 0x56, 0x68, 0x25, 0xF0, 0x67, 0x0F, + 0xA3, 0xBD, 0xC8, 0x39, 0x5E, 0xD2, 0x2A, 0x90, 0x27, 0x51, 0x70, 0xFA, 0x25, 0xDA, 0x36, 0x50, + 0xD6, 0xF3, 0x8E, 0xCB, 0x79, 0xE7, 0x44, 0x0C, 0x7F, 0x66, 0x15, 0x63, 0xCE, 0x77, 0x26, 0xF4, + 0xA8, 0x4B, 0x29, 0x08, 0x4C, 0x9E, 0x0D, 0x8D, 0x31, 0x49, 0xE5, 0x3F, 0x1A, 0x46, 0xD3, 0xA6, + 0xFD, 0xC5, 0xEB, 0x27, 0x6C, 0x5E, 0x1D, 0x9F, 0xAC, 0x0D, 0x0B, 0xB3, 0x7A, 0x6D, 0x1F, 0x47, + 0xF3, 0x46, 0xB6, 0xF3, 0x70, 0x16, 0xD8, 0x60, 0x4A, 0x8D, 0xF0, 0x4F, 0xF6, 0x55, 0xD6, 0x8F, + 0xE7, 0x2B, 0x62, 0x52, 0x89, 0x89, 0xAC, 0x9F, 0xFB, 0x50, 0x52, 0x7A, 0x14, 0x4F, 0xF6, 0xE8, + 0xB6, 0x04, 0x41, 0x01, 0xAC, 0x02, 0x44, 0x49, 0x79, 0x56, 0x7B, 0xDC, 0x36, 0x3C, 0xBC, 0xBE, + 0x97, 0x51, 0x78, 0xF7, 0xA6, 0x16, 0x31, 0x65, 0x61, 0x49, 0x5C, 0x4B, 0x29, 0x5D, 0x1E, 0x95, + 0x1C, 0xC5, 0x34, 0x4F, 0xC0, 0x76, 0xE0, 0x34, 0x1F, 0x68, 0xF7, 0x9C, 0x29, 0xA5, 0x31, 0xB8, + 0xB5, 0x29, 0x16, 0x59, 0xBA, 0xCD, 0xC7, 0xFC, 0x62, 0xCB, 0x92, 0x3F, 0x79, 0x82, 0x0F, 0x5F, + 0x92, 0x59, 0x4B, 0xAE, 0xA8, 0x58, 0x11, 0xF2, 0x68, 0xD3, 0x19, 0xB5, 0xC5, 0xA3, 0xF0, 0x4A, + 0xD6, 0x16, 0x97, 0xCD, 0x37, 0xAA, 0xB6, 0xF8, 0xFC, 0x15, 0x3D, 0xC3, 0xB6, 0xE5, 0x8F, 0x2C, + 0x20, 0xD9, 0x1B, 0xFE, 0x70, 0xA9, 0xF2, 0x46, 0xB6, 0xCC, 0xFB, 0x9C, 0xE6, 0xAD, 0xF9, 0xFC, + 0x75, 0x62, 0x80, 0x52, 0x43, 0x01, 0x3F, 0x78, 0x90, 0xC1, 0xCD, 0x93, 0x48, 0x9C, 0xF4, 0x7A, + 0xF1, 0x23, 0x68, 0xF6, 0x57, 0xE0, 0x43, 0xB0, 0x6B, 0xDF, 0x46, 0x54, 0x59, 0x7B, 0xB6, 0x66, + 0x7B, 0x5F, 0xAD, 0x54, 0x9F, 0x63, 0xD3, 0x48, 0xD1, 0xFA, 0x35, 0xAC, 0xF8, 0x0C, 0x60, 0xC7, + 0x8B, 0x65, 0x37, 0xED, 0x38, 0x9B, 0x27, 0x5E, 0x9C, 0x23, 0xE8, 0xA2, 0x70, 0xCA, 0xA2, 0x8C, + 0xA6, 0xF3, 0xF3, 0x50, 0xD6, 0xD0, 0x13, 0xFD, 0xE3, 0xE5, 0x3C, 0x8D, 0x49, 0x56, 0x2D, 0xF8, + 0x22, 0xDC, 0x90, 0x31, 0xE2, 0xAE, 0x38, 0x4F, 0x82, 0x9C, 0x4E, 0x58, 0xEF, 0x01, 0xCE, 0x10, + 0xD0, 0x1B, 0x99, 0xD9, 0x63, 0x58, 0xB4, 0x24, 0x4C, 0x6C, 0x0A, 0xF2, 0xEA, 0x38, 0x92, 0x53, + 0xA5, 0x47, 0xF0, 0x94, 0x9A, 0xBA, 0xB1, 0xA9, 0xCF, 0x22, 0x32, 0x59, 0xB0, 0x90, 0x60, 0xC3, + 0x51, 0x28, 0x93, 0xE2, 0x57, 0xAA, 0x2C, 0xB4, 0x50, 0x2D, 0xEE, 0xF6, 0x7C, 0x4C, 0x92, 0x4D, + 0x72, 0xC2, 0x3B, 0xE3, 0x70, 0x8E, 0x8F, 0xB1, 0x60, 0x75, 0xAA, 0x59, 0x74, 0x2A, 0x6B, 0x12, + 0x76, 0x68, 0xED, 0x21, 0x8E, 0xE1, 0xA1, 0xA2, 0x99, 0xB6, 0xD4, 0xA8, 0x00, 0xFB, 0x30, 0x8C, + 0xB8, 0xC7, 0x35, 0xE1, 0x63, 0x4E, 0x0C, 0xA0, 0x0E, 0x36, 0xD4, 0x9E, 0x98, 0x32, 0xEE, 0x7A, + 0x42, 0x16, 0x84, 0xBA, 0x81, 0x8F, 0x2E, 0x47, 0xDB, 0x05, 0xC7, 0x53, 0x8A, 0x50, 0xB3, 0x67, + 0x72, 0xCB, 0x60, 0xE8, 0x00, 0xFE, 0x82, 0xAC, 0x16, 0xB3, 0xD9, 0x9B, 0x9B, 0xA6, 0x00, 0xC4, + 0xB9, 0xA5, 0xCC, 0x97, 0x6B, 0xDE, 0x7F, 0xE2, 0x22, 0xC6, 0xF8, 0xB2, 0xD7, 0xD4, 0xCB, 0xC4, + 0x59, 0x93, 0xDD, 0x2F, 0x96, 0xAF, 0xF6, 0x63, 0xBD, 0x23, 0x57, 0xFD, 0x36, 0x32, 0x28, 0x35, + 0xB4, 0xC3, 0xEE, 0x0F, 0x2A, 0xB5, 0xC3, 0x4A, 0xED, 0x28, 0x2B, 0x47, 0x95, 0x70, 0x69, 0x7C, + 0x18, 0xB9, 0x4E, 0x9F, 0x8C, 0x6A, 0x51, 0x7E, 0x21, 0xBB, 0x6D, 0xAB, 0xAF, 0xCE, 0x34, 0x37, + 0x24, 0xA5, 0x5A, 0xBD, 0x04, 0x08, 0xF9, 0x08, 0x7F, 0x54, 0xAB, 0xD9, 0x90, 0x5E, 0x41, 0xF8, + 0xC1, 0x34, 0xC4, 0xE0, 0xF4, 0xA0, 0x5A, 0x25, 0x33, 0x2A, 0xF0, 0x20, 0xD5, 0x79, 0x66, 0xFD, + 0x72, 0xFA, 0xDC, 0xE6, 0xA8, 0x99, 0x07, 0xEF, 0xFE, 0x25, 0x83, 0xA6, 0xA9, 0xE0, 0xB0, 0x14, + 0x17, 0x8B, 0xAC, 0x07, 0x76, 0x9C, 0x93, 0x26, 0xF5, 0xFC, 0x1C, 0xE1, 0x25, 0x58, 0x22, 0xA7, + 0xA4, 0x2E, 0xF1, 0xBA, 0x40, 0xCC, 0xF4, 0x91, 0x04, 0x4D, 0xBF, 0x3B, 0x34, 0x45, 0x80, 0x39, + 0x97, 0xF4, 0xDC, 0xB1, 0x65, 0x42, 0xDC, 0x28, 0x68, 0x51, 0x80, 0xFA, 0xAE, 0x99, 0x02, 0x6D, + 0x03, 0xFB, 0xF3, 0x07, 0x96, 0x2F, 0xB3, 0xB3, 0xAB, 0x9B, 0x67, 0x14, 0x89, 0x5E, 0x6C, 0x69, + 0x3D, 0x45, 0x0C, 0xC0, 0x47, 0x7D, 0xDB, 0x14, 0x6F, 0xBD, 0x31, 0x93, 0xED, 0x3E, 0x31, 0x29, + 0x1D, 0x92, 0x95, 0x17, 0x04, 0x6B, 0x1B, 0xC9, 0x90, 0x6A, 0x42, 0x51, 0x4A, 0x17, 0xB2, 0x66, + 0x05, 0x0E, 0xDE, 0x6C, 0x34, 0x00, 0x36, 0x80, 0xD7, 0x73, 0xED, 0xF3, 0x75, 0xB9, 0x27, 0xCC, + 0x2D, 0x2F, 0x39, 0x41, 0x11, 0xB8, 0xB2, 0x22, 0x06, 0x97, 0x79, 0xC8, 0x3D, 0x93, 0xC3, 0x86, + 0x02, 0x3D, 0x26, 0xA3, 0xBD, 0x45, 0x75, 0xBD, 0x83, 0xF6, 0xF8, 0xE7, 0xDC, 0x58, 0xC7, 0x7B, + 0x0A, 0xC5, 0xF6, 0x2B, 0xD8, 0x45, 0xCC, 0xAC, 0xDF, 0x11, 0x45, 0xF2, 0xA5, 0x27, 0x3A, 0x9D, + 0x32, 0xE5, 0x05, 0xDD, 0x67, 0x53, 0x87, 0x45, 0x6F, 0xB4, 0xCF, 0x34, 0x8F, 0x17, 0x2C, 0xD5, + 0xD0, 0xB8, 0xB9, 0x6B, 0x6F, 0xDE, 0x4D, 0x78, 0xDB, 0x57, 0x97, 0xCF, 0x72, 0x0F, 0x4D, 0x1B, + 0x6B, 0x01, 0x3A, 0x74, 0x67, 0x4D, 0xD9, 0x8B, 0x51, 0x03, 0xB8, 0x93, 0x0E, 0x4A, 0xE1, 0x7D, + 0x4B, 0x9B, 0xEE, 0x5B, 0xBE, 0xDA, 0xF8, 0xE5, 0x2D, 0xF7, 0xB8, 0xA8, 0xBC, 0x96, 0xD3, 0x56, + 0xF2, 0x6A, 0x98, 0x48, 0x0E, 0x33, 0xBB, 0x01, 0x28, 0x3B, 0x2D, 0x76, 0x0E, 0x2A, 0xF7, 0x2A, + 0xDC, 0xB1, 0xD3, 0x73, 0xD8, 0x2D, 0xDC, 0xB1, 0x5A, 0x63, 0x43, 0x53, 0x77, 0x1D, 0x58, 0x24, + 0x19, 0x17, 0x48, 0xD9, 0x12, 0xC4, 0x94, 0xF7, 0xC8, 0xC8, 0x37, 0x04, 0x7E, 0xA6, 0xF5, 0xF9, + 0x38, 0x07, 0x8F, 0x05, 0x73, 0x8C, 0x99, 0xF4, 0xB6, 0xB5, 0x44, 0x6A, 0x0C, 0xE4, 0x69, 0x2E, + 0x0D, 0xCB, 0x75, 0x74, 0x06, 0xF9, 0x0E, 0xE6, 0x81, 0x09, 0xFE, 0x7E, 0x1D, 0x9A, 0xB6, 0x2F, + 0xB8, 0x37, 0xC5, 0xD5, 0xF9, 0x30, 0xE1, 0xEA, 0xFC, 0x6E, 0xC2, 0xD5, 0xF9, 0x8B, 0xF6, 0x88, + 0xA9, 0x1A, 0x53, 0xE5, 0x3B, 0x4A, 0x38, 0xBD, 0x03, 0x23, 0xED, 0xAE, 0xAB, 0x24, 0xE5, 0x57, + 0xAC, 0x5C, 0x8A, 0x3C, 0x0B, 0x56, 0x8E, 0x18, 0x25, 0x33, 0x9D, 0xA3, 0xF2, 0xAF, 0x0F, 0x4C, + 0x7E, 0x8F, 0xC8, 0x67, 0xC9, 0x8D, 0x51, 0x8E, 0x8F, 0x5C, 0x43, 0x17, 0xEB, 0x3B, 0x55, 0x7E, + 0xD2, 0x1F, 0xA7, 0x4F, 0xB4, 0x4C, 0x10, 0xB3, 0xF0, 0x3D, 0xCB, 0x81, 0x1F, 0x20, 0xF5, 0x0D, + 0xA5, 0x41, 0xDB, 0xC6, 0x39, 0xED, 0xA1, 0xFE, 0x26, 0x4C, 0x9D, 0x79, 0xBE, 0x7B, 0xCF, 0x65, + 0xB5, 0x55, 0x0D, 0x3A, 0x73, 0x51, 0xFF, 0x0B, 0x32, 0x1E, 0x63, 0x1A, 0x45, 0x18, 0x3D, 0xEA, + 0xC0, 0x7D, 0x08, 0xB0, 0x56, 0x1B, 0x51, 0x61, 0xD7, 0x38, 0x02, 0x3C, 0xC4, 0xC6, 0xF5, 0x93, + 0x93, 0xF1, 0x37, 0x2F, 0xC7, 0xC5, 0x3B, 0x63, 0x0E, 0x66, 0xD2, 0xA2, 0xBC, 0x21, 0xB0, 0x05, + 0x55, 0xB4, 0x68, 0x12, 0x6D, 0x33, 0x19, 0x49, 0x26, 0xDB, 0x3D, 0x33, 0x70, 0x7A, 0x15, 0xD4, + 0xA9, 0x32, 0x45, 0xAF, 0x82, 0x3E, 0xAF, 0x55, 0x2A, 0x6E, 0xA2, 0xD0, 0xA5, 0x12, 0x20, 0xD0, + 0x52, 0x9C, 0x0A, 0xE2, 0x34, 0xA8, 0x91, 0x71, 0x0E, 0xE9, 0x33, 0xE0, 0xFE, 0xBA, 0xCB, 0x35, + 0x8C, 0xC8, 0x9C, 0x46, 0x8A, 0xF4, 0x1D, 0x92, 0xA2, 0x74, 0xAD, 0xB3, 0xE8, 0xAC, 0x50, 0xC1, + 0x38, 0x9A, 0xA4, 0x4F, 0x49, 0x87, 0x2F, 0x9C, 0xD4, 0x96, 0x48, 0x6B, 0x09, 0x24, 0xCC, 0x41, + 0x6D, 0xF1, 0x96, 0x4B, 0xA5, 0x37, 0x1C, 0x14, 0x76, 0x5E, 0xEA, 0xBC, 0x6A, 0x88, 0x8C, 0x7E, + 0x60, 0xC5, 0x53, 0x9C, 0x27, 0x07, 0x8C, 0x50, 0x7B, 0xCC, 0xF6, 0x43, 0x52, 0x1D, 0xA9, 0xA1, + 0xA8, 0xB3, 0x9C, 0x4A, 0x94, 0xC9, 0x84, 0x5C, 0xF8, 0x2F, 0xB2, 0xB4, 0x1B, 0x68, 0x3E, 0xFB, + 0x62, 0xA2, 0x73, 0x79, 0xF1, 0x2B, 0x8C, 0x54, 0xF1, 0xBB, 0x8F, 0xD9, 0x71, 0x2C, 0x0B, 0xAB, + 0x7E, 0x79, 0x5E, 0x7A, 0x70, 0x44, 0xBB, 0x68, 0x65, 0x03, 0x70, 0x2D, 0xC8, 0x7C, 0x17, 0x33, + 0xE1, 0x45, 0xBA, 0x47, 0xFB, 0x5D, 0x07, 0x3F, 0xD2, 0x8D, 0x08, 0x3C, 0x58, 0xB7, 0x37, 0xDE, + 0xB9, 0xE5, 0xA0, 0x73, 0x1C, 0xD9, 0x42, 0x7C, 0x97, 0x2A, 0xDF, 0x21, 0xB3, 0xA5, 0x0B, 0x78, + 0x9C, 0xA7, 0xA7, 0x38, 0xB0, 0x63, 0xF3, 0xCA, 0x1F, 0x3A, 0x3F, 0x7A, 0x2D, 0x41, 0xC4, 0x8B, + 0x4A, 0x96, 0xDE, 0xBC, 0x6D, 0x27, 0x53, 0xA3, 0xC3, 0xA3, 0x95, 0xE4, 0x3B, 0x8F, 0xE8, 0x20, + 0x91, 0x59, 0x64, 0x75, 0x0C, 0x59, 0xFC, 0xFD, 0x5C, 0x34, 0xC8, 0x16, 0x11, 0xB2, 0x89, 0xC1, + 0xB4, 0xB6, 0xC6, 0x6E, 0x39, 0xD5, 0x64, 0xC4, 0x62, 0xF6, 0x8E, 0x47, 0xC5, 0x0E, 0xA5, 0x01, + 0x8F, 0x5C, 0xE5, 0x6B, 0xD5, 0xEA, 0xD1, 0x3E, 0xFC, 0x38, 0x0E, 0x05, 0x04, 0xCD, 0x30, 0x64, + 0xC1, 0x2F, 0xEC, 0x03, 0x90, 0xF9, 0x05, 0xD4, 0x2B, 0x4A, 0xEC, 0xD1, 0x46, 0x14, 0x2B, 0x1A, + 0x4F, 0x07, 0xD3, 0xBE, 0xBB, 0x80, 0x54, 0x85, 0x24, 0x52, 0xE8, 0x26, 0x13, 0x57, 0x51, 0x63, + 0xB1, 0x60, 0x30, 0xB6, 0x93, 0xA5, 0x3A, 0xD1, 0x12, 0x18, 0x67, 0x1C, 0x61, 0x91, 0x56, 0x03, + 0x3D, 0x11, 0x64, 0xD1, 0xAC, 0xF8, 0x1B, 0x37, 0x65, 0xA0, 0x4D, 0xCC, 0x54, 0xEB, 0xF2, 0x64, + 0x52, 0x7D, 0xE8, 0x6B, 0xA8, 0xD9, 0x4F, 0xAA, 0x3E, 0x68, 0x66, 0xF1, 0x73, 0xA9, 0xFC, 0x37, + 0x2B, 0x0F, 0xCE, 0x2C, 0x4A, 0x3C, 0x47, 0x1A, 0x9D, 0x82, 0x7E, 0x99, 0xAF, 0x95, 0x26, 0xDB, + 0x6E, 0x70, 0xBC, 0x6E, 0x37, 0x88, 0xE0, 0xB9, 0x9D, 0x1B, 0x27, 0xC6, 0x72, 0x04, 0xEE, 0x4E, + 0x76, 0x59, 0x6A, 0x8C, 0x03, 0x85, 0xDA, 0xAE, 0x23, 0x1C, 0x20, 0xD3, 0xFC, 0xC6, 0xF7, 0xC9, + 0x6E, 0x67, 0xAC, 0x60, 0x41, 0x46, 0xF8, 0x4E, 0xBB, 0x5D, 0xD8, 0x04, 0x7F, 0x7D, 0x51, 0xD4, + 0x02, 0x9F, 0x29, 0x94, 0x6D, 0xD5, 0x16, 0xF8, 0xF3, 0x30, 0xA6, 0x01, 0xC3, 0xC1, 0x90, 0x1B, + 0x9D, 0x63, 0xCF, 0xA6, 0x1E, 0x0D, 0x1A, 0x93, 0x35, 0x8B, 0xA9, 0x24, 0x2D, 0x6C, 0x32, 0xA9, + 0x20, 0x3B, 0x00, 0xC3, 0xDD, 0x68, 0x64, 0xD9, 0xB5, 0xF3, 0x50, 0xBE, 0xB0, 0xB9, 0xDB, 0x7F, + 0x62, 0x3B, 0x00, 0xA4, 0x5D, 0x0A, 0x59, 0x13, 0xBE, 0x6B, 0x47, 0xDE, 0x71, 0x7A, 0xBD, 0x88, + 0x02, 0x8D, 0xB1, 0x68, 0x9A, 0x07, 0x52, 0xA2, 0xE6, 0x5A, 0x4F, 0x64, 0xB1, 0xFD, 0x74, 0xD5, + 0x89, 0xD5, 0x07, 0xA6, 0x48, 0x34, 0x78, 0xED, 0xD5, 0xC2, 0x1F, 0x06, 0x0B, 0x68, 0xBA, 0x70, + 0xDC, 0x27, 0x05, 0xC3, 0x48, 0x94, 0x83, 0x7C, 0x1E, 0x00, 0xD7, 0x5B, 0x85, 0xC9, 0x3F, 0x39, + 0x97, 0x2C, 0x02, 0xE0, 0x62, 0x91, 0x37, 0xB9, 0x6A, 0x79, 0x3C, 0x72, 0x17, 0xAF, 0x8E, 0xF0, + 0x10, 0xC4, 0x8A, 0xAD, 0x18, 0x00, 0x44, 0x89, 0x3F, 0x48, 0x37, 0x71, 0xF1, 0xC2, 0x88, 0x0E, + 0xD9, 0x30, 0x00, 0x13, 0xAB, 0xC8, 0x98, 0x94, 0xDB, 0xCE, 0x01, 0xD5, 0xC5, 0xD1, 0x7F, 0x84, + 0x2D, 0x2A, 0x70, 0x12, 0x3F, 0x29, 0x4B, 0x90, 0x8D, 0x97, 0x29, 0x78, 0x3B, 0x3C, 0xD4, 0x4C, + 0xF2, 0xC1, 0x21, 0x4B, 0xD2, 0xD4, 0x38, 0x88, 0xF1, 0x18, 0x4B, 0x8C, 0x79, 0xD8, 0xD8, 0x04, + 0x30, 0x69, 0xFE, 0xF3, 0xB3, 0xB5, 0xE9, 0x5E, 0x12, 0x9F, 0x8A, 0xC4, 0x32, 0x84, 0xCA, 0x33, + 0xED, 0xC2, 0x9D, 0x93, 0x40, 0xD2, 0x58, 0x1C, 0xC3, 0xAD, 0xDC, 0x28, 0x27, 0xA0, 0x9E, 0xB9, + 0x1D, 0x8F, 0x29, 0x2B, 0x4D, 0xF1, 0x0E, 0x6E, 0xDC, 0xE3, 0x23, 0x3F, 0xE3, 0xCA, 0xFD, 0x4D, + 0x3A, 0xD3, 0xA0, 0x7A, 0x19, 0xAA, 0x98, 0x38, 0xEF, 0xFA, 0xFD, 0x5F, 0xC8, 0x37, 0xA9, 0x85, + 0x7F, 0x32, 0xFC, 0x7B, 0xBE, 0x33, 0xEB, 0x02, 0xB4, 0xD7, 0x3C, 0x0E, 0x7E, 0x08, 0xF6, 0x96, + 0x34, 0x3B, 0xC1, 0x1C, 0xE5, 0x1F, 0xF2, 0x2A, 0x97, 0x9D, 0x3B, 0x3E, 0xD2, 0xE5, 0x2A, 0xD8, + 0x57, 0x6C, 0x1A, 0xAB, 0xE7, 0x5D, 0x4D, 0x46, 0x42, 0x29, 0x93, 0xA2, 0xEB, 0x74, 0x25, 0x54, + 0xD9, 0xE6, 0x80, 0x57, 0x19, 0x41, 0xD4, 0x21, 0x39, 0xFE, 0xC9, 0x26, 0x20, 0xEF, 0xDB, 0x40, + 0xF7, 0x14, 0x7F, 0x58, 0x86, 0x3F, 0x24, 0xDF, 0xD1, 0x9F, 0x80, 0x01, 0x78, 0x54, 0xA7, 0x4B, + 0xFA, 0xFA, 0x11, 0x3E, 0xA0, 0xCC, 0x9A, 0x3F, 0x96, 0x61, 0x7B, 0x4B, 0x0F, 0x5D, 0x00, 0x9C, + 0x5C, 0x9B, 0x10, 0x6A, 0x7D, 0xA1, 0x07, 0x84, 0x6B, 0x6A, 0x22, 0x41, 0xC4, 0xC0, 0x82, 0xC3, + 0x11, 0x2E, 0x12, 0xDD, 0xE7, 0x0A, 0x48, 0x48, 0x34, 0x7E, 0x33, 0xC7, 0x23, 0x2F, 0x83, 0xCF, + 0x63, 0x02, 0xE4, 0x89, 0xE8, 0x85, 0x10, 0x0E, 0x9B, 0x14, 0xBF, 0x90, 0x00, 0xC0, 0x52, 0xEA, + 0x19, 0x2D, 0x50, 0x02, 0x54, 0xB3, 0x6D, 0x7D, 0x3E, 0x6F, 0x83, 0xE0, 0x17, 0x80, 0xDB, 0x47, + 0x3B, 0x2C, 0x3E, 0x5B, 0x32, 0xD3, 0x8C, 0x8E, 0x9E, 0xED, 0x08, 0x36, 0x06, 0xFA, 0x28, 0x98, + 0x26, 0x1E, 0xBC, 0x2B, 0xE6, 0xB0, 0x51, 0xB3, 0x60, 0x08, 0x2D, 0xE2, 0xB3, 0xA8, 0x56, 0xE0, + 0x3A, 0x2A, 0x01, 0x23, 0x54, 0x99, 0xD0, 0x18, 0xBA, 0x5A, 0x3F, 0xCA, 0x94, 0x43, 0x4D, 0x19, + 0x00, 0xBE, 0xC7, 0x5A, 0x37, 0x9D, 0x3D, 0xF6, 0x09, 0xF4, 0xA3, 0x07, 0xE0, 0xC4, 0x28, 0x43, + 0x76, 0xFC, 0x2E, 0xF6, 0xF4, 0x45, 0xF3, 0x7E, 0x6C, 0xB1, 0x2F, 0x49, 0xBA, 0xCB, 0x1E, 0x81, + 0xE2, 0xAA, 0x1D, 0x4F, 0x9C, 0x17, 0x00, 0x72, 0xD9, 0x09, 0xF4, 0x02, 0x74, 0xBB, 0x6A, 0xC7, + 0xB2, 0xB5, 0x1F, 0x4D, 0xD8, 0x01, 0x2F, 0x13, 0x1B, 0xB6, 0x2E, 0xBF, 0x10, 0xC0, 0x36, 0x44, + 0x29, 0x72, 0x43, 0x52, 0xA7, 0xEB, 0x34, 0xB4, 0x23, 0x0B, 0x5D, 0x12, 0xC9, 0x5E, 0x72, 0xC6, + 0xBD, 0xA3, 0x05, 0xE7, 0xDA, 0x8B, 0x20, 0x46, 0x66, 0xBB, 0xDD, 0xB8, 0xCD, 0x7A, 0xEC, 0x75, + 0x0B, 0xA7, 0x0A, 0xE0, 0x49, 0x29, 0x64, 0x01, 0x6F, 0x6C, 0x03, 0x25, 0xE0, 0x42, 0x5E, 0x91, + 0x3F, 0x37, 0xF2, 0x67, 0x03, 0x5B, 0x02, 0xFB, 0xA1, 0xD1, 0x0B, 0x41, 0x7F, 0x75, 0x1A, 0xA7, + 0x90, 0x80, 0x7A, 0x6B, 0x1B, 0xC8, 0x20, 0x58, 0xD0, 0x2B, 0x29, 0xE4, 0x26, 0x85, 0xEC, 0xA0, + 0x4B, 0x90, 0x83, 0x6A, 0xF8, 0x42, 0x48, 0x42, 0x0A, 0xA5, 0x29, 0x14, 0x11, 0x91, 0x5C, 0xB7, + 0x81, 0x2A, 0x3C, 0x39, 0xDD, 0x21, 0x4C, 0xF7, 0x95, 0x32, 0xF2, 0x53, 0x86, 0x42, 0x89, 0xDC, + 0x84, 0x21, 0xDB, 0x6D, 0xE0, 0xCD, 0xE6, 0x7C, 0x95, 0xE5, 0x39, 0x55, 0xA2, 0x82, 0xA5, 0x7F, + 0x16, 0x62, 0x14, 0x4B, 0xD7, 0x3D, 0x9D, 0x8E, 0x42, 0x7C, 0xFD, 0x7C, 0x77, 0xD7, 0x66, 0xE9, + 0x69, 0xBA, 0xF3, 0xA7, 0xE8, 0x9E, 0x1C, 0x21, 0x54, 0x35, 0x91, 0x74, 0x4E, 0xAA, 0x9B, 0xEB, + 0x9B, 0x92, 0xBF, 0x36, 0xD6, 0x51, 0x69, 0x31, 0x4E, 0xDE, 0x71, 0xF4, 0x0F, 0xF7, 0x32, 0x93, + 0xAB, 0x69, 0xB2, 0xD5, 0xF2, 0xEA, 0x61, 0x2D, 0x15, 0x81, 0x6F, 0xF2, 0xE1, 0xEF, 0xCD, 0xB2, + 0xD1, 0xF7, 0x66, 0x1A, 0xF6, 0xD6, 0xEA, 0x07, 0xAF, 0xE8, 0x9B, 0x86, 0xBE, 0x37, 0x45, 0xB0, + 0xF7, 0x66, 0xD9, 0xC8, 0xFB, 0x5C, 0xC6, 0xBC, 0xE8, 0xFB, 0xF0, 0x3B, 0x7D, 0xA4, 0x6A, 0x72, + 0x85, 0x76, 0xA9, 0xD5, 0x96, 0x7B, 0x9B, 0x9C, 0x40, 0xBE, 0x4A, 0x57, 0x11, 0xFB, 0xE8, 0x06, + 0x95, 0x7F, 0x0B, 0xE9, 0x77, 0x6B, 0x4B, 0xC0, 0xE5, 0x2C, 0x25, 0xB5, 0x6A, 0xB3, 0x26, 0xA0, + 0xCD, 0x6B, 0x51, 0xA9, 0xED, 0x95, 0xC0, 0x33, 0x73, 0xF1, 0x60, 0x9F, 0x73, 0x0B, 0xE1, 0xAA, + 0xE1, 0xF2, 0xA5, 0xF0, 0xE5, 0xE2, 0xFB, 0xC0, 0xF1, 0xC4, 0xA5, 0xE3, 0x02, 0x6A, 0xA9, 0xA2, + 0x98, 0x45, 0x10, 0xFE, 0xB3, 0x83, 0xDE, 0x33, 0x8E, 0x9B, 0x1E, 0x1D, 0x1A, 0xB2, 0xFE, 0x75, + 0xA9, 0xB7, 0x98, 0xDA, 0x1D, 0x9D, 0x1A, 0xD1, 0xF9, 0x4D, 0xA5, 0x10, 0x96, 0x7E, 0xB9, 0x9C, + 0x21, 0x28, 0xD8, 0xC3, 0xC0, 0xD4, 0x07, 0xF4, 0x91, 0x2A, 0x0A, 0xCA, 0x82, 0x81, 0x94, 0xA7, + 0x30, 0x70, 0x00, 0x40, 0x6E, 0x4B, 0x1E, 0x00, 0x95, 0x57, 0x8A, 0xCB, 0xAE, 0xF3, 0x4E, 0xE2, + 0x99, 0x3A, 0xAB, 0x05, 0xF7, 0x72, 0x50, 0x5F, 0xB2, 0x9B, 0xB5, 0x2A, 0xC1, 0x8B, 0xF1, 0x84, + 0x40, 0x09, 0x7C, 0xDD, 0x4E, 0x10, 0xB6, 0x18, 0x2D, 0xC9, 0xFF, 0x01, 0x56, 0x57, 0xC8, 0xF5, + 0x61, 0xDC, 0xEE, 0x99, 0x5E, 0x0F, 0x63, 0xF0, 0x26, 0x1C, 0x1E, 0x70, 0xCD, 0x9B, 0xE4, 0xEB, + 0x30, 0x5E, 0xF1, 0x52, 0xDC, 0x1C, 0xF2, 0x2A, 0xAC, 0x36, 0x6A, 0x2A, 0x96, 0x75, 0xF1, 0x38, + 0x02, 0xD8, 0xDA, 0x69, 0x0A, 0x2B, 0xBE, 0xCA, 0x82, 0x77, 0x4F, 0x57, 0x1C, 0x5E, 0x24, 0xE3, + 0x85, 0xA5, 0x0B, 0x96, 0x0A, 0x79, 0x1B, 0x6A, 0x8F, 0xE6, 0xD0, 0x1F, 0x86, 0xC1, 0x17, 0xC0, + 0xB8, 0xC5, 0x03, 0x07, 0x91, 0xD8, 0x93, 0x3E, 0x7D, 0x20, 0x1E, 0x87, 0xE9, 0x27, 0x2A, 0xEC, + 0xA2, 0xD2, 0xAF, 0xA8, 0x82, 0x48, 0x52, 0x07, 0x26, 0xDE, 0x84, 0xE7, 0xC2, 0x31, 0xFA, 0x9A, + 0x7A, 0x63, 0x7F, 0x54, 0xEC, 0x0A, 0x03, 0x88, 0xFF, 0xCF, 0x31, 0xFB, 0xC8, 0x8E, 0x0F, 0xBD, + 0x57, 0x35, 0x79, 0x16, 0xC3, 0x4F, 0xE2, 0x4F, 0x26, 0x35, 0x39, 0xD1, 0x68, 0xCB, 0x6C, 0x3C, + 0x38, 0x7B, 0x97, 0xEB, 0x26, 0xA6, 0x17, 0x4D, 0xA3, 0x97, 0xE0, 0xBD, 0x0D, 0xA0, 0x95, 0x51, + 0x30, 0x97, 0x40, 0x10, 0x52, 0xC9, 0x7E, 0x74, 0xCB, 0xD1, 0x7F, 0xCC, 0x23, 0x8E, 0x32, 0x48, + 0x86, 0x21, 0x79, 0x8C, 0x7B, 0x21, 0xFA, 0xC0, 0xEF, 0x3E, 0xB2, 0xFF, 0xAC, 0xF9, 0xAF, 0x24, + 0x32, 0x97, 0x44, 0x42, 0x7C, 0xC9, 0x4C, 0x1F, 0x41, 0x8B, 0xED, 0x23, 0x8E, 0x5B, 0xC7, 0x11, + 0x2D, 0x6E, 0xA5, 0xDE, 0x0B, 0xE3, 0x7B, 0x8C, 0x5E, 0xDC, 0x00, 0xEA, 0x10, 0x0E, 0x85, 0x0C, + 0x60, 0x91, 0xF1, 0xB2, 0x70, 0xCD, 0x11, 0x56, 0x51, 0xD0, 0x9E, 0x02, 0x07, 0x60, 0x37, 0x8C, + 0x00, 0x24, 0x6A, 0xC1, 0x84, 0xE5, 0xBE, 0x17, 0x51, 0xCC, 0x5F, 0xAF, 0x01, 0xE6, 0x61, 0xFF, + 0x18, 0x21, 0xB2, 0x62, 0x7F, 0xD8, 0x62, 0x4B, 0xB1, 0x1F, 0xE4, 0x55, 0x99, 0x7E, 0x3A, 0x13, + 0x09, 0x84, 0x6F, 0x6F, 0x90, 0x44, 0xC5, 0x11, 0xC8, 0x80, 0xF7, 0x16, 0x08, 0xD3, 0xF7, 0x3C, + 0x2B, 0x1D, 0xD4, 0xAA, 0xD5, 0x57, 0x52, 0x48, 0x25, 0x85, 0x31, 0x76, 0xE4, 0xA2, 0x87, 0xB0, + 0xD9, 0x16, 0x12, 0x45, 0x80, 0x37, 0x57, 0x46, 0x1A, 0x45, 0x84, 0x18, 0x76, 0xD5, 0x5A, 0x0B, + 0x39, 0xE8, 0x98, 0xE3, 0x90, 0x42, 0xC8, 0xCC, 0x9E, 0xA9, 0x88, 0x22, 0x81, 0xF6, 0x11, 0x84, + 0xFF, 0xD4, 0xEE, 0x8C, 0x73, 0x0E, 0xA1, 0xC9, 0x6C, 0xA0, 0xB9, 0x9A, 0x0E, 0x1A, 0xC4, 0x1F, + 0x57, 0x1E, 0x4A, 0xB1, 0x10, 0x25, 0xB0, 0x21, 0x33, 0x05, 0x8C, 0xDB, 0xAC, 0xF0, 0x56, 0xAD, + 0x98, 0xA9, 0x07, 0x73, 0xFB, 0xB0, 0x2F, 0x9A, 0x0D, 0x5A, 0xA7, 0xBB, 0x58, 0x63, 0x8F, 0x63, + 0xEB, 0x61, 0x56, 0x69, 0x1C, 0xE5, 0xDA, 0xF4, 0xC8, 0xA3, 0x5F, 0xBA, 0x89, 0x5B, 0x5C, 0x0D, + 0x5A, 0x2A, 0x56, 0x95, 0x63, 0x8E, 0xBD, 0x27, 0x69, 0x1A, 0x9A, 0x61, 0x06, 0xBA, 0x8C, 0xCE, + 0x61, 0xAA, 0x21, 0x68, 0xEA, 0x18, 0x33, 0x8C, 0x43, 0xB1, 0xDE, 0xB2, 0x9B, 0x82, 0x62, 0xE0, + 0x57, 0x56, 0xA0, 0x08, 0x70, 0x36, 0xCA, 0x1A, 0x14, 0x5D, 0xE2, 0xC2, 0xEC, 0x41, 0x59, 0x53, + 0x58, 0x77, 0x5A, 0xAC, 0x63, 0xFE, 0xCE, 0xC3, 0xAA, 0x98, 0x9E, 0x81, 0x1F, 0x67, 0x67, 0xA4, + 0xAA, 0xB2, 0x2F, 0x67, 0x48, 0x61, 0x6C, 0x9F, 0x5D, 0xBA, 0x3C, 0xDA, 0x0E, 0x3F, 0x76, 0x46, + 0xC0, 0x76, 0xE7, 0xF3, 0xDA, 0xB4, 0x8E, 0xF3, 0x5F, 0x24, 0x52, 0x6E, 0xFD, 0xE4, 0x0E, 0xDF, + 0xE1, 0xC3, 0x79, 0x87, 0x93, 0x70, 0x15, 0x8C, 0xDE, 0x5A, 0xBC, 0x27, 0xDE, 0xA6, 0xF0, 0x20, + 0x31, 0x68, 0x60, 0xA6, 0xAE, 0x0F, 0xFB, 0xF0, 0x47, 0xEA, 0x9B, 0x08, 0xC1, 0x2C, 0x6F, 0x1A, + 0x8D, 0x18, 0xD3, 0x1C, 0xDF, 0x6D, 0x07, 0x6B, 0xE9, 0x50, 0xFA, 0x81, 0xA6, 0x65, 0x95, 0x66, + 0xDE, 0x8B, 0xE7, 0x2C, 0x26, 0x16, 0x01, 0x10, 0x91, 0x33, 0x5E, 0x75, 0xC3, 0x54, 0xE7, 0xC5, + 0x01, 0xED, 0x0B, 0x77, 0x71, 0x60, 0x34, 0x28, 0xA5, 0xD9, 0xC5, 0x23, 0x45, 0x56, 0xFF, 0x1A, + 0xDC, 0xFB, 0xFE, 0x5A, 0xAD, 0x88, 0x47, 0x31, 0x7F, 0x1E, 0x41, 0xFB, 0x23, 0xC2, 0x93, 0x2C, + 0x6F, 0xCE, 0x00, 0xAE, 0xCC, 0x73, 0x81, 0x90, 0xB8, 0x6A, 0x49, 0x50, 0xCF, 0x9E, 0x52, 0x36, + 0xF0, 0xCE, 0xD8, 0x1B, 0x16, 0x65, 0x38, 0x59, 0x2A, 0x99, 0xAD, 0x6D, 0x1F, 0xEA, 0xF5, 0x5A, + 0xF5, 0xA0, 0xF6, 0x6B, 0xB5, 0x5E, 0xAD, 0x55, 0x8F, 0x65, 0xB2, 0xB9, 0x2C, 0x00, 0x86, 0x66, + 0xEC, 0x2F, 0xCB, 0xDC, 0x8C, 0x89, 0x79, 0xFD, 0xE1, 0xF6, 0xA3, 0x5E, 0x7D, 0x9F, 0x7D, 0x3F, + 0x0E, 0xAB, 0x27, 0xAB, 0xDA, 0x0F, 0x35, 0xAF, 0xAD, 0xD8, 0x0F, 0xF8, 0x06, 0x0F, 0x83, 0xC6, + 0x9C, 0xD3, 0x23, 0xD3, 0x46, 0xCA, 0xB3, 0x34, 0xC3, 0x56, 0xCE, 0xBF, 0x96, 0x2B, 0x8D, 0x25, + 0xB8, 0x08, 0x00, 0x5A, 0x58, 0xB0, 0x93, 0xD8, 0xB1, 0xFC, 0x2B, 0x5B, 0x4E, 0xC1, 0x8C, 0x7B, + 0xBD, 0xC8, 0xB7, 0x8A, 0xAC, 0x0D, 0xC4, 0x28, 0xAC, 0x74, 0x40, 0xAB, 0x53, 0x7F, 0x2F, 0x62, + 0x7D, 0x19, 0xB6, 0x7C, 0xB6, 0x8F, 0x5C, 0xBA, 0xB3, 0x5B, 0xF6, 0x7A, 0x1E, 0x33, 0x6B, 0x79, + 0xE0, 0xDF, 0xB5, 0xF1, 0x79, 0x5E, 0x8B, 0x16, 0xEF, 0x90, 0x75, 0x2D, 0x50, 0xF8, 0x4B, 0x29, + 0xDA, 0x21, 0xCB, 0x44, 0xBC, 0xC9, 0xAD, 0xC8, 0x4D, 0x2F, 0x15, 0x33, 0x9A, 0x52, 0x1C, 0xA6, + 0x1A, 0xA9, 0x0D, 0x93, 0x5A, 0xF7, 0x65, 0x7E, 0xE9, 0x15, 0x25, 0x0E, 0xCA, 0xC5, 0x61, 0xFD, + 0x07, 0xDF, 0x9B, 0x55, 0xB9, 0xAA, 0x60, 0x36, 0x01, 0xDB, 0x48, 0xE8, 0x53, 0xF1, 0xB7, 0x07, + 0xEE, 0x6C, 0xF9, 0x7B, 0xBA, 0xBD, 0x62, 0x5A, 0xD5, 0xA1, 0x84, 0xEE, 0x8B, 0xD9, 0x92, 0x3C, + 0x50, 0x08, 0xE0, 0xEF, 0x1A, 0x99, 0x2B, 0x6A, 0xF5, 0xE0, 0x51, 0x75, 0x5E, 0xC2, 0xBE, 0x39, + 0xE9, 0x4A, 0xB5, 0x7B, 0x7E, 0x26, 0xEC, 0x09, 0x2D, 0x4D, 0xE6, 0x8A, 0x8B, 0x93, 0x12, 0xBE, + 0x2B, 0xEF, 0x8B, 0x29, 0xF5, 0x28, 0x7C, 0x9A, 0x89, 0x2B, 0x89, 0xEB, 0xEF, 0x09, 0xE3, 0x02, + 0x76, 0x85, 0x86, 0x84, 0x5A, 0x68, 0x48, 0x98, 0x4F, 0x88, 0x81, 0x74, 0x2F, 0x67, 0x5B, 0x44, + 0xEB, 0x8E, 0xF7, 0x10, 0xE4, 0x59, 0xC9, 0x93, 0x7D, 0x65, 0x96, 0x0B, 0x46, 0x86, 0x6D, 0x93, + 0x5B, 0x95, 0x7B, 0x73, 0xB0, 0x8C, 0xF9, 0xB4, 0xCD, 0x71, 0x7C, 0x81, 0xD3, 0x9D, 0xBA, 0x49, + 0xD8, 0x66, 0xBC, 0x49, 0x17, 0x58, 0x08, 0x1D, 0x94, 0xDE, 0x99, 0x1B, 0x45, 0x19, 0x4F, 0x26, + 0xF7, 0xC7, 0xE5, 0x43, 0xE7, 0x5E, 0xD9, 0x7D, 0xC2, 0x51, 0x0A, 0x6C, 0x98, 0x5A, 0xC1, 0xB4, + 0x0D, 0xCB, 0x90, 0xEA, 0x66, 0xD4, 0xF8, 0x57, 0xBB, 0xEB, 0x8D, 0xFE, 0x9C, 0x75, 0x3B, 0x12, + 0x8F, 0x92, 0x1F, 0x3D, 0xDD, 0x35, 0x47, 0x82, 0x79, 0xAE, 0x0E, 0x78, 0xE0, 0xEA, 0xFB, 0x98, + 0xB6, 0xA9, 0xF2, 0x37, 0x9A, 0x81, 0xFC, 0x4A, 0xBE, 0x1B, 0x69, 0xF6, 0x21, 0xFA, 0x9C, 0x44, + 0x08, 0xC7, 0xA6, 0x8A, 0xB1, 0x0E, 0xA6, 0x04, 0xF7, 0xD8, 0x47, 0x66, 0x38, 0xBA, 0x8F, 0xF6, + 0xBD, 0xCA, 0x6F, 0x3E, 0x77, 0x9F, 0xA4, 0xA2, 0xE4, 0xB8, 0xA0, 0x2A, 0xED, 0xBC, 0xAD, 0x08, + 0xF1, 0x76, 0x37, 0x6C, 0x19, 0xB4, 0xA9, 0x80, 0xF8, 0x71, 0xA1, 0xE9, 0x83, 0x1D, 0xC1, 0x3E, + 0x36, 0xD8, 0xBF, 0xC7, 0xE6, 0x8F, 0xC9, 0x71, 0xBB, 0x8E, 0x23, 0x3C, 0xE1, 0x6A, 0xA3, 0xCA, + 0x9D, 0x6C, 0xB1, 0x23, 0xC6, 0x9D, 0xFC, 0xC7, 0xAE, 0x9A, 0x61, 0x30, 0x2F, 0xD8, 0x04, 0xD0, + 0xC0, 0x81, 0xF7, 0x7C, 0xD8, 0x1F, 0x88, 0xA1, 0xD5, 0xF8, 0xFF, 0xDF, 0x00, 0x80, 0xFB, 0x2A, + 0xCC, 0x00 }; ///index_html //Content of bootstrap.bundle.min.jss with gzip compression diff --git a/Firmware/RTK_Surveyor/menuBase.ino b/Firmware/RTK_Surveyor/menuBase.ino index 202f912fe..e1710cbce 100644 --- a/Firmware/RTK_Surveyor/menuBase.ino +++ b/Firmware/RTK_Surveyor/menuBase.ino @@ -1,3 +1,18 @@ +/*------------------------------------------------------------------------------ +menuBase.ino +------------------------------------------------------------------------------*/ + +//---------------------------------------- +// Constants +//---------------------------------------- + +static const float maxObservationPositionAccuracy = 10.0; +static const float maxSurveyInStartingAccuracy = 10.0; + +//---------------------------------------- +// Menus +//---------------------------------------- + // Configure the survey in settings (time and 3D dev max) // Set the ECEF coordinates for a known location void menuBase() @@ -249,13 +264,9 @@ void menuBase() } else if (settings.fixedBase == false && incoming == 3) { - systemPrint("Enter the number of meters for survey-in required position accuracy (1.0 to 5.0m): "); + systemPrintf("Enter the number of meters for survey-in required position accuracy (1.0 to %.1fm): ", maxObservationPositionAccuracy); float observationPositionAccuracy = getDouble(); - float maxObservationPositionAccuracy = 5.0; - if (ENABLE_DEVELOPER) - maxObservationPositionAccuracy = 10.0; - if (observationPositionAccuracy < 1.0 || observationPositionAccuracy > maxObservationPositionAccuracy) // Arbitrary 1m minimum systemPrintln("Error: Observation positional accuracy requirement out of range"); @@ -265,9 +276,10 @@ void menuBase() } else if (settings.fixedBase == false && incoming == 4) { - systemPrint("Enter the positional accuracy required before Survey-In begins (0.1 to 5.0m): "); + systemPrintf("Enter the positional accuracy required before Survey-In begins (0.1 to %.1fm): ", maxSurveyInStartingAccuracy); float surveyInStartingAccuracy = getDouble(); - if (surveyInStartingAccuracy < 0.1 || surveyInStartingAccuracy > 5.0) // Arbitrary 0.1m minimum + if (surveyInStartingAccuracy < 0.1 || + surveyInStartingAccuracy > maxSurveyInStartingAccuracy) // Arbitrary 0.1m minimum systemPrintln("Error: Starting accuracy out of range"); else settings.surveyInStartingAccuracy = @@ -577,6 +589,10 @@ void menuSensorFusion() clearBuffer(); // Empty buffer of any newline chars } +//---------------------------------------- +// Support functions +//---------------------------------------- + // Enable or disable sensor fusion using keys void setSensorFusion(bool enable) { diff --git a/Firmware/RTK_Surveyor/menuFirmware.ino b/Firmware/RTK_Surveyor/menuFirmware.ino index f3d8f75c5..ecdd16f8f 100644 --- a/Firmware/RTK_Surveyor/menuFirmware.ino +++ b/Firmware/RTK_Surveyor/menuFirmware.ino @@ -1,3 +1,13 @@ +/*------------------------------------------------------------------------------ +menuFirmware.ino + + This module implements the firmware menu and update code. +------------------------------------------------------------------------------*/ + +//---------------------------------------- +// Menu +//---------------------------------------- + // Update firmware if bin files found void menuFirmware() { @@ -16,6 +26,10 @@ void menuFirmware() getFirmwareVersion(currentVersion, sizeof(currentVersion), enableRCFirmware); systemPrintf("Current firmware: %s\r\n", currentVersion); + // Automatic firmware updates + systemPrintf("a) Automatic firmware updates: %s\r\n", + settings.enableAutoFirmwareUpdate ? "Enabled" : "Disabled"); + if (strlen(reportedVersion) > 0) { if (newOTAFirmwareAvailable == false) @@ -26,6 +40,10 @@ void menuFirmware() systemPrintf("e) Allow Beta Firmware: %s\r\n", enableRCFirmware ? "Enabled" : "Disabled"); + if (settings.enableAutoFirmwareUpdate) + systemPrintf("i) Automatic firmware check minutes: %d\r\n", + settings.autoFirmwareCheckMinutes); + if (newOTAFirmwareAvailable) systemPrintf("u) Update to new firmware: v%s\r\n", reportedVersion); @@ -42,6 +60,10 @@ void menuFirmware() incoming--; updateFromSD(binFileNames[incoming]); } + + else if (incoming == 'a') + settings.enableAutoFirmwareUpdate ^= 1; + else if (incoming == 'c' && btPrintEcho == false) { if (wifiNetworkCount() == 0) @@ -67,12 +89,12 @@ void menuFirmware() //Allow update if locally compiled developer version if (isReportedVersionNewer(reportedVersion, ¤tVersion[1]) == true || FIRMWARE_VERSION_MAJOR == 99) { - log_d("New version detected"); + systemPrintln("New version detected"); newOTAFirmwareAvailable = true; } else { - log_d("No new firmware available"); + systemPrintln("No new firmware available"); } } else @@ -102,12 +124,12 @@ void menuFirmware() getFirmwareVersion(currentVersion, sizeof(currentVersion), enableRCFirmware); if (isReportedVersionNewer(reportedVersion, ¤tVersion[1]) == true) { - log_d("New version detected"); + systemPrintln("New version detected"); newOTAFirmwareAvailable = true; } else { - log_d("No new firmware available"); + systemPrintln("No new firmware available"); } } else @@ -120,7 +142,7 @@ void menuFirmware() systemPrintln("Firmware update failed to connect to WiFi."); if (previouslyConnected == false) - wifiStop(); + WIFI_STOP(); if(bluetoothOriginallyConnected == true) bluetoothStart(); // Restart BT according to settings @@ -132,7 +154,28 @@ void menuFirmware() systemPrintln("Firmware update not available while configuration over Bluetooth is active"); delay(2000); } - else if (newOTAFirmwareAvailable && incoming == 'u') + + else if (incoming == 'e') + { + enableRCFirmware ^= 1; + strncpy(reportedVersion, "", sizeof(reportedVersion) - 1); // Reset to force c) menu + } + + else if ((incoming == 'i') && settings.enableAutoFirmwareUpdate) + { + systemPrint("Enter minutes (1 - 999999) before next firmware check: "); + int minutes = getNumber(); // Returns EXIT, TIMEOUT, or long + if ((minutes != INPUT_RESPONSE_GETNUMBER_EXIT) && + (minutes != INPUT_RESPONSE_GETNUMBER_TIMEOUT)) + { + if ((minutes < 1) || (minutes > 999999)) + systemPrintln("Error: Out of range (1 - 999999)"); + else + settings.autoFirmwareCheckMinutes = minutes; + } + } + + else if ((incoming == 'u') && newOTAFirmwareAvailable) { bool previouslyConnected = wifiIsConnected(); @@ -141,14 +184,9 @@ void menuFirmware() // We get here if WiFi failed or the server was not available if (previouslyConnected == false) - wifiStop(); + WIFI_STOP(); } - else if (incoming == 'e') - { - enableRCFirmware ^= 1; - strncpy(reportedVersion, "", sizeof(reportedVersion) - 1); // Reset to force c) menu - } else if (incoming == 'x') break; else if (incoming == INPUT_RESPONSE_GETCHARACTERNUMBER_EMPTY) @@ -162,6 +200,10 @@ void menuFirmware() clearBuffer(); // Empty buffer of any newline chars } +//---------------------------------------- +// Firmware update code +//---------------------------------------- + void mountSDThenUpdate(const char *firmwareFileName) { bool gotSemaphore; @@ -315,7 +357,7 @@ void updateFromSD(const char *firmwareFileName) // Turn off any tasks so that we are not disrupted espnowStop(); - wifiStop(); + WIFI_STOP(); bluetoothStop(); // Delete tasks if running @@ -551,12 +593,12 @@ bool otaCheckVersion(char *versionAvailable, uint8_t versionAvailableLength) if (systemState != STATE_WIFI_CONFIG) { - // wifiStop() turns off the entire radio including the webserver. We need to turn off Station mode only. + // WIFI_STOP() turns off the entire radio including the webserver. We need to turn off Station mode only. // For now, unit exits AP mode via reset so if we are in AP config mode, leave WiFi Station running. // If WiFi was originally off, turn it off again if (previouslyConnected == false) - wifiStop(); + WIFI_STOP(); } if (gotVersion == true) @@ -619,17 +661,22 @@ void otaUpdate() // Update failed. If WiFi was originally off, turn it off again if (previouslyConnected == false) - wifiStop(); + WIFI_STOP(); #endif // COMPILE_WIFI } // Called while the OTA Pull update is happening void otaPullCallback(int bytesWritten, int totalLength) +{ + otaDisplayPercentage(bytesWritten, totalLength, false); +} + +void otaDisplayPercentage(int bytesWritten, int totalLength, bool alwaysDisplay) { static int previousPercent = -1; int percent = 100 * bytesWritten / totalLength; - if (percent != previousPercent) + if (alwaysDisplay || (percent != previousPercent)) { // Indicate progress int barWidthInCharacters = 20; // Width of progress bar, ie [###### % complete diff --git a/Firmware/RTK_Surveyor/menuMain.ino b/Firmware/RTK_Surveyor/menuMain.ino index c20a57e39..aa498b6b1 100644 --- a/Firmware/RTK_Surveyor/menuMain.ino +++ b/Firmware/RTK_Surveyor/menuMain.ino @@ -392,7 +392,12 @@ void factoryReset(bool alreadyHasSemaphore) LittleFS.format(); if (online.gnss == true) + { + systemPrintln("Factory resetting the GNSS receiver..."); theGNSS.factoryDefault(); // Reset everything: baud rate, I2C address, update rate, everything. And save to BBR. + theGNSS.saveConfiguration(); + theGNSS.hardReset(); // Perform a reset leading to a cold start (zero info start-up) + } systemPrintln("Settings erased successfully. Rebooting. Goodbye!"); delay(2000); diff --git a/Firmware/RTK_Surveyor/menuPP.ino b/Firmware/RTK_Surveyor/menuPP.ino index 661fbd3e3..864ae883a 100644 --- a/Firmware/RTK_Surveyor/menuPP.ino +++ b/Firmware/RTK_Surveyor/menuPP.ino @@ -9,12 +9,14 @@ #define MQTT_CERT_SIZE 2000 // The PointPerfect token is provided at compile time via build flags +#define DEVELOPMENT_TOKEN 0xAA, 0xBB, 0xCC, 0xDD, 0x00, 0x11, 0x22, 0x33, 0x0A, 0x0B, 0x0C, 0x0D, 0x00, 0x01, 0x02, 0x03 #ifndef POINTPERFECT_TOKEN -#define POINTPERFECT_TOKEN \ - 0xAA, 0xBB, 0xCC, 0xDD, 0x00, 0x11, 0x22, 0x33, 0x0A, 0x0B, 0x0C, 0x0D, 0x00, 0x01, 0x02, 0x03 +#warning Using the DEVELOPMENT_TOKEN for point perfect! +#define POINTPERFECT_TOKEN DEVELOPMENT_TOKEN #endif // POINTPERFECT_TOKEN -static uint8_t pointPerfectTokenArray[16] = {POINTPERFECT_TOKEN}; // Token in HEX form +static const uint8_t developmentTokenArray[16] = {DEVELOPMENT_TOKEN}; // Token in HEX form +static const uint8_t pointPerfectTokenArray[16] = {POINTPERFECT_TOKEN}; // Token in HEX form static const char *pointPerfectAPI = "https://api.thingstream.io/ztp/pointperfect/credentials"; @@ -51,19 +53,17 @@ void menuPointPerfectKeys() if (strlen(settings.pointPerfectCurrentKey) > 0 && settings.pointPerfectCurrentKeyStart > 0 && settings.pointPerfectCurrentKeyDuration > 0) { - long long unixEpoch = thingstreamEpochToGPSEpoch(settings.pointPerfectCurrentKeyStart, - settings.pointPerfectCurrentKeyDuration); + long long gpsEpoch = thingstreamEpochToGPSEpoch(settings.pointPerfectCurrentKeyStart); - uint16_t keyGPSWeek; - uint32_t keyGPSToW; - unixEpochToWeekToW(unixEpoch, &keyGPSWeek, &keyGPSToW); + gpsEpoch += (settings.pointPerfectCurrentKeyDuration / 1000) - + 1; // Add key duration back to the key start date to get key expiration - long expDay; - long expMonth; - long expYear; - gpsWeekToWToDate(keyGPSWeek, keyGPSToW, &expDay, &expMonth, &expYear); + systemPrintf("%s\r\n", printDateFromGPSEpoch(gpsEpoch)); - systemPrintf("%02ld/%02ld/%ld\r\n", expDay, expMonth, expYear); + if (settings.debugLBand == true) + systemPrintf("settings.pointPerfectCurrentKeyDuration: %lld (%d)\r\n", + settings.pointPerfectCurrentKeyDuration, + settings.pointPerfectCurrentKeyDuration / (1000L * 60 * 60 * 24)); } else systemPrintln("N/A"); @@ -78,19 +78,12 @@ void menuPointPerfectKeys() if (strlen(settings.pointPerfectNextKey) > 0 && settings.pointPerfectNextKeyStart > 0 && settings.pointPerfectNextKeyDuration > 0) { - long long unixEpoch = - thingstreamEpochToGPSEpoch(settings.pointPerfectNextKeyStart, settings.pointPerfectNextKeyDuration); + long long gpsEpoch = thingstreamEpochToGPSEpoch(settings.pointPerfectNextKeyStart); - uint16_t keyGPSWeek; - uint32_t keyGPSToW; - unixEpochToWeekToW(unixEpoch, &keyGPSWeek, &keyGPSToW); + gpsEpoch += (settings.pointPerfectNextKeyDuration / + 1000); // Add key duration back to the key start date to get key expiration - long expDay; - long expMonth; - long expYear; - gpsWeekToWToDate(keyGPSWeek, keyGPSToW, &expDay, &expMonth, &expYear); - - systemPrintf("%02ld/%02ld/%ld\r\n", expDay, expMonth, expYear); + systemPrintf("%s\r\n", printDateFromGPSEpoch(gpsEpoch)); } else systemPrintln("N/A"); @@ -122,23 +115,25 @@ void menuPointPerfectKeys() systemPrintln("Date invalid. Please try again."); } - dateToKeyStartDuration(expDay, expMonth, expYear, &settings.pointPerfectCurrentKeyStart, - &settings.pointPerfectCurrentKeyDuration); + dateToKeyStart(expDay, expMonth, expYear, &settings.pointPerfectCurrentKeyStart); + + // The u-blox API reports key durations of 5 weeks, but the web interface reports expiration dates + // that are 4 weeks. + // If the user has manually entered a date, force duration down to four weeks + settings.pointPerfectCurrentKeyDuration = (1000LL * 60 * 60 * 24 * 28); // Calculate the next key expiration date - if (settings.pointPerfectNextKeyStart == 0) - { - settings.pointPerfectNextKeyStart = settings.pointPerfectCurrentKeyStart + - settings.pointPerfectCurrentKeyDuration + - 1; // Next key starts after current key - settings.pointPerfectNextKeyDuration = settings.pointPerfectCurrentKeyDuration; + settings.pointPerfectNextKeyStart = settings.pointPerfectCurrentKeyStart + + settings.pointPerfectCurrentKeyDuration + + 1; // Next key starts after current key + settings.pointPerfectNextKeyDuration = settings.pointPerfectCurrentKeyDuration; - if (ENABLE_DEVELOPER) - { - systemPrintf(" settings.pointPerfectNextKeyStart: %lld\r\n", settings.pointPerfectNextKeyStart); - systemPrintf(" settings.pointPerfectNextKeyDuration: %lld\r\n", - settings.pointPerfectNextKeyDuration); - } + if (settings.debugLBand == true) + { + systemPrintf(" settings.pointPerfectCurrentKeyStart: %lld - %s\r\n", settings.pointPerfectCurrentKeyStart, printDateFromUnixEpoch(settings.pointPerfectCurrentKeyStart / 1000)); + systemPrintf(" settings.pointPerfectCurrentKeyDuration: %lld - %s\r\n", settings.pointPerfectCurrentKeyDuration, printDaysFromDuration(settings.pointPerfectCurrentKeyDuration)); + systemPrintf(" settings.pointPerfectNextKeyStart: %lld - %s\r\n", settings.pointPerfectNextKeyStart, printDateFromUnixEpoch(settings.pointPerfectNextKeyStart / 1000)); + systemPrintf(" settings.pointPerfectNextKeyDuration: %lld - %s\r\n", settings.pointPerfectNextKeyDuration, printDaysFromDuration(settings.pointPerfectNextKeyDuration)); } } else if (incoming == 4) @@ -159,8 +154,7 @@ void menuPointPerfectKeys() systemPrintln("Date invalid. Please try again."); } - dateToKeyStartDuration(expDay, expMonth, expYear, &settings.pointPerfectNextKeyStart, - &settings.pointPerfectNextKeyDuration); + dateToKeyStart(expDay, expMonth, expYear, &settings.pointPerfectNextKeyStart); } else if (incoming == INPUT_RESPONSE_GETNUMBER_EXIT) break; @@ -173,12 +167,55 @@ void menuPointPerfectKeys() clearBuffer(); // Empty buffer of any newline chars } +// Given a GPS Epoch, return a DD/MM/YYYY string +char *printDateFromGPSEpoch(long long gpsEpoch) +{ + uint16_t keyGPSWeek; + uint32_t keyGPSToW; + epochToWeekToW(gpsEpoch, &keyGPSWeek, &keyGPSToW); + + long expDay; + long expMonth; + long expYear; + gpsWeekToWToDate(keyGPSWeek, keyGPSToW, &expDay, &expMonth, &expYear); + + char *response = (char *)malloc(strlen("01/01/1010")); + + sprintf(response, "%02ld/%02ld/%ld", expDay, expMonth, expYear); + return (response); +} + +// Given a Unix Epoch, return a DD/MM/YYYY string +// https://www.epochconverter.com/programming/c +char *printDateFromUnixEpoch(long long unixEpoch) +{ + char *buf = (char *)malloc(strlen("01/01/2023") + 1); //Make room for terminator + time_t rawtime = unixEpoch; + + struct tm ts; + ts = *localtime(&rawtime); + + // Format time, "dd/mm/yyyy" + strftime(buf, strlen("01/01/2023") + 1, "%d/%m/%Y", &ts); + return (buf); +} + +// Given a duration in ms, print days +char *printDaysFromDuration(long long duration) +{ + float days = duration / (1000.0 * 60 * 60 * 24); //Convert ms to days + + char *response = (char *)malloc(strlen("34.9") + 1); //Make room for terminator + sprintf(response, "%0.2f", days); + return (response); +} + // Connect to 'home' WiFi and then ThingStream API. This will attach this unique device to the ThingStream network. bool pointperfectProvisionDevice() { #ifdef COMPILE_WIFI bool bluetoothOriginallyConnected = false; - if(bluetoothState == BT_CONNECTED) + if (bluetoothState == BT_CONNECTED) bluetoothOriginallyConnected = true; bluetoothStop(); // Free heap before starting secure client (requires ~70KB) @@ -233,6 +270,8 @@ bool pointperfectProvisionDevice() { // Convert uint8_t array into string with dashes in spots // We must assume u-blox will not change the position of their dashes or length of their token + if (!memcmp(pointPerfectTokenArray, developmentTokenArray, sizeof(developmentTokenArray))) + systemPrintln("Warning: Using the development token!"); for (int x = 0; x < sizeof(pointPerfectTokenArray); x++) { char temp[3]; @@ -294,34 +333,54 @@ bool pointperfectProvisionDevice() } else { - const int tempHolderSize = 2000; - tempHolderPtr = (char *)malloc(tempHolderSize); + tempHolderPtr = (char *)malloc(MQTT_CERT_SIZE); if (!tempHolderPtr) { systemPrintln("ERROR - Failed to allocate tempHolderPtr buffer!\r\n"); break; } - strncpy(tempHolderPtr, (const char *)((*jsonZtp)["certificate"]), tempHolderSize - 1); + strncpy(tempHolderPtr, (const char *)((*jsonZtp)["certificate"]), MQTT_CERT_SIZE - 1); // log_d("len of PrivateCert: %d", strlen(tempHolderPtr)); // log_d("privateCert: %s", tempHolderPtr); recordFile("certificate", tempHolderPtr, strlen(tempHolderPtr)); - strncpy(tempHolderPtr, (const char *)((*jsonZtp)["privateKey"]), tempHolderSize - 1); + strncpy(tempHolderPtr, (const char *)((*jsonZtp)["privateKey"]), MQTT_CERT_SIZE - 1); // log_d("len of privateKey: %d", strlen(tempHolderPtr)); // log_d("privateKey: %s", tempHolderPtr); recordFile("privateKey", tempHolderPtr, strlen(tempHolderPtr)); - strcpy(settings.pointPerfectClientID, (const char *)((*jsonZtp)["clientId"])); - strcpy(settings.pointPerfectBrokerHost, (const char *)((*jsonZtp)["brokerHost"])); - strcpy(settings.pointPerfectLBandTopic, (const char *)((*jsonZtp)["subscriptions"][0]["path"])); - - strcpy(settings.pointPerfectNextKey, (const char *)((*jsonZtp)["dynamickeys"]["next"]["value"])); - settings.pointPerfectNextKeyDuration = (*jsonZtp)["dynamickeys"]["next"]["duration"]; - settings.pointPerfectNextKeyStart = (*jsonZtp)["dynamickeys"]["next"]["start"]; - - strcpy(settings.pointPerfectCurrentKey, (const char *)((*jsonZtp)["dynamickeys"]["current"]["value"])); - settings.pointPerfectCurrentKeyDuration = (*jsonZtp)["dynamickeys"]["current"]["duration"]; - settings.pointPerfectCurrentKeyStart = (*jsonZtp)["dynamickeys"]["current"]["start"]; + // Validate the keys + if (!checkCertificates()) + { + systemPrintln("ERROR - Failed to validate the Point Perfect certificates!"); + } + else + { + if (settings.debugPpCertificate) + systemPrintln("Certificates written to the SD card."); + + strcpy(settings.pointPerfectClientID, (const char *)((*jsonZtp)["clientId"])); + strcpy(settings.pointPerfectBrokerHost, (const char *)((*jsonZtp)["brokerHost"])); + strcpy(settings.pointPerfectLBandTopic, (const char *)((*jsonZtp)["subscriptions"][0]["path"])); + + strcpy(settings.pointPerfectCurrentKey, (const char *)((*jsonZtp)["dynamickeys"]["current"]["value"])); + settings.pointPerfectCurrentKeyDuration = (*jsonZtp)["dynamickeys"]["current"]["duration"]; + settings.pointPerfectCurrentKeyStart = (*jsonZtp)["dynamickeys"]["current"]["start"]; + + strcpy(settings.pointPerfectNextKey, (const char *)((*jsonZtp)["dynamickeys"]["next"]["value"])); + settings.pointPerfectNextKeyDuration = (*jsonZtp)["dynamickeys"]["next"]["duration"]; + settings.pointPerfectNextKeyStart = (*jsonZtp)["dynamickeys"]["next"]["start"]; + + if (settings.debugLBand == true) + { + systemPrintf(" pointPerfectCurrentKey: %s\r\n", settings.pointPerfectCurrentKey); + systemPrintf(" pointPerfectCurrentKeyStart: %lld - %s\r\n", settings.pointPerfectCurrentKeyStart, printDateFromUnixEpoch(settings.pointPerfectCurrentKeyStart / 1000)); //printDateFromUnixEpoch expects seconds + systemPrintf(" pointPerfectCurrentKeyDuration: %lld - %s\r\n", settings.pointPerfectCurrentKeyDuration, printDaysFromDuration(settings.pointPerfectCurrentKeyDuration)); + systemPrintf(" pointPerfectNextKey: %s\r\n", settings.pointPerfectNextKey); + systemPrintf(" pointPerfectNextKeyStart: %lld - %s\r\n", settings.pointPerfectNextKeyStart, printDateFromUnixEpoch(settings.pointPerfectNextKeyStart / 1000)); + systemPrintf(" pointPerfectNextKeyDuration: %lld - %s\r\n", settings.pointPerfectNextKeyDuration, printDaysFromDuration(settings.pointPerfectNextKeyDuration)); + } + } } } // HTTP Response was 200 @@ -337,7 +396,7 @@ bool pointperfectProvisionDevice() if (jsonZtp) delete jsonZtp; - if(bluetoothOriginallyConnected == true) + if (bluetoothOriginallyConnected == true) bluetoothStart(); return (retVal); @@ -361,6 +420,8 @@ bool checkCertificates() { if (certificateContents) free(certificateContents); + if (keyContents) + free(keyContents); systemPrintln("Failed to allocate content buffers!"); return (false); } @@ -371,7 +432,8 @@ bool checkCertificates() if (checkCertificateValidity(certificateContents, strlen(certificateContents)) == false) { - log_d("Certificate is corrupt."); + if (settings.debugPpCertificate) + systemPrintln("Certificate is corrupt."); validCertificates = false; } @@ -379,9 +441,10 @@ bool checkCertificates() memset(keyContents, 0, MQTT_CERT_SIZE); loadFile("privateKey", keyContents); - if (checkCertificateValidity(keyContents, strlen(keyContents)) == false) + if (checkPrivateKeyValidity(keyContents, strlen(keyContents)) == false) { - log_d("PrivateKey is corrupt."); + if (settings.debugPpCertificate) + systemPrintln("PrivateKey is corrupt."); validCertificates = false; } @@ -391,6 +454,7 @@ bool checkCertificates() if (keyContents) free(keyContents); + systemPrintln("Stored certificates are valid!"); return (validCertificates); } @@ -411,13 +475,39 @@ bool checkCertificateValidity(char *certificateContent, int certificateContentSi if (result_code < 0) { - log_d("Cert formatting invalid"); + if (settings.debugPpCertificate) + systemPrintln("ERROR - Invalid certificate format!"); return (false); } return (true); } +// Check if a given private key is in a valid format +// This was created to detect corrupt or invalid private keys caused by bugs in v3.0 to and including v3.3. +// See https://github.com/Mbed-TLS/mbedtls/blob/development/library/pkparse.c +bool checkPrivateKeyValidity(char *privateKey, int privateKeySize) +{ + // Check for valid format of private key + // From ssl_client.cpp + // https://stackoverflow.com/questions/70670070/mbedtls-cannot-parse-valid-x509-certificate + mbedtls_pk_context pk; + mbedtls_pk_init(&pk); + + int result_code = + mbedtls_pk_parse_key(&pk, + (unsigned char *)privateKey, privateKeySize + 1, + nullptr, 0); + mbedtls_pk_free(&pk); + if (result_code < 0) + { + if (settings.debugPpCertificate) + systemPrintln("ERROR - Invalid private key format!"); + return (false); + } + return (true); +} + // When called, removes the files used for SSL to PointPerfect obtained during provisioning // Also deletes keys so the user can immediately re-provision void erasePointperfectCredentials() @@ -438,7 +528,7 @@ bool pointperfectUpdateKeys() { #ifdef COMPILE_WIFI bool bluetoothOriginallyConnected = false; - if(bluetoothState == BT_CONNECTED) + if (bluetoothState == BT_CONNECTED) bluetoothOriginallyConnected = true; bluetoothStop(); // Release available heap to allow room for TLS @@ -558,7 +648,7 @@ bool pointperfectUpdateKeys() if (certificateContents) free(certificateContents); - if(bluetoothOriginallyConnected == true) + if (bluetoothOriginallyConnected == true) bluetoothStart(); // Return the key status @@ -624,9 +714,22 @@ void mqttCallback(char *topic, byte *message, unsigned int length) settings.pointPerfectCurrentKeyDuration = settings.pointPerfectNextKeyStart - settings.pointPerfectCurrentKeyStart - 1; - settings.pointPerfectNextKeyDuration = - settings.pointPerfectCurrentKeyDuration; // We assume next key duration is the same as current key duration - // because we have to + // settings.pointPerfectNextKeyDuration = + // settings.pointPerfectCurrentKeyDuration; // We assume next key duration is the same as current key + // duration because we have to + + settings.pointPerfectNextKeyDuration = (1000LL * 60 * 60 * 24 * 28) - 1; // Assume next key duration is 28 days + + if (settings.debugLBand == true) + { + systemPrintln(); + systemPrintf(" pointPerfectCurrentKey: %s\r\n", settings.pointPerfectCurrentKey); + systemPrintf(" pointPerfectCurrentKeyStart: %lld - %s\r\n", settings.pointPerfectCurrentKeyStart, printDateFromUnixEpoch(settings.pointPerfectCurrentKeyStart)); + systemPrintf(" pointPerfectCurrentKeyDuration: %lld - %s\r\n", settings.pointPerfectCurrentKeyDuration, printDaysFromDuration(settings.pointPerfectCurrentKeyDuration)); + systemPrintf(" pointPerfectNextKey: %s\r\n", settings.pointPerfectNextKey); + systemPrintf(" pointPerfectNextKeyStart: %lld - %s\r\n", settings.pointPerfectNextKeyStart, printDateFromUnixEpoch(settings.pointPerfectNextKeyStart)); + systemPrintf(" pointPerfectNextKeyDuration: %lld - %s\r\n", settings.pointPerfectNextKeyDuration, printDaysFromDuration(settings.pointPerfectNextKeyDuration)); + } } mqttMessageReceived = true; @@ -703,10 +806,9 @@ int daysFromEpoch(long long endEpoch) // Add leap seconds (the API reports start times with GPS leap seconds removed) // Convert from unix epoch (the API reports unix epoch time) to GPS epoch (the NED-D9S expects) // Note: I believe the Thingstream API is reporting startEpoch 18 seconds less than actual -// Even though we are adding 18 leap seconds, the ToW is still coming out as 518400 instead of 518418 (midnight) -long long thingstreamEpochToGPSEpoch(long long startEpoch, long long duration) +long long thingstreamEpochToGPSEpoch(long long startEpoch) { - long long epoch = startEpoch + duration; + long long epoch = startEpoch; epoch /= 1000; // Convert PointPerfect ms Epoch to s // Convert Unix Epoch time from PointPerfect to GPS Time Of Week needed for UBX message @@ -726,10 +828,10 @@ uint8_t getLeapSeconds() return (leapSeconds); } } - return (18); // Default to 18 if GNSS if offline + return (18); // Default to 18 if GNSS is offline } -// Covert a given the key's expiration date to a GPS Epoch, so that we can calculate GPS Week and ToW +// Covert a given key's expiration date to a GPS Epoch, so that we can calculate GPS Week and ToW // Add a millisecond to roll over from 11:59UTC to midnight of the following day // Convert from unix epoch (time lib outputs unix) to GPS epoch (the NED-D9S expects) long long dateToGPSEpoch(uint8_t day, uint8_t month, uint16_t year) @@ -743,10 +845,10 @@ long long dateToGPSEpoch(uint8_t day, uint8_t month, uint16_t year) } // Given an epoch, set the GPSWeek and GPSToW -void unixEpochToWeekToW(long long unixEpoch, uint16_t *GPSWeek, uint32_t *GPSToW) +void epochToWeekToW(long long epoch, uint16_t *GPSWeek, uint32_t *GPSToW) { - *GPSWeek = (uint16_t)(unixEpoch / (7 * 24 * 60 * 60)); - *GPSToW = (uint32_t)(unixEpoch % (7 * 24 * 60 * 60)); + *GPSWeek = (uint16_t)(epoch / (7 * 24 * 60 * 60)); + *GPSToW = (uint32_t)(epoch % (7 * 24 * 60 * 60)); } // Given an epoch, set the GPSWeek and GPSToW @@ -785,9 +887,8 @@ long dateToUnixEpoch(uint8_t day, uint8_t month, uint16_t year) return (t_of_day); } -// Given a date, calculate and store the key start and duration -void dateToKeyStartDuration(uint8_t expDay, uint8_t expMonth, uint16_t expYear, uint64_t *settingsKeyStart, - uint64_t *settingsKeyDuration) +// Given a date, calculate and return the key start in unixEpoch +void dateToKeyStart(uint8_t expDay, uint8_t expMonth, uint16_t expYear, uint64_t *settingsKeyStart) { long long expireUnixEpoch = dateToUnixEpoch(expDay, expMonth, expYear); @@ -801,19 +902,20 @@ void dateToKeyStartDuration(uint8_t expDay, uint8_t expMonth, uint16_t expYear, // PointPerfect uses/reports unix epochs in milliseconds *settingsKeyStart = startUnixEpoch * 1000L; // Convert to ms - *settingsKeyDuration = - (28 * 24 * 60 * 60 * 1000LL) - 1; // We assume keys last for 28 days (minus one ms to be before midnight) - // Print ToW and Week for debugging uint16_t keyGPSWeek; uint32_t keyGPSToW; - long long unixEpoch = thingstreamEpochToGPSEpoch(*settingsKeyStart, *settingsKeyDuration); - unixEpochToWeekToW(unixEpoch, &keyGPSWeek, &keyGPSToW); + long long gpsEpoch = thingstreamEpochToGPSEpoch(*settingsKeyStart); + + epochToWeekToW(gpsEpoch, &keyGPSWeek, &keyGPSToW); - if (ENABLE_DEVELOPER) + // Print ToW and Week for debugging + if (settings.debugLBand == true) { - systemPrintf(" KeyStart: %lld\r\n", *settingsKeyStart); - systemPrintf(" KeyDuration: %lld\r\n", *settingsKeyDuration); + systemPrintf(" expireUnixEpoch: %lld - %s\r\n", expireUnixEpoch, printDateFromUnixEpoch(expireUnixEpoch)); + systemPrintf(" startUnixEpoch: %lld - %s\r\n", startUnixEpoch, printDateFromUnixEpoch(startUnixEpoch)); + systemPrintf(" gpsEpoch: %lld - %s\r\n", gpsEpoch, printDateFromGPSEpoch(gpsEpoch)); + systemPrintf(" KeyStart: %lld - %s\r\n", *settingsKeyStart, printDateFromUnixEpoch(*settingsKeyStart)); systemPrintf(" keyGPSWeek: %d\r\n", keyGPSWeek); systemPrintf(" keyGPSToW: %d\r\n", keyGPSToW); } @@ -871,7 +973,9 @@ long gpsToMjd(long GpsCycle, long GpsWeek, long GpsSeconds) void pushRXMPMP(UBX_RXM_PMP_message_data_t *pmpData) { uint16_t payloadLen = ((uint16_t)pmpData->lengthMSB << 8) | (uint16_t)pmpData->lengthLSB; - log_d("Pushing %d bytes of RXM-PMP data to GNSS", payloadLen); + + if (settings.debugLBand == true && !inMainMenu) + systemPrintf("Pushing %d bytes of RXM-PMP data to GNSS\r\n", payloadLen); theGNSS.pushRawData(&pmpData->sync1, (size_t)payloadLen + 6); // Push the sync chars, class, ID, length and payload theGNSS.pushRawData(&pmpData->checksumA, (size_t)2); // Push the checksum bytes @@ -884,7 +988,7 @@ void pointperfectApplyKeys() { if (online.gnss == false) { - log_d("ZED-F9P not avaialable"); + log_d("ZED-F9P not available"); return; } @@ -909,14 +1013,13 @@ void pointperfectApplyKeys() uint16_t currentKeyGPSWeek; uint32_t currentKeyGPSToW; - long long epoch = thingstreamEpochToGPSEpoch(settings.pointPerfectCurrentKeyStart, - settings.pointPerfectCurrentKeyDuration); - unixEpochToWeekToW(epoch, ¤tKeyGPSWeek, ¤tKeyGPSToW); + long long epoch = thingstreamEpochToGPSEpoch(settings.pointPerfectCurrentKeyStart); + epochToWeekToW(epoch, ¤tKeyGPSWeek, ¤tKeyGPSToW); uint16_t nextKeyGPSWeek; uint32_t nextKeyGPSToW; - epoch = thingstreamEpochToGPSEpoch(settings.pointPerfectNextKeyStart, settings.pointPerfectNextKeyDuration); - unixEpochToWeekToW(epoch, &nextKeyGPSWeek, &nextKeyGPSToW); + epoch = thingstreamEpochToGPSEpoch(settings.pointPerfectNextKeyStart); + epochToWeekToW(epoch, &nextKeyGPSWeek, &nextKeyGPSToW); theGNSS.setVal8(UBLOX_CFG_SPARTN_USE_SOURCE, 1); // use LBAND PMP message @@ -947,7 +1050,9 @@ void pointperfectApplyKeys() // Check if the PMP data is being decrypted successfully void checkRXMCOR(UBX_RXM_COR_data_t *ubxDataStruct) { - log_d("L-Band Eb/N0[dB] (>9 is good): %0.2f", ubxDataStruct->ebno * pow(2, -3)); + if (settings.debugLBand == true && !inMainMenu) + systemPrintf("L-Band Eb/N0[dB] (>9 is good): %0.2f\r\n", ubxDataStruct->ebno * pow(2, -3)); + lBandEBNO = ubxDataStruct->ebno * pow(2, -3); if (ubxDataStruct->statusInfo.bits.msgDecrypted == 2) // Successfully decrypted @@ -957,7 +1062,8 @@ void checkRXMCOR(UBX_RXM_COR_data_t *ubxDataStruct) } else { - log_d("PMP decryption failed"); + if (settings.debugLBand == true && !inMainMenu) + systemPrintln("PMP decryption failed"); } } @@ -1078,7 +1184,6 @@ void menuPointPerfect() } else { - int daysRemaining = daysFromEpoch(settings.pointPerfectNextKeyStart + settings.pointPerfectNextKeyDuration + 1); @@ -1110,6 +1215,8 @@ void menuPointPerfect() systemPrintln("4) Show device ID"); + systemPrintln("c) Clear the Keys"); + systemPrintln("k) Manual Key Entry"); systemPrintln("x) Exit"); @@ -1172,7 +1279,7 @@ void menuPointPerfect() } } - wifiStop(); + WIFI_STOP(); } else if (incoming == 4) { @@ -1181,6 +1288,11 @@ void menuPointPerfect() lbandMACAddress[2], lbandMACAddress[3], lbandMACAddress[4], lbandMACAddress[5]); systemPrintf("Device ID: %s\r\n", hardwareID); } + else if (incoming == 'c') + { + settings.pointPerfectCurrentKey[0] = 0; + settings.pointPerfectNextKey[0] = 0; + } else if (incoming == 'k') { menuPointPerfectKeys(); @@ -1225,13 +1337,15 @@ void updateLBand() lbandCorrectionsReceived = false; // If we don't get an L-Band fix within Timeout, hot-start ZED-F9x - if (carrSoln == 1) // RTK Float + if (systemState == STATE_ROVER_RTK_FLOAT) { if (millis() - lbandLastReport > 1000) { lbandLastReport = millis(); - log_d("ZED restarts: %d Time remaining before L-Band forced restart: %ds", lbandRestarts, - settings.lbandFixTimeout_seconds - ((millis() - lbandTimeFloatStarted) / 1000)); + + if (settings.debugLBand == true) + systemPrintf("ZED restarts: %d Time remaining before L-Band forced restart: %ds\r\n", lbandRestarts, + settings.lbandFixTimeout_seconds - ((millis() - lbandTimeFloatStarted) / 1000)); } if (settings.lbandFixTimeout_seconds > 0) @@ -1240,7 +1354,8 @@ void updateLBand() { lbandRestarts++; - lbandTimeFloatStarted = millis(); //Restart timer for L-Band. Don't immediately reset ZED to achieve fix. + lbandTimeFloatStarted = + millis(); // Restart timer for L-Band. Don't immediately reset ZED to achieve fix. // Hotstart ZED to try to get RTK lock theGNSS.softwareResetGNSSOnly(); @@ -1259,7 +1374,7 @@ void updateLBand() { // If we have not received RTCM in a certain amount of time, // and if communication was disabled because RTCM was being received at some point, - // re-enableL-Band communcation + // re-enable L-Band communcation if (lBandCommunicationEnabled == false) { log_d("Enabling L-Band communication due to RTCM timeout"); @@ -1272,7 +1387,8 @@ void updateLBand() if (lBandCommunicationEnabled == true) { log_d("Disabling L-Band communication due to RTCM reception"); - lBandCommunicationEnabled = !zedDisableLBandCommunication(); //zedDisableLBandCommunication() returns true if we successfully disabled + lBandCommunicationEnabled = !zedDisableLBandCommunication(); // zedDisableLBandCommunication() returns + // true if we successfully disabled } } } diff --git a/Firmware/RTK_Surveyor/menuSystem.ino b/Firmware/RTK_Surveyor/menuSystem.ino index 6272576ed..73b415996 100644 --- a/Firmware/RTK_Surveyor/menuSystem.ino +++ b/Firmware/RTK_Surveyor/menuSystem.ino @@ -390,6 +390,9 @@ void menuDebugHardware() systemPrint("9) u-blox I2C Debugging Output: "); systemPrintf("%s\r\n", settings.enableI2Cdebug ? "Enabled" : "Disabled"); + systemPrint("10) L-Band Debugging Output: "); + systemPrintf("%s\r\n", settings.debugLBand ? "Enabled" : "Disabled"); + systemPrintln("e) Erase LittleFS"); systemPrintln("t) Test Screen"); @@ -439,6 +442,10 @@ void menuDebugHardware() else theGNSS.disableDebugging(); } + else if (incoming == 10) + { + settings.debugLBand ^= 1; + } else if (incoming == 'e') { @@ -524,6 +531,10 @@ void menuDebugNetwork() systemPrint("26) Debug PVT server: "); systemPrintf("%s\r\n", settings.debugPvtServer ? "Enabled" : "Disabled"); + // PVT Server + systemPrint("27) Debug PVT UDP server: "); + systemPrintf("%s\r\n", settings.debugPvtUdpServer ? "Enabled" : "Disabled"); + systemPrintln("r) Force system reset"); systemPrintln("x) Exit"); @@ -554,6 +565,8 @@ void menuDebugNetwork() settings.debugPvtClient ^= 1; else if (incoming == 26) settings.debugPvtServer ^= 1; + else if (incoming == 27) + settings.debugPvtUdpServer ^= 1; // Menu exit control else if (incoming == 'r') @@ -638,6 +651,14 @@ void menuDebugSoftware() else systemPrintln("Disabled"); + // Automatic Firmware Update + systemPrintf("60) Print firmware update states: %s\r\n", + settings.debugFirmwareUpdate ? "Enabled" : "Disabled"); + + // Point Perfect + systemPrintf("70) Point Perfect certificate management: %s\r\n", + settings.debugPpCertificate ? "Enabled" : "Disabled"); + systemPrintln("e) Erase LittleFS"); systemPrintln("r) Force system reset"); @@ -697,6 +718,10 @@ void menuDebugSoftware() } else if (incoming == 50) settings.enableTaskReports ^= 1; + else if (incoming == 60) + settings.debugFirmwareUpdate ^= 1; + else if (incoming == 70) + settings.debugPpCertificate ^= 1; else if (incoming == 'e') { systemPrintln("Erasing LittleFS and resetting"); @@ -1208,6 +1233,9 @@ void menuPeriodicPrint() systemPrint("51) PVT server state: "); systemPrintf("%s\r\n", PERIODIC_SETTING(PD_PVT_SERVER_STATE) ? "Enabled" : "Disabled"); + systemPrint("52) OTA client state: "); + systemPrintf("%s\r\n", PERIODIC_SETTING(PD_OTA_CLIENT_STATE) ? "Enabled" : "Disabled"); + systemPrintln("------- Tasks ------"); systemPrint("70) btReadTask state: "); systemPrintf("%s\r\n", PERIODIC_SETTING(PD_TASK_BLUETOOTH_READ) ? "Enabled" : "Disabled"); @@ -1294,6 +1322,8 @@ void menuPeriodicPrint() PERIODIC_TOGGLE(PD_PVT_SERVER_DATA); else if (incoming == 51) PERIODIC_TOGGLE(PD_PVT_SERVER_STATE); + else if (incoming == 52) + PERIODIC_TOGGLE(PD_OTA_CLIENT_STATE); else if (incoming == 70) PERIODIC_TOGGLE(PD_TASK_BLUETOOTH_READ); diff --git a/Firmware/RTK_Surveyor/settings.h b/Firmware/RTK_Surveyor/settings.h index b2a29edf2..f07b06730 100644 --- a/Firmware/RTK_Surveyor/settings.h +++ b/Firmware/RTK_Surveyor/settings.h @@ -54,6 +54,23 @@ bool newSystemStateRequested = false; // When user pauses for X amount of time, system will enter that state SystemState setupState = STATE_MARK_EVENT; +// Base modes set with RTK_MODE +#define RTK_MODE_BASE_FIXED 0x0001 +#define RTK_MODE_BASE_SURVEY_IN 0x0002 +#define RTK_MODE_BUBBLE_LEVEL 0x0004 +#define RTK_MODE_ETHERNET_CONFIG 0x0008 +#define RTK_MODE_NTP 0x0010 +#define RTK_MODE_ROVER 0x0020 +#define RTK_MODE_TESTING 0x0040 +#define RTK_MODE_WIFI_CONFIG 0x0080 + +typedef uint8_t RtkMode_t; + +#define RTK_MODE(mode) rtkMode = mode; + +#define EQ_RTK_MODE(mode) (rtkMode && (rtkMode == (mode & rtkMode))) +#define NEQ_RTK_MODE(mode) (rtkMode && (rtkMode != (mode & rtkMode))) + typedef enum { RTK_SURVEYOR = 0, @@ -63,10 +80,53 @@ typedef enum RTK_FACET_LBAND, REFERENCE_STATION, RTK_FACET_LBAND_DIRECT, + // Add new values just above this line RTK_UNKNOWN, } ProductVariant; ProductVariant productVariant = RTK_SURVEYOR; +const char * const productDisplayNames[] = +{ + "Surveyor", + "Express", + "Facet", + "Express+", + "Facet LB", + "Ref Stn", + "Facet LD", + // Add new values just above this line + "Unknown", +}; +const int productDisplayNamesEntries = sizeof (productDisplayNames) / sizeof(productDisplayNames[0]); + +const char * const platformFilePrefixTable[] = +{ + "SFE_Surveyor", + "SFE_Express", + "SFE_Facet", + "SFE_Express_Plus", + "SFE_Facet_LBand", + "SFE_Reference_Station", + "SFE_Facet_LBand_Direct", + // Add new values just above this line + "SFE_Unknown", +}; +const int platformFilePrefixTableEntries = sizeof (platformFilePrefixTable) / sizeof(platformFilePrefixTable[0]); + +const char * const platformPrefixTable[] = +{ + "Surveyor", + "Express", + "Facet", + "Express Plus", + "Facet L-Band", + "Reference Station", + "Facet L-Band Direct", + // Add new values just above this line + "Unknown", +}; +const int platformPrefixTableEntries = sizeof (platformPrefixTable) / sizeof(platformPrefixTable[0]); + // Macros to show if the GNSS is I2C or SPI #define USE_SPI_GNSS (productVariant == REFERENCE_STATION) #define USE_I2C_GNSS (!USE_SPI_GNSS) @@ -178,11 +238,13 @@ enum NetworkStates // Define the network users enum NetworkUsers { - NETWORK_USER_NTP_SERVER = 0, // NTP server - NETWORK_USER_NTRIP_CLIENT, // NTRIP client - NETWORK_USER_NTRIP_SERVER, // NTRIP server - NETWORK_USER_PVT_CLIENT, // PVT client - NETWORK_USER_PVT_SERVER, // PVT server + NETWORK_USER_NTP_SERVER = 0, // NTP server + NETWORK_USER_NTRIP_CLIENT, // NTRIP client + NETWORK_USER_NTRIP_SERVER, // NTRIP server + NETWORK_USER_OTA_FIRMWARE_UPDATE, // Over-The-Air firmware updates + NETWORK_USER_PVT_CLIENT, // PVT client + NETWORK_USER_PVT_SERVER, // PVT server + NETWORK_USER_PVT_UDP_SERVER, // PVT UDP server // Last network user NETWORK_USER_MAX }; @@ -283,39 +345,6 @@ typedef struct WiFiNetwork typedef uint16_t RING_BUFFER_OFFSET; -typedef struct _PARSE_STATE *P_PARSE_STATE; - -// Parse routine -typedef uint8_t (*PARSE_ROUTINE)(P_PARSE_STATE parse, // Parser state - uint8_t data); // Incoming data byte - -// End of message callback routine -typedef void (*EOM_CALLBACK)(P_PARSE_STATE parse, // Parser state - uint8_t type); // Message type - -#define PARSE_BUFFER_LENGTH 3000 // Some USB RAWX messages can be > 2k - -typedef struct _PARSE_STATE -{ - PARSE_ROUTINE state; // Parser state routine - EOM_CALLBACK eomCallback; // End of message callback routine - const char *parserName; // Name of parser - uint32_t crc; // RTCM computed CRC - uint32_t rtcmCrc; // Computed CRC value for the RTCM message - uint32_t invalidRtcmCrcs; // Number of bad RTCM CRCs detected - uint16_t bytesRemaining; // Bytes remaining in RTCM CRC calculation - uint16_t length; // Message length including line termination - uint16_t maxLength; // Maximum message length including line termination - uint16_t message; // RTCM message number - uint16_t nmeaLength; // Length of the NMEA message without line termination - uint8_t buffer[PARSE_BUFFER_LENGTH]; // Buffer containing the message - uint8_t nmeaMessageName[16]; // Message name - uint8_t nmeaMessageNameLength; // Length of the message name - uint8_t ck_a; // U-blox checksum byte 1 - uint8_t ck_b; // U-blox checksum byte 2 - bool computeCrc; // Compute the CRC when true -} PARSE_STATE; - typedef enum { ETH_NOT_STARTED = 0, @@ -471,21 +500,28 @@ enum PeriodDisplayValues PD_PVT_SERVER_STATE, // 15 PD_PVT_SERVER_CLIENT_DATA, // 16 - PD_RING_BUFFER_MILLIS, // 17 + PD_PVT_UDP_SERVER_DATA, // 17 + PD_PVT_UDP_SERVER_STATE, // 18 + PD_PVT_UDP_SERVER_BROADCAST_DATA, // 19 - PD_SD_LOG_WRITE, // 18 + PD_RING_BUFFER_MILLIS, // 20 - PD_TASK_BLUETOOTH_READ, // 19 - PD_TASK_BUTTON_CHECK, // 20 - PD_TASK_GNSS_READ, // 21 - PD_TASK_HANDLE_GNSS_DATA, // 22 - PD_TASK_SD_SIZE_CHECK, // 23 + PD_SD_LOG_WRITE, // 21 - PD_WIFI_IP_ADDRESS, // 24 - PD_WIFI_STATE, // 25 + PD_TASK_BLUETOOTH_READ, // 22 + PD_TASK_BUTTON_CHECK, // 23 + PD_TASK_GNSS_READ, // 24 + PD_TASK_HANDLE_GNSS_DATA, // 25 + PD_TASK_SD_SIZE_CHECK, // 26 - PD_ZED_DATA_RX, // 26 - PD_ZED_DATA_TX, // 27 + PD_WIFI_IP_ADDRESS, // 27 + PD_WIFI_STATE, // 28 + + PD_ZED_DATA_RX, // 29 + PD_ZED_DATA_TX, // 30 + + PD_OTA_CLIENT_STATE, // 31 + // Add new values before this line }; #define PERIODIC_MASK(x) (1 << x) @@ -887,6 +923,7 @@ typedef struct int16_t serialTimeoutGNSS = 1; // In ms - used during SerialGNSS.begin. Number of ms to pass of no data before // hardware serial reports data available. + // Point Perfect char pointPerfectDeviceProfileToken[40] = ""; bool enablePointPerfectCorrections = true; bool autoKeyRenewal = true; // Attempt to get keys if we get under 28 days from the expiration date @@ -906,6 +943,8 @@ typedef struct bool updateZEDSettings = true; // When in doubt, update the ZED with current settings uint32_t LBandFreq = 1556290000; // Default to US band + bool debugPpCertificate = false; // Debug Point Perfect certificate management + // Time Zone - Default to UTC int8_t timeZoneHours = 0; int8_t timeZoneMinutes = 0; @@ -1060,10 +1099,23 @@ typedef struct bool enablePvtServer = false; uint16_t pvtServerPort = 2948; // PVT server port, 2948 is GPS Daemon: http://tcp-udp-ports.com/port-2948.htm + // UDP Server + bool debugPvtUdpServer = false; + bool enablePvtUdpServer = false; + uint16_t pvtUdpServerPort = + 10110; //https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=nmea + uint8_t rtcmTimeoutBeforeUsingLBand_s = 10; //If 10s have passed without RTCM, enable PMP corrections over L-Band if available - //Add new settings above - //<------------------------------------------------------------> + // Automatic Firmware Update + bool debugFirmwareUpdate = false; + bool enableAutoFirmwareUpdate = false; + uint32_t autoFirmwareCheckMinutes = 24 * 60; + + bool debugLBand = false; + bool enableCaptivePortal = true; + + //Add new settings above <------------------------------------------------------------> } Settings; Settings settings; @@ -1087,8 +1139,10 @@ struct struct_online bool i2c = false; bool pvtClient = false; bool pvtServer = false; + bool pvtUdpServer = false; ethernetStatus_e ethernetStatus = ETH_NOT_STARTED; bool NTPServer = false; // EthernetUDP + bool otaFirmwareUpdate = false; } online; #ifdef COMPILE_WIFI diff --git a/Firmware/RTK_Surveyor/support.ino b/Firmware/RTK_Surveyor/support.ino index 2301800e8..56e519212 100644 --- a/Firmware/RTK_Surveyor/support.ino +++ b/Firmware/RTK_Surveyor/support.ino @@ -721,409 +721,6 @@ void dumpBuffer(uint8_t *buffer, uint16_t length) } } -// Read the line termination -uint8_t nmeaLineTermination(PARSE_STATE *parse, uint8_t data) -{ - int checksum; - - // Process the line termination - if ((data != '\r') && (data != '\n')) - { - // Don't include this character in the buffer - parse->length--; - - // Convert the checksum characters into binary - checksum = AsciiToNibble(parse->buffer[parse->nmeaLength - 2]) << 4; - checksum |= AsciiToNibble(parse->buffer[parse->nmeaLength - 1]); - - // Validate the checksum - if (checksum == parse->crc) - parse->crc = 0; - if (settings.enablePrintBadMessages && parse->crc && (!inMainMenu)) - { - printTimeStamp(); - systemPrintf(" %s NMEA %s, %2d bytes, bad checksum, expecting 0x%c%c, computed: 0x%02x\r\n", - parse->parserName, parse->nmeaMessageName, parse->length, parse->buffer[parse->nmeaLength - 2], - parse->buffer[parse->nmeaLength - 1], parse->crc); - } - - // Process this message if CRC is valid - if (parse->crc == 0) - parse->eomCallback(parse, SENTENCE_TYPE_NMEA); - else - failedParserMessages_NMEA++; - - // Add this character to the beginning of the buffer - parse->length = 0; - parse->buffer[parse->length++] = data; - return waitForPreamble(parse, data); - } - return SENTENCE_TYPE_NMEA; -} - -// Read the second checksum byte -uint8_t nmeaChecksumByte2(PARSE_STATE *parse, uint8_t data) -{ - parse->nmeaLength = parse->length; - parse->state = nmeaLineTermination; - return SENTENCE_TYPE_NMEA; -} - -// Read the first checksum byte -uint8_t nmeaChecksumByte1(PARSE_STATE *parse, uint8_t data) -{ - parse->state = nmeaChecksumByte2; - return SENTENCE_TYPE_NMEA; -} - -// Read the message data -uint8_t nmeaFindAsterisk(PARSE_STATE *parse, uint8_t data) -{ - if (data != '*') - parse->crc ^= data; - else - parse->state = nmeaChecksumByte1; - return SENTENCE_TYPE_NMEA; -} - -// Read the message name -uint8_t nmeaFindFirstComma(PARSE_STATE *parse, uint8_t data) -{ - parse->crc ^= data; - if ((data != ',') || (parse->nmeaMessageNameLength == 0)) - { - if ((data < 'A') || (data > 'Z')) - { - parse->length = 0; - parse->buffer[parse->length++] = data; - return waitForPreamble(parse, data); - } - - // Save the message name - parse->nmeaMessageName[parse->nmeaMessageNameLength++] = data; - } - else - { - // Zero terminate the message name - parse->nmeaMessageName[parse->nmeaMessageNameLength++] = 0; - parse->state = nmeaFindAsterisk; - } - return SENTENCE_TYPE_NMEA; -} - -// Read the CRC -uint8_t rtcmReadCrc(PARSE_STATE *parse, uint8_t data) -{ - // Account for this data byte - parse->bytesRemaining -= 1; - - // Wait until all the data is received - if (parse->bytesRemaining > 0) - return SENTENCE_TYPE_RTCM; - - // Update the maximum message length - if (parse->length > parse->maxLength) - { - parse->maxLength = parse->length; - systemPrintf("RTCM parser error maxLength: %d bytes\r\n", parse->maxLength); - } - - // Display the RTCM messages with bad CRC - parse->crc &= 0x00ffffff; - if (settings.enablePrintBadMessages && parse->crc && (!inMainMenu)) - { - printTimeStamp(); - systemPrintf(" %s RTCM %d, %2d bytes, bad CRC, expecting 0x%02x%02x%02x, computed: 0x%06x\r\n", - parse->parserName, parse->message, parse->length, parse->buffer[parse->length - 3], - parse->buffer[parse->length - 2], parse->buffer[parse->length - 1], parse->rtcmCrc); - } - - // Process the message if CRC is valid - if (parse->crc == 0) - parse->eomCallback(parse, SENTENCE_TYPE_RTCM); - else - failedParserMessages_RTCM++; - - // Search for another preamble byte - parse->length = 0; - parse->computeCrc = false; - parse->state = waitForPreamble; - return SENTENCE_TYPE_NONE; -} - -// Read the rest of the message -uint8_t rtcmReadData(PARSE_STATE *parse, uint8_t data) -{ - // Account for this data byte - parse->bytesRemaining -= 1; - - // Wait until all the data is received - if (parse->bytesRemaining <= 0) - { - parse->rtcmCrc = parse->crc & 0x00ffffff; - parse->bytesRemaining = 3; - parse->state = rtcmReadCrc; - } - return SENTENCE_TYPE_RTCM; -} - -// Read the lower 4 bits of the message number -uint8_t rtcmReadMessage2(PARSE_STATE *parse, uint8_t data) -{ - parse->message |= data >> 4; - parse->bytesRemaining -= 1; - parse->state = rtcmReadData; - return SENTENCE_TYPE_RTCM; -} - -// Read the upper 8 bits of the message number -uint8_t rtcmReadMessage1(PARSE_STATE *parse, uint8_t data) -{ - parse->message = data << 4; - parse->bytesRemaining -= 1; - parse->state = rtcmReadMessage2; - return SENTENCE_TYPE_RTCM; -} - -// Read the lower 8 bits of the length -uint8_t rtcmReadLength2(PARSE_STATE *parse, uint8_t data) -{ - parse->bytesRemaining |= data; - parse->state = rtcmReadMessage1; - return SENTENCE_TYPE_RTCM; -} - -// Read the upper two bits of the length -uint8_t rtcmReadLength1(PARSE_STATE *parse, uint8_t data) -{ - // Verify the length byte - check the 6 MS bits are all zero - if (data & (~3)) - { - // Invalid length, place this byte at the beginning of the buffer - parse->length = 0; - parse->buffer[parse->length++] = data; - parse->computeCrc = false; - - // Start searching for a preamble byte - return waitForPreamble(parse, data); - } - - // Save the upper 2 bits of the length - parse->bytesRemaining = data << 8; - parse->state = rtcmReadLength2; - return SENTENCE_TYPE_RTCM; -} - -// Read the CK_B byte -uint8_t ubloxCkB(PARSE_STATE *parse, uint8_t data) -{ - bool badChecksum; - - // Validate the checksum - badChecksum = - ((parse->buffer[parse->length - 2] != parse->ck_a) || (parse->buffer[parse->length - 1] != parse->ck_b)); - if (settings.enablePrintBadMessages && badChecksum && (!inMainMenu)) - { - printTimeStamp(); - systemPrintf(" %s u-blox %d.%d, %2d bytes, bad checksum, expecting 0x%02X%02X, computed: 0x%02X%02X\r\n", - parse->parserName, parse->message >> 8, parse->message & 0xff, parse->length, - parse->buffer[parse->nmeaLength - 2], parse->buffer[parse->nmeaLength - 1], parse->ck_a, - parse->ck_b); - } - - // Process this message if checksum is valid - if (badChecksum == false) - parse->eomCallback(parse, SENTENCE_TYPE_UBX); - else - failedParserMessages_UBX++; - - // Search for the next preamble byte - parse->length = 0; - parse->state = waitForPreamble; - return SENTENCE_TYPE_NONE; -} - -// Read the CK_A byte -uint8_t ubloxCkA(PARSE_STATE *parse, uint8_t data) -{ - parse->state = ubloxCkB; - return SENTENCE_TYPE_UBX; -} - -// Read the payload -uint8_t ubloxPayload(PARSE_STATE *parse, uint8_t data) -{ - // Compute the checksum over the payload - if (parse->bytesRemaining--) - { - // Calculate the checksum - parse->ck_a += data; - parse->ck_b += parse->ck_a; - return SENTENCE_TYPE_UBX; - } - return ubloxCkA(parse, data); -} - -// Read the second length byte -uint8_t ubloxLength2(PARSE_STATE *parse, uint8_t data) -{ - // Calculate the checksum - parse->ck_a += data; - parse->ck_b += parse->ck_a; - - // Save the second length byte - parse->bytesRemaining |= ((uint16_t)data) << 8; - parse->state = ubloxPayload; - return SENTENCE_TYPE_UBX; -} - -// Read the first length byte -uint8_t ubloxLength1(PARSE_STATE *parse, uint8_t data) -{ - // Calculate the checksum - parse->ck_a += data; - parse->ck_b += parse->ck_a; - - // Save the first length byte - parse->bytesRemaining = data; - parse->state = ubloxLength2; - return SENTENCE_TYPE_UBX; -} - -// Read the ID byte -uint8_t ubloxId(PARSE_STATE *parse, uint8_t data) -{ - // Calculate the checksum - parse->ck_a += data; - parse->ck_b += parse->ck_a; - - // Save the ID as the lower 8-bits of the message - parse->message |= data; - parse->state = ubloxLength1; - return SENTENCE_TYPE_UBX; -} - -// Read the class byte -uint8_t ubloxClass(PARSE_STATE *parse, uint8_t data) -{ - // Start the checksum calculation - parse->ck_a = data; - parse->ck_b = data; - - // Save the class as the upper 8-bits of the message - parse->message = ((uint16_t)data) << 8; - parse->state = ubloxId; - return SENTENCE_TYPE_UBX; -} - -// Read the second sync byte -uint8_t ubloxSync2(PARSE_STATE *parse, uint8_t data) -{ - // Verify the sync 2 byte - if (data != 0x62) - { - // Display the invalid data - if (settings.enablePrintBadMessages && (!inMainMenu)) - { - dumpBuffer(parse->buffer, parse->length - 1); - systemPrintf(" %s Invalid UBX data, %d bytes\r\n", parse->parserName, parse->length - 1); - } - // Invalid sync 2 byte, place this byte at the beginning of the buffer - parse->length = 0; - parse->buffer[parse->length++] = data; - - // Start searching for a preamble byte - return waitForPreamble(parse, data); - } - - parse->state = ubloxClass; - return SENTENCE_TYPE_UBX; -} - -// Wait for the preamble byte (0xd3) -uint8_t waitForPreamble(PARSE_STATE *parse, uint8_t data) -{ - // Verify that this is the preamble byte - switch (data) - { - case '$': - - // - // NMEA Message - // - // +----------+---------+--------+---------+----------+----------+ - // | Preamble | Name | Comma | Data | Asterisk | Checksum | - // | 8 bits | n bytes | 8 bits | n bytes | 8 bits | 2 bytes | - // | $ | | , | | | | - // +----------+---------+--------+---------+----------+----------+ - // | | - // |<-------- Checksum -------->| - // - - parse->crc = 0; - parse->computeCrc = false; - parse->nmeaMessageNameLength = 0; - parse->state = nmeaFindFirstComma; - return SENTENCE_TYPE_NMEA; - - case 0xb5: - - // - // U-BLOX Message - // - // |<-- Preamble --->| - // | | - // +--------+--------+---------+--------+---------+---------+--------+--------+ - // | SYNC | SYNC | Class | ID | Length | Payload | CK_A | CK_B | - // | 8 bits | 8 bits | 8 bits | 8 bits | 2 bytes | n bytes | 8 bits | 8 bits | - // | 0xb5 | 0x62 | | | | | | | - // +--------+--------+---------+--------+---------+---------+--------+--------+ - // | | - // |<------------- Checksum ------------->| - // - // 8-Bit Fletcher Algorithm, which is used in the TCP standard (RFC 1145) - // http://www.ietf.org/rfc/rfc1145.txt - // Checksum calculation - // Initialization: CK_A = CK_B = 0 - // CK_A += data - // CK_B += CK_A - // - - parse->state = ubloxSync2; - return SENTENCE_TYPE_UBX; - - case 0xd3: - - // - // RTCM Standard 10403.2 - Chapter 4, Transport Layer - // - // |<------------- 3 bytes ------------>|<----- length ----->|<- 3 bytes ->| - // | | | | - // +----------+--------+----------------+---------+----------+-------------+ - // | Preamble | Fill | Message Length | Message | Fill | CRC-24Q | - // | 8 bits | 6 bits | 10 bits | n-bits | 0-7 bits | 24 bits | - // | 0xd3 | 000000 | (in bytes) | | zeros | | - // +----------+--------+----------------+---------+----------+-------------+ - // | | - // |<------------------------ CRC -------------------------->| - // - - // Start the CRC with this byte - parse->crc = 0; - parse->crc = COMPUTE_CRC24Q(parse, data); - parse->computeCrc = true; - - // Get the message length - parse->state = rtcmReadLength1; - return SENTENCE_TYPE_RTCM; - } - - // preamble byte not found - parse->length = 0; - parse->state = waitForPreamble; - return SENTENCE_TYPE_NONE; -} - // Make size of files human readable void stringHumanReadableSize(String &returnText, uint64_t bytes) { @@ -1161,15 +758,65 @@ void stringHumanReadableSize(String &returnText, uint64_t bytes) returnText = String(readableSize); } +// Print the NMEA checksum error +void printNmeaChecksumError(PARSE_STATE *parse) +{ + printTimeStamp(); + systemPrintf(" %s NMEA %s, %2d bytes, bad checksum, expecting 0x%c%c, computed: 0x%02x\r\n", + parse->parserName, parse->nmeaMessageName, parse->length, parse->buffer[parse->nmeaLength - 2], + parse->buffer[parse->nmeaLength - 1], parse->crc); +} + +// Print the RTCM checksum error +void printRtcmChecksumError(PARSE_STATE *parse) +{ + printTimeStamp(); + systemPrintf(" %s RTCM %d, %2d bytes, bad CRC, expecting 0x%02x%02x%02x, computed: 0x%06x\r\n", + parse->parserName, parse->message, parse->length, parse->buffer[parse->length - 3], + parse->buffer[parse->length - 2], parse->buffer[parse->length - 1], parse->rtcmCrc); +} + +// Print the RTCM maximum length +void printRtcmMaxLength(PARSE_STATE *parse) +{ + systemPrintf("RTCM parser error maxLength: %d bytes\r\n", parse->maxLength); +} + +// Print the u-blox checksum error +void printUbloxChecksumError(PARSE_STATE *parse) +{ + printTimeStamp(); + systemPrintf(" %s u-blox %d.%d, %2d bytes, bad checksum, expecting 0x%02X%02X, computed: 0x%02X%02X\r\n", + parse->parserName, parse->message >> 8, parse->message & 0xff, parse->length, + parse->buffer[parse->nmeaLength - 2], parse->buffer[parse->nmeaLength - 1], parse->ck_a, + parse->ck_b); +} + +// Print the u-blox invalid data error +void printUbloxInvalidData(PARSE_STATE *parse) +{ + dumpBuffer(parse->buffer, parse->length - 1); + systemPrintf(" %s Invalid UBX data, %d bytes\r\n", parse->parserName, parse->length - 1); +} + // Verify table sizes match enum definitions -void verifyTables () +void verifyTables() { + // Verify the product name table + if (productDisplayNamesEntries != (RTK_UNKNOWN + 1)) + reportFatalError("Fix productDisplayNames to match ProductVariant"); + if (platformFilePrefixTableEntries != (RTK_UNKNOWN + 1)) + reportFatalError("Fix platformFilePrefixTable to match ProductVariant"); + if (platformPrefixTableEntries != (RTK_UNKNOWN + 1)) + reportFatalError("Fix platformPrefixTable to match ProductVariant"); + // Verify the consistency of the internal tables ethernetVerifyTables(); networkVerifyTables(); ntpValidateTables(); ntripClientValidateTables(); ntripServerValidateTables(); + otaVerifyTables(); pvtClientValidateTables(); pvtServerValidateTables(); tasksValidateTables(); diff --git a/Firmware/Tools/X.509_crt_bundle_bin_to_c.c b/Firmware/Tools/X.509_crt_bundle_bin_to_c.c new file mode 100644 index 000000000..3b0aeb24b --- /dev/null +++ b/Firmware/Tools/X.509_crt_bundle_bin_to_c.c @@ -0,0 +1,99 @@ +/* + * X.509_crt_bundle_bin_to_c.c + * + * Program to convert the .bin file into a "c" data structure + */ + +#include +#include +#include +#include +#include + +#define BYTES_MAX 16 + +int main(int argc, char ** argv) +{ + uint8_t buffer[1024]; + int bundleFile; + ssize_t bytesRead; + int bytesToDisplay; + uint8_t * data; + uint8_t * dataEnd; + int fileOffset; + int index; + ssize_t offset; + int status; + + bundleFile = 0; + do + { + // Display the help text + if (argc != 2) + { + printf("%s x509_crt_bundle_bin_file\n", argv[0]); + status = -1; + break; + } + + // Open the binary file containing the certificate bundle + bundleFile = open(argv[1], O_RDONLY); + if (bundleFile < 0) + { + status = errno; + perror("ERROR: Unable to open certificate bundle file\n"); + break; + } + + // Display the header + printf("const uint8_t x509CertificateBundle[] =\n"); + printf("{\n"); + + // Assume success + status = 0; + + // Walk through the BIN file data + fileOffset = 0; + while (1) + { + // Read more data from the file + bytesRead = read(bundleFile, buffer, sizeof(buffer)); + if (bytesRead < 0) + { + status = errno; + perror("ERROR: Failed during read of BIN file\n"); + break; + } + + // Check for end of file + if (!bytesRead) + { + printf("};\n\n"); + break; + } + + // Display the data read from the file + data = &buffer[0]; + dataEnd = &data[bytesRead]; + while (data < dataEnd) + { + // Display the row of data + bytesToDisplay = dataEnd - data; + if (bytesToDisplay > BYTES_MAX) + bytesToDisplay = BYTES_MAX; + printf(" "); + for ( index = 0; index < bytesToDisplay; index++) + printf("%s0x%02x", index ? ", " : "", *data++); + printf(","); + fileOffset += bytesToDisplay; + printf(" // %5d\n", fileOffset); + } + }; + } while (0); + + // Close the certificate bundle + if (bundleFile > 0) + close(bundleFile); + return status; +} + diff --git a/Firmware/Tools/makefile b/Firmware/Tools/makefile index 501987e9c..2fb1edee0 100644 --- a/Firmware/Tools/makefile +++ b/Firmware/Tools/makefile @@ -13,6 +13,7 @@ EXECUTABLES += NMEA_Client EXECUTABLES += Read_Map_File EXECUTABLES += RTK_Reset EXECUTABLES += Split_Messages +EXECUTABLES += X.509_crt_bundle_bin_to_c INCLUDES = crc24q.h diff --git a/docs/configure_with_serial.md b/docs/configure_with_serial.md index 42b15aff9..e8eee7fbd 100644 --- a/docs/configure_with_serial.md +++ b/docs/configure_with_serial.md @@ -86,4 +86,10 @@ Below is an example system status report sentence: * 86 : Battery level (% remaining) * *71 : The completion of the sentence and a [CRC](http://engineeringnotes.blogspot.com/2015/02/generate-crc-for-nmea-strings-arduino.html) -**Note:** This is a custom NMEA sentence, can vary in length, and may exceed the [maximum permitted sentence length](https://www.nmea.org/Assets/20160520%20txt%20amendment.pdf) of 61 characters. \ No newline at end of file +**Note:** This is a custom NMEA sentence, can vary in length, and may exceed the [maximum permitted sentence length](https://www.nmea.org/Assets/20160520%20txt%20amendment.pdf) of 61 characters. + +## L-Band Performance During Serial Configuration + +Because of the way corrections are provided between the sub modules (NEO-D9S and ZED-F9P), the corrections will be interrupted while the configuration menu is open. RTK Fix may be lost if the menu is open for more than ~30s. RTK Fix will return once the configuration is complete and the menu is closed. + +Note: This only affects the RTK Facet L-Band model. \ No newline at end of file diff --git a/docs/configure_with_settings_file.md b/docs/configure_with_settings_file.md index ffe615f36..d9fbccbc1 100644 --- a/docs/configure_with_settings_file.md +++ b/docs/configure_with_settings_file.md @@ -20,7 +20,7 @@ Keep in mind: For example, if you only wanted to set up two wireless networks for profile 2, you could create a file named "SFE_Express_Settings_1.txt" that only contained the following settings: profileName=a name you choose - enableTcpServer=1 + enablePvtServer=1 wifiNetwork0SSID=your SSID name 1 wifiNetwork0Password=your SSID password 1 wifiNetwork1SSID=your SSID name 2 diff --git a/docs/firmware_update.md b/docs/firmware_update.md index e85ca94a0..0f8175bfd 100644 --- a/docs/firmware_update.md +++ b/docs/firmware_update.md @@ -44,8 +44,7 @@ The OTA method is generally recommended. For more information see [here](firmwar Remember, all SparkFun RTK devices are open source hardware meaning you have total access to the [firmware](https://github.com/sparkfun/SparkFun_RTK_Firmware) and [hardware](https://github.com/sparkfun/SparkFun_RTK_Facet). Be sure to check out each repo for the latest firmware and hardware information. ## Updating Firmware Over-The-Air - -![Updating Firmware from WiFi config page](img/WiFi Config/SparkFun%20RTK%20OTA%20Firmware%20Update.gif) +![Updating Firmware from WiFi config page]() *Updating the firmware via WiFi config page* @@ -59,6 +58,12 @@ Additionally, users may opt into checking for Beta firmware. This is the latest If you have a device with firmware lower than v3.0, you will need to use the [GUI](firmware_update.md#updating-firmware-using-the-uploader-gui) or a method listed below to get to v3.x. +With version 3.10 automatic release firmware update is supported over WiFi. Enabling this feature is done using the serial firmware menu. The polling period is speified in minutes and defaults to once a day. The automatic firmware update only checks for and installs the current SparkFun released firmware versions over top of any: + +* Older released versions (continual upgrade) +* Beta firmware versions (newer or older, restore to released version) +* Locally built versions (newer or older, restore to released version) + ## Updating Firmware Using The Uploader GUI ![RTK Firmware GUI](img/RTK_Uploader_Windows.png) diff --git a/docs/img/WiFi Config/RTK-Firmware-Update-OTA.gif b/docs/img/WiFi Config/RTK-Firmware-Update-OTA.gif new file mode 100644 index 000000000..fd233a486 Binary files /dev/null and b/docs/img/WiFi Config/RTK-Firmware-Update-OTA.gif differ