From d1c289b709f0f9137180f8ff02ad5662f363b883 Mon Sep 17 00:00:00 2001 From: Def3nder Date: Tue, 5 Nov 2019 15:52:18 +0100 Subject: [PATCH 01/70] Add Solid (analog) RGBW strip support add 4 ESP pins for driving analog/non-addressable RGBW LED strips --- wled00/NpbWrapper.h | 55 +++++++++++++++++++++++++++++++++++++++++++-- wled00/wled00.ino | 2 ++ 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h index 8e04a71e1..7adc73f23 100644 --- a/wled00/NpbWrapper.h +++ b/wled00/NpbWrapper.h @@ -20,6 +20,13 @@ #endif #endif +#ifndef WLED_DISABLE_ANALOG_LEDS + //PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller + #define RPIN 5 //R pin for analog LED strip + #define GPIN 12 //G pin for analog LED strip + #define BPIN 13 //B pin for analog LED strip + #define WPIN 15 //W pin for analog LED strip +#endif //automatically uses the right driver method for each platform #ifdef ARDUINO_ARCH_ESP32 @@ -104,15 +111,59 @@ public: #endif _pGrbw->Begin(); break; + + #ifndef WLED_DISABLE_ANALOG_LEDS + //init PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller + pinMode(RPIN, OUTPUT); + pinMode(GPIN, OUTPUT); + pinMode(BPIN, OUTPUT); + switch (_type) { + case NeoPixelType_Grb: break; + case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); break; + } + analogWriteRange(255); //same range as one RGB channel + analogWriteFreq(880); //PWM frequency proven as good for LEDs + #endif + } } +#ifndef WLED_DISABLE_ANALOG_LEDS + void SetRgbwPwm(uint8_t r, uint8_t g, uint8_t b, uint8_t w) + { + analogWrite(RPIN, r); + analogWrite(GPIN, g); + analogWrite(BPIN, b); + switch (_type) { + case NeoPixelType_Grb: break; + case NeoPixelType_Grbw: analogWrite(WPIN, w); break; + } + } +#endif + void Show() { + byte b; switch (_type) { - case NeoPixelType_Grb: _pGrb->Show(); break; - case NeoPixelType_Grbw: _pGrbw->Show(); break; + case NeoPixelType_Grb: { + _pGrb->Show(); + #ifndef WLED_DISABLE_ANALOG_LEDS + RgbColor color = _pGrb->GetPixelColor(0); + b = _pGrb->GetBrightness(); + SetRgbwPwm(color.R * b / 255, color.G * b / 255, color.B * b / 255, 0); + #endif + } + break; + case NeoPixelType_Grbw: { + _pGrbw->Show(); + #ifndef WLED_DISABLE_ANALOG_LEDS + RgbwColor colorW = _pGrbw->GetPixelColor(0); + b = _pGrbw->GetBrightness(); + SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + #endif + } + break; } } diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 21c87f40f..1f3bcd268 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -32,6 +32,8 @@ //to toggle usb serial debug (un)comment the following line //#define WLED_DEBUG +//to toggle using analog RGB or RGBW led strips (un)comment the following line +//#define WLED_DISABLE_ANALOG_LEDS //library inclusions #include From 9a091ff11a15f253b51d6f724a2ab2fc0ef0fa08 Mon Sep 17 00:00:00 2001 From: Eric Yanush Date: Mon, 11 Nov 2019 18:22:58 -0600 Subject: [PATCH 02/70] Add support for Saskatchewan Time (CST no DST) GMT-6 --- wled00/html_settings.h | 19 ++++++++++--------- wled00/wled10_ntp.ino | 4 +++- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/wled00/html_settings.h b/wled00/html_settings.h index cb3b29fc3..17c1ba84b 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -308,15 +308,16 @@ Time zone: - - - - - - - - - + + + + + + + + + +
UTC offset: seconds (max. 18 hours)
Current local time is unknown. diff --git a/wled00/wled10_ntp.ino b/wled00/wled10_ntp.ino index 6eb5d9070..16b069504 100644 --- a/wled00/wled10_ntp.ino +++ b/wled00/wled10_ntp.ino @@ -25,6 +25,8 @@ TimeChangeRule CDT = {Second, Sun, Mar, 2, -300 }; //Daylight time = UTC - 5 TimeChangeRule CST = {First, Sun, Nov, 2, -360 }; //Standard time = UTC - 6 hours Timezone tzUSCentral(CDT, CST); +Timezone tzCASaskatchewan(CST, CST); //Central without DST + TimeChangeRule MDT = {Second, Sun, Mar, 2, -360 }; //Daylight time = UTC - 6 hours TimeChangeRule MST = {First, Sun, Nov, 2, -420 }; //Standard time = UTC - 7 hours Timezone tzUSMountain(MDT, MST); @@ -55,7 +57,7 @@ Timezone tzNK(NKST, NKST); TimeChangeRule IST = {Last, Sun, Mar, 1, 330}; // India Standard Time = UTC + 5.5 hours Timezone tzIndia(IST, IST); -Timezone* timezones[] = {&tzUTC, &tzUK, &tzEUCentral, &tzEUEastern, &tzUSEastern, &tzUSCentral, &tzUSMountain, &tzUSArizona, &tzUSPacific, &tzChina, &tzJapan, &tzAUEastern, &tzNZ, &tzNK, &tzIndia}; +Timezone* timezones[] = {&tzUTC, &tzUK, &tzEUCentral, &tzEUEastern, &tzUSEastern, &tzUSCentral, &tzCASaskatchewan, &tzUSMountain, &tzUSArizona, &tzUSPacific, &tzChina, &tzJapan, &tzAUEastern, &tzNZ, &tzNK, &tzIndia}; void handleNetworkTime() { From 6122a8371a4e24267c4dd55d1ec93048c76937f1 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 6 Dec 2019 01:44:45 +0100 Subject: [PATCH 03/70] Added Glitter and Candle effects --- wled00/FX.cpp | 89 ++++++++++++++++++++++++++++++++++++------ wled00/FX.h | 15 +++++-- wled00/FX_fcn.cpp | 7 +++- wled00/data/index.htm | 6 +-- wled00/wled00.ino | 2 +- wled00/wled05_init.ino | 18 ++++++++- 6 files changed, 111 insertions(+), 26 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 2bdb75ba9..c862a0854 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -533,11 +533,18 @@ uint16_t WS2812FX::mode_dissolve_random(void) { */ uint16_t WS2812FX::mode_sparkle(void) { for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { - setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 1)); + setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 1)); } - SEGENV.aux0 = random16(SEGLEN); // aux0 stores the random led index + uint32_t cycleTime = 10 + (255 - SEGMENT.speed)*2; + uint32_t it = now / cycleTime; + if (it != SEGENV.step) + { + SEGENV.aux0 = random16(SEGLEN); // aux0 stores the random led index + SEGENV.step = it; + } + setPixelColor(SEGMENT.start + SEGENV.aux0, SEGCOLOR(0)); - return 10 + (uint16_t)(255 - SEGMENT.speed); + return FRAMETIME; } @@ -546,15 +553,10 @@ uint16_t WS2812FX::mode_sparkle(void) { * Inspired by www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ */ uint16_t WS2812FX::mode_flash_sparkle(void) { - if(SEGENV.call == 0) { - for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { - setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); - } + for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { + setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); } - uint16_t i = SEGMENT.start + SEGENV.aux0; - setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); - if(random8(5) == 0) { SEGENV.aux0 = random16(SEGLEN); // aux0 stores the random led index setPixelColor(SEGMENT.start + SEGENV.aux0, SEGCOLOR(1)); @@ -613,7 +615,6 @@ uint16_t WS2812FX::mode_multi_strobe(void) { uint16_t WS2812FX::mode_android(void) { if (SEGENV.call == 0) { - SEGENV.aux0 = 0; SEGENV.step = SEGMENT.start; } @@ -1530,13 +1531,13 @@ uint16_t WS2812FX::mode_palette() } bool noWrap = (paletteBlend == 2 || (paletteBlend == 0 && SEGMENT.speed == 0)); - for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) + for (uint16_t i = 0; i < SEGLEN; i++) { uint8_t colorIndex = (i * 255 / SEGLEN) - counter; if (noWrap) colorIndex = map(colorIndex, 0, 255, 0, 240); //cut off blend at palette "end" - setPixelColor(i, color_from_palette(colorIndex, false, true, 255)); + setPixelColor(SEGMENT.start + i, color_from_palette(colorIndex, false, true, 255)); } return FRAMETIME; } @@ -2285,3 +2286,65 @@ uint16_t WS2812FX::mode_spots_fade() uint16_t tr = (t >> 1) + (t >> 2); return spots_base(tr); } + + +//Rainbow with glitter, inspired by https://gist.github.com/kriegsman/062e10f7f07ba8518af6 +uint16_t WS2812FX::mode_glitter() +{ + mode_palette(); + + if (SEGMENT.intensity > random8()) + { + setPixelColor(SEGMENT.start + random16(SEGLEN), ULTRAWHITE); + } + + return FRAMETIME; +} + + +uint16_t WS2812FX::mode_candle() +{ + if (SEGENV.call == 0) { + SEGENV.aux0 = 128; SEGENV.aux1 = 132; SEGENV.step = 1; + } + bool newTarget = false; + + uint8_t s = SEGENV.aux0, target = SEGENV.aux1, fadeStep = SEGENV.step; + + if (target > s) { //fade up + s = qadd8(s, fadeStep); + if (s >= target) newTarget = true; + } else { + s = qsub8(s, fadeStep); + if (s <= target) newTarget = true; + } + SEGENV.aux0 = s; + + for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { + setPixelColor(i, color_blend(color_from_palette(i, true, PALETTE_SOLID_WRAP, 0), SEGCOLOR(1), 255-s)); + } + + if (newTarget) + { + uint8_t valrange = SEGMENT.intensity; + uint8_t rndval = valrange >> 1; + target = random8(rndval) + random8(rndval); + if (target < (rndval >> 1)) target += random8(rndval >> 1); + uint8_t offset = (255 - valrange) >> 1; + target += offset; + + uint8_t dif = (target > s) ? target - s : s - target; + uint16_t fadeSpeed = 50 + ((255-SEGMENT.speed) >> 1); + + //how much to move closer to target per frame + fadeStep = dif; + uint8_t frames = 1; + if (fadeSpeed > FRAMETIME) fadeStep = dif / (fadeSpeed / FRAMETIME); + if (fadeStep == 0) fadeStep = 1; + + SEGENV.step = fadeStep; + SEGENV.aux1 = target; + } + + return FRAMETIME; +} diff --git a/wled00/FX.h b/wled00/FX.h index 5a3865ae0..9ba70357d 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -42,7 +42,7 @@ /* Not used in all effects yet */ #define WLED_FPS 42 -#define FRAMETIME 1000/WLED_FPS +#define FRAMETIME (1000/WLED_FPS) /* each segment uses 37 bytes of SRAM memory, so if you're application fails because of insufficient memory, decreasing MAX_NUM_SEGMENTS may help */ @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 87 +#define MODE_COUNT 89 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -173,6 +173,8 @@ #define FX_MODE_TRI_STATIC_PATTERN 84 #define FX_MODE_SPOTS 85 #define FX_MODE_SPOTS_FADE 86 +#define FX_MODE_GLITTER 87 +#define FX_MODE_CANDLE 88 class WS2812FX { @@ -317,6 +319,8 @@ class WS2812FX { _mode[FX_MODE_TRI_STATIC_PATTERN] = &WS2812FX::mode_tri_static_pattern; _mode[FX_MODE_SPOTS] = &WS2812FX::mode_spots; _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; + _mode[FX_MODE_GLITTER] = &WS2812FX::mode_glitter; + _mode[FX_MODE_CANDLE] = &WS2812FX::mode_candle; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -497,7 +501,10 @@ class WS2812FX { mode_static_pattern(void), mode_tri_static_pattern(void), mode_spots(void), - mode_spots_fade(void); + mode_spots_fade(void), + mode_glitter(void), + mode_candle(void); + private: NeoPixelWrapper *bus; @@ -570,7 +577,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle" ])====="; diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index b887332f4..ab204d69a 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -711,7 +711,8 @@ void WS2812FX::handle_palette(void) _segment_index_palette_last = _segment_index; byte paletteIndex = SEGMENT.palette; - if ((SEGMENT.mode >= FX_MODE_METEOR) && SEGMENT.palette == 0) paletteIndex = 4; + if (SEGMENT.mode == FX_MODE_GLITTER && paletteIndex == 0) paletteIndex = 11; + if (SEGMENT.mode >= FX_MODE_METEOR && paletteIndex == 0) paletteIndex = 4; switch (paletteIndex) { @@ -725,6 +726,7 @@ void WS2812FX::handle_palette(void) case FX_MODE_NOISE16_2 : targetPalette = gGradientPalettes[30]; break;//Blue cyan yellow case FX_MODE_NOISE16_3 : targetPalette = gGradientPalettes[22]; break;//heat palette case FX_MODE_NOISE16_4 : targetPalette = gGradientPalettes[13]; break;//landscape 33 + //case FX_MODE_GLITTER : targetPalette = RainbowColors_p; break; default: targetPalette = PartyColors_p; break;//palette, bpm } @@ -763,7 +765,8 @@ void WS2812FX::handle_palette(void) case 5: {//based on primary + secondary CRGB prim = col_to_crgb(SEGCOLOR(0)); CRGB sec = col_to_crgb(SEGCOLOR(1)); - targetPalette = CRGBPalette16(sec,prim,CRGB::White); break;} + CRGB ter = col_to_crgb(SEGCOLOR(2)); + targetPalette = CRGBPalette16(ter,sec,prim); break;} case 6: //Party colors targetPalette = PartyColors_p; break; case 7: //Cloud colors diff --git a/wled00/data/index.htm b/wled00/data/index.htm index 439081b44..460bcadfd 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -941,8 +941,8 @@ function requestJson(command, verbose = true) { e1 = d.getElementById('fxlist'); e2 = d.getElementById('selectPalette'); - //url = command ? 'http://10.10.1.26/json/state':'http://10.10.1.26/json'; url = command ? '/json/state':'/json'; + url = command ? 'http://10.10.1.26/json/state':'http://10.10.1.26/json'; type = command ? 'post':'get'; if (command) { @@ -1096,7 +1096,7 @@ function makeSeg() {
Start LED:
Stop LED: - (${ledCount} LEDs)
+ (${ledCount - ns} LEDs)
`; @@ -1137,8 +1137,6 @@ function setRev(s){ } function setX(ind) { - selectedFx = ind; - var obj = {"seg": {"fx": parseInt(ind)}}; requestJson(obj); } diff --git a/wled00/wled00.ino b/wled00/wled00.ino index f3ce48332..7c621a0bb 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -97,7 +97,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912051 +#define VERSION 1912061 char versionString[] = "0.9.0-dev"; diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino index a07ef3d7b..1c5a233ec 100644 --- a/wled00/wled05_init.ino +++ b/wled00/wled05_init.ino @@ -231,7 +231,7 @@ void initInterfaces() { if (ntpEnabled) ntpConnected = ntpUdp.begin(ntpLocalPort); initBlynk(blynkApiKey); - Serial.println(e131.begin((e131Multicast) ? E131_MULTICAST : E131_UNICAST , e131Universe, E131_MAX_UNIVERSE_COUNT)); + e131.begin((e131Multicast) ? E131_MULTICAST : E131_UNICAST , e131Universe, E131_MAX_UNIVERSE_COUNT); reconnectHue(); initMqtt(); interfacesInited = true; @@ -239,11 +239,25 @@ void initInterfaces() { } byte stacO = 0; +uint32_t lastHeap; +unsigned long heapTime = 0; void handleConnection() { - //TODO: reconnect if heap <8000 if (millis() < 2000 && (!WLED_WIFI_CONFIGURED || apBehavior == 2)) return; if (lastReconnectAttempt == 0) initConnection(); + + //reconnect WiFi to clear stale allocations if heap gets too low + if (millis() - heapTime > 5000) + { + uint32_t heap = ESP.getFreeHeap(); + if (heap < 9000 && lastHeap < 9000) { + DEBUG_PRINT("Heap too low! "); + DEBUG_PRINTLN(heap); + forceReconnect = true; + } + lastHeap = heap; + heapTime = millis(); + } byte stac = 0; if (apActive) { From 7ca1970fff2080929b8a89e77202d5b660403ce6 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 10 Dec 2019 20:06:00 +0100 Subject: [PATCH 04/70] add bouncing balls effect --- wled00/FX.cpp | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ wled00/FX.h | 9 +++++--- 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 2bdb75ba9..495c0397a 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2285,3 +2285,67 @@ uint16_t WS2812FX::mode_spots_fade() uint16_t tr = (t >> 1) + (t >> 2); return spots_base(tr); } + + +/* +* Bouncing Balls Effect +* Adapted from: https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ +*/ +uint16_t WS2812FX::mode_BouncingBalls(void) { + // number of balls based on intensity setting, + // only has 4 for a few of the higher settings as there is no colour selection + // fourth ball is a random colour + int balls = int(((SEGMENT.intensity * 6.2) / 255) + 1); + + // ideally use speed for gravity effect on the bounce + float Gravity = -9.81; + + const int maxBallCount = 7; + static float Height[maxBallCount]; + static float ImpactVelocity[maxBallCount]; + static int Position[maxBallCount]; + static float TimeSinceLastBounce[maxBallCount]; + static long ClockTimeSinceLastBounce[maxBallCount]; + static int StartHeight = 1; // height in metres (strip length) + static float Dampening[maxBallCount] = {0}; // Coefficient of Restitution (bounce damping) + static float ImpactVelocityStart=sqrt( -2 * Gravity * StartHeight); + + // Different from the examples, to allow for initialisation of the first bounce + if (Dampening[0] == 0) { + for (int i = 0 ; i < maxBallCount ; i++) { + ClockTimeSinceLastBounce[i] = millis(); + ImpactVelocity[i] = ImpactVelocityStart; + TimeSinceLastBounce[i] = 0; + Dampening[i] = 0.90 - float(i)/pow(maxBallCount,2); + } + } + + for (int i = 0 ; i < balls ; i++) { + TimeSinceLastBounce[i] = millis() - ClockTimeSinceLastBounce[i]; + Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000; + + if ( Height[i] < 0 ) { + Height[i] = 0; + ImpactVelocity[i] = Dampening[i] * ImpactVelocity[i]; + ClockTimeSinceLastBounce[i] = millis(); + + if ( ImpactVelocity[i] < 0.01 ) { + ImpactVelocity[i] = ImpactVelocityStart; + } + } + Position[i] = round( Height[i] * (SEGLEN - 1) / StartHeight); + } + + fill(BLACK); + + for (int i = 0 ; i < balls ; i++) { + uint32_t color = SEGCOLOR(i % NUM_COLORS); + if (!color) { + color = color_wheel(random8()); + } + + setPixelColor(Position[i],color); + } + + return 20; +} \ No newline at end of file diff --git a/wled00/FX.h b/wled00/FX.h index 5a3865ae0..5642850a3 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 87 +#define MODE_COUNT 88 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -173,6 +173,7 @@ #define FX_MODE_TRI_STATIC_PATTERN 84 #define FX_MODE_SPOTS 85 #define FX_MODE_SPOTS_FADE 86 +#define FX_MODE_BOUNCINGBALLS 87 class WS2812FX { @@ -317,6 +318,7 @@ class WS2812FX { _mode[FX_MODE_TRI_STATIC_PATTERN] = &WS2812FX::mode_tri_static_pattern; _mode[FX_MODE_SPOTS] = &WS2812FX::mode_spots; _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; + _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_BouncingBalls; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -497,7 +499,8 @@ class WS2812FX { mode_static_pattern(void), mode_tri_static_pattern(void), mode_spots(void), - mode_spots_fade(void); + mode_spots_fade(void), + mode_BouncingBalls(void); private: NeoPixelWrapper *bus; @@ -570,7 +573,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Bouncing Balls" ])====="; From 86ae11f4c44fe1b37a325af5040b9438a6d5ed9d Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 10 Dec 2019 20:26:02 +0100 Subject: [PATCH 05/70] add sinelon effect --- wled00/FX.cpp | 25 +++++++++++++++++++++++++ wled00/FX.h | 9 ++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 495c0397a..d0a34a28d 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2348,4 +2348,29 @@ uint16_t WS2812FX::mode_BouncingBalls(void) { } return 20; +} + +/* +* Sinelon stolen from FASTLED examples +*/ +uint16_t WS2812FX::mode_sinelon(void) { + + fade_out(SEGMENT.intensity); + int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1); + static int prevpos = 0; + + // setRange seems great to use, but doesn't work here for some reason + if( pos < prevpos ) { + for (uint16_t i = pos; i < prevpos; i++) + { + setPixelColor(i, color_from_palette(pos, false, false, 0)); + } + } else { + for (uint16_t i = prevpos; i < pos; i++) + { + setPixelColor(i, color_from_palette(pos, false, false, 0)); + } + } + prevpos = pos; + return FRAMETIME; } \ No newline at end of file diff --git a/wled00/FX.h b/wled00/FX.h index 5642850a3..aabf70790 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 88 +#define MODE_COUNT 89 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -174,6 +174,7 @@ #define FX_MODE_SPOTS 85 #define FX_MODE_SPOTS_FADE 86 #define FX_MODE_BOUNCINGBALLS 87 +#define FX_MODE_SINELON 88 class WS2812FX { @@ -319,6 +320,7 @@ class WS2812FX { _mode[FX_MODE_SPOTS] = &WS2812FX::mode_spots; _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_BouncingBalls; + _mode[FX_MODE_SINELON] = &WS2812FX::mode_sinelon; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -500,7 +502,8 @@ class WS2812FX { mode_tri_static_pattern(void), mode_spots(void), mode_spots_fade(void), - mode_BouncingBalls(void); + mode_BouncingBalls(void), + mode_sinelon(void); private: NeoPixelWrapper *bus; @@ -573,7 +576,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Bouncing Balls" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Bouncing Balls", "Sinelon" ])====="; From c1dec16c500d1fe5adfcedb3c54163e9a1f597bd Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 10 Dec 2019 20:34:59 +0100 Subject: [PATCH 06/70] add popcorn effect --- wled00/FX.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ wled00/FX.h | 9 ++++++--- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index d0a34a28d..9a2da2043 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2373,4 +2373,53 @@ uint16_t WS2812FX::mode_sinelon(void) { } prevpos = pos; return FRAMETIME; +} + + +/* +* POPCORN +*/ +typedef struct Kernel { + float position; + float velocity; + int32_t color; +} kernel; + +#define MAX_NUM_POPCORN 12 +#define GRAVITY 0.06 + +uint16_t WS2812FX::mode_popcorn(void) { + uint32_t popcornColor = SEGCOLOR(0); + uint32_t bgColor = SEGCOLOR(1); + if(popcornColor == bgColor) popcornColor = color_wheel(random8()); + + static kernel popcorn[MAX_NUM_POPCORN]; + static float coeff = 0.0f; + if(coeff == 0.0f) { // calculate the velocity coeff once (the secret sauce) + coeff = pow((float)SEGLEN, 0.5223324f) * 0.3944296f; + } + + fill(SEGCOLOR(1)); + + uint16_t ledIndex; + for(int8_t i=0; i < MAX_NUM_POPCORN; i++) { + bool isActive = popcorn[i].position >= 0.0f; + + if(isActive) { // if kernel is active, update its position + popcorn[i].position += popcorn[i].velocity; + popcorn[i].velocity -= (GRAVITY * SEGMENT.intensity/25); + ledIndex = SEGMENT.start + popcorn[i].position; + if(ledIndex >= SEGMENT.start && ledIndex <= SEGMENT.stop) setPixelColor(ledIndex, popcorn[i].color); + } else { // if kernel is inactive, randomly pop it + if(random8() < 2) { // POP!!! + popcorn[i].position = 0.0f; + popcorn[i].velocity = coeff * (random(66, 100) / 100.0f); + popcorn[i].color = popcornColor; + ledIndex = SEGMENT.start; + setPixelColor(ledIndex, popcorn[i].color); + } + } + } + + return SPEED_FORMULA_L; } \ No newline at end of file diff --git a/wled00/FX.h b/wled00/FX.h index aabf70790..57b256be4 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 89 +#define MODE_COUNT 90 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -175,6 +175,7 @@ #define FX_MODE_SPOTS_FADE 86 #define FX_MODE_BOUNCINGBALLS 87 #define FX_MODE_SINELON 88 +#define FX_MODE_POPCORN 89 class WS2812FX { @@ -321,6 +322,7 @@ class WS2812FX { _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_BouncingBalls; _mode[FX_MODE_SINELON] = &WS2812FX::mode_sinelon; + _mode[FX_MODE_POPCORN] = &WS2812FX::mode_popcorn; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -503,7 +505,8 @@ class WS2812FX { mode_spots(void), mode_spots_fade(void), mode_BouncingBalls(void), - mode_sinelon(void); + mode_sinelon(void), + mode_popcorn(void); private: NeoPixelWrapper *bus; @@ -576,7 +579,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Bouncing Balls", "Sinelon" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Bouncing Balls", "Sinelon","Popcorn" ])====="; From 77d89e7df3348e6075074eb39a5fc5f00a5187bd Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 11 Dec 2019 00:59:15 +0100 Subject: [PATCH 07/70] Fix iOS scrolling Other small adjustments Allow for passwords with * as 1st char --- wled00/FX.cpp | 11 +- wled00/FX.h | 6 +- wled00/data/index.htm | 72 +- wled00/data/liveview.htm | 13 +- wled00/html_other.h | 54 +- wled00/html_settings.h | 6 +- wled00/html_ui.h | 2900 +++++++++++++++++++------------------- wled00/wled00.ino | 28 +- wled00/wled01_eeprom.ino | 1 + wled00/wled02_xml.ino | 12 +- wled00/wled03_set.ino | 21 +- wled00/wled05_init.ino | 5 +- wled00/wled07_notify.ino | 1 - wled00/wled11_ol.ino | 228 +-- wled00/wled17_mqtt.ino | 7 + 15 files changed, 1605 insertions(+), 1760 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c862a0854..fc13c60d9 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2302,6 +2302,10 @@ uint16_t WS2812FX::mode_glitter() } +//values close to 100 produce 5Hz flicker, which looks very candle-y +//Inspired by https://github.com/avanhanegem/ArduinoCandleEffectNeoPixel +//and https://cpldcpu.wordpress.com/2016/01/05/reverse-engineering-a-real-candle/ + uint16_t WS2812FX::mode_candle() { if (SEGENV.call == 0) { @@ -2329,17 +2333,14 @@ uint16_t WS2812FX::mode_candle() uint8_t valrange = SEGMENT.intensity; uint8_t rndval = valrange >> 1; target = random8(rndval) + random8(rndval); - if (target < (rndval >> 1)) target += random8(rndval >> 1); + if (target < (rndval >> 1)) target = (rndval >> 1) + random8(rndval); uint8_t offset = (255 - valrange) >> 1; target += offset; uint8_t dif = (target > s) ? target - s : s - target; - uint16_t fadeSpeed = 50 + ((255-SEGMENT.speed) >> 1); //how much to move closer to target per frame - fadeStep = dif; - uint8_t frames = 1; - if (fadeSpeed > FRAMETIME) fadeStep = dif / (fadeSpeed / FRAMETIME); + fadeStep = dif >> 2; //mode called every ~25 ms, so 4 frames to have a new target every 100ms if (fadeStep == 0) fadeStep = 1; SEGENV.step = fadeStep; diff --git a/wled00/FX.h b/wled00/FX.h index 9ba70357d..44be95d57 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -571,12 +571,12 @@ class WS2812FX { const char JSON_mode_names[] PROGMEM = R"=====([ "Solid","Blink","Breathe","Wipe","Wipe Random","Random Colors","Sweep","Dynamic","Colorloop","Rainbow", "Scan","Dual Scan","Fade","Theater","Theater Rainbow","Running","Saw","Twinkle","Dissolve","Dissolve Rnd", -"Sparkle","Dark Sparkle","Sparkle+","Strobe","Strobe Rainbow","Mega Strobe","Blink Rainbow","Android","Chase","Chase Random", +"Sparkle","Sparkle Dark","Sparkle+","Strobe","Strobe Rainbow","Strobe Mega","Blink Rainbow","Android","Chase","Chase Random", "Chase Rainbow","Chase Flash","Chase Flash Rnd","Rainbow Runner","Colorful","Traffic Light","Sweep Random","Running 2","Red & Blue","Stream", "Scanner","Lighthouse","Fireworks","Rain","Merry Christmas","Fire Flicker","Gradient","Loading","Police","Police All", "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", -"Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", -"Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", +"Scanner Dual ","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", +"Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Meteor Smooth","Railway","Ripple", "Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle" ])====="; diff --git a/wled00/data/index.htm b/wled00/data/index.htm index 460bcadfd..c3f1cb779 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -10,7 +10,7 @@ -

WLED Software Update

Installed version: 0.9.0-dev
Download the latest binary:

)====="; +

WLED Software Update

Installed version: 0.9.0-b1
Download the latest binary:

)====="; //new user welcome page @@ -36,14 +36,50 @@ const char PAGE_liveview[] PROGMEM = R"=====( WLED Live Preview - - -
- + + +
+ )====="; diff --git a/wled00/html_settings.h b/wled00/html_settings.h index df1bd7538..14e838551 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -121,7 +121,7 @@ Color order:

Defaults

@@ -287,7 +287,7 @@ Clock Overlay:
@@ -365,7 +365,7 @@ HTTP traffic is unencrypted. An attacker in the same network can intercept form
Enable ArduinoOTA:

About

-WLED version 0.9.0-dev

+WLED version 0.9.0-b1

Contributors, dependencies and special thanks
A huge thank you to everyone who helped me create WLED!

(c) 2016-2019 Christian Schwinne
diff --git a/wled00/html_ui.h b/wled00/html_ui.h index 3ac3f4fc4..8154304e9 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -10,1464 +10,1448 @@ * 4. update length value */ -const uint16_t PAGE_index_L = 23301; //length of the binary payload +const uint16_t PAGE_index_L = 23049; //length of the binary payload const uint8_t PAGE_index[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x08, 0xb2, 0x51, 0xe8, 0x5d, 0x00, 0x03, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x32, - 0x32, 0x20, 0x28, 0x31, 0x29, 0x2e, 0x68, 0x74, 0x6d, 0x00, 0xd4, 0x7d, 0x69, 0x73, 0xda, 0xca, - 0xb6, 0xe8, 0xe7, 0xec, 0xaa, 0xfd, 0x1f, 0xd8, 0xa4, 0x5e, 0x62, 0x1f, 0x0f, 0x42, 0x4c, 0xc6, - 0x4e, 0x9c, 0x73, 0x5a, 0x42, 0x80, 0x00, 0x61, 0x04, 0x48, 0x80, 0x4f, 0x9d, 0x0f, 0x42, 0x08, - 0x21, 0x10, 0x12, 0x96, 0x04, 0x02, 0xf6, 0xdd, 0xef, 0xb7, 0xbf, 0xd5, 0xad, 0x01, 0x31, 0x25, - 0xce, 0xcd, 0xbe, 0xb7, 0xea, 0x91, 0x04, 0xe8, 0x69, 0xf5, 0xea, 0x35, 0xaf, 0xa5, 0xb6, 0xf3, - 0xf5, 0x8f, 0xf2, 0x0b, 0xdb, 0x1b, 0xb6, 0xb9, 0xd4, 0xd4, 0x5b, 0x98, 0xdf, 0x7e, 0xff, 0xed, - 0x6b, 0xfc, 0xa9, 0x29, 0x63, 0xf8, 0x4c, 0xa5, 0xbe, 0x2e, 0x34, 0x4f, 0x49, 0x59, 0xca, 0x42, - 0x7b, 0x4e, 0xaf, 0x0d, 0xcd, 0x5f, 0xda, 0x8e, 0x97, 0x4e, 0xa9, 0xb6, 0xe5, 0x69, 0x96, 0xf7, - 0x9c, 0xf6, 0x8d, 0xb1, 0x37, 0x7d, 0x1e, 0x6b, 0x6b, 0x43, 0xd5, 0xee, 0x48, 0xe3, 0x36, 0x65, - 0x58, 0x86, 0x67, 0x28, 0xe6, 0x9d, 0xab, 0x2a, 0xa6, 0xf6, 0x4c, 0xdf, 0xa6, 0x16, 0xd0, 0xb3, - 0x58, 0x2d, 0xa2, 0x8e, 0x74, 0x02, 0xb0, 0x3a, 0x55, 0x1c, 0x57, 0x03, 0x40, 0x2b, 0x6f, 0x72, - 0x57, 0x4a, 0x9f, 0x6c, 0xe9, 0x4d, 0xb5, 0x85, 0x76, 0xa7, 0xda, 0xa6, 0xed, 0x24, 0x76, 0xfd, - 0x98, 0x25, 0xaf, 0x03, 0x40, 0xd1, 0xd8, 0x56, 0x73, 0xd3, 0xe1, 0x62, 0x65, 0xb9, 0x34, 0xb5, - 0xbb, 0x85, 0x3d, 0x32, 0xe0, 0xc3, 0xd7, 0x46, 0x77, 0xd0, 0x71, 0xa7, 0x2a, 0x4b, 0x65, 0x64, - 0x6a, 0xe1, 0x5a, 0xd3, 0xb0, 0xe6, 0x29, 0x47, 0x33, 0x9f, 0xd3, 0xee, 0x14, 0x4e, 0xa6, 0xae, - 0xbc, 0x94, 0x01, 0xa0, 0xd2, 0xa9, 0xa9, 0xa3, 0x4d, 0x9e, 0xd3, 0x63, 0xc5, 0x53, 0x9e, 0x8c, - 0x85, 0xa2, 0x6b, 0xd4, 0xe6, 0x0e, 0x0f, 0x7c, 0x19, 0x29, 0xae, 0x56, 0xcc, 0xdf, 0x22, 0x84, - 0x18, 0x84, 0x38, 0xc4, 0xc1, 0x3b, 0xfe, 0xac, 0x22, 0xb6, 0x8a, 0xbf, 0x55, 0x74, 0x78, 0xe3, - 0x4d, 0xb1, 0x37, 0x57, 0x5b, 0xec, 0xd4, 0x6e, 0xe0, 0xbe, 0xb2, 0x64, 0xf2, 0x9d, 0x0a, 0x8f, - 0xbf, 0x8a, 0xc1, 0x6c, 0x9d, 0xcc, 0xad, 0x51, 0x6d, 0x6a, 0x88, 0x7b, 0x38, 0xba, 0xde, 0xe1, - 0x2a, 0xd2, 0x0b, 0x4f, 0xcf, 0xa0, 0x8b, 0x6a, 0xfb, 0x2f, 0x1b, 0xbd, 0x55, 0xd5, 0x90, 0x24, - 0x6c, 0xb8, 0xc7, 0x6a, 0x51, 0x15, 0xd9, 0x46, 0xb9, 0x8f, 0xa6, 0x4b, 0x54, 0x7e, 0xcd, 0x4e, - 0x4a, 0x6d, 0x61, 0xc6, 0x74, 0x73, 0x62, 0x3f, 0x53, 0x12, 0x1b, 0xd9, 0x4c, 0x43, 0x79, 0x65, - 0xb3, 0xfa, 0x84, 0x7d, 0x9c, 0xb2, 0xd6, 0x9b, 0xbd, 0xb2, 0x5b, 0x3a, 0xea, 0xe8, 0xc3, 0x87, - 0x9d, 0xb0, 0x41, 0xdb, 0x96, 0x29, 0x8d, 0xc5, 0x9a, 0x39, 0x30, 0x90, 0xf9, 0x92, 0x15, 0xca, - 0xa8, 0x5c, 0xcc, 0x71, 0xf2, 0x5b, 0xab, 0x86, 0xb4, 0x0c, 0x22, 0x88, 0x98, 0x95, 0xde, 0xbc, - 0xbb, 0x12, 0x17, 0x2c, 0x9b, 0xa6, 0x02, 0x7a, 0x78, 0x86, 0x67, 0x6a, 0xdf, 0xfa, 0x4d, 0xae, - 0xfc, 0x95, 0x0a, 0xbe, 0x93, 0x6e, 0x57, 0x75, 0x8c, 0xa5, 0xf7, 0x6d, 0xb2, 0xb2, 0x54, 0xcf, - 0xb0, 0xad, 0xd4, 0x44, 0xd3, 0xc6, 0x23, 0x45, 0x9d, 0x5f, 0x5d, 0xff, 0xf9, 0xd7, 0x57, 0x2a, - 0x1c, 0x05, 0xb1, 0x71, 0xbd, 0x2d, 0x59, 0xf2, 0xaf, 0x09, 0xb0, 0xe3, 0x6e, 0xa2, 0xa8, 0x5a, - 0xea, 0x4f, 0x0c, 0x20, 0x6c, 0x2e, 0x0c, 0x73, 0xfb, 0x94, 0x4a, 0xd7, 0x58, 0x1e, 0x48, 0xe9, - 0xa6, 0xbf, 0xe0, 0x21, 0xd7, 0x51, 0x9f, 0x52, 0x2b, 0xc7, 0xbc, 0x22, 0xb4, 0xc6, 0x2c, 0x33, - 0x54, 0x05, 0x6f, 0x02, 0x14, 0x27, 0xcb, 0x7c, 0x7b, 0x32, 0xf9, 0x12, 0xc9, 0x09, 0x11, 0x93, - 0x88, 0x09, 0xe3, 0xcc, 0x63, 0xb5, 0xa3, 0x23, 0xc2, 0x02, 0xc4, 0xb8, 0xf0, 0xe6, 0x92, 0xaf, - 0x55, 0x47, 0x0c, 0x49, 0x7d, 0xe9, 0xc5, 0xb4, 0xa5, 0x6d, 0x69, 0x8b, 0xbf, 0xb0, 0x64, 0x01, - 0xe9, 0xd3, 0xcb, 0x85, 0x0c, 0xe2, 0xfb, 0x2d, 0x6f, 0x38, 0x20, 0xac, 0xb4, 0x71, 0x67, 0x07, - 0x7f, 0x95, 0x3a, 0x13, 0x46, 0xef, 0x76, 0x5e, 0xb3, 0x95, 0x9d, 0x8a, 0xdb, 0x6f, 0x3e, 0x7e, - 0x27, 0x1c, 0x25, 0xeb, 0x19, 0xc6, 0x1a, 0xd5, 0xcc, 0x05, 0x6e, 0x7a, 0x78, 0x65, 0x1f, 0x36, - 0x67, 0xe4, 0xb9, 0x55, 0x18, 0xbc, 0x51, 0xd5, 0xa9, 0x39, 0x24, 0x6d, 0x7d, 0x88, 0xa7, 0xb6, - 0xb0, 0x80, 0x94, 0x61, 0x87, 0xa2, 0x40, 0x2b, 0x78, 0x0c, 0x86, 0xaa, 0x15, 0x82, 0xd4, 0x1c, - 0xbf, 0xd5, 0x91, 0x3a, 0x44, 0xf4, 0xa3, 0x3d, 0x1a, 0x74, 0xf2, 0xd0, 0x1c, 0x8e, 0x71, 0x67, - 0x03, 0x2f, 0x62, 0x6d, 0x0b, 0xa1, 0x5e, 0x6e, 0xb1, 0x59, 0x0f, 0xb3, 0x1c, 0xc0, 0x9b, 0x13, - 0x54, 0x64, 0x3c, 0x54, 0x79, 0xf5, 0x17, 0x55, 0x57, 0x1f, 0xf5, 0x2b, 0x79, 0xdc, 0x59, 0x1d, - 0x90, 0xc3, 0xeb, 0x21, 0x92, 0x19, 0x54, 0xa1, 0x57, 0xc3, 0x3e, 0x6d, 0x42, 0xf3, 0xd5, 0x24, - 0xe7, 0xc1, 0x47, 0xab, 0x34, 0x44, 0xa9, 0x29, 0xe6, 0x07, 0xcc, 0x5a, 0xcd, 0x61, 0xfc, 0x1c, - 0xfd, 0xe0, 0x50, 0xe4, 0x88, 0x02, 0x6c, 0x54, 0x85, 0x41, 0x09, 0x23, 0xf1, 0x8a, 0x5c, 0xdc, - 0xc9, 0xb6, 0xd1, 0x72, 0xce, 0xee, 0xf0, 0xb0, 0xe6, 0x22, 0xc1, 0xe7, 0xea, 0x67, 0x49, 0xdc, - 0x39, 0x4f, 0x79, 0x8c, 0x59, 0x81, 0x41, 0x65, 0x81, 0x2a, 0x65, 0x60, 0x71, 0x19, 0xff, 0x8d, - 0x07, 0x12, 0x2f, 0x3e, 0xfa, 0x12, 0xe0, 0x81, 0xdf, 0x54, 0xac, 0x3a, 0xa4, 0xcd, 0xf8, 0xf8, - 0x93, 0xf0, 0xbd, 0x86, 0x3b, 0xbb, 0x18, 0x75, 0xa6, 0x8a, 0x87, 0x19, 0x11, 0x73, 0x93, 0x43, - 0xfc, 0x0b, 0xca, 0xe5, 0xcb, 0x96, 0xde, 0x7e, 0x61, 0x84, 0x3c, 0x4f, 0xe9, 0xf6, 0x8a, 0x5d, - 0xe6, 0x9b, 0x6b, 0x9d, 0x7e, 0x29, 0x2f, 0xf3, 0x9d, 0xd1, 0xf4, 0x45, 0xe3, 0xa8, 0xfc, 0x60, - 0x37, 0x35, 0x56, 0xbc, 0x97, 0x9f, 0xe5, 0x0c, 0x7b, 0xd5, 0x58, 0xe4, 0x9d, 0xb6, 0xb1, 0x59, - 0x35, 0xe7, 0xf9, 0xed, 0x60, 0x26, 0xdc, 0xb4, 0x84, 0x7c, 0xa1, 0x3c, 0x33, 0xb5, 0x76, 0x3f, - 0x4f, 0xd5, 0xe6, 0xac, 0x26, 0x8a, 0x14, 0x95, 0xa3, 0x28, 0x3f, 0xc4, 0xef, 0x32, 0x7c, 0x1b, - 0xc3, 0x6f, 0xdd, 0x5c, 0x84, 0x3f, 0x0b, 0xe1, 0x37, 0xf3, 0x79, 0x6a, 0x66, 0xbe, 0x9c, 0xc0, - 0x67, 0xa8, 0x1b, 0x61, 0xb2, 0xeb, 0x50, 0x42, 0xad, 0x64, 0x4f, 0x56, 0x9b, 0xc7, 0x42, 0x2d, - 0xab, 0x4e, 0x86, 0x9d, 0x47, 0xb1, 0xb6, 0xd3, 0x27, 0xf5, 0xce, 0x43, 0xa1, 0xe6, 0xcd, 0x35, - 0x9a, 0x29, 0x0e, 0x6b, 0xb6, 0x3b, 0x2e, 0x76, 0x72, 0x4a, 0x6d, 0x30, 0x1c, 0xab, 0x1b, 0xda, - 0xaa, 0xc9, 0xd2, 0xf8, 0xa5, 0xb3, 0x2b, 0xd4, 0x5e, 0x7c, 0x95, 0xee, 0x6c, 0x7b, 0x35, 0x10, - 0x26, 0x89, 0xf1, 0xb3, 0x35, 0xa6, 0xa4, 0x02, 0x17, 0xcb, 0x84, 0x7e, 0xff, 0xa3, 0x2f, 0x80, - 0x3f, 0xa1, 0x28, 0x84, 0x4a, 0x47, 0xfc, 0x04, 0x6e, 0x96, 0xd5, 0x42, 0xd8, 0xc7, 0x1c, 0x2c, - 0x01, 0xd6, 0xb5, 0x76, 0x73, 0x26, 0x5e, 0xbf, 0x7f, 0x61, 0x29, 0xcc, 0xbd, 0x88, 0x61, 0x9f, - 0x5e, 0x96, 0xa9, 0x12, 0x2a, 0x37, 0xfc, 0x26, 0xc2, 0xaa, 0xc2, 0xc1, 0x3a, 0xb0, 0x9a, 0x53, - 0xae, 0x23, 0x56, 0xf9, 0x2d, 0x67, 0xd4, 0x75, 0x4e, 0xe6, 0x7b, 0xd2, 0xae, 0xb5, 0x13, 0x06, - 0x20, 0x93, 0x18, 0xee, 0x96, 0xa7, 0x8a, 0x6f, 0xfc, 0x8e, 0x67, 0x1b, 0x54, 0xf6, 0xcd, 0x34, - 0x9c, 0x7e, 0x63, 0x39, 0x94, 0x01, 0xce, 0x0d, 0x62, 0x85, 0xad, 0xa0, 0x37, 0x66, 0xb2, 0x2c, - 0x39, 0x0d, 0x1f, 0xe8, 0xd2, 0x1a, 0x00, 0xd9, 0x05, 0x07, 0x9b, 0x0f, 0x56, 0x44, 0x2f, 0x88, - 0x01, 0x55, 0x65, 0xa5, 0x0e, 0xdf, 0xe1, 0x24, 0xc6, 0x10, 0xa6, 0xbc, 0x31, 0xec, 0x71, 0x5d, - 0xae, 0xc3, 0x77, 0xa5, 0x5d, 0xa5, 0xcb, 0xd1, 0xc2, 0x4e, 0xdd, 0xc1, 0x59, 0x58, 0x54, 0xe6, - 0x67, 0xd4, 0x9b, 0x3d, 0x13, 0x4c, 0x89, 0x91, 0xd7, 0xc5, 0x37, 0x24, 0xb1, 0x7d, 0x4a, 0x79, - 0xeb, 0x37, 0xbc, 0xe4, 0x3e, 0xb5, 0x17, 0x0a, 0xc6, 0xdf, 0x1e, 0x65, 0x59, 0xee, 0xba, 0xc1, - 0xf9, 0xeb, 0x1c, 0xaa, 0x88, 0x2f, 0x08, 0x99, 0x1c, 0x96, 0x57, 0x54, 0x17, 0xb9, 0x01, 0xea, - 0xaa, 0x39, 0x34, 0x44, 0xcc, 0xa6, 0xbc, 0xbb, 0x41, 0x2f, 0xa5, 0xd2, 0x4c, 0xac, 0x71, 0xed, - 0x76, 0x1e, 0x3d, 0xec, 0x42, 0x81, 0xd3, 0x19, 0x99, 0x7a, 0xe0, 0xca, 0x6f, 0xf8, 0xfc, 0x80, - 0xa4, 0x88, 0x69, 0xd9, 0xe3, 0x07, 0x35, 0x9d, 0x1b, 0x54, 0xa6, 0x12, 0xb0, 0x39, 0xcf, 0x30, - 0xfe, 0xb0, 0x0d, 0x70, 0x16, 0xf5, 0x6d, 0x9e, 0xa9, 0x6f, 0x87, 0x74, 0xab, 0xac, 0xde, 0xa0, - 0x9e, 0x9a, 0x15, 0x76, 0x7c, 0xbf, 0xb2, 0xcb, 0x33, 0x82, 0x2f, 0x64, 0x5b, 0xf0, 0xd9, 0xda, - 0xc1, 0x18, 0x3b, 0x9c, 0xf1, 0xfa, 0xb0, 0xc6, 0xc3, 0x5c, 0x7e, 0xcb, 0x57, 0x2b, 0x1d, 0x31, - 0x84, 0x55, 0x62, 0x80, 0x0e, 0x9b, 0xc6, 0xd6, 0xa5, 0xb8, 0xa9, 0xa0, 0x54, 0xe9, 0xc7, 0x32, - 0x38, 0xaf, 0x9b, 0xb6, 0x59, 0xe7, 0x44, 0xba, 0x34, 0xaa, 0x4e, 0x85, 0x6e, 0x7b, 0xeb, 0x3a, - 0x42, 0x6f, 0x6a, 0xf2, 0xe0, 0x61, 0x5e, 0x9a, 0x1b, 0xa1, 0xbd, 0x2b, 0x0c, 0xab, 0xcc, 0x54, - 0x16, 0xcb, 0x95, 0x3e, 0x27, 0xa3, 0x8e, 0x3c, 0xab, 0x20, 0x19, 0xbc, 0x50, 0xbf, 0x9c, 0xa7, - 0x7a, 0x48, 0x64, 0x7d, 0x86, 0xef, 0x8a, 0xac, 0xfb, 0x26, 0xcc, 0xfc, 0xc2, 0x4b, 0x4d, 0xa2, - 0x44, 0xce, 0xcd, 0xbf, 0x70, 0x2e, 0x25, 0xd6, 0xa4, 0xfc, 0x4b, 0xcf, 0xdf, 0x36, 0x0c, 0x0f, - 0x71, 0x53, 0xde, 0x6f, 0x74, 0xe7, 0x3e, 0xd5, 0x37, 0xb9, 0x97, 0xdd, 0xd2, 0x6a, 0x6e, 0x4b, - 0x2b, 0xb1, 0x32, 0x2c, 0x34, 0x59, 0xbf, 0x20, 0xcf, 0xd1, 0xaa, 0xb9, 0x7d, 0xb4, 0x5e, 0x66, - 0x1e, 0xc7, 0x60, 0xba, 0xf3, 0x65, 0xe0, 0xd7, 0x0b, 0x31, 0xf7, 0x20, 0x38, 0x59, 0x4c, 0x53, - 0xae, 0x2b, 0x74, 0x84, 0x8d, 0xda, 0xaf, 0x6c, 0xf2, 0x4c, 0x65, 0x33, 0x94, 0x2b, 0x48, 0x7d, - 0x41, 0xa2, 0x0a, 0xb2, 0xc1, 0x5b, 0x4d, 0x9d, 0xb3, 0xea, 0x33, 0x29, 0x13, 0x9e, 0x3d, 0x57, - 0x01, 0x5a, 0xc5, 0xe7, 0x9d, 0x09, 0xdb, 0x04, 0x4d, 0x2c, 0x64, 0x78, 0x7d, 0xd9, 0xcd, 0x4f, - 0xaa, 0x9d, 0xf9, 0x8c, 0xd5, 0xe7, 0x5a, 0x6d, 0x61, 0x56, 0x3b, 0x32, 0x23, 0x76, 0xa4, 0xd7, - 0x65, 0x6d, 0x9a, 0xaf, 0xb3, 0x86, 0xf0, 0x5a, 0xed, 0x94, 0x4a, 0x70, 0x96, 0x61, 0x85, 0xe6, - 0x72, 0xad, 0x59, 0xfe, 0xa6, 0x35, 0x1b, 0x77, 0x2a, 0x1b, 0xbd, 0x24, 0x00, 0x6f, 0x08, 0xaf, - 0xe9, 0x8c, 0xc2, 0xb3, 0x95, 0x06, 0x9c, 0xc7, 0x95, 0x38, 0xb9, 0xaa, 0x74, 0xf2, 0x5a, 0x6d, - 0x5a, 0x58, 0x76, 0xe6, 0xb2, 0xd8, 0x64, 0xe7, 0xcb, 0xae, 0xc1, 0xe9, 0xd5, 0x99, 0xbf, 0xd4, - 0xb8, 0x61, 0xb4, 0x36, 0x84, 0x55, 0xa8, 0x6a, 0xec, 0x3c, 0xe2, 0x77, 0x86, 0x2a, 0x0e, 0xcb, - 0x33, 0xd4, 0x54, 0x10, 0x97, 0x47, 0x7d, 0x6c, 0xe2, 0x3a, 0xaa, 0x86, 0xc4, 0x12, 0x53, 0xd6, - 0xb9, 0x35, 0x12, 0xf3, 0x4c, 0xd9, 0xe7, 0x5e, 0x50, 0xd7, 0x65, 0x40, 0x3e, 0xd7, 0xa8, 0x0b, - 0x3c, 0xf7, 0xd5, 0x6a, 0xdd, 0x28, 0x31, 0xf5, 0xd9, 0x90, 0xc2, 0xed, 0x56, 0x4f, 0xcc, 0xb6, - 0xb6, 0xea, 0x0a, 0xf5, 0x4a, 0x4c, 0x5b, 0xe7, 0x26, 0xa8, 0x97, 0x67, 0xda, 0x3e, 0x07, 0x32, - 0xe1, 0x32, 0xc2, 0x74, 0x38, 0x41, 0x1d, 0xa0, 0xc3, 0x4e, 0xcd, 0x62, 0x9e, 0x57, 0x74, 0x90, - 0x9d, 0x0e, 0xa1, 0x4b, 0x95, 0xf1, 0xa5, 0x6d, 0x0b, 0xe8, 0x55, 0x37, 0x04, 0x83, 0x01, 0xd9, - 0xaa, 0xe8, 0xc2, 0x46, 0x16, 0x87, 0x65, 0xa6, 0xc2, 0x97, 0xcb, 0xfe, 0x78, 0x51, 0xde, 0x0a, - 0x3d, 0xd8, 0xbb, 0xc9, 0x36, 0x44, 0x9e, 0xf5, 0x39, 0x91, 0xdb, 0xf2, 0xe2, 0xab, 0xae, 0xbe, - 0xe0, 0x71, 0xe4, 0xcb, 0x03, 0xa4, 0x73, 0x2c, 0x92, 0x87, 0x55, 0xe4, 0x77, 0xba, 0xc8, 0x2f, - 0xd5, 0x5e, 0xf5, 0xd2, 0x8c, 0xf3, 0x4b, 0x0c, 0xeb, 0x1b, 0x73, 0x16, 0xb9, 0x0c, 0xc7, 0x08, - 0x06, 0x57, 0x1d, 0xd6, 0xca, 0x3a, 0x1e, 0x17, 0x2a, 0xb2, 0xcf, 0x33, 0x48, 0xac, 0xdd, 0xec, - 0x76, 0x8f, 0xa3, 0xfe, 0xae, 0x44, 0xf5, 0x69, 0x97, 0xa9, 0x02, 0xd8, 0xb2, 0xaf, 0xb5, 0x00, - 0x17, 0xd8, 0x06, 0xde, 0xaa, 0x3e, 0xcf, 0xea, 0x36, 0x3f, 0x42, 0xba, 0x54, 0x66, 0xe7, 0x2c, - 0x23, 0xe2, 0xb1, 0x12, 0xd7, 0x41, 0xb6, 0x04, 0xfd, 0x12, 0x3b, 0xff, 0xc9, 0xf9, 0x56, 0x7d, - 0xd4, 0x8e, 0xf6, 0xc3, 0x2a, 0xe6, 0x23, 0x87, 0xca, 0x8b, 0x65, 0x5a, 0x14, 0x64, 0xc4, 0xe4, - 0xc1, 0x35, 0x31, 0x5d, 0x2c, 0x57, 0xc2, 0x14, 0x68, 0xde, 0x01, 0xb9, 0xea, 0x0a, 0x99, 0x50, - 0xaf, 0x40, 0x6f, 0x02, 0xd9, 0xc2, 0x7d, 0xa1, 0xec, 0xec, 0xb8, 0x8d, 0x34, 0x60, 0xb6, 0x6a, - 0xad, 0xbe, 0x53, 0x69, 0x90, 0x37, 0xd0, 0xbd, 0xe1, 0x0e, 0x68, 0x0c, 0x72, 0x38, 0xac, 0xa1, - 0x5d, 0xac, 0xa7, 0xb3, 0x16, 0x0b, 0xfc, 0x00, 0x1d, 0x05, 0xb9, 0x84, 0xf3, 0x73, 0x35, 0x06, - 0xf7, 0x45, 0x7a, 0xea, 0xf3, 0xa8, 0x3d, 0x1b, 0xe6, 0xa4, 0x8e, 0x3a, 0x94, 0xa7, 0xa8, 0xf3, - 0x62, 0xa8, 0x16, 0xc8, 0xbf, 0x55, 0xdf, 0xd9, 0x10, 0x1f, 0x0e, 0x23, 0x79, 0x73, 0xe6, 0xbd, - 0x2d, 0x98, 0x97, 0x6d, 0xa7, 0xc6, 0x8a, 0x14, 0x8c, 0x53, 0x75, 0xc6, 0x77, 0x86, 0xf2, 0xab, - 0xac, 0xb3, 0xa2, 0x29, 0x83, 0xac, 0x29, 0xd2, 0x6b, 0x45, 0xaa, 0x00, 0x2b, 0x17, 0x20, 0xbf, - 0xa6, 0x64, 0xd6, 0x79, 0x46, 0x96, 0x17, 0x1c, 0xab, 0x6c, 0xf4, 0x81, 0x04, 0xfb, 0xb4, 0x8d, - 0x10, 0x26, 0x13, 0xee, 0x51, 0xce, 0x67, 0x5b, 0x34, 0x37, 0xa8, 0xb6, 0x0b, 0xbb, 0xd9, 0x2b, - 0x57, 0xd2, 0x79, 0x54, 0x9a, 0x0f, 0x33, 0xad, 0x16, 0xcb, 0xb9, 0xed, 0x5d, 0xc9, 0xe5, 0x7b, - 0x62, 0x0b, 0xcd, 0xd4, 0x10, 0x4e, 0x25, 0xd2, 0x85, 0x48, 0x37, 0xa6, 0xb2, 0xd9, 0x47, 0x75, - 0x56, 0x22, 0x76, 0x5e, 0x9e, 0xdc, 0xc8, 0xa8, 0xe8, 0xb2, 0x45, 0x1f, 0xfc, 0x35, 0x8b, 0x43, - 0x1e, 0x6e, 0xfb, 0x0e, 0x9d, 0xdc, 0x71, 0x5b, 0x35, 0xd7, 0xf4, 0x39, 0x90, 0x41, 0xb5, 0xd6, - 0x02, 0x3a, 0xf4, 0xb9, 0xc2, 0xcb, 0x98, 0xe5, 0x0c, 0xde, 0xa8, 0x64, 0x7a, 0xf3, 0xc2, 0xb0, - 0x2f, 0xd1, 0x89, 0x36, 0xfd, 0xea, 0xb1, 0x37, 0x93, 0x8c, 0x59, 0xef, 0x66, 0x96, 0xa5, 0xb5, - 0x87, 0x9a, 0x4e, 0x3c, 0xef, 0x78, 0x5d, 0xd8, 0xa6, 0xe4, 0xc1, 0x8b, 0xd1, 0x01, 0x6a, 0x4d, - 0x1b, 0x8d, 0x5d, 0x3f, 0x13, 0xf0, 0xbb, 0x20, 0x01, 0xbf, 0x9b, 0x0e, 0xf6, 0x34, 0x0d, 0x91, - 0x04, 0x8f, 0x66, 0xc8, 0x43, 0xcc, 0xa3, 0x1d, 0xe6, 0x19, 0xe8, 0x4d, 0x0e, 0xfc, 0xca, 0xb4, - 0xd5, 0x13, 0x64, 0xbe, 0x23, 0xcd, 0x98, 0x90, 0xf7, 0x20, 0xff, 0x26, 0xb7, 0x15, 0x2c, 0xde, - 0x57, 0x67, 0xdc, 0x4e, 0x28, 0x0b, 0x5b, 0x95, 0xad, 0x77, 0xd9, 0x0a, 0xdd, 0xcb, 0xbd, 0x36, - 0x38, 0x34, 0x90, 0x3b, 0xe2, 0xa6, 0x66, 0x14, 0xb8, 0xca, 0x24, 0x3f, 0x47, 0xdd, 0x65, 0x1f, - 0xfe, 0x3d, 0xb2, 0x1b, 0x24, 0xd6, 0x41, 0xd7, 0x6b, 0x90, 0x36, 0x0c, 0x04, 0x46, 0x16, 0x04, - 0xd7, 0x97, 0x55, 0x46, 0x1e, 0xe5, 0x97, 0x95, 0xb5, 0xac, 0x55, 0xe8, 0x59, 0xae, 0xdf, 0xec, - 0xf3, 0x99, 0xfa, 0x5c, 0x9f, 0x0a, 0x39, 0x11, 0x3c, 0xc6, 0x6b, 0x5f, 0xee, 0x0e, 0xe7, 0x75, - 0x69, 0x38, 0xe5, 0x41, 0x47, 0x47, 0x93, 0x3c, 0x02, 0xde, 0xb0, 0xa8, 0xfd, 0xd0, 0x5f, 0x11, - 0x23, 0x21, 0xa0, 0x06, 0x96, 0xdd, 0x47, 0x10, 0x69, 0x84, 0x46, 0xe0, 0x63, 0x91, 0xe8, 0x27, - 0xfd, 0x82, 0x5a, 0x0d, 0xfd, 0xc2, 0x8c, 0x37, 0x02, 0xb9, 0xab, 0x83, 0xfd, 0xc3, 0x67, 0x6a, - 0x4d, 0x93, 0x76, 0xef, 0x44, 0x26, 0xa5, 0x90, 0x67, 0xbd, 0x50, 0x86, 0x61, 0x3d, 0xf6, 0x27, - 0x43, 0x16, 0x55, 0x98, 0x7a, 0x77, 0x60, 0xaf, 0x9b, 0x1b, 0x77, 0x04, 0x36, 0xb9, 0xd8, 0x95, - 0x4c, 0x51, 0xe2, 0xcc, 0xba, 0x66, 0x94, 0xd6, 0xd5, 0x8d, 0xbb, 0x6e, 0xe6, 0x96, 0xf5, 0xae, - 0x8c, 0xdc, 0xfa, 0x56, 0x2d, 0x82, 0xb2, 0x89, 0x5c, 0xcf, 0xb6, 0xea, 0x5b, 0xff, 0xb8, 0x4d, - 0x77, 0x33, 0x2e, 0xdd, 0x92, 0xbc, 0x26, 0xb2, 0x11, 0xc8, 0xb5, 0xf4, 0xf0, 0x92, 0x79, 0xad, - 0xbe, 0xec, 0x3c, 0x39, 0xb0, 0x85, 0xc9, 0xf6, 0xec, 0xb1, 0xb8, 0x39, 0xd2, 0x05, 0xe6, 0xa8, - 0x8d, 0x2a, 0x72, 0x77, 0x27, 0x85, 0x30, 0xdd, 0x28, 0xc8, 0x88, 0xf8, 0x4b, 0x72, 0x83, 0xa6, - 0x8e, 0xe3, 0x43, 0x4c, 0x1c, 0xce, 0x00, 0x1e, 0x5a, 0x40, 0x83, 0x5d, 0xac, 0xdb, 0x98, 0x46, - 0x5b, 0xac, 0x83, 0x52, 0xa4, 0xe3, 0x66, 0xcb, 0xe7, 0x6a, 0x75, 0x9f, 0xf8, 0xc6, 0x40, 0x56, - 0x0d, 0xa2, 0xa3, 0xd6, 0x89, 0xef, 0x98, 0xa9, 0x16, 0xd0, 0x2c, 0xa2, 0x4f, 0x0e, 0xec, 0xeb, - 0xb6, 0x32, 0xcd, 0x30, 0x10, 0x7f, 0xc8, 0xf5, 0x4d, 0x5d, 0xad, 0xd3, 0x43, 0x0f, 0xe8, 0xc3, - 0x6b, 0xdb, 0xfc, 0xba, 0xc6, 0x8c, 0x9b, 0x42, 0x2d, 0x53, 0x63, 0x43, 0xfc, 0x29, 0x63, 0x9e, - 0x43, 0x6b, 0x31, 0x3b, 0xdb, 0x7a, 0x9a, 0x60, 0xc6, 0x74, 0x7d, 0x95, 0x7a, 0x52, 0xcf, 0xd0, - 0x6d, 0x81, 0x63, 0xb8, 0x22, 0xd0, 0xcd, 0xad, 0x76, 0x4b, 0x7d, 0x11, 0xdb, 0xd7, 0x9d, 0xdc, - 0x44, 0x7a, 0x25, 0xcb, 0xec, 0x5e, 0x1b, 0x68, 0x2a, 0xf1, 0x0c, 0xed, 0xb7, 0xcb, 0xa0, 0xd3, - 0x72, 0xcf, 0x7d, 0xe8, 0xcc, 0x36, 0x8b, 0xc6, 0x20, 0xd3, 0xad, 0x6f, 0xa4, 0x90, 0xd6, 0x0c, - 0xdd, 0x5a, 0x67, 0x84, 0x56, 0xbe, 0xd4, 0xe1, 0xe2, 0x39, 0x8f, 0x5e, 0xa3, 0xd3, 0x6d, 0x56, - 0x8c, 0xd2, 0x6b, 0x93, 0x55, 0xad, 0x97, 0x29, 0x27, 0x96, 0xd1, 0x92, 0x05, 0xa9, 0x6c, 0xb6, - 0x44, 0x80, 0x9f, 0x15, 0x18, 0xa0, 0x63, 0x2d, 0xf0, 0x3f, 0xac, 0x43, 0x65, 0xdd, 0xb2, 0x4c, - 0xec, 0xe1, 0x1c, 0x09, 0xfa, 0x51, 0xbc, 0x11, 0xd0, 0x70, 0x2f, 0x3b, 0x1b, 0xc9, 0x6a, 0x6d, - 0xa4, 0x4e, 0x0b, 0xeb, 0x6f, 0x37, 0xa1, 0xdf, 0x33, 0x75, 0x00, 0xf4, 0x91, 0x2b, 0x4c, 0x40, - 0x6b, 0xf0, 0x6b, 0xb5, 0xf6, 0xac, 0x30, 0xae, 0x6e, 0x6c, 0xb5, 0xda, 0xcb, 0x03, 0xfe, 0xa2, - 0xd4, 0x31, 0xf2, 0xeb, 0x96, 0xb2, 0x72, 0xde, 0x8a, 0xde, 0xd9, 0x31, 0xb4, 0x94, 0x20, 0x0e, - 0xc9, 0xdc, 0xb4, 0xe7, 0xea, 0x76, 0xc0, 0xea, 0x54, 0x75, 0x96, 0xd1, 0x5b, 0xdd, 0xd2, 0xaa, - 0x33, 0x15, 0x25, 0xbd, 0xb1, 0x7a, 0xd3, 0xdb, 0x59, 0x87, 0x7c, 0x32, 0x90, 0x36, 0xf5, 0xf2, - 0x37, 0x9d, 0x5d, 0x5d, 0x6d, 0x94, 0x4b, 0x4a, 0xbb, 0x8b, 0xe8, 0xe6, 0xb6, 0x50, 0xad, 0xe0, - 0x20, 0x4b, 0xe7, 0x70, 0x78, 0x59, 0xc6, 0x19, 0x16, 0xb6, 0x53, 0x4c, 0x10, 0x3f, 0x32, 0x20, - 0x05, 0x1d, 0x1e, 0xc7, 0x8b, 0x7d, 0x0f, 0x41, 0x84, 0x86, 0xe3, 0x4c, 0x0a, 0x4f, 0xa4, 0x82, - 0x6c, 0x88, 0x21, 0x92, 0xe4, 0xe3, 0x88, 0x0b, 0x07, 0xa7, 0x38, 0xbb, 0xe2, 0x76, 0x38, 0xd6, - 0xe0, 0x7c, 0x2c, 0xcd, 0x60, 0x0f, 0x5f, 0x25, 0x46, 0xf1, 0xeb, 0x78, 0x3e, 0xe8, 0x25, 0x8e, - 0x7b, 0x21, 0xee, 0x23, 0xc1, 0x2b, 0x33, 0xa0, 0x0a, 0x2a, 0x8e, 0xd7, 0x96, 0x58, 0x4f, 0x21, - 0x65, 0x69, 0xe2, 0x60, 0x0f, 0x88, 0x6b, 0x22, 0x36, 0x8f, 0x7a, 0x22, 0xf1, 0xe7, 0x15, 0xae, - 0x53, 0x62, 0x98, 0x0e, 0x37, 0xa8, 0x6f, 0x38, 0x13, 0xc5, 0x72, 0xa8, 0xca, 0x44, 0x6f, 0xb7, - 0x02, 0xfe, 0x5e, 0xc6, 0x34, 0x67, 0xb0, 0x5c, 0xee, 0x84, 0x5e, 0x8b, 0xe8, 0xa5, 0x84, 0x69, - 0xce, 0x44, 0xf6, 0x94, 0xd9, 0x49, 0xd9, 0x63, 0x5d, 0xae, 0xef, 0xa4, 0x38, 0x16, 0x42, 0x06, - 0x7d, 0x43, 0xf9, 0x2c, 0x3b, 0x59, 0x97, 0x10, 0xb8, 0x44, 0x06, 0xb5, 0x86, 0x2b, 0xb9, 0x2b, - 0x3c, 0x0a, 0xb5, 0x16, 0xca, 0x4f, 0xfd, 0x39, 0x23, 0xab, 0x35, 0xa1, 0xab, 0xf2, 0x4c, 0x57, - 0x54, 0xdb, 0x5d, 0x75, 0xc3, 0xd0, 0x63, 0xae, 0xdd, 0x6d, 0xc9, 0xcd, 0x39, 0xb3, 0x03, 0x0b, - 0x53, 0xa8, 0x4d, 0x69, 0xab, 0x33, 0x7f, 0x15, 0xdb, 0xbb, 0x61, 0x56, 0x62, 0x40, 0x5f, 0xa6, - 0x63, 0xb1, 0x05, 0x31, 0x86, 0xc4, 0xbd, 0x56, 0x5f, 0x37, 0x19, 0x0d, 0xbd, 0x16, 0x34, 0x1f, - 0xd2, 0xae, 0xa1, 0xf9, 0x00, 0x19, 0x2b, 0x03, 0xd1, 0x48, 0x11, 0x48, 0x56, 0xe9, 0xee, 0xe1, - 0x69, 0x0c, 0x4f, 0x4b, 0x2b, 0xb1, 0x26, 0xf8, 0x94, 0xab, 0xae, 0x64, 0x56, 0x24, 0x7b, 0x53, - 0x2b, 0xee, 0x11, 0x7c, 0x18, 0xf8, 0x7f, 0x75, 0x53, 0xf7, 0x2b, 0x0d, 0x29, 0x63, 0x36, 0xd4, - 0xae, 0x34, 0x67, 0x65, 0x95, 0x87, 0x3d, 0x47, 0x2f, 0xbd, 0x25, 0x23, 0xf6, 0xec, 0x42, 0x1f, - 0xf6, 0x60, 0x2b, 0x6a, 0xbd, 0xce, 0xca, 0x9b, 0xee, 0xdc, 0xec, 0x11, 0xfd, 0x06, 0xda, 0x53, - 0x37, 0x2e, 0xd0, 0xb7, 0x21, 0x63, 0x16, 0xd5, 0x74, 0xf4, 0x86, 0xca, 0x3a, 0xea, 0x04, 0x71, - 0x71, 0xbf, 0xb2, 0x8f, 0xdd, 0x69, 0x0e, 0xe2, 0x20, 0x61, 0xcb, 0x31, 0xa1, 0x5f, 0xce, 0xd5, - 0x03, 0x1d, 0x86, 0x98, 0x58, 0x3d, 0x8a, 0x73, 0xa4, 0xc0, 0x06, 0x18, 0x6a, 0xad, 0x86, 0x65, - 0x36, 0xf0, 0xdd, 0xfd, 0x0a, 0xc9, 0x31, 0xf8, 0x05, 0x8e, 0xa7, 0x04, 0xbf, 0x25, 0xd7, 0xcb, - 0xfc, 0xb6, 0xde, 0xa6, 0xfb, 0xe4, 0x13, 0x35, 0xde, 0xa8, 0xc9, 0xd0, 0xac, 0x1b, 0x43, 0xb3, - 0x0d, 0x6d, 0x61, 0xd6, 0xdc, 0x74, 0xb2, 0x9d, 0x79, 0x27, 0x33, 0x9e, 0xbf, 0x42, 0xe0, 0x26, - 0xcc, 0x70, 0x9f, 0x4f, 0xc6, 0xbd, 0x2e, 0xe4, 0x03, 0x86, 0x30, 0x83, 0xbe, 0x19, 0xc8, 0x34, - 0xe4, 0x27, 0x79, 0x04, 0xf9, 0xc9, 0x96, 0x07, 0x7f, 0xc7, 0xef, 0x9a, 0x8f, 0x8f, 0xc6, 0xab, - 0x26, 0xf4, 0x2a, 0x93, 0x7a, 0xcf, 0xdf, 0x4c, 0xe6, 0x75, 0x76, 0xd2, 0xab, 0x57, 0x5f, 0xb9, - 0x71, 0x0d, 0x02, 0xce, 0x1a, 0xc0, 0xac, 0x0a, 0x83, 0x02, 0x2b, 0x5a, 0x99, 0x6d, 0x9b, 0x0d, - 0xe7, 0x89, 0x5c, 0x23, 0x82, 0x07, 0x70, 0x88, 0x3f, 0x78, 0xa3, 0x28, 0x07, 0x65, 0x04, 0x56, - 0xf7, 0xb1, 0xd0, 0x65, 0xc0, 0xee, 0xe1, 0xfc, 0x4a, 0x0c, 0x72, 0x80, 0xe8, 0x1c, 0x9d, 0xbd, - 0x4f, 0xe6, 0x77, 0x62, 0x68, 0xdf, 0x04, 0xba, 0xd2, 0x3b, 0x13, 0xa7, 0xec, 0xfa, 0x4e, 0xcb, - 0x50, 0x17, 0xad, 0x1d, 0x96, 0x29, 0xa5, 0xae, 0x0d, 0x16, 0x99, 0x56, 0x59, 0x2e, 0x34, 0xb6, - 0xab, 0xde, 0x30, 0xdb, 0xf2, 0xe5, 0x0c, 0xdd, 0x52, 0xb7, 0xdc, 0x54, 0x83, 0x98, 0x45, 0x9a, - 0xa9, 0xb9, 0xf6, 0x5c, 0x0f, 0xe7, 0x0e, 0xb3, 0x75, 0x9f, 0x7f, 0x68, 0xf5, 0xba, 0x19, 0x58, - 0x53, 0x57, 0xab, 0xad, 0xd9, 0x1c, 0xf2, 0x06, 0x6d, 0xc2, 0x4f, 0xf9, 0x41, 0xab, 0xd5, 0x93, - 0xd5, 0x9b, 0xd6, 0x6e, 0xdc, 0xad, 0x32, 0xe3, 0x02, 0xb1, 0x37, 0x62, 0x19, 0xf8, 0x28, 0x41, - 0x7e, 0x57, 0x77, 0x82, 0x3a, 0x0e, 0xe4, 0x76, 0xa0, 0x67, 0xd8, 0xf7, 0x72, 0x3d, 0xf8, 0x14, - 0x05, 0x87, 0xf2, 0x99, 0x3e, 0xce, 0x8f, 0x51, 0x65, 0x88, 0x8b, 0x6f, 0x72, 0xfc, 0x1d, 0xeb, - 0x1d, 0x79, 0x0d, 0x21, 0xfe, 0x80, 0xf3, 0xe7, 0x11, 0x6b, 0x8a, 0x58, 0xdf, 0x38, 0xac, 0x6f, - 0x53, 0x1c, 0x87, 0x60, 0x3f, 0xd9, 0xda, 0xe1, 0xfc, 0x4d, 0x80, 0xfc, 0x0d, 0xce, 0xd7, 0x13, - 0x68, 0x14, 0x7c, 0xca, 0x0c, 0xee, 0x17, 0x55, 0x32, 0xd6, 0x82, 0xd8, 0x16, 0xfc, 0xfc, 0x14, - 0x68, 0x44, 0xe3, 0x4f, 0x0e, 0xf6, 0xaf, 0x74, 0x2b, 0xb2, 0xce, 0x33, 0x7d, 0xc8, 0x89, 0x9c, - 0x06, 0xfd, 0xda, 0xd7, 0xb9, 0x8d, 0x80, 0x45, 0x89, 0xd6, 0xeb, 0x32, 0xa5, 0xb8, 0xac, 0x3c, - 0xc9, 0x3a, 0xc8, 0x1c, 0x3c, 0xbe, 0x65, 0xdd, 0xb7, 0x37, 0xc3, 0xee, 0x37, 0xa6, 0x43, 0x06, - 0xfc, 0xf4, 0xdb, 0x9b, 0x8d, 0xde, 0xea, 0xa6, 0x8d, 0xff, 0x01, 0x9e, 0xaf, 0x90, 0x1b, 0x2e, - 0xfb, 0x32, 0xd8, 0x21, 0xd9, 0x1c, 0x06, 0xf2, 0x0b, 0xfe, 0x09, 0xec, 0x83, 0x83, 0x8d, 0xc3, - 0x0b, 0x46, 0xb6, 0x02, 0x66, 0x08, 0x9d, 0xcd, 0xeb, 0x62, 0xff, 0x0d, 0x32, 0x18, 0xf8, 0xef, - 0x19, 0xe4, 0x3b, 0xb3, 0x20, 0x6e, 0x84, 0xbe, 0x88, 0x87, 0x46, 0x38, 0x3f, 0xb6, 0xb7, 0x5c, - 0x24, 0xb7, 0x11, 0xff, 0xbb, 0x87, 0x6d, 0x3c, 0x5e, 0xdf, 0xe2, 0x3c, 0x42, 0x00, 0xdf, 0x3e, - 0x7d, 0xe9, 0x59, 0x22, 0xe8, 0x0c, 0x3f, 0x1d, 0x43, 0xdc, 0xd4, 0xaf, 0x98, 0xad, 0x44, 0xbb, - 0xd5, 0x97, 0x54, 0xc8, 0x03, 0x33, 0x90, 0x03, 0x86, 0x76, 0x36, 0x73, 0xd8, 0xce, 0x31, 0xf6, - 0xa2, 0x0e, 0xdf, 0xc1, 0x91, 0xdd, 0xac, 0x36, 0xae, 0x59, 0xef, 0xb8, 0x4a, 0xdd, 0x78, 0x7d, - 0xe8, 0xe6, 0x24, 0x05, 0x8d, 0x44, 0x65, 0x2c, 0x41, 0x5c, 0xb8, 0x8d, 0x60, 0x1f, 0xef, 0x15, - 0xb6, 0xd7, 0x19, 0x54, 0x9d, 0x7a, 0x63, 0xf0, 0x03, 0xb5, 0xce, 0x2e, 0x7f, 0x33, 0x00, 0x18, - 0xc7, 0x6d, 0x60, 0xb3, 0x09, 0x3e, 0x22, 0xdc, 0x4b, 0x1a, 0x55, 0x8d, 0xe1, 0xa2, 0x3a, 0x75, - 0x4d, 0x6a, 0xb5, 0x94, 0x44, 0x88, 0x96, 0x02, 0x79, 0x02, 0x1b, 0x5e, 0xc0, 0xf2, 0x84, 0xe3, - 0x3b, 0xfe, 0x52, 0x1c, 0xba, 0x8f, 0x87, 0x66, 0xb1, 0xef, 0x27, 0xb1, 0x01, 0xd8, 0xb1, 0x21, - 0xc4, 0x8f, 0x19, 0xa0, 0x97, 0xc1, 0x0f, 0x3a, 0x2f, 0x3d, 0x53, 0x37, 0x44, 0xa6, 0x00, 0x36, - 0x76, 0xdc, 0x86, 0xb8, 0x6a, 0x50, 0x99, 0x97, 0x72, 0xad, 0x0c, 0xa7, 0x89, 0x2c, 0x7f, 0x7a, - 0x26, 0xdd, 0x6e, 0x54, 0x58, 0xdd, 0x52, 0xe6, 0x15, 0xa6, 0xcb, 0x4d, 0x19, 0xb1, 0x6f, 0x5b, - 0x0d, 0x46, 0x6c, 0xb0, 0xc4, 0xa7, 0x80, 0x0f, 0x62, 0x72, 0xd4, 0x40, 0x6c, 0xcf, 0xd0, 0x56, - 0x40, 0x65, 0x88, 0x43, 0xb1, 0xdd, 0x02, 0xfc, 0x06, 0xcc, 0x06, 0xe2, 0xcb, 0xad, 0x3a, 0x6b, - 0x75, 0xd5, 0x1c, 0xc8, 0x65, 0xae, 0xb2, 0x13, 0x98, 0x77, 0xf1, 0xf8, 0x8c, 0x8d, 0x9a, 0xd9, - 0x0f, 0x3c, 0xa4, 0x12, 0x7c, 0xf4, 0x49, 0xbd, 0xb9, 0x91, 0x2f, 0x94, 0x2a, 0xdc, 0x70, 0xd5, - 0x84, 0x78, 0xe9, 0xb0, 0x2d, 0x47, 0x76, 0x66, 0xde, 0xf1, 0x6b, 0xad, 0xe4, 0x5a, 0xf8, 0x7c, - 0x7c, 0x8b, 0xfc, 0x74, 0x4f, 0x5a, 0x37, 0xe7, 0x43, 0x09, 0xaf, 0x3b, 0x68, 0xa3, 0xaa, 0xb3, - 0xb7, 0x55, 0x22, 0xc8, 0x37, 0x8b, 0x70, 0xbd, 0x46, 0x47, 0xb8, 0x5e, 0xa1, 0xa3, 0x16, 0xa9, - 0x97, 0xfb, 0x97, 0xe4, 0xdb, 0x41, 0x5d, 0x52, 0x83, 0x08, 0x7c, 0x56, 0x70, 0x96, 0xe3, 0x1c, - 0xa1, 0x2c, 0xcc, 0xe2, 0xba, 0x05, 0x9c, 0x7d, 0x98, 0x3b, 0x6a, 0xef, 0x8e, 0xda, 0x83, 0xa3, - 0x36, 0x8e, 0x5d, 0x83, 0x9c, 0x68, 0xca, 0x75, 0x5e, 0xba, 0x10, 0x3f, 0x72, 0xbe, 0x52, 0xd7, - 0xe7, 0x35, 0x16, 0xcd, 0xcd, 0x2a, 0x1d, 0x8d, 0x05, 0xf9, 0xd3, 0x22, 0x96, 0x5f, 0x45, 0xa9, - 0x6e, 0xa5, 0x40, 0xde, 0xd6, 0x08, 0xda, 0x43, 0xd2, 0x5e, 0xec, 0xe5, 0x8f, 0xf5, 0x19, 0x77, - 0x34, 0x28, 0xe7, 0xa9, 0x4e, 0x94, 0x57, 0x81, 0x4c, 0x96, 0x99, 0x21, 0xcf, 0x76, 0x86, 0x02, - 0xcc, 0x3d, 0xaa, 0x21, 0x3c, 0xdc, 0xe8, 0x2c, 0xc8, 0x2c, 0x81, 0xe9, 0x9a, 0x6f, 0xdb, 0xbd, - 0xfc, 0x06, 0xfb, 0x61, 0xf8, 0x7d, 0x07, 0xbe, 0x07, 0xb2, 0xbd, 0x95, 0xc2, 0x7a, 0x40, 0x40, - 0xcf, 0x31, 0x6a, 0x64, 0x70, 0x3d, 0xb6, 0x8c, 0xed, 0x99, 0x8f, 0xeb, 0x46, 0x60, 0xc7, 0x44, - 0xd5, 0x02, 0xfa, 0x6c, 0x6b, 0x3e, 0xd7, 0xaf, 0x40, 0x68, 0x93, 0x6d, 0x94, 0x6f, 0x1a, 0x0d, - 0xc4, 0x3e, 0x72, 0x45, 0xbd, 0xa7, 0xfb, 0xb3, 0x72, 0x5f, 0x14, 0x86, 0xa8, 0x36, 0xb4, 0xdb, - 0x79, 0xdb, 0x46, 0xd5, 0x4c, 0xef, 0x8d, 0x79, 0x29, 0xa3, 0xcd, 0xbc, 0xdc, 0x15, 0x82, 0x50, - 0xb9, 0xbb, 0xa6, 0x4c, 0xb1, 0x29, 0xa3, 0x95, 0x4b, 0x4a, 0xab, 0xa8, 0xcb, 0x95, 0x05, 0x88, - 0x6f, 0xf8, 0x0d, 0xc7, 0x34, 0xfc, 0xea, 0xdb, 0xdb, 0x9b, 0x73, 0x43, 0xdb, 0x88, 0x2d, 0x52, - 0xc5, 0x37, 0x88, 0x73, 0x20, 0x74, 0xaa, 0xf5, 0x03, 0xa4, 0xe6, 0x48, 0x6f, 0x3f, 0x62, 0x7b, - 0x5b, 0xae, 0x90, 0xfa, 0xa2, 0x8a, 0x1f, 0x80, 0x8c, 0x10, 0x53, 0x42, 0xbc, 0x8f, 0x2c, 0xc4, - 0xba, 0xa4, 0x72, 0xcb, 0xf4, 0xc0, 0xbe, 0x76, 0xc0, 0xee, 0x6e, 0x24, 0x13, 0xfc, 0xef, 0x03, - 0x82, 0x3c, 0x8a, 0xc3, 0xf9, 0x54, 0xe0, 0x8b, 0x4c, 0x9c, 0x63, 0x40, 0x0c, 0xd6, 0x11, 0x60, - 0x3f, 0x6c, 0x8f, 0xd1, 0x7e, 0x7e, 0x19, 0xda, 0x10, 0x6b, 0x36, 0x20, 0x36, 0x7b, 0x95, 0x29, - 0x11, 0x6d, 0xf9, 0x22, 0x8e, 0x13, 0xdd, 0x99, 0xa0, 0x37, 0x1c, 0x7e, 0x07, 0xf6, 0xf7, 0x0d, - 0x72, 0x2b, 0x6c, 0x4b, 0x7d, 0x88, 0xc5, 0x4c, 0x88, 0xe0, 0x7a, 0x75, 0x98, 0x2b, 0x01, 0xaf, - 0x65, 0xf9, 0x6d, 0x2b, 0x6c, 0xc1, 0x36, 0xbf, 0xc9, 0x3d, 0xf0, 0xb7, 0xe6, 0xab, 0x2c, 0x18, - 0xed, 0x47, 0x84, 0x5e, 0xde, 0x28, 0xec, 0x33, 0x60, 0x1c, 0xd7, 0xd4, 0xe4, 0x49, 0xf1, 0x4d, - 0x36, 0x47, 0x37, 0x6f, 0xb4, 0x34, 0x13, 0xf4, 0xb0, 0x08, 0xc9, 0x97, 0x81, 0x1e, 0x2f, 0x08, - 0x6d, 0x24, 0x1c, 0xfb, 0xd5, 0x10, 0xab, 0x06, 0xe5, 0x6c, 0xe2, 0x17, 0x04, 0x82, 0x67, 0x10, - 0x1f, 0x5c, 0xce, 0x67, 0xe1, 0x4c, 0x03, 0x12, 0xab, 0x41, 0x3e, 0xf0, 0x8e, 0x3c, 0x6b, 0x87, - 0x6c, 0x88, 0x3b, 0x2b, 0x32, 0x9c, 0x85, 0xb3, 0x9a, 0x38, 0x87, 0x87, 0xd8, 0x0a, 0x94, 0xac, - 0xda, 0x59, 0xe8, 0xb1, 0x4c, 0x4a, 0x5c, 0xa7, 0x08, 0xb1, 0x44, 0xa7, 0xa6, 0x3f, 0xdc, 0x98, - 0xbb, 0x30, 0x67, 0x67, 0xc2, 0x9c, 0x7e, 0x76, 0xd4, 0xd6, 0x05, 0x20, 0xc6, 0xe0, 0x91, 0x06, - 0x7f, 0x83, 0xfd, 0x64, 0x75, 0x56, 0x2f, 0x76, 0xb8, 0xc7, 0x00, 0xde, 0xa6, 0x44, 0xe0, 0xf7, - 0xe8, 0x10, 0xbe, 0xe1, 0xdb, 0x6d, 0x94, 0xd1, 0x38, 0xa0, 0x55, 0x65, 0x33, 0xed, 0x80, 0xf2, - 0xdf, 0xb4, 0x67, 0x6a, 0x56, 0xea, 0xe8, 0x83, 0xa0, 0x0d, 0x76, 0x7e, 0x36, 0x24, 0x6d, 0x84, - 0x03, 0x68, 0x76, 0x4d, 0xe9, 0x7a, 0x5b, 0x46, 0xdb, 0x79, 0x40, 0x1f, 0xf0, 0xd7, 0x20, 0x8f, - 0x3d, 0xc4, 0xa8, 0x48, 0xf0, 0x51, 0x0e, 0x95, 0x89, 0xff, 0xc6, 0x79, 0x74, 0x19, 0xfb, 0x54, - 0xcc, 0xef, 0x96, 0x28, 0x91, 0x76, 0x6b, 0xa3, 0xd6, 0x20, 0xe6, 0xc6, 0xfc, 0x7e, 0x4f, 0x5d, - 0xa0, 0x87, 0xe5, 0xa1, 0xde, 0x53, 0x07, 0x8c, 0xcf, 0xe9, 0x6d, 0x2e, 0xf3, 0xd8, 0x18, 0x42, - 0x68, 0x0d, 0xfc, 0x33, 0xb9, 0x4c, 0xa9, 0xc7, 0xf9, 0x0f, 0xbd, 0x9e, 0xbf, 0xd4, 0xf9, 0xf2, - 0xcd, 0xdb, 0xee, 0x82, 0x5d, 0x0a, 0xdb, 0x2c, 0xf0, 0x78, 0x84, 0xd7, 0xa0, 0xfa, 0x06, 0xe0, - 0x94, 0x28, 0xb7, 0x2e, 0xcb, 0x62, 0x75, 0x39, 0xb1, 0x8a, 0x56, 0xaf, 0xb7, 0x69, 0x51, 0x03, - 0xb7, 0xd4, 0x2b, 0x67, 0x18, 0xb3, 0x22, 0x31, 0x0d, 0xc8, 0x2b, 0x3a, 0xdd, 0x12, 0x86, 0xb1, - 0x6a, 0x66, 0x24, 0xb0, 0x1d, 0xa2, 0x0c, 0xed, 0x15, 0x81, 0x99, 0x01, 0x9e, 0xb5, 0x33, 0x5e, - 0xb4, 0x8e, 0x84, 0xfa, 0x20, 0x2f, 0x6b, 0x2c, 0x2f, 0x58, 0x7f, 0x44, 0x84, 0x1f, 0xfa, 0x79, - 0x60, 0x97, 0xeb, 0x60, 0xb7, 0x2b, 0xac, 0xc8, 0xd7, 0x20, 0x17, 0x64, 0x5e, 0xe6, 0xa3, 0x1b, - 0xbd, 0x5d, 0x84, 0xf8, 0x94, 0x7b, 0xa0, 0x6c, 0xac, 0x43, 0x55, 0xd4, 0x31, 0x2c, 0xc8, 0xd1, - 0x1e, 0x64, 0xd4, 0x75, 0x69, 0x03, 0x71, 0x60, 0x03, 0xd7, 0x37, 0x74, 0x6f, 0x18, 0xa8, 0x96, - 0x8f, 0xeb, 0xbd, 0x19, 0x88, 0x0f, 0x40, 0x1f, 0x40, 0x8b, 0xd8, 0x20, 0x34, 0x30, 0x81, 0x86, - 0x83, 0xba, 0xaf, 0x32, 0x2d, 0xfc, 0xdc, 0x05, 0xf4, 0x1e, 0xe8, 0x92, 0x63, 0x7a, 0xc1, 0x67, - 0xdd, 0x6f, 0xb5, 0xda, 0x3d, 0xe1, 0xb1, 0xb3, 0x18, 0xdd, 0xb8, 0x35, 0x9f, 0xd1, 0xdb, 0x19, - 0x01, 0x6d, 0x4a, 0x39, 0x7b, 0xdc, 0xbe, 0xd1, 0xb9, 0x21, 0xf3, 0xb2, 0x54, 0x1f, 0xfb, 0x10, - 0x9b, 0x1b, 0xa3, 0x1e, 0x6a, 0x77, 0xf5, 0x47, 0xdb, 0x84, 0x88, 0xab, 0x5a, 0xbb, 0xa1, 0x21, - 0x04, 0xa7, 0x5e, 0xb8, 0xac, 0xad, 0x88, 0x4c, 0x63, 0x37, 0xc8, 0x8c, 0x7b, 0x74, 0x15, 0x75, - 0x3d, 0xc7, 0x8b, 0xea, 0xf0, 0x95, 0x01, 0xd6, 0x07, 0x07, 0x9f, 0x0f, 0x98, 0x6d, 0x1f, 0xd4, - 0xc5, 0x3a, 0x62, 0x20, 0xcb, 0xe0, 0x97, 0x4e, 0xea, 0xce, 0x1b, 0xc1, 0x6a, 0xe1, 0x7a, 0x8a, - 0x0f, 0xfc, 0xdb, 0xa8, 0xb9, 0xca, 0xb9, 0xba, 0xce, 0x51, 0x9b, 0x7e, 0x5d, 0xbc, 0xb6, 0xeb, - 0xfb, 0x7f, 0xb0, 0x67, 0xe8, 0x7f, 0xa7, 0x47, 0xfe, 0x38, 0x6a, 0x37, 0x1f, 0xd7, 0xf5, 0xa3, - 0x35, 0xc4, 0xff, 0xb3, 0x1d, 0x1c, 0x4f, 0xea, 0x90, 0xe5, 0x91, 0xe7, 0x57, 0xac, 0x84, 0x75, - 0xd1, 0x6a, 0xf9, 0x55, 0x30, 0x53, 0x62, 0x89, 0xd2, 0xcb, 0xeb, 0xf6, 0x30, 0xcf, 0xf8, 0xbb, - 0xa0, 0xde, 0x1e, 0x3e, 0x7f, 0x00, 0x27, 0xc5, 0xae, 0xf1, 0xb3, 0xa5, 0xa2, 0x8f, 0xa3, 0x31, - 0x14, 0xd0, 0x78, 0xab, 0xb2, 0xd8, 0x2c, 0xb4, 0x85, 0x1e, 0xd7, 0x46, 0x35, 0x88, 0x43, 0x51, - 0xc9, 0x2f, 0x09, 0xa5, 0x70, 0xbe, 0x8c, 0xe7, 0x67, 0x44, 0x32, 0x1f, 0xf6, 0x98, 0x33, 0x20, - 0xe3, 0xec, 0xa6, 0xbc, 0xa3, 0x70, 0x5c, 0xda, 0x16, 0x44, 0x26, 0xd3, 0xdb, 0x51, 0xc1, 0xfa, - 0xd0, 0xde, 0x26, 0xe8, 0xd9, 0x0c, 0xec, 0xca, 0xac, 0xe2, 0xab, 0x16, 0x1f, 0xd4, 0x10, 0x21, - 0x26, 0x27, 0xba, 0x42, 0xf3, 0xd0, 0x07, 0xf1, 0x28, 0x2d, 0x6c, 0x55, 0x1c, 0x0b, 0xd0, 0x98, - 0xf7, 0x58, 0x1f, 0xb0, 0x0e, 0x55, 0x70, 0x7c, 0xe0, 0xab, 0x3b, 0x54, 0x5c, 0x6d, 0x8d, 0xd9, - 0xae, 0x26, 0xab, 0xc3, 0x92, 0x61, 0x2a, 0x8d, 0xb6, 0xf0, 0x2a, 0x6f, 0x76, 0xdb, 0x06, 0x44, - 0xaa, 0xf0, 0x7d, 0x2c, 0x6f, 0x66, 0xdb, 0x86, 0x6c, 0xdb, 0xa5, 0x8d, 0x39, 0xa8, 0xb5, 0xf9, - 0xb7, 0x2d, 0xe4, 0xb9, 0x7d, 0x98, 0x5f, 0x95, 0x55, 0xb5, 0x64, 0x38, 0x8d, 0x1f, 0xae, 0x05, - 0xec, 0x2a, 0x47, 0xfc, 0xcf, 0x23, 0x4e, 0x04, 0x8a, 0x32, 0x83, 0xf7, 0xcb, 0xc1, 0xbb, 0x6c, - 0x60, 0x2f, 0xac, 0xa1, 0x44, 0x75, 0xd3, 0xe9, 0x51, 0x7b, 0x80, 0x6d, 0x2a, 0xdf, 0xcb, 0x33, - 0x60, 0xb7, 0x8f, 0x65, 0xe1, 0xb5, 0x27, 0x25, 0xda, 0xb2, 0x19, 0xd5, 0x11, 0xc2, 0xba, 0xc1, - 0xf8, 0xb0, 0xed, 0xf9, 0xb1, 0x1f, 0xa7, 0x1c, 0x37, 0x8e, 0x21, 0xb5, 0x8c, 0x47, 0x57, 0xd7, - 0x05, 0xa1, 0x6a, 0x49, 0xff, 0xa3, 0x71, 0xaa, 0x5e, 0xe9, 0xb0, 0xa2, 0x29, 0x92, 0x3a, 0xc4, - 0x1b, 0x75, 0x23, 0x23, 0x5a, 0x2a, 0x83, 0xbf, 0x5c, 0xa0, 0x32, 0xae, 0xfd, 0x73, 0xef, 0x7a, - 0x86, 0xc1, 0x6c, 0xc4, 0x3e, 0xc4, 0xf0, 0x38, 0x2e, 0x5c, 0x08, 0xe2, 0xe1, 0x33, 0x0c, 0x4c, - 0xd7, 0xa0, 0xe6, 0x32, 0x64, 0xc5, 0x72, 0x69, 0x27, 0x64, 0xe6, 0xbd, 0x0a, 0x73, 0x14, 0xb3, - 0xeb, 0xf3, 0x7a, 0x9d, 0xb1, 0x5f, 0x79, 0x48, 0x4c, 0x20, 0x66, 0x16, 0x79, 0xce, 0x7f, 0xab, - 0x77, 0x87, 0x39, 0x90, 0x68, 0xa1, 0xdc, 0x65, 0xdc, 0x97, 0xde, 0x14, 0x49, 0x22, 0xce, 0x2d, - 0xf3, 0xd4, 0x5c, 0xae, 0x74, 0xe4, 0x79, 0xb8, 0x6e, 0xe3, 0x86, 0x35, 0x96, 0xe1, 0xae, 0x55, - 0x45, 0x6e, 0x93, 0x1d, 0xb6, 0x45, 0xb3, 0xa0, 0x89, 0xf3, 0x2e, 0x4f, 0xb5, 0x79, 0x91, 0xeb, - 0xa9, 0x90, 0xeb, 0xda, 0x9e, 0x6c, 0xd8, 0x6e, 0xcb, 0xf7, 0x9b, 0x9d, 0x99, 0x98, 0xeb, 0xf9, - 0xe1, 0xf3, 0x2b, 0x88, 0x5f, 0x48, 0xbe, 0x83, 0x9f, 0xdf, 0xe1, 0x3e, 0x51, 0xed, 0xd5, 0x45, - 0xa9, 0x57, 0x87, 0x18, 0x08, 0x89, 0xc2, 0x00, 0xe4, 0x7b, 0x8d, 0x9f, 0x6f, 0x80, 0x5c, 0x97, - 0xdf, 0x6e, 0xcc, 0x2a, 0xb5, 0x9e, 0xdd, 0xdc, 0x70, 0xa3, 0x25, 0xea, 0xb5, 0xf2, 0xe0, 0xa4, - 0xa6, 0x8d, 0x7c, 0xf1, 0xa1, 0x2b, 0x2d, 0x8a, 0xb3, 0xae, 0xcd, 0x78, 0x2e, 0xc4, 0x24, 0xf5, - 0x9b, 0x09, 0xea, 0xee, 0x1a, 0x55, 0x9d, 0x1b, 0x51, 0xab, 0xc1, 0x4d, 0x2e, 0x5b, 0xcd, 0x6a, - 0x1b, 0xd6, 0x73, 0x18, 0xe6, 0xc1, 0xf3, 0x03, 0x57, 0x1e, 0x94, 0x02, 0x99, 0xfa, 0x6b, 0x21, - 0xbf, 0x19, 0xf8, 0xa5, 0xd2, 0x23, 0xe4, 0x85, 0xd1, 0x03, 0xc8, 0xac, 0xce, 0xae, 0xb3, 0xe4, - 0x99, 0x64, 0x59, 0x41, 0x0d, 0x0a, 0xec, 0x46, 0x39, 0x8c, 0xcb, 0xc9, 0x33, 0x18, 0x3e, 0xf1, - 0x14, 0x3a, 0x78, 0x9e, 0xb9, 0x6b, 0x53, 0x2d, 0x94, 0x78, 0x80, 0x79, 0x23, 0x9c, 0xbf, 0x67, - 0xc0, 0xda, 0x67, 0x1f, 0xb4, 0xe2, 0x75, 0x34, 0x7e, 0x70, 0xd7, 0x92, 0x60, 0x9c, 0xed, 0xe0, - 0xb6, 0x8c, 0xdb, 0x3c, 0x79, 0x72, 0x9d, 0xc1, 0xed, 0x86, 0x0f, 0xed, 0x0a, 0x1e, 0x47, 0x4e, - 0xdc, 0x66, 0x5d, 0x3c, 0xdf, 0x09, 0x8a, 0x51, 0xe4, 0x6e, 0x03, 0x9e, 0x3f, 0x88, 0xd7, 0x37, - 0xf0, 0x78, 0x59, 0x8e, 0xdb, 0x64, 0x3d, 0x47, 0xf6, 0xab, 0xc5, 0xf0, 0x59, 0x42, 0x08, 0x02, - 0x6f, 0xdf, 0x46, 0xfb, 0x36, 0xb3, 0x5f, 0x5f, 0xe7, 0xa2, 0xf5, 0xc1, 0x7e, 0x04, 0x5e, 0x30, - 0xfe, 0x16, 0xe0, 0x17, 0x9e, 0xc8, 0xc6, 0x46, 0x4f, 0xc3, 0xab, 0x15, 0x9d, 0x01, 0x3b, 0xca, - 0x33, 0x2f, 0x08, 0xc2, 0xe9, 0x99, 0xcf, 0x4e, 0x50, 0xb3, 0x8a, 0x76, 0xc0, 0x6f, 0xd4, 0xce, - 0x32, 0xc8, 0xe6, 0x78, 0xd4, 0x9d, 0x33, 0xa2, 0x5f, 0x91, 0x74, 0xd9, 0x65, 0x14, 0xbf, 0x2a, - 0xa0, 0xd7, 0x37, 0x06, 0xcc, 0x49, 0x5b, 0x1f, 0xeb, 0x4c, 0x6e, 0x58, 0xdb, 0xe8, 0xfa, 0x96, - 0xad, 0xeb, 0xfc, 0x0a, 0xcd, 0x5c, 0xb6, 0x87, 0x8d, 0xb6, 0xd9, 0x67, 0xfb, 0x76, 0xdd, 0x41, - 0xf6, 0x8a, 0xb5, 0x87, 0x0d, 0x57, 0x8f, 0xf9, 0xf9, 0x86, 0x2a, 0x2e, 0x29, 0xc8, 0x91, 0x97, - 0x7e, 0x8e, 0xd2, 0xe4, 0xf5, 0x82, 0x1a, 0xf9, 0x3d, 0x7f, 0xc4, 0xe0, 0xaa, 0x06, 0xda, 0xaf, - 0xab, 0xa1, 0x72, 0x82, 0x7f, 0x3e, 0x8c, 0x43, 0x9c, 0x17, 0xb5, 0xb1, 0x61, 0x27, 0x0f, 0x99, - 0xa3, 0x36, 0xae, 0x27, 0x80, 0x42, 0xc7, 0x6d, 0x5c, 0xef, 0x63, 0x33, 0x71, 0x1b, 0x52, 0x1c, - 0xf2, 0x9c, 0x0e, 0xfb, 0x02, 0x06, 0x5f, 0xe5, 0x20, 0x3c, 0xe2, 0xf7, 0x6d, 0x1d, 0xf0, 0x29, - 0xdb, 0xfb, 0xb6, 0x0f, 0xe3, 0xec, 0x3c, 0x6e, 0x07, 0xb7, 0x89, 0xf6, 0xe3, 0xb0, 0x5f, 0x1f, - 0x97, 0x04, 0xe2, 0xb6, 0x8e, 0xe7, 0x97, 0xe2, 0x36, 0xec, 0x87, 0x0d, 0x10, 0x0d, 0x2e, 0x9b, - 0x46, 0x55, 0xb3, 0xff, 0x0a, 0xda, 0xa3, 0xf4, 0x1f, 0x57, 0x7c, 0x99, 0x5b, 0x09, 0x88, 0xe9, - 0xa3, 0xaa, 0x84, 0x54, 0x9d, 0xd9, 0xa1, 0xea, 0x1c, 0x8d, 0x7c, 0x66, 0x85, 0x4f, 0x2f, 0x88, - 0x68, 0x85, 0xca, 0x4c, 0xb4, 0x26, 0xfa, 0xec, 0xbe, 0xf6, 0xc7, 0xf4, 0xa8, 0x5a, 0xd9, 0x22, - 0x48, 0x1e, 0x5e, 0x45, 0xc6, 0x42, 0x35, 0x09, 0x07, 0xf1, 0x53, 0x54, 0xab, 0x47, 0x73, 0xaa, - 0xa3, 0x2c, 0xd8, 0xd7, 0xea, 0xd8, 0x1c, 0x2d, 0xe4, 0xed, 0x70, 0xd0, 0x31, 0x5f, 0x59, 0xc6, - 0xd0, 0xba, 0x4c, 0x7d, 0x98, 0x7d, 0x6c, 0x8d, 0xb2, 0x8f, 0x2b, 0x52, 0x5f, 0xaf, 0x96, 0xd0, - 0x48, 0x67, 0x32, 0x78, 0xaf, 0x57, 0x9f, 0x31, 0x51, 0x35, 0x8f, 0xe1, 0x6d, 0x51, 0x95, 0x43, - 0x63, 0x84, 0xdb, 0x22, 0xae, 0xbc, 0x1a, 0xa8, 0x36, 0xc7, 0x9f, 0x75, 0x04, 0x52, 0x00, 0xb8, - 0xb5, 0xc8, 0x3a, 0x82, 0x23, 0xbe, 0xf2, 0x82, 0xf3, 0x88, 0xf7, 0xbd, 0xae, 0x53, 0x13, 0xdb, - 0x59, 0x28, 0xde, 0xd5, 0x67, 0x7c, 0x47, 0xe8, 0xf3, 0xf5, 0x97, 0xdf, 0x7f, 0xfb, 0xeb, 0xf7, - 0xdf, 0x7e, 0xff, 0x0d, 0x5f, 0x62, 0x0b, 0xee, 0x1d, 0x79, 0xf6, 0x4a, 0x9d, 0xde, 0x29, 0xe4, - 0xd2, 0xd2, 0x53, 0x6a, 0xa1, 0x58, 0xc6, 0x72, 0x65, 0x92, 0xdb, 0x45, 0xd1, 0xdc, 0x91, 0x3d, - 0xde, 0x06, 0x73, 0x17, 0x8a, 0xa3, 0x1b, 0x30, 0x2b, 0x43, 0xae, 0x25, 0xe1, 0xdb, 0x4d, 0xba, - 0x63, 0xaf, 0xac, 0x71, 0x70, 0xfb, 0xec, 0x29, 0xf5, 0x91, 0xa6, 0xe9, 0x2f, 0x27, 0x97, 0x99, - 0x6a, 0x9a, 0xb9, 0xd6, 0x3c, 0x43, 0x55, 0x6e, 0x53, 0xb2, 0xe6, 0x8c, 0x15, 0x0b, 0xbe, 0xb8, - 0x8a, 0xe5, 0xde, 0xb9, 0x9a, 0x63, 0x4c, 0xf6, 0xf3, 0x5d, 0x63, 0xa7, 0x3d, 0xa5, 0xe8, 0x87, - 0xe5, 0x86, 0xf4, 0x85, 0x30, 0xfd, 0xa9, 0xe1, 0x69, 0xd0, 0xf1, 0xc1, 0xd3, 0x36, 0xde, 0x9d, - 0x62, 0x1a, 0x3a, 0x20, 0xa0, 0x6a, 0x96, 0xa7, 0x39, 0x64, 0x1a, 0xbe, 0xb5, 0x36, 0x37, 0xbc, - 0xbb, 0xe0, 0x1c, 0xaa, 0x62, 0x9a, 0xf6, 0xca, 0x7b, 0x4a, 0x59, 0xb6, 0xa5, 0x91, 0xf1, 0xfd, - 0x8c, 0x15, 0xec, 0x07, 0x7b, 0x9a, 0x9a, 0x7a, 0x38, 0x8e, 0xa7, 0x2c, 0xec, 0xdd, 0xf7, 0xc6, - 0x61, 0x82, 0xfb, 0xdd, 0x71, 0xfc, 0x3a, 0x3f, 0x1e, 0xe3, 0xa7, 0x2c, 0xef, 0xa6, 0x86, 0x3e, - 0x85, 0x03, 0x4c, 0xbd, 0x88, 0x60, 0x9e, 0x03, 0x74, 0x58, 0x2a, 0x0e, 0x1c, 0x87, 0x4c, 0xb6, - 0xd7, 0x9a, 0x33, 0x31, 0x6d, 0xff, 0x6e, 0xf3, 0x94, 0x9a, 0x1a, 0xe3, 0xb1, 0x16, 0x33, 0x61, - 0x79, 0xc8, 0x01, 0x3a, 0xb3, 0xdc, 0xa4, 0x32, 0xa9, 0x2c, 0x7e, 0x4f, 0x52, 0xeb, 0xe3, 0x78, - 0x3c, 0x8e, 0xf9, 0xb6, 0xf2, 0x3c, 0xdb, 0x0a, 0xd6, 0x01, 0x4d, 0x4c, 0xc3, 0xd2, 0x12, 0x78, - 0xa9, 0x2b, 0xc7, 0xc5, 0x2b, 0x96, 0xb6, 0x11, 0xd2, 0x92, 0x2c, 0xba, 0x37, 0x95, 0x91, 0x66, - 0xba, 0xe7, 0xf8, 0xbd, 0x54, 0xc6, 0x63, 0xc3, 0xd2, 0x9f, 0x52, 0xa5, 0x83, 0xbd, 0xc9, 0xb2, - 0x8f, 0xf8, 0x3a, 0x21, 0x59, 0x1a, 0xac, 0x5c, 0xda, 0xae, 0x11, 0x48, 0xd4, 0xc4, 0xd8, 0x68, - 0xe3, 0x40, 0x5e, 0x6c, 0xc0, 0x67, 0xf1, 0x94, 0x7a, 0xc8, 0x86, 0x1c, 0x76, 0x30, 0x29, 0x9e, - 0x52, 0xf9, 0x43, 0x86, 0x7f, 0x2c, 0x16, 0x8b, 0xa4, 0xed, 0x3b, 0x00, 0xc2, 0xd2, 0x81, 0x37, - 0x63, 0x40, 0x1c, 0x28, 0x83, 0x65, 0xc8, 0xbc, 0x73, 0xcc, 0x18, 0xd7, 0x91, 0x63, 0x84, 0xdb, - 0x45, 0xa8, 0x05, 0xb0, 0x82, 0x51, 0xdf, 0x51, 0x96, 0x4b, 0xcd, 0xb9, 0x8c, 0x90, 0x67, 0x2f, - 0xa3, 0xb3, 0x99, 0xda, 0xc4, 0x8b, 0xbe, 0x87, 0x68, 0x1d, 0x0b, 0x39, 0x60, 0x96, 0xcd, 0x66, - 0x49, 0xe7, 0xee, 0xce, 0xb0, 0xc6, 0x1a, 0xf0, 0x88, 0x8e, 0x37, 0xc3, 0x37, 0x1f, 0xdd, 0x33, - 0x37, 0xf9, 0x3e, 0x87, 0x37, 0xf9, 0x3e, 0x27, 0xe4, 0x1c, 0xdf, 0x00, 0xc4, 0x9c, 0x00, 0xc5, - 0x34, 0x8f, 0xc5, 0x3f, 0x1b, 0x51, 0x03, 0xb3, 0xeb, 0x6e, 0xaa, 0x05, 0xb8, 0x04, 0x5a, 0x35, - 0x36, 0xdc, 0xa5, 0xa9, 0x00, 0x50, 0xc3, 0x22, 0xa3, 0x23, 0xd3, 0x56, 0xe7, 0x5f, 0x92, 0x8c, - 0xba, 0x23, 0x4c, 0xc1, 0x54, 0xd8, 0xb3, 0xe6, 0xde, 0x35, 0x8d, 0x31, 0x48, 0x26, 0xc6, 0xf0, - 0xf7, 0xdf, 0x02, 0x9d, 0xc7, 0x62, 0x87, 0x0d, 0x43, 0x28, 0x81, 0xa0, 0xef, 0xda, 0xf0, 0x0a, - 0xd6, 0x5e, 0x5f, 0x92, 0xa5, 0x7b, 0x90, 0x6b, 0x02, 0xe1, 0x50, 0x30, 0xee, 0x68, 0xd8, 0x09, - 0xef, 0x59, 0x88, 0x05, 0x31, 0xe6, 0x53, 0xa8, 0xaa, 0x0b, 0x10, 0x63, 0x53, 0xbb, 0x08, 0x77, - 0x62, 0x86, 0x0c, 0x02, 0xb1, 0x57, 0xe0, 0xa4, 0x84, 0xf8, 0x17, 0x04, 0xf4, 0x58, 0x20, 0x23, - 0x78, 0x93, 0x49, 0x60, 0x45, 0x12, 0xc7, 0x72, 0x6c, 0x0f, 0xce, 0x74, 0x95, 0x19, 0x6b, 0xfa, - 0xf5, 0x7e, 0x2c, 0x94, 0x80, 0x78, 0x5e, 0x2a, 0x73, 0x9f, 0x73, 0x63, 0x54, 0xb4, 0x4d, 0xa8, - 0x64, 0xa7, 0x70, 0xe8, 0x52, 0x04, 0x29, 0xe4, 0x76, 0x28, 0xe6, 0x97, 0x39, 0x72, 0x91, 0x0c, - 0x81, 0xba, 0x98, 0xc6, 0x5a, 0xc3, 0x77, 0x85, 0x03, 0x30, 0x11, 0x9b, 0x23, 0xde, 0xc7, 0x60, - 0x63, 0x6d, 0x25, 0xf7, 0x86, 0xb1, 0xda, 0x67, 0xfe, 0x4f, 0xa8, 0x4b, 0x0e, 0xf0, 0x14, 0x08, - 0x91, 0x90, 0x77, 0x4f, 0x19, 0x85, 0xca, 0x1e, 0x5a, 0x91, 0x84, 0x0d, 0x39, 0x6b, 0xad, 0x23, - 0x71, 0x3e, 0xe4, 0x0b, 0xb0, 0xc2, 0x30, 0x3d, 0x0c, 0x7c, 0xec, 0xd8, 0xcb, 0x3b, 0x77, 0xaa, - 0x8c, 0x6d, 0xff, 0x8a, 0xd8, 0x9b, 0x90, 0xd9, 0x1f, 0x33, 0x99, 0xcc, 0x9e, 0x16, 0xa0, 0xd6, - 0x3f, 0xd6, 0xf9, 0x53, 0x2d, 0x3b, 0x3c, 0xd1, 0xfe, 0x04, 0x49, 0xab, 0x75, 0x8a, 0xb3, 0x61, - 0x4d, 0xc1, 0x69, 0x04, 0x02, 0x12, 0x4a, 0x0c, 0x06, 0x7a, 0x40, 0x93, 0x98, 0x68, 0x49, 0x9e, - 0x87, 0x9c, 0xfe, 0xae, 0xab, 0xf9, 0xa8, 0xaa, 0xea, 0x1e, 0x17, 0x7b, 0x79, 0x80, 0x4b, 0x6c, - 0x62, 0x68, 0xac, 0x5d, 0xc1, 0x5b, 0x26, 0xfc, 0x86, 0x17, 0xa5, 0xce, 0xbf, 0x62, 0x12, 0x9d, - 0x87, 0x15, 0x98, 0xf1, 0x52, 0xac, 0x3d, 0x01, 0x55, 0xb2, 0x85, 0x73, 0x34, 0x79, 0x9a, 0x62, - 0xc6, 0x5e, 0xa2, 0xcc, 0xc7, 0x5c, 0x2e, 0x77, 0x70, 0x18, 0x4d, 0xd3, 0xce, 0x00, 0xb9, 0xc7, - 0x9e, 0x7e, 0xad, 0x5d, 0x84, 0x12, 0x19, 0xdf, 0x43, 0xdd, 0x0a, 0xa0, 0xfc, 0x78, 0x69, 0xea, - 0x0f, 0x63, 0x81, 0xaf, 0xbf, 0x2b, 0xa1, 0x3f, 0x3b, 0x07, 0x05, 0x5f, 0x43, 0x57, 0x40, 0x59, - 0xc2, 0x93, 0xdc, 0xdd, 0x59, 0x27, 0xf6, 0x6d, 0x62, 0x6a, 0x9b, 0x43, 0x7f, 0xb8, 0x3d, 0x90, - 0xe5, 0x63, 0x6d, 0x08, 0xdb, 0xa0, 0x6e, 0xea, 0xd5, 0x5a, 0x71, 0xae, 0x00, 0xe6, 0xf5, 0x3f, - 0xf0, 0x68, 0xa0, 0xfb, 0x91, 0x7a, 0x91, 0x71, 0xe8, 0x5e, 0x4f, 0x53, 0x77, 0xa9, 0x60, 0x9e, - 0xb7, 0xbc, 0x4d, 0x15, 0x81, 0x09, 0xd7, 0xd0, 0x53, 0x8c, 0x0d, 0x60, 0x60, 0x66, 0xee, 0x22, - 0xe1, 0x2d, 0x46, 0x0e, 0x2b, 0xec, 0x27, 0x7e, 0xe3, 0x68, 0xfd, 0xb1, 0x01, 0x8a, 0xed, 0xea, - 0x55, 0x02, 0x2b, 0x6f, 0x73, 0x9b, 0x22, 0x9b, 0xdd, 0x84, 0xcb, 0x0d, 0x68, 0x5f, 0x53, 0x31, - 0xca, 0x77, 0x04, 0xe7, 0xeb, 0x24, 0xdb, 0xc2, 0x4b, 0xfb, 0x01, 0xad, 0xbe, 0x77, 0x6e, 0xdc, - 0x19, 0x43, 0xba, 0x4e, 0x3a, 0xec, 0x00, 0x5f, 0x9a, 0x0e, 0x0f, 0x11, 0xf5, 0x46, 0xa7, 0xa3, - 0x33, 0xd1, 0xe9, 0xe0, 0x68, 0x3f, 0x4d, 0xaa, 0x24, 0x87, 0x94, 0x95, 0x67, 0x87, 0x9a, 0xb8, - 0xc1, 0x2a, 0x46, 0x44, 0x3c, 0xd0, 0x4a, 0xd8, 0x6d, 0x73, 0xc9, 0x70, 0x7d, 0xe4, 0x26, 0x13, - 0x88, 0x99, 0xdc, 0x03, 0xdd, 0x08, 0x90, 0xce, 0x9c, 0x21, 0x7c, 0x78, 0x90, 0xd0, 0x2d, 0x2d, - 0x6c, 0xdb, 0x9b, 0xa6, 0xfe, 0xbc, 0x60, 0xdf, 0x93, 0x22, 0x31, 0xb9, 0x4d, 0xd1, 0xd7, 0xff, - 0xb8, 0x2f, 0xb8, 0xd7, 0x29, 0x4d, 0x71, 0xb5, 0x3b, 0x08, 0x89, 0x52, 0x31, 0x99, 0xef, 0x12, - 0xb1, 0x4b, 0xec, 0x64, 0xe0, 0xcf, 0xdd, 0xde, 0xb1, 0x1d, 0xd3, 0x2d, 0x19, 0x6a, 0x60, 0x2a, - 0x80, 0xe4, 0xe2, 0xf5, 0x1f, 0x4e, 0xcd, 0xe0, 0x87, 0xd8, 0x8d, 0x07, 0x8c, 0xfb, 0x70, 0xc8, - 0xc7, 0x0f, 0x71, 0x1c, 0xf2, 0x61, 0x6f, 0x20, 0x3f, 0x5c, 0xd4, 0xf0, 0x0f, 0xa7, 0xd1, 0xc2, - 0x87, 0x63, 0xcd, 0xf9, 0x40, 0xbc, 0xce, 0x1d, 0x44, 0xce, 0x0b, 0xf7, 0x20, 0x5a, 0x9e, 0xad, - 0x5c, 0xcf, 0x98, 0x6c, 0xef, 0x42, 0xb1, 0x4a, 0x8c, 0x7d, 0xd8, 0x07, 0x35, 0x58, 0x1b, 0x3f, - 0xd8, 0x4b, 0x45, 0x35, 0xbc, 0x2d, 0xb6, 0x9c, 0x8f, 0x05, 0x82, 0xe5, 0x81, 0x35, 0x7d, 0xc0, - 0xd6, 0xf4, 0x43, 0xe8, 0x9b, 0xef, 0xb4, 0x35, 0x80, 0x71, 0x63, 0xd3, 0x1b, 0xf2, 0xc6, 0x53, - 0xb6, 0xd8, 0x8a, 0x1e, 0x39, 0x87, 0x28, 0x20, 0x06, 0x44, 0xd4, 0xf9, 0xf6, 0xcb, 0xe1, 0x60, - 0xa2, 0xf3, 0x20, 0xf2, 0x8a, 0x12, 0x8b, 0x03, 0xa9, 0x38, 0x0d, 0xc3, 0x3e, 0x86, 0x7b, 0xd2, - 0x51, 0x6e, 0x03, 0xb3, 0xb3, 0x8f, 0x09, 0x51, 0x0b, 0xc7, 0xb3, 0x89, 0xf1, 0x42, 0x29, 0x31, - 0xee, 0xd9, 0x8a, 0x1b, 0x2a, 0xdb, 0x9e, 0x00, 0x97, 0xfc, 0x67, 0xa1, 0x50, 0x08, 0xa5, 0x73, - 0x73, 0x17, 0xb2, 0xf4, 0x31, 0xd4, 0xcc, 0x93, 0xd0, 0xe4, 0x7c, 0xf2, 0x12, 0x2a, 0x87, 0xa3, - 0x8c, 0x8d, 0x15, 0x90, 0x2f, 0x7b, 0xa8, 0xa2, 0x70, 0xb0, 0xe2, 0xaf, 0xf5, 0x9c, 0xf1, 0xc8, - 0x07, 0x44, 0x8b, 0x5c, 0x72, 0x21, 0x44, 0xfb, 0x9c, 0x01, 0x1b, 0x5c, 0xdd, 0x15, 0x22, 0x4b, - 0xba, 0xb7, 0x19, 0x11, 0x0f, 0xce, 0xb9, 0xd3, 0xef, 0x49, 0x45, 0x40, 0xe1, 0x7b, 0x77, 0x6a, - 0xfb, 0x47, 0x64, 0x0e, 0xf0, 0x81, 0xfc, 0x73, 0xa1, 0x84, 0x38, 0x2b, 0x63, 0xcd, 0xb0, 0x40, - 0xd6, 0x0a, 0xee, 0x6d, 0xb2, 0x91, 0xca, 0xe2, 0x37, 0x07, 0xa0, 0x3b, 0xee, 0x31, 0x5c, 0xcd, - 0x71, 0x6c, 0xe7, 0x2c, 0xe0, 0x33, 0xfc, 0x1b, 0x65, 0xbf, 0xb7, 0x67, 0x04, 0xf9, 0x5f, 0x73, - 0x6d, 0x3b, 0x71, 0x20, 0xbd, 0x71, 0xa3, 0xd1, 0x20, 0x5e, 0x75, 0xec, 0x45, 0xea, 0xcf, 0x7d, - 0x7c, 0x93, 0x94, 0x97, 0xbf, 0x02, 0xe1, 0xda, 0x0f, 0x07, 0xf4, 0x4a, 0xa2, 0xf4, 0xd7, 0x61, - 0x74, 0x1e, 0x2a, 0x70, 0x00, 0x3a, 0x52, 0xce, 0xcf, 0x9f, 0x8f, 0xb8, 0xa8, 0x8c, 0x5c, 0xdb, - 0x5c, 0x79, 0xda, 0x5e, 0x15, 0xe8, 0x1c, 0x86, 0x1b, 0x6f, 0x93, 0x8b, 0x92, 0x07, 0xc2, 0x55, - 0x62, 0xd9, 0xa3, 0x74, 0x26, 0x36, 0xf3, 0x07, 0x7a, 0x95, 0xcf, 0xe7, 0xcf, 0x09, 0xe2, 0x8f, - 0x58, 0x99, 0x10, 0xa3, 0xbb, 0x58, 0xf9, 0x0c, 0x6b, 0xb9, 0xf2, 0xfe, 0xed, 0x6d, 0x97, 0xda, - 0x33, 0xc8, 0x8e, 0xae, 0xfd, 0x27, 0x74, 0xf0, 0xa1, 0xbe, 0xe3, 0x64, 0x4c, 0x81, 0x01, 0x55, - 0x3b, 0x8d, 0x6b, 0xb3, 0xd9, 0xcc, 0xb1, 0x10, 0x1f, 0x9a, 0x7e, 0xd2, 0x0e, 0xc3, 0xa5, 0xf0, - 0xcb, 0x05, 0xae, 0x1e, 0xa7, 0xd4, 0x67, 0xf3, 0xdc, 0x13, 0x54, 0x9f, 0x26, 0xb6, 0xba, 0x72, - 0xcf, 0xe7, 0xca, 0x67, 0xe7, 0x3f, 0xc5, 0x66, 0x2c, 0xc8, 0xae, 0x9c, 0x95, 0x65, 0xe1, 0x1f, - 0x9a, 0xbb, 0x83, 0xfd, 0xd5, 0xf9, 0x79, 0x77, 0x1d, 0xb9, 0x81, 0x5c, 0x84, 0xfd, 0xb9, 0x14, - 0x27, 0xc9, 0x1e, 0x47, 0x1f, 0x29, 0x57, 0x19, 0x88, 0x11, 0x82, 0xbf, 0xd7, 0xef, 0x45, 0xc6, - 0x9b, 0xae, 0x16, 0xa3, 0xc3, 0xd4, 0x22, 0xb6, 0x09, 0x11, 0x52, 0x51, 0xfb, 0x12, 0xe7, 0x0f, - 0xc4, 0x24, 0x32, 0x63, 0xe7, 0x10, 0xfe, 0x2e, 0x7f, 0x93, 0x8e, 0xfb, 0x21, 0xb2, 0xb3, 0xe7, - 0x0e, 0x80, 0x0b, 0x30, 0xa4, 0xf1, 0x53, 0x04, 0x3c, 0x65, 0xff, 0xfb, 0x49, 0x96, 0xd8, 0x71, - 0x4f, 0xae, 0x44, 0x78, 0x92, 0x02, 0x5d, 0x33, 0xc6, 0xe7, 0x00, 0xfe, 0xdd, 0x54, 0x3d, 0x9f, - 0x8e, 0x3f, 0x04, 0x21, 0xd6, 0x25, 0xec, 0xdd, 0xff, 0x26, 0xa1, 0x4e, 0x35, 0x24, 0xc4, 0xf5, - 0x92, 0xfe, 0x9c, 0xeb, 0xbe, 0x8c, 0x14, 0xe4, 0x8e, 0xe6, 0x1d, 0xc4, 0x83, 0xa7, 0x89, 0xca, - 0x4f, 0xc2, 0x58, 0xed, 0x6b, 0x37, 0xff, 0x1d, 0x18, 0xbf, 0xa2, 0x02, 0xc5, 0xef, 0x31, 0x2b, - 0x29, 0xd1, 0x77, 0x74, 0x36, 0x11, 0x3b, 0xf8, 0xb8, 0xe0, 0x74, 0x54, 0x17, 0x38, 0x0c, 0x88, - 0x88, 0x76, 0xee, 0x67, 0x9d, 0x70, 0x29, 0xb2, 0x86, 0xf9, 0xcc, 0x89, 0x03, 0x77, 0x34, 0x5c, - 0x94, 0x5d, 0xef, 0xfd, 0xdd, 0xc8, 0x31, 0xf6, 0x90, 0x8e, 0x8a, 0x27, 0xc1, 0x8c, 0x25, 0x84, - 0x52, 0x11, 0x09, 0x0f, 0xea, 0x86, 0x71, 0x9c, 0x1e, 0xed, 0x57, 0x8c, 0xbd, 0xf9, 0xcf, 0x65, - 0xfe, 0xde, 0x71, 0x3e, 0x5b, 0x3a, 0x32, 0xda, 0xf4, 0xf1, 0xc9, 0x72, 0xe7, 0xe2, 0x86, 0xc7, - 0x8b, 0xda, 0x7c, 0x9c, 0xd4, 0x46, 0xc5, 0xe0, 0x73, 0x8a, 0x7a, 0x3c, 0x16, 0xf3, 0xb3, 0xf0, - 0x93, 0x87, 0x4b, 0x16, 0x0e, 0xee, 0xc6, 0x2b, 0x47, 0x89, 0x62, 0xde, 0x82, 0x7b, 0x60, 0xf0, - 0x30, 0xba, 0xf8, 0xe7, 0x77, 0xef, 0xd6, 0x86, 0x6b, 0x8c, 0x0c, 0x93, 0x78, 0xf6, 0x44, 0x96, - 0x1a, 0x57, 0x7e, 0x63, 0xf5, 0x8e, 0xb5, 0x3b, 0x37, 0x06, 0x93, 0x02, 0x7f, 0x0e, 0x68, 0x79, - 0x77, 0x58, 0xcc, 0x3c, 0x4a, 0x34, 0xf6, 0x34, 0x7c, 0x38, 0x95, 0xcf, 0xa3, 0x92, 0xce, 0x5f, - 0x11, 0xc0, 0x93, 0x82, 0x1d, 0x3e, 0x6b, 0xe9, 0x7d, 0xf5, 0x3a, 0x82, 0x57, 0x50, 0xce, 0x7e, - 0x87, 0x23, 0x27, 0xe6, 0xf4, 0xec, 0xc8, 0xd9, 0xce, 0xa4, 0x6a, 0xe1, 0x9f, 0x6c, 0x4e, 0xfe, - 0x18, 0xb9, 0xbb, 0xd6, 0x6f, 0x36, 0x0b, 0xf3, 0xcb, 0xca, 0x9b, 0x94, 0x6e, 0xbf, 0x42, 0x2b, - 0x05, 0x2d, 0xcb, 0x7d, 0xfe, 0x3c, 0xf5, 0xbc, 0xe5, 0x13, 0x45, 0xf9, 0xbe, 0x7f, 0xef, 0xe7, - 0xee, 0x6d, 0x47, 0xa7, 0xb2, 0xc0, 0x32, 0x3c, 0xff, 0x73, 0x40, 0x9c, 0xe7, 0xcf, 0x60, 0x01, - 0x3f, 0x87, 0x7a, 0x15, 0x36, 0xb0, 0x31, 0x79, 0xfe, 0x4c, 0x84, 0xe3, 0xf3, 0xb7, 0xaf, 0x4b, - 0xdb, 0xdc, 0xea, 0x40, 0x14, 0xe2, 0xc0, 0x00, 0x24, 0xf0, 0x00, 0x5b, 0x4d, 0x78, 0x2f, 0x64, - 0x6e, 0x0b, 0x99, 0xcf, 0xd4, 0xb7, 0xaf, 0x18, 0xde, 0xb7, 0xf4, 0x35, 0xe0, 0x7a, 0xe7, 0x68, - 0x80, 0xba, 0x77, 0x4c, 0xeb, 0x50, 0x6a, 0xb3, 0xa7, 0x5c, 0xd8, 0xab, 0x6b, 0x36, 0xa8, 0x0d, - 0x9d, 0xe1, 0x54, 0x00, 0xf3, 0xe9, 0x08, 0xfc, 0x99, 0x98, 0x23, 0x7c, 0x92, 0x40, 0x08, 0x4b, - 0xa2, 0x13, 0x07, 0x84, 0x22, 0x51, 0xa0, 0x3c, 0x91, 0x4f, 0xf7, 0xb2, 0xbd, 0x0e, 0x13, 0x90, - 0x40, 0xe8, 0x83, 0xcc, 0x36, 0x93, 0xa8, 0xca, 0xd8, 0x4b, 0xf2, 0x23, 0xeb, 0x7f, 0xbe, 0x4f, - 0x09, 0x93, 0xd5, 0x9c, 0x84, 0xf5, 0xb5, 0xc0, 0xe0, 0x6a, 0xce, 0x7f, 0x4e, 0x4d, 0xf6, 0xdf, - 0xaa, 0xc4, 0x17, 0x4d, 0x0d, 0x90, 0x3a, 0xfe, 0x97, 0xb9, 0x68, 0x62, 0x92, 0x49, 0xec, 0x1e, - 0x47, 0xd0, 0xed, 0xac, 0x7b, 0x96, 0x0f, 0xb1, 0xd6, 0x15, 0x22, 0xc3, 0x75, 0x4e, 0x0b, 0x30, - 0x71, 0x27, 0x86, 0x66, 0x06, 0x19, 0x56, 0xea, 0x8c, 0x36, 0x9c, 0xcc, 0x20, 0xaf, 0x4b, 0x33, - 0x2e, 0x90, 0x36, 0x19, 0xa4, 0x1e, 0x10, 0x38, 0x28, 0xda, 0x5d, 0x5a, 0x15, 0x47, 0x87, 0x86, - 0x65, 0xe1, 0x27, 0x54, 0x4b, 0x5c, 0xda, 0x22, 0xc5, 0xc0, 0xdb, 0xd4, 0xf7, 0x17, 0x00, 0x35, - 0x0e, 0x17, 0xa4, 0xfe, 0x4c, 0xfd, 0xc0, 0x12, 0xc4, 0x35, 0x61, 0x60, 0x54, 0xd2, 0xf4, 0xec, - 0xcb, 0x4d, 0x98, 0x41, 0x07, 0x65, 0xc2, 0xe8, 0x01, 0xca, 0x91, 0x2f, 0x21, 0x8c, 0xc4, 0x7f, - 0xe2, 0x29, 0x1b, 0xf7, 0x20, 0xda, 0x29, 0x26, 0x8b, 0xdf, 0x9b, 0xa3, 0xc1, 0x7c, 0xf6, 0x48, - 0x3e, 0x12, 0x59, 0xfe, 0xfd, 0xd2, 0xf5, 0x4e, 0xc8, 0x78, 0xb1, 0x2a, 0x5e, 0x2a, 0x95, 0x0e, - 0x62, 0xdf, 0xb1, 0x36, 0x51, 0x56, 0x66, 0x88, 0xf8, 0xbd, 0xeb, 0xd9, 0x8e, 0x36, 0x7e, 0xaf, - 0xea, 0xec, 0xc5, 0xfb, 0x6c, 0x5a, 0x72, 0xef, 0x2a, 0xeb, 0x58, 0xc9, 0xff, 0x06, 0x68, 0x04, - 0xb7, 0x1f, 0x01, 0x2d, 0xe5, 0xe8, 0x73, 0x40, 0xc3, 0x62, 0xad, 0x35, 0x39, 0xae, 0xdf, 0x9c, - 0x26, 0xa1, 0x0f, 0x91, 0x72, 0x86, 0xa9, 0x66, 0x1c, 0x4e, 0x1c, 0x57, 0x41, 0x2e, 0x3d, 0x73, - 0x1c, 0x9f, 0x3e, 0x36, 0x3c, 0xd8, 0x25, 0x92, 0x9d, 0xd2, 0xe1, 0x3e, 0xa5, 0x9f, 0xdc, 0x46, - 0x9d, 0x6a, 0x51, 0xc0, 0x7c, 0xf9, 0xc1, 0xcd, 0xd9, 0x90, 0xeb, 0xd4, 0x29, 0xe7, 0x8e, 0x6a, - 0xc2, 0xb1, 0x78, 0xc7, 0x4f, 0x33, 0xcf, 0xa4, 0x4a, 0x67, 0xab, 0x40, 0x61, 0x6c, 0xa8, 0x4e, - 0xe7, 0xe6, 0x91, 0x06, 0xe0, 0xa0, 0xe4, 0x21, 0x8a, 0x50, 0x72, 0x85, 0xf3, 0x1b, 0x26, 0x95, - 0xc0, 0xd1, 0xd6, 0x17, 0xc0, 0xfc, 0x0c, 0x94, 0x80, 0x4c, 0xc4, 0x2e, 0x7c, 0x97, 0x2b, 0x47, - 0x05, 0xb2, 0x73, 0x07, 0x8e, 0x22, 0xdc, 0x83, 0x47, 0x3e, 0x99, 0xc3, 0x9d, 0x00, 0x93, 0xf9, - 0xbb, 0xb8, 0x7f, 0xfa, 0x0c, 0x29, 0x02, 0x9f, 0x2d, 0x1c, 0x85, 0x48, 0x85, 0x1f, 0x47, 0x94, - 0x67, 0xfd, 0xcb, 0x9e, 0x17, 0x89, 0x02, 0xe1, 0x1e, 0xdf, 0xa5, 0xbb, 0x0e, 0xfa, 0x03, 0x24, - 0xc2, 0xdf, 0xe2, 0x73, 0x80, 0x64, 0xb2, 0x2f, 0xf1, 0x7c, 0x39, 0xf1, 0x4c, 0x39, 0x06, 0x75, - 0x8e, 0x4f, 0x98, 0x3f, 0x71, 0x99, 0x23, 0xc9, 0xa8, 0xa0, 0xda, 0x93, 0xf9, 0x21, 0xf7, 0x22, - 0xaa, 0x86, 0x0f, 0x8b, 0x02, 0x2e, 0xfe, 0xdf, 0xd4, 0x31, 0xa9, 0xcf, 0x10, 0x26, 0x28, 0x05, - 0x9d, 0x88, 0xc0, 0x13, 0xf9, 0x0e, 0x26, 0xee, 0x5d, 0x40, 0x12, 0x9e, 0x68, 0x3f, 0xfb, 0x49, - 0x99, 0x78, 0x51, 0x22, 0x12, 0x17, 0x9e, 0xd3, 0xe9, 0x2f, 0xdf, 0xe1, 0xf9, 0xf9, 0x04, 0xea, - 0x47, 0x68, 0x25, 0x37, 0x8a, 0x21, 0x44, 0xaa, 0x9d, 0x04, 0x71, 0x7e, 0x49, 0xc0, 0xd5, 0x38, - 0x54, 0x20, 0xc5, 0xe1, 0x43, 0xc1, 0x8a, 0x9a, 0xfb, 0x82, 0xfe, 0x41, 0x0a, 0xf9, 0x74, 0x29, - 0x8a, 0x89, 0x24, 0x3f, 0x95, 0xc3, 0x3c, 0x8e, 0x23, 0x94, 0xd3, 0x0c, 0x21, 0x7a, 0xe0, 0x9c, - 0x2f, 0xc4, 0x4f, 0xae, 0xc3, 0x54, 0xff, 0xf2, 0x84, 0xef, 0x0c, 0x06, 0x67, 0x9e, 0x26, 0xee, - 0x25, 0x84, 0xf1, 0x50, 0xee, 0xc8, 0x74, 0x8e, 0x46, 0xa3, 0x13, 0x0b, 0x15, 0x3e, 0x58, 0x8d, - 0x9e, 0xff, 0xeb, 0x3f, 0xb4, 0x9c, 0xef, 0xce, 0x02, 0x8b, 0x3f, 0x99, 0x05, 0x1e, 0xb9, 0xe4, - 0xff, 0xad, 0x2c, 0xf0, 0x3b, 0xb4, 0x30, 0xce, 0x64, 0xbe, 0xe4, 0x5f, 0x3e, 0xf8, 0xfc, 0x8e, - 0x10, 0x6b, 0x9b, 0xa5, 0x62, 0x8d, 0xa3, 0x98, 0xe1, 0xbc, 0x98, 0xfe, 0x6b, 0xa1, 0x8d, 0x0d, - 0x25, 0xa5, 0x98, 0x66, 0x0a, 0xe6, 0xa6, 0xae, 0x12, 0x4f, 0x18, 0x8a, 0xf9, 0x02, 0x7e, 0x06, - 0x47, 0x16, 0x9f, 0x3c, 0xa4, 0xde, 0x93, 0x38, 0x2c, 0x04, 0x9d, 0xdc, 0xda, 0xc9, 0xc7, 0xc2, - 0x47, 0x8a, 0xd4, 0xf7, 0xd3, 0x71, 0xb4, 0xf2, 0xf4, 0xd2, 0x01, 0x99, 0x71, 0x58, 0x68, 0x88, - 0x4b, 0x0d, 0xc9, 0x49, 0xf0, 0x17, 0xb2, 0xa6, 0xf0, 0xf7, 0x5a, 0x7d, 0xa5, 0xc2, 0x5f, 0x8c, - 0xf6, 0x95, 0xdc, 0x1b, 0xb3, 0x2d, 0x98, 0x3f, 0x7e, 0x4e, 0xdb, 0x56, 0x13, 0x3e, 0xaf, 0xae, - 0xf1, 0x2f, 0x15, 0x83, 0xb1, 0xb1, 0xb1, 0x4e, 0x19, 0xd0, 0xad, 0xae, 0xd3, 0x29, 0xd5, 0x54, - 0x5c, 0x17, 0x66, 0x04, 0xcf, 0xd0, 0xd2, 0xdf, 0xf0, 0x44, 0x1c, 0xb0, 0xe0, 0x5f, 0xb1, 0x95, - 0x92, 0xf8, 0xfb, 0xfb, 0xfb, 0xaf, 0x14, 0xcc, 0xc7, 0x20, 0x2d, 0x3b, 0xfc, 0x45, 0x5a, 0x04, - 0xc0, 0xd1, 0xc2, 0x14, 0x41, 0x01, 0xda, 0xa1, 0x5f, 0xa2, 0xbf, 0xa4, 0xbf, 0x75, 0x6d, 0xc7, - 0xd9, 0xde, 0x46, 0xa0, 0x52, 0x96, 0xa6, 0x8d, 0xdd, 0x54, 0x5d, 0x59, 0x2b, 0x5d, 0x02, 0xe7, - 0x8f, 0x00, 0xf2, 0x57, 0x2a, 0x06, 0x1c, 0x63, 0x17, 0x02, 0x0f, 0x2f, 0x11, 0xa5, 0x09, 0xb6, - 0x40, 0xee, 0xf0, 0x97, 0xa2, 0x25, 0x66, 0xe0, 0x67, 0xeb, 0xf1, 0xc0, 0xe1, 0x10, 0xe4, 0xe0, - 0x78, 0x7d, 0x34, 0x04, 0x83, 0x21, 0xb3, 0x30, 0xb0, 0xe0, 0x6b, 0x1b, 0x97, 0xca, 0xd2, 0x40, - 0x26, 0xd5, 0x34, 0xd4, 0x39, 0xde, 0x42, 0xd7, 0x4d, 0x8d, 0xf4, 0x02, 0xb1, 0xe2, 0x3d, 0x74, - 0x33, 0xfd, 0xed, 0xab, 0x11, 0x35, 0xc9, 0x65, 0xa3, 0xf4, 0xb7, 0x4f, 0x1f, 0x37, 0x5a, 0xa6, - 0x34, 0xf9, 0xf2, 0x95, 0x32, 0x20, 0xb3, 0x4d, 0xe0, 0x13, 0x3c, 0xcd, 0x4c, 0x7f, 0x23, 0x60, - 0xbe, 0x52, 0x4b, 0x38, 0x60, 0xb0, 0xdb, 0x77, 0x10, 0x69, 0x99, 0x27, 0x58, 0xb4, 0x4c, 0xcc, - 0xaf, 0xb3, 0xdb, 0x66, 0x95, 0xec, 0xe5, 0x6d, 0x7b, 0xc6, 0xe2, 0xdd, 0xdb, 0x76, 0xb7, 0x96, - 0x7a, 0xb2, 0x31, 0xee, 0xbc, 0xb8, 0x35, 0x4d, 0x17, 0x2f, 0x6f, 0x8d, 0x57, 0xbe, 0x77, 0xe7, - 0x53, 0xb2, 0x37, 0xc3, 0x5b, 0x39, 0x17, 0xf7, 0xce, 0xd3, 0x99, 0xef, 0x50, 0xdb, 0x21, 0x8b, - 0xbf, 0xbb, 0x7d, 0xbc, 0xa1, 0x6f, 0x58, 0x60, 0x79, 0xee, 0x41, 0xe9, 0x49, 0xfa, 0x7e, 0x8f, - 0x7f, 0x99, 0x5e, 0xea, 0x39, 0xf5, 0x99, 0x72, 0x35, 0x0f, 0xdf, 0x7a, 0x73, 0x3f, 0x7f, 0xb9, - 0xc4, 0xf1, 0xef, 0x91, 0x9e, 0xb5, 0xad, 0x89, 0xa1, 0x9f, 0x41, 0x21, 0x52, 0xa1, 0x58, 0x44, - 0x09, 0x21, 0x02, 0xd5, 0x4e, 0xc8, 0x67, 0x0c, 0x73, 0x3a, 0x4e, 0x7f, 0x63, 0x48, 0xd4, 0x62, - 0x69, 0xae, 0x8b, 0x01, 0xc6, 0x73, 0x12, 0x02, 0x6e, 0x98, 0xfb, 0xb5, 0x30, 0x72, 0x88, 0x6e, - 0x2a, 0x71, 0xf1, 0x2c, 0x92, 0x9a, 0x80, 0x75, 0x89, 0x25, 0x09, 0x60, 0x89, 0xf2, 0xe8, 0x21, - 0x5c, 0x0c, 0x99, 0xc4, 0x31, 0x18, 0xe7, 0x60, 0x16, 0xa0, 0x46, 0xb8, 0x37, 0xc5, 0x25, 0x5f, - 0xe8, 0xd4, 0x3c, 0xe8, 0xc1, 0x0a, 0x63, 0x5b, 0x64, 0xea, 0x73, 0x7a, 0xb5, 0x1c, 0x83, 0x2b, - 0xec, 0x39, 0x8a, 0x61, 0x5e, 0x79, 0x53, 0xc3, 0x85, 0x31, 0xb0, 0xa2, 0xcf, 0xe9, 0x6c, 0xa1, - 0x90, 0xc6, 0x57, 0x1d, 0x9e, 0xd3, 0x74, 0x3a, 0x45, 0xd2, 0xde, 0x34, 0xa9, 0x1b, 0xa7, 0x53, - 0x6b, 0xc5, 0x5c, 0x41, 0x8b, 0xce, 0x96, 0xd2, 0x29, 0xea, 0x70, 0xfb, 0x13, 0x2c, 0x43, 0x63, - 0x09, 0x2c, 0x4a, 0xd0, 0xf5, 0x98, 0xce, 0x47, 0x54, 0x4f, 0x7e, 0x37, 0xc8, 0x13, 0x45, 0x72, - 0xa0, 0xe8, 0x2a, 0x58, 0x1a, 0xff, 0x9e, 0xbf, 0xe7, 0xb4, 0x32, 0xc2, 0xf7, 0x57, 0x47, 0xa6, - 0x62, 0xcd, 0x31, 0xf4, 0x60, 0x62, 0x60, 0x74, 0x22, 0x2b, 0x18, 0x7e, 0x26, 0x0d, 0x55, 0x0a, - 0x4c, 0x69, 0x74, 0xaf, 0x26, 0x61, 0xa2, 0x30, 0x7c, 0x16, 0x3b, 0x4d, 0x37, 0x9d, 0x10, 0x96, - 0x30, 0x06, 0x4b, 0x1f, 0x8b, 0x43, 0x50, 0x30, 0x8e, 0x67, 0x82, 0x4d, 0xc4, 0x67, 0x3d, 0x3c, - 0x63, 0x3c, 0xd9, 0xbf, 0x24, 0x39, 0xc1, 0x05, 0xd2, 0xf4, 0xb7, 0x3e, 0xf6, 0xc4, 0xf8, 0xb7, - 0x57, 0x5a, 0x96, 0x66, 0x5e, 0x12, 0xa0, 0x8b, 0x3c, 0x3f, 0xe1, 0x78, 0xff, 0x04, 0xaf, 0x43, - 0xfe, 0x93, 0x63, 0x5e, 0x4d, 0x14, 0xd3, 0xd5, 0x7e, 0x4e, 0x0c, 0x32, 0xef, 0x14, 0x83, 0x77, - 0x0b, 0xc1, 0x45, 0xa6, 0xc7, 0x4e, 0xcf, 0x35, 0x4f, 0x5d, 0x42, 0x08, 0x19, 0xd7, 0x31, 0x54, - 0x33, 0x05, 0x9e, 0x23, 0x61, 0x9d, 0x82, 0x52, 0x60, 0xd7, 0xb4, 0xbd, 0x2b, 0x88, 0x4d, 0xd2, - 0xdf, 0xe8, 0x8b, 0xf6, 0xe5, 0x9d, 0x50, 0x68, 0x0c, 0x25, 0xfb, 0xab, 0x50, 0xb2, 0x18, 0x4a, - 0xee, 0x7b, 0x86, 0xe6, 0x44, 0x28, 0x08, 0x97, 0x20, 0x26, 0x31, 0xc1, 0xca, 0x69, 0x58, 0x28, - 0x52, 0xa7, 0x5e, 0x33, 0x29, 0x08, 0x27, 0x26, 0x25, 0xbc, 0x86, 0x1a, 0xda, 0x93, 0x51, 0xee, - 0xc0, 0x9e, 0x7c, 0x0d, 0xcb, 0xd5, 0x7b, 0xf7, 0x8b, 0x17, 0x04, 0xbe, 0x3b, 0x18, 0x6a, 0x07, - 0x3b, 0x1f, 0xc9, 0x4e, 0xd8, 0x1b, 0x44, 0x27, 0x31, 0xbf, 0x83, 0xaa, 0xe8, 0xb7, 0x72, 0x50, - 0xef, 0xf9, 0x4a, 0x85, 0xed, 0xd3, 0x19, 0x1c, 0xbe, 0x74, 0xf0, 0xc7, 0xc9, 0x04, 0x88, 0x89, - 0xc8, 0x9e, 0x27, 0x84, 0xd9, 0x2b, 0x70, 0x42, 0x28, 0xc2, 0x4b, 0x50, 0xdf, 0xd3, 0xd3, 0x13, - 0x6a, 0x06, 0x6b, 0x52, 0xee, 0x12, 0xc2, 0x9a, 0xbd, 0x86, 0x1d, 0xd2, 0x32, 0x15, 0x5e, 0x79, - 0xf9, 0x0e, 0x4d, 0x8f, 0xcd, 0x74, 0x2e, 0x5b, 0x38, 0x24, 0xeb, 0x7f, 0x4b, 0x61, 0xbb, 0x18, - 0xab, 0x1f, 0x28, 0x2d, 0x99, 0xf3, 0x93, 0x66, 0xfb, 0x7f, 0x4f, 0x5f, 0x2f, 0xd1, 0x1b, 0xd7, - 0x37, 0x70, 0x15, 0x79, 0xfb, 0x43, 0x9a, 0x07, 0xe4, 0x08, 0xef, 0x24, 0xfd, 0x04, 0x07, 0xf2, - 0x99, 0xc7, 0xbf, 0x81, 0x03, 0x7c, 0x84, 0xe7, 0x0f, 0xb8, 0x10, 0xcf, 0xfb, 0xff, 0x8e, 0x13, - 0xf8, 0x47, 0x03, 0xce, 0x33, 0xe1, 0x1c, 0x07, 0xb2, 0x17, 0xad, 0x2e, 0x31, 0x71, 0x78, 0xe6, - 0x64, 0x33, 0xca, 0x1c, 0x18, 0x3b, 0x6f, 0x10, 0x98, 0xdc, 0x2e, 0xce, 0x2e, 0xdf, 0x13, 0x53, - 0x4d, 0x36, 0xa6, 0xe1, 0x7a, 0xfb, 0x9d, 0xc2, 0x6c, 0x06, 0xb2, 0x98, 0x33, 0x8b, 0x46, 0xce, - 0x81, 0x41, 0x48, 0xa5, 0x0e, 0x4c, 0x42, 0x57, 0xd3, 0x17, 0xf8, 0xda, 0xcd, 0x7b, 0x7c, 0x37, - 0xe4, 0xa4, 0x78, 0xe8, 0x9d, 0xfb, 0x26, 0x56, 0xad, 0xbc, 0xa4, 0x14, 0xbd, 0xcb, 0x54, 0x55, - 0x94, 0xb5, 0xed, 0x80, 0x73, 0xff, 0x81, 0xb1, 0x22, 0x21, 0x85, 0xdb, 0x24, 0x81, 0xe9, 0x31, - 0xff, 0x30, 0x76, 0xc1, 0x15, 0x2a, 0x17, 0x3c, 0x49, 0x82, 0x85, 0xa7, 0x1e, 0x08, 0x5b, 0x71, - 0x5c, 0xb0, 0x3f, 0x64, 0x0b, 0x04, 0xdb, 0xf0, 0x1e, 0x38, 0xb2, 0x63, 0x77, 0xf8, 0xb3, 0x40, - 0xb2, 0xe7, 0xbc, 0xe1, 0xcf, 0x02, 0xc9, 0x9d, 0x75, 0x86, 0x3f, 0x09, 0x24, 0x8f, 0x81, 0xe4, - 0x63, 0x20, 0x91, 0x7c, 0xfc, 0x3c, 0xa0, 0x02, 0x06, 0x54, 0xf8, 0x45, 0x6c, 0x8a, 0x18, 0x48, - 0xf1, 0x17, 0x81, 0x3c, 0x60, 0x20, 0x0f, 0xbf, 0x08, 0xa4, 0x84, 0x81, 0x94, 0xfe, 0x06, 0xba, - 0x3c, 0x62, 0x40, 0x8f, 0xbf, 0x88, 0x0d, 0x1d, 0x04, 0x61, 0x99, 0x5f, 0x05, 0x13, 0x08, 0xef, - 0xaf, 0x4a, 0x2f, 0x4d, 0xc4, 0x97, 0xce, 0xfe, 0x0d, 0xd4, 0xa1, 0x89, 0x10, 0xd3, 0xbf, 0x2a, - 0xc5, 0x34, 0x11, 0x63, 0x3a, 0xff, 0xab, 0x60, 0x88, 0x10, 0xd3, 0xbf, 0x2a, 0xc5, 0x34, 0x11, - 0x63, 0xba, 0x78, 0x8e, 0x3e, 0xc1, 0xad, 0xef, 0x10, 0x52, 0x50, 0x1a, 0xc6, 0x85, 0xf9, 0xbd, - 0x3d, 0xec, 0x06, 0xcf, 0xce, 0xb0, 0x9f, 0xd9, 0x3b, 0x6f, 0xe2, 0x66, 0x03, 0xcf, 0x47, 0xd6, - 0x8c, 0xec, 0x4d, 0x3a, 0xb4, 0x76, 0x3d, 0x52, 0x47, 0x48, 0xfa, 0xd7, 0xb0, 0xa0, 0xd3, 0x4d, - 0x06, 0x97, 0x5f, 0xdd, 0xa5, 0x62, 0x1d, 0x6c, 0x4b, 0x8a, 0xea, 0xb0, 0x35, 0xf6, 0x88, 0x78, - 0x30, 0xf6, 0x30, 0x04, 0xc3, 0x24, 0xca, 0xc9, 0xa5, 0x53, 0xf0, 0x4b, 0x60, 0x3e, 0x53, 0x74, - 0x31, 0xa5, 0x42, 0xaf, 0xab, 0xac, 0x35, 0x52, 0x33, 0x74, 0x43, 0xc7, 0x71, 0x1f, 0x02, 0xc3, - 0xcb, 0xf7, 0x20, 0xde, 0x71, 0xec, 0x80, 0x74, 0x29, 0x75, 0xab, 0x9a, 0xef, 0x39, 0xb7, 0xba, - 0xbd, 0x74, 0x6e, 0x76, 0xf8, 0x37, 0x9d, 0xbb, 0x62, 0x38, 0xae, 0x97, 0x5a, 0x12, 0xbc, 0x9e, - 0x92, 0xa1, 0x0e, 0xe0, 0xe8, 0x46, 0x71, 0x48, 0xf0, 0x00, 0x7b, 0x9f, 0xde, 0x93, 0x78, 0x85, - 0xce, 0xef, 0x23, 0x93, 0x74, 0x02, 0x62, 0x53, 0xb9, 0x08, 0x50, 0x3b, 0x0b, 0x30, 0x1b, 0x01, - 0x2c, 0xc4, 0x00, 0x73, 0x49, 0x80, 0xb8, 0xec, 0x95, 0xc2, 0x97, 0xd6, 0xce, 0x03, 0xf5, 0xce, - 0x02, 0xcd, 0xdc, 0x47, 0x60, 0x8b, 0x85, 0xfb, 0x3d, 0x60, 0x1a, 0xba, 0xbf, 0xb9, 0x09, 0xd8, - 0x89, 0x7b, 0x0b, 0x47, 0x60, 0x2f, 0xc0, 0x3d, 0x07, 0x35, 0x73, 0xff, 0x00, 0x50, 0x7f, 0x54, - 0x4b, 0x08, 0x4a, 0x9a, 0x23, 0x3b, 0xf4, 0xe5, 0x47, 0xfa, 0x06, 0x63, 0xf8, 0x7f, 0x84, 0x48, - 0xea, 0x9a, 0xbd, 0xd4, 0xac, 0x9e, 0x32, 0x82, 0x40, 0xe9, 0x52, 0xb5, 0x30, 0xcc, 0xd3, 0x2e, - 0x94, 0xac, 0x70, 0x7d, 0xe2, 0xa4, 0x64, 0xf5, 0xfe, 0x6d, 0xe9, 0x8b, 0xdb, 0xe6, 0xc6, 0x97, - 0xb7, 0x0d, 0xf3, 0xad, 0x5f, 0xd8, 0x37, 0x7b, 0x69, 0xdf, 0x5c, 0x7e, 0xf4, 0x9d, 0x0a, 0x65, - 0xa8, 0x9b, 0xbf, 0xb0, 0x71, 0xee, 0xd2, 0xc6, 0x99, 0xbc, 0x7a, 0x79, 0xe3, 0x38, 0x6a, 0x3b, - 0xda, 0xf9, 0x48, 0x04, 0x82, 0x3a, 0xb7, 0x82, 0x43, 0xd8, 0x58, 0x48, 0xa2, 0xfe, 0xf8, 0x87, - 0x7c, 0xf7, 0x63, 0xf8, 0x7f, 0xb4, 0x88, 0x2a, 0xe7, 0xd4, 0x3f, 0xfe, 0x80, 0x83, 0xfc, 0x23, - 0x65, 0x38, 0xf6, 0xfd, 0xcc, 0x4d, 0xad, 0xf3, 0xf7, 0xf9, 0xfb, 0x0c, 0xe9, 0xc9, 0x66, 0xe8, - 0xe2, 0x1d, 0xbc, 0x3d, 0xa6, 0xea, 0xe4, 0x22, 0x7d, 0x59, 0xb1, 0x0c, 0xcd, 0x24, 0x43, 0x4d, - 0x43, 0x85, 0xe4, 0x43, 0x1b, 0xa7, 0x56, 0x16, 0x24, 0x06, 0x29, 0xa1, 0xdd, 0x4c, 0x65, 0xc3, - 0x55, 0xba, 0xe1, 0x4d, 0x57, 0xa3, 0x7b, 0xd5, 0x5e, 0x50, 0x33, 0x05, 0xaf, 0xa3, 0x02, 0xc8, - 0x78, 0x90, 0xfa, 0xfd, 0xb7, 0x3f, 0xa2, 0xff, 0x6b, 0xe3, 0xca, 0xbb, 0xd5, 0xae, 0xff, 0x4c, - 0xdb, 0xa3, 0x19, 0x70, 0x34, 0xfd, 0xfc, 0x8c, 0xd5, 0xc1, 0x9e, 0xa4, 0xb4, 0x0d, 0xbe, 0x63, - 0xe2, 0x7e, 0xfa, 0x94, 0xc6, 0xa0, 0x27, 0x86, 0x05, 0xe9, 0xe8, 0x1f, 0xd1, 0x20, 0x58, 0xf4, - 0x95, 0xa9, 0xfd, 0x33, 0xf8, 0xb8, 0x0f, 0xa7, 0x3e, 0x6b, 0x57, 0xd7, 0x4f, 0xe9, 0x08, 0xec, - 0x1e, 0x52, 0xb0, 0xfa, 0xd3, 0xa7, 0xe0, 0xf3, 0x5e, 0x59, 0x8c, 0xff, 0x19, 0x7c, 0xbd, 0xd2, - 0xae, 0x9f, 0xbc, 0x7b, 0xc0, 0x0a, 0xaf, 0xfc, 0x8b, 0xa4, 0x49, 0xb7, 0x31, 0x56, 0x80, 0xd2, - 0xca, 0xd5, 0x20, 0x17, 0x74, 0x0c, 0x40, 0xeb, 0xcb, 0x5a, 0x71, 0x52, 0xea, 0x73, 0x62, 0xf4, - 0xaf, 0x5b, 0xe3, 0x19, 0xde, 0xa6, 0xcf, 0xff, 0xfe, 0xcf, 0xed, 0x0a, 0xde, 0xbe, 0xc4, 0xff, - 0x77, 0xc8, 0x32, 0x38, 0x11, 0x5e, 0x61, 0xdf, 0x5a, 0xb7, 0xce, 0xad, 0x71, 0xeb, 0x3e, 0x2b, - 0x8e, 0xbe, 0x22, 0x92, 0x73, 0xab, 0x3c, 0xaf, 0xbe, 0x4c, 0x6c, 0xe7, 0xca, 0xd8, 0xf7, 0xdd, - 0x9b, 0x9a, 0xa5, 0x7b, 0xd3, 0x2f, 0xd9, 0xaf, 0xc6, 0xdd, 0xdd, 0x97, 0xeb, 0xe9, 0xfd, 0x72, - 0xe5, 0x4e, 0xaf, 0xdc, 0x7f, 0x1b, 0xff, 0xb9, 0x26, 0x53, 0x01, 0x79, 0x6b, 0x65, 0x9a, 0x7f, - 0x3c, 0x6b, 0xf7, 0xea, 0xd4, 0x30, 0xc7, 0x8e, 0x66, 0x7d, 0xfa, 0x74, 0x35, 0x0d, 0x97, 0xfd, - 0xd7, 0x7f, 0x85, 0x0b, 0xf6, 0xa3, 0xd7, 0xb7, 0x63, 0xcd, 0xd4, 0x3c, 0x2d, 0x95, 0xe8, 0xfa, - 0x12, 0xcd, 0xff, 0x72, 0x6d, 0x4c, 0xae, 0xae, 0xac, 0x67, 0x58, 0x65, 0x2f, 0xaf, 0xae, 0xaf, - 0x3f, 0x7d, 0x5a, 0xdb, 0xc6, 0x38, 0x95, 0xf9, 0xe3, 0xf9, 0xd9, 0xc2, 0x5d, 0xd7, 0x01, 0x76, - 0x56, 0x34, 0x3d, 0x89, 0x93, 0x45, 0x70, 0x82, 0x24, 0x40, 0x4b, 0x8f, 0x6c, 0xdb, 0xd4, 0x94, - 0x04, 0x9d, 0x31, 0x4e, 0xd6, 0x33, 0x46, 0xf4, 0xfa, 0xf6, 0xca, 0x79, 0xde, 0x73, 0x22, 0x66, - 0x9b, 0x77, 0x8d, 0xa7, 0xc0, 0x04, 0xd8, 0xe9, 0x9f, 0x60, 0xe6, 0xd2, 0x4f, 0x91, 0xd9, 0xdb, - 0x03, 0x81, 0xfe, 0xae, 0x87, 0x2f, 0xcb, 0x5d, 0x59, 0xc0, 0x4d, 0x97, 0x7c, 0xdd, 0x43, 0xc0, - 0x7b, 0x38, 0xcf, 0x7f, 0xd0, 0xd7, 0xd7, 0xb7, 0xce, 0xa7, 0x4f, 0xf6, 0x3f, 0x95, 0x7f, 0x2b, - 0x21, 0x9a, 0x77, 0xf4, 0x7f, 0x6e, 0x9e, 0xad, 0x27, 0xe5, 0xff, 0x71, 0x76, 0x2d, 0xdc, 0x6d, - 0xdb, 0xc8, 0xfa, 0xaf, 0x44, 0xdc, 0xd4, 0x87, 0xb4, 0xa0, 0x97, 0xd3, 0xe6, 0xb6, 0x54, 0x70, - 0x74, 0x12, 0x27, 0x6d, 0xb2, 0x9b, 0x47, 0x37, 0x4e, 0xd3, 0xee, 0x3a, 0xae, 0x0f, 0x4d, 0x51, - 0x12, 0x6b, 0x9a, 0x54, 0x49, 0x58, 0x96, 0x2a, 0xe9, 0xbf, 0xdf, 0x6f, 0x06, 0x20, 0x09, 0x49, - 0x74, 0x92, 0xee, 0x69, 0x23, 0x11, 0xaf, 0x01, 0x30, 0xef, 0x19, 0x40, 0xb4, 0x94, 0xf2, 0x76, - 0x14, 0xc8, 0xf3, 0xf4, 0xc2, 0x0f, 0xcc, 0x9a, 0x3d, 0x91, 0xc9, 0x9c, 0x29, 0x98, 0xc8, 0x34, - 0xba, 0x7b, 0x10, 0x0e, 0xf3, 0x48, 0xdd, 0xe6, 0xe9, 0x83, 0xa4, 0x9b, 0xc2, 0x35, 0x78, 0x4b, - 0x7f, 0x4b, 0x47, 0x89, 0xa4, 0x42, 0x95, 0x0c, 0x50, 0x08, 0x14, 0xa6, 0x86, 0x98, 0x45, 0x85, - 0xd4, 0x2b, 0x8e, 0x46, 0x1a, 0x4d, 0x7e, 0x84, 0xd6, 0xeb, 0x68, 0x75, 0x50, 0x4d, 0x95, 0x22, - 0xd9, 0x56, 0x7c, 0xf0, 0x46, 0xf3, 0x01, 0x61, 0x93, 0x79, 0xe1, 0x41, 0x9c, 0x3e, 0x88, 0x3c, - 0x75, 0x9e, 0x5d, 0xc8, 0x08, 0x1f, 0xe5, 0x22, 0x54, 0x3d, 0x22, 0xd1, 0x23, 0x34, 0xad, 0x15, - 0xb6, 0xda, 0xc0, 0xcd, 0x6a, 0xa4, 0x34, 0xdf, 0x86, 0xb7, 0x39, 0xdd, 0x0f, 0x94, 0x91, 0xb7, - 0x25, 0xf0, 0x91, 0x6c, 0xe8, 0xfc, 0x33, 0x62, 0xb4, 0xb8, 0x88, 0x46, 0xe6, 0xbb, 0x0b, 0xd3, - 0x96, 0x25, 0x0b, 0x70, 0x7b, 0x57, 0xcd, 0xa2, 0xb4, 0x7b, 0x15, 0xa7, 0x63, 0xf7, 0xa0, 0xcd, - 0xf3, 0x61, 0xff, 0xc8, 0x1c, 0x66, 0xb7, 0x4a, 0x4c, 0x64, 0x8f, 0xce, 0xe3, 0x36, 0xd1, 0xd2, - 0x1d, 0xf9, 0xc5, 0x66, 0xba, 0x49, 0x37, 0xf3, 0xcd, 0x43, 0x6f, 0x93, 0xcf, 0x67, 0x9b, 0xec, - 0xae, 0xd8, 0xdc, 0xa4, 0xe1, 0x26, 0x55, 0x77, 0x1b, 0x88, 0xd3, 0x79, 0x38, 0xbb, 0xd8, 0xfc, - 0x95, 0x65, 0x9b, 0xdf, 0xb3, 0x7c, 0xdc, 0x8b, 0x81, 0x74, 0x5b, 0x2a, 0x0a, 0x57, 0x79, 0xeb, - 0x96, 0xea, 0x5e, 0x8e, 0xe3, 0x5c, 0xad, 0xb0, 0xb7, 0xf2, 0x51, 0xb6, 0xfa, 0x60, 0x8b, 0x81, - 0x94, 0x99, 0x26, 0x17, 0x31, 0x49, 0x04, 0xa2, 0xd5, 0x68, 0x21, 0x71, 0x2b, 0xb1, 0xa8, 0x86, - 0x8a, 0x3a, 0x12, 0xe3, 0x0e, 0xbd, 0x1a, 0xda, 0x2b, 0x0c, 0xab, 0x07, 0x9c, 0x69, 0x3c, 0x96, - 0x08, 0xee, 0xea, 0x1f, 0xeb, 0xc7, 0x7f, 0x45, 0xe3, 0xb7, 0x25, 0xbd, 0x41, 0xb8, 0xcd, 0x46, - 0x55, 0xf4, 0xef, 0xaa, 0xec, 0x35, 0x1d, 0xb7, 0x9d, 0x06, 0x05, 0x30, 0x40, 0xad, 0xbb, 0x35, - 0x35, 0xec, 0x17, 0xb4, 0x0f, 0x8d, 0xf0, 0x37, 0x2e, 0x14, 0x80, 0xb2, 0x38, 0x05, 0x92, 0x51, - 0x33, 0x91, 0xaa, 0x1e, 0x99, 0xf5, 0x32, 0x69, 0xcd, 0x66, 0x6e, 0xa1, 0x01, 0xf5, 0xf3, 0x62, - 0x08, 0x69, 0xac, 0x04, 0x30, 0xf3, 0xca, 0x8d, 0xa6, 0xc4, 0x2e, 0x99, 0xa7, 0x5b, 0x68, 0x41, - 0xe0, 0x68, 0x60, 0x8d, 0xbe, 0x64, 0x86, 0x0f, 0xaf, 0xe4, 0x9f, 0xa8, 0x5e, 0xdb, 0xdb, 0x7a, - 0x6d, 0xaa, 0xab, 0xaf, 0x8f, 0xd2, 0x86, 0x87, 0xd0, 0x1f, 0x44, 0xdf, 0x9b, 0x6c, 0x11, 0x9d, - 0xd2, 0x9a, 0x76, 0x90, 0xb5, 0x20, 0x64, 0x09, 0xd6, 0x54, 0xde, 0x1a, 0x6b, 0x71, 0xd8, 0xf8, - 0xd0, 0x32, 0x1d, 0x9a, 0x96, 0xe6, 0x94, 0xba, 0xce, 0xf1, 0x84, 0x03, 0x1e, 0xe7, 0x6a, 0xad, - 0x04, 0x1e, 0x50, 0xff, 0x3c, 0x9a, 0xe8, 0xaa, 0xc4, 0x05, 0x14, 0x16, 0xff, 0xc4, 0x4d, 0x85, - 0xb2, 0xba, 0xe8, 0xe1, 0x2d, 0x46, 0x7a, 0x4e, 0xea, 0xc7, 0xe1, 0xd3, 0x5e, 0x3d, 0x8c, 0x26, - 0x85, 0x5c, 0x37, 0xc9, 0xfa, 0x41, 0x5d, 0xb6, 0xd9, 0x80, 0x71, 0x78, 0x70, 0x37, 0x2c, 0x8a, - 0x0f, 0xd1, 0x52, 0xc9, 0x74, 0xb3, 0x71, 0xb0, 0x34, 0xea, 0xbe, 0x6f, 0x44, 0x52, 0xbd, 0xa3, - 0x03, 0x28, 0x15, 0x96, 0x63, 0x8d, 0x65, 0xfe, 0x4a, 0x6b, 0xd8, 0xd0, 0x72, 0xd0, 0x4e, 0x5a, - 0xf9, 0x56, 0xdd, 0x52, 0xcf, 0x6e, 0x3d, 0x50, 0x5c, 0xa8, 0x3d, 0x3a, 0x6a, 0x81, 0x8f, 0xe5, - 0xa4, 0x0b, 0x5e, 0x50, 0x6e, 0xec, 0x8d, 0xa8, 0xb2, 0xed, 0xcc, 0x97, 0x8e, 0x4f, 0x4f, 0xdb, - 0x6d, 0x85, 0x90, 0x31, 0xb9, 0xd9, 0x79, 0x76, 0x5b, 0x24, 0xab, 0x33, 0x4a, 0xe1, 0xa5, 0x51, - 0xfe, 0xf2, 0xc3, 0x9b, 0xd7, 0x1a, 0x21, 0x29, 0x4b, 0x47, 0x5c, 0x56, 0x42, 0x13, 0x5f, 0x5e, - 0xd2, 0x2b, 0x5f, 0x78, 0x9f, 0x35, 0x52, 0x33, 0x87, 0xb8, 0xa2, 0x8f, 0x59, 0x9d, 0x94, 0x1f, - 0x07, 0x17, 0x9a, 0xfa, 0xb0, 0x84, 0x40, 0x35, 0xc8, 0x46, 0x44, 0x9f, 0x27, 0x41, 0x18, 0xb9, - 0xbd, 0xd3, 0x60, 0x0e, 0x6e, 0x89, 0x1e, 0xf6, 0x04, 0x60, 0x00, 0xc8, 0x3e, 0x83, 0x77, 0x8b, - 0xdb, 0x2b, 0x8d, 0x26, 0x78, 0x46, 0x22, 0x1d, 0x65, 0x24, 0x1d, 0xc1, 0x78, 0xfc, 0x82, 0x7e, - 0x3a, 0xf6, 0x3a, 0x2e, 0x54, 0x84, 0xd5, 0xb8, 0x91, 0x18, 0x8b, 0x82, 0x94, 0x8f, 0x66, 0xa6, - 0xa6, 0x46, 0x41, 0x82, 0x9d, 0x98, 0xba, 0x82, 0x51, 0x5a, 0x17, 0x61, 0x31, 0x3d, 0xef, 0x3c, - 0xba, 0x90, 0x69, 0x8d, 0x0a, 0x4e, 0xb8, 0xb5, 0x98, 0xd3, 0x1c, 0xc2, 0xa5, 0x79, 0x6e, 0x41, - 0xbf, 0x47, 0x84, 0x76, 0xb0, 0xb4, 0xca, 0x57, 0x6b, 0xc5, 0xc3, 0x8c, 0xed, 0x80, 0xe5, 0x48, - 0xb7, 0x61, 0xa0, 0x42, 0x52, 0x17, 0xeb, 0xad, 0x56, 0x98, 0x29, 0xa1, 0x9f, 0x8c, 0x18, 0xf0, - 0x54, 0xcc, 0xa3, 0x24, 0xe1, 0x18, 0xc5, 0x31, 0x92, 0xae, 0x57, 0xfc, 0xb4, 0x94, 0x55, 0xe8, - 0x50, 0x5e, 0x02, 0x23, 0x2c, 0x90, 0x34, 0xd9, 0x01, 0xce, 0x7e, 0x5f, 0x92, 0x0f, 0xe7, 0x8f, - 0x0c, 0xce, 0xcc, 0xe4, 0x9b, 0x0d, 0x13, 0x39, 0x1d, 0x05, 0xa3, 0x03, 0xa8, 0x6f, 0xcf, 0x5c, - 0xe7, 0xf0, 0x9e, 0xfb, 0xe0, 0x87, 0x1f, 0x7e, 0xe8, 0x31, 0x2c, 0x47, 0xec, 0xa1, 0xbd, 0xc6, - 0xa5, 0xbd, 0x32, 0xbf, 0xc1, 0x76, 0x12, 0x53, 0xd0, 0x8c, 0xd0, 0xcd, 0xff, 0xfb, 0x74, 0x22, - 0xa5, 0x09, 0x6d, 0x10, 0xa0, 0x5a, 0xea, 0x69, 0x54, 0x40, 0x51, 0x56, 0xa2, 0xaf, 0x85, 0xaa, - 0x56, 0x12, 0xa4, 0x32, 0x2a, 0x7d, 0x0a, 0x3f, 0xc9, 0xa2, 0xe9, 0xb9, 0xea, 0xd2, 0x12, 0x2f, - 0x48, 0xa9, 0x10, 0x32, 0x5f, 0x92, 0x47, 0xf4, 0x41, 0xf6, 0xc5, 0x14, 0x76, 0x5a, 0x5c, 0xe2, - 0xa3, 0x36, 0x02, 0x3f, 0xef, 0x69, 0xf2, 0x97, 0xdd, 0x62, 0x16, 0x4f, 0x94, 0xd6, 0xe5, 0xf0, - 0x14, 0xe7, 0x59, 0x0a, 0x8e, 0x7a, 0x1e, 0x8f, 0xdf, 0x64, 0xb7, 0x29, 0x0c, 0x60, 0x43, 0xa5, - 0xad, 0x8b, 0x9f, 0xd6, 0xaa, 0x4b, 0xc4, 0xde, 0xfa, 0x43, 0xbb, 0x0d, 0x7e, 0x9b, 0x4a, 0xcd, - 0x0e, 0xb9, 0xe5, 0xd7, 0xe4, 0xdd, 0xec, 0x0e, 0x6b, 0x3d, 0xfb, 0xf8, 0xd3, 0x8b, 0x24, 0x22, - 0x97, 0x0b, 0xeb, 0xaa, 0xac, 0x6c, 0xcb, 0x75, 0x2e, 0x2f, 0x11, 0xf5, 0x05, 0xa1, 0x22, 0x55, - 0x7e, 0xe9, 0x30, 0xd3, 0x79, 0x43, 0x2d, 0x4a, 0xbf, 0x54, 0x73, 0xc4, 0x95, 0xca, 0x05, 0xe8, - 0xc2, 0xd2, 0xaf, 0x34, 0xc1, 0xd1, 0x51, 0xde, 0xa5, 0xbb, 0x26, 0xe9, 0x58, 0x6b, 0x58, 0x08, - 0x42, 0xa7, 0xf3, 0x01, 0xcb, 0x21, 0x04, 0x88, 0x78, 0xb3, 0xc1, 0xd6, 0x3d, 0x51, 0xd4, 0x6b, - 0xff, 0xc5, 0x56, 0xbb, 0xac, 0x63, 0xe0, 0x83, 0x14, 0x72, 0x4a, 0xe6, 0xc0, 0x38, 0x7b, 0x10, - 0x88, 0xd2, 0xc9, 0xaa, 0xd8, 0x00, 0xbc, 0x4c, 0xfa, 0x98, 0x54, 0xb1, 0xd1, 0x6a, 0xd2, 0x6a, - 0x3a, 0xd0, 0x4a, 0x91, 0x57, 0x12, 0xcd, 0xc2, 0x06, 0x38, 0x60, 0x9e, 0xc4, 0x8a, 0x94, 0x27, - 0xa1, 0xb8, 0xde, 0x08, 0x58, 0x8c, 0x2c, 0x74, 0x85, 0x73, 0x52, 0xd6, 0x23, 0x6d, 0xb6, 0x3e, - 0x52, 0x0c, 0xca, 0x6b, 0x72, 0xad, 0x0a, 0x28, 0x2b, 0x1f, 0xae, 0xe2, 0x38, 0x0b, 0xd9, 0x91, - 0xed, 0x86, 0xc0, 0xa2, 0x8a, 0x08, 0x30, 0x81, 0x03, 0x27, 0x0b, 0xc5, 0x03, 0xec, 0x29, 0xec, - 0x52, 0x29, 0x6b, 0x1a, 0x67, 0x31, 0x6c, 0x86, 0x78, 0x07, 0xbc, 0xc0, 0x23, 0x00, 0xb2, 0xe2, - 0xee, 0x0e, 0x59, 0xe0, 0x27, 0x88, 0x98, 0x89, 0x02, 0xf7, 0x4c, 0x84, 0x10, 0xd4, 0xd2, 0x9c, - 0x12, 0xca, 0x1a, 0x9c, 0x9f, 0xb0, 0xdc, 0xbb, 0x1d, 0x69, 0x10, 0xc6, 0x35, 0xbe, 0x73, 0xc9, - 0xbb, 0xaf, 0x77, 0x0b, 0x87, 0x3e, 0x07, 0x05, 0x94, 0x60, 0x75, 0x60, 0xb7, 0x9c, 0x22, 0x46, - 0x53, 0xf9, 0x6d, 0xa8, 0xb2, 0x9c, 0x5d, 0x83, 0x72, 0x62, 0x91, 0xc0, 0x55, 0x0c, 0xe5, 0x0b, - 0x6c, 0x94, 0x4d, 0xc5, 0x10, 0xe3, 0x5a, 0x09, 0xbb, 0xa8, 0x79, 0xf7, 0x52, 0x6f, 0xf3, 0xb4, - 0x04, 0x02, 0x1e, 0x4f, 0x50, 0x1d, 0xde, 0x03, 0x8b, 0xc6, 0xd2, 0xd0, 0x16, 0x24, 0x2f, 0xb7, - 0xe6, 0xf6, 0x46, 0xee, 0x1f, 0x6e, 0x2e, 0x42, 0xf1, 0x88, 0x97, 0x2e, 0x14, 0x60, 0xd0, 0x9f, - 0x07, 0x24, 0xc4, 0x63, 0xb6, 0x00, 0x43, 0x5e, 0xc3, 0xd4, 0xa0, 0xbe, 0x30, 0xbe, 0x77, 0x2e, - 0xdf, 0xbb, 0xd6, 0x1a, 0x43, 0x91, 0x31, 0x19, 0x5a, 0x79, 0x37, 0x05, 0x61, 0x9e, 0x61, 0x2c, - 0xad, 0xb0, 0x2a, 0x30, 0xdb, 0xe9, 0x91, 0x7a, 0xa2, 0xc1, 0xee, 0x44, 0x02, 0x31, 0x98, 0x02, - 0xd7, 0xe0, 0xcb, 0x2d, 0xac, 0x85, 0xf1, 0x18, 0x90, 0xab, 0x10, 0xe4, 0x8e, 0x7b, 0xb5, 0x3b, - 0x5b, 0xa1, 0x99, 0xe8, 0x32, 0x95, 0x4e, 0xb1, 0x20, 0x26, 0x95, 0x21, 0xd8, 0x13, 0x48, 0x8a, - 0xe2, 0x69, 0xfa, 0x4e, 0x9b, 0x69, 0x00, 0x0d, 0x8f, 0x8e, 0xa6, 0xc0, 0xa0, 0xf1, 0xf8, 0x43, - 0x58, 0x8f, 0x16, 0xb8, 0xae, 0x45, 0x0e, 0x5c, 0x48, 0x91, 0x89, 0x1b, 0xc8, 0x50, 0xb8, 0x89, - 0x9c, 0x8e, 0xf6, 0x78, 0xcc, 0xc8, 0x71, 0xb3, 0x06, 0x2c, 0x7f, 0x58, 0xe4, 0x88, 0xc0, 0xf3, - 0x9b, 0x07, 0xba, 0x81, 0xe7, 0x35, 0xf9, 0x85, 0x01, 0xb8, 0x20, 0x01, 0x1f, 0x6a, 0x3d, 0x35, - 0x54, 0xdd, 0x09, 0xa5, 0xae, 0x98, 0x3f, 0x11, 0x37, 0xed, 0x88, 0xb8, 0xdd, 0xe6, 0x0d, 0xff, - 0x17, 0x26, 0x67, 0x7d, 0x39, 0x93, 0xb1, 0x05, 0x08, 0xb1, 0xe4, 0x1e, 0xdf, 0x8b, 0xb9, 0x15, - 0xf6, 0x95, 0xda, 0x01, 0x41, 0x8e, 0xb7, 0x3e, 0xe8, 0x0a, 0xf3, 0x5a, 0xb9, 0x2c, 0x13, 0x34, - 0xd6, 0x9e, 0xa9, 0x18, 0xc3, 0x2b, 0x31, 0xf1, 0xdc, 0x98, 0xe2, 0xb9, 0xdb, 0xf3, 0xc9, 0xf9, - 0xf8, 0xa2, 0x4b, 0x39, 0x81, 0x0b, 0xc9, 0x8f, 0x9c, 0x65, 0xda, 0x6a, 0x2a, 0xb6, 0x2e, 0x8f, - 0x8e, 0xe6, 0xec, 0x94, 0xcb, 0xb9, 0x19, 0x56, 0x3b, 0x63, 0x95, 0x80, 0xcd, 0xd9, 0xf9, 0xd0, - 0xca, 0x6a, 0x66, 0xe9, 0x97, 0x99, 0xad, 0x5f, 0xf4, 0x6a, 0x67, 0xcc, 0x6e, 0x67, 0x31, 0x65, - 0x45, 0xa6, 0xa3, 0x99, 0xad, 0x52, 0x34, 0x14, 0xd7, 0xaa, 0xe3, 0x2a, 0xf0, 0x37, 0x56, 0x30, - 0xaf, 0x62, 0x5c, 0x33, 0x0d, 0x78, 0x62, 0x5f, 0x9c, 0x2b, 0x05, 0x2a, 0x10, 0x5c, 0x93, 0x6a, - 0x40, 0x50, 0x6e, 0x9c, 0x6f, 0x42, 0x7f, 0xc1, 0xe1, 0x39, 0xb0, 0x08, 0x67, 0x7d, 0x02, 0xb3, - 0x34, 0xc6, 0xbf, 0x85, 0x2c, 0x83, 0x61, 0x58, 0xa9, 0x3e, 0x8c, 0x41, 0x34, 0x8a, 0x4c, 0x85, - 0xdf, 0x27, 0x1c, 0xd3, 0x36, 0x16, 0x95, 0x97, 0x78, 0x23, 0xfb, 0xc3, 0x9b, 0x27, 0x8b, 0xe1, - 0x4d, 0xbb, 0xad, 0xa7, 0x5a, 0xc9, 0xd9, 0xf9, 0xcd, 0x85, 0xb8, 0x92, 0xab, 0x3d, 0x5a, 0xdd, - 0x49, 0x60, 0xee, 0x6a, 0xb4, 0xb2, 0xe4, 0x64, 0xa7, 0x80, 0xee, 0xf0, 0xa0, 0xfd, 0x2b, 0x8a, - 0x15, 0x7d, 0xda, 0xd2, 0x50, 0xef, 0xeb, 0x6e, 0xe4, 0x4e, 0xda, 0x6d, 0x31, 0x3f, 0xbf, 0xbb, - 0x90, 0x2b, 0x6c, 0xfd, 0x0a, 0x6a, 0xbe, 0xc2, 0xe7, 0xaa, 0xc6, 0xe7, 0xa8, 0x95, 0x6f, 0x36, - 0xab, 0x1a, 0x55, 0x5d, 0x90, 0xe4, 0xc6, 0xf5, 0xfc, 0x9c, 0x85, 0xe5, 0xf6, 0x7c, 0xda, 0x6e, - 0x13, 0x80, 0xad, 0xd9, 0xc2, 0xe5, 0xde, 0x16, 0x2e, 0xf5, 0x16, 0x12, 0x38, 0x8b, 0x58, 0x7e, - 0xc8, 0x22, 0xcc, 0x2a, 0xf5, 0x4e, 0x72, 0x4c, 0x5b, 0x1b, 0x9f, 0x3b, 0x6f, 0x62, 0x51, 0x94, - 0xd6, 0x05, 0xf8, 0x21, 0x3f, 0xe8, 0x55, 0xea, 0x36, 0x31, 0xe9, 0x74, 0x6a, 0x97, 0x74, 0xfc, - 0x64, 0x6a, 0x92, 0x07, 0xe3, 0x61, 0xfc, 0x04, 0xa6, 0x0c, 0x93, 0xd9, 0xd1, 0xcd, 0x2d, 0xfb, - 0xc8, 0xee, 0x12, 0xaa, 0x8a, 0x1e, 0xc5, 0x29, 0x14, 0xee, 0x3e, 0x57, 0xb9, 0xd7, 0x32, 0xf1, - 0x1a, 0x2c, 0xd9, 0xf5, 0xa8, 0x02, 0xb3, 0xac, 0xf1, 0xe1, 0x1f, 0x30, 0xe5, 0x75, 0xa5, 0xf9, - 0x46, 0xad, 0x65, 0xb3, 0x0e, 0x3f, 0x3a, 0x3a, 0x73, 0x97, 0xa2, 0xee, 0xe8, 0xf9, 0xa7, 0x9b, - 0xcd, 0x3d, 0x7d, 0x21, 0x01, 0x56, 0x47, 0x6f, 0x1d, 0x4a, 0xf0, 0x13, 0x05, 0x00, 0x66, 0xff, - 0x31, 0x3a, 0x4c, 0x3b, 0x03, 0xa8, 0xb1, 0x4e, 0x87, 0x0b, 0xe3, 0xa3, 0xa3, 0x71, 0xbb, 0x3d, - 0xbc, 0x02, 0x53, 0x5c, 0x6f, 0x43, 0xb8, 0x0f, 0x21, 0x58, 0x92, 0x15, 0x6a, 0xa0, 0x99, 0x06, - 0x2a, 0x2f, 0x24, 0x23, 0xac, 0xbf, 0x82, 0x2a, 0x23, 0x42, 0xce, 0x9d, 0xad, 0x5e, 0x42, 0xcf, - 0x0f, 0x01, 0x2f, 0xd8, 0x91, 0x9c, 0xb7, 0xd0, 0x5b, 0x94, 0xb3, 0x4a, 0x8b, 0x28, 0x57, 0xcf, - 0x22, 0xd2, 0xa7, 0x98, 0x00, 0xba, 0x8c, 0x55, 0x09, 0x36, 0x25, 0x4e, 0x89, 0x86, 0x93, 0x9a, - 0xee, 0xe4, 0x42, 0xcf, 0x3d, 0x8b, 0x92, 0x37, 0x20, 0xc1, 0x3b, 0x97, 0xbe, 0x49, 0x71, 0x6b, - 0xbb, 0x35, 0x7e, 0x02, 0xc7, 0xa3, 0xee, 0x04, 0x42, 0x83, 0x95, 0x3a, 0x9d, 0x0b, 0x8f, 0xba, - 0x86, 0xd4, 0x6f, 0x0b, 0xc5, 0x35, 0x67, 0x69, 0xbb, 0x2c, 0x65, 0xf1, 0xb6, 0x7b, 0x4f, 0x14, - 0xe3, 0x89, 0x5d, 0x11, 0xd5, 0x32, 0x93, 0xf2, 0x54, 0x26, 0xac, 0xad, 0x33, 0x5a, 0x08, 0x65, - 0x35, 0x40, 0xc9, 0x61, 0xed, 0x66, 0x43, 0xf1, 0x68, 0x2a, 0xe8, 0x99, 0x3f, 0x4a, 0x44, 0x4f, - 0xbd, 0x7a, 0x7c, 0xe4, 0x39, 0xa5, 0x42, 0x24, 0xcb, 0x42, 0xbe, 0x6a, 0x6c, 0x87, 0x50, 0xa8, - 0xd0, 0xf3, 0xc0, 0xab, 0x27, 0x10, 0xd8, 0x91, 0xc3, 0xea, 0xad, 0xec, 0x6d, 0x7e, 0x7e, 0xc0, - 0xc5, 0x91, 0xa2, 0x5c, 0x11, 0x87, 0xd4, 0x87, 0x93, 0xd3, 0x70, 0x4c, 0x4d, 0xbb, 0x8f, 0x6c, - 0x75, 0x7a, 0xeb, 0x41, 0x71, 0x14, 0x22, 0xae, 0xfd, 0xb9, 0x77, 0x56, 0xd6, 0x4f, 0xda, 0xce, - 0xc3, 0x30, 0x1b, 0xbd, 0x76, 0x33, 0xc8, 0xb4, 0x71, 0x38, 0x77, 0x35, 0x06, 0x8c, 0xbe, 0xbb, - 0x57, 0x05, 0x7b, 0x31, 0x31, 0x71, 0x34, 0xc7, 0x33, 0x15, 0xae, 0xf6, 0xfa, 0x6d, 0x36, 0x14, - 0xef, 0x8b, 0x1c, 0x1f, 0x96, 0x4f, 0x4c, 0x45, 0xb6, 0x5d, 0x0a, 0xfd, 0xe1, 0xce, 0x1b, 0xdb, - 0xa5, 0x86, 0x56, 0x66, 0x80, 0xae, 0xba, 0x82, 0x6a, 0x86, 0xa9, 0x86, 0xc6, 0x1a, 0xc1, 0xe2, - 0x47, 0xdb, 0xad, 0x8e, 0x87, 0xec, 0xcc, 0xcd, 0xfb, 0x1d, 0x2a, 0xc2, 0xbd, 0x28, 0x53, 0x6e, - 0x4c, 0x10, 0x02, 0x97, 0xa9, 0x8c, 0xa4, 0x8f, 0xcd, 0x5e, 0x59, 0xc0, 0x2e, 0x28, 0x25, 0x3c, - 0xa2, 0x94, 0x60, 0x74, 0xf7, 0x40, 0xb9, 0x04, 0x42, 0xac, 0xba, 0xf4, 0x8e, 0x4f, 0x37, 0x65, - 0x80, 0xc0, 0x89, 0x69, 0x5d, 0x71, 0xab, 0xb7, 0xe3, 0x1c, 0x81, 0x10, 0x06, 0x86, 0xbc, 0x81, - 0x77, 0x41, 0x46, 0x0b, 0x9c, 0x1d, 0x9c, 0xe7, 0x17, 0x7b, 0x3e, 0x94, 0x2a, 0xfd, 0xbc, 0xb4, - 0xf6, 0x69, 0xb8, 0x5b, 0x59, 0x12, 0x01, 0x2b, 0x0c, 0x84, 0x74, 0xb9, 0x18, 0x20, 0x06, 0x2a, - 0x5d, 0x95, 0xb4, 0xc6, 0xda, 0x4d, 0xb9, 0x47, 0x3b, 0xc6, 0xb1, 0xa6, 0x41, 0x73, 0x66, 0x21, - 0xf9, 0x0f, 0xdb, 0xf6, 0x70, 0x16, 0xaa, 0xa0, 0xd7, 0x87, 0xe8, 0x68, 0xd7, 0x14, 0xc8, 0x5f, - 0x25, 0x8a, 0xd1, 0xdf, 0xd9, 0x8e, 0x98, 0xa6, 0x46, 0xfb, 0x4b, 0x9d, 0x29, 0xac, 0x32, 0xb4, - 0xd4, 0x54, 0x15, 0xa8, 0xa5, 0xca, 0xf9, 0x28, 0x7b, 0x09, 0xdd, 0x69, 0xa4, 0x9e, 0x47, 0x79, - 0xbc, 0x88, 0xc6, 0x67, 0xf4, 0x3b, 0x91, 0x1f, 0xf3, 0xec, 0x86, 0x13, 0x48, 0xda, 0x6b, 0x27, - 0x57, 0x0d, 0x9e, 0xe3, 0xc8, 0x0a, 0x99, 0x7e, 0x8d, 0x93, 0xe4, 0x30, 0x90, 0xaa, 0x6a, 0x5d, - 0xce, 0x22, 0xda, 0xd5, 0xef, 0xa3, 0x30, 0x02, 0x7c, 0x03, 0xf5, 0x33, 0x8d, 0x3a, 0x6a, 0xa4, - 0x94, 0x4b, 0xda, 0x32, 0xcb, 0x54, 0x6c, 0xed, 0x5d, 0xcd, 0x5d, 0xa7, 0xba, 0xcc, 0xf8, 0xb0, - 0xca, 0x75, 0x4f, 0x30, 0x5b, 0xf9, 0x28, 0xc9, 0xd7, 0xe4, 0x5e, 0x0c, 0xba, 0x1a, 0xc3, 0x25, - 0xe6, 0x56, 0x7c, 0xeb, 0x2e, 0x54, 0x11, 0x09, 0x1b, 0xc5, 0x03, 0xc1, 0x59, 0x33, 0x4c, 0x3c, - 0xd0, 0xdf, 0x1c, 0x9b, 0xc7, 0xdd, 0x62, 0x95, 0x86, 0x95, 0xe7, 0xfd, 0x0b, 0xdf, 0x85, 0xe2, - 0x1d, 0x11, 0x96, 0x46, 0x94, 0x8a, 0xf4, 0x5f, 0x81, 0x84, 0x03, 0x90, 0x8f, 0x92, 0x55, 0x86, - 0x4c, 0x62, 0x47, 0x90, 0x5e, 0xd5, 0xe1, 0x02, 0xf8, 0xae, 0x55, 0xcf, 0x6a, 0xc2, 0x07, 0xc1, - 0xfe, 0x46, 0xb9, 0x40, 0x84, 0x02, 0x94, 0x1d, 0xc2, 0x3c, 0x30, 0xab, 0xd5, 0xde, 0xd8, 0x13, - 0xb1, 0xb6, 0x16, 0xc0, 0x17, 0xd1, 0x15, 0x4c, 0xc2, 0xcd, 0x26, 0x81, 0x5f, 0xb2, 0x87, 0xb2, - 0x10, 0x5e, 0x8a, 0x5e, 0x28, 0x5c, 0x15, 0x55, 0x33, 0xf1, 0x42, 0x4e, 0x36, 0x9b, 0x31, 0xd4, - 0xce, 0x4e, 0xcc, 0xc2, 0xe1, 0xe5, 0x8d, 0x9c, 0x93, 0xd6, 0xff, 0x6a, 0x76, 0x49, 0xe4, 0x1b, - 0x97, 0x93, 0x97, 0x89, 0xa1, 0xc3, 0x17, 0x07, 0xb9, 0x70, 0xac, 0x3c, 0xea, 0xcc, 0x5b, 0x84, - 0x85, 0x16, 0x13, 0x43, 0x6c, 0xa2, 0xc9, 0xac, 0x6a, 0xb8, 0xb5, 0xe8, 0x3a, 0x17, 0x27, 0x5a, - 0x7b, 0xf1, 0x0b, 0xa3, 0x6e, 0x93, 0xf1, 0x1e, 0x41, 0x0c, 0xb1, 0xee, 0x69, 0x75, 0xd9, 0x95, - 0xf3, 0x46, 0x14, 0xf7, 0xed, 0xf3, 0x69, 0x39, 0xbe, 0xb1, 0xda, 0x0c, 0xac, 0x18, 0x26, 0xa8, - 0x57, 0x6d, 0x2d, 0x2e, 0xdc, 0x61, 0x3a, 0x9b, 0x28, 0x72, 0x9f, 0x65, 0x2b, 0xa5, 0xc2, 0x01, - 0x4f, 0x9d, 0xb6, 0x1e, 0x88, 0xd6, 0x25, 0x14, 0x86, 0x54, 0x46, 0x4d, 0xd5, 0x13, 0x03, 0x8b, - 0xac, 0x75, 0x4f, 0x2b, 0xb1, 0x08, 0x4b, 0x8c, 0x37, 0xb5, 0xbb, 0x14, 0xed, 0x4e, 0x68, 0x3b, - 0x68, 0x38, 0x4b, 0x83, 0x39, 0x10, 0x62, 0x8c, 0x7b, 0xb9, 0x53, 0xf7, 0x46, 0xde, 0xdb, 0xea, - 0xce, 0x60, 0x8e, 0x74, 0xba, 0x62, 0x25, 0xae, 0xe0, 0x82, 0x72, 0x32, 0xe2, 0x0b, 0xc1, 0xf1, - 0x9d, 0xe6, 0xe2, 0x25, 0x82, 0xd7, 0xdc, 0x1b, 0xc2, 0x63, 0x9b, 0xc2, 0xd6, 0xc7, 0x7b, 0x9a, - 0xf5, 0xee, 0xe8, 0x68, 0xc9, 0x47, 0x1d, 0x1c, 0x68, 0xe0, 0x61, 0xf4, 0x07, 0x0c, 0xe1, 0x12, - 0x72, 0xc3, 0x3e, 0x81, 0xef, 0xae, 0x64, 0x2c, 0x6c, 0x76, 0x94, 0x31, 0x62, 0xcf, 0x3b, 0xf4, - 0x08, 0x29, 0x7c, 0xaf, 0x10, 0x57, 0x3f, 0x12, 0x07, 0xc7, 0x07, 0xa1, 0x31, 0x74, 0xbd, 0x06, - 0xdc, 0xd7, 0x80, 0xc5, 0x2b, 0x94, 0x28, 0x0c, 0xa5, 0x44, 0x00, 0xbc, 0xec, 0x98, 0xc5, 0x41, - 0x27, 0xa9, 0x0a, 0xb9, 0x10, 0x98, 0x97, 0x96, 0xeb, 0x16, 0x3b, 0xb2, 0x50, 0x1e, 0x3d, 0x2d, - 0x36, 0x9b, 0x01, 0xe7, 0x51, 0xa9, 0x47, 0x53, 0xd0, 0x4a, 0x20, 0x9f, 0x22, 0x6e, 0xa5, 0x60, - 0x37, 0x43, 0xb4, 0x39, 0x11, 0x0b, 0xf8, 0xba, 0x56, 0xc4, 0xc6, 0xf3, 0x72, 0x5e, 0x1e, 0xce, - 0x3c, 0x45, 0x02, 0x40, 0x0d, 0xbe, 0xa6, 0x1a, 0x67, 0xd7, 0xd2, 0xee, 0x3b, 0xbc, 0xd6, 0x7d, - 0xf0, 0xe5, 0x5e, 0xef, 0x86, 0x7a, 0x57, 0x62, 0x01, 0x8b, 0x47, 0x9e, 0x7c, 0x43, 0xd8, 0xbc, - 0xd0, 0x61, 0x33, 0x79, 0xea, 0xab, 0xa3, 0xa3, 0xd7, 0xee, 0x8a, 0x33, 0xa7, 0xb4, 0x4f, 0x79, - 0x85, 0x95, 0xb7, 0xd2, 0x3a, 0x53, 0x76, 0x0a, 0xfc, 0x9c, 0x49, 0x35, 0x3c, 0x93, 0x67, 0x07, - 0xa8, 0x1b, 0x7a, 0xee, 0xa9, 0x3c, 0xf3, 0xcc, 0xc0, 0xe1, 0x95, 0x3d, 0xd3, 0xa9, 0xb8, 0xba, - 0xc7, 0xa9, 0x3d, 0xb5, 0x09, 0xbd, 0xdd, 0xd2, 0x44, 0x2d, 0x68, 0x97, 0x6c, 0xf4, 0xb2, 0x3c, - 0x83, 0xf1, 0x2f, 0x29, 0x69, 0x6a, 0x67, 0xdf, 0x1a, 0x84, 0xae, 0xaa, 0x25, 0x16, 0x14, 0x37, - 0x14, 0x04, 0x5f, 0x6a, 0x59, 0x38, 0x85, 0x95, 0xa7, 0x9f, 0x02, 0x56, 0x47, 0x9b, 0x5e, 0x43, - 0x13, 0x9f, 0xe2, 0x68, 0x87, 0x40, 0x79, 0xc3, 0x0f, 0x70, 0xda, 0x38, 0x4d, 0xb6, 0xad, 0x75, - 0xf0, 0x6b, 0xfb, 0x40, 0x83, 0xb6, 0x38, 0xdc, 0xb7, 0xaf, 0xbb, 0x0a, 0x20, 0xbd, 0x69, 0x34, - 0x77, 0xa6, 0xde, 0x25, 0xd9, 0xbb, 0x2a, 0x25, 0x79, 0x78, 0xbf, 0xab, 0x16, 0x19, 0xa7, 0x9c, - 0x0e, 0x5c, 0x0f, 0xbc, 0xb5, 0xe8, 0x5e, 0x6f, 0xed, 0xad, 0x6b, 0x29, 0x8b, 0x08, 0x0e, 0x7f, - 0x89, 0x4c, 0xf8, 0x68, 0xd1, 0x8e, 0xa1, 0xe1, 0xfe, 0xf5, 0x36, 0x57, 0xda, 0x77, 0xd4, 0x89, - 0xd5, 0xf2, 0x50, 0x4c, 0x94, 0x3e, 0x08, 0xab, 0xa1, 0x48, 0x17, 0xb5, 0x4a, 0x53, 0xba, 0xa0, - 0xb5, 0x5a, 0xfd, 0xb8, 0xd9, 0xd0, 0x79, 0x14, 0x03, 0xd9, 0x43, 0x35, 0xfc, 0xb9, 0x7a, 0xb6, - 0x2b, 0x2b, 0x0f, 0x56, 0x7a, 0x1a, 0xfa, 0xec, 0x76, 0xbd, 0xad, 0x8f, 0x3c, 0x72, 0x04, 0x8c, - 0xf9, 0x93, 0x32, 0x2a, 0x1e, 0xe6, 0x08, 0xe5, 0x9a, 0x0e, 0x04, 0xe0, 0x67, 0x31, 0xa8, 0x1a, - 0xfc, 0xdd, 0xff, 0x0e, 0xbe, 0xf1, 0x54, 0xa1, 0x9a, 0xe1, 0x8d, 0xbb, 0xaa, 0xdd, 0x4b, 0xb1, - 0xa6, 0x0b, 0xe8, 0xb4, 0x6b, 0x7f, 0xf7, 0x22, 0x81, 0x41, 0x53, 0x65, 0x61, 0xdd, 0xdd, 0x0a, - 0x0b, 0x5d, 0x9e, 0x8d, 0x45, 0xa3, 0x9e, 0xed, 0xd6, 0x7b, 0x0e, 0x5f, 0xeb, 0x2e, 0x16, 0x49, - 0xe0, 0x4a, 0x79, 0x82, 0x84, 0xa3, 0x09, 0xfb, 0xe6, 0x74, 0xde, 0x13, 0x85, 0xbe, 0x8a, 0xbd, - 0x15, 0xc0, 0x42, 0x68, 0xb4, 0xb7, 0xb5, 0x7c, 0x2c, 0xfe, 0xb3, 0x10, 0x14, 0x29, 0x46, 0xbe, - 0xa5, 0x70, 0x02, 0x18, 0xba, 0x4b, 0x3d, 0xdc, 0x5b, 0x6f, 0xb7, 0xda, 0x0a, 0x2c, 0xa5, 0x03, - 0x7e, 0x2f, 0xa2, 0x71, 0x76, 0x97, 0x3a, 0xe2, 0xda, 0x94, 0x08, 0xb5, 0x0e, 0x42, 0x6e, 0x5d, - 0xba, 0x9d, 0x3b, 0xe2, 0x39, 0xdd, 0x15, 0xb9, 0x0d, 0x67, 0xd8, 0x4c, 0xae, 0x1c, 0xf1, 0xab, - 0x29, 0xea, 0x8e, 0xcf, 0x4c, 0x09, 0xb3, 0x38, 0x88, 0x0c, 0xaa, 0x69, 0xe8, 0x44, 0xbb, 0x24, - 0xb5, 0xa2, 0x35, 0x47, 0x46, 0x82, 0x69, 0x5d, 0xca, 0xe0, 0xf4, 0x36, 0x1e, 0x4b, 0xf7, 0x4d, - 0xa0, 0x66, 0xdd, 0x3c, 0x48, 0xc7, 0xd9, 0x8d, 0xeb, 0xb5, 0x07, 0x5e, 0x57, 0x65, 0x26, 0xcf, - 0xf7, 0xe8, 0xb1, 0x7d, 0xde, 0xf4, 0x9d, 0xb7, 0x2d, 0x8f, 0x32, 0xf5, 0xb1, 0xf0, 0x25, 0x53, - 0xf9, 0xf2, 0x92, 0x64, 0xc8, 0xb5, 0x03, 0x0c, 0xa9, 0x13, 0x87, 0x26, 0x93, 0xe7, 0xf2, 0xb1, - 0x66, 0xd5, 0xb8, 0x1f, 0x3e, 0x78, 0x56, 0x2c, 0x72, 0x70, 0x8a, 0x60, 0xdf, 0xe4, 0xb8, 0xd2, - 0x24, 0x65, 0x8f, 0xeb, 0x7c, 0x29, 0x9e, 0x5f, 0xf0, 0x1e, 0xc4, 0x7a, 0x1e, 0x14, 0x05, 0x3c, - 0x21, 0xbf, 0x35, 0xd8, 0x7a, 0x5b, 0xa1, 0x9a, 0xc0, 0x59, 0xca, 0xc5, 0x86, 0x78, 0xd7, 0x08, - 0x71, 0x0f, 0xc8, 0x0c, 0x98, 0x49, 0x34, 0xb3, 0xcb, 0x1d, 0x1e, 0x60, 0x66, 0xa5, 0xb5, 0xea, - 0x43, 0x62, 0x57, 0x13, 0x95, 0x34, 0xa0, 0x26, 0x48, 0x41, 0x3e, 0x3e, 0xdf, 0xd3, 0x1b, 0x7f, - 0xd0, 0x15, 0xe7, 0xfd, 0x0b, 0x1f, 0x01, 0x0a, 0xe5, 0x09, 0x93, 0x18, 0x23, 0x7f, 0x13, 0x69, - 0xf5, 0xfc, 0x1f, 0x04, 0x6c, 0xd5, 0x6a, 0xc8, 0x85, 0x78, 0x46, 0x3f, 0xce, 0x06, 0xde, 0x4f, - 0xb9, 0x19, 0x5e, 0x3d, 0xcd, 0x50, 0xdc, 0xc5, 0x7c, 0x98, 0xc6, 0x47, 0x39, 0xde, 0x3a, 0x44, - 0xdf, 0x07, 0x4b, 0x9f, 0xbf, 0x9e, 0xfb, 0x57, 0x6e, 0x99, 0x43, 0x15, 0xe7, 0xd7, 0xe2, 0x57, - 0x71, 0x2a, 0x9e, 0x35, 0xe1, 0x48, 0x93, 0x5e, 0x6f, 0xeb, 0x15, 0x5d, 0x72, 0x73, 0xf5, 0xc9, - 0x8c, 0x73, 0xf6, 0xe1, 0xe9, 0xfb, 0x0f, 0x8e, 0xa7, 0x73, 0x22, 0x43, 0x06, 0x7a, 0xad, 0x61, - 0xff, 0xea, 0xdf, 0x37, 0xe6, 0xcd, 0xbb, 0x8f, 0x2f, 0x76, 0x87, 0x9c, 0xea, 0x21, 0xcf, 0xee, - 0x1d, 0xf2, 0xe2, 0xed, 0x73, 0xc7, 0x13, 0x77, 0x5f, 0xb7, 0xd8, 0x2d, 0x88, 0xb1, 0x85, 0xd1, - 0xad, 0xc3, 0xdc, 0x8f, 0xb5, 0xad, 0x31, 0x3f, 0xef, 0x4c, 0x83, 0x45, 0x3c, 0x0d, 0xc8, 0x2d, - 0xa6, 0x3f, 0x0e, 0xf1, 0x74, 0x4a, 0x30, 0x33, 0xd9, 0xfb, 0xdd, 0x75, 0x47, 0xad, 0x70, 0x06, - 0xd7, 0x38, 0xda, 0x60, 0x15, 0x39, 0x94, 0x9c, 0xd7, 0xf5, 0x8e, 0x8b, 0x60, 0x12, 0xe4, 0x71, - 0x2f, 0xd6, 0x87, 0xbf, 0x60, 0xdd, 0x54, 0xf6, 0xe2, 0x9f, 0x67, 0xe0, 0x93, 0x4d, 0xfc, 0x73, - 0x36, 0xc6, 0x47, 0x30, 0xb6, 0x5a, 0x73, 0xb9, 0xf7, 0x23, 0xd2, 0x32, 0x2a, 0x85, 0x47, 0x92, - 0x8e, 0x72, 0xcd, 0x28, 0x61, 0x96, 0xb4, 0x9d, 0x5e, 0xcf, 0x69, 0xe7, 0xdd, 0x59, 0x56, 0x28, - 0x7c, 0xcd, 0x21, 0x54, 0x94, 0xb4, 0xc5, 0x63, 0x11, 0x05, 0x79, 0x38, 0x6b, 0x2b, 0xdf, 0xba, - 0x41, 0xf2, 0xe3, 0xe1, 0xa9, 0x52, 0xde, 0x49, 0x9f, 0xc8, 0xc1, 0xf7, 0xfd, 0x51, 0xdf, 0x1f, - 0x54, 0x91, 0xef, 0xb1, 0x64, 0xe9, 0xfc, 0xf9, 0x55, 0x0f, 0x2d, 0x22, 0xdf, 0x2d, 0x3a, 0x6f, - 0x1e, 0x38, 0x6d, 0x57, 0xb5, 0xb3, 0x63, 0xae, 0x0d, 0xb3, 0x02, 0x3e, 0xa2, 0xd7, 0x76, 0xa8, - 0x36, 0x2a, 0x6b, 0x8b, 0x38, 0x35, 0xb5, 0x4f, 0x51, 0x9f, 0x71, 0x2b, 0x7d, 0xf6, 0xf1, 0x1d, - 0x9b, 0xef, 0x5d, 0x18, 0x69, 0x23, 0x8c, 0xd4, 0x8e, 0xb9, 0x1e, 0xda, 0xf6, 0x3e, 0x17, 0x64, - 0x9d, 0x6f, 0xf3, 0xa4, 0x5c, 0xf5, 0xdc, 0xe5, 0xb3, 0x04, 0xb1, 0xe6, 0x63, 0x4a, 0xdf, 0x89, - 0x73, 0x28, 0x09, 0xcd, 0x08, 0x8e, 0x58, 0x22, 0x48, 0x58, 0x8a, 0x15, 0x3e, 0x57, 0x42, 0xff, - 0x8d, 0x86, 0x75, 0xf5, 0x26, 0x7d, 0x87, 0xdf, 0xf1, 0x86, 0x5e, 0xa0, 0x3a, 0x62, 0x44, 0xc0, - 0x01, 0x41, 0x1d, 0x61, 0xb4, 0x09, 0x71, 0xc5, 0x34, 0x25, 0xed, 0xbf, 0xe6, 0x53, 0xd3, 0x97, - 0xb0, 0xd0, 0xfe, 0x47, 0xf8, 0x01, 0x24, 0xaf, 0x59, 0x1e, 0x4f, 0x63, 0x8a, 0x75, 0x5b, 0x7a, - 0x60, 0x18, 0xe7, 0x21, 0x4d, 0xd7, 0xb0, 0x86, 0xcb, 0x4b, 0x4e, 0x42, 0x39, 0x22, 0xf7, 0x23, - 0x41, 0x2f, 0x2e, 0xf3, 0x1d, 0xfa, 0x9d, 0xbd, 0xc3, 0x29, 0xce, 0xec, 0x3a, 0xd2, 0xef, 0x00, - 0x70, 0xfc, 0x13, 0xa1, 0xcb, 0xbe, 0x43, 0x6f, 0x2b, 0x70, 0xb6, 0x5f, 0x07, 0x9b, 0xdf, 0xe6, - 0xc4, 0xb0, 0x3b, 0x27, 0x5f, 0x09, 0x7d, 0x32, 0x99, 0x00, 0xba, 0xb7, 0x7d, 0xb8, 0x73, 0xdf, - 0x44, 0xae, 0x97, 0x7e, 0x1f, 0x88, 0x02, 0xd9, 0xfd, 0xef, 0x05, 0xd0, 0xcb, 0x79, 0x68, 0xa1, - 0x37, 0xea, 0x97, 0x8d, 0xdb, 0x2d, 0x6b, 0x9d, 0x9f, 0xe4, 0xd3, 0x3c, 0x0f, 0x56, 0x94, 0x98, - 0x4c, 0x56, 0xec, 0x13, 0x89, 0xb5, 0xc9, 0x93, 0x3f, 0x7a, 0xdc, 0xdf, 0x7a, 0xdd, 0x9b, 0x60, - 0xee, 0xee, 0x1a, 0xe0, 0xea, 0x5a, 0x8a, 0x27, 0xfe, 0xda, 0x51, 0x6c, 0x15, 0x95, 0x23, 0x97, - 0xb4, 0x9c, 0x06, 0xc9, 0x92, 0x59, 0x5d, 0x84, 0xab, 0x2c, 0x01, 0xc5, 0x4c, 0x91, 0x65, 0x09, - 0x14, 0x59, 0x82, 0xe8, 0x5e, 0x4b, 0xa0, 0x76, 0x52, 0x4f, 0x7b, 0x96, 0x20, 0xb2, 0x2d, 0xc1, - 0x65, 0xf5, 0xbe, 0x8d, 0xa7, 0xe9, 0x14, 0x4e, 0xe4, 0xee, 0xda, 0x8d, 0x4b, 0x58, 0x99, 0xf5, - 0xee, 0xdd, 0x2c, 0x8a, 0x12, 0xee, 0x69, 0x98, 0x10, 0xf6, 0x88, 0x6e, 0xc3, 0x64, 0xe1, 0xf5, - 0x5d, 0x5c, 0x70, 0x3e, 0x71, 0xbf, 0xf7, 0xf3, 0x38, 0x8f, 0x18, 0xe4, 0xa8, 0x03, 0x14, 0xb5, - 0x55, 0xc7, 0x8d, 0x46, 0x9d, 0xcc, 0x87, 0x5b, 0x99, 0x75, 0x94, 0xf7, 0x0d, 0xd5, 0xe1, 0x1f, - 0x3f, 0x6c, 0x85, 0xb5, 0xa5, 0x32, 0xd9, 0x65, 0xa3, 0xcc, 0x88, 0x02, 0xe1, 0x88, 0x64, 0x81, - 0x49, 0x2c, 0xe8, 0x6a, 0x91, 0x7e, 0x3d, 0xc6, 0xaf, 0x5c, 0xa6, 0x08, 0x54, 0x73, 0xc9, 0x7b, - 0x7e, 0x5b, 0x86, 0x88, 0x39, 0x01, 0x91, 0x40, 0x6f, 0xcd, 0x8a, 0x85, 0x28, 0x64, 0xd6, 0x3b, - 0xe9, 0xa4, 0x94, 0xaa, 0x60, 0xd7, 0x62, 0x17, 0x01, 0x6e, 0xdc, 0x9d, 0x51, 0xb8, 0x73, 0xec, - 0x5a, 0x1a, 0x00, 0xae, 0x2a, 0xe5, 0x50, 0x7a, 0x83, 0x7e, 0xff, 0xd8, 0x2d, 0x3a, 0x74, 0x98, - 0xa5, 0xdf, 0x9f, 0x04, 0x5d, 0xe2, 0x89, 0x50, 0x16, 0xed, 0x54, 0xcc, 0xe8, 0xf3, 0xb3, 0x92, - 0xc9, 0xd8, 0x70, 0x84, 0x7e, 0xa7, 0x45, 0x26, 0xcc, 0x5b, 0x57, 0xb2, 0xfb, 0xa5, 0x53, 0x94, - 0x2f, 0xb1, 0x70, 0xf8, 0x75, 0x1a, 0x24, 0xad, 0x00, 0x0c, 0xde, 0x2d, 0x1c, 0xf6, 0x98, 0xa9, - 0x44, 0x2f, 0x04, 0x09, 0x92, 0x9f, 0xe8, 0x8b, 0x7e, 0xaf, 0x24, 0xd6, 0xf1, 0xd8, 0x2f, 0x5d, - 0x0e, 0xee, 0x5e, 0xd0, 0xef, 0xc6, 0xc4, 0x3a, 0x9b, 0x4c, 0xe8, 0x16, 0xb7, 0xd3, 0xff, 0x86, - 0x25, 0x24, 0x9b, 0xeb, 0xd7, 0x91, 0x38, 0x95, 0x58, 0x34, 0xf4, 0xa5, 0x17, 0xb0, 0x36, 0xf6, - 0x36, 0x75, 0xe6, 0xd5, 0x14, 0xa8, 0x25, 0xa9, 0xf5, 0x18, 0x44, 0xe3, 0xa6, 0x21, 0xb5, 0xb7, - 0x87, 0x92, 0x59, 0xd8, 0x62, 0xbb, 0x15, 0x3f, 0xed, 0xc9, 0x4e, 0x25, 0x39, 0x80, 0x4a, 0x5a, - 0x1e, 0x80, 0xe9, 0x90, 0x48, 0x89, 0xb1, 0xff, 0xa3, 0x1b, 0x8a, 0x99, 0x28, 0x7a, 0x27, 0x02, - 0x9e, 0x7f, 0x7b, 0xd0, 0xfd, 0xce, 0xab, 0x84, 0x7c, 0x56, 0x24, 0xae, 0xd3, 0x3e, 0xe0, 0x6b, - 0x80, 0x6b, 0x3b, 0x82, 0x5f, 0x29, 0x2b, 0xe8, 0xfd, 0xe0, 0x1e, 0x16, 0xbc, 0xd5, 0x2b, 0x6e, - 0xd4, 0x32, 0x66, 0xd9, 0x45, 0xa0, 0xcc, 0x1b, 0x09, 0x1d, 0x11, 0xc2, 0xfe, 0x8b, 0x70, 0xe5, - 0x83, 0xc1, 0xaa, 0xa5, 0xf3, 0xcb, 0x1e, 0xdb, 0x1f, 0x5d, 0xe7, 0x1f, 0x4e, 0xbb, 0xc4, 0x3a, - 0x26, 0x22, 0xe8, 0xd0, 0x95, 0x0c, 0xe4, 0x75, 0xf9, 0xd6, 0x81, 0xfb, 0x55, 0x9a, 0x99, 0x2c, - 0x29, 0x7b, 0x36, 0xcf, 0xc5, 0xca, 0x51, 0x54, 0xaf, 0x03, 0xe9, 0xc4, 0xdd, 0x05, 0x31, 0xe4, - 0xf6, 0x8b, 0x9b, 0xd0, 0xb2, 0xd1, 0x0c, 0x54, 0xab, 0x4c, 0x83, 0xbc, 0x52, 0x8c, 0xf8, 0x0e, - 0xfb, 0x3e, 0xb5, 0x52, 0x9e, 0xe8, 0xa1, 0x58, 0xe7, 0x7e, 0xce, 0x5a, 0xb2, 0x14, 0xb2, 0xb3, - 0xc5, 0xb4, 0x54, 0x96, 0x65, 0xd5, 0x3b, 0x2e, 0xc2, 0x04, 0x85, 0xed, 0xa4, 0xb6, 0x77, 0x01, - 0x82, 0x7f, 0x7f, 0x56, 0xd6, 0x90, 0xad, 0x0b, 0x88, 0x06, 0xbb, 0x42, 0x6f, 0xf9, 0x31, 0xf2, - 0xbe, 0x7b, 0x0a, 0x59, 0x97, 0x5e, 0x60, 0x03, 0xb1, 0xce, 0xe8, 0x95, 0x31, 0x74, 0x45, 0xa1, - 0x52, 0x39, 0x90, 0xea, 0x42, 0xab, 0x05, 0x30, 0x47, 0x22, 0x83, 0x4e, 0x51, 0xc9, 0x6a, 0xb1, - 0xa3, 0x14, 0x50, 0xb4, 0x74, 0xc6, 0x50, 0xa1, 0xab, 0xab, 0x3a, 0x39, 0x82, 0x16, 0x7a, 0x8a, - 0x3a, 0xb1, 0x67, 0xae, 0x38, 0xf3, 0x62, 0x03, 0x15, 0xa4, 0x27, 0x6e, 0x44, 0xfe, 0xfc, 0xac, - 0x59, 0x6d, 0x68, 0xe7, 0x9e, 0x5c, 0x49, 0x37, 0x3c, 0xa6, 0xbf, 0xb0, 0xd3, 0x33, 0xfa, 0x03, - 0x46, 0x9e, 0x35, 0xc8, 0xad, 0x86, 0x74, 0x83, 0x6d, 0xeb, 0xfd, 0xff, 0x99, 0x23, 0x5c, 0x38, - 0x56, 0xed, 0xe8, 0x18, 0xde, 0x4f, 0x02, 0x97, 0xb3, 0x9b, 0xa5, 0xda, 0x7f, 0x4b, 0xc5, 0x7a, - 0x06, 0x2a, 0x15, 0xbe, 0x05, 0x14, 0x94, 0xee, 0x25, 0xc7, 0xb7, 0x1e, 0xb9, 0xde, 0xd1, 0x96, - 0xf2, 0x03, 0x95, 0xf9, 0xf8, 0xd3, 0xd6, 0xd5, 0x9d, 0xc1, 0x13, 0x3a, 0x0e, 0x1b, 0x47, 0xcb, - 0x77, 0x13, 0xd7, 0xf9, 0x86, 0xee, 0x01, 0xca, 0x79, 0x90, 0x17, 0xd1, 0x8f, 0xf4, 0xa6, 0x1b, - 0x1a, 0x57, 0xba, 0x55, 0xa3, 0x88, 0xf5, 0x59, 0xea, 0x5b, 0x69, 0xff, 0xdf, 0x6c, 0xb1, 0xa3, - 0x51, 0xaf, 0x52, 0x45, 0x79, 0xe1, 0xc7, 0x96, 0x4f, 0xf2, 0x1f, 0xfb, 0xea, 0x53, 0x1d, 0xc3, - 0xa0, 0x0f, 0xa1, 0xfa, 0x8c, 0x62, 0x27, 0xf7, 0x44, 0x40, 0x25, 0xe8, 0x33, 0xb8, 0x7f, 0x4a, - 0xc7, 0x1d, 0xf9, 0xe7, 0x9d, 0x4f, 0x9f, 0xda, 0x17, 0xa3, 0x4f, 0x9f, 0xc6, 0xc7, 0x9f, 0x3e, - 0x75, 0xf1, 0xd5, 0xfe, 0x66, 0xe4, 0x6d, 0x76, 0x1a, 0xa8, 0xc6, 0x11, 0xff, 0x92, 0xce, 0xf9, - 0xa7, 0x4f, 0xc5, 0xe6, 0xd3, 0x27, 0xf7, 0xa2, 0x0d, 0xd9, 0xfa, 0x27, 0xa4, 0xe9, 0x5c, 0xa0, - 0x58, 0xdc, 0x57, 0xc4, 0x33, 0x60, 0x7a, 0x23, 0x47, 0xfc, 0xfb, 0x6f, 0x8f, 0xbd, 0x17, 0xd4, - 0x7f, 0xf9, 0x18, 0xe6, 0x7d, 0x34, 0x7d, 0xb1, 0x24, 0x25, 0x3b, 0xbd, 0x72, 0xda, 0xff, 0x82, - 0x48, 0xab, 0xfd, 0xea, 0xc0, 0x69, 0xff, 0x1b, 0x3c, 0xb3, 0x5b, 0x0f, 0x1d, 0xc4, 0xdd, 0xb3, - 0x83, 0x6a, 0xdd, 0x1d, 0x01, 0x8e, 0xf3, 0x3b, 0xf6, 0xfe, 0x8f, 0xd1, 0xa6, 0xbf, 0xa4, 0x4d, - 0xe7, 0xa8, 0x70, 0xcf, 0xfb, 0x9d, 0x1f, 0x82, 0xce, 0xe4, 0x69, 0xe7, 0xc7, 0x8b, 0x35, 0x1c, - 0x72, 0x47, 0xc4, 0xfb, 0xb5, 0x27, 0x54, 0x5b, 0xec, 0x02, 0x75, 0xda, 0x29, 0xdc, 0xe0, 0xf2, - 0x7f, 0xe7, 0x21, 0x08, 0x1e, 0x7c, 0xae, 0x47, 0xd9, 0x29, 0x69, 0xe8, 0x14, 0x97, 0xff, 0x73, - 0x8f, 0xf0, 0x73, 0x3d, 0xca, 0x4e, 0xb3, 0xbd, 0x58, 0x8d, 0x45, 0x23, 0x4b, 0x4f, 0xf5, 0xcf, - 0xa6, 0x5a, 0x03, 0x93, 0x7e, 0xd1, 0xbf, 0xd8, 0x01, 0x57, 0xf7, 0xc1, 0xd5, 0x7d, 0xb1, 0xc0, - 0xbf, 0xc0, 0x1f, 0x6c, 0x45, 0x19, 0xdf, 0xd3, 0x2f, 0xdb, 0x14, 0x38, 0x1b, 0x42, 0xbf, 0x86, - 0x8d, 0xf6, 0xd7, 0x21, 0xbf, 0xf9, 0x05, 0xba, 0x17, 0x76, 0xd0, 0x6f, 0xc1, 0x31, 0x00, 0xae, - 0x1b, 0x6a, 0x81, 0xd2, 0xe6, 0xbe, 0x9a, 0x29, 0x9b, 0x46, 0x44, 0xcb, 0xfb, 0xdb, 0x8a, 0xe4, - 0xbe, 0xb6, 0xed, 0x70, 0x66, 0xc7, 0xaa, 0x58, 0x6f, 0x83, 0x5f, 0x72, 0x70, 0xf6, 0x4e, 0xe1, - 0xd1, 0xc1, 0x1d, 0x5c, 0x45, 0x89, 0x54, 0x84, 0xea, 0x3d, 0x8b, 0x05, 0x6c, 0x2a, 0x3f, 0x12, - 0xdf, 0x6f, 0x1f, 0xf6, 0x74, 0x5c, 0xa4, 0x3c, 0x4f, 0x47, 0x77, 0xe5, 0xaa, 0xa5, 0xaa, 0x2e, - 0x17, 0x30, 0x08, 0x62, 0xc1, 0xd1, 0x5e, 0xe7, 0x6a, 0xfb, 0xfb, 0x9d, 0x89, 0x01, 0xf7, 0x3b, - 0x57, 0x7b, 0xb6, 0x3a, 0xc3, 0xfb, 0xa6, 0xd7, 0x02, 0x14, 0x8a, 0xde, 0x85, 0x8a, 0x15, 0xcf, - 0x54, 0xd9, 0x77, 0x41, 0xae, 0x55, 0xb1, 0xb0, 0x7b, 0x3a, 0x39, 0xdf, 0x0f, 0xc4, 0xc3, 0xb4, - 0x7c, 0xb8, 0xd2, 0x37, 0x06, 0xcb, 0xc5, 0xec, 0x42, 0x76, 0x66, 0x65, 0xb7, 0xa2, 0x7c, 0x58, - 0x58, 0xfd, 0x79, 0x0e, 0xee, 0xcf, 0xa7, 0x4c, 0xf7, 0x8c, 0x48, 0xcc, 0x9d, 0x44, 0x85, 0xa8, - 0xf3, 0xee, 0x01, 0xb1, 0x29, 0xbf, 0xb5, 0xc2, 0x45, 0x35, 0x58, 0x2d, 0x1e, 0xeb, 0x77, 0xab, - 0xe9, 0x1f, 0x8a, 0x21, 0x6a, 0x2e, 0x77, 0x2a, 0x15, 0x5c, 0xa8, 0x7d, 0x42, 0x9e, 0xea, 0x77, - 0xba, 0xec, 0x59, 0x9b, 0xf2, 0x8c, 0x9e, 0x86, 0x9e, 0xab, 0x0b, 0x79, 0x10, 0x1b, 0x99, 0x06, - 0xe1, 0xea, 0x44, 0x1e, 0xdd, 0xc6, 0xcd, 0xf8, 0xea, 0xe8, 0xee, 0x04, 0x70, 0x8d, 0xd3, 0xc8, - 0xce, 0x85, 0x94, 0x11, 0x27, 0xd6, 0x3c, 0x53, 0x65, 0xfe, 0x6b, 0xc6, 0x68, 0xfd, 0x90, 0xbd, - 0x07, 0xb6, 0x1a, 0xfc, 0xdd, 0xee, 0xac, 0xf7, 0xb8, 0xcf, 0x1e, 0x2f, 0xfb, 0xa0, 0xec, 0xf1, - 0xb2, 0xf1, 0x87, 0xaf, 0xcb, 0x36, 0x02, 0x7e, 0x23, 0xfd, 0x2c, 0xc6, 0x83, 0x4d, 0x8c, 0x3a, - 0x74, 0x69, 0x2f, 0x85, 0x0d, 0xea, 0x64, 0x74, 0xc7, 0x82, 0x9f, 0xe2, 0xe3, 0x8c, 0x7c, 0x58, - 0x7e, 0xa6, 0xa2, 0x47, 0xe5, 0x50, 0xe6, 0xdf, 0x3c, 0x36, 0xe6, 0x00, 0x56, 0xfd, 0xe4, 0xbb, - 0xef, 0x8e, 0xcf, 0xe1, 0x16, 0x8b, 0x02, 0xff, 0x25, 0x22, 0xbd, 0x38, 0x0f, 0x2f, 0xc4, 0x54, - 0x57, 0xa3, 0x28, 0x4c, 0x13, 0x57, 0x5f, 0xe9, 0x6a, 0xd3, 0x93, 0x9a, 0xa8, 0x5a, 0x23, 0x17, - 0x14, 0xff, 0x90, 0xbd, 0x04, 0x19, 0x0f, 0x36, 0xc2, 0x3b, 0xc8, 0x7b, 0x18, 0xca, 0x3b, 0x98, - 0xf2, 0x13, 0x79, 0xeb, 0x57, 0xfc, 0x14, 0x1b, 0x0b, 0x19, 0x2c, 0x75, 0x06, 0x03, 0x4e, 0x5d, - 0x6d, 0x33, 0x4d, 0x4d, 0x20, 0xe3, 0x0e, 0x9d, 0x2d, 0xc6, 0x58, 0x3d, 0x25, 0x52, 0x63, 0x44, - 0xf1, 0x41, 0x2f, 0x2e, 0xf3, 0x35, 0xb1, 0x49, 0xd5, 0x14, 0x7e, 0x24, 0xfb, 0x76, 0xb2, 0x24, - 0x43, 0x85, 0x9b, 0xc2, 0xbe, 0xf7, 0x82, 0xb6, 0x9b, 0x3e, 0xc9, 0x47, 0x8f, 0xfd, 0xfe, 0x4e, - 0x36, 0x25, 0xa5, 0x0e, 0x39, 0x50, 0x86, 0x0e, 0x27, 0x76, 0x43, 0x4e, 0x0d, 0x19, 0xfc, 0x7c, - 0x34, 0x7c, 0x6b, 0xc2, 0x31, 0x28, 0xb2, 0xc7, 0xfd, 0xe3, 0x08, 0xba, 0x8c, 0x2c, 0x68, 0x08, - 0x7d, 0x46, 0xdf, 0xc9, 0xb6, 0x26, 0xe4, 0xcb, 0x22, 0x69, 0x24, 0xa4, 0xa6, 0x5f, 0x56, 0xd1, - 0x2f, 0x95, 0xee, 0x49, 0x27, 0x02, 0x39, 0x80, 0x07, 0x4a, 0x4b, 0x8c, 0x52, 0x9f, 0x62, 0x93, - 0x58, 0xe6, 0x4f, 0x06, 0x51, 0xe7, 0x07, 0xec, 0x2e, 0x3a, 0xce, 0x7a, 0xf9, 0xb0, 0x9a, 0x17, - 0xf0, 0xcd, 0xb4, 0xb1, 0x48, 0xfc, 0xef, 0x60, 0xbf, 0xcb, 0x59, 0x93, 0x7b, 0xb0, 0x2e, 0x4f, - 0x8e, 0x55, 0x37, 0xd1, 0xdc, 0x73, 0xec, 0x46, 0x98, 0xa4, 0xdf, 0x1f, 0x45, 0xfe, 0x49, 0xbf, - 0x8f, 0x89, 0xcd, 0x22, 0xa2, 0x76, 0x56, 0xce, 0x77, 0x82, 0xf9, 0x28, 0x23, 0xe1, 0x35, 0xcd, - 0x99, 0x62, 0xab, 0xdc, 0xd8, 0x3b, 0xd9, 0x92, 0xb6, 0xa6, 0xcd, 0x52, 0x0e, 0xcd, 0x66, 0x70, - 0xbe, 0xcb, 0x2c, 0x2d, 0xbd, 0xbf, 0x0f, 0x08, 0xeb, 0x00, 0x18, 0x60, 0xa0, 0x06, 0xd1, 0xac, - 0x4f, 0x6d, 0x18, 0x74, 0x9c, 0x7b, 0x28, 0x84, 0x51, 0x95, 0x61, 0xad, 0x8c, 0x4e, 0xe9, 0x08, - 0x59, 0x57, 0xff, 0xcc, 0x1d, 0x19, 0xbe, 0xc0, 0x42, 0x97, 0x5b, 0xf4, 0x2d, 0x9b, 0xa1, 0x6d, - 0x9a, 0x94, 0x70, 0xb3, 0xee, 0x6c, 0xb3, 0xc9, 0xba, 0x05, 0x7d, 0x2c, 0xe8, 0x23, 0xf0, 0xca, - 0xec, 0x73, 0x09, 0x5b, 0x47, 0xe7, 0x59, 0x79, 0x3d, 0xdc, 0x1e, 0xcf, 0x5b, 0x01, 0xeb, 0x37, - 0x63, 0xc3, 0x92, 0x6f, 0xd7, 0x1a, 0x46, 0xde, 0x66, 0x99, 0xd7, 0x99, 0xea, 0x38, 0xb6, 0x96, - 0x47, 0xcb, 0xf9, 0x43, 0xc7, 0xa9, 0x5d, 0x86, 0xf0, 0x5e, 0xd9, 0xe5, 0xd4, 0xdb, 0x56, 0xf3, - 0xef, 0xa3, 0xb2, 0xd2, 0xaa, 0x07, 0xc8, 0xb3, 0x64, 0x95, 0x52, 0xe9, 0xeb, 0xc0, 0xb7, 0x2e, - 0x5a, 0x04, 0xa3, 0x01, 0x48, 0x14, 0x6c, 0x3d, 0x43, 0xa3, 0xe4, 0xf3, 0x1b, 0x03, 0xbf, 0x1f, - 0x6e, 0x6c, 0xa6, 0x99, 0x8e, 0x37, 0x96, 0xd4, 0x5c, 0xb0, 0xbb, 0xb1, 0x62, 0x6f, 0x63, 0x49, - 0xd3, 0xc6, 0x68, 0xfe, 0xbf, 0xb5, 0xb1, 0x52, 0x1c, 0xbe, 0xb4, 0xb1, 0xca, 0x56, 0x7e, 0x86, - 0x8b, 0xd1, 0xc7, 0x2c, 0x9e, 0x3c, 0x3e, 0xb8, 0x8a, 0x18, 0x46, 0xc1, 0x24, 0x3d, 0x4c, 0xcb, - 0x87, 0x2b, 0x8e, 0xfa, 0x76, 0x41, 0x36, 0x72, 0x75, 0x79, 0x3d, 0x5f, 0x0e, 0x88, 0xa7, 0xdd, - 0x48, 0xfe, 0xb7, 0x1b, 0x2d, 0xa3, 0x90, 0x0c, 0xf2, 0xc8, 0xcd, 0xe4, 0x9f, 0x2e, 0xfd, 0x6e, - 0x45, 0x40, 0x1f, 0x92, 0xe7, 0x4e, 0xa5, 0x13, 0x53, 0xca, 0xb9, 0xf4, 0x48, 0x97, 0x3c, 0x88, - 0xa1, 0x54, 0xaa, 0x1a, 0x7a, 0x74, 0xf4, 0xf5, 0x63, 0x31, 0x37, 0x95, 0xbe, 0xbd, 0x10, 0xf4, - 0xb3, 0xc1, 0x56, 0x74, 0xbf, 0x15, 0xc5, 0x56, 0x1e, 0x18, 0x9f, 0xc6, 0x18, 0x51, 0x32, 0xe7, - 0xe0, 0xcd, 0x0c, 0xfc, 0x98, 0x82, 0x07, 0x73, 0xb8, 0x71, 0xb1, 0x21, 0x51, 0xe9, 0xa2, 0x7c, - 0x1d, 0x26, 0x11, 0x30, 0x23, 0x90, 0xe8, 0xe6, 0x1e, 0x7f, 0x4d, 0xf5, 0xd7, 0x95, 0xb7, 0x07, - 0xea, 0xf3, 0x18, 0xc4, 0x66, 0x0c, 0x0e, 0x0b, 0xb5, 0x83, 0xc4, 0xc1, 0xff, 0x1d, 0xff, 0xc6, - 0xb8, 0x20, 0x3c, 0x98, 0xc2, 0xc9, 0x05, 0xa1, 0xc1, 0x14, 0x1e, 0x5d, 0x68, 0x0c, 0x06, 0x7f, - 0x7f, 0x1c, 0x51, 0x4e, 0x17, 0xbe, 0x35, 0x40, 0x92, 0x5d, 0x20, 0x35, 0x84, 0x7a, 0xb8, 0x3d, - 0x67, 0xb8, 0x47, 0xb5, 0xcf, 0xf4, 0xc7, 0x5c, 0xe5, 0x44, 0x9f, 0xa5, 0x13, 0x10, 0xf6, 0x15, - 0x74, 0x22, 0x23, 0x5b, 0x89, 0xd3, 0x17, 0x69, 0x85, 0x3e, 0x25, 0xad, 0x74, 0x4e, 0x05, 0xc3, - 0x4a, 0x66, 0x2f, 0xda, 0xce, 0x37, 0xfa, 0x29, 0xc1, 0x93, 0xe1, 0xfb, 0x1a, 0xe8, 0xd7, 0xf1, - 0x7d, 0xa4, 0x9a, 0x18, 0x9f, 0x52, 0x81, 0x35, 0xf3, 0xc2, 0xe6, 0x58, 0xcc, 0x4b, 0x25, 0x46, - 0x61, 0xd6, 0xcc, 0xf8, 0x5f, 0x1a, 0xfb, 0xf5, 0x8c, 0x8f, 0xbd, 0xec, 0x21, 0x94, 0xbc, 0xc7, - 0x35, 0xa5, 0xed, 0x0a, 0x20, 0x34, 0xa9, 0x18, 0xdf, 0xe8, 0x1e, 0xfd, 0xfb, 0x69, 0x4a, 0x27, - 0xd3, 0xdf, 0x1f, 0x89, 0x0a, 0xd7, 0xf6, 0x01, 0x81, 0x1c, 0x9d, 0x4c, 0xf8, 0xff, 0xe6, 0x9e, - 0xb5, 0xb9, 0x6d, 0x23, 0xc9, 0xcf, 0xde, 0xaa, 0xfd, 0x0f, 0x10, 0x92, 0x33, 0x01, 0x0b, 0x84, - 0x48, 0x39, 0xf6, 0x65, 0x41, 0x51, 0x2a, 0xc7, 0x49, 0x2a, 0xde, 0x4b, 0x1c, 0x57, 0x64, 0xef, - 0x6e, 0x4a, 0xab, 0xb2, 0x29, 0x12, 0x94, 0xb0, 0xa1, 0x00, 0x2e, 0x00, 0x4a, 0xd4, 0x2a, 0xfc, - 0xef, 0xd7, 0x8f, 0x99, 0x41, 0x0f, 0x1e, 0x14, 0x95, 0xcd, 0x5e, 0x5d, 0xc5, 0x11, 0xc9, 0x79, - 0xf6, 0xf4, 0xf4, 0xf4, 0xf4, 0x6b, 0x66, 0x96, 0xe5, 0xff, 0x3f, 0xfb, 0x2f, 0x1b, 0x59, 0xb5, - 0xfd, 0xb0, 0x55, 0x66, 0xa9, 0x4c, 0xa7, 0x74, 0x82, 0xd5, 0xb8, 0xc6, 0xf8, 0xf2, 0xab, 0xf7, - 0xc6, 0x41, 0xe6, 0xa2, 0x91, 0x2f, 0x82, 0x32, 0x95, 0xb1, 0xd1, 0x0d, 0xf8, 0x92, 0x63, 0xf7, - 0xb3, 0x39, 0x5a, 0xf6, 0x85, 0x69, 0xf1, 0x65, 0xf8, 0xf2, 0xe5, 0x4b, 0x91, 0x3d, 0xb7, 0xb2, - 0x9f, 0x3f, 0x0f, 0x9f, 0x3f, 0x7f, 0x5e, 0x65, 0x0f, 0xec, 0xec, 0x17, 0x03, 0x99, 0x35, 0x97, - 0x59, 0x2f, 0x6b, 0x0d, 0x0f, 0x06, 0x56, 0xf6, 0x97, 0xb5, 0x86, 0xe7, 0x76, 0xf6, 0x70, 0x50, - 0x07, 0xf9, 0x5c, 0xc8, 0x82, 0xae, 0x30, 0x07, 0x46, 0x24, 0x58, 0x58, 0xfb, 0x1f, 0x90, 0x47, - 0x4c, 0x02, 0x0e, 0x2a, 0xb8, 0x31, 0x88, 0x37, 0x48, 0x7e, 0xad, 0x05, 0x50, 0xe8, 0x52, 0x45, - 0x46, 0xed, 0xf8, 0xe2, 0x25, 0x97, 0xea, 0x25, 0x97, 0x9a, 0x25, 0x97, 0x9a, 0x25, 0xd7, 0x0a, - 0x34, 0xd7, 0xcb, 0x75, 0xbd, 0xdc, 0xd4, 0xcb, 0x75, 0x3d, 0x6b, 0x40, 0xac, 0x20, 0x45, 0xca, - 0x1d, 0x12, 0xb1, 0x83, 0xac, 0x15, 0xe4, 0x98, 0x84, 0x36, 0xb2, 0x37, 0x76, 0x80, 0xcc, 0xce, - 0x9b, 0x6d, 0x60, 0x25, 0x1a, 0xac, 0xc4, 0x80, 0x95, 0x18, 0xb0, 0x36, 0x95, 0xb5, 0x17, 0x6f, - 0xe2, 0x9e, 0xe4, 0x5d, 0x36, 0xed, 0x6c, 0x8b, 0x9d, 0xd8, 0x36, 0x60, 0x97, 0x21, 0x7f, 0x81, - 0x1e, 0x6a, 0x66, 0x6c, 0x45, 0xd4, 0x9b, 0xa6, 0xfd, 0xb1, 0xdb, 0xe9, 0xa0, 0xbc, 0x0d, 0x24, - 0xd2, 0x10, 0xe5, 0x7f, 0x47, 0x06, 0xfc, 0x07, 0xdd, 0x0f, 0x80, 0xae, 0xec, 0xd7, 0x5f, 0x51, - 0x08, 0x57, 0x96, 0xc8, 0xfd, 0xc3, 0x67, 0x39, 0xfc, 0x9f, 0xb2, 0xe0, 0xca, 0x4f, 0xfd, 0xc4, - 0x23, 0x75, 0x62, 0x63, 0xec, 0x29, 0x85, 0x9f, 0x1e, 0xfd, 0x41, 0x41, 0x1b, 0x74, 0x9e, 0xb8, - 0x7f, 0xf8, 0x8c, 0x23, 0x2a, 0xcd, 0x5a, 0x7c, 0x68, 0x19, 0x26, 0xe3, 0x05, 0x68, 0x8d, 0xe3, - 0xe7, 0xe1, 0xcb, 0x2e, 0x02, 0xc6, 0x12, 0xc5, 0x16, 0x62, 0xc0, 0xfc, 0x9b, 0xcd, 0x36, 0x87, - 0x06, 0xf7, 0xac, 0x3d, 0x1a, 0x71, 0xc3, 0xa3, 0xc1, 0x37, 0xa6, 0xbf, 0xcf, 0x96, 0x91, 0x86, - 0xf2, 0x07, 0x4a, 0x09, 0x7e, 0x83, 0xab, 0x83, 0x77, 0x35, 0x8b, 0x59, 0x21, 0xfb, 0x27, 0x17, - 0x08, 0x9a, 0x57, 0xda, 0x20, 0xfb, 0xc8, 0xc2, 0xa8, 0x1b, 0xe4, 0xeb, 0xa8, 0x08, 0xf2, 0x3b, - 0xf8, 0xb3, 0x8e, 0x52, 0xc0, 0xe8, 0x1d, 0xfd, 0x55, 0x60, 0x83, 0xba, 0xa5, 0x01, 0x87, 0xaf, - 0x75, 0xab, 0x77, 0xbb, 0x6d, 0xfc, 0x61, 0xeb, 0xff, 0xa3, 0x4d, 0xe5, 0xc5, 0x7e, 0x42, 0xf6, - 0xd8, 0x09, 0x40, 0x97, 0x81, 0x7a, 0x55, 0x27, 0x4c, 0xd8, 0xa9, 0xe9, 0x84, 0x0b, 0x85, 0xa0, - 0xe2, 0xa3, 0x14, 0xed, 0x06, 0x0b, 0x6d, 0x1c, 0x57, 0x41, 0x0e, 0x34, 0x8c, 0xbe, 0x20, 0xa9, - 0x51, 0xd9, 0x1f, 0xa7, 0xfb, 0x22, 0xe1, 0xe0, 0x90, 0x49, 0xaf, 0x52, 0xbe, 0x8d, 0xce, 0x5d, - 0xa2, 0xc6, 0x3d, 0x30, 0x16, 0xe3, 0x9a, 0x35, 0x3a, 0x7f, 0x96, 0x3c, 0xde, 0x76, 0x4f, 0x77, - 0x7f, 0x50, 0xef, 0x8d, 0xf1, 0xa8, 0x61, 0x18, 0xc2, 0xae, 0xdc, 0x88, 0x5d, 0x14, 0xee, 0x5e, - 0xb9, 0x41, 0xf1, 0x6c, 0x3b, 0x8d, 0xbb, 0x85, 0xbb, 0x95, 0xc6, 0xdd, 0x1b, 0x77, 0x23, 0xba, - 0xaa, 0x4c, 0xf0, 0x9e, 0x97, 0x93, 0x5d, 0x27, 0x39, 0x1f, 0x17, 0x18, 0x16, 0xad, 0xcd, 0xee, - 0x74, 0x96, 0xac, 0x23, 0xfe, 0x27, 0xe9, 0x8a, 0xff, 0x89, 0xaf, 0x93, 0xf2, 0xbb, 0x2c, 0xfb, - 0x05, 0x25, 0x8c, 0xa4, 0x8c, 0x2e, 0x28, 0x5a, 0xd5, 0xd5, 0xaa, 0x2b, 0x3f, 0x47, 0x3a, 0x36, - 0xc1, 0x6a, 0x00, 0x5d, 0x9c, 0xe7, 0x31, 0x87, 0x96, 0x89, 0x74, 0x5a, 0xfc, 0x1c, 0x25, 0xf5, - 0x8a, 0x1e, 0x2f, 0xaf, 0x0c, 0xac, 0x22, 0xeb, 0x34, 0x9f, 0x8e, 0xab, 0x25, 0x43, 0x19, 0x63, - 0x6d, 0x6d, 0xe2, 0x9f, 0xaa, 0x5f, 0xd3, 0x0d, 0x00, 0xe7, 0xb9, 0xcc, 0xa9, 0x11, 0x3c, 0x57, - 0xd4, 0x44, 0x4f, 0x04, 0x74, 0x52, 0xe0, 0x9f, 0x1b, 0xfc, 0x33, 0x11, 0xa1, 0x2d, 0xcc, 0x8c, - 0x2a, 0x73, 0x2f, 0xaf, 0x01, 0x02, 0x82, 0x96, 0x09, 0xdf, 0xa7, 0x41, 0x26, 0x2e, 0x19, 0x5a, - 0xd6, 0x34, 0xa5, 0xc1, 0xe2, 0xa5, 0xde, 0xab, 0x56, 0x37, 0xed, 0x88, 0xa3, 0x06, 0x10, 0x6f, - 0x21, 0xf0, 0x8a, 0x6c, 0x55, 0x9e, 0x50, 0x21, 0xfe, 0x3e, 0xd6, 0x89, 0x91, 0x4c, 0x3c, 0xbb, - 0x37, 0xc1, 0x49, 0xd1, 0xbf, 0x02, 0xbe, 0xd3, 0xb6, 0x88, 0xee, 0x81, 0xbf, 0x88, 0x8c, 0x65, - 0x29, 0x73, 0xce, 0x5b, 0xbb, 0xa6, 0x97, 0x35, 0x5c, 0x2b, 0x34, 0x2b, 0xa9, 0x87, 0x66, 0x25, - 0xbf, 0x2d, 0x34, 0x2b, 0x91, 0x02, 0x59, 0x96, 0x76, 0xfa, 0xe0, 0x71, 0xab, 0x11, 0x04, 0x33, - 0xf2, 0x38, 0x16, 0x21, 0x29, 0xe8, 0x13, 0x68, 0xef, 0xa4, 0x8c, 0xce, 0xca, 0x73, 0x3f, 0x04, - 0xea, 0xfa, 0x66, 0x02, 0x6b, 0x48, 0xee, 0x62, 0x99, 0x18, 0x10, 0xd5, 0x8f, 0xd0, 0xa9, 0x89, - 0x3d, 0x04, 0x5e, 0x0a, 0xb5, 0x7e, 0xfd, 0x95, 0x3e, 0x40, 0xc2, 0x03, 0xe8, 0x74, 0x80, 0x5e, - 0x56, 0x27, 0x46, 0x28, 0x81, 0x12, 0x77, 0x4b, 0x72, 0x6b, 0xa7, 0xb1, 0x0c, 0x94, 0x28, 0x61, - 0xb7, 0x6d, 0x6d, 0x11, 0xfb, 0x44, 0x7d, 0x3c, 0x91, 0x68, 0x98, 0xcf, 0x25, 0x1e, 0x0c, 0x7b, - 0x43, 0x04, 0x3c, 0x6e, 0xe0, 0xbc, 0x7d, 0xa7, 0x1a, 0x6b, 0x50, 0x6e, 0x94, 0x36, 0x71, 0x81, - 0x5e, 0x6d, 0xec, 0x26, 0xa0, 0x99, 0x52, 0xc7, 0x63, 0x62, 0xe3, 0x49, 0x83, 0x8c, 0x61, 0x03, - 0x46, 0x6c, 0xc4, 0x96, 0xe8, 0x95, 0xc1, 0x29, 0x26, 0x49, 0x19, 0xa6, 0xab, 0x7e, 0xa3, 0x51, - 0x7f, 0x38, 0x1a, 0x1c, 0xa5, 0x78, 0x74, 0x87, 0x8c, 0x51, 0x26, 0xfb, 0x2c, 0xdd, 0x1f, 0x9e, - 0x8f, 0x3c, 0x5e, 0x42, 0xbe, 0x81, 0x4e, 0x61, 0x2f, 0x0e, 0x10, 0xbf, 0x40, 0x31, 0xd3, 0x49, - 0x09, 0x90, 0xc8, 0xa0, 0x51, 0x49, 0x0f, 0x34, 0x89, 0xd0, 0x6d, 0x32, 0x1e, 0x8c, 0x92, 0xa3, - 0xdc, 0x5c, 0x57, 0xb4, 0xbf, 0xef, 0xe7, 0xc0, 0xc6, 0xe4, 0x54, 0x64, 0xb5, 0x91, 0x48, 0x56, - 0xf0, 0x7b, 0x8e, 0x48, 0x02, 0x69, 0x4f, 0xbb, 0x3d, 0xd8, 0x8e, 0x81, 0x06, 0x5e, 0xce, 0x94, - 0x99, 0xdb, 0x94, 0x59, 0x07, 0x3f, 0x8f, 0xf1, 0xd5, 0x95, 0xa6, 0x75, 0x48, 0x87, 0xc4, 0x7a, - 0xf7, 0xbc, 0xd7, 0x97, 0xf5, 0x19, 0xa4, 0xab, 0xed, 0xa4, 0x02, 0x2c, 0xf8, 0x1a, 0xf9, 0xa4, - 0xaa, 0x9d, 0x81, 0x39, 0x27, 0x56, 0x07, 0x29, 0x0e, 0x27, 0xa7, 0x75, 0x99, 0x42, 0xe3, 0x8b, - 0x15, 0x6c, 0xe8, 0x58, 0x00, 0xc6, 0x98, 0x31, 0xf8, 0x59, 0x7d, 0x61, 0x35, 0xe9, 0xa8, 0xd6, - 0xa2, 0xc0, 0x3c, 0xe2, 0x3d, 0x6b, 0xc7, 0x7b, 0x86, 0x78, 0xc7, 0xbb, 0x93, 0x04, 0xde, 0x33, - 0xc4, 0xbb, 0xb1, 0x7c, 0xda, 0x00, 0x69, 0x0a, 0xe1, 0x60, 0xe3, 0x54, 0x06, 0x1b, 0xa7, 0x78, - 0x40, 0x4c, 0xa8, 0xa0, 0x75, 0x18, 0xb3, 0xb4, 0x16, 0x27, 0xaa, 0x71, 0x1c, 0x2f, 0x74, 0xf8, - 0xb5, 0xbd, 0x9f, 0x50, 0x10, 0xa8, 0xab, 0x03, 0x3d, 0x65, 0x53, 0x62, 0x87, 0xa8, 0xe1, 0xb0, - 0xc6, 0x77, 0x79, 0x53, 0xb8, 0x10, 0x47, 0x3b, 0x14, 0xc3, 0xaa, 0x4d, 0xae, 0xda, 0x3c, 0x9a, - 0x7b, 0x06, 0x67, 0x10, 0xe7, 0x6e, 0xd6, 0x6f, 0x6e, 0xa7, 0x3a, 0x38, 0xba, 0x6d, 0xa3, 0x1d, - 0x04, 0x2e, 0x5d, 0x54, 0xe8, 0xaa, 0x00, 0xa7, 0xda, 0x8e, 0xab, 0x2c, 0xc5, 0x31, 0x0d, 0x5d, - 0x3f, 0xe9, 0x44, 0xf7, 0x48, 0x8b, 0x1e, 0x63, 0xb1, 0xd1, 0x36, 0x73, 0x5b, 0xb7, 0xf7, 0x1a, - 0xea, 0xba, 0x24, 0x2c, 0xff, 0x5e, 0x05, 0x95, 0x8e, 0xe9, 0x20, 0x6d, 0x03, 0x16, 0x15, 0xd1, - 0x5c, 0x51, 0xb7, 0xaf, 0x22, 0x4a, 0x3b, 0xca, 0x73, 0xc8, 0xb3, 0x2c, 0xde, 0x2a, 0x66, 0x28, - 0x94, 0x48, 0x69, 0x00, 0x0d, 0xb2, 0x31, 0xc7, 0x9e, 0x76, 0xb4, 0xcd, 0x01, 0xd4, 0x0f, 0x35, - 0x8d, 0x6c, 0xaa, 0xbe, 0x56, 0x6b, 0x9a, 0x99, 0xb8, 0xb8, 0x02, 0x37, 0x85, 0x4a, 0x53, 0x99, - 0x25, 0x37, 0x35, 0x7d, 0x80, 0x1a, 0x7f, 0xc7, 0x0f, 0x42, 0x68, 0xed, 0x44, 0x6b, 0x1c, 0x69, - 0xa8, 0xbe, 0x29, 0x85, 0x20, 0x65, 0xa1, 0x79, 0xa3, 0xa4, 0x2e, 0x96, 0x23, 0x1a, 0x3a, 0x67, - 0x65, 0x1c, 0xd1, 0x27, 0xcf, 0x50, 0x31, 0x54, 0x52, 0x44, 0x05, 0x4b, 0xdc, 0x0c, 0xaa, 0x04, - 0xf5, 0x07, 0x34, 0x54, 0x96, 0x33, 0x6b, 0xb1, 0xfa, 0xfa, 0x3a, 0x15, 0x2b, 0x9a, 0xb7, 0xa4, - 0xb5, 0xc8, 0xc7, 0x5c, 0xa2, 0x1c, 0xf5, 0x02, 0x14, 0x46, 0x13, 0x0e, 0xd6, 0x2d, 0xe5, 0xf2, - 0xa6, 0x13, 0xfd, 0x65, 0x2d, 0xb8, 0x91, 0x07, 0xf5, 0x7c, 0x30, 0xd0, 0x5a, 0x0e, 0x7d, 0x15, - 0xfa, 0x69, 0xf4, 0x65, 0x60, 0xb4, 0x13, 0x0e, 0x7d, 0x94, 0x9a, 0x49, 0x15, 0x00, 0x29, 0x6c, - 0x35, 0xb0, 0x57, 0x0a, 0x6d, 0xc8, 0x4e, 0x22, 0x25, 0x18, 0xaa, 0xd4, 0x14, 0xba, 0xc0, 0x0e, - 0x86, 0x8a, 0x60, 0x41, 0x55, 0xb1, 0x84, 0x91, 0xfa, 0x61, 0x42, 0x05, 0x23, 0x77, 0x92, 0x96, - 0x49, 0x15, 0x56, 0x18, 0x48, 0x8d, 0x9b, 0x81, 0x94, 0x0a, 0x65, 0x34, 0x3c, 0x0c, 0xf4, 0xcb, - 0x50, 0x2f, 0x03, 0x25, 0x05, 0x12, 0x05, 0xd1, 0x0e, 0x34, 0x2b, 0x83, 0x9b, 0x32, 0xb8, 0x2c, - 0x83, 0x8f, 0x65, 0x70, 0x5d, 0x8e, 0x3d, 0xef, 0x46, 0xca, 0xef, 0x41, 0x69, 0xdd, 0x4d, 0xc8, - 0xb2, 0x73, 0x51, 0xbf, 0xc3, 0x45, 0x5f, 0x93, 0x41, 0xc4, 0x55, 0x05, 0xd1, 0x8c, 0x97, 0x1e, - 0xb4, 0xde, 0x0c, 0x9c, 0xc5, 0x90, 0xd9, 0x16, 0x13, 0x45, 0x42, 0x1e, 0x68, 0xd4, 0x5b, 0x5f, - 0x79, 0x44, 0x07, 0x9b, 0x00, 0xa5, 0x6b, 0x3a, 0xe3, 0x95, 0x37, 0x0d, 0xb1, 0xb1, 0xf4, 0xc2, - 0x2b, 0x08, 0x4e, 0xe2, 0xea, 0x06, 0x8f, 0x7f, 0xae, 0xe2, 0xfc, 0xee, 0x94, 0x9e, 0x65, 0x20, - 0xf7, 0xef, 0xc8, 0x3e, 0x31, 0xcf, 0xc7, 0xc4, 0xf0, 0xe4, 0x99, 0xe2, 0xde, 0x14, 0x63, 0xe1, - 0x2e, 0xf8, 0x2e, 0x75, 0xbc, 0x6e, 0xc4, 0xb4, 0x04, 0x63, 0x9c, 0xdd, 0x11, 0x3b, 0x3d, 0xc9, - 0x3d, 0xdf, 0x8a, 0x70, 0x77, 0xbf, 0xfe, 0xf1, 0x87, 0xd7, 0x7c, 0x1d, 0x3a, 0xde, 0x73, 0x1e, - 0xcf, 0xdc, 0x73, 0xd4, 0x0b, 0x93, 0x8d, 0x90, 0x5a, 0xc7, 0x80, 0x85, 0xf1, 0x5c, 0x1e, 0x31, - 0xa8, 0xe1, 0x04, 0xf0, 0x3f, 0x03, 0x65, 0xe8, 0x06, 0x4f, 0x33, 0x54, 0x07, 0xb2, 0x68, 0x62, - 0x0c, 0x32, 0x3f, 0x96, 0xb8, 0xd5, 0x79, 0x97, 0xe5, 0xf8, 0x9e, 0xe9, 0xea, 0xaa, 0x0c, 0x5e, - 0x57, 0x0b, 0x37, 0xba, 0x2e, 0x83, 0x55, 0x12, 0x81, 0x42, 0xb2, 0x0c, 0xcc, 0x71, 0xaf, 0xa8, - 0x0c, 0xbe, 0x23, 0x6a, 0x8d, 0x3e, 0x0f, 0x4e, 0x89, 0x22, 0x50, 0x98, 0xff, 0x2b, 0x12, 0x53, - 0xf4, 0x2f, 0x34, 0x4b, 0x27, 0x8b, 0xe8, 0x5e, 0xdd, 0xe4, 0xf7, 0x01, 0x34, 0xf1, 0xbf, 0x04, - 0x3c, 0x9d, 0xaf, 0xf2, 0xe9, 0x3b, 0x50, 0x67, 0xa3, 0x6f, 0x03, 0x0a, 0x73, 0xfa, 0x80, 0x12, - 0xfe, 0x3f, 0xf9, 0xfb, 0x77, 0xf1, 0xfa, 0x0d, 0x34, 0xfc, 0xb7, 0x00, 0x74, 0xd2, 0xf7, 0x19, - 0xfc, 0x8a, 0x7e, 0xde, 0x04, 0x37, 0x71, 0x5e, 0x10, 0x5d, 0xd2, 0x2d, 0xa0, 0xa0, 0xe0, 0x63, - 0x08, 0x7c, 0x5d, 0x02, 0x30, 0x57, 0xd3, 0xd1, 0x1d, 0x71, 0xa0, 0x3c, 0x06, 0xfd, 0xe1, 0xd1, - 0xc7, 0x2a, 0x1c, 0xab, 0xf4, 0x71, 0x87, 0x81, 0x01, 0x22, 0xcf, 0x87, 0x74, 0x75, 0x88, 0x05, - 0xe6, 0xe4, 0x92, 0xae, 0x30, 0x28, 0x41, 0x6f, 0x8c, 0x67, 0xef, 0x68, 0x41, 0x17, 0xe3, 0x8f, - 0x48, 0xb2, 0x1b, 0x7c, 0xbc, 0x4d, 0xdf, 0x44, 0xfa, 0x13, 0x6e, 0x19, 0x74, 0xc4, 0xc1, 0xb9, - 0xd1, 0xb7, 0x8a, 0xe2, 0x65, 0x2f, 0x45, 0x74, 0x70, 0x20, 0x6e, 0x17, 0x2d, 0x26, 0x80, 0x9c, - 0xb2, 0x2c, 0x0e, 0xe8, 0x21, 0x03, 0x3a, 0x23, 0xd1, 0xb8, 0x63, 0x94, 0xa8, 0xfe, 0xf7, 0xb8, - 0x63, 0xb4, 0x7c, 0xec, 0x1d, 0xa3, 0x6e, 0x35, 0x0a, 0xd8, 0x06, 0xfc, 0x28, 0x0e, 0xab, 0x04, - 0x6c, 0xed, 0x81, 0x7b, 0x47, 0x85, 0xd1, 0x9c, 0xc6, 0x50, 0x49, 0x3a, 0x83, 0x51, 0x7a, 0x54, - 0x6a, 0x91, 0x26, 0xd5, 0x37, 0x93, 0xe4, 0xe4, 0xf1, 0x1d, 0xe5, 0x61, 0x9c, 0x02, 0x3d, 0x53, - 0x3c, 0xcf, 0x58, 0xfe, 0xc0, 0xdb, 0xcb, 0x02, 0xba, 0x85, 0xc8, 0xc4, 0xfb, 0xd0, 0x66, 0xcf, - 0x86, 0x82, 0x84, 0xee, 0xb6, 0xf2, 0xf2, 0xf0, 0x36, 0x4f, 0x4a, 0x95, 0xe7, 0xb7, 0x1a, 0xfd, - 0x51, 0x78, 0xcd, 0xe9, 0xb4, 0x3a, 0x08, 0x89, 0x1b, 0x5e, 0xbe, 0xf7, 0xc0, 0x92, 0x5e, 0x9f, - 0x9e, 0x46, 0x74, 0x76, 0x6d, 0x75, 0x7d, 0xc1, 0xac, 0x71, 0xf8, 0x22, 0xb8, 0xc5, 0x9b, 0xda, - 0x30, 0xac, 0x68, 0xc4, 0xa0, 0x4b, 0x63, 0x82, 0x8e, 0x0f, 0xe1, 0xe3, 0x76, 0x27, 0xb1, 0xd4, - 0x14, 0x99, 0xa7, 0x49, 0x4e, 0x41, 0x38, 0x50, 0x77, 0xd4, 0xec, 0xa1, 0x96, 0x59, 0xf2, 0x2d, - 0x71, 0x86, 0x6b, 0x50, 0x54, 0x55, 0x57, 0x07, 0x40, 0xaa, 0x78, 0x6d, 0x6b, 0x5b, 0x2e, 0x7c, - 0x07, 0x4a, 0xe6, 0x91, 0x6e, 0x60, 0x6f, 0xeb, 0x2e, 0xc3, 0x4e, 0x9f, 0x4d, 0x30, 0x69, 0x2b, - 0x63, 0x2b, 0x6a, 0xb8, 0x91, 0x4d, 0xdb, 0x8a, 0xe1, 0x65, 0x79, 0x78, 0x78, 0x14, 0x4f, 0xb9, - 0x41, 0x99, 0xc5, 0x98, 0xee, 0xfc, 0xfc, 0x31, 0xff, 0xa0, 0xc9, 0x30, 0x5a, 0x05, 0x4c, 0xac, - 0x51, 0x12, 0xf0, 0x4d, 0x28, 0x51, 0x37, 0x44, 0x6f, 0xa9, 0xc0, 0xd3, 0xa7, 0x7b, 0xfc, 0x05, - 0xba, 0x7f, 0x3b, 0x79, 0x4b, 0x9d, 0xb3, 0x4f, 0x27, 0xca, 0x02, 0x75, 0x8f, 0xd8, 0x96, 0x46, - 0xbe, 0xe2, 0x12, 0x1b, 0x43, 0x89, 0x5b, 0xca, 0x7e, 0xab, 0x72, 0x00, 0x09, 0x38, 0xce, 0x68, - 0x12, 0xa4, 0x6a, 0x30, 0xd1, 0x34, 0x88, 0x99, 0x6f, 0xb7, 0x55, 0xc7, 0x61, 0x2b, 0xb6, 0x8e, - 0xf6, 0xa5, 0x9b, 0x6d, 0xc5, 0x6e, 0x54, 0xa1, 0xeb, 0x65, 0x79, 0xd7, 0x56, 0x68, 0x05, 0xdf, - 0x51, 0xd5, 0xa0, 0x8f, 0x09, 0xfd, 0x9d, 0xe2, 0x29, 0x4b, 0x40, 0x43, 0x6c, 0x2e, 0x0d, 0x4a, - 0x3c, 0x3c, 0x05, 0xbc, 0xa7, 0x08, 0x18, 0xa8, 0xb5, 0x80, 0x04, 0x95, 0xbb, 0xd9, 0xc8, 0xcb, - 0x49, 0x89, 0xb0, 0x92, 0xb9, 0x37, 0x3c, 0x2e, 0xb5, 0xea, 0x2d, 0x3b, 0x65, 0x02, 0x77, 0x5d, - 0xad, 0xac, 0xc5, 0x78, 0xf2, 0x01, 0xcd, 0x76, 0x07, 0xde, 0x49, 0xf4, 0xf7, 0xd0, 0xfb, 0xfb, - 0x6c, 0x1f, 0xdd, 0x7a, 0x27, 0xd1, 0x59, 0xfc, 0xcd, 0xb9, 0x77, 0xb6, 0xdf, 0x3f, 0x3f, 0xe1, - 0xa4, 0xcf, 0x0f, 0xaa, 0x9b, 0xb1, 0x4e, 0x8c, 0xc9, 0x71, 0x10, 0x78, 0xe5, 0xd9, 0xf0, 0xfc, - 0x04, 0xff, 0x98, 0x7b, 0x87, 0xfc, 0x3e, 0x24, 0x1e, 0x9e, 0x9f, 0xec, 0xe3, 0xdf, 0x08, 0x5d, - 0x7f, 0x83, 0x8d, 0x08, 0x60, 0x15, 0x51, 0xad, 0x78, 0xab, 0xdf, 0xb7, 0xc9, 0x3a, 0x9e, 0xd1, - 0xe9, 0x99, 0xa6, 0xb9, 0x32, 0x3e, 0x28, 0xfd, 0x67, 0xa5, 0xce, 0x10, 0xac, 0x45, 0x5c, 0xa9, - 0x1a, 0xe3, 0x09, 0x21, 0xcf, 0x5e, 0x58, 0x14, 0x81, 0x56, 0x5b, 0x4e, 0xc2, 0x69, 0x88, 0x16, - 0x49, 0xe5, 0x38, 0x7c, 0x3d, 0x49, 0xd3, 0xac, 0x74, 0xa6, 0xf4, 0xc6, 0xa5, 0x7a, 0xc4, 0x6c, - 0x02, 0xff, 0x4c, 0x67, 0x2e, 0x88, 0x6d, 0xcc, 0xd9, 0x52, 0x3f, 0x58, 0x84, 0x8a, 0x28, 0x00, - 0x6f, 0x27, 0x4a, 0x8b, 0xa2, 0xdf, 0xe3, 0x38, 0x5a, 0x84, 0xea, 0x18, 0x20, 0x9d, 0xd7, 0xb6, - 0x32, 0x3b, 0xf7, 0x7d, 0xd9, 0xa2, 0xac, 0x01, 0x2d, 0x40, 0x06, 0x52, 0x8c, 0x95, 0x1c, 0xe6, - 0x86, 0xe3, 0x9a, 0x3e, 0x98, 0x01, 0xb6, 0xd9, 0xe6, 0xb4, 0x84, 0x8e, 0x56, 0x30, 0xaf, 0x42, - 0x6f, 0x3e, 0xc6, 0x30, 0xa5, 0x33, 0x8a, 0xc9, 0xc7, 0xf7, 0x09, 0xf0, 0x00, 0x25, 0x31, 0xcd, - 0xa8, 0x4e, 0x27, 0xf9, 0x78, 0x78, 0x54, 0x57, 0x5f, 0xc5, 0x5d, 0x4a, 0x95, 0xea, 0x0a, 0x04, - 0x20, 0x7f, 0x44, 0xf7, 0xc8, 0xba, 0xe8, 0x68, 0x32, 0x4c, 0x84, 0x1e, 0x08, 0x12, 0xb6, 0xc0, - 0xd1, 0xc9, 0x4a, 0x9d, 0xc8, 0xc1, 0xe7, 0x57, 0xbc, 0x76, 0x0c, 0xbd, 0x5a, 0x2c, 0x3c, 0x59, - 0x25, 0x8e, 0x7a, 0xe2, 0x9d, 0x78, 0xf5, 0xde, 0xcf, 0x79, 0x0f, 0x08, 0xcc, 0x9a, 0x98, 0xd5, - 0xf8, 0x2c, 0x3e, 0x8f, 0xf8, 0x4e, 0x64, 0x5c, 0xcb, 0x8d, 0xde, 0x62, 0xac, 0x30, 0x51, 0x9c, - 0x0d, 0xaf, 0x9b, 0x1a, 0xc7, 0x21, 0x3f, 0xc8, 0xea, 0x99, 0x86, 0x78, 0x6e, 0x08, 0xf2, 0x95, - 0xef, 0x0b, 0xde, 0xab, 0xac, 0xee, 0xad, 0x08, 0x1f, 0x59, 0x44, 0x90, 0x84, 0xb4, 0x5f, 0x3c, - 0x7d, 0x8a, 0x34, 0xf7, 0xc3, 0xaa, 0x24, 0xdb, 0xf6, 0x8f, 0x17, 0x45, 0x9c, 0x83, 0x54, 0x62, - 0x29, 0x25, 0x02, 0xb6, 0xb2, 0xdd, 0x18, 0x26, 0x4b, 0xa0, 0x21, 0x83, 0x6f, 0x7a, 0x2b, 0xda, - 0x0b, 0x0b, 0xa2, 0x92, 0xd7, 0x8c, 0x89, 0x3d, 0x47, 0xae, 0x25, 0x8b, 0xe3, 0x3f, 0x30, 0x1b, - 0x80, 0x16, 0xa0, 0xa7, 0xe9, 0x62, 0x05, 0x7d, 0xab, 0x18, 0x48, 0xb6, 0x9a, 0x63, 0xdb, 0x74, - 0x61, 0x9e, 0xcf, 0xc3, 0x45, 0xd1, 0x2a, 0x41, 0xc3, 0x1b, 0xfc, 0x17, 0x66, 0x3c, 0xe6, 0xaa, - 0x5d, 0x7c, 0x93, 0x15, 0x14, 0x3d, 0x14, 0x76, 0x89, 0xd9, 0xc2, 0x46, 0x5b, 0xac, 0x2e, 0xca, - 0x3c, 0xa6, 0x98, 0x5d, 0xc3, 0x29, 0x56, 0xb6, 0xf6, 0x16, 0x5b, 0x41, 0x98, 0xbc, 0xf2, 0xe9, - 0x00, 0x24, 0xd3, 0x72, 0x9c, 0xe2, 0x46, 0x0f, 0x3a, 0x2a, 0xc8, 0x4e, 0x51, 0x63, 0x7c, 0x2e, - 0x48, 0xc2, 0xd5, 0x19, 0x61, 0x90, 0x0f, 0x0c, 0x30, 0xfa, 0x8b, 0x62, 0xe8, 0x68, 0x47, 0x06, - 0x8a, 0x50, 0x0b, 0x84, 0xed, 0xea, 0xb5, 0xf5, 0xe1, 0xdf, 0xa7, 0xa1, 0xea, 0xcd, 0x5e, 0x86, - 0x21, 0x0b, 0x0e, 0xb5, 0xf5, 0xaf, 0xae, 0xf9, 0xc5, 0xb3, 0x97, 0x8c, 0xcb, 0xb1, 0x3a, 0xbe, - 0xd1, 0x52, 0xe8, 0x36, 0xbe, 0xf8, 0x9f, 0xa4, 0xfc, 0xb0, 0x4b, 0x51, 0x1a, 0xce, 0x2b, 0x82, - 0x68, 0xec, 0x5e, 0x4f, 0xd2, 0x64, 0xb9, 0x5a, 0xb0, 0xfb, 0x44, 0x2d, 0x7c, 0x73, 0xb3, 0xa9, - 0x47, 0x97, 0x22, 0xb5, 0x33, 0x12, 0x36, 0xe6, 0x19, 0x24, 0xc2, 0xbc, 0x96, 0x79, 0x76, 0xb7, - 0xcb, 0x90, 0x45, 0xf3, 0xc3, 0xee, 0xe6, 0xf9, 0x86, 0x00, 0xdd, 0xbc, 0xa9, 0xd3, 0xc5, 0x73, - 0x4a, 0x6d, 0x30, 0x8f, 0x4f, 0xdc, 0xfa, 0x21, 0x7d, 0x37, 0x72, 0x5b, 0x0e, 0xd6, 0xbb, 0xa3, - 0x33, 0xeb, 0xf4, 0xb7, 0x3c, 0xfb, 0x5d, 0x9d, 0xfc, 0x6e, 0x31, 0x73, 0xa3, 0xdd, 0x4a, 0x43, - 0x0c, 0xa2, 0x26, 0x90, 0x53, 0x0b, 0xa5, 0xd1, 0x25, 0xb3, 0x24, 0x82, 0xec, 0x0d, 0x25, 0xb1, - 0x01, 0x8d, 0xb5, 0x0d, 0x01, 0x37, 0x1e, 0x83, 0x28, 0x10, 0x51, 0x61, 0x25, 0xde, 0x30, 0x57, - 0x6a, 0xb0, 0x10, 0x74, 0xf5, 0xc1, 0x24, 0x02, 0xe3, 0x8c, 0x41, 0x3f, 0xa2, 0xab, 0x11, 0x6b, - 0x47, 0xa1, 0x81, 0x4d, 0x8b, 0xbd, 0x92, 0xee, 0xb4, 0xa9, 0xae, 0xbb, 0x75, 0xaf, 0x13, 0x98, - 0x68, 0xe0, 0xa9, 0x18, 0x95, 0xba, 0xad, 0xd8, 0x64, 0x4d, 0xc5, 0x30, 0x74, 0x61, 0xb2, 0xad, - 0x20, 0x60, 0x73, 0xc9, 0x25, 0x31, 0xc0, 0xb8, 0xeb, 0x80, 0x75, 0x30, 0xc7, 0x30, 0xd4, 0x83, - 0x29, 0xdb, 0x5a, 0x9e, 0x59, 0xc4, 0x5f, 0xc9, 0xca, 0x07, 0x87, 0x14, 0xa0, 0xaa, 0xd7, 0xf1, - 0xe0, 0xd8, 0x2b, 0xed, 0x6a, 0x2b, 0x7d, 0xc0, 0xbb, 0x3f, 0x25, 0xb7, 0x27, 0x08, 0x18, 0xe5, - 0x78, 0x80, 0x61, 0x0a, 0x47, 0x74, 0xf9, 0xd2, 0x98, 0xc2, 0x7e, 0x5e, 0x0c, 0x8e, 0xcb, 0x93, - 0xb2, 0x3f, 0x46, 0xb7, 0x65, 0xff, 0xf0, 0x19, 0xc8, 0x02, 0xf3, 0xe8, 0x85, 0x2a, 0xb1, 0x3f, - 0x3e, 0x84, 0xde, 0xfb, 0x2f, 0x06, 0x90, 0x08, 0x4a, 0xed, 0x3e, 0xb0, 0x23, 0x3e, 0xe6, 0x97, - 0xf5, 0x13, 0x3f, 0x98, 0x54, 0x33, 0x55, 0xb4, 0xcf, 0x94, 0x20, 0xe7, 0x6a, 0x92, 0x48, 0xe6, - 0xe2, 0x29, 0x09, 0xd5, 0xed, 0x1c, 0x33, 0x0a, 0xe0, 0xa9, 0x9f, 0x64, 0x0f, 0x4c, 0x31, 0x15, - 0x46, 0xaa, 0x3c, 0xa3, 0xe8, 0x7b, 0x69, 0x88, 0x22, 0x28, 0xdd, 0x6b, 0x59, 0x8c, 0x62, 0x96, - 0x6e, 0x98, 0x35, 0x8f, 0x62, 0xb2, 0x60, 0xe1, 0x1e, 0xc1, 0x49, 0x18, 0x35, 0xe9, 0x19, 0x9a, - 0xa8, 0x88, 0x97, 0xaf, 0x71, 0x87, 0x3d, 0xef, 0xc4, 0x55, 0xe6, 0xc7, 0x48, 0x59, 0xf0, 0x60, - 0x5b, 0xdf, 0x9c, 0xd3, 0x3d, 0xf3, 0xb9, 0x8c, 0x5b, 0x02, 0x84, 0x50, 0x1a, 0xb0, 0xe0, 0x80, - 0x6f, 0x6d, 0xcf, 0x83, 0x15, 0x9a, 0x9e, 0x7c, 0xd6, 0x4b, 0x0f, 0x96, 0x93, 0xcb, 0xd8, 0xc1, - 0x27, 0x2c, 0x28, 0xbc, 0xa9, 0x70, 0xc6, 0x0e, 0x3d, 0x59, 0x1a, 0x38, 0x69, 0xf6, 0x36, 0xbe, - 0x3d, 0x8d, 0x2f, 0x4d, 0xd2, 0x88, 0xcb, 0x24, 0xc5, 0x8f, 0xa9, 0x28, 0xb5, 0x78, 0x55, 0xfd, - 0x48, 0x8a, 0xef, 0x6f, 0xaa, 0x5f, 0x78, 0x61, 0xd5, 0x29, 0x00, 0x2d, 0xf3, 0x7f, 0xba, 0xbc, - 0xb8, 0xad, 0xb5, 0x47, 0x0f, 0xa4, 0x63, 0x27, 0x67, 0x83, 0x00, 0xfe, 0x3b, 0x57, 0xc9, 0xe6, - 0x55, 0x72, 0xc8, 0xa0, 0xe2, 0x3a, 0x23, 0x5d, 0x7c, 0xbd, 0xca, 0x21, 0xf5, 0xe5, 0x40, 0x25, - 0xf0, 0xa3, 0x96, 0xf1, 0xec, 0xdb, 0x35, 0xa4, 0xea, 0xc4, 0x29, 0xa4, 0x8a, 0x9f, 0xf8, 0x12, - 0xd1, 0x8c, 0x1f, 0x11, 0x2a, 0x64, 0x29, 0x7e, 0x70, 0x40, 0xbd, 0x2e, 0x34, 0x76, 0xfa, 0x43, - 0x95, 0x81, 0xb7, 0xcc, 0xb1, 0x25, 0x53, 0x36, 0x12, 0x5f, 0xbe, 0x46, 0x1b, 0x0c, 0x26, 0x05, - 0x0e, 0x10, 0x84, 0xfc, 0x95, 0xdd, 0x02, 0xbf, 0xfc, 0x90, 0xe2, 0x1d, 0x15, 0x9c, 0x02, 0xcb, - 0x0d, 0xb0, 0x27, 0xaa, 0x63, 0xba, 0xde, 0x61, 0x20, 0x89, 0x94, 0x42, 0x87, 0xf8, 0x23, 0x82, - 0x54, 0xa9, 0xd0, 0x21, 0x89, 0x62, 0x5e, 0xab, 0x80, 0x13, 0x38, 0xf7, 0x34, 0x6f, 0x0a, 0x7c, - 0x7c, 0x20, 0x17, 0xea, 0x22, 0x29, 0xe1, 0x4b, 0x24, 0xc2, 0xd4, 0xe2, 0xb9, 0x9f, 0xa9, 0xd7, - 0x73, 0x03, 0x7e, 0x28, 0xbd, 0x7a, 0xea, 0x3e, 0xa0, 0x9f, 0xb6, 0x2d, 0x8f, 0x67, 0xe4, 0x8f, - 0x7f, 0x50, 0x8d, 0x1b, 0xa1, 0x9a, 0xed, 0x88, 0x7f, 0xc1, 0x10, 0x8f, 0x64, 0x91, 0x94, 0x77, - 0x2a, 0x88, 0x5a, 0x3d, 0xf7, 0x9e, 0xcc, 0x1d, 0x6f, 0xcf, 0xec, 0x9e, 0x57, 0x09, 0x08, 0x23, - 0xa9, 0xf3, 0xf4, 0x29, 0xc1, 0xf3, 0x35, 0xe2, 0x0e, 0x0a, 0xf6, 0x25, 0x2e, 0x8f, 0x9d, 0xe7, - 0xf8, 0x9a, 0xbd, 0x7e, 0xba, 0x3d, 0x8f, 0x41, 0xac, 0x28, 0xca, 0x3f, 0x17, 0x19, 0xc9, 0x4d, - 0x0e, 0xe8, 0xc8, 0xb1, 0x2f, 0x1e, 0x71, 0x17, 0x80, 0xe8, 0xe7, 0xda, 0xd5, 0x23, 0xf5, 0xb8, - 0xc2, 0xd4, 0x2e, 0xfd, 0xd5, 0xdd, 0x9b, 0x99, 0x87, 0xef, 0xb6, 0xfb, 0x6a, 0x37, 0x54, 0xe7, - 0x2b, 0xc7, 0x83, 0x11, 0x3f, 0x13, 0x48, 0x98, 0x22, 0xe4, 0xd7, 0x6b, 0xf5, 0xa6, 0xc5, 0xa2, - 0xe7, 0x57, 0x37, 0xd1, 0x62, 0x69, 0xd8, 0x1c, 0x1c, 0x2f, 0xa1, 0x69, 0x73, 0x12, 0xe7, 0x08, - 0x6a, 0x6a, 0x83, 0x84, 0x83, 0x6e, 0x38, 0x0d, 0xfa, 0x74, 0x86, 0xfe, 0x38, 0xee, 0x10, 0xef, - 0x33, 0xb9, 0x24, 0x35, 0x85, 0x5f, 0x93, 0x1d, 0x3b, 0x14, 0x65, 0x0c, 0x34, 0x80, 0xff, 0x7c, - 0xb7, 0x7a, 0xbb, 0xde, 0x7e, 0x37, 0x17, 0x53, 0xd4, 0xa3, 0x96, 0xea, 0x6d, 0x1d, 0x9d, 0x4a, - 0xf4, 0xf8, 0xa1, 0x4c, 0x16, 0x1e, 0xff, 0xa6, 0x89, 0x0e, 0x01, 0x4b, 0xd2, 0x00, 0x2f, 0x24, - 0x37, 0x0d, 0x95, 0x79, 0x76, 0x58, 0x60, 0x92, 0x3f, 0xaa, 0xf7, 0x2f, 0x3c, 0x81, 0xf5, 0xc0, - 0x39, 0x7c, 0xc1, 0xf9, 0xb3, 0xe6, 0x45, 0x38, 0x1c, 0xd9, 0x43, 0xd3, 0xae, 0x5d, 0x1d, 0x1d, - 0xf4, 0x10, 0x30, 0xf9, 0x60, 0x4b, 0xf6, 0xac, 0xd5, 0x46, 0x57, 0x4e, 0x2e, 0xde, 0xf8, 0x7f, - 0xfc, 0x03, 0x01, 0xab, 0x9f, 0x13, 0xaa, 0xcd, 0x4b, 0xf1, 0xd5, 0xdd, 0x6b, 0x7d, 0x63, 0xbb, - 0x57, 0xbd, 0x39, 0xe4, 0xb7, 0xce, 0x8d, 0xce, 0x6e, 0x9d, 0x21, 0x9d, 0x89, 0xf3, 0x64, 0x2e, - 0x81, 0x87, 0xba, 0xad, 0xe9, 0xe6, 0x86, 0x7c, 0xd7, 0x99, 0x90, 0xe3, 0x06, 0x83, 0xdc, 0x5c, - 0xbf, 0x9a, 0x39, 0x53, 0x0b, 0xc7, 0x20, 0x1b, 0xdc, 0x87, 0xd9, 0xd6, 0x75, 0x1a, 0xe3, 0xd7, - 0x0f, 0x24, 0xd1, 0xc0, 0x19, 0x30, 0x0e, 0x12, 0x73, 0xaa, 0x07, 0x2a, 0x03, 0xd3, 0x36, 0xf5, - 0x96, 0x90, 0x0d, 0x94, 0xe1, 0x7c, 0x43, 0x29, 0x1f, 0x5f, 0x73, 0x77, 0x38, 0x31, 0x21, 0xbf, - 0x62, 0xe6, 0xf5, 0x8a, 0xeb, 0x2c, 0x2b, 0xaf, 0x7a, 0x02, 0xf3, 0x54, 0x90, 0x09, 0x92, 0xde, - 0x9a, 0x53, 0x36, 0xad, 0x5e, 0xbf, 0x9f, 0x40, 0x31, 0x6e, 0xb6, 0x95, 0xe6, 0x08, 0x38, 0x0d, - 0x3a, 0xc9, 0x23, 0x4c, 0x28, 0x23, 0x31, 0x90, 0xe2, 0x2a, 0xbb, 0x7d, 0x8f, 0x8f, 0x30, 0x79, - 0x74, 0x07, 0xa0, 0x13, 0xa3, 0xce, 0xac, 0x19, 0xb9, 0x18, 0xd9, 0xba, 0x6d, 0x99, 0xa9, 0xe7, - 0x9b, 0xb8, 0xf3, 0x75, 0xf5, 0x0a, 0x04, 0x0e, 0x12, 0x5a, 0x53, 0xc9, 0x72, 0x8e, 0xb8, 0xf9, - 0x13, 0xc7, 0xa5, 0x2f, 0xb0, 0xc7, 0x61, 0xff, 0xbc, 0x8e, 0xa6, 0x8b, 0x78, 0x92, 0x6b, 0x52, - 0x56, 0x90, 0xea, 0x96, 0x79, 0xf4, 0x20, 0xff, 0x5e, 0x93, 0xf4, 0x8b, 0xcf, 0xd7, 0xa3, 0xcc, - 0xdc, 0x53, 0xd9, 0x1c, 0x4a, 0xc8, 0x1e, 0x88, 0xce, 0x1a, 0x24, 0x95, 0xd1, 0xb3, 0xa3, 0xaa, - 0x71, 0x48, 0x13, 0x8b, 0x47, 0x88, 0xc1, 0x35, 0x98, 0xd7, 0x6d, 0xd4, 0x44, 0x70, 0x33, 0x29, - 0x39, 0xc0, 0xe0, 0x88, 0xfb, 0x35, 0xa8, 0x04, 0x0b, 0x91, 0x11, 0x82, 0x31, 0xac, 0xd0, 0x59, - 0xa1, 0xbc, 0xf7, 0x3a, 0x03, 0x94, 0xa9, 0xfb, 0x89, 0x32, 0x87, 0x0e, 0x99, 0x03, 0xe6, 0x13, - 0xd8, 0x81, 0x42, 0xe7, 0x1d, 0xe0, 0x03, 0xcf, 0x38, 0xc5, 0x73, 0x60, 0x1a, 0x57, 0x4e, 0x79, - 0x15, 0x3b, 0xb8, 0xa5, 0x87, 0xce, 0x9b, 0x39, 0xfd, 0x48, 0x8a, 0x62, 0x45, 0xaf, 0xc0, 0x15, - 0x40, 0x3e, 0x45, 0x00, 0x05, 0x2f, 0x80, 0x72, 0x9c, 0xbb, 0x0c, 0x36, 0xd1, 0x6f, 0x4e, 0xdf, - 0x85, 0xbd, 0x8a, 0xed, 0x6e, 0x04, 0x4c, 0x84, 0xe6, 0x26, 0x50, 0x9d, 0x73, 0xdb, 0x36, 0x78, - 0x9e, 0x3c, 0xbd, 0x90, 0xec, 0x31, 0x2f, 0x33, 0xd2, 0x51, 0x62, 0xfd, 0xfa, 0x98, 0x57, 0x68, - 0xc6, 0x40, 0xec, 0x1a, 0x67, 0xc2, 0x75, 0x15, 0xe7, 0xba, 0xdc, 0xb2, 0xcf, 0x62, 0x11, 0xc3, - 0x1a, 0xee, 0xf0, 0x94, 0x10, 0xba, 0x95, 0x2f, 0x7d, 0x4c, 0x33, 0x4c, 0x91, 0x1b, 0xd8, 0xdf, - 0x1f, 0x71, 0x02, 0xff, 0xa5, 0x85, 0x08, 0x5b, 0xf0, 0x98, 0x2a, 0x9c, 0xdd, 0x9d, 0x8f, 0x44, - 0x3a, 0x34, 0x6d, 0x0e, 0x4f, 0x63, 0xa1, 0x30, 0x99, 0xf9, 0x2a, 0x1f, 0x37, 0x3d, 0xc8, 0x1f, - 0x5b, 0xa0, 0xf8, 0x75, 0xc0, 0x92, 0xfd, 0xa1, 0xd5, 0x1b, 0x8c, 0x08, 0x38, 0xc5, 0x27, 0xeb, - 0x45, 0xe0, 0xf8, 0x52, 0xbc, 0x44, 0xd8, 0xf2, 0x04, 0x62, 0x31, 0xbd, 0xfa, 0xc5, 0x7a, 0x50, - 0x59, 0x21, 0xcb, 0xf9, 0xfc, 0x3e, 0xd9, 0x34, 0x9e, 0x59, 0x6e, 0x7b, 0x07, 0x11, 0xba, 0xc0, - 0xb2, 0xf4, 0xe6, 0xb8, 0x7c, 0x61, 0x79, 0x01, 0x2d, 0x79, 0x98, 0xe3, 0xbb, 0xd8, 0x18, 0x0e, - 0x10, 0xe5, 0x25, 0x58, 0x70, 0xfa, 0x1a, 0xe1, 0xc8, 0x75, 0x37, 0xf2, 0xc5, 0xe4, 0xf6, 0x87, - 0x12, 0x11, 0xc2, 0xda, 0x4b, 0x89, 0xd5, 0x5b, 0x89, 0x3b, 0x3c, 0x2e, 0xed, 0xcc, 0x17, 0x39, - 0x00, 0xa0, 0x65, 0x3d, 0x60, 0xc9, 0xb4, 0xe8, 0xd7, 0x4b, 0xea, 0xdf, 0x8c, 0x21, 0x46, 0x50, - 0xc5, 0xbb, 0x73, 0x5c, 0x5e, 0x0d, 0x80, 0x5f, 0xb8, 0xfb, 0xd3, 0x96, 0x17, 0xc2, 0xe3, 0x4b, - 0x20, 0x8b, 0xb6, 0x5e, 0xe8, 0xa7, 0xdd, 0x15, 0xf5, 0x24, 0x51, 0x8e, 0xaa, 0xa4, 0xf3, 0xfd, - 0x37, 0x5f, 0x9b, 0x67, 0x0e, 0xab, 0xf7, 0x9c, 0x73, 0x7c, 0xe0, 0x53, 0xa2, 0x79, 0xeb, 0xc3, - 0x87, 0x9f, 0xdf, 0x6b, 0x89, 0xb1, 0x3f, 0xdc, 0x98, 0x17, 0x10, 0x35, 0xf6, 0xb1, 0xb5, 0x4d, - 0xe3, 0xb1, 0xeb, 0xef, 0xe3, 0x54, 0x3d, 0x75, 0x2d, 0x9f, 0xcb, 0x24, 0xb0, 0xb2, 0x65, 0x3b, - 0x54, 0x19, 0xc8, 0xf0, 0x17, 0x59, 0xb9, 0x9c, 0xcc, 0x2c, 0xd8, 0xda, 0x5f, 0x90, 0x6c, 0xc2, - 0xd6, 0x02, 0x59, 0xb6, 0xdc, 0x0a, 0x58, 0x07, 0x91, 0x5c, 0xb9, 0xc7, 0x9e, 0x68, 0x02, 0xe4, - 0x40, 0x31, 0x50, 0x04, 0xbd, 0x2b, 0x13, 0x84, 0xc4, 0x21, 0xce, 0x4f, 0x41, 0x13, 0xe3, 0x8b, - 0x17, 0x43, 0x25, 0xc9, 0x77, 0x93, 0xd4, 0x34, 0x9d, 0x9b, 0x91, 0x4f, 0x6b, 0x84, 0x83, 0x01, - 0x27, 0x86, 0xf2, 0x15, 0xe1, 0x0c, 0x2c, 0xc2, 0xd9, 0xde, 0xf6, 0x0c, 0x17, 0x92, 0x6a, 0x7b, - 0x56, 0x6b, 0x7b, 0x26, 0x57, 0x15, 0xbf, 0x7e, 0xf8, 0xfc, 0xbf, 0xeb, 0x6d, 0xb7, 0xac, 0x72, - 0xd0, 0x27, 0xeb, 0xeb, 0xdc, 0x71, 0x7e, 0x8a, 0xd1, 0x5d, 0x19, 0x3b, 0x33, 0xed, 0x4e, 0x97, - 0x99, 0x0f, 0x2f, 0x78, 0x68, 0xb3, 0xf6, 0xa4, 0x3a, 0x34, 0x58, 0x5b, 0xf0, 0x50, 0x66, 0xcb, - 0x82, 0x7f, 0xdc, 0x92, 0x6f, 0x59, 0xf4, 0x8d, 0x97, 0xd3, 0x71, 0x06, 0x3f, 0x69, 0x81, 0xaa, - 0x75, 0x2f, 0xe9, 0xa9, 0x37, 0xc3, 0x7b, 0xbe, 0x25, 0x23, 0x4c, 0x59, 0x30, 0x47, 0xbe, 0x6b, - 0x31, 0xd9, 0xe3, 0xb1, 0xd2, 0xb1, 0x8c, 0xc8, 0xd7, 0xda, 0x22, 0x3a, 0x90, 0x6b, 0x2d, 0xf6, - 0xea, 0x94, 0xfa, 0xc3, 0x64, 0x9d, 0x5c, 0xaf, 0xae, 0x1d, 0x5e, 0x1c, 0x4e, 0x36, 0x37, 0x2f, - 0xd6, 0x3a, 0x78, 0x2d, 0xe6, 0x15, 0x6c, 0xb4, 0x6a, 0xc4, 0x3d, 0xc5, 0xd5, 0xa5, 0x76, 0x8c, - 0xfb, 0x27, 0x0f, 0xcc, 0x51, 0xa7, 0xe4, 0x1d, 0xcf, 0xe4, 0x0b, 0x65, 0xc7, 0x96, 0xe9, 0x9d, - 0x56, 0x0d, 0xbb, 0x45, 0xf5, 0x91, 0xef, 0xde, 0xc7, 0x72, 0x97, 0x04, 0x35, 0xff, 0x12, 0x5a, - 0xc5, 0xea, 0x31, 0x5b, 0x1f, 0x9c, 0x67, 0xc3, 0xc1, 0xc0, 0xc1, 0x53, 0x62, 0xd4, 0x94, 0x28, - 0x60, 0x76, 0x33, 0x9d, 0xc6, 0x40, 0x60, 0x33, 0x50, 0x13, 0x0a, 0x7c, 0xe2, 0x23, 0x1b, 0xfd, - 0x4b, 0x1d, 0x9a, 0xff, 0xa7, 0xc1, 0x2c, 0xbe, 0x0c, 0x58, 0x3d, 0x07, 0x9a, 0xd1, 0xf5, 0x36, - 0xff, 0x15, 0x38, 0x9f, 0x7d, 0xf1, 0xc5, 0x17, 0x56, 0x92, 0xcf, 0x13, 0x1b, 0xcb, 0x27, 0x42, - 0x3a, 0x64, 0xfa, 0x1e, 0xaf, 0x27, 0x15, 0x5b, 0xd2, 0xf3, 0xcf, 0x06, 0x4d, 0x35, 0x0a, 0xc0, - 0x01, 0xa0, 0x3a, 0xb4, 0x09, 0x64, 0x3d, 0x16, 0x1a, 0x40, 0xf8, 0x27, 0x0c, 0xec, 0xd2, 0x37, - 0xb2, 0x47, 0xee, 0x93, 0xcf, 0x24, 0x63, 0x1b, 0x58, 0xbf, 0xbf, 0x73, 0x03, 0xc8, 0xf5, 0xeb, - 0x2d, 0x10, 0x69, 0x42, 0x2b, 0xc0, 0xb9, 0xcc, 0x74, 0x33, 0x54, 0x9f, 0x3c, 0x64, 0xad, 0x29, - 0x31, 0xbc, 0x42, 0x61, 0x49, 0x50, 0x09, 0x15, 0x1a, 0x37, 0x6a, 0xb9, 0xde, 0x10, 0x2b, 0xf8, - 0xae, 0x28, 0x5e, 0x2b, 0xc0, 0xb7, 0xab, 0x4b, 0xdd, 0x72, 0x27, 0xf8, 0xaf, 0x18, 0x74, 0xb9, - 0x18, 0x16, 0xa4, 0xf8, 0xb6, 0x61, 0xfa, 0xc3, 0x1b, 0x4f, 0xe3, 0xb9, 0xb9, 0xb2, 0xf8, 0xb9, - 0xd6, 0x77, 0xf8, 0x10, 0x57, 0xcf, 0xb7, 0x04, 0x61, 0x0f, 0x2d, 0x44, 0x3e, 0xf2, 0x16, 0xa5, - 0x16, 0x45, 0x4a, 0x92, 0xeb, 0x6a, 0xe4, 0xed, 0xa2, 0xde, 0x42, 0xba, 0x78, 0xf5, 0x98, 0x06, - 0x4e, 0xef, 0xd2, 0x69, 0xbd, 0x09, 0x6d, 0x7d, 0x6a, 0xb6, 0xd3, 0xde, 0xd2, 0x7c, 0x7d, 0xd1, - 0x73, 0xf6, 0x85, 0x31, 0xc9, 0xef, 0xd6, 0xee, 0x3f, 0xc3, 0xf3, 0x69, 0x52, 0x95, 0xa2, 0xb5, - 0xd9, 0xc2, 0x7d, 0x88, 0xd4, 0xbf, 0xca, 0x93, 0x9e, 0xef, 0xef, 0x5c, 0xfc, 0x74, 0x19, 0xc7, - 0xb3, 0xc7, 0x54, 0x78, 0x83, 0x6a, 0x64, 0x01, 0xca, 0xf8, 0x63, 0x2a, 0xfd, 0x55, 0x17, 0x26, - 0x71, 0x96, 0xec, 0x72, 0x7e, 0x0b, 0x56, 0x6e, 0x6f, 0xf3, 0xc9, 0xb2, 0xa7, 0x51, 0xa1, 0x16, - 0x2d, 0xa2, 0x80, 0x43, 0xc2, 0xa8, 0x05, 0xbd, 0x0e, 0x2f, 0xca, 0xb4, 0x10, 0x26, 0xae, 0x4e, - 0xa5, 0x9e, 0x1e, 0x46, 0x6f, 0x57, 0xe8, 0xb1, 0x89, 0x56, 0x65, 0x1e, 0x33, 0xea, 0x8a, 0x7c, - 0x23, 0x6d, 0x9b, 0x12, 0xcf, 0x03, 0xf5, 0x2c, 0x3b, 0xe0, 0xf1, 0xb1, 0x93, 0xf8, 0xce, 0x53, - 0x67, 0xb0, 0x1e, 0xc0, 0x0a, 0x6c, 0x76, 0x41, 0xaa, 0x3d, 0xb0, 0x8c, 0x1c, 0xb6, 0xc7, 0x6a, - 0x9d, 0x61, 0x3b, 0xb6, 0xdd, 0xf0, 0xd8, 0x19, 0xa0, 0xd5, 0xcb, 0x4e, 0x3c, 0x1a, 0xcb, 0xd1, - 0xa8, 0xe6, 0xed, 0x22, 0xfd, 0xe1, 0x16, 0x43, 0x02, 0xa9, 0x3e, 0x4b, 0x62, 0xcd, 0x4d, 0xa5, - 0x8b, 0xa9, 0xf4, 0xdd, 0x04, 0x78, 0x00, 0x1e, 0xa6, 0x18, 0xe9, 0xc2, 0x9d, 0x24, 0xeb, 0x71, - 0xae, 0x22, 0xee, 0x37, 0x18, 0xcd, 0x84, 0x60, 0xd3, 0xe2, 0x20, 0x6a, 0x8e, 0xdc, 0xcf, 0xf0, - 0x54, 0x65, 0x83, 0x13, 0x60, 0xa4, 0x17, 0xb0, 0x15, 0x6f, 0x12, 0x38, 0x17, 0xc2, 0xea, 0x37, - 0xa1, 0x67, 0x96, 0x70, 0xc6, 0xe8, 0x8b, 0x6f, 0xf6, 0x38, 0xb2, 0xf2, 0xf7, 0x87, 0x15, 0xba, - 0x54, 0xd2, 0x90, 0x5b, 0x46, 0x3a, 0xf9, 0x47, 0x91, 0xa5, 0xef, 0x9b, 0x26, 0x06, 0x69, 0x0c, - 0x84, 0x5e, 0xaf, 0x41, 0x38, 0x0f, 0x1c, 0x90, 0x82, 0x2e, 0xb2, 0x22, 0x56, 0x9b, 0xac, 0x02, - 0xc0, 0x32, 0xce, 0x6a, 0x5b, 0xa3, 0x57, 0x91, 0xf3, 0x9e, 0xe8, 0xc1, 0x97, 0xdd, 0xd9, 0xaa, - 0xbc, 0xad, 0x76, 0x57, 0xca, 0x39, 0x53, 0x33, 0x80, 0xa3, 0xad, 0x01, 0xc4, 0x5d, 0x87, 0xad, - 0x06, 0xc4, 0xf9, 0x1a, 0xfd, 0x58, 0x3d, 0xae, 0x16, 0x1f, 0xb6, 0x96, 0xb1, 0x26, 0xab, 0xe7, - 0xab, 0xb9, 0x3d, 0x38, 0x58, 0xe5, 0x38, 0xb9, 0x6a, 0xa8, 0x30, 0x11, 0x3d, 0xf5, 0xea, 0xd7, - 0x70, 0x10, 0xe2, 0xbf, 0xf0, 0xf0, 0xe5, 0x01, 0xc2, 0x7e, 0x40, 0x27, 0x66, 0x7a, 0x51, 0x47, - 0x36, 0x0b, 0x24, 0x8d, 0xb6, 0xec, 0xaa, 0xa2, 0x24, 0x4a, 0x8d, 0x76, 0xd1, 0x65, 0x06, 0x23, - 0x88, 0x7a, 0x00, 0x76, 0xcf, 0xa0, 0x50, 0x65, 0x4b, 0x35, 0x5a, 0x25, 0x85, 0x68, 0xe1, 0x57, - 0xd3, 0x32, 0x32, 0x66, 0x5c, 0x48, 0xfb, 0xf3, 0xe9, 0x8f, 0x6f, 0x95, 0xcf, 0x3b, 0x99, 0xdf, - 0x99, 0x16, 0x46, 0xba, 0x76, 0x5a, 0x64, 0x40, 0x9a, 0x8b, 0xec, 0x12, 0x0d, 0x90, 0xc2, 0xb2, - 0x36, 0x8f, 0x4b, 0x8a, 0x6e, 0x73, 0x3c, 0x18, 0x44, 0xa0, 0x7b, 0xbb, 0x8e, 0xcb, 0xab, 0x6c, - 0x16, 0x11, 0xb8, 0x01, 0x27, 0x5d, 0xc5, 0x13, 0x60, 0x5c, 0x45, 0xa4, 0x8b, 0x38, 0x8e, 0xab, - 0x82, 0x1a, 0xfb, 0xf4, 0xc8, 0x66, 0x04, 0x7c, 0x7e, 0x89, 0xa7, 0x3e, 0xc8, 0x94, 0x43, 0x43, - 0x1e, 0x39, 0x20, 0x02, 0xe7, 0x78, 0x40, 0xe0, 0xc3, 0xfb, 0x6f, 0xfb, 0x5f, 0xba, 0x5c, 0x71, - 0xa3, 0x1a, 0x44, 0xdf, 0x73, 0x84, 0xd0, 0xb3, 0x9d, 0x14, 0xff, 0xd2, 0x23, 0xc2, 0x00, 0x20, - 0x30, 0xb2, 0x63, 0xdd, 0x0f, 0x91, 0x14, 0x24, 0x85, 0xd9, 0x2f, 0x7e, 0xd5, 0x77, 0xc3, 0x6a, - 0xa3, 0x06, 0xba, 0xb1, 0x56, 0x02, 0x56, 0x43, 0x40, 0x3c, 0x6d, 0x8c, 0xad, 0x3a, 0xc1, 0x64, - 0xd1, 0x8b, 0x65, 0xd7, 0x92, 0x04, 0xac, 0xda, 0xb5, 0xc9, 0xd8, 0xd0, 0xa5, 0xd3, 0xb4, 0xd4, - 0x08, 0x7e, 0x87, 0x95, 0xc2, 0x62, 0x35, 0x9d, 0xa2, 0xc0, 0xa7, 0x60, 0x1a, 0x01, 0xe9, 0xa5, - 0x59, 0xda, 0xd7, 0x4b, 0x0b, 0x40, 0x5c, 0xc2, 0xe4, 0xc4, 0x95, 0xf5, 0x03, 0xb9, 0x38, 0x61, - 0x4f, 0x8c, 0x5f, 0x4f, 0x67, 0x85, 0x00, 0xbe, 0x96, 0xbb, 0xd7, 0x0b, 0xee, 0xc6, 0xbd, 0x23, - 0x8e, 0x9a, 0xd6, 0xaa, 0xe3, 0xc0, 0x3d, 0x56, 0xfe, 0xb1, 0xa3, 0x03, 0xce, 0x31, 0x72, 0x33, - 0x0f, 0x24, 0x8c, 0xf9, 0xb1, 0x7b, 0xf3, 0x56, 0x26, 0xc0, 0xc4, 0x0e, 0x5d, 0x07, 0xa8, 0x24, - 0x99, 0xe9, 0xb2, 0x6a, 0x7f, 0x00, 0xf5, 0x5d, 0xd6, 0xf2, 0xad, 0x5f, 0xa8, 0xce, 0x8f, 0x9d, - 0x7b, 0x37, 0x01, 0x1d, 0x46, 0x18, 0x6d, 0xfc, 0xfd, 0x21, 0x70, 0x7f, 0x64, 0x4e, 0x6e, 0x54, - 0x2b, 0xbe, 0xe9, 0x80, 0x25, 0xcb, 0x4b, 0x4f, 0xf1, 0x3b, 0x7f, 0xf4, 0x10, 0x08, 0x15, 0x21, - 0x38, 0x6b, 0xe4, 0xdd, 0xbd, 0x23, 0x96, 0x45, 0xb4, 0x56, 0x01, 0xfc, 0x9e, 0x55, 0x32, 0x14, - 0x2c, 0xf6, 0xeb, 0x10, 0x87, 0xc9, 0xcc, 0xd9, 0xef, 0xd9, 0x9a, 0xe9, 0xdf, 0xbc, 0xae, 0x72, - 0xfe, 0xc8, 0x3d, 0x6e, 0xc9, 0x23, 0x16, 0xbc, 0xdf, 0x3b, 0x3a, 0xe0, 0x9e, 0x49, 0xc3, 0xaa, - 0xf0, 0xac, 0xb4, 0x2c, 0x33, 0xcc, 0x25, 0x33, 0xa0, 0x36, 0x9c, 0xab, 0x70, 0xf3, 0x8e, 0x21, - 0xeb, 0x8a, 0xbe, 0xfd, 0x73, 0x57, 0xbc, 0x8b, 0xf2, 0x35, 0xc4, 0x57, 0x10, 0xed, 0x82, 0xf9, - 0x0a, 0x0c, 0x81, 0xfa, 0x3b, 0x46, 0xbd, 0x4d, 0x7e, 0xbd, 0xfd, 0x7a, 0xc7, 0x80, 0x46, 0xc0, - 0xf6, 0x71, 0x4b, 0x06, 0x5d, 0x3c, 0xdd, 0x6b, 0x21, 0x53, 0x63, 0x60, 0x8b, 0x87, 0xe2, 0xdd, - 0xe2, 0xf5, 0x08, 0xb8, 0xbc, 0xf8, 0x7d, 0x37, 0xd2, 0x06, 0x3e, 0x6d, 0x50, 0x9c, 0x67, 0x6a, - 0xf5, 0x84, 0xf8, 0x7d, 0x24, 0x33, 0x53, 0x96, 0x5b, 0x30, 0x9d, 0xfa, 0x35, 0x99, 0xcd, 0x3d, - 0x03, 0xb3, 0x49, 0xa1, 0xae, 0x69, 0xae, 0x56, 0x35, 0xd2, 0x33, 0xa9, 0x4d, 0xd0, 0x21, 0xdc, - 0xaf, 0xa9, 0xdc, 0x05, 0xc6, 0x88, 0xa0, 0x24, 0x57, 0x8b, 0x65, 0xd1, 0x91, 0x22, 0xfa, 0xca, - 0x4b, 0x72, 0x52, 0x65, 0x74, 0xf8, 0x66, 0xf8, 0x25, 0x6a, 0x7a, 0x4a, 0x95, 0xb0, 0x38, 0x07, - 0x41, 0xba, 0x00, 0x81, 0xc4, 0xd7, 0xb0, 0xbb, 0xde, 0xf7, 0xf4, 0xd3, 0x05, 0x51, 0xb9, 0x36, - 0x84, 0x32, 0x29, 0x17, 0x71, 0x03, 0x44, 0xed, 0xf1, 0xe5, 0xa6, 0xe2, 0x59, 0x11, 0xde, 0xde, - 0x98, 0x5c, 0xe1, 0x42, 0xad, 0xf2, 0xa7, 0x98, 0x62, 0x8a, 0x18, 0x2f, 0x6a, 0x55, 0x00, 0x92, - 0x40, 0x3b, 0x37, 0x25, 0x34, 0xb7, 0xe2, 0xa3, 0xa9, 0x36, 0x17, 0x56, 0xbe, 0x6a, 0x3c, 0x14, - 0x3c, 0xea, 0x34, 0x11, 0x54, 0x42, 0xba, 0x72, 0xe1, 0x43, 0xf9, 0x8b, 0x3c, 0xd1, 0x4a, 0x3a, - 0x39, 0xb8, 0x8b, 0x30, 0x5d, 0x54, 0x8d, 0x68, 0x17, 0x34, 0xa5, 0xce, 0x56, 0xb9, 0x4a, 0x16, - 0x0e, 0xef, 0x22, 0x5c, 0xcd, 0x96, 0x00, 0x12, 0xfc, 0xd2, 0x99, 0xb6, 0x07, 0xba, 0x08, 0x97, - 0x45, 0xa1, 0x39, 0x78, 0xcd, 0x0b, 0x8d, 0x79, 0x9d, 0xe0, 0x4e, 0xef, 0xde, 0x93, 0x0b, 0x88, - 0xfc, 0x96, 0x64, 0xba, 0x21, 0xf1, 0x2e, 0x5c, 0x2e, 0x40, 0x1a, 0x23, 0x81, 0x8e, 0x4c, 0x09, - 0x4e, 0x54, 0x99, 0x25, 0xda, 0x9b, 0x99, 0x16, 0x7a, 0xc0, 0xd4, 0xe5, 0x74, 0x9a, 0xce, 0xf1, - 0xc8, 0xf8, 0xb6, 0x1a, 0x71, 0x4b, 0x8d, 0xc9, 0x7a, 0x5b, 0x8d, 0xb2, 0x59, 0x03, 0xdd, 0x2a, - 0x0e, 0x48, 0x31, 0x5b, 0xab, 0xd9, 0xf5, 0x88, 0x6a, 0x13, 0x5a, 0xe2, 0x55, 0x45, 0xb1, 0x5f, - 0xc5, 0x8b, 0xe9, 0x18, 0x34, 0x08, 0x5e, 0x80, 0xb3, 0xb1, 0x2e, 0xd1, 0xe2, 0x63, 0x50, 0x39, - 0x15, 0x6b, 0xa9, 0xbc, 0x05, 0x4e, 0xc5, 0x57, 0x92, 0xb9, 0xc7, 0x4e, 0x01, 0x74, 0xf1, 0xc6, - 0x0b, 0xe0, 0x38, 0xd8, 0x05, 0x11, 0xe1, 0x6c, 0xe4, 0xf0, 0x59, 0xf4, 0x0d, 0xfe, 0x30, 0x2e, - 0x85, 0x4d, 0x05, 0x4d, 0xa2, 0x1c, 0x0a, 0x58, 0x45, 0xfa, 0x14, 0x76, 0x77, 0x41, 0x2b, 0xf8, - 0x70, 0xec, 0x87, 0xc0, 0x6f, 0xd0, 0xd0, 0x05, 0xa3, 0x8b, 0xfb, 0xfd, 0x3a, 0x9c, 0xd3, 0xd9, - 0x59, 0xfc, 0x80, 0x13, 0x1a, 0x17, 0x2a, 0xbe, 0x81, 0xb4, 0x80, 0x92, 0xa0, 0xf9, 0xc3, 0x2f, - 0x37, 0xb0, 0xd2, 0x86, 0x2d, 0x69, 0x87, 0x94, 0x56, 0xe3, 0x08, 0x5a, 0x49, 0xe4, 0x78, 0x0d, - 0x28, 0x86, 0xf8, 0xd0, 0x35, 0x9e, 0x9f, 0x57, 0xeb, 0xb1, 0xf2, 0x71, 0x63, 0x10, 0x46, 0x4d, - 0x2e, 0x7a, 0x40, 0xeb, 0x35, 0x93, 0xae, 0x7a, 0xc1, 0x16, 0xce, 0x47, 0x7a, 0x27, 0xdb, 0xb5, - 0x72, 0x12, 0x16, 0xdd, 0x54, 0xd9, 0x50, 0x9a, 0x45, 0xb5, 0x64, 0xbd, 0xa5, 0xaf, 0x47, 0x59, - 0x08, 0x94, 0x32, 0xa5, 0x27, 0x7f, 0x4e, 0xcd, 0xcf, 0x35, 0x54, 0x56, 0xc8, 0x8a, 0x48, 0x87, - 0xbd, 0xa5, 0x02, 0x66, 0x39, 0xd1, 0x22, 0x5e, 0x52, 0xbc, 0x9b, 0x68, 0xbf, 0x12, 0xf0, 0x06, - 0xcd, 0x52, 0x6c, 0xc1, 0xac, 0x09, 0xf0, 0x37, 0x2c, 0x2a, 0xa0, 0xfa, 0x3e, 0xcd, 0xb3, 0xc5, - 0xe2, 0x7d, 0xb6, 0xec, 0x50, 0x62, 0x1a, 0x03, 0x63, 0x57, 0xe9, 0x7b, 0x32, 0xcd, 0x6f, 0x6b, - 0x98, 0x63, 0xb7, 0xd8, 0xa5, 0x7a, 0x30, 0x0c, 0xbf, 0x34, 0xe8, 0x43, 0xd8, 0x8a, 0x90, 0x3c, - 0x80, 0xbe, 0x74, 0x65, 0xfe, 0xf5, 0xfb, 0x6f, 0xbe, 0x56, 0xee, 0x5d, 0xea, 0x93, 0x8b, 0xc8, - 0xd0, 0x0f, 0x47, 0x58, 0x9f, 0xa4, 0xd0, 0x3c, 0xa5, 0xe0, 0x74, 0xa3, 0x2e, 0x7a, 0xaa, 0x6d, - 0xa3, 0x9d, 0x54, 0xfa, 0x45, 0xef, 0x27, 0x56, 0x25, 0x95, 0x8f, 0xb4, 0xa7, 0xdc, 0xd5, 0xba, - 0xf9, 0x0a, 0x9a, 0x46, 0xdf, 0xd8, 0x95, 0xad, 0xff, 0xb2, 0xbf, 0x9d, 0xcc, 0x5c, 0x26, 0xea, - 0x85, 0x37, 0x95, 0x3d, 0xfc, 0x34, 0xea, 0x62, 0x76, 0xf1, 0x0f, 0x92, 0x86, 0xf0, 0xca, 0x0a, - 0x2a, 0xc1, 0xb2, 0x0e, 0x24, 0x4b, 0xee, 0x25, 0xec, 0xb0, 0x0f, 0xf0, 0xbd, 0x67, 0x43, 0x13, - 0x0a, 0x52, 0xa9, 0xc5, 0xd0, 0x5a, 0xd3, 0x93, 0xca, 0x10, 0xbe, 0x5d, 0x68, 0xf0, 0x78, 0xc3, - 0xda, 0x83, 0x0f, 0xa3, 0xcd, 0xa1, 0x39, 0x4d, 0x68, 0x72, 0x62, 0x3a, 0xde, 0xe2, 0xc4, 0xb1, - 0x43, 0x99, 0x4d, 0x0f, 0xa1, 0xf3, 0x33, 0x7a, 0x86, 0x39, 0xe9, 0x36, 0x59, 0x2c, 0x1c, 0x3e, - 0x25, 0x37, 0x9f, 0x3b, 0x74, 0x08, 0x97, 0x66, 0x8d, 0xf7, 0xbf, 0x7d, 0xf8, 0x0e, 0x1b, 0x06, - 0x3e, 0x1e, 0x1a, 0x2a, 0x0d, 0xd8, 0xb6, 0x55, 0xb6, 0xf7, 0x33, 0x8b, 0xa9, 0x27, 0x98, 0xe1, - 0x99, 0xa9, 0x56, 0xc7, 0x62, 0xba, 0x00, 0x2c, 0x2a, 0x64, 0x02, 0xf0, 0x9b, 0xcd, 0x63, 0x50, - 0x81, 0xd6, 0x40, 0xe3, 0x44, 0xaf, 0xb6, 0xe4, 0x3d, 0xfd, 0xdd, 0xa0, 0xc5, 0x98, 0x08, 0xdb, - 0x71, 0xf3, 0x23, 0xa8, 0x69, 0x0a, 0x13, 0x05, 0x6e, 0x15, 0xe8, 0x4d, 0x4f, 0xe3, 0xf2, 0x36, - 0xcb, 0x7f, 0x61, 0xcc, 0xa4, 0xd9, 0x2d, 0x75, 0x80, 0x4e, 0x79, 0x74, 0x86, 0x81, 0x34, 0x1f, - 0x3f, 0x88, 0x89, 0xf7, 0x58, 0x50, 0x61, 0x1c, 0xe0, 0xca, 0x1e, 0xee, 0xc4, 0x59, 0x64, 0xf8, - 0x26, 0x2d, 0x75, 0xd5, 0x89, 0x31, 0x14, 0x37, 0x08, 0x67, 0x28, 0x72, 0xc0, 0x17, 0x3d, 0x36, - 0x90, 0xc5, 0xf3, 0x78, 0x7a, 0x23, 0x52, 0x1e, 0x87, 0x4c, 0x14, 0xf7, 0x6e, 0x92, 0xf8, 0xb6, - 0x22, 0x7e, 0x0a, 0xf1, 0xdb, 0xc3, 0xcf, 0x0e, 0x9b, 0xec, 0x42, 0x55, 0x69, 0x31, 0x1b, 0x7a, - 0x58, 0x8d, 0x8c, 0x4e, 0x6c, 0x3f, 0x54, 0xb7, 0xd7, 0xef, 0xd0, 0x50, 0x3e, 0xb5, 0xaa, 0x1f, - 0xe8, 0x3c, 0x68, 0x62, 0x72, 0x81, 0x67, 0x45, 0x2f, 0x16, 0x93, 0xf4, 0x97, 0x07, 0xcc, 0xc4, - 0x2d, 0x96, 0x6a, 0xd5, 0x9e, 0x65, 0x20, 0xb6, 0xf1, 0x70, 0x3d, 0xf9, 0x05, 0x25, 0x08, 0x4f, - 0x44, 0xb9, 0xa4, 0x3a, 0x86, 0xb0, 0xcd, 0x2b, 0xe5, 0x54, 0xf1, 0x6d, 0xe4, 0xa4, 0x61, 0xea, - 0x6b, 0xc0, 0xf4, 0x89, 0x5c, 0x75, 0x56, 0xd5, 0xfe, 0x70, 0x13, 0x7f, 0xf2, 0x85, 0x5f, 0x81, - 0x9b, 0xa7, 0x16, 0x8e, 0x8c, 0xb0, 0xec, 0x73, 0xf7, 0x4b, 0x4d, 0xc9, 0x86, 0x14, 0x28, 0x68, - 0xe2, 0xa1, 0x08, 0x83, 0xd6, 0x68, 0x02, 0x09, 0xc5, 0x06, 0xd8, 0x45, 0x7c, 0xeb, 0x9b, 0x5a, - 0x75, 0xbf, 0x5e, 0xc3, 0xb1, 0x6e, 0xfc, 0xe8, 0xbf, 0xc9, 0x6b, 0x6e, 0x75, 0xfd, 0xdb, 0x1c, - 0xe8, 0x69, 0xf1, 0x7b, 0x39, 0xce, 0xbb, 0xe0, 0xfa, 0x2d, 0xce, 0x73, 0x91, 0xf6, 0x1b, 0x7d, - 0xe7, 0xa6, 0x05, 0x76, 0x1e, 0xfd, 0xbb, 0x8e, 0x70, 0x6b, 0x44, 0x6d, 0x3e, 0x71, 0xab, 0x80, - 0x3f, 0xb2, 0x1c, 0x96, 0xed, 0xce, 0xf2, 0xa6, 0x93, 0xf7, 0x53, 0xc7, 0x02, 0x6c, 0xf7, 0xc3, - 0x4e, 0x9b, 0x9e, 0x27, 0xd1, 0x69, 0x47, 0xc4, 0x51, 0xa7, 0x4f, 0xb7, 0x61, 0x7f, 0x41, 0x9b, - 0x7b, 0x3f, 0x11, 0x43, 0x35, 0x4b, 0x19, 0xa8, 0xa2, 0x86, 0x38, 0x2a, 0x0a, 0xdf, 0x78, 0xa0, - 0xc3, 0x2f, 0x27, 0x34, 0xd0, 0x57, 0xb3, 0x99, 0xf6, 0x04, 0x37, 0xac, 0x2c, 0xb5, 0x18, 0x2e, - 0xf6, 0xfe, 0x17, 0xbe, 0x61, 0x12, 0x1c, 0x80, 0xdc, 0xb1, 0xee, 0x0b, 0x8c, 0xc9, 0xf9, 0x64, - 0x54, 0xb8, 0x86, 0x18, 0x81, 0x2b, 0x37, 0xd2, 0xc6, 0x95, 0x02, 0x98, 0x38, 0x86, 0xf0, 0x44, - 0xd8, 0xe6, 0xae, 0xec, 0x5b, 0x4d, 0xab, 0x04, 0x88, 0x16, 0xe5, 0x36, 0x90, 0x2c, 0xe6, 0xc3, - 0x55, 0x60, 0xb5, 0x6c, 0xab, 0x12, 0x37, 0xaa, 0x74, 0x8f, 0x80, 0x0e, 0x65, 0x08, 0x53, 0x11, - 0x25, 0xf8, 0x94, 0x93, 0x2d, 0xed, 0x8c, 0x6c, 0xe9, 0xab, 0x71, 0x4a, 0xb9, 0x4e, 0x8d, 0x73, - 0x87, 0xc1, 0xcf, 0xac, 0xd9, 0xa0, 0xbd, 0x5e, 0x47, 0x91, 0x1d, 0x39, 0x87, 0xc6, 0x12, 0x8a, - 0x99, 0x26, 0x2a, 0xa8, 0x38, 0xb7, 0xdc, 0xf0, 0xba, 0x42, 0xbf, 0xbf, 0xcb, 0xd0, 0x68, 0x00, - 0x83, 0x47, 0xcc, 0x0d, 0xc6, 0x63, 0x88, 0xb9, 0xc1, 0x60, 0x8c, 0x2d, 0x68, 0x86, 0xec, 0x1a, - 0xb1, 0xd8, 0xf6, 0xf4, 0x1b, 0xff, 0x61, 0x20, 0x31, 0x26, 0x04, 0xad, 0xdd, 0x37, 0x8f, 0x80, - 0xf2, 0x6f, 0x5e, 0x62, 0x6c, 0xbe, 0xb6, 0xce, 0x62, 0xec, 0x1a, 0x7f, 0xfc, 0xc3, 0x93, 0xb6, - 0x6e, 0xe7, 0x6b, 0xcb, 0x2a, 0x08, 0xad, 0x3c, 0xa2, 0x5b, 0xe5, 0x2b, 0xf1, 0xa4, 0x97, 0xbf, - 0xde, 0x01, 0x68, 0x47, 0xb2, 0x87, 0x07, 0xdd, 0x2e, 0x4c, 0xa6, 0x8f, 0x81, 0xe2, 0xab, 0x3c, - 0x91, 0x9b, 0xbe, 0x06, 0xe0, 0x22, 0x4f, 0x1e, 0xe8, 0xb8, 0x6e, 0x50, 0xf2, 0xff, 0xcf, 0x74, - 0x01, 0x5c, 0xf4, 0xa8, 0x0b, 0xb7, 0xc1, 0xad, 0x11, 0x57, 0xac, 0x77, 0x01, 0xdf, 0x52, 0xa9, - 0x1f, 0x83, 0x35, 0xa3, 0x58, 0x6f, 0x83, 0x21, 0xd9, 0x09, 0x86, 0x86, 0x8e, 0xbe, 0x33, 0x1c, - 0x2c, 0xbb, 0xbe, 0xfe, 0xb9, 0x0d, 0x86, 0xe5, 0xc2, 0x75, 0x22, 0x94, 0xb5, 0x8c, 0xfc, 0xb6, - 0x8b, 0x91, 0x4d, 0xea, 0x08, 0xa2, 0xa5, 0x08, 0x63, 0x52, 0x5d, 0xb4, 0x6b, 0xd1, 0xb8, 0xf0, - 0x24, 0xd6, 0xd6, 0x81, 0x49, 0xb3, 0x1b, 0xb2, 0x3e, 0x3c, 0x93, 0xf5, 0x50, 0x85, 0x58, 0x56, - 0x40, 0xeb, 0xd9, 0x83, 0x35, 0x2c, 0xca, 0xd9, 0x68, 0xab, 0xfb, 0xbf, 0x4f, 0x7f, 0x24, 0x6a, - 0x3e, 0x62, 0x02, 0xde, 0x9d, 0xea, 0x09, 0xa0, 0x83, 0x45, 0x7b, 0xca, 0xac, 0xa9, 0x67, 0xe4, - 0x3f, 0x19, 0x30, 0x40, 0x82, 0xb3, 0xf4, 0x15, 0x74, 0xb9, 0xf7, 0x27, 0x37, 0x78, 0x91, 0x8a, - 0x36, 0x52, 0x59, 0x5a, 0xdb, 0xe3, 0xc3, 0x0e, 0x54, 0x6b, 0x32, 0xec, 0x60, 0x63, 0x21, 0xae, - 0xe9, 0xca, 0x5f, 0x16, 0xdf, 0xa3, 0x80, 0xed, 0xda, 0xd2, 0x0c, 0xc1, 0x0e, 0x7a, 0xc9, 0xe9, - 0xe4, 0x26, 0x46, 0xf5, 0xb2, 0x58, 0x64, 0xb0, 0x77, 0xba, 0x78, 0x06, 0xc6, 0xc1, 0x83, 0xb9, - 0x9c, 0xd0, 0xca, 0x3b, 0x49, 0x82, 0xf2, 0x92, 0x36, 0xca, 0x2f, 0xd0, 0x36, 0x61, 0x82, 0x18, - 0x1a, 0xc1, 0x10, 0x5e, 0xd2, 0x1f, 0xfa, 0x55, 0x40, 0x44, 0x43, 0x77, 0xa5, 0xee, 0x61, 0x7c, - 0x0e, 0x9f, 0xf2, 0xab, 0x00, 0x21, 0x77, 0x40, 0xe2, 0xec, 0xbb, 0xa1, 0xbb, 0x5d, 0xfb, 0x75, - 0x4f, 0x65, 0x69, 0x50, 0x26, 0x1d, 0x3a, 0x57, 0xbd, 0xe7, 0x7c, 0xc0, 0xfb, 0x41, 0x08, 0x79, - 0x78, 0x49, 0x09, 0x0f, 0x99, 0x86, 0x0e, 0xea, 0xb0, 0x32, 0x8f, 0xeb, 0x5e, 0x21, 0x2b, 0x29, - 0x43, 0x79, 0x36, 0xa3, 0x36, 0xd7, 0xd5, 0x70, 0x27, 0xa8, 0xd2, 0xc1, 0x88, 0x1b, 0x86, 0x1f, - 0xc4, 0xab, 0x18, 0x88, 0x42, 0x70, 0x73, 0x18, 0x3b, 0x32, 0x3d, 0x63, 0xf0, 0xd4, 0x21, 0x12, - 0xea, 0xf4, 0xd9, 0x85, 0xd9, 0x95, 0xff, 0xb3, 0xe7, 0x8f, 0xe8, 0xd6, 0xa6, 0xb1, 0x7b, 0xb8, - 0x5c, 0xb3, 0xfb, 0x94, 0xad, 0xa7, 0x9a, 0xa8, 0x65, 0x51, 0xbe, 0xcf, 0x77, 0xec, 0xbe, 0x58, - 0xae, 0xdb, 0xb2, 0xf9, 0x26, 0x63, 0xf7, 0x8b, 0x43, 0x9d, 0x4d, 0x18, 0x80, 0x12, 0x64, 0x87, - 0xad, 0x75, 0xf7, 0xb2, 0xad, 0xbb, 0x5a, 0x59, 0xdd, 0x9f, 0x69, 0xb0, 0x96, 0xaf, 0x3a, 0x7c, - 0xf1, 0x85, 0xce, 0xa7, 0xe0, 0x03, 0x3a, 0xed, 0xc4, 0x97, 0x91, 0x99, 0xa7, 0x18, 0x9c, 0xbd, - 0xf1, 0xb8, 0x01, 0x89, 0x6d, 0x78, 0xad, 0x90, 0x23, 0x1a, 0xc0, 0xc5, 0xf0, 0x40, 0xb5, 0x6a, - 0xa4, 0x5b, 0xa2, 0xa5, 0xba, 0x2c, 0xd3, 0x8f, 0x0a, 0xb7, 0x6a, 0xac, 0x56, 0x3e, 0xad, 0x85, - 0x0b, 0x89, 0x8f, 0xed, 0x89, 0x55, 0xbb, 0x3b, 0xc9, 0x20, 0xce, 0xaa, 0x26, 0x28, 0x14, 0x69, - 0xeb, 0x80, 0x31, 0xe4, 0xb0, 0x27, 0x4f, 0xa8, 0xf5, 0xfc, 0x3a, 0xca, 0xd4, 0x8b, 0x4a, 0x5e, - 0xef, 0xaa, 0xb8, 0xe9, 0x05, 0x4e, 0x0f, 0xff, 0x0c, 0x75, 0x78, 0xcc, 0x43, 0xad, 0x3b, 0xad, - 0x13, 0x48, 0x55, 0x25, 0xf2, 0xda, 0x83, 0x65, 0x6c, 0x7c, 0x2b, 0x59, 0x77, 0xd1, 0x6c, 0xb4, - 0x53, 0xe0, 0x85, 0x12, 0xf0, 0x79, 0x76, 0x06, 0x9f, 0x61, 0x1e, 0x60, 0xe5, 0xf0, 0x92, 0x3f, - 0x2e, 0x02, 0xab, 0xff, 0xf3, 0xe0, 0x0c, 0xff, 0x9d, 0x6f, 0x2a, 0x49, 0x80, 0xd7, 0xad, 0x0c, - 0xc8, 0xec, 0x6a, 0x1d, 0x6a, 0xee, 0xd4, 0x81, 0x6e, 0x5d, 0x04, 0x7d, 0xea, 0x4e, 0x0e, 0x77, - 0xe9, 0x64, 0xa7, 0x7e, 0x4c, 0x27, 0xbf, 0x8f, 0x98, 0xd9, 0x2e, 0x13, 0xb5, 0xca, 0xd3, 0xce, - 0xb1, 0xf3, 0x62, 0x6b, 0xf8, 0x75, 0x5b, 0x1d, 0x6d, 0x3b, 0x63, 0x58, 0x61, 0xd0, 0x21, 0xc7, - 0xb9, 0x0d, 0x1e, 0xc1, 0x74, 0xd5, 0x11, 0x90, 0x44, 0xab, 0x08, 0xf2, 0x70, 0x07, 0x48, 0x1a, - 0xe2, 0x67, 0xb7, 0x45, 0xa2, 0xe7, 0xec, 0x27, 0x2d, 0x36, 0x4a, 0x51, 0x77, 0x67, 0x53, 0x25, - 0x1e, 0x52, 0x91, 0xcd, 0x49, 0x3f, 0x7b, 0xa3, 0xc1, 0x9a, 0xdf, 0x3d, 0xd2, 0x09, 0xfc, 0xb3, - 0x11, 0x8b, 0x9b, 0xce, 0x41, 0x40, 0x2a, 0xf8, 0x6a, 0xb4, 0xa2, 0xfb, 0x20, 0x96, 0x51, 0x3b, - 0x40, 0x94, 0xb8, 0x58, 0xac, 0x72, 0xcf, 0x6f, 0x87, 0xd5, 0x15, 0x02, 0xfe, 0x6e, 0x45, 0x8d, - 0x1c, 0x2e, 0x8b, 0x13, 0x90, 0x07, 0x07, 0x58, 0x02, 0xb9, 0xf3, 0x87, 0x37, 0xfa, 0x44, 0xf3, - 0xc7, 0xd7, 0x52, 0xa6, 0xb3, 0xef, 0xb9, 0xe9, 0xe1, 0x05, 0x01, 0xe5, 0x24, 0x49, 0x31, 0x68, - 0x38, 0x70, 0xde, 0x42, 0xc9, 0x2f, 0x46, 0xd8, 0x10, 0x10, 0x48, 0x75, 0xf2, 0x11, 0x78, 0xd2, - 0x7a, 0xa0, 0x82, 0x9c, 0x02, 0xe7, 0xae, 0xfa, 0xca, 0x6e, 0xac, 0x53, 0x47, 0x9d, 0x04, 0x53, - 0xce, 0x6f, 0x75, 0xb8, 0xfc, 0x76, 0x54, 0x43, 0x1b, 0x46, 0xa1, 0x61, 0xc8, 0xe0, 0x13, 0x7d, - 0xdf, 0x73, 0xed, 0x5e, 0x05, 0x98, 0x8a, 0x96, 0xab, 0x16, 0x40, 0x37, 0x88, 0x1d, 0x7b, 0x06, - 0xb0, 0x27, 0x4f, 0x9e, 0x72, 0x44, 0x62, 0x35, 0xc7, 0xfe, 0xcd, 0xd9, 0xcc, 0xca, 0x1e, 0xac, - 0x47, 0x59, 0x78, 0xbd, 0x34, 0x23, 0x1c, 0x02, 0x87, 0xfd, 0xf5, 0x57, 0x47, 0x66, 0xb4, 0xbf, - 0x51, 0xdb, 0x51, 0xce, 0xba, 0x0c, 0x1f, 0xca, 0x6c, 0x29, 0x04, 0x1b, 0x8d, 0x34, 0x6f, 0x10, - 0x22, 0x35, 0x2e, 0xf4, 0x55, 0x0b, 0x94, 0x73, 0xd7, 0x92, 0xf3, 0x33, 0x9b, 0x3e, 0x0c, 0x9a, - 0xb7, 0x9e, 0xcc, 0x55, 0xe7, 0x57, 0x5d, 0xff, 0x8c, 0x67, 0xee, 0xbc, 0x72, 0x33, 0xd2, 0x54, - 0x3c, 0xd9, 0x7e, 0x70, 0x75, 0xcf, 0x33, 0x33, 0x48, 0x0e, 0xb8, 0x86, 0xeb, 0x6d, 0x96, 0x4f, - 0x2e, 0x0d, 0xda, 0xc9, 0xd7, 0xc9, 0x15, 0xac, 0xf1, 0xd5, 0x79, 0xd5, 0x63, 0xa0, 0x04, 0x91, - 0x42, 0x8f, 0xd5, 0xf0, 0x30, 0x8c, 0x87, 0xc2, 0x6b, 0x18, 0x65, 0x1f, 0x4a, 0x7a, 0x7f, 0x82, - 0x7d, 0xe1, 0xd5, 0xf0, 0xe9, 0x14, 0x63, 0x73, 0x16, 0x00, 0x5a, 0xf3, 0x3a, 0x08, 0xa8, 0xf0, - 0xe4, 0xc9, 0x13, 0xac, 0xd0, 0x75, 0x1a, 0xb7, 0x5c, 0xc3, 0xe0, 0x3f, 0x7d, 0x7e, 0x2f, 0x2e, - 0xb7, 0xaa, 0xcf, 0x8f, 0xd3, 0x87, 0x79, 0xf3, 0x37, 0xcb, 0xf5, 0xa7, 0x06, 0x52, 0x14, 0x7c, - 0x1a, 0x29, 0xad, 0x38, 0xa1, 0xcb, 0x06, 0xd6, 0x2d, 0xf3, 0x4e, 0xed, 0x06, 0x14, 0x31, 0xa3, - 0x1e, 0xf0, 0xbd, 0x4c, 0xbd, 0xd9, 0x1a, 0x56, 0xa2, 0x56, 0x78, 0xd0, 0x4f, 0xbd, 0xef, 0x15, - 0xcf, 0x66, 0xeb, 0x83, 0x5b, 0xdf, 0x5c, 0xc9, 0x75, 0xa8, 0x83, 0x56, 0xf1, 0xd9, 0x1f, 0xb5, - 0x4c, 0x31, 0xe8, 0x19, 0xa8, 0xb0, 0xe0, 0xa8, 0x13, 0x90, 0x39, 0x74, 0xc6, 0x11, 0x2c, 0xeb, - 0xbe, 0x33, 0xe4, 0xcc, 0x63, 0x95, 0x39, 0x87, 0x6f, 0xe1, 0xb0, 0xda, 0xf1, 0x1e, 0x3e, 0xaa, - 0x8c, 0x47, 0x32, 0xaa, 0x78, 0x0d, 0x00, 0x6b, 0x08, 0xad, 0xce, 0xd5, 0xef, 0xda, 0x09, 0x66, - 0x79, 0xb8, 0xd9, 0xa8, 0x5a, 0x5b, 0xf1, 0xdf, 0x1b, 0x2c, 0xd7, 0xbd, 0xed, 0xa7, 0xa6, 0xe7, - 0x78, 0xb8, 0xda, 0x14, 0xd9, 0x8d, 0x90, 0xf9, 0x38, 0xb4, 0x5f, 0xad, 0x3c, 0xe4, 0x5b, 0x0d, - 0xb1, 0x2f, 0xf9, 0x17, 0xdd, 0xa0, 0x40, 0x50, 0x62, 0x6c, 0xd4, 0x6d, 0x92, 0xce, 0xb2, 0x5b, - 0xd6, 0xff, 0xf8, 0x2d, 0xe3, 0xed, 0x03, 0x58, 0x42, 0xa7, 0xcd, 0x2d, 0xa8, 0xcc, 0x96, 0x35, - 0x87, 0x3c, 0x06, 0x71, 0x80, 0x5c, 0x6d, 0xb8, 0x35, 0x77, 0x0c, 0xbf, 0xba, 0x5a, 0x4e, 0xa1, - 0xe1, 0xb7, 0x3c, 0xd7, 0x8d, 0xdb, 0x00, 0x7a, 0x7c, 0x43, 0x37, 0x94, 0xc0, 0x0f, 0x71, 0xee, - 0x9c, 0x9a, 0x6b, 0x16, 0xbf, 0xce, 0xd0, 0x8f, 0x90, 0xdd, 0x62, 0x9b, 0x88, 0x1f, 0x51, 0xa3, - 0xb5, 0x7c, 0x75, 0x71, 0x4f, 0xb3, 0xc2, 0xb6, 0x2e, 0x70, 0x41, 0x20, 0x3e, 0x80, 0x59, 0xec, - 0xd4, 0x45, 0x7b, 0xf9, 0x6d, 0x3d, 0x64, 0x2b, 0x04, 0x09, 0xeb, 0x3d, 0xd4, 0x01, 0x15, 0x5f, - 0x2d, 0x77, 0x2c, 0xad, 0x2f, 0x75, 0x69, 0x16, 0x3f, 0x3a, 0x00, 0xb6, 0x94, 0x2c, 0xcb, 0x63, - 0xfc, 0x8a, 0x51, 0xca, 0xf4, 0xe5, 0xaa, 0xbc, 0x5e, 0x1c, 0x3b, 0xff, 0x0b, 0x0b, 0xc2, 0x1b, - 0xba, 0x00, 0x0e, 0x01, 0x00, + 0x1f, 0x8b, 0x08, 0x08, 0x73, 0x2b, 0xf0, 0x5d, 0x00, 0x03, 0x73, 0x6d, 0x61, 0x6c, 0x2e, 0x68, + 0x74, 0x6d, 0x00, 0xcc, 0x7c, 0x6d, 0x77, 0xa2, 0xc8, 0xd6, 0xe8, 0xf7, 0x59, 0x6b, 0xfe, 0x83, + 0x93, 0x59, 0x77, 0x3a, 0x39, 0x89, 0x01, 0x7c, 0x8b, 0x49, 0x77, 0x7a, 0x4e, 0x81, 0xa8, 0xa8, + 0xa8, 0xa8, 0xa0, 0xe6, 0xac, 0xf9, 0x80, 0x88, 0x88, 0x22, 0x18, 0x40, 0x51, 0xe7, 0x99, 0xfb, + 0xdb, 0xef, 0xae, 0x02, 0x14, 0xdf, 0xba, 0x33, 0xd3, 0xcf, 0x59, 0xeb, 0xa6, 0x3b, 0x6a, 0xbd, + 0xed, 0xda, 0xb5, 0xdf, 0xf7, 0xa6, 0xe2, 0x97, 0x5f, 0x4a, 0x2d, 0xae, 0x37, 0x6c, 0xf3, 0xa9, + 0xa9, 0xbf, 0xb0, 0xbe, 0xfe, 0xfc, 0xd3, 0x97, 0xfd, 0xbb, 0xae, 0x8e, 0xf1, 0xfb, 0x42, 0xf7, + 0xd5, 0x94, 0xad, 0x2e, 0xf4, 0xd7, 0x9b, 0xb5, 0xa9, 0x07, 0x4b, 0xc7, 0xf5, 0x6f, 0x52, 0x9a, + 0x63, 0xfb, 0xba, 0xed, 0xbf, 0xde, 0x04, 0xe6, 0xd8, 0x9f, 0xbe, 0x8e, 0xf5, 0xb5, 0xa9, 0xe9, + 0x69, 0xd2, 0x78, 0x48, 0x99, 0xb6, 0xe9, 0x9b, 0xaa, 0x95, 0xf6, 0x34, 0xd5, 0xd2, 0x5f, 0x99, + 0x87, 0xd4, 0x02, 0x7a, 0x16, 0xab, 0x45, 0xdc, 0x71, 0xb3, 0x07, 0xab, 0x4d, 0x55, 0xd7, 0xd3, + 0x01, 0xcc, 0xca, 0x9f, 0xa4, 0x8b, 0x37, 0x27, 0xdb, 0xf9, 0x53, 0x7d, 0xa1, 0xa7, 0x35, 0xc7, + 0x72, 0xdc, 0xc4, 0x8e, 0xbf, 0x66, 0xc8, 0x4f, 0x02, 0x48, 0x3c, 0xb2, 0xd5, 0xbd, 0x9b, 0x68, + 0xa9, 0xba, 0x5c, 0x5a, 0x7a, 0x7a, 0xe1, 0x8c, 0x4c, 0x78, 0x0b, 0xf4, 0x51, 0x1a, 0x3a, 0xd2, + 0x9a, 0xba, 0x54, 0x47, 0x96, 0x4e, 0x56, 0x5a, 0xa6, 0x3d, 0x4f, 0xb9, 0xba, 0xf5, 0x7a, 0xe3, + 0x4d, 0xe1, 0x44, 0xda, 0xca, 0x4f, 0x99, 0x00, 0xe8, 0x26, 0x35, 0x75, 0xf5, 0xc9, 0xeb, 0xcd, + 0x58, 0xf5, 0xd5, 0x17, 0x73, 0xa1, 0x1a, 0x3a, 0xb5, 0x49, 0xe3, 0x81, 0xcf, 0x23, 0xd5, 0xd3, + 0x0b, 0xb9, 0x07, 0x84, 0x10, 0x8b, 0x10, 0x8f, 0x78, 0x78, 0xc5, 0xef, 0x15, 0xc4, 0x55, 0xf0, + 0xa7, 0xb2, 0x01, 0x2f, 0x82, 0x25, 0xf5, 0xe6, 0x5a, 0x93, 0x9b, 0x3a, 0x75, 0xdc, 0x57, 0x92, + 0x2d, 0xa1, 0x53, 0x16, 0xf0, 0x47, 0x29, 0x9c, 0x6d, 0x90, 0xb9, 0x55, 0xaa, 0x4d, 0x0d, 0x71, + 0x0f, 0xcf, 0xd4, 0x3a, 0x7c, 0x59, 0x6e, 0x09, 0xcc, 0x0c, 0xba, 0xa8, 0x76, 0xd0, 0xda, 0x18, + 0xcd, 0x8a, 0x8e, 0x64, 0x71, 0xc3, 0x3f, 0x57, 0x0a, 0x9a, 0xc4, 0xd5, 0x4b, 0x7d, 0x34, 0x5d, + 0xa2, 0xd2, 0x5b, 0x66, 0x52, 0x6c, 0x8b, 0x33, 0xb6, 0x9b, 0x95, 0xfa, 0x74, 0x51, 0xaa, 0x67, + 0xe8, 0xba, 0xfa, 0xc6, 0x65, 0x8c, 0x09, 0xf7, 0x3c, 0xe5, 0xec, 0x77, 0x67, 0xe5, 0x34, 0x0d, + 0xd4, 0x31, 0x86, 0x4f, 0x3b, 0x71, 0x83, 0xb6, 0x4d, 0x4b, 0x1e, 0x4b, 0x55, 0x6b, 0x60, 0x22, + 0xab, 0x95, 0x11, 0x4b, 0xa8, 0x54, 0xc8, 0xf2, 0xca, 0x7b, 0xb3, 0x8a, 0x74, 0x1a, 0x11, 0x44, + 0xac, 0x72, 0x6f, 0xde, 0x5d, 0x49, 0x0b, 0x8e, 0xbb, 0xa1, 0x30, 0x35, 0x7c, 0xd3, 0xb7, 0xf4, + 0xaf, 0xfd, 0x06, 0x5f, 0xfa, 0x42, 0x85, 0x9f, 0xa1, 0xd3, 0xd3, 0x5c, 0x73, 0xe9, 0x7f, 0x9d, + 0xac, 0x6c, 0xcd, 0x37, 0x1d, 0x3b, 0x35, 0xd1, 0xf5, 0xf1, 0x48, 0xd5, 0xe6, 0xb7, 0x77, 0x7f, + 0xfe, 0xf5, 0x85, 0x8a, 0x46, 0xf1, 0x3c, 0x7f, 0x4b, 0x16, 0xfc, 0x7b, 0x02, 0x8c, 0x48, 0x4f, + 0x54, 0x4d, 0x4f, 0xfd, 0xf9, 0xf3, 0x4f, 0x51, 0x63, 0x61, 0x5a, 0xdb, 0x97, 0xd4, 0x4d, 0x5f, + 0x00, 0x1a, 0x7a, 0x37, 0x9f, 0x7f, 0xfe, 0xc9, 0x73, 0xb5, 0x97, 0xd4, 0xca, 0xb5, 0x6e, 0x09, + 0x89, 0x31, 0x9f, 0x4c, 0x4d, 0xc5, 0xf0, 0x81, 0xd0, 0x64, 0x4d, 0xe0, 0x4c, 0x26, 0x9f, 0x63, + 0xc1, 0x20, 0x72, 0x11, 0xd3, 0x7e, 0x4c, 0x3f, 0x57, 0x3a, 0x06, 0x22, 0x94, 0x47, 0xac, 0x07, + 0x2f, 0x1e, 0xf9, 0x58, 0x71, 0xa5, 0x88, 0xc2, 0xd7, 0x7e, 0xd8, 0xb6, 0xbc, 0x2d, 0x6e, 0xf1, + 0x07, 0x8e, 0x2c, 0x20, 0x7d, 0x46, 0x29, 0x4f, 0x23, 0xa1, 0xdf, 0xf4, 0x87, 0x03, 0xc2, 0x41, + 0x07, 0x77, 0x76, 0xf0, 0x47, 0xb9, 0x33, 0x61, 0x8d, 0x6e, 0xe7, 0x2d, 0x53, 0xde, 0x69, 0xb8, + 0xfd, 0x1e, 0xe0, 0x57, 0xc2, 0x48, 0xb2, 0x9e, 0x65, 0xed, 0x51, 0xd5, 0x5a, 0xe0, 0xa6, 0x8f, + 0x57, 0xf6, 0x61, 0x73, 0x56, 0x99, 0xdb, 0xf9, 0xc1, 0x3b, 0x55, 0x99, 0x5a, 0x43, 0xd2, 0x36, + 0x86, 0x78, 0x6a, 0x13, 0xcb, 0x45, 0x09, 0x76, 0x28, 0x88, 0x8c, 0x8a, 0xc7, 0x60, 0xa8, 0x52, + 0x26, 0x48, 0xcd, 0xf1, 0x4b, 0x0d, 0x69, 0x43, 0xc4, 0x3c, 0x3b, 0xa3, 0x41, 0x27, 0x07, 0xcd, + 0xe1, 0x18, 0x77, 0xd6, 0xf1, 0x22, 0xce, 0xb1, 0x11, 0xea, 0x65, 0x17, 0x9b, 0xf5, 0x30, 0xc3, + 0x03, 0xbc, 0x39, 0x41, 0x45, 0xc1, 0x43, 0xe5, 0xb7, 0x60, 0x51, 0xf1, 0x8c, 0x51, 0xbf, 0x9c, + 0xc3, 0x9d, 0x95, 0x01, 0x39, 0xbc, 0x11, 0x21, 0x49, 0xa3, 0x32, 0xb3, 0x1a, 0xf6, 0x19, 0x0b, + 0x9a, 0x6f, 0x16, 0x39, 0x0f, 0x3e, 0x5a, 0xb9, 0x2e, 0xc9, 0x0d, 0x29, 0x37, 0x60, 0xd7, 0x5a, + 0x16, 0xe3, 0xe7, 0x1a, 0x47, 0x87, 0x22, 0x47, 0x14, 0x61, 0xa3, 0x0a, 0x0c, 0xca, 0x18, 0x89, + 0x37, 0xe4, 0xe1, 0x4e, 0xae, 0x8d, 0x96, 0x73, 0x6e, 0x87, 0x87, 0x75, 0x0f, 0x89, 0x01, 0x5f, + 0xbb, 0x48, 0xe2, 0xce, 0x65, 0xca, 0x63, 0xcc, 0xf2, 0x2c, 0x2a, 0x89, 0x54, 0x91, 0x86, 0xc5, + 0x25, 0xfc, 0x7f, 0x3f, 0x90, 0xf8, 0x11, 0xe2, 0x0f, 0x21, 0x1e, 0xf8, 0x45, 0xc3, 0x1a, 0x43, + 0xda, 0x6c, 0x80, 0xdf, 0x09, 0xdf, 0xab, 0xb8, 0xb3, 0x8b, 0x51, 0x67, 0x2b, 0x78, 0x98, 0x95, + 0x30, 0x37, 0x79, 0x24, 0xb4, 0x50, 0x36, 0x57, 0xb2, 0x8d, 0x76, 0x8b, 0x15, 0x73, 0x02, 0x65, + 0x38, 0x2b, 0x6e, 0x99, 0x6b, 0xac, 0x0d, 0xa6, 0x55, 0x5a, 0xe6, 0x3a, 0xa3, 0x69, 0x4b, 0xe7, + 0xa9, 0xdc, 0x60, 0x37, 0x35, 0x57, 0x82, 0x9f, 0x9b, 0x65, 0x4d, 0x67, 0x55, 0x5f, 0xe4, 0xdc, + 0xb6, 0xb9, 0x59, 0x35, 0xe6, 0xb9, 0xed, 0x60, 0x26, 0xde, 0x37, 0xc5, 0x5c, 0xbe, 0x34, 0xb3, + 0xf4, 0x76, 0x3f, 0x47, 0x55, 0xe7, 0x9c, 0x2e, 0x49, 0x14, 0x95, 0xa5, 0xa8, 0x20, 0xc2, 0xef, + 0x3a, 0x7c, 0x07, 0xc3, 0x6f, 0xde, 0x5f, 0x85, 0x3f, 0x8b, 0xe0, 0x37, 0x72, 0x39, 0x6a, 0x66, + 0xb5, 0xce, 0xe0, 0xb3, 0xd4, 0xbd, 0x38, 0xd9, 0x75, 0x28, 0xb1, 0x5a, 0x74, 0x26, 0xab, 0xcd, + 0x73, 0xbe, 0x9a, 0xd1, 0x26, 0xc3, 0xce, 0xb3, 0x54, 0xdd, 0x19, 0x93, 0x5a, 0xe7, 0x29, 0x5f, + 0xf5, 0xe7, 0x3a, 0xc3, 0x16, 0x86, 0x55, 0xc7, 0x1b, 0x17, 0x3a, 0x59, 0xb5, 0x3a, 0x18, 0x8e, + 0xb5, 0x0d, 0x63, 0x57, 0x15, 0x79, 0xdc, 0xea, 0xec, 0xf2, 0xd5, 0x56, 0xa0, 0x31, 0x9d, 0x6d, + 0xaf, 0x0a, 0xc2, 0x24, 0xb3, 0x41, 0xa6, 0xca, 0x16, 0x35, 0xe0, 0x62, 0x89, 0xd0, 0xef, 0xbf, + 0xfa, 0x03, 0xf0, 0x27, 0x14, 0x85, 0x50, 0xf1, 0x84, 0x9f, 0xc0, 0xcd, 0x92, 0x96, 0x8f, 0xfa, + 0xd8, 0xa3, 0x25, 0xc0, 0xba, 0xe6, 0x6e, 0xce, 0xee, 0xd7, 0x1f, 0x7e, 0xb0, 0x14, 0x66, 0x5b, + 0x52, 0xd4, 0x67, 0x94, 0x14, 0xaa, 0x88, 0x4a, 0xf5, 0xa0, 0x81, 0xb0, 0xaa, 0xf0, 0xb0, 0x0e, + 0x8c, 0xe5, 0x94, 0xef, 0x48, 0x15, 0x61, 0xcb, 0x9b, 0x35, 0x83, 0x57, 0x84, 0x9e, 0xbc, 0x6b, + 0xee, 0xc4, 0x01, 0xc8, 0x24, 0x86, 0xbb, 0x15, 0xa8, 0xc2, 0xbb, 0xb0, 0x13, 0xb8, 0x3a, 0x95, + 0x79, 0xb7, 0x4c, 0xb7, 0x5f, 0x5f, 0x0e, 0x15, 0x80, 0x73, 0x8f, 0x38, 0x71, 0x2b, 0x1a, 0xf5, + 0x99, 0xa2, 0xc8, 0x6e, 0x3d, 0x00, 0xba, 0x34, 0x07, 0x40, 0x76, 0xd1, 0xc5, 0xe6, 0x83, 0x93, + 0x50, 0x0b, 0xb1, 0xa0, 0xaa, 0x9c, 0xdc, 0x11, 0x3a, 0xbc, 0xcc, 0x9a, 0xe2, 0x54, 0x30, 0x87, + 0x3d, 0xbe, 0xcb, 0x77, 0x84, 0xae, 0xbc, 0x2b, 0x77, 0x79, 0x46, 0xdc, 0x69, 0x3b, 0x38, 0x0b, + 0x87, 0x4a, 0xc2, 0x8c, 0x7a, 0x77, 0x66, 0xa2, 0x25, 0xb3, 0xca, 0xba, 0xf0, 0x8e, 0x64, 0xae, + 0x4f, 0xa9, 0xef, 0xfd, 0xba, 0x9f, 0xdc, 0xa7, 0xda, 0xa2, 0x60, 0xfc, 0xfd, 0x59, 0x51, 0x94, + 0xae, 0x17, 0x9e, 0xbf, 0xc6, 0xa3, 0xb2, 0xd4, 0x42, 0xc8, 0xe2, 0xb1, 0xbc, 0xa2, 0x9a, 0xc4, + 0x0f, 0x50, 0x57, 0xcb, 0xa2, 0x21, 0x62, 0x37, 0xa5, 0xdd, 0x3d, 0x6a, 0x15, 0x8b, 0x33, 0xa9, + 0xca, 0xb7, 0xdb, 0x39, 0xf4, 0xb4, 0x8b, 0x04, 0xce, 0x60, 0x15, 0xea, 0x89, 0x2f, 0xbd, 0xe3, + 0xf3, 0x03, 0x92, 0x12, 0xa6, 0x65, 0x4f, 0x18, 0x54, 0x0d, 0x7e, 0x50, 0x9e, 0xca, 0xc0, 0xe6, + 0x1c, 0xcb, 0x06, 0xc3, 0x36, 0xc0, 0x59, 0xd4, 0xb6, 0x39, 0xb6, 0xb6, 0x1d, 0x32, 0xcd, 0x92, + 0x76, 0x8f, 0x7a, 0x5a, 0x46, 0xdc, 0x09, 0xfd, 0xf2, 0x2e, 0xc7, 0x8a, 0x81, 0x98, 0x69, 0xc2, + 0x7b, 0x73, 0x07, 0x63, 0xdc, 0x70, 0x26, 0x18, 0xc3, 0xaa, 0x00, 0x73, 0x85, 0xad, 0x50, 0x29, + 0x77, 0xa4, 0x08, 0x56, 0x91, 0x05, 0x3a, 0x6c, 0xea, 0x5b, 0x8f, 0xe2, 0xa7, 0xa2, 0x5a, 0x61, + 0x9e, 0x4b, 0xe0, 0xb3, 0xee, 0xdb, 0x56, 0x8d, 0x97, 0x98, 0xe2, 0xa8, 0x32, 0x15, 0xbb, 0xed, + 0xad, 0xe7, 0x8a, 0xbd, 0xa9, 0x25, 0x80, 0x63, 0x69, 0x35, 0x36, 0x62, 0x7b, 0x97, 0x1f, 0x56, + 0xd8, 0xa9, 0x22, 0x95, 0xca, 0x7d, 0x5e, 0x41, 0x1d, 0x65, 0x56, 0x46, 0x0a, 0x38, 0x9f, 0x7e, + 0x29, 0x47, 0xf5, 0x90, 0xc4, 0x05, 0xac, 0xd0, 0x95, 0x38, 0xef, 0x5d, 0x9c, 0x05, 0xf9, 0x56, + 0x55, 0xa6, 0x24, 0xde, 0xcb, 0xb5, 0x78, 0x8f, 0x92, 0xaa, 0x72, 0xae, 0xd5, 0x0b, 0xb6, 0x75, + 0xd3, 0x47, 0xfc, 0x54, 0x08, 0xea, 0xdd, 0x79, 0x40, 0xf5, 0x2d, 0xbe, 0xb5, 0x5b, 0xda, 0x8d, + 0x6d, 0x71, 0x25, 0x95, 0x87, 0xf9, 0x06, 0x17, 0xe4, 0x95, 0x39, 0x5a, 0x35, 0xb6, 0xcf, 0x76, + 0x6b, 0xe6, 0xf3, 0x2c, 0xa6, 0xbb, 0x50, 0x02, 0x7e, 0xb5, 0x88, 0xb9, 0x07, 0xc1, 0xc9, 0x60, + 0x9a, 0xf2, 0x5d, 0xb1, 0x23, 0x6e, 0xb4, 0x7e, 0x79, 0x93, 0x63, 0xcb, 0x9b, 0xa1, 0x52, 0x46, + 0x5a, 0x0b, 0x49, 0x1a, 0xc8, 0x86, 0x60, 0x37, 0x0c, 0xde, 0xae, 0xcd, 0x64, 0x3a, 0x3a, 0x7b, + 0xb6, 0x0c, 0xb4, 0xda, 0x9f, 0x77, 0x26, 0x6e, 0x13, 0x34, 0xb1, 0x91, 0xe9, 0xf7, 0x15, 0x2f, + 0x37, 0xa9, 0x74, 0xe6, 0x33, 0xce, 0x98, 0xeb, 0xd5, 0x85, 0x55, 0xe9, 0x28, 0xac, 0xd4, 0x91, + 0xdf, 0x96, 0xd5, 0x69, 0xae, 0xc6, 0x99, 0xe2, 0x5b, 0xa5, 0x53, 0x2c, 0xc2, 0x59, 0x86, 0x65, + 0x86, 0xcf, 0x36, 0x67, 0xb9, 0xfb, 0xe6, 0x6c, 0xdc, 0x29, 0x6f, 0x8c, 0xa2, 0x08, 0xbc, 0x21, + 0xbc, 0x66, 0x68, 0x55, 0xe0, 0xca, 0x75, 0x38, 0x8f, 0x27, 0xf3, 0x4a, 0x45, 0xed, 0xe4, 0xf4, + 0xea, 0x34, 0xbf, 0xec, 0xcc, 0x15, 0xa9, 0xc1, 0xcd, 0x97, 0x5d, 0x93, 0x37, 0x2a, 0xb3, 0x60, + 0xa9, 0xf3, 0xc3, 0x78, 0x6d, 0x04, 0x2b, 0x5f, 0xd1, 0xb9, 0x79, 0xcc, 0x6f, 0x9a, 0x2a, 0x0c, + 0x4b, 0x33, 0xd4, 0x50, 0x11, 0x9f, 0x43, 0x7d, 0x6c, 0xe2, 0x3a, 0x9a, 0x8e, 0xa4, 0x22, 0x5b, + 0x32, 0xf8, 0x35, 0x92, 0x72, 0x6c, 0x29, 0xe0, 0x5b, 0xa8, 0xeb, 0xb1, 0x20, 0x9f, 0x6b, 0xd4, + 0x05, 0x9e, 0x07, 0x5a, 0xa5, 0x66, 0x16, 0xd9, 0xda, 0x6c, 0x48, 0xe1, 0x76, 0xb3, 0x27, 0x65, + 0x9a, 0x5b, 0x6d, 0x85, 0x7a, 0x45, 0xb6, 0x6d, 0xf0, 0x13, 0xd4, 0xcb, 0xb1, 0xed, 0x80, 0x07, + 0x99, 0xf0, 0x58, 0x71, 0x3a, 0x9c, 0xa0, 0x0e, 0xd0, 0x61, 0xa7, 0x65, 0x30, 0xcf, 0xcb, 0x06, + 0xc8, 0x4e, 0x87, 0xd0, 0xa5, 0xc2, 0x06, 0xf2, 0xb6, 0x09, 0xf4, 0xaa, 0x99, 0xa2, 0xc9, 0x82, + 0x6c, 0x95, 0x0d, 0x71, 0xa3, 0x48, 0xc3, 0x12, 0x5b, 0x16, 0x4a, 0xa5, 0x60, 0xbc, 0x28, 0x6d, + 0xc5, 0x1e, 0xec, 0xdd, 0xe0, 0xea, 0x92, 0xc0, 0x05, 0xbc, 0xc4, 0x6f, 0x05, 0xe9, 0xcd, 0xd0, + 0x5a, 0x78, 0x1c, 0x05, 0xca, 0x00, 0x19, 0x3c, 0x87, 0x94, 0x61, 0x05, 0x05, 0x9d, 0x2e, 0x0a, + 0x8a, 0xd5, 0x37, 0xa3, 0x38, 0xe3, 0x83, 0x22, 0xcb, 0x05, 0xe6, 0x9c, 0x43, 0x1e, 0xcb, 0xb3, + 0xa2, 0xc9, 0x57, 0x86, 0xd5, 0x92, 0x81, 0xc7, 0xc5, 0xb2, 0x12, 0x08, 0x2c, 0x92, 0xaa, 0xf7, + 0xbb, 0xdd, 0xf3, 0xa8, 0xbf, 0x2b, 0x52, 0x7d, 0xc6, 0x63, 0x2b, 0x00, 0xb6, 0x14, 0xe8, 0x4d, + 0xc0, 0x05, 0xb6, 0x81, 0x97, 0x4a, 0x20, 0x70, 0x86, 0x23, 0x8c, 0x90, 0x21, 0x97, 0xb8, 0x39, + 0xc7, 0x4a, 0x78, 0xac, 0xc8, 0x77, 0x90, 0x23, 0x43, 0xbf, 0xcc, 0xcd, 0xff, 0xe6, 0x7c, 0xbb, + 0x36, 0x6a, 0xc7, 0xfb, 0x61, 0x15, 0x0b, 0x90, 0x4b, 0xe5, 0xa4, 0x12, 0x23, 0x89, 0x0a, 0x62, + 0x73, 0xe0, 0x9a, 0xd8, 0x2e, 0x96, 0x2b, 0x71, 0x0a, 0x34, 0xef, 0x80, 0x5c, 0x75, 0x45, 0x3a, + 0xd2, 0x2b, 0xd0, 0x9b, 0x50, 0xb6, 0x70, 0x5f, 0x24, 0x3b, 0x3b, 0x7e, 0x23, 0x0f, 0xd8, 0xad, + 0x56, 0xad, 0xed, 0x34, 0x06, 0xe4, 0x0d, 0x74, 0x6f, 0xb8, 0x03, 0x1a, 0x83, 0x1c, 0x0e, 0xab, + 0x68, 0xb7, 0xd7, 0xd3, 0x59, 0x93, 0x03, 0x7e, 0x80, 0x8e, 0x82, 0x5c, 0xc2, 0xf9, 0xf9, 0x2a, + 0x8b, 0xfb, 0x62, 0x3d, 0x0d, 0x04, 0xd4, 0x9e, 0x0d, 0xb3, 0x72, 0x47, 0x1b, 0x2a, 0x53, 0xd4, + 0x69, 0x99, 0x9a, 0x0d, 0xf2, 0x6f, 0xd7, 0x76, 0x0e, 0x84, 0x85, 0xc3, 0x58, 0xde, 0xdc, 0x79, + 0x6f, 0x0b, 0xe6, 0x65, 0xdb, 0xa9, 0x72, 0x12, 0x05, 0xe3, 0x54, 0x8d, 0x0d, 0xdc, 0xa1, 0xf2, + 0xa6, 0x18, 0x9c, 0x64, 0x29, 0x20, 0x6b, 0xaa, 0xfc, 0x56, 0x96, 0xcb, 0xc0, 0xca, 0x05, 0xc8, + 0xaf, 0x25, 0x5b, 0x35, 0x81, 0x55, 0x94, 0x05, 0xcf, 0xa9, 0x1b, 0x63, 0x20, 0xc3, 0x3e, 0x6d, + 0x33, 0x82, 0xc9, 0x46, 0x7b, 0x94, 0x72, 0x99, 0x26, 0xc3, 0x0f, 0x2a, 0xed, 0xfc, 0x6e, 0xf6, + 0xc6, 0x17, 0x0d, 0x01, 0x15, 0xe7, 0x43, 0xba, 0xd9, 0xe4, 0x78, 0xaf, 0xbd, 0x2b, 0x7a, 0x42, + 0x4f, 0x6a, 0xa2, 0x99, 0x16, 0xc1, 0x29, 0xc7, 0xba, 0x10, 0xeb, 0xc6, 0x54, 0xb1, 0xfa, 0xa8, + 0xc6, 0xc9, 0xc4, 0xce, 0x2b, 0x93, 0x7b, 0x05, 0x15, 0x3c, 0xae, 0x10, 0x80, 0xbf, 0xe6, 0x70, + 0xc8, 0xc3, 0x6f, 0x3f, 0xa0, 0x93, 0x3b, 0x7e, 0xab, 0x65, 0x1b, 0x01, 0x0f, 0x32, 0xa8, 0x55, + 0x9b, 0x40, 0x87, 0x3e, 0x9f, 0x6f, 0x8d, 0x39, 0xde, 0x14, 0xcc, 0x32, 0xdd, 0x9b, 0xe7, 0x87, + 0x7d, 0x99, 0x49, 0xb4, 0x99, 0x37, 0x9f, 0xbb, 0x9f, 0xd0, 0x56, 0xad, 0x4b, 0x2f, 0x8b, 0x6b, + 0x1f, 0x35, 0xdc, 0xfd, 0xbc, 0xd3, 0x75, 0x51, 0x9b, 0x52, 0x06, 0x2d, 0xb3, 0x03, 0xd4, 0x9a, + 0xd6, 0xeb, 0xbb, 0x3e, 0x1d, 0xf2, 0x3b, 0x2f, 0x03, 0xbf, 0x1b, 0x2e, 0xf6, 0x34, 0x75, 0x89, + 0x04, 0x8f, 0x56, 0xc4, 0x43, 0xcc, 0xa3, 0x1d, 0xe6, 0x19, 0xe8, 0x4d, 0x16, 0xfc, 0xca, 0xb4, + 0xd9, 0x13, 0x15, 0xa1, 0x23, 0xcf, 0xd8, 0x88, 0xf7, 0x20, 0xff, 0x16, 0xbf, 0x15, 0x6d, 0x21, + 0xd0, 0x66, 0xfc, 0x4e, 0x2c, 0x89, 0x5b, 0x8d, 0xab, 0x75, 0xb9, 0x32, 0xd3, 0xcb, 0xbe, 0xd5, + 0x79, 0x34, 0x50, 0x3a, 0xd2, 0xa6, 0x6a, 0xe6, 0xf9, 0xf2, 0x24, 0x37, 0x47, 0xdd, 0x65, 0x1f, + 0x7e, 0x9f, 0xb9, 0x0d, 0x92, 0x6a, 0xa0, 0xeb, 0x55, 0xc8, 0x16, 0x06, 0x22, 0xab, 0x88, 0xa2, + 0x17, 0x28, 0x1a, 0xab, 0x8c, 0x72, 0xcb, 0xf2, 0x5a, 0xd1, 0xcb, 0xcc, 0x2c, 0xdb, 0x6f, 0xf4, + 0x05, 0xba, 0x36, 0x37, 0xa6, 0x62, 0x56, 0x02, 0x8f, 0xf1, 0xd6, 0x57, 0xba, 0xc3, 0x79, 0x4d, + 0x1e, 0x4e, 0x05, 0xd0, 0xd1, 0xd1, 0x24, 0x87, 0x80, 0x37, 0x1c, 0x6a, 0x3f, 0xf5, 0x57, 0xc4, + 0x48, 0x88, 0xa8, 0x8e, 0x65, 0xf7, 0x19, 0x44, 0x1a, 0xa1, 0x11, 0xf8, 0x58, 0x24, 0x05, 0x49, + 0xbf, 0xa0, 0x55, 0x22, 0xbf, 0x30, 0x13, 0xcc, 0x50, 0xee, 0x6a, 0x60, 0xff, 0xf0, 0x99, 0x9a, + 0xd3, 0xa4, 0xdd, 0x3b, 0x93, 0x49, 0x39, 0xe2, 0x59, 0x2f, 0x92, 0x61, 0x58, 0x8f, 0xfd, 0xc9, + 0x90, 0x43, 0x65, 0xb6, 0xd6, 0x1d, 0x38, 0xeb, 0xc6, 0xc6, 0x1b, 0x81, 0x4d, 0x2e, 0x74, 0x65, + 0x4b, 0x92, 0x79, 0xab, 0xa6, 0x9b, 0xc5, 0x75, 0x65, 0xe3, 0xad, 0x1b, 0xd9, 0x65, 0xad, 0xab, + 0x20, 0xaf, 0xb6, 0xd5, 0x0a, 0xa0, 0x6c, 0x12, 0xdf, 0x73, 0xec, 0xda, 0x36, 0x38, 0x6d, 0x33, + 0x5d, 0xda, 0x63, 0x9a, 0xb2, 0xdf, 0x40, 0x0e, 0x02, 0xb9, 0x96, 0x9f, 0x5a, 0xf4, 0x5b, 0xa5, + 0xb5, 0xf3, 0x95, 0xd0, 0x16, 0x26, 0xdb, 0xb3, 0xe7, 0xc2, 0xe6, 0x44, 0x17, 0xd8, 0x93, 0x36, + 0x2a, 0x2b, 0xdd, 0x9d, 0x1c, 0xc1, 0xf4, 0xe2, 0x20, 0x23, 0xe6, 0x2f, 0xc9, 0x0d, 0x1a, 0x06, + 0x8e, 0x0f, 0x31, 0x71, 0x78, 0x13, 0x78, 0x68, 0x03, 0x0d, 0x76, 0x7b, 0xdd, 0xc6, 0x34, 0xda, + 0x62, 0x1d, 0x94, 0x63, 0x1d, 0xb7, 0x9a, 0x01, 0x5f, 0xad, 0x05, 0xc4, 0x37, 0x86, 0xb2, 0x6a, + 0x12, 0x1d, 0xb5, 0xcf, 0x7c, 0xc7, 0x4c, 0xb3, 0x81, 0x66, 0x31, 0x7d, 0xb2, 0x60, 0x5f, 0xb7, + 0xe5, 0x29, 0xcd, 0x42, 0xfc, 0xa1, 0xd4, 0x36, 0x35, 0xad, 0xc6, 0x0c, 0x7d, 0xa0, 0x8f, 0xa0, + 0x6f, 0x73, 0xeb, 0x2a, 0x3b, 0x6e, 0x88, 0x55, 0xba, 0xca, 0x45, 0xf8, 0x53, 0xe6, 0x3c, 0x8b, + 0xd6, 0x52, 0x66, 0xb6, 0xf5, 0x75, 0xd1, 0xda, 0xd3, 0xf5, 0x4d, 0xee, 0xc9, 0x3d, 0xd3, 0x70, + 0x44, 0x9e, 0xe5, 0x0b, 0x40, 0x37, 0xaf, 0xd2, 0x2d, 0xf6, 0x25, 0x6c, 0x5f, 0x77, 0x4a, 0x03, + 0x19, 0xe5, 0x0c, 0xbb, 0x7b, 0xab, 0xa3, 0xa9, 0x2c, 0xb0, 0x4c, 0xd0, 0x2e, 0x81, 0x4e, 0x2b, + 0x3d, 0xef, 0xa9, 0x33, 0xdb, 0x2c, 0xea, 0x03, 0xba, 0x5b, 0xdb, 0xc8, 0x11, 0xad, 0x59, 0xa6, + 0xb9, 0xa6, 0xc5, 0x66, 0xae, 0xd8, 0xe1, 0xf7, 0x73, 0x9e, 0xfd, 0x7a, 0xa7, 0xdb, 0x28, 0x9b, + 0xc5, 0xb7, 0x06, 0xa7, 0xd9, 0xad, 0x29, 0x2f, 0x95, 0xd0, 0x92, 0x03, 0xa9, 0x6c, 0x34, 0x25, + 0x80, 0x9f, 0x11, 0x59, 0xa0, 0x63, 0x35, 0xf4, 0x3f, 0x9c, 0x4b, 0x65, 0xbc, 0x92, 0x42, 0xec, + 0xe1, 0x1c, 0x89, 0xc6, 0x49, 0xbc, 0x11, 0xd2, 0xf0, 0x20, 0x3b, 0x1b, 0xd9, 0x6e, 0x6e, 0xe4, + 0x4e, 0x13, 0xeb, 0x6f, 0x37, 0xa1, 0xdf, 0x33, 0x6d, 0x00, 0xf4, 0x51, 0xca, 0x6c, 0x48, 0x6b, + 0xf0, 0x6b, 0xd5, 0xf6, 0x2c, 0x3f, 0xae, 0x6c, 0x1c, 0xad, 0xd2, 0xcb, 0x01, 0xfe, 0x92, 0xdc, + 0x31, 0x73, 0xeb, 0xa6, 0xba, 0x72, 0xdf, 0x0b, 0xfe, 0xc5, 0x31, 0xb4, 0x94, 0x21, 0x0e, 0xa1, + 0xef, 0xdb, 0x73, 0x6d, 0x3b, 0xe0, 0x0c, 0xaa, 0x32, 0xa3, 0x8d, 0x66, 0xb7, 0xb8, 0xea, 0x4c, + 0x25, 0xd9, 0xa8, 0xaf, 0xde, 0x8d, 0x76, 0xc6, 0x25, 0xef, 0x2c, 0xa4, 0x4d, 0xbd, 0xdc, 0x7d, + 0x67, 0x57, 0xd3, 0xea, 0xa5, 0xa2, 0xda, 0xee, 0x22, 0xa6, 0xb1, 0xcd, 0x57, 0xca, 0x38, 0xc8, + 0x32, 0x78, 0x1c, 0x5e, 0x96, 0x70, 0x86, 0x85, 0xed, 0x14, 0x1b, 0xc6, 0x8f, 0x2c, 0x48, 0x41, + 0x47, 0xc0, 0xf1, 0x62, 0xdf, 0x47, 0x10, 0xa1, 0xe1, 0x38, 0x93, 0xc2, 0x13, 0xa9, 0x30, 0x1b, + 0x62, 0x89, 0x24, 0x05, 0x38, 0xe2, 0xc2, 0xc1, 0x29, 0xce, 0xae, 0xf8, 0x1d, 0x8e, 0x35, 0xf8, + 0x00, 0x4b, 0x33, 0xd8, 0xc3, 0x37, 0x99, 0x55, 0x83, 0x1a, 0x9e, 0x0f, 0x7a, 0x89, 0xe3, 0x5e, + 0x88, 0xfb, 0x48, 0xf0, 0xca, 0x0e, 0xa8, 0xbc, 0x86, 0xe3, 0xb5, 0x25, 0xd6, 0x53, 0x48, 0x59, + 0x1a, 0x38, 0xd8, 0x03, 0xe2, 0x5a, 0x88, 0xcb, 0xa1, 0x9e, 0x44, 0xfc, 0x79, 0x99, 0xef, 0x14, + 0x59, 0xb6, 0xc3, 0x0f, 0x6a, 0x1b, 0xde, 0x42, 0x7b, 0x39, 0xd4, 0x14, 0xa2, 0xb7, 0x5b, 0x11, + 0x7f, 0x2e, 0x61, 0x9a, 0xb3, 0x58, 0x2e, 0x77, 0x62, 0xaf, 0x49, 0xf4, 0x52, 0xc6, 0x34, 0x67, + 0x63, 0x7b, 0xca, 0xee, 0xe4, 0xcc, 0xa9, 0x2e, 0xd7, 0x76, 0xf2, 0x3e, 0x16, 0x42, 0x26, 0x73, + 0x4f, 0x05, 0x1c, 0x37, 0x59, 0x17, 0x11, 0xb8, 0x44, 0x16, 0x35, 0x87, 0x2b, 0xa5, 0x2b, 0x3e, + 0x8b, 0xd5, 0x26, 0xca, 0x4d, 0x83, 0x39, 0xab, 0x68, 0x55, 0xb1, 0xab, 0x09, 0x6c, 0x57, 0xd2, + 0xda, 0x5d, 0x6d, 0xc3, 0x32, 0x63, 0xbe, 0xdd, 0x6d, 0x2a, 0x8d, 0x39, 0xbb, 0x03, 0x0b, 0x93, + 0xaf, 0x4e, 0x19, 0xbb, 0x33, 0x7f, 0x93, 0xda, 0xbb, 0x61, 0x46, 0x66, 0x41, 0x5f, 0xa6, 0x63, + 0xa9, 0x09, 0x31, 0x86, 0xcc, 0xbf, 0x55, 0xde, 0x36, 0xb4, 0x8e, 0xde, 0xf2, 0x7a, 0x00, 0x69, + 0xd7, 0xd0, 0x7a, 0x82, 0x8c, 0x95, 0x85, 0x68, 0xa4, 0x00, 0x24, 0x2b, 0x77, 0x0f, 0xf0, 0x74, + 0x56, 0x60, 0xe4, 0x95, 0x54, 0x15, 0x03, 0xca, 0xd3, 0x56, 0x0a, 0x27, 0x91, 0xbd, 0xa9, 0x15, + 0xff, 0x0c, 0x3e, 0x0c, 0xfc, 0xbf, 0xb6, 0xa9, 0x05, 0xe5, 0xba, 0x4c, 0x5b, 0x75, 0xad, 0x2b, + 0xcf, 0x39, 0x45, 0x13, 0x60, 0xcf, 0x51, 0xab, 0xb7, 0x64, 0xa5, 0x9e, 0x93, 0xef, 0xc3, 0x1e, + 0x5c, 0x59, 0xab, 0xd5, 0x38, 0x65, 0xd3, 0x9d, 0x5b, 0x3d, 0xa2, 0xdf, 0x40, 0x7b, 0xea, 0xde, + 0x03, 0xfa, 0xd6, 0x15, 0xcc, 0xa2, 0xaa, 0x81, 0xde, 0x51, 0xc9, 0x40, 0x9d, 0x30, 0x2e, 0xee, + 0x97, 0x0f, 0xb1, 0x3b, 0xc3, 0x43, 0x1c, 0x24, 0x6e, 0x79, 0x36, 0xf2, 0xcb, 0xd9, 0x5a, 0xa8, + 0xc3, 0x10, 0x13, 0x6b, 0x27, 0x71, 0x8e, 0x1c, 0xda, 0x00, 0x53, 0xab, 0x56, 0xb1, 0xcc, 0x86, + 0xbe, 0xbb, 0x5f, 0x26, 0x39, 0x86, 0xb0, 0xc0, 0xf1, 0x94, 0x18, 0x34, 0x95, 0x5a, 0x49, 0xd8, + 0xd6, 0xda, 0x4c, 0x9f, 0xbc, 0xa3, 0xfa, 0x3b, 0x35, 0x19, 0x5a, 0x35, 0x73, 0x68, 0xb5, 0xa1, + 0x2d, 0xce, 0x1a, 0x9b, 0x4e, 0xa6, 0x33, 0xef, 0xd0, 0xe3, 0xf9, 0x1b, 0x04, 0x6e, 0xe2, 0x0c, + 0xf7, 0x05, 0x64, 0xdc, 0xef, 0x42, 0x3e, 0x60, 0x8a, 0x33, 0xe8, 0x9b, 0x81, 0x4c, 0x43, 0x7e, + 0x92, 0x43, 0x90, 0x9f, 0x6c, 0x05, 0xf0, 0x77, 0xc2, 0xae, 0xf1, 0xfc, 0x6c, 0xbe, 0xe9, 0x62, + 0xaf, 0x3c, 0xa9, 0xf5, 0x82, 0xcd, 0x64, 0x5e, 0xe3, 0x26, 0xbd, 0x5a, 0xe5, 0x8d, 0x1f, 0x57, + 0x21, 0xe0, 0xac, 0x02, 0xcc, 0x8a, 0x38, 0xc8, 0x73, 0x92, 0x4d, 0x6f, 0xdb, 0x5c, 0x34, 0x4f, + 0xe2, 0xeb, 0x31, 0x3c, 0x80, 0x43, 0xfc, 0xc1, 0x3b, 0x45, 0xb9, 0x88, 0x16, 0x39, 0x23, 0xc0, + 0x42, 0x47, 0x83, 0xdd, 0xc3, 0xf9, 0x95, 0x14, 0xe6, 0x00, 0xf1, 0x39, 0x3a, 0x07, 0x9f, 0x2c, + 0xec, 0xa4, 0xc8, 0xbe, 0x89, 0x4c, 0xb9, 0x77, 0x21, 0x4e, 0xd9, 0xf5, 0xdd, 0xa6, 0xa9, 0x2d, + 0x9a, 0x3b, 0x2c, 0x53, 0x6a, 0x4d, 0x1f, 0x2c, 0xe8, 0x66, 0x49, 0xc9, 0xd7, 0xb7, 0xab, 0xde, + 0x30, 0xd3, 0x0c, 0x14, 0x9a, 0x69, 0x6a, 0x5b, 0x7e, 0xaa, 0x43, 0xcc, 0x22, 0xcf, 0xb4, 0x6c, + 0x7b, 0x6e, 0x44, 0x73, 0x87, 0x99, 0x5a, 0x20, 0x3c, 0x35, 0x7b, 0x5d, 0x1a, 0xd6, 0xd4, 0xb4, + 0x4a, 0x73, 0x36, 0x87, 0xbc, 0x41, 0x9f, 0x08, 0x53, 0x61, 0xd0, 0x6c, 0xf6, 0x14, 0xed, 0xbe, + 0xb9, 0x1b, 0x77, 0x2b, 0xec, 0x38, 0x4f, 0xec, 0x8d, 0x54, 0x02, 0x3e, 0xca, 0x90, 0xdf, 0xd5, + 0xdc, 0xb0, 0x8e, 0x03, 0xb9, 0x1d, 0xe8, 0x19, 0xf6, 0xbd, 0x7c, 0x0f, 0xde, 0x25, 0xd1, 0xa5, + 0x02, 0xb6, 0x8f, 0xf3, 0x63, 0x54, 0x1e, 0xe2, 0x9a, 0x9b, 0xb2, 0xff, 0x8c, 0xf5, 0x8e, 0xfc, + 0x0c, 0x21, 0xfe, 0x80, 0xf3, 0xe7, 0x10, 0x67, 0x49, 0x58, 0xdf, 0x78, 0xac, 0x6f, 0x53, 0x1c, + 0x87, 0x60, 0x3f, 0xd9, 0xdc, 0xe1, 0xfc, 0x4d, 0x84, 0xfc, 0x0d, 0xce, 0xd7, 0x13, 0x19, 0x14, + 0xbe, 0x2b, 0x2c, 0xee, 0x97, 0x34, 0x32, 0xd6, 0x84, 0xd8, 0x16, 0xfc, 0xfc, 0x14, 0x68, 0xc4, + 0xe0, 0x77, 0x1e, 0xf6, 0x2f, 0x77, 0xcb, 0x8a, 0x21, 0xb0, 0x7d, 0xc8, 0x89, 0xdc, 0x3a, 0xf3, + 0xd6, 0x37, 0xf8, 0x8d, 0x88, 0x45, 0x89, 0x31, 0x6a, 0x0a, 0xa5, 0x7a, 0x9c, 0x32, 0xc9, 0xb8, + 0xc8, 0x1a, 0x3c, 0xbf, 0x67, 0xbc, 0xf7, 0x77, 0xd3, 0xe9, 0xd7, 0xa7, 0x43, 0x16, 0xfc, 0xf4, + 0xfb, 0xbb, 0x83, 0xde, 0x6b, 0x96, 0x83, 0x7f, 0x01, 0xcf, 0x37, 0xc8, 0x0d, 0x97, 0x7d, 0x05, + 0xec, 0x90, 0x62, 0x0d, 0x43, 0xf9, 0x05, 0xff, 0x04, 0xf6, 0xc1, 0xc5, 0xc6, 0xa1, 0x85, 0x91, + 0x2d, 0x83, 0x19, 0x42, 0x17, 0xf3, 0xba, 0xbd, 0xff, 0x06, 0x19, 0x0c, 0xfd, 0xf7, 0x0c, 0xf2, + 0x9d, 0x59, 0x18, 0x37, 0x42, 0x5f, 0xcc, 0x43, 0x33, 0x9a, 0xbf, 0xb7, 0xb7, 0x7c, 0x2c, 0xb7, + 0x31, 0xff, 0xbb, 0xc7, 0x6d, 0x3c, 0x5e, 0xdb, 0xe2, 0x3c, 0x42, 0x04, 0xdf, 0x3e, 0x6d, 0xf5, + 0x6c, 0x09, 0x74, 0x46, 0x98, 0x8e, 0x21, 0x6e, 0xea, 0x97, 0xad, 0x66, 0xa2, 0xdd, 0xec, 0xcb, + 0x1a, 0xe4, 0x81, 0x34, 0xe4, 0x80, 0x91, 0x9d, 0xa5, 0x8f, 0xdb, 0x59, 0xd6, 0x59, 0xd4, 0xe0, + 0x33, 0x38, 0xb2, 0xfb, 0xd5, 0xc6, 0xb3, 0x6a, 0x1d, 0x4f, 0xad, 0x99, 0x6f, 0x4f, 0xdd, 0xac, + 0xac, 0xa2, 0x91, 0xa4, 0x8e, 0x65, 0x88, 0x0b, 0xb7, 0x31, 0xec, 0xd3, 0xbd, 0xa2, 0xf6, 0x9a, + 0x46, 0x95, 0xa9, 0x3f, 0x06, 0x3f, 0x50, 0xed, 0xec, 0x72, 0xf7, 0x03, 0x80, 0x71, 0xda, 0x06, + 0x36, 0x5b, 0xe0, 0x23, 0xa2, 0xbd, 0xe4, 0x51, 0xc5, 0x1c, 0x2e, 0x2a, 0x53, 0xcf, 0xa2, 0x56, + 0x4b, 0x59, 0x82, 0x68, 0x29, 0x94, 0x27, 0xb0, 0xe1, 0x79, 0x2c, 0x4f, 0x38, 0xbe, 0x13, 0xae, + 0xc5, 0xa1, 0x87, 0x78, 0x68, 0xb6, 0xf7, 0xfd, 0x24, 0x36, 0x00, 0x3b, 0x36, 0x84, 0xf8, 0x91, + 0x06, 0x7a, 0x99, 0xc2, 0xa0, 0xd3, 0xea, 0x59, 0x86, 0x29, 0xb1, 0x79, 0xb0, 0xb1, 0xe3, 0x36, + 0xc4, 0x55, 0x83, 0xf2, 0xbc, 0x98, 0x6d, 0xd2, 0xbc, 0x2e, 0x71, 0xc2, 0xf9, 0x99, 0x0c, 0xa7, + 0x5e, 0xe6, 0x0c, 0x5b, 0x9d, 0x97, 0xd9, 0x2e, 0x3f, 0x65, 0xa5, 0xbe, 0x63, 0xd7, 0x59, 0xa9, + 0xce, 0x11, 0x9f, 0x02, 0x3e, 0x88, 0xcd, 0x52, 0x03, 0xa9, 0x3d, 0x43, 0x5b, 0x11, 0x95, 0x20, + 0x0e, 0xc5, 0x76, 0x0b, 0xf0, 0x1b, 0xb0, 0x1b, 0x88, 0x2f, 0xb7, 0xda, 0xac, 0xd9, 0xd5, 0xb2, + 0x20, 0x97, 0xd9, 0xf2, 0x4e, 0x64, 0x3f, 0xc4, 0xe3, 0x0b, 0x36, 0x6a, 0xe6, 0x3c, 0x09, 0x90, + 0x4a, 0x08, 0xf1, 0x3b, 0xf5, 0xee, 0xc5, 0xbe, 0x50, 0x2e, 0xf3, 0xc3, 0x55, 0x03, 0xe2, 0xa5, + 0xe3, 0xb6, 0x12, 0xdb, 0x99, 0x79, 0x27, 0xa8, 0x36, 0x93, 0x6b, 0xe1, 0xfd, 0xf9, 0x3d, 0xf6, + 0xd3, 0x3d, 0x79, 0xdd, 0x98, 0x0f, 0x65, 0xbc, 0xee, 0xa8, 0x8d, 0x2a, 0xee, 0xc1, 0x56, 0x49, + 0x20, 0xdf, 0x1c, 0xc2, 0xf5, 0x1a, 0x03, 0xe1, 0x7a, 0x85, 0x81, 0x9a, 0xa4, 0x4c, 0x1e, 0x5c, + 0x93, 0x6f, 0x17, 0x75, 0x49, 0x0d, 0x22, 0xf4, 0x59, 0xe1, 0x59, 0x4e, 0x73, 0x84, 0x92, 0x38, + 0xdb, 0xd7, 0x2d, 0xe0, 0xec, 0xc3, 0xec, 0x49, 0x7b, 0x77, 0xd2, 0x1e, 0x9c, 0xb4, 0x71, 0xec, + 0x1a, 0xe6, 0x44, 0x53, 0xbe, 0xd3, 0xea, 0x42, 0xfc, 0xc8, 0x07, 0x6a, 0xcd, 0x98, 0x57, 0x39, + 0x34, 0xb7, 0x2a, 0x4c, 0x3c, 0x16, 0xe6, 0x4f, 0x8b, 0xbd, 0xfc, 0xaa, 0x6a, 0x65, 0x2b, 0x87, + 0xf2, 0xb6, 0x46, 0xd0, 0x1e, 0x92, 0xf6, 0xe2, 0x20, 0x7f, 0x5c, 0xc0, 0x7a, 0xa3, 0x41, 0x29, + 0x47, 0x75, 0xe2, 0xbc, 0x0a, 0x64, 0xb2, 0xc4, 0x0e, 0x05, 0xae, 0x33, 0x14, 0x61, 0xee, 0x49, + 0x0d, 0xe1, 0xe9, 0xde, 0xe0, 0x40, 0x66, 0x09, 0x4c, 0xcf, 0x7a, 0xdf, 0x1e, 0xe4, 0x37, 0xdc, + 0x0f, 0xc3, 0xef, 0xbb, 0xf0, 0x39, 0x94, 0xed, 0xad, 0x1c, 0xd5, 0x03, 0x42, 0x7a, 0x8e, 0x51, + 0x9d, 0xc6, 0xf5, 0xd8, 0x12, 0xb6, 0x67, 0x01, 0xae, 0x1b, 0x81, 0x1d, 0x93, 0x34, 0x1b, 0xe8, + 0xb3, 0xad, 0x06, 0x7c, 0xbf, 0x0c, 0xa1, 0x4d, 0xa6, 0x5e, 0xba, 0xaf, 0xd7, 0x11, 0xf7, 0xcc, + 0x17, 0x8c, 0x9e, 0x11, 0xcc, 0x4a, 0x7d, 0x49, 0x1c, 0xa2, 0xea, 0xd0, 0x69, 0xe7, 0x1c, 0x07, + 0x55, 0xe8, 0xde, 0x3b, 0xdb, 0x2a, 0xa1, 0xcd, 0xbc, 0xd4, 0x15, 0xc3, 0x50, 0xb9, 0xbb, 0xa6, + 0x2c, 0xa9, 0xa1, 0xa0, 0x95, 0x47, 0x4a, 0xab, 0xa8, 0xcb, 0x97, 0x44, 0x88, 0x6f, 0x84, 0x0d, + 0xcf, 0xd6, 0x83, 0xca, 0xfb, 0xfb, 0xbb, 0x7b, 0xcf, 0x38, 0x88, 0x2b, 0x50, 0x85, 0x77, 0x88, + 0x73, 0x20, 0x74, 0xaa, 0xf6, 0x43, 0xa4, 0xe6, 0xc8, 0x68, 0x3f, 0x63, 0x7b, 0x5b, 0x2a, 0x93, + 0xfa, 0xa2, 0x86, 0x9f, 0x7b, 0x8c, 0x10, 0x5b, 0x44, 0x42, 0x80, 0x6c, 0xc4, 0x79, 0xa4, 0x72, + 0xcb, 0xf6, 0xc0, 0xbe, 0x76, 0xc0, 0xee, 0x6e, 0x64, 0x0b, 0xfc, 0xef, 0x13, 0x82, 0x3c, 0x8a, + 0xc7, 0xf9, 0x54, 0xe8, 0x8b, 0x2c, 0x9c, 0x63, 0x40, 0x0c, 0xd6, 0x11, 0x61, 0x3f, 0x6c, 0x8f, + 0xd1, 0x61, 0x7e, 0x09, 0xda, 0x10, 0x6b, 0xd6, 0x21, 0x36, 0x7b, 0x53, 0x28, 0x09, 0x6d, 0x85, + 0x02, 0x8e, 0x13, 0xbd, 0x99, 0x68, 0xd4, 0x5d, 0x61, 0x07, 0xf6, 0xf7, 0x1d, 0x72, 0x2b, 0x6c, + 0x4b, 0x03, 0x88, 0xc5, 0x2c, 0x88, 0xe0, 0x7a, 0x35, 0x98, 0x2b, 0x03, 0xaf, 0x15, 0xe5, 0x7d, + 0x2b, 0x6e, 0xc1, 0x36, 0xbf, 0x2b, 0x3d, 0xf0, 0xb7, 0xd6, 0x9b, 0x22, 0x9a, 0xed, 0x67, 0x84, + 0x5a, 0xef, 0x14, 0xf6, 0x19, 0x30, 0x8e, 0x6b, 0x6a, 0xca, 0xa4, 0xf0, 0xae, 0x58, 0xa3, 0xfb, + 0x77, 0x46, 0x9e, 0x89, 0x46, 0x54, 0x84, 0x14, 0x4a, 0x40, 0x8f, 0x16, 0x42, 0x1b, 0x19, 0xc7, + 0x7e, 0x55, 0xc4, 0x69, 0x61, 0x39, 0x9b, 0xf8, 0x05, 0x91, 0xe0, 0x19, 0xc6, 0x07, 0xd7, 0xf3, + 0x59, 0x38, 0xd3, 0x80, 0xc4, 0x6a, 0x90, 0x0f, 0x7c, 0x20, 0xcf, 0xda, 0x21, 0x07, 0xe2, 0xce, + 0xb2, 0x02, 0x67, 0xe1, 0xed, 0x06, 0xce, 0xe1, 0x21, 0xb6, 0x02, 0x25, 0xab, 0x74, 0x16, 0xc6, + 0x5e, 0x26, 0x65, 0xbe, 0x53, 0x80, 0x58, 0xa2, 0x53, 0x35, 0x9e, 0xee, 0xad, 0x5d, 0x94, 0xb3, + 0xb3, 0x51, 0x4e, 0x3f, 0x3b, 0x69, 0x1b, 0x22, 0x10, 0x63, 0xf0, 0xcc, 0x80, 0xbf, 0xc1, 0x7e, + 0xb2, 0x32, 0xab, 0x15, 0x3a, 0xfc, 0x73, 0x08, 0x6f, 0x53, 0x24, 0xf0, 0x7b, 0x4c, 0x04, 0xdf, + 0x0c, 0x9c, 0x36, 0xa2, 0x75, 0x1e, 0x68, 0x55, 0xde, 0x4c, 0x3b, 0xa0, 0xfc, 0xf7, 0xed, 0x99, + 0x96, 0x91, 0x3b, 0xc6, 0x20, 0x6c, 0x83, 0x9d, 0x9f, 0x0d, 0x49, 0x1b, 0xe1, 0x00, 0x9a, 0x5b, + 0x53, 0x86, 0xd1, 0x56, 0xd0, 0x76, 0x1e, 0xd2, 0x07, 0xfc, 0x35, 0xc8, 0x63, 0x0f, 0xb1, 0x1a, + 0x12, 0x03, 0x94, 0x45, 0x25, 0xe2, 0xbf, 0x71, 0x1e, 0x5d, 0xc2, 0x3e, 0x15, 0xf3, 0xbb, 0x29, + 0xc9, 0xa4, 0xdd, 0xdc, 0x68, 0x55, 0x88, 0xb9, 0x31, 0xbf, 0x3f, 0x52, 0x17, 0xe8, 0x61, 0x79, + 0xa8, 0xf5, 0xb4, 0x01, 0x1b, 0xf0, 0x46, 0x9b, 0xa7, 0x9f, 0xeb, 0x43, 0x08, 0xad, 0x81, 0x7f, + 0x16, 0x4f, 0x17, 0x7b, 0x7c, 0xf0, 0xd4, 0xeb, 0x05, 0x4b, 0x43, 0x28, 0xdd, 0xbf, 0xef, 0xae, + 0xd8, 0xa5, 0xa8, 0xcd, 0x01, 0x8f, 0x47, 0x78, 0x0d, 0xaa, 0x6d, 0x00, 0x4e, 0x91, 0xf2, 0x6a, + 0x8a, 0x22, 0x55, 0x96, 0x13, 0xbb, 0x60, 0xf7, 0x7a, 0x9b, 0x26, 0x35, 0xf0, 0x8a, 0xbd, 0x12, + 0xcd, 0x5a, 0x65, 0x99, 0xad, 0x43, 0x5e, 0xd1, 0xe9, 0x16, 0x31, 0x8c, 0x55, 0x83, 0x96, 0xc1, + 0x76, 0x48, 0x0a, 0xb4, 0x57, 0x04, 0x26, 0x0d, 0x3c, 0x6b, 0xd3, 0x7e, 0xbc, 0x8e, 0x84, 0xfa, + 0x20, 0x2f, 0x6b, 0x2c, 0x2f, 0x58, 0x7f, 0x24, 0x84, 0x9f, 0xf5, 0xf9, 0x60, 0x97, 0x6b, 0x60, + 0xb7, 0xcb, 0x9c, 0x24, 0x54, 0x21, 0x17, 0x64, 0x5b, 0xf3, 0xd1, 0xbd, 0xd1, 0x2e, 0x40, 0x7c, + 0xca, 0x3f, 0x51, 0x0e, 0xd6, 0xa1, 0x0a, 0xea, 0x98, 0x36, 0xe4, 0x68, 0x4f, 0x0a, 0xea, 0x7a, + 0x8c, 0x89, 0x78, 0xb0, 0x81, 0xeb, 0x7b, 0xa6, 0x37, 0x0c, 0x55, 0x2b, 0xc0, 0xf5, 0x5e, 0x1a, + 0xe2, 0x03, 0xd0, 0x07, 0xd0, 0x22, 0x2e, 0x0c, 0x0d, 0x2c, 0xa0, 0xe1, 0xa0, 0x16, 0x68, 0x6c, + 0x13, 0x3f, 0x77, 0x01, 0xbd, 0x07, 0xba, 0x64, 0xd9, 0x5e, 0xf8, 0x5e, 0x0b, 0x9a, 0xcd, 0x76, + 0x4f, 0x7c, 0xee, 0x2c, 0x46, 0xf7, 0x5e, 0x35, 0x60, 0x8d, 0x36, 0x2d, 0xa2, 0x4d, 0x31, 0xeb, + 0x8c, 0xdb, 0xf7, 0x06, 0x3f, 0x64, 0x5b, 0x4b, 0xed, 0xb9, 0x0f, 0xb1, 0xb9, 0x39, 0xea, 0xa1, + 0x76, 0xd7, 0x78, 0x76, 0x2c, 0x88, 0xb8, 0x2a, 0xd5, 0x7b, 0x06, 0x42, 0x70, 0xaa, 0xc5, 0x67, + 0x1c, 0x55, 0x62, 0xeb, 0xbb, 0x01, 0x3d, 0xee, 0x31, 0x15, 0xd4, 0xf5, 0x5d, 0x3f, 0xae, 0xc3, + 0x97, 0x07, 0x58, 0x1f, 0x5c, 0x7c, 0x3e, 0x60, 0xb6, 0x73, 0x54, 0x17, 0xeb, 0x48, 0xa1, 0x2c, + 0x83, 0x5f, 0x3a, 0xab, 0x3b, 0x6f, 0x44, 0xbb, 0x89, 0xeb, 0x29, 0x01, 0xf0, 0x6f, 0xa3, 0x65, + 0xcb, 0x97, 0xea, 0x3a, 0x27, 0x6d, 0xe6, 0x6d, 0xf1, 0xd6, 0xae, 0x1d, 0x7e, 0x61, 0xcf, 0xc8, + 0xff, 0x4e, 0x4f, 0xfc, 0x71, 0xdc, 0x6e, 0x3c, 0xaf, 0x6b, 0x27, 0x6b, 0x88, 0xff, 0xe7, 0x3a, + 0x38, 0x9e, 0x34, 0x20, 0xcb, 0x23, 0xcf, 0xaf, 0x38, 0x19, 0xeb, 0xa2, 0xdd, 0x0c, 0x2a, 0x60, + 0xa6, 0xa4, 0x22, 0x65, 0x94, 0xd6, 0xed, 0x61, 0x8e, 0x0d, 0x76, 0x61, 0xbd, 0x3d, 0x7a, 0xfe, + 0x00, 0x4e, 0x8a, 0x5b, 0xe3, 0x67, 0x4b, 0x85, 0x00, 0x47, 0x63, 0x28, 0xa4, 0xf1, 0x56, 0xe3, + 0xb0, 0x59, 0x68, 0x8b, 0x3d, 0xbe, 0x8d, 0xaa, 0x10, 0x87, 0xa2, 0x62, 0x50, 0x14, 0x8b, 0xd1, + 0x7c, 0x05, 0xcf, 0xa7, 0x25, 0x32, 0x1f, 0xf6, 0x98, 0xb3, 0x20, 0xe3, 0xdc, 0xa6, 0xb4, 0xa3, + 0x70, 0x5c, 0xda, 0x16, 0x25, 0x96, 0xee, 0xed, 0xa8, 0x70, 0x7d, 0x64, 0x6f, 0x13, 0xf4, 0x6c, + 0x84, 0x76, 0x65, 0x56, 0x0e, 0x34, 0x5b, 0x08, 0x6b, 0x88, 0x10, 0x93, 0x13, 0x5d, 0x61, 0x04, + 0xe8, 0x83, 0x78, 0x94, 0x11, 0xb7, 0x1a, 0x8e, 0x05, 0x18, 0xcc, 0x7b, 0xac, 0x0f, 0x58, 0x87, + 0xca, 0x38, 0x3e, 0x08, 0xb4, 0x1d, 0x2a, 0xac, 0xb6, 0xe6, 0x6c, 0x57, 0x55, 0xb4, 0x61, 0xd1, + 0xb4, 0xd4, 0x7a, 0x5b, 0x7c, 0x53, 0x36, 0xbb, 0x6d, 0x1d, 0x22, 0x55, 0xf8, 0x3c, 0x56, 0x36, + 0xb3, 0x6d, 0x5d, 0x71, 0x9c, 0xe2, 0xc6, 0x1a, 0x54, 0xdb, 0xc2, 0xfb, 0x16, 0xf2, 0xdc, 0x3e, + 0xcc, 0xaf, 0x28, 0x9a, 0x56, 0x34, 0xdd, 0xfa, 0x77, 0xd7, 0x02, 0x76, 0xe5, 0x13, 0xfe, 0xe7, + 0x10, 0x2f, 0x01, 0x45, 0xd9, 0xc1, 0xc7, 0xe5, 0xe0, 0x43, 0x36, 0xb0, 0x17, 0xd5, 0x50, 0xe2, + 0xba, 0xe9, 0xf4, 0xa4, 0x3d, 0xc0, 0x36, 0x55, 0xe8, 0xe5, 0x58, 0xb0, 0xdb, 0xa7, 0xb2, 0xf0, + 0xd6, 0x93, 0x13, 0x6d, 0xc5, 0x8a, 0xeb, 0x08, 0x51, 0xdd, 0x60, 0x7c, 0xdc, 0xf6, 0x83, 0xbd, + 0x1f, 0xa7, 0x5c, 0x6f, 0x1f, 0x43, 0xea, 0xb4, 0xcf, 0x54, 0xd6, 0x79, 0xb1, 0x62, 0xcb, 0xff, + 0xd5, 0x38, 0xd5, 0x28, 0x77, 0x38, 0xc9, 0x92, 0x48, 0x1d, 0xe2, 0x9d, 0xba, 0x57, 0x10, 0x23, + 0x97, 0xc0, 0x5f, 0x2e, 0x50, 0x09, 0xd7, 0xfe, 0xf9, 0x0f, 0x3d, 0xc3, 0x60, 0x37, 0x52, 0x1f, + 0x62, 0x78, 0x1c, 0x17, 0x2e, 0x44, 0xe9, 0xf8, 0x19, 0x06, 0xa6, 0x6b, 0x58, 0x73, 0x19, 0x72, + 0x52, 0xa9, 0xb8, 0x13, 0xe9, 0x79, 0xaf, 0xcc, 0x9e, 0xc4, 0xec, 0xc6, 0xbc, 0x56, 0x63, 0x9d, + 0x37, 0x01, 0x12, 0x13, 0x88, 0x99, 0x25, 0x81, 0x0f, 0xde, 0x6b, 0xdd, 0x61, 0x16, 0x24, 0x5a, + 0x2c, 0x75, 0x59, 0xaf, 0xd5, 0x9b, 0x22, 0x59, 0xc2, 0xb9, 0x65, 0x8e, 0x9a, 0x2b, 0xe5, 0x8e, + 0x32, 0x8f, 0xd6, 0x6d, 0xbc, 0xa8, 0xc6, 0x32, 0xdc, 0x35, 0x2b, 0xc8, 0x6b, 0x70, 0xc3, 0xb6, + 0x64, 0xe5, 0x75, 0x69, 0xde, 0x15, 0xa8, 0xb6, 0x20, 0xf1, 0x3d, 0x0d, 0x72, 0x5d, 0xc7, 0x57, + 0x4c, 0xc7, 0x6b, 0x06, 0x41, 0xa3, 0x33, 0x93, 0xb2, 0xbd, 0x20, 0x7a, 0x7e, 0x05, 0xf1, 0x0b, + 0xc9, 0x77, 0xf0, 0xf3, 0x3b, 0xdc, 0x27, 0x69, 0xbd, 0x9a, 0x24, 0xf7, 0x6a, 0x10, 0x03, 0x21, + 0x49, 0x1c, 0x80, 0x7c, 0xaf, 0xf1, 0xf3, 0x0d, 0x90, 0xeb, 0xd2, 0xfb, 0xbd, 0x55, 0xa1, 0xd6, + 0xb3, 0xfb, 0x7b, 0x7e, 0xb4, 0x44, 0xbd, 0x66, 0x0e, 0x9c, 0xd4, 0xb4, 0x9e, 0x2b, 0x3c, 0x75, + 0xe5, 0x45, 0x61, 0xd6, 0x75, 0x58, 0xdf, 0x83, 0x98, 0xa4, 0x76, 0x3f, 0x41, 0xdd, 0x5d, 0xbd, + 0x62, 0xf0, 0x23, 0x6a, 0x35, 0xb8, 0xcf, 0x66, 0x2a, 0x19, 0x7d, 0xc3, 0xf9, 0x2e, 0xcb, 0x3e, + 0xf9, 0x41, 0xe8, 0xca, 0xc3, 0x52, 0x20, 0x5b, 0x7b, 0xcb, 0xe7, 0x36, 0x83, 0xa0, 0x58, 0x7c, + 0x86, 0xbc, 0x30, 0x7e, 0x00, 0x99, 0x31, 0xb8, 0x75, 0x86, 0x3c, 0x93, 0x2c, 0xa9, 0xa8, 0x4e, + 0x81, 0xdd, 0x28, 0x45, 0x71, 0x39, 0x79, 0x06, 0x23, 0x24, 0x9e, 0x42, 0x87, 0xcf, 0x33, 0x77, + 0x6d, 0xaa, 0x89, 0x12, 0x0f, 0x30, 0xef, 0xc5, 0xcb, 0xf7, 0x0c, 0x38, 0xe7, 0xe2, 0x83, 0x56, + 0xbc, 0x8e, 0xc1, 0x0f, 0xee, 0x9a, 0x32, 0x8c, 0x73, 0x1d, 0xdc, 0x56, 0x70, 0x5b, 0x20, 0x4f, + 0xae, 0x69, 0xdc, 0xae, 0x07, 0xd0, 0x2e, 0xe3, 0x71, 0xe4, 0xee, 0xdb, 0x9c, 0x87, 0xe7, 0xbb, + 0x61, 0x31, 0x8a, 0xdc, 0x6d, 0xc0, 0xf3, 0x07, 0xfb, 0xf5, 0x75, 0x3c, 0x5e, 0x52, 0xf6, 0x6d, + 0xb2, 0x9e, 0x27, 0xfb, 0x55, 0xf7, 0xf0, 0x39, 0x42, 0x08, 0x02, 0xef, 0xd0, 0x46, 0x87, 0x36, + 0x7b, 0x58, 0x5f, 0xe3, 0xe3, 0xf5, 0xe1, 0x7e, 0x04, 0x5e, 0x38, 0xfe, 0x1e, 0xe2, 0x17, 0x9d, + 0xc8, 0xc1, 0x46, 0x4f, 0xc7, 0xab, 0x55, 0x83, 0x05, 0x3b, 0x2a, 0xb0, 0x2d, 0x04, 0xe1, 0xf4, + 0x2c, 0xe0, 0x26, 0xa8, 0x51, 0x41, 0x3b, 0xe0, 0x37, 0x6a, 0x67, 0x58, 0xe4, 0xf0, 0x02, 0xea, + 0xce, 0x59, 0x29, 0x28, 0xcb, 0x86, 0xe2, 0xb1, 0x6a, 0x50, 0x11, 0xd1, 0xdb, 0x3b, 0x0b, 0xe6, + 0xa4, 0x6d, 0x8c, 0x0d, 0x36, 0x3b, 0xac, 0x6e, 0x0c, 0x63, 0xcb, 0xd5, 0x0c, 0x61, 0x85, 0x66, + 0x1e, 0xd7, 0xc3, 0x46, 0xdb, 0xea, 0x73, 0x7d, 0xa7, 0xe6, 0x22, 0x67, 0xc5, 0x39, 0xc3, 0xba, + 0x67, 0xec, 0xf9, 0xf9, 0x8e, 0xca, 0x1e, 0x29, 0xc8, 0x91, 0x1f, 0xe3, 0x12, 0xa5, 0xc9, 0x4f, + 0x0b, 0xd5, 0x73, 0x07, 0xfe, 0x48, 0xe1, 0x55, 0x0d, 0x74, 0x58, 0x57, 0x45, 0xa5, 0x04, 0xff, + 0x02, 0x18, 0x87, 0x38, 0x2f, 0x6e, 0x63, 0xc3, 0x4e, 0x1e, 0x32, 0xc7, 0x6d, 0x5c, 0x4f, 0x00, + 0x85, 0xde, 0xb7, 0x71, 0xbd, 0x8f, 0xa3, 0xf7, 0x6d, 0x48, 0x71, 0xc8, 0x73, 0x3a, 0xec, 0x0b, + 0x58, 0x7c, 0x95, 0x83, 0xf0, 0x48, 0x38, 0xb4, 0x0d, 0xc0, 0xa7, 0xe4, 0x1c, 0xda, 0x01, 0x8c, + 0x73, 0xf3, 0x7d, 0x3b, 0xbc, 0x44, 0x74, 0x18, 0x87, 0xfd, 0xfa, 0xb8, 0x24, 0xb0, 0x6f, 0x1b, + 0x78, 0x7e, 0x71, 0xdf, 0x86, 0xfd, 0xb0, 0x01, 0x62, 0xc0, 0x65, 0x33, 0xa8, 0x62, 0xf5, 0xdf, + 0x40, 0x7b, 0xd4, 0xfe, 0xf3, 0x4a, 0x28, 0xf1, 0x2b, 0x11, 0xb1, 0x7d, 0x54, 0x91, 0x91, 0x66, + 0xb0, 0x3b, 0x54, 0x99, 0xa3, 0x51, 0xc0, 0xae, 0xf0, 0xe9, 0x45, 0x09, 0xad, 0x50, 0x89, 0x8d, + 0xd7, 0xc4, 0xef, 0xdd, 0xb7, 0xfe, 0x98, 0x19, 0x55, 0xca, 0x5b, 0x04, 0xc9, 0xc3, 0x9b, 0xc4, + 0xda, 0xa8, 0x2a, 0xe3, 0x20, 0x7e, 0x8a, 0xaa, 0xb5, 0x78, 0x4e, 0x65, 0x94, 0x01, 0xfb, 0x5a, + 0x19, 0x5b, 0xa3, 0x85, 0xb2, 0x1d, 0x0e, 0x3a, 0xd6, 0x1b, 0xc7, 0x9a, 0x7a, 0x97, 0xad, 0x0d, + 0x33, 0xcf, 0xcd, 0x51, 0xe6, 0x79, 0x45, 0xea, 0xeb, 0x95, 0x22, 0x1a, 0x19, 0x2c, 0x8d, 0xf7, + 0x7a, 0x0b, 0x58, 0x0b, 0x55, 0x72, 0x18, 0xde, 0x16, 0x55, 0x78, 0x34, 0x46, 0xb8, 0x2d, 0xe1, + 0xca, 0xab, 0x89, 0xaa, 0x73, 0xfc, 0x5e, 0x43, 0x20, 0x05, 0x80, 0x5b, 0x93, 0xac, 0x23, 0x38, + 0xe2, 0x2b, 0x2f, 0x38, 0x8f, 0xf8, 0xd8, 0xcf, 0x5d, 0x6a, 0xe2, 0xb8, 0x0b, 0xd5, 0xbf, 0xfd, + 0x84, 0xef, 0x08, 0x7d, 0xba, 0xfb, 0xfc, 0xf3, 0x4f, 0x7f, 0xfd, 0xfc, 0x13, 0xbe, 0xaf, 0x86, + 0x2f, 0x1c, 0xf9, 0xce, 0x4a, 0x9b, 0xa6, 0x55, 0x72, 0x57, 0xe9, 0x25, 0xb5, 0x50, 0x6d, 0x73, + 0xb9, 0xb2, 0xc8, 0xcd, 0xa2, 0x70, 0xde, 0xc8, 0x19, 0x6f, 0xf1, 0xbc, 0x85, 0xea, 0x1a, 0x26, + 0xcc, 0xa0, 0xa1, 0x1b, 0x5f, 0x67, 0x32, 0x5c, 0x67, 0x65, 0x8f, 0xc3, 0x6b, 0x66, 0x2f, 0xa9, + 0x5f, 0x19, 0x86, 0xf9, 0x7c, 0x72, 0x7b, 0xa9, 0xaa, 0x5b, 0x6b, 0xdd, 0x37, 0x35, 0xf5, 0x21, + 0xa5, 0xe8, 0xee, 0x58, 0xb5, 0xe1, 0x83, 0xa7, 0xda, 0x5e, 0xda, 0xd3, 0x5d, 0x73, 0x12, 0xcf, + 0xf6, 0xcc, 0x9d, 0xfe, 0x92, 0x62, 0x9e, 0x96, 0x1b, 0xe8, 0x89, 0xa0, 0x05, 0x53, 0xd3, 0xd7, + 0xa1, 0xe9, 0xeb, 0x1b, 0x3f, 0xad, 0x5a, 0xa6, 0x01, 0xfb, 0x6a, 0xba, 0xed, 0xeb, 0x2e, 0x74, + 0xe2, 0x7b, 0x69, 0x73, 0xd3, 0x4f, 0x87, 0x88, 0x6b, 0xaa, 0x65, 0x39, 0x2b, 0xff, 0x25, 0x65, + 0x3b, 0xb6, 0x9e, 0x18, 0x5d, 0xc1, 0x26, 0xb0, 0x91, 0xa5, 0x6b, 0x89, 0xb1, 0x85, 0xb3, 0xbb, + 0x32, 0xe0, 0x5d, 0xec, 0xbf, 0x38, 0x37, 0xde, 0x5e, 0x5d, 0xa6, 0xa7, 0xa6, 0x31, 0x05, 0xec, + 0xa6, 0x7e, 0x4c, 0x06, 0xdf, 0x85, 0xf3, 0x2d, 0x55, 0x17, 0x70, 0x3d, 0x50, 0xf9, 0xe1, 0x40, + 0xc4, 0xa9, 0x8e, 0x67, 0xc3, 0x71, 0x69, 0xfa, 0xff, 0xc0, 0x04, 0x72, 0xf1, 0x6f, 0xdf, 0x5a, + 0x3a, 0x9e, 0x19, 0x72, 0x61, 0x62, 0x6e, 0xf4, 0x71, 0x08, 0x60, 0x99, 0xa4, 0x3d, 0x43, 0x2f, + 0x37, 0x29, 0x3a, 0x95, 0xc1, 0xaf, 0x07, 0x6a, 0xfd, 0x3a, 0x1e, 0x47, 0x93, 0x47, 0x2b, 0xdf, + 0x77, 0x6c, 0xbc, 0x02, 0x48, 0x62, 0x99, 0xb6, 0xbe, 0xc7, 0x5a, 0x5b, 0xb9, 0x1e, 0x9e, 0xbb, + 0x74, 0xcc, 0x88, 0x8c, 0x30, 0xfd, 0xd1, 0x52, 0x47, 0xba, 0xe5, 0x9d, 0x72, 0x77, 0xa9, 0x8e, + 0xc7, 0xa6, 0x6d, 0xbc, 0xa4, 0x8a, 0x47, 0xbb, 0xc1, 0x82, 0x5f, 0xf1, 0x2d, 0x41, 0xb2, 0x08, + 0xaf, 0x39, 0xc7, 0x77, 0xe4, 0xc0, 0xfe, 0x8b, 0x97, 0xd4, 0x53, 0x86, 0x70, 0xd3, 0x0d, 0x0f, + 0x9b, 0x4b, 0xb2, 0xf6, 0xd7, 0x42, 0xa1, 0x80, 0x4f, 0xee, 0xc2, 0x52, 0xdb, 0x00, 0x8e, 0x8c, + 0x01, 0xc9, 0xb5, 0xee, 0x62, 0x39, 0xb1, 0xd2, 0xae, 0x15, 0x61, 0x36, 0x72, 0x4d, 0xb2, 0x45, + 0x8c, 0x4a, 0x08, 0x03, 0x8f, 0x04, 0xae, 0xba, 0x5c, 0xea, 0xee, 0x65, 0x04, 0x7c, 0x67, 0x19, + 0x9e, 0xc1, 0xd2, 0x27, 0x7e, 0xf8, 0x29, 0x42, 0xe2, 0x58, 0x6c, 0x01, 0x8f, 0x4c, 0x26, 0x03, + 0x5d, 0xbb, 0xb4, 0x69, 0x8f, 0xf5, 0x0d, 0x90, 0x36, 0x02, 0x8f, 0x2f, 0x2d, 0x7a, 0x67, 0x17, + 0xf1, 0x3e, 0x85, 0x17, 0xf1, 0x3e, 0xed, 0x85, 0x16, 0xdf, 0xdd, 0xc3, 0xc4, 0x05, 0xbd, 0xb2, + 0x8e, 0x25, 0x39, 0x13, 0xa2, 0x8a, 0xa9, 0x9f, 0xde, 0xb3, 0x1b, 0x3a, 0xc6, 0xa6, 0xb7, 0xb4, + 0x54, 0x80, 0x65, 0xda, 0x64, 0x6c, 0x64, 0x39, 0xda, 0xfc, 0xf3, 0x81, 0xf2, 0x69, 0x42, 0x67, + 0x7c, 0xd0, 0x98, 0xda, 0x8f, 0x9e, 0x65, 0x8e, 0x41, 0x00, 0x31, 0x4a, 0x3f, 0xff, 0x84, 0x55, + 0x15, 0x4b, 0x17, 0xd6, 0xe5, 0x48, 0xd0, 0x40, 0x4d, 0xf5, 0xe1, 0x2d, 0xac, 0xbb, 0xbb, 0x24, + 0x0c, 0x8f, 0x20, 0xb8, 0x64, 0x6d, 0x92, 0xbf, 0x69, 0x06, 0xe0, 0xe3, 0x9d, 0xf2, 0xd1, 0x3e, + 0x7b, 0xd2, 0x47, 0x6a, 0xb6, 0x30, 0xc7, 0x63, 0x4b, 0xbf, 0x08, 0x6f, 0x62, 0x11, 0xaa, 0x4f, + 0x2c, 0x47, 0x85, 0x33, 0x11, 0xba, 0x5e, 0x94, 0xac, 0xa4, 0x2c, 0xc5, 0x50, 0x26, 0x13, 0xac, + 0xf0, 0x89, 0x03, 0xb8, 0x8e, 0x0f, 0xd8, 0xdf, 0xd2, 0x63, 0xdd, 0xb8, 0x8b, 0x47, 0x22, 0x66, + 0xee, 0x67, 0xa5, 0xe8, 0xc7, 0xac, 0x17, 0x6d, 0xae, 0x6f, 0x88, 0x26, 0x9c, 0x43, 0x60, 0x8a, + 0x31, 0x0c, 0xc2, 0x3e, 0x22, 0x99, 0xd7, 0x68, 0x7d, 0xf5, 0xb0, 0x58, 0xb6, 0x2d, 0x73, 0xad, + 0xe3, 0x9b, 0xba, 0x49, 0x3d, 0x0d, 0x79, 0xb9, 0x07, 0x17, 0x29, 0xd3, 0xb1, 0xda, 0x8e, 0x1c, + 0x17, 0xb8, 0x04, 0xc7, 0xdd, 0x8b, 0xa8, 0xaf, 0x8e, 0x30, 0x90, 0x0b, 0x56, 0x32, 0x14, 0xba, + 0x63, 0xd2, 0x4e, 0x4c, 0xcb, 0xc7, 0xeb, 0xc7, 0xae, 0xb3, 0x4c, 0x7b, 0x53, 0x75, 0xec, 0x04, + 0xb7, 0x44, 0xcf, 0x23, 0x4e, 0xfd, 0x4a, 0xd3, 0x74, 0x7c, 0x3c, 0x50, 0xb0, 0x6f, 0x6b, 0xde, + 0xb1, 0xec, 0x1f, 0x23, 0x1a, 0xa3, 0x76, 0xb0, 0x12, 0xe7, 0x18, 0x9a, 0xf6, 0x14, 0x8c, 0x33, + 0xe6, 0x6b, 0xc4, 0x66, 0x0c, 0x2c, 0x71, 0xc8, 0x88, 0x02, 0x49, 0x76, 0x45, 0x4c, 0xba, 0x6a, + 0xcc, 0x7f, 0xd5, 0x34, 0x2d, 0xde, 0xdd, 0x59, 0x26, 0x76, 0xdf, 0x2b, 0x37, 0x83, 0x85, 0x3e, + 0x7c, 0xa1, 0xa3, 0x4f, 0x78, 0x41, 0xea, 0xd2, 0x4f, 0x44, 0x84, 0x4b, 0x50, 0x42, 0xe3, 0x58, + 0x8c, 0x04, 0x3b, 0x3c, 0x7b, 0x26, 0x7f, 0x7e, 0xf2, 0x97, 0xa9, 0xb3, 0x0e, 0x0d, 0xc8, 0x05, + 0x0e, 0x65, 0xb3, 0xd9, 0x04, 0xea, 0xba, 0xae, 0x9f, 0x2d, 0x7f, 0xc4, 0xbe, 0x72, 0xad, 0x5f, + 0x59, 0x1f, 0x9a, 0xb7, 0x63, 0xb1, 0xc7, 0xeb, 0xbf, 0xb7, 0x28, 0xf5, 0x8b, 0xb9, 0xc0, 0x77, + 0xc4, 0x55, 0xe2, 0x39, 0xce, 0xd7, 0xe3, 0xdb, 0xda, 0x2a, 0xc8, 0x32, 0xc1, 0x3b, 0x9d, 0xb6, + 0x43, 0xa3, 0x72, 0xcc, 0xe0, 0xa8, 0x05, 0x02, 0xae, 0xdd, 0xae, 0x55, 0xf7, 0x16, 0xa6, 0xdd, + 0xfd, 0x0b, 0x8f, 0x61, 0xf1, 0x89, 0x45, 0x9a, 0x8c, 0xe2, 0xce, 0x54, 0x3a, 0x15, 0x4e, 0xf2, + 0x97, 0x0f, 0xa9, 0x02, 0x10, 0xef, 0x6e, 0xdf, 0x33, 0xf2, 0xa3, 0x9e, 0xbb, 0xbd, 0x3a, 0xa7, + 0x63, 0x09, 0x2b, 0x84, 0xb6, 0x3d, 0xea, 0x25, 0x06, 0xf7, 0x04, 0xcc, 0xe7, 0xcb, 0x96, 0xea, + 0x36, 0x81, 0x97, 0xbf, 0x79, 0x48, 0x91, 0x1d, 0xef, 0xa3, 0xc5, 0x26, 0xb4, 0xef, 0xa8, 0x3d, + 0xd2, 0x69, 0x82, 0xf5, 0xdd, 0x81, 0xf6, 0xd1, 0x65, 0xf5, 0x84, 0xfd, 0x89, 0x04, 0xf3, 0xa0, + 0x0a, 0xae, 0x8e, 0xc3, 0x96, 0xf5, 0xb9, 0x82, 0x26, 0xc9, 0x82, 0xbb, 0xf6, 0xdb, 0xdc, 0x25, + 0x9d, 0x1d, 0xc3, 0x44, 0x82, 0x33, 0x72, 0x36, 0x58, 0x8e, 0x49, 0x67, 0x28, 0xf6, 0x70, 0xf6, + 0xcd, 0x99, 0xa2, 0x63, 0x19, 0x02, 0x54, 0x82, 0x97, 0x94, 0xba, 0xf2, 0x9d, 0xcf, 0x67, 0xbe, + 0x1d, 0x8f, 0x7b, 0x9a, 0xeb, 0x58, 0x56, 0x7a, 0xa4, 0x4f, 0xd5, 0xb5, 0xe9, 0x1c, 0xd4, 0x07, + 0x9b, 0x1b, 0x7e, 0x32, 0x81, 0xb0, 0xc2, 0x4b, 0x88, 0x70, 0x7a, 0xef, 0xbd, 0xa2, 0x6d, 0x49, + 0x9b, 0xe0, 0xe5, 0x39, 0xe0, 0x0a, 0xe2, 0x20, 0x8b, 0xd8, 0xf6, 0x85, 0xe3, 0xf8, 0xd3, 0xd4, + 0x9f, 0xa9, 0xcb, 0x86, 0x33, 0x29, 0x03, 0x93, 0x87, 0x14, 0x73, 0xf7, 0xaf, 0xc7, 0xbc, 0x77, + 0x97, 0xd2, 0x55, 0x4f, 0x4f, 0x43, 0x68, 0x90, 0x8a, 0xa8, 0x9a, 0xde, 0xfb, 0xf2, 0xbd, 0xcd, + 0x86, 0x7f, 0xe9, 0xd8, 0x37, 0xc4, 0x78, 0xc5, 0xac, 0x3f, 0x38, 0x61, 0x7c, 0x38, 0xb0, 0x88, + 0x97, 0x6d, 0xd1, 0x37, 0x83, 0x9c, 0x0b, 0x1e, 0xfa, 0xaa, 0x16, 0x9e, 0x7b, 0xd5, 0xbd, 0x25, + 0x9e, 0x58, 0x3a, 0x6e, 0x13, 0x3b, 0x9e, 0x86, 0x60, 0x71, 0xe1, 0x25, 0x22, 0xc4, 0xd9, 0xca, + 0xf3, 0xcd, 0xc9, 0x36, 0x1d, 0x09, 0x4d, 0x62, 0xe4, 0xe0, 0xee, 0x31, 0x21, 0x9d, 0xa5, 0xaa, + 0x99, 0xfe, 0x16, 0x9b, 0xb0, 0xe7, 0xfc, 0x99, 0x55, 0x7b, 0xf2, 0x88, 0x78, 0x11, 0xaf, 0x96, + 0xd6, 0xd7, 0x00, 0xc2, 0x4b, 0x32, 0xf0, 0xd1, 0xf3, 0xd5, 0x2d, 0x36, 0x68, 0x49, 0x7f, 0x13, + 0x3b, 0x9a, 0x03, 0x51, 0xe2, 0x70, 0x11, 0x30, 0xd2, 0xe6, 0xdb, 0xa3, 0xa1, 0x7d, 0xd7, 0x51, + 0x5c, 0x12, 0xf2, 0x38, 0x24, 0x13, 0x39, 0xf3, 0x69, 0x88, 0xf2, 0x6b, 0xb4, 0x31, 0x13, 0x46, + 0xef, 0x30, 0x2f, 0xf3, 0x1c, 0x33, 0x26, 0x1e, 0xcb, 0xec, 0xc7, 0xf2, 0xc5, 0xfd, 0x98, 0xef, + 0xa8, 0x1e, 0xd1, 0xa0, 0xc3, 0xb9, 0x2f, 0x53, 0x3f, 0x9f, 0xcf, 0x13, 0x0d, 0xdf, 0xa4, 0x23, + 0xde, 0x3d, 0x13, 0xd6, 0x9d, 0xf8, 0xf2, 0x4b, 0xb1, 0x79, 0x24, 0xb8, 0xae, 0x3a, 0x36, 0x57, + 0x40, 0xad, 0xd0, 0x54, 0x1c, 0x54, 0xac, 0xf0, 0xcf, 0xda, 0x67, 0x12, 0x76, 0x44, 0x92, 0x50, + 0x90, 0xf2, 0xa1, 0x74, 0x5d, 0xb0, 0x3b, 0x83, 0xdb, 0x74, 0x3e, 0x34, 0x81, 0xb1, 0x1c, 0x83, + 0x28, 0x12, 0xc0, 0xe7, 0x2e, 0xeb, 0x3a, 0xbb, 0x63, 0xfa, 0x3d, 0x7a, 0x53, 0x27, 0x38, 0x22, + 0x22, 0xc6, 0x01, 0xb2, 0xa6, 0x85, 0x1a, 0xe1, 0xa8, 0x8e, 0x75, 0xd3, 0x06, 0xf9, 0xc9, 0x7b, + 0x0f, 0xc9, 0x46, 0x2a, 0x83, 0x5f, 0x5c, 0x1d, 0x9b, 0x85, 0x53, 0x98, 0xba, 0xeb, 0x3a, 0xee, + 0x19, 0xd0, 0x0b, 0x9c, 0x19, 0x65, 0xae, 0xef, 0x16, 0xc3, 0xfc, 0xf7, 0x5c, 0xdf, 0x4e, 0x5c, + 0x08, 0xd4, 0xbd, 0x78, 0x14, 0x1b, 0x4d, 0xd7, 0x59, 0xa4, 0xfe, 0x3c, 0x44, 0x09, 0xa9, 0x84, + 0x0c, 0xfc, 0x85, 0x45, 0xe5, 0x30, 0x18, 0x52, 0x27, 0x95, 0x40, 0xe5, 0xaf, 0x08, 0x72, 0x14, + 0x90, 0x46, 0xd2, 0x8e, 0xc1, 0xc6, 0x1a, 0xf6, 0xe9, 0xd3, 0x11, 0x9f, 0xd4, 0x11, 0x18, 0xac, + 0x55, 0x98, 0xc2, 0x11, 0x1b, 0x96, 0xc5, 0x10, 0xf7, 0x1b, 0x64, 0xc3, 0x08, 0x99, 0xf0, 0x8d, + 0x21, 0x9b, 0xb9, 0xb1, 0xc5, 0x20, 0x23, 0x47, 0xfa, 0x90, 0xcb, 0xe5, 0xce, 0x05, 0xeb, 0xdb, + 0xec, 0xda, 0x8b, 0x47, 0x9a, 0x89, 0x89, 0x62, 0xda, 0xcb, 0x95, 0xff, 0x1f, 0x7f, 0xbb, 0xd4, + 0x5f, 0x41, 0x2e, 0x0c, 0xfd, 0x0f, 0xe2, 0x46, 0x23, 0xdd, 0xc4, 0x09, 0x85, 0x0a, 0xdd, 0x9a, + 0x7e, 0x1a, 0xe2, 0x65, 0x32, 0xf4, 0xb1, 0x48, 0xd2, 0x09, 0xe7, 0x47, 0x5a, 0x51, 0xd8, 0x11, + 0x7d, 0xb8, 0xc8, 0xb5, 0xe3, 0xa4, 0xf0, 0x62, 0x26, 0x76, 0x86, 0xde, 0xcb, 0xc4, 0xd1, 0x56, + 0xde, 0xa5, 0x4c, 0xee, 0xe2, 0xec, 0x97, 0xbd, 0x99, 0x09, 0x53, 0x06, 0x77, 0x65, 0xdb, 0xf8, + 0x6f, 0xb6, 0xd2, 0xb0, 0xb7, 0x36, 0xc7, 0x60, 0x8e, 0xad, 0x70, 0x6c, 0xa2, 0xb3, 0x21, 0xce, + 0xe7, 0x38, 0x25, 0x59, 0xe0, 0x1a, 0x23, 0xf5, 0x96, 0x06, 0x07, 0x1d, 0xfe, 0xbf, 0xfb, 0x28, + 0x12, 0xfe, 0x74, 0xb5, 0x18, 0x1d, 0x65, 0xbd, 0xa1, 0x3e, 0xc7, 0xa8, 0x84, 0xad, 0xcb, 0x9c, + 0x3d, 0x12, 0x81, 0xd0, 0xe0, 0x9c, 0x23, 0xf9, 0x0d, 0xfe, 0x25, 0xc3, 0x93, 0xa7, 0xd8, 0x02, + 0x5e, 0x42, 0x19, 0x97, 0x04, 0x48, 0xe3, 0x83, 0xa4, 0x3a, 0x67, 0xef, 0xc7, 0xc9, 0x93, 0xd8, + 0x2b, 0x26, 0x4d, 0x22, 0xa6, 0x88, 0x9c, 0xfc, 0x05, 0x70, 0xff, 0x3b, 0xf4, 0xbb, 0x9c, 0x3d, + 0x3e, 0x85, 0x01, 0xdb, 0x35, 0x8c, 0xbd, 0xbf, 0x4d, 0x96, 0x53, 0x79, 0x8f, 0xf0, 0xbb, 0xac, + 0x0b, 0x57, 0xaa, 0x26, 0x57, 0x50, 0x81, 0x4c, 0xc9, 0x4a, 0x43, 0xc8, 0x75, 0x1a, 0xbc, 0xff, + 0x4d, 0x08, 0xab, 0xb8, 0x7e, 0xf0, 0x4f, 0x20, 0xfc, 0x33, 0xa1, 0x2e, 0x5c, 0x63, 0x4a, 0x52, + 0x4e, 0xd3, 0x4c, 0x26, 0x96, 0x54, 0xf0, 0x0c, 0x01, 0x2e, 0x74, 0x1c, 0x05, 0x17, 0x49, 0x67, + 0x14, 0x99, 0xe2, 0x78, 0xce, 0x09, 0x37, 0x62, 0xeb, 0x95, 0xa3, 0x4f, 0x1c, 0x68, 0x22, 0x46, + 0x0e, 0x77, 0x19, 0xb9, 0x66, 0x0c, 0xe3, 0x24, 0xaf, 0x0f, 0xc7, 0x97, 0x10, 0xa2, 0x84, 0xc4, + 0x3a, 0xaa, 0x41, 0x45, 0x21, 0x6f, 0xbc, 0x4f, 0x21, 0xf2, 0xa7, 0x1f, 0xcf, 0x64, 0x71, 0x1a, + 0xe7, 0x1f, 0xe7, 0x6f, 0xc5, 0x23, 0xd3, 0xca, 0x1c, 0x9f, 0x24, 0x7b, 0xee, 0xb1, 0x9f, 0xaf, + 0xe8, 0xe3, 0x71, 0x0a, 0x17, 0x97, 0x12, 0xcf, 0x15, 0xed, 0x78, 0x64, 0xcf, 0xab, 0xfc, 0xdf, + 0x3a, 0xca, 0x21, 0x64, 0x4c, 0x8f, 0x57, 0xae, 0x1a, 0xc7, 0x8e, 0xc4, 0x1b, 0xc7, 0xe6, 0x09, + 0xa3, 0x88, 0xff, 0xbc, 0x33, 0xbd, 0x36, 0x3d, 0x73, 0x64, 0x5a, 0xc4, 0xab, 0x4e, 0xcd, 0xf1, + 0x58, 0xb7, 0x13, 0xb3, 0x0e, 0xea, 0xb9, 0xd7, 0xce, 0xec, 0x18, 0x0c, 0x01, 0xfc, 0x3b, 0xa2, + 0x59, 0x3a, 0x59, 0x18, 0x3b, 0x09, 0xcd, 0x63, 0x6a, 0x3d, 0x9d, 0xca, 0xdb, 0x49, 0x01, 0xe2, + 0xaf, 0x18, 0xd4, 0x49, 0x75, 0x08, 0x9f, 0xae, 0xf8, 0x91, 0xe2, 0x10, 0xc1, 0x26, 0x2c, 0x8c, + 0x7e, 0xc7, 0x91, 0x12, 0xa3, 0x77, 0xa1, 0xff, 0x42, 0x57, 0x52, 0x3d, 0xf0, 0x5f, 0xba, 0x26, + 0xff, 0x9a, 0xd8, 0x5b, 0x1b, 0xf7, 0x9b, 0x85, 0xf5, 0x79, 0xe5, 0x4f, 0x8a, 0x0f, 0x5f, 0xa0, + 0x95, 0x82, 0x96, 0xed, 0xbd, 0x7e, 0x9a, 0xfa, 0xfe, 0xf2, 0x85, 0xa2, 0x82, 0x20, 0x78, 0x0c, + 0xb2, 0x8f, 0x8e, 0x6b, 0x50, 0x19, 0x60, 0x0d, 0x9e, 0xff, 0x29, 0x15, 0xfe, 0x91, 0xf5, 0x27, + 0xb0, 0x58, 0x9f, 0x52, 0xa1, 0x86, 0x44, 0x0d, 0x6c, 0x06, 0x5e, 0x3f, 0x11, 0x01, 0xf8, 0xf4, + 0xf5, 0xcb, 0xd2, 0xb1, 0xb6, 0x06, 0x10, 0x82, 0x38, 0x16, 0x00, 0x09, 0x14, 0xc7, 0x56, 0x0e, + 0x5e, 0xf3, 0xf4, 0x43, 0x9e, 0xfe, 0x44, 0x7d, 0xfd, 0x82, 0xe1, 0x7d, 0xbd, 0xb9, 0x03, 0x4c, + 0xd3, 0xae, 0x0e, 0x88, 0xfb, 0xc7, 0xd4, 0x8d, 0x24, 0x32, 0x73, 0x4a, 0xf5, 0x83, 0xe2, 0x65, + 0xc2, 0xca, 0xc6, 0x19, 0x5f, 0x42, 0x68, 0x2f, 0x47, 0x80, 0x2f, 0x78, 0xfc, 0xa8, 0x06, 0x4d, + 0x88, 0x49, 0x22, 0x03, 0x17, 0x98, 0xbf, 0xaf, 0x87, 0x9d, 0xc9, 0x9f, 0x77, 0xcd, 0xb6, 0x92, + 0xa0, 0x3d, 0x14, 0xe7, 0x30, 0xd7, 0xa3, 0x13, 0x35, 0x06, 0x67, 0x49, 0xfe, 0x5e, 0xf9, 0xcf, + 0xef, 0x2b, 0xd5, 0x61, 0xcd, 0x91, 0x9d, 0xb4, 0xc1, 0x34, 0xea, 0xee, 0x1f, 0xa7, 0xa6, 0xf5, + 0x7f, 0x45, 0x21, 0xaf, 0x98, 0x09, 0x20, 0xe8, 0xfe, 0x97, 0xbe, 0x68, 0x20, 0x92, 0x49, 0xdd, + 0x01, 0x2b, 0xd0, 0xd1, 0x8c, 0x77, 0x81, 0xd6, 0x91, 0x06, 0xe5, 0x43, 0x73, 0x73, 0x49, 0xae, + 0x31, 0x09, 0x27, 0xa6, 0x6e, 0x8d, 0x2f, 0x09, 0x77, 0x72, 0xf0, 0x5a, 0xff, 0x15, 0xaa, 0x1d, + 0x22, 0xbe, 0x23, 0xda, 0x85, 0xf5, 0xa4, 0x6b, 0x6b, 0xf6, 0x21, 0x97, 0x69, 0xdb, 0xf8, 0x51, + 0xc5, 0x12, 0x17, 0x6a, 0x48, 0x95, 0xea, 0x21, 0xf5, 0xed, 0x05, 0x70, 0xf0, 0xe3, 0x05, 0xa9, + 0x3f, 0x53, 0xdf, 0x54, 0xe4, 0xc8, 0x00, 0x39, 0x3e, 0x70, 0xe2, 0x60, 0x33, 0xf6, 0x06, 0x08, + 0x8b, 0xf6, 0x71, 0x0d, 0x2b, 0x5c, 0x60, 0x6a, 0x47, 0x46, 0x9e, 0xf0, 0x09, 0xff, 0xdb, 0x4f, + 0xd8, 0x78, 0x89, 0xe0, 0xa2, 0x40, 0x1f, 0x3c, 0xe0, 0xe3, 0xe6, 0x68, 0x28, 0x97, 0x39, 0x62, + 0x7c, 0x31, 0x31, 0x71, 0xe9, 0xf9, 0xde, 0x15, 0xb1, 0x3d, 0x2e, 0xb8, 0x16, 0x8b, 0xc5, 0x44, + 0x20, 0x39, 0xd6, 0x27, 0xea, 0xca, 0x8a, 0x50, 0x85, 0x74, 0xde, 0x71, 0xf5, 0xf1, 0x47, 0xa4, + 0x3f, 0x96, 0xd3, 0xcb, 0xcf, 0x54, 0x3c, 0x75, 0x1d, 0xe9, 0xe6, 0x0f, 0xc2, 0x21, 0xf8, 0x7c, + 0x1b, 0x5c, 0x31, 0xcb, 0x9c, 0x83, 0x0b, 0x69, 0xa2, 0xd9, 0x93, 0xe3, 0xea, 0xcc, 0x69, 0x4e, + 0xf6, 0x94, 0x4f, 0x3e, 0xa3, 0x89, 0x08, 0x7f, 0xac, 0xdf, 0x17, 0x11, 0x03, 0xd8, 0xe3, 0xd3, + 0xe7, 0x3f, 0x09, 0xd8, 0xb1, 0x3c, 0x14, 0x93, 0xd0, 0x8b, 0x7f, 0x03, 0xb8, 0x36, 0xd5, 0xc3, + 0x78, 0xf3, 0x5a, 0x11, 0xff, 0x62, 0x34, 0x73, 0xea, 0x0f, 0xb3, 0x47, 0x55, 0xca, 0xbd, 0x90, + 0xe6, 0xae, 0xa4, 0x3b, 0x17, 0x8b, 0x19, 0x51, 0xa0, 0xa5, 0x4d, 0xe7, 0xd6, 0x91, 0x0c, 0x63, + 0xff, 0xff, 0x14, 0x07, 0x03, 0xd9, 0xfc, 0xa5, 0x8d, 0x92, 0x62, 0x0c, 0x29, 0xff, 0x45, 0x10, + 0x1f, 0x87, 0x10, 0x92, 0x84, 0x68, 0xf3, 0x55, 0xba, 0x1f, 0xd5, 0x74, 0xce, 0x0f, 0x18, 0x07, + 0x88, 0x89, 0xa7, 0x02, 0xf4, 0x31, 0x7c, 0xd8, 0x7f, 0xfe, 0x5d, 0xae, 0x1e, 0x17, 0xee, 0x62, + 0xa0, 0x99, 0xfc, 0x51, 0xf4, 0x91, 0xff, 0x76, 0x60, 0x76, 0xd1, 0xbc, 0x1f, 0x68, 0xbd, 0xaf, + 0x5c, 0x1d, 0xf0, 0x5b, 0x7a, 0x6b, 0xdc, 0x1b, 0x6e, 0x1c, 0x7d, 0x4b, 0x4a, 0x02, 0xa9, 0x43, + 0xcf, 0x7e, 0x5d, 0xe2, 0xa1, 0xdf, 0x1e, 0xc4, 0x39, 0x07, 0x30, 0xe5, 0xf7, 0xf9, 0xfb, 0xe7, + 0xe3, 0x60, 0x9c, 0xa1, 0xbf, 0xc3, 0x95, 0x98, 0x6e, 0xd1, 0xd3, 0x84, 0x90, 0x3b, 0xff, 0x37, + 0x75, 0x4c, 0xcc, 0x0b, 0x44, 0x08, 0xeb, 0x19, 0x67, 0x8c, 0x7d, 0x21, 0x9f, 0xc1, 0x00, 0x7d, + 0x00, 0x44, 0xc2, 0x27, 0x1c, 0xe6, 0xbe, 0xa8, 0x13, 0x3f, 0x8c, 0xd4, 0xf7, 0x65, 0xcf, 0x9b, + 0x9b, 0xcf, 0x57, 0xf8, 0x79, 0x39, 0xa7, 0xf8, 0x1e, 0x3a, 0x87, 0x2d, 0xce, 0x0a, 0x9e, 0x49, + 0x00, 0x97, 0x16, 0x84, 0xbc, 0x8b, 0x3c, 0x32, 0xa9, 0x4b, 0x26, 0x45, 0x26, 0x6c, 0x1c, 0xea, + 0xc6, 0x89, 0x1c, 0xea, 0xe5, 0x72, 0x70, 0x10, 0xcb, 0x70, 0x2a, 0x8b, 0xf9, 0x18, 0x39, 0xff, + 0xf3, 0x50, 0x3a, 0x7e, 0x48, 0x98, 0xcb, 0x47, 0xcf, 0x08, 0xa3, 0x8c, 0xf6, 0xda, 0xf0, 0x37, + 0x86, 0xc2, 0x13, 0x4e, 0xf7, 0x8f, 0x86, 0xa3, 0x20, 0x23, 0x7b, 0x64, 0xda, 0x46, 0xa3, 0xd1, + 0x89, 0x35, 0x89, 0x1e, 0x53, 0x44, 0xf2, 0xad, 0x1b, 0xc7, 0x2a, 0x96, 0xb0, 0x60, 0x57, 0xcd, + 0xdd, 0x87, 0xf2, 0xa3, 0xc2, 0xdf, 0xc8, 0x8f, 0x8e, 0x7c, 0xe2, 0x7f, 0x3b, 0x3f, 0xfa, 0x06, + 0x29, 0xcc, 0xb3, 0xfc, 0x8f, 0xfc, 0xe6, 0xc2, 0xf7, 0xab, 0x52, 0xaa, 0x6f, 0x96, 0xaa, 0x3d, + 0x0e, 0x5d, 0xf5, 0x65, 0x39, 0xfc, 0xf7, 0x42, 0x1f, 0x9b, 0x6a, 0x4a, 0xb5, 0xac, 0x14, 0xcc, + 0x4c, 0xdd, 0x26, 0x2a, 0xd9, 0x85, 0x5c, 0x1e, 0x3f, 0x76, 0xfa, 0xf3, 0xec, 0x61, 0x64, 0x4c, + 0xc8, 0xf0, 0x26, 0xc6, 0xf1, 0x0d, 0x88, 0xe4, 0x33, 0xf9, 0xe9, 0xf1, 0xbe, 0x89, 0x07, 0x3a, + 0xe7, 0xa9, 0xf4, 0x61, 0x10, 0xfe, 0x43, 0x0e, 0x11, 0x7d, 0xe1, 0xcf, 0x17, 0x2a, 0xfe, 0x8e, + 0x28, 0x72, 0x2d, 0xc4, 0xb1, 0x61, 0xf6, 0xf8, 0xf5, 0xc6, 0xb1, 0x1b, 0xf0, 0x7e, 0x7b, 0x87, + 0xbf, 0x67, 0x09, 0xc6, 0xc6, 0xe6, 0x3a, 0x65, 0x42, 0xb7, 0xb6, 0xbe, 0x49, 0x69, 0x96, 0xea, + 0x79, 0x30, 0x23, 0x7c, 0xea, 0x72, 0xf3, 0x15, 0x4f, 0xc4, 0x51, 0x01, 0xfe, 0xe6, 0xa1, 0x94, + 0x2c, 0x3c, 0x3e, 0x3e, 0x7e, 0xa1, 0x60, 0x3e, 0x06, 0x69, 0x3b, 0xd1, 0x37, 0x0c, 0x11, 0x00, + 0x27, 0x0b, 0x53, 0x04, 0x05, 0x68, 0x47, 0xce, 0x82, 0xf9, 0x7c, 0xf3, 0xb5, 0xeb, 0xb8, 0xee, + 0xf6, 0x21, 0x06, 0x95, 0xb2, 0x75, 0x7d, 0xec, 0xa5, 0x6a, 0xea, 0x5a, 0xed, 0x12, 0x38, 0xbf, + 0x84, 0x90, 0xbf, 0x50, 0x7b, 0xc0, 0x7b, 0xec, 0x22, 0xe0, 0xd1, 0x85, 0x8c, 0x1b, 0x82, 0x2d, + 0x10, 0x95, 0x7c, 0x4f, 0x54, 0x62, 0x1c, 0x3f, 0x39, 0xbd, 0xd0, 0x0d, 0xf9, 0x27, 0x5e, 0x49, + 0xba, 0x23, 0x36, 0x60, 0x00, 0xe1, 0xc7, 0x36, 0x2e, 0xf2, 0xdc, 0x00, 0x69, 0x34, 0xcb, 0xd4, + 0xe6, 0x18, 0xac, 0x61, 0x58, 0x3a, 0xe9, 0x05, 0x02, 0xed, 0x21, 0x1b, 0xd6, 0xcd, 0xd7, 0x2f, + 0x66, 0xdc, 0x24, 0x57, 0x37, 0x6e, 0xbe, 0xfe, 0xf6, 0xeb, 0x46, 0xa7, 0x8b, 0x93, 0xcf, 0x5f, + 0x28, 0x13, 0x72, 0xbb, 0x04, 0x16, 0xe1, 0xd3, 0xae, 0x9b, 0xaf, 0x04, 0xcc, 0x17, 0x6a, 0x09, + 0x87, 0x0a, 0x77, 0xbb, 0x88, 0x42, 0xd3, 0x3a, 0xdb, 0xbf, 0x69, 0x61, 0xee, 0x5c, 0xdc, 0x30, + 0xa3, 0x66, 0xae, 0x6f, 0xd8, 0x33, 0x17, 0x1f, 0xd8, 0xb0, 0xbb, 0xb5, 0xb5, 0xb3, 0x2d, 0x71, + 0xe7, 0xd5, 0x4d, 0x19, 0xa6, 0x70, 0x7d, 0x53, 0xbc, 0xf2, 0xfb, 0x7b, 0x9e, 0x13, 0xb9, 0x11, + 0x5d, 0x83, 0xb8, 0xba, 0x6b, 0x8e, 0xa1, 0xbf, 0x41, 0x5b, 0x97, 0x2c, 0xbe, 0xb2, 0xf1, 0x7e, + 0xab, 0xc0, 0xb4, 0xc1, 0x62, 0x3c, 0x82, 0xd2, 0x92, 0x94, 0xf5, 0x11, 0x7f, 0x7b, 0x58, 0xea, + 0x35, 0xf5, 0x89, 0xf2, 0x74, 0x1f, 0xdf, 0x0b, 0xf2, 0x3e, 0x7d, 0xbe, 0xc6, 0xd9, 0x6f, 0x11, + 0x9a, 0x73, 0xec, 0x89, 0x69, 0x9c, 0x6e, 0x1e, 0xab, 0x46, 0xac, 0x51, 0x91, 0xa2, 0x12, 0xc9, + 0xdb, 0x43, 0x99, 0x8e, 0x6f, 0xbe, 0xb2, 0x24, 0x6c, 0xb0, 0x75, 0xcf, 0xc3, 0x20, 0x8e, 0xc5, + 0xd5, 0xb4, 0xc8, 0xfc, 0x63, 0x94, 0x52, 0x89, 0x1b, 0x3a, 0xb1, 0x1c, 0x84, 0x2c, 0x39, 0x5e, + 0x9c, 0x28, 0xd6, 0xc5, 0x70, 0x48, 0xb8, 0x80, 0xb1, 0x09, 0xc7, 0x60, 0x6b, 0xc2, 0x89, 0x29, + 0x2e, 0x35, 0x42, 0xa7, 0xee, 0x43, 0x0f, 0x16, 0x75, 0xc7, 0x26, 0x53, 0x5f, 0x6f, 0x56, 0xcb, + 0x31, 0xf8, 0xa3, 0x9e, 0xab, 0x9a, 0xd6, 0xad, 0x3f, 0x35, 0x3d, 0x18, 0x03, 0xbb, 0xf6, 0x7a, + 0x93, 0xc9, 0xe7, 0x6f, 0xf0, 0x37, 0xc5, 0xbd, 0xde, 0x30, 0x37, 0x29, 0x92, 0xeb, 0xdd, 0x90, + 0x7a, 0xe5, 0x4d, 0x6a, 0xad, 0x5a, 0x2b, 0x68, 0x31, 0x99, 0xe2, 0x4d, 0x8a, 0xba, 0x88, 0x51, + 0x64, 0xc6, 0x80, 0xd4, 0x31, 0x8d, 0xae, 0xbd, 0x9b, 0xe4, 0x89, 0x12, 0x41, 0x38, 0xbe, 0x27, + 0x03, 0xd6, 0xc4, 0xd5, 0x5e, 0x6f, 0xd4, 0x11, 0xbe, 0x7e, 0x37, 0xb2, 0x54, 0x7b, 0x8e, 0xe1, + 0x84, 0x13, 0x2f, 0x80, 0x48, 0xee, 0x9f, 0x02, 0xb3, 0x16, 0xdf, 0x67, 0xb8, 0x49, 0xb2, 0x86, + 0xc3, 0x4e, 0xc9, 0xbb, 0x49, 0xb0, 0x36, 0x0a, 0x66, 0x8e, 0x66, 0x85, 0x45, 0xc9, 0xfd, 0x2c, + 0xb0, 0x4c, 0xf8, 0x34, 0x89, 0x53, 0xc4, 0x13, 0x83, 0x73, 0x3e, 0x87, 0x57, 0xde, 0x6e, 0xbe, + 0xf6, 0xb1, 0x77, 0xc3, 0x5f, 0xa4, 0x07, 0x89, 0xb3, 0x75, 0xce, 0xee, 0xef, 0x73, 0xac, 0x7f, + 0xb6, 0xff, 0x31, 0xff, 0xc8, 0x51, 0x6e, 0x27, 0xaa, 0xe5, 0xe9, 0x7f, 0x8f, 0x8d, 0xf4, 0x7f, + 0x81, 0x8d, 0x7b, 0x67, 0xe2, 0x59, 0x49, 0x83, 0x1b, 0x41, 0xc1, 0x89, 0xb6, 0x66, 0xa5, 0xc0, + 0x22, 0x27, 0xac, 0x41, 0x58, 0x72, 0xea, 0x5a, 0x8e, 0x7f, 0x0b, 0x9e, 0xfc, 0xe6, 0x2b, 0x73, + 0x41, 0x9f, 0x3f, 0xb8, 0x9e, 0xc1, 0xeb, 0x33, 0xff, 0x7c, 0x7d, 0x06, 0xaf, 0xcf, 0x5e, 0x52, + 0xe9, 0x33, 0xb6, 0x12, 0xaa, 0xa7, 0x96, 0xaa, 0x05, 0x76, 0x44, 0xc7, 0x6c, 0x4d, 0x7d, 0x48, + 0x8d, 0xa3, 0x9b, 0x72, 0x91, 0x0e, 0x8f, 0xb2, 0xb1, 0x0e, 0x47, 0x25, 0xce, 0x83, 0xcb, 0xc2, + 0x53, 0x43, 0x4f, 0x17, 0x0e, 0xb5, 0xc3, 0x9d, 0x4e, 0x78, 0x1f, 0xf5, 0x86, 0xbe, 0xfc, 0x4b, + 0x58, 0x57, 0xfb, 0x5a, 0x0a, 0xcb, 0x0d, 0x5f, 0xa8, 0xa8, 0x7d, 0x18, 0xe1, 0xf1, 0xe3, 0xdf, + 0x5f, 0x92, 0x03, 0x54, 0x08, 0xfd, 0xba, 0x1a, 0x61, 0x0c, 0xa2, 0x1b, 0x24, 0xd7, 0xb4, 0xe5, + 0x8c, 0x36, 0xe1, 0xfc, 0x94, 0xb7, 0x04, 0x17, 0x7f, 0x41, 0xe2, 0xc3, 0x9b, 0x03, 0x1f, 0xb2, + 0x72, 0xd9, 0x4c, 0xfe, 0x1f, 0x59, 0xb9, 0x2e, 0xde, 0xfa, 0x3b, 0x7a, 0x43, 0xe6, 0xfc, 0x4d, + 0xcb, 0xf7, 0xdf, 0x50, 0x99, 0x6b, 0xe4, 0xc3, 0x19, 0x35, 0x2e, 0x28, 0x6e, 0xaf, 0x93, 0x30, + 0x3c, 0x71, 0x74, 0x4b, 0xe3, 0x43, 0x04, 0xcd, 0xd1, 0xcf, 0xff, 0x88, 0xa0, 0x42, 0x8c, 0xcc, + 0x77, 0x88, 0xba, 0x9f, 0xf7, 0xff, 0x31, 0x61, 0xf1, 0x55, 0xe0, 0x8f, 0xd1, 0x34, 0x73, 0xc1, + 0x86, 0x11, 0xe3, 0x81, 0xe7, 0x4c, 0x36, 0x23, 0xfa, 0xc8, 0x8c, 0xf8, 0x83, 0xd0, 0x80, 0x75, + 0x71, 0x56, 0xf3, 0xad, 0xb8, 0x60, 0xb2, 0xb1, 0x4c, 0x8f, 0xe8, 0x4e, 0x14, 0x5f, 0x43, 0x5c, + 0x9d, 0x98, 0x36, 0x72, 0x2f, 0xab, 0x61, 0x57, 0x37, 0x16, 0xf8, 0xfa, 0xc1, 0xf7, 0xbc, 0x16, + 0x64, 0x3c, 0xb8, 0xfb, 0x2a, 0xfc, 0xc4, 0xbc, 0x95, 0x1f, 0xf2, 0xfb, 0x9b, 0xea, 0x5f, 0x56, + 0xd7, 0x8e, 0x0b, 0x4e, 0xec, 0x1b, 0x06, 0x80, 0x38, 0x4b, 0xaf, 0x41, 0x82, 0xa3, 0x53, 0xaa, + 0x63, 0x1c, 0x52, 0xe4, 0x5a, 0x88, 0x07, 0x36, 0x36, 0x22, 0xfc, 0xb9, 0x5d, 0xc6, 0x36, 0x0f, + 0xd7, 0x57, 0x8f, 0x49, 0x0a, 0x61, 0x1e, 0xbc, 0x86, 0x86, 0xfd, 0x3b, 0x8e, 0xe1, 0x9b, 0x00, + 0x32, 0x1f, 0xf0, 0x0c, 0xdf, 0x04, 0x90, 0x3d, 0x73, 0x0d, 0x7f, 0x13, 0x40, 0x0e, 0x03, 0xc8, + 0xed, 0x01, 0x44, 0x5c, 0xfe, 0x9b, 0x40, 0xf2, 0x18, 0x48, 0xfe, 0x07, 0xb0, 0x28, 0x60, 0x00, + 0x85, 0x1f, 0x00, 0xf0, 0x84, 0x01, 0x3c, 0xfd, 0x00, 0x80, 0x22, 0x06, 0x50, 0xfc, 0x41, 0x3a, + 0x3c, 0x63, 0x20, 0xcf, 0x3f, 0x80, 0x05, 0x13, 0x86, 0x1a, 0xf4, 0x8f, 0x80, 0x08, 0x85, 0xf2, + 0x47, 0xa4, 0x92, 0x21, 0x62, 0xc9, 0x64, 0x7e, 0x90, 0x1a, 0x0c, 0x11, 0x4e, 0xe6, 0x47, 0xa4, + 0x93, 0x21, 0xe2, 0xc9, 0xe4, 0x7e, 0x04, 0x04, 0x11, 0x4e, 0xe6, 0x47, 0xa4, 0x93, 0x21, 0xe2, + 0xc9, 0x14, 0x4e, 0xe9, 0x11, 0xde, 0x1e, 0x8d, 0xa0, 0x84, 0xb5, 0x3f, 0x5c, 0x67, 0xc5, 0xc6, + 0xa7, 0x1b, 0x3e, 0xb6, 0xc0, 0x36, 0x7d, 0xef, 0xb6, 0x42, 0x4f, 0x42, 0xe6, 0x8d, 0x9c, 0xcd, + 0x4d, 0x64, 0x9d, 0x7a, 0x24, 0xeb, 0x4c, 0xfa, 0xab, 0x28, 0xd9, 0xef, 0x46, 0xe1, 0x93, 0xb7, + 0x54, 0xed, 0xa3, 0x4d, 0x48, 0x65, 0x14, 0x36, 0xc2, 0x3e, 0x06, 0x0f, 0x12, 0xf3, 0x48, 0x70, + 0x89, 0x11, 0x4b, 0x2e, 0x99, 0x82, 0xe5, 0x07, 0x03, 0x97, 0x62, 0x0a, 0x29, 0x0d, 0x7a, 0x3d, + 0x75, 0xad, 0x93, 0xca, 0x90, 0x17, 0x99, 0xed, 0xc7, 0x08, 0x08, 0x5e, 0xfa, 0xfd, 0x73, 0x85, + 0x14, 0x49, 0x69, 0x5b, 0xcd, 0xfa, 0xf6, 0xc1, 0xb4, 0xed, 0xb5, 0x83, 0x71, 0xc3, 0x7f, 0x7c, + 0xb0, 0xb2, 0xe9, 0x7a, 0x7e, 0x6a, 0x49, 0x70, 0x78, 0x49, 0x25, 0xa2, 0x01, 0xc0, 0xc7, 0x3b, + 0x0f, 0x01, 0x42, 0xbc, 0xc2, 0x47, 0x7f, 0x87, 0x1c, 0x91, 0xb8, 0x78, 0x26, 0x77, 0x70, 0xe6, + 0x37, 0x11, 0xf4, 0x86, 0x7a, 0x15, 0xb8, 0xfe, 0x21, 0xe0, 0x99, 0x18, 0x78, 0x7e, 0x0f, 0x3c, + 0x1b, 0x03, 0xc7, 0x35, 0x90, 0x14, 0xbe, 0x77, 0x73, 0x79, 0x03, 0xff, 0x43, 0x1b, 0xd0, 0x8f, + 0xf1, 0x16, 0x85, 0xfc, 0xe3, 0x61, 0x13, 0x06, 0xba, 0xbf, 0x7a, 0xd1, 0x3e, 0x89, 0xc7, 0xbd, + 0x27, 0x5b, 0x7c, 0x70, 0x8f, 0x4b, 0x3b, 0xd0, 0x8f, 0x4f, 0xb0, 0xc3, 0xb7, 0x93, 0xda, 0xb0, + 0xd2, 0x35, 0x72, 0xfc, 0x50, 0x00, 0xf0, 0x87, 0x73, 0x5d, 0x83, 0x29, 0xf8, 0x2b, 0xd4, 0x93, + 0x7a, 0xe6, 0x2c, 0x75, 0xbb, 0xa7, 0x8e, 0x20, 0x48, 0xb9, 0x56, 0x5b, 0x8a, 0xf2, 0x91, 0x2b, + 0x25, 0x0f, 0x9c, 0x31, 0x5f, 0xa9, 0xb7, 0x7c, 0x7f, 0x53, 0xe6, 0xea, 0xa6, 0xd9, 0xf1, 0xf5, + 0x4d, 0xa3, 0xcc, 0xe3, 0x1f, 0xef, 0x9a, 0xb9, 0xb6, 0x6b, 0x36, 0x37, 0xfa, 0x46, 0x45, 0x2b, + 0xd2, 0xd8, 0x7f, 0xbc, 0x6d, 0xf6, 0xda, 0xb6, 0x74, 0x4e, 0xbb, 0xbe, 0xed, 0x3e, 0xce, 0xba, + 0x52, 0x57, 0x4a, 0x84, 0x64, 0xe4, 0x36, 0xef, 0x85, 0x3a, 0xc4, 0xfe, 0xcf, 0xe6, 0x0e, 0x63, + 0x87, 0x2f, 0x8a, 0xff, 0xf9, 0x27, 0xea, 0x5f, 0xbf, 0xfc, 0xfc, 0xd3, 0xbf, 0x52, 0xa6, 0xeb, + 0x3c, 0xce, 0xbc, 0xd4, 0x3a, 0xf7, 0x98, 0x7b, 0xa4, 0x71, 0x47, 0x86, 0x66, 0x0a, 0x69, 0x78, + 0x79, 0x4e, 0xd5, 0xc8, 0x75, 0xde, 0x92, 0x6a, 0x9b, 0xba, 0x85, 0x47, 0x1a, 0xa6, 0x06, 0xf1, + 0xbc, 0x3e, 0x4e, 0xad, 0x6c, 0x88, 0xb9, 0x53, 0x62, 0xbb, 0x91, 0xca, 0x84, 0x6b, 0x0c, 0xd3, + 0x9f, 0xae, 0x46, 0x8f, 0x9a, 0xb3, 0xa0, 0x66, 0x2a, 0x5e, 0x45, 0x85, 0x60, 0x61, 0x8c, 0xfa, + 0xf9, 0xa7, 0x5f, 0xe2, 0x6f, 0xa5, 0xbf, 0xf5, 0x1f, 0xf4, 0xbb, 0x3f, 0x6f, 0x9c, 0xd1, 0x0c, + 0x18, 0x79, 0xf3, 0xfa, 0x8a, 0x15, 0xc1, 0x99, 0xa4, 0xf4, 0x0d, 0x7e, 0x7e, 0xef, 0xfd, 0xf6, + 0xdb, 0x0d, 0x06, 0x3c, 0x31, 0x6d, 0x48, 0xd7, 0x7e, 0x89, 0x07, 0xc1, 0x98, 0xaf, 0x2c, 0xfd, + 0xf7, 0xf0, 0xed, 0x31, 0x9a, 0xfa, 0x0a, 0x59, 0xee, 0xcb, 0x4d, 0x0c, 0xf6, 0x00, 0x29, 0x5c, + 0xfd, 0xdb, 0x6f, 0xe1, 0xfb, 0xa3, 0xba, 0x18, 0xff, 0x1e, 0x7e, 0xbc, 0xd5, 0xef, 0x5e, 0xfc, + 0x47, 0x40, 0x0a, 0xaf, 0xfc, 0x8b, 0xe4, 0x1d, 0x0f, 0x7b, 0xac, 0x00, 0xa5, 0x95, 0xa7, 0xa7, + 0x3c, 0xdf, 0x35, 0x01, 0xad, 0xcf, 0x6b, 0xd5, 0x4d, 0x69, 0xaf, 0x89, 0xd1, 0xbf, 0x1e, 0xcc, + 0x57, 0x78, 0x99, 0xbe, 0xfe, 0xe7, 0x8f, 0x87, 0x15, 0xbc, 0x7c, 0xde, 0x7f, 0xcb, 0xfe, 0x32, + 0x3c, 0x11, 0x5e, 0xe1, 0x3c, 0xd8, 0x0f, 0xee, 0x83, 0xf9, 0xe0, 0xbd, 0xaa, 0xae, 0xb1, 0x22, + 0x22, 0xf3, 0xa0, 0xbe, 0xae, 0x3e, 0x4f, 0x1c, 0xf7, 0xd6, 0x3c, 0xf4, 0x3d, 0x5a, 0xba, 0x6d, + 0xf8, 0xd3, 0xcf, 0x99, 0x2f, 0x66, 0x3a, 0xfd, 0xf9, 0x6e, 0xfa, 0xb8, 0x5c, 0x79, 0xd3, 0x5b, + 0xef, 0x3f, 0xe6, 0x1f, 0x77, 0x64, 0x2a, 0x20, 0x6f, 0xaf, 0x2c, 0xeb, 0x97, 0x57, 0xfd, 0x51, + 0x9b, 0x9a, 0xd6, 0xd8, 0xd5, 0xed, 0xdf, 0x7e, 0xbb, 0x9d, 0x46, 0xcb, 0xfe, 0xe7, 0x7f, 0xa2, + 0x05, 0x87, 0xd1, 0xbb, 0x87, 0x31, 0x64, 0xed, 0xbe, 0x9e, 0x4a, 0x74, 0x7d, 0x8e, 0xe7, 0x7f, + 0xbe, 0x33, 0x27, 0xb7, 0xb7, 0xf6, 0x2b, 0xac, 0x72, 0x96, 0xb7, 0x77, 0x77, 0xbf, 0xfd, 0xb6, + 0x76, 0xcc, 0x71, 0x8a, 0xfe, 0xe5, 0xf5, 0xd5, 0xc6, 0x5d, 0x77, 0x21, 0x76, 0x76, 0x3c, 0x3d, + 0x89, 0x93, 0x4d, 0x70, 0x82, 0xa8, 0x5d, 0x07, 0xab, 0xe2, 0x58, 0xba, 0x9a, 0xa0, 0x33, 0xc6, + 0xc9, 0x7e, 0xc5, 0x88, 0xde, 0x3d, 0xdc, 0xba, 0xaf, 0x07, 0x4e, 0xec, 0xd9, 0xe6, 0xdf, 0xe1, + 0x29, 0x30, 0x01, 0x76, 0xfa, 0x1d, 0x0c, 0xdc, 0xcd, 0x4b, 0x6c, 0xf0, 0x0e, 0x40, 0xa0, 0xbf, + 0xeb, 0xe3, 0x3b, 0x45, 0xb7, 0x36, 0x70, 0xd3, 0x23, 0x1f, 0x0f, 0x10, 0xf0, 0x1e, 0xee, 0xeb, + 0x2f, 0xcc, 0xdd, 0xdd, 0x83, 0xfb, 0xdb, 0x6f, 0xce, 0xef, 0xea, 0x7f, 0xd4, 0x08, 0xcd, 0x34, + 0xf3, 0xc7, 0xfd, 0xab, 0xfd, 0xa2, 0xbe, 0xbe, 0xbe, 0xae, 0x7e, 0x57, 0x5f, 0xff, 0x63, 0xff, + 0xf1, 0xa2, 0x46, 0x38, 0xdf, 0x3d, 0x38, 0xaf, 0x2e, 0xe1, 0xa0, 0xf5, 0x6a, 0xeb, 0x41, 0x4a, + 0xfb, 0xec, 0xea, 0xfe, 0xca, 0xb5, 0xff, 0x1f, 0x73, 0xd7, 0xda, 0xdd, 0xb6, 0x8d, 0xb4, 0xff, + 0x4a, 0xc4, 0x26, 0x3e, 0xa4, 0x05, 0xdd, 0x9c, 0x36, 0x6f, 0x4b, 0x85, 0x47, 0x27, 0x71, 0xd2, + 0x26, 0xbb, 0xb9, 0x74, 0x63, 0x37, 0xed, 0xae, 0xe3, 0xfa, 0xd0, 0x14, 0x25, 0xb1, 0xa6, 0x49, + 0x95, 0x84, 0x6d, 0xa9, 0x92, 0xfe, 0xfb, 0x3e, 0x33, 0x00, 0x48, 0x48, 0xa2, 0x93, 0x74, 0x3f, + 0xbd, 0x67, 0xb7, 0x16, 0x71, 0x1b, 0x00, 0x73, 0x9f, 0x01, 0xc8, 0x3c, 0x48, 0xbb, 0x19, 0xbc, + 0x82, 0x77, 0xf4, 0xef, 0x4d, 0x48, 0x91, 0x56, 0xa8, 0x0a, 0x42, 0x14, 0x42, 0x89, 0xa9, 0x21, + 0x61, 0x71, 0x19, 0xa8, 0x15, 0xc7, 0x23, 0x85, 0x26, 0x3f, 0x46, 0xeb, 0x55, 0xbc, 0xdc, 0xab, + 0xa6, 0x4a, 0x91, 0x6e, 0x2a, 0x3e, 0x78, 0xab, 0xf8, 0x80, 0xb0, 0xc9, 0xbc, 0x80, 0x78, 0xfd, + 0x41, 0xec, 0xc9, 0xb3, 0xfc, 0x3c, 0x88, 0xf1, 0xc7, 0x2c, 0x42, 0xd6, 0x23, 0x52, 0x35, 0x42, + 0xd1, 0x5a, 0x62, 0xab, 0x0d, 0xdc, 0x2c, 0x47, 0x52, 0xf1, 0x6d, 0x74, 0x53, 0xd0, 0x55, 0xaa, + 0x20, 0xf6, 0x36, 0x04, 0x3e, 0x0e, 0x1a, 0x3a, 0xff, 0x8c, 0xa0, 0x2a, 0x29, 0xe3, 0x91, 0xfe, + 0xed, 0xc2, 0xe0, 0xe5, 0xe9, 0x2d, 0xb8, 0xbd, 0x2b, 0x67, 0x71, 0xd6, 0xbd, 0x4c, 0xb2, 0xb1, + 0xbb, 0xd7, 0xe6, 0xf9, 0xb0, 0x8a, 0x64, 0x24, 0xf3, 0x1b, 0x29, 0x26, 0x41, 0x8f, 0x0e, 0x68, + 0xd6, 0xf1, 0xc2, 0x1d, 0xf9, 0xe5, 0x7a, 0xba, 0xce, 0xd6, 0xf3, 0xf5, 0x43, 0x6f, 0x5d, 0xcc, + 0x67, 0xeb, 0xfc, 0xae, 0x5c, 0x5f, 0x67, 0xd1, 0x3a, 0x93, 0x77, 0x6b, 0x88, 0xd3, 0x59, 0x34, + 0x3b, 0x5f, 0xff, 0x95, 0xe7, 0xeb, 0xdf, 0xf3, 0x62, 0xdc, 0x4b, 0x80, 0x74, 0x5b, 0x2a, 0x4a, + 0x57, 0x7a, 0xab, 0x96, 0xec, 0x5e, 0x8c, 0x93, 0x42, 0x2e, 0xb1, 0x37, 0xf3, 0x18, 0xb4, 0xfa, + 0x60, 0x8b, 0x41, 0x10, 0xe4, 0x8a, 0x5c, 0xc4, 0x24, 0x31, 0x88, 0x56, 0xa3, 0x85, 0xc4, 0xcd, + 0x60, 0x51, 0x0e, 0x25, 0x75, 0x24, 0xc6, 0x1d, 0x7a, 0x35, 0xb4, 0xd7, 0x18, 0x56, 0x0f, 0x38, + 0x51, 0x78, 0x34, 0x08, 0xee, 0xaa, 0x97, 0x63, 0x93, 0xbf, 0xe2, 0xf1, 0x3b, 0x43, 0x6f, 0x10, + 0x6e, 0xbd, 0x96, 0x15, 0xfd, 0xbb, 0x32, 0x7f, 0x43, 0x67, 0x31, 0xc7, 0x61, 0x09, 0x0c, 0x50, + 0xeb, 0x76, 0x4d, 0x0d, 0xfb, 0x25, 0xed, 0x43, 0x21, 0xfc, 0xad, 0x0b, 0x05, 0x20, 0x2d, 0x4e, + 0x81, 0x64, 0xd4, 0x4c, 0x24, 0xab, 0x47, 0x66, 0xbd, 0x3c, 0xb0, 0x66, 0xd3, 0xf7, 0x7d, 0x80, + 0xfa, 0x79, 0x39, 0x84, 0x34, 0x56, 0x02, 0x98, 0x7b, 0x66, 0xa3, 0x19, 0xb1, 0x4b, 0xee, 0xa9, + 0x16, 0x5a, 0x10, 0x38, 0x1a, 0x58, 0xa3, 0x9f, 0x20, 0xc7, 0x1f, 0xcf, 0xf0, 0x4f, 0x5c, 0xaf, + 0xed, 0x5d, 0xbd, 0x36, 0xd9, 0x55, 0x37, 0xed, 0x68, 0xc3, 0x43, 0xe8, 0x0f, 0xa2, 0xef, 0x75, + 0x7e, 0x1b, 0x1f, 0xd3, 0x9a, 0xb6, 0x90, 0x75, 0x4b, 0xc8, 0x12, 0xac, 0xa9, 0xbc, 0x15, 0xd6, + 0xe2, 0xb0, 0xdd, 0xa1, 0x65, 0x3a, 0x34, 0x2d, 0xcd, 0x19, 0xa8, 0x3a, 0xc7, 0x13, 0x0e, 0x78, + 0x9c, 0xab, 0x95, 0x12, 0x78, 0x40, 0xfd, 0x8b, 0x78, 0xa2, 0xaa, 0x52, 0x17, 0x50, 0x58, 0xfc, + 0x53, 0x37, 0x13, 0xd2, 0xea, 0xa2, 0x86, 0xb7, 0x18, 0xe9, 0x05, 0xa9, 0x1f, 0x87, 0x8f, 0xff, + 0xd4, 0x30, 0x9a, 0x14, 0x72, 0xdd, 0x24, 0xeb, 0x7b, 0x75, 0xf9, 0x7a, 0x0d, 0xc6, 0xe1, 0xc1, + 0xdd, 0xa8, 0x2c, 0x4f, 0xe3, 0x85, 0x0c, 0xb2, 0xf5, 0xda, 0xc1, 0xd2, 0xa8, 0xfb, 0xae, 0x11, + 0xc9, 0xd4, 0x8e, 0xf6, 0xa0, 0x54, 0x58, 0x4e, 0x14, 0x96, 0xf9, 0x27, 0xab, 0x61, 0x43, 0xcb, + 0x41, 0x3b, 0x29, 0xe5, 0x5b, 0x75, 0xcb, 0x3c, 0xbb, 0x75, 0x4f, 0x71, 0xa1, 0xf6, 0xe0, 0xa0, + 0x05, 0x3e, 0x0e, 0x26, 0x5d, 0xf0, 0x82, 0x74, 0x13, 0x6f, 0x44, 0x95, 0x6d, 0x67, 0xbe, 0x70, + 0x7c, 0x7a, 0xda, 0x6c, 0x2a, 0x84, 0x8c, 0xc9, 0x0d, 0x2f, 0xf2, 0x9b, 0x32, 0x5d, 0x9e, 0x50, + 0x4e, 0x2c, 0x8b, 0x8b, 0x57, 0xa7, 0x6f, 0xdf, 0x28, 0x84, 0x64, 0x2c, 0x1d, 0x89, 0xa9, 0x84, + 0x26, 0xbe, 0xb8, 0xa0, 0xb7, 0xf7, 0x79, 0x9f, 0x35, 0x52, 0x73, 0x87, 0xb8, 0xa2, 0x8f, 0x59, + 0x9d, 0x8c, 0x1f, 0x07, 0xe7, 0x8a, 0xfa, 0xb0, 0x84, 0x40, 0x35, 0xc8, 0x46, 0x44, 0x9f, 0xa7, + 0x61, 0x14, 0xbb, 0xbd, 0xe3, 0x70, 0x0e, 0x6e, 0x89, 0x1f, 0xf6, 0x04, 0x60, 0x00, 0xc8, 0x2e, + 0x83, 0x77, 0xcb, 0x9b, 0x4b, 0x85, 0x26, 0xb8, 0x44, 0x22, 0x1b, 0xe5, 0x24, 0x1d, 0xe1, 0x78, + 0xfc, 0x92, 0xde, 0x67, 0x79, 0x93, 0x94, 0x32, 0xc6, 0x6a, 0xdc, 0x58, 0x8c, 0x45, 0x49, 0xca, + 0x47, 0x31, 0x53, 0x53, 0xa3, 0x20, 0xc1, 0x4e, 0x75, 0x5d, 0xc9, 0x28, 0xad, 0x8b, 0xb0, 0x98, + 0x9e, 0x77, 0x16, 0x9f, 0x07, 0x59, 0x8d, 0x0a, 0xce, 0x74, 0xb5, 0x98, 0xd3, 0x1c, 0xc2, 0xa5, + 0x7e, 0x6e, 0x41, 0xbf, 0xc7, 0x84, 0x76, 0xb0, 0xb4, 0x2c, 0x96, 0x2b, 0xc9, 0xc3, 0xb4, 0xed, + 0x80, 0xe5, 0xc8, 0x36, 0x51, 0x28, 0x23, 0x52, 0x17, 0xab, 0x8d, 0x52, 0x98, 0x19, 0xa1, 0x9f, + 0x8c, 0x18, 0xf0, 0x54, 0xce, 0xe3, 0x34, 0xe5, 0x48, 0xc6, 0xd1, 0x92, 0xae, 0x56, 0xfc, 0xcc, + 0xc8, 0x2a, 0x74, 0x28, 0x2f, 0x81, 0x11, 0x16, 0x06, 0x34, 0xd9, 0x1e, 0xce, 0x7e, 0x5f, 0x90, + 0xfb, 0xe6, 0x8f, 0x34, 0xce, 0xf4, 0xe4, 0xeb, 0x35, 0x13, 0x39, 0x1b, 0x85, 0xa3, 0x3d, 0xa8, + 0xef, 0x4e, 0x5c, 0x67, 0xff, 0x1a, 0xf0, 0xe0, 0x87, 0x1f, 0x7e, 0xe8, 0x31, 0x2c, 0x47, 0xec, + 0xa0, 0xbd, 0xc6, 0xa5, 0xbd, 0x32, 0xbf, 0xc1, 0x76, 0x12, 0x53, 0xd0, 0x8c, 0xd0, 0xcd, 0xff, + 0xfb, 0x74, 0x22, 0xa3, 0x09, 0x6d, 0x10, 0xa0, 0x5a, 0xe6, 0x29, 0x54, 0x40, 0x51, 0x56, 0xa2, + 0xaf, 0x84, 0xaa, 0x56, 0x12, 0xa4, 0x32, 0x2a, 0x7d, 0x0a, 0x3f, 0xc9, 0xa2, 0xe9, 0x99, 0xec, + 0xd2, 0x12, 0xcf, 0x49, 0xa9, 0x10, 0x32, 0x5f, 0x91, 0x47, 0x74, 0x1a, 0xf4, 0xc5, 0x14, 0x76, + 0x5a, 0x5c, 0xe0, 0x4f, 0x6d, 0x04, 0x7e, 0xde, 0xd1, 0xe4, 0xaf, 0xba, 0xe5, 0x2c, 0x99, 0x48, + 0xa5, 0xcb, 0xe1, 0x28, 0xce, 0xf3, 0x0c, 0x1c, 0xf5, 0x22, 0x19, 0xbf, 0xcd, 0x6f, 0x32, 0x18, + 0xc0, 0x86, 0x4a, 0x5b, 0x17, 0x3f, 0xab, 0x55, 0x97, 0x48, 0xbc, 0xd5, 0x69, 0xbb, 0x0d, 0x7e, + 0x9b, 0x06, 0x8a, 0x1d, 0x0a, 0xcb, 0xaf, 0x29, 0xba, 0xf9, 0x1d, 0xd6, 0x7a, 0xf2, 0xf1, 0xa7, + 0x97, 0x69, 0x4c, 0x2e, 0x17, 0xd6, 0x55, 0x59, 0xd9, 0x96, 0xeb, 0x5c, 0x5c, 0x20, 0x16, 0x0c, + 0x23, 0x49, 0xaa, 0xfc, 0xc2, 0x61, 0xa6, 0xf3, 0x86, 0x4a, 0x94, 0x7e, 0xa9, 0xe6, 0x48, 0x2a, + 0x95, 0x0b, 0xd0, 0xa5, 0xa5, 0x5f, 0x69, 0x82, 0x83, 0x83, 0xa2, 0x4b, 0x97, 0x0f, 0xb2, 0xb1, + 0xd2, 0xb0, 0x10, 0x84, 0x4e, 0xe7, 0x14, 0xcb, 0x21, 0x04, 0x88, 0x64, 0xbd, 0xc6, 0xd6, 0x3d, + 0x51, 0xd6, 0x6b, 0xff, 0xc5, 0x56, 0xbb, 0xac, 0x63, 0xe0, 0x83, 0x94, 0xc1, 0x94, 0xcc, 0x81, + 0x76, 0xf6, 0x20, 0x10, 0xc6, 0xc9, 0xaa, 0xd8, 0x00, 0xbc, 0x4c, 0xfa, 0x98, 0x54, 0xb1, 0xd6, + 0x6a, 0x81, 0xd5, 0xb4, 0xa7, 0x95, 0x62, 0xcf, 0x10, 0xcd, 0xc2, 0x06, 0x38, 0x60, 0x9e, 0x26, + 0x92, 0x94, 0x27, 0xa1, 0xb8, 0xde, 0x08, 0x58, 0x8c, 0x2c, 0x74, 0x85, 0x73, 0x52, 0xd6, 0x23, + 0x65, 0xb6, 0x3e, 0x52, 0xf4, 0xc9, 0x6b, 0x72, 0xad, 0x0a, 0x28, 0x2b, 0x1f, 0xae, 0xe2, 0x38, + 0x8f, 0xd8, 0x91, 0xed, 0x46, 0xc0, 0xa2, 0x8c, 0x09, 0x30, 0x81, 0x03, 0x27, 0x0b, 0xc9, 0x03, + 0xec, 0x29, 0xec, 0x92, 0x91, 0x35, 0x85, 0xb3, 0x04, 0x36, 0x43, 0xbc, 0x07, 0x5e, 0xe0, 0x11, + 0x00, 0x59, 0x49, 0x77, 0x8b, 0x2c, 0xf0, 0x13, 0x44, 0xc2, 0x44, 0x81, 0x7b, 0x26, 0x22, 0x08, + 0xaa, 0x31, 0xa7, 0x84, 0xb2, 0x06, 0xe7, 0x27, 0x32, 0x7b, 0xb7, 0x23, 0x0d, 0xc2, 0xb8, 0xc2, + 0x77, 0x11, 0xf0, 0xee, 0xeb, 0xdd, 0xc2, 0xa1, 0x2f, 0x40, 0x01, 0x29, 0x58, 0x1d, 0xd8, 0x2d, + 0xc7, 0x08, 0xcf, 0x64, 0x71, 0x13, 0xc9, 0xbc, 0x60, 0xd7, 0xc0, 0x4c, 0x2c, 0x52, 0xb8, 0x8a, + 0x51, 0xf0, 0x12, 0x1b, 0x65, 0x53, 0x31, 0xc4, 0xb8, 0x56, 0xca, 0x2e, 0x6a, 0xd1, 0xbd, 0x50, + 0xdb, 0x3c, 0x36, 0x40, 0xc0, 0xe3, 0x29, 0xaa, 0xa3, 0x7b, 0x60, 0xd1, 0x58, 0x1a, 0xda, 0x82, + 0xe4, 0x15, 0xd6, 0xdc, 0xde, 0xc8, 0xfd, 0xc3, 0x2d, 0x44, 0x24, 0x1e, 0xf3, 0xd2, 0x85, 0x04, + 0x0c, 0xfa, 0xd7, 0xb4, 0x08, 0xf1, 0x98, 0x2d, 0xc4, 0x90, 0x37, 0x30, 0x35, 0xa8, 0x2f, 0xb5, + 0xef, 0x5d, 0x04, 0x1f, 0x5c, 0x6b, 0x8d, 0x91, 0xc8, 0x99, 0x0c, 0xad, 0xa2, 0x9b, 0x81, 0x30, + 0xcf, 0x31, 0x96, 0x56, 0x58, 0x15, 0x98, 0xed, 0xd4, 0x48, 0x35, 0xd1, 0x60, 0x7b, 0x22, 0x81, + 0x18, 0x4c, 0x82, 0x6b, 0xf0, 0xe3, 0x96, 0xd6, 0xc2, 0x78, 0x0c, 0xc8, 0x55, 0x0a, 0x72, 0xc7, + 0xbd, 0xda, 0x9d, 0xad, 0xd0, 0x4c, 0x74, 0x99, 0x06, 0x4e, 0x79, 0x4b, 0x4c, 0x1a, 0x44, 0x60, + 0x4f, 0x20, 0x29, 0x4e, 0xa6, 0xd9, 0x7b, 0x65, 0xa6, 0x01, 0x34, 0x3a, 0x38, 0x98, 0x02, 0x83, + 0xda, 0xe3, 0x8f, 0x60, 0x3d, 0x5a, 0xe0, 0xba, 0x16, 0x39, 0x70, 0x11, 0x45, 0x26, 0x6e, 0x18, + 0x44, 0xc2, 0x4d, 0x83, 0xe9, 0x68, 0x87, 0xc7, 0xb4, 0x1c, 0x37, 0x6b, 0x40, 0xf3, 0xde, 0x85, + 0x23, 0x42, 0xcf, 0x6f, 0x1e, 0xe8, 0x86, 0x9e, 0xd7, 0xe4, 0x17, 0x86, 0xe0, 0x82, 0x14, 0x7c, + 0xa8, 0xf4, 0xd4, 0x50, 0x76, 0x27, 0x94, 0xe8, 0x62, 0xfe, 0x44, 0xdc, 0xb4, 0x25, 0xe2, 0x76, + 0x9b, 0x37, 0xfc, 0x5f, 0x98, 0x9c, 0xf5, 0xe5, 0x2c, 0x48, 0x2c, 0x40, 0x88, 0x25, 0x77, 0xf8, + 0x5e, 0xcc, 0xad, 0xb0, 0xcf, 0x68, 0x07, 0x04, 0x39, 0xde, 0x6a, 0xaf, 0x2b, 0xcc, 0x6b, 0xe5, + 0xb2, 0x4c, 0xd0, 0x58, 0x7b, 0xa6, 0x62, 0x0c, 0xaf, 0x44, 0xc7, 0x73, 0x63, 0x8a, 0xe7, 0x6e, + 0xce, 0x26, 0x67, 0xe3, 0xf3, 0x2e, 0xa5, 0x03, 0xce, 0x03, 0x7e, 0xe4, 0xfc, 0xd2, 0x46, 0x51, + 0xb1, 0x75, 0x71, 0x70, 0x30, 0x67, 0xa7, 0x3c, 0x98, 0xeb, 0x61, 0xb5, 0x33, 0x56, 0x09, 0xd8, + 0x9c, 0x9d, 0x0f, 0xa5, 0xac, 0x66, 0x96, 0x7e, 0x99, 0xd9, 0xfa, 0x45, 0xad, 0x76, 0xc6, 0xec, + 0x76, 0x92, 0x50, 0x42, 0x64, 0x3a, 0x9a, 0xd9, 0x2a, 0x45, 0x41, 0x71, 0xad, 0x3a, 0xae, 0x02, + 0x7f, 0x63, 0x05, 0xf3, 0x2a, 0xc6, 0xd5, 0xd3, 0x80, 0x27, 0x76, 0xc5, 0xb9, 0x52, 0xa0, 0x02, + 0xc1, 0x35, 0xa9, 0x06, 0x04, 0xe5, 0xda, 0xf9, 0x26, 0xf4, 0x97, 0x1c, 0x9e, 0x03, 0x8b, 0x70, + 0xd6, 0x27, 0x30, 0x4b, 0x63, 0xfc, 0x77, 0x1b, 0x98, 0x60, 0x18, 0x56, 0xaa, 0x0f, 0x63, 0x10, + 0x8f, 0x62, 0x5d, 0xe1, 0xf7, 0x09, 0xc7, 0xb4, 0x8d, 0xdb, 0xca, 0x4b, 0xbc, 0x0e, 0xfa, 0xc3, + 0xeb, 0xa7, 0xb7, 0xc3, 0xeb, 0x76, 0x5b, 0x4d, 0xb5, 0x0c, 0x66, 0x67, 0xd7, 0xe7, 0xe2, 0x32, + 0x58, 0xee, 0xd0, 0xea, 0x2e, 0x00, 0xe6, 0x2e, 0x47, 0x4b, 0x4b, 0x4e, 0xb6, 0x0a, 0xe8, 0x0e, + 0x0f, 0xda, 0xbf, 0xa4, 0x58, 0xd1, 0xa7, 0x2d, 0x0d, 0xd5, 0xbe, 0xee, 0x46, 0xee, 0xa4, 0xdd, + 0x16, 0xf3, 0xb3, 0xbb, 0xf3, 0x60, 0x89, 0xad, 0x5f, 0x42, 0xcd, 0x57, 0xf8, 0x5c, 0xd6, 0xf8, + 0x1c, 0xb5, 0x8a, 0xf5, 0x7a, 0x59, 0xa3, 0xaa, 0x0b, 0x92, 0x5c, 0xbb, 0x9e, 0x5f, 0xb0, 0xb0, + 0xdc, 0x9c, 0x4d, 0xdb, 0x6d, 0x02, 0xb0, 0xd1, 0x5b, 0xb8, 0xd8, 0xd9, 0xc2, 0x85, 0xda, 0x42, + 0x0a, 0x67, 0x11, 0xcb, 0x8f, 0x58, 0x84, 0x59, 0xa5, 0xde, 0x05, 0x1c, 0xd3, 0xd6, 0xc6, 0xe7, + 0xce, 0x9b, 0x58, 0x14, 0xa5, 0x75, 0x01, 0x7e, 0xc4, 0x0f, 0x6a, 0x95, 0xaa, 0x4d, 0x4c, 0x3a, + 0x9d, 0xda, 0x25, 0x1d, 0x3f, 0x9d, 0xea, 0xe4, 0xc1, 0x78, 0x98, 0x3c, 0x85, 0x29, 0xc3, 0x64, + 0x76, 0x74, 0x73, 0xc3, 0x3e, 0xb2, 0xbb, 0x80, 0xaa, 0xa2, 0x47, 0x71, 0x0c, 0x85, 0xbb, 0xcb, + 0x55, 0xee, 0x55, 0x90, 0x7a, 0x0d, 0x96, 0xec, 0x6a, 0x54, 0x81, 0x59, 0xd4, 0xf8, 0xf0, 0xf7, + 0x98, 0xf2, 0xaa, 0xd2, 0x7c, 0xa3, 0xd6, 0xa2, 0x59, 0x87, 0x1f, 0x1c, 0x9c, 0xb8, 0x0b, 0x51, + 0x77, 0xf4, 0xfc, 0xe3, 0xf5, 0xfa, 0x9e, 0xbe, 0x90, 0x00, 0xab, 0xa3, 0xb7, 0x8a, 0x02, 0xf0, + 0x13, 0x05, 0x00, 0x7a, 0xff, 0x09, 0x3a, 0x4c, 0x3b, 0x03, 0xa8, 0xb1, 0x4e, 0x87, 0x0b, 0xe3, + 0x83, 0x83, 0x71, 0xbb, 0x3d, 0xbc, 0x04, 0x53, 0x5c, 0x6d, 0x22, 0xb8, 0x0f, 0x11, 0x58, 0x92, + 0x15, 0x6a, 0xa8, 0x98, 0x06, 0x2a, 0x2f, 0x22, 0x23, 0xac, 0x7e, 0xc2, 0x2a, 0x23, 0x42, 0xce, + 0x9d, 0xad, 0x5e, 0x22, 0xcf, 0x8f, 0x00, 0x2f, 0xdc, 0x92, 0x9c, 0x77, 0xd0, 0x5b, 0x94, 0xb3, + 0xca, 0xca, 0xb8, 0x90, 0xcf, 0x63, 0xd2, 0xa7, 0x98, 0x00, 0xba, 0x8c, 0x55, 0x09, 0x36, 0x25, + 0x8e, 0x89, 0x86, 0x93, 0x9a, 0xee, 0xe4, 0x42, 0xcf, 0x3d, 0x8b, 0x92, 0xd7, 0x20, 0xc1, 0x7b, + 0x97, 0x7e, 0x49, 0x71, 0x2b, 0xbb, 0x35, 0x7e, 0x0a, 0xc7, 0xa3, 0xee, 0x04, 0x42, 0x83, 0x95, + 0x3a, 0x9d, 0x73, 0x8f, 0xba, 0x46, 0xd4, 0x6f, 0x03, 0xc5, 0x35, 0x67, 0x69, 0xbb, 0x30, 0xb2, + 0x78, 0xd3, 0xbd, 0x27, 0x8a, 0xf1, 0xc4, 0xb6, 0x88, 0x2a, 0x99, 0xc9, 0x78, 0x2a, 0x1d, 0xd6, + 0xd6, 0x19, 0x2d, 0x84, 0xb2, 0x0a, 0x60, 0xc0, 0x61, 0xed, 0x7a, 0x4d, 0xf1, 0x68, 0x26, 0xe8, + 0x99, 0xff, 0x18, 0x44, 0x4f, 0xbd, 0x7a, 0x7c, 0xec, 0x39, 0x46, 0x21, 0x92, 0x65, 0x21, 0x5f, + 0x35, 0xb1, 0x43, 0x28, 0x54, 0xa8, 0x79, 0xe0, 0xd5, 0x13, 0x08, 0xec, 0xc8, 0x61, 0xf5, 0x66, + 0x7a, 0xeb, 0x2b, 0xe5, 0x5c, 0x1c, 0x49, 0xca, 0x15, 0x71, 0x48, 0xbd, 0x3f, 0x39, 0x0d, 0xc7, + 0xd4, 0xb4, 0xfb, 0xd8, 0x56, 0xa7, 0x37, 0x1e, 0x14, 0x47, 0x29, 0x92, 0xda, 0x9f, 0x7b, 0x6f, + 0x65, 0xfd, 0x02, 0xdb, 0x79, 0x18, 0xe6, 0xa3, 0x37, 0x6e, 0x0e, 0x99, 0xd6, 0x0e, 0xe7, 0xb6, + 0xc6, 0x80, 0xd1, 0x77, 0x77, 0xaa, 0x60, 0x2f, 0x26, 0x3a, 0x8e, 0xe6, 0x78, 0xa6, 0xc2, 0xd5, + 0x4e, 0xbf, 0xf5, 0x9a, 0xe2, 0x7d, 0x51, 0xe0, 0x8f, 0xe5, 0x13, 0x53, 0x91, 0x6d, 0x97, 0x44, + 0x7f, 0xb8, 0xf3, 0xda, 0x76, 0xc9, 0xa1, 0x95, 0x19, 0xa0, 0x9b, 0x91, 0xa0, 0x9a, 0x66, 0xaa, + 0xa1, 0xb6, 0x46, 0xb0, 0xf8, 0xf1, 0x66, 0xa3, 0xe2, 0x21, 0x3b, 0x73, 0xf3, 0x61, 0x8b, 0x8a, + 0x70, 0x2f, 0x4c, 0xca, 0x8d, 0x09, 0x42, 0xe0, 0x72, 0x99, 0x93, 0xf4, 0xb1, 0xd9, 0x33, 0x05, + 0xec, 0x82, 0x12, 0xc2, 0x23, 0x4a, 0x09, 0xc6, 0x77, 0x0f, 0xa4, 0x4b, 0x20, 0xc4, 0xb2, 0x4b, + 0x5f, 0xc9, 0x73, 0x33, 0x06, 0x08, 0x9c, 0xe8, 0xd6, 0x25, 0xb7, 0x7a, 0x5b, 0xce, 0x11, 0x08, + 0xa1, 0x61, 0x04, 0xd7, 0xf0, 0x2e, 0xc8, 0x68, 0x81, 0xb3, 0xc3, 0xb3, 0xe2, 0x7c, 0xc7, 0x87, + 0x92, 0xc6, 0xcf, 0xcb, 0x6a, 0x9f, 0x86, 0xbb, 0x99, 0x92, 0x08, 0x59, 0x61, 0x20, 0xa4, 0x2b, + 0xc4, 0x00, 0x31, 0x90, 0x71, 0x55, 0xb2, 0x1a, 0x6b, 0xd7, 0x66, 0x8f, 0x76, 0x8c, 0x63, 0x4d, + 0x83, 0xe6, 0xdc, 0x42, 0xf2, 0x1f, 0xb6, 0xed, 0xe1, 0x2c, 0x54, 0x49, 0xdf, 0x38, 0x50, 0xd1, + 0xae, 0x2e, 0x90, 0xbf, 0x4a, 0x14, 0xa3, 0x7f, 0x8d, 0x36, 0x66, 0x9a, 0x6a, 0xed, 0x1f, 0xa8, + 0x4c, 0x61, 0x95, 0xa1, 0xa5, 0xa6, 0xaa, 0x40, 0x2d, 0x55, 0xce, 0x47, 0xda, 0x4b, 0xe8, 0x4e, + 0x63, 0xf9, 0x22, 0x2e, 0x92, 0xdb, 0x78, 0x7c, 0x42, 0xef, 0x03, 0xfc, 0x58, 0xe4, 0xd7, 0x9c, + 0x40, 0x52, 0x5e, 0x3b, 0xb9, 0x6a, 0xf0, 0x1c, 0x47, 0x56, 0xc8, 0xf4, 0x6b, 0x92, 0xa6, 0xfb, + 0x81, 0x54, 0x55, 0xeb, 0x72, 0x16, 0xd1, 0xae, 0xfe, 0x10, 0x47, 0x31, 0xe0, 0x6b, 0xa8, 0x9f, + 0x69, 0x54, 0x51, 0x23, 0xa5, 0x5c, 0xb2, 0x96, 0x5e, 0xa6, 0x64, 0x6b, 0xef, 0x2a, 0xee, 0x3a, + 0x56, 0x65, 0xc6, 0x87, 0x55, 0xae, 0x7b, 0x82, 0xd9, 0xcc, 0x63, 0x40, 0xbe, 0x26, 0xf7, 0x62, + 0xd0, 0xd5, 0x18, 0x2e, 0x31, 0xb7, 0xe2, 0x57, 0x75, 0xa1, 0x8a, 0x58, 0xd8, 0x28, 0x1e, 0x08, + 0xce, 0x9a, 0x61, 0xe2, 0x81, 0xfa, 0xe5, 0xd8, 0x3c, 0xe9, 0x96, 0xcb, 0x2c, 0xaa, 0x3c, 0xef, + 0x5f, 0xf8, 0x72, 0x11, 0xef, 0x88, 0xb0, 0x34, 0xa2, 0x54, 0xa4, 0xff, 0x1a, 0x24, 0x1c, 0x80, + 0x7c, 0x94, 0xac, 0xd2, 0x64, 0x12, 0x5b, 0x82, 0xf4, 0xba, 0x0e, 0x17, 0xc0, 0x77, 0xad, 0x7a, + 0x56, 0x1d, 0x3e, 0x08, 0xf6, 0x37, 0xcc, 0x02, 0x11, 0x0a, 0x50, 0x76, 0x08, 0xf3, 0xc0, 0xac, + 0x56, 0x7b, 0x63, 0x4f, 0xc4, 0xda, 0x5a, 0x08, 0x5f, 0x44, 0x55, 0x30, 0x09, 0xd7, 0xeb, 0x14, + 0x7e, 0xc9, 0x0e, 0xca, 0x22, 0x78, 0x29, 0x6a, 0xa1, 0x70, 0x55, 0x64, 0xcd, 0xc4, 0xb7, 0xc1, + 0x64, 0xbd, 0x1e, 0x43, 0xed, 0x6c, 0xc5, 0x2c, 0x1c, 0x5e, 0x5e, 0x07, 0x73, 0xd2, 0xfa, 0x5f, + 0xcd, 0x2e, 0x69, 0xf0, 0xd6, 0xe5, 0xe4, 0x65, 0xaa, 0xe9, 0xf0, 0xc5, 0x41, 0x2e, 0x1c, 0x2b, + 0x8f, 0x3a, 0xf3, 0x16, 0x61, 0xa1, 0xc5, 0x44, 0x13, 0x9b, 0x68, 0x32, 0xab, 0x1a, 0x6e, 0x2c, + 0xba, 0xce, 0xc5, 0x91, 0xd2, 0x5e, 0xfc, 0xa5, 0x9a, 0x9b, 0x74, 0xbc, 0x43, 0x10, 0x4d, 0xac, + 0x7b, 0x5a, 0x5d, 0x76, 0xe5, 0xbc, 0x11, 0xc5, 0x7d, 0xbb, 0x7c, 0x6a, 0xc6, 0x37, 0x56, 0xeb, + 0x81, 0x15, 0xc3, 0x84, 0xf5, 0xaa, 0xad, 0xc5, 0x45, 0x5b, 0x4c, 0x67, 0x13, 0x25, 0xd8, 0x65, + 0xd9, 0x4a, 0xa9, 0x70, 0xc0, 0x53, 0xa7, 0xad, 0x07, 0xa2, 0x75, 0x01, 0x85, 0x11, 0x48, 0xad, + 0xa6, 0xea, 0x89, 0x81, 0x45, 0xd6, 0xba, 0xc7, 0x95, 0x58, 0x44, 0x06, 0xe3, 0x4d, 0xed, 0x2e, + 0x45, 0xbb, 0x13, 0xda, 0x0e, 0x1a, 0x4e, 0xb2, 0x70, 0x0e, 0x84, 0x68, 0xe3, 0x6e, 0x76, 0xea, + 0x5e, 0x07, 0xf7, 0xb6, 0xba, 0x33, 0x98, 0x23, 0x95, 0xae, 0x58, 0x8a, 0x4b, 0xb8, 0xa0, 0x9c, + 0x8c, 0xf8, 0x42, 0x70, 0x7c, 0xa7, 0xb8, 0x78, 0x81, 0xe0, 0xb5, 0xf0, 0x86, 0xf0, 0xd8, 0xa6, + 0xb0, 0xf5, 0xc9, 0x8e, 0x66, 0xbd, 0x3b, 0x38, 0x58, 0xf0, 0x51, 0x07, 0x07, 0x1a, 0x78, 0x18, + 0xfd, 0x01, 0x43, 0xb8, 0x80, 0xdc, 0xb0, 0x4f, 0xe0, 0xbb, 0xcb, 0x20, 0x11, 0x36, 0x3b, 0x06, + 0x09, 0x62, 0xcf, 0x3b, 0xf4, 0x88, 0x28, 0x7c, 0xaf, 0x10, 0x57, 0x3f, 0x12, 0x07, 0x27, 0x7b, + 0xa1, 0x31, 0x74, 0xbd, 0x02, 0xdc, 0x57, 0x80, 0xc5, 0x6b, 0x94, 0x28, 0x0c, 0xa5, 0x44, 0x00, + 0xbc, 0xec, 0x84, 0xc5, 0x41, 0x25, 0xa9, 0xca, 0xe0, 0x56, 0x60, 0x5e, 0x5a, 0xae, 0x5b, 0x6e, + 0xc9, 0x82, 0x39, 0x7a, 0xba, 0x5d, 0xaf, 0x07, 0x9c, 0x47, 0xa5, 0x1e, 0x4d, 0x41, 0x2b, 0x81, + 0x7c, 0x86, 0xb8, 0x95, 0x82, 0xdd, 0x1c, 0xd1, 0xe6, 0x44, 0xdc, 0xc2, 0xd7, 0xb5, 0x22, 0x36, + 0x9e, 0x97, 0xf3, 0xf2, 0x70, 0xe6, 0x29, 0x12, 0x00, 0x6a, 0xf0, 0x33, 0x55, 0x38, 0xbb, 0x0a, + 0xec, 0xbe, 0xc3, 0x2b, 0xd5, 0x07, 0x3f, 0xee, 0xd5, 0x76, 0xa8, 0x77, 0x29, 0x6e, 0x61, 0xf1, + 0xc8, 0x93, 0x6f, 0x08, 0x9b, 0x6f, 0x55, 0xd8, 0x4c, 0x9e, 0xfa, 0xf2, 0xe0, 0xe0, 0x8d, 0xbb, + 0xe4, 0xcc, 0x29, 0xed, 0x33, 0xb8, 0xc4, 0xca, 0x5b, 0x59, 0x9d, 0x29, 0x3b, 0x06, 0x7e, 0x4e, + 0x02, 0x39, 0x3c, 0x09, 0x4e, 0xf6, 0x50, 0x37, 0xf4, 0xdc, 0xe3, 0xe0, 0xc4, 0xd3, 0x03, 0x87, + 0x97, 0xf6, 0x4c, 0xc7, 0xe2, 0xf2, 0x1e, 0xa7, 0xf6, 0xd8, 0x26, 0xf4, 0x66, 0x43, 0x13, 0xb5, + 0xa0, 0x5d, 0xf2, 0xd1, 0x2b, 0x73, 0x06, 0xe3, 0x5f, 0x50, 0xd2, 0xd4, 0xce, 0xbe, 0x35, 0x08, + 0x5d, 0x55, 0x4b, 0x2c, 0x28, 0xae, 0x29, 0x08, 0xbe, 0x50, 0xb2, 0x70, 0x0c, 0x2b, 0x4f, 0xef, + 0x7b, 0x55, 0x47, 0x9b, 0x5e, 0x43, 0x13, 0x9f, 0xe2, 0x28, 0x87, 0x40, 0x7a, 0xc3, 0x53, 0x38, + 0x6d, 0x9c, 0x26, 0xdb, 0xd4, 0x3a, 0xf8, 0x8d, 0x7d, 0xa0, 0x41, 0x5b, 0x1c, 0xee, 0xda, 0xd7, + 0x6d, 0x05, 0x90, 0x5d, 0x37, 0x9a, 0x3b, 0x5d, 0xef, 0x92, 0xec, 0x5d, 0x1a, 0x49, 0x1e, 0xde, + 0xef, 0xaa, 0xc5, 0xda, 0x29, 0xa7, 0x03, 0xd7, 0x3d, 0x6f, 0x2d, 0xbe, 0xd7, 0x5b, 0x7b, 0xe7, + 0x5a, 0xca, 0x22, 0x86, 0xc3, 0x6f, 0x90, 0x09, 0x1f, 0x2d, 0xde, 0x32, 0x34, 0xdc, 0xbf, 0xde, + 0xe6, 0x52, 0xf9, 0x8e, 0x2a, 0xb1, 0x6a, 0x0e, 0xc5, 0x84, 0xf1, 0x41, 0x58, 0x0d, 0xc5, 0xaa, + 0xa8, 0x54, 0x9a, 0x54, 0x05, 0xa5, 0xd5, 0xea, 0xc7, 0xf5, 0x9a, 0xce, 0xa3, 0x18, 0xc8, 0x0e, + 0xaa, 0xe1, 0xcf, 0xd5, 0xb3, 0x5d, 0x5a, 0x79, 0x30, 0xe3, 0x69, 0xa8, 0xb3, 0xdb, 0xd5, 0xa6, + 0x3e, 0xf2, 0x28, 0x10, 0x30, 0x16, 0x4f, 0x4d, 0x54, 0x3c, 0x2c, 0x10, 0xca, 0x35, 0x1d, 0x08, + 0xc0, 0xcf, 0x62, 0x50, 0x35, 0xf8, 0xbb, 0xff, 0x1d, 0x7c, 0xe3, 0xa9, 0x42, 0x35, 0xc3, 0x5b, + 0x77, 0x59, 0xbb, 0x97, 0x62, 0x45, 0x17, 0xb4, 0x69, 0xd7, 0xfe, 0xf6, 0x45, 0x02, 0x8d, 0xa6, + 0xca, 0xc2, 0xba, 0xdb, 0x15, 0x16, 0xba, 0x3c, 0x1b, 0x8b, 0x5a, 0x3d, 0xdb, 0xad, 0xf7, 0x1c, + 0xbe, 0xd6, 0x5d, 0x2c, 0x92, 0xc0, 0x95, 0xf2, 0x04, 0x09, 0x47, 0x13, 0xf6, 0xf5, 0xe9, 0xbc, + 0x27, 0x4a, 0x75, 0xb7, 0x79, 0x23, 0x80, 0x85, 0x48, 0x6b, 0x6f, 0x6b, 0xf9, 0x58, 0xfc, 0x67, + 0x21, 0x48, 0x52, 0x8c, 0x7c, 0x4b, 0xe1, 0x08, 0x30, 0x54, 0x97, 0x7a, 0xb8, 0xb7, 0xda, 0x6c, + 0x94, 0x15, 0x58, 0x04, 0x0e, 0xf8, 0xbd, 0x8c, 0xc7, 0xf9, 0x5d, 0xe6, 0x88, 0x2b, 0x5d, 0x22, + 0xd4, 0x3a, 0x08, 0xb9, 0x55, 0xe9, 0x66, 0xee, 0x88, 0x17, 0x74, 0x4d, 0xe4, 0x26, 0x9a, 0x61, + 0x33, 0x85, 0x74, 0xc4, 0xaf, 0xba, 0xa8, 0x3a, 0x3e, 0xd7, 0x25, 0xcc, 0xe2, 0x20, 0x32, 0xa8, + 0xa6, 0xa1, 0x13, 0x6d, 0x43, 0x6a, 0x49, 0x6b, 0x8e, 0xb5, 0x04, 0xd3, 0xba, 0xa4, 0xc6, 0xe9, + 0x4d, 0x32, 0x0e, 0xdc, 0xb7, 0xa1, 0x9c, 0x75, 0x8b, 0x30, 0x1b, 0xe7, 0xd7, 0xae, 0xd7, 0x1e, + 0x78, 0x5d, 0x99, 0xeb, 0x3c, 0xdf, 0xe3, 0x27, 0xf6, 0x79, 0xd3, 0x77, 0xde, 0xc6, 0x1c, 0x65, + 0xaa, 0x63, 0xe1, 0x0b, 0xa6, 0xf2, 0xc5, 0x05, 0xc9, 0x90, 0x6b, 0x07, 0x18, 0x81, 0x4a, 0x1c, + 0xea, 0x4c, 0x9e, 0xcb, 0xc7, 0x9a, 0x55, 0xe3, 0x6e, 0xf8, 0xe0, 0x59, 0xb1, 0xc8, 0xde, 0x29, + 0x82, 0x7d, 0x93, 0xe3, 0x52, 0x91, 0x94, 0x3d, 0xae, 0xb3, 0x85, 0x78, 0x71, 0xce, 0x7b, 0x10, + 0xab, 0x79, 0x58, 0x96, 0xf0, 0x84, 0xfc, 0xd6, 0x60, 0xe3, 0x6d, 0x84, 0x6c, 0x02, 0x67, 0x29, + 0x17, 0x1b, 0xe2, 0x5d, 0x23, 0xc4, 0x1d, 0x20, 0x33, 0x60, 0x26, 0x55, 0xcc, 0x1e, 0x6c, 0xf1, + 0x00, 0x33, 0x2b, 0xad, 0x55, 0x1d, 0x12, 0xbb, 0x8a, 0xa8, 0xa4, 0x01, 0x15, 0x41, 0x4a, 0xf2, + 0xf1, 0xf9, 0x1e, 0xdf, 0xf8, 0x54, 0x55, 0x9c, 0xf5, 0xcf, 0x7d, 0x04, 0x28, 0x94, 0x27, 0x4c, + 0x13, 0x8c, 0xfc, 0x4d, 0x64, 0xd5, 0xf3, 0xbf, 0x11, 0xb0, 0x55, 0xab, 0x21, 0x17, 0xe2, 0x39, + 0xbd, 0x81, 0x0b, 0xbc, 0x1f, 0x73, 0x33, 0xbc, 0x7a, 0x9a, 0xa1, 0xbc, 0x4b, 0xf8, 0x30, 0x8d, + 0x8f, 0x72, 0xbc, 0x55, 0x84, 0xbe, 0x0f, 0x16, 0x3e, 0xff, 0xbc, 0xf0, 0x2f, 0x5d, 0x93, 0x43, + 0x15, 0x67, 0x57, 0xe2, 0x57, 0x71, 0x2c, 0x9e, 0x37, 0xe1, 0x48, 0x91, 0x5e, 0x6d, 0xeb, 0x35, + 0x5d, 0x77, 0x73, 0xd5, 0xc9, 0x8c, 0x73, 0x72, 0xfa, 0xec, 0xc3, 0xa9, 0xe3, 0xa9, 0x9c, 0xc8, + 0x90, 0x81, 0x5e, 0x29, 0xd8, 0xbf, 0xfa, 0xf7, 0x8d, 0x79, 0xfb, 0xfe, 0xe3, 0xcb, 0xed, 0x21, + 0xc7, 0x6a, 0xc8, 0xf3, 0x7b, 0x87, 0xbc, 0x7c, 0xf7, 0xc2, 0xf1, 0xc4, 0xdd, 0xd7, 0x2d, 0x76, + 0x03, 0x62, 0x6c, 0x60, 0x74, 0xeb, 0x30, 0xf7, 0x63, 0x6d, 0x6b, 0xf4, 0x3b, 0x81, 0x59, 0x78, + 0x9b, 0x4c, 0x43, 0x72, 0x8b, 0xe9, 0xeb, 0xeb, 0xcf, 0xa6, 0x04, 0x33, 0x0f, 0x7a, 0xbf, 0xbb, + 0xee, 0xa8, 0x15, 0xcd, 0xe0, 0x1a, 0xc7, 0x6b, 0xac, 0xa2, 0x80, 0x92, 0xf3, 0xba, 0xde, 0x61, + 0x19, 0x4e, 0xc2, 0x22, 0xe9, 0x25, 0xea, 0xf0, 0x17, 0xac, 0x9b, 0x05, 0xbd, 0xe4, 0xe7, 0x19, + 0xf8, 0x64, 0x9d, 0xfc, 0x9c, 0x8f, 0xf1, 0x27, 0x1c, 0x5b, 0xad, 0x45, 0xb0, 0xf3, 0xe6, 0xa1, + 0x89, 0x4a, 0xe1, 0x91, 0x64, 0xa3, 0x42, 0x31, 0x4a, 0x94, 0xa7, 0x6d, 0xa7, 0xd7, 0x73, 0xda, + 0x45, 0x77, 0x96, 0x97, 0x12, 0x3f, 0x73, 0x08, 0x15, 0x25, 0x6d, 0xf1, 0x58, 0xc6, 0x61, 0x11, + 0xcd, 0xda, 0xd2, 0xb7, 0x6e, 0x90, 0xfc, 0xb8, 0x7f, 0xaa, 0x54, 0x74, 0xb2, 0xa7, 0xc1, 0xe0, + 0xfb, 0xfe, 0xa8, 0xef, 0x0f, 0xaa, 0xc8, 0xf7, 0x30, 0x60, 0xe9, 0xfc, 0xf9, 0x75, 0x0f, 0x2d, + 0xa2, 0xd8, 0x2e, 0x3a, 0x6f, 0x1f, 0x38, 0x6d, 0x57, 0xb6, 0xf3, 0x43, 0xae, 0x8d, 0xf2, 0x12, + 0x3e, 0xa2, 0xd7, 0x76, 0xa8, 0x36, 0x36, 0xb5, 0x65, 0x92, 0xe9, 0xda, 0x67, 0xa8, 0xcf, 0xb9, + 0x95, 0xfe, 0xf6, 0xf1, 0x9b, 0xe8, 0xdf, 0x6d, 0x18, 0x59, 0x23, 0x8c, 0xcc, 0x8e, 0xb9, 0x1e, + 0xda, 0xf6, 0xbe, 0x10, 0x64, 0x9d, 0x6f, 0x8a, 0xd4, 0xac, 0x7a, 0xee, 0xf2, 0x59, 0x82, 0x58, + 0xf1, 0x31, 0xa5, 0xef, 0x24, 0x05, 0x94, 0x84, 0x62, 0x04, 0x47, 0x2c, 0x10, 0x24, 0x2c, 0xc4, + 0x12, 0x7f, 0x97, 0x42, 0x7d, 0x13, 0x7d, 0x55, 0x7d, 0x17, 0xd7, 0xe1, 0xcf, 0x5d, 0xa1, 0x17, + 0xa8, 0x8e, 0x18, 0x11, 0x70, 0x40, 0x50, 0x47, 0x68, 0x6d, 0x42, 0x5c, 0x31, 0xcd, 0x48, 0xfb, + 0xaf, 0xf8, 0xd4, 0xf4, 0x15, 0x2c, 0xb4, 0xff, 0x11, 0x7e, 0x00, 0xc9, 0x6b, 0x5e, 0x24, 0xd3, + 0x84, 0x62, 0xdd, 0x96, 0x1a, 0x18, 0x25, 0x45, 0x44, 0xd3, 0x35, 0xac, 0xe1, 0xe2, 0x82, 0x93, + 0x50, 0x8e, 0x28, 0xfc, 0x58, 0xd0, 0x77, 0x9d, 0x7c, 0x87, 0x5e, 0xbb, 0x76, 0x38, 0xc5, 0x99, + 0x5f, 0xc5, 0xea, 0xc5, 0x6f, 0xc7, 0x3f, 0x12, 0xaa, 0xec, 0x3b, 0xf4, 0x6a, 0xba, 0xb3, 0xf9, + 0x3a, 0xd8, 0xfc, 0x95, 0x1c, 0x86, 0xdd, 0x39, 0xfa, 0x4a, 0xe8, 0x93, 0xc9, 0x04, 0xd0, 0xbd, + 0xcd, 0xc3, 0xad, 0xfb, 0x26, 0xc1, 0x6a, 0xe1, 0xf7, 0x81, 0x28, 0x90, 0xdd, 0xff, 0x5e, 0x00, + 0xbd, 0x9c, 0x87, 0x16, 0x6a, 0xa3, 0xbe, 0x69, 0xdc, 0x6c, 0x58, 0xeb, 0xfc, 0x14, 0x3c, 0x2b, + 0x8a, 0x70, 0x49, 0x89, 0xc9, 0x74, 0xc9, 0x3e, 0x91, 0x58, 0xe9, 0x3c, 0xf9, 0xe3, 0x27, 0xfd, + 0x8d, 0xd7, 0xbd, 0x0e, 0xe7, 0xee, 0xb6, 0x01, 0xae, 0xae, 0xa5, 0x78, 0xe2, 0xaf, 0x2d, 0xc5, + 0x56, 0x51, 0x39, 0x76, 0x49, 0xcb, 0x29, 0x90, 0x2c, 0x99, 0xd5, 0x45, 0xb8, 0xca, 0x12, 0x50, + 0xcc, 0x14, 0x5b, 0x96, 0x40, 0x92, 0x25, 0x88, 0xef, 0xb5, 0x04, 0x72, 0x2b, 0xf5, 0xb4, 0x63, + 0x09, 0x62, 0xdb, 0x12, 0x5c, 0x54, 0xdf, 0x55, 0x78, 0x96, 0x4d, 0xe1, 0x44, 0x6e, 0xaf, 0x5d, + 0xbb, 0x84, 0x95, 0x59, 0xef, 0xde, 0xcd, 0xe2, 0x38, 0xe5, 0x9e, 0x9a, 0x09, 0x61, 0x8f, 0xe8, + 0x36, 0x4c, 0x1e, 0x5d, 0xdd, 0x25, 0x25, 0xe7, 0x13, 0x77, 0x7b, 0xbf, 0x48, 0x8a, 0x98, 0x41, + 0x8e, 0x3a, 0x40, 0x51, 0x5b, 0x76, 0xdc, 0x78, 0xd4, 0xc9, 0x7d, 0xb8, 0x95, 0x79, 0x47, 0x7a, + 0x8f, 0xa8, 0x0e, 0xff, 0xf1, 0xc3, 0x46, 0x58, 0x5b, 0x32, 0xc9, 0x2e, 0x1b, 0x65, 0x5a, 0x14, + 0x08, 0x47, 0x24, 0x0b, 0x4c, 0x62, 0x41, 0x57, 0x8b, 0xd4, 0x97, 0x10, 0x7e, 0xe5, 0x32, 0x45, + 0xa0, 0x8a, 0x4b, 0x3e, 0xf0, 0x87, 0x11, 0x44, 0xc2, 0x09, 0x88, 0x14, 0x7a, 0x6b, 0x56, 0xde, + 0x8a, 0x32, 0xc8, 0x7b, 0x47, 0x9d, 0x8c, 0x52, 0x15, 0xec, 0x5a, 0x6c, 0x23, 0xc0, 0x4d, 0xba, + 0x33, 0x0a, 0x77, 0x0e, 0x5d, 0x4b, 0x03, 0xc0, 0x55, 0xa5, 0x1c, 0x4a, 0x6f, 0xd0, 0xef, 0x1f, + 0xba, 0x65, 0x87, 0x0e, 0xb3, 0xd4, 0x37, 0x6d, 0xa0, 0x4b, 0x3c, 0x11, 0x05, 0x65, 0x3b, 0x13, + 0x33, 0xfa, 0xfb, 0x59, 0xc9, 0x64, 0x6c, 0x38, 0x42, 0x7d, 0xce, 0x20, 0x17, 0xfa, 0x9b, 0x1a, + 0xf9, 0xfd, 0xd2, 0x29, 0xcc, 0xb7, 0x0c, 0x1c, 0xfe, 0x86, 0x02, 0x49, 0x2b, 0x00, 0x83, 0x77, + 0x4b, 0x87, 0x3d, 0x66, 0x2a, 0xd1, 0xb7, 0x1f, 0xc2, 0xf4, 0x27, 0xfa, 0xa1, 0x97, 0x8b, 0xc4, + 0x2a, 0x19, 0xfb, 0xc6, 0xe5, 0xe0, 0xee, 0x25, 0xbd, 0xa2, 0x25, 0x56, 0xf9, 0x64, 0x42, 0x77, + 0xbb, 0x9d, 0xfe, 0x23, 0x96, 0x90, 0x7c, 0xae, 0xbe, 0x39, 0xe1, 0x54, 0x62, 0xd1, 0xd0, 0x97, + 0xbe, 0x27, 0xd9, 0xd8, 0x5b, 0xd7, 0xe9, 0x6f, 0x15, 0xa0, 0x96, 0xa4, 0xd6, 0x63, 0x10, 0x8d, + 0x9b, 0x86, 0xd4, 0xde, 0xec, 0x4b, 0x66, 0x69, 0x8b, 0xed, 0x46, 0xfc, 0xb4, 0x23, 0x3b, 0x95, + 0xe4, 0x00, 0x2a, 0x69, 0x79, 0x00, 0xa6, 0x43, 0x22, 0x29, 0xc6, 0xfe, 0x8f, 0x6e, 0x24, 0x66, + 0xa2, 0xec, 0x1d, 0x09, 0x78, 0xfe, 0xed, 0x41, 0xf7, 0x3b, 0xaf, 0x12, 0xf2, 0x59, 0x99, 0xba, + 0x4e, 0x7b, 0x8f, 0xaf, 0x01, 0xae, 0xed, 0x08, 0xfe, 0x42, 0xa6, 0xa0, 0x0f, 0x12, 0x7b, 0x58, + 0xf0, 0x46, 0xad, 0xb8, 0x51, 0xcb, 0xe8, 0x65, 0x97, 0xa1, 0xd4, 0x9f, 0x6e, 0x73, 0x44, 0x04, + 0xfb, 0x2f, 0xa2, 0xa5, 0x0f, 0x06, 0xab, 0x96, 0xce, 0xdf, 0xc2, 0x6b, 0x7f, 0x74, 0x9d, 0x6f, + 0x9c, 0xb6, 0xc1, 0x3a, 0x26, 0x22, 0xe8, 0xd0, 0x95, 0x0c, 0xe4, 0x8d, 0x79, 0x71, 0xfd, 0x7e, + 0x95, 0xa6, 0x27, 0x4b, 0x4d, 0xcf, 0xe6, 0xb9, 0x58, 0x39, 0x8a, 0xea, 0xfb, 0x10, 0x9d, 0xa4, + 0x7b, 0x4b, 0x0c, 0xb9, 0xf9, 0xe2, 0x26, 0x94, 0x6c, 0x34, 0x03, 0x55, 0x2a, 0x53, 0x23, 0xcf, + 0x88, 0x11, 0x5f, 0x5c, 0xdf, 0xa5, 0x56, 0xc6, 0x13, 0x3d, 0x14, 0xab, 0xc2, 0x2f, 0x58, 0x4b, + 0x1a, 0x21, 0x3b, 0xb9, 0x9d, 0x1a, 0x65, 0x69, 0xaa, 0xde, 0x73, 0x11, 0x26, 0x28, 0x6a, 0xa7, + 0xb5, 0xbd, 0x0b, 0x11, 0xfc, 0xfb, 0x33, 0x53, 0x43, 0xb6, 0x2e, 0x24, 0x1a, 0x6c, 0x0b, 0xbd, + 0xe5, 0xc7, 0x04, 0xf7, 0xdd, 0x53, 0xc8, 0xbb, 0xf4, 0xbd, 0x12, 0x88, 0x75, 0x4e, 0x5f, 0x0a, + 0xa1, 0x2b, 0x0a, 0x95, 0xca, 0x81, 0x54, 0x97, 0x4a, 0x2d, 0x80, 0x39, 0xd2, 0x20, 0xec, 0x94, + 0x95, 0xac, 0x96, 0x5b, 0x4a, 0x01, 0x45, 0x4b, 0x67, 0x0c, 0x25, 0xba, 0xba, 0xb2, 0x53, 0x20, + 0x68, 0xa1, 0xa7, 0xb8, 0x93, 0x78, 0xfa, 0x8a, 0x33, 0x2f, 0x36, 0x94, 0x61, 0x76, 0xe4, 0xc6, + 0xe4, 0xcf, 0xcf, 0x9a, 0xd5, 0x86, 0x72, 0xee, 0xc9, 0x95, 0x74, 0xa3, 0x43, 0xfa, 0x97, 0x2f, + 0x7a, 0x5a, 0x7f, 0xc0, 0xc8, 0xb3, 0x06, 0xb9, 0x51, 0x90, 0xae, 0xb1, 0x6d, 0xb5, 0xff, 0x3f, + 0x0b, 0x84, 0x0b, 0x87, 0xb2, 0x1d, 0x1f, 0xc2, 0xfb, 0x49, 0xe1, 0x72, 0x76, 0xf3, 0x4c, 0xf9, + 0x6f, 0x99, 0x58, 0xcd, 0x40, 0xa5, 0xd2, 0xb7, 0x80, 0x82, 0xd2, 0xbd, 0xf4, 0xf0, 0xc6, 0x23, + 0xd7, 0x3b, 0xde, 0x50, 0x7e, 0xa0, 0x32, 0x1f, 0x7f, 0xda, 0xba, 0xba, 0x33, 0x78, 0x4a, 0xc7, + 0x61, 0xe3, 0x78, 0xf1, 0x7e, 0xe2, 0x3a, 0x8f, 0xe8, 0x1e, 0x60, 0x30, 0x0f, 0x8b, 0x32, 0xfe, + 0x91, 0x3e, 0x7c, 0x42, 0xe3, 0x8c, 0x5b, 0x35, 0x8a, 0x59, 0x9f, 0x65, 0xbe, 0x95, 0xf6, 0xff, + 0xcd, 0x16, 0x3b, 0x1a, 0xf5, 0x3a, 0x93, 0x94, 0x17, 0x7e, 0x62, 0xf9, 0x24, 0xff, 0xb6, 0xaf, + 0x3e, 0xd5, 0x31, 0x0c, 0xfa, 0x10, 0xaa, 0x4f, 0x28, 0x76, 0x72, 0x8f, 0x04, 0x54, 0x82, 0x3a, + 0x83, 0xfb, 0x47, 0xe0, 0xb8, 0x23, 0xff, 0xac, 0xf3, 0xe9, 0x53, 0xfb, 0x7c, 0xf4, 0xe9, 0xd3, + 0xf8, 0xf0, 0xd3, 0xa7, 0x2e, 0x7e, 0xda, 0x8f, 0x46, 0xde, 0x7a, 0xab, 0x81, 0x6a, 0x1c, 0xf1, + 0xcf, 0xc0, 0x39, 0xfb, 0xf4, 0xa9, 0x5c, 0x7f, 0xfa, 0xe4, 0x9e, 0xb7, 0x21, 0x5b, 0xff, 0x80, + 0x34, 0x9d, 0x09, 0x14, 0xcb, 0xfb, 0x8a, 0x78, 0x06, 0x4c, 0x6f, 0xe4, 0x88, 0x7f, 0xfd, 0xed, + 0xb1, 0xf7, 0x82, 0xfa, 0x0f, 0x1f, 0xc3, 0x7c, 0x88, 0xa7, 0x2f, 0x17, 0xa4, 0x64, 0xa7, 0x97, + 0x4e, 0xfb, 0x9f, 0x10, 0x69, 0xb9, 0x5b, 0x1d, 0x3a, 0xed, 0x7f, 0x81, 0x67, 0xb6, 0xeb, 0xa1, + 0x83, 0xb8, 0x7b, 0xbe, 0x57, 0xad, 0xba, 0x23, 0xc0, 0x71, 0x7e, 0xc7, 0xde, 0xbf, 0x19, 0xad, + 0xfb, 0x0b, 0xda, 0x74, 0x81, 0x0a, 0xf7, 0xac, 0xdf, 0xf9, 0x21, 0xec, 0x4c, 0x9e, 0x75, 0x7e, + 0x3c, 0x5f, 0xc1, 0x21, 0x77, 0x44, 0xb2, 0x5b, 0x7b, 0x44, 0xb5, 0xe5, 0x36, 0x50, 0xa7, 0x9d, + 0xc1, 0x0d, 0x36, 0xff, 0x77, 0x1e, 0x82, 0xe0, 0xe1, 0xe7, 0x7a, 0x98, 0x4e, 0x69, 0x43, 0xa7, + 0xc4, 0xfc, 0x9f, 0x7b, 0x44, 0x9f, 0xeb, 0x61, 0x3a, 0xcd, 0x76, 0x62, 0x35, 0x16, 0x8d, 0x3c, + 0x3b, 0x56, 0xaf, 0x55, 0xb5, 0x06, 0x3a, 0xfd, 0xa2, 0xde, 0xd5, 0x01, 0x57, 0xf7, 0xc1, 0xd5, + 0x7d, 0x71, 0x8b, 0xff, 0x42, 0x7f, 0xb0, 0x11, 0x26, 0xbe, 0xa7, 0x57, 0xd9, 0x24, 0x38, 0x1b, + 0x42, 0xbf, 0x82, 0x8d, 0xf6, 0x57, 0x11, 0x7f, 0x2e, 0x04, 0xba, 0x17, 0x76, 0xd0, 0x6f, 0xc1, + 0x31, 0x00, 0xae, 0x1b, 0x6a, 0x81, 0xd2, 0xe6, 0xbe, 0x8a, 0x29, 0x9b, 0x46, 0xc4, 0x8b, 0xfb, + 0xdb, 0xca, 0xf4, 0xbe, 0xb6, 0xcd, 0x70, 0x66, 0xc7, 0xaa, 0x58, 0x6f, 0x83, 0x5f, 0xb2, 0x77, + 0xf6, 0x4e, 0xe1, 0xd1, 0xde, 0x1d, 0x5c, 0x49, 0x89, 0x54, 0x84, 0xea, 0x3d, 0x8b, 0x05, 0x6c, + 0x2a, 0x3f, 0x16, 0xdf, 0x6f, 0x1e, 0xf6, 0x54, 0x5c, 0x24, 0x3d, 0x4f, 0x45, 0x77, 0x66, 0xd5, + 0x81, 0xac, 0x2e, 0x17, 0x30, 0x08, 0x62, 0xc1, 0xd1, 0x4e, 0xe7, 0x6a, 0xfb, 0xbb, 0x9d, 0x89, + 0x01, 0x77, 0x3b, 0x57, 0x7b, 0xb6, 0x3a, 0xc3, 0xfb, 0xa6, 0x97, 0xe9, 0x4b, 0x49, 0x5f, 0x99, + 0xc4, 0x8a, 0x67, 0xd2, 0xf4, 0xbd, 0x25, 0xd7, 0xaa, 0xbc, 0xb5, 0x7b, 0x3a, 0x05, 0xdf, 0x0f, + 0xc4, 0xc3, 0xd4, 0x3c, 0x5c, 0xaa, 0x1b, 0x83, 0x66, 0x31, 0xdb, 0x90, 0x9d, 0x99, 0xe9, 0x56, + 0x9a, 0x87, 0x5b, 0xab, 0x3f, 0xcf, 0xc1, 0xfd, 0xf9, 0x94, 0xe9, 0x9e, 0x11, 0xa9, 0xbe, 0x93, + 0x28, 0x11, 0x75, 0xde, 0x3d, 0x20, 0x36, 0xe5, 0x0f, 0x35, 0xb8, 0xa8, 0x06, 0xab, 0x25, 0xe3, + 0x07, 0xec, 0xae, 0xa8, 0x57, 0xc4, 0x10, 0x35, 0x9b, 0x9d, 0x06, 0x12, 0x2e, 0xd4, 0x2e, 0x21, + 0x8f, 0xd5, 0x87, 0x46, 0x76, 0xac, 0x8d, 0x39, 0xa3, 0xa7, 0xa1, 0x67, 0xf2, 0x3c, 0xd8, 0x8b, + 0x8d, 0x74, 0x83, 0x70, 0x55, 0x22, 0x8f, 0x6e, 0xe3, 0xe6, 0x7c, 0x75, 0x74, 0x7b, 0x02, 0xb8, + 0xc6, 0x59, 0x6c, 0xe7, 0x42, 0x4c, 0xc4, 0x89, 0x35, 0xcf, 0xa4, 0xc9, 0x7f, 0xcd, 0x18, 0xad, + 0xa7, 0xf9, 0x07, 0x60, 0xab, 0xc1, 0xdf, 0xed, 0xce, 0x7a, 0x4f, 0xfa, 0xec, 0xf1, 0xb2, 0x0f, + 0xca, 0x1e, 0x2f, 0x1b, 0x7f, 0xf8, 0xba, 0x6c, 0x23, 0xe0, 0x37, 0xd2, 0x6b, 0x31, 0x1e, 0x6c, + 0x62, 0xdc, 0xa1, 0x4b, 0x7b, 0x19, 0x6c, 0x50, 0x27, 0xa7, 0x3b, 0x16, 0xfc, 0x94, 0x1c, 0xe6, + 0xe4, 0xc3, 0xf2, 0x33, 0x15, 0x3d, 0x2a, 0x47, 0x41, 0xf1, 0xe8, 0x89, 0x36, 0x07, 0xb0, 0xea, + 0x47, 0xdf, 0x7d, 0x77, 0x78, 0x06, 0xb7, 0x58, 0x94, 0xf8, 0x5f, 0x2a, 0xb2, 0xf3, 0xb3, 0xe8, + 0x5c, 0x4c, 0x55, 0x35, 0x8a, 0x42, 0x37, 0x71, 0xf5, 0xa5, 0xaa, 0xd6, 0x3d, 0xa9, 0x89, 0xaa, + 0x15, 0x72, 0x41, 0xf1, 0xd3, 0xfc, 0x15, 0xc8, 0xb8, 0xb7, 0x11, 0xde, 0x41, 0xd1, 0xc3, 0x50, + 0xde, 0xc1, 0x94, 0x9f, 0xc8, 0x5b, 0xbf, 0xe4, 0xa7, 0x44, 0x5b, 0xc8, 0x70, 0xa1, 0x32, 0x18, + 0x70, 0xea, 0x6a, 0x9b, 0xa9, 0x6b, 0xc2, 0x20, 0xe9, 0xd0, 0xd9, 0x62, 0x82, 0xd5, 0x53, 0x22, + 0x35, 0x41, 0x14, 0x1f, 0xf6, 0x12, 0x93, 0xaf, 0x49, 0x74, 0xaa, 0xa6, 0xf4, 0xe3, 0xa0, 0x6f, + 0x27, 0x4b, 0x72, 0x54, 0xb8, 0x19, 0xec, 0x7b, 0x2f, 0x6c, 0xbb, 0xd9, 0xd3, 0x62, 0xf4, 0xc4, + 0xef, 0x6f, 0x65, 0x53, 0x32, 0xea, 0x50, 0x00, 0x65, 0xe8, 0x70, 0x64, 0x37, 0x14, 0xd4, 0x90, + 0xc3, 0xcf, 0x47, 0xc3, 0xb7, 0x3a, 0x1c, 0x83, 0x22, 0x7b, 0xd2, 0x3f, 0x8c, 0xa1, 0xcb, 0xc8, + 0x82, 0x46, 0xd0, 0x67, 0xf4, 0x9b, 0x6e, 0x6a, 0x42, 0xbe, 0x2a, 0xd3, 0x46, 0x42, 0x2a, 0xfa, + 0xe5, 0x15, 0xfd, 0xb2, 0xc0, 0x3d, 0xea, 0xc4, 0x20, 0x07, 0xf0, 0x40, 0x69, 0x89, 0x51, 0xe6, + 0x53, 0x6c, 0x92, 0x04, 0xc5, 0xd3, 0x41, 0xdc, 0xf9, 0x01, 0xbb, 0x8b, 0x0f, 0xf3, 0x5e, 0x31, + 0xac, 0xe6, 0x05, 0x7c, 0x3d, 0x6d, 0x22, 0x52, 0xff, 0x3b, 0xd8, 0x6f, 0x33, 0x6b, 0x7a, 0x0f, + 0xd6, 0x83, 0xa3, 0x43, 0xd9, 0x4d, 0x15, 0xf7, 0x1c, 0xba, 0x31, 0x26, 0xe9, 0xf7, 0x47, 0xb1, + 0x7f, 0xd4, 0xef, 0x63, 0x62, 0xbd, 0x88, 0xb8, 0x9d, 0x9b, 0xf9, 0x8e, 0x30, 0x1f, 0x65, 0x24, + 0xbc, 0xa6, 0x39, 0x33, 0x6c, 0x95, 0x1b, 0x7b, 0x47, 0x1b, 0xd2, 0xd6, 0xb4, 0x59, 0xca, 0xa1, + 0xd9, 0x0c, 0xce, 0x77, 0x99, 0x03, 0x4b, 0xef, 0xef, 0x02, 0xc2, 0x3a, 0x00, 0x06, 0x18, 0xa8, + 0x41, 0x34, 0xeb, 0x53, 0x1b, 0x06, 0x1d, 0xe7, 0xee, 0x0b, 0x61, 0x5c, 0x65, 0x58, 0x2b, 0xa3, + 0x63, 0x1c, 0x21, 0xeb, 0xea, 0x9f, 0xbe, 0x23, 0xc3, 0x17, 0x58, 0xe8, 0x72, 0x8b, 0xba, 0x65, + 0x33, 0xb4, 0x4d, 0x93, 0x14, 0x6e, 0xde, 0x9d, 0xad, 0xd7, 0x79, 0xb7, 0xa4, 0x3f, 0xb7, 0xf4, + 0x27, 0xf4, 0x4c, 0xf6, 0xd9, 0xc0, 0x56, 0xd1, 0x79, 0x6e, 0xae, 0x87, 0xdb, 0xe3, 0x79, 0x2b, + 0x60, 0xfd, 0x66, 0x6c, 0x58, 0xf2, 0xed, 0x5a, 0xc3, 0xc8, 0xdb, 0x34, 0x79, 0x9d, 0xa9, 0x8a, + 0x63, 0x6b, 0x79, 0xb4, 0x9c, 0x3f, 0x74, 0x9c, 0xda, 0x65, 0x08, 0xef, 0xa5, 0x5d, 0xce, 0xbc, + 0x4d, 0x35, 0xff, 0x2e, 0x2a, 0x2b, 0xad, 0xba, 0x87, 0x3c, 0x4b, 0x56, 0x29, 0x95, 0xbe, 0x0a, + 0x7d, 0xeb, 0xa2, 0x45, 0x38, 0x1a, 0x80, 0x44, 0xe1, 0xc6, 0xd3, 0x34, 0x4a, 0x3f, 0xbf, 0x31, + 0xf0, 0xfb, 0xfe, 0xc6, 0x66, 0x8a, 0xe9, 0x78, 0x63, 0x69, 0xcd, 0x05, 0xdb, 0x1b, 0x2b, 0x77, + 0x36, 0x96, 0x36, 0x6d, 0x8c, 0xe6, 0xff, 0x5b, 0x1b, 0x33, 0xe2, 0xf0, 0xa5, 0x8d, 0x55, 0xb6, + 0xf2, 0x33, 0x5c, 0x8c, 0x3e, 0x7a, 0xf1, 0xe4, 0xf1, 0xc1, 0x55, 0xc4, 0x30, 0x0a, 0x26, 0xe9, + 0x61, 0x6a, 0x1e, 0x2e, 0x39, 0xea, 0xdb, 0x06, 0xd9, 0xc8, 0xd5, 0xe6, 0x7a, 0x7e, 0x30, 0x20, + 0x9e, 0x76, 0xe3, 0xe0, 0x3f, 0xdd, 0x78, 0x11, 0x47, 0x64, 0x90, 0x47, 0x6e, 0x1e, 0xfc, 0xe9, + 0xd2, 0x7b, 0x2b, 0x02, 0xfa, 0x90, 0x3c, 0x77, 0x2a, 0x1d, 0xe9, 0x52, 0xc1, 0xa5, 0xc7, 0xaa, + 0xe4, 0x41, 0x0c, 0x03, 0x29, 0xab, 0xa1, 0x07, 0x07, 0x5f, 0x3f, 0x16, 0x73, 0x53, 0xe9, 0xdb, + 0x73, 0x41, 0xaf, 0x0d, 0xb6, 0xe2, 0xfb, 0xad, 0x28, 0xb6, 0xf2, 0x40, 0xfb, 0x34, 0xda, 0x88, + 0x92, 0x39, 0x07, 0x6f, 0xe6, 0xe0, 0xc7, 0x0c, 0x3c, 0x58, 0xc0, 0x8d, 0x4b, 0x34, 0x89, 0x8c, + 0x8b, 0xf2, 0x75, 0x98, 0x44, 0xc0, 0x8c, 0x40, 0xa2, 0x5b, 0x78, 0xfc, 0x33, 0x55, 0x3f, 0x97, + 0xde, 0x0e, 0xa8, 0xcf, 0x63, 0x10, 0x9b, 0xd1, 0x38, 0x2c, 0xe5, 0x16, 0x12, 0x07, 0xff, 0x77, + 0xf8, 0x1b, 0xe3, 0x82, 0xf0, 0xa0, 0x0b, 0x47, 0xe7, 0x84, 0x06, 0x5d, 0x78, 0x7c, 0xae, 0x30, + 0x18, 0xfe, 0xfd, 0x71, 0x44, 0x39, 0x55, 0xf8, 0x56, 0x03, 0x49, 0xb7, 0x81, 0xd4, 0x10, 0xea, + 0xe1, 0xf6, 0x9c, 0xd1, 0x0e, 0xd5, 0x3e, 0xd3, 0x1f, 0x73, 0x99, 0x89, 0x3e, 0x4b, 0x27, 0x20, + 0xec, 0x2b, 0xe8, 0x44, 0x46, 0xb6, 0x12, 0xa7, 0x2f, 0xd2, 0x0a, 0x7d, 0x0c, 0xad, 0x54, 0x4e, + 0x05, 0xc3, 0x0c, 0xb3, 0x97, 0x6d, 0xe7, 0x91, 0x7a, 0x4a, 0xf1, 0xa4, 0xf9, 0xbe, 0x06, 0xfa, + 0x75, 0x7c, 0x1f, 0xcb, 0x26, 0xc6, 0xa7, 0x54, 0x60, 0xcd, 0xbc, 0xb0, 0x39, 0x16, 0xf3, 0x52, + 0x89, 0x51, 0x98, 0x37, 0x33, 0xfe, 0x97, 0xc6, 0x7e, 0x3d, 0xe3, 0x63, 0x2f, 0x3b, 0x08, 0x25, + 0xef, 0x71, 0x45, 0x69, 0xbb, 0x12, 0x08, 0x4d, 0x2b, 0xc6, 0xd7, 0xba, 0x47, 0xbd, 0x3f, 0x4d, + 0xe9, 0x64, 0xfa, 0x67, 0x19, 0xe2, 0xd2, 0xb5, 0x7d, 0x40, 0x20, 0x47, 0x25, 0x13, 0xe6, 0xf2, + 0xff, 0x5f, 0xfe, 0x57, 0x25, 0x59, 0x4d, 0xfe, 0xb0, 0xd1, 0x67, 0xa9, 0x53, 0xa7, 0xfc, 0x06, + 0x6b, 0x75, 0x34, 0xa6, 0xbe, 0x2a, 0x75, 0x5a, 0x1d, 0x90, 0x39, 0x94, 0xe4, 0xf3, 0xd1, 0xa7, + 0x4e, 0x36, 0x3a, 0x42, 0x7d, 0xcb, 0xd6, 0xf9, 0x66, 0x42, 0x99, 0x7d, 0x2b, 0xb5, 0xf8, 0xa4, + 0xfb, 0xe4, 0xc9, 0x13, 0xab, 0x79, 0xb2, 0xd5, 0xfc, 0xf8, 0xbf, 0xbd, 0x3d, 0xfd, 0x73, 0xdb, + 0x36, 0x96, 0x3f, 0x5f, 0x67, 0xfa, 0x3f, 0xd0, 0x6c, 0x2f, 0x22, 0x23, 0x4a, 0x96, 0x9c, 0x26, + 0xd7, 0xa5, 0x2c, 0x7b, 0xd2, 0xb4, 0x9d, 0x66, 0xaf, 0x4d, 0x33, 0x75, 0xb2, 0xdd, 0x8e, 0xcf, + 0x93, 0xe8, 0x03, 0xb2, 0xb9, 0x95, 0x49, 0x2d, 0x49, 0xd9, 0xf2, 0xba, 0xfa, 0xdf, 0xef, 0x7d, + 0x00, 0x20, 0x40, 0x82, 0xb2, 0xdc, 0xcd, 0xdd, 0x6c, 0x37, 0x16, 0xf1, 0xf9, 0xf0, 0xf0, 0x00, + 0xbc, 0x2f, 0xe0, 0x3d, 0xeb, 0x3f, 0x7b, 0xf6, 0xac, 0xca, 0x1e, 0xd8, 0xd9, 0xcf, 0x07, 0x66, + 0xd6, 0xc2, 0xcc, 0x7a, 0x51, 0x6b, 0x78, 0x30, 0xb0, 0xb2, 0xbf, 0xae, 0x35, 0xbc, 0xb0, 0xb3, + 0x87, 0x83, 0x3a, 0xc8, 0x17, 0x06, 0x2f, 0xe8, 0x1b, 0xea, 0xc0, 0x98, 0x18, 0x0b, 0xeb, 0xfc, + 0x03, 0xf2, 0x10, 0xc4, 0xe0, 0xa0, 0x80, 0x2b, 0x80, 0xbd, 0x41, 0xf2, 0x73, 0x16, 0x40, 0xa6, + 0x4b, 0x16, 0x19, 0xb9, 0xf1, 0xc5, 0x4b, 0x2e, 0x55, 0x4b, 0x2e, 0xd5, 0x4b, 0x2e, 0xd5, 0x4b, + 0xce, 0x09, 0x34, 0xd7, 0xcb, 0x55, 0xbd, 0x5c, 0xd7, 0xcb, 0x55, 0x3d, 0x6b, 0x40, 0x2c, 0x20, + 0xc5, 0xd2, 0x1c, 0x12, 0xb3, 0x81, 0xcc, 0x09, 0xb2, 0x20, 0xa6, 0x8d, 0xf4, 0x8d, 0x2d, 0x20, + 0xb3, 0xf1, 0x66, 0x17, 0x58, 0x89, 0x02, 0x2b, 0xd1, 0x60, 0x25, 0x1a, 0xac, 0x6d, 0xa5, 0xed, + 0xc5, 0x47, 0x96, 0x27, 0x79, 0x9b, 0x4e, 0x3b, 0xdb, 0xa1, 0x27, 0xb6, 0x15, 0xd8, 0x65, 0x9f, + 0x7f, 0x40, 0x0f, 0x35, 0x35, 0xb6, 0x24, 0xea, 0x6d, 0x53, 0xff, 0xd8, 0x6e, 0x74, 0x90, 0xd6, + 0x06, 0x62, 0x69, 0x88, 0xf2, 0x7f, 0x20, 0x05, 0xfe, 0x83, 0xe6, 0x07, 0x40, 0x57, 0xf6, 0xc7, + 0x1f, 0xc8, 0x84, 0x4b, 0x4d, 0x64, 0xf7, 0xe8, 0x69, 0x0e, 0xff, 0x4f, 0x99, 0x71, 0xe5, 0x48, + 0x28, 0x62, 0x24, 0x6f, 0x6c, 0x8c, 0x03, 0x29, 0xf0, 0x53, 0x4c, 0x14, 0x64, 0xb4, 0x41, 0xe6, + 0x11, 0xbd, 0xa3, 0xa7, 0xec, 0x51, 0xa9, 0xd7, 0xe2, 0x43, 0xcb, 0x30, 0x19, 0x2f, 0x41, 0x6a, + 0x1c, 0x3f, 0xeb, 0xbf, 0x68, 0x23, 0x60, 0x2c, 0x51, 0xec, 0x20, 0x06, 0xcc, 0xbf, 0xd9, 0xee, + 0x32, 0x68, 0x70, 0xcf, 0xca, 0xa2, 0x21, 0x1a, 0x16, 0x0d, 0x7e, 0x10, 0xfb, 0x5d, 0xb6, 0x8a, + 0x15, 0x94, 0x3f, 0x51, 0x4a, 0xf4, 0x27, 0x4c, 0x1d, 0x7c, 0xaa, 0x59, 0x9b, 0x15, 0x6e, 0xff, + 0x64, 0x02, 0x41, 0xf5, 0x8a, 0x0b, 0xb2, 0x0f, 0xcc, 0x8c, 0xfa, 0x51, 0xbe, 0x89, 0x8b, 0x28, + 0xbf, 0x83, 0x7f, 0x36, 0x71, 0x0a, 0x18, 0xbd, 0xa3, 0x7f, 0x25, 0xd8, 0x20, 0x6e, 0x29, 0xc0, + 0xe1, 0x67, 0x5d, 0xeb, 0xed, 0xd6, 0x8d, 0x3f, 0xac, 0xfd, 0x7f, 0xb4, 0xaa, 0xbc, 0xe8, 0x26, + 0xa4, 0x8f, 0x9d, 0x00, 0x74, 0x19, 0x88, 0x57, 0x75, 0xc2, 0x84, 0x93, 0x9a, 0x6e, 0xb8, 0x90, + 0x0b, 0x2a, 0x06, 0x0f, 0x70, 0x2b, 0x2c, 0x94, 0x72, 0x5c, 0x3a, 0x39, 0xd0, 0x30, 0x7a, 0x06, + 0x49, 0x8d, 0xca, 0xde, 0x38, 0xed, 0x1a, 0x09, 0x87, 0x47, 0x4c, 0x7a, 0x95, 0xf0, 0xad, 0x65, + 0xee, 0x12, 0x25, 0xee, 0x81, 0xd6, 0x18, 0xd7, 0xb4, 0xd1, 0xf9, 0xd3, 0xe4, 0xf1, 0xba, 0x7b, + 0x7a, 0xfb, 0x83, 0x7a, 0x6f, 0x8c, 0x47, 0x0e, 0x43, 0x13, 0x76, 0x65, 0x46, 0x6c, 0xa3, 0x70, + 0xff, 0xca, 0x8f, 0x8a, 0xa7, 0xbb, 0x69, 0xdc, 0x2f, 0xfc, 0x9d, 0x34, 0xee, 0xdf, 0xf8, 0x5b, + 0xa3, 0xab, 0x4a, 0x05, 0x1f, 0x04, 0x39, 0xe9, 0x75, 0x92, 0x8b, 0x71, 0x81, 0x6e, 0xd1, 0x4a, + 0xed, 0x4e, 0x77, 0xc9, 0x5a, 0xfc, 0x7f, 0x92, 0x36, 0xff, 0x1f, 0x71, 0x9d, 0x94, 0x3f, 0x64, + 0xd9, 0xef, 0xc8, 0x61, 0x24, 0x65, 0x3c, 0x25, 0x6f, 0x55, 0x5f, 0x89, 0xae, 0x1c, 0x23, 0x71, + 0xac, 0x9d, 0xd5, 0x00, 0x3a, 0x91, 0xe7, 0x82, 0x5d, 0xcb, 0x8c, 0x74, 0x5a, 0xfc, 0xec, 0x25, + 0xf5, 0x92, 0x62, 0x16, 0x57, 0x0a, 0x56, 0x23, 0xeb, 0x2c, 0x9f, 0x8d, 0xab, 0x25, 0x43, 0x19, + 0x63, 0xa5, 0x6d, 0xe2, 0x4f, 0xd9, 0xaf, 0xee, 0x06, 0x80, 0x0b, 0x7c, 0xde, 0xa9, 0x11, 0x3c, + 0xdf, 0xa8, 0x89, 0x96, 0x08, 0xe8, 0xa4, 0xc0, 0x7f, 0x6e, 0xf0, 0x9f, 0x89, 0xe1, 0xda, 0xc2, + 0x9b, 0x51, 0xa5, 0xee, 0xe5, 0x35, 0x40, 0x40, 0xd0, 0x32, 0xe1, 0xf7, 0x34, 0x48, 0xc5, 0x65, + 0xba, 0x96, 0x35, 0x55, 0x69, 0xb0, 0x78, 0xa9, 0xf7, 0xaa, 0xd5, 0xad, 0x1b, 0x71, 0xd4, 0x00, + 0xe2, 0xad, 0x0f, 0x7b, 0x45, 0xb6, 0x2e, 0x4f, 0xa9, 0x10, 0xff, 0x1e, 0xab, 0xc4, 0xd8, 0x4c, + 0x3c, 0xbf, 0xd7, 0xce, 0x49, 0xf1, 0xbf, 0x22, 0x7e, 0xc6, 0xb5, 0x88, 0xef, 0x61, 0x7f, 0x31, + 0x32, 0x56, 0xa5, 0x99, 0x73, 0xe1, 0xec, 0x9a, 0xe2, 0x25, 0xf8, 0x96, 0x6b, 0x56, 0x52, 0x77, + 0xcd, 0x4a, 0xfe, 0x9c, 0x6b, 0x56, 0x62, 0x32, 0x64, 0x59, 0xda, 0x6a, 0x83, 0xc7, 0xa3, 0xc6, + 0x20, 0x98, 0x51, 0xc0, 0xbe, 0x08, 0x49, 0x41, 0x7f, 0x81, 0xf6, 0x4e, 0xcb, 0xf8, 0xbc, 0xbc, + 0x08, 0xfb, 0x40, 0x5d, 0xdf, 0x4d, 0x60, 0x0d, 0x99, 0xa7, 0x58, 0x66, 0x0c, 0x88, 0xea, 0xc7, + 0x68, 0xd4, 0xc4, 0x1e, 0xa2, 0x20, 0x85, 0x5a, 0x7f, 0xfc, 0x41, 0x7f, 0x80, 0xc3, 0x03, 0xe8, + 0x94, 0x83, 0x5e, 0x56, 0x27, 0x46, 0x28, 0x81, 0x1c, 0xb7, 0x23, 0xd9, 0xd9, 0xa9, 0x30, 0x1d, + 0x25, 0x4a, 0x38, 0x6d, 0x9d, 0x2d, 0x62, 0x9f, 0x28, 0x8f, 0x27, 0x26, 0x1a, 0x16, 0x0b, 0x13, + 0x0f, 0x7a, 0x7b, 0x43, 0x04, 0x3c, 0x6e, 0xe0, 0x7c, 0x7c, 0xa7, 0x0a, 0x6b, 0x50, 0x6e, 0x94, + 0x36, 0x71, 0x81, 0x56, 0x6d, 0xec, 0x26, 0xa2, 0x99, 0x92, 0xd7, 0x63, 0x84, 0xb6, 0xa4, 0x41, + 0xc6, 0xb0, 0x01, 0x23, 0x36, 0x62, 0x73, 0xf4, 0x52, 0xe1, 0x24, 0x88, 0x53, 0x86, 0xe9, 0xaa, + 0xbf, 0x68, 0xd4, 0x1b, 0x8e, 0x06, 0xc7, 0x29, 0x5e, 0xdd, 0x21, 0x65, 0x94, 0xce, 0x3e, 0x4f, + 0xbb, 0xc3, 0x8b, 0x51, 0xc0, 0x4b, 0x28, 0xd4, 0xd0, 0x49, 0xec, 0x89, 0x08, 0xf1, 0x0b, 0x14, + 0x33, 0x9b, 0x94, 0x00, 0x89, 0xe9, 0x34, 0x6a, 0xd2, 0x03, 0x4d, 0x22, 0x74, 0x9b, 0x8c, 0x07, + 0xa3, 0xe4, 0x38, 0xd7, 0xcf, 0x15, 0x75, 0xbb, 0x61, 0x0e, 0xdb, 0x98, 0x39, 0x15, 0x59, 0x6d, + 0x24, 0xe6, 0x56, 0xf0, 0x29, 0x47, 0x64, 0x02, 0x69, 0x4f, 0xbb, 0x3d, 0xd8, 0x96, 0x81, 0x46, + 0x41, 0xce, 0x94, 0x99, 0xdb, 0x94, 0x59, 0x07, 0x3f, 0x17, 0x18, 0x58, 0xa3, 0xa9, 0x1d, 0x52, + 0x2e, 0xb1, 0xc1, 0x3d, 0x9f, 0xf5, 0x65, 0x7d, 0x06, 0xe9, 0xc1, 0x3b, 0x53, 0x00, 0x36, 0xf6, + 0x35, 0xb2, 0x49, 0x55, 0x27, 0x03, 0xef, 0x9c, 0x58, 0x1d, 0xb8, 0x38, 0x9c, 0x1c, 0xe7, 0x32, + 0x85, 0xc6, 0x97, 0x6b, 0x38, 0xd0, 0xb1, 0x00, 0x8c, 0x31, 0x63, 0xf0, 0xb3, 0xfa, 0xc2, 0x6a, + 0xd2, 0x51, 0xad, 0x45, 0x03, 0xf3, 0x88, 0xf7, 0xcc, 0x8d, 0xf7, 0x0c, 0xf1, 0x8e, 0x6f, 0x27, + 0x19, 0x78, 0xcf, 0x10, 0xef, 0x5a, 0xf3, 0x69, 0x03, 0xa4, 0x28, 0x84, 0x9d, 0x8d, 0x53, 0xd3, + 0xd9, 0x38, 0xc5, 0x0b, 0x62, 0x86, 0x08, 0x5a, 0x87, 0x31, 0x4b, 0x6b, 0x7e, 0xa2, 0x0a, 0xc7, + 0x62, 0xa9, 0xdc, 0xaf, 0xed, 0xf3, 0x84, 0x9c, 0x40, 0x7d, 0xe5, 0xe8, 0x69, 0x36, 0x65, 0x9c, + 0x10, 0x35, 0x1c, 0xd6, 0xf6, 0x5d, 0x3e, 0x14, 0xa6, 0xc6, 0xd5, 0x0e, 0xb9, 0x61, 0xd5, 0x26, + 0x57, 0x1e, 0x1e, 0xcd, 0x33, 0x83, 0x33, 0x68, 0xe7, 0x6e, 0xd6, 0x6f, 0x1e, 0xa7, 0xca, 0x39, + 0xda, 0x75, 0xd0, 0x0e, 0x22, 0x9f, 0x9e, 0x2c, 0xf4, 0xa5, 0x83, 0x53, 0xed, 0xc4, 0x95, 0x9a, + 0x62, 0x41, 0x43, 0x57, 0x61, 0x7a, 0xe8, 0x61, 0x66, 0xa3, 0x47, 0x61, 0x1c, 0xb4, 0xcd, 0x5c, + 0xe7, 0xf1, 0x5e, 0x43, 0x5d, 0x1b, 0x87, 0x15, 0xde, 0x4b, 0xa7, 0xd2, 0x31, 0x5d, 0xa4, 0x6d, + 0xc0, 0x22, 0x3d, 0x9a, 0x2b, 0xea, 0x0e, 0xa5, 0x47, 0x69, 0x4b, 0x79, 0x76, 0x79, 0x36, 0x8b, + 0x3b, 0xd9, 0x0c, 0x89, 0x12, 0x93, 0x1b, 0x40, 0x85, 0xac, 0x60, 0xdf, 0xd3, 0x96, 0xb6, 0xd9, + 0x81, 0xfa, 0xa1, 0xa6, 0x71, 0x9b, 0xaa, 0xaf, 0xd5, 0x9a, 0x64, 0x66, 0x3c, 0x5c, 0x81, 0x87, + 0x42, 0x25, 0xa9, 0xcc, 0x93, 0x9b, 0x9a, 0x3c, 0x40, 0x8d, 0xbf, 0xe5, 0xd8, 0x04, 0x4a, 0x3a, + 0x51, 0x12, 0x47, 0xda, 0x97, 0xbf, 0xa4, 0x40, 0x90, 0x32, 0xd3, 0xbc, 0x95, 0x5c, 0x17, 0xf3, + 0x11, 0x0d, 0x99, 0xb3, 0x52, 0x8e, 0xa8, 0x9b, 0x67, 0x28, 0x18, 0x4a, 0x2e, 0xa2, 0x82, 0x45, + 0x34, 0x9d, 0x2a, 0x41, 0xfc, 0x01, 0x09, 0x95, 0xf9, 0xcc, 0x9a, 0xaf, 0xbe, 0x7a, 0x4e, 0xc5, + 0xf2, 0xe6, 0x2d, 0x69, 0x2d, 0xf2, 0x35, 0x97, 0x38, 0x47, 0xb9, 0x00, 0x99, 0xd1, 0x84, 0x9d, + 0x75, 0x4b, 0x73, 0x79, 0xd3, 0x8d, 0xfe, 0xb2, 0xe6, 0xdc, 0xc8, 0x83, 0x7a, 0x36, 0x18, 0x28, + 0x29, 0x87, 0x7e, 0x1a, 0xf2, 0x69, 0xfc, 0x75, 0xa4, 0xa5, 0x13, 0x76, 0x7d, 0x34, 0x25, 0x93, + 0xca, 0x01, 0xd2, 0xd0, 0xd5, 0xc0, 0x59, 0x69, 0x48, 0x43, 0x76, 0x12, 0x09, 0xc1, 0x50, 0xa5, + 0x26, 0xd0, 0x45, 0xb6, 0x33, 0x54, 0x0c, 0x0b, 0xaa, 0xf2, 0x25, 0x8c, 0xe5, 0x87, 0x76, 0x15, + 0x8c, 0xfd, 0x49, 0x5a, 0x26, 0x95, 0x5b, 0x61, 0x64, 0x4a, 0xdc, 0x0c, 0xa4, 0x29, 0x50, 0xc6, + 0xc3, 0xa3, 0x48, 0x05, 0x06, 0x7a, 0x11, 0x49, 0x2e, 0x90, 0x28, 0x88, 0x4e, 0xa0, 0x79, 0x19, + 0xdd, 0x94, 0xd1, 0x65, 0x19, 0x7d, 0x28, 0xa3, 0xeb, 0x72, 0x1c, 0x04, 0x37, 0x26, 0xff, 0x1e, + 0x95, 0xd6, 0xdb, 0x84, 0xcc, 0x3b, 0x17, 0xf5, 0x37, 0x5c, 0xd4, 0x33, 0x19, 0x44, 0x5c, 0x95, + 0x13, 0xcd, 0x78, 0x15, 0x40, 0xeb, 0x4d, 0xc7, 0x59, 0x74, 0x99, 0x75, 0xa8, 0x28, 0x12, 0xb2, + 0x40, 0xa3, 0xdc, 0xfa, 0x32, 0x20, 0x3a, 0xd8, 0x46, 0xc8, 0x5d, 0xd3, 0x1d, 0xaf, 0xbc, 0xa9, + 0x88, 0x15, 0xa6, 0x15, 0x5e, 0x42, 0x70, 0x2a, 0xaa, 0x17, 0x3c, 0xfe, 0xb9, 0x16, 0xf9, 0xdd, + 0x19, 0xc5, 0x23, 0x20, 0xf3, 0xef, 0xc8, 0xbe, 0x31, 0xcf, 0xd7, 0xc4, 0xf0, 0xe6, 0x99, 0xdc, + 0xbd, 0xc9, 0xc7, 0xc2, 0x5f, 0xf2, 0x13, 0xe7, 0xf8, 0xdc, 0x88, 0x6e, 0x09, 0xc6, 0x38, 0xbf, + 0xa3, 0xed, 0xf4, 0x34, 0x0f, 0x42, 0xcb, 0xc3, 0xdd, 0xff, 0xf6, 0xe7, 0x9f, 0x5e, 0xf1, 0xdb, + 0xe5, 0xf8, 0x30, 0xb9, 0x98, 0xfb, 0x17, 0x28, 0x17, 0x26, 0x5b, 0x83, 0x6b, 0x1d, 0x03, 0x16, + 0xc6, 0x0b, 0xf3, 0x8a, 0x41, 0x0d, 0x27, 0x80, 0xff, 0x39, 0x08, 0x43, 0x37, 0x78, 0x9b, 0xa1, + 0xba, 0x90, 0x45, 0x13, 0xa3, 0x91, 0xf9, 0xa1, 0xc4, 0xa3, 0x2e, 0xb8, 0x2c, 0xc7, 0xf7, 0x4c, + 0x57, 0x57, 0x65, 0xf4, 0xaa, 0x5a, 0xb8, 0xf1, 0x75, 0x19, 0xad, 0x93, 0x18, 0x04, 0x92, 0x55, + 0xa4, 0xaf, 0x7b, 0xc5, 0x65, 0xf4, 0x03, 0x51, 0x6b, 0xfc, 0x65, 0x74, 0x46, 0x14, 0x81, 0xcc, + 0xfc, 0xaf, 0x48, 0x4c, 0xf1, 0xbf, 0x50, 0x2d, 0x9d, 0x2c, 0xe3, 0x7b, 0xf9, 0x92, 0xdf, 0x7b, + 0x90, 0xc4, 0xff, 0x16, 0xf1, 0x74, 0xbe, 0xcc, 0x67, 0x6f, 0x41, 0x9c, 0x8d, 0xbf, 0x8f, 0xc8, + 0xcd, 0xe9, 0x3d, 0x72, 0xf8, 0xff, 0xe4, 0xdf, 0x3f, 0x88, 0xcd, 0x6b, 0x68, 0xf8, 0xef, 0x11, + 0xc8, 0xa4, 0xef, 0x32, 0xf8, 0x8a, 0x7f, 0xdb, 0x46, 0x37, 0x22, 0x2f, 0x88, 0x2e, 0xe9, 0x05, + 0x50, 0x10, 0xf0, 0xd1, 0x05, 0xbe, 0xce, 0x01, 0xe8, 0xa7, 0xe9, 0xe8, 0x8d, 0x38, 0x10, 0x1e, + 0xa3, 0xde, 0xf0, 0xf8, 0x43, 0xe5, 0x8e, 0x55, 0x86, 0x78, 0xc2, 0xc0, 0x00, 0x71, 0xcf, 0x87, + 0x74, 0x79, 0x89, 0x05, 0xe6, 0xe4, 0x92, 0x9e, 0x30, 0x28, 0x41, 0x6e, 0x14, 0xf3, 0xb7, 0xb4, + 0xa0, 0x8b, 0xf1, 0x07, 0x24, 0xd9, 0x2d, 0x46, 0xea, 0x92, 0x8f, 0x90, 0xfe, 0x82, 0x27, 0x06, + 0xdd, 0x70, 0xf0, 0x6e, 0xe4, 0x93, 0xa2, 0xf8, 0xd4, 0x4b, 0x11, 0x1f, 0x1e, 0x1a, 0x4f, 0x8b, + 0x16, 0x13, 0x40, 0x4d, 0x59, 0x16, 0x87, 0x14, 0x17, 0x80, 0x6e, 0x48, 0xd4, 0x1f, 0x18, 0x25, + 0x92, 0xff, 0x14, 0x0f, 0x8c, 0x96, 0x8f, 0x7d, 0x60, 0xd4, 0xaf, 0xc6, 0x00, 0x67, 0x40, 0x18, + 0x8b, 0x7e, 0x95, 0x80, 0xad, 0x3d, 0xf0, 0xe8, 0xa8, 0xa1, 0x31, 0xa7, 0x31, 0x54, 0x6c, 0xce, + 0x60, 0x94, 0x1e, 0x97, 0x8a, 0x9f, 0x49, 0xd5, 0xb3, 0x24, 0x39, 0x99, 0x7b, 0x47, 0x79, 0x5f, + 0xa4, 0x40, 0xcc, 0xe4, 0xcc, 0x33, 0x36, 0x3f, 0xf0, 0xe9, 0xb2, 0x88, 0x9e, 0x20, 0xd2, 0xce, + 0x3e, 0x74, 0xd2, 0xb3, 0x96, 0x20, 0xa1, 0x87, 0xad, 0x82, 0xbc, 0x7f, 0x9b, 0x27, 0xa5, 0xcc, + 0x0b, 0x9d, 0x1a, 0x7f, 0xe4, 0x5c, 0x73, 0xba, 0xaa, 0x0e, 0x1c, 0xe2, 0x96, 0xd7, 0xee, 0x3d, + 0xec, 0x47, 0xaf, 0xce, 0xce, 0x62, 0xba, 0xb8, 0xb6, 0xbe, 0x9e, 0xf2, 0xbe, 0x38, 0x7c, 0x1e, + 0xdd, 0xe2, 0x33, 0x6d, 0xe8, 0x53, 0x34, 0x62, 0xd0, 0x4d, 0x4d, 0x82, 0x72, 0x0e, 0xe1, 0xbb, + 0x76, 0xa7, 0xc2, 0x14, 0x13, 0x79, 0x43, 0x33, 0xb7, 0x09, 0xc2, 0x81, 0x7c, 0xa0, 0xe6, 0x00, + 0x45, 0xcc, 0x92, 0x9f, 0x88, 0xd3, 0x5b, 0x06, 0xb9, 0x54, 0xb5, 0x75, 0x00, 0x74, 0x8a, 0x6f, + 0xb6, 0xba, 0x72, 0xe1, 0x37, 0x90, 0x31, 0x8f, 0x74, 0x0b, 0x07, 0x5b, 0x7b, 0x19, 0xb6, 0xf8, + 0x6c, 0xa3, 0x89, 0xab, 0x8c, 0x2d, 0xa5, 0xe1, 0x29, 0x36, 0x73, 0x15, 0xc3, 0x97, 0xf2, 0xf0, + 0xe6, 0x28, 0x5e, 0x71, 0x83, 0x32, 0xcb, 0x31, 0x3d, 0xf8, 0xf9, 0x73, 0xfe, 0x5e, 0x91, 0x61, + 0xbc, 0x8e, 0x98, 0x58, 0xe3, 0x24, 0xe2, 0x67, 0x50, 0xe2, 0x76, 0x88, 0xde, 0x50, 0x81, 0x27, + 0x4f, 0x0e, 0xf8, 0x07, 0x74, 0xff, 0x66, 0xf2, 0x86, 0x3a, 0x67, 0x83, 0x4e, 0x9c, 0x45, 0xf2, + 0x11, 0xb1, 0x1d, 0x8d, 0x7c, 0xc3, 0x25, 0xb6, 0x9a, 0x12, 0x77, 0x94, 0xfd, 0x5e, 0xe6, 0x00, + 0x12, 0x70, 0x9c, 0xf1, 0x24, 0x4a, 0xe5, 0x60, 0xe2, 0x59, 0x24, 0x78, 0xd3, 0x76, 0x55, 0xc7, + 0x61, 0xcb, 0x3d, 0x1d, 0x95, 0x4b, 0x37, 0xbb, 0x8a, 0xdd, 0xc8, 0x42, 0xd7, 0xab, 0xf2, 0xce, + 0x55, 0x68, 0x0d, 0xbf, 0x51, 0xce, 0xa0, 0x3f, 0x13, 0xfa, 0x77, 0x86, 0x57, 0x2c, 0x01, 0x0d, + 0x42, 0xbf, 0x18, 0x94, 0x04, 0x78, 0x05, 0xf8, 0x40, 0x12, 0x30, 0x50, 0x6b, 0x01, 0x09, 0x32, + 0x77, 0xbb, 0x35, 0x5f, 0x26, 0x25, 0xc2, 0x4a, 0x16, 0xc1, 0xf0, 0xa4, 0x54, 0x72, 0xb7, 0xd9, + 0x29, 0x13, 0xb8, 0xef, 0x2b, 0x49, 0x4d, 0xe0, 0xb5, 0x07, 0xd4, 0xd9, 0x1d, 0x06, 0xa7, 0xf1, + 0xff, 0xf4, 0x83, 0xff, 0x99, 0x77, 0xd1, 0xa6, 0x77, 0x1a, 0x9f, 0x8b, 0xef, 0x2e, 0x82, 0xf3, + 0x6e, 0xef, 0xe2, 0x94, 0x93, 0xbe, 0x3c, 0xac, 0x9e, 0xc5, 0x3a, 0xd5, 0xfa, 0xc6, 0x41, 0x14, + 0x94, 0xe7, 0xc3, 0x8b, 0x53, 0xfc, 0x47, 0x3f, 0x3a, 0x14, 0xf6, 0x20, 0xf1, 0xe8, 0xe2, 0xb4, + 0x8b, 0xff, 0xc6, 0x68, 0xf7, 0x1b, 0x6c, 0x0d, 0xef, 0x55, 0xc3, 0xa5, 0x15, 0x9f, 0xf4, 0xfb, + 0x3e, 0xd9, 0x88, 0x39, 0x5d, 0x9d, 0x69, 0xea, 0x2a, 0xc5, 0x61, 0x19, 0x3e, 0x2d, 0x55, 0x86, + 0xb1, 0xb5, 0x18, 0xef, 0xa9, 0x0a, 0xbc, 0x1e, 0x14, 0xd8, 0x0b, 0x8b, 0xdc, 0xcf, 0x6a, 0xcb, + 0xc9, 0xb0, 0x18, 0xa2, 0x3a, 0x52, 0x5a, 0x0d, 0x5f, 0x4d, 0xd2, 0x34, 0x2b, 0xbd, 0x19, 0x45, + 0x35, 0x94, 0x61, 0xb4, 0x26, 0xf0, 0x9f, 0xee, 0xcc, 0x07, 0x9e, 0x8d, 0x77, 0xb6, 0x34, 0x8c, + 0x96, 0x7d, 0x49, 0x14, 0x80, 0xb7, 0x53, 0x29, 0x42, 0xd1, 0xf7, 0x58, 0xc4, 0xcb, 0xbe, 0xbc, + 0x03, 0x48, 0x97, 0xb5, 0xad, 0xcc, 0xd6, 0x43, 0xdf, 0x6c, 0xd1, 0xac, 0x01, 0x2d, 0x40, 0x06, + 0x52, 0x8c, 0x95, 0xdc, 0xcf, 0xf5, 0x8e, 0xab, 0xfb, 0xe0, 0x0d, 0xd0, 0xa5, 0x98, 0x53, 0xec, + 0x39, 0xaa, 0xc0, 0x82, 0x0a, 0xbd, 0xf9, 0x18, 0x7d, 0x94, 0xce, 0xc9, 0x21, 0x1f, 0xa3, 0x11, + 0xe0, 0xed, 0x49, 0xda, 0x34, 0xe3, 0x3a, 0x9d, 0xe4, 0xe3, 0xe1, 0x71, 0x5d, 0x76, 0x35, 0x1e, + 0x52, 0xaa, 0xe4, 0x56, 0x20, 0x00, 0xf3, 0x23, 0xbe, 0xc7, 0xad, 0x8b, 0xee, 0x25, 0xc3, 0x44, + 0xa8, 0x81, 0x20, 0x61, 0x1b, 0x38, 0x3a, 0x5d, 0xcb, 0xeb, 0x38, 0x18, 0x2c, 0x25, 0x70, 0x63, + 0xe8, 0xe5, 0x72, 0x19, 0x98, 0x55, 0x44, 0xdc, 0x31, 0x82, 0x6f, 0xcb, 0xe8, 0x39, 0x17, 0x1d, + 0x20, 0x30, 0x6b, 0x62, 0xd6, 0xe3, 0x73, 0x71, 0x11, 0xf3, 0x83, 0xc8, 0xb8, 0x96, 0x1b, 0xbd, + 0x09, 0xac, 0x30, 0x91, 0x3b, 0x1b, 0xbe, 0x35, 0x35, 0x16, 0x7d, 0x0e, 0xbd, 0x19, 0xe8, 0x86, + 0x78, 0x6e, 0x08, 0xf2, 0x75, 0x18, 0x1a, 0x7b, 0xaf, 0x54, 0xb9, 0x3b, 0x11, 0x3e, 0xb2, 0x88, + 0x20, 0xe9, 0xd3, 0x79, 0xf1, 0xe4, 0x09, 0xd2, 0xdc, 0x4f, 0xeb, 0x92, 0x14, 0xdb, 0x3f, 0x4f, + 0x0b, 0x91, 0x03, 0x4b, 0x62, 0x49, 0x24, 0x06, 0x6c, 0xa5, 0x5b, 0x13, 0x66, 0x96, 0x40, 0x2d, + 0x06, 0x3f, 0xf3, 0x56, 0xb8, 0x0b, 0x1b, 0x44, 0x65, 0xbe, 0x31, 0x66, 0x9c, 0x39, 0xe6, 0x5a, + 0xb2, 0x76, 0xfc, 0x07, 0x66, 0x03, 0xd0, 0x02, 0xf4, 0x34, 0x5b, 0xae, 0xa1, 0x6f, 0xe9, 0x00, + 0xc9, 0x2a, 0x73, 0x6c, 0x9b, 0x5e, 0xcb, 0x0b, 0x79, 0xb8, 0xc8, 0x57, 0x25, 0xa8, 0x75, 0x83, + 0xff, 0xf5, 0x33, 0x1e, 0x73, 0xd5, 0x2e, 0x46, 0xe8, 0x04, 0x29, 0x0f, 0x39, 0x5d, 0xda, 0x6c, + 0xe1, 0xa0, 0x2d, 0xd6, 0xd3, 0x32, 0x17, 0xe4, 0xb0, 0xab, 0x77, 0x8a, 0xb5, 0x2d, 0xba, 0x09, + 0xcb, 0x03, 0x93, 0x57, 0x3e, 0xdd, 0x7e, 0x64, 0x5a, 0x16, 0x29, 0x1e, 0xf4, 0x20, 0xa0, 0x02, + 0xeb, 0x14, 0x37, 0xc6, 0xe7, 0x03, 0x1b, 0x5c, 0x5d, 0x10, 0x06, 0xfe, 0x40, 0x03, 0xa3, 0x7e, + 0xc8, 0x0d, 0x1d, 0x95, 0xc8, 0x40, 0x11, 0x72, 0x81, 0xb0, 0x52, 0xbd, 0xb6, 0x3e, 0xc2, 0xfb, + 0xb4, 0x2f, 0x7b, 0xb3, 0x97, 0x61, 0x9f, 0x19, 0x87, 0xda, 0xfa, 0x97, 0x6f, 0xfc, 0xe2, 0xc5, + 0x4b, 0xc6, 0xe5, 0x58, 0xde, 0xdd, 0x70, 0x14, 0xba, 0x15, 0xd3, 0xff, 0x4e, 0xca, 0xf7, 0xfb, + 0x14, 0xa5, 0xe1, 0xbc, 0x24, 0x88, 0xc6, 0xfe, 0xf5, 0x24, 0x4d, 0x56, 0xeb, 0x25, 0xdb, 0x4e, + 0xe4, 0xc2, 0xd7, 0xcf, 0x9a, 0x06, 0xf4, 0x22, 0x92, 0x7b, 0x23, 0x61, 0x4d, 0x9e, 0x46, 0x22, + 0xcc, 0x6b, 0x99, 0x67, 0x77, 0xfb, 0x0c, 0xd9, 0x68, 0x7e, 0xd8, 0xde, 0x3c, 0x3f, 0x0f, 0xa0, + 0x9a, 0xd7, 0x75, 0xda, 0xf6, 0x9c, 0x52, 0x69, 0xcb, 0xc5, 0xa9, 0x5f, 0xbf, 0xa1, 0xef, 0xc7, + 0xbe, 0xe3, 0x56, 0xbd, 0x3f, 0x3a, 0xb7, 0xae, 0x7e, 0x9b, 0x17, 0xbf, 0xab, 0x6b, 0xdf, 0x0e, + 0x1d, 0x37, 0x2a, 0xad, 0x14, 0xc4, 0xc0, 0x6a, 0x02, 0x39, 0x39, 0x28, 0x8d, 0x5e, 0x98, 0x25, + 0x16, 0xe4, 0x60, 0x68, 0x12, 0x1b, 0xd0, 0x98, 0x6b, 0x08, 0x78, 0xf0, 0x68, 0x44, 0x01, 0x8b, + 0x0a, 0x2b, 0xf1, 0x86, 0x77, 0xa5, 0xc6, 0x16, 0x82, 0x76, 0x3e, 0x98, 0x44, 0xd8, 0x38, 0x05, + 0x08, 0x47, 0xf4, 0x2e, 0x62, 0xed, 0x1e, 0x34, 0x6c, 0xd3, 0xc6, 0x59, 0x49, 0x0f, 0xda, 0x54, + 0x6f, 0xdd, 0xfa, 0xd7, 0x09, 0x4c, 0x34, 0xec, 0xa9, 0xe8, 0x92, 0xba, 0xab, 0xd8, 0x64, 0x43, + 0xc5, 0xd0, 0x6f, 0x61, 0xb2, 0xab, 0x20, 0x60, 0x73, 0xc5, 0x25, 0xd1, 0xbb, 0xb8, 0xed, 0x76, + 0x75, 0xb4, 0x40, 0x1f, 0xd4, 0xc3, 0x19, 0x2b, 0x5a, 0x9e, 0x5a, 0xc4, 0x5f, 0xf1, 0xca, 0x87, + 0x47, 0xe4, 0x9d, 0xaa, 0xd6, 0xf1, 0xe0, 0x24, 0x28, 0xed, 0x6a, 0x6b, 0x75, 0xbb, 0xbb, 0x37, + 0x23, 0x9b, 0x27, 0x30, 0x18, 0xe5, 0x78, 0x80, 0x3e, 0x0a, 0xc7, 0xf4, 0xf2, 0xd2, 0x98, 0x7c, + 0x7e, 0x9e, 0x0f, 0x4e, 0xca, 0xd3, 0xb2, 0x37, 0x46, 0x9b, 0x65, 0xef, 0xe8, 0x29, 0xf0, 0x02, + 0x8b, 0xf8, 0xb9, 0x2c, 0xd1, 0x1d, 0x1f, 0x41, 0xef, 0xbd, 0xe7, 0x03, 0x48, 0x04, 0x89, 0xb6, + 0x0b, 0xdb, 0x11, 0xdf, 0xf1, 0xcb, 0x7a, 0x49, 0x18, 0x4d, 0xaa, 0x99, 0x2a, 0xdc, 0x33, 0x65, + 0x90, 0x73, 0x35, 0x49, 0xc4, 0x73, 0xf1, 0x94, 0xf4, 0xe5, 0xd3, 0x1c, 0x73, 0xf2, 0xde, 0xa9, + 0x5f, 0x63, 0x8f, 0x74, 0x31, 0xe9, 0x43, 0x2a, 0xcd, 0xa2, 0x68, 0x78, 0x69, 0xb0, 0x22, 0xc8, + 0xdd, 0x2b, 0x5e, 0x8c, 0x1c, 0x96, 0x6e, 0x78, 0x6b, 0x1e, 0x09, 0x52, 0x5f, 0xe1, 0x19, 0xc1, + 0x49, 0xe8, 0x32, 0x19, 0x68, 0x9a, 0xa8, 0x88, 0x97, 0xdf, 0x70, 0x87, 0x33, 0xef, 0xd4, 0x97, + 0xba, 0xc7, 0x58, 0xaa, 0xef, 0xe0, 0x58, 0xdf, 0x5e, 0xd0, 0x23, 0xf3, 0xb9, 0xe9, 0xb4, 0x04, + 0x08, 0xa1, 0x34, 0xd8, 0x82, 0x23, 0x7e, 0xb2, 0x3d, 0x8f, 0xd6, 0xa8, 0x77, 0x0a, 0x59, 0x28, + 0x3d, 0x5c, 0x4d, 0x2e, 0x85, 0x87, 0xe1, 0x2b, 0xc8, 0xb7, 0xa9, 0xf0, 0xc6, 0x1e, 0x85, 0xd4, + 0x8c, 0xbc, 0x34, 0x7b, 0x23, 0x6e, 0xcf, 0xc4, 0xa5, 0x4e, 0x1a, 0x71, 0x99, 0xa4, 0xf8, 0x39, + 0x35, 0x4a, 0x2d, 0x5f, 0x56, 0x1f, 0x49, 0xf1, 0xe3, 0x4d, 0xf5, 0x85, 0xaf, 0x55, 0x9d, 0x01, + 0xd0, 0x66, 0xfe, 0x2f, 0x97, 0xd3, 0xdb, 0x5a, 0x7b, 0x14, 0x06, 0x1b, 0x3b, 0x39, 0x1f, 0x44, + 0xf0, 0xbf, 0x0b, 0x99, 0xac, 0xa3, 0x50, 0x43, 0x06, 0x15, 0x57, 0x19, 0xe9, 0xf2, 0xdb, 0x75, + 0x0e, 0xa9, 0x2f, 0x06, 0x32, 0x81, 0x43, 0x39, 0x8a, 0xf9, 0xf7, 0x1b, 0x48, 0x55, 0x89, 0x33, + 0x48, 0x35, 0x3e, 0x31, 0x2a, 0xd1, 0x9c, 0x63, 0x0b, 0x15, 0x66, 0x29, 0x8e, 0x36, 0x20, 0x83, + 0x0e, 0x8d, 0xbd, 0xde, 0x50, 0x66, 0xe0, 0x13, 0x73, 0xac, 0xc6, 0x34, 0x1b, 0x11, 0x97, 0xaf, + 0x50, 0x01, 0x83, 0x49, 0x91, 0x07, 0x04, 0x61, 0x7e, 0x65, 0xb7, 0xb0, 0x5f, 0xbe, 0x4f, 0xf1, + 0x81, 0x0a, 0x4e, 0x81, 0xe5, 0x06, 0xd8, 0x33, 0xaa, 0x63, 0xba, 0x3a, 0x61, 0x28, 0x3e, 0x38, + 0xf0, 0xa4, 0x1e, 0xed, 0x8f, 0x08, 0x52, 0x25, 0x42, 0xf7, 0x89, 0x15, 0x0b, 0x9c, 0x0c, 0x4e, + 0xe4, 0xdd, 0xd3, 0xbc, 0x49, 0xf0, 0x31, 0x50, 0x2b, 0xd4, 0x45, 0x52, 0xc2, 0x28, 0x24, 0x86, + 0x9e, 0x25, 0xf0, 0xbf, 0x90, 0x51, 0x5c, 0x23, 0x33, 0xfa, 0xf6, 0x8b, 0x41, 0x04, 0x1f, 0xb6, + 0x12, 0x8f, 0x67, 0xe3, 0xf3, 0xcf, 0x64, 0xc3, 0x9a, 0xa1, 0x66, 0x05, 0xe2, 0xdf, 0xd0, 0xb7, + 0x23, 0x59, 0x26, 0xe5, 0x9d, 0xf4, 0x9e, 0xa6, 0xe0, 0xde, 0xc9, 0xc2, 0x0b, 0x0e, 0xf4, 0xb9, + 0x79, 0x95, 0x00, 0x1b, 0x92, 0x7a, 0x4f, 0x9e, 0x10, 0x24, 0xdf, 0x22, 0xd6, 0xa0, 0x58, 0xcf, + 0xc4, 0xe2, 0x89, 0xf7, 0x0c, 0x23, 0x96, 0x63, 0xdd, 0x5c, 0x00, 0x33, 0x51, 0x94, 0x7f, 0x2d, + 0x32, 0xe2, 0x96, 0x3c, 0x90, 0x8c, 0x45, 0xa8, 0xc3, 0x78, 0x1b, 0x00, 0xa8, 0x80, 0xdd, 0x58, + 0x09, 0x4d, 0x43, 0x81, 0x31, 0x72, 0x42, 0x26, 0xae, 0x33, 0x79, 0x56, 0x7f, 0x73, 0xf7, 0x7a, + 0x1e, 0x74, 0x66, 0xc5, 0xb2, 0x13, 0x56, 0xcf, 0xca, 0x62, 0xbc, 0xf6, 0xdc, 0x0b, 0x12, 0x9a, + 0x04, 0x2f, 0xf1, 0x8e, 0xa1, 0x9e, 0x52, 0x2f, 0x78, 0x68, 0x51, 0xc3, 0x96, 0x67, 0x73, 0x34, + 0xab, 0xf1, 0x41, 0x5a, 0x05, 0x73, 0xe7, 0x38, 0xa7, 0x63, 0x8f, 0x9c, 0x85, 0x61, 0x36, 0xf1, + 0xbf, 0xd0, 0x67, 0x28, 0xed, 0xc8, 0xad, 0x9f, 0x7f, 0x26, 0xc3, 0x3c, 0xca, 0xb8, 0x38, 0x9c, + 0x46, 0x14, 0xf5, 0xbe, 0x4c, 0x96, 0x04, 0x34, 0x4d, 0x54, 0x1f, 0xc6, 0x6b, 0x6a, 0xcf, 0x0d, + 0xce, 0x8b, 0x46, 0xa8, 0x42, 0xda, 0x6a, 0x7c, 0xe0, 0x3f, 0x55, 0xd0, 0x8a, 0xc0, 0xc0, 0x5b, + 0xe4, 0x1d, 0x3d, 0xc7, 0xdc, 0x79, 0xf3, 0xed, 0x1a, 0x76, 0xc6, 0xa1, 0x09, 0x53, 0xd6, 0x89, + 0x96, 0x99, 0x8c, 0x78, 0xe2, 0x19, 0xa9, 0x0d, 0x5c, 0x62, 0x5c, 0xf4, 0x50, 0xa2, 0x45, 0x5e, + 0x57, 0x1d, 0x0f, 0x46, 0xf5, 0x29, 0xaa, 0x0d, 0xbd, 0x9c, 0x4c, 0x5f, 0x87, 0x9f, 0x7f, 0x06, + 0xa3, 0x51, 0x51, 0x82, 0x6a, 0xd3, 0x54, 0x7c, 0x73, 0xf7, 0x4a, 0xbd, 0xc6, 0x1e, 0x54, 0xa1, + 0x84, 0x42, 0xc7, 0x54, 0xa9, 0xcc, 0xc6, 0x84, 0xa9, 0x0c, 0x9c, 0x36, 0xfd, 0xb4, 0x3b, 0xd4, + 0x73, 0xa6, 0xeb, 0x77, 0xef, 0x7d, 0x6f, 0x42, 0xe6, 0x18, 0x74, 0x5d, 0xf3, 0x25, 0xb9, 0xe9, + 0x1a, 0x08, 0xb7, 0xd9, 0x58, 0x17, 0x26, 0x5e, 0x95, 0x6f, 0x8c, 0x59, 0x45, 0x3b, 0xa2, 0xc1, + 0x22, 0x40, 0xec, 0xf4, 0xe5, 0x55, 0xd1, 0x21, 0x23, 0x0d, 0x0b, 0x54, 0x4e, 0x48, 0xa3, 0xc9, + 0xf0, 0xbd, 0x86, 0xef, 0x0f, 0xaf, 0xb8, 0x23, 0x9c, 0xb1, 0x3e, 0x47, 0x2c, 0x0b, 0x3a, 0xc5, + 0x75, 0x96, 0x95, 0x57, 0x1d, 0x63, 0x4a, 0xa0, 0x18, 0x23, 0x9f, 0xc2, 0xc4, 0x49, 0x05, 0x55, + 0xa7, 0xd7, 0x4b, 0xa0, 0x10, 0x37, 0xe9, 0x20, 0x3d, 0x02, 0x49, 0x01, 0x4c, 0xac, 0x05, 0xd3, + 0xce, 0xc8, 0x00, 0xbf, 0xb8, 0xca, 0x6e, 0xdf, 0x61, 0x1c, 0xa5, 0x80, 0xde, 0xf2, 0xf3, 0x04, + 0x8a, 0xbf, 0x6a, 0x4f, 0xd6, 0xe3, 0xd9, 0xb8, 0xd6, 0x97, 0x8c, 0xbf, 0x84, 0x3d, 0x6c, 0xaa, + 0x48, 0x0e, 0x38, 0x34, 0x68, 0x89, 0x12, 0xcd, 0xf9, 0xe0, 0x86, 0x4f, 0x3d, 0x9f, 0x7e, 0xc0, + 0x41, 0x85, 0x3d, 0x23, 0x3a, 0x67, 0x4b, 0x31, 0xc9, 0x15, 0x55, 0x4b, 0x08, 0xb9, 0x4d, 0x1e, + 0x31, 0x30, 0xb0, 0xd7, 0xc4, 0xbe, 0x62, 0xc4, 0x72, 0x64, 0x7a, 0x3b, 0x94, 0xc9, 0x6e, 0x80, + 0x6c, 0x3d, 0x68, 0x29, 0x4d, 0x2c, 0x95, 0x07, 0x13, 0xcb, 0x8d, 0x42, 0x8a, 0xb1, 0x7e, 0x0c, + 0x0e, 0xd6, 0xb3, 0x21, 0xdd, 0xb8, 0xe8, 0x85, 0xa0, 0x65, 0x62, 0xf1, 0x60, 0x97, 0xa2, 0xed, + 0xab, 0x41, 0x0b, 0x58, 0x88, 0xf4, 0x07, 0x8c, 0x51, 0x5e, 0xc8, 0x1a, 0xc1, 0x9d, 0x57, 0x19, + 0x20, 0x49, 0xbe, 0x2a, 0x94, 0x79, 0x74, 0x35, 0x1c, 0xf0, 0x9c, 0xc0, 0xd1, 0xd1, 0xf7, 0xde, + 0x02, 0x16, 0xf0, 0x66, 0x92, 0x58, 0xc0, 0x5e, 0x71, 0xe5, 0x95, 0x57, 0xc2, 0xc3, 0xb3, 0xb8, + 0xef, 0xbd, 0x5e, 0xd0, 0x47, 0x52, 0x14, 0x6b, 0x8a, 0xe8, 0x56, 0x00, 0xa1, 0x14, 0x11, 0x14, + 0x9c, 0x02, 0x8d, 0x78, 0x77, 0x19, 0x9c, 0x7e, 0xdf, 0x9d, 0xbd, 0xed, 0x77, 0xac, 0x9d, 0x53, + 0x43, 0x44, 0xc8, 0xad, 0x83, 0xd4, 0x3a, 0x93, 0xae, 0x81, 0xf3, 0x74, 0x19, 0xcb, 0xc4, 0x68, + 0x7d, 0x95, 0x91, 0x68, 0x21, 0x54, 0xa8, 0xb0, 0xa0, 0xe0, 0xe5, 0x4e, 0x7b, 0x32, 0xce, 0x80, + 0xef, 0xd3, 0xa6, 0x75, 0xb9, 0xe3, 0x68, 0xe4, 0x53, 0x06, 0x57, 0xfb, 0x1d, 0x5e, 0xe9, 0x41, + 0x1b, 0xf0, 0x25, 0xb7, 0xa2, 0xea, 0x75, 0xbb, 0x7a, 0xa3, 0x47, 0xc5, 0xcd, 0x98, 0x8a, 0x9c, + 0xdf, 0x29, 0x0e, 0x00, 0x37, 0x09, 0x7d, 0xaf, 0x19, 0x0b, 0xf4, 0x93, 0x39, 0x82, 0x8a, 0x87, + 0x12, 0xe4, 0x8d, 0xad, 0x1e, 0xc3, 0x7a, 0xff, 0x49, 0x77, 0x48, 0xad, 0x03, 0xb8, 0xb0, 0xcc, + 0x3f, 0x5a, 0xb1, 0x70, 0xc5, 0xa5, 0xdf, 0x12, 0x9f, 0xb0, 0x98, 0x5d, 0xfd, 0xce, 0x81, 0x17, + 0x79, 0xe4, 0xde, 0x97, 0xf7, 0xc9, 0x76, 0x67, 0x80, 0x42, 0x68, 0x0c, 0xcb, 0x50, 0x3c, 0x6b, + 0x33, 0x56, 0xf0, 0x12, 0x5a, 0x08, 0x30, 0x27, 0xf4, 0xb1, 0x11, 0x04, 0x1f, 0x79, 0x15, 0x58, + 0x27, 0xea, 0xfd, 0xde, 0xd8, 0xf7, 0xb7, 0xed, 0xf1, 0x0b, 0x11, 0x12, 0x47, 0x00, 0xc3, 0x9d, + 0x41, 0x90, 0xbd, 0xc5, 0x32, 0x87, 0xce, 0x14, 0x4f, 0x05, 0x3b, 0x24, 0xad, 0xcb, 0xcd, 0x8a, + 0xfa, 0xd2, 0xf0, 0x0a, 0x04, 0xcb, 0x88, 0xeb, 0xc6, 0xe5, 0x25, 0xb0, 0x1c, 0x3f, 0xee, 0x2f, + 0xce, 0xc0, 0xd4, 0xe2, 0x12, 0x26, 0xd2, 0xd5, 0x3e, 0x7d, 0xda, 0x9d, 0x50, 0x1f, 0x88, 0x48, + 0x14, 0xd2, 0xbc, 0x1f, 0xbf, 0xfb, 0x56, 0xc7, 0x11, 0xac, 0x22, 0x12, 0xe7, 0x18, 0x28, 0xd3, + 0x44, 0xe2, 0xa3, 0x22, 0x0b, 0x7e, 0x79, 0xaf, 0x78, 0xb3, 0xde, 0x70, 0xab, 0x43, 0x0c, 0x2a, + 0x5c, 0x63, 0xeb, 0xdb, 0x46, 0x90, 0xe6, 0x1f, 0x45, 0x2a, 0x43, 0x34, 0xcb, 0x78, 0x8a, 0x67, + 0x65, 0xb6, 0x72, 0x43, 0x97, 0x01, 0x97, 0x3c, 0xcd, 0xca, 0xd5, 0x64, 0x6e, 0xc1, 0xb8, 0x5f, + 0x08, 0xc7, 0x26, 0x8c, 0x0e, 0x08, 0xb3, 0xd5, 0x4e, 0x00, 0x9b, 0x01, 0x38, 0x03, 0xa3, 0x2a, + 0xf0, 0x5d, 0xc6, 0x40, 0x71, 0x08, 0x6d, 0x99, 0xc0, 0x94, 0x0d, 0x71, 0x9e, 0x0a, 0x9a, 0xa0, + 0xd0, 0x88, 0xd3, 0xb9, 0x9b, 0x98, 0x66, 0xe9, 0x42, 0x8f, 0x7c, 0x56, 0x23, 0x19, 0xf4, 0xe7, + 0xd0, 0xf4, 0x2d, 0x49, 0x66, 0xa0, 0x48, 0x66, 0x47, 0x9b, 0xf3, 0x2a, 0xec, 0xfb, 0xe5, 0xbc, + 0xd6, 0xe6, 0xdc, 0x5c, 0x33, 0x1c, 0x4f, 0xf0, 0xd9, 0x7f, 0xa9, 0x36, 0x1d, 0x6b, 0x15, 0x24, + 0x34, 0xb5, 0x5a, 0x7f, 0x11, 0x68, 0xf3, 0x13, 0xde, 0x5c, 0xd9, 0xa4, 0xf7, 0x59, 0xb2, 0x50, + 0xbf, 0x16, 0xde, 0x1b, 0x9a, 0xa9, 0x2d, 0x59, 0x28, 0xf3, 0x29, 0x96, 0xac, 0x15, 0xee, 0x12, + 0x31, 0xff, 0x51, 0x6d, 0xb9, 0x4d, 0xe6, 0x56, 0xc6, 0xb7, 0xee, 0x84, 0xd6, 0xd1, 0x3b, 0x4b, + 0xe5, 0xce, 0x67, 0x6d, 0x73, 0x27, 0x63, 0x29, 0x7f, 0xb8, 0xb7, 0xff, 0x8e, 0x8c, 0x81, 0x5d, + 0x6b, 0xab, 0x53, 0xa7, 0xab, 0x9f, 0x26, 0x9b, 0xe4, 0x7a, 0x7d, 0xed, 0x31, 0x09, 0x7b, 0xd9, + 0x42, 0x47, 0x75, 0xf5, 0xf0, 0xad, 0xc8, 0x2b, 0x38, 0xc7, 0xe4, 0xa8, 0xf0, 0x88, 0x36, 0x25, + 0x46, 0x3c, 0x9a, 0x70, 0x28, 0x9e, 0xbc, 0x34, 0xee, 0x05, 0x3a, 0x57, 0x0a, 0x01, 0x26, 0x7f, + 0xec, 0x92, 0x35, 0x1b, 0xe2, 0x80, 0x19, 0x4d, 0x5d, 0x54, 0xc7, 0x0e, 0x08, 0xbb, 0x97, 0xd0, + 0x1a, 0x56, 0x15, 0x2c, 0x83, 0x7b, 0x4f, 0x41, 0xfc, 0xf7, 0xf0, 0xa2, 0x14, 0x34, 0x63, 0x64, + 0xeb, 0x33, 0x43, 0xa5, 0x85, 0xf2, 0x40, 0x81, 0x5a, 0x90, 0xfd, 0x91, 0x6f, 0x2c, 0xf4, 0x2e, + 0x95, 0x67, 0xfa, 0x5f, 0x06, 0x73, 0x71, 0x19, 0xb1, 0x80, 0x0a, 0xf3, 0xae, 0x6a, 0x6d, 0xff, + 0x33, 0xf2, 0xbe, 0xf8, 0xea, 0xab, 0xaf, 0xac, 0xa4, 0x10, 0x27, 0x4e, 0x98, 0xf1, 0x31, 0x5a, + 0x98, 0xde, 0x8e, 0x15, 0xc6, 0xbd, 0x13, 0x9e, 0x0f, 0x9a, 0xc2, 0x07, 0x00, 0x03, 0x20, 0xb5, + 0x30, 0xdb, 0xb8, 0x11, 0x18, 0xc3, 0x07, 0xee, 0x98, 0x46, 0xbe, 0x4f, 0xcf, 0xb8, 0x75, 0x71, + 0x8f, 0x7c, 0x1d, 0xf7, 0xf3, 0xcf, 0xb0, 0x76, 0x6f, 0xef, 0xea, 0xb8, 0x2f, 0xdb, 0xf5, 0x89, + 0xf0, 0xa0, 0x0d, 0xd8, 0x49, 0x68, 0x5a, 0x19, 0x9a, 0x8f, 0x01, 0x6e, 0x6f, 0x29, 0x6d, 0x3e, + 0x05, 0x61, 0xc6, 0xa0, 0x03, 0x2a, 0x32, 0xb6, 0xca, 0xfb, 0xc1, 0x10, 0x8b, 0x86, 0xbe, 0x2e, + 0x68, 0x64, 0xf1, 0x23, 0xe2, 0x4a, 0xf6, 0xda, 0x0b, 0xd2, 0x2b, 0x06, 0xd2, 0x24, 0xed, 0x25, + 0x89, 0x83, 0x2e, 0x7c, 0xbe, 0x7f, 0x1d, 0x30, 0x36, 0x9b, 0xab, 0x84, 0x43, 0x91, 0xbe, 0xc5, + 0x48, 0x53, 0x9d, 0xd0, 0xe2, 0x18, 0x03, 0xd4, 0x82, 0x84, 0xb8, 0x03, 0x48, 0x29, 0x21, 0x26, + 0xc6, 0xa7, 0xad, 0x89, 0x37, 0xcb, 0x7a, 0xfd, 0x74, 0xf9, 0x72, 0xff, 0xea, 0x67, 0x77, 0xe9, + 0xac, 0xde, 0x80, 0xd2, 0xae, 0x34, 0x5b, 0x71, 0xb5, 0xb3, 0xd8, 0x4c, 0x3b, 0x5e, 0xd7, 0x50, + 0x95, 0x84, 0xed, 0x12, 0xef, 0x17, 0x78, 0xf5, 0xaa, 0x92, 0x2d, 0x68, 0xbd, 0x39, 0x76, 0x10, + 0x22, 0xe3, 0x6f, 0xf2, 0xa4, 0x13, 0x86, 0x7b, 0x16, 0x3e, 0x5b, 0x09, 0x31, 0xdf, 0xbf, 0xf8, + 0x6b, 0x94, 0xa5, 0x0a, 0x90, 0x3b, 0xf7, 0xaf, 0xf2, 0x2b, 0x17, 0x25, 0x46, 0x90, 0x74, 0x4d, + 0xa1, 0x43, 0x49, 0x70, 0x7b, 0x9b, 0x4f, 0x56, 0x1d, 0x85, 0x00, 0xb9, 0x10, 0x71, 0xe0, 0xec, + 0xe3, 0xa4, 0x59, 0xcf, 0x69, 0x99, 0x16, 0x86, 0xca, 0xa6, 0x55, 0x8a, 0xa5, 0xb0, 0xde, 0x2e, + 0x09, 0x16, 0x1b, 0x68, 0x48, 0xaf, 0x98, 0x58, 0x97, 0x5c, 0x1b, 0x69, 0xed, 0x52, 0x2b, 0x0e, + 0x2d, 0xb0, 0xb4, 0x59, 0x27, 0x27, 0x5e, 0x12, 0x7a, 0x4f, 0xbc, 0xc1, 0x66, 0x00, 0x6b, 0xaa, + 0xd9, 0x3c, 0xc9, 0xb2, 0xb0, 0xf4, 0x73, 0x38, 0xa6, 0x78, 0x09, 0x60, 0x1b, 0xb6, 0xe6, 0xeb, + 0xc4, 0x1b, 0xa0, 0xf6, 0xc6, 0x4e, 0x3c, 0x1e, 0x9b, 0x23, 0x90, 0x4d, 0xdb, 0x45, 0x7a, 0xc3, + 0x1d, 0x52, 0x33, 0xf0, 0xf3, 0x2b, 0xda, 0x58, 0x9b, 0xd2, 0x07, 0xd3, 0xe1, 0xdb, 0x09, 0xac, + 0x6c, 0xbc, 0x09, 0x30, 0xe2, 0xa2, 0xad, 0x24, 0x19, 0x70, 0xae, 0x24, 0xde, 0xd7, 0xe8, 0x88, + 0x83, 0x20, 0x13, 0xe9, 0x13, 0xb5, 0xc6, 0xfe, 0x17, 0x78, 0x21, 0xb0, 0xb1, 0xc2, 0xd1, 0x49, + 0x09, 0xb6, 0x8b, 0x60, 0x12, 0x79, 0x53, 0xad, 0xb7, 0x9a, 0x50, 0x7c, 0x20, 0x9c, 0x1f, 0xfa, + 0x11, 0xd2, 0x69, 0x44, 0xda, 0x69, 0x52, 0xff, 0x6d, 0xf5, 0xa7, 0xfc, 0x42, 0x5a, 0xf8, 0x47, + 0x91, 0xa5, 0xef, 0x9a, 0xb2, 0xb4, 0xa9, 0xca, 0x82, 0xbe, 0xae, 0x81, 0xdd, 0x8d, 0x3c, 0xe0, + 0x38, 0xa6, 0x59, 0x21, 0xe4, 0x21, 0xc8, 0xdb, 0x9c, 0xa9, 0x4e, 0x54, 0x3a, 0xb2, 0x40, 0xcd, + 0xe7, 0x81, 0xd1, 0x7a, 0x68, 0x76, 0x65, 0xcb, 0xaf, 0xb6, 0xac, 0x59, 0x49, 0xa4, 0xa4, 0xd4, + 0x15, 0xff, 0x54, 0xe2, 0x2f, 0xec, 0x91, 0x43, 0xa7, 0x72, 0x6c, 0xb1, 0x41, 0x9b, 0x4b, 0x07, + 0xab, 0x88, 0x23, 0x67, 0x09, 0x6b, 0x5a, 0x3a, 0xac, 0x18, 0x5a, 0xe7, 0x38, 0x85, 0x72, 0x70, + 0x80, 0xf0, 0xce, 0x21, 0x02, 0x78, 0x48, 0x77, 0x38, 0x3a, 0x31, 0x7f, 0x75, 0x48, 0x93, 0xdc, + 0x28, 0x29, 0x43, 0x58, 0x0d, 0x07, 0x7d, 0xfc, 0xaf, 0x7f, 0xf4, 0xc2, 0xae, 0xea, 0xce, 0xc6, + 0xb6, 0x90, 0x37, 0xb3, 0x9b, 0x5a, 0x65, 0x00, 0x79, 0xdc, 0x01, 0x80, 0x3b, 0x12, 0x69, 0x32, + 0x93, 0xb7, 0x6e, 0xf9, 0xd1, 0x47, 0xed, 0xb3, 0x44, 0x3f, 0xe9, 0xe0, 0x10, 0x29, 0x7f, 0x3d, + 0xfb, 0xf9, 0x8d, 0xb4, 0xc5, 0x26, 0x8b, 0x3b, 0x5d, 0x4f, 0x6a, 0x60, 0x33, 0x20, 0xb8, 0x65, + 0x76, 0x89, 0xca, 0x35, 0x25, 0x49, 0x8b, 0x12, 0x9d, 0xad, 0x02, 0x18, 0x0e, 0xa9, 0x4e, 0xaf, + 0x45, 0x79, 0x95, 0xcd, 0x63, 0x62, 0x18, 0xa3, 0xcf, 0x3f, 0xbb, 0x12, 0x13, 0xd8, 0x68, 0x8a, + 0x18, 0xb3, 0x7c, 0xe9, 0x51, 0xd7, 0xa3, 0x08, 0x8f, 0x31, 0xec, 0xc3, 0x2b, 0xbc, 0x72, 0x40, + 0xda, 0x08, 0x1a, 0xcc, 0xc8, 0x03, 0x26, 0x32, 0x47, 0xef, 0xf4, 0xf7, 0xef, 0xbe, 0xef, 0x7d, + 0x8d, 0xe7, 0x1b, 0x34, 0x81, 0x36, 0xcf, 0x18, 0xa7, 0x0c, 0x75, 0x7c, 0x9f, 0x7f, 0x46, 0x51, + 0x6b, 0x01, 0x00, 0xd8, 0x6c, 0x4e, 0xb4, 0x6e, 0x15, 0x3e, 0xfb, 0xd9, 0xef, 0x5a, 0x9f, 0x60, + 0x0a, 0xf4, 0x16, 0x8d, 0x62, 0x39, 0xec, 0x89, 0x93, 0x75, 0x6b, 0x98, 0x24, 0x9b, 0xb3, 0xb4, + 0x2d, 0x26, 0xa5, 0x41, 0x05, 0x9b, 0xd6, 0x24, 0xf9, 0x34, 0x34, 0x08, 0x12, 0xe3, 0x58, 0xb8, + 0x5f, 0xac, 0x67, 0x33, 0xe4, 0x9c, 0x3c, 0xee, 0x7f, 0xe4, 0x1d, 0x1e, 0xa6, 0x59, 0xda, 0x53, + 0x34, 0x0f, 0xe0, 0xac, 0x00, 0xab, 0x42, 0x2a, 0xcc, 0xa1, 0x51, 0x42, 0x83, 0x1c, 0x94, 0xc2, + 0xbd, 0x56, 0x32, 0x8d, 0x3b, 0x9d, 0xe8, 0x6e, 0xdc, 0x39, 0x66, 0x8f, 0x5b, 0x1d, 0x0c, 0xde, + 0x3f, 0x91, 0xe6, 0x95, 0xe3, 0x43, 0xce, 0x21, 0xf6, 0x92, 0xfa, 0x17, 0x1c, 0x19, 0x5d, 0x47, + 0x58, 0x84, 0xfe, 0xd9, 0x12, 0xe8, 0xc1, 0x54, 0x26, 0x73, 0xbd, 0x09, 0x83, 0x3c, 0x6a, 0x96, + 0x0f, 0xad, 0x2f, 0x94, 0x4f, 0xc7, 0xde, 0xbd, 0x9f, 0x00, 0xe3, 0x6e, 0x68, 0x12, 0xc2, 0xee, + 0x10, 0xb6, 0x59, 0xdc, 0x13, 0xfc, 0xb8, 0x56, 0x7c, 0xdb, 0xe8, 0x3f, 0xcb, 0xcb, 0x40, 0x6e, + 0x2f, 0xc6, 0xde, 0xdf, 0xe8, 0x16, 0x46, 0xba, 0xc1, 0x8d, 0xb1, 0x53, 0x8b, 0xa2, 0x0e, 0x9b, + 0x29, 0xcb, 0x1c, 0x78, 0x32, 0x77, 0xeb, 0xd0, 0xf5, 0x93, 0xb9, 0xd7, 0xed, 0xd8, 0x62, 0xd5, + 0xdf, 0x83, 0xb6, 0x72, 0xe1, 0xc8, 0x3f, 0x71, 0xe4, 0xd1, 0x2e, 0xd7, 0xed, 0xe8, 0x88, 0xea, + 0x28, 0x5e, 0x74, 0xd4, 0x16, 0x49, 0x85, 0x57, 0xbc, 0xd2, 0x5d, 0xd8, 0x94, 0xee, 0xc7, 0x8d, + 0x81, 0xa9, 0x2a, 0xa1, 0xfd, 0xb9, 0x2f, 0x46, 0x8d, 0xf2, 0x1a, 0xa5, 0x15, 0x14, 0xbb, 0x71, + 0x5a, 0x75, 0x0d, 0x48, 0xbd, 0x63, 0xa4, 0xda, 0x84, 0xd3, 0xe9, 0xd6, 0x3b, 0x01, 0x04, 0x01, + 0x1e, 0x4f, 0x1c, 0x19, 0xf4, 0xdc, 0x70, 0xc7, 0x22, 0x30, 0x64, 0x2f, 0x87, 0x46, 0x84, 0xda, + 0xcd, 0xc8, 0x13, 0x47, 0xc6, 0xf7, 0xdd, 0xc8, 0xf3, 0x94, 0x56, 0x6a, 0x91, 0x49, 0xda, 0xee, + 0xe3, 0x6f, 0xb9, 0x0b, 0xa7, 0x7c, 0x9c, 0x63, 0x0a, 0xb5, 0xef, 0x64, 0xe9, 0x74, 0xac, 0xfa, + 0x9a, 0xf0, 0x25, 0x2b, 0x90, 0xa8, 0x44, 0xed, 0x00, 0x93, 0xec, 0x7f, 0x4b, 0x25, 0xa6, 0x68, + 0xf8, 0x47, 0x56, 0xa6, 0xe6, 0xa0, 0xa0, 0xcc, 0xff, 0xea, 0x11, 0x43, 0xb2, 0x57, 0x64, 0x74, + 0x9d, 0x62, 0xf8, 0x35, 0x0a, 0x2f, 0xc4, 0x35, 0xeb, 0xb5, 0x4b, 0x70, 0x2d, 0xe1, 0x74, 0x0e, + 0x15, 0xa4, 0x7e, 0xf0, 0x23, 0x7d, 0xfa, 0xc0, 0x1b, 0x6a, 0x80, 0xcb, 0xa4, 0x5c, 0x0a, 0x03, + 0x20, 0x65, 0xb4, 0xe3, 0xea, 0x62, 0x5e, 0xf4, 0x6f, 0x6f, 0x48, 0x74, 0xd0, 0xf6, 0xaf, 0x2a, + 0x67, 0x86, 0x29, 0x90, 0xa9, 0x8d, 0x5f, 0x55, 0x16, 0x24, 0x81, 0xf0, 0x88, 0x47, 0xbd, 0xc2, + 0x1c, 0x1d, 0x04, 0x92, 0x25, 0x61, 0xa3, 0x22, 0x5e, 0xdd, 0x74, 0x22, 0xcd, 0xe0, 0x36, 0xa5, + 0x9d, 0x15, 0xca, 0x4e, 0xf3, 0x04, 0x65, 0x47, 0xb2, 0x40, 0x16, 0xfd, 0x74, 0xc9, 0x95, 0x95, + 0x7d, 0x90, 0x52, 0xe6, 0xeb, 0x1c, 0x7b, 0xac, 0x2c, 0x91, 0x45, 0x7f, 0x3d, 0x5f, 0x41, 0xd7, + 0xf0, 0x85, 0x19, 0xb6, 0x59, 0xb0, 0xe8, 0xaf, 0x0a, 0x54, 0xd9, 0xd7, 0xcd, 0x82, 0x98, 0xee, + 0x04, 0x6b, 0x76, 0xf7, 0x8e, 0x14, 0xf8, 0x64, 0x74, 0x22, 0x4d, 0x00, 0x71, 0x2b, 0xfd, 0xd5, + 0x12, 0xd8, 0x0b, 0xe2, 0x4f, 0x48, 0x9a, 0xf5, 0x62, 0x25, 0x0f, 0xbb, 0x9a, 0x98, 0x15, 0x6a, + 0x50, 0xd4, 0xd5, 0x6c, 0x96, 0x2e, 0xf0, 0xe2, 0x6e, 0x5b, 0x69, 0xe1, 0x28, 0x3d, 0xd9, 0xb4, + 0x95, 0x2e, 0x9b, 0xa5, 0x51, 0x39, 0xee, 0xc1, 0xb1, 0xdb, 0x5a, 0xc5, 0xae, 0x43, 0xd4, 0x95, + 0xd0, 0x32, 0xe3, 0x4a, 0xda, 0xea, 0x3a, 0x1b, 0x03, 0xa3, 0xcb, 0xcb, 0x61, 0x4e, 0xb6, 0x21, + 0x87, 0x76, 0xd8, 0x5a, 0xc6, 0x86, 0xaa, 0x37, 0x59, 0x04, 0xac, 0xd5, 0x45, 0xdb, 0x9b, 0x58, + 0xc2, 0x9a, 0xc6, 0x06, 0x89, 0x60, 0xe6, 0x23, 0x8f, 0xef, 0xfa, 0x6e, 0xf1, 0x83, 0x74, 0xc1, + 0x92, 0x0b, 0x4b, 0xa4, 0x26, 0x18, 0x8b, 0x2a, 0x65, 0xf0, 0xa3, 0x2c, 0x81, 0x38, 0xa2, 0x23, + 0x58, 0xd5, 0xa8, 0x1f, 0x01, 0xd8, 0x45, 0xaf, 0x27, 0xf9, 0x87, 0xf9, 0xb9, 0x78, 0xc0, 0x06, + 0x88, 0x4b, 0x04, 0x23, 0xc9, 0x2c, 0xa1, 0x24, 0x08, 0x97, 0xf0, 0xe5, 0x47, 0x56, 0xda, 0xd0, + 0x91, 0x76, 0x44, 0x69, 0x7a, 0x15, 0x2a, 0x99, 0x84, 0x4d, 0xde, 0x50, 0x00, 0xc7, 0xab, 0xca, + 0x3e, 0xbb, 0x18, 0x59, 0xa6, 0x45, 0xb4, 0x60, 0xcb, 0xb3, 0xfe, 0x01, 0x81, 0x4a, 0x4f, 0x96, + 0x6c, 0x17, 0x6b, 0x5e, 0xb4, 0x08, 0x82, 0xee, 0x8a, 0x49, 0xbf, 0x70, 0x53, 0x50, 0x43, 0x12, + 0x33, 0xaa, 0x24, 0x9b, 0x4f, 0x21, 0x6c, 0x4a, 0xbe, 0x9d, 0x2e, 0x64, 0x53, 0xb3, 0x8b, 0x8d, + 0xc6, 0x83, 0xb4, 0xe9, 0xcb, 0x34, 0xd8, 0x8b, 0xab, 0xce, 0x57, 0xa4, 0x1f, 0x49, 0x8a, 0xb7, + 0x13, 0xa5, 0xd6, 0x87, 0x35, 0x3a, 0x6f, 0x30, 0x1a, 0x4d, 0xe0, 0xbe, 0xe3, 0x03, 0x12, 0xe5, + 0xbf, 0x59, 0x9e, 0x2d, 0x97, 0xef, 0xb2, 0x55, 0x0b, 0xb7, 0xdc, 0x18, 0x04, 0x1b, 0xa0, 0xde, + 0x91, 0x16, 0x75, 0x57, 0xc3, 0xec, 0xd0, 0xc2, 0x86, 0xaa, 0xc3, 0x61, 0xff, 0x6b, 0x42, 0x13, + 0xc2, 0x55, 0xf4, 0xc9, 0xb6, 0x12, 0x1a, 0x36, 0xb8, 0xce, 0xaf, 0x3f, 0x7e, 0xf7, 0xad, 0x34, + 0x95, 0x51, 0x7f, 0x5c, 0xa4, 0xb2, 0xed, 0x54, 0x4a, 0x0a, 0xc5, 0xe0, 0x71, 0x84, 0x70, 0x2d, + 0x83, 0x04, 0xb2, 0xcd, 0x7b, 0x9b, 0xa1, 0xed, 0xfc, 0xc2, 0xb2, 0x89, 0xb4, 0x37, 0x75, 0xa4, + 0xa1, 0x8f, 0x64, 0x2d, 0xdd, 0x7b, 0xad, 0x2f, 0x6c, 0xde, 0x16, 0xa0, 0xd8, 0x3e, 0x49, 0x1a, + 0x10, 0x69, 0xf8, 0xe7, 0x8d, 0xfa, 0x00, 0xff, 0xca, 0x69, 0xcb, 0xa6, 0xff, 0xa0, 0xb3, 0x1f, + 0xaf, 0xea, 0x93, 0x77, 0x08, 0x9e, 0xec, 0x90, 0x68, 0xee, 0x1c, 0x86, 0xf2, 0xed, 0x81, 0x3d, + 0xe7, 0xe9, 0x50, 0xda, 0xcf, 0x2b, 0xc9, 0x0a, 0xda, 0x6a, 0x5a, 0xa2, 0x18, 0xb2, 0x37, 0x4b, + 0x06, 0x8b, 0x0f, 0x81, 0x03, 0xf8, 0xa3, 0x8e, 0xd0, 0xe5, 0x4b, 0x69, 0x53, 0xaa, 0x50, 0xfd, + 0x06, 0x27, 0x84, 0x8d, 0x70, 0x2c, 0xa5, 0xf6, 0xbd, 0xdf, 0xd0, 0x9a, 0xc6, 0x49, 0xb7, 0xc9, + 0x72, 0xe9, 0xf1, 0x7d, 0xa0, 0xc5, 0xc2, 0xa3, 0xeb, 0x86, 0x34, 0x23, 0x7c, 0x9e, 0x74, 0xe1, + 0x37, 0x6c, 0xca, 0x18, 0x26, 0xb1, 0x4f, 0x92, 0x51, 0xa5, 0xa8, 0x72, 0xf7, 0x30, 0x17, 0xd4, + 0x07, 0xcc, 0xdd, 0x5c, 0x56, 0xb0, 0xb1, 0x95, 0x2e, 0x01, 0x5b, 0x12, 0x69, 0x00, 0xec, 0x76, + 0xbb, 0xff, 0xa0, 0x51, 0x1d, 0x24, 0x4d, 0x8d, 0xd5, 0xc1, 0x76, 0xa0, 0x7e, 0x4b, 0x04, 0x68, + 0xfd, 0x50, 0x1d, 0x0b, 0x3f, 0x83, 0x80, 0x20, 0xc7, 0x5c, 0x50, 0x24, 0xfa, 0x2b, 0x01, 0x22, + 0x69, 0x79, 0x9b, 0xe5, 0xbf, 0x33, 0x0e, 0xd2, 0xec, 0x96, 0x7c, 0x77, 0xd0, 0x64, 0x89, 0x16, + 0x07, 0xe0, 0x42, 0xc5, 0x8e, 0x31, 0xbf, 0xc3, 0x22, 0x12, 0xab, 0x00, 0x49, 0xf6, 0x70, 0xf3, + 0xde, 0x32, 0xc3, 0x08, 0x9b, 0xd4, 0x89, 0x13, 0x37, 0x78, 0x44, 0x13, 0x76, 0xf0, 0x98, 0x86, + 0x1f, 0x6a, 0x2c, 0xc0, 0x4b, 0xe6, 0x62, 0x76, 0x63, 0xa4, 0x3c, 0x06, 0x6d, 0xc8, 0xea, 0xdc, + 0x24, 0xe2, 0x56, 0x11, 0x32, 0xf9, 0x2a, 0x1d, 0xe0, 0x5f, 0xe7, 0xd6, 0xb7, 0x94, 0xc5, 0x1d, + 0x9a, 0xa2, 0x00, 0x2b, 0x91, 0xf6, 0x81, 0x55, 0x46, 0xf2, 0x05, 0xee, 0x07, 0x9b, 0xc9, 0x67, + 0x56, 0xe5, 0x43, 0x95, 0x07, 0x0d, 0x4c, 0xa6, 0x78, 0xdb, 0x6d, 0xba, 0x9c, 0xa4, 0xbf, 0xef, + 0xd4, 0x04, 0x3a, 0x14, 0x91, 0xb2, 0x35, 0x4b, 0x07, 0x68, 0x8f, 0xff, 0x7a, 0xf2, 0x3b, 0x9e, + 0xc9, 0x81, 0x16, 0xbc, 0x52, 0xe5, 0x04, 0xd5, 0x34, 0x1c, 0x78, 0x03, 0x5d, 0x6a, 0xc5, 0x94, + 0xd5, 0x80, 0xe5, 0x23, 0xd9, 0x49, 0xac, 0x6a, 0xbd, 0xe1, 0x56, 0x7c, 0x0c, 0x2d, 0xb5, 0x30, + 0xd5, 0x3e, 0xd6, 0x6e, 0x52, 0x21, 0x77, 0xba, 0x62, 0x0a, 0xdd, 0x1a, 0x26, 0xe3, 0x76, 0x13, + 0xac, 0x65, 0x6e, 0x35, 0xfb, 0xdb, 0xc2, 0x02, 0x17, 0xb7, 0xa1, 0x65, 0x4a, 0x69, 0xd8, 0x23, + 0xb5, 0xf9, 0xf1, 0x51, 0xc6, 0x46, 0xab, 0x9b, 0x4f, 0x63, 0x77, 0x4c, 0x8b, 0x7f, 0xd7, 0xde, + 0xd8, 0x06, 0xdf, 0xa7, 0xb0, 0x39, 0x1a, 0x69, 0x8f, 0x34, 0x39, 0x6a, 0x09, 0xa0, 0x07, 0x73, + 0x2b, 0x95, 0xfd, 0x7f, 0xd6, 0x88, 0x68, 0x0d, 0xcb, 0x65, 0x4f, 0xb4, 0x0a, 0x80, 0xa4, 0x6a, + 0x1a, 0x90, 0x1a, 0x86, 0x46, 0xcb, 0xac, 0xf6, 0xd1, 0xcd, 0xd9, 0x38, 0x2d, 0x60, 0xb3, 0xa6, + 0x95, 0xc0, 0xe8, 0xe8, 0x71, 0xb6, 0xb4, 0x86, 0xc0, 0x8f, 0x1a, 0xd4, 0x5e, 0x62, 0x0c, 0x4e, + 0xaf, 0x4b, 0x20, 0x82, 0x1a, 0xaa, 0xa8, 0x28, 0xfc, 0xe2, 0xa1, 0x0d, 0xbf, 0x9e, 0xd0, 0xd0, + 0x5e, 0xce, 0xe7, 0xca, 0x02, 0xe7, 0x16, 0xeb, 0x2b, 0xc7, 0x14, 0xb6, 0x99, 0x16, 0xe1, 0xbd, + 0x66, 0xd7, 0xdb, 0x97, 0x72, 0x81, 0x5e, 0x0a, 0x1f, 0xb5, 0x0c, 0x53, 0x3b, 0xd7, 0x71, 0x49, + 0xc6, 0x4a, 0xb6, 0x2f, 0x60, 0x0f, 0x46, 0x97, 0x86, 0x18, 0x5b, 0xdc, 0x6f, 0xf7, 0x95, 0x53, + 0x58, 0x81, 0x42, 0x6b, 0x71, 0x17, 0x30, 0xc6, 0x4e, 0xc2, 0x15, 0x60, 0x69, 0xec, 0xaa, 0x20, + 0x6a, 0x15, 0xda, 0x21, 0x27, 0xc7, 0x70, 0x43, 0x43, 0x41, 0x09, 0x21, 0xe5, 0x64, 0x2b, 0x3b, + 0x23, 0x5b, 0x85, 0x34, 0x3e, 0x93, 0xa9, 0x92, 0xe3, 0x7b, 0x70, 0xc8, 0x73, 0x03, 0xfb, 0x74, + 0x18, 0x2b, 0x87, 0x98, 0x63, 0xef, 0x48, 0xab, 0xce, 0x80, 0xa3, 0x55, 0xfe, 0x12, 0xc5, 0x85, + 0x61, 0xf8, 0x54, 0x85, 0x7b, 0xbd, 0x87, 0x87, 0x43, 0x40, 0x0f, 0xf6, 0x9e, 0x07, 0xb4, 0x63, + 0xeb, 0x79, 0x40, 0x13, 0xf6, 0x0e, 0xa4, 0x42, 0xb6, 0x45, 0x12, 0xb6, 0xb6, 0xf4, 0x26, 0x7c, + 0x08, 0x38, 0xb4, 0xa2, 0xa3, 0x96, 0xf3, 0x66, 0x6f, 0xe8, 0xfe, 0x1e, 0x24, 0x86, 0x72, 0xb0, + 0xde, 0xf0, 0x62, 0x63, 0xa9, 0x96, 0xa0, 0xe4, 0xde, 0x0d, 0x4b, 0x8d, 0x76, 0x50, 0x59, 0x4d, + 0xeb, 0x8d, 0x83, 0x38, 0x61, 0xb6, 0xfe, 0xa0, 0x6a, 0x9c, 0xc9, 0x6d, 0x7f, 0x08, 0xbe, 0xc9, + 0x93, 0xa0, 0x31, 0xb2, 0x69, 0x9e, 0x3c, 0xd0, 0x69, 0x5d, 0xeb, 0x11, 0xfe, 0xbf, 0xb0, 0xd6, + 0xb8, 0x60, 0x51, 0x40, 0x6c, 0x42, 0xac, 0xd0, 0x55, 0x6c, 0xf6, 0x01, 0xdc, 0x92, 0x32, 0xf7, + 0xc7, 0x95, 0x96, 0x36, 0xdb, 0xfb, 0x4f, 0xf6, 0xea, 0xbf, 0x21, 0xb6, 0xee, 0x09, 0x03, 0xb3, + 0x8b, 0xaf, 0x7e, 0x6b, 0xf6, 0xbf, 0x5a, 0xfa, 0x5e, 0x8c, 0xcc, 0x8e, 0xe4, 0x71, 0xf6, 0xd1, + 0x08, 0x31, 0xd1, 0x19, 0x2d, 0xc4, 0xe8, 0x14, 0xe7, 0xa3, 0x2a, 0x86, 0xc6, 0x82, 0xb7, 0x37, + 0x76, 0x0e, 0xc6, 0xd4, 0x10, 0xe1, 0x56, 0x85, 0xf7, 0x38, 0x1e, 0xaa, 0x20, 0xcc, 0x0a, 0xa8, + 0xf0, 0x79, 0xb0, 0x86, 0x45, 0x25, 0xdb, 0x4f, 0x41, 0x67, 0x84, 0xd4, 0x3d, 0x91, 0xfd, 0xf6, + 0x8c, 0x91, 0x4d, 0x17, 0x10, 0x0e, 0x48, 0xdb, 0xf6, 0x7f, 0x69, 0x84, 0x25, 0xfe, 0xb4, 0x68, + 0xb1, 0xc7, 0xb2, 0xc1, 0x74, 0x72, 0x83, 0xaf, 0x2b, 0x58, 0x42, 0xcf, 0x63, 0x4d, 0xb7, 0xb2, + 0x0d, 0xc3, 0x93, 0xd2, 0xed, 0xd9, 0x03, 0xc0, 0xff, 0x88, 0x5c, 0xac, 0x6f, 0x73, 0x10, 0x04, + 0x21, 0x30, 0xf6, 0x67, 0x93, 0x1b, 0x81, 0xb2, 0x58, 0xb1, 0xcc, 0xe0, 0xec, 0xf2, 0xd1, 0x27, + 0xde, 0xc3, 0xcb, 0x79, 0x9c, 0xe0, 0xdc, 0xef, 0x88, 0x67, 0x09, 0x92, 0x26, 0xfd, 0x16, 0x28, + 0xa2, 0x6f, 0x5b, 0xcc, 0xc8, 0x41, 0xd2, 0x1b, 0x86, 0x95, 0x29, 0xd9, 0x12, 0xf3, 0xa8, 0x5b, + 0x18, 0x8d, 0xc7, 0x37, 0x7c, 0x2a, 0x00, 0x48, 0x77, 0x9c, 0x78, 0x5d, 0xbf, 0xef, 0xb7, 0x89, + 0x88, 0xfe, 0x99, 0x59, 0xce, 0x03, 0x71, 0x91, 0x6e, 0x53, 0x1e, 0x78, 0xef, 0xf1, 0x55, 0x00, + 0x42, 0x12, 0x3e, 0x4d, 0xc0, 0x83, 0xa4, 0xc1, 0x82, 0xcc, 0x28, 0x75, 0xb0, 0xaa, 0x3f, 0xc8, + 0x4a, 0xca, 0xbe, 0xc2, 0xa3, 0x31, 0x7f, 0xd5, 0xd0, 0x26, 0x28, 0xfd, 0xc0, 0xe8, 0x46, 0x76, + 0xdf, 0xdc, 0x7e, 0xd5, 0x8c, 0x0b, 0xe8, 0xbd, 0x36, 0x26, 0xad, 0x99, 0x63, 0x53, 0xb2, 0xbc, + 0x61, 0x32, 0xfd, 0x33, 0x7a, 0xc8, 0x47, 0xdc, 0x48, 0xa0, 0xe7, 0x58, 0xc6, 0xfe, 0xd1, 0x6a, + 0xc3, 0x16, 0x2e, 0x56, 0xf2, 0x91, 0x1b, 0xb5, 0x51, 0x8c, 0x1f, 0xe9, 0x1c, 0xfb, 0xcf, 0x57, + 0x9b, 0x7a, 0x16, 0x3f, 0x4d, 0xea, 0x7f, 0x75, 0xc4, 0x59, 0x5b, 0xca, 0x25, 0x15, 0x61, 0xad, + 0x8b, 0x17, 0xce, 0x2e, 0xcc, 0x92, 0xaa, 0x97, 0x23, 0xdd, 0x8b, 0x99, 0x2b, 0x3b, 0x7a, 0xfe, + 0x15, 0xe7, 0x92, 0x91, 0x96, 0xee, 0x3d, 0xf0, 0x9b, 0x42, 0xfa, 0x45, 0x75, 0xef, 0x60, 0x0c, + 0x8c, 0x76, 0x0d, 0x06, 0x5b, 0x33, 0xc8, 0x68, 0x30, 0x2a, 0x23, 0x39, 0x3f, 0x50, 0x65, 0xb7, + 0xaa, 0xf4, 0xd7, 0x76, 0x35, 0xe9, 0x23, 0x1c, 0x4b, 0x1a, 0x2b, 0x8d, 0x6f, 0x6c, 0xe0, 0x62, + 0xe0, 0x6b, 0x37, 0x7a, 0xc5, 0xed, 0x4b, 0x0e, 0x88, 0xa5, 0xaa, 0x3a, 0x39, 0x61, 0xec, 0x1c, + 0x26, 0xba, 0x4e, 0x75, 0xcc, 0x3b, 0x29, 0x9d, 0xd0, 0xab, 0x21, 0x4a, 0x86, 0x42, 0x09, 0x3a, + 0x57, 0xc5, 0x4d, 0x27, 0xf2, 0x3a, 0xf8, 0xcf, 0x90, 0x5d, 0x05, 0x1e, 0x6a, 0xdb, 0x73, 0x4e, + 0xd8, 0x08, 0xaf, 0x0c, 0x55, 0x28, 0x73, 0xbb, 0x0e, 0xd8, 0x58, 0x26, 0x7e, 0x71, 0xd9, 0x6c, + 0xb0, 0x85, 0x69, 0x84, 0x7c, 0xf8, 0x7b, 0x7e, 0x0e, 0x7f, 0xfb, 0x79, 0x84, 0x71, 0x5f, 0xfa, + 0x97, 0xfc, 0x67, 0x1a, 0x59, 0xd3, 0x75, 0x11, 0x9d, 0xe3, 0x7f, 0x17, 0x5b, 0x75, 0x02, 0xf3, + 0x2a, 0x54, 0xee, 0x64, 0x6d, 0xed, 0x42, 0x9d, 0xbd, 0x9a, 0xe6, 0x76, 0x0d, 0x67, 0x35, 0xd5, + 0xfc, 0xd1, 0x43, 0xcd, 0xef, 0xd5, 0x83, 0x6c, 0xfe, 0xdf, 0x3f, 0x5a, 0xdd, 0xbc, 0x87, 0x93, + 0x47, 0xf5, 0x4e, 0xbc, 0xe7, 0xad, 0x82, 0xab, 0xab, 0x3c, 0x2b, 0x86, 0x10, 0x42, 0x18, 0x66, + 0x9f, 0x3d, 0x78, 0x06, 0x7b, 0x6e, 0x92, 0xd2, 0x61, 0x3c, 0x61, 0x9e, 0xc7, 0x74, 0x07, 0x87, + 0x53, 0xdd, 0xf8, 0x6c, 0x93, 0xc8, 0x3b, 0x5e, 0x37, 0x71, 0xa8, 0xdb, 0x8c, 0x9a, 0x7b, 0x6a, + 0xdd, 0xd0, 0x99, 0xdd, 0x6c, 0xcc, 0x34, 0x91, 0x36, 0x9a, 0xab, 0x99, 0x4c, 0x63, 0x95, 0xc0, + 0x9f, 0x0d, 0xaf, 0xc1, 0x74, 0x01, 0xcc, 0x48, 0xc1, 0xef, 0x14, 0x15, 0x6d, 0xf7, 0x2b, 0x34, + 0xeb, 0x0e, 0x87, 0xfa, 0x74, 0xb9, 0xce, 0x83, 0xd0, 0x05, 0xa7, 0x6f, 0x30, 0xca, 0xfb, 0x14, + 0xd4, 0x1c, 0xad, 0x59, 0x98, 0xc0, 0x3b, 0x3c, 0xc4, 0x12, 0xb8, 0xbb, 0xbe, 0x7f, 0xad, 0xee, + 0x16, 0x7e, 0x78, 0x65, 0x72, 0x4e, 0xf6, 0x8b, 0x13, 0x1d, 0x8a, 0xc1, 0x3e, 0x49, 0x52, 0x74, + 0x6d, 0x8c, 0xbc, 0x37, 0x50, 0xf2, 0x2b, 0x62, 0xba, 0x80, 0x18, 0x3c, 0x7d, 0x65, 0x09, 0x76, + 0x98, 0xcd, 0x40, 0x7a, 0x86, 0x44, 0xde, 0x5d, 0xf5, 0x93, 0x6d, 0x27, 0x67, 0x9e, 0xbc, 0xe0, + 0x21, 0x2d, 0x9f, 0xf2, 0x9a, 0xe7, 0xed, 0xa8, 0x86, 0x30, 0xf4, 0xbb, 0x41, 0x47, 0xa8, 0xff, + 0x50, 0xcf, 0xae, 0xd6, 0x6e, 0x38, 0xc3, 0x24, 0x38, 0x2e, 0x3d, 0x03, 0xa7, 0x2d, 0x3c, 0x1b, + 0xf7, 0xd8, 0x53, 0x50, 0x5d, 0x52, 0x42, 0xd2, 0xd4, 0xd7, 0x6f, 0xf5, 0xa5, 0x2a, 0xa5, 0xd6, + 0x54, 0x23, 0x2c, 0x82, 0x8e, 0xd4, 0x8e, 0xc1, 0x5e, 0xf9, 0xc7, 0x1f, 0x9e, 0x99, 0xe1, 0x0e, + 0x13, 0xd9, 0x52, 0xce, 0x7a, 0x8f, 0x1a, 0xca, 0xec, 0x28, 0x04, 0xc7, 0x45, 0x25, 0xe6, 0x13, + 0x0a, 0x15, 0x16, 0xd4, 0x75, 0x67, 0x48, 0xbf, 0x73, 0xa4, 0xff, 0x86, 0xdc, 0x8b, 0x46, 0xee, + 0xce, 0xab, 0x73, 0xf2, 0xb2, 0x99, 0x1f, 0x9e, 0xf3, 0x7c, 0x5d, 0x54, 0x16, 0x2d, 0x9a, 0x80, + 0xdd, 0x17, 0xcd, 0x0e, 0x02, 0x3d, 0x6d, 0x64, 0xfe, 0x69, 0x98, 0x7e, 0xe6, 0xf9, 0xe4, 0x52, + 0xe2, 0x9a, 0x6c, 0x6a, 0x5c, 0xdc, 0x18, 0x56, 0x7d, 0x13, 0x7a, 0x0c, 0x80, 0xc0, 0x03, 0x28, + 0x1a, 0xa2, 0x1e, 0xd0, 0xe7, 0x04, 0x9f, 0x3e, 0xab, 0x5a, 0x97, 0x54, 0x8d, 0x9d, 0x70, 0xf0, + 0xc6, 0x69, 0x11, 0xd4, 0x71, 0xe8, 0xf5, 0x80, 0x3c, 0x43, 0xd8, 0xe1, 0xda, 0x4a, 0xfc, 0x06, + 0x25, 0xee, 0x06, 0x21, 0x75, 0xc1, 0x6d, 0xe1, 0xbb, 0xce, 0xe9, 0x0c, 0x1d, 0x30, 0x96, 0x30, + 0xb6, 0xe6, 0x75, 0xee, 0x11, 0x16, 0xdc, 0x4a, 0xf4, 0x39, 0x2f, 0xe0, 0x95, 0x1b, 0xc0, 0xde, + 0xc7, 0x2f, 0xef, 0x8d, 0xc7, 0x69, 0xdc, 0x70, 0x6d, 0x57, 0x9b, 0x8f, 0x0d, 0xac, 0xca, 0x81, + 0x32, 0x56, 0x1d, 0x48, 0xa5, 0x8b, 0xc2, 0x1b, 0x07, 0xbd, 0x50, 0x9b, 0x11, 0xb9, 0x54, 0xc9, + 0xc8, 0x9b, 0x97, 0x69, 0x30, 0xdf, 0xc0, 0xda, 0x85, 0xd6, 0x21, 0xb1, 0x1b, 0x14, 0x4f, 0xe7, + 0x9b, 0xc3, 0xdb, 0x50, 0x3f, 0xa4, 0x73, 0xc4, 0x0e, 0x7c, 0x18, 0xa7, 0x43, 0x2e, 0x68, 0x74, + 0xf3, 0x04, 0x9a, 0x2d, 0xd8, 0x39, 0x01, 0x78, 0x0d, 0x95, 0x71, 0x0c, 0x1b, 0x40, 0xcf, 0x1b, + 0x72, 0xe6, 0x89, 0xcc, 0x5c, 0xc0, 0xaf, 0xfe, 0x90, 0x4f, 0xbe, 0x87, 0x6f, 0x23, 0xa2, 0x1b, + 0x39, 0x9b, 0xfb, 0x01, 0x98, 0x21, 0xb4, 0xb6, 0x18, 0x35, 0xae, 0x27, 0x56, 0xf7, 0x16, 0x1f, + 0xc6, 0x70, 0x67, 0xb0, 0xda, 0x74, 0x76, 0x5d, 0x84, 0x5c, 0xe0, 0x6d, 0x49, 0x59, 0x60, 0x3f, + 0x3a, 0xe7, 0x1b, 0x8e, 0xa1, 0x5a, 0x91, 0xb8, 0x93, 0x35, 0x58, 0x3a, 0xba, 0x66, 0xec, 0xdd, + 0x03, 0x52, 0xd1, 0xe5, 0x45, 0x06, 0x33, 0x27, 0xa9, 0x8c, 0x43, 0x8c, 0x7a, 0x3b, 0xc0, 0x5e, + 0x41, 0x77, 0xcd, 0xa3, 0xa8, 0xcc, 0x56, 0x35, 0x9b, 0x30, 0xfa, 0x04, 0x00, 0x8f, 0xbc, 0x6b, + 0x70, 0xd3, 0xd2, 0xd9, 0xd6, 0x34, 0x2b, 0xdb, 0xdb, 0xa2, 0x91, 0xe8, 0x7b, 0xd2, 0x6d, 0x2d, + 0xa7, 0xd0, 0xf0, 0x1b, 0xa6, 0x0c, 0x39, 0xba, 0xc6, 0x15, 0xe2, 0x0e, 0xbf, 0xc4, 0x0b, 0x05, + 0xf1, 0x8f, 0x75, 0x4d, 0x18, 0x5a, 0x6d, 0x16, 0xbf, 0xce, 0x50, 0x29, 0x9f, 0xdd, 0x62, 0xd3, + 0x88, 0x6c, 0xfb, 0x16, 0x6b, 0xb3, 0x7c, 0xf5, 0x46, 0x47, 0xb3, 0xc2, 0xae, 0x2e, 0x70, 0xed, + 0x20, 0x5a, 0x60, 0x63, 0xda, 0xab, 0x0b, 0x77, 0xf9, 0x5d, 0x3d, 0x64, 0x6b, 0x04, 0x09, 0xeb, + 0x3d, 0xd4, 0x01, 0x15, 0x5f, 0xaf, 0xf6, 0x2c, 0xad, 0xde, 0x6f, 0x68, 0x16, 0x3f, 0x3e, 0x84, + 0x6d, 0x30, 0x59, 0x95, 0x64, 0xad, 0x40, 0xc7, 0x50, 0xfa, 0x71, 0x55, 0x5e, 0x2f, 0x4f, 0xfe, + 0x17, 0x49, 0x42, 0x1a, 0x04, 0x03, 0x05, 0x01, 0x00, }; diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 7c621a0bb..f4d72c222 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -3,7 +3,7 @@ */ /* * @title WLED project sketch - * @version 0.9.0-dev + * @version 0.9.0-b1 * @author Christian Schwinne */ @@ -14,15 +14,16 @@ //Uncomment some of the following lines to disable features to compile for ESP8266-01 (max flash size 434kB): //You are required to disable over-the-air updates: -//#define WLED_DISABLE_OTA +//#define WLED_DISABLE_OTA //saves 14kb //You need to choose some of these features to disable: -//#define WLED_DISABLE_ALEXA -//#define WLED_DISABLE_BLYNK -//#define WLED_DISABLE_CRONIXIE -//#define WLED_DISABLE_HUESYNC -//#define WLED_DISABLE_INFRARED //there is no pin left for this on ESP8266-01 -#define WLED_ENABLE_ADALIGHT //only saves about 500b +//#define WLED_DISABLE_ALEXA //saves 11kb +//#define WLED_DISABLE_BLYNK //saves 6kb +//#define WLED_DISABLE_CRONIXIE //saves 3kb +//#define WLED_DISABLE_HUESYNC //saves 4kb +//#define WLED_DISABLE_INFRARED //there is no pin left for this on ESP8266-01, saves 25kb (!) +#define WLED_ENABLE_MQTT //saves 12kb +#define WLED_ENABLE_ADALIGHT //saves 500b only #define WLED_DISABLE_FILESYSTEM //SPIFFS is not used by any WLED feature yet //#define WLED_ENABLE_FS_SERVING //Enable sending html file from SPIFFS before serving progmem version @@ -97,8 +98,8 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912061 -char versionString[] = "0.9.0-dev"; +#define VERSION 1912111 +char versionString[] = "0.9.0-b1"; //AP and OTA default passwords (for maximum change them!) @@ -328,11 +329,6 @@ byte overlayCurrent = overlayDefault; byte overlaySpeed = 200; unsigned long overlayRefreshMs = 200; unsigned long overlayRefreshedTime; -int overlayArr[6]; -uint16_t overlayDur[6]; -uint16_t overlayPauseDur[6]; -int nixieClockI = -1; -bool nixiePause = false; //cronixie byte dP[]{0,0,0,0,0,0}; @@ -482,7 +478,7 @@ void reset() //append new c string to temp buffer efficiently -bool oappend(char* txt) +bool oappend(const char* txt) { uint16_t len = strlen(txt); if (olen + len >= OMAX) return false; //buffer full diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino index 879b345ec..e64a6fcdd 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -495,6 +495,7 @@ void loadSettingsFromEEPROM(bool first) //1024-2047 reserved readStringFromEEPROM(2220, blynkApiKey, 35); + if (strlen(blynkApiKey) < 25) blynkApiKey[0] = 0; //user MOD memory //2944 - 3071 reserved diff --git a/wled00/wled02_xml.ino b/wled00/wled02_xml.ino index 094b0358f..ca8a72934 100644 --- a/wled00/wled02_xml.ino +++ b/wled00/wled02_xml.ino @@ -82,7 +82,7 @@ char* XML_response(AsyncWebServerRequest *request, char* dest = nullptr) } //append a numeric setting to string buffer -void sappend(char stype, char* key, int val) +void sappend(char stype, const char* key, int val) { char ds[] = "d.Sf."; @@ -113,7 +113,7 @@ void sappend(char stype, char* key, int val) } //append a string setting to buffer -void sappends(char stype, char* key, char* val) +void sappends(char stype, const char* key, char* val) { switch(stype) { @@ -269,6 +269,8 @@ void getSettingsJS(byte subPage, char* dest) sappends('s',"AI",alexaInvocationName); sappend('c',"SA",notifyAlexa); sappends('s',"BK",(char*)((blynkEnabled)?"Hidden":"")); + + #ifdef WLED_ENABLE_MQTT sappends('s',"MS",mqttServer); sappend('v',"MQPORT",mqttPort); sappends('s',"MQUSER",mqttUser); @@ -281,6 +283,11 @@ void getSettingsJS(byte subPage, char* dest) sappends('s',"MQCID",mqttClientID); sappends('s',"MD",mqttDeviceTopic); sappends('s',"MG",mqttGroupTopic); + #endif + + #ifdef WLED_DISABLE_HUESYNC + sappends('m',"(\"hms\")[0]","Unsupported in build"); + #else sappend('v',"H0",hueIP[0]); sappend('v',"H1",hueIP[1]); sappend('v',"H2",hueIP[2]); @@ -292,6 +299,7 @@ void getSettingsJS(byte subPage, char* dest) sappend('c',"HB",hueApplyBri); sappend('c',"HC",hueApplyColor); sappends('m',"(\"hms\")[0]",hueError); + #endif } if (subPage == 5) diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index 9bf64374c..2dfdcbe6f 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -14,6 +14,16 @@ void _setRandomColor(bool _sec,bool fromButton=false) } +bool isAsterisksOnly(const char* str, byte maxLen) +{ + for (byte i = 0; i < maxLen; i++) { + if (str[i] == 0) break; + if (str[i] != '*') return false; + } + return true; +} + + //called upon POST settings form submit void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) { @@ -24,7 +34,8 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) if (subPage == 1) { strlcpy(clientSSID,request->arg("CS").c_str(), 33); - if (request->arg("CP").charAt(0) != '*') strlcpy(clientPass, request->arg("CP").c_str(), 65); + + if (!isAsterisksOnly(request->arg("CP").c_str(), 65)) strlcpy(clientPass, request->arg("CP").c_str(), 65); strlcpy(cmDNS, request->arg("CM").c_str(), 33); @@ -32,7 +43,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) strlcpy(apSSID, request->arg("AS").c_str(), 33); apHide = request->hasArg("AH"); int passlen = request->arg("AP").length(); - if (passlen == 0 || (passlen > 7 && request->arg("AP").charAt(0) != '*')) strlcpy(apPass, request->arg("AP").c_str(), 65); + if (passlen == 0 || (passlen > 7 && !isAsterisksOnly(request->arg("AP").c_str(), 65))) strlcpy(apPass, request->arg("AP").c_str(), 65); int t = request->arg("AC").toInt(); if (t > 0 && t < 14) apChannel = t; char k[3]; k[2] = 0; @@ -141,15 +152,18 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) strlcpy(blynkApiKey, request->arg("BK").c_str(), 36); initBlynk(blynkApiKey); } + #ifdef WLED_ENABLE_MQTT strlcpy(mqttServer, request->arg("MS").c_str(), 33); t = request->arg("MQPORT").toInt(); if (t > 0) mqttPort = t; strlcpy(mqttUser, request->arg("MQUSER").c_str(), 41); - if (request->arg("MQPASS").charAt(0) != '*') strlcpy(mqttPass, request->arg("MQPASS").c_str(), 41); + if (!isAsterisksOnly(request->arg("MQPASS").c_str(), 41)) strlcpy(mqttPass, request->arg("MQPASS").c_str(), 41); strlcpy(mqttClientID, request->arg("MQCID").c_str(), 41); strlcpy(mqttDeviceTopic, request->arg("MD").c_str(), 33); strlcpy(mqttGroupTopic, request->arg("MG").c_str(), 33); + #endif + #ifndef WLED_DISABLE_HUESYNC for (int i=0;i<4;i++){ String a = "H"+String(i); hueIP[i] = request->arg(a).toInt(); @@ -167,6 +181,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) huePollingEnabled = request->hasArg("HP"); hueStoreAllowed = true; reconnectHue(); + #endif } //TIME diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino index 1c5a233ec..684893f1b 100644 --- a/wled00/wled05_init.ino +++ b/wled00/wled05_init.ino @@ -140,7 +140,10 @@ void initAP(bool resetAP=false){ if (udpPort > 0 && udpPort != ntpLocalPort) { udpConnected = notifierUdp.begin(udpPort); - if (udpConnected && udpRgbPort != udpPort) udpRgbConnected = rgbUdp.begin(udpRgbPort); + } + if (udpRgbPort > 0 && udpRgbPort != ntpLocalPort && udpRgbPort != udpPort) + { + udpRgbConnected = rgbUdp.begin(udpRgbPort); } dnsServer.setErrorReplyCode(DNSReplyCode::NoError); diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index df3820acf..f25a6673f 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -120,7 +120,6 @@ void handleNotifications() { e131NewData = false; strip.show(); - Serial.println("Show"); } //unlock strip when realtime UDP times out diff --git a/wled00/wled11_ol.ino b/wled00/wled11_ol.ino index 6cf060c30..fc3a47d8b 100644 --- a/wled00/wled11_ol.ino +++ b/wled00/wled11_ol.ino @@ -17,107 +17,6 @@ void initCronixie() } -void _nixieDisplay(int num[], uint16_t dur[], uint16_t pausedur[], byte cnt) -{ - strip.setRange(overlayMin, overlayMax, 0); - if (num[nixieClockI] >= 0 && !nixiePause) - { - strip.setIndividual(num[nixieClockI],((uint32_t)colT[3] << 24)| ((uint32_t)colT[0] << 16) | ((uint32_t)colT[1] << 8) | colT[2]); - strip.unlock(num[nixieClockI]); - } - if (!nixiePause) - { - overlayRefreshMs = dur[nixieClockI]; - } else - { - overlayRefreshMs = pausedur[nixieClockI]; - } - if (pausedur[nixieClockI] > 0 && !nixiePause) - { - nixiePause = true; - } else { - if (nixieClockI < cnt -1) - { - nixieClockI++; - } else - { - nixieClockI = -1; - } - nixiePause = false; - } -} - -void _nixieNumber(int number, int dur) -{ - if (nixieClockI < 0) - { - DEBUG_PRINT(number); - int digitCnt = -1; - int digits[4]; - digits[3] = number/1000; - digits[2] = (number/100)%10; - digits[1] = (number/10)%10; - digits[0] = number%10; - if (number > 999) //four digits - { - digitCnt = 4; - } else if (number > 99) //three digits - { - digitCnt = 3; - } else if (number > 9) //two digits - { - digitCnt = 2; - } else { //single digit - digitCnt = 1; - } - DEBUG_PRINT(" "); - for (int i = 0; i < digitCnt; i++) - { - DEBUG_PRINT(digits[i]); - overlayArr[digitCnt-1-i] = digits[i]; - overlayDur[digitCnt-1-i] = ((dur/4)*3)/digitCnt; - overlayPauseDur[digitCnt-1-i] = 0; - } - DEBUG_PRINTLN(" "); - for (int i = 1; i < digitCnt; i++) - { - if (overlayArr[i] == overlayArr[i-1]) - { - overlayPauseDur[i-1] = dur/12; - overlayDur[i-1] = overlayDur[i-1]-dur/12; - } - } - for (int i = digitCnt; i < 6; i++) - { - overlayArr[i] = -1; - overlayDur[i] = 0; - overlayPauseDur[i] = 0; - } - overlayPauseDur[5] = dur/4; - for (int i = 0; i < 6; i++) - { - if (overlayArr[i] != -1) - { - overlayArr[i] = overlayArr[i] + overlayMin; - } - } - for (int i = 0; i <6; i++) - { - DEBUG_PRINT(overlayArr[i]); - DEBUG_PRINT(" "); - DEBUG_PRINT(overlayDur[i]); - DEBUG_PRINT(" "); - DEBUG_PRINT(overlayPauseDur[i]); - DEBUG_PRINT(" "); - } - DEBUG_PRINTLN(" "); - nixieClockI = 0; - } else { - _nixieDisplay(overlayArr, overlayDur, overlayPauseDur, 6); - } -} - - void handleOverlays() { if (millis() - overlayRefreshedTime > overlayRefreshMs) @@ -129,14 +28,15 @@ void handleOverlays() { case 0: break;//no overlay case 1: _overlayAnalogClock(); break;//2 analog clock - case 2: _overlayNixieClock(); break;//nixie 1-digit + case 2: break;//nixie 1-digit, removed case 3: _overlayCronixie();//Diamex cronixie clock kit } - if (!countdownMode || overlayCurrent < 2) checkCountdown(); //countdown macro activation must work + if (!countdownMode || overlayCurrent < 3) checkCountdown(); //countdown macro activation must work overlayRefreshedTime = millis(); } } + void _overlayAnalogClock() { int overlaySize = overlayMax - overlayMin +1; @@ -182,98 +82,6 @@ void _overlayAnalogClock() overlayRefreshMs = 998; } -void _overlayNixieClock() -{ - #ifdef WLED_DISABLE_CRONIXIE - if (countdownMode) checkCountdown(); - #else - - if (countdownMode) - { - _overlayNixieCountdown(); return; - } - if (nixieClockI < 0) - { - overlayArr[0] = hour(local); - if (useAMPM) overlayArr[0] = overlayArr[0]%12; - overlayArr[1] = -1; - if (overlayArr[0] > 9) - { - overlayArr[1] = overlayArr[0]%10; - overlayArr[0] = overlayArr[0]/10; - } - overlayArr[2] = minute(local); - overlayArr[3] = overlayArr[2]%10; - overlayArr[2] = overlayArr[2]/10; - overlayArr[4] = -1; - overlayArr[5] = -1; - if (analogClockSecondsTrail) - { - overlayArr[4] = second(local); - overlayArr[5] = overlayArr[4]%10; - overlayArr[4] = overlayArr[4]/10; - } - for (int i = 0; i < 6; i++) - { - if (overlayArr[i] != -1) - { - overlayArr[i] = overlayArr[i] + overlayMin; - } - } - overlayDur[0] = 12 + 12*(255 - overlaySpeed); - if (overlayArr[1] == overlayArr[0]) - { - overlayPauseDur[0] = 3 + 3*(255 - overlaySpeed); - } else - { - overlayPauseDur[0] = 0; - } - if (overlayArr[1] == -1) - { - overlayDur[1] = 0; - } else - { - overlayDur[1] = 12 + 12*(255 - overlaySpeed); - } - overlayPauseDur[1] = 9 + 9*(255 - overlaySpeed); - - overlayDur[2] = 12 + 12*(255 - overlaySpeed); - if (overlayArr[2] == overlayArr[3]) - { - overlayPauseDur[2] = 3 + 3*(255 - overlaySpeed); - } else - { - overlayPauseDur[2] = 0; - } - overlayDur[3] = 12 + 12*(255 - overlaySpeed); - overlayPauseDur[3] = 9 + 9*(255 - overlaySpeed); - - if (overlayArr[4] == -1) - { - overlayDur[4] = 0; - overlayPauseDur[4] = 0; - overlayDur[5] = 0; - } else - { - overlayDur[4] = 12 + 12*(255 - overlaySpeed); - if (overlayArr[5] == overlayArr[4]) - { - overlayPauseDur[4] = 3 + 3*(255 - overlaySpeed); - } else - { - overlayPauseDur[4] = 0; - } - overlayDur[5] = 12 + 12*(255 - overlaySpeed); - } - overlayPauseDur[5] = 22 + 22*(255 - overlaySpeed); - - nixieClockI = 0; - } else - { - _nixieDisplay(overlayArr, overlayDur, overlayPauseDur, 6); - } - #endif -} void _overlayAnalogCountdown() { @@ -319,33 +127,3 @@ void _overlayAnalogCountdown() } overlayRefreshMs = 998; } - - -void _overlayNixieCountdown() -{ - if (now() >= countdownTime) - { - if (checkCountdown()) - { - _nixieNumber(2019, 2019); - } - } else - { - long diff = countdownTime - now(); - if (diff > 86313600L) //display in years if more than 999 days - { - diff = diff/31557600L; - } else if (diff > 3596400) //display in days if more than 999 hours - { - diff = diff/86400; - } else if (diff > 59940) //display in hours if more than 999 minutes - { - diff = diff/1440; - } else if (diff > 999) //display in minutes if more than 999 seconds - { - diff = diff/60; - } - _nixieNumber(diff, 800); - } - overlayRefreshMs = 998; -} diff --git a/wled00/wled17_mqtt.ino b/wled00/wled17_mqtt.ino index c725eed6c..eec8704f5 100644 --- a/wled00/wled17_mqtt.ino +++ b/wled00/wled17_mqtt.ino @@ -2,6 +2,8 @@ * MQTT communication protocol for home automation */ +#ifdef WLED_ENABLE_MQTT + void parseMQTTBriPayload(char* payload) { if (strstr(payload, "ON") || strstr(payload, "on") || strstr(payload, "true")) {bri = briLast; colorUpdated(1);} @@ -130,3 +132,8 @@ bool initMqtt() mqtt->connect(); return true; } + +#else +bool initMqtt(){return false;} +void publishMqtt(){} +#endif From 42ab73425675e6bf641fb6bf3ea45624e09e4975 Mon Sep 17 00:00:00 2001 From: Warren Spits Date: Wed, 11 Dec 2019 22:08:59 +1100 Subject: [PATCH 08/70] Closes Aircoookie/WLED#444 --- wled00/data/settings_sync.htm | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/wled00/data/settings_sync.htm b/wled00/data/settings_sync.htm index 6c2646554..969eae1ec 100644 --- a/wled00/data/settings_sync.htm +++ b/wled00/data/settings_sync.htm @@ -104,5 +104,28 @@ Clear the token field to disable. Setup info

MQTT

Broker:
- 唉敳湲浡㩥㰠湩異⁴慮敭∽免呔单剅•慭汸湥瑧㵨㌢∲㰾牢ਾऀऀ慐獳潷摲›椼灮瑵琠灹㵥瀢獡睳牯≤椠灮瑵渠浡㵥䴢呑偔十≓洠硡敬杮桴∽㈳㸢戼㹲 - 䌉楬湥⁴䑉›椼灮瑵渠浡㵥䴢呑䍔䑉•慭汸湥瑧㵨㌢∲㰾牢ਾऀऀ䐀攀瘀椀挀攀 吀漀瀀椀挀㨀 㰀椀渀瀀甀琀 渀愀洀攀㴀∀䴀䐀∀ 洀愀砀氀攀渀最琀栀㴀∀㌀㈀∀㸀㰀戀爀㸀ഀ਀ऀऀ䜀爀漀甀瀀 吀漀瀀椀挀㨀 㰀椀渀瀀甀琀 渀愀洀攀㴀∀䴀䜀∀ 洀愀砀氀攀渀最琀栀㴀∀㌀㈀∀㸀㰀戀爀㸀ഀ਀ऀऀ㰀愀 栀爀攀昀㴀∀栀琀琀瀀猀㨀⼀⼀最椀琀栀甀戀⸀挀漀洀⼀䄀椀爀挀漀漀漀欀椀攀⼀圀䰀䔀䐀⼀眀椀欀椀⼀䴀儀吀吀∀ 琀愀爀最攀琀㴀∀开戀氀愀渀欀∀㸀䴀儀吀吀 椀渀昀漀㰀⼀愀㸀ഀ਀ऀऀ㰀栀㌀㸀倀栀椀氀椀瀀猀 䠀甀攀㰀⼀栀㌀㸀ഀ਀ऀऀ㰀椀㸀夀漀甀 挀愀渀 昀椀渀搀 琀栀攀 戀爀椀搀最攀 䤀倀 愀渀搀 琀栀攀 氀椀最栀琀 渀甀洀戀攀爀 椀渀 琀栀攀 ✀䄀戀漀甀琀✀ 猀攀挀琀椀漀渀 漀昀 琀栀攀 栀甀攀 愀瀀瀀⸀㰀⼀椀㸀㰀戀爀㸀ഀ਀ऀऀ倀漀氀氀 䠀甀攀 氀椀最栀琀 㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀䰀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀㄀∀ 洀愀砀㴀∀㤀㤀∀ 爀攀焀甀椀爀攀搀㸀 攀瘀攀爀礀 㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀䤀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀㄀  ∀ 洀愀砀㴀∀㘀㔀   ∀ 爀攀焀甀椀爀攀搀㸀 洀猀㨀 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀倀∀㸀㰀戀爀㸀ഀ਀ऀऀ吀栀攀渀Ⰰ 爀攀挀攀椀瘀攀 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀伀∀㸀 伀渀⼀伀昀昀Ⰰ 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀䈀∀㸀 䈀爀椀最栀琀渀攀猀猀Ⰰ 愀渀搀 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀䌀∀㸀 䌀漀氀漀爀㰀戀爀㸀ഀ਀ऀऀ䠀甀攀 䈀爀椀搀最攀 䤀倀㨀㰀戀爀㸀ഀ਀ऀऀ㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀 ∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀ ∀ 洀愀砀㴀∀㈀㔀㔀∀ 爀攀焀甀椀爀攀搀㸀 ⸀ഀ਀ऀऀ㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀㄀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀ ∀ 洀愀砀㴀∀㈀㔀㔀∀ 爀攀焀甀椀爀攀搀㸀 ⸀ഀ਀ऀऀ㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀㈀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀ ∀ 洀愀砀㴀∀㈀㔀㔀∀ 爀攀焀甀椀爀攀搀㸀 ⸀ഀ਀ऀऀ㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀㌀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀ ∀ 洀愀砀㴀∀㈀㔀㔀∀ 爀攀焀甀椀爀攀搀㸀㰀戀爀㸀ഀ਀ऀऀ㰀戀㸀倀爀攀猀猀 琀栀攀 瀀甀猀栀氀椀渀欀 戀甀琀琀漀渀 漀渀 琀栀攀 戀爀椀搀最攀Ⰰ 愀昀琀攀爀 琀栀愀琀 猀愀瘀攀 琀栀椀猀 瀀愀最攀℀㰀⼀戀㸀㰀戀爀㸀ഀ਀ऀऀ⠀眀栀攀渀 昀椀爀猀琀 挀漀渀渀攀挀琀椀渀最⤀㰀戀爀㸀ഀ਀ऀऀ㰀℀ⴀⴀ唀瀀搀愀琀攀 䠀甀攀 最爀漀甀瀀 㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀唀䔀䜀刀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀ ∀ 洀愀砀㴀∀㤀㤀∀ 爀攀焀甀椀爀攀搀㸀 㰀戀爀㸀ഀ਀ऀऀ匀攀渀搀 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀唀䔀䤀伀∀㸀 伀渀⼀伀昀昀Ⰰ 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀唀䔀䈀刀∀㸀 䈀爀椀最栀琀渀攀猀猀Ⰰ 愀渀搀 㰀椀渀瀀甀琀 琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀ 渀愀洀攀㴀∀䠀唀䔀䌀䰀∀㸀 䌀漀氀漀爀㰀戀爀㸀ⴀⴀ㸀ഀ਀ऀऀ㰀℀ⴀⴀ䄀昀琀攀爀 搀攀瘀椀挀攀 挀漀氀漀爀 甀瀀搀愀琀攀Ⰰ 椀最渀漀爀攀 䠀甀攀 甀瀀搀愀琀攀猀 昀漀爀 㰀椀渀瀀甀琀 渀愀洀攀㴀∀䠀唀䔀䰀䤀∀ 琀礀瀀攀㴀∀渀甀洀戀攀爀∀ 洀椀渀㴀∀ ∀ 洀愀砀㴀∀㈀㔀㔀∀ 爀攀焀甀椀爀攀搀㸀 洀椀渀甀琀攀猀㰀戀爀㸀ⴀⴀ㸀ഀ਀ऀऀ䠀甀攀 猀琀愀琀甀猀㨀 㰀猀瀀愀渀 挀氀愀猀猀㴀∀栀洀猀∀㸀 䤀渀琀攀爀渀愀氀 䔀匀倀 䔀爀爀漀爀℀ 㰀⼀猀瀀愀渀㸀㰀栀爀㸀ഀ਀ऀऀ㰀戀甀琀琀漀渀 琀礀瀀攀㴀∀戀甀琀琀漀渀∀ 漀渀挀氀椀挀欀㴀∀䈀⠀⤀∀㸀䈀愀挀欀㰀⼀戀甀琀琀漀渀㸀㰀戀甀琀琀漀渀 琀礀瀀攀㴀∀猀甀戀洀椀琀∀㸀匀愀瘀攀㰀⼀戀甀琀琀漀渀㸀ഀ਀ऀ㰀⼀昀漀爀洀㸀ഀ਀㰀⼀戀漀搀礀㸀ഀ਀㰀⼀栀琀洀氀㸀਀ \ No newline at end of file + Username:
+ Password:
+ Client ID:
+ Device Topic:
+ Group Topic:
+ MQTT info +

Philips Hue

+ You can find the bridge IP and the light number in the 'About' section of the hue app.
+ Poll Hue light every ms:
+ Then, receive On/Off, Brightness, and Color
+ Hue Bridge IP:
+ . + . + . +
+ Press the pushlink button on the bridge, after that save this page!
+ (when first connecting)
+ + + Hue status: Internal ESP Error!
+ + + + \ No newline at end of file From 9526051766e7b6a2dede5d53b8322d0d6e9c3693 Mon Sep 17 00:00:00 2001 From: ohminy <46082430+ohminy@users.noreply.github.com> Date: Thu, 12 Dec 2019 23:01:13 +0900 Subject: [PATCH 09/70] Create wled06_usermod.ino Using rotary encoder, control effect or brightness --- .../wled06_usermod.ino | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 usermods/rotary_encoder_change_effect/wled06_usermod.ino diff --git a/usermods/rotary_encoder_change_effect/wled06_usermod.ino b/usermods/rotary_encoder_change_effect/wled06_usermod.ino new file mode 100644 index 000000000..dbde9560a --- /dev/null +++ b/usermods/rotary_encoder_change_effect/wled06_usermod.ino @@ -0,0 +1,45 @@ +//Use userVar0 and userVar1 (API calls &U0=,&U1=, uint16_t) + +long lastTime = 0; +int delayMs = 10; +const int pinA = D6; //data +const int pinB = D7; //clk +int oldA = LOW; + +//gets called once at boot. Do all initialization that doesn't depend on network here +void userSetup() { + pinMode(pinA, INPUT_PULLUP); + pinMode(pinB, INPUT_PULLUP); +} + +//gets called every time WiFi is (re-)connected. Initialize own network interfaces here +void userConnected() { +} + +//loop. You can use "if (WLED_CONNECTED)" to check for successful connection +void userLoop() { + if (millis()-lastTime > delayMs) { + int A = digitalRead(pinA); + int B = digitalRead(pinB); + + if (oldA == LOW && A == HIGH) { + if (oldB == HIGH) { + // bri += 10; + // if (bri > 250) bri = 10; + effectCurrent += 1; + if (effectCurrent >= MODE_COUNT) effectCurrent = 0; + } + else { + // bri -= 10; + // if (bri < 10) bri = 250; + effectCurrent -= 1; + if (effectCurrent < 0) effectCurrent = (MODE_COUNT-1); + } + oldA = A; + + //call for notifier -> 0: init 1: direct change 2: button 3: notification 4: nightlight 5: other (No notification) + // 6: fx changed 7: hue 8: preset cycle 9: blynk 10: alexa + colorUpdated(6); + lastTime = millis(); + } +} From c98c54bd6bbae58e76eeaf4dc86068bc5c42ab90 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 13 Dec 2019 01:23:07 +0100 Subject: [PATCH 10/70] Release of WLED v0.9.0-b1 Timebase reset when turned off Added Aurora paletta --- wled00/FX.h | 3 +- wled00/FX_fcn.cpp | 4 + wled00/data/index.htm | 59 +- wled00/data/settings_sec.htm | 2 +- wled00/data/settings_sync.htm | 1 + wled00/data/settings_ui.htm | 3 +- wled00/html_settings.h | 4 +- wled00/html_ui.h | 2886 +++++++++++++++++---------------- wled00/palettes.h | 9 + wled00/wled00.ino | 5 +- wled00/wled01_eeprom.ino | 16 +- wled00/wled02_xml.ino | 2 + wled00/wled03_set.ino | 2 + wled00/wled07_notify.ino | 4 +- wled00/wled08_led.ino | 10 +- wled00/wled17_mqtt.ino | 2 +- wled00/wled18_server.ino | 6 +- wled00/wled19_json.ino | 17 +- 18 files changed, 1546 insertions(+), 1489 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 44be95d57..e877a055e 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -586,7 +586,8 @@ const char JSON_palette_names[] PROGMEM = R"=====([ "Forest","Rainbow","Rainbow Bands","Sunset","Rivendell","Breeze","Red & Blue","Yellowout","Analogous","Splash", "Pastel","Sunset 2","Beech","Vintage","Departure","Landscape","Beach","Sherbet","Hult","Hult 64", "Drywet","Jul","Grintage","Rewhi","Tertiary","Fire","Icefire","Cyane","Light Pink","Autumn", -"Magenta","Magred","Yelmag","Yelblu","Orange & Teal","Tiamat","April Night","Orangery","C9","Sakura" +"Magenta","Magred","Yelmag","Yelblu","Orange & Teal","Tiamat","April Night","Orangery","C9","Sakura", +"Aurora" ])====="; #endif diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index ab204d69a..2b7d6ec1d 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -481,6 +481,10 @@ void WS2812FX::resetSegments() { _segments[0].speed = DEFAULT_SPEED; _segments[0].stop = _length; _segments[0].setOption(0, 1); //select + for (uint16_t i = 1; i < MAX_NUM_SEGMENTS; i++) + { + _segments[i].colors[0] = color_wheel(i*51); + } } void WS2812FX::setIndividual(uint16_t i, uint32_t col) diff --git a/wled00/data/index.htm b/wled00/data/index.htm index c3f1cb779..e7ea5e75b 100644 --- a/wled00/data/index.htm +++ b/wled00/data/index.htm @@ -38,6 +38,7 @@ body { height: 100%; width: 100%; position: fixed; + overscroll-behavior: none; } p { @@ -173,9 +174,9 @@ button { width: 100%; width: calc(var(--n)*100%); height: calc(100% - var(--tp, 60px) - var(--bt, 60px)); - margin-bottom: 62px; margin-top: var(--tp, 60px); transform: translate(calc(var(--tx, 0px) + var(--i, 0)/var(--n)*-100%)); + overscroll-behavior: none; } .tabcontent { @@ -245,11 +246,8 @@ button { text-align: center; border-radius: 2px; padding: 16px; - padding: 16px; - padding: 16px; - padding: 16px; position: fixed; - z-index: 1; + z-index: 2; left: 50%; transform: translateX(-50%); bottom: 100px; @@ -766,7 +764,7 @@ input[type=number]::-webkit-outer-spin-button { !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define("RangeTouch",t):e.RangeTouch=t()}(this,function(){"use strict";function e(e,t){for(var n=0;nt){var n=function(e){var t="".concat(e).match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}return function(){function n(e,r){(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")})(this,n),l.element(e)?this.element=e:l.string(e)&&(this.element=document.querySelector(e)),l.element(this.element)&&l.empty(this.element.rangeTouch)&&(this.config=Object.assign({},t,r),this.init())}return r=n,i=[{key:"setup",value:function(e){var r=1(t=100/c.width*(u.clientX-c.left))?t=0:100t?t-=(100-2*t)*f:50
- Start LED:
- Stop LED: + Start LED:
+ Stop LED: (${inst.stop - inst.start} LED${inst.stop - inst.start > 1 ? "s":""})
@@ -951,13 +949,12 @@ function requestJson(command, verbose = true) { e2 = d.getElementById('selectPalette'); url = command ? '/json/state':'/json'; - //url = command ? 'http://10.10.1.26/json/state':'http://10.10.1.26/json'; + type = command ? 'post':'get'; if (command) { command.v = verbose; req = JSON.stringify(command); - console.log(req); } fetch (url, { @@ -977,7 +974,8 @@ function requestJson(command, verbose = true) { clearTimeout(jsonTimeout); jsonTimeout = null; clearErrorToast(); - if (json.success) return; //non-verbose response + if (!json) showToast('Empty response', true); + if (json.success) return; var s = json; if (!command) { var x='',y=''; @@ -999,10 +997,11 @@ function requestJson(command, verbose = true) { var name = info.name; d.getElementById('namelabel').innerHTML = name; if (name === "Dinnerbone") d.documentElement.style.transform = "rotate(180deg)"; - if (json.info.live) name = "(Live) " + name; + if (info.live) name = "(Live) " + name; d.title = name; isRgbw = info.leds.wv; ledCount = info.leds.count; + syncTglRecv = info.str; maxSeg = info.leds.maxseg; s = json.state; } @@ -1026,6 +1025,11 @@ function requestJson(command, verbose = true) { if(s.seg[i].sel) {selc = ind; break;} ind++; } var i=s.seg[selc]; + if (!i) { + showToast('No Segments!', true); + updateUI(); + return; + } var cd = d.getElementById('csl').children; for (e = 2; e >= 0; e--) { @@ -1039,17 +1043,14 @@ function requestJson(command, verbose = true) { d.getElementById('sliderIntensity').value = i.ix; d.getElementById('fxb' + selectedFx).style.backgroundColor = "#333"; - var f = i.fx; selectedFx = i.fx; e2.value = i.pal; - isPaused = i.psd; if (!command) d.getElementById('Effects').scrollTop = d.getElementById('fxb' + selectedFx).offsetTop - d.getElementById('Effects').clientHeight/1.8; if (s.error) showToast('WLED error ' + s.error, true); updateUI(); }) .catch(function (error) { - console.log('Request failed', error); showToast(error, true); }) } @@ -1081,7 +1082,8 @@ function toggleSync() { } else { showToast('This light and other lights in the network will no longer sync.'); } - var obj = {"udpn": {"send": syncSend, "recv": syncSend}}; + var obj = {"udpn": {"send": syncSend}}; + if (syncTglRecv) obj.udpn.recv = syncSend; requestJson(obj); } @@ -1103,8 +1105,8 @@ function makeSeg() { Segment ${lowestUnused} (new)
- Start LED:
- Stop LED: + Start LED:
+ Stop LED: (${ledCount - ns} LEDs)
@@ -1113,7 +1115,8 @@ function makeSeg() { } function resetUtil() { - d.getElementById('segutil').innerHTML = '
'; + var cn = `
`; + d.getElementById('segutil').innerHTML = cn; } function selSeg(s){ @@ -1123,15 +1126,18 @@ function selSeg(s){ } function setSeg(s){ - var start = d.getElementById(`seg${s}s`).value; - var stop = d.getElementById(`seg${s}e`).value; - var obj = {"seg": {"id": s, "start": parseInt(start), "stop": parseInt(stop)}}; - console.log(obj); + var start = parseInt(d.getElementById(`seg${s}s`).value); + var stop = parseInt(d.getElementById(`seg${s}e`).value); + if (stop <= start) {delSeg(s); return;}; + var obj = {"seg": {"id": s, "start": start, "stop": stop}}; requestJson(obj); } function delSeg(s){ - if (segCount < 2) return; + if (segCount < 2) { + showToast("You need to have multiple segments in order to delete one."); + return; + } expanded[s] = false; segCount--; var obj = {"seg": {"id": s, "stop": 0}}; @@ -1140,7 +1146,6 @@ function delSeg(s){ function setRev(s){ var rev = d.getElementById(`seg${s}rev`).checked; - console.log(rev); var obj = {"seg": {"id": s, "rev": rev}}; requestJson(obj); } diff --git a/wled00/data/settings_sec.htm b/wled00/data/settings_sec.htm index d332ad18a..478b1bf03 100644 --- a/wled00/data/settings_sec.htm +++ b/wled00/data/settings_sec.htm @@ -88,7 +88,7 @@
Enable ArduinoOTA:

About

- WLED version 0.8.4

+ WLED version 0.9.0

Contributors, dependencies and special thanks
A huge thank you to everyone who helped me create WLED!

(c) 2016-2019 Christian Schwinne
diff --git a/wled00/data/settings_sync.htm b/wled00/data/settings_sync.htm index 969eae1ec..362bb2144 100644 --- a/wled00/data/settings_sync.htm +++ b/wled00/data/settings_sync.htm @@ -103,6 +103,7 @@ Device Auth token:
Clear the token field to disable. Setup info

MQTT

+ Enable MQTT:
Broker:
Username:
Password:
diff --git a/wled00/data/settings_ui.htm b/wled00/data/settings_ui.htm index 4c44c2827..372532647 100644 --- a/wled00/data/settings_ui.htm +++ b/wled00/data/settings_ui.htm @@ -98,7 +98,8 @@

Web Setup

- Server description:

+ Server description:
+ Sync button toggles both send and receive:


diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 14e838551..4c5fa0b6e 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -167,7 +167,8 @@ function gId(s){return document.getElementById(s);}function S(){GetV();Ct();}fun

Web Setup

-Server description:

+Server description:
+Sync button toggles both send and receive:


@@ -218,6 +219,7 @@ For best results, only use one of these services at a time.
Device Auth token:
Clear the token field to disable. Setup info

MQTT

+Enable MQTT:
Broker: Port:
The MQTT credentials are sent over an unsecured connection.
diff --git a/wled00/html_ui.h b/wled00/html_ui.h index 8154304e9..929d290c6 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -10,1448 +10,1450 @@ * 4. update length value */ -const uint16_t PAGE_index_L = 23049; //length of the binary payload +const uint16_t PAGE_index_L = 23083; //length of the binary payload const uint8_t PAGE_index[] PROGMEM = { - 0x1f, 0x8b, 0x08, 0x08, 0x73, 0x2b, 0xf0, 0x5d, 0x00, 0x03, 0x73, 0x6d, 0x61, 0x6c, 0x2e, 0x68, - 0x74, 0x6d, 0x00, 0xcc, 0x7c, 0x6d, 0x77, 0xa2, 0xc8, 0xd6, 0xe8, 0xf7, 0x59, 0x6b, 0xfe, 0x83, - 0x93, 0x59, 0x77, 0x3a, 0x39, 0x89, 0x01, 0x7c, 0x8b, 0x49, 0x77, 0x7a, 0x4e, 0x81, 0xa8, 0xa8, - 0xa8, 0xa8, 0xa0, 0xe6, 0xac, 0xf9, 0x80, 0x88, 0x88, 0x22, 0x18, 0x40, 0x51, 0xe7, 0x99, 0xfb, - 0xdb, 0xef, 0xae, 0x02, 0x14, 0xdf, 0xba, 0x33, 0xd3, 0xcf, 0x59, 0xeb, 0xa6, 0x3b, 0x6a, 0xbd, - 0xed, 0xda, 0xb5, 0xdf, 0xf7, 0xa6, 0xe2, 0x97, 0x5f, 0x4a, 0x2d, 0xae, 0x37, 0x6c, 0xf3, 0xa9, - 0xa9, 0xbf, 0xb0, 0xbe, 0xfe, 0xfc, 0xd3, 0x97, 0xfd, 0xbb, 0xae, 0x8e, 0xf1, 0xfb, 0x42, 0xf7, - 0xd5, 0x94, 0xad, 0x2e, 0xf4, 0xd7, 0x9b, 0xb5, 0xa9, 0x07, 0x4b, 0xc7, 0xf5, 0x6f, 0x52, 0x9a, - 0x63, 0xfb, 0xba, 0xed, 0xbf, 0xde, 0x04, 0xe6, 0xd8, 0x9f, 0xbe, 0x8e, 0xf5, 0xb5, 0xa9, 0xe9, - 0x69, 0xd2, 0x78, 0x48, 0x99, 0xb6, 0xe9, 0x9b, 0xaa, 0x95, 0xf6, 0x34, 0xd5, 0xd2, 0x5f, 0x99, - 0x87, 0xd4, 0x02, 0x7a, 0x16, 0xab, 0x45, 0xdc, 0x71, 0xb3, 0x07, 0xab, 0x4d, 0x55, 0xd7, 0xd3, - 0x01, 0xcc, 0xca, 0x9f, 0xa4, 0x8b, 0x37, 0x27, 0xdb, 0xf9, 0x53, 0x7d, 0xa1, 0xa7, 0x35, 0xc7, - 0x72, 0xdc, 0xc4, 0x8e, 0xbf, 0x66, 0xc8, 0x4f, 0x02, 0x48, 0x3c, 0xb2, 0xd5, 0xbd, 0x9b, 0x68, - 0xa9, 0xba, 0x5c, 0x5a, 0x7a, 0x7a, 0xe1, 0x8c, 0x4c, 0x78, 0x0b, 0xf4, 0x51, 0x1a, 0x3a, 0xd2, - 0x9a, 0xba, 0x54, 0x47, 0x96, 0x4e, 0x56, 0x5a, 0xa6, 0x3d, 0x4f, 0xb9, 0xba, 0xf5, 0x7a, 0xe3, - 0x4d, 0xe1, 0x44, 0xda, 0xca, 0x4f, 0x99, 0x00, 0xe8, 0x26, 0x35, 0x75, 0xf5, 0xc9, 0xeb, 0xcd, - 0x58, 0xf5, 0xd5, 0x17, 0x73, 0xa1, 0x1a, 0x3a, 0xb5, 0x49, 0xe3, 0x81, 0xcf, 0x23, 0xd5, 0xd3, - 0x0b, 0xb9, 0x07, 0x84, 0x10, 0x8b, 0x10, 0x8f, 0x78, 0x78, 0xc5, 0xef, 0x15, 0xc4, 0x55, 0xf0, - 0xa7, 0xb2, 0x01, 0x2f, 0x82, 0x25, 0xf5, 0xe6, 0x5a, 0x93, 0x9b, 0x3a, 0x75, 0xdc, 0x57, 0x92, - 0x2d, 0xa1, 0x53, 0x16, 0xf0, 0x47, 0x29, 0x9c, 0x6d, 0x90, 0xb9, 0x55, 0xaa, 0x4d, 0x0d, 0x71, - 0x0f, 0xcf, 0xd4, 0x3a, 0x7c, 0x59, 0x6e, 0x09, 0xcc, 0x0c, 0xba, 0xa8, 0x76, 0xd0, 0xda, 0x18, - 0xcd, 0x8a, 0x8e, 0x64, 0x71, 0xc3, 0x3f, 0x57, 0x0a, 0x9a, 0xc4, 0xd5, 0x4b, 0x7d, 0x34, 0x5d, - 0xa2, 0xd2, 0x5b, 0x66, 0x52, 0x6c, 0x8b, 0x33, 0xb6, 0x9b, 0x95, 0xfa, 0x74, 0x51, 0xaa, 0x67, - 0xe8, 0xba, 0xfa, 0xc6, 0x65, 0x8c, 0x09, 0xf7, 0x3c, 0xe5, 0xec, 0x77, 0x67, 0xe5, 0x34, 0x0d, - 0xd4, 0x31, 0x86, 0x4f, 0x3b, 0x71, 0x83, 0xb6, 0x4d, 0x4b, 0x1e, 0x4b, 0x55, 0x6b, 0x60, 0x22, - 0xab, 0x95, 0x11, 0x4b, 0xa8, 0x54, 0xc8, 0xf2, 0xca, 0x7b, 0xb3, 0x8a, 0x74, 0x1a, 0x11, 0x44, - 0xac, 0x72, 0x6f, 0xde, 0x5d, 0x49, 0x0b, 0x8e, 0xbb, 0xa1, 0x30, 0x35, 0x7c, 0xd3, 0xb7, 0xf4, - 0xaf, 0xfd, 0x06, 0x5f, 0xfa, 0x42, 0x85, 0x9f, 0xa1, 0xd3, 0xd3, 0x5c, 0x73, 0xe9, 0x7f, 0x9d, - 0xac, 0x6c, 0xcd, 0x37, 0x1d, 0x3b, 0x35, 0xd1, 0xf5, 0xf1, 0x48, 0xd5, 0xe6, 0xb7, 0x77, 0x7f, - 0xfe, 0xf5, 0x85, 0x8a, 0x46, 0xf1, 0x3c, 0x7f, 0x4b, 0x16, 0xfc, 0x7b, 0x02, 0x8c, 0x48, 0x4f, - 0x54, 0x4d, 0x4f, 0xfd, 0xf9, 0xf3, 0x4f, 0x51, 0x63, 0x61, 0x5a, 0xdb, 0x97, 0xd4, 0x4d, 0x5f, - 0x00, 0x1a, 0x7a, 0x37, 0x9f, 0x7f, 0xfe, 0xc9, 0x73, 0xb5, 0x97, 0xd4, 0xca, 0xb5, 0x6e, 0x09, - 0x89, 0x31, 0x9f, 0x4c, 0x4d, 0xc5, 0xf0, 0x81, 0xd0, 0x64, 0x4d, 0xe0, 0x4c, 0x26, 0x9f, 0x63, - 0xc1, 0x20, 0x72, 0x11, 0xd3, 0x7e, 0x4c, 0x3f, 0x57, 0x3a, 0x06, 0x22, 0x94, 0x47, 0xac, 0x07, - 0x2f, 0x1e, 0xf9, 0x58, 0x71, 0xa5, 0x88, 0xc2, 0xd7, 0x7e, 0xd8, 0xb6, 0xbc, 0x2d, 0x6e, 0xf1, - 0x07, 0x8e, 0x2c, 0x20, 0x7d, 0x46, 0x29, 0x4f, 0x23, 0xa1, 0xdf, 0xf4, 0x87, 0x03, 0xc2, 0x41, - 0x07, 0x77, 0x76, 0xf0, 0x47, 0xb9, 0x33, 0x61, 0x8d, 0x6e, 0xe7, 0x2d, 0x53, 0xde, 0x69, 0xb8, - 0xfd, 0x1e, 0xe0, 0x57, 0xc2, 0x48, 0xb2, 0x9e, 0x65, 0xed, 0x51, 0xd5, 0x5a, 0xe0, 0xa6, 0x8f, - 0x57, 0xf6, 0x61, 0x73, 0x56, 0x99, 0xdb, 0xf9, 0xc1, 0x3b, 0x55, 0x99, 0x5a, 0x43, 0xd2, 0x36, - 0x86, 0x78, 0x6a, 0x13, 0xcb, 0x45, 0x09, 0x76, 0x28, 0x88, 0x8c, 0x8a, 0xc7, 0x60, 0xa8, 0x52, - 0x26, 0x48, 0xcd, 0xf1, 0x4b, 0x0d, 0x69, 0x43, 0xc4, 0x3c, 0x3b, 0xa3, 0x41, 0x27, 0x07, 0xcd, - 0xe1, 0x18, 0x77, 0xd6, 0xf1, 0x22, 0xce, 0xb1, 0x11, 0xea, 0x65, 0x17, 0x9b, 0xf5, 0x30, 0xc3, - 0x03, 0xbc, 0x39, 0x41, 0x45, 0xc1, 0x43, 0xe5, 0xb7, 0x60, 0x51, 0xf1, 0x8c, 0x51, 0xbf, 0x9c, - 0xc3, 0x9d, 0x95, 0x01, 0x39, 0xbc, 0x11, 0x21, 0x49, 0xa3, 0x32, 0xb3, 0x1a, 0xf6, 0x19, 0x0b, - 0x9a, 0x6f, 0x16, 0x39, 0x0f, 0x3e, 0x5a, 0xb9, 0x2e, 0xc9, 0x0d, 0x29, 0x37, 0x60, 0xd7, 0x5a, - 0x16, 0xe3, 0xe7, 0x1a, 0x47, 0x87, 0x22, 0x47, 0x14, 0x61, 0xa3, 0x0a, 0x0c, 0xca, 0x18, 0x89, - 0x37, 0xe4, 0xe1, 0x4e, 0xae, 0x8d, 0x96, 0x73, 0x6e, 0x87, 0x87, 0x75, 0x0f, 0x89, 0x01, 0x5f, - 0xbb, 0x48, 0xe2, 0xce, 0x65, 0xca, 0x63, 0xcc, 0xf2, 0x2c, 0x2a, 0x89, 0x54, 0x91, 0x86, 0xc5, - 0x25, 0xfc, 0x7f, 0x3f, 0x90, 0xf8, 0x11, 0xe2, 0x0f, 0x21, 0x1e, 0xf8, 0x45, 0xc3, 0x1a, 0x43, - 0xda, 0x6c, 0x80, 0xdf, 0x09, 0xdf, 0xab, 0xb8, 0xb3, 0x8b, 0x51, 0x67, 0x2b, 0x78, 0x98, 0x95, - 0x30, 0x37, 0x79, 0x24, 0xb4, 0x50, 0x36, 0x57, 0xb2, 0x8d, 0x76, 0x8b, 0x15, 0x73, 0x02, 0x65, - 0x38, 0x2b, 0x6e, 0x99, 0x6b, 0xac, 0x0d, 0xa6, 0x55, 0x5a, 0xe6, 0x3a, 0xa3, 0x69, 0x4b, 0xe7, - 0xa9, 0xdc, 0x60, 0x37, 0x35, 0x57, 0x82, 0x9f, 0x9b, 0x65, 0x4d, 0x67, 0x55, 0x5f, 0xe4, 0xdc, - 0xb6, 0xb9, 0x59, 0x35, 0xe6, 0xb9, 0xed, 0x60, 0x26, 0xde, 0x37, 0xc5, 0x5c, 0xbe, 0x34, 0xb3, - 0xf4, 0x76, 0x3f, 0x47, 0x55, 0xe7, 0x9c, 0x2e, 0x49, 0x14, 0x95, 0xa5, 0xa8, 0x20, 0xc2, 0xef, - 0x3a, 0x7c, 0x07, 0xc3, 0x6f, 0xde, 0x5f, 0x85, 0x3f, 0x8b, 0xe0, 0x37, 0x72, 0x39, 0x6a, 0x66, - 0xb5, 0xce, 0xe0, 0xb3, 0xd4, 0xbd, 0x38, 0xd9, 0x75, 0x28, 0xb1, 0x5a, 0x74, 0x26, 0xab, 0xcd, - 0x73, 0xbe, 0x9a, 0xd1, 0x26, 0xc3, 0xce, 0xb3, 0x54, 0xdd, 0x19, 0x93, 0x5a, 0xe7, 0x29, 0x5f, - 0xf5, 0xe7, 0x3a, 0xc3, 0x16, 0x86, 0x55, 0xc7, 0x1b, 0x17, 0x3a, 0x59, 0xb5, 0x3a, 0x18, 0x8e, - 0xb5, 0x0d, 0x63, 0x57, 0x15, 0x79, 0xdc, 0xea, 0xec, 0xf2, 0xd5, 0x56, 0xa0, 0x31, 0x9d, 0x6d, - 0xaf, 0x0a, 0xc2, 0x24, 0xb3, 0x41, 0xa6, 0xca, 0x16, 0x35, 0xe0, 0x62, 0x89, 0xd0, 0xef, 0xbf, - 0xfa, 0x03, 0xf0, 0x27, 0x14, 0x85, 0x50, 0xf1, 0x84, 0x9f, 0xc0, 0xcd, 0x92, 0x96, 0x8f, 0xfa, - 0xd8, 0xa3, 0x25, 0xc0, 0xba, 0xe6, 0x6e, 0xce, 0xee, 0xd7, 0x1f, 0x7e, 0xb0, 0x14, 0x66, 0x5b, - 0x52, 0xd4, 0x67, 0x94, 0x14, 0xaa, 0x88, 0x4a, 0xf5, 0xa0, 0x81, 0xb0, 0xaa, 0xf0, 0xb0, 0x0e, - 0x8c, 0xe5, 0x94, 0xef, 0x48, 0x15, 0x61, 0xcb, 0x9b, 0x35, 0x83, 0x57, 0x84, 0x9e, 0xbc, 0x6b, - 0xee, 0xc4, 0x01, 0xc8, 0x24, 0x86, 0xbb, 0x15, 0xa8, 0xc2, 0xbb, 0xb0, 0x13, 0xb8, 0x3a, 0x95, - 0x79, 0xb7, 0x4c, 0xb7, 0x5f, 0x5f, 0x0e, 0x15, 0x80, 0x73, 0x8f, 0x38, 0x71, 0x2b, 0x1a, 0xf5, - 0x99, 0xa2, 0xc8, 0x6e, 0x3d, 0x00, 0xba, 0x34, 0x07, 0x40, 0x76, 0xd1, 0xc5, 0xe6, 0x83, 0x93, - 0x50, 0x0b, 0xb1, 0xa0, 0xaa, 0x9c, 0xdc, 0x11, 0x3a, 0xbc, 0xcc, 0x9a, 0xe2, 0x54, 0x30, 0x87, - 0x3d, 0xbe, 0xcb, 0x77, 0x84, 0xae, 0xbc, 0x2b, 0x77, 0x79, 0x46, 0xdc, 0x69, 0x3b, 0x38, 0x0b, - 0x87, 0x4a, 0xc2, 0x8c, 0x7a, 0x77, 0x66, 0xa2, 0x25, 0xb3, 0xca, 0xba, 0xf0, 0x8e, 0x64, 0xae, - 0x4f, 0xa9, 0xef, 0xfd, 0xba, 0x9f, 0xdc, 0xa7, 0xda, 0xa2, 0x60, 0xfc, 0xfd, 0x59, 0x51, 0x94, - 0xae, 0x17, 0x9e, 0xbf, 0xc6, 0xa3, 0xb2, 0xd4, 0x42, 0xc8, 0xe2, 0xb1, 0xbc, 0xa2, 0x9a, 0xc4, - 0x0f, 0x50, 0x57, 0xcb, 0xa2, 0x21, 0x62, 0x37, 0xa5, 0xdd, 0x3d, 0x6a, 0x15, 0x8b, 0x33, 0xa9, - 0xca, 0xb7, 0xdb, 0x39, 0xf4, 0xb4, 0x8b, 0x04, 0xce, 0x60, 0x15, 0xea, 0x89, 0x2f, 0xbd, 0xe3, - 0xf3, 0x03, 0x92, 0x12, 0xa6, 0x65, 0x4f, 0x18, 0x54, 0x0d, 0x7e, 0x50, 0x9e, 0xca, 0xc0, 0xe6, - 0x1c, 0xcb, 0x06, 0xc3, 0x36, 0xc0, 0x59, 0xd4, 0xb6, 0x39, 0xb6, 0xb6, 0x1d, 0x32, 0xcd, 0x92, - 0x76, 0x8f, 0x7a, 0x5a, 0x46, 0xdc, 0x09, 0xfd, 0xf2, 0x2e, 0xc7, 0x8a, 0x81, 0x98, 0x69, 0xc2, - 0x7b, 0x73, 0x07, 0x63, 0xdc, 0x70, 0x26, 0x18, 0xc3, 0xaa, 0x00, 0x73, 0x85, 0xad, 0x50, 0x29, - 0x77, 0xa4, 0x08, 0x56, 0x91, 0x05, 0x3a, 0x6c, 0xea, 0x5b, 0x8f, 0xe2, 0xa7, 0xa2, 0x5a, 0x61, - 0x9e, 0x4b, 0xe0, 0xb3, 0xee, 0xdb, 0x56, 0x8d, 0x97, 0x98, 0xe2, 0xa8, 0x32, 0x15, 0xbb, 0xed, - 0xad, 0xe7, 0x8a, 0xbd, 0xa9, 0x25, 0x80, 0x63, 0x69, 0x35, 0x36, 0x62, 0x7b, 0x97, 0x1f, 0x56, - 0xd8, 0xa9, 0x22, 0x95, 0xca, 0x7d, 0x5e, 0x41, 0x1d, 0x65, 0x56, 0x46, 0x0a, 0x38, 0x9f, 0x7e, - 0x29, 0x47, 0xf5, 0x90, 0xc4, 0x05, 0xac, 0xd0, 0x95, 0x38, 0xef, 0x5d, 0x9c, 0x05, 0xf9, 0x56, - 0x55, 0xa6, 0x24, 0xde, 0xcb, 0xb5, 0x78, 0x8f, 0x92, 0xaa, 0x72, 0xae, 0xd5, 0x0b, 0xb6, 0x75, - 0xd3, 0x47, 0xfc, 0x54, 0x08, 0xea, 0xdd, 0x79, 0x40, 0xf5, 0x2d, 0xbe, 0xb5, 0x5b, 0xda, 0x8d, - 0x6d, 0x71, 0x25, 0x95, 0x87, 0xf9, 0x06, 0x17, 0xe4, 0x95, 0x39, 0x5a, 0x35, 0xb6, 0xcf, 0x76, - 0x6b, 0xe6, 0xf3, 0x2c, 0xa6, 0xbb, 0x50, 0x02, 0x7e, 0xb5, 0x88, 0xb9, 0x07, 0xc1, 0xc9, 0x60, - 0x9a, 0xf2, 0x5d, 0xb1, 0x23, 0x6e, 0xb4, 0x7e, 0x79, 0x93, 0x63, 0xcb, 0x9b, 0xa1, 0x52, 0x46, - 0x5a, 0x0b, 0x49, 0x1a, 0xc8, 0x86, 0x60, 0x37, 0x0c, 0xde, 0xae, 0xcd, 0x64, 0x3a, 0x3a, 0x7b, - 0xb6, 0x0c, 0xb4, 0xda, 0x9f, 0x77, 0x26, 0x6e, 0x13, 0x34, 0xb1, 0x91, 0xe9, 0xf7, 0x15, 0x2f, - 0x37, 0xa9, 0x74, 0xe6, 0x33, 0xce, 0x98, 0xeb, 0xd5, 0x85, 0x55, 0xe9, 0x28, 0xac, 0xd4, 0x91, - 0xdf, 0x96, 0xd5, 0x69, 0xae, 0xc6, 0x99, 0xe2, 0x5b, 0xa5, 0x53, 0x2c, 0xc2, 0x59, 0x86, 0x65, - 0x86, 0xcf, 0x36, 0x67, 0xb9, 0xfb, 0xe6, 0x6c, 0xdc, 0x29, 0x6f, 0x8c, 0xa2, 0x08, 0xbc, 0x21, - 0xbc, 0x66, 0x68, 0x55, 0xe0, 0xca, 0x75, 0x38, 0x8f, 0x27, 0xf3, 0x4a, 0x45, 0xed, 0xe4, 0xf4, - 0xea, 0x34, 0xbf, 0xec, 0xcc, 0x15, 0xa9, 0xc1, 0xcd, 0x97, 0x5d, 0x93, 0x37, 0x2a, 0xb3, 0x60, - 0xa9, 0xf3, 0xc3, 0x78, 0x6d, 0x04, 0x2b, 0x5f, 0xd1, 0xb9, 0x79, 0xcc, 0x6f, 0x9a, 0x2a, 0x0c, - 0x4b, 0x33, 0xd4, 0x50, 0x11, 0x9f, 0x43, 0x7d, 0x6c, 0xe2, 0x3a, 0x9a, 0x8e, 0xa4, 0x22, 0x5b, - 0x32, 0xf8, 0x35, 0x92, 0x72, 0x6c, 0x29, 0xe0, 0x5b, 0xa8, 0xeb, 0xb1, 0x20, 0x9f, 0x6b, 0xd4, - 0x05, 0x9e, 0x07, 0x5a, 0xa5, 0x66, 0x16, 0xd9, 0xda, 0x6c, 0x48, 0xe1, 0x76, 0xb3, 0x27, 0x65, - 0x9a, 0x5b, 0x6d, 0x85, 0x7a, 0x45, 0xb6, 0x6d, 0xf0, 0x13, 0xd4, 0xcb, 0xb1, 0xed, 0x80, 0x07, - 0x99, 0xf0, 0x58, 0x71, 0x3a, 0x9c, 0xa0, 0x0e, 0xd0, 0x61, 0xa7, 0x65, 0x30, 0xcf, 0xcb, 0x06, - 0xc8, 0x4e, 0x87, 0xd0, 0xa5, 0xc2, 0x06, 0xf2, 0xb6, 0x09, 0xf4, 0xaa, 0x99, 0xa2, 0xc9, 0x82, - 0x6c, 0x95, 0x0d, 0x71, 0xa3, 0x48, 0xc3, 0x12, 0x5b, 0x16, 0x4a, 0xa5, 0x60, 0xbc, 0x28, 0x6d, - 0xc5, 0x1e, 0xec, 0xdd, 0xe0, 0xea, 0x92, 0xc0, 0x05, 0xbc, 0xc4, 0x6f, 0x05, 0xe9, 0xcd, 0xd0, - 0x5a, 0x78, 0x1c, 0x05, 0xca, 0x00, 0x19, 0x3c, 0x87, 0x94, 0x61, 0x05, 0x05, 0x9d, 0x2e, 0x0a, - 0x8a, 0xd5, 0x37, 0xa3, 0x38, 0xe3, 0x83, 0x22, 0xcb, 0x05, 0xe6, 0x9c, 0x43, 0x1e, 0xcb, 0xb3, - 0xa2, 0xc9, 0x57, 0x86, 0xd5, 0x92, 0x81, 0xc7, 0xc5, 0xb2, 0x12, 0x08, 0x2c, 0x92, 0xaa, 0xf7, - 0xbb, 0xdd, 0xf3, 0xa8, 0xbf, 0x2b, 0x52, 0x7d, 0xc6, 0x63, 0x2b, 0x00, 0xb6, 0x14, 0xe8, 0x4d, - 0xc0, 0x05, 0xb6, 0x81, 0x97, 0x4a, 0x20, 0x70, 0x86, 0x23, 0x8c, 0x90, 0x21, 0x97, 0xb8, 0x39, - 0xc7, 0x4a, 0x78, 0xac, 0xc8, 0x77, 0x90, 0x23, 0x43, 0xbf, 0xcc, 0xcd, 0xff, 0xe6, 0x7c, 0xbb, - 0x36, 0x6a, 0xc7, 0xfb, 0x61, 0x15, 0x0b, 0x90, 0x4b, 0xe5, 0xa4, 0x12, 0x23, 0x89, 0x0a, 0x62, - 0x73, 0xe0, 0x9a, 0xd8, 0x2e, 0x96, 0x2b, 0x71, 0x0a, 0x34, 0xef, 0x80, 0x5c, 0x75, 0x45, 0x3a, - 0xd2, 0x2b, 0xd0, 0x9b, 0x50, 0xb6, 0x70, 0x5f, 0x24, 0x3b, 0x3b, 0x7e, 0x23, 0x0f, 0xd8, 0xad, - 0x56, 0xad, 0xed, 0x34, 0x06, 0xe4, 0x0d, 0x74, 0x6f, 0xb8, 0x03, 0x1a, 0x83, 0x1c, 0x0e, 0xab, - 0x68, 0xb7, 0xd7, 0xd3, 0x59, 0x93, 0x03, 0x7e, 0x80, 0x8e, 0x82, 0x5c, 0xc2, 0xf9, 0xf9, 0x2a, - 0x8b, 0xfb, 0x62, 0x3d, 0x0d, 0x04, 0xd4, 0x9e, 0x0d, 0xb3, 0x72, 0x47, 0x1b, 0x2a, 0x53, 0xd4, - 0x69, 0x99, 0x9a, 0x0d, 0xf2, 0x6f, 0xd7, 0x76, 0x0e, 0x84, 0x85, 0xc3, 0x58, 0xde, 0xdc, 0x79, - 0x6f, 0x0b, 0xe6, 0x65, 0xdb, 0xa9, 0x72, 0x12, 0x05, 0xe3, 0x54, 0x8d, 0x0d, 0xdc, 0xa1, 0xf2, - 0xa6, 0x18, 0x9c, 0x64, 0x29, 0x20, 0x6b, 0xaa, 0xfc, 0x56, 0x96, 0xcb, 0xc0, 0xca, 0x05, 0xc8, - 0xaf, 0x25, 0x5b, 0x35, 0x81, 0x55, 0x94, 0x05, 0xcf, 0xa9, 0x1b, 0x63, 0x20, 0xc3, 0x3e, 0x6d, - 0x33, 0x82, 0xc9, 0x46, 0x7b, 0x94, 0x72, 0x99, 0x26, 0xc3, 0x0f, 0x2a, 0xed, 0xfc, 0x6e, 0xf6, - 0xc6, 0x17, 0x0d, 0x01, 0x15, 0xe7, 0x43, 0xba, 0xd9, 0xe4, 0x78, 0xaf, 0xbd, 0x2b, 0x7a, 0x42, - 0x4f, 0x6a, 0xa2, 0x99, 0x16, 0xc1, 0x29, 0xc7, 0xba, 0x10, 0xeb, 0xc6, 0x54, 0xb1, 0xfa, 0xa8, - 0xc6, 0xc9, 0xc4, 0xce, 0x2b, 0x93, 0x7b, 0x05, 0x15, 0x3c, 0xae, 0x10, 0x80, 0xbf, 0xe6, 0x70, - 0xc8, 0xc3, 0x6f, 0x3f, 0xa0, 0x93, 0x3b, 0x7e, 0xab, 0x65, 0x1b, 0x01, 0x0f, 0x32, 0xa8, 0x55, - 0x9b, 0x40, 0x87, 0x3e, 0x9f, 0x6f, 0x8d, 0x39, 0xde, 0x14, 0xcc, 0x32, 0xdd, 0x9b, 0xe7, 0x87, - 0x7d, 0x99, 0x49, 0xb4, 0x99, 0x37, 0x9f, 0xbb, 0x9f, 0xd0, 0x56, 0xad, 0x4b, 0x2f, 0x8b, 0x6b, - 0x1f, 0x35, 0xdc, 0xfd, 0xbc, 0xd3, 0x75, 0x51, 0x9b, 0x52, 0x06, 0x2d, 0xb3, 0x03, 0xd4, 0x9a, - 0xd6, 0xeb, 0xbb, 0x3e, 0x1d, 0xf2, 0x3b, 0x2f, 0x03, 0xbf, 0x1b, 0x2e, 0xf6, 0x34, 0x75, 0x89, - 0x04, 0x8f, 0x56, 0xc4, 0x43, 0xcc, 0xa3, 0x1d, 0xe6, 0x19, 0xe8, 0x4d, 0x16, 0xfc, 0xca, 0xb4, - 0xd9, 0x13, 0x15, 0xa1, 0x23, 0xcf, 0xd8, 0x88, 0xf7, 0x20, 0xff, 0x16, 0xbf, 0x15, 0x6d, 0x21, - 0xd0, 0x66, 0xfc, 0x4e, 0x2c, 0x89, 0x5b, 0x8d, 0xab, 0x75, 0xb9, 0x32, 0xd3, 0xcb, 0xbe, 0xd5, - 0x79, 0x34, 0x50, 0x3a, 0xd2, 0xa6, 0x6a, 0xe6, 0xf9, 0xf2, 0x24, 0x37, 0x47, 0xdd, 0x65, 0x1f, - 0x7e, 0x9f, 0xb9, 0x0d, 0x92, 0x6a, 0xa0, 0xeb, 0x55, 0xc8, 0x16, 0x06, 0x22, 0xab, 0x88, 0xa2, - 0x17, 0x28, 0x1a, 0xab, 0x8c, 0x72, 0xcb, 0xf2, 0x5a, 0xd1, 0xcb, 0xcc, 0x2c, 0xdb, 0x6f, 0xf4, - 0x05, 0xba, 0x36, 0x37, 0xa6, 0x62, 0x56, 0x02, 0x8f, 0xf1, 0xd6, 0x57, 0xba, 0xc3, 0x79, 0x4d, - 0x1e, 0x4e, 0x05, 0xd0, 0xd1, 0xd1, 0x24, 0x87, 0x80, 0x37, 0x1c, 0x6a, 0x3f, 0xf5, 0x57, 0xc4, - 0x48, 0x88, 0xa8, 0x8e, 0x65, 0xf7, 0x19, 0x44, 0x1a, 0xa1, 0x11, 0xf8, 0x58, 0x24, 0x05, 0x49, - 0xbf, 0xa0, 0x55, 0x22, 0xbf, 0x30, 0x13, 0xcc, 0x50, 0xee, 0x6a, 0x60, 0xff, 0xf0, 0x99, 0x9a, - 0xd3, 0xa4, 0xdd, 0x3b, 0x93, 0x49, 0x39, 0xe2, 0x59, 0x2f, 0x92, 0x61, 0x58, 0x8f, 0xfd, 0xc9, - 0x90, 0x43, 0x65, 0xb6, 0xd6, 0x1d, 0x38, 0xeb, 0xc6, 0xc6, 0x1b, 0x81, 0x4d, 0x2e, 0x74, 0x65, - 0x4b, 0x92, 0x79, 0xab, 0xa6, 0x9b, 0xc5, 0x75, 0x65, 0xe3, 0xad, 0x1b, 0xd9, 0x65, 0xad, 0xab, - 0x20, 0xaf, 0xb6, 0xd5, 0x0a, 0xa0, 0x6c, 0x12, 0xdf, 0x73, 0xec, 0xda, 0x36, 0x38, 0x6d, 0x33, - 0x5d, 0xda, 0x63, 0x9a, 0xb2, 0xdf, 0x40, 0x0e, 0x02, 0xb9, 0x96, 0x9f, 0x5a, 0xf4, 0x5b, 0xa5, - 0xb5, 0xf3, 0x95, 0xd0, 0x16, 0x26, 0xdb, 0xb3, 0xe7, 0xc2, 0xe6, 0x44, 0x17, 0xd8, 0x93, 0x36, - 0x2a, 0x2b, 0xdd, 0x9d, 0x1c, 0xc1, 0xf4, 0xe2, 0x20, 0x23, 0xe6, 0x2f, 0xc9, 0x0d, 0x1a, 0x06, - 0x8e, 0x0f, 0x31, 0x71, 0x78, 0x13, 0x78, 0x68, 0x03, 0x0d, 0x76, 0x7b, 0xdd, 0xc6, 0x34, 0xda, - 0x62, 0x1d, 0x94, 0x63, 0x1d, 0xb7, 0x9a, 0x01, 0x5f, 0xad, 0x05, 0xc4, 0x37, 0x86, 0xb2, 0x6a, - 0x12, 0x1d, 0xb5, 0xcf, 0x7c, 0xc7, 0x4c, 0xb3, 0x81, 0x66, 0x31, 0x7d, 0xb2, 0x60, 0x5f, 0xb7, - 0xe5, 0x29, 0xcd, 0x42, 0xfc, 0xa1, 0xd4, 0x36, 0x35, 0xad, 0xc6, 0x0c, 0x7d, 0xa0, 0x8f, 0xa0, - 0x6f, 0x73, 0xeb, 0x2a, 0x3b, 0x6e, 0x88, 0x55, 0xba, 0xca, 0x45, 0xf8, 0x53, 0xe6, 0x3c, 0x8b, - 0xd6, 0x52, 0x66, 0xb6, 0xf5, 0x75, 0xd1, 0xda, 0xd3, 0xf5, 0x4d, 0xee, 0xc9, 0x3d, 0xd3, 0x70, - 0x44, 0x9e, 0xe5, 0x0b, 0x40, 0x37, 0xaf, 0xd2, 0x2d, 0xf6, 0x25, 0x6c, 0x5f, 0x77, 0x4a, 0x03, - 0x19, 0xe5, 0x0c, 0xbb, 0x7b, 0xab, 0xa3, 0xa9, 0x2c, 0xb0, 0x4c, 0xd0, 0x2e, 0x81, 0x4e, 0x2b, - 0x3d, 0xef, 0xa9, 0x33, 0xdb, 0x2c, 0xea, 0x03, 0xba, 0x5b, 0xdb, 0xc8, 0x11, 0xad, 0x59, 0xa6, - 0xb9, 0xa6, 0xc5, 0x66, 0xae, 0xd8, 0xe1, 0xf7, 0x73, 0x9e, 0xfd, 0x7a, 0xa7, 0xdb, 0x28, 0x9b, - 0xc5, 0xb7, 0x06, 0xa7, 0xd9, 0xad, 0x29, 0x2f, 0x95, 0xd0, 0x92, 0x03, 0xa9, 0x6c, 0x34, 0x25, - 0x80, 0x9f, 0x11, 0x59, 0xa0, 0x63, 0x35, 0xf4, 0x3f, 0x9c, 0x4b, 0x65, 0xbc, 0x92, 0x42, 0xec, - 0xe1, 0x1c, 0x89, 0xc6, 0x49, 0xbc, 0x11, 0xd2, 0xf0, 0x20, 0x3b, 0x1b, 0xd9, 0x6e, 0x6e, 0xe4, - 0x4e, 0x13, 0xeb, 0x6f, 0x37, 0xa1, 0xdf, 0x33, 0x6d, 0x00, 0xf4, 0x51, 0xca, 0x6c, 0x48, 0x6b, - 0xf0, 0x6b, 0xd5, 0xf6, 0x2c, 0x3f, 0xae, 0x6c, 0x1c, 0xad, 0xd2, 0xcb, 0x01, 0xfe, 0x92, 0xdc, - 0x31, 0x73, 0xeb, 0xa6, 0xba, 0x72, 0xdf, 0x0b, 0xfe, 0xc5, 0x31, 0xb4, 0x94, 0x21, 0x0e, 0xa1, - 0xef, 0xdb, 0x73, 0x6d, 0x3b, 0xe0, 0x0c, 0xaa, 0x32, 0xa3, 0x8d, 0x66, 0xb7, 0xb8, 0xea, 0x4c, - 0x25, 0xd9, 0xa8, 0xaf, 0xde, 0x8d, 0x76, 0xc6, 0x25, 0xef, 0x2c, 0xa4, 0x4d, 0xbd, 0xdc, 0x7d, - 0x67, 0x57, 0xd3, 0xea, 0xa5, 0xa2, 0xda, 0xee, 0x22, 0xa6, 0xb1, 0xcd, 0x57, 0xca, 0x38, 0xc8, - 0x32, 0x78, 0x1c, 0x5e, 0x96, 0x70, 0x86, 0x85, 0xed, 0x14, 0x1b, 0xc6, 0x8f, 0x2c, 0x48, 0x41, - 0x47, 0xc0, 0xf1, 0x62, 0xdf, 0x47, 0x10, 0xa1, 0xe1, 0x38, 0x93, 0xc2, 0x13, 0xa9, 0x30, 0x1b, - 0x62, 0x89, 0x24, 0x05, 0x38, 0xe2, 0xc2, 0xc1, 0x29, 0xce, 0xae, 0xf8, 0x1d, 0x8e, 0x35, 0xf8, - 0x00, 0x4b, 0x33, 0xd8, 0xc3, 0x37, 0x99, 0x55, 0x83, 0x1a, 0x9e, 0x0f, 0x7a, 0x89, 0xe3, 0x5e, - 0x88, 0xfb, 0x48, 0xf0, 0xca, 0x0e, 0xa8, 0xbc, 0x86, 0xe3, 0xb5, 0x25, 0xd6, 0x53, 0x48, 0x59, - 0x1a, 0x38, 0xd8, 0x03, 0xe2, 0x5a, 0x88, 0xcb, 0xa1, 0x9e, 0x44, 0xfc, 0x79, 0x99, 0xef, 0x14, - 0x59, 0xb6, 0xc3, 0x0f, 0x6a, 0x1b, 0xde, 0x42, 0x7b, 0x39, 0xd4, 0x14, 0xa2, 0xb7, 0x5b, 0x11, - 0x7f, 0x2e, 0x61, 0x9a, 0xb3, 0x58, 0x2e, 0x77, 0x62, 0xaf, 0x49, 0xf4, 0x52, 0xc6, 0x34, 0x67, - 0x63, 0x7b, 0xca, 0xee, 0xe4, 0xcc, 0xa9, 0x2e, 0xd7, 0x76, 0xf2, 0x3e, 0x16, 0x42, 0x26, 0x73, - 0x4f, 0x05, 0x1c, 0x37, 0x59, 0x17, 0x11, 0xb8, 0x44, 0x16, 0x35, 0x87, 0x2b, 0xa5, 0x2b, 0x3e, - 0x8b, 0xd5, 0x26, 0xca, 0x4d, 0x83, 0x39, 0xab, 0x68, 0x55, 0xb1, 0xab, 0x09, 0x6c, 0x57, 0xd2, - 0xda, 0x5d, 0x6d, 0xc3, 0x32, 0x63, 0xbe, 0xdd, 0x6d, 0x2a, 0x8d, 0x39, 0xbb, 0x03, 0x0b, 0x93, - 0xaf, 0x4e, 0x19, 0xbb, 0x33, 0x7f, 0x93, 0xda, 0xbb, 0x61, 0x46, 0x66, 0x41, 0x5f, 0xa6, 0x63, - 0xa9, 0x09, 0x31, 0x86, 0xcc, 0xbf, 0x55, 0xde, 0x36, 0xb4, 0x8e, 0xde, 0xf2, 0x7a, 0x00, 0x69, - 0xd7, 0xd0, 0x7a, 0x82, 0x8c, 0x95, 0x85, 0x68, 0xa4, 0x00, 0x24, 0x2b, 0x77, 0x0f, 0xf0, 0x74, - 0x56, 0x60, 0xe4, 0x95, 0x54, 0x15, 0x03, 0xca, 0xd3, 0x56, 0x0a, 0x27, 0x91, 0xbd, 0xa9, 0x15, - 0xff, 0x0c, 0x3e, 0x0c, 0xfc, 0xbf, 0xb6, 0xa9, 0x05, 0xe5, 0xba, 0x4c, 0x5b, 0x75, 0xad, 0x2b, - 0xcf, 0x39, 0x45, 0x13, 0x60, 0xcf, 0x51, 0xab, 0xb7, 0x64, 0xa5, 0x9e, 0x93, 0xef, 0xc3, 0x1e, - 0x5c, 0x59, 0xab, 0xd5, 0x38, 0x65, 0xd3, 0x9d, 0x5b, 0x3d, 0xa2, 0xdf, 0x40, 0x7b, 0xea, 0xde, - 0x03, 0xfa, 0xd6, 0x15, 0xcc, 0xa2, 0xaa, 0x81, 0xde, 0x51, 0xc9, 0x40, 0x9d, 0x30, 0x2e, 0xee, - 0x97, 0x0f, 0xb1, 0x3b, 0xc3, 0x43, 0x1c, 0x24, 0x6e, 0x79, 0x36, 0xf2, 0xcb, 0xd9, 0x5a, 0xa8, - 0xc3, 0x10, 0x13, 0x6b, 0x27, 0x71, 0x8e, 0x1c, 0xda, 0x00, 0x53, 0xab, 0x56, 0xb1, 0xcc, 0x86, - 0xbe, 0xbb, 0x5f, 0x26, 0x39, 0x86, 0xb0, 0xc0, 0xf1, 0x94, 0x18, 0x34, 0x95, 0x5a, 0x49, 0xd8, - 0xd6, 0xda, 0x4c, 0x9f, 0xbc, 0xa3, 0xfa, 0x3b, 0x35, 0x19, 0x5a, 0x35, 0x73, 0x68, 0xb5, 0xa1, - 0x2d, 0xce, 0x1a, 0x9b, 0x4e, 0xa6, 0x33, 0xef, 0xd0, 0xe3, 0xf9, 0x1b, 0x04, 0x6e, 0xe2, 0x0c, - 0xf7, 0x05, 0x64, 0xdc, 0xef, 0x42, 0x3e, 0x60, 0x8a, 0x33, 0xe8, 0x9b, 0x81, 0x4c, 0x43, 0x7e, - 0x92, 0x43, 0x90, 0x9f, 0x6c, 0x05, 0xf0, 0x77, 0xc2, 0xae, 0xf1, 0xfc, 0x6c, 0xbe, 0xe9, 0x62, - 0xaf, 0x3c, 0xa9, 0xf5, 0x82, 0xcd, 0x64, 0x5e, 0xe3, 0x26, 0xbd, 0x5a, 0xe5, 0x8d, 0x1f, 0x57, - 0x21, 0xe0, 0xac, 0x02, 0xcc, 0x8a, 0x38, 0xc8, 0x73, 0x92, 0x4d, 0x6f, 0xdb, 0x5c, 0x34, 0x4f, - 0xe2, 0xeb, 0x31, 0x3c, 0x80, 0x43, 0xfc, 0xc1, 0x3b, 0x45, 0xb9, 0x88, 0x16, 0x39, 0x23, 0xc0, - 0x42, 0x47, 0x83, 0xdd, 0xc3, 0xf9, 0x95, 0x14, 0xe6, 0x00, 0xf1, 0x39, 0x3a, 0x07, 0x9f, 0x2c, - 0xec, 0xa4, 0xc8, 0xbe, 0x89, 0x4c, 0xb9, 0x77, 0x21, 0x4e, 0xd9, 0xf5, 0xdd, 0xa6, 0xa9, 0x2d, - 0x9a, 0x3b, 0x2c, 0x53, 0x6a, 0x4d, 0x1f, 0x2c, 0xe8, 0x66, 0x49, 0xc9, 0xd7, 0xb7, 0xab, 0xde, - 0x30, 0xd3, 0x0c, 0x14, 0x9a, 0x69, 0x6a, 0x5b, 0x7e, 0xaa, 0x43, 0xcc, 0x22, 0xcf, 0xb4, 0x6c, - 0x7b, 0x6e, 0x44, 0x73, 0x87, 0x99, 0x5a, 0x20, 0x3c, 0x35, 0x7b, 0x5d, 0x1a, 0xd6, 0xd4, 0xb4, - 0x4a, 0x73, 0x36, 0x87, 0xbc, 0x41, 0x9f, 0x08, 0x53, 0x61, 0xd0, 0x6c, 0xf6, 0x14, 0xed, 0xbe, - 0xb9, 0x1b, 0x77, 0x2b, 0xec, 0x38, 0x4f, 0xec, 0x8d, 0x54, 0x02, 0x3e, 0xca, 0x90, 0xdf, 0xd5, - 0xdc, 0xb0, 0x8e, 0x03, 0xb9, 0x1d, 0xe8, 0x19, 0xf6, 0xbd, 0x7c, 0x0f, 0xde, 0x25, 0xd1, 0xa5, - 0x02, 0xb6, 0x8f, 0xf3, 0x63, 0x54, 0x1e, 0xe2, 0x9a, 0x9b, 0xb2, 0xff, 0x8c, 0xf5, 0x8e, 0xfc, - 0x0c, 0x21, 0xfe, 0x80, 0xf3, 0xe7, 0x10, 0x67, 0x49, 0x58, 0xdf, 0x78, 0xac, 0x6f, 0x53, 0x1c, - 0x87, 0x60, 0x3f, 0xd9, 0xdc, 0xe1, 0xfc, 0x4d, 0x84, 0xfc, 0x0d, 0xce, 0xd7, 0x13, 0x19, 0x14, - 0xbe, 0x2b, 0x2c, 0xee, 0x97, 0x34, 0x32, 0xd6, 0x84, 0xd8, 0x16, 0xfc, 0xfc, 0x14, 0x68, 0xc4, - 0xe0, 0x77, 0x1e, 0xf6, 0x2f, 0x77, 0xcb, 0x8a, 0x21, 0xb0, 0x7d, 0xc8, 0x89, 0xdc, 0x3a, 0xf3, - 0xd6, 0x37, 0xf8, 0x8d, 0x88, 0x45, 0x89, 0x31, 0x6a, 0x0a, 0xa5, 0x7a, 0x9c, 0x32, 0xc9, 0xb8, - 0xc8, 0x1a, 0x3c, 0xbf, 0x67, 0xbc, 0xf7, 0x77, 0xd3, 0xe9, 0xd7, 0xa7, 0x43, 0x16, 0xfc, 0xf4, - 0xfb, 0xbb, 0x83, 0xde, 0x6b, 0x96, 0x83, 0x7f, 0x01, 0xcf, 0x37, 0xc8, 0x0d, 0x97, 0x7d, 0x05, - 0xec, 0x90, 0x62, 0x0d, 0x43, 0xf9, 0x05, 0xff, 0x04, 0xf6, 0xc1, 0xc5, 0xc6, 0xa1, 0x85, 0x91, - 0x2d, 0x83, 0x19, 0x42, 0x17, 0xf3, 0xba, 0xbd, 0xff, 0x06, 0x19, 0x0c, 0xfd, 0xf7, 0x0c, 0xf2, - 0x9d, 0x59, 0x18, 0x37, 0x42, 0x5f, 0xcc, 0x43, 0x33, 0x9a, 0xbf, 0xb7, 0xb7, 0x7c, 0x2c, 0xb7, - 0x31, 0xff, 0xbb, 0xc7, 0x6d, 0x3c, 0x5e, 0xdb, 0xe2, 0x3c, 0x42, 0x04, 0xdf, 0x3e, 0x6d, 0xf5, - 0x6c, 0x09, 0x74, 0x46, 0x98, 0x8e, 0x21, 0x6e, 0xea, 0x97, 0xad, 0x66, 0xa2, 0xdd, 0xec, 0xcb, - 0x1a, 0xe4, 0x81, 0x34, 0xe4, 0x80, 0x91, 0x9d, 0xa5, 0x8f, 0xdb, 0x59, 0xd6, 0x59, 0xd4, 0xe0, - 0x33, 0x38, 0xb2, 0xfb, 0xd5, 0xc6, 0xb3, 0x6a, 0x1d, 0x4f, 0xad, 0x99, 0x6f, 0x4f, 0xdd, 0xac, - 0xac, 0xa2, 0x91, 0xa4, 0x8e, 0x65, 0x88, 0x0b, 0xb7, 0x31, 0xec, 0xd3, 0xbd, 0xa2, 0xf6, 0x9a, - 0x46, 0x95, 0xa9, 0x3f, 0x06, 0x3f, 0x50, 0xed, 0xec, 0x72, 0xf7, 0x03, 0x80, 0x71, 0xda, 0x06, - 0x36, 0x5b, 0xe0, 0x23, 0xa2, 0xbd, 0xe4, 0x51, 0xc5, 0x1c, 0x2e, 0x2a, 0x53, 0xcf, 0xa2, 0x56, - 0x4b, 0x59, 0x82, 0x68, 0x29, 0x94, 0x27, 0xb0, 0xe1, 0x79, 0x2c, 0x4f, 0x38, 0xbe, 0x13, 0xae, - 0xc5, 0xa1, 0x87, 0x78, 0x68, 0xb6, 0xf7, 0xfd, 0x24, 0x36, 0x00, 0x3b, 0x36, 0x84, 0xf8, 0x91, - 0x06, 0x7a, 0x99, 0xc2, 0xa0, 0xd3, 0xea, 0x59, 0x86, 0x29, 0xb1, 0x79, 0xb0, 0xb1, 0xe3, 0x36, - 0xc4, 0x55, 0x83, 0xf2, 0xbc, 0x98, 0x6d, 0xd2, 0xbc, 0x2e, 0x71, 0xc2, 0xf9, 0x99, 0x0c, 0xa7, - 0x5e, 0xe6, 0x0c, 0x5b, 0x9d, 0x97, 0xd9, 0x2e, 0x3f, 0x65, 0xa5, 0xbe, 0x63, 0xd7, 0x59, 0xa9, - 0xce, 0x11, 0x9f, 0x02, 0x3e, 0x88, 0xcd, 0x52, 0x03, 0xa9, 0x3d, 0x43, 0x5b, 0x11, 0x95, 0x20, - 0x0e, 0xc5, 0x76, 0x0b, 0xf0, 0x1b, 0xb0, 0x1b, 0x88, 0x2f, 0xb7, 0xda, 0xac, 0xd9, 0xd5, 0xb2, - 0x20, 0x97, 0xd9, 0xf2, 0x4e, 0x64, 0x3f, 0xc4, 0xe3, 0x0b, 0x36, 0x6a, 0xe6, 0x3c, 0x09, 0x90, - 0x4a, 0x08, 0xf1, 0x3b, 0xf5, 0xee, 0xc5, 0xbe, 0x50, 0x2e, 0xf3, 0xc3, 0x55, 0x03, 0xe2, 0xa5, - 0xe3, 0xb6, 0x12, 0xdb, 0x99, 0x79, 0x27, 0xa8, 0x36, 0x93, 0x6b, 0xe1, 0xfd, 0xf9, 0x3d, 0xf6, - 0xd3, 0x3d, 0x79, 0xdd, 0x98, 0x0f, 0x65, 0xbc, 0xee, 0xa8, 0x8d, 0x2a, 0xee, 0xc1, 0x56, 0x49, - 0x20, 0xdf, 0x1c, 0xc2, 0xf5, 0x1a, 0x03, 0xe1, 0x7a, 0x85, 0x81, 0x9a, 0xa4, 0x4c, 0x1e, 0x5c, - 0x93, 0x6f, 0x17, 0x75, 0x49, 0x0d, 0x22, 0xf4, 0x59, 0xe1, 0x59, 0x4e, 0x73, 0x84, 0x92, 0x38, - 0xdb, 0xd7, 0x2d, 0xe0, 0xec, 0xc3, 0xec, 0x49, 0x7b, 0x77, 0xd2, 0x1e, 0x9c, 0xb4, 0x71, 0xec, - 0x1a, 0xe6, 0x44, 0x53, 0xbe, 0xd3, 0xea, 0x42, 0xfc, 0xc8, 0x07, 0x6a, 0xcd, 0x98, 0x57, 0x39, - 0x34, 0xb7, 0x2a, 0x4c, 0x3c, 0x16, 0xe6, 0x4f, 0x8b, 0xbd, 0xfc, 0xaa, 0x6a, 0x65, 0x2b, 0x87, - 0xf2, 0xb6, 0x46, 0xd0, 0x1e, 0x92, 0xf6, 0xe2, 0x20, 0x7f, 0x5c, 0xc0, 0x7a, 0xa3, 0x41, 0x29, - 0x47, 0x75, 0xe2, 0xbc, 0x0a, 0x64, 0xb2, 0xc4, 0x0e, 0x05, 0xae, 0x33, 0x14, 0x61, 0xee, 0x49, - 0x0d, 0xe1, 0xe9, 0xde, 0xe0, 0x40, 0x66, 0x09, 0x4c, 0xcf, 0x7a, 0xdf, 0x1e, 0xe4, 0x37, 0xdc, - 0x0f, 0xc3, 0xef, 0xbb, 0xf0, 0x39, 0x94, 0xed, 0xad, 0x1c, 0xd5, 0x03, 0x42, 0x7a, 0x8e, 0x51, - 0x9d, 0xc6, 0xf5, 0xd8, 0x12, 0xb6, 0x67, 0x01, 0xae, 0x1b, 0x81, 0x1d, 0x93, 0x34, 0x1b, 0xe8, - 0xb3, 0xad, 0x06, 0x7c, 0xbf, 0x0c, 0xa1, 0x4d, 0xa6, 0x5e, 0xba, 0xaf, 0xd7, 0x11, 0xf7, 0xcc, - 0x17, 0x8c, 0x9e, 0x11, 0xcc, 0x4a, 0x7d, 0x49, 0x1c, 0xa2, 0xea, 0xd0, 0x69, 0xe7, 0x1c, 0x07, - 0x55, 0xe8, 0xde, 0x3b, 0xdb, 0x2a, 0xa1, 0xcd, 0xbc, 0xd4, 0x15, 0xc3, 0x50, 0xb9, 0xbb, 0xa6, - 0x2c, 0xa9, 0xa1, 0xa0, 0x95, 0x47, 0x4a, 0xab, 0xa8, 0xcb, 0x97, 0x44, 0x88, 0x6f, 0x84, 0x0d, - 0xcf, 0xd6, 0x83, 0xca, 0xfb, 0xfb, 0xbb, 0x7b, 0xcf, 0x38, 0x88, 0x2b, 0x50, 0x85, 0x77, 0x88, - 0x73, 0x20, 0x74, 0xaa, 0xf6, 0x43, 0xa4, 0xe6, 0xc8, 0x68, 0x3f, 0x63, 0x7b, 0x5b, 0x2a, 0x93, - 0xfa, 0xa2, 0x86, 0x9f, 0x7b, 0x8c, 0x10, 0x5b, 0x44, 0x42, 0x80, 0x6c, 0xc4, 0x79, 0xa4, 0x72, - 0xcb, 0xf6, 0xc0, 0xbe, 0x76, 0xc0, 0xee, 0x6e, 0x64, 0x0b, 0xfc, 0xef, 0x13, 0x82, 0x3c, 0x8a, - 0xc7, 0xf9, 0x54, 0xe8, 0x8b, 0x2c, 0x9c, 0x63, 0x40, 0x0c, 0xd6, 0x11, 0x61, 0x3f, 0x6c, 0x8f, - 0xd1, 0x61, 0x7e, 0x09, 0xda, 0x10, 0x6b, 0xd6, 0x21, 0x36, 0x7b, 0x53, 0x28, 0x09, 0x6d, 0x85, - 0x02, 0x8e, 0x13, 0xbd, 0x99, 0x68, 0xd4, 0x5d, 0x61, 0x07, 0xf6, 0xf7, 0x1d, 0x72, 0x2b, 0x6c, - 0x4b, 0x03, 0x88, 0xc5, 0x2c, 0x88, 0xe0, 0x7a, 0x35, 0x98, 0x2b, 0x03, 0xaf, 0x15, 0xe5, 0x7d, - 0x2b, 0x6e, 0xc1, 0x36, 0xbf, 0x2b, 0x3d, 0xf0, 0xb7, 0xd6, 0x9b, 0x22, 0x9a, 0xed, 0x67, 0x84, - 0x5a, 0xef, 0x14, 0xf6, 0x19, 0x30, 0x8e, 0x6b, 0x6a, 0xca, 0xa4, 0xf0, 0xae, 0x58, 0xa3, 0xfb, - 0x77, 0x46, 0x9e, 0x89, 0x46, 0x54, 0x84, 0x14, 0x4a, 0x40, 0x8f, 0x16, 0x42, 0x1b, 0x19, 0xc7, - 0x7e, 0x55, 0xc4, 0x69, 0x61, 0x39, 0x9b, 0xf8, 0x05, 0x91, 0xe0, 0x19, 0xc6, 0x07, 0xd7, 0xf3, - 0x59, 0x38, 0xd3, 0x80, 0xc4, 0x6a, 0x90, 0x0f, 0x7c, 0x20, 0xcf, 0xda, 0x21, 0x07, 0xe2, 0xce, - 0xb2, 0x02, 0x67, 0xe1, 0xed, 0x06, 0xce, 0xe1, 0x21, 0xb6, 0x02, 0x25, 0xab, 0x74, 0x16, 0xc6, - 0x5e, 0x26, 0x65, 0xbe, 0x53, 0x80, 0x58, 0xa2, 0x53, 0x35, 0x9e, 0xee, 0xad, 0x5d, 0x94, 0xb3, - 0xb3, 0x51, 0x4e, 0x3f, 0x3b, 0x69, 0x1b, 0x22, 0x10, 0x63, 0xf0, 0xcc, 0x80, 0xbf, 0xc1, 0x7e, - 0xb2, 0x32, 0xab, 0x15, 0x3a, 0xfc, 0x73, 0x08, 0x6f, 0x53, 0x24, 0xf0, 0x7b, 0x4c, 0x04, 0xdf, - 0x0c, 0x9c, 0x36, 0xa2, 0x75, 0x1e, 0x68, 0x55, 0xde, 0x4c, 0x3b, 0xa0, 0xfc, 0xf7, 0xed, 0x99, - 0x96, 0x91, 0x3b, 0xc6, 0x20, 0x6c, 0x83, 0x9d, 0x9f, 0x0d, 0x49, 0x1b, 0xe1, 0x00, 0x9a, 0x5b, - 0x53, 0x86, 0xd1, 0x56, 0xd0, 0x76, 0x1e, 0xd2, 0x07, 0xfc, 0x35, 0xc8, 0x63, 0x0f, 0xb1, 0x1a, - 0x12, 0x03, 0x94, 0x45, 0x25, 0xe2, 0xbf, 0x71, 0x1e, 0x5d, 0xc2, 0x3e, 0x15, 0xf3, 0xbb, 0x29, - 0xc9, 0xa4, 0xdd, 0xdc, 0x68, 0x55, 0x88, 0xb9, 0x31, 0xbf, 0x3f, 0x52, 0x17, 0xe8, 0x61, 0x79, - 0xa8, 0xf5, 0xb4, 0x01, 0x1b, 0xf0, 0x46, 0x9b, 0xa7, 0x9f, 0xeb, 0x43, 0x08, 0xad, 0x81, 0x7f, - 0x16, 0x4f, 0x17, 0x7b, 0x7c, 0xf0, 0xd4, 0xeb, 0x05, 0x4b, 0x43, 0x28, 0xdd, 0xbf, 0xef, 0xae, - 0xd8, 0xa5, 0xa8, 0xcd, 0x01, 0x8f, 0x47, 0x78, 0x0d, 0xaa, 0x6d, 0x00, 0x4e, 0x91, 0xf2, 0x6a, - 0x8a, 0x22, 0x55, 0x96, 0x13, 0xbb, 0x60, 0xf7, 0x7a, 0x9b, 0x26, 0x35, 0xf0, 0x8a, 0xbd, 0x12, - 0xcd, 0x5a, 0x65, 0x99, 0xad, 0x43, 0x5e, 0xd1, 0xe9, 0x16, 0x31, 0x8c, 0x55, 0x83, 0x96, 0xc1, - 0x76, 0x48, 0x0a, 0xb4, 0x57, 0x04, 0x26, 0x0d, 0x3c, 0x6b, 0xd3, 0x7e, 0xbc, 0x8e, 0x84, 0xfa, - 0x20, 0x2f, 0x6b, 0x2c, 0x2f, 0x58, 0x7f, 0x24, 0x84, 0x9f, 0xf5, 0xf9, 0x60, 0x97, 0x6b, 0x60, - 0xb7, 0xcb, 0x9c, 0x24, 0x54, 0x21, 0x17, 0x64, 0x5b, 0xf3, 0xd1, 0xbd, 0xd1, 0x2e, 0x40, 0x7c, - 0xca, 0x3f, 0x51, 0x0e, 0xd6, 0xa1, 0x0a, 0xea, 0x98, 0x36, 0xe4, 0x68, 0x4f, 0x0a, 0xea, 0x7a, - 0x8c, 0x89, 0x78, 0xb0, 0x81, 0xeb, 0x7b, 0xa6, 0x37, 0x0c, 0x55, 0x2b, 0xc0, 0xf5, 0x5e, 0x1a, - 0xe2, 0x03, 0xd0, 0x07, 0xd0, 0x22, 0x2e, 0x0c, 0x0d, 0x2c, 0xa0, 0xe1, 0xa0, 0x16, 0x68, 0x6c, - 0x13, 0x3f, 0x77, 0x01, 0xbd, 0x07, 0xba, 0x64, 0xd9, 0x5e, 0xf8, 0x5e, 0x0b, 0x9a, 0xcd, 0x76, - 0x4f, 0x7c, 0xee, 0x2c, 0x46, 0xf7, 0x5e, 0x35, 0x60, 0x8d, 0x36, 0x2d, 0xa2, 0x4d, 0x31, 0xeb, - 0x8c, 0xdb, 0xf7, 0x06, 0x3f, 0x64, 0x5b, 0x4b, 0xed, 0xb9, 0x0f, 0xb1, 0xb9, 0x39, 0xea, 0xa1, - 0x76, 0xd7, 0x78, 0x76, 0x2c, 0x88, 0xb8, 0x2a, 0xd5, 0x7b, 0x06, 0x42, 0x70, 0xaa, 0xc5, 0x67, - 0x1c, 0x55, 0x62, 0xeb, 0xbb, 0x01, 0x3d, 0xee, 0x31, 0x15, 0xd4, 0xf5, 0x5d, 0x3f, 0xae, 0xc3, - 0x97, 0x07, 0x58, 0x1f, 0x5c, 0x7c, 0x3e, 0x60, 0xb6, 0x73, 0x54, 0x17, 0xeb, 0x48, 0xa1, 0x2c, - 0x83, 0x5f, 0x3a, 0xab, 0x3b, 0x6f, 0x44, 0xbb, 0x89, 0xeb, 0x29, 0x01, 0xf0, 0x6f, 0xa3, 0x65, - 0xcb, 0x97, 0xea, 0x3a, 0x27, 0x6d, 0xe6, 0x6d, 0xf1, 0xd6, 0xae, 0x1d, 0x7e, 0x61, 0xcf, 0xc8, - 0xff, 0x4e, 0x4f, 0xfc, 0x71, 0xdc, 0x6e, 0x3c, 0xaf, 0x6b, 0x27, 0x6b, 0x88, 0xff, 0xe7, 0x3a, - 0x38, 0x9e, 0x34, 0x20, 0xcb, 0x23, 0xcf, 0xaf, 0x38, 0x19, 0xeb, 0xa2, 0xdd, 0x0c, 0x2a, 0x60, - 0xa6, 0xa4, 0x22, 0x65, 0x94, 0xd6, 0xed, 0x61, 0x8e, 0x0d, 0x76, 0x61, 0xbd, 0x3d, 0x7a, 0xfe, - 0x00, 0x4e, 0x8a, 0x5b, 0xe3, 0x67, 0x4b, 0x85, 0x00, 0x47, 0x63, 0x28, 0xa4, 0xf1, 0x56, 0xe3, - 0xb0, 0x59, 0x68, 0x8b, 0x3d, 0xbe, 0x8d, 0xaa, 0x10, 0x87, 0xa2, 0x62, 0x50, 0x14, 0x8b, 0xd1, - 0x7c, 0x05, 0xcf, 0xa7, 0x25, 0x32, 0x1f, 0xf6, 0x98, 0xb3, 0x20, 0xe3, 0xdc, 0xa6, 0xb4, 0xa3, - 0x70, 0x5c, 0xda, 0x16, 0x25, 0x96, 0xee, 0xed, 0xa8, 0x70, 0x7d, 0x64, 0x6f, 0x13, 0xf4, 0x6c, - 0x84, 0x76, 0x65, 0x56, 0x0e, 0x34, 0x5b, 0x08, 0x6b, 0x88, 0x10, 0x93, 0x13, 0x5d, 0x61, 0x04, - 0xe8, 0x83, 0x78, 0x94, 0x11, 0xb7, 0x1a, 0x8e, 0x05, 0x18, 0xcc, 0x7b, 0xac, 0x0f, 0x58, 0x87, - 0xca, 0x38, 0x3e, 0x08, 0xb4, 0x1d, 0x2a, 0xac, 0xb6, 0xe6, 0x6c, 0x57, 0x55, 0xb4, 0x61, 0xd1, - 0xb4, 0xd4, 0x7a, 0x5b, 0x7c, 0x53, 0x36, 0xbb, 0x6d, 0x1d, 0x22, 0x55, 0xf8, 0x3c, 0x56, 0x36, - 0xb3, 0x6d, 0x5d, 0x71, 0x9c, 0xe2, 0xc6, 0x1a, 0x54, 0xdb, 0xc2, 0xfb, 0x16, 0xf2, 0xdc, 0x3e, - 0xcc, 0xaf, 0x28, 0x9a, 0x56, 0x34, 0xdd, 0xfa, 0x77, 0xd7, 0x02, 0x76, 0xe5, 0x13, 0xfe, 0xe7, - 0x10, 0x2f, 0x01, 0x45, 0xd9, 0xc1, 0xc7, 0xe5, 0xe0, 0x43, 0x36, 0xb0, 0x17, 0xd5, 0x50, 0xe2, - 0xba, 0xe9, 0xf4, 0xa4, 0x3d, 0xc0, 0x36, 0x55, 0xe8, 0xe5, 0x58, 0xb0, 0xdb, 0xa7, 0xb2, 0xf0, - 0xd6, 0x93, 0x13, 0x6d, 0xc5, 0x8a, 0xeb, 0x08, 0x51, 0xdd, 0x60, 0x7c, 0xdc, 0xf6, 0x83, 0xbd, - 0x1f, 0xa7, 0x5c, 0x6f, 0x1f, 0x43, 0xea, 0xb4, 0xcf, 0x54, 0xd6, 0x79, 0xb1, 0x62, 0xcb, 0xff, - 0xd5, 0x38, 0xd5, 0x28, 0x77, 0x38, 0xc9, 0x92, 0x48, 0x1d, 0xe2, 0x9d, 0xba, 0x57, 0x10, 0x23, - 0x97, 0xc0, 0x5f, 0x2e, 0x50, 0x09, 0xd7, 0xfe, 0xf9, 0x0f, 0x3d, 0xc3, 0x60, 0x37, 0x52, 0x1f, - 0x62, 0x78, 0x1c, 0x17, 0x2e, 0x44, 0xe9, 0xf8, 0x19, 0x06, 0xa6, 0x6b, 0x58, 0x73, 0x19, 0x72, - 0x52, 0xa9, 0xb8, 0x13, 0xe9, 0x79, 0xaf, 0xcc, 0x9e, 0xc4, 0xec, 0xc6, 0xbc, 0x56, 0x63, 0x9d, - 0x37, 0x01, 0x12, 0x13, 0x88, 0x99, 0x25, 0x81, 0x0f, 0xde, 0x6b, 0xdd, 0x61, 0x16, 0x24, 0x5a, - 0x2c, 0x75, 0x59, 0xaf, 0xd5, 0x9b, 0x22, 0x59, 0xc2, 0xb9, 0x65, 0x8e, 0x9a, 0x2b, 0xe5, 0x8e, - 0x32, 0x8f, 0xd6, 0x6d, 0xbc, 0xa8, 0xc6, 0x32, 0xdc, 0x35, 0x2b, 0xc8, 0x6b, 0x70, 0xc3, 0xb6, - 0x64, 0xe5, 0x75, 0x69, 0xde, 0x15, 0xa8, 0xb6, 0x20, 0xf1, 0x3d, 0x0d, 0x72, 0x5d, 0xc7, 0x57, - 0x4c, 0xc7, 0x6b, 0x06, 0x41, 0xa3, 0x33, 0x93, 0xb2, 0xbd, 0x20, 0x7a, 0x7e, 0x05, 0xf1, 0x0b, - 0xc9, 0x77, 0xf0, 0xf3, 0x3b, 0xdc, 0x27, 0x69, 0xbd, 0x9a, 0x24, 0xf7, 0x6a, 0x10, 0x03, 0x21, - 0x49, 0x1c, 0x80, 0x7c, 0xaf, 0xf1, 0xf3, 0x0d, 0x90, 0xeb, 0xd2, 0xfb, 0xbd, 0x55, 0xa1, 0xd6, - 0xb3, 0xfb, 0x7b, 0x7e, 0xb4, 0x44, 0xbd, 0x66, 0x0e, 0x9c, 0xd4, 0xb4, 0x9e, 0x2b, 0x3c, 0x75, - 0xe5, 0x45, 0x61, 0xd6, 0x75, 0x58, 0xdf, 0x83, 0x98, 0xa4, 0x76, 0x3f, 0x41, 0xdd, 0x5d, 0xbd, - 0x62, 0xf0, 0x23, 0x6a, 0x35, 0xb8, 0xcf, 0x66, 0x2a, 0x19, 0x7d, 0xc3, 0xf9, 0x2e, 0xcb, 0x3e, - 0xf9, 0x41, 0xe8, 0xca, 0xc3, 0x52, 0x20, 0x5b, 0x7b, 0xcb, 0xe7, 0x36, 0x83, 0xa0, 0x58, 0x7c, - 0x86, 0xbc, 0x30, 0x7e, 0x00, 0x99, 0x31, 0xb8, 0x75, 0x86, 0x3c, 0x93, 0x2c, 0xa9, 0xa8, 0x4e, - 0x81, 0xdd, 0x28, 0x45, 0x71, 0x39, 0x79, 0x06, 0x23, 0x24, 0x9e, 0x42, 0x87, 0xcf, 0x33, 0x77, - 0x6d, 0xaa, 0x89, 0x12, 0x0f, 0x30, 0xef, 0xc5, 0xcb, 0xf7, 0x0c, 0x38, 0xe7, 0xe2, 0x83, 0x56, - 0xbc, 0x8e, 0xc1, 0x0f, 0xee, 0x9a, 0x32, 0x8c, 0x73, 0x1d, 0xdc, 0x56, 0x70, 0x5b, 0x20, 0x4f, - 0xae, 0x69, 0xdc, 0xae, 0x07, 0xd0, 0x2e, 0xe3, 0x71, 0xe4, 0xee, 0xdb, 0x9c, 0x87, 0xe7, 0xbb, - 0x61, 0x31, 0x8a, 0xdc, 0x6d, 0xc0, 0xf3, 0x07, 0xfb, 0xf5, 0x75, 0x3c, 0x5e, 0x52, 0xf6, 0x6d, - 0xb2, 0x9e, 0x27, 0xfb, 0x55, 0xf7, 0xf0, 0x39, 0x42, 0x08, 0x02, 0xef, 0xd0, 0x46, 0x87, 0x36, - 0x7b, 0x58, 0x5f, 0xe3, 0xe3, 0xf5, 0xe1, 0x7e, 0x04, 0x5e, 0x38, 0xfe, 0x1e, 0xe2, 0x17, 0x9d, - 0xc8, 0xc1, 0x46, 0x4f, 0xc7, 0xab, 0x55, 0x83, 0x05, 0x3b, 0x2a, 0xb0, 0x2d, 0x04, 0xe1, 0xf4, - 0x2c, 0xe0, 0x26, 0xa8, 0x51, 0x41, 0x3b, 0xe0, 0x37, 0x6a, 0x67, 0x58, 0xe4, 0xf0, 0x02, 0xea, - 0xce, 0x59, 0x29, 0x28, 0xcb, 0x86, 0xe2, 0xb1, 0x6a, 0x50, 0x11, 0xd1, 0xdb, 0x3b, 0x0b, 0xe6, - 0xa4, 0x6d, 0x8c, 0x0d, 0x36, 0x3b, 0xac, 0x6e, 0x0c, 0x63, 0xcb, 0xd5, 0x0c, 0x61, 0x85, 0x66, - 0x1e, 0xd7, 0xc3, 0x46, 0xdb, 0xea, 0x73, 0x7d, 0xa7, 0xe6, 0x22, 0x67, 0xc5, 0x39, 0xc3, 0xba, - 0x67, 0xec, 0xf9, 0xf9, 0x8e, 0xca, 0x1e, 0x29, 0xc8, 0x91, 0x1f, 0xe3, 0x12, 0xa5, 0xc9, 0x4f, - 0x0b, 0xd5, 0x73, 0x07, 0xfe, 0x48, 0xe1, 0x55, 0x0d, 0x74, 0x58, 0x57, 0x45, 0xa5, 0x04, 0xff, - 0x02, 0x18, 0x87, 0x38, 0x2f, 0x6e, 0x63, 0xc3, 0x4e, 0x1e, 0x32, 0xc7, 0x6d, 0x5c, 0x4f, 0x00, - 0x85, 0xde, 0xb7, 0x71, 0xbd, 0x8f, 0xa3, 0xf7, 0x6d, 0x48, 0x71, 0xc8, 0x73, 0x3a, 0xec, 0x0b, - 0x58, 0x7c, 0x95, 0x83, 0xf0, 0x48, 0x38, 0xb4, 0x0d, 0xc0, 0xa7, 0xe4, 0x1c, 0xda, 0x01, 0x8c, - 0x73, 0xf3, 0x7d, 0x3b, 0xbc, 0x44, 0x74, 0x18, 0x87, 0xfd, 0xfa, 0xb8, 0x24, 0xb0, 0x6f, 0x1b, - 0x78, 0x7e, 0x71, 0xdf, 0x86, 0xfd, 0xb0, 0x01, 0x62, 0xc0, 0x65, 0x33, 0xa8, 0x62, 0xf5, 0xdf, - 0x40, 0x7b, 0xd4, 0xfe, 0xf3, 0x4a, 0x28, 0xf1, 0x2b, 0x11, 0xb1, 0x7d, 0x54, 0x91, 0x91, 0x66, - 0xb0, 0x3b, 0x54, 0x99, 0xa3, 0x51, 0xc0, 0xae, 0xf0, 0xe9, 0x45, 0x09, 0xad, 0x50, 0x89, 0x8d, - 0xd7, 0xc4, 0xef, 0xdd, 0xb7, 0xfe, 0x98, 0x19, 0x55, 0xca, 0x5b, 0x04, 0xc9, 0xc3, 0x9b, 0xc4, - 0xda, 0xa8, 0x2a, 0xe3, 0x20, 0x7e, 0x8a, 0xaa, 0xb5, 0x78, 0x4e, 0x65, 0x94, 0x01, 0xfb, 0x5a, - 0x19, 0x5b, 0xa3, 0x85, 0xb2, 0x1d, 0x0e, 0x3a, 0xd6, 0x1b, 0xc7, 0x9a, 0x7a, 0x97, 0xad, 0x0d, - 0x33, 0xcf, 0xcd, 0x51, 0xe6, 0x79, 0x45, 0xea, 0xeb, 0x95, 0x22, 0x1a, 0x19, 0x2c, 0x8d, 0xf7, - 0x7a, 0x0b, 0x58, 0x0b, 0x55, 0x72, 0x18, 0xde, 0x16, 0x55, 0x78, 0x34, 0x46, 0xb8, 0x2d, 0xe1, - 0xca, 0xab, 0x89, 0xaa, 0x73, 0xfc, 0x5e, 0x43, 0x20, 0x05, 0x80, 0x5b, 0x93, 0xac, 0x23, 0x38, - 0xe2, 0x2b, 0x2f, 0x38, 0x8f, 0xf8, 0xd8, 0xcf, 0x5d, 0x6a, 0xe2, 0xb8, 0x0b, 0xd5, 0xbf, 0xfd, - 0x84, 0xef, 0x08, 0x7d, 0xba, 0xfb, 0xfc, 0xf3, 0x4f, 0x7f, 0xfd, 0xfc, 0x13, 0xbe, 0xaf, 0x86, - 0x2f, 0x1c, 0xf9, 0xce, 0x4a, 0x9b, 0xa6, 0x55, 0x72, 0x57, 0xe9, 0x25, 0xb5, 0x50, 0x6d, 0x73, - 0xb9, 0xb2, 0xc8, 0xcd, 0xa2, 0x70, 0xde, 0xc8, 0x19, 0x6f, 0xf1, 0xbc, 0x85, 0xea, 0x1a, 0x26, - 0xcc, 0xa0, 0xa1, 0x1b, 0x5f, 0x67, 0x32, 0x5c, 0x67, 0x65, 0x8f, 0xc3, 0x6b, 0x66, 0x2f, 0xa9, - 0x5f, 0x19, 0x86, 0xf9, 0x7c, 0x72, 0x7b, 0xa9, 0xaa, 0x5b, 0x6b, 0xdd, 0x37, 0x35, 0xf5, 0x21, - 0xa5, 0xe8, 0xee, 0x58, 0xb5, 0xe1, 0x83, 0xa7, 0xda, 0x5e, 0xda, 0xd3, 0x5d, 0x73, 0x12, 0xcf, - 0xf6, 0xcc, 0x9d, 0xfe, 0x92, 0x62, 0x9e, 0x96, 0x1b, 0xe8, 0x89, 0xa0, 0x05, 0x53, 0xd3, 0xd7, - 0xa1, 0xe9, 0xeb, 0x1b, 0x3f, 0xad, 0x5a, 0xa6, 0x01, 0xfb, 0x6a, 0xba, 0xed, 0xeb, 0x2e, 0x74, - 0xe2, 0x7b, 0x69, 0x73, 0xd3, 0x4f, 0x87, 0x88, 0x6b, 0xaa, 0x65, 0x39, 0x2b, 0xff, 0x25, 0x65, - 0x3b, 0xb6, 0x9e, 0x18, 0x5d, 0xc1, 0x26, 0xb0, 0x91, 0xa5, 0x6b, 0x89, 0xb1, 0x85, 0xb3, 0xbb, - 0x32, 0xe0, 0x5d, 0xec, 0xbf, 0x38, 0x37, 0xde, 0x5e, 0x5d, 0xa6, 0xa7, 0xa6, 0x31, 0x05, 0xec, - 0xa6, 0x7e, 0x4c, 0x06, 0xdf, 0x85, 0xf3, 0x2d, 0x55, 0x17, 0x70, 0x3d, 0x50, 0xf9, 0xe1, 0x40, - 0xc4, 0xa9, 0x8e, 0x67, 0xc3, 0x71, 0x69, 0xfa, 0xff, 0xc0, 0x04, 0x72, 0xf1, 0x6f, 0xdf, 0x5a, - 0x3a, 0x9e, 0x19, 0x72, 0x61, 0x62, 0x6e, 0xf4, 0x71, 0x08, 0x60, 0x99, 0xa4, 0x3d, 0x43, 0x2f, - 0x37, 0x29, 0x3a, 0x95, 0xc1, 0xaf, 0x07, 0x6a, 0xfd, 0x3a, 0x1e, 0x47, 0x93, 0x47, 0x2b, 0xdf, - 0x77, 0x6c, 0xbc, 0x02, 0x48, 0x62, 0x99, 0xb6, 0xbe, 0xc7, 0x5a, 0x5b, 0xb9, 0x1e, 0x9e, 0xbb, - 0x74, 0xcc, 0x88, 0x8c, 0x30, 0xfd, 0xd1, 0x52, 0x47, 0xba, 0xe5, 0x9d, 0x72, 0x77, 0xa9, 0x8e, - 0xc7, 0xa6, 0x6d, 0xbc, 0xa4, 0x8a, 0x47, 0xbb, 0xc1, 0x82, 0x5f, 0xf1, 0x2d, 0x41, 0xb2, 0x08, - 0xaf, 0x39, 0xc7, 0x77, 0xe4, 0xc0, 0xfe, 0x8b, 0x97, 0xd4, 0x53, 0x86, 0x70, 0xd3, 0x0d, 0x0f, - 0x9b, 0x4b, 0xb2, 0xf6, 0xd7, 0x42, 0xa1, 0x80, 0x4f, 0xee, 0xc2, 0x52, 0xdb, 0x00, 0x8e, 0x8c, - 0x01, 0xc9, 0xb5, 0xee, 0x62, 0x39, 0xb1, 0xd2, 0xae, 0x15, 0x61, 0x36, 0x72, 0x4d, 0xb2, 0x45, - 0x8c, 0x4a, 0x08, 0x03, 0x8f, 0x04, 0xae, 0xba, 0x5c, 0xea, 0xee, 0x65, 0x04, 0x7c, 0x67, 0x19, - 0x9e, 0xc1, 0xd2, 0x27, 0x7e, 0xf8, 0x29, 0x42, 0xe2, 0x58, 0x6c, 0x01, 0x8f, 0x4c, 0x26, 0x03, - 0x5d, 0xbb, 0xb4, 0x69, 0x8f, 0xf5, 0x0d, 0x90, 0x36, 0x02, 0x8f, 0x2f, 0x2d, 0x7a, 0x67, 0x17, - 0xf1, 0x3e, 0x85, 0x17, 0xf1, 0x3e, 0xed, 0x85, 0x16, 0xdf, 0xdd, 0xc3, 0xc4, 0x05, 0xbd, 0xb2, - 0x8e, 0x25, 0x39, 0x13, 0xa2, 0x8a, 0xa9, 0x9f, 0xde, 0xb3, 0x1b, 0x3a, 0xc6, 0xa6, 0xb7, 0xb4, - 0x54, 0x80, 0x65, 0xda, 0x64, 0x6c, 0x64, 0x39, 0xda, 0xfc, 0xf3, 0x81, 0xf2, 0x69, 0x42, 0x67, - 0x7c, 0xd0, 0x98, 0xda, 0x8f, 0x9e, 0x65, 0x8e, 0x41, 0x00, 0x31, 0x4a, 0x3f, 0xff, 0x84, 0x55, - 0x15, 0x4b, 0x17, 0xd6, 0xe5, 0x48, 0xd0, 0x40, 0x4d, 0xf5, 0xe1, 0x2d, 0xac, 0xbb, 0xbb, 0x24, - 0x0c, 0x8f, 0x20, 0xb8, 0x64, 0x6d, 0x92, 0xbf, 0x69, 0x06, 0xe0, 0xe3, 0x9d, 0xf2, 0xd1, 0x3e, - 0x7b, 0xd2, 0x47, 0x6a, 0xb6, 0x30, 0xc7, 0x63, 0x4b, 0xbf, 0x08, 0x6f, 0x62, 0x11, 0xaa, 0x4f, - 0x2c, 0x47, 0x85, 0x33, 0x11, 0xba, 0x5e, 0x94, 0xac, 0xa4, 0x2c, 0xc5, 0x50, 0x26, 0x13, 0xac, - 0xf0, 0x89, 0x03, 0xb8, 0x8e, 0x0f, 0xd8, 0xdf, 0xd2, 0x63, 0xdd, 0xb8, 0x8b, 0x47, 0x22, 0x66, - 0xee, 0x67, 0xa5, 0xe8, 0xc7, 0xac, 0x17, 0x6d, 0xae, 0x6f, 0x88, 0x26, 0x9c, 0x43, 0x60, 0x8a, - 0x31, 0x0c, 0xc2, 0x3e, 0x22, 0x99, 0xd7, 0x68, 0x7d, 0xf5, 0xb0, 0x58, 0xb6, 0x2d, 0x73, 0xad, - 0xe3, 0x9b, 0xba, 0x49, 0x3d, 0x0d, 0x79, 0xb9, 0x07, 0x17, 0x29, 0xd3, 0xb1, 0xda, 0x8e, 0x1c, - 0x17, 0xb8, 0x04, 0xc7, 0xdd, 0x8b, 0xa8, 0xaf, 0x8e, 0x30, 0x90, 0x0b, 0x56, 0x32, 0x14, 0xba, - 0x63, 0xd2, 0x4e, 0x4c, 0xcb, 0xc7, 0xeb, 0xc7, 0xae, 0xb3, 0x4c, 0x7b, 0x53, 0x75, 0xec, 0x04, - 0xb7, 0x44, 0xcf, 0x23, 0x4e, 0xfd, 0x4a, 0xd3, 0x74, 0x7c, 0x3c, 0x50, 0xb0, 0x6f, 0x6b, 0xde, - 0xb1, 0xec, 0x1f, 0x23, 0x1a, 0xa3, 0x76, 0xb0, 0x12, 0xe7, 0x18, 0x9a, 0xf6, 0x14, 0x8c, 0x33, - 0xe6, 0x6b, 0xc4, 0x66, 0x0c, 0x2c, 0x71, 0xc8, 0x88, 0x02, 0x49, 0x76, 0x45, 0x4c, 0xba, 0x6a, - 0xcc, 0x7f, 0xd5, 0x34, 0x2d, 0xde, 0xdd, 0x59, 0x26, 0x76, 0xdf, 0x2b, 0x37, 0x83, 0x85, 0x3e, - 0x7c, 0xa1, 0xa3, 0x4f, 0x78, 0x41, 0xea, 0xd2, 0x4f, 0x44, 0x84, 0x4b, 0x50, 0x42, 0xe3, 0x58, - 0x8c, 0x04, 0x3b, 0x3c, 0x7b, 0x26, 0x7f, 0x7e, 0xf2, 0x97, 0xa9, 0xb3, 0x0e, 0x0d, 0xc8, 0x05, - 0x0e, 0x65, 0xb3, 0xd9, 0x04, 0xea, 0xba, 0xae, 0x9f, 0x2d, 0x7f, 0xc4, 0xbe, 0x72, 0xad, 0x5f, - 0x59, 0x1f, 0x9a, 0xb7, 0x63, 0xb1, 0xc7, 0xeb, 0xbf, 0xb7, 0x28, 0xf5, 0x8b, 0xb9, 0xc0, 0x77, - 0xc4, 0x55, 0xe2, 0x39, 0xce, 0xd7, 0xe3, 0xdb, 0xda, 0x2a, 0xc8, 0x32, 0xc1, 0x3b, 0x9d, 0xb6, - 0x43, 0xa3, 0x72, 0xcc, 0xe0, 0xa8, 0x05, 0x02, 0xae, 0xdd, 0xae, 0x55, 0xf7, 0x16, 0xa6, 0xdd, - 0xfd, 0x0b, 0x8f, 0x61, 0xf1, 0x89, 0x45, 0x9a, 0x8c, 0xe2, 0xce, 0x54, 0x3a, 0x15, 0x4e, 0xf2, - 0x97, 0x0f, 0xa9, 0x02, 0x10, 0xef, 0x6e, 0xdf, 0x33, 0xf2, 0xa3, 0x9e, 0xbb, 0xbd, 0x3a, 0xa7, - 0x63, 0x09, 0x2b, 0x84, 0xb6, 0x3d, 0xea, 0x25, 0x06, 0xf7, 0x04, 0xcc, 0xe7, 0xcb, 0x96, 0xea, - 0x36, 0x81, 0x97, 0xbf, 0x79, 0x48, 0x91, 0x1d, 0xef, 0xa3, 0xc5, 0x26, 0xb4, 0xef, 0xa8, 0x3d, - 0xd2, 0x69, 0x82, 0xf5, 0xdd, 0x81, 0xf6, 0xd1, 0x65, 0xf5, 0x84, 0xfd, 0x89, 0x04, 0xf3, 0xa0, - 0x0a, 0xae, 0x8e, 0xc3, 0x96, 0xf5, 0xb9, 0x82, 0x26, 0xc9, 0x82, 0xbb, 0xf6, 0xdb, 0xdc, 0x25, - 0x9d, 0x1d, 0xc3, 0x44, 0x82, 0x33, 0x72, 0x36, 0x58, 0x8e, 0x49, 0x67, 0x28, 0xf6, 0x70, 0xf6, - 0xcd, 0x99, 0xa2, 0x63, 0x19, 0x02, 0x54, 0x82, 0x97, 0x94, 0xba, 0xf2, 0x9d, 0xcf, 0x67, 0xbe, - 0x1d, 0x8f, 0x7b, 0x9a, 0xeb, 0x58, 0x56, 0x7a, 0xa4, 0x4f, 0xd5, 0xb5, 0xe9, 0x1c, 0xd4, 0x07, - 0x9b, 0x1b, 0x7e, 0x32, 0x81, 0xb0, 0xc2, 0x4b, 0x88, 0x70, 0x7a, 0xef, 0xbd, 0xa2, 0x6d, 0x49, - 0x9b, 0xe0, 0xe5, 0x39, 0xe0, 0x0a, 0xe2, 0x20, 0x8b, 0xd8, 0xf6, 0x85, 0xe3, 0xf8, 0xd3, 0xd4, - 0x9f, 0xa9, 0xcb, 0x86, 0x33, 0x29, 0x03, 0x93, 0x87, 0x14, 0x73, 0xf7, 0xaf, 0xc7, 0xbc, 0x77, - 0x97, 0xd2, 0x55, 0x4f, 0x4f, 0x43, 0x68, 0x90, 0x8a, 0xa8, 0x9a, 0xde, 0xfb, 0xf2, 0xbd, 0xcd, - 0x86, 0x7f, 0xe9, 0xd8, 0x37, 0xc4, 0x78, 0xc5, 0xac, 0x3f, 0x38, 0x61, 0x7c, 0x38, 0xb0, 0x88, - 0x97, 0x6d, 0xd1, 0x37, 0x83, 0x9c, 0x0b, 0x1e, 0xfa, 0xaa, 0x16, 0x9e, 0x7b, 0xd5, 0xbd, 0x25, - 0x9e, 0x58, 0x3a, 0x6e, 0x13, 0x3b, 0x9e, 0x86, 0x60, 0x71, 0xe1, 0x25, 0x22, 0xc4, 0xd9, 0xca, - 0xf3, 0xcd, 0xc9, 0x36, 0x1d, 0x09, 0x4d, 0x62, 0xe4, 0xe0, 0xee, 0x31, 0x21, 0x9d, 0xa5, 0xaa, - 0x99, 0xfe, 0x16, 0x9b, 0xb0, 0xe7, 0xfc, 0x99, 0x55, 0x7b, 0xf2, 0x88, 0x78, 0x11, 0xaf, 0x96, - 0xd6, 0xd7, 0x00, 0xc2, 0x4b, 0x32, 0xf0, 0xd1, 0xf3, 0xd5, 0x2d, 0x36, 0x68, 0x49, 0x7f, 0x13, - 0x3b, 0x9a, 0x03, 0x51, 0xe2, 0x70, 0x11, 0x30, 0xd2, 0xe6, 0xdb, 0xa3, 0xa1, 0x7d, 0xd7, 0x51, - 0x5c, 0x12, 0xf2, 0x38, 0x24, 0x13, 0x39, 0xf3, 0x69, 0x88, 0xf2, 0x6b, 0xb4, 0x31, 0x13, 0x46, - 0xef, 0x30, 0x2f, 0xf3, 0x1c, 0x33, 0x26, 0x1e, 0xcb, 0xec, 0xc7, 0xf2, 0xc5, 0xfd, 0x98, 0xef, - 0xa8, 0x1e, 0xd1, 0xa0, 0xc3, 0xb9, 0x2f, 0x53, 0x3f, 0x9f, 0xcf, 0x13, 0x0d, 0xdf, 0xa4, 0x23, - 0xde, 0x3d, 0x13, 0xd6, 0x9d, 0xf8, 0xf2, 0x4b, 0xb1, 0x79, 0x24, 0xb8, 0xae, 0x3a, 0x36, 0x57, - 0x40, 0xad, 0xd0, 0x54, 0x1c, 0x54, 0xac, 0xf0, 0xcf, 0xda, 0x67, 0x12, 0x76, 0x44, 0x92, 0x50, - 0x90, 0xf2, 0xa1, 0x74, 0x5d, 0xb0, 0x3b, 0x83, 0xdb, 0x74, 0x3e, 0x34, 0x81, 0xb1, 0x1c, 0x83, - 0x28, 0x12, 0xc0, 0xe7, 0x2e, 0xeb, 0x3a, 0xbb, 0x63, 0xfa, 0x3d, 0x7a, 0x53, 0x27, 0x38, 0x22, - 0x22, 0xc6, 0x01, 0xb2, 0xa6, 0x85, 0x1a, 0xe1, 0xa8, 0x8e, 0x75, 0xd3, 0x06, 0xf9, 0xc9, 0x7b, - 0x0f, 0xc9, 0x46, 0x2a, 0x83, 0x5f, 0x5c, 0x1d, 0x9b, 0x85, 0x53, 0x98, 0xba, 0xeb, 0x3a, 0xee, - 0x19, 0xd0, 0x0b, 0x9c, 0x19, 0x65, 0xae, 0xef, 0x16, 0xc3, 0xfc, 0xf7, 0x5c, 0xdf, 0x4e, 0x5c, - 0x08, 0xd4, 0xbd, 0x78, 0x14, 0x1b, 0x4d, 0xd7, 0x59, 0xa4, 0xfe, 0x3c, 0x44, 0x09, 0xa9, 0x84, - 0x0c, 0xfc, 0x85, 0x45, 0xe5, 0x30, 0x18, 0x52, 0x27, 0x95, 0x40, 0xe5, 0xaf, 0x08, 0x72, 0x14, - 0x90, 0x46, 0xd2, 0x8e, 0xc1, 0xc6, 0x1a, 0xf6, 0xe9, 0xd3, 0x11, 0x9f, 0xd4, 0x11, 0x18, 0xac, - 0x55, 0x98, 0xc2, 0x11, 0x1b, 0x96, 0xc5, 0x10, 0xf7, 0x1b, 0x64, 0xc3, 0x08, 0x99, 0xf0, 0x8d, - 0x21, 0x9b, 0xb9, 0xb1, 0xc5, 0x20, 0x23, 0x47, 0xfa, 0x90, 0xcb, 0xe5, 0xce, 0x05, 0xeb, 0xdb, - 0xec, 0xda, 0x8b, 0x47, 0x9a, 0x89, 0x89, 0x62, 0xda, 0xcb, 0x95, 0xff, 0x1f, 0x7f, 0xbb, 0xd4, - 0x5f, 0x41, 0x2e, 0x0c, 0xfd, 0x0f, 0xe2, 0x46, 0x23, 0xdd, 0xc4, 0x09, 0x85, 0x0a, 0xdd, 0x9a, - 0x7e, 0x1a, 0xe2, 0x65, 0x32, 0xf4, 0xb1, 0x48, 0xd2, 0x09, 0xe7, 0x47, 0x5a, 0x51, 0xd8, 0x11, - 0x7d, 0xb8, 0xc8, 0xb5, 0xe3, 0xa4, 0xf0, 0x62, 0x26, 0x76, 0x86, 0xde, 0xcb, 0xc4, 0xd1, 0x56, - 0xde, 0xa5, 0x4c, 0xee, 0xe2, 0xec, 0x97, 0xbd, 0x99, 0x09, 0x53, 0x06, 0x77, 0x65, 0xdb, 0xf8, - 0x6f, 0xb6, 0xd2, 0xb0, 0xb7, 0x36, 0xc7, 0x60, 0x8e, 0xad, 0x70, 0x6c, 0xa2, 0xb3, 0x21, 0xce, - 0xe7, 0x38, 0x25, 0x59, 0xe0, 0x1a, 0x23, 0xf5, 0x96, 0x06, 0x07, 0x1d, 0xfe, 0xbf, 0xfb, 0x28, - 0x12, 0xfe, 0x74, 0xb5, 0x18, 0x1d, 0x65, 0xbd, 0xa1, 0x3e, 0xc7, 0xa8, 0x84, 0xad, 0xcb, 0x9c, - 0x3d, 0x12, 0x81, 0xd0, 0xe0, 0x9c, 0x23, 0xf9, 0x0d, 0xfe, 0x25, 0xc3, 0x93, 0xa7, 0xd8, 0x02, - 0x5e, 0x42, 0x19, 0x97, 0x04, 0x48, 0xe3, 0x83, 0xa4, 0x3a, 0x67, 0xef, 0xc7, 0xc9, 0x93, 0xd8, - 0x2b, 0x26, 0x4d, 0x22, 0xa6, 0x88, 0x9c, 0xfc, 0x05, 0x70, 0xff, 0x3b, 0xf4, 0xbb, 0x9c, 0x3d, - 0x3e, 0x85, 0x01, 0xdb, 0x35, 0x8c, 0xbd, 0xbf, 0x4d, 0x96, 0x53, 0x79, 0x8f, 0xf0, 0xbb, 0xac, - 0x0b, 0x57, 0xaa, 0x26, 0x57, 0x50, 0x81, 0x4c, 0xc9, 0x4a, 0x43, 0xc8, 0x75, 0x1a, 0xbc, 0xff, - 0x4d, 0x08, 0xab, 0xb8, 0x7e, 0xf0, 0x4f, 0x20, 0xfc, 0x33, 0xa1, 0x2e, 0x5c, 0x63, 0x4a, 0x52, - 0x4e, 0xd3, 0x4c, 0x26, 0x96, 0x54, 0xf0, 0x0c, 0x01, 0x2e, 0x74, 0x1c, 0x05, 0x17, 0x49, 0x67, - 0x14, 0x99, 0xe2, 0x78, 0xce, 0x09, 0x37, 0x62, 0xeb, 0x95, 0xa3, 0x4f, 0x1c, 0x68, 0x22, 0x46, - 0x0e, 0x77, 0x19, 0xb9, 0x66, 0x0c, 0xe3, 0x24, 0xaf, 0x0f, 0xc7, 0x97, 0x10, 0xa2, 0x84, 0xc4, - 0x3a, 0xaa, 0x41, 0x45, 0x21, 0x6f, 0xbc, 0x4f, 0x21, 0xf2, 0xa7, 0x1f, 0xcf, 0x64, 0x71, 0x1a, - 0xe7, 0x1f, 0xe7, 0x6f, 0xc5, 0x23, 0xd3, 0xca, 0x1c, 0x9f, 0x24, 0x7b, 0xee, 0xb1, 0x9f, 0xaf, - 0xe8, 0xe3, 0x71, 0x0a, 0x17, 0x97, 0x12, 0xcf, 0x15, 0xed, 0x78, 0x64, 0xcf, 0xab, 0xfc, 0xdf, - 0x3a, 0xca, 0x21, 0x64, 0x4c, 0x8f, 0x57, 0xae, 0x1a, 0xc7, 0x8e, 0xc4, 0x1b, 0xc7, 0xe6, 0x09, - 0xa3, 0x88, 0xff, 0xbc, 0x33, 0xbd, 0x36, 0x3d, 0x73, 0x64, 0x5a, 0xc4, 0xab, 0x4e, 0xcd, 0xf1, - 0x58, 0xb7, 0x13, 0xb3, 0x0e, 0xea, 0xb9, 0xd7, 0xce, 0xec, 0x18, 0x0c, 0x01, 0xfc, 0x3b, 0xa2, - 0x59, 0x3a, 0x59, 0x18, 0x3b, 0x09, 0xcd, 0x63, 0x6a, 0x3d, 0x9d, 0xca, 0xdb, 0x49, 0x01, 0xe2, - 0xaf, 0x18, 0xd4, 0x49, 0x75, 0x08, 0x9f, 0xae, 0xf8, 0x91, 0xe2, 0x10, 0xc1, 0x26, 0x2c, 0x8c, - 0x7e, 0xc7, 0x91, 0x12, 0xa3, 0x77, 0xa1, 0xff, 0x42, 0x57, 0x52, 0x3d, 0xf0, 0x5f, 0xba, 0x26, - 0xff, 0x9a, 0xd8, 0x5b, 0x1b, 0xf7, 0x9b, 0x85, 0xf5, 0x79, 0xe5, 0x4f, 0x8a, 0x0f, 0x5f, 0xa0, - 0x95, 0x82, 0x96, 0xed, 0xbd, 0x7e, 0x9a, 0xfa, 0xfe, 0xf2, 0x85, 0xa2, 0x82, 0x20, 0x78, 0x0c, - 0xb2, 0x8f, 0x8e, 0x6b, 0x50, 0x19, 0x60, 0x0d, 0x9e, 0xff, 0x29, 0x15, 0xfe, 0x91, 0xf5, 0x27, - 0xb0, 0x58, 0x9f, 0x52, 0xa1, 0x86, 0x44, 0x0d, 0x6c, 0x06, 0x5e, 0x3f, 0x11, 0x01, 0xf8, 0xf4, - 0xf5, 0xcb, 0xd2, 0xb1, 0xb6, 0x06, 0x10, 0x82, 0x38, 0x16, 0x00, 0x09, 0x14, 0xc7, 0x56, 0x0e, - 0x5e, 0xf3, 0xf4, 0x43, 0x9e, 0xfe, 0x44, 0x7d, 0xfd, 0x82, 0xe1, 0x7d, 0xbd, 0xb9, 0x03, 0x4c, - 0xd3, 0xae, 0x0e, 0x88, 0xfb, 0xc7, 0xd4, 0x8d, 0x24, 0x32, 0x73, 0x4a, 0xf5, 0x83, 0xe2, 0x65, - 0xc2, 0xca, 0xc6, 0x19, 0x5f, 0x42, 0x68, 0x2f, 0x47, 0x80, 0x2f, 0x78, 0xfc, 0xa8, 0x06, 0x4d, - 0x88, 0x49, 0x22, 0x03, 0x17, 0x98, 0xbf, 0xaf, 0x87, 0x9d, 0xc9, 0x9f, 0x77, 0xcd, 0xb6, 0x92, - 0xa0, 0x3d, 0x14, 0xe7, 0x30, 0xd7, 0xa3, 0x13, 0x35, 0x06, 0x67, 0x49, 0xfe, 0x5e, 0xf9, 0xcf, - 0xef, 0x2b, 0xd5, 0x61, 0xcd, 0x91, 0x9d, 0xb4, 0xc1, 0x34, 0xea, 0xee, 0x1f, 0xa7, 0xa6, 0xf5, - 0x7f, 0x45, 0x21, 0xaf, 0x98, 0x09, 0x20, 0xe8, 0xfe, 0x97, 0xbe, 0x68, 0x20, 0x92, 0x49, 0xdd, - 0x01, 0x2b, 0xd0, 0xd1, 0x8c, 0x77, 0x81, 0xd6, 0x91, 0x06, 0xe5, 0x43, 0x73, 0x73, 0x49, 0xae, - 0x31, 0x09, 0x27, 0xa6, 0x6e, 0x8d, 0x2f, 0x09, 0x77, 0x72, 0xf0, 0x5a, 0xff, 0x15, 0xaa, 0x1d, - 0x22, 0xbe, 0x23, 0xda, 0x85, 0xf5, 0xa4, 0x6b, 0x6b, 0xf6, 0x21, 0x97, 0x69, 0xdb, 0xf8, 0x51, - 0xc5, 0x12, 0x17, 0x6a, 0x48, 0x95, 0xea, 0x21, 0xf5, 0xed, 0x05, 0x70, 0xf0, 0xe3, 0x05, 0xa9, - 0x3f, 0x53, 0xdf, 0x54, 0xe4, 0xc8, 0x00, 0x39, 0x3e, 0x70, 0xe2, 0x60, 0x33, 0xf6, 0x06, 0x08, - 0x8b, 0xf6, 0x71, 0x0d, 0x2b, 0x5c, 0x60, 0x6a, 0x47, 0x46, 0x9e, 0xf0, 0x09, 0xff, 0xdb, 0x4f, - 0xd8, 0x78, 0x89, 0xe0, 0xa2, 0x40, 0x1f, 0x3c, 0xe0, 0xe3, 0xe6, 0x68, 0x28, 0x97, 0x39, 0x62, - 0x7c, 0x31, 0x31, 0x71, 0xe9, 0xf9, 0xde, 0x15, 0xb1, 0x3d, 0x2e, 0xb8, 0x16, 0x8b, 0xc5, 0x44, - 0x20, 0x39, 0xd6, 0x27, 0xea, 0xca, 0x8a, 0x50, 0x85, 0x74, 0xde, 0x71, 0xf5, 0xf1, 0x47, 0xa4, - 0x3f, 0x96, 0xd3, 0xcb, 0xcf, 0x54, 0x3c, 0x75, 0x1d, 0xe9, 0xe6, 0x0f, 0xc2, 0x21, 0xf8, 0x7c, - 0x1b, 0x5c, 0x31, 0xcb, 0x9c, 0x83, 0x0b, 0x69, 0xa2, 0xd9, 0x93, 0xe3, 0xea, 0xcc, 0x69, 0x4e, - 0xf6, 0x94, 0x4f, 0x3e, 0xa3, 0x89, 0x08, 0x7f, 0xac, 0xdf, 0x17, 0x11, 0x03, 0xd8, 0xe3, 0xd3, - 0xe7, 0x3f, 0x09, 0xd8, 0xb1, 0x3c, 0x14, 0x93, 0xd0, 0x8b, 0x7f, 0x03, 0xb8, 0x36, 0xd5, 0xc3, - 0x78, 0xf3, 0x5a, 0x11, 0xff, 0x62, 0x34, 0x73, 0xea, 0x0f, 0xb3, 0x47, 0x55, 0xca, 0xbd, 0x90, - 0xe6, 0xae, 0xa4, 0x3b, 0x17, 0x8b, 0x19, 0x51, 0xa0, 0xa5, 0x4d, 0xe7, 0xd6, 0x91, 0x0c, 0x63, - 0xff, 0xff, 0x14, 0x07, 0x03, 0xd9, 0xfc, 0xa5, 0x8d, 0x92, 0x62, 0x0c, 0x29, 0xff, 0x45, 0x10, - 0x1f, 0x87, 0x10, 0x92, 0x84, 0x68, 0xf3, 0x55, 0xba, 0x1f, 0xd5, 0x74, 0xce, 0x0f, 0x18, 0x07, - 0x88, 0x89, 0xa7, 0x02, 0xf4, 0x31, 0x7c, 0xd8, 0x7f, 0xfe, 0x5d, 0xae, 0x1e, 0x17, 0xee, 0x62, - 0xa0, 0x99, 0xfc, 0x51, 0xf4, 0x91, 0xff, 0x76, 0x60, 0x76, 0xd1, 0xbc, 0x1f, 0x68, 0xbd, 0xaf, - 0x5c, 0x1d, 0xf0, 0x5b, 0x7a, 0x6b, 0xdc, 0x1b, 0x6e, 0x1c, 0x7d, 0x4b, 0x4a, 0x02, 0xa9, 0x43, - 0xcf, 0x7e, 0x5d, 0xe2, 0xa1, 0xdf, 0x1e, 0xc4, 0x39, 0x07, 0x30, 0xe5, 0xf7, 0xf9, 0xfb, 0xe7, - 0xe3, 0x60, 0x9c, 0xa1, 0xbf, 0xc3, 0x95, 0x98, 0x6e, 0xd1, 0xd3, 0x84, 0x90, 0x3b, 0xff, 0x37, - 0x75, 0x4c, 0xcc, 0x0b, 0x44, 0x08, 0xeb, 0x19, 0x67, 0x8c, 0x7d, 0x21, 0x9f, 0xc1, 0x00, 0x7d, - 0x00, 0x44, 0xc2, 0x27, 0x1c, 0xe6, 0xbe, 0xa8, 0x13, 0x3f, 0x8c, 0xd4, 0xf7, 0x65, 0xcf, 0x9b, - 0x9b, 0xcf, 0x57, 0xf8, 0x79, 0x39, 0xa7, 0xf8, 0x1e, 0x3a, 0x87, 0x2d, 0xce, 0x0a, 0x9e, 0x49, - 0x00, 0x97, 0x16, 0x84, 0xbc, 0x8b, 0x3c, 0x32, 0xa9, 0x4b, 0x26, 0x45, 0x26, 0x6c, 0x1c, 0xea, - 0xc6, 0x89, 0x1c, 0xea, 0xe5, 0x72, 0x70, 0x10, 0xcb, 0x70, 0x2a, 0x8b, 0xf9, 0x18, 0x39, 0xff, - 0xf3, 0x50, 0x3a, 0x7e, 0x48, 0x98, 0xcb, 0x47, 0xcf, 0x08, 0xa3, 0x8c, 0xf6, 0xda, 0xf0, 0x37, - 0x86, 0xc2, 0x13, 0x4e, 0xf7, 0x8f, 0x86, 0xa3, 0x20, 0x23, 0x7b, 0x64, 0xda, 0x46, 0xa3, 0xd1, - 0x89, 0x35, 0x89, 0x1e, 0x53, 0x44, 0xf2, 0xad, 0x1b, 0xc7, 0x2a, 0x96, 0xb0, 0x60, 0x57, 0xcd, - 0xdd, 0x87, 0xf2, 0xa3, 0xc2, 0xdf, 0xc8, 0x8f, 0x8e, 0x7c, 0xe2, 0x7f, 0x3b, 0x3f, 0xfa, 0x06, - 0x29, 0xcc, 0xb3, 0xfc, 0x8f, 0xfc, 0xe6, 0xc2, 0xf7, 0xab, 0x52, 0xaa, 0x6f, 0x96, 0xaa, 0x3d, - 0x0e, 0x5d, 0xf5, 0x65, 0x39, 0xfc, 0xf7, 0x42, 0x1f, 0x9b, 0x6a, 0x4a, 0xb5, 0xac, 0x14, 0xcc, - 0x4c, 0xdd, 0x26, 0x2a, 0xd9, 0x85, 0x5c, 0x1e, 0x3f, 0x76, 0xfa, 0xf3, 0xec, 0x61, 0x64, 0x4c, - 0xc8, 0xf0, 0x26, 0xc6, 0xf1, 0x0d, 0x88, 0xe4, 0x33, 0xf9, 0xe9, 0xf1, 0xbe, 0x89, 0x07, 0x3a, - 0xe7, 0xa9, 0xf4, 0x61, 0x10, 0xfe, 0x43, 0x0e, 0x11, 0x7d, 0xe1, 0xcf, 0x17, 0x2a, 0xfe, 0x8e, - 0x28, 0x72, 0x2d, 0xc4, 0xb1, 0x61, 0xf6, 0xf8, 0xf5, 0xc6, 0xb1, 0x1b, 0xf0, 0x7e, 0x7b, 0x87, - 0xbf, 0x67, 0x09, 0xc6, 0xc6, 0xe6, 0x3a, 0x65, 0x42, 0xb7, 0xb6, 0xbe, 0x49, 0x69, 0x96, 0xea, - 0x79, 0x30, 0x23, 0x7c, 0xea, 0x72, 0xf3, 0x15, 0x4f, 0xc4, 0x51, 0x01, 0xfe, 0xe6, 0xa1, 0x94, - 0x2c, 0x3c, 0x3e, 0x3e, 0x7e, 0xa1, 0x60, 0x3e, 0x06, 0x69, 0x3b, 0xd1, 0x37, 0x0c, 0x11, 0x00, - 0x27, 0x0b, 0x53, 0x04, 0x05, 0x68, 0x47, 0xce, 0x82, 0xf9, 0x7c, 0xf3, 0xb5, 0xeb, 0xb8, 0xee, - 0xf6, 0x21, 0x06, 0x95, 0xb2, 0x75, 0x7d, 0xec, 0xa5, 0x6a, 0xea, 0x5a, 0xed, 0x12, 0x38, 0xbf, - 0x84, 0x90, 0xbf, 0x50, 0x7b, 0xc0, 0x7b, 0xec, 0x22, 0xe0, 0xd1, 0x85, 0x8c, 0x1b, 0x82, 0x2d, - 0x10, 0x95, 0x7c, 0x4f, 0x54, 0x62, 0x1c, 0x3f, 0x39, 0xbd, 0xd0, 0x0d, 0xf9, 0x27, 0x5e, 0x49, - 0xba, 0x23, 0x36, 0x60, 0x00, 0xe1, 0xc7, 0x36, 0x2e, 0xf2, 0xdc, 0x00, 0x69, 0x34, 0xcb, 0xd4, - 0xe6, 0x18, 0xac, 0x61, 0x58, 0x3a, 0xe9, 0x05, 0x02, 0xed, 0x21, 0x1b, 0xd6, 0xcd, 0xd7, 0x2f, - 0x66, 0xdc, 0x24, 0x57, 0x37, 0x6e, 0xbe, 0xfe, 0xf6, 0xeb, 0x46, 0xa7, 0x8b, 0x93, 0xcf, 0x5f, - 0x28, 0x13, 0x72, 0xbb, 0x04, 0x16, 0xe1, 0xd3, 0xae, 0x9b, 0xaf, 0x04, 0xcc, 0x17, 0x6a, 0x09, - 0x87, 0x0a, 0x77, 0xbb, 0x88, 0x42, 0xd3, 0x3a, 0xdb, 0xbf, 0x69, 0x61, 0xee, 0x5c, 0xdc, 0x30, - 0xa3, 0x66, 0xae, 0x6f, 0xd8, 0x33, 0x17, 0x1f, 0xd8, 0xb0, 0xbb, 0xb5, 0xb5, 0xb3, 0x2d, 0x71, - 0xe7, 0xd5, 0x4d, 0x19, 0xa6, 0x70, 0x7d, 0x53, 0xbc, 0xf2, 0xfb, 0x7b, 0x9e, 0x13, 0xb9, 0x11, - 0x5d, 0x83, 0xb8, 0xba, 0x6b, 0x8e, 0xa1, 0xbf, 0x41, 0x5b, 0x97, 0x2c, 0xbe, 0xb2, 0xf1, 0x7e, - 0xab, 0xc0, 0xb4, 0xc1, 0x62, 0x3c, 0x82, 0xd2, 0x92, 0x94, 0xf5, 0x11, 0x7f, 0x7b, 0x58, 0xea, - 0x35, 0xf5, 0x89, 0xf2, 0x74, 0x1f, 0xdf, 0x0b, 0xf2, 0x3e, 0x7d, 0xbe, 0xc6, 0xd9, 0x6f, 0x11, - 0x9a, 0x73, 0xec, 0x89, 0x69, 0x9c, 0x6e, 0x1e, 0xab, 0x46, 0xac, 0x51, 0x91, 0xa2, 0x12, 0xc9, - 0xdb, 0x43, 0x99, 0x8e, 0x6f, 0xbe, 0xb2, 0x24, 0x6c, 0xb0, 0x75, 0xcf, 0xc3, 0x20, 0x8e, 0xc5, - 0xd5, 0xb4, 0xc8, 0xfc, 0x63, 0x94, 0x52, 0x89, 0x1b, 0x3a, 0xb1, 0x1c, 0x84, 0x2c, 0x39, 0x5e, - 0x9c, 0x28, 0xd6, 0xc5, 0x70, 0x48, 0xb8, 0x80, 0xb1, 0x09, 0xc7, 0x60, 0x6b, 0xc2, 0x89, 0x29, - 0x2e, 0x35, 0x42, 0xa7, 0xee, 0x43, 0x0f, 0x16, 0x75, 0xc7, 0x26, 0x53, 0x5f, 0x6f, 0x56, 0xcb, - 0x31, 0xf8, 0xa3, 0x9e, 0xab, 0x9a, 0xd6, 0xad, 0x3f, 0x35, 0x3d, 0x18, 0x03, 0xbb, 0xf6, 0x7a, - 0x93, 0xc9, 0xe7, 0x6f, 0xf0, 0x37, 0xc5, 0xbd, 0xde, 0x30, 0x37, 0x29, 0x92, 0xeb, 0xdd, 0x90, - 0x7a, 0xe5, 0x4d, 0x6a, 0xad, 0x5a, 0x2b, 0x68, 0x31, 0x99, 0xe2, 0x4d, 0x8a, 0xba, 0x88, 0x51, - 0x64, 0xc6, 0x80, 0xd4, 0x31, 0x8d, 0xae, 0xbd, 0x9b, 0xe4, 0x89, 0x12, 0x41, 0x38, 0xbe, 0x27, - 0x03, 0xd6, 0xc4, 0xd5, 0x5e, 0x6f, 0xd4, 0x11, 0xbe, 0x7e, 0x37, 0xb2, 0x54, 0x7b, 0x8e, 0xe1, - 0x84, 0x13, 0x2f, 0x80, 0x48, 0xee, 0x9f, 0x02, 0xb3, 0x16, 0xdf, 0x67, 0xb8, 0x49, 0xb2, 0x86, - 0xc3, 0x4e, 0xc9, 0xbb, 0x49, 0xb0, 0x36, 0x0a, 0x66, 0x8e, 0x66, 0x85, 0x45, 0xc9, 0xfd, 0x2c, - 0xb0, 0x4c, 0xf8, 0x34, 0x89, 0x53, 0xc4, 0x13, 0x83, 0x73, 0x3e, 0x87, 0x57, 0xde, 0x6e, 0xbe, - 0xf6, 0xb1, 0x77, 0xc3, 0x5f, 0xa4, 0x07, 0x89, 0xb3, 0x75, 0xce, 0xee, 0xef, 0x73, 0xac, 0x7f, - 0xb6, 0xff, 0x31, 0xff, 0xc8, 0x51, 0x6e, 0x27, 0xaa, 0xe5, 0xe9, 0x7f, 0x8f, 0x8d, 0xf4, 0x7f, - 0x81, 0x8d, 0x7b, 0x67, 0xe2, 0x59, 0x49, 0x83, 0x1b, 0x41, 0xc1, 0x89, 0xb6, 0x66, 0xa5, 0xc0, - 0x22, 0x27, 0xac, 0x41, 0x58, 0x72, 0xea, 0x5a, 0x8e, 0x7f, 0x0b, 0x9e, 0xfc, 0xe6, 0x2b, 0x73, - 0x41, 0x9f, 0x3f, 0xb8, 0x9e, 0xc1, 0xeb, 0x33, 0xff, 0x7c, 0x7d, 0x06, 0xaf, 0xcf, 0x5e, 0x52, - 0xe9, 0x33, 0xb6, 0x12, 0xaa, 0xa7, 0x96, 0xaa, 0x05, 0x76, 0x44, 0xc7, 0x6c, 0x4d, 0x7d, 0x48, - 0x8d, 0xa3, 0x9b, 0x72, 0x91, 0x0e, 0x8f, 0xb2, 0xb1, 0x0e, 0x47, 0x25, 0xce, 0x83, 0xcb, 0xc2, - 0x53, 0x43, 0x4f, 0x17, 0x0e, 0xb5, 0xc3, 0x9d, 0x4e, 0x78, 0x1f, 0xf5, 0x86, 0xbe, 0xfc, 0x4b, - 0x58, 0x57, 0xfb, 0x5a, 0x0a, 0xcb, 0x0d, 0x5f, 0xa8, 0xa8, 0x7d, 0x18, 0xe1, 0xf1, 0xe3, 0xdf, - 0x5f, 0x92, 0x03, 0x54, 0x08, 0xfd, 0xba, 0x1a, 0x61, 0x0c, 0xa2, 0x1b, 0x24, 0xd7, 0xb4, 0xe5, - 0x8c, 0x36, 0xe1, 0xfc, 0x94, 0xb7, 0x04, 0x17, 0x7f, 0x41, 0xe2, 0xc3, 0x9b, 0x03, 0x1f, 0xb2, - 0x72, 0xd9, 0x4c, 0xfe, 0x1f, 0x59, 0xb9, 0x2e, 0xde, 0xfa, 0x3b, 0x7a, 0x43, 0xe6, 0xfc, 0x4d, - 0xcb, 0xf7, 0xdf, 0x50, 0x99, 0x6b, 0xe4, 0xc3, 0x19, 0x35, 0x2e, 0x28, 0x6e, 0xaf, 0x93, 0x30, - 0x3c, 0x71, 0x74, 0x4b, 0xe3, 0x43, 0x04, 0xcd, 0xd1, 0xcf, 0xff, 0x88, 0xa0, 0x42, 0x8c, 0xcc, - 0x77, 0x88, 0xba, 0x9f, 0xf7, 0xff, 0x31, 0x61, 0xf1, 0x55, 0xe0, 0x8f, 0xd1, 0x34, 0x73, 0xc1, - 0x86, 0x11, 0xe3, 0x81, 0xe7, 0x4c, 0x36, 0x23, 0xfa, 0xc8, 0x8c, 0xf8, 0x83, 0xd0, 0x80, 0x75, - 0x71, 0x56, 0xf3, 0xad, 0xb8, 0x60, 0xb2, 0xb1, 0x4c, 0x8f, 0xe8, 0x4e, 0x14, 0x5f, 0x43, 0x5c, - 0x9d, 0x98, 0x36, 0x72, 0x2f, 0xab, 0x61, 0x57, 0x37, 0x16, 0xf8, 0xfa, 0xc1, 0xf7, 0xbc, 0x16, - 0x64, 0x3c, 0xb8, 0xfb, 0x2a, 0xfc, 0xc4, 0xbc, 0x95, 0x1f, 0xf2, 0xfb, 0x9b, 0xea, 0x5f, 0x56, - 0xd7, 0x8e, 0x0b, 0x4e, 0xec, 0x1b, 0x06, 0x80, 0x38, 0x4b, 0xaf, 0x41, 0x82, 0xa3, 0x53, 0xaa, - 0x63, 0x1c, 0x52, 0xe4, 0x5a, 0x88, 0x07, 0x36, 0x36, 0x22, 0xfc, 0xb9, 0x5d, 0xc6, 0x36, 0x0f, - 0xd7, 0x57, 0x8f, 0x49, 0x0a, 0x61, 0x1e, 0xbc, 0x86, 0x86, 0xfd, 0x3b, 0x8e, 0xe1, 0x9b, 0x00, - 0x32, 0x1f, 0xf0, 0x0c, 0xdf, 0x04, 0x90, 0x3d, 0x73, 0x0d, 0x7f, 0x13, 0x40, 0x0e, 0x03, 0xc8, - 0xed, 0x01, 0x44, 0x5c, 0xfe, 0x9b, 0x40, 0xf2, 0x18, 0x48, 0xfe, 0x07, 0xb0, 0x28, 0x60, 0x00, - 0x85, 0x1f, 0x00, 0xf0, 0x84, 0x01, 0x3c, 0xfd, 0x00, 0x80, 0x22, 0x06, 0x50, 0xfc, 0x41, 0x3a, - 0x3c, 0x63, 0x20, 0xcf, 0x3f, 0x80, 0x05, 0x13, 0x86, 0x1a, 0xf4, 0x8f, 0x80, 0x08, 0x85, 0xf2, - 0x47, 0xa4, 0x92, 0x21, 0x62, 0xc9, 0x64, 0x7e, 0x90, 0x1a, 0x0c, 0x11, 0x4e, 0xe6, 0x47, 0xa4, - 0x93, 0x21, 0xe2, 0xc9, 0xe4, 0x7e, 0x04, 0x04, 0x11, 0x4e, 0xe6, 0x47, 0xa4, 0x93, 0x21, 0xe2, - 0xc9, 0x14, 0x4e, 0xe9, 0x11, 0xde, 0x1e, 0x8d, 0xa0, 0x84, 0xb5, 0x3f, 0x5c, 0x67, 0xc5, 0xc6, - 0xa7, 0x1b, 0x3e, 0xb6, 0xc0, 0x36, 0x7d, 0xef, 0xb6, 0x42, 0x4f, 0x42, 0xe6, 0x8d, 0x9c, 0xcd, - 0x4d, 0x64, 0x9d, 0x7a, 0x24, 0xeb, 0x4c, 0xfa, 0xab, 0x28, 0xd9, 0xef, 0x46, 0xe1, 0x93, 0xb7, - 0x54, 0xed, 0xa3, 0x4d, 0x48, 0x65, 0x14, 0x36, 0xc2, 0x3e, 0x06, 0x0f, 0x12, 0xf3, 0x48, 0x70, - 0x89, 0x11, 0x4b, 0x2e, 0x99, 0x82, 0xe5, 0x07, 0x03, 0x97, 0x62, 0x0a, 0x29, 0x0d, 0x7a, 0x3d, - 0x75, 0xad, 0x93, 0xca, 0x90, 0x17, 0x99, 0xed, 0xc7, 0x08, 0x08, 0x5e, 0xfa, 0xfd, 0x73, 0x85, - 0x14, 0x49, 0x69, 0x5b, 0xcd, 0xfa, 0xf6, 0xc1, 0xb4, 0xed, 0xb5, 0x83, 0x71, 0xc3, 0x7f, 0x7c, - 0xb0, 0xb2, 0xe9, 0x7a, 0x7e, 0x6a, 0x49, 0x70, 0x78, 0x49, 0x25, 0xa2, 0x01, 0xc0, 0xc7, 0x3b, - 0x0f, 0x01, 0x42, 0xbc, 0xc2, 0x47, 0x7f, 0x87, 0x1c, 0x91, 0xb8, 0x78, 0x26, 0x77, 0x70, 0xe6, - 0x37, 0x11, 0xf4, 0x86, 0x7a, 0x15, 0xb8, 0xfe, 0x21, 0xe0, 0x99, 0x18, 0x78, 0x7e, 0x0f, 0x3c, - 0x1b, 0x03, 0xc7, 0x35, 0x90, 0x14, 0xbe, 0x77, 0x73, 0x79, 0x03, 0xff, 0x43, 0x1b, 0xd0, 0x8f, - 0xf1, 0x16, 0x85, 0xfc, 0xe3, 0x61, 0x13, 0x06, 0xba, 0xbf, 0x7a, 0xd1, 0x3e, 0x89, 0xc7, 0xbd, - 0x27, 0x5b, 0x7c, 0x70, 0x8f, 0x4b, 0x3b, 0xd0, 0x8f, 0x4f, 0xb0, 0xc3, 0xb7, 0x93, 0xda, 0xb0, - 0xd2, 0x35, 0x72, 0xfc, 0x50, 0x00, 0xf0, 0x87, 0x73, 0x5d, 0x83, 0x29, 0xf8, 0x2b, 0xd4, 0x93, - 0x7a, 0xe6, 0x2c, 0x75, 0xbb, 0xa7, 0x8e, 0x20, 0x48, 0xb9, 0x56, 0x5b, 0x8a, 0xf2, 0x91, 0x2b, - 0x25, 0x0f, 0x9c, 0x31, 0x5f, 0xa9, 0xb7, 0x7c, 0x7f, 0x53, 0xe6, 0xea, 0xa6, 0xd9, 0xf1, 0xf5, - 0x4d, 0xa3, 0xcc, 0xe3, 0x1f, 0xef, 0x9a, 0xb9, 0xb6, 0x6b, 0x36, 0x37, 0xfa, 0x46, 0x45, 0x2b, - 0xd2, 0xd8, 0x7f, 0xbc, 0x6d, 0xf6, 0xda, 0xb6, 0x74, 0x4e, 0xbb, 0xbe, 0xed, 0x3e, 0xce, 0xba, - 0x52, 0x57, 0x4a, 0x84, 0x64, 0xe4, 0x36, 0xef, 0x85, 0x3a, 0xc4, 0xfe, 0xcf, 0xe6, 0x0e, 0x63, - 0x87, 0x2f, 0x8a, 0xff, 0xf9, 0x27, 0xea, 0x5f, 0xbf, 0xfc, 0xfc, 0xd3, 0xbf, 0x52, 0xa6, 0xeb, - 0x3c, 0xce, 0xbc, 0xd4, 0x3a, 0xf7, 0x98, 0x7b, 0xa4, 0x71, 0x47, 0x86, 0x66, 0x0a, 0x69, 0x78, - 0x79, 0x4e, 0xd5, 0xc8, 0x75, 0xde, 0x92, 0x6a, 0x9b, 0xba, 0x85, 0x47, 0x1a, 0xa6, 0x06, 0xf1, - 0xbc, 0x3e, 0x4e, 0xad, 0x6c, 0x88, 0xb9, 0x53, 0x62, 0xbb, 0x91, 0xca, 0x84, 0x6b, 0x0c, 0xd3, - 0x9f, 0xae, 0x46, 0x8f, 0x9a, 0xb3, 0xa0, 0x66, 0x2a, 0x5e, 0x45, 0x85, 0x60, 0x61, 0x8c, 0xfa, - 0xf9, 0xa7, 0x5f, 0xe2, 0x6f, 0xa5, 0xbf, 0xf5, 0x1f, 0xf4, 0xbb, 0x3f, 0x6f, 0x9c, 0xd1, 0x0c, - 0x18, 0x79, 0xf3, 0xfa, 0x8a, 0x15, 0xc1, 0x99, 0xa4, 0xf4, 0x0d, 0x7e, 0x7e, 0xef, 0xfd, 0xf6, - 0xdb, 0x0d, 0x06, 0x3c, 0x31, 0x6d, 0x48, 0xd7, 0x7e, 0x89, 0x07, 0xc1, 0x98, 0xaf, 0x2c, 0xfd, - 0xf7, 0xf0, 0xed, 0x31, 0x9a, 0xfa, 0x0a, 0x59, 0xee, 0xcb, 0x4d, 0x0c, 0xf6, 0x00, 0x29, 0x5c, - 0xfd, 0xdb, 0x6f, 0xe1, 0xfb, 0xa3, 0xba, 0x18, 0xff, 0x1e, 0x7e, 0xbc, 0xd5, 0xef, 0x5e, 0xfc, - 0x47, 0x40, 0x0a, 0xaf, 0xfc, 0x8b, 0xe4, 0x1d, 0x0f, 0x7b, 0xac, 0x00, 0xa5, 0x95, 0xa7, 0xa7, - 0x3c, 0xdf, 0x35, 0x01, 0xad, 0xcf, 0x6b, 0xd5, 0x4d, 0x69, 0xaf, 0x89, 0xd1, 0xbf, 0x1e, 0xcc, - 0x57, 0x78, 0x99, 0xbe, 0xfe, 0xe7, 0x8f, 0x87, 0x15, 0xbc, 0x7c, 0xde, 0x7f, 0xcb, 0xfe, 0x32, - 0x3c, 0x11, 0x5e, 0xe1, 0x3c, 0xd8, 0x0f, 0xee, 0x83, 0xf9, 0xe0, 0xbd, 0xaa, 0xae, 0xb1, 0x22, - 0x22, 0xf3, 0xa0, 0xbe, 0xae, 0x3e, 0x4f, 0x1c, 0xf7, 0xd6, 0x3c, 0xf4, 0x3d, 0x5a, 0xba, 0x6d, - 0xf8, 0xd3, 0xcf, 0x99, 0x2f, 0x66, 0x3a, 0xfd, 0xf9, 0x6e, 0xfa, 0xb8, 0x5c, 0x79, 0xd3, 0x5b, - 0xef, 0x3f, 0xe6, 0x1f, 0x77, 0x64, 0x2a, 0x20, 0x6f, 0xaf, 0x2c, 0xeb, 0x97, 0x57, 0xfd, 0x51, - 0x9b, 0x9a, 0xd6, 0xd8, 0xd5, 0xed, 0xdf, 0x7e, 0xbb, 0x9d, 0x46, 0xcb, 0xfe, 0xe7, 0x7f, 0xa2, - 0x05, 0x87, 0xd1, 0xbb, 0x87, 0x31, 0x64, 0xed, 0xbe, 0x9e, 0x4a, 0x74, 0x7d, 0x8e, 0xe7, 0x7f, - 0xbe, 0x33, 0x27, 0xb7, 0xb7, 0xf6, 0x2b, 0xac, 0x72, 0x96, 0xb7, 0x77, 0x77, 0xbf, 0xfd, 0xb6, - 0x76, 0xcc, 0x71, 0x8a, 0xfe, 0xe5, 0xf5, 0xd5, 0xc6, 0x5d, 0x77, 0x21, 0x76, 0x76, 0x3c, 0x3d, - 0x89, 0x93, 0x4d, 0x70, 0x82, 0xa8, 0x5d, 0x07, 0xab, 0xe2, 0x58, 0xba, 0x9a, 0xa0, 0x33, 0xc6, - 0xc9, 0x7e, 0xc5, 0x88, 0xde, 0x3d, 0xdc, 0xba, 0xaf, 0x07, 0x4e, 0xec, 0xd9, 0xe6, 0xdf, 0xe1, - 0x29, 0x30, 0x01, 0x76, 0xfa, 0x1d, 0x0c, 0xdc, 0xcd, 0x4b, 0x6c, 0xf0, 0x0e, 0x40, 0xa0, 0xbf, - 0xeb, 0xe3, 0x3b, 0x45, 0xb7, 0x36, 0x70, 0xd3, 0x23, 0x1f, 0x0f, 0x10, 0xf0, 0x1e, 0xee, 0xeb, - 0x2f, 0xcc, 0xdd, 0xdd, 0x83, 0xfb, 0xdb, 0x6f, 0xce, 0xef, 0xea, 0x7f, 0xd4, 0x08, 0xcd, 0x34, - 0xf3, 0xc7, 0xfd, 0xab, 0xfd, 0xa2, 0xbe, 0xbe, 0xbe, 0xae, 0x7e, 0x57, 0x5f, 0xff, 0x63, 0xff, - 0xf1, 0xa2, 0x46, 0x38, 0xdf, 0x3d, 0x38, 0xaf, 0x2e, 0xe1, 0xa0, 0xf5, 0x6a, 0xeb, 0x41, 0x4a, - 0xfb, 0xec, 0xea, 0xfe, 0xca, 0xb5, 0xff, 0x1f, 0x73, 0xd7, 0xda, 0xdd, 0xb6, 0x8d, 0xb4, 0xff, - 0x4a, 0xc4, 0x26, 0x3e, 0xa4, 0x05, 0xdd, 0x9c, 0x36, 0x6f, 0x4b, 0x85, 0x47, 0x27, 0x71, 0xd2, - 0x26, 0xbb, 0xb9, 0x74, 0x63, 0x37, 0xed, 0xae, 0xe3, 0xfa, 0xd0, 0x14, 0x25, 0xb1, 0xa6, 0x49, - 0x95, 0x84, 0x6d, 0xa9, 0x92, 0xfe, 0xfb, 0x3e, 0x33, 0x00, 0x48, 0x48, 0xa2, 0x93, 0x74, 0x3f, - 0xbd, 0x67, 0xb7, 0x16, 0x71, 0x1b, 0x00, 0x73, 0x9f, 0x01, 0xc8, 0x3c, 0x48, 0xbb, 0x19, 0xbc, - 0x82, 0x77, 0xf4, 0xef, 0x4d, 0x48, 0x91, 0x56, 0xa8, 0x0a, 0x42, 0x14, 0x42, 0x89, 0xa9, 0x21, - 0x61, 0x71, 0x19, 0xa8, 0x15, 0xc7, 0x23, 0x85, 0x26, 0x3f, 0x46, 0xeb, 0x55, 0xbc, 0xdc, 0xab, - 0xa6, 0x4a, 0x91, 0x6e, 0x2a, 0x3e, 0x78, 0xab, 0xf8, 0x80, 0xb0, 0xc9, 0xbc, 0x80, 0x78, 0xfd, - 0x41, 0xec, 0xc9, 0xb3, 0xfc, 0x3c, 0x88, 0xf1, 0xc7, 0x2c, 0x42, 0xd6, 0x23, 0x52, 0x35, 0x42, - 0xd1, 0x5a, 0x62, 0xab, 0x0d, 0xdc, 0x2c, 0x47, 0x52, 0xf1, 0x6d, 0x74, 0x53, 0xd0, 0x55, 0xaa, - 0x20, 0xf6, 0x36, 0x04, 0x3e, 0x0e, 0x1a, 0x3a, 0xff, 0x8c, 0xa0, 0x2a, 0x29, 0xe3, 0x91, 0xfe, - 0xed, 0xc2, 0xe0, 0xe5, 0xe9, 0x2d, 0xb8, 0xbd, 0x2b, 0x67, 0x71, 0xd6, 0xbd, 0x4c, 0xb2, 0xb1, - 0xbb, 0xd7, 0xe6, 0xf9, 0xb0, 0x8a, 0x64, 0x24, 0xf3, 0x1b, 0x29, 0x26, 0x41, 0x8f, 0x0e, 0x68, - 0xd6, 0xf1, 0xc2, 0x1d, 0xf9, 0xe5, 0x7a, 0xba, 0xce, 0xd6, 0xf3, 0xf5, 0x43, 0x6f, 0x5d, 0xcc, - 0x67, 0xeb, 0xfc, 0xae, 0x5c, 0x5f, 0x67, 0xd1, 0x3a, 0x93, 0x77, 0x6b, 0x88, 0xd3, 0x59, 0x34, - 0x3b, 0x5f, 0xff, 0x95, 0xe7, 0xeb, 0xdf, 0xf3, 0x62, 0xdc, 0x4b, 0x80, 0x74, 0x5b, 0x2a, 0x4a, - 0x57, 0x7a, 0xab, 0x96, 0xec, 0x5e, 0x8c, 0x93, 0x42, 0x2e, 0xb1, 0x37, 0xf3, 0x18, 0xb4, 0xfa, - 0x60, 0x8b, 0x41, 0x10, 0xe4, 0x8a, 0x5c, 0xc4, 0x24, 0x31, 0x88, 0x56, 0xa3, 0x85, 0xc4, 0xcd, - 0x60, 0x51, 0x0e, 0x25, 0x75, 0x24, 0xc6, 0x1d, 0x7a, 0x35, 0xb4, 0xd7, 0x18, 0x56, 0x0f, 0x38, - 0x51, 0x78, 0x34, 0x08, 0xee, 0xaa, 0x97, 0x63, 0x93, 0xbf, 0xe2, 0xf1, 0x3b, 0x43, 0x6f, 0x10, - 0x6e, 0xbd, 0x96, 0x15, 0xfd, 0xbb, 0x32, 0x7f, 0x43, 0x67, 0x31, 0xc7, 0x61, 0x09, 0x0c, 0x50, - 0xeb, 0x76, 0x4d, 0x0d, 0xfb, 0x25, 0xed, 0x43, 0x21, 0xfc, 0xad, 0x0b, 0x05, 0x20, 0x2d, 0x4e, - 0x81, 0x64, 0xd4, 0x4c, 0x24, 0xab, 0x47, 0x66, 0xbd, 0x3c, 0xb0, 0x66, 0xd3, 0xf7, 0x7d, 0x80, - 0xfa, 0x79, 0x39, 0x84, 0x34, 0x56, 0x02, 0x98, 0x7b, 0x66, 0xa3, 0x19, 0xb1, 0x4b, 0xee, 0xa9, - 0x16, 0x5a, 0x10, 0x38, 0x1a, 0x58, 0xa3, 0x9f, 0x20, 0xc7, 0x1f, 0xcf, 0xf0, 0x4f, 0x5c, 0xaf, - 0xed, 0x5d, 0xbd, 0x36, 0xd9, 0x55, 0x37, 0xed, 0x68, 0xc3, 0x43, 0xe8, 0x0f, 0xa2, 0xef, 0x75, - 0x7e, 0x1b, 0x1f, 0xd3, 0x9a, 0xb6, 0x90, 0x75, 0x4b, 0xc8, 0x12, 0xac, 0xa9, 0xbc, 0x15, 0xd6, - 0xe2, 0xb0, 0xdd, 0xa1, 0x65, 0x3a, 0x34, 0x2d, 0xcd, 0x19, 0xa8, 0x3a, 0xc7, 0x13, 0x0e, 0x78, - 0x9c, 0xab, 0x95, 0x12, 0x78, 0x40, 0xfd, 0x8b, 0x78, 0xa2, 0xaa, 0x52, 0x17, 0x50, 0x58, 0xfc, - 0x53, 0x37, 0x13, 0xd2, 0xea, 0xa2, 0x86, 0xb7, 0x18, 0xe9, 0x05, 0xa9, 0x1f, 0x87, 0x8f, 0xff, - 0xd4, 0x30, 0x9a, 0x14, 0x72, 0xdd, 0x24, 0xeb, 0x7b, 0x75, 0xf9, 0x7a, 0x0d, 0xc6, 0xe1, 0xc1, - 0xdd, 0xa8, 0x2c, 0x4f, 0xe3, 0x85, 0x0c, 0xb2, 0xf5, 0xda, 0xc1, 0xd2, 0xa8, 0xfb, 0xae, 0x11, - 0xc9, 0xd4, 0x8e, 0xf6, 0xa0, 0x54, 0x58, 0x4e, 0x14, 0x96, 0xf9, 0x27, 0xab, 0x61, 0x43, 0xcb, - 0x41, 0x3b, 0x29, 0xe5, 0x5b, 0x75, 0xcb, 0x3c, 0xbb, 0x75, 0x4f, 0x71, 0xa1, 0xf6, 0xe0, 0xa0, - 0x05, 0x3e, 0x0e, 0x26, 0x5d, 0xf0, 0x82, 0x74, 0x13, 0x6f, 0x44, 0x95, 0x6d, 0x67, 0xbe, 0x70, - 0x7c, 0x7a, 0xda, 0x6c, 0x2a, 0x84, 0x8c, 0xc9, 0x0d, 0x2f, 0xf2, 0x9b, 0x32, 0x5d, 0x9e, 0x50, - 0x4e, 0x2c, 0x8b, 0x8b, 0x57, 0xa7, 0x6f, 0xdf, 0x28, 0x84, 0x64, 0x2c, 0x1d, 0x89, 0xa9, 0x84, - 0x26, 0xbe, 0xb8, 0xa0, 0xb7, 0xf7, 0x79, 0x9f, 0x35, 0x52, 0x73, 0x87, 0xb8, 0xa2, 0x8f, 0x59, - 0x9d, 0x8c, 0x1f, 0x07, 0xe7, 0x8a, 0xfa, 0xb0, 0x84, 0x40, 0x35, 0xc8, 0x46, 0x44, 0x9f, 0xa7, - 0x61, 0x14, 0xbb, 0xbd, 0xe3, 0x70, 0x0e, 0x6e, 0x89, 0x1f, 0xf6, 0x04, 0x60, 0x00, 0xc8, 0x2e, - 0x83, 0x77, 0xcb, 0x9b, 0x4b, 0x85, 0x26, 0xb8, 0x44, 0x22, 0x1b, 0xe5, 0x24, 0x1d, 0xe1, 0x78, - 0xfc, 0x92, 0xde, 0x67, 0x79, 0x93, 0x94, 0x32, 0xc6, 0x6a, 0xdc, 0x58, 0x8c, 0x45, 0x49, 0xca, - 0x47, 0x31, 0x53, 0x53, 0xa3, 0x20, 0xc1, 0x4e, 0x75, 0x5d, 0xc9, 0x28, 0xad, 0x8b, 0xb0, 0x98, - 0x9e, 0x77, 0x16, 0x9f, 0x07, 0x59, 0x8d, 0x0a, 0xce, 0x74, 0xb5, 0x98, 0xd3, 0x1c, 0xc2, 0xa5, - 0x7e, 0x6e, 0x41, 0xbf, 0xc7, 0x84, 0x76, 0xb0, 0xb4, 0x2c, 0x96, 0x2b, 0xc9, 0xc3, 0xb4, 0xed, - 0x80, 0xe5, 0xc8, 0x36, 0x51, 0x28, 0x23, 0x52, 0x17, 0xab, 0x8d, 0x52, 0x98, 0x19, 0xa1, 0x9f, - 0x8c, 0x18, 0xf0, 0x54, 0xce, 0xe3, 0x34, 0xe5, 0x48, 0xc6, 0xd1, 0x92, 0xae, 0x56, 0xfc, 0xcc, - 0xc8, 0x2a, 0x74, 0x28, 0x2f, 0x81, 0x11, 0x16, 0x06, 0x34, 0xd9, 0x1e, 0xce, 0x7e, 0x5f, 0x90, - 0xfb, 0xe6, 0x8f, 0x34, 0xce, 0xf4, 0xe4, 0xeb, 0x35, 0x13, 0x39, 0x1b, 0x85, 0xa3, 0x3d, 0xa8, - 0xef, 0x4e, 0x5c, 0x67, 0xff, 0x1a, 0xf0, 0xe0, 0x87, 0x1f, 0x7e, 0xe8, 0x31, 0x2c, 0x47, 0xec, - 0xa0, 0xbd, 0xc6, 0xa5, 0xbd, 0x32, 0xbf, 0xc1, 0x76, 0x12, 0x53, 0xd0, 0x8c, 0xd0, 0xcd, 0xff, - 0xfb, 0x74, 0x22, 0xa3, 0x09, 0x6d, 0x10, 0xa0, 0x5a, 0xe6, 0x29, 0x54, 0x40, 0x51, 0x56, 0xa2, - 0xaf, 0x84, 0xaa, 0x56, 0x12, 0xa4, 0x32, 0x2a, 0x7d, 0x0a, 0x3f, 0xc9, 0xa2, 0xe9, 0x99, 0xec, - 0xd2, 0x12, 0xcf, 0x49, 0xa9, 0x10, 0x32, 0x5f, 0x91, 0x47, 0x74, 0x1a, 0xf4, 0xc5, 0x14, 0x76, - 0x5a, 0x5c, 0xe0, 0x4f, 0x6d, 0x04, 0x7e, 0xde, 0xd1, 0xe4, 0xaf, 0xba, 0xe5, 0x2c, 0x99, 0x48, - 0xa5, 0xcb, 0xe1, 0x28, 0xce, 0xf3, 0x0c, 0x1c, 0xf5, 0x22, 0x19, 0xbf, 0xcd, 0x6f, 0x32, 0x18, - 0xc0, 0x86, 0x4a, 0x5b, 0x17, 0x3f, 0xab, 0x55, 0x97, 0x48, 0xbc, 0xd5, 0x69, 0xbb, 0x0d, 0x7e, - 0x9b, 0x06, 0x8a, 0x1d, 0x0a, 0xcb, 0xaf, 0x29, 0xba, 0xf9, 0x1d, 0xd6, 0x7a, 0xf2, 0xf1, 0xa7, - 0x97, 0x69, 0x4c, 0x2e, 0x17, 0xd6, 0x55, 0x59, 0xd9, 0x96, 0xeb, 0x5c, 0x5c, 0x20, 0x16, 0x0c, - 0x23, 0x49, 0xaa, 0xfc, 0xc2, 0x61, 0xa6, 0xf3, 0x86, 0x4a, 0x94, 0x7e, 0xa9, 0xe6, 0x48, 0x2a, - 0x95, 0x0b, 0xd0, 0xa5, 0xa5, 0x5f, 0x69, 0x82, 0x83, 0x83, 0xa2, 0x4b, 0x97, 0x0f, 0xb2, 0xb1, - 0xd2, 0xb0, 0x10, 0x84, 0x4e, 0xe7, 0x14, 0xcb, 0x21, 0x04, 0x88, 0x64, 0xbd, 0xc6, 0xd6, 0x3d, - 0x51, 0xd6, 0x6b, 0xff, 0xc5, 0x56, 0xbb, 0xac, 0x63, 0xe0, 0x83, 0x94, 0xc1, 0x94, 0xcc, 0x81, - 0x76, 0xf6, 0x20, 0x10, 0xc6, 0xc9, 0xaa, 0xd8, 0x00, 0xbc, 0x4c, 0xfa, 0x98, 0x54, 0xb1, 0xd6, - 0x6a, 0x81, 0xd5, 0xb4, 0xa7, 0x95, 0x62, 0xcf, 0x10, 0xcd, 0xc2, 0x06, 0x38, 0x60, 0x9e, 0x26, - 0x92, 0x94, 0x27, 0xa1, 0xb8, 0xde, 0x08, 0x58, 0x8c, 0x2c, 0x74, 0x85, 0x73, 0x52, 0xd6, 0x23, - 0x65, 0xb6, 0x3e, 0x52, 0xf4, 0xc9, 0x6b, 0x72, 0xad, 0x0a, 0x28, 0x2b, 0x1f, 0xae, 0xe2, 0x38, - 0x8f, 0xd8, 0x91, 0xed, 0x46, 0xc0, 0xa2, 0x8c, 0x09, 0x30, 0x81, 0x03, 0x27, 0x0b, 0xc9, 0x03, - 0xec, 0x29, 0xec, 0x92, 0x91, 0x35, 0x85, 0xb3, 0x04, 0x36, 0x43, 0xbc, 0x07, 0x5e, 0xe0, 0x11, - 0x00, 0x59, 0x49, 0x77, 0x8b, 0x2c, 0xf0, 0x13, 0x44, 0xc2, 0x44, 0x81, 0x7b, 0x26, 0x22, 0x08, - 0xaa, 0x31, 0xa7, 0x84, 0xb2, 0x06, 0xe7, 0x27, 0x32, 0x7b, 0xb7, 0x23, 0x0d, 0xc2, 0xb8, 0xc2, - 0x77, 0x11, 0xf0, 0xee, 0xeb, 0xdd, 0xc2, 0xa1, 0x2f, 0x40, 0x01, 0x29, 0x58, 0x1d, 0xd8, 0x2d, - 0xc7, 0x08, 0xcf, 0x64, 0x71, 0x13, 0xc9, 0xbc, 0x60, 0xd7, 0xc0, 0x4c, 0x2c, 0x52, 0xb8, 0x8a, - 0x51, 0xf0, 0x12, 0x1b, 0x65, 0x53, 0x31, 0xc4, 0xb8, 0x56, 0xca, 0x2e, 0x6a, 0xd1, 0xbd, 0x50, - 0xdb, 0x3c, 0x36, 0x40, 0xc0, 0xe3, 0x29, 0xaa, 0xa3, 0x7b, 0x60, 0xd1, 0x58, 0x1a, 0xda, 0x82, - 0xe4, 0x15, 0xd6, 0xdc, 0xde, 0xc8, 0xfd, 0xc3, 0x2d, 0x44, 0x24, 0x1e, 0xf3, 0xd2, 0x85, 0x04, - 0x0c, 0xfa, 0xd7, 0xb4, 0x08, 0xf1, 0x98, 0x2d, 0xc4, 0x90, 0x37, 0x30, 0x35, 0xa8, 0x2f, 0xb5, - 0xef, 0x5d, 0x04, 0x1f, 0x5c, 0x6b, 0x8d, 0x91, 0xc8, 0x99, 0x0c, 0xad, 0xa2, 0x9b, 0x81, 0x30, - 0xcf, 0x31, 0x96, 0x56, 0x58, 0x15, 0x98, 0xed, 0xd4, 0x48, 0x35, 0xd1, 0x60, 0x7b, 0x22, 0x81, - 0x18, 0x4c, 0x82, 0x6b, 0xf0, 0xe3, 0x96, 0xd6, 0xc2, 0x78, 0x0c, 0xc8, 0x55, 0x0a, 0x72, 0xc7, - 0xbd, 0xda, 0x9d, 0xad, 0xd0, 0x4c, 0x74, 0x99, 0x06, 0x4e, 0x79, 0x4b, 0x4c, 0x1a, 0x44, 0x60, - 0x4f, 0x20, 0x29, 0x4e, 0xa6, 0xd9, 0x7b, 0x65, 0xa6, 0x01, 0x34, 0x3a, 0x38, 0x98, 0x02, 0x83, - 0xda, 0xe3, 0x8f, 0x60, 0x3d, 0x5a, 0xe0, 0xba, 0x16, 0x39, 0x70, 0x11, 0x45, 0x26, 0x6e, 0x18, - 0x44, 0xc2, 0x4d, 0x83, 0xe9, 0x68, 0x87, 0xc7, 0xb4, 0x1c, 0x37, 0x6b, 0x40, 0xf3, 0xde, 0x85, - 0x23, 0x42, 0xcf, 0x6f, 0x1e, 0xe8, 0x86, 0x9e, 0xd7, 0xe4, 0x17, 0x86, 0xe0, 0x82, 0x14, 0x7c, - 0xa8, 0xf4, 0xd4, 0x50, 0x76, 0x27, 0x94, 0xe8, 0x62, 0xfe, 0x44, 0xdc, 0xb4, 0x25, 0xe2, 0x76, - 0x9b, 0x37, 0xfc, 0x5f, 0x98, 0x9c, 0xf5, 0xe5, 0x2c, 0x48, 0x2c, 0x40, 0x88, 0x25, 0x77, 0xf8, - 0x5e, 0xcc, 0xad, 0xb0, 0xcf, 0x68, 0x07, 0x04, 0x39, 0xde, 0x6a, 0xaf, 0x2b, 0xcc, 0x6b, 0xe5, - 0xb2, 0x4c, 0xd0, 0x58, 0x7b, 0xa6, 0x62, 0x0c, 0xaf, 0x44, 0xc7, 0x73, 0x63, 0x8a, 0xe7, 0x6e, - 0xce, 0x26, 0x67, 0xe3, 0xf3, 0x2e, 0xa5, 0x03, 0xce, 0x03, 0x7e, 0xe4, 0xfc, 0xd2, 0x46, 0x51, - 0xb1, 0x75, 0x71, 0x70, 0x30, 0x67, 0xa7, 0x3c, 0x98, 0xeb, 0x61, 0xb5, 0x33, 0x56, 0x09, 0xd8, - 0x9c, 0x9d, 0x0f, 0xa5, 0xac, 0x66, 0x96, 0x7e, 0x99, 0xd9, 0xfa, 0x45, 0xad, 0x76, 0xc6, 0xec, - 0x76, 0x92, 0x50, 0x42, 0x64, 0x3a, 0x9a, 0xd9, 0x2a, 0x45, 0x41, 0x71, 0xad, 0x3a, 0xae, 0x02, - 0x7f, 0x63, 0x05, 0xf3, 0x2a, 0xc6, 0xd5, 0xd3, 0x80, 0x27, 0x76, 0xc5, 0xb9, 0x52, 0xa0, 0x02, - 0xc1, 0x35, 0xa9, 0x06, 0x04, 0xe5, 0xda, 0xf9, 0x26, 0xf4, 0x97, 0x1c, 0x9e, 0x03, 0x8b, 0x70, - 0xd6, 0x27, 0x30, 0x4b, 0x63, 0xfc, 0x77, 0x1b, 0x98, 0x60, 0x18, 0x56, 0xaa, 0x0f, 0x63, 0x10, - 0x8f, 0x62, 0x5d, 0xe1, 0xf7, 0x09, 0xc7, 0xb4, 0x8d, 0xdb, 0xca, 0x4b, 0xbc, 0x0e, 0xfa, 0xc3, - 0xeb, 0xa7, 0xb7, 0xc3, 0xeb, 0x76, 0x5b, 0x4d, 0xb5, 0x0c, 0x66, 0x67, 0xd7, 0xe7, 0xe2, 0x32, - 0x58, 0xee, 0xd0, 0xea, 0x2e, 0x00, 0xe6, 0x2e, 0x47, 0x4b, 0x4b, 0x4e, 0xb6, 0x0a, 0xe8, 0x0e, - 0x0f, 0xda, 0xbf, 0xa4, 0x58, 0xd1, 0xa7, 0x2d, 0x0d, 0xd5, 0xbe, 0xee, 0x46, 0xee, 0xa4, 0xdd, - 0x16, 0xf3, 0xb3, 0xbb, 0xf3, 0x60, 0x89, 0xad, 0x5f, 0x42, 0xcd, 0x57, 0xf8, 0x5c, 0xd6, 0xf8, - 0x1c, 0xb5, 0x8a, 0xf5, 0x7a, 0x59, 0xa3, 0xaa, 0x0b, 0x92, 0x5c, 0xbb, 0x9e, 0x5f, 0xb0, 0xb0, - 0xdc, 0x9c, 0x4d, 0xdb, 0x6d, 0x02, 0xb0, 0xd1, 0x5b, 0xb8, 0xd8, 0xd9, 0xc2, 0x85, 0xda, 0x42, - 0x0a, 0x67, 0x11, 0xcb, 0x8f, 0x58, 0x84, 0x59, 0xa5, 0xde, 0x05, 0x1c, 0xd3, 0xd6, 0xc6, 0xe7, - 0xce, 0x9b, 0x58, 0x14, 0xa5, 0x75, 0x01, 0x7e, 0xc4, 0x0f, 0x6a, 0x95, 0xaa, 0x4d, 0x4c, 0x3a, - 0x9d, 0xda, 0x25, 0x1d, 0x3f, 0x9d, 0xea, 0xe4, 0xc1, 0x78, 0x98, 0x3c, 0x85, 0x29, 0xc3, 0x64, - 0x76, 0x74, 0x73, 0xc3, 0x3e, 0xb2, 0xbb, 0x80, 0xaa, 0xa2, 0x47, 0x71, 0x0c, 0x85, 0xbb, 0xcb, - 0x55, 0xee, 0x55, 0x90, 0x7a, 0x0d, 0x96, 0xec, 0x6a, 0x54, 0x81, 0x59, 0xd4, 0xf8, 0xf0, 0xf7, - 0x98, 0xf2, 0xaa, 0xd2, 0x7c, 0xa3, 0xd6, 0xa2, 0x59, 0x87, 0x1f, 0x1c, 0x9c, 0xb8, 0x0b, 0x51, - 0x77, 0xf4, 0xfc, 0xe3, 0xf5, 0xfa, 0x9e, 0xbe, 0x90, 0x00, 0xab, 0xa3, 0xb7, 0x8a, 0x02, 0xf0, - 0x13, 0x05, 0x00, 0x7a, 0xff, 0x09, 0x3a, 0x4c, 0x3b, 0x03, 0xa8, 0xb1, 0x4e, 0x87, 0x0b, 0xe3, - 0x83, 0x83, 0x71, 0xbb, 0x3d, 0xbc, 0x04, 0x53, 0x5c, 0x6d, 0x22, 0xb8, 0x0f, 0x11, 0x58, 0x92, - 0x15, 0x6a, 0xa8, 0x98, 0x06, 0x2a, 0x2f, 0x22, 0x23, 0xac, 0x7e, 0xc2, 0x2a, 0x23, 0x42, 0xce, - 0x9d, 0xad, 0x5e, 0x22, 0xcf, 0x8f, 0x00, 0x2f, 0xdc, 0x92, 0x9c, 0x77, 0xd0, 0x5b, 0x94, 0xb3, - 0xca, 0xca, 0xb8, 0x90, 0xcf, 0x63, 0xd2, 0xa7, 0x98, 0x00, 0xba, 0x8c, 0x55, 0x09, 0x36, 0x25, - 0x8e, 0x89, 0x86, 0x93, 0x9a, 0xee, 0xe4, 0x42, 0xcf, 0x3d, 0x8b, 0x92, 0xd7, 0x20, 0xc1, 0x7b, - 0x97, 0x7e, 0x49, 0x71, 0x2b, 0xbb, 0x35, 0x7e, 0x0a, 0xc7, 0xa3, 0xee, 0x04, 0x42, 0x83, 0x95, - 0x3a, 0x9d, 0x73, 0x8f, 0xba, 0x46, 0xd4, 0x6f, 0x03, 0xc5, 0x35, 0x67, 0x69, 0xbb, 0x30, 0xb2, - 0x78, 0xd3, 0xbd, 0x27, 0x8a, 0xf1, 0xc4, 0xb6, 0x88, 0x2a, 0x99, 0xc9, 0x78, 0x2a, 0x1d, 0xd6, - 0xd6, 0x19, 0x2d, 0x84, 0xb2, 0x0a, 0x60, 0xc0, 0x61, 0xed, 0x7a, 0x4d, 0xf1, 0x68, 0x26, 0xe8, - 0x99, 0xff, 0x18, 0x44, 0x4f, 0xbd, 0x7a, 0x7c, 0xec, 0x39, 0x46, 0x21, 0x92, 0x65, 0x21, 0x5f, - 0x35, 0xb1, 0x43, 0x28, 0x54, 0xa8, 0x79, 0xe0, 0xd5, 0x13, 0x08, 0xec, 0xc8, 0x61, 0xf5, 0x66, - 0x7a, 0xeb, 0x2b, 0xe5, 0x5c, 0x1c, 0x49, 0xca, 0x15, 0x71, 0x48, 0xbd, 0x3f, 0x39, 0x0d, 0xc7, - 0xd4, 0xb4, 0xfb, 0xd8, 0x56, 0xa7, 0x37, 0x1e, 0x14, 0x47, 0x29, 0x92, 0xda, 0x9f, 0x7b, 0x6f, - 0x65, 0xfd, 0x02, 0xdb, 0x79, 0x18, 0xe6, 0xa3, 0x37, 0x6e, 0x0e, 0x99, 0xd6, 0x0e, 0xe7, 0xb6, - 0xc6, 0x80, 0xd1, 0x77, 0x77, 0xaa, 0x60, 0x2f, 0x26, 0x3a, 0x8e, 0xe6, 0x78, 0xa6, 0xc2, 0xd5, - 0x4e, 0xbf, 0xf5, 0x9a, 0xe2, 0x7d, 0x51, 0xe0, 0x8f, 0xe5, 0x13, 0x53, 0x91, 0x6d, 0x97, 0x44, - 0x7f, 0xb8, 0xf3, 0xda, 0x76, 0xc9, 0xa1, 0x95, 0x19, 0xa0, 0x9b, 0x91, 0xa0, 0x9a, 0x66, 0xaa, - 0xa1, 0xb6, 0x46, 0xb0, 0xf8, 0xf1, 0x66, 0xa3, 0xe2, 0x21, 0x3b, 0x73, 0xf3, 0x61, 0x8b, 0x8a, - 0x70, 0x2f, 0x4c, 0xca, 0x8d, 0x09, 0x42, 0xe0, 0x72, 0x99, 0x93, 0xf4, 0xb1, 0xd9, 0x33, 0x05, - 0xec, 0x82, 0x12, 0xc2, 0x23, 0x4a, 0x09, 0xc6, 0x77, 0x0f, 0xa4, 0x4b, 0x20, 0xc4, 0xb2, 0x4b, - 0x5f, 0xc9, 0x73, 0x33, 0x06, 0x08, 0x9c, 0xe8, 0xd6, 0x25, 0xb7, 0x7a, 0x5b, 0xce, 0x11, 0x08, - 0xa1, 0x61, 0x04, 0xd7, 0xf0, 0x2e, 0xc8, 0x68, 0x81, 0xb3, 0xc3, 0xb3, 0xe2, 0x7c, 0xc7, 0x87, - 0x92, 0xc6, 0xcf, 0xcb, 0x6a, 0x9f, 0x86, 0xbb, 0x99, 0x92, 0x08, 0x59, 0x61, 0x20, 0xa4, 0x2b, - 0xc4, 0x00, 0x31, 0x90, 0x71, 0x55, 0xb2, 0x1a, 0x6b, 0xd7, 0x66, 0x8f, 0x76, 0x8c, 0x63, 0x4d, - 0x83, 0xe6, 0xdc, 0x42, 0xf2, 0x1f, 0xb6, 0xed, 0xe1, 0x2c, 0x54, 0x49, 0xdf, 0x38, 0x50, 0xd1, - 0xae, 0x2e, 0x90, 0xbf, 0x4a, 0x14, 0xa3, 0x7f, 0x8d, 0x36, 0x66, 0x9a, 0x6a, 0xed, 0x1f, 0xa8, - 0x4c, 0x61, 0x95, 0xa1, 0xa5, 0xa6, 0xaa, 0x40, 0x2d, 0x55, 0xce, 0x47, 0xda, 0x4b, 0xe8, 0x4e, - 0x63, 0xf9, 0x22, 0x2e, 0x92, 0xdb, 0x78, 0x7c, 0x42, 0xef, 0x03, 0xfc, 0x58, 0xe4, 0xd7, 0x9c, - 0x40, 0x52, 0x5e, 0x3b, 0xb9, 0x6a, 0xf0, 0x1c, 0x47, 0x56, 0xc8, 0xf4, 0x6b, 0x92, 0xa6, 0xfb, - 0x81, 0x54, 0x55, 0xeb, 0x72, 0x16, 0xd1, 0xae, 0xfe, 0x10, 0x47, 0x31, 0xe0, 0x6b, 0xa8, 0x9f, - 0x69, 0x54, 0x51, 0x23, 0xa5, 0x5c, 0xb2, 0x96, 0x5e, 0xa6, 0x64, 0x6b, 0xef, 0x2a, 0xee, 0x3a, - 0x56, 0x65, 0xc6, 0x87, 0x55, 0xae, 0x7b, 0x82, 0xd9, 0xcc, 0x63, 0x40, 0xbe, 0x26, 0xf7, 0x62, - 0xd0, 0xd5, 0x18, 0x2e, 0x31, 0xb7, 0xe2, 0x57, 0x75, 0xa1, 0x8a, 0x58, 0xd8, 0x28, 0x1e, 0x08, - 0xce, 0x9a, 0x61, 0xe2, 0x81, 0xfa, 0xe5, 0xd8, 0x3c, 0xe9, 0x96, 0xcb, 0x2c, 0xaa, 0x3c, 0xef, - 0x5f, 0xf8, 0x72, 0x11, 0xef, 0x88, 0xb0, 0x34, 0xa2, 0x54, 0xa4, 0xff, 0x1a, 0x24, 0x1c, 0x80, - 0x7c, 0x94, 0xac, 0xd2, 0x64, 0x12, 0x5b, 0x82, 0xf4, 0xba, 0x0e, 0x17, 0xc0, 0x77, 0xad, 0x7a, - 0x56, 0x1d, 0x3e, 0x08, 0xf6, 0x37, 0xcc, 0x02, 0x11, 0x0a, 0x50, 0x76, 0x08, 0xf3, 0xc0, 0xac, - 0x56, 0x7b, 0x63, 0x4f, 0xc4, 0xda, 0x5a, 0x08, 0x5f, 0x44, 0x55, 0x30, 0x09, 0xd7, 0xeb, 0x14, - 0x7e, 0xc9, 0x0e, 0xca, 0x22, 0x78, 0x29, 0x6a, 0xa1, 0x70, 0x55, 0x64, 0xcd, 0xc4, 0xb7, 0xc1, - 0x64, 0xbd, 0x1e, 0x43, 0xed, 0x6c, 0xc5, 0x2c, 0x1c, 0x5e, 0x5e, 0x07, 0x73, 0xd2, 0xfa, 0x5f, - 0xcd, 0x2e, 0x69, 0xf0, 0xd6, 0xe5, 0xe4, 0x65, 0xaa, 0xe9, 0xf0, 0xc5, 0x41, 0x2e, 0x1c, 0x2b, - 0x8f, 0x3a, 0xf3, 0x16, 0x61, 0xa1, 0xc5, 0x44, 0x13, 0x9b, 0x68, 0x32, 0xab, 0x1a, 0x6e, 0x2c, - 0xba, 0xce, 0xc5, 0x91, 0xd2, 0x5e, 0xfc, 0xa5, 0x9a, 0x9b, 0x74, 0xbc, 0x43, 0x10, 0x4d, 0xac, - 0x7b, 0x5a, 0x5d, 0x76, 0xe5, 0xbc, 0x11, 0xc5, 0x7d, 0xbb, 0x7c, 0x6a, 0xc6, 0x37, 0x56, 0xeb, - 0x81, 0x15, 0xc3, 0x84, 0xf5, 0xaa, 0xad, 0xc5, 0x45, 0x5b, 0x4c, 0x67, 0x13, 0x25, 0xd8, 0x65, - 0xd9, 0x4a, 0xa9, 0x70, 0xc0, 0x53, 0xa7, 0xad, 0x07, 0xa2, 0x75, 0x01, 0x85, 0x11, 0x48, 0xad, - 0xa6, 0xea, 0x89, 0x81, 0x45, 0xd6, 0xba, 0xc7, 0x95, 0x58, 0x44, 0x06, 0xe3, 0x4d, 0xed, 0x2e, - 0x45, 0xbb, 0x13, 0xda, 0x0e, 0x1a, 0x4e, 0xb2, 0x70, 0x0e, 0x84, 0x68, 0xe3, 0x6e, 0x76, 0xea, - 0x5e, 0x07, 0xf7, 0xb6, 0xba, 0x33, 0x98, 0x23, 0x95, 0xae, 0x58, 0x8a, 0x4b, 0xb8, 0xa0, 0x9c, - 0x8c, 0xf8, 0x42, 0x70, 0x7c, 0xa7, 0xb8, 0x78, 0x81, 0xe0, 0xb5, 0xf0, 0x86, 0xf0, 0xd8, 0xa6, - 0xb0, 0xf5, 0xc9, 0x8e, 0x66, 0xbd, 0x3b, 0x38, 0x58, 0xf0, 0x51, 0x07, 0x07, 0x1a, 0x78, 0x18, - 0xfd, 0x01, 0x43, 0xb8, 0x80, 0xdc, 0xb0, 0x4f, 0xe0, 0xbb, 0xcb, 0x20, 0x11, 0x36, 0x3b, 0x06, - 0x09, 0x62, 0xcf, 0x3b, 0xf4, 0x88, 0x28, 0x7c, 0xaf, 0x10, 0x57, 0x3f, 0x12, 0x07, 0x27, 0x7b, - 0xa1, 0x31, 0x74, 0xbd, 0x02, 0xdc, 0x57, 0x80, 0xc5, 0x6b, 0x94, 0x28, 0x0c, 0xa5, 0x44, 0x00, - 0xbc, 0xec, 0x84, 0xc5, 0x41, 0x25, 0xa9, 0xca, 0xe0, 0x56, 0x60, 0x5e, 0x5a, 0xae, 0x5b, 0x6e, - 0xc9, 0x82, 0x39, 0x7a, 0xba, 0x5d, 0xaf, 0x07, 0x9c, 0x47, 0xa5, 0x1e, 0x4d, 0x41, 0x2b, 0x81, - 0x7c, 0x86, 0xb8, 0x95, 0x82, 0xdd, 0x1c, 0xd1, 0xe6, 0x44, 0xdc, 0xc2, 0xd7, 0xb5, 0x22, 0x36, - 0x9e, 0x97, 0xf3, 0xf2, 0x70, 0xe6, 0x29, 0x12, 0x00, 0x6a, 0xf0, 0x33, 0x55, 0x38, 0xbb, 0x0a, - 0xec, 0xbe, 0xc3, 0x2b, 0xd5, 0x07, 0x3f, 0xee, 0xd5, 0x76, 0xa8, 0x77, 0x29, 0x6e, 0x61, 0xf1, - 0xc8, 0x93, 0x6f, 0x08, 0x9b, 0x6f, 0x55, 0xd8, 0x4c, 0x9e, 0xfa, 0xf2, 0xe0, 0xe0, 0x8d, 0xbb, - 0xe4, 0xcc, 0x29, 0xed, 0x33, 0xb8, 0xc4, 0xca, 0x5b, 0x59, 0x9d, 0x29, 0x3b, 0x06, 0x7e, 0x4e, - 0x02, 0x39, 0x3c, 0x09, 0x4e, 0xf6, 0x50, 0x37, 0xf4, 0xdc, 0xe3, 0xe0, 0xc4, 0xd3, 0x03, 0x87, - 0x97, 0xf6, 0x4c, 0xc7, 0xe2, 0xf2, 0x1e, 0xa7, 0xf6, 0xd8, 0x26, 0xf4, 0x66, 0x43, 0x13, 0xb5, - 0xa0, 0x5d, 0xf2, 0xd1, 0x2b, 0x73, 0x06, 0xe3, 0x5f, 0x50, 0xd2, 0xd4, 0xce, 0xbe, 0x35, 0x08, - 0x5d, 0x55, 0x4b, 0x2c, 0x28, 0xae, 0x29, 0x08, 0xbe, 0x50, 0xb2, 0x70, 0x0c, 0x2b, 0x4f, 0xef, - 0x7b, 0x55, 0x47, 0x9b, 0x5e, 0x43, 0x13, 0x9f, 0xe2, 0x28, 0x87, 0x40, 0x7a, 0xc3, 0x53, 0x38, - 0x6d, 0x9c, 0x26, 0xdb, 0xd4, 0x3a, 0xf8, 0x8d, 0x7d, 0xa0, 0x41, 0x5b, 0x1c, 0xee, 0xda, 0xd7, - 0x6d, 0x05, 0x90, 0x5d, 0x37, 0x9a, 0x3b, 0x5d, 0xef, 0x92, 0xec, 0x5d, 0x1a, 0x49, 0x1e, 0xde, - 0xef, 0xaa, 0xc5, 0xda, 0x29, 0xa7, 0x03, 0xd7, 0x3d, 0x6f, 0x2d, 0xbe, 0xd7, 0x5b, 0x7b, 0xe7, - 0x5a, 0xca, 0x22, 0x86, 0xc3, 0x6f, 0x90, 0x09, 0x1f, 0x2d, 0xde, 0x32, 0x34, 0xdc, 0xbf, 0xde, - 0xe6, 0x52, 0xf9, 0x8e, 0x2a, 0xb1, 0x6a, 0x0e, 0xc5, 0x84, 0xf1, 0x41, 0x58, 0x0d, 0xc5, 0xaa, - 0xa8, 0x54, 0x9a, 0x54, 0x05, 0xa5, 0xd5, 0xea, 0xc7, 0xf5, 0x9a, 0xce, 0xa3, 0x18, 0xc8, 0x0e, - 0xaa, 0xe1, 0xcf, 0xd5, 0xb3, 0x5d, 0x5a, 0x79, 0x30, 0xe3, 0x69, 0xa8, 0xb3, 0xdb, 0xd5, 0xa6, - 0x3e, 0xf2, 0x28, 0x10, 0x30, 0x16, 0x4f, 0x4d, 0x54, 0x3c, 0x2c, 0x10, 0xca, 0x35, 0x1d, 0x08, - 0xc0, 0xcf, 0x62, 0x50, 0x35, 0xf8, 0xbb, 0xff, 0x1d, 0x7c, 0xe3, 0xa9, 0x42, 0x35, 0xc3, 0x5b, - 0x77, 0x59, 0xbb, 0x97, 0x62, 0x45, 0x17, 0xb4, 0x69, 0xd7, 0xfe, 0xf6, 0x45, 0x02, 0x8d, 0xa6, - 0xca, 0xc2, 0xba, 0xdb, 0x15, 0x16, 0xba, 0x3c, 0x1b, 0x8b, 0x5a, 0x3d, 0xdb, 0xad, 0xf7, 0x1c, - 0xbe, 0xd6, 0x5d, 0x2c, 0x92, 0xc0, 0x95, 0xf2, 0x04, 0x09, 0x47, 0x13, 0xf6, 0xf5, 0xe9, 0xbc, - 0x27, 0x4a, 0x75, 0xb7, 0x79, 0x23, 0x80, 0x85, 0x48, 0x6b, 0x6f, 0x6b, 0xf9, 0x58, 0xfc, 0x67, - 0x21, 0x48, 0x52, 0x8c, 0x7c, 0x4b, 0xe1, 0x08, 0x30, 0x54, 0x97, 0x7a, 0xb8, 0xb7, 0xda, 0x6c, - 0x94, 0x15, 0x58, 0x04, 0x0e, 0xf8, 0xbd, 0x8c, 0xc7, 0xf9, 0x5d, 0xe6, 0x88, 0x2b, 0x5d, 0x22, - 0xd4, 0x3a, 0x08, 0xb9, 0x55, 0xe9, 0x66, 0xee, 0x88, 0x17, 0x74, 0x4d, 0xe4, 0x26, 0x9a, 0x61, - 0x33, 0x85, 0x74, 0xc4, 0xaf, 0xba, 0xa8, 0x3a, 0x3e, 0xd7, 0x25, 0xcc, 0xe2, 0x20, 0x32, 0xa8, - 0xa6, 0xa1, 0x13, 0x6d, 0x43, 0x6a, 0x49, 0x6b, 0x8e, 0xb5, 0x04, 0xd3, 0xba, 0xa4, 0xc6, 0xe9, - 0x4d, 0x32, 0x0e, 0xdc, 0xb7, 0xa1, 0x9c, 0x75, 0x8b, 0x30, 0x1b, 0xe7, 0xd7, 0xae, 0xd7, 0x1e, - 0x78, 0x5d, 0x99, 0xeb, 0x3c, 0xdf, 0xe3, 0x27, 0xf6, 0x79, 0xd3, 0x77, 0xde, 0xc6, 0x1c, 0x65, - 0xaa, 0x63, 0xe1, 0x0b, 0xa6, 0xf2, 0xc5, 0x05, 0xc9, 0x90, 0x6b, 0x07, 0x18, 0x81, 0x4a, 0x1c, - 0xea, 0x4c, 0x9e, 0xcb, 0xc7, 0x9a, 0x55, 0xe3, 0x6e, 0xf8, 0xe0, 0x59, 0xb1, 0xc8, 0xde, 0x29, - 0x82, 0x7d, 0x93, 0xe3, 0x52, 0x91, 0x94, 0x3d, 0xae, 0xb3, 0x85, 0x78, 0x71, 0xce, 0x7b, 0x10, - 0xab, 0x79, 0x58, 0x96, 0xf0, 0x84, 0xfc, 0xd6, 0x60, 0xe3, 0x6d, 0x84, 0x6c, 0x02, 0x67, 0x29, - 0x17, 0x1b, 0xe2, 0x5d, 0x23, 0xc4, 0x1d, 0x20, 0x33, 0x60, 0x26, 0x55, 0xcc, 0x1e, 0x6c, 0xf1, - 0x00, 0x33, 0x2b, 0xad, 0x55, 0x1d, 0x12, 0xbb, 0x8a, 0xa8, 0xa4, 0x01, 0x15, 0x41, 0x4a, 0xf2, - 0xf1, 0xf9, 0x1e, 0xdf, 0xf8, 0x54, 0x55, 0x9c, 0xf5, 0xcf, 0x7d, 0x04, 0x28, 0x94, 0x27, 0x4c, - 0x13, 0x8c, 0xfc, 0x4d, 0x64, 0xd5, 0xf3, 0xbf, 0x11, 0xb0, 0x55, 0xab, 0x21, 0x17, 0xe2, 0x39, - 0xbd, 0x81, 0x0b, 0xbc, 0x1f, 0x73, 0x33, 0xbc, 0x7a, 0x9a, 0xa1, 0xbc, 0x4b, 0xf8, 0x30, 0x8d, - 0x8f, 0x72, 0xbc, 0x55, 0x84, 0xbe, 0x0f, 0x16, 0x3e, 0xff, 0xbc, 0xf0, 0x2f, 0x5d, 0x93, 0x43, - 0x15, 0x67, 0x57, 0xe2, 0x57, 0x71, 0x2c, 0x9e, 0x37, 0xe1, 0x48, 0x91, 0x5e, 0x6d, 0xeb, 0x35, - 0x5d, 0x77, 0x73, 0xd5, 0xc9, 0x8c, 0x73, 0x72, 0xfa, 0xec, 0xc3, 0xa9, 0xe3, 0xa9, 0x9c, 0xc8, - 0x90, 0x81, 0x5e, 0x29, 0xd8, 0xbf, 0xfa, 0xf7, 0x8d, 0x79, 0xfb, 0xfe, 0xe3, 0xcb, 0xed, 0x21, - 0xc7, 0x6a, 0xc8, 0xf3, 0x7b, 0x87, 0xbc, 0x7c, 0xf7, 0xc2, 0xf1, 0xc4, 0xdd, 0xd7, 0x2d, 0x76, - 0x03, 0x62, 0x6c, 0x60, 0x74, 0xeb, 0x30, 0xf7, 0x63, 0x6d, 0x6b, 0xf4, 0x3b, 0x81, 0x59, 0x78, - 0x9b, 0x4c, 0x43, 0x72, 0x8b, 0xe9, 0xeb, 0xeb, 0xcf, 0xa6, 0x04, 0x33, 0x0f, 0x7a, 0xbf, 0xbb, - 0xee, 0xa8, 0x15, 0xcd, 0xe0, 0x1a, 0xc7, 0x6b, 0xac, 0xa2, 0x80, 0x92, 0xf3, 0xba, 0xde, 0x61, - 0x19, 0x4e, 0xc2, 0x22, 0xe9, 0x25, 0xea, 0xf0, 0x17, 0xac, 0x9b, 0x05, 0xbd, 0xe4, 0xe7, 0x19, - 0xf8, 0x64, 0x9d, 0xfc, 0x9c, 0x8f, 0xf1, 0x27, 0x1c, 0x5b, 0xad, 0x45, 0xb0, 0xf3, 0xe6, 0xa1, - 0x89, 0x4a, 0xe1, 0x91, 0x64, 0xa3, 0x42, 0x31, 0x4a, 0x94, 0xa7, 0x6d, 0xa7, 0xd7, 0x73, 0xda, - 0x45, 0x77, 0x96, 0x97, 0x12, 0x3f, 0x73, 0x08, 0x15, 0x25, 0x6d, 0xf1, 0x58, 0xc6, 0x61, 0x11, - 0xcd, 0xda, 0xd2, 0xb7, 0x6e, 0x90, 0xfc, 0xb8, 0x7f, 0xaa, 0x54, 0x74, 0xb2, 0xa7, 0xc1, 0xe0, - 0xfb, 0xfe, 0xa8, 0xef, 0x0f, 0xaa, 0xc8, 0xf7, 0x30, 0x60, 0xe9, 0xfc, 0xf9, 0x75, 0x0f, 0x2d, - 0xa2, 0xd8, 0x2e, 0x3a, 0x6f, 0x1f, 0x38, 0x6d, 0x57, 0xb6, 0xf3, 0x43, 0xae, 0x8d, 0xf2, 0x12, - 0x3e, 0xa2, 0xd7, 0x76, 0xa8, 0x36, 0x36, 0xb5, 0x65, 0x92, 0xe9, 0xda, 0x67, 0xa8, 0xcf, 0xb9, - 0x95, 0xfe, 0xf6, 0xf1, 0x9b, 0xe8, 0xdf, 0x6d, 0x18, 0x59, 0x23, 0x8c, 0xcc, 0x8e, 0xb9, 0x1e, - 0xda, 0xf6, 0xbe, 0x10, 0x64, 0x9d, 0x6f, 0x8a, 0xd4, 0xac, 0x7a, 0xee, 0xf2, 0x59, 0x82, 0x58, - 0xf1, 0x31, 0xa5, 0xef, 0x24, 0x05, 0x94, 0x84, 0x62, 0x04, 0x47, 0x2c, 0x10, 0x24, 0x2c, 0xc4, - 0x12, 0x7f, 0x97, 0x42, 0x7d, 0x13, 0x7d, 0x55, 0x7d, 0x17, 0xd7, 0xe1, 0xcf, 0x5d, 0xa1, 0x17, - 0xa8, 0x8e, 0x18, 0x11, 0x70, 0x40, 0x50, 0x47, 0x68, 0x6d, 0x42, 0x5c, 0x31, 0xcd, 0x48, 0xfb, - 0xaf, 0xf8, 0xd4, 0xf4, 0x15, 0x2c, 0xb4, 0xff, 0x11, 0x7e, 0x00, 0xc9, 0x6b, 0x5e, 0x24, 0xd3, - 0x84, 0x62, 0xdd, 0x96, 0x1a, 0x18, 0x25, 0x45, 0x44, 0xd3, 0x35, 0xac, 0xe1, 0xe2, 0x82, 0x93, - 0x50, 0x8e, 0x28, 0xfc, 0x58, 0xd0, 0x77, 0x9d, 0x7c, 0x87, 0x5e, 0xbb, 0x76, 0x38, 0xc5, 0x99, - 0x5f, 0xc5, 0xea, 0xc5, 0x6f, 0xc7, 0x3f, 0x12, 0xaa, 0xec, 0x3b, 0xf4, 0x6a, 0xba, 0xb3, 0xf9, - 0x3a, 0xd8, 0xfc, 0x95, 0x1c, 0x86, 0xdd, 0x39, 0xfa, 0x4a, 0xe8, 0x93, 0xc9, 0x04, 0xd0, 0xbd, - 0xcd, 0xc3, 0xad, 0xfb, 0x26, 0xc1, 0x6a, 0xe1, 0xf7, 0x81, 0x28, 0x90, 0xdd, 0xff, 0x5e, 0x00, - 0xbd, 0x9c, 0x87, 0x16, 0x6a, 0xa3, 0xbe, 0x69, 0xdc, 0x6c, 0x58, 0xeb, 0xfc, 0x14, 0x3c, 0x2b, - 0x8a, 0x70, 0x49, 0x89, 0xc9, 0x74, 0xc9, 0x3e, 0x91, 0x58, 0xe9, 0x3c, 0xf9, 0xe3, 0x27, 0xfd, - 0x8d, 0xd7, 0xbd, 0x0e, 0xe7, 0xee, 0xb6, 0x01, 0xae, 0xae, 0xa5, 0x78, 0xe2, 0xaf, 0x2d, 0xc5, - 0x56, 0x51, 0x39, 0x76, 0x49, 0xcb, 0x29, 0x90, 0x2c, 0x99, 0xd5, 0x45, 0xb8, 0xca, 0x12, 0x50, - 0xcc, 0x14, 0x5b, 0x96, 0x40, 0x92, 0x25, 0x88, 0xef, 0xb5, 0x04, 0x72, 0x2b, 0xf5, 0xb4, 0x63, - 0x09, 0x62, 0xdb, 0x12, 0x5c, 0x54, 0xdf, 0x55, 0x78, 0x96, 0x4d, 0xe1, 0x44, 0x6e, 0xaf, 0x5d, - 0xbb, 0x84, 0x95, 0x59, 0xef, 0xde, 0xcd, 0xe2, 0x38, 0xe5, 0x9e, 0x9a, 0x09, 0x61, 0x8f, 0xe8, - 0x36, 0x4c, 0x1e, 0x5d, 0xdd, 0x25, 0x25, 0xe7, 0x13, 0x77, 0x7b, 0xbf, 0x48, 0x8a, 0x98, 0x41, - 0x8e, 0x3a, 0x40, 0x51, 0x5b, 0x76, 0xdc, 0x78, 0xd4, 0xc9, 0x7d, 0xb8, 0x95, 0x79, 0x47, 0x7a, - 0x8f, 0xa8, 0x0e, 0xff, 0xf1, 0xc3, 0x46, 0x58, 0x5b, 0x32, 0xc9, 0x2e, 0x1b, 0x65, 0x5a, 0x14, - 0x08, 0x47, 0x24, 0x0b, 0x4c, 0x62, 0x41, 0x57, 0x8b, 0xd4, 0x97, 0x10, 0x7e, 0xe5, 0x32, 0x45, - 0xa0, 0x8a, 0x4b, 0x3e, 0xf0, 0x87, 0x11, 0x44, 0xc2, 0x09, 0x88, 0x14, 0x7a, 0x6b, 0x56, 0xde, - 0x8a, 0x32, 0xc8, 0x7b, 0x47, 0x9d, 0x8c, 0x52, 0x15, 0xec, 0x5a, 0x6c, 0x23, 0xc0, 0x4d, 0xba, - 0x33, 0x0a, 0x77, 0x0e, 0x5d, 0x4b, 0x03, 0xc0, 0x55, 0xa5, 0x1c, 0x4a, 0x6f, 0xd0, 0xef, 0x1f, - 0xba, 0x65, 0x87, 0x0e, 0xb3, 0xd4, 0x37, 0x6d, 0xa0, 0x4b, 0x3c, 0x11, 0x05, 0x65, 0x3b, 0x13, - 0x33, 0xfa, 0xfb, 0x59, 0xc9, 0x64, 0x6c, 0x38, 0x42, 0x7d, 0xce, 0x20, 0x17, 0xfa, 0x9b, 0x1a, - 0xf9, 0xfd, 0xd2, 0x29, 0xcc, 0xb7, 0x0c, 0x1c, 0xfe, 0x86, 0x02, 0x49, 0x2b, 0x00, 0x83, 0x77, - 0x4b, 0x87, 0x3d, 0x66, 0x2a, 0xd1, 0xb7, 0x1f, 0xc2, 0xf4, 0x27, 0xfa, 0xa1, 0x97, 0x8b, 0xc4, - 0x2a, 0x19, 0xfb, 0xc6, 0xe5, 0xe0, 0xee, 0x25, 0xbd, 0xa2, 0x25, 0x56, 0xf9, 0x64, 0x42, 0x77, - 0xbb, 0x9d, 0xfe, 0x23, 0x96, 0x90, 0x7c, 0xae, 0xbe, 0x39, 0xe1, 0x54, 0x62, 0xd1, 0xd0, 0x97, - 0xbe, 0x27, 0xd9, 0xd8, 0x5b, 0xd7, 0xe9, 0x6f, 0x15, 0xa0, 0x96, 0xa4, 0xd6, 0x63, 0x10, 0x8d, - 0x9b, 0x86, 0xd4, 0xde, 0xec, 0x4b, 0x66, 0x69, 0x8b, 0xed, 0x46, 0xfc, 0xb4, 0x23, 0x3b, 0x95, - 0xe4, 0x00, 0x2a, 0x69, 0x79, 0x00, 0xa6, 0x43, 0x22, 0x29, 0xc6, 0xfe, 0x8f, 0x6e, 0x24, 0x66, - 0xa2, 0xec, 0x1d, 0x09, 0x78, 0xfe, 0xed, 0x41, 0xf7, 0x3b, 0xaf, 0x12, 0xf2, 0x59, 0x99, 0xba, - 0x4e, 0x7b, 0x8f, 0xaf, 0x01, 0xae, 0xed, 0x08, 0xfe, 0x42, 0xa6, 0xa0, 0x0f, 0x12, 0x7b, 0x58, - 0xf0, 0x46, 0xad, 0xb8, 0x51, 0xcb, 0xe8, 0x65, 0x97, 0xa1, 0xd4, 0x9f, 0x6e, 0x73, 0x44, 0x04, - 0xfb, 0x2f, 0xa2, 0xa5, 0x0f, 0x06, 0xab, 0x96, 0xce, 0xdf, 0xc2, 0x6b, 0x7f, 0x74, 0x9d, 0x6f, - 0x9c, 0xb6, 0xc1, 0x3a, 0x26, 0x22, 0xe8, 0xd0, 0x95, 0x0c, 0xe4, 0x8d, 0x79, 0x71, 0xfd, 0x7e, - 0x95, 0xa6, 0x27, 0x4b, 0x4d, 0xcf, 0xe6, 0xb9, 0x58, 0x39, 0x8a, 0xea, 0xfb, 0x10, 0x9d, 0xa4, - 0x7b, 0x4b, 0x0c, 0xb9, 0xf9, 0xe2, 0x26, 0x94, 0x6c, 0x34, 0x03, 0x55, 0x2a, 0x53, 0x23, 0xcf, - 0x88, 0x11, 0x5f, 0x5c, 0xdf, 0xa5, 0x56, 0xc6, 0x13, 0x3d, 0x14, 0xab, 0xc2, 0x2f, 0x58, 0x4b, - 0x1a, 0x21, 0x3b, 0xb9, 0x9d, 0x1a, 0x65, 0x69, 0xaa, 0xde, 0x73, 0x11, 0x26, 0x28, 0x6a, 0xa7, - 0xb5, 0xbd, 0x0b, 0x11, 0xfc, 0xfb, 0x33, 0x53, 0x43, 0xb6, 0x2e, 0x24, 0x1a, 0x6c, 0x0b, 0xbd, - 0xe5, 0xc7, 0x04, 0xf7, 0xdd, 0x53, 0xc8, 0xbb, 0xf4, 0xbd, 0x12, 0x88, 0x75, 0x4e, 0x5f, 0x0a, - 0xa1, 0x2b, 0x0a, 0x95, 0xca, 0x81, 0x54, 0x97, 0x4a, 0x2d, 0x80, 0x39, 0xd2, 0x20, 0xec, 0x94, - 0x95, 0xac, 0x96, 0x5b, 0x4a, 0x01, 0x45, 0x4b, 0x67, 0x0c, 0x25, 0xba, 0xba, 0xb2, 0x53, 0x20, - 0x68, 0xa1, 0xa7, 0xb8, 0x93, 0x78, 0xfa, 0x8a, 0x33, 0x2f, 0x36, 0x94, 0x61, 0x76, 0xe4, 0xc6, - 0xe4, 0xcf, 0xcf, 0x9a, 0xd5, 0x86, 0x72, 0xee, 0xc9, 0x95, 0x74, 0xa3, 0x43, 0xfa, 0x97, 0x2f, - 0x7a, 0x5a, 0x7f, 0xc0, 0xc8, 0xb3, 0x06, 0xb9, 0x51, 0x90, 0xae, 0xb1, 0x6d, 0xb5, 0xff, 0x3f, - 0x0b, 0x84, 0x0b, 0x87, 0xb2, 0x1d, 0x1f, 0xc2, 0xfb, 0x49, 0xe1, 0x72, 0x76, 0xf3, 0x4c, 0xf9, - 0x6f, 0x99, 0x58, 0xcd, 0x40, 0xa5, 0xd2, 0xb7, 0x80, 0x82, 0xd2, 0xbd, 0xf4, 0xf0, 0xc6, 0x23, - 0xd7, 0x3b, 0xde, 0x50, 0x7e, 0xa0, 0x32, 0x1f, 0x7f, 0xda, 0xba, 0xba, 0x33, 0x78, 0x4a, 0xc7, - 0x61, 0xe3, 0x78, 0xf1, 0x7e, 0xe2, 0x3a, 0x8f, 0xe8, 0x1e, 0x60, 0x30, 0x0f, 0x8b, 0x32, 0xfe, - 0x91, 0x3e, 0x7c, 0x42, 0xe3, 0x8c, 0x5b, 0x35, 0x8a, 0x59, 0x9f, 0x65, 0xbe, 0x95, 0xf6, 0xff, - 0xcd, 0x16, 0x3b, 0x1a, 0xf5, 0x3a, 0x93, 0x94, 0x17, 0x7e, 0x62, 0xf9, 0x24, 0xff, 0xb6, 0xaf, - 0x3e, 0xd5, 0x31, 0x0c, 0xfa, 0x10, 0xaa, 0x4f, 0x28, 0x76, 0x72, 0x8f, 0x04, 0x54, 0x82, 0x3a, - 0x83, 0xfb, 0x47, 0xe0, 0xb8, 0x23, 0xff, 0xac, 0xf3, 0xe9, 0x53, 0xfb, 0x7c, 0xf4, 0xe9, 0xd3, - 0xf8, 0xf0, 0xd3, 0xa7, 0x2e, 0x7e, 0xda, 0x8f, 0x46, 0xde, 0x7a, 0xab, 0x81, 0x6a, 0x1c, 0xf1, - 0xcf, 0xc0, 0x39, 0xfb, 0xf4, 0xa9, 0x5c, 0x7f, 0xfa, 0xe4, 0x9e, 0xb7, 0x21, 0x5b, 0xff, 0x80, - 0x34, 0x9d, 0x09, 0x14, 0xcb, 0xfb, 0x8a, 0x78, 0x06, 0x4c, 0x6f, 0xe4, 0x88, 0x7f, 0xfd, 0xed, - 0xb1, 0xf7, 0x82, 0xfa, 0x0f, 0x1f, 0xc3, 0x7c, 0x88, 0xa7, 0x2f, 0x17, 0xa4, 0x64, 0xa7, 0x97, - 0x4e, 0xfb, 0x9f, 0x10, 0x69, 0xb9, 0x5b, 0x1d, 0x3a, 0xed, 0x7f, 0x81, 0x67, 0xb6, 0xeb, 0xa1, - 0x83, 0xb8, 0x7b, 0xbe, 0x57, 0xad, 0xba, 0x23, 0xc0, 0x71, 0x7e, 0xc7, 0xde, 0xbf, 0x19, 0xad, - 0xfb, 0x0b, 0xda, 0x74, 0x81, 0x0a, 0xf7, 0xac, 0xdf, 0xf9, 0x21, 0xec, 0x4c, 0x9e, 0x75, 0x7e, - 0x3c, 0x5f, 0xc1, 0x21, 0x77, 0x44, 0xb2, 0x5b, 0x7b, 0x44, 0xb5, 0xe5, 0x36, 0x50, 0xa7, 0x9d, - 0xc1, 0x0d, 0x36, 0xff, 0x77, 0x1e, 0x82, 0xe0, 0xe1, 0xe7, 0x7a, 0x98, 0x4e, 0x69, 0x43, 0xa7, - 0xc4, 0xfc, 0x9f, 0x7b, 0x44, 0x9f, 0xeb, 0x61, 0x3a, 0xcd, 0x76, 0x62, 0x35, 0x16, 0x8d, 0x3c, - 0x3b, 0x56, 0xaf, 0x55, 0xb5, 0x06, 0x3a, 0xfd, 0xa2, 0xde, 0xd5, 0x01, 0x57, 0xf7, 0xc1, 0xd5, - 0x7d, 0x71, 0x8b, 0xff, 0x42, 0x7f, 0xb0, 0x11, 0x26, 0xbe, 0xa7, 0x57, 0xd9, 0x24, 0x38, 0x1b, - 0x42, 0xbf, 0x82, 0x8d, 0xf6, 0x57, 0x11, 0x7f, 0x2e, 0x04, 0xba, 0x17, 0x76, 0xd0, 0x6f, 0xc1, - 0x31, 0x00, 0xae, 0x1b, 0x6a, 0x81, 0xd2, 0xe6, 0xbe, 0x8a, 0x29, 0x9b, 0x46, 0xc4, 0x8b, 0xfb, - 0xdb, 0xca, 0xf4, 0xbe, 0xb6, 0xcd, 0x70, 0x66, 0xc7, 0xaa, 0x58, 0x6f, 0x83, 0x5f, 0xb2, 0x77, - 0xf6, 0x4e, 0xe1, 0xd1, 0xde, 0x1d, 0x5c, 0x49, 0x89, 0x54, 0x84, 0xea, 0x3d, 0x8b, 0x05, 0x6c, - 0x2a, 0x3f, 0x16, 0xdf, 0x6f, 0x1e, 0xf6, 0x54, 0x5c, 0x24, 0x3d, 0x4f, 0x45, 0x77, 0x66, 0xd5, - 0x81, 0xac, 0x2e, 0x17, 0x30, 0x08, 0x62, 0xc1, 0xd1, 0x4e, 0xe7, 0x6a, 0xfb, 0xbb, 0x9d, 0x89, - 0x01, 0x77, 0x3b, 0x57, 0x7b, 0xb6, 0x3a, 0xc3, 0xfb, 0xa6, 0x97, 0xe9, 0x4b, 0x49, 0x5f, 0x99, - 0xc4, 0x8a, 0x67, 0xd2, 0xf4, 0xbd, 0x25, 0xd7, 0xaa, 0xbc, 0xb5, 0x7b, 0x3a, 0x05, 0xdf, 0x0f, - 0xc4, 0xc3, 0xd4, 0x3c, 0x5c, 0xaa, 0x1b, 0x83, 0x66, 0x31, 0xdb, 0x90, 0x9d, 0x99, 0xe9, 0x56, - 0x9a, 0x87, 0x5b, 0xab, 0x3f, 0xcf, 0xc1, 0xfd, 0xf9, 0x94, 0xe9, 0x9e, 0x11, 0xa9, 0xbe, 0x93, - 0x28, 0x11, 0x75, 0xde, 0x3d, 0x20, 0x36, 0xe5, 0x0f, 0x35, 0xb8, 0xa8, 0x06, 0xab, 0x25, 0xe3, - 0x07, 0xec, 0xae, 0xa8, 0x57, 0xc4, 0x10, 0x35, 0x9b, 0x9d, 0x06, 0x12, 0x2e, 0xd4, 0x2e, 0x21, - 0x8f, 0xd5, 0x87, 0x46, 0x76, 0xac, 0x8d, 0x39, 0xa3, 0xa7, 0xa1, 0x67, 0xf2, 0x3c, 0xd8, 0x8b, - 0x8d, 0x74, 0x83, 0x70, 0x55, 0x22, 0x8f, 0x6e, 0xe3, 0xe6, 0x7c, 0x75, 0x74, 0x7b, 0x02, 0xb8, - 0xc6, 0x59, 0x6c, 0xe7, 0x42, 0x4c, 0xc4, 0x89, 0x35, 0xcf, 0xa4, 0xc9, 0x7f, 0xcd, 0x18, 0xad, - 0xa7, 0xf9, 0x07, 0x60, 0xab, 0xc1, 0xdf, 0xed, 0xce, 0x7a, 0x4f, 0xfa, 0xec, 0xf1, 0xb2, 0x0f, - 0xca, 0x1e, 0x2f, 0x1b, 0x7f, 0xf8, 0xba, 0x6c, 0x23, 0xe0, 0x37, 0xd2, 0x6b, 0x31, 0x1e, 0x6c, - 0x62, 0xdc, 0xa1, 0x4b, 0x7b, 0x19, 0x6c, 0x50, 0x27, 0xa7, 0x3b, 0x16, 0xfc, 0x94, 0x1c, 0xe6, - 0xe4, 0xc3, 0xf2, 0x33, 0x15, 0x3d, 0x2a, 0x47, 0x41, 0xf1, 0xe8, 0x89, 0x36, 0x07, 0xb0, 0xea, - 0x47, 0xdf, 0x7d, 0x77, 0x78, 0x06, 0xb7, 0x58, 0x94, 0xf8, 0x5f, 0x2a, 0xb2, 0xf3, 0xb3, 0xe8, - 0x5c, 0x4c, 0x55, 0x35, 0x8a, 0x42, 0x37, 0x71, 0xf5, 0xa5, 0xaa, 0xd6, 0x3d, 0xa9, 0x89, 0xaa, - 0x15, 0x72, 0x41, 0xf1, 0xd3, 0xfc, 0x15, 0xc8, 0xb8, 0xb7, 0x11, 0xde, 0x41, 0xd1, 0xc3, 0x50, - 0xde, 0xc1, 0x94, 0x9f, 0xc8, 0x5b, 0xbf, 0xe4, 0xa7, 0x44, 0x5b, 0xc8, 0x70, 0xa1, 0x32, 0x18, - 0x70, 0xea, 0x6a, 0x9b, 0xa9, 0x6b, 0xc2, 0x20, 0xe9, 0xd0, 0xd9, 0x62, 0x82, 0xd5, 0x53, 0x22, - 0x35, 0x41, 0x14, 0x1f, 0xf6, 0x12, 0x93, 0xaf, 0x49, 0x74, 0xaa, 0xa6, 0xf4, 0xe3, 0xa0, 0x6f, - 0x27, 0x4b, 0x72, 0x54, 0xb8, 0x19, 0xec, 0x7b, 0x2f, 0x6c, 0xbb, 0xd9, 0xd3, 0x62, 0xf4, 0xc4, - 0xef, 0x6f, 0x65, 0x53, 0x32, 0xea, 0x50, 0x00, 0x65, 0xe8, 0x70, 0x64, 0x37, 0x14, 0xd4, 0x90, - 0xc3, 0xcf, 0x47, 0xc3, 0xb7, 0x3a, 0x1c, 0x83, 0x22, 0x7b, 0xd2, 0x3f, 0x8c, 0xa1, 0xcb, 0xc8, - 0x82, 0x46, 0xd0, 0x67, 0xf4, 0x9b, 0x6e, 0x6a, 0x42, 0xbe, 0x2a, 0xd3, 0x46, 0x42, 0x2a, 0xfa, - 0xe5, 0x15, 0xfd, 0xb2, 0xc0, 0x3d, 0xea, 0xc4, 0x20, 0x07, 0xf0, 0x40, 0x69, 0x89, 0x51, 0xe6, - 0x53, 0x6c, 0x92, 0x04, 0xc5, 0xd3, 0x41, 0xdc, 0xf9, 0x01, 0xbb, 0x8b, 0x0f, 0xf3, 0x5e, 0x31, - 0xac, 0xe6, 0x05, 0x7c, 0x3d, 0x6d, 0x22, 0x52, 0xff, 0x3b, 0xd8, 0x6f, 0x33, 0x6b, 0x7a, 0x0f, - 0xd6, 0x83, 0xa3, 0x43, 0xd9, 0x4d, 0x15, 0xf7, 0x1c, 0xba, 0x31, 0x26, 0xe9, 0xf7, 0x47, 0xb1, - 0x7f, 0xd4, 0xef, 0x63, 0x62, 0xbd, 0x88, 0xb8, 0x9d, 0x9b, 0xf9, 0x8e, 0x30, 0x1f, 0x65, 0x24, - 0xbc, 0xa6, 0x39, 0x33, 0x6c, 0x95, 0x1b, 0x7b, 0x47, 0x1b, 0xd2, 0xd6, 0xb4, 0x59, 0xca, 0xa1, - 0xd9, 0x0c, 0xce, 0x77, 0x99, 0x03, 0x4b, 0xef, 0xef, 0x02, 0xc2, 0x3a, 0x00, 0x06, 0x18, 0xa8, - 0x41, 0x34, 0xeb, 0x53, 0x1b, 0x06, 0x1d, 0xe7, 0xee, 0x0b, 0x61, 0x5c, 0x65, 0x58, 0x2b, 0xa3, - 0x63, 0x1c, 0x21, 0xeb, 0xea, 0x9f, 0xbe, 0x23, 0xc3, 0x17, 0x58, 0xe8, 0x72, 0x8b, 0xba, 0x65, - 0x33, 0xb4, 0x4d, 0x93, 0x14, 0x6e, 0xde, 0x9d, 0xad, 0xd7, 0x79, 0xb7, 0xa4, 0x3f, 0xb7, 0xf4, - 0x27, 0xf4, 0x4c, 0xf6, 0xd9, 0xc0, 0x56, 0xd1, 0x79, 0x6e, 0xae, 0x87, 0xdb, 0xe3, 0x79, 0x2b, - 0x60, 0xfd, 0x66, 0x6c, 0x58, 0xf2, 0xed, 0x5a, 0xc3, 0xc8, 0xdb, 0x34, 0x79, 0x9d, 0xa9, 0x8a, - 0x63, 0x6b, 0x79, 0xb4, 0x9c, 0x3f, 0x74, 0x9c, 0xda, 0x65, 0x08, 0xef, 0xa5, 0x5d, 0xce, 0xbc, - 0x4d, 0x35, 0xff, 0x2e, 0x2a, 0x2b, 0xad, 0xba, 0x87, 0x3c, 0x4b, 0x56, 0x29, 0x95, 0xbe, 0x0a, - 0x7d, 0xeb, 0xa2, 0x45, 0x38, 0x1a, 0x80, 0x44, 0xe1, 0xc6, 0xd3, 0x34, 0x4a, 0x3f, 0xbf, 0x31, - 0xf0, 0xfb, 0xfe, 0xc6, 0x66, 0x8a, 0xe9, 0x78, 0x63, 0x69, 0xcd, 0x05, 0xdb, 0x1b, 0x2b, 0x77, - 0x36, 0x96, 0x36, 0x6d, 0x8c, 0xe6, 0xff, 0x5b, 0x1b, 0x33, 0xe2, 0xf0, 0xa5, 0x8d, 0x55, 0xb6, - 0xf2, 0x33, 0x5c, 0x8c, 0x3e, 0x7a, 0xf1, 0xe4, 0xf1, 0xc1, 0x55, 0xc4, 0x30, 0x0a, 0x26, 0xe9, - 0x61, 0x6a, 0x1e, 0x2e, 0x39, 0xea, 0xdb, 0x06, 0xd9, 0xc8, 0xd5, 0xe6, 0x7a, 0x7e, 0x30, 0x20, - 0x9e, 0x76, 0xe3, 0xe0, 0x3f, 0xdd, 0x78, 0x11, 0x47, 0x64, 0x90, 0x47, 0x6e, 0x1e, 0xfc, 0xe9, - 0xd2, 0x7b, 0x2b, 0x02, 0xfa, 0x90, 0x3c, 0x77, 0x2a, 0x1d, 0xe9, 0x52, 0xc1, 0xa5, 0xc7, 0xaa, - 0xe4, 0x41, 0x0c, 0x03, 0x29, 0xab, 0xa1, 0x07, 0x07, 0x5f, 0x3f, 0x16, 0x73, 0x53, 0xe9, 0xdb, - 0x73, 0x41, 0xaf, 0x0d, 0xb6, 0xe2, 0xfb, 0xad, 0x28, 0xb6, 0xf2, 0x40, 0xfb, 0x34, 0xda, 0x88, - 0x92, 0x39, 0x07, 0x6f, 0xe6, 0xe0, 0xc7, 0x0c, 0x3c, 0x58, 0xc0, 0x8d, 0x4b, 0x34, 0x89, 0x8c, - 0x8b, 0xf2, 0x75, 0x98, 0x44, 0xc0, 0x8c, 0x40, 0xa2, 0x5b, 0x78, 0xfc, 0x33, 0x55, 0x3f, 0x97, - 0xde, 0x0e, 0xa8, 0xcf, 0x63, 0x10, 0x9b, 0xd1, 0x38, 0x2c, 0xe5, 0x16, 0x12, 0x07, 0xff, 0x77, - 0xf8, 0x1b, 0xe3, 0x82, 0xf0, 0xa0, 0x0b, 0x47, 0xe7, 0x84, 0x06, 0x5d, 0x78, 0x7c, 0xae, 0x30, - 0x18, 0xfe, 0xfd, 0x71, 0x44, 0x39, 0x55, 0xf8, 0x56, 0x03, 0x49, 0xb7, 0x81, 0xd4, 0x10, 0xea, - 0xe1, 0xf6, 0x9c, 0xd1, 0x0e, 0xd5, 0x3e, 0xd3, 0x1f, 0x73, 0x99, 0x89, 0x3e, 0x4b, 0x27, 0x20, - 0xec, 0x2b, 0xe8, 0x44, 0x46, 0xb6, 0x12, 0xa7, 0x2f, 0xd2, 0x0a, 0x7d, 0x0c, 0xad, 0x54, 0x4e, - 0x05, 0xc3, 0x0c, 0xb3, 0x97, 0x6d, 0xe7, 0x91, 0x7a, 0x4a, 0xf1, 0xa4, 0xf9, 0xbe, 0x06, 0xfa, - 0x75, 0x7c, 0x1f, 0xcb, 0x26, 0xc6, 0xa7, 0x54, 0x60, 0xcd, 0xbc, 0xb0, 0x39, 0x16, 0xf3, 0x52, - 0x89, 0x51, 0x98, 0x37, 0x33, 0xfe, 0x97, 0xc6, 0x7e, 0x3d, 0xe3, 0x63, 0x2f, 0x3b, 0x08, 0x25, - 0xef, 0x71, 0x45, 0x69, 0xbb, 0x12, 0x08, 0x4d, 0x2b, 0xc6, 0xd7, 0xba, 0x47, 0xbd, 0x3f, 0x4d, - 0xe9, 0x64, 0xfa, 0x67, 0x19, 0xe2, 0xd2, 0xb5, 0x7d, 0x40, 0x20, 0x47, 0x25, 0x13, 0xe6, 0xf2, - 0xff, 0x5f, 0xfe, 0x57, 0x25, 0x59, 0x4d, 0xfe, 0xb0, 0xd1, 0x67, 0xa9, 0x53, 0xa7, 0xfc, 0x06, - 0x6b, 0x75, 0x34, 0xa6, 0xbe, 0x2a, 0x75, 0x5a, 0x1d, 0x90, 0x39, 0x94, 0xe4, 0xf3, 0xd1, 0xa7, - 0x4e, 0x36, 0x3a, 0x42, 0x7d, 0xcb, 0xd6, 0xf9, 0x66, 0x42, 0x99, 0x7d, 0x2b, 0xb5, 0xf8, 0xa4, - 0xfb, 0xe4, 0xc9, 0x13, 0xab, 0x79, 0xb2, 0xd5, 0xfc, 0xf8, 0xbf, 0xbd, 0x3d, 0xfd, 0x73, 0xdb, - 0x36, 0x96, 0x3f, 0x5f, 0x67, 0xfa, 0x3f, 0xd0, 0x6c, 0x2f, 0x22, 0x23, 0x4a, 0x96, 0x9c, 0x26, - 0xd7, 0xa5, 0x2c, 0x7b, 0xd2, 0xb4, 0x9d, 0x66, 0xaf, 0x4d, 0x33, 0x75, 0xb2, 0xdd, 0x8e, 0xcf, - 0x93, 0xe8, 0x03, 0xb2, 0xb9, 0x95, 0x49, 0x2d, 0x49, 0xd9, 0xf2, 0xba, 0xfa, 0xdf, 0xef, 0x7d, - 0x00, 0x20, 0x40, 0x82, 0xb2, 0xdc, 0xcd, 0xdd, 0x6c, 0x37, 0x16, 0xf1, 0xf9, 0xf0, 0xf0, 0x00, - 0xbc, 0x2f, 0xe0, 0x3d, 0xeb, 0x3f, 0x7b, 0xf6, 0xac, 0xca, 0x1e, 0xd8, 0xd9, 0xcf, 0x07, 0x66, - 0xd6, 0xc2, 0xcc, 0x7a, 0x51, 0x6b, 0x78, 0x30, 0xb0, 0xb2, 0xbf, 0xae, 0x35, 0xbc, 0xb0, 0xb3, - 0x87, 0x83, 0x3a, 0xc8, 0x17, 0x06, 0x2f, 0xe8, 0x1b, 0xea, 0xc0, 0x98, 0x18, 0x0b, 0xeb, 0xfc, - 0x03, 0xf2, 0x10, 0xc4, 0xe0, 0xa0, 0x80, 0x2b, 0x80, 0xbd, 0x41, 0xf2, 0x73, 0x16, 0x40, 0xa6, - 0x4b, 0x16, 0x19, 0xb9, 0xf1, 0xc5, 0x4b, 0x2e, 0x55, 0x4b, 0x2e, 0xd5, 0x4b, 0x2e, 0xd5, 0x4b, - 0xce, 0x09, 0x34, 0xd7, 0xcb, 0x55, 0xbd, 0x5c, 0xd7, 0xcb, 0x55, 0x3d, 0x6b, 0x40, 0x2c, 0x20, - 0xc5, 0xd2, 0x1c, 0x12, 0xb3, 0x81, 0xcc, 0x09, 0xb2, 0x20, 0xa6, 0x8d, 0xf4, 0x8d, 0x2d, 0x20, - 0xb3, 0xf1, 0x66, 0x17, 0x58, 0x89, 0x02, 0x2b, 0xd1, 0x60, 0x25, 0x1a, 0xac, 0x6d, 0xa5, 0xed, - 0xc5, 0x47, 0x96, 0x27, 0x79, 0x9b, 0x4e, 0x3b, 0xdb, 0xa1, 0x27, 0xb6, 0x15, 0xd8, 0x65, 0x9f, - 0x7f, 0x40, 0x0f, 0x35, 0x35, 0xb6, 0x24, 0xea, 0x6d, 0x53, 0xff, 0xd8, 0x6e, 0x74, 0x90, 0xd6, - 0x06, 0x62, 0x69, 0x88, 0xf2, 0x7f, 0x20, 0x05, 0xfe, 0x83, 0xe6, 0x07, 0x40, 0x57, 0xf6, 0xc7, - 0x1f, 0xc8, 0x84, 0x4b, 0x4d, 0x64, 0xf7, 0xe8, 0x69, 0x0e, 0xff, 0x4f, 0x99, 0x71, 0xe5, 0x48, - 0x28, 0x62, 0x24, 0x6f, 0x6c, 0x8c, 0x03, 0x29, 0xf0, 0x53, 0x4c, 0x14, 0x64, 0xb4, 0x41, 0xe6, - 0x11, 0xbd, 0xa3, 0xa7, 0xec, 0x51, 0xa9, 0xd7, 0xe2, 0x43, 0xcb, 0x30, 0x19, 0x2f, 0x41, 0x6a, - 0x1c, 0x3f, 0xeb, 0xbf, 0x68, 0x23, 0x60, 0x2c, 0x51, 0xec, 0x20, 0x06, 0xcc, 0xbf, 0xd9, 0xee, - 0x32, 0x68, 0x70, 0xcf, 0xca, 0xa2, 0x21, 0x1a, 0x16, 0x0d, 0x7e, 0x10, 0xfb, 0x5d, 0xb6, 0x8a, - 0x15, 0x94, 0x3f, 0x51, 0x4a, 0xf4, 0x27, 0x4c, 0x1d, 0x7c, 0xaa, 0x59, 0x9b, 0x15, 0x6e, 0xff, - 0x64, 0x02, 0x41, 0xf5, 0x8a, 0x0b, 0xb2, 0x0f, 0xcc, 0x8c, 0xfa, 0x51, 0xbe, 0x89, 0x8b, 0x28, - 0xbf, 0x83, 0x7f, 0x36, 0x71, 0x0a, 0x18, 0xbd, 0xa3, 0x7f, 0x25, 0xd8, 0x20, 0x6e, 0x29, 0xc0, - 0xe1, 0x67, 0x5d, 0xeb, 0xed, 0xd6, 0x8d, 0x3f, 0xac, 0xfd, 0x7f, 0xb4, 0xaa, 0xbc, 0xe8, 0x26, - 0xa4, 0x8f, 0x9d, 0x00, 0x74, 0x19, 0x88, 0x57, 0x75, 0xc2, 0x84, 0x93, 0x9a, 0x6e, 0xb8, 0x90, - 0x0b, 0x2a, 0x06, 0x0f, 0x70, 0x2b, 0x2c, 0x94, 0x72, 0x5c, 0x3a, 0x39, 0xd0, 0x30, 0x7a, 0x06, - 0x49, 0x8d, 0xca, 0xde, 0x38, 0xed, 0x1a, 0x09, 0x87, 0x47, 0x4c, 0x7a, 0x95, 0xf0, 0xad, 0x65, - 0xee, 0x12, 0x25, 0xee, 0x81, 0xd6, 0x18, 0xd7, 0xb4, 0xd1, 0xf9, 0xd3, 0xe4, 0xf1, 0xba, 0x7b, - 0x7a, 0xfb, 0x83, 0x7a, 0x6f, 0x8c, 0x47, 0x0e, 0x43, 0x13, 0x76, 0x65, 0x46, 0x6c, 0xa3, 0x70, - 0xff, 0xca, 0x8f, 0x8a, 0xa7, 0xbb, 0x69, 0xdc, 0x2f, 0xfc, 0x9d, 0x34, 0xee, 0xdf, 0xf8, 0x5b, - 0xa3, 0xab, 0x4a, 0x05, 0x1f, 0x04, 0x39, 0xe9, 0x75, 0x92, 0x8b, 0x71, 0x81, 0x6e, 0xd1, 0x4a, - 0xed, 0x4e, 0x77, 0xc9, 0x5a, 0xfc, 0x7f, 0x92, 0x36, 0xff, 0x1f, 0x71, 0x9d, 0x94, 0x3f, 0x64, - 0xd9, 0xef, 0xc8, 0x61, 0x24, 0x65, 0x3c, 0x25, 0x6f, 0x55, 0x5f, 0x89, 0xae, 0x1c, 0x23, 0x71, - 0xac, 0x9d, 0xd5, 0x00, 0x3a, 0x91, 0xe7, 0x82, 0x5d, 0xcb, 0x8c, 0x74, 0x5a, 0xfc, 0xec, 0x25, - 0xf5, 0x92, 0x62, 0x16, 0x57, 0x0a, 0x56, 0x23, 0xeb, 0x2c, 0x9f, 0x8d, 0xab, 0x25, 0x43, 0x19, - 0x63, 0xa5, 0x6d, 0xe2, 0x4f, 0xd9, 0xaf, 0xee, 0x06, 0x80, 0x0b, 0x7c, 0xde, 0xa9, 0x11, 0x3c, - 0xdf, 0xa8, 0x89, 0x96, 0x08, 0xe8, 0xa4, 0xc0, 0x7f, 0x6e, 0xf0, 0x9f, 0x89, 0xe1, 0xda, 0xc2, - 0x9b, 0x51, 0xa5, 0xee, 0xe5, 0x35, 0x40, 0x40, 0xd0, 0x32, 0xe1, 0xf7, 0x34, 0x48, 0xc5, 0x65, - 0xba, 0x96, 0x35, 0x55, 0x69, 0xb0, 0x78, 0xa9, 0xf7, 0xaa, 0xd5, 0xad, 0x1b, 0x71, 0xd4, 0x00, - 0xe2, 0xad, 0x0f, 0x7b, 0x45, 0xb6, 0x2e, 0x4f, 0xa9, 0x10, 0xff, 0x1e, 0xab, 0xc4, 0xd8, 0x4c, - 0x3c, 0xbf, 0xd7, 0xce, 0x49, 0xf1, 0xbf, 0x22, 0x7e, 0xc6, 0xb5, 0x88, 0xef, 0x61, 0x7f, 0x31, - 0x32, 0x56, 0xa5, 0x99, 0x73, 0xe1, 0xec, 0x9a, 0xe2, 0x25, 0xf8, 0x96, 0x6b, 0x56, 0x52, 0x77, - 0xcd, 0x4a, 0xfe, 0x9c, 0x6b, 0x56, 0x62, 0x32, 0x64, 0x59, 0xda, 0x6a, 0x83, 0xc7, 0xa3, 0xc6, - 0x20, 0x98, 0x51, 0xc0, 0xbe, 0x08, 0x49, 0x41, 0x7f, 0x81, 0xf6, 0x4e, 0xcb, 0xf8, 0xbc, 0xbc, - 0x08, 0xfb, 0x40, 0x5d, 0xdf, 0x4d, 0x60, 0x0d, 0x99, 0xa7, 0x58, 0x66, 0x0c, 0x88, 0xea, 0xc7, - 0x68, 0xd4, 0xc4, 0x1e, 0xa2, 0x20, 0x85, 0x5a, 0x7f, 0xfc, 0x41, 0x7f, 0x80, 0xc3, 0x03, 0xe8, - 0x94, 0x83, 0x5e, 0x56, 0x27, 0x46, 0x28, 0x81, 0x1c, 0xb7, 0x23, 0xd9, 0xd9, 0xa9, 0x30, 0x1d, - 0x25, 0x4a, 0x38, 0x6d, 0x9d, 0x2d, 0x62, 0x9f, 0x28, 0x8f, 0x27, 0x26, 0x1a, 0x16, 0x0b, 0x13, - 0x0f, 0x7a, 0x7b, 0x43, 0x04, 0x3c, 0x6e, 0xe0, 0x7c, 0x7c, 0xa7, 0x0a, 0x6b, 0x50, 0x6e, 0x94, - 0x36, 0x71, 0x81, 0x56, 0x6d, 0xec, 0x26, 0xa2, 0x99, 0x92, 0xd7, 0x63, 0x84, 0xb6, 0xa4, 0x41, - 0xc6, 0xb0, 0x01, 0x23, 0x36, 0x62, 0x73, 0xf4, 0x52, 0xe1, 0x24, 0x88, 0x53, 0x86, 0xe9, 0xaa, - 0xbf, 0x68, 0xd4, 0x1b, 0x8e, 0x06, 0xc7, 0x29, 0x5e, 0xdd, 0x21, 0x65, 0x94, 0xce, 0x3e, 0x4f, - 0xbb, 0xc3, 0x8b, 0x51, 0xc0, 0x4b, 0x28, 0xd4, 0xd0, 0x49, 0xec, 0x89, 0x08, 0xf1, 0x0b, 0x14, - 0x33, 0x9b, 0x94, 0x00, 0x89, 0xe9, 0x34, 0x6a, 0xd2, 0x03, 0x4d, 0x22, 0x74, 0x9b, 0x8c, 0x07, - 0xa3, 0xe4, 0x38, 0xd7, 0xcf, 0x15, 0x75, 0xbb, 0x61, 0x0e, 0xdb, 0x98, 0x39, 0x15, 0x59, 0x6d, - 0x24, 0xe6, 0x56, 0xf0, 0x29, 0x47, 0x64, 0x02, 0x69, 0x4f, 0xbb, 0x3d, 0xd8, 0x96, 0x81, 0x46, - 0x41, 0xce, 0x94, 0x99, 0xdb, 0x94, 0x59, 0x07, 0x3f, 0x17, 0x18, 0x58, 0xa3, 0xa9, 0x1d, 0x52, - 0x2e, 0xb1, 0xc1, 0x3d, 0x9f, 0xf5, 0x65, 0x7d, 0x06, 0xe9, 0xc1, 0x3b, 0x53, 0x00, 0x36, 0xf6, - 0x35, 0xb2, 0x49, 0x55, 0x27, 0x03, 0xef, 0x9c, 0x58, 0x1d, 0xb8, 0x38, 0x9c, 0x1c, 0xe7, 0x32, - 0x85, 0xc6, 0x97, 0x6b, 0x38, 0xd0, 0xb1, 0x00, 0x8c, 0x31, 0x63, 0xf0, 0xb3, 0xfa, 0xc2, 0x6a, - 0xd2, 0x51, 0xad, 0x45, 0x03, 0xf3, 0x88, 0xf7, 0xcc, 0x8d, 0xf7, 0x0c, 0xf1, 0x8e, 0x6f, 0x27, - 0x19, 0x78, 0xcf, 0x10, 0xef, 0x5a, 0xf3, 0x69, 0x03, 0xa4, 0x28, 0x84, 0x9d, 0x8d, 0x53, 0xd3, - 0xd9, 0x38, 0xc5, 0x0b, 0x62, 0x86, 0x08, 0x5a, 0x87, 0x31, 0x4b, 0x6b, 0x7e, 0xa2, 0x0a, 0xc7, - 0x62, 0xa9, 0xdc, 0xaf, 0xed, 0xf3, 0x84, 0x9c, 0x40, 0x7d, 0xe5, 0xe8, 0x69, 0x36, 0x65, 0x9c, - 0x10, 0x35, 0x1c, 0xd6, 0xf6, 0x5d, 0x3e, 0x14, 0xa6, 0xc6, 0xd5, 0x0e, 0xb9, 0x61, 0xd5, 0x26, - 0x57, 0x1e, 0x1e, 0xcd, 0x33, 0x83, 0x33, 0x68, 0xe7, 0x6e, 0xd6, 0x6f, 0x1e, 0xa7, 0xca, 0x39, - 0xda, 0x75, 0xd0, 0x0e, 0x22, 0x9f, 0x9e, 0x2c, 0xf4, 0xa5, 0x83, 0x53, 0xed, 0xc4, 0x95, 0x9a, - 0x62, 0x41, 0x43, 0x57, 0x61, 0x7a, 0xe8, 0x61, 0x66, 0xa3, 0x47, 0x61, 0x1c, 0xb4, 0xcd, 0x5c, - 0xe7, 0xf1, 0x5e, 0x43, 0x5d, 0x1b, 0x87, 0x15, 0xde, 0x4b, 0xa7, 0xd2, 0x31, 0x5d, 0xa4, 0x6d, - 0xc0, 0x22, 0x3d, 0x9a, 0x2b, 0xea, 0x0e, 0xa5, 0x47, 0x69, 0x4b, 0x79, 0x76, 0x79, 0x36, 0x8b, - 0x3b, 0xd9, 0x0c, 0x89, 0x12, 0x93, 0x1b, 0x40, 0x85, 0xac, 0x60, 0xdf, 0xd3, 0x96, 0xb6, 0xd9, - 0x81, 0xfa, 0xa1, 0xa6, 0x71, 0x9b, 0xaa, 0xaf, 0xd5, 0x9a, 0x64, 0x66, 0x3c, 0x5c, 0x81, 0x87, - 0x42, 0x25, 0xa9, 0xcc, 0x93, 0x9b, 0x9a, 0x3c, 0x40, 0x8d, 0xbf, 0xe5, 0xd8, 0x04, 0x4a, 0x3a, - 0x51, 0x12, 0x47, 0xda, 0x97, 0xbf, 0xa4, 0x40, 0x90, 0x32, 0xd3, 0xbc, 0x95, 0x5c, 0x17, 0xf3, - 0x11, 0x0d, 0x99, 0xb3, 0x52, 0x8e, 0xa8, 0x9b, 0x67, 0x28, 0x18, 0x4a, 0x2e, 0xa2, 0x82, 0x45, - 0x34, 0x9d, 0x2a, 0x41, 0xfc, 0x01, 0x09, 0x95, 0xf9, 0xcc, 0x9a, 0xaf, 0xbe, 0x7a, 0x4e, 0xc5, - 0xf2, 0xe6, 0x2d, 0x69, 0x2d, 0xf2, 0x35, 0x97, 0x38, 0x47, 0xb9, 0x00, 0x99, 0xd1, 0x84, 0x9d, - 0x75, 0x4b, 0x73, 0x79, 0xd3, 0x8d, 0xfe, 0xb2, 0xe6, 0xdc, 0xc8, 0x83, 0x7a, 0x36, 0x18, 0x28, - 0x29, 0x87, 0x7e, 0x1a, 0xf2, 0x69, 0xfc, 0x75, 0xa4, 0xa5, 0x13, 0x76, 0x7d, 0x34, 0x25, 0x93, - 0xca, 0x01, 0xd2, 0xd0, 0xd5, 0xc0, 0x59, 0x69, 0x48, 0x43, 0x76, 0x12, 0x09, 0xc1, 0x50, 0xa5, - 0x26, 0xd0, 0x45, 0xb6, 0x33, 0x54, 0x0c, 0x0b, 0xaa, 0xf2, 0x25, 0x8c, 0xe5, 0x87, 0x76, 0x15, - 0x8c, 0xfd, 0x49, 0x5a, 0x26, 0x95, 0x5b, 0x61, 0x64, 0x4a, 0xdc, 0x0c, 0xa4, 0x29, 0x50, 0xc6, - 0xc3, 0xa3, 0x48, 0x05, 0x06, 0x7a, 0x11, 0x49, 0x2e, 0x90, 0x28, 0x88, 0x4e, 0xa0, 0x79, 0x19, - 0xdd, 0x94, 0xd1, 0x65, 0x19, 0x7d, 0x28, 0xa3, 0xeb, 0x72, 0x1c, 0x04, 0x37, 0x26, 0xff, 0x1e, - 0x95, 0xd6, 0xdb, 0x84, 0xcc, 0x3b, 0x17, 0xf5, 0x37, 0x5c, 0xd4, 0x33, 0x19, 0x44, 0x5c, 0x95, - 0x13, 0xcd, 0x78, 0x15, 0x40, 0xeb, 0x4d, 0xc7, 0x59, 0x74, 0x99, 0x75, 0xa8, 0x28, 0x12, 0xb2, - 0x40, 0xa3, 0xdc, 0xfa, 0x32, 0x20, 0x3a, 0xd8, 0x46, 0xc8, 0x5d, 0xd3, 0x1d, 0xaf, 0xbc, 0xa9, - 0x88, 0x15, 0xa6, 0x15, 0x5e, 0x42, 0x70, 0x2a, 0xaa, 0x17, 0x3c, 0xfe, 0xb9, 0x16, 0xf9, 0xdd, - 0x19, 0xc5, 0x23, 0x20, 0xf3, 0xef, 0xc8, 0xbe, 0x31, 0xcf, 0xd7, 0xc4, 0xf0, 0xe6, 0x99, 0xdc, - 0xbd, 0xc9, 0xc7, 0xc2, 0x5f, 0xf2, 0x13, 0xe7, 0xf8, 0xdc, 0x88, 0x6e, 0x09, 0xc6, 0x38, 0xbf, - 0xa3, 0xed, 0xf4, 0x34, 0x0f, 0x42, 0xcb, 0xc3, 0xdd, 0xff, 0xf6, 0xe7, 0x9f, 0x5e, 0xf1, 0xdb, - 0xe5, 0xf8, 0x30, 0xb9, 0x98, 0xfb, 0x17, 0x28, 0x17, 0x26, 0x5b, 0x83, 0x6b, 0x1d, 0x03, 0x16, - 0xc6, 0x0b, 0xf3, 0x8a, 0x41, 0x0d, 0x27, 0x80, 0xff, 0x39, 0x08, 0x43, 0x37, 0x78, 0x9b, 0xa1, - 0xba, 0x90, 0x45, 0x13, 0xa3, 0x91, 0xf9, 0xa1, 0xc4, 0xa3, 0x2e, 0xb8, 0x2c, 0xc7, 0xf7, 0x4c, - 0x57, 0x57, 0x65, 0xf4, 0xaa, 0x5a, 0xb8, 0xf1, 0x75, 0x19, 0xad, 0x93, 0x18, 0x04, 0x92, 0x55, - 0xa4, 0xaf, 0x7b, 0xc5, 0x65, 0xf4, 0x03, 0x51, 0x6b, 0xfc, 0x65, 0x74, 0x46, 0x14, 0x81, 0xcc, - 0xfc, 0xaf, 0x48, 0x4c, 0xf1, 0xbf, 0x50, 0x2d, 0x9d, 0x2c, 0xe3, 0x7b, 0xf9, 0x92, 0xdf, 0x7b, - 0x90, 0xc4, 0xff, 0x16, 0xf1, 0x74, 0xbe, 0xcc, 0x67, 0x6f, 0x41, 0x9c, 0x8d, 0xbf, 0x8f, 0xc8, - 0xcd, 0xe9, 0x3d, 0x72, 0xf8, 0xff, 0xe4, 0xdf, 0x3f, 0x88, 0xcd, 0x6b, 0x68, 0xf8, 0xef, 0x11, - 0xc8, 0xa4, 0xef, 0x32, 0xf8, 0x8a, 0x7f, 0xdb, 0x46, 0x37, 0x22, 0x2f, 0x88, 0x2e, 0xe9, 0x05, - 0x50, 0x10, 0xf0, 0xd1, 0x05, 0xbe, 0xce, 0x01, 0xe8, 0xa7, 0xe9, 0xe8, 0x8d, 0x38, 0x10, 0x1e, - 0xa3, 0xde, 0xf0, 0xf8, 0x43, 0xe5, 0x8e, 0x55, 0x86, 0x78, 0xc2, 0xc0, 0x00, 0x71, 0xcf, 0x87, - 0x74, 0x79, 0x89, 0x05, 0xe6, 0xe4, 0x92, 0x9e, 0x30, 0x28, 0x41, 0x6e, 0x14, 0xf3, 0xb7, 0xb4, - 0xa0, 0x8b, 0xf1, 0x07, 0x24, 0xd9, 0x2d, 0x46, 0xea, 0x92, 0x8f, 0x90, 0xfe, 0x82, 0x27, 0x06, - 0xdd, 0x70, 0xf0, 0x6e, 0xe4, 0x93, 0xa2, 0xf8, 0xd4, 0x4b, 0x11, 0x1f, 0x1e, 0x1a, 0x4f, 0x8b, - 0x16, 0x13, 0x40, 0x4d, 0x59, 0x16, 0x87, 0x14, 0x17, 0x80, 0x6e, 0x48, 0xd4, 0x1f, 0x18, 0x25, - 0x92, 0xff, 0x14, 0x0f, 0x8c, 0x96, 0x8f, 0x7d, 0x60, 0xd4, 0xaf, 0xc6, 0x00, 0x67, 0x40, 0x18, - 0x8b, 0x7e, 0x95, 0x80, 0xad, 0x3d, 0xf0, 0xe8, 0xa8, 0xa1, 0x31, 0xa7, 0x31, 0x54, 0x6c, 0xce, - 0x60, 0x94, 0x1e, 0x97, 0x8a, 0x9f, 0x49, 0xd5, 0xb3, 0x24, 0x39, 0x99, 0x7b, 0x47, 0x79, 0x5f, - 0xa4, 0x40, 0xcc, 0xe4, 0xcc, 0x33, 0x36, 0x3f, 0xf0, 0xe9, 0xb2, 0x88, 0x9e, 0x20, 0xd2, 0xce, - 0x3e, 0x74, 0xd2, 0xb3, 0x96, 0x20, 0xa1, 0x87, 0xad, 0x82, 0xbc, 0x7f, 0x9b, 0x27, 0xa5, 0xcc, - 0x0b, 0x9d, 0x1a, 0x7f, 0xe4, 0x5c, 0x73, 0xba, 0xaa, 0x0e, 0x1c, 0xe2, 0x96, 0xd7, 0xee, 0x3d, - 0xec, 0x47, 0xaf, 0xce, 0xce, 0x62, 0xba, 0xb8, 0xb6, 0xbe, 0x9e, 0xf2, 0xbe, 0x38, 0x7c, 0x1e, - 0xdd, 0xe2, 0x33, 0x6d, 0xe8, 0x53, 0x34, 0x62, 0xd0, 0x4d, 0x4d, 0x82, 0x72, 0x0e, 0xe1, 0xbb, - 0x76, 0xa7, 0xc2, 0x14, 0x13, 0x79, 0x43, 0x33, 0xb7, 0x09, 0xc2, 0x81, 0x7c, 0xa0, 0xe6, 0x00, - 0x45, 0xcc, 0x92, 0x9f, 0x88, 0xd3, 0x5b, 0x06, 0xb9, 0x54, 0xb5, 0x75, 0x00, 0x74, 0x8a, 0x6f, - 0xb6, 0xba, 0x72, 0xe1, 0x37, 0x90, 0x31, 0x8f, 0x74, 0x0b, 0x07, 0x5b, 0x7b, 0x19, 0xb6, 0xf8, - 0x6c, 0xa3, 0x89, 0xab, 0x8c, 0x2d, 0xa5, 0xe1, 0x29, 0x36, 0x73, 0x15, 0xc3, 0x97, 0xf2, 0xf0, - 0xe6, 0x28, 0x5e, 0x71, 0x83, 0x32, 0xcb, 0x31, 0x3d, 0xf8, 0xf9, 0x73, 0xfe, 0x5e, 0x91, 0x61, - 0xbc, 0x8e, 0x98, 0x58, 0xe3, 0x24, 0xe2, 0x67, 0x50, 0xe2, 0x76, 0x88, 0xde, 0x50, 0x81, 0x27, - 0x4f, 0x0e, 0xf8, 0x07, 0x74, 0xff, 0x66, 0xf2, 0x86, 0x3a, 0x67, 0x83, 0x4e, 0x9c, 0x45, 0xf2, - 0x11, 0xb1, 0x1d, 0x8d, 0x7c, 0xc3, 0x25, 0xb6, 0x9a, 0x12, 0x77, 0x94, 0xfd, 0x5e, 0xe6, 0x00, - 0x12, 0x70, 0x9c, 0xf1, 0x24, 0x4a, 0xe5, 0x60, 0xe2, 0x59, 0x24, 0x78, 0xd3, 0x76, 0x55, 0xc7, - 0x61, 0xcb, 0x3d, 0x1d, 0x95, 0x4b, 0x37, 0xbb, 0x8a, 0xdd, 0xc8, 0x42, 0xd7, 0xab, 0xf2, 0xce, - 0x55, 0x68, 0x0d, 0xbf, 0x51, 0xce, 0xa0, 0x3f, 0x13, 0xfa, 0x77, 0x86, 0x57, 0x2c, 0x01, 0x0d, - 0x42, 0xbf, 0x18, 0x94, 0x04, 0x78, 0x05, 0xf8, 0x40, 0x12, 0x30, 0x50, 0x6b, 0x01, 0x09, 0x32, - 0x77, 0xbb, 0x35, 0x5f, 0x26, 0x25, 0xc2, 0x4a, 0x16, 0xc1, 0xf0, 0xa4, 0x54, 0x72, 0xb7, 0xd9, - 0x29, 0x13, 0xb8, 0xef, 0x2b, 0x49, 0x4d, 0xe0, 0xb5, 0x07, 0xd4, 0xd9, 0x1d, 0x06, 0xa7, 0xf1, - 0xff, 0xf4, 0x83, 0xff, 0x99, 0x77, 0xd1, 0xa6, 0x77, 0x1a, 0x9f, 0x8b, 0xef, 0x2e, 0x82, 0xf3, - 0x6e, 0xef, 0xe2, 0x94, 0x93, 0xbe, 0x3c, 0xac, 0x9e, 0xc5, 0x3a, 0xd5, 0xfa, 0xc6, 0x41, 0x14, - 0x94, 0xe7, 0xc3, 0x8b, 0x53, 0xfc, 0x47, 0x3f, 0x3a, 0x14, 0xf6, 0x20, 0xf1, 0xe8, 0xe2, 0xb4, - 0x8b, 0xff, 0xc6, 0x68, 0xf7, 0x1b, 0x6c, 0x0d, 0xef, 0x55, 0xc3, 0xa5, 0x15, 0x9f, 0xf4, 0xfb, - 0x3e, 0xd9, 0x88, 0x39, 0x5d, 0x9d, 0x69, 0xea, 0x2a, 0xc5, 0x61, 0x19, 0x3e, 0x2d, 0x55, 0x86, - 0xb1, 0xb5, 0x18, 0xef, 0xa9, 0x0a, 0xbc, 0x1e, 0x14, 0xd8, 0x0b, 0x8b, 0xdc, 0xcf, 0x6a, 0xcb, - 0xc9, 0xb0, 0x18, 0xa2, 0x3a, 0x52, 0x5a, 0x0d, 0x5f, 0x4d, 0xd2, 0x34, 0x2b, 0xbd, 0x19, 0x45, - 0x35, 0x94, 0x61, 0xb4, 0x26, 0xf0, 0x9f, 0xee, 0xcc, 0x07, 0x9e, 0x8d, 0x77, 0xb6, 0x34, 0x8c, - 0x96, 0x7d, 0x49, 0x14, 0x80, 0xb7, 0x53, 0x29, 0x42, 0xd1, 0xf7, 0x58, 0xc4, 0xcb, 0xbe, 0xbc, - 0x03, 0x48, 0x97, 0xb5, 0xad, 0xcc, 0xd6, 0x43, 0xdf, 0x6c, 0xd1, 0xac, 0x01, 0x2d, 0x40, 0x06, - 0x52, 0x8c, 0x95, 0xdc, 0xcf, 0xf5, 0x8e, 0xab, 0xfb, 0xe0, 0x0d, 0xd0, 0xa5, 0x98, 0x53, 0xec, - 0x39, 0xaa, 0xc0, 0x82, 0x0a, 0xbd, 0xf9, 0x18, 0x7d, 0x94, 0xce, 0xc9, 0x21, 0x1f, 0xa3, 0x11, - 0xe0, 0xed, 0x49, 0xda, 0x34, 0xe3, 0x3a, 0x9d, 0xe4, 0xe3, 0xe1, 0x71, 0x5d, 0x76, 0x35, 0x1e, - 0x52, 0xaa, 0xe4, 0x56, 0x20, 0x00, 0xf3, 0x23, 0xbe, 0xc7, 0xad, 0x8b, 0xee, 0x25, 0xc3, 0x44, - 0xa8, 0x81, 0x20, 0x61, 0x1b, 0x38, 0x3a, 0x5d, 0xcb, 0xeb, 0x38, 0x18, 0x2c, 0x25, 0x70, 0x63, - 0xe8, 0xe5, 0x72, 0x19, 0x98, 0x55, 0x44, 0xdc, 0x31, 0x82, 0x6f, 0xcb, 0xe8, 0x39, 0x17, 0x1d, - 0x20, 0x30, 0x6b, 0x62, 0xd6, 0xe3, 0x73, 0x71, 0x11, 0xf3, 0x83, 0xc8, 0xb8, 0x96, 0x1b, 0xbd, - 0x09, 0xac, 0x30, 0x91, 0x3b, 0x1b, 0xbe, 0x35, 0x35, 0x16, 0x7d, 0x0e, 0xbd, 0x19, 0xe8, 0x86, - 0x78, 0x6e, 0x08, 0xf2, 0x75, 0x18, 0x1a, 0x7b, 0xaf, 0x54, 0xb9, 0x3b, 0x11, 0x3e, 0xb2, 0x88, - 0x20, 0xe9, 0xd3, 0x79, 0xf1, 0xe4, 0x09, 0xd2, 0xdc, 0x4f, 0xeb, 0x92, 0x14, 0xdb, 0x3f, 0x4f, - 0x0b, 0x91, 0x03, 0x4b, 0x62, 0x49, 0x24, 0x06, 0x6c, 0xa5, 0x5b, 0x13, 0x66, 0x96, 0x40, 0x2d, - 0x06, 0x3f, 0xf3, 0x56, 0xb8, 0x0b, 0x1b, 0x44, 0x65, 0xbe, 0x31, 0x66, 0x9c, 0x39, 0xe6, 0x5a, - 0xb2, 0x76, 0xfc, 0x07, 0x66, 0x03, 0xd0, 0x02, 0xf4, 0x34, 0x5b, 0xae, 0xa1, 0x6f, 0xe9, 0x00, - 0xc9, 0x2a, 0x73, 0x6c, 0x9b, 0x5e, 0xcb, 0x0b, 0x79, 0xb8, 0xc8, 0x57, 0x25, 0xa8, 0x75, 0x83, - 0xff, 0xf5, 0x33, 0x1e, 0x73, 0xd5, 0x2e, 0x46, 0xe8, 0x04, 0x29, 0x0f, 0x39, 0x5d, 0xda, 0x6c, - 0xe1, 0xa0, 0x2d, 0xd6, 0xd3, 0x32, 0x17, 0xe4, 0xb0, 0xab, 0x77, 0x8a, 0xb5, 0x2d, 0xba, 0x09, - 0xcb, 0x03, 0x93, 0x57, 0x3e, 0xdd, 0x7e, 0x64, 0x5a, 0x16, 0x29, 0x1e, 0xf4, 0x20, 0xa0, 0x02, - 0xeb, 0x14, 0x37, 0xc6, 0xe7, 0x03, 0x1b, 0x5c, 0x5d, 0x10, 0x06, 0xfe, 0x40, 0x03, 0xa3, 0x7e, - 0xc8, 0x0d, 0x1d, 0x95, 0xc8, 0x40, 0x11, 0x72, 0x81, 0xb0, 0x52, 0xbd, 0xb6, 0x3e, 0xc2, 0xfb, - 0xb4, 0x2f, 0x7b, 0xb3, 0x97, 0x61, 0x9f, 0x19, 0x87, 0xda, 0xfa, 0x97, 0x6f, 0xfc, 0xe2, 0xc5, - 0x4b, 0xc6, 0xe5, 0x58, 0xde, 0xdd, 0x70, 0x14, 0xba, 0x15, 0xd3, 0xff, 0x4e, 0xca, 0xf7, 0xfb, - 0x14, 0xa5, 0xe1, 0xbc, 0x24, 0x88, 0xc6, 0xfe, 0xf5, 0x24, 0x4d, 0x56, 0xeb, 0x25, 0xdb, 0x4e, - 0xe4, 0xc2, 0xd7, 0xcf, 0x9a, 0x06, 0xf4, 0x22, 0x92, 0x7b, 0x23, 0x61, 0x4d, 0x9e, 0x46, 0x22, - 0xcc, 0x6b, 0x99, 0x67, 0x77, 0xfb, 0x0c, 0xd9, 0x68, 0x7e, 0xd8, 0xde, 0x3c, 0x3f, 0x0f, 0xa0, - 0x9a, 0xd7, 0x75, 0xda, 0xf6, 0x9c, 0x52, 0x69, 0xcb, 0xc5, 0xa9, 0x5f, 0xbf, 0xa1, 0xef, 0xc7, - 0xbe, 0xe3, 0x56, 0xbd, 0x3f, 0x3a, 0xb7, 0xae, 0x7e, 0x9b, 0x17, 0xbf, 0xab, 0x6b, 0xdf, 0x0e, - 0x1d, 0x37, 0x2a, 0xad, 0x14, 0xc4, 0xc0, 0x6a, 0x02, 0x39, 0x39, 0x28, 0x8d, 0x5e, 0x98, 0x25, - 0x16, 0xe4, 0x60, 0x68, 0x12, 0x1b, 0xd0, 0x98, 0x6b, 0x08, 0x78, 0xf0, 0x68, 0x44, 0x01, 0x8b, - 0x0a, 0x2b, 0xf1, 0x86, 0x77, 0xa5, 0xc6, 0x16, 0x82, 0x76, 0x3e, 0x98, 0x44, 0xd8, 0x38, 0x05, - 0x08, 0x47, 0xf4, 0x2e, 0x62, 0xed, 0x1e, 0x34, 0x6c, 0xd3, 0xc6, 0x59, 0x49, 0x0f, 0xda, 0x54, - 0x6f, 0xdd, 0xfa, 0xd7, 0x09, 0x4c, 0x34, 0xec, 0xa9, 0xe8, 0x92, 0xba, 0xab, 0xd8, 0x64, 0x43, - 0xc5, 0xd0, 0x6f, 0x61, 0xb2, 0xab, 0x20, 0x60, 0x73, 0xc5, 0x25, 0xd1, 0xbb, 0xb8, 0xed, 0x76, - 0x75, 0xb4, 0x40, 0x1f, 0xd4, 0xc3, 0x19, 0x2b, 0x5a, 0x9e, 0x5a, 0xc4, 0x5f, 0xf1, 0xca, 0x87, - 0x47, 0xe4, 0x9d, 0xaa, 0xd6, 0xf1, 0xe0, 0x24, 0x28, 0xed, 0x6a, 0x6b, 0x75, 0xbb, 0xbb, 0x37, - 0x23, 0x9b, 0x27, 0x30, 0x18, 0xe5, 0x78, 0x80, 0x3e, 0x0a, 0xc7, 0xf4, 0xf2, 0xd2, 0x98, 0x7c, - 0x7e, 0x9e, 0x0f, 0x4e, 0xca, 0xd3, 0xb2, 0x37, 0x46, 0x9b, 0x65, 0xef, 0xe8, 0x29, 0xf0, 0x02, - 0x8b, 0xf8, 0xb9, 0x2c, 0xd1, 0x1d, 0x1f, 0x41, 0xef, 0xbd, 0xe7, 0x03, 0x48, 0x04, 0x89, 0xb6, - 0x0b, 0xdb, 0x11, 0xdf, 0xf1, 0xcb, 0x7a, 0x49, 0x18, 0x4d, 0xaa, 0x99, 0x2a, 0xdc, 0x33, 0x65, - 0x90, 0x73, 0x35, 0x49, 0xc4, 0x73, 0xf1, 0x94, 0xf4, 0xe5, 0xd3, 0x1c, 0x73, 0xf2, 0xde, 0xa9, - 0x5f, 0x63, 0x8f, 0x74, 0x31, 0xe9, 0x43, 0x2a, 0xcd, 0xa2, 0x68, 0x78, 0x69, 0xb0, 0x22, 0xc8, - 0xdd, 0x2b, 0x5e, 0x8c, 0x1c, 0x96, 0x6e, 0x78, 0x6b, 0x1e, 0x09, 0x52, 0x5f, 0xe1, 0x19, 0xc1, - 0x49, 0xe8, 0x32, 0x19, 0x68, 0x9a, 0xa8, 0x88, 0x97, 0xdf, 0x70, 0x87, 0x33, 0xef, 0xd4, 0x97, - 0xba, 0xc7, 0x58, 0xaa, 0xef, 0xe0, 0x58, 0xdf, 0x5e, 0xd0, 0x23, 0xf3, 0xb9, 0xe9, 0xb4, 0x04, - 0x08, 0xa1, 0x34, 0xd8, 0x82, 0x23, 0x7e, 0xb2, 0x3d, 0x8f, 0xd6, 0xa8, 0x77, 0x0a, 0x59, 0x28, - 0x3d, 0x5c, 0x4d, 0x2e, 0x85, 0x87, 0xe1, 0x2b, 0xc8, 0xb7, 0xa9, 0xf0, 0xc6, 0x1e, 0x85, 0xd4, - 0x8c, 0xbc, 0x34, 0x7b, 0x23, 0x6e, 0xcf, 0xc4, 0xa5, 0x4e, 0x1a, 0x71, 0x99, 0xa4, 0xf8, 0x39, - 0x35, 0x4a, 0x2d, 0x5f, 0x56, 0x1f, 0x49, 0xf1, 0xe3, 0x4d, 0xf5, 0x85, 0xaf, 0x55, 0x9d, 0x01, - 0xd0, 0x66, 0xfe, 0x2f, 0x97, 0xd3, 0xdb, 0x5a, 0x7b, 0x14, 0x06, 0x1b, 0x3b, 0x39, 0x1f, 0x44, - 0xf0, 0xbf, 0x0b, 0x99, 0xac, 0xa3, 0x50, 0x43, 0x06, 0x15, 0x57, 0x19, 0xe9, 0xf2, 0xdb, 0x75, - 0x0e, 0xa9, 0x2f, 0x06, 0x32, 0x81, 0x43, 0x39, 0x8a, 0xf9, 0xf7, 0x1b, 0x48, 0x55, 0x89, 0x33, - 0x48, 0x35, 0x3e, 0x31, 0x2a, 0xd1, 0x9c, 0x63, 0x0b, 0x15, 0x66, 0x29, 0x8e, 0x36, 0x20, 0x83, - 0x0e, 0x8d, 0xbd, 0xde, 0x50, 0x66, 0xe0, 0x13, 0x73, 0xac, 0xc6, 0x34, 0x1b, 0x11, 0x97, 0xaf, - 0x50, 0x01, 0x83, 0x49, 0x91, 0x07, 0x04, 0x61, 0x7e, 0x65, 0xb7, 0xb0, 0x5f, 0xbe, 0x4f, 0xf1, - 0x81, 0x0a, 0x4e, 0x81, 0xe5, 0x06, 0xd8, 0x33, 0xaa, 0x63, 0xba, 0x3a, 0x61, 0x28, 0x3e, 0x38, - 0xf0, 0xa4, 0x1e, 0xed, 0x8f, 0x08, 0x52, 0x25, 0x42, 0xf7, 0x89, 0x15, 0x0b, 0x9c, 0x0c, 0x4e, - 0xe4, 0xdd, 0xd3, 0xbc, 0x49, 0xf0, 0x31, 0x50, 0x2b, 0xd4, 0x45, 0x52, 0xc2, 0x28, 0x24, 0x86, - 0x9e, 0x25, 0xf0, 0xbf, 0x90, 0x51, 0x5c, 0x23, 0x33, 0xfa, 0xf6, 0x8b, 0x41, 0x04, 0x1f, 0xb6, - 0x12, 0x8f, 0x67, 0xe3, 0xf3, 0xcf, 0x64, 0xc3, 0x9a, 0xa1, 0x66, 0x05, 0xe2, 0xdf, 0xd0, 0xb7, - 0x23, 0x59, 0x26, 0xe5, 0x9d, 0xf4, 0x9e, 0xa6, 0xe0, 0xde, 0xc9, 0xc2, 0x0b, 0x0e, 0xf4, 0xb9, - 0x79, 0x95, 0x00, 0x1b, 0x92, 0x7a, 0x4f, 0x9e, 0x10, 0x24, 0xdf, 0x22, 0xd6, 0xa0, 0x58, 0xcf, - 0xc4, 0xe2, 0x89, 0xf7, 0x0c, 0x23, 0x96, 0x63, 0xdd, 0x5c, 0x00, 0x33, 0x51, 0x94, 0x7f, 0x2d, - 0x32, 0xe2, 0x96, 0x3c, 0x90, 0x8c, 0x45, 0xa8, 0xc3, 0x78, 0x1b, 0x00, 0xa8, 0x80, 0xdd, 0x58, - 0x09, 0x4d, 0x43, 0x81, 0x31, 0x72, 0x42, 0x26, 0xae, 0x33, 0x79, 0x56, 0x7f, 0x73, 0xf7, 0x7a, - 0x1e, 0x74, 0x66, 0xc5, 0xb2, 0x13, 0x56, 0xcf, 0xca, 0x62, 0xbc, 0xf6, 0xdc, 0x0b, 0x12, 0x9a, - 0x04, 0x2f, 0xf1, 0x8e, 0xa1, 0x9e, 0x52, 0x2f, 0x78, 0x68, 0x51, 0xc3, 0x96, 0x67, 0x73, 0x34, - 0xab, 0xf1, 0x41, 0x5a, 0x05, 0x73, 0xe7, 0x38, 0xa7, 0x63, 0x8f, 0x9c, 0x85, 0x61, 0x36, 0xf1, - 0xbf, 0xd0, 0x67, 0x28, 0xed, 0xc8, 0xad, 0x9f, 0x7f, 0x26, 0xc3, 0x3c, 0xca, 0xb8, 0x38, 0x9c, - 0x46, 0x14, 0xf5, 0xbe, 0x4c, 0x96, 0x04, 0x34, 0x4d, 0x54, 0x1f, 0xc6, 0x6b, 0x6a, 0xcf, 0x0d, - 0xce, 0x8b, 0x46, 0xa8, 0x42, 0xda, 0x6a, 0x7c, 0xe0, 0x3f, 0x55, 0xd0, 0x8a, 0xc0, 0xc0, 0x5b, - 0xe4, 0x1d, 0x3d, 0xc7, 0xdc, 0x79, 0xf3, 0xed, 0x1a, 0x76, 0xc6, 0xa1, 0x09, 0x53, 0xd6, 0x89, - 0x96, 0x99, 0x8c, 0x78, 0xe2, 0x19, 0xa9, 0x0d, 0x5c, 0x62, 0x5c, 0xf4, 0x50, 0xa2, 0x45, 0x5e, - 0x57, 0x1d, 0x0f, 0x46, 0xf5, 0x29, 0xaa, 0x0d, 0xbd, 0x9c, 0x4c, 0x5f, 0x87, 0x9f, 0x7f, 0x06, - 0xa3, 0x51, 0x51, 0x82, 0x6a, 0xd3, 0x54, 0x7c, 0x73, 0xf7, 0x4a, 0xbd, 0xc6, 0x1e, 0x54, 0xa1, - 0x84, 0x42, 0xc7, 0x54, 0xa9, 0xcc, 0xc6, 0x84, 0xa9, 0x0c, 0x9c, 0x36, 0xfd, 0xb4, 0x3b, 0xd4, - 0x73, 0xa6, 0xeb, 0x77, 0xef, 0x7d, 0x6f, 0x42, 0xe6, 0x18, 0x74, 0x5d, 0xf3, 0x25, 0xb9, 0xe9, - 0x1a, 0x08, 0xb7, 0xd9, 0x58, 0x17, 0x26, 0x5e, 0x95, 0x6f, 0x8c, 0x59, 0x45, 0x3b, 0xa2, 0xc1, - 0x22, 0x40, 0xec, 0xf4, 0xe5, 0x55, 0xd1, 0x21, 0x23, 0x0d, 0x0b, 0x54, 0x4e, 0x48, 0xa3, 0xc9, - 0xf0, 0xbd, 0x86, 0xef, 0x0f, 0xaf, 0xb8, 0x23, 0x9c, 0xb1, 0x3e, 0x47, 0x2c, 0x0b, 0x3a, 0xc5, - 0x75, 0x96, 0x95, 0x57, 0x1d, 0x63, 0x4a, 0xa0, 0x18, 0x23, 0x9f, 0xc2, 0xc4, 0x49, 0x05, 0x55, - 0xa7, 0xd7, 0x4b, 0xa0, 0x10, 0x37, 0xe9, 0x20, 0x3d, 0x02, 0x49, 0x01, 0x4c, 0xac, 0x05, 0xd3, - 0xce, 0xc8, 0x00, 0xbf, 0xb8, 0xca, 0x6e, 0xdf, 0x61, 0x1c, 0xa5, 0x80, 0xde, 0xf2, 0xf3, 0x04, - 0x8a, 0xbf, 0x6a, 0x4f, 0xd6, 0xe3, 0xd9, 0xb8, 0xd6, 0x97, 0x8c, 0xbf, 0x84, 0x3d, 0x6c, 0xaa, - 0x48, 0x0e, 0x38, 0x34, 0x68, 0x89, 0x12, 0xcd, 0xf9, 0xe0, 0x86, 0x4f, 0x3d, 0x9f, 0x7e, 0xc0, - 0x41, 0x85, 0x3d, 0x23, 0x3a, 0x67, 0x4b, 0x31, 0xc9, 0x15, 0x55, 0x4b, 0x08, 0xb9, 0x4d, 0x1e, - 0x31, 0x30, 0xb0, 0xd7, 0xc4, 0xbe, 0x62, 0xc4, 0x72, 0x64, 0x7a, 0x3b, 0x94, 0xc9, 0x6e, 0x80, - 0x6c, 0x3d, 0x68, 0x29, 0x4d, 0x2c, 0x95, 0x07, 0x13, 0xcb, 0x8d, 0x42, 0x8a, 0xb1, 0x7e, 0x0c, - 0x0e, 0xd6, 0xb3, 0x21, 0xdd, 0xb8, 0xe8, 0x85, 0xa0, 0x65, 0x62, 0xf1, 0x60, 0x97, 0xa2, 0xed, - 0xab, 0x41, 0x0b, 0x58, 0x88, 0xf4, 0x07, 0x8c, 0x51, 0x5e, 0xc8, 0x1a, 0xc1, 0x9d, 0x57, 0x19, - 0x20, 0x49, 0xbe, 0x2a, 0x94, 0x79, 0x74, 0x35, 0x1c, 0xf0, 0x9c, 0xc0, 0xd1, 0xd1, 0xf7, 0xde, - 0x02, 0x16, 0xf0, 0x66, 0x92, 0x58, 0xc0, 0x5e, 0x71, 0xe5, 0x95, 0x57, 0xc2, 0xc3, 0xb3, 0xb8, - 0xef, 0xbd, 0x5e, 0xd0, 0x47, 0x52, 0x14, 0x6b, 0x8a, 0xe8, 0x56, 0x00, 0xa1, 0x14, 0x11, 0x14, - 0x9c, 0x02, 0x8d, 0x78, 0x77, 0x19, 0x9c, 0x7e, 0xdf, 0x9d, 0xbd, 0xed, 0x77, 0xac, 0x9d, 0x53, - 0x43, 0x44, 0xc8, 0xad, 0x83, 0xd4, 0x3a, 0x93, 0xae, 0x81, 0xf3, 0x74, 0x19, 0xcb, 0xc4, 0x68, - 0x7d, 0x95, 0x91, 0x68, 0x21, 0x54, 0xa8, 0xb0, 0xa0, 0xe0, 0xe5, 0x4e, 0x7b, 0x32, 0xce, 0x80, - 0xef, 0xd3, 0xa6, 0x75, 0xb9, 0xe3, 0x68, 0xe4, 0x53, 0x06, 0x57, 0xfb, 0x1d, 0x5e, 0xe9, 0x41, - 0x1b, 0xf0, 0x25, 0xb7, 0xa2, 0xea, 0x75, 0xbb, 0x7a, 0xa3, 0x47, 0xc5, 0xcd, 0x98, 0x8a, 0x9c, - 0xdf, 0x29, 0x0e, 0x00, 0x37, 0x09, 0x7d, 0xaf, 0x19, 0x0b, 0xf4, 0x93, 0x39, 0x82, 0x8a, 0x87, - 0x12, 0xe4, 0x8d, 0xad, 0x1e, 0xc3, 0x7a, 0xff, 0x49, 0x77, 0x48, 0xad, 0x03, 0xb8, 0xb0, 0xcc, - 0x3f, 0x5a, 0xb1, 0x70, 0xc5, 0xa5, 0xdf, 0x12, 0x9f, 0xb0, 0x98, 0x5d, 0xfd, 0xce, 0x81, 0x17, - 0x79, 0xe4, 0xde, 0x97, 0xf7, 0xc9, 0x76, 0x67, 0x80, 0x42, 0x68, 0x0c, 0xcb, 0x50, 0x3c, 0x6b, - 0x33, 0x56, 0xf0, 0x12, 0x5a, 0x08, 0x30, 0x27, 0xf4, 0xb1, 0x11, 0x04, 0x1f, 0x79, 0x15, 0x58, - 0x27, 0xea, 0xfd, 0xde, 0xd8, 0xf7, 0xb7, 0xed, 0xf1, 0x0b, 0x11, 0x12, 0x47, 0x00, 0xc3, 0x9d, - 0x41, 0x90, 0xbd, 0xc5, 0x32, 0x87, 0xce, 0x14, 0x4f, 0x05, 0x3b, 0x24, 0xad, 0xcb, 0xcd, 0x8a, - 0xfa, 0xd2, 0xf0, 0x0a, 0x04, 0xcb, 0x88, 0xeb, 0xc6, 0xe5, 0x25, 0xb0, 0x1c, 0x3f, 0xee, 0x2f, - 0xce, 0xc0, 0xd4, 0xe2, 0x12, 0x26, 0xd2, 0xd5, 0x3e, 0x7d, 0xda, 0x9d, 0x50, 0x1f, 0x88, 0x48, - 0x14, 0xd2, 0xbc, 0x1f, 0xbf, 0xfb, 0x56, 0xc7, 0x11, 0xac, 0x22, 0x12, 0xe7, 0x18, 0x28, 0xd3, - 0x44, 0xe2, 0xa3, 0x22, 0x0b, 0x7e, 0x79, 0xaf, 0x78, 0xb3, 0xde, 0x70, 0xab, 0x43, 0x0c, 0x2a, - 0x5c, 0x63, 0xeb, 0xdb, 0x46, 0x90, 0xe6, 0x1f, 0x45, 0x2a, 0x43, 0x34, 0xcb, 0x78, 0x8a, 0x67, - 0x65, 0xb6, 0x72, 0x43, 0x97, 0x01, 0x97, 0x3c, 0xcd, 0xca, 0xd5, 0x64, 0x6e, 0xc1, 0xb8, 0x5f, - 0x08, 0xc7, 0x26, 0x8c, 0x0e, 0x08, 0xb3, 0xd5, 0x4e, 0x00, 0x9b, 0x01, 0x38, 0x03, 0xa3, 0x2a, - 0xf0, 0x5d, 0xc6, 0x40, 0x71, 0x08, 0x6d, 0x99, 0xc0, 0x94, 0x0d, 0x71, 0x9e, 0x0a, 0x9a, 0xa0, - 0xd0, 0x88, 0xd3, 0xb9, 0x9b, 0x98, 0x66, 0xe9, 0x42, 0x8f, 0x7c, 0x56, 0x23, 0x19, 0xf4, 0xe7, - 0xd0, 0xf4, 0x2d, 0x49, 0x66, 0xa0, 0x48, 0x66, 0x47, 0x9b, 0xf3, 0x2a, 0xec, 0xfb, 0xe5, 0xbc, - 0xd6, 0xe6, 0xdc, 0x5c, 0x33, 0x1c, 0x4f, 0xf0, 0xd9, 0x7f, 0xa9, 0x36, 0x1d, 0x6b, 0x15, 0x24, - 0x34, 0xb5, 0x5a, 0x7f, 0x11, 0x68, 0xf3, 0x13, 0xde, 0x5c, 0xd9, 0xa4, 0xf7, 0x59, 0xb2, 0x50, - 0xbf, 0x16, 0xde, 0x1b, 0x9a, 0xa9, 0x2d, 0x59, 0x28, 0xf3, 0x29, 0x96, 0xac, 0x15, 0xee, 0x12, - 0x31, 0xff, 0x51, 0x6d, 0xb9, 0x4d, 0xe6, 0x56, 0xc6, 0xb7, 0xee, 0x84, 0xd6, 0xd1, 0x3b, 0x4b, - 0xe5, 0xce, 0x67, 0x6d, 0x73, 0x27, 0x63, 0x29, 0x7f, 0xb8, 0xb7, 0xff, 0x8e, 0x8c, 0x81, 0x5d, - 0x6b, 0xab, 0x53, 0xa7, 0xab, 0x9f, 0x26, 0x9b, 0xe4, 0x7a, 0x7d, 0xed, 0x31, 0x09, 0x7b, 0xd9, - 0x42, 0x47, 0x75, 0xf5, 0xf0, 0xad, 0xc8, 0x2b, 0x38, 0xc7, 0xe4, 0xa8, 0xf0, 0x88, 0x36, 0x25, - 0x46, 0x3c, 0x9a, 0x70, 0x28, 0x9e, 0xbc, 0x34, 0xee, 0x05, 0x3a, 0x57, 0x0a, 0x01, 0x26, 0x7f, - 0xec, 0x92, 0x35, 0x1b, 0xe2, 0x80, 0x19, 0x4d, 0x5d, 0x54, 0xc7, 0x0e, 0x08, 0xbb, 0x97, 0xd0, - 0x1a, 0x56, 0x15, 0x2c, 0x83, 0x7b, 0x4f, 0x41, 0xfc, 0xf7, 0xf0, 0xa2, 0x14, 0x34, 0x63, 0x64, - 0xeb, 0x33, 0x43, 0xa5, 0x85, 0xf2, 0x40, 0x81, 0x5a, 0x90, 0xfd, 0x91, 0x6f, 0x2c, 0xf4, 0x2e, - 0x95, 0x67, 0xfa, 0x5f, 0x06, 0x73, 0x71, 0x19, 0xb1, 0x80, 0x0a, 0xf3, 0xae, 0x6a, 0x6d, 0xff, - 0x33, 0xf2, 0xbe, 0xf8, 0xea, 0xab, 0xaf, 0xac, 0xa4, 0x10, 0x27, 0x4e, 0x98, 0xf1, 0x31, 0x5a, - 0x98, 0xde, 0x8e, 0x15, 0xc6, 0xbd, 0x13, 0x9e, 0x0f, 0x9a, 0xc2, 0x07, 0x00, 0x03, 0x20, 0xb5, - 0x30, 0xdb, 0xb8, 0x11, 0x18, 0xc3, 0x07, 0xee, 0x98, 0x46, 0xbe, 0x4f, 0xcf, 0xb8, 0x75, 0x71, - 0x8f, 0x7c, 0x1d, 0xf7, 0xf3, 0xcf, 0xb0, 0x76, 0x6f, 0xef, 0xea, 0xb8, 0x2f, 0xdb, 0xf5, 0x89, - 0xf0, 0xa0, 0x0d, 0xd8, 0x49, 0x68, 0x5a, 0x19, 0x9a, 0x8f, 0x01, 0x6e, 0x6f, 0x29, 0x6d, 0x3e, - 0x05, 0x61, 0xc6, 0xa0, 0x03, 0x2a, 0x32, 0xb6, 0xca, 0xfb, 0xc1, 0x10, 0x8b, 0x86, 0xbe, 0x2e, - 0x68, 0x64, 0xf1, 0x23, 0xe2, 0x4a, 0xf6, 0xda, 0x0b, 0xd2, 0x2b, 0x06, 0xd2, 0x24, 0xed, 0x25, - 0x89, 0x83, 0x2e, 0x7c, 0xbe, 0x7f, 0x1d, 0x30, 0x36, 0x9b, 0xab, 0x84, 0x43, 0x91, 0xbe, 0xc5, - 0x48, 0x53, 0x9d, 0xd0, 0xe2, 0x18, 0x03, 0xd4, 0x82, 0x84, 0xb8, 0x03, 0x48, 0x29, 0x21, 0x26, - 0xc6, 0xa7, 0xad, 0x89, 0x37, 0xcb, 0x7a, 0xfd, 0x74, 0xf9, 0x72, 0xff, 0xea, 0x67, 0x77, 0xe9, - 0xac, 0xde, 0x80, 0xd2, 0xae, 0x34, 0x5b, 0x71, 0xb5, 0xb3, 0xd8, 0x4c, 0x3b, 0x5e, 0xd7, 0x50, - 0x95, 0x84, 0xed, 0x12, 0xef, 0x17, 0x78, 0xf5, 0xaa, 0x92, 0x2d, 0x68, 0xbd, 0x39, 0x76, 0x10, - 0x22, 0xe3, 0x6f, 0xf2, 0xa4, 0x13, 0x86, 0x7b, 0x16, 0x3e, 0x5b, 0x09, 0x31, 0xdf, 0xbf, 0xf8, - 0x6b, 0x94, 0xa5, 0x0a, 0x90, 0x3b, 0xf7, 0xaf, 0xf2, 0x2b, 0x17, 0x25, 0x46, 0x90, 0x74, 0x4d, - 0xa1, 0x43, 0x49, 0x70, 0x7b, 0x9b, 0x4f, 0x56, 0x1d, 0x85, 0x00, 0xb9, 0x10, 0x71, 0xe0, 0xec, - 0xe3, 0xa4, 0x59, 0xcf, 0x69, 0x99, 0x16, 0x86, 0xca, 0xa6, 0x55, 0x8a, 0xa5, 0xb0, 0xde, 0x2e, - 0x09, 0x16, 0x1b, 0x68, 0x48, 0xaf, 0x98, 0x58, 0x97, 0x5c, 0x1b, 0x69, 0xed, 0x52, 0x2b, 0x0e, - 0x2d, 0xb0, 0xb4, 0x59, 0x27, 0x27, 0x5e, 0x12, 0x7a, 0x4f, 0xbc, 0xc1, 0x66, 0x00, 0x6b, 0xaa, - 0xd9, 0x3c, 0xc9, 0xb2, 0xb0, 0xf4, 0x73, 0x38, 0xa6, 0x78, 0x09, 0x60, 0x1b, 0xb6, 0xe6, 0xeb, - 0xc4, 0x1b, 0xa0, 0xf6, 0xc6, 0x4e, 0x3c, 0x1e, 0x9b, 0x23, 0x90, 0x4d, 0xdb, 0x45, 0x7a, 0xc3, - 0x1d, 0x52, 0x33, 0xf0, 0xf3, 0x2b, 0xda, 0x58, 0x9b, 0xd2, 0x07, 0xd3, 0xe1, 0xdb, 0x09, 0xac, - 0x6c, 0xbc, 0x09, 0x30, 0xe2, 0xa2, 0xad, 0x24, 0x19, 0x70, 0xae, 0x24, 0xde, 0xd7, 0xe8, 0x88, - 0x83, 0x20, 0x13, 0xe9, 0x13, 0xb5, 0xc6, 0xfe, 0x17, 0x78, 0x21, 0xb0, 0xb1, 0xc2, 0xd1, 0x49, - 0x09, 0xb6, 0x8b, 0x60, 0x12, 0x79, 0x53, 0xad, 0xb7, 0x9a, 0x50, 0x7c, 0x20, 0x9c, 0x1f, 0xfa, - 0x11, 0xd2, 0x69, 0x44, 0xda, 0x69, 0x52, 0xff, 0x6d, 0xf5, 0xa7, 0xfc, 0x42, 0x5a, 0xf8, 0x47, - 0x91, 0xa5, 0xef, 0x9a, 0xb2, 0xb4, 0xa9, 0xca, 0x82, 0xbe, 0xae, 0x81, 0xdd, 0x8d, 0x3c, 0xe0, - 0x38, 0xa6, 0x59, 0x21, 0xe4, 0x21, 0xc8, 0xdb, 0x9c, 0xa9, 0x4e, 0x54, 0x3a, 0xb2, 0x40, 0xcd, - 0xe7, 0x81, 0xd1, 0x7a, 0x68, 0x76, 0x65, 0xcb, 0xaf, 0xb6, 0xac, 0x59, 0x49, 0xa4, 0xa4, 0xd4, - 0x15, 0xff, 0x54, 0xe2, 0x2f, 0xec, 0x91, 0x43, 0xa7, 0x72, 0x6c, 0xb1, 0x41, 0x9b, 0x4b, 0x07, - 0xab, 0x88, 0x23, 0x67, 0x09, 0x6b, 0x5a, 0x3a, 0xac, 0x18, 0x5a, 0xe7, 0x38, 0x85, 0x72, 0x70, - 0x80, 0xf0, 0xce, 0x21, 0x02, 0x78, 0x48, 0x77, 0x38, 0x3a, 0x31, 0x7f, 0x75, 0x48, 0x93, 0xdc, - 0x28, 0x29, 0x43, 0x58, 0x0d, 0x07, 0x7d, 0xfc, 0xaf, 0x7f, 0xf4, 0xc2, 0xae, 0xea, 0xce, 0xc6, - 0xb6, 0x90, 0x37, 0xb3, 0x9b, 0x5a, 0x65, 0x00, 0x79, 0xdc, 0x01, 0x80, 0x3b, 0x12, 0x69, 0x32, - 0x93, 0xb7, 0x6e, 0xf9, 0xd1, 0x47, 0xed, 0xb3, 0x44, 0x3f, 0xe9, 0xe0, 0x10, 0x29, 0x7f, 0x3d, - 0xfb, 0xf9, 0x8d, 0xb4, 0xc5, 0x26, 0x8b, 0x3b, 0x5d, 0x4f, 0x6a, 0x60, 0x33, 0x20, 0xb8, 0x65, - 0x76, 0x89, 0xca, 0x35, 0x25, 0x49, 0x8b, 0x12, 0x9d, 0xad, 0x02, 0x18, 0x0e, 0xa9, 0x4e, 0xaf, - 0x45, 0x79, 0x95, 0xcd, 0x63, 0x62, 0x18, 0xa3, 0xcf, 0x3f, 0xbb, 0x12, 0x13, 0xd8, 0x68, 0x8a, - 0x18, 0xb3, 0x7c, 0xe9, 0x51, 0xd7, 0xa3, 0x08, 0x8f, 0x31, 0xec, 0xc3, 0x2b, 0xbc, 0x72, 0x40, - 0xda, 0x08, 0x1a, 0xcc, 0xc8, 0x03, 0x26, 0x32, 0x47, 0xef, 0xf4, 0xf7, 0xef, 0xbe, 0xef, 0x7d, - 0x8d, 0xe7, 0x1b, 0x34, 0x81, 0x36, 0xcf, 0x18, 0xa7, 0x0c, 0x75, 0x7c, 0x9f, 0x7f, 0x46, 0x51, - 0x6b, 0x01, 0x00, 0xd8, 0x6c, 0x4e, 0xb4, 0x6e, 0x15, 0x3e, 0xfb, 0xd9, 0xef, 0x5a, 0x9f, 0x60, - 0x0a, 0xf4, 0x16, 0x8d, 0x62, 0x39, 0xec, 0x89, 0x93, 0x75, 0x6b, 0x98, 0x24, 0x9b, 0xb3, 0xb4, - 0x2d, 0x26, 0xa5, 0x41, 0x05, 0x9b, 0xd6, 0x24, 0xf9, 0x34, 0x34, 0x08, 0x12, 0xe3, 0x58, 0xb8, - 0x5f, 0xac, 0x67, 0x33, 0xe4, 0x9c, 0x3c, 0xee, 0x7f, 0xe4, 0x1d, 0x1e, 0xa6, 0x59, 0xda, 0x53, - 0x34, 0x0f, 0xe0, 0xac, 0x00, 0xab, 0x42, 0x2a, 0xcc, 0xa1, 0x51, 0x42, 0x83, 0x1c, 0x94, 0xc2, - 0xbd, 0x56, 0x32, 0x8d, 0x3b, 0x9d, 0xe8, 0x6e, 0xdc, 0x39, 0x66, 0x8f, 0x5b, 0x1d, 0x0c, 0xde, - 0x3f, 0x91, 0xe6, 0x95, 0xe3, 0x43, 0xce, 0x21, 0xf6, 0x92, 0xfa, 0x17, 0x1c, 0x19, 0x5d, 0x47, - 0x58, 0x84, 0xfe, 0xd9, 0x12, 0xe8, 0xc1, 0x54, 0x26, 0x73, 0xbd, 0x09, 0x83, 0x3c, 0x6a, 0x96, - 0x0f, 0xad, 0x2f, 0x94, 0x4f, 0xc7, 0xde, 0xbd, 0x9f, 0x00, 0xe3, 0x6e, 0x68, 0x12, 0xc2, 0xee, - 0x10, 0xb6, 0x59, 0xdc, 0x13, 0xfc, 0xb8, 0x56, 0x7c, 0xdb, 0xe8, 0x3f, 0xcb, 0xcb, 0x40, 0x6e, - 0x2f, 0xc6, 0xde, 0xdf, 0xe8, 0x16, 0x46, 0xba, 0xc1, 0x8d, 0xb1, 0x53, 0x8b, 0xa2, 0x0e, 0x9b, - 0x29, 0xcb, 0x1c, 0x78, 0x32, 0x77, 0xeb, 0xd0, 0xf5, 0x93, 0xb9, 0xd7, 0xed, 0xd8, 0x62, 0xd5, - 0xdf, 0x83, 0xb6, 0x72, 0xe1, 0xc8, 0x3f, 0x71, 0xe4, 0xd1, 0x2e, 0xd7, 0xed, 0xe8, 0x88, 0xea, - 0x28, 0x5e, 0x74, 0xd4, 0x16, 0x49, 0x85, 0x57, 0xbc, 0xd2, 0x5d, 0xd8, 0x94, 0xee, 0xc7, 0x8d, - 0x81, 0xa9, 0x2a, 0xa1, 0xfd, 0xb9, 0x2f, 0x46, 0x8d, 0xf2, 0x1a, 0xa5, 0x15, 0x14, 0xbb, 0x71, - 0x5a, 0x75, 0x0d, 0x48, 0xbd, 0x63, 0xa4, 0xda, 0x84, 0xd3, 0xe9, 0xd6, 0x3b, 0x01, 0x04, 0x01, - 0x1e, 0x4f, 0x1c, 0x19, 0xf4, 0xdc, 0x70, 0xc7, 0x22, 0x30, 0x64, 0x2f, 0x87, 0x46, 0x84, 0xda, - 0xcd, 0xc8, 0x13, 0x47, 0xc6, 0xf7, 0xdd, 0xc8, 0xf3, 0x94, 0x56, 0x6a, 0x91, 0x49, 0xda, 0xee, - 0xe3, 0x6f, 0xb9, 0x0b, 0xa7, 0x7c, 0x9c, 0x63, 0x0a, 0xb5, 0xef, 0x64, 0xe9, 0x74, 0xac, 0xfa, - 0x9a, 0xf0, 0x25, 0x2b, 0x90, 0xa8, 0x44, 0xed, 0x00, 0x93, 0xec, 0x7f, 0x4b, 0x25, 0xa6, 0x68, - 0xf8, 0x47, 0x56, 0xa6, 0xe6, 0xa0, 0xa0, 0xcc, 0xff, 0xea, 0x11, 0x43, 0xb2, 0x57, 0x64, 0x74, - 0x9d, 0x62, 0xf8, 0x35, 0x0a, 0x2f, 0xc4, 0x35, 0xeb, 0xb5, 0x4b, 0x70, 0x2d, 0xe1, 0x74, 0x0e, - 0x15, 0xa4, 0x7e, 0xf0, 0x23, 0x7d, 0xfa, 0xc0, 0x1b, 0x6a, 0x80, 0xcb, 0xa4, 0x5c, 0x0a, 0x03, - 0x20, 0x65, 0xb4, 0xe3, 0xea, 0x62, 0x5e, 0xf4, 0x6f, 0x6f, 0x48, 0x74, 0xd0, 0xf6, 0xaf, 0x2a, - 0x67, 0x86, 0x29, 0x90, 0xa9, 0x8d, 0x5f, 0x55, 0x16, 0x24, 0x81, 0xf0, 0x88, 0x47, 0xbd, 0xc2, - 0x1c, 0x1d, 0x04, 0x92, 0x25, 0x61, 0xa3, 0x22, 0x5e, 0xdd, 0x74, 0x22, 0xcd, 0xe0, 0x36, 0xa5, - 0x9d, 0x15, 0xca, 0x4e, 0xf3, 0x04, 0x65, 0x47, 0xb2, 0x40, 0x16, 0xfd, 0x74, 0xc9, 0x95, 0x95, - 0x7d, 0x90, 0x52, 0xe6, 0xeb, 0x1c, 0x7b, 0xac, 0x2c, 0x91, 0x45, 0x7f, 0x3d, 0x5f, 0x41, 0xd7, - 0xf0, 0x85, 0x19, 0xb6, 0x59, 0xb0, 0xe8, 0xaf, 0x0a, 0x54, 0xd9, 0xd7, 0xcd, 0x82, 0x98, 0xee, - 0x04, 0x6b, 0x76, 0xf7, 0x8e, 0x14, 0xf8, 0x64, 0x74, 0x22, 0x4d, 0x00, 0x71, 0x2b, 0xfd, 0xd5, - 0x12, 0xd8, 0x0b, 0xe2, 0x4f, 0x48, 0x9a, 0xf5, 0x62, 0x25, 0x0f, 0xbb, 0x9a, 0x98, 0x15, 0x6a, - 0x50, 0xd4, 0xd5, 0x6c, 0x96, 0x2e, 0xf0, 0xe2, 0x6e, 0x5b, 0x69, 0xe1, 0x28, 0x3d, 0xd9, 0xb4, - 0x95, 0x2e, 0x9b, 0xa5, 0x51, 0x39, 0xee, 0xc1, 0xb1, 0xdb, 0x5a, 0xc5, 0xae, 0x43, 0xd4, 0x95, - 0xd0, 0x32, 0xe3, 0x4a, 0xda, 0xea, 0x3a, 0x1b, 0x03, 0xa3, 0xcb, 0xcb, 0x61, 0x4e, 0xb6, 0x21, - 0x87, 0x76, 0xd8, 0x5a, 0xc6, 0x86, 0xaa, 0x37, 0x59, 0x04, 0xac, 0xd5, 0x45, 0xdb, 0x9b, 0x58, - 0xc2, 0x9a, 0xc6, 0x06, 0x89, 0x60, 0xe6, 0x23, 0x8f, 0xef, 0xfa, 0x6e, 0xf1, 0x83, 0x74, 0xc1, - 0x92, 0x0b, 0x4b, 0xa4, 0x26, 0x18, 0x8b, 0x2a, 0x65, 0xf0, 0xa3, 0x2c, 0x81, 0x38, 0xa2, 0x23, - 0x58, 0xd5, 0xa8, 0x1f, 0x01, 0xd8, 0x45, 0xaf, 0x27, 0xf9, 0x87, 0xf9, 0xb9, 0x78, 0xc0, 0x06, - 0x88, 0x4b, 0x04, 0x23, 0xc9, 0x2c, 0xa1, 0x24, 0x08, 0x97, 0xf0, 0xe5, 0x47, 0x56, 0xda, 0xd0, - 0x91, 0x76, 0x44, 0x69, 0x7a, 0x15, 0x2a, 0x99, 0x84, 0x4d, 0xde, 0x50, 0x00, 0xc7, 0xab, 0xca, - 0x3e, 0xbb, 0x18, 0x59, 0xa6, 0x45, 0xb4, 0x60, 0xcb, 0xb3, 0xfe, 0x01, 0x81, 0x4a, 0x4f, 0x96, - 0x6c, 0x17, 0x6b, 0x5e, 0xb4, 0x08, 0x82, 0xee, 0x8a, 0x49, 0xbf, 0x70, 0x53, 0x50, 0x43, 0x12, - 0x33, 0xaa, 0x24, 0x9b, 0x4f, 0x21, 0x6c, 0x4a, 0xbe, 0x9d, 0x2e, 0x64, 0x53, 0xb3, 0x8b, 0x8d, - 0xc6, 0x83, 0xb4, 0xe9, 0xcb, 0x34, 0xd8, 0x8b, 0xab, 0xce, 0x57, 0xa4, 0x1f, 0x49, 0x8a, 0xb7, - 0x13, 0xa5, 0xd6, 0x87, 0x35, 0x3a, 0x6f, 0x30, 0x1a, 0x4d, 0xe0, 0xbe, 0xe3, 0x03, 0x12, 0xe5, - 0xbf, 0x59, 0x9e, 0x2d, 0x97, 0xef, 0xb2, 0x55, 0x0b, 0xb7, 0xdc, 0x18, 0x04, 0x1b, 0xa0, 0xde, - 0x91, 0x16, 0x75, 0x57, 0xc3, 0xec, 0xd0, 0xc2, 0x86, 0xaa, 0xc3, 0x61, 0xff, 0x6b, 0x42, 0x13, - 0xc2, 0x55, 0xf4, 0xc9, 0xb6, 0x12, 0x1a, 0x36, 0xb8, 0xce, 0xaf, 0x3f, 0x7e, 0xf7, 0xad, 0x34, - 0x95, 0x51, 0x7f, 0x5c, 0xa4, 0xb2, 0xed, 0x54, 0x4a, 0x0a, 0xc5, 0xe0, 0x71, 0x84, 0x70, 0x2d, - 0x83, 0x04, 0xb2, 0xcd, 0x7b, 0x9b, 0xa1, 0xed, 0xfc, 0xc2, 0xb2, 0x89, 0xb4, 0x37, 0x75, 0xa4, - 0xa1, 0x8f, 0x64, 0x2d, 0xdd, 0x7b, 0xad, 0x2f, 0x6c, 0xde, 0x16, 0xa0, 0xd8, 0x3e, 0x49, 0x1a, - 0x10, 0x69, 0xf8, 0xe7, 0x8d, 0xfa, 0x00, 0xff, 0xca, 0x69, 0xcb, 0xa6, 0xff, 0xa0, 0xb3, 0x1f, - 0xaf, 0xea, 0x93, 0x77, 0x08, 0x9e, 0xec, 0x90, 0x68, 0xee, 0x1c, 0x86, 0xf2, 0xed, 0x81, 0x3d, - 0xe7, 0xe9, 0x50, 0xda, 0xcf, 0x2b, 0xc9, 0x0a, 0xda, 0x6a, 0x5a, 0xa2, 0x18, 0xb2, 0x37, 0x4b, - 0x06, 0x8b, 0x0f, 0x81, 0x03, 0xf8, 0xa3, 0x8e, 0xd0, 0xe5, 0x4b, 0x69, 0x53, 0xaa, 0x50, 0xfd, - 0x06, 0x27, 0x84, 0x8d, 0x70, 0x2c, 0xa5, 0xf6, 0xbd, 0xdf, 0xd0, 0x9a, 0xc6, 0x49, 0xb7, 0xc9, - 0x72, 0xe9, 0xf1, 0x7d, 0xa0, 0xc5, 0xc2, 0xa3, 0xeb, 0x86, 0x34, 0x23, 0x7c, 0x9e, 0x74, 0xe1, - 0x37, 0x6c, 0xca, 0x18, 0x26, 0xb1, 0x4f, 0x92, 0x51, 0xa5, 0xa8, 0x72, 0xf7, 0x30, 0x17, 0xd4, - 0x07, 0xcc, 0xdd, 0x5c, 0x56, 0xb0, 0xb1, 0x95, 0x2e, 0x01, 0x5b, 0x12, 0x69, 0x00, 0xec, 0x76, - 0xbb, 0xff, 0xa0, 0x51, 0x1d, 0x24, 0x4d, 0x8d, 0xd5, 0xc1, 0x76, 0xa0, 0x7e, 0x4b, 0x04, 0x68, - 0xfd, 0x50, 0x1d, 0x0b, 0x3f, 0x83, 0x80, 0x20, 0xc7, 0x5c, 0x50, 0x24, 0xfa, 0x2b, 0x01, 0x22, - 0x69, 0x79, 0x9b, 0xe5, 0xbf, 0x33, 0x0e, 0xd2, 0xec, 0x96, 0x7c, 0x77, 0xd0, 0x64, 0x89, 0x16, - 0x07, 0xe0, 0x42, 0xc5, 0x8e, 0x31, 0xbf, 0xc3, 0x22, 0x12, 0xab, 0x00, 0x49, 0xf6, 0x70, 0xf3, - 0xde, 0x32, 0xc3, 0x08, 0x9b, 0xd4, 0x89, 0x13, 0x37, 0x78, 0x44, 0x13, 0x76, 0xf0, 0x98, 0x86, - 0x1f, 0x6a, 0x2c, 0xc0, 0x4b, 0xe6, 0x62, 0x76, 0x63, 0xa4, 0x3c, 0x06, 0x6d, 0xc8, 0xea, 0xdc, - 0x24, 0xe2, 0x56, 0x11, 0x32, 0xf9, 0x2a, 0x1d, 0xe0, 0x5f, 0xe7, 0xd6, 0xb7, 0x94, 0xc5, 0x1d, - 0x9a, 0xa2, 0x00, 0x2b, 0x91, 0xf6, 0x81, 0x55, 0x46, 0xf2, 0x05, 0xee, 0x07, 0x9b, 0xc9, 0x67, - 0x56, 0xe5, 0x43, 0x95, 0x07, 0x0d, 0x4c, 0xa6, 0x78, 0xdb, 0x6d, 0xba, 0x9c, 0xa4, 0xbf, 0xef, - 0xd4, 0x04, 0x3a, 0x14, 0x91, 0xb2, 0x35, 0x4b, 0x07, 0x68, 0x8f, 0xff, 0x7a, 0xf2, 0x3b, 0x9e, - 0xc9, 0x81, 0x16, 0xbc, 0x52, 0xe5, 0x04, 0xd5, 0x34, 0x1c, 0x78, 0x03, 0x5d, 0x6a, 0xc5, 0x94, - 0xd5, 0x80, 0xe5, 0x23, 0xd9, 0x49, 0xac, 0x6a, 0xbd, 0xe1, 0x56, 0x7c, 0x0c, 0x2d, 0xb5, 0x30, - 0xd5, 0x3e, 0xd6, 0x6e, 0x52, 0x21, 0x77, 0xba, 0x62, 0x0a, 0xdd, 0x1a, 0x26, 0xe3, 0x76, 0x13, - 0xac, 0x65, 0x6e, 0x35, 0xfb, 0xdb, 0xc2, 0x02, 0x17, 0xb7, 0xa1, 0x65, 0x4a, 0x69, 0xd8, 0x23, - 0xb5, 0xf9, 0xf1, 0x51, 0xc6, 0x46, 0xab, 0x9b, 0x4f, 0x63, 0x77, 0x4c, 0x8b, 0x7f, 0xd7, 0xde, - 0xd8, 0x06, 0xdf, 0xa7, 0xb0, 0x39, 0x1a, 0x69, 0x8f, 0x34, 0x39, 0x6a, 0x09, 0xa0, 0x07, 0x73, - 0x2b, 0x95, 0xfd, 0x7f, 0xd6, 0x88, 0x68, 0x0d, 0xcb, 0x65, 0x4f, 0xb4, 0x0a, 0x80, 0xa4, 0x6a, - 0x1a, 0x90, 0x1a, 0x86, 0x46, 0xcb, 0xac, 0xf6, 0xd1, 0xcd, 0xd9, 0x38, 0x2d, 0x60, 0xb3, 0xa6, - 0x95, 0xc0, 0xe8, 0xe8, 0x71, 0xb6, 0xb4, 0x86, 0xc0, 0x8f, 0x1a, 0xd4, 0x5e, 0x62, 0x0c, 0x4e, - 0xaf, 0x4b, 0x20, 0x82, 0x1a, 0xaa, 0xa8, 0x28, 0xfc, 0xe2, 0xa1, 0x0d, 0xbf, 0x9e, 0xd0, 0xd0, - 0x5e, 0xce, 0xe7, 0xca, 0x02, 0xe7, 0x16, 0xeb, 0x2b, 0xc7, 0x14, 0xb6, 0x99, 0x16, 0xe1, 0xbd, - 0x66, 0xd7, 0xdb, 0x97, 0x72, 0x81, 0x5e, 0x0a, 0x1f, 0xb5, 0x0c, 0x53, 0x3b, 0xd7, 0x71, 0x49, - 0xc6, 0x4a, 0xb6, 0x2f, 0x60, 0x0f, 0x46, 0x97, 0x86, 0x18, 0x5b, 0xdc, 0x6f, 0xf7, 0x95, 0x53, - 0x58, 0x81, 0x42, 0x6b, 0x71, 0x17, 0x30, 0xc6, 0x4e, 0xc2, 0x15, 0x60, 0x69, 0xec, 0xaa, 0x20, - 0x6a, 0x15, 0xda, 0x21, 0x27, 0xc7, 0x70, 0x43, 0x43, 0x41, 0x09, 0x21, 0xe5, 0x64, 0x2b, 0x3b, - 0x23, 0x5b, 0x85, 0x34, 0x3e, 0x93, 0xa9, 0x92, 0xe3, 0x7b, 0x70, 0xc8, 0x73, 0x03, 0xfb, 0x74, - 0x18, 0x2b, 0x87, 0x98, 0x63, 0xef, 0x48, 0xab, 0xce, 0x80, 0xa3, 0x55, 0xfe, 0x12, 0xc5, 0x85, - 0x61, 0xf8, 0x54, 0x85, 0x7b, 0xbd, 0x87, 0x87, 0x43, 0x40, 0x0f, 0xf6, 0x9e, 0x07, 0xb4, 0x63, - 0xeb, 0x79, 0x40, 0x13, 0xf6, 0x0e, 0xa4, 0x42, 0xb6, 0x45, 0x12, 0xb6, 0xb6, 0xf4, 0x26, 0x7c, - 0x08, 0x38, 0xb4, 0xa2, 0xa3, 0x96, 0xf3, 0x66, 0x6f, 0xe8, 0xfe, 0x1e, 0x24, 0x86, 0x72, 0xb0, - 0xde, 0xf0, 0x62, 0x63, 0xa9, 0x96, 0xa0, 0xe4, 0xde, 0x0d, 0x4b, 0x8d, 0x76, 0x50, 0x59, 0x4d, - 0xeb, 0x8d, 0x83, 0x38, 0x61, 0xb6, 0xfe, 0xa0, 0x6a, 0x9c, 0xc9, 0x6d, 0x7f, 0x08, 0xbe, 0xc9, - 0x93, 0xa0, 0x31, 0xb2, 0x69, 0x9e, 0x3c, 0xd0, 0x69, 0x5d, 0xeb, 0x11, 0xfe, 0xbf, 0xb0, 0xd6, - 0xb8, 0x60, 0x51, 0x40, 0x6c, 0x42, 0xac, 0xd0, 0x55, 0x6c, 0xf6, 0x01, 0xdc, 0x92, 0x32, 0xf7, - 0xc7, 0x95, 0x96, 0x36, 0xdb, 0xfb, 0x4f, 0xf6, 0xea, 0xbf, 0x21, 0xb6, 0xee, 0x09, 0x03, 0xb3, - 0x8b, 0xaf, 0x7e, 0x6b, 0xf6, 0xbf, 0x5a, 0xfa, 0x5e, 0x8c, 0xcc, 0x8e, 0xe4, 0x71, 0xf6, 0xd1, - 0x08, 0x31, 0xd1, 0x19, 0x2d, 0xc4, 0xe8, 0x14, 0xe7, 0xa3, 0x2a, 0x86, 0xc6, 0x82, 0xb7, 0x37, - 0x76, 0x0e, 0xc6, 0xd4, 0x10, 0xe1, 0x56, 0x85, 0xf7, 0x38, 0x1e, 0xaa, 0x20, 0xcc, 0x0a, 0xa8, - 0xf0, 0x79, 0xb0, 0x86, 0x45, 0x25, 0xdb, 0x4f, 0x41, 0x67, 0x84, 0xd4, 0x3d, 0x91, 0xfd, 0xf6, - 0x8c, 0x91, 0x4d, 0x17, 0x10, 0x0e, 0x48, 0xdb, 0xf6, 0x7f, 0x69, 0x84, 0x25, 0xfe, 0xb4, 0x68, - 0xb1, 0xc7, 0xb2, 0xc1, 0x74, 0x72, 0x83, 0xaf, 0x2b, 0x58, 0x42, 0xcf, 0x63, 0x4d, 0xb7, 0xb2, - 0x0d, 0xc3, 0x93, 0xd2, 0xed, 0xd9, 0x03, 0xc0, 0xff, 0x88, 0x5c, 0xac, 0x6f, 0x73, 0x10, 0x04, - 0x21, 0x30, 0xf6, 0x67, 0x93, 0x1b, 0x81, 0xb2, 0x58, 0xb1, 0xcc, 0xe0, 0xec, 0xf2, 0xd1, 0x27, - 0xde, 0xc3, 0xcb, 0x79, 0x9c, 0xe0, 0xdc, 0xef, 0x88, 0x67, 0x09, 0x92, 0x26, 0xfd, 0x16, 0x28, - 0xa2, 0x6f, 0x5b, 0xcc, 0xc8, 0x41, 0xd2, 0x1b, 0x86, 0x95, 0x29, 0xd9, 0x12, 0xf3, 0xa8, 0x5b, - 0x18, 0x8d, 0xc7, 0x37, 0x7c, 0x2a, 0x00, 0x48, 0x77, 0x9c, 0x78, 0x5d, 0xbf, 0xef, 0xb7, 0x89, - 0x88, 0xfe, 0x99, 0x59, 0xce, 0x03, 0x71, 0x91, 0x6e, 0x53, 0x1e, 0x78, 0xef, 0xf1, 0x55, 0x00, - 0x42, 0x12, 0x3e, 0x4d, 0xc0, 0x83, 0xa4, 0xc1, 0x82, 0xcc, 0x28, 0x75, 0xb0, 0xaa, 0x3f, 0xc8, - 0x4a, 0xca, 0xbe, 0xc2, 0xa3, 0x31, 0x7f, 0xd5, 0xd0, 0x26, 0x28, 0xfd, 0xc0, 0xe8, 0x46, 0x76, - 0xdf, 0xdc, 0x7e, 0xd5, 0x8c, 0x0b, 0xe8, 0xbd, 0x36, 0x26, 0xad, 0x99, 0x63, 0x53, 0xb2, 0xbc, - 0x61, 0x32, 0xfd, 0x33, 0x7a, 0xc8, 0x47, 0xdc, 0x48, 0xa0, 0xe7, 0x58, 0xc6, 0xfe, 0xd1, 0x6a, - 0xc3, 0x16, 0x2e, 0x56, 0xf2, 0x91, 0x1b, 0xb5, 0x51, 0x8c, 0x1f, 0xe9, 0x1c, 0xfb, 0xcf, 0x57, - 0x9b, 0x7a, 0x16, 0x3f, 0x4d, 0xea, 0x7f, 0x75, 0xc4, 0x59, 0x5b, 0xca, 0x25, 0x15, 0x61, 0xad, - 0x8b, 0x17, 0xce, 0x2e, 0xcc, 0x92, 0xaa, 0x97, 0x23, 0xdd, 0x8b, 0x99, 0x2b, 0x3b, 0x7a, 0xfe, - 0x15, 0xe7, 0x92, 0x91, 0x96, 0xee, 0x3d, 0xf0, 0x9b, 0x42, 0xfa, 0x45, 0x75, 0xef, 0x60, 0x0c, - 0x8c, 0x76, 0x0d, 0x06, 0x5b, 0x33, 0xc8, 0x68, 0x30, 0x2a, 0x23, 0x39, 0x3f, 0x50, 0x65, 0xb7, - 0xaa, 0xf4, 0xd7, 0x76, 0x35, 0xe9, 0x23, 0x1c, 0x4b, 0x1a, 0x2b, 0x8d, 0x6f, 0x6c, 0xe0, 0x62, - 0xe0, 0x6b, 0x37, 0x7a, 0xc5, 0xed, 0x4b, 0x0e, 0x88, 0xa5, 0xaa, 0x3a, 0x39, 0x61, 0xec, 0x1c, - 0x26, 0xba, 0x4e, 0x75, 0xcc, 0x3b, 0x29, 0x9d, 0xd0, 0xab, 0x21, 0x4a, 0x86, 0x42, 0x09, 0x3a, - 0x57, 0xc5, 0x4d, 0x27, 0xf2, 0x3a, 0xf8, 0xcf, 0x90, 0x5d, 0x05, 0x1e, 0x6a, 0xdb, 0x73, 0x4e, - 0xd8, 0x08, 0xaf, 0x0c, 0x55, 0x28, 0x73, 0xbb, 0x0e, 0xd8, 0x58, 0x26, 0x7e, 0x71, 0xd9, 0x6c, - 0xb0, 0x85, 0x69, 0x84, 0x7c, 0xf8, 0x7b, 0x7e, 0x0e, 0x7f, 0xfb, 0x79, 0x84, 0x71, 0x5f, 0xfa, - 0x97, 0xfc, 0x67, 0x1a, 0x59, 0xd3, 0x75, 0x11, 0x9d, 0xe3, 0x7f, 0x17, 0x5b, 0x75, 0x02, 0xf3, - 0x2a, 0x54, 0xee, 0x64, 0x6d, 0xed, 0x42, 0x9d, 0xbd, 0x9a, 0xe6, 0x76, 0x0d, 0x67, 0x35, 0xd5, - 0xfc, 0xd1, 0x43, 0xcd, 0xef, 0xd5, 0x83, 0x6c, 0xfe, 0xdf, 0x3f, 0x5a, 0xdd, 0xbc, 0x87, 0x93, - 0x47, 0xf5, 0x4e, 0xbc, 0xe7, 0xad, 0x82, 0xab, 0xab, 0x3c, 0x2b, 0x86, 0x10, 0x42, 0x18, 0x66, - 0x9f, 0x3d, 0x78, 0x06, 0x7b, 0x6e, 0x92, 0xd2, 0x61, 0x3c, 0x61, 0x9e, 0xc7, 0x74, 0x07, 0x87, - 0x53, 0xdd, 0xf8, 0x6c, 0x93, 0xc8, 0x3b, 0x5e, 0x37, 0x71, 0xa8, 0xdb, 0x8c, 0x9a, 0x7b, 0x6a, - 0xdd, 0xd0, 0x99, 0xdd, 0x6c, 0xcc, 0x34, 0x91, 0x36, 0x9a, 0xab, 0x99, 0x4c, 0x63, 0x95, 0xc0, - 0x9f, 0x0d, 0xaf, 0xc1, 0x74, 0x01, 0xcc, 0x48, 0xc1, 0xef, 0x14, 0x15, 0x6d, 0xf7, 0x2b, 0x34, - 0xeb, 0x0e, 0x87, 0xfa, 0x74, 0xb9, 0xce, 0x83, 0xd0, 0x05, 0xa7, 0x6f, 0x30, 0xca, 0xfb, 0x14, - 0xd4, 0x1c, 0xad, 0x59, 0x98, 0xc0, 0x3b, 0x3c, 0xc4, 0x12, 0xb8, 0xbb, 0xbe, 0x7f, 0xad, 0xee, - 0x16, 0x7e, 0x78, 0x65, 0x72, 0x4e, 0xf6, 0x8b, 0x13, 0x1d, 0x8a, 0xc1, 0x3e, 0x49, 0x52, 0x74, - 0x6d, 0x8c, 0xbc, 0x37, 0x50, 0xf2, 0x2b, 0x62, 0xba, 0x80, 0x18, 0x3c, 0x7d, 0x65, 0x09, 0x76, - 0x98, 0xcd, 0x40, 0x7a, 0x86, 0x44, 0xde, 0x5d, 0xf5, 0x93, 0x6d, 0x27, 0x67, 0x9e, 0xbc, 0xe0, - 0x21, 0x2d, 0x9f, 0xf2, 0x9a, 0xe7, 0xed, 0xa8, 0x86, 0x30, 0xf4, 0xbb, 0x41, 0x47, 0xa8, 0xff, - 0x50, 0xcf, 0xae, 0xd6, 0x6e, 0x38, 0xc3, 0x24, 0x38, 0x2e, 0x3d, 0x03, 0xa7, 0x2d, 0x3c, 0x1b, - 0xf7, 0xd8, 0x53, 0x50, 0x5d, 0x52, 0x42, 0xd2, 0xd4, 0xd7, 0x6f, 0xf5, 0xa5, 0x2a, 0xa5, 0xd6, - 0x54, 0x23, 0x2c, 0x82, 0x8e, 0xd4, 0x8e, 0xc1, 0x5e, 0xf9, 0xc7, 0x1f, 0x9e, 0x99, 0xe1, 0x0e, - 0x13, 0xd9, 0x52, 0xce, 0x7a, 0x8f, 0x1a, 0xca, 0xec, 0x28, 0x04, 0xc7, 0x45, 0x25, 0xe6, 0x13, - 0x0a, 0x15, 0x16, 0xd4, 0x75, 0x67, 0x48, 0xbf, 0x73, 0xa4, 0xff, 0x86, 0xdc, 0x8b, 0x46, 0xee, - 0xce, 0xab, 0x73, 0xf2, 0xb2, 0x99, 0x1f, 0x9e, 0xf3, 0x7c, 0x5d, 0x54, 0x16, 0x2d, 0x9a, 0x80, - 0xdd, 0x17, 0xcd, 0x0e, 0x02, 0x3d, 0x6d, 0x64, 0xfe, 0x69, 0x98, 0x7e, 0xe6, 0xf9, 0xe4, 0x52, - 0xe2, 0x9a, 0x6c, 0x6a, 0x5c, 0xdc, 0x18, 0x56, 0x7d, 0x13, 0x7a, 0x0c, 0x80, 0xc0, 0x03, 0x28, - 0x1a, 0xa2, 0x1e, 0xd0, 0xe7, 0x04, 0x9f, 0x3e, 0xab, 0x5a, 0x97, 0x54, 0x8d, 0x9d, 0x70, 0xf0, - 0xc6, 0x69, 0x11, 0xd4, 0x71, 0xe8, 0xf5, 0x80, 0x3c, 0x43, 0xd8, 0xe1, 0xda, 0x4a, 0xfc, 0x06, - 0x25, 0xee, 0x06, 0x21, 0x75, 0xc1, 0x6d, 0xe1, 0xbb, 0xce, 0xe9, 0x0c, 0x1d, 0x30, 0x96, 0x30, - 0xb6, 0xe6, 0x75, 0xee, 0x11, 0x16, 0xdc, 0x4a, 0xf4, 0x39, 0x2f, 0xe0, 0x95, 0x1b, 0xc0, 0xde, - 0xc7, 0x2f, 0xef, 0x8d, 0xc7, 0x69, 0xdc, 0x70, 0x6d, 0x57, 0x9b, 0x8f, 0x0d, 0xac, 0xca, 0x81, - 0x32, 0x56, 0x1d, 0x48, 0xa5, 0x8b, 0xc2, 0x1b, 0x07, 0xbd, 0x50, 0x9b, 0x11, 0xb9, 0x54, 0xc9, - 0xc8, 0x9b, 0x97, 0x69, 0x30, 0xdf, 0xc0, 0xda, 0x85, 0xd6, 0x21, 0xb1, 0x1b, 0x14, 0x4f, 0xe7, - 0x9b, 0xc3, 0xdb, 0x50, 0x3f, 0xa4, 0x73, 0xc4, 0x0e, 0x7c, 0x18, 0xa7, 0x43, 0x2e, 0x68, 0x74, - 0xf3, 0x04, 0x9a, 0x2d, 0xd8, 0x39, 0x01, 0x78, 0x0d, 0x95, 0x71, 0x0c, 0x1b, 0x40, 0xcf, 0x1b, - 0x72, 0xe6, 0x89, 0xcc, 0x5c, 0xc0, 0xaf, 0xfe, 0x90, 0x4f, 0xbe, 0x87, 0x6f, 0x23, 0xa2, 0x1b, - 0x39, 0x9b, 0xfb, 0x01, 0x98, 0x21, 0xb4, 0xb6, 0x18, 0x35, 0xae, 0x27, 0x56, 0xf7, 0x16, 0x1f, - 0xc6, 0x70, 0x67, 0xb0, 0xda, 0x74, 0x76, 0x5d, 0x84, 0x5c, 0xe0, 0x6d, 0x49, 0x59, 0x60, 0x3f, - 0x3a, 0xe7, 0x1b, 0x8e, 0xa1, 0x5a, 0x91, 0xb8, 0x93, 0x35, 0x58, 0x3a, 0xba, 0x66, 0xec, 0xdd, - 0x03, 0x52, 0xd1, 0xe5, 0x45, 0x06, 0x33, 0x27, 0xa9, 0x8c, 0x43, 0x8c, 0x7a, 0x3b, 0xc0, 0x5e, - 0x41, 0x77, 0xcd, 0xa3, 0xa8, 0xcc, 0x56, 0x35, 0x9b, 0x30, 0xfa, 0x04, 0x00, 0x8f, 0xbc, 0x6b, - 0x70, 0xd3, 0xd2, 0xd9, 0xd6, 0x34, 0x2b, 0xdb, 0xdb, 0xa2, 0x91, 0xe8, 0x7b, 0xd2, 0x6d, 0x2d, - 0xa7, 0xd0, 0xf0, 0x1b, 0xa6, 0x0c, 0x39, 0xba, 0xc6, 0x15, 0xe2, 0x0e, 0xbf, 0xc4, 0x0b, 0x05, - 0xf1, 0x8f, 0x75, 0x4d, 0x18, 0x5a, 0x6d, 0x16, 0xbf, 0xce, 0x50, 0x29, 0x9f, 0xdd, 0x62, 0xd3, - 0x88, 0x6c, 0xfb, 0x16, 0x6b, 0xb3, 0x7c, 0xf5, 0x46, 0x47, 0xb3, 0xc2, 0xae, 0x2e, 0x70, 0xed, - 0x20, 0x5a, 0x60, 0x63, 0xda, 0xab, 0x0b, 0x77, 0xf9, 0x5d, 0x3d, 0x64, 0x6b, 0x04, 0x09, 0xeb, - 0x3d, 0xd4, 0x01, 0x15, 0x5f, 0xaf, 0xf6, 0x2c, 0xad, 0xde, 0x6f, 0x68, 0x16, 0x3f, 0x3e, 0x84, - 0x6d, 0x30, 0x59, 0x95, 0x64, 0xad, 0x40, 0xc7, 0x50, 0xfa, 0x71, 0x55, 0x5e, 0x2f, 0x4f, 0xfe, - 0x17, 0x49, 0x42, 0x1a, 0x04, 0x03, 0x05, 0x01, 0x00, + 0x1f, 0x8b, 0x08, 0x08, 0x38, 0xbf, 0xf2, 0x5d, 0x00, 0x03, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, + 0x68, 0x74, 0x6d, 0x00, 0xcc, 0x7d, 0x6b, 0x77, 0xe2, 0xc6, 0xb2, 0xe8, 0xf7, 0xac, 0x95, 0xff, + 0x40, 0x9c, 0x75, 0x33, 0xf6, 0xb6, 0xb1, 0x10, 0x2f, 0x63, 0xcf, 0x78, 0xb2, 0x5b, 0x42, 0x80, + 0x00, 0x01, 0x02, 0x24, 0xc0, 0x7b, 0xe5, 0x83, 0x10, 0x42, 0x08, 0x84, 0x84, 0x25, 0x81, 0x80, + 0x9c, 0xdc, 0xdf, 0x7e, 0xab, 0x5b, 0x0f, 0xc4, 0x6b, 0xc6, 0xc9, 0x9c, 0xbd, 0xd6, 0xf5, 0xc4, + 0x40, 0xbf, 0xaa, 0xab, 0xeb, 0x5d, 0xa5, 0x36, 0xf9, 0xf2, 0x4b, 0xb9, 0xcd, 0xf6, 0x47, 0x1d, + 0x2e, 0x35, 0xf3, 0x96, 0xe6, 0xd7, 0x9f, 0x7f, 0xfa, 0x12, 0xbf, 0x6b, 0xca, 0x04, 0xbf, 0x2f, + 0x35, 0x4f, 0x49, 0x59, 0xca, 0x52, 0x7b, 0xbd, 0xd9, 0x18, 0x9a, 0xbf, 0xb2, 0x1d, 0xef, 0x26, + 0xa5, 0xda, 0x96, 0xa7, 0x59, 0xde, 0xeb, 0x8d, 0x6f, 0x4c, 0xbc, 0xd9, 0xeb, 0x44, 0xdb, 0x18, + 0xaa, 0x96, 0x26, 0x8d, 0x87, 0x94, 0x61, 0x19, 0x9e, 0xa1, 0x98, 0x69, 0x57, 0x55, 0x4c, 0xed, + 0x95, 0x7e, 0x48, 0x2d, 0xa1, 0x67, 0xb9, 0x5e, 0x46, 0x1d, 0x37, 0x31, 0x58, 0x75, 0xa6, 0x38, + 0xae, 0x06, 0x60, 0xd6, 0xde, 0x34, 0x5d, 0xba, 0x39, 0xd9, 0xce, 0x9b, 0x69, 0x4b, 0x2d, 0xad, + 0xda, 0xa6, 0xed, 0x24, 0x76, 0xfc, 0x35, 0x4b, 0x7e, 0x12, 0x40, 0xa2, 0x91, 0x9d, 0xe6, 0xde, + 0x84, 0x4b, 0x95, 0xd5, 0xca, 0xd4, 0xd2, 0x4b, 0x7b, 0x6c, 0xc0, 0x9b, 0xaf, 0x8d, 0xd3, 0xd0, + 0x91, 0x56, 0x95, 0x95, 0x32, 0x36, 0x35, 0xb2, 0xd2, 0x34, 0xac, 0x45, 0xca, 0xd1, 0xcc, 0xd7, + 0x1b, 0x77, 0x06, 0x27, 0x52, 0xd7, 0x5e, 0xca, 0x00, 0x40, 0x37, 0xa9, 0x99, 0xa3, 0x4d, 0x5f, + 0x6f, 0x26, 0x8a, 0xa7, 0xbc, 0x18, 0x4b, 0x45, 0xd7, 0xa8, 0x6d, 0x1a, 0x0f, 0x7c, 0x1e, 0x2b, + 0xae, 0x56, 0xcc, 0x3f, 0x20, 0x84, 0x18, 0x84, 0x38, 0xc4, 0xc1, 0x2b, 0x7e, 0xaf, 0x22, 0xb6, + 0x8a, 0x3f, 0x55, 0x74, 0x78, 0xe1, 0x4d, 0xb1, 0xbf, 0x50, 0x5b, 0xec, 0xcc, 0x6e, 0xe0, 0xbe, + 0xb2, 0x64, 0xf2, 0xdd, 0x0a, 0x8f, 0x3f, 0x8a, 0xc1, 0x6c, 0x9d, 0xcc, 0xad, 0x51, 0x1d, 0x6a, + 0x84, 0x7b, 0x38, 0xba, 0xde, 0xe5, 0x2a, 0x52, 0x9b, 0xa7, 0xe7, 0xd0, 0x45, 0x75, 0xfc, 0xf6, + 0x56, 0x6f, 0x55, 0x35, 0x24, 0x09, 0x5b, 0xee, 0xb9, 0x5a, 0x54, 0x45, 0xb6, 0x51, 0x1e, 0xa0, + 0xd9, 0x0a, 0x95, 0xdf, 0xb2, 0xd3, 0x52, 0x47, 0x98, 0x33, 0xbd, 0x9c, 0x38, 0xc8, 0x94, 0xc4, + 0x46, 0x36, 0xd3, 0x50, 0xde, 0xd8, 0xac, 0x3e, 0x65, 0x9f, 0x67, 0xac, 0xf5, 0x6e, 0xaf, 0xed, + 0x96, 0x8e, 0xba, 0xfa, 0xe8, 0x69, 0x2f, 0x6c, 0xd1, 0xae, 0x65, 0x4a, 0x13, 0xb1, 0x66, 0x0e, + 0x0d, 0x64, 0xb6, 0xb3, 0x42, 0x19, 0x95, 0x8b, 0x39, 0x4e, 0x7e, 0x6f, 0xd5, 0x90, 0x96, 0x41, + 0x04, 0x11, 0xb3, 0xd2, 0x5f, 0xf4, 0xd6, 0xe2, 0x92, 0x65, 0x6f, 0x28, 0x4c, 0x0d, 0xcf, 0xf0, + 0x4c, 0xed, 0xeb, 0xa0, 0xc9, 0x95, 0xbf, 0x50, 0xc1, 0x67, 0xe8, 0x74, 0x55, 0xc7, 0x58, 0x79, + 0x5f, 0xa7, 0x6b, 0x4b, 0xf5, 0x0c, 0xdb, 0x4a, 0x4d, 0x35, 0x6d, 0x32, 0x56, 0xd4, 0xc5, 0xed, + 0xdd, 0x9f, 0x7f, 0x7d, 0xa1, 0xc2, 0x51, 0x3c, 0xcf, 0xdb, 0x91, 0x05, 0xff, 0x9e, 0x02, 0x23, + 0xd2, 0x53, 0x45, 0xd5, 0x52, 0x7f, 0xfe, 0xfc, 0x53, 0xd8, 0x58, 0x1a, 0xe6, 0xee, 0x25, 0x75, + 0x33, 0xe0, 0x81, 0x86, 0xee, 0xcd, 0xe7, 0x9f, 0x7f, 0x72, 0x1d, 0xf5, 0x25, 0xb5, 0x76, 0xcc, + 0x5b, 0x42, 0x62, 0xcc, 0x27, 0x43, 0x55, 0x30, 0x7c, 0x20, 0x34, 0x59, 0xe3, 0xdb, 0xd3, 0xe9, + 0xe7, 0x48, 0x30, 0x88, 0x5c, 0x44, 0xb4, 0x9f, 0x64, 0x9e, 0xab, 0x5d, 0x1d, 0x11, 0xca, 0x23, + 0xc6, 0x85, 0x17, 0x97, 0x7c, 0xac, 0x3a, 0x62, 0x48, 0xe1, 0x6b, 0x3f, 0x4c, 0x47, 0xda, 0x95, + 0x76, 0xf8, 0x03, 0x4b, 0x16, 0x90, 0x3e, 0xbd, 0x5c, 0xc8, 0x20, 0x7e, 0xd0, 0xf2, 0x46, 0x43, + 0xc2, 0x41, 0x1b, 0x77, 0x76, 0xf1, 0x47, 0xa9, 0x3b, 0x65, 0xf4, 0x5e, 0xf7, 0x2d, 0x5b, 0xd9, + 0xab, 0xb8, 0xfd, 0xee, 0xe3, 0x57, 0xc2, 0x48, 0xb2, 0x9e, 0x61, 0xac, 0x71, 0xcd, 0x5c, 0xe2, + 0xa6, 0x87, 0x57, 0x0e, 0x60, 0x73, 0x46, 0x5e, 0x58, 0x85, 0xe1, 0x3b, 0x55, 0x9d, 0x99, 0x23, + 0xd2, 0xd6, 0x47, 0x78, 0x6a, 0x0b, 0xcb, 0x45, 0x19, 0x76, 0x28, 0x0a, 0xb4, 0x82, 0xc7, 0x60, + 0xa8, 0x5a, 0x21, 0x48, 0x2d, 0xf0, 0x4b, 0x1d, 0xa9, 0x23, 0x44, 0x3f, 0xdb, 0xe3, 0x61, 0x37, + 0x0f, 0xcd, 0xd1, 0x04, 0x77, 0x36, 0xf0, 0x22, 0xd6, 0xb6, 0x10, 0xea, 0xe7, 0x96, 0xdb, 0xcd, + 0x28, 0xcb, 0x01, 0xbc, 0x05, 0x41, 0x45, 0xc6, 0x43, 0x95, 0x37, 0x7f, 0x59, 0x75, 0xf5, 0xf1, + 0xa0, 0x92, 0xc7, 0x9d, 0xd5, 0x21, 0x39, 0xbc, 0x1e, 0x22, 0x99, 0x41, 0x15, 0x7a, 0x3d, 0x1a, + 0xd0, 0x26, 0x34, 0xdf, 0x4c, 0x72, 0x1e, 0x7c, 0xb4, 0x4a, 0x43, 0x94, 0x9a, 0x62, 0x7e, 0xc8, + 0x6c, 0xd4, 0x1c, 0xc6, 0xcf, 0xd1, 0x8f, 0x0e, 0x45, 0x8e, 0x28, 0xc0, 0x46, 0x55, 0x18, 0x94, + 0x30, 0x12, 0x6f, 0xc8, 0xc5, 0x9d, 0x6c, 0x07, 0xad, 0x16, 0xec, 0x1e, 0x0f, 0x6b, 0x2e, 0x12, + 0x7c, 0xae, 0x7e, 0x91, 0xc4, 0xdd, 0xcb, 0x94, 0xc7, 0x98, 0x15, 0x18, 0x54, 0x16, 0xa8, 0x52, + 0x06, 0x16, 0x97, 0xf1, 0x7f, 0xf1, 0x40, 0xe2, 0x87, 0x8f, 0x3e, 0x04, 0x78, 0xe0, 0x17, 0x15, + 0x6b, 0x0c, 0x69, 0x33, 0x3e, 0x7e, 0x27, 0x7c, 0xaf, 0xe1, 0xce, 0x1e, 0x46, 0x9d, 0xa9, 0xe2, + 0x61, 0x46, 0xc4, 0xdc, 0xe4, 0x10, 0xdf, 0x46, 0xb9, 0x7c, 0xd9, 0xd2, 0x3b, 0x6d, 0x46, 0xc8, + 0xf3, 0x94, 0x6e, 0xaf, 0xd9, 0x55, 0xbe, 0xb9, 0xd1, 0xe9, 0x76, 0x79, 0x95, 0xef, 0x8e, 0x67, + 0x6d, 0x8d, 0xa3, 0xf2, 0xc3, 0xfd, 0xcc, 0x58, 0xf3, 0x5e, 0x7e, 0x9e, 0x33, 0xec, 0x75, 0x63, + 0x99, 0x77, 0x3a, 0xc6, 0x76, 0xdd, 0x5c, 0xe4, 0x77, 0xc3, 0xb9, 0x70, 0xdf, 0x12, 0xf2, 0x85, + 0xf2, 0xdc, 0xd4, 0x3a, 0x83, 0x3c, 0x55, 0x5b, 0xb0, 0x9a, 0x28, 0x52, 0x54, 0x8e, 0xa2, 0xfc, + 0x10, 0xbf, 0xeb, 0xf0, 0x6d, 0x0c, 0xbf, 0x75, 0x7f, 0x15, 0xfe, 0x3c, 0x84, 0xdf, 0xcc, 0xe7, + 0xa9, 0xb9, 0xd9, 0x3e, 0x83, 0xcf, 0x50, 0xf7, 0xc2, 0x74, 0xdf, 0xa5, 0x84, 0x5a, 0xc9, 0x9e, + 0xae, 0xb7, 0xcf, 0x85, 0x5a, 0x56, 0x9d, 0x8e, 0xba, 0xcf, 0x62, 0x6d, 0xaf, 0x4f, 0xeb, 0xdd, + 0xa7, 0x42, 0xcd, 0x5b, 0x68, 0x34, 0x53, 0x1c, 0xd5, 0x6c, 0x77, 0x52, 0xec, 0xe6, 0x94, 0xda, + 0x70, 0x34, 0x51, 0xb7, 0xb4, 0x55, 0x93, 0xa5, 0x49, 0xbb, 0xbb, 0x2f, 0xd4, 0xda, 0xbe, 0x4a, + 0x77, 0x77, 0xfd, 0x1a, 0x08, 0x93, 0xc4, 0xf8, 0xd9, 0x1a, 0x53, 0x52, 0x81, 0x8b, 0x65, 0x42, + 0xbf, 0xff, 0xea, 0x0f, 0xc0, 0x9f, 0x52, 0x14, 0x42, 0xa5, 0x13, 0x7e, 0x02, 0x37, 0xcb, 0x6a, + 0x21, 0xec, 0x63, 0x8e, 0x96, 0x00, 0xeb, 0x5a, 0xfb, 0x05, 0x13, 0xaf, 0x3f, 0xfc, 0x60, 0x29, + 0xcc, 0xb5, 0xc5, 0xb0, 0x4f, 0x2f, 0xcb, 0x54, 0x09, 0x95, 0x1b, 0x7e, 0x13, 0x61, 0x55, 0xe1, + 0x60, 0x1d, 0x18, 0xcb, 0x19, 0xd7, 0x15, 0xab, 0xfc, 0x8e, 0x33, 0xea, 0x3a, 0x27, 0xf3, 0x7d, + 0x69, 0xdf, 0xda, 0x0b, 0x43, 0x90, 0x49, 0x0c, 0x77, 0xc7, 0x53, 0xc5, 0x77, 0x7e, 0xcf, 0xb3, + 0x0d, 0x2a, 0xfb, 0x6e, 0x1a, 0xce, 0xa0, 0xb1, 0x1a, 0xc9, 0x00, 0xe7, 0x1e, 0xb1, 0xc2, 0x4e, + 0xd0, 0x1b, 0x73, 0x59, 0x96, 0x9c, 0x86, 0x0f, 0x74, 0x69, 0x0d, 0x81, 0xec, 0x82, 0x83, 0xcd, + 0x07, 0x2b, 0xa2, 0x36, 0x62, 0x40, 0x55, 0x59, 0xa9, 0xcb, 0x77, 0x39, 0x89, 0x31, 0x84, 0x19, + 0x6f, 0x8c, 0xfa, 0x5c, 0x8f, 0xeb, 0xf2, 0x3d, 0x69, 0x5f, 0xe9, 0x71, 0xb4, 0xb0, 0x57, 0xf7, + 0x70, 0x16, 0x16, 0x95, 0xf9, 0x39, 0xf5, 0x6e, 0xcf, 0x05, 0x53, 0x62, 0xe4, 0x4d, 0xf1, 0x1d, + 0x49, 0xec, 0x80, 0x52, 0xde, 0x07, 0x0d, 0x2f, 0xb9, 0x4f, 0xad, 0x4d, 0xc1, 0xf8, 0xfb, 0xb3, + 0x2c, 0xcb, 0x3d, 0x37, 0x38, 0x7f, 0x9d, 0x43, 0x15, 0xb1, 0x8d, 0x90, 0xc9, 0x61, 0x79, 0x45, + 0x75, 0x91, 0x1b, 0xa2, 0x9e, 0x9a, 0x43, 0x23, 0xc4, 0x6c, 0xcb, 0xfb, 0x7b, 0xd4, 0x2e, 0x95, + 0xe6, 0x62, 0x8d, 0xeb, 0x74, 0xf2, 0xe8, 0x69, 0x1f, 0x0a, 0x9c, 0xce, 0xc8, 0xd4, 0x13, 0x57, + 0x7e, 0xc7, 0xe7, 0x07, 0x24, 0x45, 0x4c, 0xcb, 0x3e, 0x3f, 0xac, 0xe9, 0xdc, 0xb0, 0x32, 0x93, + 0x80, 0xcd, 0x79, 0x86, 0xf1, 0x47, 0x1d, 0x80, 0xb3, 0xac, 0xef, 0xf2, 0x4c, 0x7d, 0x37, 0xa2, + 0x5b, 0x65, 0xf5, 0x1e, 0xf5, 0xd5, 0xac, 0xb0, 0xe7, 0x07, 0x95, 0x7d, 0x9e, 0x11, 0x7c, 0x21, + 0xdb, 0x82, 0xf7, 0xd6, 0x1e, 0xc6, 0xd8, 0xd1, 0x9c, 0xd7, 0x47, 0x35, 0x1e, 0xe6, 0xf2, 0x3b, + 0xbe, 0x5a, 0xe9, 0x8a, 0x21, 0xac, 0x12, 0x03, 0x74, 0xd8, 0x36, 0x76, 0x2e, 0xc5, 0xcd, 0x04, + 0xa5, 0x4a, 0x3f, 0x97, 0xc1, 0x67, 0xdd, 0x77, 0xcc, 0x3a, 0x27, 0xd2, 0xa5, 0x71, 0x75, 0x26, + 0xf4, 0x3a, 0x3b, 0xd7, 0x11, 0xfa, 0x33, 0x93, 0x07, 0xc7, 0xd2, 0x6e, 0x6e, 0x85, 0xce, 0xbe, + 0x30, 0xaa, 0x32, 0x33, 0x59, 0x2c, 0x57, 0x06, 0x9c, 0x8c, 0xba, 0xf2, 0xbc, 0x82, 0x64, 0x70, + 0x3e, 0x83, 0x72, 0x9e, 0xea, 0x23, 0x91, 0xf5, 0x19, 0xbe, 0x27, 0xb2, 0xee, 0xbb, 0x30, 0xf7, + 0x0b, 0xed, 0x9a, 0x44, 0x89, 0x9c, 0x9b, 0x6f, 0x73, 0x2e, 0x25, 0xd6, 0xa4, 0x7c, 0xbb, 0xef, + 0xef, 0x1a, 0x86, 0x87, 0xb8, 0x19, 0xef, 0x37, 0x7a, 0x0b, 0x9f, 0x1a, 0x98, 0x5c, 0x7b, 0xbf, + 0xb2, 0x9a, 0xbb, 0xd2, 0x5a, 0xac, 0x8c, 0x0a, 0x4d, 0xd6, 0x2f, 0xc8, 0x0b, 0xb4, 0x6e, 0xee, + 0x9e, 0xad, 0xf6, 0xdc, 0xe3, 0x18, 0x4c, 0x77, 0xbe, 0x0c, 0xfc, 0x6a, 0x13, 0x73, 0x0f, 0x82, + 0x93, 0xc5, 0x34, 0xe5, 0x7a, 0x42, 0x57, 0xd8, 0xaa, 0x83, 0xca, 0x36, 0xcf, 0x54, 0xb6, 0x23, + 0xb9, 0x82, 0xd4, 0x36, 0x12, 0x55, 0x90, 0x0d, 0xde, 0x6a, 0xea, 0x9c, 0x55, 0x9f, 0x4b, 0x99, + 0xf0, 0xec, 0xb9, 0x0a, 0xd0, 0x2a, 0x3e, 0xef, 0x5c, 0xd8, 0x25, 0x68, 0x62, 0x21, 0xc3, 0x1b, + 0xc8, 0x6e, 0x7e, 0x5a, 0xed, 0x2e, 0xe6, 0xac, 0xbe, 0xd0, 0x6a, 0x4b, 0xb3, 0xda, 0x95, 0x19, + 0xb1, 0x2b, 0xbd, 0xad, 0x6a, 0xb3, 0x7c, 0x9d, 0x35, 0x84, 0xb7, 0x6a, 0xb7, 0x54, 0x82, 0xb3, + 0x8c, 0x2a, 0x34, 0x97, 0x6b, 0xcd, 0xf3, 0xf7, 0xad, 0xf9, 0xa4, 0x5b, 0xd9, 0xea, 0x25, 0x01, + 0x78, 0x43, 0x78, 0x4d, 0x67, 0x14, 0x9e, 0xad, 0x34, 0xe0, 0x3c, 0xae, 0xc4, 0xc9, 0x55, 0xa5, + 0x9b, 0xd7, 0x6a, 0xb3, 0xc2, 0xaa, 0xbb, 0x90, 0xc5, 0x26, 0xbb, 0x58, 0xf5, 0x0c, 0x4e, 0xaf, + 0xce, 0xfd, 0x95, 0xc6, 0x8d, 0xa2, 0xb5, 0x21, 0xac, 0x42, 0x55, 0x63, 0x17, 0x11, 0xbf, 0x33, + 0x54, 0x71, 0x54, 0x9e, 0xa3, 0xa6, 0x82, 0xb8, 0x3c, 0x1a, 0x60, 0x13, 0xd7, 0x55, 0x35, 0x24, + 0x96, 0x98, 0xb2, 0xce, 0x6d, 0x90, 0x98, 0x67, 0xca, 0x3e, 0xd7, 0x46, 0x3d, 0x97, 0x01, 0xf9, + 0xdc, 0xa0, 0x1e, 0xf0, 0xdc, 0x57, 0xab, 0x75, 0xa3, 0xc4, 0xd4, 0xe7, 0x23, 0x0a, 0xb7, 0x5b, + 0x7d, 0x31, 0xdb, 0xda, 0xa9, 0x6b, 0xd4, 0x2f, 0x31, 0x1d, 0x9d, 0x9b, 0xa2, 0x7e, 0x9e, 0xe9, + 0xf8, 0x1c, 0xc8, 0x84, 0xcb, 0x08, 0xb3, 0xd1, 0x14, 0x75, 0x81, 0x0e, 0x7b, 0x35, 0x8b, 0x79, + 0x5e, 0xd1, 0x41, 0x76, 0xba, 0x84, 0x2e, 0x55, 0xc6, 0x97, 0x76, 0x2d, 0xa0, 0x57, 0xdd, 0x10, + 0x0c, 0x06, 0x64, 0xab, 0xa2, 0x0b, 0x5b, 0x59, 0x1c, 0x95, 0x99, 0x0a, 0x5f, 0x2e, 0xfb, 0x93, + 0x65, 0x79, 0x27, 0xf4, 0x61, 0xef, 0x26, 0xdb, 0x10, 0x79, 0xd6, 0xe7, 0x44, 0x6e, 0xc7, 0x8b, + 0x6f, 0xba, 0xda, 0xc6, 0xe3, 0xc8, 0x97, 0x87, 0x48, 0xe7, 0x58, 0x24, 0x8f, 0xaa, 0xc8, 0xef, + 0xf6, 0x90, 0x5f, 0xaa, 0xbd, 0xe9, 0xa5, 0x39, 0xe7, 0x97, 0x18, 0xd6, 0x37, 0x16, 0x2c, 0x72, + 0x19, 0x8e, 0x11, 0x0c, 0xae, 0x3a, 0xaa, 0x95, 0x75, 0x3c, 0x2e, 0x54, 0x64, 0x9f, 0x67, 0x90, + 0x58, 0xbb, 0xdf, 0xef, 0x9f, 0xc7, 0x83, 0x7d, 0x89, 0x1a, 0xd0, 0x2e, 0x53, 0x05, 0xb0, 0x65, + 0x5f, 0x6b, 0x01, 0x2e, 0xb0, 0x0d, 0xbc, 0x54, 0x7d, 0x9e, 0xd5, 0x6d, 0x7e, 0x8c, 0x74, 0xa9, + 0xcc, 0x2e, 0x58, 0x46, 0xc4, 0x63, 0x25, 0xae, 0x8b, 0x6c, 0x09, 0xfa, 0x25, 0x76, 0xf1, 0x37, + 0xe7, 0x5b, 0xf5, 0x71, 0x27, 0xda, 0x0f, 0xab, 0x98, 0x8f, 0x1c, 0x2a, 0x2f, 0x96, 0x69, 0x51, + 0x90, 0x11, 0x93, 0x07, 0xd7, 0xc4, 0xf4, 0xb0, 0x5c, 0x09, 0x33, 0xa0, 0x79, 0x17, 0xe4, 0xaa, + 0x27, 0x64, 0x42, 0xbd, 0x02, 0xbd, 0x09, 0x64, 0x0b, 0xf7, 0x85, 0xb2, 0xb3, 0xe7, 0xb6, 0xd2, + 0x90, 0xd9, 0xa9, 0xb5, 0xfa, 0x5e, 0xa5, 0x41, 0xde, 0x40, 0xf7, 0x46, 0x7b, 0xa0, 0x31, 0xc8, + 0xe1, 0xa8, 0x86, 0xf6, 0xb1, 0x9e, 0xce, 0x5b, 0x2c, 0xf0, 0x03, 0x74, 0x14, 0xe4, 0x12, 0xce, + 0xcf, 0xd5, 0x18, 0xdc, 0x17, 0xe9, 0xa9, 0xcf, 0xa3, 0xce, 0x7c, 0x94, 0x93, 0xba, 0xea, 0x48, + 0x9e, 0xa1, 0x6e, 0xdb, 0x50, 0x2d, 0x90, 0x7f, 0xab, 0xbe, 0xb7, 0x21, 0x2c, 0x1c, 0x45, 0xf2, + 0xe6, 0x2c, 0xfa, 0x3b, 0x30, 0x2f, 0xbb, 0x6e, 0x8d, 0x15, 0x29, 0x18, 0xa7, 0xea, 0x8c, 0xef, + 0x8c, 0xe4, 0x37, 0x59, 0x67, 0x45, 0x53, 0x06, 0x59, 0x53, 0xa4, 0xb7, 0x8a, 0x54, 0x01, 0x56, + 0x2e, 0x41, 0x7e, 0x4d, 0xc9, 0xac, 0xf3, 0x8c, 0x2c, 0x2f, 0x39, 0x56, 0xd9, 0xea, 0x43, 0x09, + 0xf6, 0xe9, 0x18, 0x21, 0x4c, 0x26, 0xdc, 0xa3, 0x9c, 0xcf, 0xb6, 0x68, 0x6e, 0x58, 0xed, 0x14, + 0xf6, 0xf3, 0x37, 0xae, 0xa4, 0xf3, 0xa8, 0xb4, 0x18, 0x65, 0x5a, 0x2d, 0x96, 0x73, 0x3b, 0xfb, + 0x92, 0xcb, 0xf7, 0xc5, 0x16, 0x9a, 0xab, 0x21, 0x9c, 0x4a, 0xa4, 0x0b, 0x91, 0x6e, 0xcc, 0x64, + 0x73, 0x80, 0xea, 0xac, 0x44, 0xec, 0xbc, 0x3c, 0xbd, 0x97, 0x51, 0xd1, 0x65, 0x8b, 0x3e, 0xf8, + 0x6b, 0x16, 0x87, 0x3c, 0xdc, 0xee, 0x03, 0x3a, 0xb9, 0xe7, 0x76, 0x6a, 0xae, 0xe9, 0x73, 0x20, + 0x83, 0x6a, 0xad, 0x05, 0x74, 0x18, 0x70, 0x85, 0xf6, 0x84, 0xe5, 0x0c, 0xde, 0xa8, 0x64, 0xfa, + 0x8b, 0xc2, 0x68, 0x20, 0xd1, 0x89, 0x36, 0xfd, 0xe6, 0xb1, 0xf7, 0xd3, 0x8c, 0x59, 0xef, 0x65, + 0x56, 0xa5, 0x8d, 0x87, 0x9a, 0x4e, 0x3c, 0xef, 0x74, 0x5d, 0xd8, 0xa6, 0xe4, 0x61, 0xdb, 0xe8, + 0x02, 0xb5, 0x66, 0x8d, 0xc6, 0x7e, 0x90, 0x09, 0xf8, 0x5d, 0x90, 0x80, 0xdf, 0x4d, 0x07, 0x7b, + 0x9a, 0x86, 0x48, 0x82, 0x47, 0x33, 0xe4, 0x21, 0xe6, 0xd1, 0x1e, 0xf3, 0x0c, 0xf4, 0x26, 0x07, + 0x7e, 0x65, 0xd6, 0xea, 0x0b, 0x32, 0xdf, 0x95, 0xe6, 0x4c, 0xc8, 0x7b, 0x90, 0x7f, 0x93, 0xdb, + 0x09, 0x16, 0xef, 0xab, 0x73, 0x6e, 0x2f, 0x94, 0x85, 0x9d, 0xca, 0xd6, 0x7b, 0x6c, 0x85, 0xee, + 0xe7, 0xde, 0x1a, 0x1c, 0x1a, 0xca, 0x5d, 0x71, 0x5b, 0x33, 0x0a, 0x5c, 0x65, 0x9a, 0x5f, 0xa0, + 0xde, 0x6a, 0x00, 0xbf, 0xcf, 0xec, 0x16, 0x89, 0x75, 0xd0, 0xf5, 0x1a, 0x64, 0x0b, 0x43, 0x81, + 0x91, 0x05, 0xc1, 0xf5, 0x65, 0x95, 0x91, 0xc7, 0xf9, 0x55, 0x65, 0x23, 0x6b, 0x15, 0x7a, 0x9e, + 0x1b, 0x34, 0x07, 0x7c, 0xa6, 0xbe, 0xd0, 0x67, 0x42, 0x4e, 0x04, 0x8f, 0xf1, 0x36, 0x90, 0x7b, + 0xa3, 0x45, 0x5d, 0x1a, 0xcd, 0x78, 0xd0, 0xd1, 0xf1, 0x34, 0x8f, 0x80, 0x37, 0x2c, 0xea, 0x3c, + 0x0d, 0xd6, 0xc4, 0x48, 0x08, 0xa8, 0x81, 0x65, 0xf7, 0x19, 0x44, 0x1a, 0xa1, 0x31, 0xf8, 0x58, + 0x24, 0xfa, 0x49, 0xbf, 0xa0, 0x56, 0x43, 0xbf, 0x30, 0xe7, 0x8d, 0x40, 0xee, 0xea, 0x60, 0xff, + 0xf0, 0x99, 0x5a, 0xb3, 0xa4, 0xdd, 0x3b, 0x93, 0x49, 0x29, 0xe4, 0x59, 0x3f, 0x94, 0x61, 0x58, + 0x8f, 0xfd, 0xc9, 0x88, 0x45, 0x15, 0xa6, 0xde, 0x1b, 0xda, 0x9b, 0xe6, 0xd6, 0x1d, 0x83, 0x4d, + 0x2e, 0xf6, 0x24, 0x53, 0x94, 0x38, 0xb3, 0xae, 0x19, 0xa5, 0x4d, 0x75, 0xeb, 0x6e, 0x9a, 0xb9, + 0x55, 0xbd, 0x27, 0x23, 0xb7, 0xbe, 0x53, 0x8b, 0xa0, 0x6c, 0x22, 0xd7, 0xb7, 0xad, 0xfa, 0xce, + 0x3f, 0x6d, 0xd3, 0xbd, 0x8c, 0x4b, 0xb7, 0x24, 0xaf, 0x89, 0x6c, 0x04, 0x72, 0x2d, 0x3d, 0xb5, + 0x33, 0x6f, 0xd5, 0xf6, 0xde, 0x93, 0x03, 0x5b, 0x98, 0x6c, 0xcf, 0x9f, 0x8b, 0xdb, 0x13, 0x5d, + 0x60, 0x4e, 0xda, 0xa8, 0x22, 0xf7, 0xf6, 0x52, 0x08, 0xd3, 0x8d, 0x82, 0x8c, 0x88, 0xbf, 0x24, + 0x37, 0x68, 0xea, 0x38, 0x3e, 0xc4, 0xc4, 0xe1, 0x0c, 0xe0, 0xa1, 0x05, 0x34, 0xd8, 0xc7, 0xba, + 0x8d, 0x69, 0xb4, 0xc3, 0x3a, 0x28, 0x45, 0x3a, 0x6e, 0xb6, 0x7c, 0xae, 0x56, 0xf7, 0x89, 0x6f, + 0x0c, 0x64, 0xd5, 0x20, 0x3a, 0x6a, 0x9d, 0xf9, 0x8e, 0xb9, 0x6a, 0x01, 0xcd, 0x22, 0xfa, 0xe4, + 0xc0, 0xbe, 0xee, 0x2a, 0xb3, 0x0c, 0x03, 0xf1, 0x87, 0x5c, 0xdf, 0xd6, 0xd5, 0x3a, 0x3d, 0xf2, + 0x80, 0x3e, 0xbc, 0xb6, 0xcb, 0x6f, 0x6a, 0xcc, 0xa4, 0x29, 0xd4, 0x32, 0x35, 0x36, 0xc4, 0x9f, + 0x32, 0x16, 0x39, 0xb4, 0x11, 0xb3, 0xf3, 0x9d, 0xa7, 0x09, 0x66, 0x4c, 0xd7, 0x37, 0xa9, 0x2f, + 0xf5, 0x0d, 0xdd, 0x16, 0x38, 0x86, 0x2b, 0x02, 0xdd, 0xdc, 0x6a, 0xaf, 0x34, 0x10, 0xb1, 0x7d, + 0xdd, 0xcb, 0x4d, 0xa4, 0x57, 0xb2, 0xcc, 0xfe, 0xad, 0x81, 0x66, 0x12, 0xcf, 0xd0, 0x7e, 0xa7, + 0x0c, 0x3a, 0x2d, 0xf7, 0xdd, 0xa7, 0xee, 0x7c, 0xbb, 0x6c, 0x0c, 0x33, 0xbd, 0xfa, 0x56, 0x0a, + 0x69, 0xcd, 0xd0, 0xad, 0x4d, 0x46, 0x68, 0xe5, 0x4b, 0x5d, 0x2e, 0x9e, 0xf3, 0xec, 0x35, 0xba, + 0xbd, 0x66, 0xc5, 0x28, 0xbd, 0x35, 0x59, 0xd5, 0x6a, 0xcf, 0x38, 0xb1, 0x8c, 0x56, 0x2c, 0x48, + 0x65, 0xb3, 0x25, 0x02, 0xfc, 0xac, 0xc0, 0x00, 0x1d, 0x6b, 0x81, 0xff, 0x61, 0x1d, 0x2a, 0xeb, + 0x96, 0x65, 0x62, 0x0f, 0x17, 0x48, 0xd0, 0x4f, 0xe2, 0x8d, 0x80, 0x86, 0x07, 0xd9, 0xd9, 0x4a, + 0x56, 0x6b, 0x2b, 0x75, 0x5b, 0x58, 0x7f, 0x7b, 0x09, 0xfd, 0x9e, 0xab, 0x43, 0xa0, 0x8f, 0x5c, + 0x61, 0x02, 0x5a, 0x83, 0x5f, 0xab, 0x75, 0xe6, 0x85, 0x49, 0x75, 0x6b, 0xab, 0xd5, 0x7e, 0x1e, + 0xf0, 0x17, 0xa5, 0xae, 0x91, 0xdf, 0xb4, 0x94, 0xb5, 0xf3, 0x5e, 0xf4, 0x2e, 0x8e, 0xa1, 0x95, + 0x04, 0x71, 0x48, 0xe6, 0xbe, 0xb3, 0x50, 0x77, 0x43, 0x56, 0xa7, 0xaa, 0xf3, 0x8c, 0xde, 0xea, + 0x95, 0xd6, 0xdd, 0x99, 0x28, 0xe9, 0x8d, 0xf5, 0xbb, 0xde, 0xc9, 0x3a, 0xe4, 0x9d, 0x81, 0xb4, + 0xa9, 0x9f, 0xbf, 0xef, 0xee, 0xeb, 0x6a, 0xa3, 0x5c, 0x52, 0x3a, 0x3d, 0x44, 0x37, 0x77, 0x85, + 0x6a, 0x05, 0x07, 0x59, 0x3a, 0x87, 0xc3, 0xcb, 0x32, 0xce, 0xb0, 0xb0, 0x9d, 0x62, 0x82, 0xf8, + 0x91, 0x01, 0x29, 0xe8, 0xf2, 0x38, 0x5e, 0x1c, 0x78, 0x08, 0x22, 0x34, 0x1c, 0x67, 0x52, 0x78, + 0x22, 0x15, 0x64, 0x43, 0x0c, 0x91, 0x24, 0x1f, 0x47, 0x5c, 0x38, 0x38, 0xc5, 0xd9, 0x15, 0xb7, + 0xc7, 0xb1, 0x06, 0xe7, 0x63, 0x69, 0x06, 0x7b, 0xf8, 0x26, 0x31, 0x8a, 0x5f, 0xc7, 0xf3, 0x41, + 0x2f, 0x71, 0xdc, 0x0b, 0x71, 0x1f, 0x09, 0x5e, 0x99, 0x21, 0x55, 0x50, 0x71, 0xbc, 0xb6, 0xc2, + 0x7a, 0x0a, 0x29, 0x4b, 0x13, 0x07, 0x7b, 0x40, 0x5c, 0x13, 0xb1, 0x79, 0xd4, 0x17, 0x89, 0x3f, + 0xaf, 0x70, 0xdd, 0x12, 0xc3, 0x74, 0xb9, 0x61, 0x7d, 0xcb, 0x99, 0x28, 0x96, 0x43, 0x55, 0x26, + 0x7a, 0xbb, 0x13, 0xf0, 0xe7, 0x32, 0xa6, 0x39, 0x83, 0xe5, 0x72, 0x2f, 0xf4, 0x5b, 0x44, 0x2f, + 0x25, 0x4c, 0x73, 0x26, 0xb2, 0xa7, 0xcc, 0x5e, 0xca, 0x9e, 0xea, 0x72, 0x7d, 0x2f, 0xc5, 0xb1, + 0x10, 0x32, 0xe8, 0x7b, 0xca, 0x67, 0xd9, 0xe9, 0xa6, 0x84, 0xc0, 0x25, 0x32, 0xa8, 0x35, 0x5a, + 0xcb, 0x3d, 0xe1, 0x59, 0xa8, 0xb5, 0x50, 0x7e, 0xe6, 0x2f, 0x18, 0x59, 0xad, 0x09, 0x3d, 0x95, + 0x67, 0x7a, 0xa2, 0xda, 0xe9, 0xa9, 0x5b, 0x86, 0x9e, 0x70, 0x9d, 0x5e, 0x4b, 0x6e, 0x2e, 0x98, + 0x3d, 0x58, 0x98, 0x42, 0x6d, 0x46, 0x5b, 0xdd, 0xc5, 0x9b, 0xd8, 0xd9, 0x8f, 0xb2, 0x12, 0x03, + 0xfa, 0x32, 0x9b, 0x88, 0x2d, 0x88, 0x31, 0x24, 0xee, 0xad, 0xfa, 0xb6, 0xcd, 0x68, 0xe8, 0xad, + 0xa0, 0xf9, 0x90, 0x76, 0x8d, 0xcc, 0x27, 0xc8, 0x58, 0x19, 0x88, 0x46, 0x8a, 0x40, 0xb2, 0x4a, + 0xef, 0x00, 0x4f, 0x63, 0x78, 0x5a, 0x5a, 0x8b, 0x35, 0xc1, 0xa7, 0x5c, 0x75, 0x2d, 0xb3, 0x22, + 0xd9, 0x9b, 0x5a, 0x73, 0xcf, 0xe0, 0xc3, 0xc0, 0xff, 0xab, 0xdb, 0xba, 0x5f, 0x69, 0x48, 0x19, + 0xb3, 0xa1, 0xf6, 0xa4, 0x05, 0x2b, 0xab, 0x3c, 0xec, 0x39, 0x6e, 0xf7, 0x57, 0x8c, 0xd8, 0xb7, + 0x0b, 0x03, 0xd8, 0x83, 0xad, 0xa8, 0xf5, 0x3a, 0x2b, 0x6f, 0x7b, 0x0b, 0xb3, 0x4f, 0xf4, 0x1b, + 0x68, 0x4f, 0xdd, 0xbb, 0x40, 0xdf, 0x86, 0x8c, 0x59, 0x54, 0xd3, 0xd1, 0x3b, 0x2a, 0xeb, 0xa8, + 0x1b, 0xc4, 0xc5, 0x83, 0xca, 0x21, 0x76, 0xa7, 0x39, 0x88, 0x83, 0x84, 0x1d, 0xc7, 0x84, 0x7e, + 0x39, 0x57, 0x0f, 0x74, 0x18, 0x62, 0x62, 0xf5, 0x24, 0xce, 0x91, 0x02, 0x1b, 0x60, 0xa8, 0xb5, + 0x1a, 0x96, 0xd9, 0xc0, 0x77, 0x0f, 0x2a, 0x24, 0xc7, 0xe0, 0x97, 0x38, 0x9e, 0x12, 0xfc, 0x96, + 0x5c, 0x2f, 0xf3, 0xbb, 0x7a, 0x87, 0x1e, 0x90, 0x77, 0xd4, 0x78, 0xa7, 0xa6, 0x23, 0xb3, 0x6e, + 0x8c, 0xcc, 0x0e, 0xb4, 0x85, 0x79, 0x73, 0xdb, 0xcd, 0x76, 0x17, 0xdd, 0xcc, 0x64, 0xf1, 0x06, + 0x81, 0x9b, 0x30, 0xc7, 0x7d, 0x3e, 0x19, 0xf7, 0x7a, 0x90, 0x0f, 0x18, 0xc2, 0x1c, 0xfa, 0xe6, + 0x20, 0xd3, 0x90, 0x9f, 0xe4, 0x11, 0xe4, 0x27, 0x3b, 0x1e, 0xfc, 0x1d, 0xbf, 0x6f, 0x3e, 0x3f, + 0x1b, 0x6f, 0x9a, 0xd0, 0xaf, 0x4c, 0xeb, 0x7d, 0x7f, 0x3b, 0x5d, 0xd4, 0xd9, 0x69, 0xbf, 0x5e, + 0x7d, 0xe3, 0x26, 0x35, 0x08, 0x38, 0x6b, 0x00, 0xb3, 0x2a, 0x0c, 0x0b, 0xac, 0x68, 0x65, 0x76, + 0x1d, 0x36, 0x9c, 0x27, 0x72, 0x8d, 0x08, 0x1e, 0xc0, 0x21, 0xfe, 0xe0, 0x9d, 0xa2, 0x1c, 0x94, + 0x11, 0x58, 0xdd, 0xc7, 0x42, 0x97, 0x01, 0xbb, 0x87, 0xf3, 0x2b, 0x31, 0xc8, 0x01, 0xa2, 0x73, + 0x74, 0x0f, 0x3e, 0x99, 0xdf, 0x8b, 0xa1, 0x7d, 0x13, 0xe8, 0x4a, 0xff, 0x42, 0x9c, 0xb2, 0x1f, + 0x38, 0x2d, 0x43, 0x5d, 0xb6, 0xf6, 0x58, 0xa6, 0x94, 0xba, 0x36, 0x5c, 0x66, 0x5a, 0x65, 0xb9, + 0xd0, 0xd8, 0xad, 0xfb, 0xa3, 0x6c, 0xcb, 0x97, 0x33, 0x74, 0x4b, 0xdd, 0x71, 0x33, 0x0d, 0x62, + 0x16, 0x69, 0xae, 0xe6, 0x3a, 0x0b, 0x3d, 0x9c, 0x3b, 0xca, 0xd6, 0x7d, 0xfe, 0xa9, 0xd5, 0xef, + 0x65, 0x60, 0x4d, 0x5d, 0xad, 0xb6, 0xe6, 0x0b, 0xc8, 0x1b, 0xb4, 0x29, 0x3f, 0xe3, 0x87, 0xad, + 0x56, 0x5f, 0x56, 0xef, 0x5b, 0xfb, 0x49, 0xaf, 0xca, 0x4c, 0x0a, 0xc4, 0xde, 0x88, 0x65, 0xe0, + 0xa3, 0x04, 0xf9, 0x5d, 0xdd, 0x09, 0xea, 0x38, 0x90, 0xdb, 0x81, 0x9e, 0x61, 0xdf, 0xcb, 0xf5, + 0xe1, 0x5d, 0x14, 0x1c, 0xca, 0x67, 0x06, 0x38, 0x3f, 0x46, 0x95, 0x11, 0xae, 0xb9, 0xc9, 0xf1, + 0x67, 0xac, 0x77, 0xe4, 0x67, 0x04, 0xf1, 0x07, 0x9c, 0x3f, 0x8f, 0x58, 0x53, 0xc4, 0xfa, 0xc6, + 0x61, 0x7d, 0x9b, 0xe1, 0x38, 0x04, 0xfb, 0xc9, 0xd6, 0x1e, 0xe7, 0x6f, 0x02, 0xe4, 0x6f, 0x70, + 0xbe, 0xbe, 0x40, 0xa3, 0xe0, 0x5d, 0x66, 0x70, 0xbf, 0xa8, 0x92, 0xb1, 0x16, 0xc4, 0xb6, 0xe0, + 0xe7, 0x67, 0x40, 0x23, 0x1a, 0xbf, 0x73, 0xb0, 0x7f, 0xa5, 0x57, 0x91, 0x75, 0x9e, 0x19, 0x40, + 0x4e, 0xe4, 0x34, 0xe8, 0xb7, 0x81, 0xce, 0x6d, 0x05, 0x2c, 0x4a, 0xb4, 0x5e, 0x97, 0x29, 0xc5, + 0x65, 0xe5, 0x69, 0xd6, 0x41, 0xe6, 0xf0, 0xf9, 0x3d, 0xeb, 0xbe, 0xbf, 0x1b, 0xf6, 0xa0, 0x31, + 0x1b, 0x31, 0xe0, 0xa7, 0xdf, 0xdf, 0x6d, 0xf4, 0x5e, 0x37, 0x6d, 0xfc, 0x0b, 0x78, 0xbe, 0x41, + 0x6e, 0xb8, 0x1a, 0xc8, 0x60, 0x87, 0x64, 0x73, 0x14, 0xc8, 0x2f, 0xf8, 0x27, 0xb0, 0x0f, 0x0e, + 0x36, 0x0e, 0x6d, 0x8c, 0x6c, 0x05, 0xcc, 0x10, 0xba, 0x98, 0xd7, 0xc5, 0xfe, 0x1b, 0x64, 0x30, + 0xf0, 0xdf, 0x73, 0xc8, 0x77, 0xe6, 0x41, 0xdc, 0x08, 0x7d, 0x11, 0x0f, 0x8d, 0x70, 0x7e, 0x6c, + 0x6f, 0xb9, 0x48, 0x6e, 0x23, 0xfe, 0xf7, 0x8e, 0xdb, 0x78, 0xbc, 0xbe, 0xc3, 0x79, 0x84, 0x00, + 0xbe, 0x7d, 0xd6, 0xee, 0x5b, 0x22, 0xe8, 0x0c, 0x3f, 0x9b, 0x40, 0xdc, 0x34, 0xa8, 0x98, 0xad, + 0x44, 0xbb, 0x35, 0x90, 0x54, 0xc8, 0x03, 0x33, 0x90, 0x03, 0x86, 0x76, 0x36, 0x73, 0xdc, 0xce, + 0x31, 0xf6, 0xb2, 0x0e, 0x9f, 0xc1, 0x91, 0xdd, 0xaf, 0xb7, 0xae, 0x59, 0xef, 0xba, 0x4a, 0xdd, + 0x78, 0x7b, 0xea, 0xe5, 0x24, 0x05, 0x8d, 0x45, 0x65, 0x22, 0x41, 0x5c, 0xb8, 0x8b, 0x60, 0x9f, + 0xee, 0x15, 0xb6, 0x37, 0x19, 0x54, 0x9d, 0x79, 0x13, 0xf0, 0x03, 0xb5, 0xee, 0x3e, 0x7f, 0x3f, + 0x04, 0x18, 0xa7, 0x6d, 0x60, 0xb3, 0x09, 0x3e, 0x22, 0xdc, 0x4b, 0x1a, 0x57, 0x8d, 0xd1, 0xb2, + 0x3a, 0x73, 0x4d, 0x6a, 0xbd, 0x92, 0x44, 0x88, 0x96, 0x02, 0x79, 0x02, 0x1b, 0x5e, 0xc0, 0xf2, + 0x84, 0xe3, 0x3b, 0xfe, 0x5a, 0x1c, 0x7a, 0x88, 0x87, 0xe6, 0xb1, 0xef, 0x27, 0xb1, 0x01, 0xd8, + 0xb1, 0x11, 0xc4, 0x8f, 0x19, 0xa0, 0x97, 0xc1, 0x0f, 0xbb, 0xed, 0xbe, 0xa9, 0x1b, 0x22, 0x53, + 0x00, 0x1b, 0x3b, 0xe9, 0x40, 0x5c, 0x35, 0xac, 0x2c, 0x4a, 0xb9, 0x56, 0x86, 0xd3, 0x44, 0x96, + 0x3f, 0x3f, 0x93, 0x6e, 0x37, 0x2a, 0xac, 0x6e, 0x29, 0x8b, 0x0a, 0xd3, 0xe3, 0x66, 0x8c, 0x38, + 0xb0, 0xad, 0x06, 0x23, 0x36, 0x58, 0xe2, 0x53, 0xc0, 0x07, 0x31, 0x39, 0x6a, 0x28, 0x76, 0xe6, + 0x68, 0x27, 0xa0, 0x32, 0xc4, 0xa1, 0xd8, 0x6e, 0x01, 0x7e, 0x43, 0x66, 0x0b, 0xf1, 0xe5, 0x4e, + 0x9d, 0xb7, 0x7a, 0x6a, 0x0e, 0xe4, 0x32, 0x57, 0xd9, 0x0b, 0xcc, 0x87, 0x78, 0x7c, 0xc1, 0x46, + 0xcd, 0xed, 0x27, 0x1e, 0x52, 0x09, 0x3e, 0x7a, 0xa7, 0xde, 0xdd, 0xc8, 0x17, 0x4a, 0x15, 0x6e, + 0xb4, 0x6e, 0x42, 0xbc, 0x74, 0xdc, 0x96, 0x23, 0x3b, 0xb3, 0xe8, 0xfa, 0xb5, 0x56, 0x72, 0x2d, + 0xbc, 0x3f, 0xbf, 0x47, 0x7e, 0xba, 0x2f, 0x6d, 0x9a, 0x8b, 0x91, 0x84, 0xd7, 0x1d, 0xb5, 0x51, + 0xd5, 0x39, 0xd8, 0x2a, 0x11, 0xe4, 0x9b, 0x45, 0xb8, 0x5e, 0xa3, 0x23, 0x5c, 0xaf, 0xd0, 0x51, + 0x8b, 0x94, 0xc9, 0xfd, 0x6b, 0xf2, 0xed, 0xa0, 0x1e, 0xa9, 0x41, 0x04, 0x3e, 0x2b, 0x38, 0xcb, + 0x69, 0x8e, 0x50, 0x16, 0xe6, 0x71, 0xdd, 0x02, 0xce, 0x3e, 0xca, 0x9d, 0xb4, 0xf7, 0x27, 0xed, + 0xe1, 0x49, 0x1b, 0xc7, 0xae, 0x41, 0x4e, 0x34, 0xe3, 0xba, 0xed, 0x1e, 0xc4, 0x8f, 0x9c, 0xaf, + 0xd4, 0xf5, 0x45, 0x8d, 0x45, 0x0b, 0xb3, 0x4a, 0x47, 0x63, 0x41, 0xfe, 0xb4, 0x8c, 0xe5, 0x57, + 0x51, 0xaa, 0x3b, 0x29, 0x90, 0xb7, 0x0d, 0x82, 0xf6, 0x88, 0xb4, 0x97, 0x07, 0xf9, 0x63, 0x7d, + 0xc6, 0x1d, 0x0f, 0xcb, 0x79, 0xaa, 0x1b, 0xe5, 0x55, 0x20, 0x93, 0x65, 0x66, 0xc4, 0xb3, 0xdd, + 0x91, 0x00, 0x73, 0x4f, 0x6a, 0x08, 0x4f, 0xf7, 0x3a, 0x0b, 0x32, 0x4b, 0x60, 0xba, 0xe6, 0xfb, + 0xee, 0x20, 0xbf, 0xc1, 0x7e, 0x18, 0xfe, 0xc0, 0x81, 0xcf, 0x81, 0x6c, 0xef, 0xa4, 0xb0, 0x1e, + 0x10, 0xd0, 0x73, 0x82, 0x1a, 0x19, 0x5c, 0x8f, 0x2d, 0x63, 0x7b, 0xe6, 0xe3, 0xba, 0x11, 0xd8, + 0x31, 0x51, 0xb5, 0x80, 0x3e, 0xbb, 0x9a, 0xcf, 0x0d, 0x2a, 0x10, 0xda, 0x64, 0x1b, 0xe5, 0xfb, + 0x46, 0x03, 0xb1, 0xcf, 0x5c, 0x51, 0xef, 0xeb, 0xfe, 0xbc, 0x3c, 0x10, 0x85, 0x11, 0xaa, 0x8d, + 0xec, 0x4e, 0xde, 0xb6, 0x51, 0x35, 0xd3, 0x7f, 0x67, 0xda, 0x65, 0xb4, 0x5d, 0x94, 0x7b, 0x42, + 0x10, 0x2a, 0xf7, 0x36, 0x94, 0x29, 0x36, 0x65, 0xb4, 0x76, 0x49, 0x69, 0x15, 0xf5, 0xb8, 0xb2, + 0x00, 0xf1, 0x0d, 0xbf, 0xe5, 0x98, 0x86, 0x5f, 0x7d, 0x7f, 0x7f, 0x77, 0xee, 0x69, 0x1b, 0xb1, + 0x45, 0xaa, 0xf8, 0x0e, 0x71, 0x0e, 0x84, 0x4e, 0xb5, 0x41, 0x80, 0xd4, 0x02, 0xe9, 0x9d, 0x67, + 0x6c, 0x6f, 0xcb, 0x15, 0x52, 0x5f, 0x54, 0xf1, 0x73, 0x8f, 0x31, 0x62, 0x4a, 0x88, 0xf7, 0x91, + 0x85, 0x58, 0x97, 0x54, 0x6e, 0x99, 0x3e, 0xd8, 0xd7, 0x2e, 0xd8, 0xdd, 0xad, 0x64, 0x82, 0xff, + 0x7d, 0x42, 0x90, 0x47, 0x71, 0x38, 0x9f, 0x0a, 0x7c, 0x91, 0x89, 0x73, 0x0c, 0x88, 0xc1, 0xba, + 0x02, 0xec, 0x87, 0xed, 0x31, 0x3a, 0xcc, 0x2f, 0x43, 0x1b, 0x62, 0xcd, 0x06, 0xc4, 0x66, 0x6f, + 0x32, 0x25, 0xa2, 0x1d, 0x5f, 0xc4, 0x71, 0xa2, 0x3b, 0x17, 0xf4, 0x86, 0xc3, 0xef, 0xc1, 0xfe, + 0xbe, 0x43, 0x6e, 0x85, 0x6d, 0xa9, 0x0f, 0xb1, 0x98, 0x09, 0x11, 0x5c, 0xbf, 0x0e, 0x73, 0x25, + 0xe0, 0xb5, 0x2c, 0xbf, 0xef, 0x84, 0x1d, 0xd8, 0xe6, 0x77, 0xb9, 0x0f, 0xfe, 0xd6, 0x7c, 0x93, + 0x05, 0xa3, 0xf3, 0x8c, 0x50, 0xfb, 0x9d, 0xc2, 0x3e, 0x03, 0xc6, 0x71, 0x4d, 0x4d, 0x9e, 0x16, + 0xdf, 0x65, 0x73, 0x7c, 0xff, 0x4e, 0x4b, 0x73, 0x41, 0x0f, 0x8b, 0x90, 0x7c, 0x19, 0xe8, 0xd1, + 0x46, 0x68, 0x2b, 0xe1, 0xd8, 0xaf, 0x86, 0x58, 0x35, 0x28, 0x67, 0x13, 0xbf, 0x20, 0x10, 0x3c, + 0x83, 0xf8, 0xe0, 0x7a, 0x3e, 0x0b, 0x67, 0x1a, 0x92, 0x58, 0x0d, 0xf2, 0x81, 0x0f, 0xe4, 0x59, + 0x7b, 0x64, 0x43, 0xdc, 0x59, 0x91, 0xe1, 0x2c, 0x9c, 0xd5, 0xc4, 0x39, 0x3c, 0xc4, 0x56, 0xa0, + 0x64, 0xd5, 0xee, 0x52, 0x8f, 0x65, 0x52, 0xe2, 0xba, 0x45, 0x88, 0x25, 0xba, 0x35, 0xfd, 0xe9, + 0xde, 0xdc, 0x87, 0x39, 0x3b, 0x13, 0xe6, 0xf4, 0xf3, 0x93, 0xb6, 0x2e, 0x00, 0x31, 0x86, 0xcf, + 0x34, 0xf8, 0x1b, 0xec, 0x27, 0xab, 0xf3, 0x7a, 0xb1, 0xcb, 0x3d, 0x07, 0xf0, 0xb6, 0x25, 0x02, + 0xbf, 0x4f, 0x87, 0xf0, 0x0d, 0xdf, 0xee, 0xa0, 0x8c, 0xc6, 0x01, 0xad, 0x2a, 0xdb, 0x59, 0x17, + 0x94, 0xff, 0xbe, 0x33, 0x57, 0xb3, 0x52, 0x57, 0x1f, 0x06, 0x6d, 0xb0, 0xf3, 0xf3, 0x11, 0x69, + 0x23, 0x1c, 0x40, 0xb3, 0x1b, 0x4a, 0xd7, 0x3b, 0x32, 0xda, 0x2d, 0x02, 0xfa, 0x80, 0xbf, 0x06, + 0x79, 0xec, 0x23, 0x46, 0x45, 0x82, 0x8f, 0x72, 0xa8, 0x4c, 0xfc, 0x37, 0xce, 0xa3, 0xcb, 0xd8, + 0xa7, 0x62, 0x7e, 0xb7, 0x44, 0x89, 0xb4, 0x5b, 0x5b, 0xb5, 0x06, 0x31, 0x37, 0xe6, 0xf7, 0x47, + 0xea, 0x02, 0x7d, 0x2c, 0x0f, 0xf5, 0xbe, 0x3a, 0x64, 0x7c, 0x4e, 0xef, 0x70, 0x99, 0xe7, 0xc6, + 0x08, 0x42, 0x6b, 0xe0, 0x9f, 0xc9, 0x65, 0x4a, 0x7d, 0xce, 0x7f, 0xea, 0xf7, 0xfd, 0x95, 0xce, + 0x97, 0xef, 0xdf, 0xf7, 0x57, 0xec, 0x52, 0xd8, 0x66, 0x81, 0xc7, 0x63, 0xbc, 0x06, 0xd5, 0xb7, + 0x00, 0xa7, 0x44, 0xb9, 0x75, 0x59, 0x16, 0xab, 0xab, 0xa9, 0x55, 0xb4, 0xfa, 0xfd, 0x6d, 0x8b, + 0x1a, 0xba, 0xa5, 0x7e, 0x39, 0xc3, 0x98, 0x15, 0x89, 0x69, 0x40, 0x5e, 0xd1, 0xed, 0x95, 0x30, + 0x8c, 0x75, 0x33, 0x23, 0x81, 0xed, 0x10, 0x65, 0x68, 0xaf, 0x09, 0xcc, 0x0c, 0xf0, 0xac, 0x93, + 0xf1, 0xa2, 0x75, 0x24, 0xd4, 0x07, 0x79, 0xd9, 0x60, 0x79, 0xc1, 0xfa, 0x23, 0x22, 0xfc, 0xac, + 0xcf, 0x03, 0xbb, 0x5c, 0x07, 0xbb, 0x5d, 0x61, 0x45, 0xbe, 0x06, 0xb9, 0x20, 0xd3, 0x5e, 0x8c, + 0xef, 0xf5, 0x4e, 0x11, 0xe2, 0x53, 0xee, 0x89, 0xb2, 0xb1, 0x0e, 0x55, 0x51, 0xd7, 0xb0, 0x20, + 0x47, 0x7b, 0x92, 0x51, 0xcf, 0xa5, 0x0d, 0xc4, 0x81, 0x0d, 0xdc, 0xdc, 0xd3, 0xfd, 0x51, 0xa0, + 0x5a, 0x3e, 0xae, 0xf7, 0x66, 0x20, 0x3e, 0x00, 0x7d, 0x00, 0x2d, 0x62, 0x83, 0xd0, 0xc0, 0x04, + 0x1a, 0x0e, 0xeb, 0xbe, 0xca, 0xb4, 0xf0, 0x73, 0x17, 0xd0, 0x7b, 0xa0, 0x4b, 0x8e, 0xe9, 0x07, + 0xef, 0x75, 0xbf, 0xd5, 0xea, 0xf4, 0x85, 0xe7, 0xee, 0x72, 0x7c, 0xef, 0xd6, 0x7c, 0x46, 0xef, + 0x64, 0x04, 0xb4, 0x2d, 0xe5, 0xec, 0x49, 0xe7, 0x5e, 0xe7, 0x46, 0x4c, 0x7b, 0xa5, 0x3e, 0x0f, + 0x20, 0x36, 0x37, 0xc6, 0x7d, 0xd4, 0xe9, 0xe9, 0xcf, 0xb6, 0x09, 0x11, 0x57, 0xb5, 0x76, 0x4f, + 0x43, 0x08, 0x4e, 0xb5, 0xb9, 0xac, 0xad, 0x88, 0x4c, 0x63, 0x3f, 0xcc, 0x4c, 0xfa, 0x74, 0x15, + 0xf5, 0x3c, 0xc7, 0x8b, 0xea, 0xf0, 0x95, 0x21, 0xd6, 0x07, 0x07, 0x9f, 0x0f, 0x98, 0x6d, 0x1f, + 0xd5, 0xc5, 0xba, 0x62, 0x20, 0xcb, 0xe0, 0x97, 0xce, 0xea, 0xce, 0x5b, 0xc1, 0x6a, 0xe1, 0x7a, + 0x8a, 0x0f, 0xfc, 0xdb, 0xaa, 0xb9, 0xca, 0xa5, 0xba, 0xce, 0x49, 0x9b, 0x7e, 0x5b, 0xbe, 0x75, + 0xea, 0x87, 0x5f, 0xd8, 0x33, 0xf4, 0xbf, 0xb3, 0x13, 0x7f, 0x1c, 0xb5, 0x9b, 0xcf, 0x9b, 0xfa, + 0xc9, 0x1a, 0xe2, 0xff, 0xd9, 0x2e, 0x8e, 0x27, 0x75, 0xc8, 0xf2, 0xc8, 0xf3, 0x2b, 0x56, 0xc2, + 0xba, 0x68, 0xb5, 0xfc, 0x2a, 0x98, 0x29, 0xb1, 0x44, 0xe9, 0xe5, 0x4d, 0x67, 0x94, 0x67, 0xfc, + 0x7d, 0x50, 0x6f, 0x0f, 0x9f, 0x3f, 0x80, 0x93, 0x62, 0x37, 0xf8, 0xd9, 0x52, 0xd1, 0xc7, 0xd1, + 0x18, 0x0a, 0x68, 0xbc, 0x53, 0x59, 0x6c, 0x16, 0x3a, 0x42, 0x9f, 0xeb, 0xa0, 0x1a, 0xc4, 0xa1, + 0xa8, 0xe4, 0x97, 0x84, 0x52, 0x38, 0x5f, 0xc6, 0xf3, 0x33, 0x22, 0x99, 0x0f, 0x7b, 0x2c, 0x18, + 0x90, 0x71, 0x76, 0x5b, 0xde, 0x53, 0x38, 0x2e, 0xed, 0x08, 0x22, 0x93, 0xe9, 0xef, 0xa9, 0x60, + 0x7d, 0x68, 0x6f, 0x13, 0xf4, 0x6c, 0x06, 0x76, 0x65, 0x5e, 0xf1, 0x55, 0x8b, 0x0f, 0x6a, 0x88, + 0x10, 0x93, 0x13, 0x5d, 0xa1, 0x79, 0xe8, 0x83, 0x78, 0x94, 0x16, 0x76, 0x2a, 0x8e, 0x05, 0x68, + 0xcc, 0x7b, 0xac, 0x0f, 0x58, 0x87, 0x2a, 0x38, 0x3e, 0xf0, 0xd5, 0x3d, 0x2a, 0xae, 0x77, 0xc6, + 0x7c, 0x5f, 0x93, 0xd5, 0x51, 0xc9, 0x30, 0x95, 0x46, 0x47, 0x78, 0x93, 0xb7, 0xfb, 0x5d, 0x03, + 0x22, 0x55, 0xf8, 0x3c, 0x91, 0xb7, 0xf3, 0x5d, 0x43, 0xb6, 0xed, 0xd2, 0xd6, 0x1c, 0xd6, 0x3a, + 0xfc, 0xfb, 0x0e, 0xf2, 0xdc, 0x01, 0xcc, 0xaf, 0xca, 0xaa, 0x5a, 0x32, 0x9c, 0xc6, 0x77, 0xd7, + 0x02, 0x76, 0x95, 0x13, 0xfe, 0xe7, 0x11, 0x27, 0x02, 0x45, 0x99, 0xe1, 0xc7, 0xe5, 0xe0, 0x43, + 0x36, 0xb0, 0x1f, 0xd6, 0x50, 0xa2, 0xba, 0xe9, 0xec, 0xa4, 0x3d, 0xc4, 0x36, 0x95, 0xef, 0xe7, + 0x19, 0xb0, 0xdb, 0xa7, 0xb2, 0xf0, 0xd6, 0x97, 0x12, 0x6d, 0xd9, 0x8c, 0xea, 0x08, 0x61, 0xdd, + 0x60, 0x72, 0xdc, 0xf6, 0xfc, 0xd8, 0x8f, 0x53, 0x8e, 0x1b, 0xc7, 0x90, 0x5a, 0xc6, 0xa3, 0xab, + 0x9b, 0x82, 0x50, 0xb5, 0xa4, 0xff, 0x6a, 0x9c, 0xaa, 0x57, 0xba, 0xac, 0x68, 0x8a, 0xa4, 0x0e, + 0xf1, 0x4e, 0xdd, 0xcb, 0x88, 0x96, 0xca, 0xe0, 0x2f, 0x97, 0xa8, 0x8c, 0x6b, 0xff, 0xdc, 0x87, + 0x9e, 0x61, 0x30, 0x5b, 0x71, 0x00, 0x31, 0x3c, 0x8e, 0x0b, 0x97, 0x82, 0x78, 0xfc, 0x0c, 0x03, + 0xd3, 0x35, 0xa8, 0xb9, 0x8c, 0x58, 0xb1, 0x5c, 0xda, 0x0b, 0x99, 0x45, 0xbf, 0xc2, 0x9c, 0xc4, + 0xec, 0xfa, 0xa2, 0x5e, 0x67, 0xec, 0x37, 0x1e, 0x12, 0x13, 0x88, 0x99, 0x45, 0x9e, 0xf3, 0xdf, + 0xeb, 0xbd, 0x51, 0x0e, 0x24, 0x5a, 0x28, 0xf7, 0x18, 0xb7, 0xdd, 0x9f, 0x21, 0x49, 0xc4, 0xb9, + 0x65, 0x9e, 0x5a, 0xc8, 0x95, 0xae, 0xbc, 0x08, 0xd7, 0x6d, 0xdd, 0xb0, 0xc6, 0x32, 0xda, 0xb7, + 0xaa, 0xc8, 0x6d, 0xb2, 0xa3, 0x8e, 0x68, 0x16, 0x34, 0x71, 0xd1, 0xe3, 0xa9, 0x0e, 0x2f, 0x72, + 0x7d, 0x15, 0x72, 0x5d, 0xdb, 0x93, 0x0d, 0xdb, 0x6d, 0xf9, 0x7e, 0xb3, 0x3b, 0x17, 0x73, 0x7d, + 0x3f, 0x7c, 0x7e, 0x05, 0xf1, 0x0b, 0xc9, 0x77, 0xf0, 0xf3, 0x3b, 0xdc, 0x27, 0xaa, 0xfd, 0xba, + 0x28, 0xf5, 0xeb, 0x10, 0x03, 0x21, 0x51, 0x18, 0x82, 0x7c, 0x6f, 0xf0, 0xf3, 0x0d, 0x90, 0xeb, + 0xf2, 0xfb, 0xbd, 0x59, 0xa5, 0x36, 0xf3, 0xfb, 0x7b, 0x6e, 0xbc, 0x42, 0xfd, 0x56, 0x1e, 0x9c, + 0xd4, 0xac, 0x91, 0x2f, 0x3e, 0xf5, 0xa4, 0x65, 0x71, 0xde, 0xb3, 0x19, 0xcf, 0x85, 0x98, 0xa4, + 0x7e, 0x3f, 0x45, 0xbd, 0x7d, 0xa3, 0xaa, 0x73, 0x63, 0x6a, 0x3d, 0xbc, 0xcf, 0x65, 0xab, 0x59, + 0x6d, 0xcb, 0x7a, 0x0e, 0xc3, 0x3c, 0x79, 0x7e, 0xe0, 0xca, 0x83, 0x52, 0x20, 0x53, 0x7f, 0x2b, + 0xe4, 0xb7, 0x43, 0xbf, 0x54, 0x7a, 0x86, 0xbc, 0x30, 0x7a, 0x00, 0x99, 0xd5, 0xd9, 0x4d, 0x96, + 0x3c, 0x93, 0x2c, 0x2b, 0xa8, 0x41, 0x81, 0xdd, 0x28, 0x87, 0x71, 0x39, 0x79, 0x06, 0xc3, 0x27, + 0x9e, 0x42, 0x07, 0xcf, 0x33, 0xf7, 0x1d, 0xaa, 0x85, 0x12, 0x0f, 0x30, 0xef, 0x85, 0xcb, 0xf7, + 0x0c, 0x58, 0xfb, 0xe2, 0x83, 0x56, 0xbc, 0x8e, 0xc6, 0x0f, 0xee, 0x5a, 0x12, 0x8c, 0xb3, 0x5d, + 0xdc, 0x96, 0x71, 0x9b, 0x27, 0x4f, 0xae, 0x33, 0xb8, 0xdd, 0xf0, 0xa1, 0x5d, 0xc1, 0xe3, 0xc8, + 0x89, 0xdb, 0xac, 0x8b, 0xe7, 0x3b, 0x41, 0x31, 0x8a, 0xdc, 0x6d, 0xc0, 0xf3, 0x87, 0xf1, 0xfa, + 0x06, 0x1e, 0x2f, 0xcb, 0x71, 0x9b, 0xac, 0xe7, 0xc8, 0x7e, 0xb5, 0x18, 0x3e, 0x4b, 0x08, 0x41, + 0xe0, 0x1d, 0xda, 0xe8, 0xd0, 0x66, 0x0e, 0xeb, 0xeb, 0x5c, 0xb4, 0x3e, 0xd8, 0x8f, 0xc0, 0x0b, + 0xc6, 0xdf, 0x03, 0xfc, 0xc2, 0x13, 0xd9, 0xd8, 0xe8, 0x69, 0x78, 0xb5, 0xa2, 0x33, 0x60, 0x47, + 0x79, 0xa6, 0x8d, 0x20, 0x9c, 0x9e, 0xfb, 0xec, 0x14, 0x35, 0xab, 0x68, 0x0f, 0xfc, 0x46, 0x9d, + 0x2c, 0x83, 0x6c, 0x8e, 0x47, 0xbd, 0x05, 0x23, 0xfa, 0x15, 0x49, 0x97, 0x5d, 0x46, 0xf1, 0xab, + 0x02, 0x7a, 0x7b, 0x67, 0xc0, 0x9c, 0x74, 0xf4, 0x89, 0xce, 0xe4, 0x46, 0xb5, 0xad, 0xae, 0xef, + 0xd8, 0xba, 0xce, 0xaf, 0xd1, 0xdc, 0x65, 0xfb, 0xd8, 0x68, 0x9b, 0x03, 0x76, 0x60, 0xd7, 0x1d, + 0x64, 0xaf, 0x59, 0x7b, 0xd4, 0x70, 0xf5, 0x98, 0x9f, 0xef, 0xa8, 0xe2, 0x92, 0x82, 0x1c, 0xf9, + 0xd1, 0x2f, 0x51, 0x9a, 0xfc, 0xb4, 0x51, 0x23, 0x7f, 0xe0, 0x8f, 0x18, 0x5c, 0xd5, 0x40, 0x87, + 0x75, 0x35, 0x54, 0x4e, 0xf0, 0xcf, 0x87, 0x71, 0x88, 0xf3, 0xa2, 0x36, 0x36, 0xec, 0xe4, 0x21, + 0x73, 0xd4, 0xc6, 0xf5, 0x04, 0x50, 0xe8, 0xb8, 0x8d, 0xeb, 0x7d, 0x6c, 0x26, 0x6e, 0x43, 0x8a, + 0x43, 0x9e, 0xd3, 0x61, 0x5f, 0xc0, 0xe0, 0xab, 0x1c, 0x84, 0x47, 0xfc, 0xa1, 0xad, 0x03, 0x3e, + 0x65, 0xfb, 0xd0, 0xf6, 0x61, 0x9c, 0x5d, 0xc4, 0xed, 0xe0, 0x12, 0xd1, 0x61, 0x1c, 0xf6, 0x1b, + 0xe0, 0x92, 0x40, 0xdc, 0xd6, 0xf1, 0xfc, 0x52, 0xdc, 0x86, 0xfd, 0xb0, 0x01, 0xa2, 0xc1, 0x65, + 0xd3, 0xa8, 0x6a, 0x0e, 0xde, 0x40, 0x7b, 0x94, 0xc1, 0xf3, 0x9a, 0x2f, 0x73, 0x6b, 0x01, 0x31, + 0x03, 0x54, 0x95, 0x90, 0xaa, 0x33, 0x7b, 0x54, 0x5d, 0xa0, 0xb1, 0xcf, 0xac, 0xf1, 0xe9, 0x05, + 0x11, 0xad, 0x51, 0x99, 0x89, 0xd6, 0x44, 0xef, 0xbd, 0xb7, 0xc1, 0x84, 0x1e, 0x57, 0x2b, 0x3b, + 0x04, 0xc9, 0xc3, 0x9b, 0xc8, 0x58, 0xa8, 0x26, 0xe1, 0x20, 0x7e, 0x86, 0x6a, 0xf5, 0x68, 0x4e, + 0x75, 0x9c, 0x05, 0xfb, 0x5a, 0x9d, 0x98, 0xe3, 0xa5, 0xbc, 0x1b, 0x0d, 0xbb, 0xe6, 0x1b, 0xcb, + 0x18, 0x5a, 0x8f, 0xa9, 0x8f, 0xb2, 0xcf, 0xad, 0x71, 0xf6, 0x79, 0x4d, 0xea, 0xeb, 0xd5, 0x12, + 0x1a, 0xeb, 0x4c, 0x06, 0xef, 0xf5, 0xe6, 0x33, 0x26, 0xaa, 0xe6, 0x31, 0xbc, 0x1d, 0xaa, 0x72, + 0x68, 0x82, 0x70, 0x5b, 0xc4, 0x95, 0x57, 0x03, 0xd5, 0x16, 0xf8, 0xbd, 0x8e, 0x40, 0x0a, 0x00, + 0xb7, 0x16, 0x59, 0x47, 0x70, 0xc4, 0x57, 0x5e, 0x70, 0x1e, 0xf1, 0xb1, 0x9f, 0xbb, 0xd4, 0xd4, + 0x76, 0x96, 0x8a, 0x77, 0xfb, 0x09, 0xdf, 0x11, 0xfa, 0x74, 0xf7, 0xf9, 0xe7, 0x9f, 0xfe, 0xfa, + 0xf9, 0xa7, 0x9f, 0x7f, 0xc2, 0x37, 0xd6, 0xf0, 0x95, 0x23, 0xcf, 0x5e, 0xab, 0xb3, 0xb4, 0x42, + 0x6e, 0x2b, 0xbd, 0xa4, 0x96, 0x8a, 0x65, 0xac, 0xd6, 0x26, 0xb9, 0x5b, 0x14, 0xcd, 0x1c, 0xdb, + 0x93, 0x1d, 0x9e, 0xb9, 0x54, 0x1c, 0xdd, 0x80, 0x39, 0x19, 0x18, 0xc0, 0x57, 0x9a, 0x74, 0xc7, + 0x5e, 0x5b, 0x93, 0xe0, 0xaa, 0xd9, 0x4b, 0xea, 0x57, 0x9a, 0xa6, 0x3f, 0x9f, 0xdc, 0x60, 0xaa, + 0x69, 0xe6, 0x46, 0xf3, 0x0c, 0x55, 0x79, 0x48, 0xc9, 0x9a, 0x33, 0x51, 0x2c, 0xf8, 0xe0, 0x2a, + 0x96, 0x9b, 0x76, 0x35, 0xc7, 0x98, 0x46, 0xb3, 0x5d, 0x63, 0xaf, 0xbd, 0xa4, 0xe8, 0xa7, 0xd5, + 0x16, 0x7a, 0x42, 0x68, 0xfe, 0xcc, 0xf0, 0x34, 0x68, 0x7a, 0xda, 0xd6, 0x4b, 0x2b, 0xa6, 0xa1, + 0xc3, 0xbe, 0xaa, 0x66, 0x79, 0x9a, 0x03, 0x9d, 0xf8, 0x6e, 0xda, 0xc2, 0xf0, 0xd2, 0x01, 0xea, + 0xaa, 0x62, 0x9a, 0xf6, 0xda, 0x7b, 0x49, 0x59, 0xb6, 0xa5, 0x25, 0x46, 0xd7, 0xb0, 0x09, 0x6c, + 0x64, 0x6a, 0x6a, 0x62, 0x6c, 0x69, 0xef, 0xaf, 0x0c, 0xb8, 0x17, 0xfb, 0x2f, 0xce, 0x8d, 0xb6, + 0x57, 0x56, 0xe9, 0x99, 0xa1, 0xcf, 0x00, 0xbb, 0x99, 0x17, 0x91, 0xc1, 0x73, 0xe0, 0x7c, 0x2b, + 0xc5, 0x01, 0x5c, 0x93, 0x94, 0x7e, 0x38, 0x90, 0x71, 0xa6, 0xe1, 0xf9, 0x70, 0xe0, 0x4c, 0xe6, + 0xff, 0xc0, 0x14, 0x72, 0xfd, 0x2f, 0x6e, 0xad, 0x6c, 0xd7, 0x08, 0x38, 0x31, 0x35, 0xb6, 0xda, + 0x04, 0x7a, 0xec, 0x8d, 0xe6, 0xb8, 0xaa, 0x63, 0x9b, 0x66, 0x7a, 0xac, 0xcd, 0x94, 0x8d, 0x81, + 0x77, 0x09, 0x31, 0x21, 0xe0, 0x57, 0x49, 0xde, 0xd0, 0x99, 0xd5, 0x36, 0x95, 0x49, 0x65, 0xf1, + 0xeb, 0x81, 0x9a, 0xbf, 0x4e, 0x26, 0x93, 0x98, 0x9b, 0x6b, 0xcf, 0xb3, 0x2d, 0xbc, 0x06, 0x88, + 0x66, 0x1a, 0x96, 0x16, 0x43, 0x53, 0xd7, 0x8e, 0x8b, 0x67, 0xaf, 0x6c, 0x23, 0x24, 0x34, 0x59, + 0xf0, 0x68, 0x2a, 0x63, 0xcd, 0x74, 0x4f, 0x25, 0x60, 0xa5, 0x4c, 0x26, 0x86, 0xa5, 0xbf, 0xa4, + 0x4a, 0x47, 0x3b, 0x92, 0x25, 0xbf, 0xe2, 0xfb, 0x84, 0x64, 0x19, 0x5e, 0x75, 0x7e, 0xa6, 0xb1, + 0x0d, 0x38, 0x2c, 0x5f, 0x52, 0x4f, 0x59, 0xc2, 0x73, 0x27, 0x20, 0x48, 0x3e, 0x29, 0x00, 0xbf, + 0x16, 0x8b, 0x45, 0x4c, 0x1d, 0x07, 0x96, 0x5a, 0x3a, 0xf0, 0x6d, 0x02, 0x88, 0x02, 0x29, 0xb0, + 0x34, 0x99, 0x69, 0xc7, 0x8c, 0xb1, 0x1b, 0x3b, 0x06, 0xd9, 0x24, 0x42, 0x27, 0x80, 0x12, 0x8c, + 0xf9, 0x8e, 0xb2, 0x5a, 0x69, 0xce, 0x65, 0x24, 0x3c, 0x7b, 0x15, 0x9c, 0xc4, 0xd4, 0xa6, 0x5e, + 0xf0, 0x29, 0x44, 0xe4, 0x58, 0xc0, 0x01, 0x97, 0x6c, 0x36, 0x0b, 0x5d, 0xfb, 0xb4, 0x61, 0x4d, + 0xb4, 0x2d, 0x10, 0x39, 0xde, 0x00, 0x5f, 0x72, 0x74, 0xcf, 0x2e, 0xee, 0x7d, 0x0a, 0x2e, 0xee, + 0x7d, 0x8a, 0x05, 0x1c, 0xdf, 0xf5, 0xc3, 0x64, 0x06, 0x3d, 0x34, 0x8f, 0xa5, 0x3e, 0x1b, 0xa0, + 0x8b, 0xf9, 0x90, 0x8e, 0x05, 0x03, 0x3a, 0x26, 0x86, 0xbb, 0x32, 0x15, 0x80, 0x65, 0x58, 0x64, + 0x6c, 0x6c, 0xda, 0xea, 0xe2, 0xf3, 0x81, 0x03, 0x69, 0x42, 0x6f, 0x7c, 0xd8, 0x03, 0xd5, 0x1f, + 0x5d, 0xd3, 0x98, 0x80, 0xb8, 0x62, 0xa4, 0x7e, 0xfe, 0x09, 0xab, 0x36, 0x96, 0x45, 0xac, 0xfd, + 0xa1, 0x58, 0x82, 0x5a, 0x6b, 0xa3, 0x5b, 0x58, 0x79, 0x77, 0x59, 0x34, 0x1e, 0x41, 0xd0, 0xc9, + 0xea, 0x24, 0xaf, 0xd3, 0x34, 0xec, 0x81, 0x77, 0x2b, 0x84, 0x7b, 0xc5, 0x4c, 0x08, 0xd5, 0x72, + 0x69, 0x4c, 0x26, 0xa6, 0x76, 0x05, 0xe2, 0xd4, 0x24, 0xd4, 0x9f, 0x9a, 0xb6, 0x02, 0x27, 0x23, + 0xf4, 0xbd, 0x28, 0x69, 0x49, 0xc9, 0x8a, 0xe0, 0x4c, 0xa7, 0xd8, 0x44, 0x24, 0x0e, 0xe1, 0xd8, + 0x1e, 0x9c, 0xe0, 0x36, 0x33, 0xd1, 0xf4, 0xbb, 0x68, 0x24, 0x64, 0x6a, 0x3c, 0x2b, 0x95, 0x79, + 0xcc, 0xb9, 0xf1, 0xf6, 0xda, 0x96, 0x68, 0xc7, 0x39, 0x0c, 0xba, 0x14, 0x41, 0x09, 0x19, 0x49, + 0x24, 0xf5, 0x1a, 0xd5, 0xaf, 0x1e, 0x39, 0x90, 0x76, 0xd3, 0xd8, 0x68, 0xf8, 0x96, 0x6f, 0x52, + 0xbb, 0x03, 0xbe, 0xc6, 0x00, 0x43, 0x15, 0x3b, 0x56, 0xf6, 0xb1, 0xed, 0x00, 0xbf, 0xe0, 0xd0, + 0x09, 0x91, 0xf5, 0x94, 0x31, 0x06, 0x73, 0xc1, 0xbe, 0x06, 0x42, 0x78, 0x4c, 0xe4, 0xa9, 0x61, + 0x7a, 0x18, 0xc2, 0xc4, 0xb1, 0x57, 0x69, 0x77, 0xa6, 0x4c, 0x6c, 0xff, 0x96, 0x58, 0x80, 0x90, + 0x67, 0xbf, 0x66, 0x32, 0x99, 0xc3, 0x21, 0x41, 0xed, 0xbe, 0xad, 0x8f, 0xc7, 0xda, 0x70, 0x8c, + 0xec, 0x01, 0xbd, 0x83, 0x05, 0x39, 0xc7, 0xd2, 0xb0, 0x66, 0x60, 0xda, 0x31, 0x8f, 0x43, 0x96, + 0x63, 0x70, 0x89, 0xa3, 0x86, 0x74, 0x48, 0xb2, 0x2e, 0x64, 0xd8, 0x55, 0x57, 0xf0, 0xab, 0xaa, + 0xaa, 0x87, 0xfd, 0xed, 0x55, 0x62, 0xff, 0x58, 0xe9, 0x69, 0xac, 0x08, 0xc1, 0x4b, 0x26, 0xfc, + 0x84, 0x97, 0xa4, 0x2e, 0xff, 0xc4, 0xc4, 0xb8, 0x04, 0x29, 0x30, 0xa0, 0xa5, 0x50, 0xd8, 0x03, + 0x1a, 0x64, 0x0b, 0x97, 0x28, 0xf0, 0x32, 0xc3, 0xb6, 0xf9, 0x0a, 0xb7, 0x72, 0xb9, 0x5c, 0xe2, + 0x08, 0x9a, 0xa6, 0x5d, 0x00, 0xf0, 0x88, 0xbd, 0xee, 0x46, 0xbb, 0x02, 0x21, 0x30, 0x80, 0xc7, + 0xca, 0x10, 0x40, 0xf8, 0xde, 0xb2, 0xd4, 0x2f, 0xc6, 0x12, 0xdf, 0x38, 0x57, 0x88, 0x0f, 0xba, + 0x04, 0x01, 0xdf, 0xfe, 0x56, 0x40, 0xc2, 0x09, 0xf6, 0xe9, 0xb4, 0x15, 0x18, 0x9d, 0x63, 0x86, + 0x87, 0x2d, 0x10, 0x7b, 0xf5, 0x76, 0xa3, 0x38, 0xb7, 0x30, 0xed, 0xee, 0x5f, 0x78, 0x0c, 0x0b, + 0x54, 0x24, 0xe6, 0x64, 0x14, 0x77, 0xa6, 0xd2, 0xa9, 0x60, 0x92, 0xb7, 0x7a, 0x48, 0x15, 0x81, + 0x88, 0x77, 0x71, 0xcf, 0xd8, 0x0b, 0x7b, 0xee, 0x62, 0x45, 0x4f, 0x13, 0xe3, 0x7b, 0xb2, 0xe0, + 0xf3, 0x65, 0x8b, 0x75, 0x9b, 0xc0, 0xc0, 0xdb, 0x3e, 0xa4, 0x08, 0xec, 0xfb, 0x70, 0xb1, 0x01, + 0xed, 0x3b, 0x2a, 0x46, 0x2f, 0x4d, 0xf0, 0xbb, 0xfb, 0x88, 0xdb, 0xc4, 0x7c, 0x08, 0x2f, 0xc1, + 0x27, 0x2c, 0x54, 0x28, 0xae, 0x07, 0x15, 0x71, 0x34, 0x1c, 0x0c, 0x6d, 0xce, 0x95, 0x37, 0x49, + 0x1e, 0xdc, 0x15, 0x23, 0x71, 0x97, 0x74, 0x8e, 0x34, 0x1d, 0x0a, 0xd2, 0xd8, 0xde, 0x62, 0xe9, + 0x26, 0x9d, 0x81, 0x32, 0xa4, 0xa1, 0xeb, 0xcc, 0x08, 0x60, 0xb4, 0x01, 0x15, 0xff, 0x25, 0xa5, + 0xac, 0x3d, 0xfb, 0xf3, 0x59, 0xb4, 0xf0, 0xdd, 0x63, 0xfd, 0xca, 0x4d, 0xa7, 0x10, 0xac, 0xb8, + 0x09, 0xa1, 0x4e, 0xc7, 0x9e, 0x2e, 0xdc, 0x98, 0xb4, 0x09, 0x66, 0xae, 0x0d, 0x2e, 0x23, 0x0a, + 0xdd, 0x42, 0x1f, 0xb0, 0xb4, 0x6d, 0x6f, 0x96, 0xfa, 0x33, 0x75, 0xd9, 0xbc, 0x26, 0xe5, 0x61, + 0xfa, 0x90, 0xa2, 0xef, 0xfe, 0xf5, 0x58, 0x70, 0xef, 0x52, 0x9a, 0xe2, 0x6a, 0x69, 0x08, 0x28, + 0x52, 0x31, 0x6d, 0xd3, 0xb1, 0xff, 0x8f, 0x6d, 0x3b, 0xfc, 0x4b, 0x47, 0x5e, 0x24, 0xc2, 0x2d, + 0x32, 0x3d, 0x49, 0xb7, 0x8d, 0x0f, 0x09, 0x56, 0xf3, 0xb2, 0xad, 0xfa, 0x66, 0xf8, 0x74, 0xc1, + 0xa7, 0x5f, 0xd5, 0xcd, 0x73, 0x2f, 0x1c, 0x5b, 0xeb, 0xa9, 0xa9, 0xe1, 0x36, 0xb1, 0xf6, 0x69, + 0x08, 0x44, 0x97, 0x6e, 0x22, 0xfa, 0x9c, 0xaf, 0x5d, 0xcf, 0x98, 0xee, 0xd2, 0xa1, 0xf0, 0x24, + 0x46, 0x0e, 0x01, 0x02, 0x26, 0xa7, 0xbd, 0x52, 0x54, 0xc3, 0xdb, 0x61, 0x03, 0xf7, 0x5c, 0x38, + 0xb3, 0x79, 0x4f, 0x2e, 0x11, 0x33, 0xe2, 0xff, 0xd2, 0xda, 0x06, 0x40, 0xb8, 0x27, 0xf2, 0xe9, + 0x7a, 0xca, 0x0e, 0x9b, 0xbb, 0xa4, 0x5f, 0x8a, 0x1c, 0xd2, 0x81, 0x2c, 0x51, 0x30, 0x0a, 0x38, + 0xa9, 0x8b, 0xdd, 0xd1, 0x50, 0xdc, 0x75, 0x14, 0xcb, 0x04, 0xbc, 0x0e, 0x08, 0x45, 0x4e, 0x7d, + 0x1e, 0xd6, 0xfc, 0x1a, 0x6e, 0x4d, 0x07, 0xf9, 0x01, 0xcc, 0xcc, 0x3e, 0x1f, 0xd8, 0x13, 0x8d, + 0x66, 0xe3, 0xd1, 0x42, 0x29, 0x31, 0xea, 0xd9, 0x8a, 0x4b, 0x34, 0xea, 0x70, 0xfe, 0xcb, 0x5c, + 0x28, 0x14, 0x0a, 0xc4, 0x1e, 0x6c, 0xd3, 0x21, 0x0f, 0x9f, 0x09, 0x0b, 0x4f, 0xbc, 0xff, 0xa5, + 0xf8, 0x3f, 0x14, 0x63, 0x47, 0x99, 0x18, 0x6b, 0xa0, 0x5a, 0x10, 0x44, 0x1e, 0x54, 0xae, 0x18, + 0xb4, 0xcf, 0x24, 0x27, 0x3e, 0x68, 0x36, 0x16, 0x90, 0x42, 0x20, 0x35, 0x17, 0xac, 0xce, 0xf0, + 0x36, 0x5d, 0x08, 0x4c, 0x5d, 0x24, 0xa1, 0x20, 0x62, 0x04, 0xf0, 0xb9, 0xa3, 0xfa, 0x16, 0x1b, + 0x03, 0x7a, 0x3c, 0xba, 0x33, 0xdb, 0x3f, 0x22, 0x0a, 0x26, 0x36, 0xe4, 0x5a, 0x4b, 0x25, 0xc4, + 0x51, 0x99, 0x68, 0x86, 0x05, 0x72, 0x51, 0x70, 0x1f, 0x92, 0x8d, 0x54, 0x16, 0xbf, 0x38, 0x1a, + 0x56, 0xfb, 0x53, 0x98, 0x9a, 0xe3, 0xd8, 0xce, 0x19, 0xd0, 0x0b, 0x94, 0x1e, 0x67, 0xaf, 0xef, + 0x16, 0xc1, 0xfc, 0xf7, 0x42, 0xdb, 0x4d, 0x1d, 0x08, 0xdb, 0xdd, 0x68, 0x14, 0x1b, 0x45, 0xc7, + 0x5e, 0xa6, 0xfe, 0x3c, 0x44, 0x07, 0xa9, 0x04, 0x4f, 0xff, 0xc2, 0xcc, 0x3f, 0x0c, 0x06, 0xd4, + 0x49, 0x25, 0x50, 0xf9, 0xeb, 0x38, 0x2c, 0x0d, 0x65, 0x18, 0x83, 0x8d, 0x34, 0xe7, 0xd3, 0xa7, + 0x23, 0x3e, 0x29, 0x63, 0x30, 0x47, 0xeb, 0x20, 0xed, 0x23, 0x16, 0x2a, 0x87, 0x21, 0xc6, 0x1b, + 0xe4, 0x82, 0x48, 0x99, 0xf0, 0x8d, 0x26, 0x9b, 0x39, 0x91, 0x25, 0x20, 0x23, 0x47, 0x52, 0x9e, + 0xcf, 0xe7, 0xcf, 0x05, 0xe5, 0xdb, 0xec, 0x8a, 0xc5, 0x23, 0x1d, 0x2b, 0x82, 0x61, 0xad, 0xd6, + 0xde, 0x7f, 0xbc, 0xdd, 0x4a, 0x7b, 0x05, 0xb9, 0xd0, 0xb5, 0x3f, 0x88, 0xbb, 0x0c, 0x35, 0x0e, + 0xa7, 0x16, 0x0a, 0x74, 0xab, 0xda, 0x69, 0x78, 0x97, 0xcd, 0x66, 0x8e, 0x45, 0x32, 0x68, 0xc6, + 0x76, 0x30, 0x0a, 0x53, 0xa2, 0x0f, 0x17, 0xb9, 0x76, 0x9c, 0x48, 0x5e, 0xcc, 0xcd, 0xce, 0xd0, + 0x7b, 0x99, 0xda, 0xea, 0xda, 0xbd, 0x94, 0xdb, 0x5d, 0x9c, 0xfd, 0x12, 0x1b, 0x8f, 0x20, 0x71, + 0x70, 0xd6, 0x96, 0x85, 0xff, 0xd6, 0x2b, 0x0d, 0x7b, 0xab, 0x0b, 0x0c, 0xe6, 0xd8, 0xba, 0x46, + 0xa6, 0x37, 0x17, 0xe0, 0x7c, 0x8e, 0x53, 0x92, 0x05, 0x8e, 0x3e, 0x56, 0x6e, 0x33, 0xe0, 0x9e, + 0x83, 0xff, 0xee, 0x3e, 0x8a, 0x84, 0x37, 0x5b, 0x2f, 0xc7, 0x47, 0x79, 0x72, 0xa0, 0xcf, 0x11, + 0x2a, 0x41, 0xeb, 0x32, 0x67, 0x8f, 0x44, 0x20, 0x30, 0x20, 0xe7, 0x48, 0x7e, 0x83, 0x7f, 0xc9, + 0xe0, 0xe4, 0x29, 0xb2, 0x69, 0x97, 0x50, 0xc6, 0x65, 0x04, 0xd2, 0xf8, 0x20, 0xa9, 0xce, 0xd9, + 0xfb, 0x71, 0xf2, 0x24, 0xf6, 0x8a, 0x48, 0x93, 0x88, 0x19, 0x42, 0x17, 0x7e, 0x01, 0xdc, 0xff, + 0x0e, 0xfd, 0x2e, 0xe7, 0x90, 0x4f, 0x41, 0xb8, 0x76, 0x0d, 0x63, 0xf7, 0x6f, 0x93, 0xe5, 0x54, + 0xde, 0x43, 0xfc, 0x2e, 0xeb, 0xc2, 0x95, 0x4a, 0xcb, 0x15, 0x54, 0x20, 0x47, 0x32, 0xd3, 0x10, + 0x52, 0x9d, 0x86, 0xea, 0x7f, 0x13, 0xc2, 0x3a, 0xaa, 0x24, 0xfc, 0x13, 0x08, 0xff, 0x4c, 0xa8, + 0x8b, 0xd7, 0x98, 0x92, 0x94, 0xd3, 0x34, 0x9d, 0x4d, 0x78, 0x5f, 0x1f, 0x97, 0x3c, 0x8e, 0x42, + 0x86, 0xe3, 0x98, 0x82, 0xe8, 0x58, 0x34, 0xe7, 0x84, 0x1b, 0x91, 0xf5, 0xca, 0x67, 0x4e, 0x1c, + 0x68, 0x22, 0x06, 0x0e, 0x76, 0x19, 0x3b, 0x46, 0x04, 0xe3, 0x24, 0xb3, 0x0f, 0xc6, 0x57, 0x10, + 0x78, 0x04, 0xc4, 0x3a, 0xaa, 0x4b, 0x85, 0x21, 0x6d, 0xb4, 0x4f, 0x31, 0xf4, 0xa7, 0x7f, 0x2f, + 0x87, 0xf5, 0x8e, 0xf3, 0xb5, 0xd2, 0x91, 0x69, 0xa5, 0x8f, 0x4f, 0x92, 0x3b, 0xf7, 0xd8, 0xcf, + 0x57, 0xf4, 0xf1, 0x38, 0x61, 0x8b, 0xca, 0x8f, 0xe7, 0x8a, 0x76, 0x3c, 0x12, 0xf3, 0xaa, 0xf0, + 0xb7, 0x8e, 0x72, 0x08, 0x05, 0xd3, 0x93, 0xb5, 0xa3, 0x44, 0x31, 0x21, 0xf1, 0xc6, 0x91, 0x79, + 0xc2, 0x28, 0xe2, 0x3f, 0x0b, 0x4d, 0x6f, 0x0c, 0xd7, 0x18, 0x1b, 0x26, 0xf1, 0xaa, 0x33, 0x63, + 0x32, 0xd1, 0xac, 0xc4, 0xac, 0x83, 0x7a, 0xc6, 0xda, 0x99, 0x9b, 0x80, 0x21, 0x80, 0x7f, 0x47, + 0x34, 0x4b, 0x27, 0x8b, 0x64, 0x27, 0x41, 0x77, 0x44, 0xad, 0xa7, 0x53, 0x79, 0x3b, 0x29, 0x3d, + 0xfc, 0x15, 0x81, 0x3a, 0xa9, 0x10, 0xe1, 0xd3, 0x95, 0x3e, 0x52, 0x20, 0x22, 0xd8, 0x04, 0xc5, + 0xd4, 0xef, 0x38, 0x52, 0x62, 0xf4, 0x2e, 0xf4, 0x5f, 0xe8, 0x4a, 0xaa, 0x07, 0xfe, 0x0b, 0xd9, + 0xe4, 0x5f, 0x21, 0xbb, 0x1b, 0xfd, 0x7e, 0xbb, 0x34, 0x3f, 0xaf, 0xbd, 0x69, 0xe9, 0xe1, 0x0b, + 0xb4, 0x52, 0xd0, 0xb2, 0xdc, 0xd7, 0x4f, 0x33, 0xcf, 0x5b, 0xbd, 0x50, 0x94, 0xef, 0xfb, 0x8f, + 0x7e, 0xee, 0xd1, 0x76, 0x74, 0x2a, 0x0b, 0xac, 0xc1, 0xf3, 0x3f, 0xa5, 0x82, 0x3f, 0xce, 0xfe, + 0x04, 0x16, 0xeb, 0x53, 0x2a, 0xd0, 0x90, 0xb0, 0x81, 0xcd, 0xc0, 0xeb, 0x27, 0x22, 0x00, 0x9f, + 0xbe, 0x7e, 0x59, 0xd9, 0xe6, 0x4e, 0x07, 0x42, 0x10, 0xc7, 0x02, 0x20, 0x81, 0xe2, 0xd8, 0xca, + 0xc1, 0x6b, 0x21, 0xf3, 0x50, 0xc8, 0x7c, 0xa2, 0xbe, 0x7e, 0xc1, 0xf0, 0xbe, 0xde, 0xdc, 0x01, + 0xa6, 0x69, 0x47, 0x03, 0xc4, 0xbd, 0x63, 0xea, 0x86, 0x12, 0x99, 0x3d, 0xa5, 0xfa, 0x41, 0xf1, + 0xb2, 0x41, 0x35, 0xe3, 0x8c, 0x2f, 0x01, 0xb4, 0x97, 0x23, 0xc0, 0x17, 0x3c, 0x7e, 0x58, 0xb7, + 0x26, 0xc4, 0x24, 0x91, 0x81, 0x03, 0xcc, 0x8f, 0xeb, 0x61, 0x67, 0xf2, 0xe7, 0x5e, 0xb3, 0xad, + 0x24, 0x08, 0x0f, 0xc4, 0x39, 0xc8, 0xe2, 0x32, 0x89, 0x6a, 0x82, 0xbd, 0x22, 0x7f, 0xe7, 0xfc, + 0xe7, 0xf7, 0x95, 0x2a, 0x59, 0x81, 0x48, 0xd8, 0x49, 0x0b, 0x4c, 0xa3, 0xe6, 0xfc, 0x71, 0x6a, + 0x5a, 0xff, 0x57, 0x14, 0xf2, 0x8a, 0x99, 0x00, 0x82, 0xc6, 0xbf, 0x99, 0x8b, 0x06, 0x22, 0x99, + 0xac, 0x1d, 0xb0, 0x02, 0x1d, 0xcd, 0xba, 0x17, 0x68, 0x1d, 0x6a, 0x50, 0x21, 0x30, 0x37, 0x97, + 0xe4, 0x1a, 0x93, 0x70, 0x6a, 0x68, 0xe6, 0xe4, 0x92, 0x70, 0x27, 0x07, 0xaf, 0xf5, 0x5f, 0xa1, + 0xda, 0x21, 0xe2, 0x3b, 0xa2, 0x5d, 0x50, 0x3b, 0xba, 0xb6, 0x26, 0x0e, 0xb9, 0x0c, 0xcb, 0xc2, + 0x8f, 0x37, 0x56, 0xe0, 0x4b, 0x82, 0x8a, 0xd4, 0x43, 0xea, 0xdb, 0x0b, 0xe0, 0xe0, 0xc7, 0x0b, + 0x52, 0x7f, 0xa6, 0xbe, 0xa9, 0xc8, 0x71, 0xe1, 0x11, 0x38, 0x71, 0xb0, 0x19, 0xb1, 0x01, 0xc2, + 0xa2, 0x7d, 0x5c, 0xad, 0x8a, 0xea, 0xea, 0x47, 0x46, 0x9e, 0xf0, 0x09, 0xff, 0x8b, 0x27, 0x6c, + 0xdd, 0x44, 0x70, 0x51, 0x4c, 0x16, 0x50, 0xb7, 0x47, 0x43, 0xf9, 0xec, 0x11, 0xe3, 0x13, 0x89, + 0xea, 0xe3, 0xca, 0xf5, 0xdc, 0x2b, 0x62, 0x7b, 0x5c, 0x6a, 0x2d, 0x95, 0x4a, 0x89, 0x40, 0x72, + 0xa2, 0x4d, 0x95, 0xb5, 0x19, 0xa2, 0x0a, 0x49, 0xba, 0xed, 0x68, 0x93, 0x8f, 0x48, 0x7f, 0x24, + 0xa7, 0x17, 0x23, 0xf9, 0x47, 0x57, 0xd9, 0x84, 0xba, 0xf9, 0x83, 0x70, 0x08, 0x3e, 0xdf, 0x06, + 0x57, 0xca, 0xd1, 0xe7, 0xe0, 0xc2, 0xba, 0xa0, 0x35, 0x3d, 0xae, 0xba, 0x9c, 0xe6, 0x64, 0x4f, + 0x85, 0xe4, 0x13, 0x9b, 0x90, 0xf0, 0xc7, 0xfa, 0x7d, 0xed, 0x31, 0xd2, 0xe4, 0xf4, 0x69, 0x50, + 0x02, 0x76, 0x24, 0x0f, 0xa5, 0x24, 0xf4, 0xd2, 0xdf, 0x00, 0xae, 0xce, 0xb4, 0x20, 0xde, 0xbc, + 0x56, 0xc2, 0xbf, 0x18, 0xcd, 0x9c, 0xfa, 0xc3, 0x5c, 0x52, 0x5a, 0x0e, 0x42, 0x9a, 0xbf, 0x92, + 0xee, 0x5c, 0x2c, 0x4e, 0x84, 0x81, 0x96, 0x3a, 0x5b, 0x98, 0x47, 0x32, 0x8c, 0xfd, 0xff, 0x53, + 0x14, 0x0c, 0xe4, 0x0a, 0x97, 0x36, 0x4a, 0x8a, 0x31, 0xa4, 0xfc, 0x17, 0x41, 0x7c, 0x1c, 0x42, + 0x40, 0x12, 0xa2, 0xcd, 0x57, 0xe9, 0x7e, 0x54, 0xa3, 0x39, 0x3f, 0x60, 0x14, 0x20, 0x26, 0x9e, + 0x06, 0x64, 0x8e, 0xe1, 0xc3, 0xfe, 0x8b, 0xef, 0x72, 0xf5, 0xb8, 0x20, 0x17, 0x01, 0xcd, 0x16, + 0x8e, 0xa2, 0x8f, 0xc2, 0xb7, 0x03, 0xb3, 0x8b, 0xe6, 0xfd, 0x40, 0xeb, 0xb8, 0x16, 0x75, 0xc0, + 0x6f, 0xe5, 0x6e, 0x70, 0x6f, 0xb0, 0x71, 0xf8, 0xed, 0x2a, 0x09, 0xa4, 0x0e, 0x3d, 0xf1, 0xba, + 0xc4, 0xe3, 0xbf, 0x18, 0xc4, 0x39, 0x07, 0x30, 0xe5, 0xe3, 0xfc, 0xfd, 0xf3, 0x71, 0x30, 0x4e, + 0x67, 0xbe, 0xc3, 0x95, 0x88, 0x6e, 0xe1, 0xb3, 0x83, 0x80, 0x3b, 0xff, 0x37, 0x75, 0x4c, 0xcc, + 0x0b, 0x44, 0x08, 0xea, 0x19, 0x67, 0x8c, 0x7d, 0x21, 0x9f, 0xc1, 0x00, 0x7d, 0x00, 0x44, 0xc2, + 0x27, 0x1c, 0xe6, 0xbe, 0x28, 0x53, 0x2f, 0x88, 0xd4, 0xe3, 0x72, 0xe6, 0xcd, 0xcd, 0xe7, 0x2b, + 0xfc, 0xbc, 0x9c, 0x53, 0x7c, 0x0f, 0x9d, 0xc3, 0x16, 0x67, 0x65, 0xcc, 0x24, 0x80, 0x4b, 0x0b, + 0x02, 0xde, 0x85, 0x1e, 0x99, 0x54, 0x1a, 0x93, 0x22, 0x13, 0x34, 0x0e, 0xf5, 0xe0, 0x44, 0x0e, + 0xf5, 0x72, 0x39, 0x38, 0x88, 0x64, 0x38, 0x95, 0xc3, 0x7c, 0x0c, 0x9d, 0xff, 0x79, 0x28, 0x1d, + 0x3d, 0x24, 0xcc, 0x17, 0xc2, 0x67, 0x84, 0x61, 0x46, 0x7b, 0x6d, 0xf8, 0x1b, 0x43, 0xc1, 0x09, + 0x67, 0xf1, 0x23, 0xe2, 0x30, 0xc8, 0xc8, 0x1d, 0x99, 0xb6, 0xf1, 0x78, 0x7c, 0x62, 0x4d, 0xc2, + 0xc7, 0x10, 0xd1, 0x53, 0x59, 0xfd, 0x58, 0xc5, 0x12, 0x16, 0xec, 0xaa, 0xb9, 0xfb, 0x50, 0x7e, + 0x54, 0xfc, 0x1b, 0xf9, 0xd1, 0x91, 0x4f, 0xfc, 0x6f, 0xe7, 0x47, 0xdf, 0x20, 0x85, 0x71, 0x96, + 0xff, 0x91, 0xdf, 0x7c, 0xf0, 0x7e, 0x55, 0x4a, 0xb5, 0xed, 0x4a, 0xb1, 0x26, 0x81, 0xab, 0xbe, + 0x2c, 0x87, 0xff, 0x5e, 0x6a, 0x13, 0x43, 0x49, 0x29, 0xa6, 0x99, 0x82, 0x99, 0xa9, 0xdb, 0x44, + 0x65, 0xba, 0x98, 0x2f, 0xe0, 0x87, 0x4e, 0x7f, 0x9e, 0x3d, 0x80, 0x8c, 0x08, 0x19, 0xdc, 0xdd, + 0x38, 0xbe, 0x11, 0x91, 0x78, 0x36, 0xff, 0x38, 0x3b, 0xde, 0xf7, 0x80, 0xd9, 0x85, 0x54, 0xfa, + 0x30, 0x08, 0xff, 0x41, 0x0e, 0x11, 0x7e, 0x51, 0xd0, 0x17, 0x2a, 0xfa, 0x6e, 0x29, 0x72, 0x91, + 0xc4, 0xb6, 0x60, 0xf6, 0xe4, 0xf5, 0xc6, 0xb6, 0x9a, 0xf0, 0x7e, 0x7b, 0x87, 0xbf, 0x9f, 0x09, + 0xc6, 0x26, 0xc6, 0x26, 0x65, 0x40, 0xb7, 0xba, 0xb9, 0x49, 0xa9, 0xa6, 0xe2, 0xba, 0x30, 0x23, + 0x78, 0x9a, 0x72, 0xf3, 0x15, 0x4f, 0xc4, 0x51, 0x01, 0xfe, 0xc6, 0xa2, 0x94, 0xc4, 0x3f, 0x3e, + 0x3e, 0x7e, 0xa1, 0x60, 0x3e, 0x06, 0x69, 0xd9, 0xe1, 0x37, 0x13, 0x11, 0x00, 0x27, 0x0b, 0x53, + 0x04, 0x05, 0x68, 0x87, 0xce, 0x82, 0xfe, 0x7c, 0xf3, 0xb5, 0x67, 0x3b, 0xce, 0xee, 0x21, 0x02, + 0x95, 0xb2, 0x34, 0x6d, 0xe2, 0xa6, 0xea, 0xca, 0x46, 0xe9, 0x11, 0x38, 0xbf, 0x04, 0x90, 0xbf, + 0x50, 0x31, 0xe0, 0x18, 0xbb, 0x10, 0x78, 0x78, 0x35, 0xe3, 0x86, 0x60, 0x0b, 0x44, 0x25, 0xdf, + 0x2f, 0x95, 0x18, 0xc7, 0x4f, 0x49, 0x2f, 0x74, 0x43, 0xfe, 0x89, 0x57, 0x92, 0xee, 0x90, 0x0d, + 0x18, 0x40, 0xf0, 0xb1, 0x83, 0x8b, 0x3c, 0x37, 0x40, 0x1a, 0xd5, 0x34, 0xd4, 0x05, 0x06, 0xab, + 0xeb, 0xa6, 0x46, 0x7a, 0x81, 0x40, 0x31, 0x64, 0xdd, 0xbc, 0xf9, 0xfa, 0xc5, 0x88, 0x9a, 0xe4, + 0x0a, 0xc7, 0xcd, 0xd7, 0xdf, 0x7e, 0xdd, 0x6a, 0x99, 0xd2, 0xf4, 0xf3, 0x17, 0xca, 0x80, 0xdc, + 0x2e, 0x81, 0x45, 0xf0, 0x1c, 0xeb, 0xe6, 0x2b, 0x01, 0xf3, 0x85, 0x5a, 0xc1, 0xa1, 0x82, 0xdd, + 0x2e, 0xa2, 0xd0, 0x32, 0xcf, 0xf6, 0x6f, 0x99, 0x98, 0x3b, 0x17, 0x37, 0xcc, 0x2a, 0xd9, 0xeb, + 0x1b, 0xf6, 0x8d, 0xe5, 0x07, 0x36, 0xec, 0xed, 0x2c, 0xf5, 0x6c, 0x4b, 0xdc, 0x79, 0x75, 0x53, + 0x9a, 0x2e, 0x5e, 0xdf, 0x14, 0xaf, 0xfc, 0xfe, 0x9e, 0xe7, 0x44, 0x6e, 0x86, 0x57, 0x20, 0xae, + 0xee, 0x9a, 0xa7, 0x33, 0xdf, 0xa0, 0xad, 0x43, 0x16, 0x5f, 0xd9, 0x38, 0xde, 0xca, 0x37, 0x2c, + 0xb0, 0x18, 0x8f, 0xa0, 0xb4, 0x24, 0x65, 0x7d, 0xc4, 0xdf, 0x3a, 0x96, 0x7a, 0x4d, 0x7d, 0xa2, + 0x5c, 0xcd, 0xc3, 0xb7, 0x84, 0xdc, 0x4f, 0x9f, 0xaf, 0x71, 0xf6, 0x5b, 0x84, 0x66, 0x6d, 0x6b, + 0x6a, 0xe8, 0xa7, 0x9b, 0x47, 0xaa, 0x11, 0x69, 0x54, 0xa8, 0xa8, 0x44, 0xf2, 0x62, 0x28, 0xb3, + 0xc9, 0xcd, 0x57, 0x86, 0x84, 0x0d, 0x96, 0xe6, 0xba, 0x18, 0xc4, 0xb1, 0xb8, 0x1a, 0x26, 0x99, + 0x7f, 0x8c, 0x52, 0x2a, 0x71, 0x4f, 0x27, 0x92, 0x83, 0x80, 0x25, 0xc7, 0x8b, 0x13, 0xc5, 0xba, + 0x08, 0x0e, 0x09, 0x17, 0x30, 0x36, 0xc1, 0x18, 0x6c, 0x4d, 0x38, 0x31, 0xc3, 0xa5, 0x46, 0xe8, + 0xd4, 0x3c, 0xe8, 0xc1, 0xa2, 0x6e, 0x5b, 0x64, 0xea, 0xeb, 0xcd, 0x7a, 0x35, 0x01, 0x7f, 0xd4, + 0x77, 0x14, 0xc3, 0xbc, 0xf5, 0x66, 0x86, 0x0b, 0x63, 0x60, 0xd7, 0x5e, 0x6f, 0xb2, 0x85, 0xc2, + 0x0d, 0xfe, 0x86, 0xb9, 0xd7, 0x1b, 0xfa, 0x26, 0x45, 0x72, 0xbd, 0x1b, 0x52, 0xaf, 0xbc, 0x49, + 0x6d, 0x14, 0x73, 0x0d, 0x2d, 0x3a, 0x5b, 0xba, 0x49, 0x51, 0x17, 0x31, 0x0a, 0xcd, 0x18, 0x90, + 0x3a, 0xa2, 0xd1, 0xb5, 0x77, 0x83, 0x3c, 0x51, 0x22, 0x08, 0x47, 0x77, 0x64, 0xc0, 0x9a, 0x38, + 0xea, 0xeb, 0x8d, 0x32, 0xc6, 0x57, 0xf6, 0xc6, 0xa6, 0x62, 0x2d, 0x30, 0x9c, 0x60, 0xe2, 0x05, + 0x10, 0xc9, 0xfd, 0x53, 0x60, 0xd6, 0xa2, 0x7b, 0x0b, 0x37, 0x49, 0xd6, 0xb0, 0xd8, 0x29, 0xb9, + 0x37, 0x09, 0xd6, 0x86, 0xc1, 0xcc, 0xd1, 0xac, 0xa0, 0x28, 0x19, 0xcf, 0x02, 0xcb, 0x84, 0x4f, + 0x93, 0x38, 0x45, 0x34, 0xd1, 0x3f, 0xe7, 0x73, 0x70, 0x05, 0xee, 0xe6, 0xeb, 0x00, 0x7b, 0x37, + 0xfc, 0x05, 0x7c, 0x90, 0x38, 0x9b, 0xe7, 0xec, 0xfe, 0x3e, 0xc7, 0x06, 0x67, 0xfb, 0x1f, 0xf3, + 0x8f, 0x1c, 0xe5, 0x76, 0xaa, 0x98, 0xae, 0xf6, 0xf7, 0xd8, 0x98, 0xf9, 0x2f, 0xb0, 0x31, 0x76, + 0x26, 0xae, 0x99, 0x34, 0xb8, 0x21, 0x14, 0x9c, 0x68, 0xab, 0x66, 0x0a, 0x2c, 0x72, 0xc2, 0x1a, + 0x04, 0x25, 0xa7, 0x9e, 0x69, 0x7b, 0xb7, 0xe0, 0xc9, 0x6f, 0xbe, 0xd2, 0x17, 0xf4, 0xf9, 0x83, + 0xeb, 0x69, 0xbc, 0x3e, 0xfb, 0xcf, 0xd7, 0x67, 0xf1, 0xfa, 0xdc, 0x25, 0x95, 0x3e, 0x63, 0x2b, + 0xa1, 0x7a, 0x6a, 0xa5, 0x98, 0x60, 0x47, 0x34, 0xcc, 0xd6, 0xd4, 0x87, 0xd4, 0x38, 0xbc, 0x2d, + 0x17, 0xea, 0xf0, 0x38, 0x17, 0xe9, 0x70, 0x58, 0xe2, 0x3c, 0xb8, 0x2c, 0x3c, 0x35, 0xf0, 0x74, + 0xc1, 0x50, 0x27, 0xd8, 0xe9, 0x84, 0xf7, 0x61, 0x6f, 0xe0, 0xcb, 0xbf, 0x04, 0x75, 0xb5, 0xaf, + 0xe5, 0xa0, 0xdc, 0xf0, 0x85, 0x0a, 0xdb, 0x87, 0x11, 0x0e, 0x3f, 0xfe, 0xfd, 0x25, 0x39, 0x40, + 0x05, 0xd0, 0xaf, 0xab, 0x11, 0xc6, 0x20, 0xbc, 0x1f, 0x72, 0x4d, 0x5b, 0xce, 0x68, 0x13, 0xcc, + 0x4f, 0xb9, 0x2b, 0x70, 0xf1, 0x17, 0x24, 0x3e, 0xb8, 0x0b, 0xf0, 0x21, 0x2b, 0x97, 0xcb, 0x16, + 0xfe, 0x91, 0x95, 0xeb, 0xe1, 0xad, 0xbf, 0xa3, 0x37, 0x64, 0xce, 0xdf, 0xb4, 0x7c, 0xff, 0x0d, + 0x95, 0xb9, 0x46, 0x3e, 0x9c, 0x51, 0xe3, 0x82, 0xe2, 0xee, 0x3a, 0x09, 0x83, 0x13, 0x87, 0x37, + 0x2f, 0x3e, 0x44, 0xd0, 0x7c, 0xe6, 0xf9, 0x1f, 0x11, 0x94, 0x8f, 0x90, 0xf9, 0x0e, 0x51, 0xe3, + 0x79, 0xff, 0x1f, 0x13, 0x16, 0x5f, 0x0c, 0xfe, 0x18, 0x4d, 0xb3, 0x17, 0x6c, 0x18, 0x31, 0x1e, + 0x78, 0xce, 0x74, 0x3b, 0xce, 0x1c, 0x99, 0x11, 0x6f, 0x18, 0x18, 0xb0, 0x1e, 0xce, 0x6a, 0xbe, + 0x15, 0x17, 0x4c, 0xb7, 0xa6, 0xe1, 0x12, 0xdd, 0x09, 0xe3, 0x6b, 0x88, 0xab, 0x13, 0xd3, 0xc6, + 0xce, 0x65, 0x35, 0xec, 0x69, 0xfa, 0x12, 0x5f, 0x3f, 0xf8, 0x9e, 0xd7, 0x82, 0x8c, 0x07, 0x77, + 0x5f, 0x85, 0x9f, 0x98, 0xb7, 0xf6, 0x02, 0x7e, 0x7f, 0x53, 0xfd, 0x2b, 0xca, 0xc6, 0x76, 0xc0, + 0x89, 0x7d, 0xc3, 0x00, 0x10, 0x67, 0xe9, 0x36, 0x49, 0x70, 0x74, 0x4a, 0x75, 0x8c, 0x43, 0x8a, + 0x5c, 0x0b, 0x71, 0xc1, 0xc6, 0x86, 0x84, 0x3f, 0xb7, 0xcb, 0xd8, 0xe6, 0xe1, 0xfa, 0xea, 0x31, + 0x49, 0x21, 0xcc, 0x83, 0xd7, 0xc0, 0xb0, 0x7f, 0xc7, 0x31, 0x7c, 0x13, 0x40, 0xf6, 0x03, 0x9e, + 0xe1, 0x9b, 0x00, 0x72, 0x67, 0xae, 0xe1, 0x6f, 0x02, 0xc8, 0x63, 0x00, 0xf9, 0x18, 0x40, 0xc8, + 0xe5, 0xbf, 0x09, 0xa4, 0x80, 0x81, 0x14, 0x7e, 0x00, 0x8b, 0x22, 0x06, 0x50, 0xfc, 0x01, 0x00, + 0x4f, 0x18, 0xc0, 0xd3, 0x0f, 0x00, 0x28, 0x61, 0x00, 0xa5, 0x1f, 0xa4, 0xc3, 0x33, 0x06, 0xf2, + 0xfc, 0x03, 0x58, 0xd0, 0x41, 0xa8, 0x91, 0xf9, 0x11, 0x10, 0x81, 0x50, 0xfe, 0x88, 0x54, 0xd2, + 0x44, 0x2c, 0xe9, 0xec, 0x0f, 0x52, 0x83, 0x26, 0xc2, 0x49, 0xff, 0x88, 0x74, 0xd2, 0x44, 0x3c, + 0xe9, 0xfc, 0x8f, 0x80, 0x20, 0xc2, 0x49, 0xff, 0x88, 0x74, 0xd2, 0x44, 0x3c, 0xe9, 0xe2, 0x29, + 0x3d, 0x82, 0x7b, 0xa1, 0x21, 0x94, 0xa0, 0xf6, 0x87, 0xeb, 0xac, 0xd8, 0xf8, 0xf4, 0x82, 0xc7, + 0x16, 0xd8, 0xa6, 0xc7, 0x6e, 0x2b, 0xf0, 0x24, 0x64, 0xde, 0xd8, 0xde, 0xde, 0x84, 0xd6, 0xa9, + 0x4f, 0xb2, 0xce, 0xa4, 0xbf, 0x0a, 0x93, 0xfd, 0x5e, 0x18, 0x3e, 0xb9, 0x2b, 0xc5, 0x3a, 0xda, + 0x84, 0x54, 0x46, 0x61, 0x23, 0xec, 0x63, 0xf0, 0x20, 0x31, 0x8f, 0x04, 0x97, 0x08, 0xb1, 0xe4, + 0x92, 0x19, 0x58, 0x7e, 0x30, 0x70, 0x29, 0xba, 0x98, 0x52, 0xa1, 0xd7, 0x55, 0x36, 0x1a, 0xa9, + 0x0c, 0xb9, 0xa1, 0xd9, 0x7e, 0x0c, 0x81, 0xe0, 0xa5, 0xdf, 0x3f, 0x57, 0x40, 0x91, 0x94, 0xba, + 0x53, 0xcd, 0x6f, 0x1f, 0x4c, 0xdd, 0x5d, 0x3b, 0x18, 0x3b, 0xfa, 0xc7, 0x07, 0xab, 0x18, 0x8e, + 0xeb, 0xa5, 0x56, 0x04, 0x87, 0x97, 0x54, 0x22, 0x1a, 0x00, 0x7c, 0xdc, 0xf3, 0x10, 0x20, 0xc0, + 0x2b, 0x78, 0xf4, 0x77, 0xc8, 0x11, 0x89, 0x8b, 0xa7, 0xf3, 0x07, 0x67, 0x7e, 0x13, 0x42, 0x6f, + 0x2a, 0x57, 0x81, 0x6b, 0x1f, 0x02, 0x9e, 0x8d, 0x80, 0x17, 0x62, 0xe0, 0xb9, 0x08, 0x38, 0xae, + 0x81, 0xa4, 0xf0, 0xbd, 0x9b, 0xcb, 0x1b, 0x78, 0x1f, 0xda, 0x20, 0xf3, 0x18, 0x6d, 0x51, 0x2c, + 0x3c, 0x1e, 0x36, 0xa1, 0xa1, 0xfb, 0xab, 0x1b, 0xee, 0x93, 0x78, 0xdc, 0x7b, 0xb2, 0xc5, 0x07, + 0xf7, 0xb8, 0xb4, 0x43, 0xe6, 0xf1, 0x09, 0x76, 0xf8, 0x76, 0x52, 0x1b, 0x54, 0xba, 0xc6, 0xb6, + 0x17, 0x08, 0x00, 0xfe, 0x70, 0xae, 0x6b, 0x30, 0x05, 0x7f, 0xf5, 0x7a, 0x52, 0xcf, 0xec, 0x95, + 0x66, 0xf5, 0x95, 0x31, 0x04, 0x29, 0xd7, 0x6a, 0x4b, 0x61, 0x3e, 0x72, 0xa5, 0xe4, 0x81, 0x33, + 0xe6, 0x2b, 0xf5, 0x96, 0xef, 0x6f, 0x4a, 0x5f, 0xdd, 0x34, 0x37, 0xb9, 0xbe, 0x69, 0x98, 0x79, + 0xfc, 0xe3, 0x5d, 0xb3, 0xd7, 0x76, 0xcd, 0xe5, 0xc7, 0xdf, 0xa8, 0x68, 0x85, 0x1a, 0xfb, 0x8f, + 0xb7, 0xcd, 0x5d, 0xdb, 0x36, 0x93, 0x57, 0xaf, 0x6f, 0x1b, 0xc7, 0x59, 0x57, 0xea, 0x4a, 0x89, + 0x90, 0x8c, 0xdc, 0xe6, 0xbd, 0x50, 0x87, 0x88, 0xff, 0x88, 0xee, 0x30, 0x76, 0xf8, 0x82, 0xf9, + 0x9f, 0x7f, 0xa2, 0xfe, 0xf5, 0xcb, 0xcf, 0x3f, 0xfd, 0x2b, 0x65, 0x38, 0xf6, 0xe3, 0xdc, 0x4d, + 0x6d, 0xf2, 0x8f, 0xf9, 0xc7, 0x0c, 0xee, 0xc8, 0x66, 0xe8, 0x62, 0x1a, 0x5e, 0x9e, 0x53, 0x75, + 0x72, 0x9d, 0xb7, 0xac, 0x58, 0x86, 0x66, 0xe2, 0x91, 0xa6, 0xa1, 0x42, 0x3c, 0xaf, 0x4d, 0x52, + 0x6b, 0x0b, 0x62, 0xee, 0x94, 0xd0, 0x69, 0xa6, 0xb2, 0xc1, 0x1a, 0xdd, 0xf0, 0x66, 0xeb, 0xf1, + 0xa3, 0x6a, 0x2f, 0xa9, 0xb9, 0x82, 0x57, 0x51, 0x01, 0x58, 0x18, 0xa3, 0x7e, 0xfe, 0xe9, 0x97, + 0xe8, 0xdb, 0xec, 0x6f, 0xbd, 0x07, 0xed, 0xee, 0xcf, 0x1b, 0x7b, 0x3c, 0x07, 0x46, 0xde, 0xbc, + 0xbe, 0x62, 0x45, 0xb0, 0xa7, 0x29, 0x6d, 0x8b, 0x9f, 0xdf, 0xbb, 0xbf, 0xfd, 0x76, 0x83, 0x01, + 0x4f, 0x0d, 0x0b, 0xd2, 0xb5, 0x5f, 0xa2, 0x41, 0x30, 0xe6, 0x6b, 0x53, 0xfb, 0x3d, 0x78, 0x7b, + 0x0c, 0xa7, 0xbe, 0x42, 0x96, 0xfb, 0x72, 0x13, 0x81, 0x3d, 0x40, 0x0a, 0x56, 0xff, 0xf6, 0x5b, + 0xf0, 0xfe, 0xa8, 0x2c, 0x27, 0xbf, 0x07, 0x1f, 0x6f, 0xb5, 0xbb, 0x17, 0xef, 0x11, 0x90, 0xc2, + 0x2b, 0xff, 0x22, 0x79, 0xc7, 0x43, 0x8c, 0x15, 0xa0, 0xb4, 0x76, 0xb5, 0x94, 0xeb, 0x39, 0x06, + 0xa0, 0xf5, 0x79, 0xa3, 0x38, 0x29, 0xf5, 0x35, 0x31, 0xfa, 0xd7, 0x83, 0xf1, 0x0a, 0x2f, 0xb3, + 0xd7, 0xff, 0xfc, 0xf1, 0xb0, 0x86, 0x97, 0xcf, 0xf1, 0xb7, 0xf3, 0xaf, 0x82, 0x13, 0xe1, 0x15, + 0xf6, 0x83, 0xf5, 0xe0, 0x3c, 0x18, 0x0f, 0xee, 0xab, 0xe2, 0xe8, 0x6b, 0x22, 0x32, 0x0f, 0xca, + 0xeb, 0xfa, 0xf3, 0xd4, 0x76, 0x6e, 0x8d, 0x43, 0xdf, 0xa3, 0xa9, 0x59, 0xba, 0x37, 0xfb, 0x9c, + 0xfd, 0x62, 0xa4, 0xd3, 0x9f, 0xef, 0x66, 0x8f, 0xab, 0xb5, 0x3b, 0xbb, 0x75, 0xff, 0x63, 0xfc, + 0x71, 0x47, 0xa6, 0x02, 0xf2, 0xd6, 0xda, 0x34, 0x7f, 0x79, 0xd5, 0x1e, 0xd5, 0x99, 0x61, 0x4e, + 0x1c, 0xcd, 0xfa, 0xed, 0xb7, 0xdb, 0x59, 0xb8, 0xec, 0x7f, 0xfe, 0x27, 0x5c, 0x70, 0x18, 0xbd, + 0x7b, 0x98, 0x40, 0xd6, 0xee, 0x69, 0xa9, 0x44, 0xd7, 0xe7, 0x68, 0xfe, 0xe7, 0x3b, 0x63, 0x7a, + 0x7b, 0x6b, 0xbd, 0xc2, 0x2a, 0x7b, 0x75, 0x7b, 0x77, 0xf7, 0xdb, 0x6f, 0x1b, 0xdb, 0x98, 0xa4, + 0x32, 0xbf, 0xbc, 0xbe, 0x5a, 0xb8, 0xeb, 0x2e, 0xc0, 0xce, 0x8a, 0xa6, 0x27, 0x71, 0xb2, 0x08, + 0x4e, 0x10, 0xb5, 0x6b, 0x60, 0x55, 0x6c, 0x53, 0x53, 0x12, 0x74, 0xc6, 0x38, 0x59, 0xaf, 0x18, + 0xd1, 0xbb, 0x87, 0x5b, 0xe7, 0xf5, 0xc0, 0x89, 0x98, 0x6d, 0xde, 0x1d, 0x9e, 0x02, 0x13, 0x60, + 0xa7, 0xdf, 0xc1, 0xc0, 0xdd, 0xbc, 0x44, 0x06, 0xef, 0x00, 0x04, 0xfa, 0x7b, 0x1e, 0xbe, 0x53, + 0x74, 0x6b, 0x01, 0x37, 0x5d, 0xf2, 0xf1, 0x00, 0x01, 0xef, 0xe1, 0xbc, 0xfe, 0x42, 0xdf, 0xdd, + 0x3d, 0x38, 0xbf, 0xfd, 0x66, 0xff, 0xae, 0xfc, 0x47, 0x09, 0xd1, 0x4c, 0xd3, 0x7f, 0xdc, 0xbf, + 0x5a, 0x2f, 0xca, 0xeb, 0xeb, 0xeb, 0xfa, 0x77, 0xe5, 0xf5, 0x3f, 0xd6, 0x1f, 0x2f, 0x4a, 0x88, + 0xf3, 0xdd, 0x83, 0xfd, 0xea, 0x10, 0x0e, 0x9a, 0xaf, 0x96, 0xe6, 0xa7, 0xd4, 0xcf, 0x8e, 0xe6, + 0xad, 0x1d, 0x2b, 0x65, 0x3e, 0x5a, 0x10, 0x15, 0xb4, 0xf0, 0xff, 0xa7, 0xc2, 0x7b, 0x30, 0x63, + 0x52, 0xbd, 0xfe, 0x3f, 0xe6, 0xae, 0xb5, 0xbb, 0x6d, 0x1b, 0x69, 0xff, 0x95, 0x88, 0x4d, 0x7d, + 0x48, 0x0b, 0xba, 0x39, 0x4d, 0xde, 0x96, 0x0a, 0x8f, 0x4e, 0xe2, 0xa4, 0x4d, 0x76, 0x73, 0xe9, + 0xc6, 0x6e, 0xda, 0x5d, 0xc7, 0xf5, 0xa1, 0x29, 0x4a, 0x62, 0x4d, 0x93, 0x2a, 0x09, 0xcb, 0x56, + 0x25, 0xfd, 0xf7, 0x7d, 0x66, 0x00, 0x90, 0x90, 0x44, 0x27, 0xe9, 0x7e, 0x7a, 0xcf, 0x6e, 0x2d, + 0xe2, 0x36, 0x00, 0xe6, 0x3e, 0x03, 0x90, 0x09, 0x51, 0x08, 0x25, 0xa6, 0x86, 0x84, 0xc5, 0x65, + 0xa0, 0x56, 0x1c, 0x8f, 0x14, 0x9a, 0xfc, 0x18, 0xad, 0x57, 0xf1, 0x72, 0xaf, 0x9a, 0x2a, 0x45, + 0xba, 0xa9, 0xf8, 0xe0, 0xad, 0xe2, 0x03, 0xc2, 0x26, 0xf3, 0x02, 0xe2, 0xf5, 0x07, 0xb1, 0x27, + 0xcf, 0xf2, 0xf3, 0x20, 0xc6, 0x1f, 0xb3, 0x08, 0x59, 0x8f, 0x48, 0xd5, 0x08, 0x45, 0x6b, 0x89, + 0xad, 0x36, 0x70, 0xb3, 0x1c, 0x49, 0xc5, 0xb7, 0xd1, 0x4d, 0x41, 0x57, 0xa9, 0x82, 0xd8, 0xdb, + 0x10, 0xf8, 0x38, 0x68, 0xe8, 0xfc, 0x33, 0x82, 0xaa, 0xa4, 0x8c, 0x47, 0xfa, 0xb7, 0x0b, 0x83, + 0x97, 0xa7, 0x0b, 0x70, 0x7b, 0x57, 0xce, 0xe2, 0xac, 0x7b, 0x99, 0x64, 0x63, 0x77, 0xaf, 0xcd, + 0xf3, 0x61, 0x15, 0xc9, 0x48, 0xe6, 0x37, 0x52, 0x4c, 0x82, 0x1e, 0x1d, 0xd0, 0xac, 0xe3, 0x3b, + 0x77, 0xe4, 0x97, 0xeb, 0xe9, 0x3a, 0x5b, 0xcf, 0xd7, 0x0f, 0xbd, 0x75, 0x31, 0x9f, 0xad, 0xf3, + 0xdb, 0x72, 0x7d, 0x9d, 0x45, 0xeb, 0x4c, 0xde, 0xae, 0x21, 0x4e, 0x67, 0xd1, 0xec, 0x7c, 0xfd, + 0x57, 0x9e, 0xaf, 0x7f, 0xcf, 0x8b, 0x71, 0x2f, 0x01, 0xd2, 0x6d, 0xa9, 0x28, 0x5d, 0xe9, 0xad, + 0x5a, 0xb2, 0x7b, 0x31, 0x4e, 0x0a, 0xb9, 0xc4, 0xde, 0xcc, 0x63, 0xd0, 0xea, 0x83, 0x2d, 0x06, + 0x41, 0x90, 0x2b, 0x72, 0x11, 0x93, 0xc4, 0x20, 0x5a, 0x8d, 0x16, 0x12, 0x37, 0x83, 0x45, 0x39, + 0x94, 0xd4, 0x91, 0x18, 0x77, 0xe8, 0xd5, 0xd0, 0x5e, 0x63, 0x58, 0x3d, 0xe0, 0x44, 0xe1, 0xd1, + 0x20, 0xb8, 0xab, 0x5e, 0x92, 0x4d, 0xfe, 0x8a, 0xc7, 0xef, 0x0c, 0xbd, 0x41, 0xb8, 0xf5, 0x5a, + 0x56, 0xf4, 0xef, 0xca, 0xfc, 0x0d, 0x9d, 0xc5, 0x1c, 0x87, 0x25, 0x30, 0x40, 0xad, 0xdb, 0x35, + 0x35, 0xec, 0x97, 0xb4, 0x0f, 0x85, 0xf0, 0xb7, 0x2e, 0x14, 0x80, 0xb4, 0x38, 0x05, 0x92, 0x51, + 0x33, 0x91, 0xac, 0x1e, 0x99, 0xf5, 0xf2, 0xc0, 0x9a, 0x4d, 0xdf, 0xf7, 0x01, 0xea, 0xe7, 0xe5, + 0x10, 0xd2, 0x58, 0x09, 0x60, 0xee, 0x99, 0x8d, 0x66, 0xc4, 0x2e, 0xb9, 0xa7, 0x5a, 0x68, 0x41, + 0xe0, 0x68, 0x60, 0x8d, 0x7e, 0x82, 0x1c, 0x7f, 0x3c, 0xc3, 0x3f, 0x71, 0xbd, 0xb6, 0x77, 0xf5, + 0xda, 0x64, 0x57, 0xdd, 0xb4, 0xa3, 0x0d, 0x0f, 0xa1, 0x3f, 0x88, 0xbe, 0xd7, 0xf9, 0x22, 0x3e, + 0xa6, 0x35, 0x6d, 0x21, 0x6b, 0x41, 0xc8, 0x12, 0xac, 0xa9, 0xbc, 0x15, 0xd6, 0xe2, 0xb0, 0xdd, + 0xa1, 0x65, 0x3a, 0x34, 0x2d, 0xcd, 0x19, 0xa8, 0x3a, 0xc7, 0x13, 0x0e, 0x78, 0x9c, 0xab, 0x95, + 0x12, 0x78, 0x40, 0xfd, 0x8b, 0x78, 0xa2, 0xaa, 0x52, 0x17, 0x50, 0x58, 0xfc, 0x53, 0x37, 0x13, + 0xd2, 0xea, 0xa2, 0x86, 0xb7, 0x18, 0xe9, 0x05, 0xa9, 0x1f, 0x87, 0x8f, 0xff, 0xd4, 0x30, 0x9a, + 0x14, 0x72, 0xdd, 0x24, 0xeb, 0x7b, 0x75, 0xf9, 0x7a, 0x0d, 0xc6, 0xe1, 0xc1, 0xdd, 0xa8, 0x2c, + 0x4f, 0xe3, 0x3b, 0x19, 0x64, 0xeb, 0xb5, 0x83, 0xa5, 0x51, 0xf7, 0x5d, 0x23, 0x92, 0xa9, 0x1d, + 0xed, 0x41, 0xa9, 0xb0, 0x9c, 0x28, 0x2c, 0xf3, 0x4f, 0x56, 0xc3, 0x86, 0x96, 0x83, 0x76, 0x52, + 0xca, 0xb7, 0xea, 0x96, 0x79, 0x76, 0xeb, 0x9e, 0xe2, 0x42, 0xed, 0xc1, 0x41, 0x0b, 0x7c, 0x1c, + 0x4c, 0xba, 0xe0, 0x05, 0xe9, 0x26, 0xde, 0x88, 0x2a, 0xdb, 0xce, 0xfc, 0xce, 0xf1, 0xe9, 0x69, + 0xb3, 0xa9, 0x10, 0x32, 0x26, 0x37, 0xbc, 0xc8, 0x6f, 0xca, 0x74, 0x79, 0x42, 0x39, 0xb1, 0x2c, + 0x2e, 0x5e, 0x9d, 0xbe, 0x7d, 0xa3, 0x10, 0x92, 0xb1, 0x74, 0x24, 0xa6, 0x12, 0x9a, 0xf8, 0xe2, + 0x82, 0xde, 0xf7, 0xe7, 0x7d, 0xd6, 0x48, 0xcd, 0x1d, 0xe2, 0x8a, 0x3e, 0x66, 0x75, 0x32, 0x7e, + 0x1c, 0x9c, 0x2b, 0xea, 0xc3, 0x12, 0x02, 0xd5, 0x20, 0x1b, 0x11, 0x7d, 0x9e, 0x86, 0x51, 0xec, + 0xf6, 0x8e, 0xc3, 0x39, 0xb8, 0x25, 0x7e, 0xd8, 0x13, 0x80, 0x01, 0x20, 0xbb, 0x0c, 0xde, 0x2d, + 0x6f, 0x2e, 0x15, 0x9a, 0xe0, 0x12, 0x89, 0x6c, 0x94, 0x93, 0x74, 0x84, 0xe3, 0xf1, 0x4b, 0x7a, + 0x9f, 0xe5, 0x4d, 0x52, 0xca, 0x18, 0xab, 0x71, 0x63, 0x31, 0x16, 0x25, 0x29, 0x1f, 0xc5, 0x4c, + 0x4d, 0x8d, 0x82, 0x04, 0x3b, 0xd5, 0x75, 0x25, 0xa3, 0xb4, 0x2e, 0xc2, 0x62, 0x7a, 0xde, 0x59, + 0x7c, 0x1e, 0x64, 0x35, 0x2a, 0x38, 0xd3, 0xd5, 0x62, 0x4e, 0x73, 0x08, 0x97, 0xfa, 0xb9, 0x05, + 0xfd, 0x1e, 0x13, 0xda, 0xc1, 0xd2, 0xb2, 0x58, 0xae, 0x24, 0x0f, 0xd3, 0xb6, 0x03, 0x96, 0x23, + 0xdb, 0x44, 0xa1, 0x8c, 0x48, 0x5d, 0xac, 0x36, 0x4a, 0x61, 0x66, 0x84, 0x7e, 0x32, 0x62, 0xc0, + 0x53, 0x39, 0x8f, 0xd3, 0x94, 0x23, 0x19, 0x47, 0x4b, 0xba, 0x5a, 0xf1, 0x33, 0x23, 0xab, 0xd0, + 0xa1, 0xbc, 0x04, 0x46, 0x58, 0x18, 0xd0, 0x64, 0x7b, 0x38, 0xfb, 0xfd, 0x8e, 0xdc, 0x37, 0x7f, + 0xa4, 0x71, 0xa6, 0x27, 0x5f, 0xaf, 0x99, 0xc8, 0xd9, 0x28, 0x1c, 0xed, 0x41, 0x7d, 0x77, 0xe2, + 0x3a, 0xfb, 0xd7, 0x80, 0x07, 0x3f, 0xfc, 0xf0, 0x43, 0x8f, 0x61, 0x39, 0x62, 0x07, 0xed, 0x35, + 0x2e, 0xed, 0x95, 0xf9, 0x0d, 0xb6, 0x93, 0x98, 0x82, 0x66, 0x84, 0x6e, 0xfe, 0xdf, 0xa7, 0x13, + 0x19, 0x4d, 0x68, 0x83, 0x00, 0xd5, 0x32, 0x4f, 0xa1, 0x02, 0x8a, 0xb2, 0x12, 0x7d, 0x25, 0x54, + 0xb5, 0x92, 0x20, 0x95, 0x51, 0xe9, 0x53, 0xf8, 0x49, 0x16, 0x4d, 0xcf, 0x64, 0x97, 0x96, 0x78, + 0x4e, 0x4a, 0x85, 0x90, 0xf9, 0x8a, 0x3c, 0xa2, 0xd3, 0xa0, 0x2f, 0xa6, 0xb0, 0xd3, 0xe2, 0x02, + 0x7f, 0x6a, 0x23, 0xf0, 0xf3, 0x8e, 0x26, 0x7f, 0xd5, 0x2d, 0x67, 0xc9, 0x44, 0x2a, 0x5d, 0x0e, + 0x47, 0x71, 0x9e, 0x67, 0xe0, 0xa8, 0x17, 0xc9, 0xf8, 0x6d, 0x7e, 0x93, 0xc1, 0x00, 0x36, 0x54, + 0xda, 0xba, 0xf8, 0x59, 0xad, 0xba, 0x44, 0xe2, 0xad, 0x4e, 0xdb, 0x6d, 0xf0, 0xdb, 0x34, 0x50, + 0xec, 0x50, 0x58, 0x7e, 0x4d, 0xd1, 0xcd, 0x6f, 0xb1, 0xd6, 0x93, 0x8f, 0x3f, 0xbd, 0x4c, 0x63, + 0x72, 0xb9, 0xb0, 0xae, 0xca, 0xca, 0xb6, 0x5c, 0xe7, 0xe2, 0x02, 0xb1, 0x60, 0x18, 0x49, 0x52, + 0xe5, 0x17, 0x0e, 0x33, 0x9d, 0x37, 0x54, 0xa2, 0xf4, 0x4b, 0x35, 0x47, 0x52, 0xa9, 0x5c, 0x80, + 0x2e, 0x2d, 0xfd, 0x4a, 0x13, 0x1c, 0x1c, 0x14, 0x5d, 0xba, 0x7c, 0x90, 0x8d, 0x95, 0x86, 0x85, + 0x20, 0x74, 0x3a, 0xa7, 0x58, 0x0e, 0x21, 0x40, 0x24, 0xeb, 0x35, 0xb6, 0xee, 0x89, 0xb2, 0x5e, + 0xfb, 0x2f, 0xb6, 0xda, 0x65, 0x1d, 0x03, 0x1f, 0xa4, 0x0c, 0xa6, 0x64, 0x0e, 0xb4, 0xb3, 0x07, + 0x81, 0x30, 0x4e, 0x56, 0xc5, 0x06, 0xe0, 0x65, 0xd2, 0xc7, 0xa4, 0x8a, 0xb5, 0x56, 0x0b, 0xac, + 0xa6, 0x3d, 0xad, 0x14, 0x7b, 0x86, 0x68, 0x16, 0x36, 0xc0, 0x01, 0xf3, 0x34, 0x91, 0xa4, 0x3c, + 0x09, 0xc5, 0xf5, 0x46, 0xc0, 0x62, 0x64, 0xa1, 0x2b, 0x9c, 0x93, 0xb2, 0x1e, 0x29, 0xb3, 0xf5, + 0x91, 0xa2, 0x4f, 0x5e, 0x93, 0x6b, 0x55, 0x40, 0x59, 0xf9, 0x70, 0x15, 0xc7, 0x79, 0xc4, 0x8e, + 0x6c, 0x37, 0x02, 0x16, 0x65, 0x4c, 0x80, 0x09, 0x1c, 0x38, 0x59, 0x48, 0x1e, 0x60, 0x4f, 0x61, + 0x97, 0x8c, 0xac, 0x29, 0x9c, 0x25, 0xb0, 0x19, 0xe2, 0x3d, 0xf0, 0x02, 0x8f, 0x00, 0xc8, 0x4a, + 0xba, 0x5b, 0x64, 0x81, 0x9f, 0x20, 0x12, 0x26, 0x0a, 0xdc, 0x33, 0x11, 0x41, 0x50, 0x8d, 0x39, + 0x25, 0x94, 0x35, 0x38, 0x3f, 0x91, 0xd9, 0xbb, 0x1d, 0x69, 0x10, 0xc6, 0x15, 0xbe, 0x8b, 0x80, + 0x77, 0x5f, 0xef, 0x16, 0x0e, 0x7d, 0x01, 0x0a, 0x48, 0xc1, 0xea, 0xc0, 0x6e, 0x39, 0x46, 0x78, + 0x26, 0x8b, 0x9b, 0x48, 0xe6, 0x05, 0xbb, 0x06, 0x66, 0x62, 0x91, 0xc2, 0x55, 0x8c, 0x82, 0x97, + 0xd8, 0x28, 0x9b, 0x8a, 0x21, 0xc6, 0xb5, 0x52, 0x76, 0x51, 0x8b, 0xee, 0x85, 0xda, 0xe6, 0xb1, + 0x01, 0x02, 0x1e, 0x4f, 0x51, 0x1d, 0xdd, 0x03, 0x8b, 0xc6, 0xd2, 0xd0, 0x16, 0x24, 0xaf, 0xb0, + 0xe6, 0xf6, 0x46, 0xee, 0x1f, 0x6e, 0x21, 0x22, 0xf1, 0x88, 0x97, 0x2e, 0x24, 0x60, 0xd0, 0xbf, + 0xc2, 0x45, 0x88, 0xc7, 0x6c, 0x21, 0x86, 0xbc, 0x81, 0xa9, 0x41, 0x7d, 0xa9, 0x7d, 0xef, 0x22, + 0xf8, 0xe0, 0x5a, 0x6b, 0x8c, 0x44, 0xce, 0x64, 0x68, 0x15, 0xdd, 0x0c, 0x84, 0x79, 0x8e, 0xb1, + 0xb4, 0xc2, 0xaa, 0xc0, 0x6c, 0xa7, 0x46, 0xaa, 0x89, 0x06, 0xdb, 0x13, 0x09, 0xc4, 0x60, 0x12, + 0x5c, 0x83, 0x1f, 0xb7, 0xb4, 0x16, 0xc6, 0x63, 0x40, 0xae, 0x52, 0x90, 0x3b, 0xee, 0xd5, 0xee, + 0x6c, 0x85, 0x66, 0xa2, 0xcb, 0x34, 0x70, 0xca, 0x05, 0x31, 0x69, 0x10, 0x81, 0x3d, 0x81, 0xa4, + 0x38, 0x99, 0x66, 0xef, 0x95, 0x99, 0x06, 0xd0, 0xe8, 0xe0, 0x60, 0x0a, 0x0c, 0x6a, 0x8f, 0x3f, + 0x82, 0xf5, 0x68, 0x81, 0xeb, 0x5a, 0xe4, 0xc0, 0x45, 0x14, 0x99, 0xb8, 0x61, 0x10, 0x09, 0x37, + 0x0d, 0xa6, 0xa3, 0x1d, 0x1e, 0xd3, 0x72, 0xdc, 0xac, 0x01, 0xcd, 0x7b, 0x17, 0x8e, 0x08, 0x3d, + 0xbf, 0x79, 0xa0, 0x1b, 0x7a, 0x5e, 0x93, 0x5f, 0x18, 0x82, 0x0b, 0x52, 0xf0, 0xa1, 0xd2, 0x53, + 0x43, 0xd9, 0x9d, 0x50, 0xa2, 0x8b, 0xf9, 0x13, 0x71, 0xd3, 0x96, 0x88, 0xdb, 0x6d, 0xde, 0xf0, + 0x7f, 0x61, 0x72, 0xd6, 0x97, 0xb3, 0x20, 0xb1, 0x00, 0x21, 0x96, 0xdc, 0xe1, 0x7b, 0x31, 0xb7, + 0xc2, 0x3e, 0xa3, 0x1d, 0x10, 0xe4, 0x78, 0xab, 0xbd, 0xae, 0x30, 0xaf, 0x95, 0xcb, 0x32, 0x41, + 0x63, 0xed, 0x99, 0x8a, 0x31, 0xbc, 0x12, 0x1d, 0xcf, 0x8d, 0x29, 0x9e, 0xbb, 0x39, 0x9b, 0x9c, + 0x8d, 0xcf, 0xbb, 0x94, 0x0e, 0x38, 0x0f, 0xf8, 0x91, 0xf3, 0x4b, 0x1b, 0x45, 0xc5, 0xd6, 0xc5, + 0xc1, 0xc1, 0x9c, 0x9d, 0xf2, 0x60, 0xae, 0x87, 0xd5, 0xce, 0x58, 0x25, 0x60, 0x73, 0x76, 0x3e, + 0x94, 0xb2, 0x9a, 0x59, 0xfa, 0x65, 0x66, 0xeb, 0x17, 0xb5, 0xda, 0x19, 0xb3, 0xdb, 0x49, 0x42, + 0x09, 0x91, 0xe9, 0x68, 0x66, 0xab, 0x14, 0x05, 0xc5, 0xb5, 0xea, 0xb8, 0x0a, 0xfc, 0x8d, 0x15, + 0xcc, 0xab, 0x18, 0x57, 0x4f, 0x03, 0x9e, 0xd8, 0x15, 0xe7, 0x4a, 0x81, 0x0a, 0x04, 0xd7, 0xa4, + 0x1a, 0x10, 0x94, 0x6b, 0xe7, 0x9b, 0xd0, 0x5f, 0x72, 0x78, 0x0e, 0x2c, 0xc2, 0x59, 0x9f, 0xc0, + 0x2c, 0x8d, 0xf1, 0xdf, 0x22, 0x30, 0xc1, 0x30, 0xac, 0x54, 0x1f, 0xc6, 0x20, 0x1e, 0xc5, 0xba, + 0xc2, 0xef, 0x13, 0x8e, 0x69, 0x1b, 0x8b, 0xca, 0x4b, 0xbc, 0x0e, 0xfa, 0xc3, 0xeb, 0xa7, 0x8b, + 0xe1, 0x75, 0xbb, 0xad, 0xa6, 0x5a, 0x06, 0xb3, 0xb3, 0xeb, 0x73, 0x71, 0x19, 0x2c, 0x77, 0x68, + 0x75, 0x1b, 0x00, 0x73, 0x97, 0xa3, 0xa5, 0x25, 0x27, 0x5b, 0x05, 0x74, 0x87, 0x07, 0xed, 0x5f, + 0x52, 0xac, 0xe8, 0xd3, 0x96, 0x86, 0x6a, 0x5f, 0xb7, 0x23, 0x77, 0xd2, 0x6e, 0x8b, 0xf9, 0xd9, + 0xed, 0x79, 0xb0, 0xc4, 0xd6, 0x2f, 0xa1, 0xe6, 0x2b, 0x7c, 0x2e, 0x6b, 0x7c, 0x8e, 0x5a, 0xc5, + 0x7a, 0xbd, 0xac, 0x51, 0xd5, 0x05, 0x49, 0xae, 0x5d, 0xcf, 0x2f, 0x58, 0x58, 0x6e, 0xce, 0xa6, + 0xed, 0x36, 0x01, 0xd8, 0xe8, 0x2d, 0x5c, 0xec, 0x6c, 0xe1, 0x42, 0x6d, 0x21, 0x85, 0xb3, 0x88, + 0xe5, 0x47, 0x2c, 0xc2, 0xac, 0x52, 0x6f, 0x03, 0x8e, 0x69, 0x6b, 0xe3, 0x73, 0xeb, 0x4d, 0x2c, + 0x8a, 0xd2, 0xba, 0x00, 0x3f, 0xe2, 0x07, 0xb5, 0x4a, 0xd5, 0x26, 0x26, 0x9d, 0x4e, 0xed, 0x92, + 0x8e, 0x9f, 0x4e, 0x75, 0xf2, 0x60, 0x3c, 0x4c, 0x9e, 0xc2, 0x94, 0x61, 0x32, 0x3b, 0xba, 0xb9, + 0x61, 0x1f, 0xd9, 0xbd, 0x83, 0xaa, 0xa2, 0x47, 0x71, 0x0c, 0x85, 0xbb, 0xcb, 0x55, 0xee, 0x55, + 0x90, 0x7a, 0x0d, 0x96, 0xec, 0x6a, 0x54, 0x81, 0xb9, 0xab, 0xf1, 0xe1, 0xef, 0x31, 0xe5, 0x55, + 0xa5, 0xf9, 0x46, 0xad, 0xbb, 0x66, 0x1d, 0x7e, 0x70, 0x70, 0xe2, 0xde, 0x89, 0xba, 0xa3, 0xe7, + 0x1f, 0xaf, 0xd7, 0xf7, 0xf4, 0x85, 0x04, 0x58, 0x1d, 0xbd, 0x55, 0x14, 0x80, 0x9f, 0x28, 0x00, + 0xd0, 0xfb, 0x4f, 0xd0, 0x61, 0xda, 0x19, 0x40, 0x8d, 0x75, 0x3a, 0x5c, 0x18, 0x1f, 0x1c, 0x8c, + 0xdb, 0xed, 0xe1, 0x25, 0x98, 0xe2, 0x6a, 0x13, 0xc1, 0x7d, 0x88, 0xc0, 0x92, 0xac, 0x50, 0x43, + 0xc5, 0x34, 0x50, 0x79, 0x11, 0x19, 0x61, 0xf5, 0x13, 0x56, 0x19, 0x11, 0x72, 0xee, 0x6c, 0xf5, + 0x12, 0x79, 0x7e, 0x04, 0x78, 0xe1, 0x96, 0xe4, 0xbc, 0x83, 0xde, 0xa2, 0x9c, 0x55, 0x56, 0xc6, + 0x85, 0x7c, 0x1e, 0x93, 0x3e, 0xc5, 0x04, 0xd0, 0x65, 0xac, 0x4a, 0xb0, 0x29, 0x71, 0x4c, 0x34, + 0x9c, 0xd4, 0x74, 0x27, 0x17, 0x7a, 0xee, 0x59, 0x94, 0xbc, 0x06, 0x09, 0xde, 0xbb, 0xf4, 0x4b, + 0x8a, 0x5b, 0xd9, 0xad, 0xf1, 0x53, 0x38, 0x1e, 0x75, 0x27, 0x10, 0x1a, 0xac, 0xd4, 0xe9, 0x9c, + 0x7b, 0xd4, 0x35, 0xa2, 0x7e, 0x1b, 0x28, 0xae, 0x39, 0x4b, 0xdb, 0x85, 0x91, 0xc5, 0x9b, 0xee, + 0x3d, 0x51, 0x8c, 0x27, 0xb6, 0x45, 0x54, 0xc9, 0x4c, 0xc6, 0x53, 0xe9, 0xb0, 0xb6, 0xce, 0x68, + 0x21, 0x94, 0x55, 0x00, 0x03, 0x0e, 0x6b, 0xd7, 0x6b, 0x8a, 0x47, 0x33, 0x41, 0xcf, 0xfc, 0xc7, + 0x20, 0x7a, 0xea, 0xd5, 0xe3, 0x63, 0xcf, 0x31, 0x0a, 0x91, 0x2c, 0x0b, 0xf9, 0xaa, 0x89, 0x1d, + 0x42, 0xa1, 0x42, 0xcd, 0x03, 0xaf, 0x9e, 0x40, 0x60, 0x47, 0x0e, 0xab, 0x37, 0xd3, 0x5b, 0x5f, + 0x29, 0xe7, 0xe2, 0x48, 0x52, 0xae, 0x88, 0x43, 0xea, 0xfd, 0xc9, 0x69, 0x38, 0xa6, 0xa6, 0xdd, + 0xc7, 0xb6, 0x3a, 0xbd, 0xf1, 0xa0, 0x38, 0x4a, 0x91, 0xd4, 0xfe, 0xdc, 0x7b, 0x2b, 0xeb, 0x17, + 0xd8, 0xce, 0xc3, 0x30, 0x1f, 0xbd, 0x71, 0x73, 0xc8, 0xb4, 0x76, 0x38, 0xb7, 0x35, 0x06, 0x8c, + 0xbe, 0xbb, 0x53, 0x05, 0x7b, 0x31, 0xd1, 0x71, 0x34, 0xc7, 0x33, 0x15, 0xae, 0x76, 0xfa, 0xad, + 0xd7, 0x14, 0xef, 0x8b, 0x02, 0x7f, 0x2c, 0x9f, 0x98, 0x8a, 0x6c, 0xbb, 0x24, 0xfa, 0xc3, 0x9d, + 0xd7, 0xb6, 0x4b, 0x0e, 0xad, 0xcc, 0x00, 0xdd, 0x8c, 0x04, 0xd5, 0x34, 0x53, 0x0d, 0xb5, 0x35, + 0x82, 0xc5, 0x8f, 0x37, 0x1b, 0x15, 0x0f, 0xd9, 0x99, 0x9b, 0x0f, 0x5b, 0x54, 0x84, 0x7b, 0x61, + 0x52, 0x6e, 0x4c, 0x10, 0x02, 0x97, 0xcb, 0x9c, 0xa4, 0x8f, 0xcd, 0x9e, 0x29, 0x60, 0x17, 0x94, + 0x10, 0x1e, 0x51, 0x4a, 0x30, 0xbe, 0x7d, 0x20, 0x5d, 0x02, 0x21, 0x96, 0x5d, 0xfa, 0xb2, 0x9e, + 0x9b, 0x31, 0x40, 0xe0, 0x44, 0xb7, 0x2e, 0xb9, 0xd5, 0xdb, 0x72, 0x8e, 0x40, 0x08, 0x0d, 0x23, + 0xb8, 0x86, 0x77, 0x41, 0x46, 0x0b, 0x9c, 0x1d, 0x9e, 0x15, 0xe7, 0x3b, 0x3e, 0x94, 0x34, 0x7e, + 0x5e, 0x56, 0xfb, 0x34, 0xdc, 0xcd, 0x94, 0x44, 0xc8, 0x0a, 0x03, 0x21, 0x5d, 0x21, 0x06, 0x88, + 0x81, 0x8c, 0xab, 0x92, 0xd5, 0x58, 0xbb, 0x36, 0x7b, 0xb4, 0x63, 0x1c, 0x6b, 0x1a, 0x34, 0xe7, + 0x16, 0x92, 0xff, 0xb0, 0x6d, 0x0f, 0x67, 0xa1, 0x4a, 0xfa, 0xc6, 0x81, 0x8a, 0x76, 0x75, 0x81, + 0xfc, 0x55, 0xa2, 0x18, 0xfd, 0x2b, 0xb6, 0x31, 0xd3, 0x54, 0x6b, 0xff, 0x40, 0x65, 0x0a, 0xab, + 0x0c, 0x2d, 0x35, 0x55, 0x05, 0x6a, 0xa9, 0x72, 0x3e, 0xd2, 0x5e, 0x42, 0x77, 0x1a, 0xcb, 0x17, + 0x71, 0x91, 0x2c, 0xe2, 0xf1, 0x09, 0xbd, 0x0f, 0xf0, 0x63, 0x91, 0x5f, 0x73, 0x02, 0x49, 0x79, + 0xed, 0xe4, 0xaa, 0xc1, 0x73, 0x1c, 0x59, 0x21, 0xd3, 0xaf, 0x49, 0x9a, 0xee, 0x07, 0x52, 0x55, + 0xad, 0xcb, 0x59, 0x44, 0xbb, 0xfa, 0x43, 0x1c, 0xc5, 0x80, 0xaf, 0xa1, 0x7e, 0xa6, 0x51, 0x45, + 0x8d, 0x94, 0x72, 0xc9, 0x5a, 0x7a, 0x99, 0x92, 0xad, 0xbd, 0xab, 0xb8, 0xeb, 0x58, 0x95, 0x19, + 0x1f, 0x56, 0xb9, 0xee, 0x09, 0x66, 0x33, 0x8f, 0x01, 0xf9, 0x9a, 0xdc, 0x8b, 0x41, 0x57, 0x63, + 0xb8, 0xc4, 0xdc, 0x8a, 0x5f, 0xd5, 0x85, 0x2a, 0x62, 0x61, 0xa3, 0x78, 0x20, 0x38, 0x6b, 0x86, + 0x89, 0x07, 0xea, 0x97, 0x63, 0xf3, 0xa4, 0x5b, 0x2e, 0xb3, 0xa8, 0xf2, 0xbc, 0x7f, 0xe1, 0xcb, + 0x45, 0xbc, 0x23, 0xc2, 0xd2, 0x88, 0x52, 0x91, 0xfe, 0x6b, 0x90, 0x70, 0x00, 0xf2, 0x51, 0xb2, + 0x4a, 0x93, 0x49, 0x6c, 0x09, 0xd2, 0xeb, 0x3a, 0x5c, 0x00, 0xdf, 0xb5, 0xea, 0x59, 0x75, 0xf8, + 0x20, 0xd8, 0xdf, 0x30, 0x0b, 0x44, 0x28, 0x40, 0xd9, 0x21, 0xcc, 0x03, 0xb3, 0x5a, 0xed, 0x8d, + 0x3d, 0x11, 0x6b, 0x6b, 0x21, 0x7c, 0x11, 0x55, 0xc1, 0x24, 0x5c, 0xaf, 0x53, 0xf8, 0x25, 0x3b, + 0x28, 0x8b, 0xe0, 0xa5, 0xa8, 0x85, 0xc2, 0x55, 0x91, 0x35, 0x13, 0x2f, 0x82, 0xc9, 0x7a, 0x3d, + 0x86, 0xda, 0xd9, 0x8a, 0x59, 0x38, 0xbc, 0xbc, 0x0e, 0xe6, 0xa4, 0xf5, 0xbf, 0x9a, 0x5d, 0xd2, + 0xe0, 0xad, 0xcb, 0xc9, 0xcb, 0x54, 0xd3, 0xe1, 0x8b, 0x83, 0x5c, 0x38, 0x56, 0x1e, 0x75, 0xe6, + 0x2d, 0xc2, 0x42, 0x8b, 0x89, 0x26, 0x36, 0xd1, 0x64, 0x56, 0x35, 0xdc, 0x58, 0x74, 0x9d, 0x8b, + 0x23, 0xa5, 0xbd, 0xf8, 0x4b, 0x35, 0x37, 0xe9, 0x78, 0x87, 0x20, 0x9a, 0x58, 0xf7, 0xb4, 0xba, + 0xec, 0xca, 0x79, 0x23, 0x8a, 0xfb, 0x76, 0xf9, 0xd4, 0x8c, 0x6f, 0xac, 0xd6, 0x03, 0x2b, 0x86, + 0x09, 0xeb, 0x55, 0x5b, 0x8b, 0x8b, 0xb6, 0x98, 0xce, 0x26, 0x4a, 0xb0, 0xcb, 0xb2, 0x95, 0x52, + 0xe1, 0x80, 0xa7, 0x4e, 0x5b, 0x0f, 0x44, 0xeb, 0x02, 0x0a, 0x23, 0x90, 0x5a, 0x4d, 0xd5, 0x13, + 0x03, 0x8b, 0xac, 0x75, 0x8f, 0x2b, 0xb1, 0x88, 0x0c, 0xc6, 0x9b, 0xda, 0x5d, 0x8a, 0x76, 0x27, + 0xb4, 0x1d, 0x34, 0x9c, 0x64, 0xe1, 0x1c, 0x08, 0xd1, 0xc6, 0xdd, 0xec, 0xd4, 0xbd, 0x0e, 0xee, + 0x6d, 0x75, 0x67, 0x30, 0x47, 0x2a, 0x5d, 0xb1, 0x14, 0x97, 0x70, 0x41, 0x39, 0x19, 0xf1, 0x85, + 0xe0, 0xf8, 0x56, 0x71, 0xf1, 0x1d, 0x82, 0xd7, 0xc2, 0x1b, 0xc2, 0x63, 0x9b, 0xc2, 0xd6, 0x27, + 0x3b, 0x9a, 0xf5, 0xf6, 0xe0, 0xe0, 0x8e, 0x8f, 0x3a, 0x38, 0xd0, 0xc0, 0xc3, 0xe8, 0x0f, 0x18, + 0xc2, 0x3b, 0xc8, 0x0d, 0xfb, 0x04, 0xbe, 0xbb, 0x0c, 0x12, 0x61, 0xb3, 0x63, 0x90, 0x20, 0xf6, + 0xbc, 0x45, 0x8f, 0x88, 0xc2, 0xf7, 0x0a, 0x71, 0xf5, 0x23, 0x71, 0x70, 0xb2, 0x17, 0x1a, 0x43, + 0xd7, 0x2b, 0xc0, 0x7d, 0x05, 0x58, 0xbc, 0x46, 0x89, 0xc2, 0x50, 0x4a, 0x04, 0xc0, 0xcb, 0x4e, + 0x58, 0x1c, 0x54, 0x92, 0xaa, 0x0c, 0x16, 0x02, 0xf3, 0xd2, 0x72, 0xdd, 0x72, 0x4b, 0x16, 0xcc, + 0xd1, 0xd3, 0x62, 0xbd, 0x1e, 0x70, 0x1e, 0x95, 0x7a, 0x34, 0x05, 0xad, 0x04, 0xf2, 0x19, 0xe2, + 0x56, 0x0a, 0x76, 0x73, 0x44, 0x9b, 0x13, 0xb1, 0x80, 0xaf, 0x6b, 0x45, 0x6c, 0x3c, 0x2f, 0xe7, + 0xe5, 0xe1, 0xcc, 0x53, 0x24, 0x00, 0xd4, 0xe0, 0x67, 0xaa, 0x70, 0x76, 0x15, 0xd8, 0x7d, 0x87, + 0x57, 0xaa, 0x0f, 0x7e, 0xdc, 0xab, 0xed, 0x50, 0xef, 0x52, 0x2c, 0x60, 0xf1, 0xc8, 0x93, 0x6f, + 0x08, 0x9b, 0x17, 0x2a, 0x6c, 0x26, 0x4f, 0x7d, 0x79, 0x70, 0xf0, 0xc6, 0x5d, 0x72, 0xe6, 0x94, + 0xf6, 0x19, 0x5c, 0x62, 0xe5, 0xad, 0xac, 0xce, 0x94, 0x1d, 0x03, 0x3f, 0x27, 0x81, 0x1c, 0x9e, + 0x04, 0x27, 0x7b, 0xa8, 0x1b, 0x7a, 0xee, 0x71, 0x70, 0xe2, 0xe9, 0x81, 0xc3, 0x4b, 0x7b, 0xa6, + 0x63, 0x71, 0x79, 0x8f, 0x53, 0x7b, 0x6c, 0x13, 0x7a, 0xb3, 0xa1, 0x89, 0x5a, 0xd0, 0x2e, 0xf9, + 0xe8, 0x95, 0x39, 0x83, 0xf1, 0x2f, 0x28, 0x69, 0x6a, 0x67, 0xdf, 0x1a, 0x84, 0xae, 0xaa, 0x25, + 0x16, 0x14, 0xd7, 0x14, 0x04, 0x5f, 0x28, 0x59, 0x38, 0x86, 0x95, 0xa7, 0xf7, 0xbd, 0xaa, 0xa3, + 0x4d, 0xaf, 0xa1, 0x89, 0x4f, 0x71, 0x94, 0x43, 0x20, 0xbd, 0xe1, 0x29, 0x9c, 0x36, 0x4e, 0x93, + 0x6d, 0x6a, 0x1d, 0xfc, 0xc6, 0x3e, 0xd0, 0xa0, 0x2d, 0x0e, 0x77, 0xed, 0xeb, 0xb6, 0x02, 0xc8, + 0xae, 0x1b, 0xcd, 0x9d, 0xae, 0x77, 0x49, 0xf6, 0x2e, 0x8d, 0x24, 0x0f, 0xef, 0x77, 0xd5, 0x62, + 0xed, 0x94, 0xd3, 0x81, 0xeb, 0x9e, 0xb7, 0x16, 0xdf, 0xeb, 0xad, 0xbd, 0x73, 0x2d, 0x65, 0x11, + 0xc3, 0xe1, 0x37, 0xc8, 0x84, 0x8f, 0x16, 0x6f, 0x19, 0x1a, 0xee, 0x5f, 0x6f, 0x73, 0xa9, 0x7c, + 0x47, 0x95, 0x58, 0x35, 0x87, 0x62, 0xc2, 0xf8, 0x20, 0xac, 0x86, 0x62, 0x55, 0x54, 0x2a, 0x4d, + 0xaa, 0x82, 0xd2, 0x6a, 0xf5, 0xe3, 0x7a, 0x4d, 0xe7, 0x51, 0x0c, 0x64, 0x07, 0xd5, 0xf0, 0xe7, + 0xea, 0xd9, 0x2e, 0xad, 0x3c, 0x98, 0xf1, 0x34, 0xd4, 0xd9, 0xed, 0x6a, 0x53, 0x1f, 0x79, 0x14, + 0x08, 0x18, 0x8b, 0xa7, 0x26, 0x2a, 0x1e, 0x16, 0x08, 0xe5, 0x9a, 0x0e, 0x04, 0xe0, 0x67, 0x31, + 0xa8, 0x1a, 0xfc, 0xed, 0xff, 0x0e, 0xbe, 0xf1, 0x54, 0xa1, 0x9a, 0xe1, 0xad, 0xbb, 0xac, 0xdd, + 0x4b, 0xb1, 0xa2, 0x0b, 0xda, 0xb4, 0x6b, 0x7f, 0xfb, 0x22, 0x81, 0x46, 0x53, 0x65, 0x61, 0xdd, + 0xed, 0x0a, 0x0b, 0x5d, 0x9e, 0x8d, 0x45, 0xad, 0x9e, 0xed, 0xd6, 0x7b, 0x0e, 0x5f, 0xeb, 0x2e, + 0x16, 0x49, 0xe0, 0x4a, 0x79, 0x82, 0x84, 0xa3, 0x09, 0xfb, 0xfa, 0x74, 0xde, 0x13, 0xa5, 0xba, + 0xdb, 0xbc, 0x11, 0xc0, 0x42, 0xa4, 0xb5, 0xb7, 0xb5, 0x7c, 0x2c, 0xfe, 0xb3, 0x10, 0x24, 0x29, + 0x46, 0xbe, 0xa5, 0x70, 0x04, 0x18, 0xaa, 0x4b, 0x3d, 0xdc, 0x5b, 0x6d, 0x36, 0xca, 0x0a, 0xdc, + 0x05, 0x0e, 0xf8, 0xbd, 0x8c, 0xc7, 0xf9, 0x6d, 0xe6, 0x88, 0x2b, 0x5d, 0x22, 0xd4, 0x3a, 0x08, + 0xb9, 0x55, 0xe9, 0x66, 0xee, 0x88, 0x17, 0x74, 0x4d, 0xe4, 0x26, 0x9a, 0x61, 0x33, 0x85, 0x74, + 0xc4, 0xaf, 0xba, 0xa8, 0x3a, 0x3e, 0xd7, 0x25, 0xcc, 0xe2, 0x20, 0x32, 0xa8, 0xa6, 0xa1, 0x13, + 0x6d, 0x43, 0x6a, 0x49, 0x6b, 0x8e, 0xb5, 0x04, 0xd3, 0xba, 0xa4, 0xc6, 0xe9, 0x4d, 0x32, 0x0e, + 0xdc, 0xb7, 0xa1, 0x9c, 0x75, 0x8b, 0x30, 0x1b, 0xe7, 0xd7, 0xae, 0xd7, 0x1e, 0x78, 0x5d, 0x99, + 0xeb, 0x3c, 0xdf, 0xa3, 0x27, 0xf6, 0x79, 0xd3, 0x63, 0x6f, 0x63, 0x8e, 0x32, 0xd5, 0xb1, 0xf0, + 0x05, 0x53, 0xf9, 0xe2, 0x82, 0x64, 0xc8, 0xb5, 0x03, 0x8c, 0x40, 0x25, 0x0e, 0x75, 0x26, 0xcf, + 0xe5, 0x63, 0xcd, 0xaa, 0x71, 0x37, 0x7c, 0xf0, 0xac, 0x58, 0x64, 0xef, 0x14, 0xc1, 0xbe, 0xc9, + 0x71, 0xa9, 0x48, 0xca, 0x1e, 0xd7, 0xd9, 0x9d, 0x78, 0x71, 0xce, 0x7b, 0x10, 0xab, 0x79, 0x58, + 0x96, 0xf0, 0x84, 0xfc, 0xd6, 0x60, 0xe3, 0x6d, 0x84, 0x6c, 0x02, 0x67, 0x29, 0x17, 0x1b, 0xe2, + 0x6d, 0x23, 0xc4, 0x1d, 0x20, 0x33, 0x60, 0x26, 0x55, 0xcc, 0x1e, 0x6c, 0xf1, 0x00, 0x33, 0x2b, + 0xad, 0x55, 0x1d, 0x12, 0xbb, 0x8a, 0xa8, 0xa4, 0x01, 0x15, 0x41, 0x4a, 0xf2, 0xf1, 0xf9, 0x1e, + 0xdf, 0xf8, 0x54, 0x55, 0x9c, 0xf5, 0xcf, 0x7d, 0x04, 0x28, 0x94, 0x27, 0x4c, 0x13, 0x8c, 0xfc, + 0x4d, 0x64, 0xd5, 0xf3, 0xbf, 0x11, 0xb0, 0x55, 0xab, 0x21, 0x17, 0xe2, 0x39, 0xbd, 0x81, 0x0b, + 0xbc, 0x1f, 0x73, 0x33, 0xbc, 0x7a, 0x9a, 0xa1, 0xbc, 0x4d, 0xf8, 0x30, 0x8d, 0x8f, 0x72, 0xbc, + 0x55, 0x84, 0xbe, 0x0f, 0xee, 0x7c, 0xfe, 0x79, 0xe1, 0x5f, 0xba, 0x26, 0x87, 0x2a, 0xce, 0xae, + 0xc4, 0xaf, 0xe2, 0x58, 0x3c, 0x6f, 0xc2, 0x91, 0x22, 0xbd, 0xda, 0xd6, 0x6b, 0xba, 0xee, 0xe6, + 0xaa, 0x93, 0x19, 0xe7, 0xe4, 0xf4, 0xd9, 0x87, 0x53, 0xc7, 0x53, 0x39, 0x91, 0x21, 0x03, 0xbd, + 0x52, 0xb0, 0x7f, 0xf5, 0xef, 0x1b, 0xf3, 0xf6, 0xfd, 0xc7, 0x97, 0xdb, 0x43, 0x8e, 0xd5, 0x90, + 0xe7, 0xf7, 0x0e, 0x79, 0xf9, 0xee, 0x85, 0xe3, 0x89, 0xdb, 0xaf, 0x5b, 0xec, 0x06, 0xc4, 0xd8, + 0xc0, 0xe8, 0xd6, 0x61, 0xee, 0xc7, 0xda, 0xd6, 0xe8, 0x77, 0x02, 0xb3, 0x70, 0x91, 0x4c, 0x43, + 0x72, 0x8b, 0xe9, 0x8b, 0xed, 0xcf, 0xa6, 0x04, 0x33, 0x0f, 0x7a, 0xbf, 0xbb, 0xee, 0xa8, 0x15, + 0xcd, 0xe0, 0x1a, 0xc7, 0x6b, 0xac, 0xa2, 0x80, 0x92, 0xf3, 0xba, 0xde, 0x61, 0x19, 0x4e, 0xc2, + 0x22, 0xe9, 0x25, 0xea, 0xf0, 0x17, 0xac, 0x9b, 0x05, 0xbd, 0xe4, 0xe7, 0x19, 0xf8, 0x64, 0x9d, + 0xfc, 0x9c, 0x8f, 0xf1, 0x27, 0x1c, 0x5b, 0xad, 0x45, 0xb0, 0xf3, 0xe6, 0xa1, 0x89, 0x4a, 0xe1, + 0x91, 0x64, 0xa3, 0x42, 0x31, 0x4a, 0x94, 0xa7, 0x6d, 0xa7, 0xd7, 0x73, 0xda, 0x45, 0x77, 0x96, + 0x97, 0x12, 0x3f, 0x73, 0x08, 0x15, 0x25, 0x6d, 0xf1, 0x58, 0xc6, 0x61, 0x11, 0xcd, 0xda, 0xd2, + 0xb7, 0x6e, 0x90, 0xfc, 0xb8, 0x7f, 0xaa, 0x54, 0x74, 0xb2, 0xa7, 0xc1, 0xe0, 0xfb, 0xfe, 0xa8, + 0xef, 0x0f, 0xaa, 0xc8, 0xf7, 0x30, 0x60, 0xe9, 0xfc, 0xf9, 0x75, 0x0f, 0x2d, 0xa2, 0xd8, 0x2e, + 0x3a, 0x6f, 0x1f, 0x38, 0x6d, 0x57, 0xb6, 0xf3, 0x43, 0xae, 0x8d, 0xf2, 0x12, 0x3e, 0xa2, 0xd7, + 0x76, 0xa8, 0x36, 0x36, 0xb5, 0x65, 0x92, 0xe9, 0xda, 0x67, 0xa8, 0xcf, 0xb9, 0x95, 0xfe, 0xf6, + 0xf1, 0x9b, 0xe8, 0xdf, 0x6d, 0x18, 0x59, 0x23, 0x8c, 0xcc, 0x8e, 0xb9, 0x1e, 0xda, 0xf6, 0xbe, + 0x10, 0x64, 0x9d, 0x6f, 0x8a, 0xd4, 0xac, 0x7a, 0xee, 0xf2, 0x59, 0x82, 0x58, 0xf1, 0x31, 0xa5, + 0xef, 0x24, 0x05, 0x94, 0x84, 0x62, 0x04, 0x47, 0xdc, 0x21, 0x48, 0xb8, 0x13, 0x4b, 0xfc, 0x5d, + 0x0a, 0xf5, 0x6d, 0xf4, 0x55, 0xf5, 0xdd, 0x5b, 0x87, 0x3f, 0x77, 0x85, 0x5e, 0xa0, 0x3a, 0x62, + 0x44, 0xc0, 0x01, 0x41, 0x1d, 0xa1, 0xb5, 0x09, 0x71, 0xc5, 0x34, 0x23, 0xed, 0xbf, 0xe2, 0x53, + 0xd3, 0x57, 0xb0, 0xd0, 0xfe, 0x47, 0xf8, 0x01, 0x24, 0xaf, 0x79, 0x91, 0x4c, 0x13, 0x8a, 0x75, + 0x5b, 0x6a, 0x60, 0x94, 0x14, 0x11, 0x4d, 0xd7, 0xb0, 0x86, 0x8b, 0x0b, 0x4e, 0x42, 0x39, 0xa2, + 0xf0, 0x63, 0x41, 0xdf, 0x75, 0xf2, 0x1d, 0x7a, 0xed, 0xda, 0xe1, 0x14, 0x67, 0x7e, 0x15, 0xab, + 0x17, 0xbf, 0x1d, 0xff, 0x48, 0xa8, 0xb2, 0xef, 0xd0, 0xab, 0xe9, 0xce, 0xe6, 0xeb, 0x60, 0xf3, + 0x57, 0x72, 0x18, 0x76, 0xe7, 0xe8, 0x2b, 0xa1, 0x4f, 0x26, 0x13, 0x40, 0xf7, 0x36, 0x0f, 0xb7, + 0xee, 0x9b, 0x04, 0xab, 0x3b, 0xbf, 0x0f, 0x44, 0x81, 0xec, 0xfe, 0xf7, 0x02, 0xe8, 0xe5, 0x3c, + 0xb4, 0x50, 0x1b, 0xf5, 0x4d, 0xe3, 0x66, 0xc3, 0x5a, 0xe7, 0xa7, 0xe0, 0x59, 0x51, 0x84, 0x4b, + 0x4a, 0x4c, 0xa6, 0x4b, 0xf6, 0x89, 0xc4, 0x4a, 0xe7, 0xc9, 0x1f, 0x3d, 0xe9, 0x6f, 0xbc, 0xee, + 0x75, 0x38, 0x77, 0xb7, 0x0d, 0x70, 0x75, 0x2d, 0xc5, 0x13, 0x7f, 0x6d, 0x29, 0xb6, 0x8a, 0xca, + 0xb1, 0x4b, 0x5a, 0x4e, 0x81, 0x64, 0xc9, 0xac, 0x2e, 0xc2, 0x55, 0x96, 0x80, 0x62, 0xa6, 0xd8, + 0xb2, 0x04, 0x92, 0x2c, 0x41, 0x7c, 0xaf, 0x25, 0x90, 0x5b, 0xa9, 0xa7, 0x1d, 0x4b, 0x10, 0xdb, + 0x96, 0xe0, 0xa2, 0xfa, 0xae, 0xc2, 0xb3, 0x6c, 0x0a, 0x27, 0x72, 0x7b, 0xed, 0xda, 0x25, 0xac, + 0xcc, 0x7a, 0xf7, 0x76, 0x16, 0xc7, 0x29, 0xf7, 0xd4, 0x4c, 0x08, 0x7b, 0x44, 0xb7, 0x61, 0xf2, + 0xe8, 0xea, 0x36, 0x29, 0x39, 0x9f, 0xb8, 0xdb, 0xfb, 0x45, 0x52, 0xc4, 0x0c, 0x72, 0xd4, 0x01, + 0x8a, 0xda, 0xb2, 0xe3, 0xc6, 0xa3, 0x4e, 0xee, 0xc3, 0xad, 0xcc, 0x3b, 0xd2, 0xfb, 0x96, 0xea, + 0xf0, 0x1f, 0x3f, 0x6c, 0x84, 0xb5, 0x25, 0x93, 0xec, 0xb2, 0x51, 0xa6, 0x45, 0x81, 0x70, 0x44, + 0xb2, 0xc0, 0x24, 0x16, 0x74, 0xb5, 0x48, 0x7d, 0x09, 0xe1, 0x57, 0x2e, 0x53, 0x04, 0xaa, 0xb8, + 0xe4, 0x03, 0x7f, 0x18, 0x41, 0x24, 0x9c, 0x80, 0x48, 0xa1, 0xb7, 0x66, 0xe5, 0x42, 0x94, 0x41, + 0xde, 0x3b, 0xea, 0x64, 0x94, 0xaa, 0x60, 0xd7, 0x62, 0x1b, 0x01, 0x6e, 0xd2, 0x9d, 0x51, 0xb8, + 0x73, 0xe8, 0x5a, 0x1a, 0x00, 0xae, 0x2a, 0xe5, 0x50, 0x7a, 0x83, 0x7e, 0xff, 0xd0, 0x2d, 0x3b, + 0x74, 0x98, 0xa5, 0xbe, 0x69, 0x03, 0x5d, 0xe2, 0x89, 0x28, 0x28, 0xdb, 0x99, 0x98, 0xd1, 0xdf, + 0xcf, 0x4a, 0x26, 0x63, 0xc3, 0x11, 0xea, 0x73, 0x06, 0xb9, 0xd0, 0xdf, 0xd4, 0xc8, 0xef, 0x97, + 0x4e, 0x61, 0xbe, 0x65, 0xe0, 0xf0, 0x37, 0x14, 0x48, 0x5a, 0x01, 0x18, 0xbc, 0x5b, 0x3a, 0xec, + 0x31, 0x53, 0x89, 0xbe, 0xfd, 0x10, 0xa6, 0x3f, 0xd1, 0x0f, 0xbd, 0x5c, 0x24, 0x56, 0xc9, 0xd8, + 0x37, 0x2e, 0x07, 0x77, 0x2f, 0xe9, 0x15, 0x2d, 0xb1, 0xca, 0x27, 0x13, 0xba, 0xdb, 0xed, 0xf4, + 0xbf, 0x65, 0x09, 0xc9, 0xe7, 0xea, 0x9b, 0x13, 0x4e, 0x25, 0x16, 0x0d, 0x7d, 0xe9, 0x7b, 0x92, + 0x8d, 0xbd, 0x75, 0x9d, 0xfe, 0x56, 0x01, 0x6a, 0x49, 0x6a, 0x3d, 0x06, 0xd1, 0xb8, 0x69, 0x48, + 0xed, 0xcd, 0xbe, 0x64, 0x96, 0xb6, 0xd8, 0x6e, 0xc4, 0x4f, 0x3b, 0xb2, 0x53, 0x49, 0x0e, 0xa0, + 0x92, 0x96, 0x07, 0x60, 0x3a, 0x24, 0x92, 0x62, 0xec, 0xff, 0xe8, 0x46, 0x62, 0x26, 0xca, 0xde, + 0x91, 0x80, 0xe7, 0xdf, 0x1e, 0x74, 0x1f, 0x7b, 0x95, 0x90, 0xcf, 0xca, 0xd4, 0x75, 0xda, 0x7b, + 0x7c, 0x0d, 0x70, 0x6d, 0x47, 0xf0, 0x17, 0x32, 0x05, 0x7d, 0x90, 0xd8, 0xc3, 0x82, 0x37, 0x6a, + 0xc5, 0x8d, 0x5a, 0x46, 0x2f, 0xbb, 0x0c, 0xa5, 0xfe, 0x74, 0x9b, 0x23, 0x22, 0xd8, 0x7f, 0x11, + 0x2d, 0x7d, 0x30, 0x58, 0xb5, 0x74, 0xfe, 0x16, 0x5e, 0xfb, 0xa3, 0xeb, 0x7c, 0xe3, 0xb4, 0x0d, + 0xd6, 0x31, 0x11, 0x41, 0x87, 0xae, 0x64, 0x20, 0x6f, 0xcc, 0x8b, 0xeb, 0xf7, 0xab, 0x34, 0x3d, + 0x59, 0x6a, 0x7a, 0x36, 0xcf, 0xc5, 0xca, 0x51, 0x54, 0xdf, 0x87, 0xe8, 0x24, 0xdd, 0x05, 0x31, + 0xe4, 0xe6, 0x8b, 0x9b, 0x50, 0xb2, 0xd1, 0x0c, 0x54, 0xa9, 0x4c, 0x8d, 0x3c, 0x23, 0x46, 0x7c, + 0x71, 0x7d, 0x97, 0x5a, 0x19, 0x4f, 0xf4, 0x50, 0xac, 0x0a, 0xbf, 0x60, 0x2d, 0x69, 0x84, 0xec, + 0x64, 0x31, 0x35, 0xca, 0xd2, 0x54, 0xbd, 0xe7, 0x22, 0x4c, 0x50, 0xd4, 0x4e, 0x6b, 0x7b, 0x17, + 0x22, 0xf8, 0xf7, 0x67, 0xa6, 0x86, 0x6c, 0x5d, 0x48, 0x34, 0xd8, 0x16, 0x7a, 0xcb, 0x8f, 0x09, + 0xee, 0xbb, 0xa7, 0x90, 0x77, 0xe9, 0x7b, 0x25, 0x10, 0xeb, 0x9c, 0xbe, 0x14, 0x42, 0x57, 0x14, + 0x2a, 0x95, 0x03, 0xa9, 0x2e, 0x95, 0x5a, 0x00, 0x73, 0xa4, 0x41, 0xd8, 0x29, 0x2b, 0x59, 0x2d, + 0xb7, 0x94, 0x02, 0x8a, 0x96, 0xce, 0x18, 0x4a, 0x74, 0x75, 0x65, 0xa7, 0x40, 0xd0, 0x42, 0x4f, + 0x71, 0x27, 0xf1, 0xf4, 0x15, 0x67, 0x5e, 0x6c, 0x28, 0xc3, 0xec, 0xc8, 0x8d, 0xc9, 0x9f, 0x9f, + 0x35, 0xab, 0x0d, 0xe5, 0xdc, 0x93, 0x2b, 0xe9, 0x46, 0x87, 0xf4, 0x2f, 0x5f, 0xf4, 0xb4, 0xfe, + 0x80, 0x91, 0x67, 0x0d, 0x72, 0xa3, 0x20, 0x5d, 0x63, 0xdb, 0x6a, 0xff, 0x7f, 0x16, 0x08, 0x17, + 0x0e, 0x65, 0x3b, 0x3e, 0x84, 0xf7, 0x93, 0xc2, 0xe5, 0xec, 0xe6, 0x99, 0xf2, 0xdf, 0x32, 0xb1, + 0x9a, 0x81, 0x4a, 0xa5, 0x6f, 0x01, 0x05, 0xa5, 0x7b, 0xe9, 0xe1, 0x8d, 0x47, 0xae, 0x77, 0xbc, + 0xa1, 0xfc, 0x40, 0x65, 0x3e, 0xfe, 0xb4, 0x75, 0x75, 0x67, 0xf0, 0x94, 0x8e, 0xc3, 0xc6, 0xf1, + 0xdd, 0xfb, 0x89, 0xeb, 0x7c, 0x4b, 0xf7, 0x00, 0x83, 0x79, 0x58, 0x94, 0xf1, 0x8f, 0xf4, 0xe1, + 0x13, 0x1a, 0x67, 0xdc, 0xaa, 0x51, 0xcc, 0xfa, 0x2c, 0xf3, 0xad, 0xb4, 0xff, 0x6f, 0xb6, 0xd8, + 0xd1, 0xa8, 0xd7, 0x99, 0xa4, 0xbc, 0xf0, 0x13, 0xcb, 0x27, 0xf9, 0xb7, 0x7d, 0xf5, 0xa9, 0x8e, + 0x61, 0xd0, 0x87, 0x50, 0x7d, 0x42, 0xb1, 0x93, 0x7b, 0x24, 0xa0, 0x12, 0xd4, 0x19, 0xdc, 0x3f, + 0x02, 0xc7, 0x1d, 0xf9, 0x67, 0x9d, 0x4f, 0x9f, 0xda, 0xe7, 0xa3, 0x4f, 0x9f, 0xc6, 0x87, 0x9f, + 0x3e, 0x75, 0xf1, 0xd3, 0xfe, 0x76, 0xe4, 0xad, 0xb7, 0x1a, 0xa8, 0xc6, 0x11, 0xff, 0x0c, 0x9c, + 0xb3, 0x4f, 0x9f, 0xca, 0xf5, 0xa7, 0x4f, 0xee, 0x79, 0x1b, 0xb2, 0xf5, 0x0f, 0x48, 0xd3, 0x99, + 0x40, 0xb1, 0xbc, 0xaf, 0x88, 0x67, 0xc0, 0xf4, 0x46, 0x8e, 0xf8, 0xd7, 0xdf, 0x1e, 0x7b, 0x2f, + 0xa8, 0xff, 0xf0, 0x31, 0xcc, 0x87, 0x78, 0xfa, 0xf2, 0x8e, 0x94, 0xec, 0xf4, 0xd2, 0x69, 0xff, + 0x13, 0x22, 0x2d, 0x77, 0xab, 0x43, 0xa7, 0xfd, 0x2f, 0xf0, 0xcc, 0x76, 0x3d, 0x74, 0x10, 0x77, + 0xcf, 0xf7, 0xaa, 0x55, 0x77, 0x04, 0x38, 0xce, 0xef, 0xd8, 0xfb, 0x37, 0xa3, 0x75, 0xff, 0x8e, + 0x36, 0x5d, 0xa0, 0xc2, 0x3d, 0xeb, 0x77, 0x7e, 0x08, 0x3b, 0x93, 0x67, 0x9d, 0x1f, 0xcf, 0x57, + 0x70, 0xc8, 0x1d, 0x91, 0xec, 0xd6, 0x1e, 0x51, 0x6d, 0xb9, 0x0d, 0xd4, 0x69, 0x67, 0x70, 0x83, + 0xcd, 0xff, 0x9d, 0x87, 0x20, 0x78, 0xf8, 0xb9, 0x1e, 0xa6, 0x53, 0xda, 0xd0, 0x29, 0x31, 0xff, + 0xe7, 0x1e, 0xd1, 0xe7, 0x7a, 0x98, 0x4e, 0xb3, 0x9d, 0x58, 0x8d, 0x45, 0x23, 0xcf, 0x8e, 0xd5, + 0x6b, 0x55, 0xad, 0x81, 0x4e, 0xbf, 0xa8, 0x77, 0x75, 0xc0, 0xd5, 0x7d, 0x70, 0x75, 0x5f, 0x2c, + 0xf0, 0x5f, 0xe8, 0x0f, 0x36, 0xc2, 0xc4, 0xf7, 0xf4, 0x2a, 0x9b, 0x04, 0x67, 0x43, 0xe8, 0x57, + 0xb0, 0xd1, 0xfe, 0x2a, 0xe2, 0xcf, 0x85, 0x40, 0xf7, 0xc2, 0x0e, 0xfa, 0x2d, 0x38, 0x06, 0xc0, + 0x75, 0x43, 0x2d, 0x50, 0xda, 0xdc, 0x57, 0x31, 0x65, 0xd3, 0x88, 0xf8, 0xee, 0xfe, 0xb6, 0x32, + 0xbd, 0xaf, 0x6d, 0x33, 0x9c, 0xd9, 0xb1, 0x2a, 0xd6, 0xdb, 0xe0, 0x97, 0xec, 0x9d, 0xbd, 0x53, + 0x78, 0xb4, 0x77, 0x07, 0x57, 0x52, 0x22, 0x15, 0xa1, 0x7a, 0xcf, 0x62, 0x01, 0x9b, 0xca, 0x8f, + 0xc4, 0xf7, 0x9b, 0x87, 0x3d, 0x15, 0x17, 0x49, 0xcf, 0x53, 0xd1, 0x9d, 0x59, 0x75, 0x20, 0xab, + 0xcb, 0x05, 0x0c, 0x82, 0x58, 0x70, 0xb4, 0xd3, 0xb9, 0xda, 0xfe, 0x6e, 0x67, 0x62, 0xc0, 0xdd, + 0xce, 0xd5, 0x9e, 0xad, 0xce, 0xf0, 0xbe, 0xe9, 0x65, 0xfa, 0x52, 0xd2, 0x57, 0x26, 0xb1, 0xe2, + 0x99, 0x34, 0x7d, 0x17, 0xe4, 0x5a, 0x95, 0x0b, 0xbb, 0xa7, 0x53, 0xf0, 0xfd, 0x40, 0x3c, 0x4c, + 0xcd, 0xc3, 0xa5, 0xba, 0x31, 0x68, 0x16, 0xb3, 0x0d, 0xd9, 0x99, 0x99, 0x6e, 0xa5, 0x79, 0x58, + 0x58, 0xfd, 0x79, 0x0e, 0xee, 0xcf, 0xa7, 0x4c, 0xf7, 0x8c, 0x48, 0xf5, 0x9d, 0x44, 0x89, 0xa8, + 0xf3, 0xf6, 0x01, 0xb1, 0x29, 0x7f, 0xa8, 0xc1, 0x45, 0x35, 0x58, 0x2d, 0x19, 0x3f, 0x60, 0x77, + 0x45, 0xbd, 0x22, 0x86, 0xa8, 0xd9, 0xec, 0x34, 0x90, 0x70, 0xa1, 0x76, 0x09, 0x79, 0xac, 0x3e, + 0x34, 0xb2, 0x63, 0x6d, 0xcc, 0x19, 0x3d, 0x0d, 0x3d, 0x93, 0xe7, 0xc1, 0x5e, 0x6c, 0xa4, 0x1b, + 0x84, 0xab, 0x12, 0x79, 0x74, 0x1b, 0x37, 0xe7, 0xab, 0xa3, 0xdb, 0x13, 0xc0, 0x35, 0xce, 0x62, + 0x3b, 0x17, 0x62, 0x22, 0x4e, 0xac, 0x79, 0x26, 0x4d, 0xfe, 0x6b, 0xc6, 0x68, 0x3d, 0xcd, 0x3f, + 0x00, 0x5b, 0x0d, 0xfe, 0x6e, 0x77, 0xd6, 0x7b, 0xd2, 0x67, 0x8f, 0x97, 0x7d, 0x50, 0xf6, 0x78, + 0xd9, 0xf8, 0xc3, 0xd7, 0x65, 0x1b, 0x01, 0xbf, 0x91, 0x5e, 0x8b, 0xf1, 0x60, 0x13, 0xe3, 0x0e, + 0x5d, 0xda, 0xcb, 0x60, 0x83, 0x3a, 0x39, 0xdd, 0xb1, 0xe0, 0xa7, 0xe4, 0x30, 0x27, 0x1f, 0x96, + 0x9f, 0xa9, 0xe8, 0x51, 0x39, 0x0a, 0x8a, 0x6f, 0x9f, 0x68, 0x73, 0x00, 0xab, 0x7e, 0xf4, 0xf8, + 0xf1, 0xe1, 0x19, 0xdc, 0x62, 0x51, 0xe2, 0x7f, 0xa9, 0xc8, 0xce, 0xcf, 0xa2, 0x73, 0x31, 0x55, + 0xd5, 0x28, 0x0a, 0xdd, 0xc4, 0xd5, 0x97, 0xaa, 0x5a, 0xf7, 0xa4, 0x26, 0xaa, 0x56, 0xc8, 0x05, + 0xc5, 0x4f, 0xf3, 0x57, 0x20, 0xe3, 0xde, 0x46, 0x78, 0x07, 0x45, 0x0f, 0x43, 0x79, 0x07, 0x53, + 0x7e, 0x22, 0x6f, 0xfd, 0x92, 0x9f, 0x12, 0x6d, 0x21, 0xc3, 0x3b, 0x95, 0xc1, 0x80, 0x53, 0x57, + 0xdb, 0x4c, 0x5d, 0x13, 0x06, 0x49, 0x87, 0xce, 0x16, 0x13, 0xac, 0x9e, 0x12, 0xa9, 0x09, 0xa2, + 0xf8, 0xb0, 0x97, 0x98, 0x7c, 0x4d, 0xa2, 0x53, 0x35, 0xa5, 0x1f, 0x07, 0x7d, 0x3b, 0x59, 0x92, + 0xa3, 0xc2, 0xcd, 0x60, 0xdf, 0x7b, 0x61, 0xdb, 0xcd, 0x9e, 0x16, 0xa3, 0x27, 0x7e, 0x7f, 0x2b, + 0x9b, 0x92, 0x51, 0x87, 0x02, 0x28, 0x43, 0x87, 0x23, 0xbb, 0xa1, 0xa0, 0x86, 0x1c, 0x7e, 0x3e, + 0x1a, 0xbe, 0xd3, 0xe1, 0x18, 0x14, 0xd9, 0x93, 0xfe, 0x61, 0x0c, 0x5d, 0x46, 0x16, 0x34, 0x82, + 0x3e, 0xa3, 0xdf, 0x74, 0x53, 0x13, 0xf2, 0x55, 0x99, 0x36, 0x12, 0x52, 0xd1, 0x2f, 0xaf, 0xe8, + 0x97, 0x05, 0xee, 0x51, 0x27, 0x06, 0x39, 0x80, 0x07, 0x4a, 0x4b, 0x8c, 0x32, 0x9f, 0x62, 0x93, + 0x24, 0x28, 0x9e, 0x0e, 0xe2, 0xce, 0x0f, 0xd8, 0x5d, 0x7c, 0x98, 0xf7, 0x8a, 0x61, 0x35, 0x2f, + 0xe0, 0xeb, 0x69, 0x13, 0x91, 0xfa, 0x8f, 0x61, 0xbf, 0xcd, 0xac, 0xe9, 0x3d, 0x58, 0x0f, 0x8e, + 0x0e, 0x65, 0x37, 0x55, 0xdc, 0x73, 0xe8, 0xc6, 0x98, 0xa4, 0xdf, 0x1f, 0xc5, 0xfe, 0x51, 0xbf, + 0x8f, 0x89, 0xf5, 0x22, 0xe2, 0x76, 0x6e, 0xe6, 0x3b, 0xc2, 0x7c, 0x94, 0x91, 0xf0, 0x9a, 0xe6, + 0xcc, 0xb0, 0x55, 0x6e, 0xec, 0x1d, 0x6d, 0x48, 0x5b, 0xd3, 0x66, 0x29, 0x87, 0x66, 0x33, 0x38, + 0xdf, 0x65, 0x0e, 0x2c, 0xbd, 0xbf, 0x0b, 0x08, 0xeb, 0x00, 0x18, 0x60, 0xa0, 0x06, 0xd1, 0xac, + 0x4f, 0x6d, 0x18, 0x74, 0x9c, 0xbb, 0x2f, 0x84, 0x71, 0x95, 0x61, 0xad, 0x8c, 0x8e, 0x71, 0x84, + 0xac, 0xab, 0x7f, 0xfa, 0x8e, 0x0c, 0x5f, 0x60, 0xa1, 0xcb, 0x2d, 0xea, 0x96, 0xcd, 0xd0, 0x36, + 0x4d, 0x52, 0xb8, 0x79, 0x77, 0xb6, 0x5e, 0xe7, 0xdd, 0x92, 0xfe, 0x2c, 0xe8, 0x4f, 0xe8, 0x99, + 0xec, 0xb3, 0x81, 0xad, 0xa2, 0xf3, 0xdc, 0x5c, 0x0f, 0xb7, 0xc7, 0xf3, 0x56, 0xc0, 0xfa, 0xcd, + 0xd8, 0xb0, 0xe4, 0xdb, 0xb5, 0x86, 0x91, 0xb7, 0x69, 0xf2, 0x3a, 0x53, 0x15, 0xc7, 0xd6, 0xf2, + 0x68, 0x39, 0x7f, 0xe8, 0x38, 0xb5, 0xcb, 0x10, 0xde, 0x4b, 0xbb, 0x9c, 0x79, 0x9b, 0x6a, 0xfe, + 0x5d, 0x54, 0x56, 0x5a, 0x75, 0x0f, 0x79, 0x96, 0xac, 0x52, 0x2a, 0x7d, 0x15, 0xfa, 0xd6, 0x45, + 0x8b, 0x70, 0x34, 0x00, 0x89, 0xc2, 0x8d, 0xa7, 0x69, 0x94, 0x7e, 0x7e, 0x63, 0xe0, 0xf7, 0xfd, + 0x8d, 0xcd, 0x14, 0xd3, 0xf1, 0xc6, 0xd2, 0x9a, 0x0b, 0xb6, 0x37, 0x56, 0xee, 0x6c, 0x2c, 0x6d, + 0xda, 0x18, 0xcd, 0xff, 0xb7, 0x36, 0x66, 0xc4, 0xe1, 0x4b, 0x1b, 0xab, 0x6c, 0xe5, 0x67, 0xb8, + 0x18, 0x7d, 0xf4, 0xe2, 0xc9, 0xe3, 0x83, 0xab, 0x88, 0x61, 0x14, 0x4c, 0xd2, 0xc3, 0xd4, 0x3c, + 0x5c, 0x72, 0xd4, 0xb7, 0x0d, 0xb2, 0x91, 0xab, 0xcd, 0xf5, 0xfc, 0x60, 0x40, 0x3c, 0xed, 0xc6, + 0xc1, 0x7f, 0xba, 0xf1, 0x5d, 0x1c, 0x91, 0x41, 0x1e, 0xb9, 0x79, 0xf0, 0xa7, 0x4b, 0xef, 0xad, + 0x08, 0xe8, 0x43, 0xf2, 0xdc, 0xa9, 0x74, 0xa4, 0x4b, 0x05, 0x97, 0x1e, 0xa9, 0x92, 0x07, 0x31, + 0x0c, 0xa4, 0xac, 0x86, 0x1e, 0x1c, 0x7c, 0xfd, 0x58, 0xcc, 0x4d, 0xa5, 0xef, 0xce, 0x05, 0xbd, + 0x36, 0xd8, 0x8a, 0xef, 0xb7, 0xa2, 0xd8, 0xca, 0x03, 0xed, 0xd3, 0x68, 0x23, 0x4a, 0xe6, 0x1c, + 0xbc, 0x99, 0x83, 0x1f, 0x33, 0xf0, 0x60, 0x01, 0x37, 0x2e, 0xd1, 0x24, 0x32, 0x2e, 0xca, 0xd7, + 0x61, 0x12, 0x01, 0x33, 0x02, 0x89, 0x6e, 0xe1, 0xf1, 0xcf, 0x54, 0xfd, 0x5c, 0x7a, 0x3b, 0xa0, + 0x3e, 0x8f, 0x41, 0x6c, 0x46, 0xe3, 0xb0, 0x94, 0x5b, 0x48, 0x1c, 0xfc, 0xdf, 0xe1, 0x6f, 0x8c, + 0x0b, 0xc2, 0x83, 0x2e, 0x1c, 0x9d, 0x13, 0x1a, 0x74, 0xe1, 0xd1, 0xb9, 0xc2, 0x60, 0xf8, 0xf7, + 0xc7, 0x11, 0xe5, 0x54, 0xe1, 0x3b, 0x0d, 0x24, 0xdd, 0x06, 0x52, 0x43, 0xa8, 0x87, 0xdb, 0x73, + 0x46, 0x3b, 0x54, 0xfb, 0x4c, 0x7f, 0xcc, 0x65, 0x26, 0xfa, 0x2c, 0x9d, 0x80, 0xb0, 0xaf, 0xa0, + 0x13, 0x19, 0xd9, 0x4a, 0x9c, 0xbe, 0x48, 0x2b, 0xf4, 0x31, 0xb4, 0x52, 0x39, 0x15, 0x0c, 0x33, + 0xcc, 0x5e, 0xb6, 0x9d, 0x6f, 0xd5, 0x53, 0x8a, 0x27, 0xcd, 0xf7, 0x35, 0xd0, 0xaf, 0xe3, 0xfb, + 0x58, 0x36, 0x31, 0x3e, 0xa5, 0x02, 0x6b, 0xe6, 0x85, 0xcd, 0xb1, 0x98, 0x97, 0x4a, 0x8c, 0xc2, + 0xbc, 0x99, 0xf1, 0xbf, 0x34, 0xf6, 0xeb, 0x19, 0x1f, 0x7b, 0xd9, 0x41, 0x28, 0x79, 0x8f, 0x2b, + 0x4a, 0xdb, 0x95, 0x40, 0x68, 0x5a, 0x31, 0xbe, 0xd6, 0x3d, 0xea, 0xfd, 0x69, 0x4a, 0x27, 0xd3, + 0x3f, 0xcb, 0x10, 0x97, 0xae, 0xed, 0x03, 0x02, 0x39, 0x2a, 0x99, 0x30, 0x97, 0xff, 0xff, 0xf2, + 0xbf, 0x2a, 0xc9, 0x6a, 0xf2, 0x87, 0x8d, 0x3e, 0x4b, 0x9d, 0x3a, 0xe5, 0x37, 0x58, 0xab, 0xa3, + 0x31, 0xf5, 0x55, 0xa9, 0xd3, 0xea, 0x80, 0xcc, 0xa1, 0x24, 0x9f, 0x8f, 0x3e, 0x75, 0xb2, 0xd1, + 0x11, 0xea, 0x5b, 0xb6, 0xce, 0x37, 0x13, 0xca, 0xec, 0x5b, 0xa9, 0xc5, 0x27, 0xdd, 0x27, 0x4f, + 0x9e, 0x58, 0xcd, 0x93, 0xad, 0xe6, 0x47, 0x8f, 0xba, 0x8f, 0x1e, 0x3d, 0xaa, 0x9b, 0xfb, 0xdb, + 0xcd, 0x8f, 0xfb, 0x76, 0xd3, 0xe4, 0xbf, 0xbd, 0x3d, 0x6b, 0x73, 0xdb, 0x36, 0xb6, 0x9f, 0x6f, + 0x66, 0xfa, 0x1f, 0x68, 0xb6, 0x37, 0x22, 0x23, 0x4a, 0x96, 0xdc, 0x24, 0x37, 0x4b, 0x99, 0xf6, + 0xa4, 0x49, 0x3a, 0xcd, 0xde, 0x34, 0xc9, 0xd4, 0xc9, 0xb6, 0x1d, 0xaf, 0x27, 0xd1, 0x83, 0xb2, + 0xb9, 0x91, 0x49, 0x2d, 0x49, 0xd9, 0xf2, 0x3a, 0xfa, 0xef, 0xf7, 0x3c, 0x00, 0x10, 0x20, 0x41, + 0x59, 0xc9, 0x66, 0xef, 0x6c, 0x37, 0x16, 0x49, 0x3c, 0x0e, 0x0e, 0x0e, 0x80, 0xf3, 0xc4, 0xd1, + 0x3f, 0x3d, 0xae, 0x35, 0x3c, 0x18, 0x18, 0x9f, 0x9f, 0xd4, 0x1a, 0x9e, 0x9b, 0x9f, 0x87, 0x83, + 0x3a, 0xc8, 0x67, 0x1a, 0x2f, 0xe8, 0x6a, 0xea, 0xc0, 0x90, 0x18, 0x0b, 0xe3, 0xfc, 0x03, 0xf2, + 0x88, 0x89, 0xc1, 0x41, 0x01, 0x37, 0x06, 0xf6, 0x06, 0xc9, 0xcf, 0x5a, 0x00, 0x99, 0x2e, 0x51, + 0x64, 0x64, 0xc7, 0x17, 0x2f, 0xb9, 0x54, 0x2e, 0xb9, 0x54, 0x2d, 0xb9, 0x54, 0x2d, 0x39, 0x2b, + 0xd0, 0x5c, 0x2f, 0x97, 0xf5, 0x72, 0x55, 0x2f, 0x97, 0xf5, 0x8c, 0x01, 0xb1, 0x80, 0x14, 0x0a, + 0x73, 0x48, 0xc8, 0x06, 0x32, 0x2b, 0xc8, 0x31, 0x31, 0x6d, 0xa4, 0x6f, 0x6c, 0x01, 0x99, 0x8d, + 0x37, 0xdb, 0xc0, 0x4a, 0x24, 0x58, 0x89, 0x02, 0x2b, 0x51, 0x60, 0x6d, 0x2a, 0x6d, 0x2f, 0x5e, + 0xb2, 0x3c, 0xce, 0xdb, 0x74, 0xda, 0xd9, 0x16, 0x3d, 0xb1, 0xa9, 0xc0, 0x2e, 0xfb, 0xfc, 0x03, + 0x7a, 0xa8, 0xa9, 0xb1, 0x05, 0x51, 0x6f, 0x9a, 0xfa, 0xc7, 0x76, 0xa3, 0x83, 0xb0, 0x36, 0x10, + 0x4b, 0x43, 0x94, 0xff, 0x0b, 0x29, 0xf0, 0xef, 0x34, 0x3f, 0x00, 0xba, 0xb2, 0xcf, 0x9f, 0x91, + 0x09, 0x17, 0x9a, 0xc8, 0xee, 0xc1, 0x83, 0x1c, 0xfe, 0x9f, 0x32, 0xe3, 0xca, 0x99, 0x50, 0xe2, + 0x91, 0x88, 0xd8, 0x88, 0x3c, 0x21, 0xf0, 0x53, 0x4e, 0x14, 0x64, 0xb4, 0x41, 0xe6, 0x89, 0x7b, + 0x07, 0x0f, 0xd8, 0xa3, 0x52, 0xad, 0xc5, 0xbb, 0x96, 0x61, 0x12, 0x2d, 0x40, 0x6a, 0x8c, 0x7e, + 0xec, 0x3f, 0x6e, 0x23, 0x60, 0x2c, 0x51, 0x6c, 0x21, 0x06, 0xfc, 0x7e, 0xb5, 0xd9, 0x66, 0xd0, + 0xe0, 0x9e, 0xa5, 0x45, 0x23, 0x6e, 0x58, 0x34, 0xf8, 0x42, 0xec, 0x77, 0xd9, 0x32, 0x94, 0x50, + 0xfe, 0x4a, 0x6f, 0x82, 0xaf, 0x30, 0x75, 0xf0, 0xa9, 0x66, 0x6c, 0x56, 0xb8, 0xfd, 0x93, 0x09, + 0x04, 0xd5, 0x2b, 0x36, 0xc8, 0x3e, 0x30, 0x33, 0xea, 0x06, 0xf9, 0x3a, 0x2c, 0x82, 0xfc, 0x06, + 0xfe, 0x59, 0x87, 0x29, 0x60, 0xf4, 0x86, 0xfe, 0x15, 0x60, 0x83, 0xb8, 0x25, 0x01, 0x87, 0x9f, + 0x75, 0xad, 0xb7, 0x5d, 0x37, 0x7e, 0xb7, 0xf6, 0xff, 0x8b, 0x55, 0xe5, 0x45, 0x37, 0x21, 0x7d, + 0xec, 0x18, 0xa0, 0xcb, 0x40, 0xbc, 0xaa, 0x13, 0x26, 0x9c, 0xd4, 0x14, 0xe1, 0x42, 0x2e, 0xa8, + 0x98, 0x3c, 0xc0, 0xae, 0xb0, 0x90, 0xca, 0x71, 0xe1, 0xe4, 0x40, 0xc3, 0xe8, 0x69, 0x24, 0x35, + 0x2a, 0x7b, 0x51, 0xda, 0xd5, 0x5e, 0xec, 0x1f, 0x30, 0xe9, 0x55, 0xc2, 0xb7, 0x92, 0xb9, 0x4b, + 0x94, 0xb8, 0x07, 0x4a, 0x63, 0x5c, 0xd3, 0x46, 0xe7, 0x0f, 0x92, 0x2f, 0xd7, 0xdd, 0xd3, 0xdd, + 0x1f, 0xd4, 0x7b, 0x63, 0x3c, 0x62, 0x18, 0x8a, 0xb0, 0x2b, 0x33, 0x62, 0x1b, 0x85, 0xbb, 0x17, + 0x6e, 0x50, 0x3c, 0xd8, 0x4e, 0xe3, 0x6e, 0xe1, 0x6e, 0xa5, 0x71, 0xf7, 0xca, 0xdd, 0x68, 0x5d, + 0x55, 0x2a, 0x78, 0xcf, 0xcb, 0x49, 0xaf, 0x93, 0x9c, 0x45, 0x05, 0xba, 0x45, 0x4b, 0xb5, 0x3b, + 0xc5, 0x92, 0xb5, 0xf8, 0xff, 0x24, 0x6d, 0xfe, 0x3f, 0xf1, 0x65, 0x52, 0xfe, 0x92, 0x65, 0x9f, + 0x90, 0xc3, 0x48, 0xca, 0x70, 0x42, 0xde, 0xaa, 0xae, 0x14, 0x5d, 0x39, 0x47, 0x62, 0xa4, 0x9c, + 0xd5, 0x00, 0xba, 0x38, 0xcf, 0x63, 0x76, 0x2d, 0xd3, 0xde, 0xd3, 0xe2, 0x67, 0x2f, 0xa9, 0xa7, + 0x94, 0x9d, 0xb8, 0x52, 0xb0, 0x6a, 0x9f, 0x4e, 0xf2, 0x69, 0x54, 0x2d, 0x19, 0xfa, 0x10, 0x49, + 0x6d, 0x13, 0x3f, 0x8a, 0x7e, 0x55, 0x37, 0x00, 0x9c, 0xe7, 0xf2, 0x4e, 0x8d, 0xe0, 0xb9, 0x5a, + 0x4d, 0xb4, 0x44, 0x40, 0x27, 0x05, 0xfe, 0x73, 0x85, 0xff, 0x8c, 0x35, 0xd7, 0x16, 0xde, 0x8c, + 0x2a, 0x75, 0x2f, 0xaf, 0x01, 0x02, 0x82, 0x96, 0x09, 0xdf, 0xa7, 0x41, 0x2a, 0x2e, 0xdd, 0xb5, + 0xac, 0xa9, 0x4a, 0x83, 0xc5, 0x4b, 0xbd, 0x57, 0xad, 0x6e, 0xec, 0x88, 0xa3, 0x06, 0x10, 0x6f, + 0x7d, 0xd8, 0x2b, 0xb2, 0x55, 0x79, 0x4c, 0x85, 0xf8, 0x77, 0x24, 0x5f, 0x86, 0xfa, 0xcb, 0xd3, + 0x5b, 0xe5, 0x9c, 0x14, 0xfe, 0x2b, 0xe0, 0x6b, 0x5c, 0x8b, 0xf0, 0x16, 0xf6, 0x17, 0xed, 0xc3, + 0xb2, 0xd4, 0xbf, 0x9c, 0x59, 0xbb, 0xa6, 0x7c, 0x09, 0xae, 0xe1, 0x9a, 0x95, 0xd4, 0x5d, 0xb3, + 0x92, 0xaf, 0x73, 0xcd, 0x4a, 0x74, 0x86, 0x2c, 0x4b, 0x5b, 0x6d, 0xf0, 0x78, 0xd4, 0x68, 0x04, + 0x33, 0xf2, 0xd8, 0x17, 0x21, 0x29, 0xe8, 0x2f, 0xd0, 0xde, 0x71, 0x19, 0x9e, 0x96, 0x67, 0x7e, + 0x1f, 0xa8, 0xeb, 0xc5, 0x18, 0xd6, 0x90, 0x7e, 0x8a, 0x65, 0xda, 0x80, 0xa8, 0x7e, 0x88, 0x46, + 0x4d, 0xec, 0x21, 0xf0, 0x52, 0xa8, 0xf5, 0xf9, 0x33, 0xfd, 0x01, 0x0e, 0x0f, 0xa0, 0x93, 0x0e, + 0x7a, 0x59, 0x9d, 0x18, 0xa1, 0x04, 0x72, 0xdc, 0x96, 0xd7, 0xd6, 0x4e, 0x63, 0xdd, 0x51, 0xa2, + 0x84, 0xd3, 0xd6, 0xda, 0x22, 0xf6, 0x89, 0xf2, 0x78, 0xa2, 0xa3, 0x61, 0x3e, 0xd7, 0xf1, 0xa0, + 0xb6, 0x37, 0x44, 0xc0, 0x97, 0x0d, 0x9c, 0x8f, 0xef, 0x54, 0x62, 0x0d, 0xca, 0x8d, 0xd2, 0x26, + 0x2e, 0xd0, 0xaa, 0x8d, 0xdd, 0x04, 0x34, 0x53, 0x22, 0x3c, 0x26, 0x56, 0x96, 0x34, 0xf8, 0x30, + 0x6c, 0xc0, 0x88, 0x8d, 0x98, 0x1c, 0xbd, 0x50, 0x38, 0xc5, 0xc4, 0x29, 0xc3, 0x74, 0xd5, 0x6f, + 0x34, 0xea, 0x0d, 0x47, 0x83, 0xc3, 0x14, 0x43, 0x77, 0x48, 0x19, 0xa5, 0x3e, 0x9f, 0xa6, 0xdd, + 0xe1, 0xd9, 0xc8, 0xe3, 0x25, 0xe4, 0x2b, 0xe8, 0x04, 0xf6, 0xe2, 0x00, 0xf1, 0x0b, 0x14, 0x33, + 0x1d, 0x97, 0x00, 0x89, 0xee, 0x34, 0xaa, 0xd3, 0x03, 0x4d, 0x22, 0x74, 0x9b, 0x44, 0x83, 0x51, + 0x72, 0x98, 0xab, 0xeb, 0x8a, 0xba, 0x5d, 0x3f, 0x87, 0x6d, 0x4c, 0x9f, 0x8a, 0xac, 0x36, 0x12, + 0x7d, 0x2b, 0xf8, 0x96, 0x23, 0xd2, 0x81, 0x34, 0xa7, 0xdd, 0x1c, 0x6c, 0xcb, 0x40, 0x03, 0x2f, + 0x67, 0xca, 0xcc, 0x4d, 0xca, 0xac, 0x83, 0x9f, 0xc7, 0x98, 0x58, 0xa3, 0xa9, 0x1d, 0x92, 0x2e, + 0xb1, 0xde, 0x2d, 0x9f, 0xf5, 0x65, 0x7d, 0x06, 0xe9, 0xc2, 0x3b, 0x5d, 0x00, 0xd6, 0xf6, 0x35, + 0xb2, 0x49, 0x55, 0x27, 0x03, 0xef, 0x9c, 0x58, 0x1d, 0xb8, 0x38, 0x9c, 0x1c, 0xeb, 0x32, 0x85, + 0xc6, 0x17, 0x2b, 0x38, 0xd0, 0xb1, 0x00, 0x8c, 0x31, 0x63, 0xf0, 0xb3, 0xfa, 0xc2, 0x6a, 0xd2, + 0x51, 0xad, 0x45, 0x0d, 0xf3, 0x88, 0xf7, 0xcc, 0x8e, 0xf7, 0x0c, 0xf1, 0x8e, 0x77, 0x27, 0x69, + 0x78, 0xcf, 0x10, 0xef, 0x4a, 0xf3, 0x69, 0x02, 0x24, 0x29, 0x84, 0x9d, 0x8d, 0x53, 0xdd, 0xd9, + 0x38, 0xc5, 0x00, 0x31, 0x4d, 0x04, 0xad, 0xc3, 0x98, 0xa5, 0x35, 0x3f, 0x51, 0x89, 0xe3, 0x78, + 0x21, 0xdd, 0xaf, 0xcd, 0xf3, 0x84, 0x9c, 0x40, 0x5d, 0xe9, 0xe8, 0xa9, 0x37, 0xa5, 0x9d, 0x10, + 0x35, 0x1c, 0xd6, 0xf6, 0x5d, 0x3e, 0x14, 0x26, 0x5a, 0x68, 0x87, 0xd8, 0xb0, 0x6a, 0x93, 0x2b, + 0x0e, 0x8f, 0xe6, 0x99, 0xc1, 0x1f, 0x68, 0xe7, 0x6e, 0xd6, 0x6f, 0x1e, 0xa7, 0xd2, 0x39, 0xda, + 0x76, 0xd0, 0x0e, 0x02, 0x97, 0xae, 0x2c, 0x74, 0x85, 0x83, 0x53, 0xed, 0xc4, 0x15, 0x9a, 0xe2, + 0x98, 0x86, 0x2e, 0xd3, 0xf4, 0xd0, 0xc5, 0xcc, 0x5a, 0x8f, 0xb1, 0x76, 0xd0, 0x36, 0xbf, 0x5a, + 0x8f, 0xf7, 0x1a, 0xea, 0xda, 0x38, 0x2c, 0xff, 0x56, 0x38, 0x95, 0x46, 0x14, 0x48, 0xdb, 0x80, + 0x45, 0x78, 0x34, 0x57, 0xd4, 0xed, 0x0b, 0x8f, 0xd2, 0x96, 0xf2, 0xec, 0xf2, 0xac, 0x17, 0xb7, + 0xb2, 0x19, 0x02, 0x25, 0x3a, 0x37, 0x80, 0x0a, 0xd9, 0x98, 0x7d, 0x4f, 0x5b, 0xda, 0x66, 0x07, + 0xea, 0xbb, 0x9a, 0xc6, 0x6d, 0xaa, 0xbe, 0x56, 0x6b, 0x92, 0x99, 0x76, 0x71, 0x05, 0x1e, 0x0a, + 0x95, 0xa4, 0x32, 0x4b, 0xae, 0x6a, 0xf2, 0x00, 0x35, 0xfe, 0x96, 0x73, 0x13, 0x48, 0xe9, 0x44, + 0x4a, 0x1c, 0x69, 0x5f, 0xfc, 0x12, 0x02, 0x41, 0xca, 0x4c, 0xf3, 0x46, 0x70, 0x5d, 0xcc, 0x47, + 0x34, 0x64, 0xce, 0x4a, 0x39, 0x22, 0x23, 0xcf, 0x50, 0x30, 0x14, 0x5c, 0x44, 0x05, 0x4b, 0xdc, + 0x74, 0xaa, 0x04, 0xf1, 0x07, 0x24, 0x54, 0xe6, 0x33, 0x6b, 0xbe, 0xfa, 0xf2, 0x3a, 0x15, 0xc3, + 0x9b, 0xb7, 0xa4, 0xb5, 0xc8, 0x61, 0x2e, 0x61, 0x8e, 0x72, 0x01, 0x32, 0xa3, 0x09, 0x3b, 0xeb, + 0x96, 0xfa, 0xf2, 0xa6, 0x88, 0xfe, 0xb2, 0xe6, 0xdc, 0xc8, 0x83, 0xfa, 0x71, 0x30, 0x90, 0x52, + 0x0e, 0xfd, 0xd4, 0xe4, 0xd3, 0xf0, 0x49, 0xa0, 0xa4, 0x13, 0x76, 0x7d, 0xd4, 0x25, 0x93, 0xca, + 0x01, 0x52, 0xd3, 0xd5, 0xc0, 0x59, 0xa9, 0x49, 0x43, 0xe6, 0x2b, 0x12, 0x82, 0xa1, 0x4a, 0x4d, + 0xa0, 0x0b, 0x4c, 0x67, 0xa8, 0x10, 0x16, 0x54, 0xe5, 0x4b, 0x18, 0x8a, 0x07, 0xe5, 0x2a, 0x18, + 0xba, 0xe3, 0xb4, 0x4c, 0x2a, 0xb7, 0xc2, 0x40, 0x97, 0xb8, 0x19, 0x48, 0x5d, 0xa0, 0x0c, 0x87, + 0x07, 0x81, 0x4c, 0x0c, 0xf4, 0x38, 0x10, 0x5c, 0x20, 0x51, 0x10, 0x9d, 0x40, 0xb3, 0x32, 0xb8, + 0x2a, 0x83, 0xf3, 0x32, 0xf8, 0x50, 0x06, 0x97, 0x65, 0xe4, 0x79, 0x57, 0x3a, 0xff, 0x1e, 0x94, + 0xc6, 0xdd, 0x84, 0xcc, 0x3b, 0x17, 0xf5, 0x3b, 0x5c, 0xe4, 0x35, 0x19, 0x44, 0x5c, 0x95, 0x13, + 0x4d, 0xb4, 0xf4, 0xa0, 0xf5, 0xa6, 0xe3, 0x2c, 0xba, 0xcc, 0x5a, 0x54, 0x14, 0x09, 0x59, 0xa0, + 0x51, 0x6e, 0x7d, 0xea, 0x11, 0x1d, 0x6c, 0x02, 0xe4, 0xae, 0x29, 0xc6, 0x2b, 0x6f, 0x2a, 0x62, + 0x63, 0xdd, 0x0a, 0x2f, 0x20, 0x38, 0x8e, 0xab, 0x1b, 0x3c, 0xfe, 0xb9, 0x8a, 0xf3, 0x9b, 0x13, + 0xca, 0x47, 0x40, 0xe6, 0xdf, 0x91, 0x19, 0x31, 0xcf, 0x61, 0x62, 0x18, 0x79, 0x26, 0x76, 0x6f, + 0xf2, 0xb1, 0x70, 0x17, 0x7c, 0xc5, 0x39, 0x5e, 0x37, 0xa2, 0x5a, 0x82, 0x31, 0xce, 0x6e, 0x68, + 0x3b, 0x3d, 0xce, 0x3d, 0xdf, 0xf0, 0x70, 0x77, 0x9f, 0xbf, 0xf9, 0xf5, 0x19, 0xdf, 0x5d, 0x8e, + 0x17, 0x93, 0xc7, 0x33, 0xf7, 0x0c, 0xe5, 0xc2, 0x64, 0xa3, 0x71, 0xad, 0x11, 0x60, 0x21, 0x9a, + 0xeb, 0x21, 0x06, 0x35, 0x9c, 0x00, 0xfe, 0x67, 0x20, 0x0c, 0x5d, 0x61, 0x34, 0x43, 0x15, 0x90, + 0x45, 0x13, 0xa3, 0x90, 0xf9, 0xa1, 0xc4, 0xa3, 0xce, 0x3b, 0x2f, 0xa3, 0x5b, 0xa6, 0xab, 0x8b, + 0x32, 0x78, 0x56, 0x2d, 0xdc, 0xf0, 0xb2, 0x0c, 0x56, 0x49, 0x08, 0x02, 0xc9, 0x32, 0x50, 0xe1, + 0x5e, 0x61, 0x19, 0xfc, 0x42, 0xd4, 0x1a, 0xfe, 0x10, 0x9c, 0x10, 0x45, 0x20, 0x33, 0xff, 0x3b, + 0x12, 0x53, 0xf8, 0x2f, 0x54, 0x4b, 0x27, 0x8b, 0xf0, 0x56, 0xdc, 0xe4, 0xf7, 0x1e, 0x24, 0xf1, + 0xbf, 0x05, 0x3c, 0x9d, 0x4f, 0xf3, 0xe9, 0x5b, 0x10, 0x67, 0xc3, 0x9f, 0x03, 0x72, 0x73, 0x7a, + 0x8f, 0x1c, 0xfe, 0x3f, 0xf9, 0xf7, 0x2f, 0xf1, 0xfa, 0x25, 0x34, 0xfc, 0x47, 0x00, 0x32, 0xe9, + 0xbb, 0x0c, 0x9e, 0xc2, 0x3f, 0x37, 0xc1, 0x55, 0x9c, 0x17, 0x44, 0x97, 0x74, 0x03, 0x28, 0x08, + 0xf8, 0xe8, 0x02, 0x5f, 0xe7, 0x00, 0xd4, 0xd5, 0x74, 0x74, 0x47, 0x1c, 0x08, 0x8f, 0x41, 0x6f, + 0x78, 0xf8, 0xa1, 0x72, 0xc7, 0x2a, 0x7d, 0x3c, 0x61, 0x60, 0x80, 0xb8, 0xe7, 0xc3, 0x7b, 0x11, + 0xc4, 0x02, 0x73, 0x72, 0x4e, 0x57, 0x18, 0x94, 0x20, 0x37, 0xc6, 0xb3, 0xb7, 0xb4, 0xa0, 0x8b, + 0xe8, 0x03, 0x92, 0xec, 0x06, 0x33, 0x75, 0x89, 0x4b, 0x48, 0x7f, 0xc3, 0x13, 0x83, 0x22, 0x1c, + 0x9c, 0x2b, 0x71, 0xa5, 0x28, 0x5e, 0xf5, 0x52, 0x84, 0xfb, 0xfb, 0xda, 0xd5, 0xa2, 0xc5, 0x18, + 0x50, 0x53, 0x96, 0xc5, 0x3e, 0xe5, 0x05, 0xa0, 0x08, 0x89, 0xfa, 0x05, 0xa3, 0x44, 0xf2, 0xdf, + 0xe2, 0x82, 0xd1, 0xf2, 0x4b, 0x2f, 0x18, 0x75, 0xab, 0x31, 0xc0, 0x19, 0xe0, 0x87, 0x71, 0xbf, + 0x7a, 0x81, 0xad, 0xdd, 0x71, 0xe9, 0xa8, 0xa6, 0x31, 0xa7, 0x31, 0x54, 0x6c, 0xce, 0x60, 0x94, + 0x1e, 0x96, 0x92, 0x9f, 0x49, 0xe5, 0xb5, 0x24, 0x39, 0x99, 0x7b, 0x47, 0x79, 0x3f, 0x4e, 0x81, + 0x98, 0xc9, 0x99, 0x27, 0xd2, 0x1f, 0xf0, 0xea, 0xb2, 0x80, 0xae, 0x20, 0x52, 0xce, 0x3e, 0x74, + 0xd2, 0xb3, 0x96, 0x20, 0xa1, 0x8b, 0xad, 0xbc, 0xbc, 0x7f, 0x9d, 0x27, 0xa5, 0xf8, 0xe6, 0x5b, + 0x35, 0xfe, 0xc8, 0xb9, 0xe6, 0x14, 0xaa, 0x0e, 0x1c, 0xe2, 0x86, 0xd7, 0xee, 0x2d, 0xec, 0x47, + 0xcf, 0x4e, 0x4e, 0x42, 0x0a, 0x5c, 0x5b, 0x5d, 0x4e, 0x78, 0x5f, 0x1c, 0x3e, 0x0a, 0xae, 0xf1, + 0x9a, 0x36, 0xf4, 0x29, 0x1a, 0x31, 0xe8, 0xba, 0x26, 0x41, 0x3a, 0x87, 0x70, 0xac, 0xdd, 0x71, + 0xac, 0x8b, 0x89, 0xbc, 0xa1, 0xe9, 0xdb, 0x04, 0xe1, 0x40, 0x5c, 0x50, 0xb3, 0x87, 0x22, 0x66, + 0xc9, 0x57, 0xc4, 0xa9, 0x2d, 0x83, 0x5c, 0xaa, 0xda, 0x3a, 0x00, 0x3a, 0xc5, 0x3b, 0x5b, 0x6d, + 0x5f, 0xe1, 0x37, 0x90, 0x31, 0x8f, 0x74, 0x03, 0x07, 0x5b, 0x7b, 0x19, 0xb6, 0xf8, 0x6c, 0x82, + 0xb1, 0xad, 0x8c, 0x29, 0xa5, 0xe1, 0x29, 0x36, 0xb5, 0x15, 0xc3, 0x9b, 0xf2, 0x30, 0x72, 0x14, + 0x43, 0xdc, 0xa0, 0xcc, 0x22, 0xa2, 0x0b, 0x3f, 0xdf, 0xe4, 0xef, 0x25, 0x19, 0x86, 0xab, 0x80, + 0x89, 0x35, 0x4c, 0x02, 0xbe, 0x06, 0x25, 0x6c, 0x87, 0xe8, 0x35, 0x15, 0xb8, 0x7f, 0x7f, 0x8f, + 0x7f, 0x40, 0xf7, 0xaf, 0xc7, 0xaf, 0xa9, 0x73, 0x36, 0xe8, 0x84, 0x59, 0x20, 0x2e, 0x11, 0xdb, + 0xd2, 0xc8, 0x4f, 0x5c, 0x62, 0xa3, 0x28, 0x71, 0x4b, 0xd9, 0x9f, 0xc5, 0x17, 0x40, 0x02, 0x8e, + 0x33, 0x1c, 0x07, 0xa9, 0x18, 0x4c, 0x38, 0x0d, 0x62, 0xde, 0xb4, 0x6d, 0xd5, 0x71, 0xd8, 0x62, + 0x4f, 0x47, 0xe5, 0xd2, 0xd5, 0xb6, 0x62, 0x57, 0xa2, 0xd0, 0xe5, 0xb2, 0xbc, 0xb1, 0x15, 0x5a, + 0xc1, 0x6f, 0x94, 0x33, 0xe8, 0xcf, 0x98, 0xfe, 0x9d, 0x62, 0x88, 0x25, 0xa0, 0x21, 0x56, 0x37, + 0x06, 0x25, 0x1e, 0x86, 0x00, 0xef, 0x09, 0x02, 0x06, 0x6a, 0x2d, 0xe0, 0x85, 0xf8, 0xba, 0xd9, + 0xe8, 0x37, 0x93, 0x12, 0x61, 0x25, 0x73, 0x6f, 0x78, 0x54, 0x4a, 0xb9, 0x5b, 0xef, 0x94, 0x09, + 0xdc, 0x75, 0xa5, 0xa4, 0x16, 0x63, 0xd8, 0x03, 0xea, 0xec, 0xf6, 0xbd, 0xe3, 0xf0, 0xef, 0x7d, + 0xef, 0xef, 0xb3, 0x2e, 0xda, 0xf4, 0x8e, 0xc3, 0xd3, 0xf8, 0xc5, 0x99, 0x77, 0xda, 0xed, 0x9d, + 0x1d, 0xf3, 0xab, 0x1f, 0xf6, 0xab, 0x6b, 0xb1, 0x8e, 0x95, 0xbe, 0x71, 0x10, 0x78, 0xe5, 0xe9, + 0xf0, 0xec, 0x18, 0xff, 0x51, 0x97, 0x0e, 0xf9, 0x3d, 0x78, 0x79, 0x70, 0x76, 0xdc, 0xc5, 0x7f, + 0x43, 0xb4, 0xfb, 0x0d, 0x36, 0x9a, 0xf7, 0xaa, 0xe6, 0xd2, 0x8a, 0x57, 0xfa, 0xfd, 0x9c, 0xac, + 0xe3, 0x19, 0x85, 0xce, 0x34, 0x75, 0x95, 0xf1, 0x7e, 0xe9, 0x3f, 0x28, 0xe5, 0x07, 0x6d, 0x6b, + 0xd1, 0xee, 0x53, 0x8d, 0x31, 0x3c, 0xc8, 0x33, 0x17, 0x16, 0xb9, 0x9f, 0xd5, 0x96, 0x93, 0x66, + 0x31, 0x44, 0x75, 0xa4, 0xb0, 0x1a, 0x3e, 0x1b, 0xa7, 0x69, 0x56, 0x3a, 0x53, 0xca, 0x6a, 0x28, + 0xd2, 0x68, 0x8d, 0xe1, 0x3f, 0xd5, 0x99, 0x0b, 0x3c, 0x1b, 0xef, 0x6c, 0xa9, 0x1f, 0x2c, 0xfa, + 0x82, 0x28, 0x00, 0x6f, 0xc7, 0x42, 0x84, 0xa2, 0xe7, 0x28, 0x0e, 0x17, 0x7d, 0x11, 0x03, 0x48, + 0xc1, 0xda, 0xc6, 0xc7, 0xd6, 0x43, 0x5f, 0x6f, 0x51, 0xaf, 0x01, 0x2d, 0xc0, 0x07, 0xa4, 0x18, + 0xe3, 0x75, 0x3f, 0x57, 0x3b, 0xae, 0xea, 0x83, 0x37, 0x40, 0x9b, 0x62, 0x4e, 0xb2, 0xe7, 0xa8, + 0x02, 0xf3, 0x2a, 0xf4, 0xe6, 0x11, 0xfa, 0x28, 0x9d, 0x92, 0x43, 0x3e, 0x66, 0x23, 0xc0, 0xe8, + 0x49, 0xda, 0x34, 0xc3, 0x3a, 0x9d, 0xe4, 0xd1, 0xf0, 0xb0, 0x2e, 0xbb, 0x6a, 0x17, 0x29, 0x55, + 0x72, 0x2b, 0x10, 0x80, 0xfe, 0x10, 0xde, 0xe2, 0xd6, 0x45, 0x71, 0xc9, 0x30, 0x11, 0x72, 0x20, + 0x48, 0xd8, 0x1a, 0x8e, 0x8e, 0x57, 0x22, 0x1c, 0x07, 0x93, 0xa5, 0x78, 0x76, 0x0c, 0x3d, 0x5d, + 0x2c, 0x3c, 0xbd, 0x4a, 0x1c, 0x76, 0xb4, 0xe4, 0xdb, 0x22, 0x7b, 0xce, 0x59, 0x07, 0x08, 0xcc, + 0x98, 0x98, 0x55, 0x74, 0x1a, 0x9f, 0x85, 0x7c, 0x21, 0x32, 0xae, 0xe5, 0x46, 0x6f, 0x31, 0x56, + 0x18, 0x8b, 0x9d, 0x0d, 0xef, 0x9a, 0x8a, 0xe2, 0x3e, 0xa7, 0xde, 0xf4, 0x54, 0x43, 0x3c, 0x37, + 0x04, 0xf9, 0xca, 0xf7, 0xb5, 0xbd, 0x57, 0xa8, 0xdc, 0xad, 0x08, 0x1f, 0x19, 0x44, 0x90, 0xf4, + 0xe9, 0xbc, 0xb8, 0x7f, 0x1f, 0x69, 0xee, 0xd7, 0x55, 0x49, 0x8a, 0xed, 0x37, 0x93, 0x22, 0xce, + 0x81, 0x25, 0x31, 0x24, 0x12, 0x0d, 0xb6, 0xd2, 0xae, 0x09, 0xd3, 0x4b, 0xa0, 0x16, 0x83, 0xaf, + 0x79, 0x2b, 0xec, 0x85, 0x35, 0xa2, 0xd2, 0xef, 0x18, 0xd3, 0xce, 0x1c, 0x7d, 0x2d, 0x19, 0x3b, + 0xfe, 0x1d, 0xb3, 0x01, 0x68, 0x01, 0x7a, 0x9a, 0x2e, 0x56, 0xd0, 0xb7, 0x70, 0x80, 0x64, 0x95, + 0x39, 0xb6, 0x4d, 0xb7, 0xe5, 0xf9, 0x3c, 0x5c, 0xe4, 0xab, 0x12, 0xd4, 0xba, 0xc1, 0xff, 0xfa, + 0x19, 0x8f, 0xb9, 0x6a, 0x17, 0x33, 0x74, 0x82, 0x94, 0x87, 0x9c, 0x2e, 0x6d, 0xb6, 0x70, 0xd0, + 0x16, 0xab, 0x49, 0x99, 0xc7, 0xe4, 0xb0, 0xab, 0x76, 0x8a, 0x95, 0x29, 0xba, 0xc5, 0x86, 0x07, + 0x26, 0xaf, 0x7c, 0x8a, 0x7e, 0x64, 0x5a, 0x8e, 0x53, 0x3c, 0xe8, 0x41, 0x40, 0x05, 0xd6, 0x29, + 0x6c, 0x8c, 0xcf, 0x05, 0x36, 0xb8, 0x0a, 0x10, 0x06, 0xfe, 0x40, 0x01, 0x23, 0x7f, 0x88, 0x0d, + 0x1d, 0x95, 0xc8, 0x40, 0x11, 0x62, 0x81, 0xb0, 0x52, 0xbd, 0xb6, 0x3e, 0xfc, 0xdb, 0xb4, 0x2f, + 0x7a, 0x33, 0x97, 0x61, 0x9f, 0x19, 0x87, 0xda, 0xfa, 0x17, 0x77, 0xfc, 0x62, 0xe0, 0x25, 0xe3, + 0x32, 0x12, 0xb1, 0x1b, 0x96, 0x42, 0xd7, 0xf1, 0xe4, 0x7f, 0x93, 0xf2, 0xfd, 0x2e, 0x45, 0x69, + 0x38, 0x4f, 0x09, 0xa2, 0xc8, 0xbd, 0x1c, 0xa7, 0xc9, 0x72, 0xb5, 0x60, 0xdb, 0x89, 0x58, 0xf8, + 0xea, 0x5a, 0x53, 0x8f, 0x6e, 0x44, 0xb2, 0x6f, 0x24, 0xac, 0xc9, 0x53, 0x48, 0x84, 0x79, 0x2d, + 0xf3, 0xec, 0x66, 0x97, 0x21, 0x6b, 0xcd, 0x0f, 0xdb, 0x9b, 0xe7, 0xeb, 0x01, 0x64, 0xf3, 0xaa, + 0x4e, 0xdb, 0x9e, 0x53, 0x4a, 0x6d, 0x79, 0x7c, 0xec, 0xd6, 0x23, 0xf4, 0xdd, 0xd0, 0xb5, 0x44, + 0xd5, 0xbb, 0xa3, 0x53, 0x23, 0xf4, 0x5b, 0x0f, 0xfc, 0xae, 0xc2, 0xbe, 0x2d, 0x3a, 0x6e, 0x54, + 0x5a, 0x49, 0x88, 0x81, 0xd5, 0x04, 0x72, 0xb2, 0x50, 0x1a, 0xdd, 0x30, 0x4b, 0x2c, 0xc8, 0xde, + 0x50, 0x27, 0x36, 0xa0, 0x31, 0xdb, 0x10, 0xf0, 0xe0, 0x51, 0x88, 0x02, 0x16, 0x15, 0x56, 0xe2, + 0x15, 0xef, 0x4a, 0x8d, 0x2d, 0x04, 0xed, 0x7c, 0x30, 0x89, 0xb0, 0x71, 0xc6, 0x20, 0x1c, 0xd1, + 0xbd, 0x88, 0xb5, 0x38, 0x68, 0xd8, 0xa6, 0xb5, 0xb3, 0x92, 0x2e, 0xb4, 0xa9, 0xee, 0xba, 0x75, + 0x2f, 0x13, 0x98, 0x68, 0xd8, 0x53, 0xd1, 0x25, 0x75, 0x5b, 0xb1, 0xf1, 0x9a, 0x8a, 0xa1, 0xdf, + 0xc2, 0x78, 0x5b, 0x41, 0xc0, 0xe6, 0x92, 0x4b, 0xa2, 0x77, 0x71, 0x5b, 0x74, 0x75, 0x30, 0x47, + 0x1f, 0xd4, 0xfd, 0x29, 0x2b, 0x5a, 0x1e, 0x18, 0xc4, 0x5f, 0xf1, 0xca, 0xfb, 0x07, 0xe4, 0x9d, + 0x2a, 0xd7, 0xf1, 0xe0, 0xc8, 0x2b, 0xcd, 0x6a, 0x2b, 0x19, 0xdd, 0xdd, 0x9b, 0x92, 0xcd, 0x13, + 0x18, 0x8c, 0x32, 0x1a, 0xa0, 0x8f, 0xc2, 0x21, 0xdd, 0xbc, 0x14, 0x91, 0xcf, 0xcf, 0xa3, 0xc1, + 0x51, 0x79, 0x5c, 0xf6, 0x22, 0xb4, 0x59, 0xf6, 0x0e, 0x1e, 0x00, 0x2f, 0x30, 0x0f, 0x1f, 0x89, + 0x12, 0xdd, 0xe8, 0x00, 0x7a, 0xef, 0x3d, 0x1a, 0xc0, 0x4b, 0x90, 0x68, 0xbb, 0xb0, 0x1d, 0x71, + 0x8c, 0x5f, 0xd6, 0x4b, 0xfc, 0x60, 0x5c, 0xcd, 0x54, 0x61, 0x9f, 0x29, 0x8d, 0x9c, 0xab, 0x49, + 0x22, 0x9e, 0x8b, 0xa7, 0xa4, 0x2f, 0xae, 0xe6, 0x98, 0x91, 0xf7, 0x4e, 0x3d, 0x8c, 0x3d, 0x50, + 0xc5, 0x84, 0x0f, 0xa9, 0x30, 0x8b, 0xa2, 0xe1, 0xa5, 0xc1, 0x8a, 0x20, 0x77, 0x2f, 0x79, 0x31, + 0x72, 0x58, 0xba, 0xe2, 0xad, 0x79, 0x14, 0x93, 0xfa, 0x0a, 0xcf, 0x08, 0x7e, 0x85, 0x2e, 0x93, + 0x9e, 0xa2, 0x89, 0x8a, 0x78, 0xf9, 0x0e, 0x77, 0x38, 0xf3, 0x8e, 0x5d, 0xa1, 0x7b, 0x0c, 0x85, + 0xfa, 0x0e, 0x8e, 0xf5, 0xcd, 0x19, 0x5d, 0x32, 0x9f, 0xeb, 0x4e, 0x4b, 0x80, 0x10, 0x7a, 0x07, + 0x5b, 0x70, 0xc0, 0x57, 0xb6, 0xe7, 0xc1, 0x0a, 0xf5, 0x4e, 0x3e, 0x0b, 0xa5, 0xfb, 0xcb, 0xf1, + 0x79, 0xec, 0x60, 0xfa, 0x0a, 0xf2, 0x6d, 0x2a, 0x9c, 0xc8, 0xa1, 0x94, 0x9a, 0x81, 0x93, 0x66, + 0xaf, 0xe3, 0xeb, 0x93, 0xf8, 0x5c, 0xbd, 0x1a, 0x71, 0x99, 0xa4, 0x78, 0x93, 0x6a, 0xa5, 0x16, + 0x4f, 0xab, 0x87, 0xa4, 0x78, 0x75, 0x55, 0x3d, 0xe1, 0x6d, 0x55, 0x27, 0x00, 0xb4, 0xf9, 0xe6, + 0xdd, 0x39, 0xde, 0xb9, 0x85, 0xc5, 0x40, 0x22, 0xa2, 0x3a, 0xbf, 0x9d, 0x4f, 0xae, 0x6b, 0x7d, + 0x50, 0x6a, 0x6c, 0xec, 0xf8, 0x74, 0x10, 0xc0, 0xff, 0xce, 0xc4, 0x6b, 0x95, 0x99, 0x1a, 0x3e, + 0x50, 0x71, 0xf9, 0x21, 0x5d, 0x3c, 0x5f, 0xe5, 0xf0, 0xf6, 0xf1, 0x40, 0xbc, 0xe0, 0xf4, 0x8e, + 0xf1, 0xec, 0xe7, 0x35, 0xbc, 0x95, 0x2f, 0xa7, 0xf0, 0x56, 0x7b, 0xc4, 0x4c, 0x45, 0x33, 0xce, + 0x37, 0x54, 0xe8, 0xa5, 0x38, 0x03, 0x81, 0x48, 0x44, 0x14, 0x39, 0xbd, 0xa1, 0xf8, 0x80, 0xd7, + 0xce, 0xb1, 0x6a, 0x53, 0x6f, 0x24, 0x3e, 0x7f, 0x86, 0x4a, 0x19, 0x7c, 0x15, 0x38, 0x40, 0x24, + 0xfa, 0x53, 0x76, 0x0d, 0x7b, 0xe8, 0xfb, 0x14, 0x2f, 0xad, 0xe0, 0x37, 0xb0, 0x04, 0x01, 0xa3, + 0x5a, 0x75, 0x7c, 0x2f, 0x4f, 0x1d, 0xca, 0x19, 0x0e, 0x7c, 0xaa, 0x43, 0x7b, 0x26, 0x82, 0x54, + 0x89, 0xd5, 0x7d, 0x62, 0xcf, 0x3c, 0x2b, 0xd3, 0x13, 0x38, 0xb7, 0x34, 0x97, 0x02, 0x7c, 0x4c, + 0xde, 0x0a, 0x75, 0x91, 0xbc, 0x30, 0x33, 0x89, 0xa6, 0x7b, 0xf1, 0xdc, 0xef, 0x45, 0x66, 0xd7, + 0x40, 0xcf, 0xc8, 0xfd, 0x78, 0x10, 0xc0, 0x83, 0xa9, 0xd8, 0xe3, 0xd9, 0xf8, 0xee, 0x9e, 0x68, + 0x58, 0x31, 0xd9, 0xac, 0x54, 0xfc, 0x1b, 0xfa, 0x7b, 0x24, 0x8b, 0xa4, 0xbc, 0x11, 0x1e, 0xd5, + 0x94, 0xf0, 0x3b, 0x99, 0x3b, 0xde, 0x9e, 0x3a, 0x4b, 0x2f, 0x12, 0x60, 0x4d, 0x52, 0xe7, 0xfe, + 0x7d, 0x82, 0xe4, 0x39, 0x62, 0x0d, 0x8a, 0xf5, 0x74, 0x2c, 0x1e, 0x39, 0x3f, 0x62, 0x16, 0x73, + 0xac, 0x9b, 0xc7, 0xc0, 0x60, 0x14, 0xe5, 0x5f, 0x8b, 0x8c, 0x38, 0x28, 0xa2, 0x0d, 0x5f, 0xa5, + 0xf6, 0xd6, 0x00, 0x90, 0x49, 0xbc, 0xb1, 0x12, 0x9a, 0x8b, 0x3c, 0x6d, 0xe4, 0x84, 0x4c, 0x5c, + 0x7b, 0xe2, 0xfc, 0xfe, 0xe9, 0xe6, 0xe5, 0xcc, 0xeb, 0x4c, 0x8b, 0x45, 0xc7, 0xaf, 0xae, 0x9a, + 0xc5, 0x1c, 0xee, 0xb9, 0xe3, 0x25, 0x34, 0x09, 0x4e, 0xe2, 0x1c, 0x42, 0x3d, 0xa9, 0x72, 0x70, + 0xd0, 0xca, 0x86, 0x2d, 0x4f, 0x67, 0x68, 0x6a, 0xe3, 0xc3, 0xb5, 0x4a, 0xf0, 0xce, 0xb9, 0x4f, + 0x23, 0x87, 0x1c, 0x88, 0x61, 0x36, 0xf1, 0x3f, 0xdf, 0x65, 0x28, 0xcd, 0x6c, 0xae, 0xdf, 0xdd, + 0x13, 0xa9, 0x1f, 0x45, 0xae, 0x1c, 0x7e, 0x47, 0x14, 0xf5, 0xbe, 0x4c, 0x16, 0x04, 0x34, 0x4d, + 0x54, 0x1f, 0xc6, 0xab, 0x6b, 0xd4, 0x35, 0x6e, 0x8c, 0x46, 0x28, 0xd3, 0xdc, 0x2a, 0x7c, 0xe0, + 0x3f, 0x55, 0x22, 0x0b, 0x4f, 0xc3, 0x5b, 0xe0, 0x1c, 0x3c, 0xc2, 0xaf, 0xb3, 0xe6, 0x7d, 0x36, + 0xec, 0xa0, 0x43, 0x13, 0x26, 0x2d, 0x16, 0x2d, 0x33, 0x19, 0xf0, 0xc4, 0x33, 0x52, 0x1b, 0xb8, + 0xc4, 0x5c, 0xe9, 0xbe, 0x40, 0x8b, 0x08, 0x61, 0x8d, 0x06, 0xa3, 0xfa, 0x14, 0xd5, 0x86, 0x5e, + 0x8e, 0x27, 0x2f, 0xfd, 0xef, 0xee, 0xc1, 0x68, 0x64, 0xe6, 0xa0, 0xda, 0x34, 0x15, 0x3f, 0xdd, + 0x3c, 0x93, 0x37, 0xb4, 0x7b, 0x55, 0x7a, 0x21, 0xdf, 0x32, 0x55, 0xf2, 0x63, 0x63, 0xc2, 0xe4, + 0x07, 0x9c, 0x36, 0x75, 0xdd, 0x3b, 0xee, 0x31, 0xb6, 0xf7, 0xea, 0x2e, 0x7c, 0xd7, 0x19, 0x93, + 0x89, 0x06, 0xdd, 0xd9, 0x5c, 0x41, 0x6e, 0xaa, 0x06, 0xc2, 0xad, 0x37, 0xd6, 0x85, 0x89, 0x97, + 0xe5, 0x1b, 0x63, 0x96, 0x19, 0x90, 0x68, 0xb0, 0x08, 0x10, 0x3b, 0x82, 0x39, 0x55, 0xc6, 0xc8, + 0x40, 0xc1, 0x02, 0x95, 0x13, 0xd2, 0x72, 0x32, 0x7c, 0x2f, 0xe1, 0xf9, 0xc3, 0x33, 0xee, 0x08, + 0x67, 0xac, 0xcf, 0x59, 0xcc, 0xbc, 0x4e, 0x71, 0x99, 0x65, 0xe5, 0x45, 0x47, 0x9b, 0x12, 0x28, + 0xc6, 0xc8, 0xa7, 0xd4, 0x71, 0x42, 0x69, 0xd5, 0xe9, 0xf5, 0x12, 0x28, 0xc4, 0x4d, 0x5a, 0x48, + 0x8f, 0x40, 0x92, 0x00, 0x13, 0xbb, 0xc1, 0xb4, 0x33, 0xd2, 0xc0, 0x2f, 0x2e, 0xb2, 0xeb, 0x77, + 0x98, 0x5b, 0xc9, 0xa3, 0xfb, 0xfd, 0x9c, 0x18, 0x45, 0x62, 0xb9, 0x27, 0xab, 0xf1, 0xac, 0x6d, + 0xeb, 0x4b, 0xe4, 0x64, 0xc2, 0x1e, 0xd6, 0x55, 0x76, 0x07, 0x1c, 0x1a, 0xb4, 0x44, 0x2f, 0xf5, + 0xf9, 0xe0, 0x86, 0x8f, 0x1d, 0x97, 0x7e, 0xc0, 0xe1, 0x85, 0x3d, 0x23, 0x3a, 0xa7, 0x8b, 0x78, + 0x9c, 0x4b, 0xaa, 0x16, 0x10, 0x72, 0x9b, 0x3c, 0x62, 0x60, 0x6a, 0x2f, 0x89, 0xa5, 0xc5, 0x2c, + 0xe6, 0xc8, 0x08, 0x77, 0xe8, 0x23, 0xbb, 0x06, 0xb2, 0x45, 0xa1, 0xa5, 0x34, 0xb1, 0x59, 0x0e, + 0x4c, 0x2c, 0x37, 0x0a, 0x6f, 0xb4, 0xf5, 0xa3, 0x71, 0xb5, 0x8e, 0x09, 0xe9, 0xda, 0x46, 0x2f, + 0x04, 0x2d, 0x13, 0x8b, 0x03, 0xbb, 0xd4, 0xc1, 0x5f, 0x06, 0x03, 0xbf, 0x41, 0x0b, 0x58, 0x88, + 0x74, 0x0a, 0x8c, 0x51, 0x5e, 0xc8, 0x0a, 0xc1, 0x9d, 0x67, 0x19, 0x20, 0x49, 0xdc, 0x34, 0x94, + 0x39, 0x14, 0x2e, 0x0e, 0x78, 0x4e, 0xe0, 0xe8, 0xe8, 0x3b, 0x6f, 0x01, 0x0b, 0x18, 0xad, 0x14, + 0xcf, 0x61, 0xaf, 0xb8, 0x70, 0xca, 0x8b, 0xd8, 0xc1, 0xf3, 0xb9, 0xef, 0xbc, 0x9c, 0xd3, 0x43, + 0x52, 0x14, 0x2b, 0xca, 0xf2, 0x56, 0x00, 0xa1, 0x14, 0x01, 0x14, 0x9c, 0x00, 0x8d, 0x38, 0x37, + 0x19, 0x9c, 0x7e, 0x2f, 0x4e, 0xde, 0xf6, 0x3b, 0xc6, 0xce, 0xa9, 0x20, 0x22, 0xe4, 0xd6, 0x41, + 0x6a, 0x9d, 0x49, 0x03, 0x0d, 0x3b, 0x94, 0xaa, 0xd0, 0xc3, 0x93, 0xaa, 0x2d, 0x26, 0x0d, 0x86, + 0x65, 0x46, 0x42, 0x49, 0x2c, 0x93, 0x8c, 0x79, 0x05, 0x6f, 0x0a, 0xb4, 0x73, 0xe3, 0x3c, 0xb9, + 0x2e, 0x6d, 0x6d, 0xe7, 0x5b, 0x0e, 0x50, 0x3e, 0x8b, 0x70, 0x4f, 0xb8, 0xc1, 0x60, 0x20, 0xb4, + 0x1e, 0x9f, 0x73, 0x2b, 0xb2, 0x5e, 0xb7, 0xab, 0x8e, 0x03, 0x54, 0xf9, 0x44, 0x54, 0xe4, 0xf4, + 0x46, 0xf2, 0x09, 0xb8, 0x95, 0xa8, 0x88, 0x68, 0x2c, 0xd0, 0x4f, 0x66, 0x08, 0x2a, 0x1e, 0x5d, + 0xf0, 0x2d, 0x32, 0x7a, 0xf4, 0xeb, 0xfd, 0x27, 0xdd, 0x21, 0xb5, 0x0e, 0xe0, 0xc2, 0x66, 0xf0, + 0xd1, 0xc8, 0xa2, 0x1b, 0x9f, 0xbb, 0x2d, 0x99, 0x0d, 0x8b, 0xe9, 0xc5, 0x27, 0x4e, 0xd9, 0xc8, + 0x23, 0x77, 0x7e, 0xb8, 0x4d, 0x36, 0x5b, 0x53, 0x1b, 0x42, 0x63, 0x58, 0x86, 0x32, 0x61, 0xeb, + 0x59, 0x86, 0x17, 0xd0, 0x82, 0x87, 0x5f, 0x7c, 0x17, 0x1b, 0x41, 0xf0, 0x91, 0xa3, 0x81, 0xd5, + 0x24, 0x6f, 0xfe, 0x0d, 0x5d, 0x77, 0xd3, 0x9e, 0xf9, 0x10, 0x21, 0xb1, 0xa4, 0x3e, 0xdc, 0x9a, + 0x3e, 0xd9, 0x99, 0x2f, 0x72, 0xe8, 0x4c, 0x72, 0x5e, 0xb0, 0x8f, 0xd2, 0xea, 0x5d, 0x2f, 0xa9, + 0x2f, 0x05, 0x6f, 0x8c, 0x60, 0x69, 0x19, 0xe1, 0xb8, 0xbc, 0x00, 0x96, 0x33, 0xcf, 0xfd, 0xc5, + 0x9a, 0xd2, 0x3a, 0x3e, 0x87, 0x89, 0xb4, 0xb5, 0x4f, 0x8f, 0x66, 0x27, 0xd4, 0x07, 0x22, 0x12, + 0xc5, 0x3b, 0xe7, 0xd5, 0x8b, 0xe7, 0x2a, 0x03, 0x61, 0x95, 0xcb, 0x38, 0x07, 0x5e, 0x4e, 0x65, + 0x1f, 0xd4, 0x91, 0xb9, 0x35, 0x17, 0xe1, 0x0f, 0xb7, 0x92, 0x73, 0xeb, 0x0d, 0x37, 0x2a, 0x29, + 0xa1, 0xc4, 0x31, 0xb6, 0xba, 0x69, 0xa4, 0x75, 0x7e, 0x15, 0xa7, 0x22, 0xa9, 0xb3, 0xc8, 0xc0, + 0x78, 0x52, 0x66, 0x4b, 0x3b, 0x54, 0xd9, 0x52, 0x01, 0x85, 0xf9, 0x0b, 0x97, 0xe3, 0x99, 0x01, + 0xdb, 0xf6, 0x3c, 0x89, 0x15, 0x6c, 0x16, 0xc8, 0xb2, 0xe5, 0x56, 0xc0, 0x9a, 0xa9, 0x3a, 0x3d, + 0xad, 0x2a, 0x70, 0x63, 0xda, 0x00, 0x11, 0xf4, 0xb6, 0x8f, 0xc0, 0xaa, 0x0d, 0x71, 0x5e, 0x0a, + 0x9a, 0x10, 0x5f, 0xcb, 0xe8, 0xb9, 0x9d, 0x78, 0xa6, 0xe9, 0x5c, 0x8d, 0x74, 0x5a, 0x23, 0x11, + 0xf4, 0xfc, 0x50, 0xf4, 0x2c, 0x48, 0x64, 0x20, 0x49, 0x64, 0x4b, 0x9b, 0xb3, 0x2a, 0x41, 0xfc, + 0xf9, 0xac, 0xd6, 0xe6, 0x4c, 0x5f, 0x23, 0x9c, 0x79, 0xf0, 0xc7, 0xff, 0x91, 0x6d, 0x5a, 0xd6, + 0x26, 0xc8, 0x72, 0x72, 0x75, 0xfe, 0x16, 0xa3, 0x75, 0x30, 0x76, 0x66, 0xd2, 0x7a, 0xbd, 0xcb, + 0x12, 0x85, 0xfa, 0xb5, 0x44, 0xe0, 0xd0, 0x4c, 0x6d, 0x89, 0x42, 0x99, 0x6f, 0xb1, 0x44, 0x8d, + 0xc4, 0x98, 0x88, 0xf9, 0x8f, 0x72, 0x8b, 0x6d, 0xb2, 0xbc, 0x22, 0x13, 0x76, 0xc7, 0x37, 0x0e, + 0xe4, 0x69, 0x2a, 0x76, 0x3a, 0x63, 0x5b, 0x3b, 0x8a, 0x84, 0x54, 0x62, 0x3f, 0x14, 0x3a, 0x22, + 0x5b, 0x76, 0xad, 0xad, 0x4e, 0x9d, 0xae, 0x7e, 0x1d, 0xaf, 0x93, 0xcb, 0xd5, 0xa5, 0xc3, 0x24, + 0xec, 0x64, 0x73, 0x95, 0xff, 0xd5, 0xc1, 0x5b, 0x25, 0x2f, 0xe0, 0x74, 0x13, 0xa3, 0xc2, 0x83, + 0x5b, 0x97, 0x2d, 0xf1, 0xc0, 0xc2, 0xa1, 0x38, 0x22, 0xbc, 0xdc, 0xf1, 0xd4, 0x57, 0x21, 0x1a, + 0xe8, 0x5c, 0xb3, 0x4d, 0x2a, 0x6d, 0x08, 0x09, 0x7a, 0xde, 0xf5, 0xb8, 0x3a, 0x66, 0x40, 0x2c, + 0x3e, 0x87, 0xd6, 0xb0, 0x6a, 0xcc, 0xd2, 0xba, 0xf3, 0x60, 0x38, 0x18, 0x38, 0x18, 0x52, 0x05, + 0xcd, 0x68, 0x9f, 0xd5, 0x19, 0x21, 0xdf, 0xf9, 0xe2, 0x00, 0x81, 0x5a, 0xf0, 0xf9, 0x23, 0xc7, + 0x36, 0xf4, 0xce, 0xa5, 0x0f, 0xfb, 0x5f, 0x06, 0xb3, 0xf8, 0x3c, 0x60, 0xb1, 0x15, 0xe6, 0x5d, + 0xd6, 0xda, 0xfc, 0x77, 0xe0, 0x7c, 0xff, 0xf0, 0xe1, 0x43, 0xe3, 0x95, 0x8f, 0x13, 0x17, 0xeb, + 0x99, 0x34, 0x5a, 0x58, 0xe1, 0x8e, 0x91, 0xf0, 0xbd, 0xe3, 0x9f, 0x0e, 0x9a, 0x22, 0x09, 0x00, + 0x03, 0x20, 0xb5, 0xb0, 0xe0, 0xb8, 0x11, 0x68, 0xc3, 0x07, 0x9e, 0x99, 0x46, 0xbe, 0x4b, 0xcf, + 0xb8, 0x65, 0x71, 0x8f, 0x1c, 0xb8, 0xfb, 0xdd, 0x3d, 0xac, 0xdd, 0xdb, 0xb9, 0x3a, 0xee, 0xc3, + 0x66, 0x7d, 0x22, 0x3c, 0x68, 0x03, 0x76, 0x12, 0x9a, 0x56, 0x86, 0xe6, 0xa3, 0x87, 0xdb, 0x5b, + 0x4a, 0x9b, 0x4f, 0x41, 0x98, 0xd1, 0xe8, 0x80, 0x8a, 0x44, 0x46, 0x79, 0xd7, 0x1b, 0x62, 0x51, + 0xdf, 0x55, 0x05, 0xb5, 0x4f, 0x7c, 0xdd, 0xb8, 0x94, 0xc8, 0x76, 0x82, 0xf4, 0x82, 0x81, 0xd4, + 0x49, 0x7b, 0x41, 0x42, 0xa2, 0x0d, 0x9f, 0xef, 0x5f, 0x7a, 0x8c, 0xcd, 0xe6, 0x2a, 0xe1, 0xa4, + 0xa5, 0x6f, 0x31, 0x27, 0x55, 0xc7, 0x64, 0xa0, 0x3c, 0xd4, 0x97, 0xf8, 0xb8, 0x03, 0x08, 0xd9, + 0x21, 0x24, 0x46, 0xa7, 0xad, 0x89, 0xd7, 0x8b, 0x7a, 0xfd, 0x74, 0xf1, 0x74, 0xf7, 0xea, 0x27, + 0x37, 0xe9, 0xb4, 0xde, 0x80, 0xd4, 0xc3, 0x34, 0x5b, 0xb1, 0xb5, 0x33, 0x5f, 0x4f, 0x3a, 0x4e, + 0x57, 0x53, 0xa0, 0xf8, 0xed, 0x72, 0xf0, 0xf7, 0x18, 0xa4, 0x55, 0x49, 0x1c, 0xb4, 0xde, 0x2c, + 0x3b, 0x08, 0x91, 0xf1, 0x4f, 0x79, 0xd2, 0xf1, 0xfd, 0x1d, 0x0b, 0x9f, 0x2c, 0xe3, 0x78, 0xb6, + 0x7b, 0xf1, 0x97, 0x28, 0x61, 0x15, 0x20, 0x8d, 0xee, 0x5e, 0xe5, 0x77, 0x2e, 0x4a, 0x8c, 0x1f, + 0x69, 0xa0, 0x7c, 0x8b, 0xea, 0xe0, 0xfa, 0x3a, 0x1f, 0x2f, 0x3b, 0x12, 0x01, 0x62, 0x21, 0xe2, + 0xc0, 0xd9, 0x1b, 0x4a, 0xb1, 0x9a, 0x93, 0x32, 0x2d, 0x34, 0x45, 0x4e, 0xab, 0x6c, 0x4b, 0x09, + 0xc0, 0x6d, 0x72, 0x2d, 0x36, 0xd0, 0x90, 0x69, 0xf1, 0x65, 0x5d, 0x9e, 0x6d, 0xbc, 0x6b, 0x97, + 0x65, 0x71, 0x68, 0x9e, 0xa1, 0xe3, 0x3a, 0x3a, 0x72, 0x12, 0xdf, 0xb9, 0xef, 0x0c, 0xd6, 0x03, + 0x58, 0x53, 0xcd, 0xe6, 0x49, 0xc2, 0x85, 0xa5, 0x9f, 0xc3, 0x31, 0xc5, 0x4b, 0x00, 0xdb, 0x30, + 0xf5, 0x61, 0x47, 0xce, 0x00, 0x75, 0x3a, 0xe6, 0xcb, 0xc3, 0x48, 0x1f, 0x81, 0x68, 0xda, 0x2c, + 0xd2, 0x1b, 0x6e, 0x91, 0xa5, 0x81, 0x7f, 0x5f, 0xd2, 0xc6, 0xda, 0x94, 0x36, 0x98, 0x0e, 0xdf, + 0x8e, 0x61, 0x65, 0x63, 0xcc, 0xc0, 0x88, 0x8b, 0xb6, 0x92, 0xa4, 0xc7, 0x5f, 0x05, 0xf1, 0xbe, + 0x44, 0x97, 0x1d, 0x04, 0x99, 0x48, 0x9f, 0xa8, 0x35, 0x74, 0xbf, 0xc7, 0xd0, 0xc1, 0xc6, 0x0a, + 0x47, 0x77, 0x26, 0xd8, 0x2e, 0xbc, 0x71, 0xe0, 0x4c, 0x94, 0x36, 0x6b, 0x4c, 0x99, 0x84, 0x70, + 0x7e, 0xe8, 0x87, 0x4f, 0xa7, 0x11, 0xe9, 0xb1, 0x49, 0x29, 0xb8, 0x51, 0x8f, 0xe2, 0x09, 0x69, + 0xe1, 0x1f, 0x45, 0x96, 0xbe, 0x6b, 0x4a, 0xd8, 0xba, 0x82, 0x0b, 0xfa, 0xba, 0x04, 0xf6, 0x36, + 0x70, 0x80, 0xe3, 0x98, 0x64, 0x45, 0x2c, 0x0e, 0x41, 0xde, 0xe6, 0x74, 0x25, 0xa3, 0xd4, 0x9c, + 0x79, 0x72, 0x3e, 0xf7, 0xb4, 0xd6, 0x7d, 0xbd, 0x2b, 0x53, 0xaa, 0x35, 0x25, 0xd0, 0x80, 0xd5, + 0x6c, 0xe2, 0x04, 0x03, 0x40, 0xa4, 0x50, 0x0c, 0x7b, 0xe4, 0xd0, 0xaa, 0x32, 0x9b, 0xaf, 0xd1, + 0x3a, 0xd3, 0xc1, 0x2a, 0xf1, 0x81, 0xb5, 0x84, 0x31, 0x2d, 0x1d, 0x56, 0x17, 0xad, 0x72, 0x9c, + 0x42, 0x31, 0x38, 0x40, 0x78, 0x67, 0x1f, 0x01, 0xdc, 0xa7, 0x68, 0x8f, 0x4e, 0xc8, 0x4f, 0x78, + 0xf8, 0x23, 0x3f, 0x65, 0x16, 0x5c, 0x66, 0xd0, 0x5b, 0xd8, 0x81, 0x4e, 0x3a, 0x62, 0xa0, 0xe2, + 0x23, 0x6f, 0xb7, 0xe2, 0xa1, 0x8f, 0x4a, 0x63, 0x81, 0x32, 0xd2, 0xa6, 0xe1, 0x40, 0xfe, 0x7a, + 0xf2, 0xe6, 0xb5, 0xb0, 0xb4, 0x26, 0xf3, 0x1b, 0x55, 0x4f, 0x08, 0xc0, 0x71, 0x89, 0x7e, 0x53, + 0x1e, 0x40, 0x46, 0x1a, 0xcf, 0xcb, 0xb8, 0xbc, 0xc8, 0x66, 0x21, 0x71, 0x74, 0xc1, 0x77, 0xf7, + 0x2e, 0xe2, 0x31, 0xec, 0x04, 0x45, 0x88, 0x9f, 0x5c, 0xe1, 0x1c, 0xd7, 0xa3, 0x64, 0x8d, 0x21, + 0x6c, 0x94, 0x4b, 0x8c, 0x1e, 0x20, 0x25, 0x02, 0x41, 0x3e, 0x72, 0x80, 0xcb, 0xcb, 0xd1, 0xd1, + 0xfc, 0xfd, 0xbb, 0x9f, 0x7b, 0x4f, 0xf0, 0x00, 0x82, 0x26, 0xd0, 0x7c, 0x19, 0x22, 0x4e, 0x51, + 0x35, 0xf7, 0xdd, 0x3d, 0x4a, 0x40, 0xeb, 0xe5, 0xa8, 0xbc, 0x3d, 0x52, 0x2a, 0x51, 0x78, 0xec, + 0x67, 0x9f, 0x94, 0x1a, 0x40, 0x97, 0xc3, 0x0d, 0x22, 0xc2, 0x72, 0xd8, 0x13, 0xbf, 0x56, 0xad, + 0xe1, 0x2b, 0xd1, 0x9c, 0xa1, 0x24, 0xd1, 0x49, 0x01, 0x2a, 0x98, 0xc4, 0x20, 0xe6, 0xb7, 0x21, + 0xf8, 0xeb, 0x74, 0xe4, 0x6b, 0x6a, 0x9f, 0xce, 0x0b, 0xb4, 0x6f, 0x23, 0x08, 0x4b, 0xe0, 0xb7, + 0x63, 0x4d, 0x8f, 0x80, 0xc5, 0xb1, 0x74, 0xbf, 0x58, 0x4d, 0xa7, 0xc8, 0x09, 0x39, 0x0c, 0xae, + 0xd4, 0x7f, 0x43, 0x67, 0x84, 0x1e, 0xd1, 0xb0, 0x9c, 0x00, 0xa5, 0x33, 0x8a, 0x3a, 0x9d, 0xe0, + 0x26, 0xea, 0x1c, 0xb2, 0x53, 0xad, 0xca, 0xf7, 0xee, 0x1e, 0x09, 0x0b, 0xca, 0xe1, 0x3e, 0x7f, + 0x21, 0xbe, 0x90, 0x3a, 0x8a, 0x39, 0xf9, 0xb9, 0x4a, 0xa2, 0xe8, 0xec, 0xef, 0xb3, 0xb1, 0xcf, + 0x29, 0x32, 0xd8, 0xbb, 0xd5, 0xee, 0x09, 0x82, 0xa3, 0x5e, 0xde, 0x37, 0x9e, 0x50, 0x90, 0x8c, + 0x9c, 0x5b, 0x37, 0x01, 0x8e, 0x5b, 0x13, 0xf9, 0xfd, 0xee, 0x10, 0xf6, 0x47, 0x5c, 0xcc, 0x6e, + 0x58, 0x2b, 0xbe, 0x69, 0xf4, 0x9f, 0xe5, 0xa5, 0x27, 0xf6, 0x05, 0x6d, 0xd3, 0x6e, 0x74, 0x0b, + 0x23, 0x5d, 0xe3, 0x8e, 0xd6, 0xa9, 0x25, 0x4a, 0x87, 0x5d, 0x90, 0x85, 0x05, 0x3c, 0x52, 0xbb, + 0x75, 0xe8, 0xfa, 0xc9, 0xcc, 0xe9, 0x76, 0x4c, 0x79, 0xe8, 0x0f, 0xaf, 0xad, 0x9c, 0x3f, 0x72, + 0x8f, 0x2c, 0xdf, 0x68, 0x7b, 0xea, 0x76, 0x54, 0xd2, 0x74, 0x94, 0x0b, 0x3a, 0x72, 0x6f, 0xa3, + 0xc2, 0x4b, 0x5e, 0xa2, 0x36, 0x6c, 0x0a, 0x0f, 0xe3, 0xc6, 0xc0, 0x64, 0x15, 0xdf, 0x7c, 0xdc, + 0x15, 0xa3, 0x5a, 0x79, 0x85, 0xd2, 0x0a, 0x8a, 0xed, 0x38, 0xad, 0xba, 0x06, 0xa4, 0xde, 0x30, + 0x52, 0x4d, 0xc2, 0xe9, 0x74, 0xeb, 0x9d, 0x00, 0x82, 0x00, 0x8f, 0x47, 0x96, 0x0f, 0x74, 0xa3, + 0x70, 0xc7, 0x20, 0x30, 0xe4, 0x0b, 0x87, 0x5a, 0x12, 0xda, 0xf5, 0xc8, 0x89, 0x0f, 0xb4, 0xe7, + 0x9b, 0x91, 0xe3, 0x48, 0xf5, 0xd1, 0x3c, 0x13, 0xb4, 0xdd, 0xc7, 0xdf, 0x82, 0xde, 0x53, 0x3e, + 0x87, 0xf1, 0x0d, 0xb5, 0x6f, 0xe5, 0xc5, 0x54, 0x3a, 0xfa, 0x9a, 0xd4, 0x24, 0x2a, 0x90, 0x8c, + 0x43, 0xed, 0x00, 0x77, 0xeb, 0x3e, 0xa7, 0x12, 0x13, 0xb4, 0xed, 0x23, 0x0f, 0x52, 0xf3, 0x41, + 0x90, 0x16, 0x7e, 0x79, 0x4f, 0x21, 0x99, 0x1f, 0x32, 0x8a, 0x98, 0x18, 0x3e, 0x41, 0xa9, 0x83, + 0xd8, 0x5d, 0x62, 0x63, 0x10, 0xa4, 0x05, 0x9c, 0xa8, 0xbe, 0x04, 0xd2, 0xf5, 0x5e, 0xd1, 0xa3, + 0x0b, 0xfc, 0x9c, 0x82, 0xb5, 0x4c, 0xca, 0x45, 0xac, 0xc1, 0x22, 0xcd, 0x6f, 0x5c, 0x3d, 0x9e, + 0x15, 0xfd, 0xeb, 0x2b, 0x62, 0xf7, 0x95, 0x25, 0xab, 0xfa, 0x32, 0xc5, 0x37, 0x78, 0x04, 0x1b, + 0x76, 0x3c, 0xfa, 0x0e, 0x5b, 0x30, 0x7c, 0x50, 0xf6, 0xad, 0xaa, 0x0e, 0xbc, 0x02, 0x49, 0x10, + 0x2b, 0x49, 0x6c, 0xd2, 0x81, 0x20, 0xf8, 0x0b, 0xb6, 0x25, 0x62, 0xc4, 0xa6, 0x15, 0x91, 0x1a, + 0xeb, 0x28, 0xcc, 0xab, 0x50, 0x76, 0x92, 0x27, 0x28, 0x08, 0x92, 0xe1, 0xb1, 0xe8, 0xa7, 0x0b, + 0xae, 0x2c, 0x4d, 0x80, 0xf4, 0x66, 0xb6, 0xca, 0x05, 0x98, 0xc2, 0x00, 0x59, 0xf4, 0x57, 0xb3, + 0x25, 0x74, 0x0d, 0x4f, 0xf8, 0xc1, 0xb4, 0xfc, 0x15, 0xfd, 0x65, 0x81, 0x5a, 0xf9, 0xba, 0xe5, + 0x0f, 0xdf, 0x5b, 0xc1, 0x9a, 0xde, 0xbc, 0x23, 0x1d, 0x3d, 0xd9, 0x95, 0x48, 0xac, 0x27, 0xd6, + 0xa3, 0xbf, 0x5c, 0x00, 0xaf, 0x40, 0xcc, 0x06, 0x89, 0xa6, 0x4e, 0x28, 0x85, 0x5b, 0x5b, 0x13, + 0xd3, 0x42, 0x0e, 0x8a, 0xba, 0x9a, 0x4e, 0xd3, 0x39, 0xc6, 0xeb, 0xb6, 0x95, 0x8e, 0x2d, 0xa5, + 0xc7, 0xeb, 0xb6, 0xd2, 0x65, 0xb3, 0x34, 0xea, 0xbf, 0x9d, 0xfd, 0xe1, 0xa0, 0xb5, 0x8a, 0x59, + 0x87, 0x28, 0x2e, 0xa1, 0xa5, 0xc7, 0x95, 0x94, 0x61, 0x75, 0x1a, 0x01, 0xd7, 0xca, 0x4b, 0x64, + 0x46, 0xe6, 0x1f, 0x8b, 0x6a, 0xd7, 0x58, 0xda, 0x9a, 0x9e, 0x36, 0x99, 0x7b, 0xac, 0x92, 0x45, + 0xf3, 0x5a, 0xbc, 0x80, 0x75, 0x8e, 0x0d, 0x12, 0xc1, 0xcc, 0x46, 0x0e, 0x87, 0xf8, 0x6e, 0xf0, + 0x81, 0x14, 0xb9, 0x82, 0xa5, 0x4a, 0x84, 0x1a, 0x17, 0x8b, 0x9e, 0xc9, 0x83, 0x26, 0xa9, 0xeb, + 0xd5, 0x5f, 0x67, 0x8e, 0x04, 0x60, 0x4f, 0x3b, 0xbf, 0x2a, 0xd1, 0x6d, 0x24, 0x4f, 0xda, 0xaa, + 0xe5, 0x2f, 0x32, 0x19, 0x22, 0x5e, 0x0e, 0x60, 0xbf, 0x40, 0x95, 0x09, 0x60, 0x20, 0xee, 0xf5, + 0x04, 0x7b, 0x32, 0x3b, 0x8d, 0xef, 0x30, 0x16, 0xe2, 0x0a, 0xc4, 0x34, 0x34, 0x0b, 0x28, 0x09, + 0xf2, 0x26, 0x3c, 0xb9, 0x81, 0xf1, 0x6e, 0x68, 0x79, 0x77, 0x40, 0xef, 0xaa, 0xf5, 0x2d, 0xc4, + 0x14, 0xb6, 0x8d, 0x43, 0x01, 0xc4, 0x9a, 0x2c, 0xfb, 0xe3, 0xd9, 0xc8, 0xb0, 0x41, 0xa2, 0xa9, + 0x5b, 0x70, 0x17, 0x77, 0xc8, 0x58, 0x6a, 0xca, 0x45, 0xbb, 0x58, 0xf3, 0xac, 0x45, 0x36, 0xb4, + 0x57, 0x4c, 0xfa, 0x85, 0x9d, 0x0e, 0x1b, 0xc2, 0x99, 0x56, 0x25, 0x59, 0x7f, 0x0b, 0xf9, 0x53, + 0xb0, 0xf2, 0x86, 0xb5, 0x3f, 0xe9, 0xcf, 0xd7, 0xc4, 0xb8, 0x6a, 0xbd, 0x2d, 0x49, 0x47, 0x62, + 0x32, 0x28, 0xcd, 0xae, 0x5f, 0xf0, 0xc1, 0x8a, 0x02, 0xdf, 0x34, 0xcf, 0x16, 0x8b, 0x77, 0xd9, + 0xb2, 0x85, 0x3d, 0x6e, 0x80, 0xc8, 0x76, 0xa8, 0x77, 0xa4, 0x36, 0xdd, 0xd6, 0x30, 0xfb, 0xba, + 0xb0, 0xbd, 0x6a, 0x7f, 0xd8, 0x7f, 0x42, 0x48, 0x40, 0xb8, 0x8a, 0x3e, 0x19, 0x4f, 0x0c, 0x9e, + 0xec, 0xf7, 0x57, 0x2f, 0x9e, 0x0b, 0x8b, 0x19, 0xf5, 0xc7, 0x45, 0x5a, 0x48, 0x9b, 0x18, 0x46, + 0x4e, 0x1e, 0xae, 0x84, 0x0e, 0x4f, 0xb4, 0x69, 0x2c, 0x94, 0x5a, 0x23, 0x58, 0xcf, 0x14, 0x85, + 0xd8, 0xfe, 0x48, 0xba, 0x0c, 0x61, 0xd8, 0xe7, 0x5d, 0x7a, 0x0f, 0xff, 0x8a, 0x63, 0x30, 0x9b, + 0xfc, 0x83, 0x98, 0x01, 0x0c, 0xcf, 0x27, 0x8f, 0x10, 0x3c, 0xea, 0xe1, 0xa5, 0xbe, 0x6d, 0x68, + 0x6a, 0xb4, 0x3b, 0x36, 0x9c, 0x07, 0x43, 0x61, 0x1f, 0xaf, 0x64, 0x24, 0x68, 0xab, 0x69, 0x43, + 0x62, 0xc8, 0x5e, 0x2f, 0x18, 0x2c, 0x3e, 0x01, 0xf6, 0xe0, 0x8f, 0x3c, 0x53, 0x17, 0x4f, 0x85, + 0x35, 0x48, 0xdb, 0x15, 0x10, 0xd3, 0x6c, 0x64, 0x63, 0x79, 0xb3, 0xef, 0xfc, 0x89, 0xd6, 0x32, + 0x7e, 0x75, 0x9d, 0x2c, 0x16, 0x0e, 0xc7, 0x00, 0xcd, 0xe7, 0x0e, 0x85, 0x18, 0x12, 0xaa, 0xf9, + 0x30, 0xe9, 0xc2, 0x6f, 0xd8, 0x91, 0x31, 0x35, 0x62, 0x9f, 0x64, 0x9c, 0x4a, 0xe5, 0x64, 0xef, + 0x61, 0x16, 0x53, 0x1f, 0x30, 0x29, 0x33, 0x51, 0xc1, 0xc4, 0x56, 0xba, 0x00, 0x6c, 0x09, 0xa4, + 0x01, 0xb0, 0x9b, 0xcd, 0xee, 0x83, 0x46, 0xc5, 0x8e, 0x30, 0x25, 0x56, 0xa7, 0xda, 0x9e, 0xfc, + 0x2d, 0x10, 0xa0, 0x34, 0x3d, 0x75, 0x2c, 0xbc, 0x01, 0x49, 0x42, 0x8c, 0xb9, 0xa0, 0xec, 0xf3, + 0x17, 0x31, 0x08, 0x97, 0xe5, 0x75, 0x96, 0x7f, 0x62, 0x1c, 0xa4, 0xd9, 0x35, 0x79, 0xe7, 0xa0, + 0x49, 0x12, 0x6d, 0x07, 0xc0, 0x96, 0xc6, 0x5b, 0xc6, 0xfc, 0x0e, 0x8b, 0x08, 0xac, 0x02, 0x24, + 0xd9, 0xdd, 0xcd, 0x3b, 0x8b, 0x0c, 0xb3, 0x6a, 0x52, 0x27, 0x56, 0xdc, 0xe0, 0xf9, 0x4c, 0xd8, + 0xc1, 0x33, 0x1a, 0x7e, 0xc8, 0xb1, 0x10, 0x92, 0xe4, 0xe0, 0x04, 0xd3, 0xe1, 0x63, 0x2d, 0x3e, + 0xd1, 0x73, 0xe6, 0x41, 0x34, 0x44, 0xec, 0x88, 0x50, 0x64, 0x8d, 0xae, 0x92, 0xf8, 0x5a, 0x92, + 0x38, 0x79, 0x2e, 0xed, 0xe1, 0x5f, 0xeb, 0x5e, 0xb6, 0x10, 0xc5, 0x2d, 0xda, 0x20, 0x0f, 0x2b, + 0x91, 0x86, 0x81, 0xd5, 0x42, 0xe2, 0x3e, 0xee, 0x3b, 0x9b, 0xc9, 0xa7, 0x46, 0xe5, 0x7d, 0xf9, + 0x0d, 0x1a, 0x18, 0x4f, 0x30, 0xf6, 0x6d, 0xb2, 0x18, 0xa7, 0x9f, 0xb6, 0x6a, 0xfb, 0x2c, 0xca, + 0x46, 0xd1, 0x9a, 0xa1, 0xe7, 0x33, 0xc7, 0x7f, 0x39, 0xfe, 0x84, 0x47, 0xb5, 0xa7, 0x64, 0xb4, + 0x54, 0xba, 0x3f, 0x35, 0x8d, 0x03, 0xce, 0x40, 0x95, 0x5a, 0x32, 0xcd, 0x35, 0x60, 0xf9, 0x48, + 0xb6, 0x10, 0xa3, 0x5a, 0x6f, 0xb8, 0x89, 0x3f, 0xfa, 0x86, 0xea, 0x97, 0x6a, 0x1f, 0x2a, 0x07, + 0x29, 0x9f, 0x3b, 0x5d, 0xf2, 0x94, 0x6d, 0x34, 0x33, 0x70, 0xbb, 0x59, 0xd5, 0x30, 0xa1, 0xea, + 0xfd, 0x6d, 0x60, 0xe9, 0xc7, 0xd7, 0xbe, 0x61, 0x2e, 0x69, 0xd8, 0x18, 0x95, 0x49, 0xf1, 0xab, + 0x0c, 0x88, 0x46, 0x77, 0x5f, 0x67, 0x4b, 0x4c, 0x8b, 0x6f, 0x65, 0x43, 0x6c, 0x83, 0xeb, 0x6b, + 0xec, 0x88, 0xda, 0xbb, 0x2f, 0x34, 0x23, 0x2a, 0x09, 0xa1, 0x07, 0x73, 0x29, 0x14, 0xf8, 0x5f, + 0x6b, 0x18, 0x34, 0x86, 0x61, 0xb3, 0x11, 0x1a, 0x05, 0x40, 0x88, 0xd5, 0x8d, 0x42, 0x0d, 0xe3, + 0xa1, 0x61, 0x2a, 0xfb, 0x68, 0x67, 0x4d, 0xac, 0x56, 0xad, 0x69, 0x53, 0xf3, 0xaf, 0x75, 0x24, + 0x17, 0x82, 0x20, 0xd3, 0x86, 0xb0, 0x8f, 0x6a, 0xcf, 0x5e, 0xa2, 0x41, 0xaf, 0x16, 0x1a, 0xcc, + 0x6e, 0x0d, 0x17, 0x54, 0x14, 0x7e, 0x31, 0xec, 0xc3, 0x27, 0x63, 0x82, 0xfd, 0xe9, 0x6c, 0x26, + 0xcd, 0x66, 0x86, 0x48, 0xff, 0x6f, 0x8e, 0x41, 0x78, 0x0e, 0x14, 0xfe, 0xad, 0xe2, 0xe1, 0xdb, + 0x17, 0x72, 0x81, 0x7e, 0x07, 0x1f, 0x95, 0x60, 0x53, 0x3b, 0xef, 0x71, 0x41, 0x86, 0x52, 0x09, + 0x50, 0x80, 0xe0, 0x8f, 0x4e, 0x0a, 0x21, 0xb6, 0xb8, 0xdb, 0x61, 0x26, 0x26, 0xb4, 0x02, 0x85, + 0x56, 0xe2, 0x36, 0x4e, 0x41, 0x41, 0x25, 0x37, 0x14, 0xa9, 0xc8, 0x24, 0x23, 0xf5, 0x4e, 0x55, + 0x63, 0xbd, 0x2a, 0x1d, 0x25, 0x58, 0xf5, 0x30, 0xe2, 0xde, 0x61, 0x5e, 0x67, 0x12, 0x41, 0x23, + 0xa9, 0xdc, 0xda, 0xdc, 0x39, 0x6e, 0x72, 0x31, 0x0f, 0xb9, 0x09, 0x7a, 0xce, 0x96, 0xf4, 0x98, + 0x2d, 0x77, 0xc3, 0xc4, 0x4c, 0x9b, 0x14, 0x82, 0x49, 0x7a, 0xbe, 0x1c, 0x3a, 0x07, 0x35, 0x8e, + 0xcd, 0x05, 0x8e, 0x05, 0xce, 0x53, 0xd8, 0x58, 0xe1, 0x74, 0xbe, 0x00, 0xd9, 0xd5, 0xb9, 0x5c, + 0x2d, 0xca, 0x64, 0x09, 0x72, 0xbc, 0x32, 0xb2, 0x62, 0x5e, 0x68, 0x0c, 0xdc, 0xc6, 0x22, 0x22, + 0xed, 0x2e, 0x1e, 0xe1, 0x6e, 0x5d, 0xea, 0x51, 0x8e, 0x16, 0xc5, 0x99, 0x66, 0x41, 0x95, 0x9d, + 0xf7, 0x7a, 0x77, 0x8f, 0x9b, 0xc6, 0x39, 0xd8, 0x79, 0xba, 0xd1, 0x20, 0xae, 0xa6, 0x1b, 0x6d, + 0xe1, 0x5b, 0x28, 0x0f, 0x3e, 0xef, 0x4e, 0x79, 0x68, 0x7b, 0x47, 0xd5, 0xeb, 0xd5, 0xce, 0xa0, + 0xfc, 0xe1, 0x25, 0x9a, 0x66, 0xb2, 0xde, 0xf0, 0x7c, 0x6d, 0xe8, 0xb5, 0xa0, 0xe4, 0xce, 0x0d, + 0x0b, 0x3d, 0xb8, 0x57, 0xd9, 0x5a, 0xeb, 0x8d, 0x83, 0x00, 0xa2, 0xb7, 0x7e, 0xa7, 0x42, 0x5d, + 0xd0, 0xeb, 0xce, 0x10, 0xfc, 0x94, 0x27, 0x5e, 0x63, 0x64, 0x93, 0x3c, 0xb9, 0xa3, 0xd3, 0xba, + 0x7a, 0xc5, 0xff, 0x7f, 0x61, 0xe3, 0x71, 0x13, 0x40, 0x19, 0xb2, 0x09, 0xb1, 0x44, 0x57, 0xb1, + 0xde, 0x05, 0x70, 0x43, 0x10, 0xdd, 0x1d, 0x57, 0x4a, 0x20, 0x6d, 0xef, 0x3f, 0xd9, 0xa9, 0xff, + 0x86, 0x64, 0xbb, 0x23, 0x0c, 0xcc, 0x80, 0x3e, 0xfb, 0xb3, 0xd9, 0xff, 0x72, 0xe1, 0x3a, 0x21, + 0xb2, 0x4f, 0x62, 0xa3, 0xda, 0x45, 0xf5, 0xc4, 0x44, 0xa7, 0xb5, 0x10, 0xa2, 0xeb, 0x9c, 0x8b, + 0x3a, 0x1f, 0x1a, 0x0b, 0x46, 0x87, 0x6c, 0x1d, 0x8c, 0xae, 0x8a, 0xf2, 0xa1, 0x26, 0xc6, 0x89, + 0xdc, 0x55, 0x21, 0xd6, 0x2b, 0xa0, 0x66, 0xe9, 0xce, 0x1a, 0x06, 0x95, 0x6c, 0xbe, 0x05, 0x9d, + 0x11, 0x52, 0x77, 0x44, 0xf6, 0xdb, 0x13, 0x46, 0x36, 0x05, 0x38, 0xec, 0x91, 0x5a, 0xef, 0x3f, + 0x69, 0xba, 0x25, 0x8e, 0xb7, 0x68, 0xb1, 0xe2, 0xb2, 0x99, 0x75, 0x7c, 0x85, 0xb7, 0x37, 0x18, + 0x02, 0xd6, 0x97, 0x1a, 0x7c, 0x45, 0x1b, 0x9a, 0xbf, 0xa5, 0xdd, 0x1f, 0x08, 0x80, 0x7f, 0x85, + 0x7c, 0xb1, 0x6b, 0x72, 0x0a, 0x04, 0x21, 0x88, 0x0a, 0x27, 0x78, 0xa2, 0xc0, 0xb1, 0x51, 0x2c, + 0x32, 0x38, 0xd1, 0x5c, 0xf4, 0xaf, 0x77, 0x30, 0xf8, 0x8f, 0x5f, 0x58, 0xf7, 0x3b, 0xe2, 0x8a, + 0xbc, 0xa4, 0x49, 0xbf, 0x05, 0xaa, 0x03, 0x36, 0x2d, 0xc6, 0x67, 0x2f, 0xe9, 0x0d, 0xfd, 0xca, + 0x00, 0x6d, 0x9e, 0x71, 0xaf, 0xf8, 0x3e, 0x0b, 0x87, 0x23, 0x88, 0x2a, 0x00, 0x48, 0x7b, 0x9d, + 0x38, 0x5d, 0x97, 0xcf, 0x32, 0x9b, 0x38, 0xea, 0x9e, 0xe8, 0xe5, 0x1c, 0x10, 0x4d, 0x29, 0x5a, + 0x73, 0xcf, 0x79, 0x8f, 0xb7, 0x0e, 0x10, 0x92, 0xf0, 0xea, 0x03, 0x1e, 0x24, 0x0d, 0x16, 0xe4, + 0x53, 0xa1, 0xec, 0x95, 0xfd, 0xc1, 0xa7, 0xa4, 0xec, 0x4b, 0x3c, 0x6a, 0xf3, 0x57, 0x0d, 0x6d, + 0x8c, 0xf2, 0x14, 0x8c, 0x6e, 0x64, 0xf6, 0xcd, 0xed, 0x57, 0xcd, 0xd8, 0x80, 0xde, 0x69, 0x63, + 0x52, 0xca, 0x3b, 0x36, 0x40, 0x8b, 0x68, 0x95, 0xc9, 0xe8, 0x3f, 0x1b, 0xdd, 0x40, 0x5c, 0x43, + 0xe4, 0x1e, 0x2c, 0xd7, 0x6c, 0x5e, 0x63, 0x3d, 0x20, 0xb9, 0x64, 0x6b, 0xc5, 0xf8, 0x12, 0xd0, + 0xc8, 0x7d, 0xb4, 0x5c, 0xd7, 0x3f, 0xf1, 0xd5, 0xa7, 0xee, 0xc3, 0x03, 0xfe, 0xb4, 0xa1, 0xaf, + 0xa4, 0x45, 0xac, 0x75, 0xf1, 0xd8, 0xda, 0x85, 0x5e, 0x52, 0xf6, 0x72, 0xa0, 0x7a, 0xd1, 0xbf, + 0x8a, 0x8e, 0x1e, 0x3d, 0xe4, 0xaf, 0x64, 0x26, 0xa6, 0x18, 0x0a, 0xbe, 0xb3, 0x48, 0xdd, 0xd8, + 0xee, 0xec, 0x45, 0xc0, 0x06, 0xd7, 0x60, 0x30, 0x95, 0x87, 0x8c, 0x06, 0xad, 0x32, 0x92, 0xf3, + 0x1d, 0x55, 0xb6, 0x6b, 0x53, 0x7f, 0x6f, 0xd7, 0xa4, 0x7e, 0x81, 0x3b, 0x4a, 0x63, 0xa5, 0x71, + 0xf4, 0x07, 0x2e, 0x06, 0x0e, 0xe1, 0xa9, 0x84, 0x90, 0x1d, 0xc9, 0x01, 0xb1, 0x54, 0x55, 0x27, + 0xd7, 0x8d, 0xad, 0xc3, 0x44, 0x87, 0xab, 0x8e, 0x1e, 0xdf, 0xd2, 0xf1, 0x9d, 0x1a, 0xa2, 0x44, + 0xaa, 0x15, 0xaf, 0x73, 0x51, 0x5c, 0x75, 0x02, 0xa7, 0x83, 0xff, 0x0c, 0xd9, 0xc1, 0xe0, 0xae, + 0xb6, 0x1d, 0xeb, 0x84, 0x8d, 0x30, 0xfc, 0xa8, 0x42, 0x99, 0xdd, 0xe1, 0xc0, 0xc4, 0x32, 0xf6, + 0x95, 0x2d, 0x9a, 0x0d, 0xb6, 0x30, 0x8d, 0xf0, 0x1d, 0xfe, 0x9e, 0x9e, 0xc2, 0xdf, 0x7e, 0x1e, + 0x60, 0x5e, 0x99, 0xfe, 0x39, 0xff, 0x99, 0x04, 0xc6, 0x74, 0x9d, 0x05, 0xa7, 0xf8, 0xdf, 0x99, + 0xd2, 0x3a, 0xf1, 0x2a, 0x94, 0x4e, 0x68, 0x6d, 0xed, 0x42, 0x9d, 0x9d, 0x9a, 0xe6, 0x76, 0x35, + 0x17, 0x37, 0xd9, 0xfc, 0xc1, 0x5d, 0xcd, 0xef, 0xd4, 0x83, 0x68, 0xfe, 0xdf, 0x3f, 0x5a, 0xed, + 0xbc, 0x87, 0x95, 0x47, 0x75, 0x8e, 0x9c, 0x47, 0xad, 0xae, 0xa3, 0xb6, 0xf2, 0xac, 0x6a, 0x42, + 0x08, 0x61, 0x98, 0x7d, 0xf6, 0xfb, 0x19, 0xec, 0xb8, 0x49, 0x0a, 0xb7, 0xf2, 0x84, 0x79, 0x1e, + 0xdd, 0x69, 0x1c, 0x4e, 0x75, 0xed, 0xb1, 0x4d, 0x5e, 0xee, 0x38, 0xdd, 0xc4, 0xa2, 0xc0, 0xd3, + 0x6a, 0xee, 0xa8, 0xc7, 0x43, 0x97, 0x77, 0xbd, 0x31, 0xdd, 0x3e, 0xdb, 0x68, 0xae, 0x66, 0xaf, + 0x0d, 0xe5, 0x0b, 0x7e, 0x6c, 0xf8, 0x1a, 0xa6, 0x73, 0x60, 0x46, 0x0a, 0xbe, 0x07, 0xa9, 0x68, + 0x8b, 0xd5, 0x50, 0xac, 0x3b, 0x1c, 0xea, 0x93, 0xc5, 0x2a, 0xf7, 0x7c, 0x1b, 0x9c, 0xae, 0xc6, + 0x28, 0xef, 0x52, 0x50, 0x71, 0xb4, 0x7a, 0x61, 0x02, 0x6f, 0x7f, 0x1f, 0x4b, 0xe0, 0xee, 0xfa, + 0xfe, 0xa5, 0x8c, 0x53, 0xfc, 0xf0, 0x4c, 0xe7, 0x9c, 0xcc, 0x1b, 0x2d, 0x3a, 0x94, 0xe3, 0x7d, + 0x9c, 0xa4, 0xe8, 0x10, 0x19, 0x38, 0xaf, 0xa1, 0xe4, 0x43, 0x62, 0xba, 0x80, 0x18, 0x1c, 0x15, + 0xfe, 0x04, 0x3b, 0xcc, 0x7a, 0x20, 0xdc, 0x55, 0x02, 0xe7, 0xa6, 0xfa, 0xc9, 0x06, 0x98, 0x13, + 0x47, 0x84, 0x81, 0x08, 0x13, 0xab, 0x08, 0x23, 0xbd, 0x1e, 0xd5, 0x10, 0x86, 0x9e, 0x3f, 0xe8, + 0x3e, 0xf5, 0x5f, 0xf2, 0x5a, 0xd7, 0x5a, 0x04, 0x35, 0x4c, 0x82, 0x25, 0xa8, 0x1a, 0x38, 0xed, + 0xd8, 0x31, 0x71, 0x8f, 0x3d, 0x79, 0x55, 0xc0, 0x13, 0x92, 0xa6, 0x0a, 0xef, 0x55, 0x01, 0x5a, + 0x52, 0x51, 0x2a, 0x47, 0x58, 0x78, 0x1d, 0xa1, 0x98, 0x83, 0xbd, 0xf2, 0xf3, 0x67, 0x47, 0xff, + 0x60, 0x4f, 0x43, 0xd9, 0x52, 0xce, 0xb8, 0xef, 0x1a, 0xca, 0x6c, 0x29, 0x04, 0xc7, 0x45, 0xe5, + 0x87, 0x43, 0x28, 0x94, 0x58, 0x90, 0xe1, 0xd4, 0xf0, 0xfe, 0xc6, 0xf2, 0xfe, 0x4f, 0xe4, 0x5e, + 0x14, 0x72, 0xb7, 0x86, 0xe1, 0x89, 0xc0, 0x35, 0xd7, 0x3f, 0xe5, 0xf9, 0x3a, 0xab, 0xcc, 0x62, + 0x34, 0x01, 0xdb, 0x83, 0xd6, 0xf6, 0x3c, 0x35, 0x6d, 0x64, 0x6a, 0x6a, 0x98, 0x99, 0x66, 0xf9, + 0xf8, 0x5c, 0xe0, 0x9a, 0x0c, 0x73, 0x5c, 0x5c, 0x1b, 0x56, 0x7d, 0x13, 0xfa, 0x12, 0x00, 0x81, + 0x07, 0x90, 0x34, 0x44, 0x3d, 0xa0, 0xc3, 0x0b, 0x5e, 0xad, 0xe6, 0xe8, 0xba, 0x10, 0xa4, 0x6a, + 0xec, 0x84, 0x93, 0x43, 0x4e, 0x0a, 0xaf, 0x8e, 0x43, 0xa7, 0x07, 0xe4, 0xe9, 0xc3, 0x0e, 0xd7, + 0x56, 0xe2, 0x4f, 0x28, 0x71, 0x33, 0xf0, 0xa9, 0x0b, 0x6e, 0x0b, 0xef, 0x8d, 0x4e, 0xa7, 0xe8, + 0xfd, 0xb1, 0x80, 0xb1, 0x35, 0xc3, 0xc5, 0x47, 0x58, 0x70, 0x23, 0xd0, 0x67, 0x0d, 0xe6, 0x2b, + 0xd7, 0x80, 0xbd, 0x8f, 0x3f, 0xdc, 0x6a, 0x97, 0xdf, 0xd8, 0xe1, 0xda, 0x2c, 0xd7, 0x1f, 0x1b, + 0x58, 0x15, 0x03, 0x65, 0xac, 0x5a, 0x90, 0x4a, 0x41, 0xc7, 0x6b, 0x0b, 0xbd, 0x50, 0x9b, 0x01, + 0xf9, 0x73, 0x89, 0xcc, 0x9e, 0xe7, 0xa9, 0x37, 0x5b, 0xc3, 0xda, 0x85, 0xd6, 0xe1, 0x65, 0xd7, + 0x2b, 0x1e, 0xcc, 0xd6, 0xfb, 0xd7, 0xbe, 0xba, 0xa8, 0xe7, 0x80, 0xdd, 0xfe, 0x30, 0x0f, 0x88, + 0x58, 0xd0, 0xe8, 0x1c, 0x0a, 0x34, 0x5b, 0xb0, 0x17, 0x04, 0xf0, 0x1a, 0xf2, 0xc3, 0x21, 0x6c, + 0x00, 0x3d, 0x67, 0xc8, 0x1f, 0x8f, 0xc4, 0xc7, 0x39, 0xfc, 0xea, 0x0f, 0xf9, 0xe4, 0xbb, 0x3b, + 0xb2, 0x11, 0x9d, 0xcf, 0xd9, 0xaf, 0x00, 0x80, 0x19, 0x42, 0x6b, 0xf3, 0x51, 0x23, 0xd4, 0xb1, + 0x8a, 0x81, 0xbc, 0x1b, 0xc3, 0x9d, 0xc1, 0x72, 0xdd, 0xd9, 0x16, 0x54, 0x39, 0xc7, 0xc8, 0x4b, + 0x51, 0x60, 0x37, 0x3a, 0xe7, 0x68, 0x49, 0x5f, 0xae, 0x48, 0xdc, 0xc9, 0x1a, 0x2c, 0x1d, 0x85, + 0x2c, 0x3b, 0xb7, 0x80, 0x54, 0x74, 0xba, 0x11, 0xc9, 0xd2, 0x49, 0x2a, 0xe3, 0x14, 0xa6, 0xce, + 0x16, 0xb0, 0x97, 0xd0, 0x5d, 0xf3, 0x28, 0x2a, 0xb3, 0x65, 0xcd, 0xb0, 0x8c, 0x6e, 0x03, 0xc0, + 0x23, 0x6f, 0x1b, 0xdc, 0xa4, 0xb4, 0xb6, 0x35, 0xc9, 0xca, 0xf6, 0xb6, 0x68, 0x24, 0x2a, 0xe6, + 0xba, 0xad, 0xe5, 0x14, 0x1a, 0x7e, 0xcd, 0x94, 0x21, 0x46, 0xd7, 0x08, 0x47, 0xee, 0xf0, 0x4d, + 0xbf, 0x50, 0x10, 0xff, 0x18, 0x21, 0xc7, 0xd0, 0x6a, 0xb3, 0xf8, 0x65, 0x86, 0x6a, 0xff, 0xec, + 0x1a, 0x9b, 0x46, 0x64, 0x9b, 0x11, 0xb1, 0xcd, 0xf2, 0xd5, 0x1d, 0x20, 0xcd, 0x0a, 0xdb, 0xba, + 0xc0, 0xb5, 0x83, 0x68, 0x81, 0x8d, 0x69, 0xa7, 0x2e, 0xec, 0xe5, 0xb7, 0xf5, 0x90, 0xad, 0x10, + 0x24, 0xac, 0x77, 0x57, 0x07, 0x54, 0x7c, 0xb5, 0xdc, 0xb1, 0xb4, 0xbc, 0x1f, 0xa2, 0x59, 0xfc, + 0x70, 0x1f, 0xb6, 0xc1, 0x64, 0x59, 0x92, 0x3d, 0x04, 0xbd, 0x55, 0xe9, 0xc7, 0x45, 0x79, 0xb9, + 0x38, 0xfa, 0x3f, 0x82, 0xf3, 0x0f, 0xf1, 0x9b, 0x05, 0x01, 0x00, }; diff --git a/wled00/palettes.h b/wled00/palettes.h index ee0715c34..fbdd7bb56 100644 --- a/wled00/palettes.h +++ b/wled00/palettes.h @@ -564,6 +564,14 @@ DEFINE_GRADIENT_PALETTE( Sakura_gp ) { 130, 223, 45, 72, 195, 255, 82,103, 255, 223, 13, 17}; + +DEFINE_GRADIENT_PALETTE( Aurora_gp ) { + 0, 1, 5, 45, //deep blue + 64, 0,200, 23, + 128, 0,255, 0, //green + 170, 0,243, 45, + 200, 0,135, 7, + 255, 1, 5, 45};//deep blue // Single array of defined cpt-city color palettes. @@ -614,6 +622,7 @@ const TProgmemRGBGradientPalettePtr gGradientPalettes[] = { Orangery_gp, //47-34 Orangery C9_gp, //48-35 C9 Sakura_gp, //49-36 Sakura + Aurora_gp, //50-37 Aurora }; diff --git a/wled00/wled00.ino b/wled00/wled00.ino index f4d72c222..5e7499dde 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912111 +#define VERSION 1912121 char versionString[] = "0.9.0-b1"; @@ -148,7 +148,6 @@ bool fadeTransition = true; //enable crossfading color transit bool enableSecTransition = true; //also enable transition for secondary color uint16_t transitionDelay = 750; //default crossfade duration in ms -//bool strip.reverseMode = false; //flip entire LED strip (reverses all effect directions) --> edit in WS2812FX.h bool skipFirstLed = false; //ignore first LED in strip (useful if you need the LED as signal repeater) uint8_t disableNLeds = 0; //disables N LEDs between active nodes. (Useful for spacing out lights for more traditional christmas light look) byte briMultiplier = 100; //% of brightness to set (to limit power, if you set it to 50 and set bri to 255, actual brightness will be 127) @@ -156,6 +155,7 @@ byte briMultiplier = 100; //% of brightness to set (to limit //User Interface CONFIG char serverDescription[33] = "WLED"; //Name of module +bool syncToggleReceive = false; //UIs which only have a single button for sync should toggle send+receive if this is true, only send otherwise //Sync CONFIG @@ -189,6 +189,7 @@ bool arlsForceMaxBri = false; //enable to force max brightness i uint16_t e131Universe = 1; //settings for E1.31 (sACN) protocol bool e131Multicast = false; +bool mqttEnabled = false; char mqttDeviceTopic[33] = ""; //main MQTT topic (individual per device, default is wled/mac) char mqttGroupTopic[33] = "wled/all"; //second MQTT topic (for example to group devices) char mqttServer[33] = ""; //both domains and IPs should work (no SSL) diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino index e64a6fcdd..2f68703ea 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -6,7 +6,7 @@ #define EEPSIZE 2560 //eeprom Version code, enables default settings instead of 0 init on update -#define EEPVER 13 +#define EEPVER 14 //0 -> old version, default //1 -> 0.4p 1711272 and up //2 -> 0.4p 1711302 and up @@ -20,7 +20,8 @@ //10-> 0.8.2 //11-> 0.8.5-dev #mqttauth @TimothyBrown //12-> 0.8.7-dev -//13-> 0.9.0 +//13-> 0.9.0-dev +//14-> 0.9.0-b1 void commit() { @@ -152,7 +153,7 @@ void saveSettingsToEEPROM() EEPROM.write(394, abs(utcOffsetSecs) & 0xFF); EEPROM.write(395, (abs(utcOffsetSecs) >> 8) & 0xFF); EEPROM.write(396, (utcOffsetSecs<0)); //is negative - //397 was initLedsLast + EEPROM.write(397, syncToggleReceive); EEPROM.write(398, (ledCount >> 8) & 0xFF); EEPROM.write(399, !enableSecTransition); @@ -241,6 +242,7 @@ void saveSettingsToEEPROM() EEPROM.write(2290 + i, timerMacro[i] ); } + EEPROM.write(2299, mqttEnabled); writeStringToEEPROM(2300, mqttServer, 32); writeStringToEEPROM(2333, mqttDeviceTopic, 32); writeStringToEEPROM(2366, mqttGroupTopic, 32); @@ -462,6 +464,14 @@ void loadSettingsFromEEPROM(bool first) { readStringFromEEPROM(990, ntpServerName, 32); } + if (lastEEPROMversion > 13) + { + mqttEnabled = EEPROM.read(2299); + syncToggleReceive = EEPROM.read(397); + } else { + mqttEnabled = true; + syncToggleReceive = false; + } receiveDirect = !EEPROM.read(2200); notifyMacro = EEPROM.read(2201); diff --git a/wled00/wled02_xml.ino b/wled00/wled02_xml.ino index ca8a72934..2fe9a4813 100644 --- a/wled00/wled02_xml.ino +++ b/wled00/wled02_xml.ino @@ -243,6 +243,7 @@ void getSettingsJS(byte subPage, char* dest) if (subPage == 3) { sappends('s',"DS",serverDescription); + sappend('c',"ST",syncToggleReceive); } if (subPage == 4) @@ -271,6 +272,7 @@ void getSettingsJS(byte subPage, char* dest) sappends('s',"BK",(char*)((blynkEnabled)?"Hidden":"")); #ifdef WLED_ENABLE_MQTT + sappend('c',"MQ",mqttEnabled); sappends('s',"MS",mqttServer); sappend('v',"MQPORT",mqttPort); sappends('s',"MQUSER",mqttUser); diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index 2dfdcbe6f..3f08d2807 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -113,6 +113,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) if (subPage == 3) { strlcpy(serverDescription, request->arg("DS").c_str(), 33); + syncToggleReceive = request->hasArg("ST"); } //SYNC @@ -153,6 +154,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) } #ifdef WLED_ENABLE_MQTT + mqttEnabled = request->hasArg("MQ"); strlcpy(mqttServer, request->arg("MS").c_str(), 33); t = request->arg("MQPORT").toInt(); if (t > 0) mqttPort = t; diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index f25a6673f..5036c05e4 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -179,7 +179,7 @@ void handleNotifications() col[0] = udpIn[3]; col[1] = udpIn[4]; col[2] = udpIn[5]; - if (udpIn[11] > 0) //check if sending modules white val is inteded + if (udpIn[11] > 0) //sending module's white val is intended { col[3] = udpIn[10]; if (udpIn[11] > 1) @@ -192,7 +192,7 @@ void handleNotifications() if (udpIn[11] > 5) { uint32_t t = (udpIn[25] << 24) | (udpIn[26] << 16) | (udpIn[27] << 8) | (udpIn[28]); - t -= 2; + t += 2; t -= millis(); strip.timebase = t; } diff --git a/wled00/wled08_led.ino b/wled00/wled08_led.ino index f9852c043..2bbee9c3d 100644 --- a/wled00/wled08_led.ino +++ b/wled00/wled08_led.ino @@ -12,6 +12,13 @@ void setValuesFromMainSeg() effectPalette = seg.palette; } + +void resetTimebase() +{ + strip.timebase = 0 - millis(); +} + + void toggleOnOff() { if (bri == 0) @@ -81,7 +88,7 @@ void colorUpdated(int callMode) { //call for notifier -> 0: init 1: direct change 2: button 3: notification 4: nightlight 5: other (No notification) // 6: fx changed 7: hue 8: preset cycle 9: blynk 10: alexa - if (callMode != 1 && callMode != 5) strip.applyToAllSelected = true; //if not from JSON api, which directly sets segments + if (callMode != 0 && callMode != 1 && callMode != 5) strip.applyToAllSelected = true; //if not from JSON api, which directly sets segments bool fxChanged = strip.setEffectConfig(effectCurrent, effectSpeed, effectIntensity, effectPalette); if (!colorChanged()) @@ -113,6 +120,7 @@ void colorUpdated(int callMode) colIT[i] = col[i]; colSecIT[i] = colSec[i]; } + if (briT == 0 && callMode != 3) resetTimebase(); briIT = bri; if (bri > 0) briLast = bri; diff --git a/wled00/wled17_mqtt.ino b/wled00/wled17_mqtt.ino index eec8704f5..efc308a9c 100644 --- a/wled00/wled17_mqtt.ino +++ b/wled00/wled17_mqtt.ino @@ -106,7 +106,7 @@ void publishMqtt() bool initMqtt() { lastMqttReconnectAttempt = millis(); - if (mqttServer[0] == 0 || !WLED_CONNECTED) return false; + if (!mqttEnabled || mqttServer[0] == 0 || !WLED_CONNECTED) return false; if (mqtt == nullptr) { mqtt = new AsyncMqttClient(); diff --git a/wled00/wled18_server.ino b/wled00/wled18_server.ino index 953fcdcd5..c48d3785b 100644 --- a/wled00/wled18_server.ino +++ b/wled00/wled18_server.ino @@ -68,7 +68,7 @@ void initServer() server.on("/settings/wifi", HTTP_POST, [](AsyncWebServerRequest *request){ if (!(wifiLock && otaLock)) handleSettingsSet(request, 1); - serveMessage(request, 200,"WiFi settings saved.","Reconnecting now...",129); + serveMessage(request, 200,"WiFi settings saved.","Please connect to the new IP (if changed)",129); forceReconnect = true; }); @@ -79,7 +79,7 @@ void initServer() server.on("/settings/ui", HTTP_POST, [](AsyncWebServerRequest *request){ handleSettingsSet(request, 3); - serveMessage(request, 200,"UI settings saved.","Reloading to apply theme...",122); + serveMessage(request, 200,"UI settings saved.","Redirecting...",1); }); server.on("/settings/sync", HTTP_POST, [](AsyncWebServerRequest *request){ @@ -94,7 +94,7 @@ void initServer() server.on("/settings/sec", HTTP_POST, [](AsyncWebServerRequest *request){ handleSettingsSet(request, 6); - if (!doReboot) serveMessage(request, 200,"Security settings saved.","Rebooting now, please wait ~10 seconds...",129); + if (!doReboot) serveMessage(request, 200,"Security settings saved.","Rebooting, please wait ~10 seconds...",129); doReboot = true; }); diff --git a/wled00/wled19_json.ino b/wled00/wled19_json.ino index b232b0b6f..a905047b9 100644 --- a/wled00/wled19_json.ino +++ b/wled00/wled19_json.ino @@ -123,15 +123,23 @@ bool deserializeState(JsonObject root) if (segVar.is()) { int id = segVar["id"] | -1; + if (id < 0) { //set all selected segments + bool didSet = false; + byte lowestActive = 99; for (byte s = 0; s < strip.getMaxSegments(); s++) { WS2812FX::Segment sg = strip.getSegment(s); - if (sg.isActive() && sg.isSelected()) + if (sg.isActive()) { - deserializeSegment(segVar, s); + if (lowestActive == 99) lowestActive = s; + if (sg.isSelected()) { + deserializeSegment(segVar, s); + didSet = true; + } } } + if (!didSet && lowestActive < strip.getMaxSegments()) deserializeSegment(segVar, lowestActive); } else { //set only the segment with the specified ID deserializeSegment(segVar, it); } @@ -144,7 +152,6 @@ bool deserializeState(JsonObject root) } } - //fromJson = true; colorUpdated(noNotification ? 5:1); ps = root["psave"] | -1; @@ -239,6 +246,8 @@ void serializeInfo(JsonObject root) leds["maxpwr"] = strip.ablMilliampsMax; leds["maxseg"] = strip.getMaxSegments(); leds["seglock"] = false; //will be used in the future to prevent modifications to segment config + + root["str"] = syncToggleReceive; root["name"] = serverDescription; root["udpport"] = udpPort; @@ -295,7 +304,7 @@ void serializeInfo(JsonObject root) root["brand"] = "WLED"; root["product"] = "DIY light"; - root["btype"] = "dev"; + root["btype"] = "bin"; root["mac"] = escapedMac; } From 0c9bcb24456c7f7d519e7f2aabadc3070ed2630a Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 13 Dec 2019 01:31:48 +0100 Subject: [PATCH 11/70] Update readme --- readme.md | 7 ++++--- wled00/wled19_json.ino | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index 6a4b41e2d..c647b543a 100644 --- a/readme.md +++ b/readme.md @@ -10,13 +10,14 @@ A fast and feature-rich implementation of an ESP8266/ESP32 webserver to control NeoPixel (WS2812B, WS2811, SK6812, APA102) LEDs! ### Features: -- WS2812FX library integrated for 80 special effects +- WS2812FX library integrated for almost 90 special effects - FastLED noise effects and palettes -- Customizable Mobile and desktop UI with color and effect controls +- Modern UI with color, effect and segment controls +- Segments to set different effects and colors to parts of the LEDs - Settings page - configuration over network - Access Point and station mode - automatic failsafe AP - Support for RGBW strips -- 25 user presets to save and load colors/effects easily, supports cycling through them. +- 16 user presets to save and load colors/effects easily, supports cycling through them. - Macro functions to automatically execute API calls - Nightlight function (gradually dims down) - Full OTA software updatability (HTTP + ArduinoOTA), password protectable diff --git a/wled00/wled19_json.ino b/wled00/wled19_json.ino index a905047b9..1c5e19eb4 100644 --- a/wled00/wled19_json.ino +++ b/wled00/wled19_json.ino @@ -304,7 +304,7 @@ void serializeInfo(JsonObject root) root["brand"] = "WLED"; root["product"] = "DIY light"; - root["btype"] = "bin"; + root["btype"] = "src"; root["mac"] = escapedMac; } From 9088d793906ec1a50bf717c6ec2280f8ee466183 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 13 Dec 2019 14:14:36 +0100 Subject: [PATCH 12/70] Add tertiary color to sync (#451) --- wled00/wled00.ino | 2 +- wled00/wled07_notify.ino | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 5e7499dde..1abf9a574 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912121 +#define VERSION 1912131 char versionString[] = "0.9.0-b1"; diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index 5036c05e4..859fc3186 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -38,7 +38,7 @@ void notify(byte callMode, bool followUp=false) //0: old 1: supports white 2: supports secondary color //3: supports FX intensity, 24 byte packet 4: supports transitionDelay 5: sup palette //6: supports timebase syncing, 29 byte packet 7: supports tertiary color - udpOut[11] = 6; + udpOut[11] = 7; udpOut[12] = colSec[0]; udpOut[13] = colSec[1]; udpOut[14] = colSec[2]; @@ -47,10 +47,12 @@ void notify(byte callMode, bool followUp=false) udpOut[17] = (transitionDelay >> 0) & 0xFF; udpOut[18] = (transitionDelay >> 8) & 0xFF; udpOut[19] = effectPalette; - /*udpOut[20] = colTer[0]; - udpOut[21] = colTer[1]; - udpOut[22] = colTer[2]; - udpOut[23] = colTer[3];*/ + uint32_t colTer = strip.getSegment(strip.getMainSegmentId()).colors[2]; + udpOut[20] = (t >> 16) & 0xFF; + udpOut[21] = (t >> 8) & 0xFF; + udpOut[22] = (t >> 0) & 0xFF; + udpOut[23] = (t >> 24) & 0xFF; + udpOut[24] = followUp; uint32_t t = millis() + strip.timebase; udpOut[25] = (t >> 24) & 0xFF; @@ -196,13 +198,10 @@ void handleNotifications() t -= millis(); strip.timebase = t; } - /*if (udpIn[11] > 6) + if (udpIn[11] > 6) { - colTer[0] = udpIn[20]; - colTer[1] = udpIn[21]; - colTer[2] = udpIn[22]; - colSec[3] = udpIn[23]; - }*/ + strip.setColor(2, udpIn[20], udpIn[21], udpIn[22], udpIn[23]); //tertiary color + } } } From 6ef988549dddcec45f78038875af0c3a80545ac9 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 13 Dec 2019 14:16:42 +0100 Subject: [PATCH 13/70] Fix compile facepalm --- wled00/wled07_notify.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index 859fc3186..22370072c 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -48,10 +48,10 @@ void notify(byte callMode, bool followUp=false) udpOut[18] = (transitionDelay >> 8) & 0xFF; udpOut[19] = effectPalette; uint32_t colTer = strip.getSegment(strip.getMainSegmentId()).colors[2]; - udpOut[20] = (t >> 16) & 0xFF; - udpOut[21] = (t >> 8) & 0xFF; - udpOut[22] = (t >> 0) & 0xFF; - udpOut[23] = (t >> 24) & 0xFF; + udpOut[20] = (colTer >> 16) & 0xFF; + udpOut[21] = (colTer >> 8) & 0xFF; + udpOut[22] = (colTer >> 0) & 0xFF; + udpOut[23] = (colTer >> 24) & 0xFF; udpOut[24] = followUp; uint32_t t = millis() + strip.timebase; From 2c70d66d4a6e10809e3335b9f61804b9c01d4445 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 18 Dec 2019 00:41:45 +0100 Subject: [PATCH 14/70] Fix TypeError (#453) --- wled00/src/dependencies/json/AsyncJson-v6.h | 19 ++++++------------- wled00/wled00.ino | 2 +- wled00/wled18_server.ino | 17 ++++++++++++++--- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/wled00/src/dependencies/json/AsyncJson-v6.h b/wled00/src/dependencies/json/AsyncJson-v6.h index 5bf87e1b1..9187a3e9d 100644 --- a/wled00/src/dependencies/json/AsyncJson-v6.h +++ b/wled00/src/dependencies/json/AsyncJson-v6.h @@ -15,7 +15,7 @@ #include "ArduinoJson-v6.h" #include -#define DYNAMYC_JSON_DOCUMENT_SIZE 8192 +#define DYNAMIC_JSON_DOCUMENT_SIZE 8192 constexpr const char* JSON_MIMETYPE = "application/json"; @@ -60,7 +60,7 @@ class AsyncJsonResponse: public AsyncAbstractResponse { public: - AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMYC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} { + AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} { _code = 200; _contentType = JSON_MIMETYPE; if(isArray) @@ -90,7 +90,7 @@ class AsyncJsonResponse: public AsyncAbstractResponse { } }; -typedef std::function ArJsonRequestHandlerFunction; +typedef std::function ArJsonRequestHandlerFunction; class AsyncCallbackJsonWebHandler: public AsyncWebHandler { private: @@ -103,7 +103,7 @@ protected: int _maxContentLength; public: - AsyncCallbackJsonWebHandler(const String& uri, ArJsonRequestHandlerFunction onRequest, size_t maxJsonBufferSize=DYNAMYC_JSON_DOCUMENT_SIZE) + AsyncCallbackJsonWebHandler(const String& uri, ArJsonRequestHandlerFunction onRequest, size_t maxJsonBufferSize=DYNAMIC_JSON_DOCUMENT_SIZE) : _uri(uri), _method(HTTP_POST|HTTP_PUT|HTTP_PATCH), _onRequest(onRequest), maxJsonBufferSize(maxJsonBufferSize), _maxContentLength(16384) {} void setMethod(WebRequestMethodComposite method){ _method = method; } @@ -127,15 +127,8 @@ public: virtual void handleRequest(AsyncWebServerRequest *request) override final { if(_onRequest) { if (request->_tempObject != NULL) { - - DynamicJsonDocument jsonBuffer(this->maxJsonBufferSize); - DeserializationError error = deserializeJson(jsonBuffer, (uint8_t*)(request->_tempObject)); - if(!error) { - JsonObject json = jsonBuffer.as(); - - _onRequest(request, json); - return; - } + _onRequest(request); + return; } request->send(_contentLength > _maxContentLength ? 413 : 400); } else { diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 1abf9a574..237dd80dc 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912131 +#define VERSION 1912181 char versionString[] = "0.9.0-b1"; diff --git a/wled00/wled18_server.ino b/wled00/wled18_server.ino index c48d3785b..e101c997e 100644 --- a/wled00/wled18_server.ino +++ b/wled00/wled18_server.ino @@ -102,9 +102,20 @@ void initServer() serveJson(request); }); - AsyncCallbackJsonWebHandler* handler = new AsyncCallbackJsonWebHandler("/json", [](AsyncWebServerRequest *request, JsonObject root) { - if (root.isNull()){request->send(500, "application/json", "{\"error\":\"Parsing failed\"}"); return;} - if (deserializeState(root)) { serveJson(request); return; } //if JSON contains "v" (verbose response) + AsyncCallbackJsonWebHandler* handler = new AsyncCallbackJsonWebHandler("/json", [](AsyncWebServerRequest *request) { + bool verboseResponse = false; + if (1) { //scope JsonDocument so it releases its buffer + DynamicJsonDocument jsonBuffer(8192); + DeserializationError error = deserializeJson(jsonBuffer, (uint8_t*)(request->_tempObject)); + JsonObject root = jsonBuffer.as(); + if (error || root.isNull()) { + request->send(400, "application/json", "{\"error\":10}"); return; + } + verboseResponse = deserializeState(root); + } + if (verboseResponse) { //if JSON contains "v" + serveJson(request); return; + } request->send(200, "application/json", "{\"success\":true}"); }); server.addHandler(handler); From bd4d1cdd41fc4a0c376b2c44456b4bae3147bfa7 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 18 Dec 2019 00:47:24 +0100 Subject: [PATCH 15/70] Fix preset cycle --- wled00/wled00.ino | 2 +- wled00/wled19_json.ino | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 237dd80dc..9979c81aa 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912181 +#define VERSION 1912182 char versionString[] = "0.9.0-b1"; diff --git a/wled00/wled19_json.ino b/wled00/wled19_json.ino index 1c5e19eb4..3e135d406 100644 --- a/wled00/wled19_json.ino +++ b/wled00/wled19_json.ino @@ -88,8 +88,8 @@ bool deserializeState(JsonObject root) int ps = root["ps"] | -1; if (ps >= 0) applyPreset(ps); - int cy = root["pl"] | -1; - presetCyclingEnabled = (cy >= 0); + int cy = root["pl"] | -2; + if (cy > -2) presetCyclingEnabled = (cy >= 0); JsonObject ccnf = root["ccnf"]; presetCycleMin = ccnf["min"] | presetCycleMin; presetCycleMax = ccnf["max"] | presetCycleMax; From c1197d06fee0c32a359d3932b959b6b1ca6c83c3 Mon Sep 17 00:00:00 2001 From: Def3nder Date: Wed, 18 Dec 2019 13:33:27 +0100 Subject: [PATCH 16/70] Changes for 4CH and 5CH LED stripes ESP32 fixes for Solid RGBW (...not implemented for ESP32 yet) Use 5CH solid RGB stripes adapt the logic to use CW and WW for different CT-values change from Opt-out to Opt-In for analog LEDs Added new boards Alexa color changes to match white values with 4Ch and 5Ch LED stripes --- platformio.ini | 59 ++++++++++++++- wled00/NpbWrapper.h | 75 ++++++++++++++----- .../dependencies/espalexa/EspalexaDevice.cpp | 17 ++++- wled00/wled00.ino | 6 +- wled00/wled12_alexa.ino | 3 +- wled00/wled14_colors.ino | 2 +- 6 files changed, 134 insertions(+), 28 deletions(-) diff --git a/platformio.ini b/platformio.ini index 16d54e3c8..e20bb4695 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,9 @@ lib_extra_dirs = ./wled00/src ; env_default = esp01_1m ; env_default = d1_mini ; env_default = esp32dev - +; env_default = esp8285_4CH_MagicHome +; env_default = esp8285_4CH_H801 +; env_default = esp8285_5CH_H801 [common] framework = arduino @@ -57,8 +59,10 @@ arduino_core_2_4_1 = espressif8266@1.7.3 arduino_core_2_4_2 = espressif8266@1.8.0 arduino_core_2_5_0 = espressif8266@2.0.4 arduino_core_2_5_2 = espressif8266@2.2.3 +arduino_core_2_6_1 = espressif8266@2.3.0 +arduino_core_2_6_2 = espressif8266@2.3.1 arduino_core_stage = https://github.com/platformio/platform-espressif8266.git#feature/stage -platform = ${common:esp8266.arduino_core_2_5_2} +platform = ${common:esp8266.arduino_core_2_6_2} build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -Wl,-Teagle.flash.4m1m.ld ;;;; Required for core > v2.5.0 or staging version 4MB Flash 3MB SPIFFs @@ -74,7 +78,7 @@ build_flags = -D WLED_DISABLE_BLYNK -D WLED_DISABLE_CRONIXIE ; -D WLED_DISABLE_HUESYNC - -D WLED_DISABLE_INFRARED + ; -D WLED_DISABLE_INFRARED [common:esp8266_512k] platform = espressif8266@1.8.0 @@ -144,6 +148,7 @@ framework = ${common.framework} build_flags = ${common.build_flags} ${common:esp8266_512k.build_flags} + -D WLED_DISABLE_INFRARED lib_deps = ${common.lib_deps_external} @@ -160,4 +165,50 @@ build_flags = lib_deps = ${common.lib_deps_external} lib_ignore = - IRremoteESP8266 \ No newline at end of file + IRremoteESP8266 + + +[env:esp8285_4CH_MagicHome] +board = esp8285 +platform = ${common:esp8266_1M.platform} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +framework = ${common.framework} +build_flags = + ${common.build_flags} + ${common:esp8266_1M.build_flags} + -D WLED_DISABLE_HUESYNC + -D WLED_ENABLE_ANALOG_LEDS +lib_deps = + ${common.lib_deps_external} + +[env:esp8285_4CH_H801] +board = esp8285 +platform = ${common:esp8266.platform} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +framework = ${common.framework} +build_flags = + ${common.build_flags} + ${common:esp8266_1M.build_flags} + -D WLED_DISABLE_HUESYNC + -D WLED_ENABLE_ANALOG_LEDS + -D WLED_USE_H801 +lib_deps = + ${common.lib_deps_external} + +[env:esp8285_5CH_H801] +board = esp8285 +platform = ${common:esp8266_1M.platform} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +framework = ${common.framework} +build_flags = + ${common.build_flags} + ${common:esp8266_1M.build_flags} + -D WLED_DISABLE_HUESYNC + -D WLED_ENABLE_ANALOG_LEDS + -D WLED_USE_H801 + -D WLED_ENABLE_5CH_LEDS +lib_deps = + ${common.lib_deps_external} \ No newline at end of file diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h index 7adc73f23..0f1c510d3 100644 --- a/wled00/NpbWrapper.h +++ b/wled00/NpbWrapper.h @@ -5,9 +5,14 @@ //PIN CONFIGURATION #define LEDPIN 2 //strip pin. Any for ESP32, gpio2 or 3 is recommended for ESP8266 (gpio2/3 are labeled D4/RX on NodeMCU and Wemos) //#define USE_APA102 // Uncomment for using APA102 LEDs. -#define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended) -#define IR_PIN 4 //infrared pin (-1 to disable) -#define RLYPIN 12 //pin for relay, will be set HIGH if LEDs are on (-1 to disable). Also usable for standby leds, triggers,... +#ifdef WLED_USE_H801 + #define BTNPIN -1 //button pin. Needs to have pullup (gpio0 recommended) + #define IR_PIN 0 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0 +#else + #define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended) + #define IR_PIN 4 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0 +#endif +#define RLYPIN -1 //pin for relay, will be set HIGH if LEDs are on (-1 to disable). Also usable for standby leds, triggers,... #define AUXPIN -1 //debug auxiliary output pin (-1 to disable) #define RLYMDE 1 //mode for relay, 0: LOW if LEDs are on 1: HIGH if LEDs are on @@ -20,12 +25,21 @@ #endif #endif -#ifndef WLED_DISABLE_ANALOG_LEDS +#ifdef WLED_USE_ANALOG_LEDS + //PWM pins - PINs 15,13,12,14 (W2 = 04)are used with H801 Wifi LED Controller + #ifdef WLED_USE_H801 + #define RPIN 15 //R pin for analog LED strip + #define GPIN 13 //G pin for analog LED strip + #define BPIN 12 //B pin for analog LED strip + #define WPIN 14 //W pin for analog LED strip (W1: 14, W2: 04) + #define W2PIN 04 //W2 pin for analog LED strip + #else //PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller - #define RPIN 5 //R pin for analog LED strip - #define GPIN 12 //G pin for analog LED strip - #define BPIN 13 //B pin for analog LED strip - #define WPIN 15 //W pin for analog LED strip + #define RPIN 5 //R pin for analog LED strip + #define GPIN 12 //G pin for analog LED strip + #define BPIN 15 //B pin for analog LED strip + #define WPIN 13 //W pin for analog LED strip (W1: 14, W2: 04) + #endif #endif //automatically uses the right driver method for each platform @@ -112,14 +126,18 @@ public: _pGrbw->Begin(); break; - #ifndef WLED_DISABLE_ANALOG_LEDS + #ifdef WLED_USE_ANALOG_LEDS //init PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller pinMode(RPIN, OUTPUT); pinMode(GPIN, OUTPUT); pinMode(BPIN, OUTPUT); switch (_type) { - case NeoPixelType_Grb: break; - case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); break; + case NeoPixelType_Grb: break; + #ifdef WLED_USE_5CH_LEDS + case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); pinMode(W2PIN, OUTPUT); break; + #else + case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); break; + #endif } analogWriteRange(255); //same range as one RGB channel analogWriteFreq(880); //PWM frequency proven as good for LEDs @@ -128,15 +146,19 @@ public: } } -#ifndef WLED_DISABLE_ANALOG_LEDS - void SetRgbwPwm(uint8_t r, uint8_t g, uint8_t b, uint8_t w) +#ifdef WLED_USE_ANALOG_LEDS + void SetRgbwPwm(uint8_t r, uint8_t g, uint8_t b, uint8_t w, uint8_t w2=0) { analogWrite(RPIN, r); analogWrite(GPIN, g); analogWrite(BPIN, b); switch (_type) { - case NeoPixelType_Grb: break; - case NeoPixelType_Grbw: analogWrite(WPIN, w); break; + case NeoPixelType_Grb: break; + #ifdef WLED_USE_5CH_LEDS + case NeoPixelType_Grbw: analogWrite(WPIN, w); analogWrite(W2PIN, w2); break; + #else + case NeoPixelType_Grbw: analogWrite(WPIN, w); break; + #endif } } #endif @@ -148,7 +170,7 @@ public: { case NeoPixelType_Grb: { _pGrb->Show(); - #ifndef WLED_DISABLE_ANALOG_LEDS + #ifdef WLED_USE_ANALOG_LEDS RgbColor color = _pGrb->GetPixelColor(0); b = _pGrb->GetBrightness(); SetRgbwPwm(color.R * b / 255, color.G * b / 255, color.B * b / 255, 0); @@ -157,10 +179,27 @@ public: break; case NeoPixelType_Grbw: { _pGrbw->Show(); - #ifndef WLED_DISABLE_ANALOG_LEDS + #ifdef WLED_USE_ANALOG_LEDS RgbwColor colorW = _pGrbw->GetPixelColor(0); b = _pGrbw->GetBrightness(); - SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + // check color values for Warm / COld white mix (for RGBW) // EsplanexaDevice.cpp + #ifdef WLED_USE_5CH_LEDS + if (colorW.R == 255 & colorW.G == 255 && colorW.B == 255 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, 0, colorW.W * b / 255); + } else if (colorW.R == 127 & colorW.G == 127 && colorW.B == 127 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 512, colorW.W * b / 255); + } else if (colorW.R == 0 & colorW.G == 0 && colorW.B == 0 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 255, 0); + } else if (colorW.R == 130 & colorW.G == 90 && colorW.B == 0 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 255, colorW.W * b / 512); + } else if (colorW.R == 255 & colorW.G == 153 && colorW.B == 0 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 255, 0); + } else { // not only white colors + SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + } + #else + SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + #endif #endif } break; diff --git a/wled00/src/dependencies/espalexa/EspalexaDevice.cpp b/wled00/src/dependencies/espalexa/EspalexaDevice.cpp index 43ad6f02f..e8cff1645 100644 --- a/wled00/src/dependencies/espalexa/EspalexaDevice.cpp +++ b/wled00/src/dependencies/espalexa/EspalexaDevice.cpp @@ -110,8 +110,8 @@ uint32_t EspalexaDevice::getKelvin() uint32_t EspalexaDevice::getRGB() { if (_rgb != 0) return _rgb; //color has not changed - uint8_t rgb[3]; - float r, g, b; + byte rgb[4]{0, 0, 0, 0}; + float r, g, b, w; if (_mode == EspalexaColorMode::none) return 0; @@ -122,6 +122,15 @@ uint32_t EspalexaDevice::getRGB() float temp = 10000/ _ct; //kelvins = 1,000,000/mired (and that /100) float r, g, b; +// Cold white to warm white receiving from Alexa: _ct = 199, 234, 284, 350, 383 (from cold white to warm white) + switch (_ct) { + case 199: rgb[0]=255,rgb[1]=255,rgb[2]=255;rgb[3]=255;break; + case 234: rgb[0]=127,rgb[1]=127,rgb[2]=127;rgb[3]=255;break; + case 284: rgb[0]=0,rgb[1]=0,rgb[2]=0;rgb[3]=255;break; + case 350: rgb[0]=130,rgb[1]=90,rgb[2]=0;rgb[3]=255;break; + case 383: rgb[0]=255,rgb[1]=153,rgb[2]=0;rgb[3]=255;break; + default: { + if( temp <= 66 ){ r = 255; g = temp; @@ -143,6 +152,8 @@ uint32_t EspalexaDevice::getRGB() rgb[0] = (byte)constrain(r,0.1,255.1); rgb[1] = (byte)constrain(g,0.1,255.1); rgb[2] = (byte)constrain(b,0.1,255.1); + + } } else if (_mode == EspalexaColorMode::hs) { float h = ((float)_hue)/65535.0; @@ -216,7 +227,7 @@ uint32_t EspalexaDevice::getRGB() rgb[1] = 255.0*g; rgb[2] = 255.0*b; } - _rgb = ((rgb[0] << 16) | (rgb[1] << 8) | (rgb[2])); + _rgb = ((rgb[3] << 24) | (rgb[0] << 16) | (rgb[1] << 8) | (rgb[2])); //white value is only >0 if Alexa did provide a CT value, RGB colors will not be touched. return _rgb; } diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 1f3bcd268..de60f2020 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -33,7 +33,10 @@ //#define WLED_DEBUG //to toggle using analog RGB or RGBW led strips (un)comment the following line -//#define WLED_DISABLE_ANALOG_LEDS +//#define WLED_USE_ANALOG_LEDS + +//to toggle using 5CH analog RGBWS led strips (un)comment the following line +//#define WLED_USE_5CH_LEDS //library inclusions #include @@ -89,6 +92,7 @@ #endif #ifdef ARDUINO_ARCH_ESP32 + #undef WLED_USE_ANALOG_LEDS // Solid RGBW not implemented for ESP32 yet /*#ifndef WLED_DISABLE_INFRARED #include #endif*/ //there are issues with ESP32 infrared, so it is disabled for now diff --git a/wled00/wled12_alexa.ino b/wled00/wled12_alexa.ino index b858d2382..c3bc01ab0 100644 --- a/wled00/wled12_alexa.ino +++ b/wled00/wled12_alexa.ino @@ -62,10 +62,11 @@ void onAlexaChange(EspalexaDevice* dev) } else //color { uint32_t color = espalexaDevice->getRGB(); + col[3] = ((color >> 24) & 0xFF); // white color from Alexa is "pure white only" col[0] = ((color >> 16) & 0xFF); col[1] = ((color >> 8) & 0xFF); col[2] = (color & 0xFF); - if (useRGBW) colorRGBtoRGBW(col); + if (useRGBW && col[3] == 0) colorRGBtoRGBW(col); // do not touch white value if EspalexaDevice.cpp did set the white channel colorUpdated(10); } } diff --git a/wled00/wled14_colors.ino b/wled00/wled14_colors.ino index de57be9eb..9bedafb4b 100644 --- a/wled00/wled14_colors.ino +++ b/wled00/wled14_colors.ino @@ -158,6 +158,6 @@ void colorRGBtoRGBW(byte* rgb) //rgb to rgbw (http://codewelt.com/rgbw) float low = minf(rgb[0],minf(rgb[1],rgb[2])); float high = maxf(rgb[0],maxf(rgb[1],rgb[2])); if (high < 0.1f) return; - float sat = 255.0f * ((high - low) / high); + float sat = 100.0f * ((high - low) / high);; // maximum saturation is 100 (corrected from 255) rgb[3] = (byte)((255.0f - sat) / 255.0f * (rgb[0] + rgb[1] + rgb[2]) / 3); } From ed24f72cf9c9b82896573d14a718f3f1688a3a7c Mon Sep 17 00:00:00 2001 From: Def3nder Date: Wed, 18 Dec 2019 15:35:32 +0100 Subject: [PATCH 17/70] Changes for 4CH and 5CH LED stripes ESP32 fixes for Solid RGBW (...not implemented for ESP32 yet) Use 5CH solid RGB stripes adapt the logic to use CW and WW for different CT-values change from Opt-out to Opt-In for analog LEDs Added new boards Alexa color changes to match white values with 4Ch and 5Ch LED stripes bracket error Device definitions --- platformio.ini | 70 +++++++++++++++-- wled00/NpbWrapper.h | 75 ++++++++++++++----- .../dependencies/espalexa/EspalexaDevice.cpp | 18 ++++- wled00/wled00.ino | 6 +- wled00/wled12_alexa.ino | 3 +- wled00/wled14_colors.ino | 2 +- 6 files changed, 142 insertions(+), 32 deletions(-) diff --git a/platformio.ini b/platformio.ini index 16d54e3c8..4204910d0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -4,13 +4,17 @@ [platformio] src_dir = ./wled00 data_dir = ./wled00/data -lib_extra_dirs = ./wled00/src +;lib_extra_dirs = ./wled00/src +lib_dir = ./wled00/src ; Please uncomment one of the 5 lines below to select your board ; env_default = nodemcuv2 ; env_default = esp01 ; env_default = esp01_1m ; env_default = d1_mini ; env_default = esp32dev +; env_default = esp8285_4CH_MagicHome +; env_default = esp8285_4CH_H801 +; env_default = esp8285_5CH_H801 [common] @@ -31,6 +35,7 @@ lib_deps_external = FastLED@3.3.2 NeoPixelBus@2.5.1 ESPAsyncTCP@1.2.0 + ESPAsyncUDP@697c75a025 AsyncTCP@1.0.3 Esp Async WebServer@1.2.0 #ArduinoJson@5.13.5 @@ -57,8 +62,10 @@ arduino_core_2_4_1 = espressif8266@1.7.3 arduino_core_2_4_2 = espressif8266@1.8.0 arduino_core_2_5_0 = espressif8266@2.0.4 arduino_core_2_5_2 = espressif8266@2.2.3 +arduino_core_2_6_1 = espressif8266@2.3.0 +arduino_core_2_6_2 = espressif8266@2.3.1 arduino_core_stage = https://github.com/platformio/platform-espressif8266.git#feature/stage -platform = ${common:esp8266.arduino_core_2_5_2} +platform = ${common:esp8266.arduino_core_2_6_2} build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -Wl,-Teagle.flash.4m1m.ld ;;;; Required for core > v2.5.0 or staging version 4MB Flash 3MB SPIFFs @@ -74,7 +81,7 @@ build_flags = -D WLED_DISABLE_BLYNK -D WLED_DISABLE_CRONIXIE ; -D WLED_DISABLE_HUESYNC - -D WLED_DISABLE_INFRARED + ; -D WLED_DISABLE_INFRARED [common:esp8266_512k] platform = espressif8266@1.8.0 @@ -86,15 +93,15 @@ build_flags = ; -D WLED_DISABLE_ALEXA -D WLED_DISABLE_BLYNK -D WLED_DISABLE_CRONIXIE - ; -D WLED_DISABLE_HUESYNC - -D WLED_DISABLE_INFRARED + -D WLED_DISABLE_HUESYNC + ; -D WLED_DISABLE_INFRARED [common:esp32] -platform = espressif32@1.7.0 +platform = espressif32@1.11.1 build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -D ARDUINO_ARCH_ESP32 - -D WLED_DISABLE_INFRARED + -D WLED_DISABLE_INFRARED # see: http://docs.platformio.org/en/latest/platforms/espressif8266.html [env:nodemcuv2] @@ -121,6 +128,51 @@ build_flags = lib_deps = ${common.lib_deps_external} +[env:esp8285_4CH_MagicHome] +board = esp8285 +platform = ${common:esp8266_1M.platform} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +framework = ${common.framework} +build_flags = + ${common.build_flags} + ${common:esp8266_1M.build_flags} + -D WLED_DISABLE_HUESYNC + -D WLED_USE_ANALOG_LEDS +lib_deps = + ${common.lib_deps_external} + +[env:esp8285_4CH_H801] +board = esp8285 +platform = ${common:esp8266_1M.platform} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +framework = ${common.framework} +build_flags = + ${common.build_flags} + ${common:esp8266_1M.build_flags} + -D WLED_DISABLE_HUESYNC + -D WLED_USE_ANALOG_LEDS + -D WLED_USE_H801 +lib_deps = + ${common.lib_deps_external} + +[env:esp8285_5CH_H801] +board = esp8285 +platform = ${common:esp8266_1M.platform} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +framework = ${common.framework} +build_flags = + ${common.build_flags} + ${common:esp8266_1M.build_flags} + -D WLED_DISABLE_HUESYNC + -D WLED_USE_ANALOG_LEDS + -D WLED_USE_5CH_LEDS + -D WLED_USE_H801 +lib_deps = + ${common.lib_deps_external} + [env:esp01_1m] board = esp01_1m platform = ${common:esp8266_1M.platform} @@ -144,6 +196,7 @@ framework = ${common.framework} build_flags = ${common.build_flags} ${common:esp8266_512k.build_flags} + -D WLED_DISABLE_INFRARED lib_deps = ${common.lib_deps_external} @@ -160,4 +213,5 @@ build_flags = lib_deps = ${common.lib_deps_external} lib_ignore = - IRremoteESP8266 \ No newline at end of file + IRremoteESP8266 + ESPAsyncUDP \ No newline at end of file diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h index 7adc73f23..0f1c510d3 100644 --- a/wled00/NpbWrapper.h +++ b/wled00/NpbWrapper.h @@ -5,9 +5,14 @@ //PIN CONFIGURATION #define LEDPIN 2 //strip pin. Any for ESP32, gpio2 or 3 is recommended for ESP8266 (gpio2/3 are labeled D4/RX on NodeMCU and Wemos) //#define USE_APA102 // Uncomment for using APA102 LEDs. -#define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended) -#define IR_PIN 4 //infrared pin (-1 to disable) -#define RLYPIN 12 //pin for relay, will be set HIGH if LEDs are on (-1 to disable). Also usable for standby leds, triggers,... +#ifdef WLED_USE_H801 + #define BTNPIN -1 //button pin. Needs to have pullup (gpio0 recommended) + #define IR_PIN 0 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0 +#else + #define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended) + #define IR_PIN 4 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0 +#endif +#define RLYPIN -1 //pin for relay, will be set HIGH if LEDs are on (-1 to disable). Also usable for standby leds, triggers,... #define AUXPIN -1 //debug auxiliary output pin (-1 to disable) #define RLYMDE 1 //mode for relay, 0: LOW if LEDs are on 1: HIGH if LEDs are on @@ -20,12 +25,21 @@ #endif #endif -#ifndef WLED_DISABLE_ANALOG_LEDS +#ifdef WLED_USE_ANALOG_LEDS + //PWM pins - PINs 15,13,12,14 (W2 = 04)are used with H801 Wifi LED Controller + #ifdef WLED_USE_H801 + #define RPIN 15 //R pin for analog LED strip + #define GPIN 13 //G pin for analog LED strip + #define BPIN 12 //B pin for analog LED strip + #define WPIN 14 //W pin for analog LED strip (W1: 14, W2: 04) + #define W2PIN 04 //W2 pin for analog LED strip + #else //PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller - #define RPIN 5 //R pin for analog LED strip - #define GPIN 12 //G pin for analog LED strip - #define BPIN 13 //B pin for analog LED strip - #define WPIN 15 //W pin for analog LED strip + #define RPIN 5 //R pin for analog LED strip + #define GPIN 12 //G pin for analog LED strip + #define BPIN 15 //B pin for analog LED strip + #define WPIN 13 //W pin for analog LED strip (W1: 14, W2: 04) + #endif #endif //automatically uses the right driver method for each platform @@ -112,14 +126,18 @@ public: _pGrbw->Begin(); break; - #ifndef WLED_DISABLE_ANALOG_LEDS + #ifdef WLED_USE_ANALOG_LEDS //init PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller pinMode(RPIN, OUTPUT); pinMode(GPIN, OUTPUT); pinMode(BPIN, OUTPUT); switch (_type) { - case NeoPixelType_Grb: break; - case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); break; + case NeoPixelType_Grb: break; + #ifdef WLED_USE_5CH_LEDS + case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); pinMode(W2PIN, OUTPUT); break; + #else + case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); break; + #endif } analogWriteRange(255); //same range as one RGB channel analogWriteFreq(880); //PWM frequency proven as good for LEDs @@ -128,15 +146,19 @@ public: } } -#ifndef WLED_DISABLE_ANALOG_LEDS - void SetRgbwPwm(uint8_t r, uint8_t g, uint8_t b, uint8_t w) +#ifdef WLED_USE_ANALOG_LEDS + void SetRgbwPwm(uint8_t r, uint8_t g, uint8_t b, uint8_t w, uint8_t w2=0) { analogWrite(RPIN, r); analogWrite(GPIN, g); analogWrite(BPIN, b); switch (_type) { - case NeoPixelType_Grb: break; - case NeoPixelType_Grbw: analogWrite(WPIN, w); break; + case NeoPixelType_Grb: break; + #ifdef WLED_USE_5CH_LEDS + case NeoPixelType_Grbw: analogWrite(WPIN, w); analogWrite(W2PIN, w2); break; + #else + case NeoPixelType_Grbw: analogWrite(WPIN, w); break; + #endif } } #endif @@ -148,7 +170,7 @@ public: { case NeoPixelType_Grb: { _pGrb->Show(); - #ifndef WLED_DISABLE_ANALOG_LEDS + #ifdef WLED_USE_ANALOG_LEDS RgbColor color = _pGrb->GetPixelColor(0); b = _pGrb->GetBrightness(); SetRgbwPwm(color.R * b / 255, color.G * b / 255, color.B * b / 255, 0); @@ -157,10 +179,27 @@ public: break; case NeoPixelType_Grbw: { _pGrbw->Show(); - #ifndef WLED_DISABLE_ANALOG_LEDS + #ifdef WLED_USE_ANALOG_LEDS RgbwColor colorW = _pGrbw->GetPixelColor(0); b = _pGrbw->GetBrightness(); - SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + // check color values for Warm / COld white mix (for RGBW) // EsplanexaDevice.cpp + #ifdef WLED_USE_5CH_LEDS + if (colorW.R == 255 & colorW.G == 255 && colorW.B == 255 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, 0, colorW.W * b / 255); + } else if (colorW.R == 127 & colorW.G == 127 && colorW.B == 127 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 512, colorW.W * b / 255); + } else if (colorW.R == 0 & colorW.G == 0 && colorW.B == 0 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 255, 0); + } else if (colorW.R == 130 & colorW.G == 90 && colorW.B == 0 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 255, colorW.W * b / 512); + } else if (colorW.R == 255 & colorW.G == 153 && colorW.B == 0 && colorW.W == 255) { + SetRgbwPwm(0, 0, 0, colorW.W * b / 255, 0); + } else { // not only white colors + SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + } + #else + SetRgbwPwm(colorW.R * b / 255, colorW.G * b / 255, colorW.B * b / 255, colorW.W * b / 255); + #endif #endif } break; diff --git a/wled00/src/dependencies/espalexa/EspalexaDevice.cpp b/wled00/src/dependencies/espalexa/EspalexaDevice.cpp index 43ad6f02f..df859c1d9 100644 --- a/wled00/src/dependencies/espalexa/EspalexaDevice.cpp +++ b/wled00/src/dependencies/espalexa/EspalexaDevice.cpp @@ -110,8 +110,8 @@ uint32_t EspalexaDevice::getKelvin() uint32_t EspalexaDevice::getRGB() { if (_rgb != 0) return _rgb; //color has not changed - uint8_t rgb[3]; - float r, g, b; + byte rgb[4]{0, 0, 0, 0}; + float r, g, b, w; if (_mode == EspalexaColorMode::none) return 0; @@ -122,6 +122,15 @@ uint32_t EspalexaDevice::getRGB() float temp = 10000/ _ct; //kelvins = 1,000,000/mired (and that /100) float r, g, b; +// Cold white to warm white receiving from Alexa: _ct = 199, 234, 284, 350, 383 (from cold white to warm white) + switch (_ct) { + case 199: rgb[0]=255,rgb[1]=255,rgb[2]=255;rgb[3]=255;break; + case 234: rgb[0]=127,rgb[1]=127,rgb[2]=127;rgb[3]=255;break; + case 284: rgb[0]=0,rgb[1]=0,rgb[2]=0;rgb[3]=255;break; + case 350: rgb[0]=130,rgb[1]=90,rgb[2]=0;rgb[3]=255;break; + case 383: rgb[0]=255,rgb[1]=153,rgb[2]=0;rgb[3]=255;break; + default: { + if( temp <= 66 ){ r = 255; g = temp; @@ -143,6 +152,9 @@ uint32_t EspalexaDevice::getRGB() rgb[0] = (byte)constrain(r,0.1,255.1); rgb[1] = (byte)constrain(g,0.1,255.1); rgb[2] = (byte)constrain(b,0.1,255.1); + + } + } } else if (_mode == EspalexaColorMode::hs) { float h = ((float)_hue)/65535.0; @@ -216,7 +228,7 @@ uint32_t EspalexaDevice::getRGB() rgb[1] = 255.0*g; rgb[2] = 255.0*b; } - _rgb = ((rgb[0] << 16) | (rgb[1] << 8) | (rgb[2])); + _rgb = ((rgb[3] << 24) | (rgb[0] << 16) | (rgb[1] << 8) | (rgb[2])); //white value is only >0 if Alexa did provide a CT value, RGB colors will not be touched. return _rgb; } diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 1f3bcd268..de60f2020 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -33,7 +33,10 @@ //#define WLED_DEBUG //to toggle using analog RGB or RGBW led strips (un)comment the following line -//#define WLED_DISABLE_ANALOG_LEDS +//#define WLED_USE_ANALOG_LEDS + +//to toggle using 5CH analog RGBWS led strips (un)comment the following line +//#define WLED_USE_5CH_LEDS //library inclusions #include @@ -89,6 +92,7 @@ #endif #ifdef ARDUINO_ARCH_ESP32 + #undef WLED_USE_ANALOG_LEDS // Solid RGBW not implemented for ESP32 yet /*#ifndef WLED_DISABLE_INFRARED #include #endif*/ //there are issues with ESP32 infrared, so it is disabled for now diff --git a/wled00/wled12_alexa.ino b/wled00/wled12_alexa.ino index b858d2382..c3bc01ab0 100644 --- a/wled00/wled12_alexa.ino +++ b/wled00/wled12_alexa.ino @@ -62,10 +62,11 @@ void onAlexaChange(EspalexaDevice* dev) } else //color { uint32_t color = espalexaDevice->getRGB(); + col[3] = ((color >> 24) & 0xFF); // white color from Alexa is "pure white only" col[0] = ((color >> 16) & 0xFF); col[1] = ((color >> 8) & 0xFF); col[2] = (color & 0xFF); - if (useRGBW) colorRGBtoRGBW(col); + if (useRGBW && col[3] == 0) colorRGBtoRGBW(col); // do not touch white value if EspalexaDevice.cpp did set the white channel colorUpdated(10); } } diff --git a/wled00/wled14_colors.ino b/wled00/wled14_colors.ino index de57be9eb..9bedafb4b 100644 --- a/wled00/wled14_colors.ino +++ b/wled00/wled14_colors.ino @@ -158,6 +158,6 @@ void colorRGBtoRGBW(byte* rgb) //rgb to rgbw (http://codewelt.com/rgbw) float low = minf(rgb[0],minf(rgb[1],rgb[2])); float high = maxf(rgb[0],maxf(rgb[1],rgb[2])); if (high < 0.1f) return; - float sat = 255.0f * ((high - low) / high); + float sat = 100.0f * ((high - low) / high);; // maximum saturation is 100 (corrected from 255) rgb[3] = (byte)((255.0f - sat) / 255.0f * (rgb[0] + rgb[1] + rgb[2]) / 3); } From 4c58929dd414fb834001a94f809485962349e3ee Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 19 Dec 2019 21:08:21 +0100 Subject: [PATCH 18/70] Fix compile --- wled00/NpbWrapper.h | 1 - wled00/wled00.ino | 10 ++-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h index fd8366187..ad841c8fb 100644 --- a/wled00/NpbWrapper.h +++ b/wled00/NpbWrapper.h @@ -37,7 +37,6 @@ #undef BTNPIN #undef IR_PIN #define IR_PIN 0 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0 -#endif #else //PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller #define RPIN 5 //R pin for analog LED strip diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 930b54597..8be245c86 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -32,12 +32,6 @@ //to toggle usb serial debug (un)comment the following line //#define WLED_DEBUG -//to toggle using analog RGB or RGBW led strips (un)comment the following line -//#define WLED_USE_ANALOG_LEDS - -//to toggle using 5CH analog RGBWS led strips (un)comment the following line -//#define WLED_USE_5CH_LEDS - //library inclusions #include #ifdef ESP8266 @@ -104,8 +98,8 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912182 -char versionString[] = "0.9.0-b1"; +#define VERSION 1912191 +char versionString[] = "0.9.0-b2"; //AP and OTA default passwords (for maximum change them!) From 112ba7ac5cbfce7835975936bf2705f7545a7a84 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 19 Dec 2019 21:31:14 +0100 Subject: [PATCH 19/70] Fix compile for analog --- wled00/NpbWrapper.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h index ad841c8fb..a704e4269 100644 --- a/wled00/NpbWrapper.h +++ b/wled00/NpbWrapper.h @@ -6,8 +6,8 @@ #define LEDPIN 2 //strip pin. Any for ESP32, gpio2 or 3 is recommended for ESP8266 (gpio2/3 are labeled D4/RX on NodeMCU and Wemos) //#define USE_APA102 // Uncomment for using APA102 LEDs. //#define WLED_USE_ANALOG_LEDS //Uncomment for using "dumb" PWM controlled LEDs (see pins below, default R: gpio5, G: 12, B: 15, W: 13) -//#define WLED_USE_H801 //H801 5 channel controller. Please uncomment #define WLED_USE_ANALOG_LEDS as well -//#define WLED_USE_5CH +//#define WLED_USE_H801 //H801 controller. Please uncomment #define WLED_USE_ANALOG_LEDS as well +//#define WLED_USE_5CH //5 Channel H801 for cold and warm white #define BTNPIN 0 //button pin. Needs to have pullup (gpio0 recommended) #define IR_PIN 4 //infrared pin (-1 to disable) MagicHome: 4, H801 Wifi: 0 @@ -185,9 +185,9 @@ public: case NeoPixelType_Grb: { _pGrb->SetPixelColor(indexPixel, RgbColor(color.R,color.G,color.B)); #ifdef WLED_USE_ANALOG_LEDS - if (indexPixel != 0) return; //set analog LEDs from first pixel - b = _pGrb->GetBrightness(); - SetRgbwPwm(color.R * b / 255, color.G * b / 255, color.B * b / 255, 0); + if (indexPixel != 0) return; //set analog LEDs from first pixel + byte b = _pGrb->GetBrightness(); + SetRgbwPwm(color.R * b / 255, color.G * b / 255, color.B * b / 255, 0); #endif } break; @@ -195,7 +195,7 @@ public: _pGrbw->SetPixelColor(indexPixel, color); #ifdef WLED_USE_ANALOG_LEDS if (indexPixel != 0) return; //set analog LEDs from first pixel - b = _pGrbw->GetBrightness(); + byte b = _pGrbw->GetBrightness(); // check color values for Warm / Cold white mix (for RGBW) // EsplanexaDevice.cpp #ifdef WLED_USE_5CH_LEDS if (color.R == 255 & color.G == 255 && color.B == 255 && color.W == 255) { From 6d438545579e1e306c1cd5588937fdefcabe9526 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 19 Dec 2019 23:43:18 +0100 Subject: [PATCH 20/70] Fix PIO --- platformio.ini | 47 +---------------------------------------------- 1 file changed, 1 insertion(+), 46 deletions(-) diff --git a/platformio.ini b/platformio.ini index fe390a5da..c4cac76d1 100644 --- a/platformio.ini +++ b/platformio.ini @@ -127,51 +127,6 @@ build_flags = lib_deps = ${common.lib_deps_external} -[env:esp8285_4CH_MagicHome] -board = esp8285 -platform = ${common:esp8266_1M.platform} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -framework = ${common.framework} -build_flags = - ${common.build_flags} - ${common:esp8266_1M.build_flags} - -D WLED_DISABLE_HUESYNC - -D WLED_USE_ANALOG_LEDS -lib_deps = - ${common.lib_deps_external} - -[env:esp8285_4CH_H801] -board = esp8285 -platform = ${common:esp8266_1M.platform} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -framework = ${common.framework} -build_flags = - ${common.build_flags} - ${common:esp8266_1M.build_flags} - -D WLED_DISABLE_HUESYNC - -D WLED_USE_ANALOG_LEDS - -D WLED_USE_H801 -lib_deps = - ${common.lib_deps_external} - -[env:esp8285_5CH_H801] -board = esp8285 -platform = ${common:esp8266_1M.platform} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -framework = ${common.framework} -build_flags = - ${common.build_flags} - ${common:esp8266_1M.build_flags} - -D WLED_DISABLE_HUESYNC - -D WLED_USE_ANALOG_LEDS - -D WLED_USE_5CH_LEDS - -D WLED_USE_H801 -lib_deps = - ${common.lib_deps_external} - [env:esp01_1m] board = esp01_1m platform = ${common:esp8266_1M.platform} @@ -231,7 +186,7 @@ lib_deps = [env:esp8285_4CH_H801] board = esp8285 -platform = ${common:esp8266.platform} +platform = ${common:esp8266_1M.platform} monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} framework = ${common.framework} From 94200dd3a4bba99d2072f83a0d227ceb9dc6ed05 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sat, 21 Dec 2019 03:17:54 +0100 Subject: [PATCH 21/70] Fixed effects (#466) --- wled00/FX.cpp | 50 +++++++++++++++++++++++++--------------- wled00/wled00.ino | 4 ++-- wled00/wled18_server.ino | 2 +- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index fc13c60d9..82ec2cf45 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -151,7 +151,7 @@ uint16_t WS2812FX::color_wipe(bool rev, bool useRandomColors) { uint32_t col1 = useRandomColors? color_wheel(SEGENV.aux1) : SEGCOLOR(1); for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { - uint16_t index = (rev && back)? SEGMENT.stop -1 -i : i; + uint16_t index = (rev && back)? SEGMENT.stop -1 -i +SEGMENT.start : i; uint32_t col0 = useRandomColors? color_wheel(SEGENV.aux0) : color_from_palette(index, true, PALETTE_SOLID_WRAP, 0); if (i - SEGMENT.start < ledIndex) @@ -729,33 +729,40 @@ uint16_t WS2812FX::mode_colorful(void) { cols[3] = 0x0077F0F0; for (uint8_t i = 4; i < 7; i++) cols[i] = cols[i-4]; } - int i = SEGMENT.start; - for (i; i < SEGMENT.stop ; i+=4) + + uint32_t cycleTime = 50 + (15 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (it != SEGENV.step) { - setPixelColor(i, cols[SEGENV.step]); - setPixelColor(i+1, cols[SEGENV.step+1]); - setPixelColor(i+2, cols[SEGENV.step+2]); - setPixelColor(i+3, cols[SEGENV.step+3]); + if (SEGMENT.speed > 0) SEGENV.aux0++; + if (SEGENV.aux0 > 3) SEGENV.aux0 = 0; + SEGENV.step = it; + } + + uint16_t i = SEGMENT.start; + for (i; i < SEGMENT.stop -3; i+=4) + { + setPixelColor(i, cols[SEGENV.aux0]); + setPixelColor(i+1, cols[SEGENV.aux0+1]); + setPixelColor(i+2, cols[SEGENV.aux0+2]); + setPixelColor(i+3, cols[SEGENV.aux0+3]); } - i+=4; if(i < SEGMENT.stop) { - setPixelColor(i, cols[SEGENV.step]); + setPixelColor(i, cols[SEGENV.aux0]); if(i+1 < SEGMENT.stop) { - setPixelColor(i+1, cols[SEGENV.step+1]); + setPixelColor(i+1, cols[SEGENV.aux0+1]); if(i+2 < SEGMENT.stop) { - setPixelColor(i+2, cols[SEGENV.step+2]); + setPixelColor(i+2, cols[SEGENV.aux0+2]); } } } - if (SEGMENT.speed > 0) SEGENV.step++; //static if lowest speed - if (SEGENV.step >3) SEGENV.step = 0; - return 50 + (15 * (uint32_t)(255 - SEGMENT.speed)); + return FRAMETIME; } @@ -768,7 +775,7 @@ uint16_t WS2812FX::mode_traffic_light(void) { uint32_t mdelay = 500; for (int i = SEGMENT.start; i < SEGMENT.stop-2 ; i+=3) { - switch (SEGENV.step) + switch (SEGENV.aux0) { case 0: setPixelColor(i, 0x00FF0000); mdelay = 150 + (100 * (uint32_t)(255 - SEGMENT.speed));break; case 1: setPixelColor(i, 0x00FF0000); mdelay = 150 + (20 * (uint32_t)(255 - SEGMENT.speed)); setPixelColor(i+1, 0x00EECC00); break; @@ -777,9 +784,14 @@ uint16_t WS2812FX::mode_traffic_light(void) { } } - SEGENV.step++; - if (SEGENV.step >3) SEGENV.step = 0; - return mdelay; + if (now - SEGENV.step > mdelay) + { + SEGENV.aux0++; + if (SEGENV.aux0 > 3) SEGENV.aux0 = 0; + SEGENV.step = now; + } + + return FRAMETIME; } @@ -1074,7 +1086,7 @@ uint16_t WS2812FX::gradient_base(bool loading) { } per = val/brd; if (per >1.0) per = 1.0; - setPixelColor(SEGMENT.start + i, color_blend(SEGCOLOR(0), color_from_palette(SEGMENT.start + i, true, PALETTE_SOLID_WRAP, 1), per*255)); + setPixelColor(i, color_blend(SEGCOLOR(0), color_from_palette(i, true, PALETTE_SOLID_WRAP, 1), per*255)); } SEGENV.step++; diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 8be245c86..34403ee37 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -3,7 +3,7 @@ */ /* * @title WLED project sketch - * @version 0.9.0-b1 + * @version 0.9.0-b2 * @author Christian Schwinne */ @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912191 +#define VERSION 1912211 char versionString[] = "0.9.0-b2"; diff --git a/wled00/wled18_server.ino b/wled00/wled18_server.ino index e101c997e..f7162d3e5 100644 --- a/wled00/wled18_server.ino +++ b/wled00/wled18_server.ino @@ -104,7 +104,7 @@ void initServer() AsyncCallbackJsonWebHandler* handler = new AsyncCallbackJsonWebHandler("/json", [](AsyncWebServerRequest *request) { bool verboseResponse = false; - if (1) { //scope JsonDocument so it releases its buffer + { //scope JsonDocument so it releases its buffer DynamicJsonDocument jsonBuffer(8192); DeserializationError error = deserializeJson(jsonBuffer, (uint8_t*)(request->_tempObject)); JsonObject root = jsonBuffer.as(); From f92ee8e7626976c7b5fcb9d801ead5c288b30326 Mon Sep 17 00:00:00 2001 From: Bobby Walker Date: Sat, 21 Dec 2019 18:49:25 -0600 Subject: [PATCH 22/70] Break out SDA and SCL pins into defines. --- usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino index 915289523..6493cb589 100644 --- a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino +++ b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino @@ -1,12 +1,18 @@ #include // from https://github.com/olikraus/u8g2/ +//The SCL and SDA pins are defined here. +//Lolin32 boards use SCL=4 SDA=5 +#define U8X8_PIN_SCL 5 +#define U8X8_PIN_SDA 4 + + // If display does not work or looks corrupted check the // constructor reference: // https://github.com/olikraus/u8g2/wiki/u8x8setupcpp // or check the gallery: // https://github.com/olikraus/u8g2/wiki/gallery -U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE, 5, - 4); // Pins are Reset, SCL, SDA +U8X8_SSD1306_128X32_UNIVISION_HW_I2C u8x8(U8X8_PIN_NONE, U8X8_PIN_SCL, + U8X8_PIN_SDA); // Pins are Reset, SCL, SDA // gets called once at boot. Do all initialization that doesn't depend on // network here From 3dcda0873554914d241701d4c22d8869b9ebcdec Mon Sep 17 00:00:00 2001 From: Bobby Walker Date: Sat, 21 Dec 2019 18:50:33 -0600 Subject: [PATCH 23/70] Corrected ip and ssid to be knownIp and knownSsid --- usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino index 6493cb589..c70e1df0a 100644 --- a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino +++ b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino @@ -80,9 +80,9 @@ void userLoop() { // First row with Wifi name u8x8.setCursor(1, 0); - u8x8.print(ssid.substring(0, u8x8.getCols() > 1 ? u8x8.getCols() - 2 : 0)); + u8x8.print(knownSsid.substring(0, u8x8.getCols() > 1 ? u8x8.getCols() - 2 : 0)); // Print `~` char to indicate that SSID is longer, than owr dicplay - if (ssid.length() > u8x8.getCols()) + if (knownSsid.length() > u8x8.getCols()) u8x8.print("~"); // Second row with IP or Psssword @@ -91,7 +91,7 @@ void userLoop() { if (apActive && bri == 0) u8x8.print(apPass); else - u8x8.print(ip); + u8x8.print(knownIp); // Third row with mode name u8x8.setCursor(2, 2); From 6b8e9a63f3bd6602d39f2f087ba7feea3c7f51b8 Mon Sep 17 00:00:00 2001 From: Bobby Walker Date: Sat, 21 Dec 2019 18:53:37 -0600 Subject: [PATCH 24/70] define to make knownSsid compatible with esp32 --- usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino index c70e1df0a..5fca51cf4 100644 --- a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino +++ b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino @@ -69,7 +69,11 @@ void userLoop() { needRedraw = false; // Update last known values. + #ifdef(ESP8266) knownSsid = apActive ? WiFi.softAPSSID() : WiFi.SSID(); + #else + knownSsid = WiFi.SSID(); + #endif knownIp = apActive ? IPAddress(4, 3, 2, 1) : WiFi.localIP(); knownBrightness = bri; knownMode = strip.getMode(); From 5f235c121d19a55296d66f16495a23e962aa6780 Mon Sep 17 00:00:00 2001 From: Bobby Walker Date: Sat, 21 Dec 2019 18:59:12 -0600 Subject: [PATCH 25/70] correction form ifdef to if defined --- usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino index 5fca51cf4..c73170645 100644 --- a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino +++ b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino @@ -69,7 +69,7 @@ void userLoop() { needRedraw = false; // Update last known values. - #ifdef(ESP8266) + #if defined(ESP8266) knownSsid = apActive ? WiFi.softAPSSID() : WiFi.SSID(); #else knownSsid = WiFi.SSID(); From c0ac381f6f755e2cccf0c058bf63b2c09c19444b Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Sun, 22 Dec 2019 17:41:32 +0100 Subject: [PATCH 26/70] rework effects to frametime --- wled00/FX.cpp | 114 ++++++++++++++++++++++++++------------------------ 1 file changed, 59 insertions(+), 55 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c862a0854..5ec1385a5 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -947,18 +947,17 @@ uint16_t WS2812FX::mode_running_random(void) { * K.I.T.T. */ uint16_t WS2812FX::mode_larson_scanner(void) { + uint16_t counter = now * (SEGMENT.speed >>3) +1; + uint16_t index = counter * SEGLEN * 2 >> 16; + fade_out(SEGMENT.intensity); - uint16_t index = 0; - if(SEGENV.step < SEGLEN) { - index = SEGMENT.start + SEGENV.step; - } else { - index = SEGMENT.start + ((SEGLEN * 2) - SEGENV.step) - 2; + if (index >= SEGLEN) { + index = SEGLEN - (index - SEGLEN + 1); } setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); - SEGENV.step = (SEGENV.step + 1) % ((SEGLEN * 2) - 2); - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -966,13 +965,14 @@ uint16_t WS2812FX::mode_larson_scanner(void) { * Firing comets from one end. */ uint16_t WS2812FX::mode_comet(void) { + uint16_t counter = now * (SEGMENT.speed >>3) +1; + uint16_t index = counter * SEGLEN >> 16; + fade_out(SEGMENT.intensity); - uint16_t index = SEGMENT.start + SEGENV.step; setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); - SEGENV.step = (SEGENV.step + 1) % SEGLEN; - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -1058,12 +1058,12 @@ uint16_t WS2812FX::gradient_base(bool loading) { if (SEGENV.call == 0) SEGENV.step = 0; float per,val; //0.0 = sec 1.0 = pri float brd = SEGMENT.intensity; - if (!loading) brd = SEGMENT.intensity/2; + if (!loading) brd = SEGMENT.intensity/2; if (brd <1.0) brd = 1.0; int pp = SEGENV.step; int p1 = pp-SEGLEN; int p2 = pp+SEGLEN; - + for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { if (loading) @@ -1074,9 +1074,9 @@ uint16_t WS2812FX::gradient_base(bool loading) { } per = val/brd; if (per >1.0) per = 1.0; - setPixelColor(SEGMENT.start + i, color_blend(SEGCOLOR(0), color_from_palette(SEGMENT.start + i, true, PALETTE_SOLID_WRAP, 1), per*255)); + setPixelColor(i, color_blend(SEGCOLOR(0), color_from_palette(i, true, PALETTE_SOLID_WRAP, 1), per*255)); } - + SEGENV.step++; if (SEGENV.step >= SEGMENT.stop) SEGENV.step = SEGMENT.start; if (SEGMENT.speed == 0) SEGENV.step = SEGMENT.start + (SEGLEN >> 1); @@ -1199,7 +1199,7 @@ uint16_t WS2812FX::mode_icu(void) { byte pindex = map(dest, 0, SEGLEN/2, 0, 255); uint32_t col = color_from_palette(pindex, false, false, 0); - + setPixelColor(SEGMENT.start + dest, col); setPixelColor(SEGMENT.start + dest + SEGLEN/2, col); @@ -1278,9 +1278,9 @@ uint16_t WS2812FX::mode_tricolor_fade(void) uint32_t color = 0; for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { if (stage == 2) { - color = color_blend(color_from_palette(i, true, PALETTE_SOLID_WRAP, 2), color2, stp); + color = color_blend(color_from_palette(i, true, PALETTE_SOLID_WRAP, 2), color2, stp); } else if (stage == 1) { - color = color_blend(color1, color_from_palette(i, true, PALETTE_SOLID_WRAP, 2), stp); + color = color_blend(color1, color_from_palette(i, true, PALETTE_SOLID_WRAP, 2), stp); } else { color = color_blend(color1, color2, stp); } @@ -1330,19 +1330,13 @@ uint16_t WS2812FX::mode_multi_comet(void) * Custom mode by Keith Lord: https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/DualLarson.h */ uint16_t WS2812FX::mode_dual_larson_scanner(void){ - if (SEGENV.aux0) - { - SEGENV.step--; - } else - { - SEGENV.step++; - } + uint16_t counter = now * (SEGMENT.speed >>3) +1; + uint16_t index = counter * SEGLEN >> 16; fade_out(SEGMENT.intensity); - uint16_t index = SEGMENT.start + SEGENV.step; setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); - index = SEGMENT.stop - SEGENV.step -1; + index = SEGMENT.stop - index -1; if (SEGCOLOR(2) != 0) { setPixelColor(index, SEGCOLOR(2)); @@ -1351,10 +1345,7 @@ uint16_t WS2812FX::mode_dual_larson_scanner(void){ setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); } - if(SEGENV.step >= SEGLEN -1 || SEGENV.step <= 0) - SEGENV.aux0 = !SEGENV.aux0; - - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -1383,40 +1374,53 @@ typedef struct Oscillator { int8_t size; int8_t dir; int8_t speed; + uint16_t timeref; } oscillator; +/* +/ Oscillating bars of color, updated with standard framerate +*/ uint16_t WS2812FX::mode_oscillate(void) { - static oscillator oscillators[2] = { - {SEGLEN/4, SEGLEN/8, 1, 1}, - {SEGLEN/4*2, SEGLEN/8, -1, 1} - //{SEGLEN/4*3, SEGLEN/8, 1, 2} + uint16_t counter; + uint16_t index; + + static oscillator oscillators[NUM_COLORS] = { + {SEGLEN-1, SEGLEN/8, -1, 4}, + {0, SEGLEN/8, 1, 3}, + {SEGLEN-1, SEGLEN/8, -1, 2} }; for(int8_t i=0; i < sizeof(oscillators)/sizeof(oscillators[0]); i++) { - oscillators[i].pos += oscillators[i].dir * oscillators[i].speed; - if((oscillators[i].dir == -1) && (oscillators[i].pos <= 0)) { - oscillators[i].pos = 0; - oscillators[i].dir = 1; - oscillators[i].speed = random8(1, 3); + oscillators[i].size = SEGLEN/(3+SEGMENT.intensity/8); + //calculate the change since last cycle + counter = (now - oscillators[i].timeref) * ((SEGMENT.speed >> oscillators[i].speed) +1); + index = (counter * SEGLEN) >> 16; + + if (oscillators[i].dir == -1) { + oscillators[i].pos = SEGLEN - 1 - index; + } else { + oscillators[i].pos = index; } - if((oscillators[i].dir == 1) && (oscillators[i].pos >= (SEGLEN - 1))) { - oscillators[i].pos = SEGLEN - 1; - oscillators[i].dir = -1; - oscillators[i].speed = random8(1, 3); + + if (index >= SEGLEN - 1) { + //switch direction once while at each end of cycle + if (now - oscillators[i].timeref > 1000) oscillators[i].dir *= -1; + oscillators[i].timeref = now; + oscillators[i].speed = random8(2, 4); } } - + for(int16_t i=0; i < SEGLEN; i++) { uint32_t color = BLACK; for(int8_t j=0; j < sizeof(oscillators)/sizeof(oscillators[0]); j++) { if(i >= oscillators[j].pos - oscillators[j].size && i <= oscillators[j].pos + oscillators[j].size) { - color = (color == BLACK) ? SEGMENT.colors[j] : color_blend(color, SEGMENT.colors[j], 128); + color = (color == BLACK) ? SEGCOLOR(j) : color_blend(color, SEGCOLOR(j), 128); } } setPixelColor(SEGMENT.start + i, color); } - return 15 + (uint32_t)(255 - SEGMENT.speed); + return FRAMETIME; } @@ -1424,17 +1428,17 @@ uint16_t WS2812FX::mode_lightning(void) { uint16_t ledstart = SEGMENT.start + random16(SEGLEN); // Determine starting location of flash uint16_t ledlen = random16(SEGMENT.stop -1 -ledstart); // Determine length of flash (not to go beyond NUM_LEDS-1) - uint8_t bri = 255/random8(1, 3); + uint8_t bri = 255/random8(1, 3); if (SEGENV.step == 0) { SEGENV.aux0 = random8(3, 3 + SEGMENT.intensity/20); //number of flashes - bri = 52; + bri = 52; SEGENV.aux1 = 1; } fill(SEGCOLOR(1)); - + if (SEGENV.aux1) { for (int i = ledstart; i < ledstart + ledlen; i++) { @@ -1468,7 +1472,7 @@ uint16_t WS2812FX::mode_pride_2015(void) uint16_t duration = 10 + SEGMENT.speed; uint16_t sPseudotime = SEGENV.step; uint16_t sHue16 = SEGENV.aux0; - + uint8_t sat8 = beatsin88( 87, 220, 250); uint8_t brightdepth = beatsin88( 341, 96, 224); uint16_t brightnessthetainc16 = beatsin88( 203, (25 * 256), (40 * 256)); @@ -1476,12 +1480,12 @@ uint16_t WS2812FX::mode_pride_2015(void) uint16_t hue16 = sHue16;//gHue * 256; uint16_t hueinc16 = beatsin88(113, 1, 3000); - + sPseudotime += duration * msmultiplier; sHue16 += duration * beatsin88( 400, 5,9); uint16_t brightnesstheta16 = sPseudotime; CRGB fastled_col; - + for( uint16_t i = SEGMENT.start ; i < SEGMENT.stop; i++) { hue16 += hueinc16; uint8_t hue8 = hue16 >> 8; @@ -1492,16 +1496,16 @@ uint16_t WS2812FX::mode_pride_2015(void) uint16_t bri16 = (uint32_t)((uint32_t)b16 * (uint32_t)b16) / 65536; uint8_t bri8 = (uint32_t)(((uint32_t)bri16) * brightdepth) / 65536; bri8 += (255 - brightdepth); - + CRGB newcolor = CHSV( hue8, sat8, bri8); fastled_col = col_to_crgb(getPixelColor(i)); - + nblend( fastled_col, newcolor, 64); setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } SEGENV.step = sPseudotime; SEGENV.aux0 = sHue16; - return 20; + return FRAMETIME; } From cb669005759bcc90b59bfe2409d7a2f37ac85678 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 23 Dec 2019 13:06:14 +0100 Subject: [PATCH 27/70] More effects using FRAMETIME --- wled00/FX.cpp | 38 +++++++++++++++++++------------------- wled00/FX.h | 2 +- wled00/wled00.ino | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 82ec2cf45..87edbba06 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -116,7 +116,7 @@ uint16_t WS2812FX::mode_strobe_rainbow(void) { * if (bool rev == true) then LEDs are turned off in reverse order */ uint16_t WS2812FX::color_wipe(bool rev, bool useRandomColors) { - uint32_t cycleTime = 1000 + (255 - SEGMENT.speed)*200; + uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; uint32_t perc = now % cycleTime; uint16_t prog = (perc * 65535) / cycleTime; bool back = (prog > 32767); @@ -298,13 +298,14 @@ uint16_t WS2812FX::mode_fade(void) { */ uint16_t WS2812FX::scan(bool dual) { - if(SEGENV.step > (SEGLEN * 2) - 3) { - SEGENV.step = 0; - } + uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; + uint32_t perc = now % cycleTime; + uint16_t prog = (perc * 65535) / cycleTime; + uint16_t ledIndex = (prog * ((SEGLEN * 2) - 2)) >> 16; fill(SEGCOLOR(1)); - int led_offset = SEGENV.step - (SEGLEN - 1); + int led_offset = ledIndex - (SEGLEN - 1); led_offset = abs(led_offset); uint16_t i = SEGMENT.start + led_offset; @@ -315,8 +316,7 @@ uint16_t WS2812FX::scan(bool dual) setPixelColor(i2, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); } - SEGENV.step++; - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -507,7 +507,7 @@ uint16_t WS2812FX::dissolve(uint32_t color) { SEGENV.call = 0; } - return 20; + return FRAMETIME; } @@ -1014,14 +1014,14 @@ uint16_t WS2812FX::mode_fireworks() { SEGENV.aux0 = index; } } - return 22; + return FRAMETIME; } //Twinkling LEDs running. Inspired by https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Rain.h uint16_t WS2812FX::mode_rain() { - SEGENV.step += 22; + SEGENV.step += FRAMETIME; if (SEGENV.step > SPEED_FORMULA_L) { SEGENV.step = 0; //shift all leds right @@ -1513,7 +1513,7 @@ uint16_t WS2812FX::mode_pride_2015(void) } SEGENV.step = sPseudotime; SEGENV.aux0 = sHue16; - return 20; + return FRAMETIME; } @@ -1664,7 +1664,7 @@ uint16_t WS2812FX::mode_colorwaves() } SEGENV.step = sPseudotime; SEGENV.aux0 = sHue16; - return 20; + return FRAMETIME; } @@ -1693,7 +1693,7 @@ uint16_t WS2812FX::mode_fillnoise8() } SEGENV.step += beatsin8(SEGMENT.speed, 1, 6); //10,1,4 - return 20; + return FRAMETIME; } uint16_t WS2812FX::mode_noise16_1() @@ -1720,7 +1720,7 @@ uint16_t WS2812FX::mode_noise16_1() setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } - return 20; + return FRAMETIME; } @@ -1745,7 +1745,7 @@ uint16_t WS2812FX::mode_noise16_2() setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } - return 20; + return FRAMETIME; } @@ -1772,7 +1772,7 @@ uint16_t WS2812FX::mode_noise16_3() setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } - return 20; + return FRAMETIME; } @@ -1835,7 +1835,7 @@ uint16_t WS2812FX::mode_colortwinkle() } } } - return 20; + return FRAMETIME; } @@ -1921,7 +1921,7 @@ uint16_t WS2812FX::mode_meteor_smooth() { } SEGENV.step += SEGMENT.speed +1; - return 20; + return FRAMETIME; } @@ -2009,7 +2009,7 @@ uint16_t WS2812FX::mode_ripple() } } } - return 20; + return FRAMETIME; } diff --git a/wled00/FX.h b/wled00/FX.h index e877a055e..b86935c1e 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -570,7 +570,7 @@ class WS2812FX { //10 names per line const char JSON_mode_names[] PROGMEM = R"=====([ "Solid","Blink","Breathe","Wipe","Wipe Random","Random Colors","Sweep","Dynamic","Colorloop","Rainbow", -"Scan","Dual Scan","Fade","Theater","Theater Rainbow","Running","Saw","Twinkle","Dissolve","Dissolve Rnd", +"Scan","Scan Dual","Fade","Theater","Theater Rainbow","Running","Saw","Twinkle","Dissolve","Dissolve Rnd", "Sparkle","Sparkle Dark","Sparkle+","Strobe","Strobe Rainbow","Strobe Mega","Blink Rainbow","Android","Chase","Chase Random", "Chase Rainbow","Chase Flash","Chase Flash Rnd","Rainbow Runner","Colorful","Traffic Light","Sweep Random","Running 2","Red & Blue","Stream", "Scanner","Lighthouse","Fireworks","Rain","Merry Christmas","Fire Flicker","Gradient","Loading","Police","Police All", diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 34403ee37..3a9b8a00f 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912211 +#define VERSION 1912221 char versionString[] = "0.9.0-b2"; From 2372675c79610e924307ff43583d9c0189101e39 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 23 Dec 2019 18:38:54 +0100 Subject: [PATCH 28/70] combine larson scanners --- wled00/FX.cpp | 141 ++++++++++++++++++++++++++++---------------------- wled00/FX.h | 1 + 2 files changed, 79 insertions(+), 63 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 9ca9561c4..c8f9c9d82 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -669,9 +669,11 @@ uint16_t WS2812FX::mode_android(void) { * color2 and color3 = colors of two adjacent leds */ uint16_t WS2812FX::chase(uint32_t color1, uint32_t color2, uint32_t color3, bool dopalette) { - uint16_t a = SEGENV.step; - uint16_t b = (a + 1) % SEGLEN; - uint16_t c = (b + 1) % SEGLEN; + uint16_t counter = now * (SEGMENT.speed >> 3) + 1; + uint16_t a = counter * SEGLEN >> 16; + // Use intensity setting to vary chase up to 1/2 string length + uint16_t b = (a + 1 + (SEGMENT.intensity * SEGLEN >> 10)) % SEGLEN; + uint16_t c = (b + 1 + (SEGMENT.intensity * SEGLEN >> 10)) % SEGLEN; if (dopalette) color1 = color_from_palette(SEGMENT.start + a, true, PALETTE_SOLID_WRAP, 1); @@ -679,8 +681,7 @@ uint16_t WS2812FX::chase(uint32_t color1, uint32_t color2, uint32_t color3, bool setPixelColor(SEGMENT.start + b, color2); setPixelColor(SEGMENT.start + c, color3); - SEGENV.step = (SEGENV.step + 1) % SEGLEN; - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -958,17 +959,39 @@ uint16_t WS2812FX::mode_running_random(void) { /* * K.I.T.T. */ -uint16_t WS2812FX::mode_larson_scanner(void) { - uint16_t counter = now * (SEGMENT.speed >>3) +1; - uint16_t index = counter * SEGLEN * 2 >> 16; +uint16_t WS2812FX::mode_larson_scanner(void){ + return larson_scanner(false); +} + +uint16_t WS2812FX::larson_scanner(bool dual) { + uint16_t counter = now * ((SEGMENT.speed >> 2) +8); + uint16_t index = counter * SEGLEN >> 16; fade_out(SEGMENT.intensity); - if (index >= SEGLEN) { - index = SEGLEN - (index - SEGLEN + 1); + if (SEGENV.step > index && SEGENV.step - index > SEGLEN/2) { + SEGENV.aux0 = !SEGENV.aux0; } - setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); + + for (uint16_t i = SEGENV.step; i < index; i++) { + uint16_t j = (SEGENV.aux0)?i:SEGLEN-1-i; + setPixelColor(j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); + } + if (dual) { + uint32_t c; + if (SEGCOLOR(2) != 0) { + c = SEGCOLOR(2); + } else { + c = color_from_palette(index, true, PALETTE_SOLID_WRAP, 0); + } + for (uint16_t i = SEGENV.step; i < index; i++) { + uint16_t j = (SEGENV.aux0)?SEGLEN-1-i:i; + setPixelColor(j, c); + } + } + + SEGENV.step = index; return FRAMETIME; } @@ -1067,6 +1090,9 @@ uint16_t WS2812FX::mode_fire_flicker(void) { * Gradient run base function */ uint16_t WS2812FX::gradient_base(bool loading) { + uint16_t counter = now * (SEGMENT.speed >> 3) + 1; + SEGENV.step = counter * SEGLEN >> 16; + if (SEGMENT.speed == 0) SEGENV.step = SEGMENT.start + (SEGLEN >> 1); if (SEGENV.call == 0) SEGENV.step = 0; float per,val; //0.0 = sec 1.0 = pri float brd = SEGMENT.intensity; @@ -1089,10 +1115,7 @@ uint16_t WS2812FX::gradient_base(bool loading) { setPixelColor(i, color_blend(SEGCOLOR(0), color_from_palette(i, true, PALETTE_SOLID_WRAP, 1), per*255)); } - SEGENV.step++; - if (SEGENV.step >= SEGMENT.stop) SEGENV.step = SEGMENT.start; - if (SEGMENT.speed == 0) SEGENV.step = SEGMENT.start + (SEGLEN >> 1); - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -1169,19 +1192,22 @@ uint16_t WS2812FX::mode_two_dots() * Tricolor chase function */ uint16_t WS2812FX::tricolor_chase(uint32_t color1, uint32_t color2) { - uint16_t index = SEGENV.step % 6; + uint32_t cycleTime = 50 + (255 - SEGMENT.speed)*2; + uint32_t it = now / cycleTime; + uint8_t width = (1 + SEGMENT.intensity/32) * 3; //value of 1-8 for each colour + uint8_t index = it % width; + for(uint16_t i=0; i < SEGLEN; i++, index++) { - if(index > 5) index = 0; + if(index > width-1) index = 0; uint32_t color = color1; - if(index > 3) color = color_from_palette(i, true, PALETTE_SOLID_WRAP, 1); - else if(index > 1) color = color2; + if(index > width*2/3-1) color = color_from_palette(i, true, PALETTE_SOLID_WRAP, 1); + else if(index > width/3-1) color = color2; setPixelColor(SEGMENT.stop - i -1, color); } - SEGENV.step++; - return 35 + ((350 * (uint32_t)(255 - SEGMENT.speed)) / 255); + return FRAMETIME; } @@ -1342,22 +1368,7 @@ uint16_t WS2812FX::mode_multi_comet(void) * Custom mode by Keith Lord: https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/DualLarson.h */ uint16_t WS2812FX::mode_dual_larson_scanner(void){ - uint16_t counter = now * (SEGMENT.speed >>3) +1; - uint16_t index = counter * SEGLEN >> 16; - - fade_out(SEGMENT.intensity); - - setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); - index = SEGMENT.stop - index -1; - if (SEGCOLOR(2) != 0) - { - setPixelColor(index, SEGCOLOR(2)); - } else - { - setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); - } - - return FRAMETIME; + return larson_scanner(true); } @@ -1367,6 +1378,10 @@ uint16_t WS2812FX::mode_dual_larson_scanner(void){ */ uint16_t WS2812FX::mode_random_chase(void) { + uint32_t cycleTime = 25 + (3 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + for(uint16_t i=SEGMENT.stop -1; i>SEGMENT.start; i--) { setPixelColor(i, getPixelColor(i-1)); } @@ -1377,7 +1392,8 @@ uint16_t WS2812FX::mode_random_chase(void) uint8_t b = random8(6) != 0 ? (color & 0xFF) : random8(); setPixelColor(SEGMENT.start, r, g, b); - return SPEED_FORMULA_L; + SEGENV.step = it; + return FRAMETIME; } @@ -1386,7 +1402,6 @@ typedef struct Oscillator { int8_t size; int8_t dir; int8_t speed; - uint16_t timeref; } oscillator; /* @@ -1394,44 +1409,44 @@ typedef struct Oscillator { */ uint16_t WS2812FX::mode_oscillate(void) { - uint16_t counter; - uint16_t index; - static oscillator oscillators[NUM_COLORS] = { - {SEGLEN-1, SEGLEN/8, -1, 4}, - {0, SEGLEN/8, 1, 3}, - {SEGLEN-1, SEGLEN/8, -1, 2} + {SEGLEN/4, SEGLEN/8, 1, 1}, + {SEGLEN/4*3, SEGLEN/8, 1, 2}, + {SEGLEN/4*2, SEGLEN/8, -1, 1} + }; - for(int8_t i=0; i < sizeof(oscillators)/sizeof(oscillators[0]); i++) { - oscillators[i].size = SEGLEN/(3+SEGMENT.intensity/8); - //calculate the change since last cycle - counter = (now - oscillators[i].timeref) * ((SEGMENT.speed >> oscillators[i].speed) +1); - index = (counter * SEGLEN) >> 16; - - if (oscillators[i].dir == -1) { - oscillators[i].pos = SEGLEN - 1 - index; - } else { - oscillators[i].pos = index; - } + uint32_t cycleTime = 20 + (2 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; - if (index >= SEGLEN - 1) { - //switch direction once while at each end of cycle - if (now - oscillators[i].timeref > 1000) oscillators[i].dir *= -1; - oscillators[i].timeref = now; - oscillators[i].speed = random8(2, 4); + for(int8_t i=0; i < sizeof(oscillators)/sizeof(oscillators[0]); i++) { + // if the counter has increased, move the oscillator by the random step + if (it != SEGENV.step) oscillators[i].pos += oscillators[i].dir * oscillators[i].speed; + oscillators[i].size = SEGLEN/(3+SEGMENT.intensity/8); + if((oscillators[i].dir == -1) && (oscillators[i].pos <= 0)) { + oscillators[i].pos = 0; + oscillators[i].dir = 1; + // make bigger steps for faster speeds + oscillators[i].speed = SEGMENT.speed > 100 ? random8(2, 4):random8(1, 3); + } + if((oscillators[i].dir == 1) && (oscillators[i].pos >= (SEGLEN - 1))) { + oscillators[i].pos = SEGLEN - 1; + oscillators[i].dir = -1; + oscillators[i].speed = SEGMENT.speed > 100 ? random8(2, 4):random8(1, 3); } } - + for(int16_t i=0; i < SEGLEN; i++) { uint32_t color = BLACK; for(int8_t j=0; j < sizeof(oscillators)/sizeof(oscillators[0]); j++) { if(i >= oscillators[j].pos - oscillators[j].size && i <= oscillators[j].pos + oscillators[j].size) { - color = (color == BLACK) ? SEGCOLOR(j) : color_blend(color, SEGCOLOR(j), 128); + color = (color == BLACK) ? SEGMENT.colors[j] : color_blend(color, SEGMENT.colors[j], 128); } } setPixelColor(SEGMENT.start + i, color); } + + SEGENV.step = it; return FRAMETIME; } diff --git a/wled00/FX.h b/wled00/FX.h index e877a055e..77788eab6 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -543,6 +543,7 @@ class WS2812FX { scan(bool), theater_chase(uint32_t, uint32_t, bool), running_base(bool), + larson_scanner(bool), dissolve(uint32_t), chase(uint32_t, uint32_t, uint32_t, bool), gradient_base(bool), From 70d04d807bd98d0fb7fc0bda538be6b92a2904d0 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 23 Dec 2019 18:48:01 +0100 Subject: [PATCH 29/70] cleanup --- wled00/FX.cpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c8f9c9d82..141490dcb 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -116,7 +116,7 @@ uint16_t WS2812FX::mode_strobe_rainbow(void) { * if (bool rev == true) then LEDs are turned off in reverse order */ uint16_t WS2812FX::color_wipe(bool rev, bool useRandomColors) { - uint32_t cycleTime = 1000 + (255 - SEGMENT.speed)*200; + uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; uint32_t perc = now % cycleTime; uint16_t prog = (perc * 65535) / cycleTime; bool back = (prog > 32767); @@ -298,13 +298,14 @@ uint16_t WS2812FX::mode_fade(void) { */ uint16_t WS2812FX::scan(bool dual) { - if(SEGENV.step > (SEGLEN * 2) - 3) { - SEGENV.step = 0; - } + uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; + uint32_t perc = now % cycleTime; + uint16_t prog = (perc * 65535) / cycleTime; + uint16_t ledIndex = (prog * ((SEGLEN * 2) - 2)) >> 16; fill(SEGCOLOR(1)); - int led_offset = SEGENV.step - (SEGLEN - 1); + int led_offset = ledIndex - (SEGLEN - 1); led_offset = abs(led_offset); uint16_t i = SEGMENT.start + led_offset; @@ -315,8 +316,7 @@ uint16_t WS2812FX::scan(bool dual) setPixelColor(i2, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); } - SEGENV.step++; - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -507,7 +507,7 @@ uint16_t WS2812FX::dissolve(uint32_t color) { SEGENV.call = 0; } - return 20; + return FRAMETIME; } @@ -1037,14 +1037,14 @@ uint16_t WS2812FX::mode_fireworks() { SEGENV.aux0 = index; } } - return 22; + return FRAMETIME; } //Twinkling LEDs running. Inspired by https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Rain.h uint16_t WS2812FX::mode_rain() { - SEGENV.step += 22; + SEGENV.step += FRAMETIME; if (SEGENV.step > SPEED_FORMULA_L) { SEGENV.step = 0; //shift all leds right @@ -1683,7 +1683,7 @@ uint16_t WS2812FX::mode_colorwaves() } SEGENV.step = sPseudotime; SEGENV.aux0 = sHue16; - return 20; + return FRAMETIME; } @@ -1712,7 +1712,7 @@ uint16_t WS2812FX::mode_fillnoise8() } SEGENV.step += beatsin8(SEGMENT.speed, 1, 6); //10,1,4 - return 20; + return FRAMETIME; } uint16_t WS2812FX::mode_noise16_1() @@ -1739,7 +1739,7 @@ uint16_t WS2812FX::mode_noise16_1() setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } - return 20; + return FRAMETIME; } @@ -1764,7 +1764,7 @@ uint16_t WS2812FX::mode_noise16_2() setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } - return 20; + return FRAMETIME; } @@ -1791,7 +1791,7 @@ uint16_t WS2812FX::mode_noise16_3() setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); } - return 20; + return FRAMETIME; } @@ -1854,7 +1854,7 @@ uint16_t WS2812FX::mode_colortwinkle() } } } - return 20; + return FRAMETIME; } @@ -1940,7 +1940,7 @@ uint16_t WS2812FX::mode_meteor_smooth() { } SEGENV.step += SEGMENT.speed +1; - return 20; + return FRAMETIME; } @@ -2028,7 +2028,7 @@ uint16_t WS2812FX::mode_ripple() } } } - return 20; + return FRAMETIME; } From 9bc72df1b5935efd2cc9591db49dd734b09f331a Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 23 Dec 2019 19:23:57 +0100 Subject: [PATCH 30/70] meteor with framerate --- wled00/FX.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 141490dcb..465d6e445 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1882,7 +1882,8 @@ uint16_t WS2812FX::mode_lake() { // adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain uint16_t WS2812FX::mode_meteor() { byte meteorSize= 1+ SEGLEN / 10; - uint16_t in = SEGMENT.start + SEGENV.step; + uint16_t counter = now * ((SEGMENT.speed >> 2) +8); + uint16_t in = counter * SEGLEN >> 16; // fade all leds to colors[1] in LEDs one step for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { @@ -1893,10 +1894,10 @@ uint16_t WS2812FX::mode_meteor() { setPixelColor(i, color_from_palette(_locked[i], false, true, 255)); } } - + // draw meteor - for(int j = 0; j < meteorSize; j++) { - uint16_t index = in + j; + for(int j = 0; j < meteorSize; j++) { + uint16_t index = in + j; if(in + j >= SEGMENT.stop) { index = SEGMENT.start + (in + j - SEGMENT.stop); } @@ -1905,8 +1906,7 @@ uint16_t WS2812FX::mode_meteor() { setPixelColor(index, color_from_palette(_locked[index], false, true, 255)); } - SEGENV.step = (SEGENV.step + 1) % (SEGLEN); - return SPEED_FORMULA_L; + return FRAMETIME; } From 194aa90aeea709a8b1a6e4aeda8beba8fb170db1 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 23 Dec 2019 19:28:37 +0100 Subject: [PATCH 31/70] Noise 4 fix --- wled00/FX.cpp | 45 ++++++++++++++++++++++++++++++++------------- wled00/wled00.ino | 2 +- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 87edbba06..e4befb963 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -461,16 +461,34 @@ uint16_t WS2812FX::mode_saw(void) { * Inspired by www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ */ uint16_t WS2812FX::mode_twinkle(void) { - if(SEGENV.step == 0) { - fill(SEGCOLOR(1)); - SEGENV.step = map(SEGMENT.intensity, 0, 255, 1, SEGLEN); // make sure, at least one LED is on + fill(SEGCOLOR(1)); + + uint32_t cycleTime = 20 + (255 - SEGMENT.speed)*5; + uint32_t it = now / cycleTime; + if (it != SEGENV.step) + { + uint16_t maxOn = map(SEGMENT.intensity, 0, 255, 1, SEGLEN); // make sure at least one LED is on + if (SEGENV.aux0 >= maxOn) + { + SEGENV.aux0 = 0; + SEGENV.aux1 = random16(); //new seed for our PRNG + } + SEGENV.aux0++; + SEGENV.step = it; + } + + uint16_t PRNG16 = SEGENV.aux1; + + for (uint16_t i = 0; i < SEGENV.aux0; i++) + { + PRNG16 = (uint16_t)(PRNG16 * 2053) + 13849; // next 'random' number + uint32_t p = (uint32_t)SEGLEN * (uint32_t)PRNG16; + uint16_t mapped = p >> 16; + uint16_t j = SEGMENT.start + mapped; + setPixelColor(j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); } - uint16_t i = SEGMENT.start + random16(SEGLEN); - setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); - - SEGENV.step--; - return 20 + (5 * (uint16_t)(255 - SEGMENT.speed)); + return FRAMETIME; } @@ -592,6 +610,7 @@ uint16_t WS2812FX::mode_multi_strobe(void) { for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 1)); } + //blink(SEGCOLOR(0), SEGCOLOR(1), true, true); uint16_t delay = 50 + 20*(uint16_t)(255-SEGMENT.speed); uint16_t count = 2 * ((SEGMENT.speed / 10) + 1); @@ -679,7 +698,8 @@ uint16_t WS2812FX::chase(uint32_t color1, uint32_t color2, uint32_t color3, bool setPixelColor(SEGMENT.start + b, color2); setPixelColor(SEGMENT.start + c, color3); - SEGENV.step = (SEGENV.step + 1) % SEGLEN; + SEGENV.step++; + if (SEGENV.step >= SEGLEN) SEGENV.step = 0; return SPEED_FORMULA_L; } @@ -1523,13 +1543,13 @@ uint16_t WS2812FX::mode_juggle(void){ CRGB fastled_col; byte dothue = 0; for ( byte i = 0; i < 8; i++) { - uint16_t index = SEGMENT.start + beatsin16(i + 7, 0, SEGLEN -1); + uint16_t index = SEGMENT.start + beatsin88((128 + SEGMENT.speed)*(i + 7), 0, SEGLEN -1); fastled_col = col_to_crgb(getPixelColor(index)); fastled_col |= (SEGMENT.palette==0)?CHSV(dothue, 220, 255):ColorFromPalette(currentPalette, dothue, 255); setPixelColor(index, fastled_col.red, fastled_col.green, fastled_col.blue); dothue += 32; } - return 10 + (uint16_t)(255 - SEGMENT.speed)/4; + return FRAMETIME; } @@ -1780,8 +1800,7 @@ uint16_t WS2812FX::mode_noise16_3() uint16_t WS2812FX::mode_noise16_4() { CRGB fastled_col; - SEGENV.step += SEGMENT.speed; - uint32_t stp = (now / 160) * SEGMENT.speed; + uint32_t stp = (now * SEGMENT.speed) >> 7; for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { int16_t index = inoise16(uint32_t(i - SEGMENT.start) << 12, stp); fastled_col = ColorFromPalette(currentPalette, index); diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 3a9b8a00f..90bf0ac8e 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912221 +#define VERSION 1912231 char versionString[] = "0.9.0-b2"; From a90a07f46d64fc82c444da086629231471d7214c Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 23 Dec 2019 20:54:00 +0100 Subject: [PATCH 32/70] Put new timezone to end of list --- wled00/html_settings.h | 20 ++++++++++---------- wled00/wled10_ntp.ino | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 17c1ba84b..53da653fe 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -308,16 +308,16 @@ Time zone: - - - - - - - - - - + + + + + + + + + +
UTC offset: seconds (max. 18 hours)
Current local time is unknown. diff --git a/wled00/wled10_ntp.ino b/wled00/wled10_ntp.ino index 16b069504..3bb76674c 100644 --- a/wled00/wled10_ntp.ino +++ b/wled00/wled10_ntp.ino @@ -57,7 +57,7 @@ Timezone tzNK(NKST, NKST); TimeChangeRule IST = {Last, Sun, Mar, 1, 330}; // India Standard Time = UTC + 5.5 hours Timezone tzIndia(IST, IST); -Timezone* timezones[] = {&tzUTC, &tzUK, &tzEUCentral, &tzEUEastern, &tzUSEastern, &tzUSCentral, &tzCASaskatchewan, &tzUSMountain, &tzUSArizona, &tzUSPacific, &tzChina, &tzJapan, &tzAUEastern, &tzNZ, &tzNK, &tzIndia}; +Timezone* timezones[] = {&tzUTC, &tzUK, &tzEUCentral, &tzEUEastern, &tzUSEastern, &tzUSCentral, &tzUSMountain, &tzUSArizona, &tzUSPacific, &tzChina, &tzJapan, &tzAUEastern, &tzNZ, &tzNK, &tzIndia, &tzCASaskatchewan}; void handleNetworkTime() { From f07578e0cbc0faebd1d2ca82da5f248b9e33e5e6 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 23 Dec 2019 22:49:29 +0100 Subject: [PATCH 33/70] add sizing to scan mode --- wled00/FX.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 465d6e445..2f951281b 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -302,6 +302,7 @@ uint16_t WS2812FX::scan(bool dual) uint32_t perc = now % cycleTime; uint16_t prog = (perc * 65535) / cycleTime; uint16_t ledIndex = (prog * ((SEGLEN * 2) - 2)) >> 16; + uint16_t size = 1 + SEGMENT.intensity >> 3; fill(SEGCOLOR(1)); @@ -309,18 +310,21 @@ uint16_t WS2812FX::scan(bool dual) led_offset = abs(led_offset); uint16_t i = SEGMENT.start + led_offset; - setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); + for (int16_t j=i-size/2; j<=i+size/2; j++) { + if (j>=0) setPixelColor(j, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); + } if (dual) { uint16_t i2 = SEGMENT.start + SEGLEN - led_offset - 1; - setPixelColor(i2, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); + for (int16_t j=i2-size/2; j<=i2+size/2; j++) { + if (j>=0) setPixelColor(j, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); + } } return FRAMETIME; } -//NOTE: add intensity (more than 1 pixel lit) /* * Runs a single pixel back and forth. */ From 8817dc6d73cea90079387c9f8203e4f856b7610a Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 24 Dec 2019 00:06:23 +0100 Subject: [PATCH 34/70] Add tertiary color to presets (#509) --- wled00/wled00.ino | 2 +- wled00/wled01_eeprom.ino | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 90bf0ac8e..a577c95d4 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912231 +#define VERSION 1912232 char versionString[] = "0.9.0-b2"; diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino index 2f68703ea..8a43a79db 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -561,6 +561,7 @@ bool applyPreset(byte index, bool loadBri = true, bool loadCol = true, bool load col[j] = EEPROM.read(i+j+2); colSec[j] = EEPROM.read(i+j+6); } + strip.setColor(2, EEPROM.read(i+12), EEPROM.read(i+13), EEPROM.read(i+14), EEPROM.read(i+15)); //tertiary color } if (loadFX) { @@ -598,6 +599,12 @@ void savePreset(byte index) } EEPROM.write(i+10, effectCurrent); EEPROM.write(i+11, effectSpeed); + + uint32_t colTer = strip.getSegment(strip.getMainSegmentId()).colors[2]; + EEPROM.write(i+12, (colTer >> 16) & 0xFF); + EEPROM.write(i+13, (colTer >> 8) & 0xFF); + EEPROM.write(i+14, (colTer >> 0) & 0xFF); + EEPROM.write(i+15, (colTer >> 24) & 0xFF); EEPROM.write(i+16, effectIntensity); EEPROM.write(i+17, effectPalette); From 924f97cbe818f79b90d411c6ca23c986155d137e Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 24 Dec 2019 00:48:51 +0100 Subject: [PATCH 35/70] Improvements to scan and segment fixes --- wled00/FX.cpp | 28 ++++++++++++++-------------- wled00/wled00.ino | 2 +- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 8349f0f69..aeba14854 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -301,24 +301,24 @@ uint16_t WS2812FX::scan(bool dual) uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; uint32_t perc = now % cycleTime; uint16_t prog = (perc * 65535) / cycleTime; - uint16_t ledIndex = (prog * ((SEGLEN * 2) - 2)) >> 16; - uint16_t size = 1 + SEGMENT.intensity >> 3; + uint16_t size = 1 + ((SEGMENT.intensity * SEGLEN) >>9); + uint16_t ledIndex = (prog * ((SEGLEN *2) - size *2)) >> 16; fill(SEGCOLOR(1)); - int led_offset = ledIndex - (SEGLEN - 1); + int led_offset = ledIndex - (SEGLEN - size); led_offset = abs(led_offset); - uint16_t i = SEGMENT.start + led_offset; - for (int16_t j=i-size/2; j<=i+size/2; j++) { - if (j>=0) setPixelColor(j, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); + if (dual) { + for (uint16_t j = led_offset; j < led_offset + size; j++) { + uint16_t i2 = SEGMENT.stop -1 -j; + setPixelColor(i2, color_from_palette(i2, true, PALETTE_SOLID_WRAP, (SEGCOLOR(2))? 2:0)); + } } - if (dual) { - uint16_t i2 = SEGMENT.start + SEGLEN - led_offset - 1; - for (int16_t j=i2-size/2; j<=i2+size/2; j++) { - if (j>=0) setPixelColor(j, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); - } + for (uint16_t j = led_offset; j < led_offset + size; j++) { + uint16_t i = SEGMENT.start + j; + setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); } return FRAMETIME; @@ -998,7 +998,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { for (uint16_t i = SEGENV.step; i < index; i++) { uint16_t j = (SEGENV.aux0)?i:SEGLEN-1-i; - setPixelColor(j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); + setPixelColor(SEGMENT.start + j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); } if (dual) { uint32_t c; @@ -1010,7 +1010,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { for (uint16_t i = SEGENV.step; i < index; i++) { uint16_t j = (SEGENV.aux0)?SEGLEN-1-i:i; - setPixelColor(j, c); + setPixelColor(SEGMENT.start + j, c); } } @@ -1028,7 +1028,7 @@ uint16_t WS2812FX::mode_comet(void) { fade_out(SEGMENT.intensity); - setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); + setPixelColor(SEGMENT.start + index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); return FRAMETIME; } diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 90bf0ac8e..a577c95d4 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912231 +#define VERSION 1912232 char versionString[] = "0.9.0-b2"; From f3371c443e16599dff26610e311d627ac4ce7875 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 14:46:07 +0100 Subject: [PATCH 36/70] more effects to FRAMETIME --- wled00/FX.cpp | 178 +++++++++----------------------------------------- 1 file changed, 32 insertions(+), 146 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index b1e348849..1791b710c 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -961,6 +961,10 @@ uint16_t WS2812FX::mode_halloween(void) { * Random colored pixels running. */ uint16_t WS2812FX::mode_running_random(void) { + uint32_t cycleTime = 25 + (3 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.aux1 == it) return FRAMETIME; + for(uint16_t i=SEGLEN-1; i > 0; i--) { setPixelColor(SEGMENT.start + i, getPixelColor(SEGMENT.start + i - 1)); } @@ -975,7 +979,9 @@ uint16_t WS2812FX::mode_running_random(void) { { SEGENV.step = 0; } - return SPEED_FORMULA_L; + + SEGENV.aux1 = it; + return FRAMETIME; } @@ -1091,6 +1097,10 @@ uint16_t WS2812FX::mode_rain() * Fire flicker function */ uint16_t WS2812FX::mode_fire_flicker(void) { + uint32_t cycleTime = 40 + (255 - SEGMENT.speed); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + byte w = (SEGCOLOR(0) >> 24) & 0xFF; byte r = (SEGCOLOR(0) >> 16) & 0xFF; byte g = (SEGCOLOR(0) >> 8) & 0xFF; @@ -1105,7 +1115,9 @@ uint16_t WS2812FX::mode_fire_flicker(void) { setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0, 255 - flicker)); } } - return 20 + random((255 - SEGMENT.speed),(2 * (uint16_t)(255 - SEGMENT.speed))); + + SEGENV.step = it; + return FRAMETIME; } @@ -1285,6 +1297,7 @@ uint16_t WS2812FX::mode_icu(void) { setPixelColor(SEGMENT.start + dest, col); setPixelColor(SEGMENT.start + dest + SEGLEN/2, col); + if (SEGMENT.intensity > 127) return FRAMETIME; return SPEED_FORMULA_L; } @@ -1294,6 +1307,11 @@ uint16_t WS2812FX::mode_icu(void) { */ uint16_t WS2812FX::mode_tricolor_wipe(void) { + uint32_t cycleTime = 40 + (3 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + uint8_t incr = it-SEGENV.step; + if(SEGENV.step < SEGLEN) { uint32_t led_offset = SEGENV.step; setPixelColor(SEGMENT.start + led_offset, SEGCOLOR(0)); @@ -1307,7 +1325,7 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) } SEGENV.step = (SEGENV.step + 1) % (SEGLEN * 3); - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -1318,6 +1336,9 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) */ uint16_t WS2812FX::mode_tricolor_fade(void) { + uint16_t counter = now * ((SEGMENT.speed >> 3) +1); + SEGENV.step = (counter * 768) >> 16; + uint32_t color1 = 0, color2 = 0; byte stage = 0; @@ -1348,10 +1369,7 @@ uint16_t WS2812FX::mode_tricolor_fade(void) setPixelColor(i, color); } - SEGENV.step += 4; - if(SEGENV.step >= 768) SEGENV.step = 0; - - return 5 + ((uint32_t)(255 - SEGMENT.speed) / 10); + return FRAMETIME; } @@ -1361,6 +1379,10 @@ uint16_t WS2812FX::mode_tricolor_fade(void) */ uint16_t WS2812FX::mode_multi_comet(void) { + uint32_t cycleTime = 20 + (2 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + fade_out(SEGMENT.intensity); static uint16_t comets[] = {UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX}; @@ -1382,7 +1404,9 @@ uint16_t WS2812FX::mode_multi_comet(void) } } } - return SPEED_FORMULA_L; + + SEGENV.step = it; + return FRAMETIME; } @@ -2341,95 +2365,6 @@ uint16_t WS2812FX::mode_spots_fade() } -/* -* Bouncing Balls Effect -* Adapted from: https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ -*/ -uint16_t WS2812FX::mode_BouncingBalls(void) { - // number of balls based on intensity setting, - // only has 4 for a few of the higher settings as there is no colour selection - // fourth ball is a random colour - int balls = int(((SEGMENT.intensity * 6.2) / 255) + 1); - - // ideally use speed for gravity effect on the bounce - float Gravity = -9.81; - - const int maxBallCount = 7; - static float Height[maxBallCount]; - static float ImpactVelocity[maxBallCount]; - static int Position[maxBallCount]; - static float TimeSinceLastBounce[maxBallCount]; - static long ClockTimeSinceLastBounce[maxBallCount]; - static int StartHeight = 1; // height in metres (strip length) - static float Dampening[maxBallCount] = {0}; // Coefficient of Restitution (bounce damping) - static float ImpactVelocityStart=sqrt( -2 * Gravity * StartHeight); - - // Different from the examples, to allow for initialisation of the first bounce - if (Dampening[0] == 0) { - for (int i = 0 ; i < maxBallCount ; i++) { - ClockTimeSinceLastBounce[i] = millis(); - ImpactVelocity[i] = ImpactVelocityStart; - TimeSinceLastBounce[i] = 0; - Dampening[i] = 0.90 - float(i)/pow(maxBallCount,2); - } - } - - for (int i = 0 ; i < balls ; i++) { - TimeSinceLastBounce[i] = millis() - ClockTimeSinceLastBounce[i]; - Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000; - - if ( Height[i] < 0 ) { - Height[i] = 0; - ImpactVelocity[i] = Dampening[i] * ImpactVelocity[i]; - ClockTimeSinceLastBounce[i] = millis(); - - if ( ImpactVelocity[i] < 0.01 ) { - ImpactVelocity[i] = ImpactVelocityStart; - } - } - Position[i] = round( Height[i] * (SEGLEN - 1) / StartHeight); - } - - fill(BLACK); - - for (int i = 0 ; i < balls ; i++) { - uint32_t color = SEGCOLOR(i % NUM_COLORS); - if (!color) { - color = color_wheel(random8()); - } - - setPixelColor(Position[i],color); - } - - return 20; -} - -/* -* Sinelon stolen from FASTLED examples -*/ -uint16_t WS2812FX::mode_sinelon(void) { - - fade_out(SEGMENT.intensity); - int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1); - static int prevpos = 0; - - // setRange seems great to use, but doesn't work here for some reason - if( pos < prevpos ) { - for (uint16_t i = pos; i < prevpos; i++) - { - setPixelColor(i, color_from_palette(pos, false, false, 0)); - } - } else { - for (uint16_t i = prevpos; i < pos; i++) - { - setPixelColor(i, color_from_palette(pos, false, false, 0)); - } - } - prevpos = pos; - return FRAMETIME; -} - - //Rainbow with glitter, inspired by https://gist.github.com/kriegsman/062e10f7f07ba8518af6 uint16_t WS2812FX::mode_glitter() { @@ -2444,55 +2379,6 @@ uint16_t WS2812FX::mode_glitter() } -/* -* POPCORN -*/ -typedef struct Kernel { - float position; - float velocity; - int32_t color; -} kernel; - -#define MAX_NUM_POPCORN 12 -#define GRAVITY 0.06 - -uint16_t WS2812FX::mode_popcorn(void) { - uint32_t popcornColor = SEGCOLOR(0); - uint32_t bgColor = SEGCOLOR(1); - if(popcornColor == bgColor) popcornColor = color_wheel(random8()); - - static kernel popcorn[MAX_NUM_POPCORN]; - static float coeff = 0.0f; - if(coeff == 0.0f) { // calculate the velocity coeff once (the secret sauce) - coeff = pow((float)SEGLEN, 0.5223324f) * 0.3944296f; - } - - fill(SEGCOLOR(1)); - - uint16_t ledIndex; - for(int8_t i=0; i < MAX_NUM_POPCORN; i++) { - bool isActive = popcorn[i].position >= 0.0f; - - if(isActive) { // if kernel is active, update its position - popcorn[i].position += popcorn[i].velocity; - popcorn[i].velocity -= (GRAVITY * SEGMENT.intensity/25); - ledIndex = SEGMENT.start + popcorn[i].position; - if(ledIndex >= SEGMENT.start && ledIndex <= SEGMENT.stop) setPixelColor(ledIndex, popcorn[i].color); - } else { // if kernel is inactive, randomly pop it - if(random8() < 2) { // POP!!! - popcorn[i].position = 0.0f; - popcorn[i].velocity = coeff * (random(66, 100) / 100.0f); - popcorn[i].color = popcornColor; - ledIndex = SEGMENT.start; - setPixelColor(ledIndex, popcorn[i].color); - } - } - } - - return SPEED_FORMULA_L; -} - - //values close to 100 produce 5Hz flicker, which looks very candle-y //Inspired by https://github.com/avanhanegem/ArduinoCandleEffectNeoPixel //and https://cpldcpu.wordpress.com/2016/01/05/reverse-engineering-a-real-candle/ From 8600360173083d379f1437a32af580d498c1ccbf Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 14:46:07 +0100 Subject: [PATCH 37/70] more effects to FRAMETIME --- wled00/FX.cpp | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 8349f0f69..4410a43b7 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -961,6 +961,10 @@ uint16_t WS2812FX::mode_halloween(void) { * Random colored pixels running. */ uint16_t WS2812FX::mode_running_random(void) { + uint32_t cycleTime = 25 + (3 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.aux1 == it) return FRAMETIME; + for(uint16_t i=SEGLEN-1; i > 0; i--) { setPixelColor(SEGMENT.start + i, getPixelColor(SEGMENT.start + i - 1)); } @@ -975,7 +979,9 @@ uint16_t WS2812FX::mode_running_random(void) { { SEGENV.step = 0; } - return SPEED_FORMULA_L; + + SEGENV.aux1 = it; + return FRAMETIME; } @@ -1091,6 +1097,10 @@ uint16_t WS2812FX::mode_rain() * Fire flicker function */ uint16_t WS2812FX::mode_fire_flicker(void) { + uint32_t cycleTime = 40 + (255 - SEGMENT.speed); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + byte w = (SEGCOLOR(0) >> 24) & 0xFF; byte r = (SEGCOLOR(0) >> 16) & 0xFF; byte g = (SEGCOLOR(0) >> 8) & 0xFF; @@ -1105,7 +1115,9 @@ uint16_t WS2812FX::mode_fire_flicker(void) { setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0, 255 - flicker)); } } - return 20 + random((255 - SEGMENT.speed),(2 * (uint16_t)(255 - SEGMENT.speed))); + + SEGENV.step = it; + return FRAMETIME; } @@ -1285,6 +1297,7 @@ uint16_t WS2812FX::mode_icu(void) { setPixelColor(SEGMENT.start + dest, col); setPixelColor(SEGMENT.start + dest + SEGLEN/2, col); + if (SEGMENT.intensity > 127) return FRAMETIME; return SPEED_FORMULA_L; } @@ -1294,6 +1307,11 @@ uint16_t WS2812FX::mode_icu(void) { */ uint16_t WS2812FX::mode_tricolor_wipe(void) { + uint32_t cycleTime = 40 + (3 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + uint8_t incr = it-SEGENV.step; + if(SEGENV.step < SEGLEN) { uint32_t led_offset = SEGENV.step; setPixelColor(SEGMENT.start + led_offset, SEGCOLOR(0)); @@ -1307,7 +1325,7 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) } SEGENV.step = (SEGENV.step + 1) % (SEGLEN * 3); - return SPEED_FORMULA_L; + return FRAMETIME; } @@ -1318,6 +1336,9 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) */ uint16_t WS2812FX::mode_tricolor_fade(void) { + uint16_t counter = now * ((SEGMENT.speed >> 3) +1); + SEGENV.step = (counter * 768) >> 16; + uint32_t color1 = 0, color2 = 0; byte stage = 0; @@ -1348,10 +1369,7 @@ uint16_t WS2812FX::mode_tricolor_fade(void) setPixelColor(i, color); } - SEGENV.step += 4; - if(SEGENV.step >= 768) SEGENV.step = 0; - - return 5 + ((uint32_t)(255 - SEGMENT.speed) / 10); + return FRAMETIME; } @@ -1361,6 +1379,10 @@ uint16_t WS2812FX::mode_tricolor_fade(void) */ uint16_t WS2812FX::mode_multi_comet(void) { + uint32_t cycleTime = 20 + (2 * (uint32_t)(255 - SEGMENT.speed)); + uint32_t it = now / cycleTime; + if (SEGENV.step == it) return FRAMETIME; + fade_out(SEGMENT.intensity); static uint16_t comets[] = {UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX}; @@ -1382,7 +1404,9 @@ uint16_t WS2812FX::mode_multi_comet(void) } } } - return SPEED_FORMULA_L; + + SEGENV.step = it; + return FRAMETIME; } From 0d4d1eff94ccbf43a8f047968fd8cd9611139070 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 14:58:22 +0100 Subject: [PATCH 38/70] Revert "Merge branch 'master' into framerate" This reverts commit 38cc4603580249cf317353b97941a8b0a1b0080f, reversing changes made to 8600360173083d379f1437a32af580d498c1ccbf. --- wled00/FX.cpp | 28 ++++++++++++++-------------- wled00/FX.h | 14 ++------------ wled00/wled00.ino | 2 +- wled00/wled01_eeprom.ino | 7 ------- 4 files changed, 17 insertions(+), 34 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 1791b710c..4410a43b7 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -301,24 +301,24 @@ uint16_t WS2812FX::scan(bool dual) uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; uint32_t perc = now % cycleTime; uint16_t prog = (perc * 65535) / cycleTime; - uint16_t size = 1 + ((SEGMENT.intensity * SEGLEN) >>9); - uint16_t ledIndex = (prog * ((SEGLEN *2) - size *2)) >> 16; + uint16_t ledIndex = (prog * ((SEGLEN * 2) - 2)) >> 16; + uint16_t size = 1 + SEGMENT.intensity >> 3; fill(SEGCOLOR(1)); - int led_offset = ledIndex - (SEGLEN - size); + int led_offset = ledIndex - (SEGLEN - 1); led_offset = abs(led_offset); - if (dual) { - for (uint16_t j = led_offset; j < led_offset + size; j++) { - uint16_t i2 = SEGMENT.stop -1 -j; - setPixelColor(i2, color_from_palette(i2, true, PALETTE_SOLID_WRAP, (SEGCOLOR(2))? 2:0)); - } + uint16_t i = SEGMENT.start + led_offset; + for (int16_t j=i-size/2; j<=i+size/2; j++) { + if (j>=0) setPixelColor(j, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); } - for (uint16_t j = led_offset; j < led_offset + size; j++) { - uint16_t i = SEGMENT.start + j; - setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); + if (dual) { + uint16_t i2 = SEGMENT.start + SEGLEN - led_offset - 1; + for (int16_t j=i2-size/2; j<=i2+size/2; j++) { + if (j>=0) setPixelColor(j, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); + } } return FRAMETIME; @@ -1004,7 +1004,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { for (uint16_t i = SEGENV.step; i < index; i++) { uint16_t j = (SEGENV.aux0)?i:SEGLEN-1-i; - setPixelColor(SEGMENT.start + j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); + setPixelColor(j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); } if (dual) { uint32_t c; @@ -1016,7 +1016,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { for (uint16_t i = SEGENV.step; i < index; i++) { uint16_t j = (SEGENV.aux0)?SEGLEN-1-i:i; - setPixelColor(SEGMENT.start + j, c); + setPixelColor(j, c); } } @@ -1034,7 +1034,7 @@ uint16_t WS2812FX::mode_comet(void) { fade_out(SEGMENT.intensity); - setPixelColor(SEGMENT.start + index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); + setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); return FRAMETIME; } diff --git a/wled00/FX.h b/wled00/FX.h index 92f3cf78d..53096b7e0 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 92 +#define MODE_COUNT 89 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -175,9 +175,6 @@ #define FX_MODE_SPOTS_FADE 86 #define FX_MODE_GLITTER 87 #define FX_MODE_CANDLE 88 -#define FX_MODE_BOUNCINGBALLS 89 -#define FX_MODE_SINELON 90 -#define FX_MODE_POPCORN 91 class WS2812FX { @@ -322,9 +319,6 @@ class WS2812FX { _mode[FX_MODE_TRI_STATIC_PATTERN] = &WS2812FX::mode_tri_static_pattern; _mode[FX_MODE_SPOTS] = &WS2812FX::mode_spots; _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; - _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_BouncingBalls; - _mode[FX_MODE_SINELON] = &WS2812FX::mode_sinelon; - _mode[FX_MODE_POPCORN] = &WS2812FX::mode_popcorn; _mode[FX_MODE_GLITTER] = &WS2812FX::mode_glitter; _mode[FX_MODE_CANDLE] = &WS2812FX::mode_candle; @@ -508,9 +502,6 @@ class WS2812FX { mode_tri_static_pattern(void), mode_spots(void), mode_spots_fade(void), - mode_BouncingBalls(void), - mode_sinelon(void), - mode_popcorn(void), mode_glitter(void), mode_candle(void); @@ -587,8 +578,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Scanner Dual ","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Meteor Smooth","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle", -"Bouncing Balls", "Sinelon","Popcorn" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle" ])====="; diff --git a/wled00/wled00.ino b/wled00/wled00.ino index a577c95d4..90bf0ac8e 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912232 +#define VERSION 1912231 char versionString[] = "0.9.0-b2"; diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino index 8a43a79db..2f68703ea 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -561,7 +561,6 @@ bool applyPreset(byte index, bool loadBri = true, bool loadCol = true, bool load col[j] = EEPROM.read(i+j+2); colSec[j] = EEPROM.read(i+j+6); } - strip.setColor(2, EEPROM.read(i+12), EEPROM.read(i+13), EEPROM.read(i+14), EEPROM.read(i+15)); //tertiary color } if (loadFX) { @@ -599,12 +598,6 @@ void savePreset(byte index) } EEPROM.write(i+10, effectCurrent); EEPROM.write(i+11, effectSpeed); - - uint32_t colTer = strip.getSegment(strip.getMainSegmentId()).colors[2]; - EEPROM.write(i+12, (colTer >> 16) & 0xFF); - EEPROM.write(i+13, (colTer >> 8) & 0xFF); - EEPROM.write(i+14, (colTer >> 0) & 0xFF); - EEPROM.write(i+15, (colTer >> 24) & 0xFF); EEPROM.write(i+16, effectIntensity); EEPROM.write(i+17, effectPalette); From 805fe1d47e3a99f357ba8120a03ea40c78614dca Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 15:05:12 +0100 Subject: [PATCH 39/70] Revert "more effects to FRAMETIME" This reverts commit f3371c443e16599dff26610e311d627ac4ce7875. --- wled00/FX.cpp | 178 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 146 insertions(+), 32 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 1791b710c..b1e348849 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -961,10 +961,6 @@ uint16_t WS2812FX::mode_halloween(void) { * Random colored pixels running. */ uint16_t WS2812FX::mode_running_random(void) { - uint32_t cycleTime = 25 + (3 * (uint32_t)(255 - SEGMENT.speed)); - uint32_t it = now / cycleTime; - if (SEGENV.aux1 == it) return FRAMETIME; - for(uint16_t i=SEGLEN-1; i > 0; i--) { setPixelColor(SEGMENT.start + i, getPixelColor(SEGMENT.start + i - 1)); } @@ -979,9 +975,7 @@ uint16_t WS2812FX::mode_running_random(void) { { SEGENV.step = 0; } - - SEGENV.aux1 = it; - return FRAMETIME; + return SPEED_FORMULA_L; } @@ -1097,10 +1091,6 @@ uint16_t WS2812FX::mode_rain() * Fire flicker function */ uint16_t WS2812FX::mode_fire_flicker(void) { - uint32_t cycleTime = 40 + (255 - SEGMENT.speed); - uint32_t it = now / cycleTime; - if (SEGENV.step == it) return FRAMETIME; - byte w = (SEGCOLOR(0) >> 24) & 0xFF; byte r = (SEGCOLOR(0) >> 16) & 0xFF; byte g = (SEGCOLOR(0) >> 8) & 0xFF; @@ -1115,9 +1105,7 @@ uint16_t WS2812FX::mode_fire_flicker(void) { setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0, 255 - flicker)); } } - - SEGENV.step = it; - return FRAMETIME; + return 20 + random((255 - SEGMENT.speed),(2 * (uint16_t)(255 - SEGMENT.speed))); } @@ -1297,7 +1285,6 @@ uint16_t WS2812FX::mode_icu(void) { setPixelColor(SEGMENT.start + dest, col); setPixelColor(SEGMENT.start + dest + SEGLEN/2, col); - if (SEGMENT.intensity > 127) return FRAMETIME; return SPEED_FORMULA_L; } @@ -1307,11 +1294,6 @@ uint16_t WS2812FX::mode_icu(void) { */ uint16_t WS2812FX::mode_tricolor_wipe(void) { - uint32_t cycleTime = 40 + (3 * (uint32_t)(255 - SEGMENT.speed)); - uint32_t it = now / cycleTime; - if (SEGENV.step == it) return FRAMETIME; - uint8_t incr = it-SEGENV.step; - if(SEGENV.step < SEGLEN) { uint32_t led_offset = SEGENV.step; setPixelColor(SEGMENT.start + led_offset, SEGCOLOR(0)); @@ -1325,7 +1307,7 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) } SEGENV.step = (SEGENV.step + 1) % (SEGLEN * 3); - return FRAMETIME; + return SPEED_FORMULA_L; } @@ -1336,9 +1318,6 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) */ uint16_t WS2812FX::mode_tricolor_fade(void) { - uint16_t counter = now * ((SEGMENT.speed >> 3) +1); - SEGENV.step = (counter * 768) >> 16; - uint32_t color1 = 0, color2 = 0; byte stage = 0; @@ -1369,7 +1348,10 @@ uint16_t WS2812FX::mode_tricolor_fade(void) setPixelColor(i, color); } - return FRAMETIME; + SEGENV.step += 4; + if(SEGENV.step >= 768) SEGENV.step = 0; + + return 5 + ((uint32_t)(255 - SEGMENT.speed) / 10); } @@ -1379,10 +1361,6 @@ uint16_t WS2812FX::mode_tricolor_fade(void) */ uint16_t WS2812FX::mode_multi_comet(void) { - uint32_t cycleTime = 20 + (2 * (uint32_t)(255 - SEGMENT.speed)); - uint32_t it = now / cycleTime; - if (SEGENV.step == it) return FRAMETIME; - fade_out(SEGMENT.intensity); static uint16_t comets[] = {UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX}; @@ -1404,9 +1382,7 @@ uint16_t WS2812FX::mode_multi_comet(void) } } } - - SEGENV.step = it; - return FRAMETIME; + return SPEED_FORMULA_L; } @@ -2365,6 +2341,95 @@ uint16_t WS2812FX::mode_spots_fade() } +/* +* Bouncing Balls Effect +* Adapted from: https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ +*/ +uint16_t WS2812FX::mode_BouncingBalls(void) { + // number of balls based on intensity setting, + // only has 4 for a few of the higher settings as there is no colour selection + // fourth ball is a random colour + int balls = int(((SEGMENT.intensity * 6.2) / 255) + 1); + + // ideally use speed for gravity effect on the bounce + float Gravity = -9.81; + + const int maxBallCount = 7; + static float Height[maxBallCount]; + static float ImpactVelocity[maxBallCount]; + static int Position[maxBallCount]; + static float TimeSinceLastBounce[maxBallCount]; + static long ClockTimeSinceLastBounce[maxBallCount]; + static int StartHeight = 1; // height in metres (strip length) + static float Dampening[maxBallCount] = {0}; // Coefficient of Restitution (bounce damping) + static float ImpactVelocityStart=sqrt( -2 * Gravity * StartHeight); + + // Different from the examples, to allow for initialisation of the first bounce + if (Dampening[0] == 0) { + for (int i = 0 ; i < maxBallCount ; i++) { + ClockTimeSinceLastBounce[i] = millis(); + ImpactVelocity[i] = ImpactVelocityStart; + TimeSinceLastBounce[i] = 0; + Dampening[i] = 0.90 - float(i)/pow(maxBallCount,2); + } + } + + for (int i = 0 ; i < balls ; i++) { + TimeSinceLastBounce[i] = millis() - ClockTimeSinceLastBounce[i]; + Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000; + + if ( Height[i] < 0 ) { + Height[i] = 0; + ImpactVelocity[i] = Dampening[i] * ImpactVelocity[i]; + ClockTimeSinceLastBounce[i] = millis(); + + if ( ImpactVelocity[i] < 0.01 ) { + ImpactVelocity[i] = ImpactVelocityStart; + } + } + Position[i] = round( Height[i] * (SEGLEN - 1) / StartHeight); + } + + fill(BLACK); + + for (int i = 0 ; i < balls ; i++) { + uint32_t color = SEGCOLOR(i % NUM_COLORS); + if (!color) { + color = color_wheel(random8()); + } + + setPixelColor(Position[i],color); + } + + return 20; +} + +/* +* Sinelon stolen from FASTLED examples +*/ +uint16_t WS2812FX::mode_sinelon(void) { + + fade_out(SEGMENT.intensity); + int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1); + static int prevpos = 0; + + // setRange seems great to use, but doesn't work here for some reason + if( pos < prevpos ) { + for (uint16_t i = pos; i < prevpos; i++) + { + setPixelColor(i, color_from_palette(pos, false, false, 0)); + } + } else { + for (uint16_t i = prevpos; i < pos; i++) + { + setPixelColor(i, color_from_palette(pos, false, false, 0)); + } + } + prevpos = pos; + return FRAMETIME; +} + + //Rainbow with glitter, inspired by https://gist.github.com/kriegsman/062e10f7f07ba8518af6 uint16_t WS2812FX::mode_glitter() { @@ -2379,6 +2444,55 @@ uint16_t WS2812FX::mode_glitter() } +/* +* POPCORN +*/ +typedef struct Kernel { + float position; + float velocity; + int32_t color; +} kernel; + +#define MAX_NUM_POPCORN 12 +#define GRAVITY 0.06 + +uint16_t WS2812FX::mode_popcorn(void) { + uint32_t popcornColor = SEGCOLOR(0); + uint32_t bgColor = SEGCOLOR(1); + if(popcornColor == bgColor) popcornColor = color_wheel(random8()); + + static kernel popcorn[MAX_NUM_POPCORN]; + static float coeff = 0.0f; + if(coeff == 0.0f) { // calculate the velocity coeff once (the secret sauce) + coeff = pow((float)SEGLEN, 0.5223324f) * 0.3944296f; + } + + fill(SEGCOLOR(1)); + + uint16_t ledIndex; + for(int8_t i=0; i < MAX_NUM_POPCORN; i++) { + bool isActive = popcorn[i].position >= 0.0f; + + if(isActive) { // if kernel is active, update its position + popcorn[i].position += popcorn[i].velocity; + popcorn[i].velocity -= (GRAVITY * SEGMENT.intensity/25); + ledIndex = SEGMENT.start + popcorn[i].position; + if(ledIndex >= SEGMENT.start && ledIndex <= SEGMENT.stop) setPixelColor(ledIndex, popcorn[i].color); + } else { // if kernel is inactive, randomly pop it + if(random8() < 2) { // POP!!! + popcorn[i].position = 0.0f; + popcorn[i].velocity = coeff * (random(66, 100) / 100.0f); + popcorn[i].color = popcornColor; + ledIndex = SEGMENT.start; + setPixelColor(ledIndex, popcorn[i].color); + } + } + } + + return SPEED_FORMULA_L; +} + + //values close to 100 produce 5Hz flicker, which looks very candle-y //Inspired by https://github.com/avanhanegem/ArduinoCandleEffectNeoPixel //and https://cpldcpu.wordpress.com/2016/01/05/reverse-engineering-a-real-candle/ From 7712faca0a2bad60ba40ee49056349e392c85619 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 15:11:04 +0100 Subject: [PATCH 40/70] manual merge --- wled00/wled00.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 90bf0ac8e..a577c95d4 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912231 +#define VERSION 1912232 char versionString[] = "0.9.0-b2"; From 58f41a1f9b7946489cc5a4d50c3198d5c239e3f7 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 15:12:54 +0100 Subject: [PATCH 41/70] manual merge #2 --- wled00/FX.cpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 4410a43b7..1791b710c 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -301,24 +301,24 @@ uint16_t WS2812FX::scan(bool dual) uint32_t cycleTime = 750 + (255 - SEGMENT.speed)*150; uint32_t perc = now % cycleTime; uint16_t prog = (perc * 65535) / cycleTime; - uint16_t ledIndex = (prog * ((SEGLEN * 2) - 2)) >> 16; - uint16_t size = 1 + SEGMENT.intensity >> 3; + uint16_t size = 1 + ((SEGMENT.intensity * SEGLEN) >>9); + uint16_t ledIndex = (prog * ((SEGLEN *2) - size *2)) >> 16; fill(SEGCOLOR(1)); - int led_offset = ledIndex - (SEGLEN - 1); + int led_offset = ledIndex - (SEGLEN - size); led_offset = abs(led_offset); - uint16_t i = SEGMENT.start + led_offset; - for (int16_t j=i-size/2; j<=i+size/2; j++) { - if (j>=0) setPixelColor(j, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); + if (dual) { + for (uint16_t j = led_offset; j < led_offset + size; j++) { + uint16_t i2 = SEGMENT.stop -1 -j; + setPixelColor(i2, color_from_palette(i2, true, PALETTE_SOLID_WRAP, (SEGCOLOR(2))? 2:0)); + } } - if (dual) { - uint16_t i2 = SEGMENT.start + SEGLEN - led_offset - 1; - for (int16_t j=i2-size/2; j<=i2+size/2; j++) { - if (j>=0) setPixelColor(j, color_from_palette(i2, true, PALETTE_SOLID_WRAP, 0)); - } + for (uint16_t j = led_offset; j < led_offset + size; j++) { + uint16_t i = SEGMENT.start + j; + setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 0)); } return FRAMETIME; @@ -1004,7 +1004,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { for (uint16_t i = SEGENV.step; i < index; i++) { uint16_t j = (SEGENV.aux0)?i:SEGLEN-1-i; - setPixelColor(j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); + setPixelColor(SEGMENT.start + j, color_from_palette(j, true, PALETTE_SOLID_WRAP, 0)); } if (dual) { uint32_t c; @@ -1016,7 +1016,7 @@ uint16_t WS2812FX::larson_scanner(bool dual) { for (uint16_t i = SEGENV.step; i < index; i++) { uint16_t j = (SEGENV.aux0)?SEGLEN-1-i:i; - setPixelColor(j, c); + setPixelColor(SEGMENT.start + j, c); } } @@ -1034,7 +1034,7 @@ uint16_t WS2812FX::mode_comet(void) { fade_out(SEGMENT.intensity); - setPixelColor(index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); + setPixelColor(SEGMENT.start + index, color_from_palette(index, true, PALETTE_SOLID_WRAP, 0)); return FRAMETIME; } From 37827cdd6c95f83659c2f69f288580e822277d4e Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 15:20:38 +0100 Subject: [PATCH 42/70] another manual merge --- wled00/wled01_eeprom.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/wled00/wled01_eeprom.ino b/wled00/wled01_eeprom.ino index 2f68703ea..8a43a79db 100644 --- a/wled00/wled01_eeprom.ino +++ b/wled00/wled01_eeprom.ino @@ -561,6 +561,7 @@ bool applyPreset(byte index, bool loadBri = true, bool loadCol = true, bool load col[j] = EEPROM.read(i+j+2); colSec[j] = EEPROM.read(i+j+6); } + strip.setColor(2, EEPROM.read(i+12), EEPROM.read(i+13), EEPROM.read(i+14), EEPROM.read(i+15)); //tertiary color } if (loadFX) { @@ -598,6 +599,12 @@ void savePreset(byte index) } EEPROM.write(i+10, effectCurrent); EEPROM.write(i+11, effectSpeed); + + uint32_t colTer = strip.getSegment(strip.getMainSegmentId()).colors[2]; + EEPROM.write(i+12, (colTer >> 16) & 0xFF); + EEPROM.write(i+13, (colTer >> 8) & 0xFF); + EEPROM.write(i+14, (colTer >> 0) & 0xFF); + EEPROM.write(i+15, (colTer >> 24) & 0xFF); EEPROM.write(i+16, effectIntensity); EEPROM.write(i+17, effectPalette); From f39b9041a032beb5c81c289b51d6c7bc4a5c9189 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 15:22:40 +0100 Subject: [PATCH 43/70] remove test --- wled00/FX.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 1791b710c..cfd204ef2 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1297,8 +1297,7 @@ uint16_t WS2812FX::mode_icu(void) { setPixelColor(SEGMENT.start + dest, col); setPixelColor(SEGMENT.start + dest + SEGLEN/2, col); - if (SEGMENT.intensity > 127) return FRAMETIME; - return SPEED_FORMULA_L; + return FRAMETIME; } From 3083ccddcc68db29c07509d280b304403e1e579a Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 20:41:03 +0100 Subject: [PATCH 44/70] rework of new effects, sync to FRAMETIME add options for sinelon --- wled00/FX.cpp | 63 ++++++++++++++++++++++++++++++++++++++++----------- wled00/FX.h | 15 ++++++++---- 2 files changed, 61 insertions(+), 17 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index b1e348849..5461347e3 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2346,9 +2346,8 @@ uint16_t WS2812FX::mode_spots_fade() * Adapted from: https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ */ uint16_t WS2812FX::mode_BouncingBalls(void) { - // number of balls based on intensity setting, - // only has 4 for a few of the higher settings as there is no colour selection - // fourth ball is a random colour + // number of balls based on intensity setting to max of 7 (cycles colors) + // non-chosen color is a random color int balls = int(((SEGMENT.intensity * 6.2) / 255) + 1); // ideally use speed for gravity effect on the bounce @@ -2375,7 +2374,7 @@ uint16_t WS2812FX::mode_BouncingBalls(void) { } for (int i = 0 ; i < balls ; i++) { - TimeSinceLastBounce[i] = millis() - ClockTimeSinceLastBounce[i]; + TimeSinceLastBounce[i] = (millis() - ClockTimeSinceLastBounce[i])/((255-SEGMENT.speed)*8/256 +1); Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000; if ( Height[i] < 0 ) { @@ -2398,37 +2397,75 @@ uint16_t WS2812FX::mode_BouncingBalls(void) { color = color_wheel(random8()); } - setPixelColor(Position[i],color); + setPixelColor(SEGMENT.start+Position[i],color); } - return 20; + return FRAMETIME; } /* * Sinelon stolen from FASTLED examples */ -uint16_t WS2812FX::mode_sinelon(void) { +uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) { fade_out(SEGMENT.intensity); int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1); static int prevpos = 0; + + uint32_t color1 = color_from_palette(pos, true, false, 0); + if (rainbow) { + color1 = color_wheel((pos % 8) * 32); + } - // setRange seems great to use, but doesn't work here for some reason if( pos < prevpos ) { for (uint16_t i = pos; i < prevpos; i++) { - setPixelColor(i, color_from_palette(pos, false, false, 0)); + setPixelColor(i, color1); } } else { for (uint16_t i = prevpos; i < pos; i++) { - setPixelColor(i, color_from_palette(pos, false, false, 0)); + setPixelColor(SEGMENT.start + i, color1); + } + } + + if (dual) { + uint32_t color2 = SEGCOLOR(2); + + if (color2 == 0) { + color2 = color_from_palette(pos, true, false, 0); + } + if (rainbow) { + color2 = color_wheel((pos % 8) * 32); + } + if( pos < prevpos ) { + for (uint16_t i = pos; i < prevpos; i++) + { + setPixelColor(SEGMENT.start + SEGLEN-1-i, color2); + } + } else { + for (uint16_t i = prevpos; i < pos; i++) + { + setPixelColor(SEGMENT.start + SEGLEN-1-i, color2); + } } } prevpos = pos; return FRAMETIME; } +uint16_t WS2812FX::mode_sinelon(void) { + return sinelon_base(false); +} + +uint16_t WS2812FX::mode_sinelon_dual(void) { + return sinelon_base(true); +} + +uint16_t WS2812FX::mode_sinelon_rainbow(void) { + return sinelon_base(true, true); +} + //Rainbow with glitter, inspired by https://gist.github.com/kriegsman/062e10f7f07ba8518af6 uint16_t WS2812FX::mode_glitter() @@ -2470,12 +2507,12 @@ uint16_t WS2812FX::mode_popcorn(void) { fill(SEGCOLOR(1)); uint16_t ledIndex; - for(int8_t i=0; i < MAX_NUM_POPCORN; i++) { + for(int8_t i=0; i < SEGMENT.intensity*MAX_NUM_POPCORN/255; i++) { bool isActive = popcorn[i].position >= 0.0f; if(isActive) { // if kernel is active, update its position popcorn[i].position += popcorn[i].velocity; - popcorn[i].velocity -= (GRAVITY * SEGMENT.intensity/25); + popcorn[i].velocity -= (GRAVITY * ((255-SEGMENT.speed)*8/256 + 1)); ledIndex = SEGMENT.start + popcorn[i].position; if(ledIndex >= SEGMENT.start && ledIndex <= SEGMENT.stop) setPixelColor(ledIndex, popcorn[i].color); } else { // if kernel is inactive, randomly pop it @@ -2489,7 +2526,7 @@ uint16_t WS2812FX::mode_popcorn(void) { } } - return SPEED_FORMULA_L; + return FRAMETIME; } diff --git a/wled00/FX.h b/wled00/FX.h index 92f3cf78d..29a667939 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 92 +#define MODE_COUNT 94 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -177,7 +177,9 @@ #define FX_MODE_CANDLE 88 #define FX_MODE_BOUNCINGBALLS 89 #define FX_MODE_SINELON 90 -#define FX_MODE_POPCORN 91 +#define FX_MODE_SINELON_DUAL 91 +#define FX_MODE_SINELON_RAINBOW 92 +#define FX_MODE_POPCORN 93 class WS2812FX { @@ -324,6 +326,8 @@ class WS2812FX { _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_BouncingBalls; _mode[FX_MODE_SINELON] = &WS2812FX::mode_sinelon; + _mode[FX_MODE_SINELON_DUAL] = &WS2812FX::mode_sinelon_dual; + _mode[FX_MODE_SINELON_RAINBOW] = &WS2812FX::mode_sinelon_rainbow; _mode[FX_MODE_POPCORN] = &WS2812FX::mode_popcorn; _mode[FX_MODE_GLITTER] = &WS2812FX::mode_glitter; _mode[FX_MODE_CANDLE] = &WS2812FX::mode_candle; @@ -510,6 +514,8 @@ class WS2812FX { mode_spots_fade(void), mode_BouncingBalls(void), mode_sinelon(void), + mode_sinelon_dual(void), + mode_sinelon_rainbow(void), mode_popcorn(void), mode_glitter(void), mode_candle(void); @@ -553,6 +559,7 @@ class WS2812FX { theater_chase(uint32_t, uint32_t, bool), running_base(bool), larson_scanner(bool), + sinelon_base(bool,bool), dissolve(uint32_t), chase(uint32_t, uint32_t, uint32_t, bool), gradient_base(bool), @@ -587,8 +594,8 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Scanner Dual ","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Meteor Smooth","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle", -"Bouncing Balls", "Sinelon","Popcorn" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle","Bouncing Balls", +"Sinelon","Sinelon Dual","Sinelon Rainbow","Popcorn" ])====="; From 012045878d68a6e22c3c9b97b5e1dc2ada741926 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 24 Dec 2019 21:05:20 +0100 Subject: [PATCH 45/70] theatre rainbow too fast with a double-step --- wled00/FX.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index cfd204ef2..7ea1fe79c 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -414,7 +414,6 @@ uint16_t WS2812FX::mode_theater_chase(void) { * Inspired by the Adafruit examples. */ uint16_t WS2812FX::mode_theater_chase_rainbow(void) { - SEGENV.step = (SEGENV.step + 1) & 0xFF; return theater_chase(color_wheel(SEGENV.step), SEGCOLOR(1), false); } From 50082043ef4c3870446df7ce0ead46c6532201c1 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Fri, 27 Dec 2019 20:58:06 +0100 Subject: [PATCH 46/70] add exploding fireworks --- wled00/FX.cpp | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++ wled00/FX.h | 12 +++-- 2 files changed, 131 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c862a0854..207ce1ff8 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2348,3 +2348,125 @@ uint16_t WS2812FX::mode_candle() return FRAMETIME; } + + +/* + * Exploding fireworks effect + * adapted from: http://www.anirama.com/1000leds/1d-fireworks/ + */ +#define NUM_SPARKS 60 // max number (could be NUM_LEDS / 2); +uint16_t WS2812FX::mode_exploding_fireworks(void) +{ + if (SEGENV.aux1==0) { // manage states using params + flare(); + } else { + explode(); + } + + return FRAMETIME; +} + +static float sparkPos[NUM_SPARKS]; +static float sparkVel[NUM_SPARKS]; +static float sparkCol[NUM_SPARKS]; +static float flarePos; +static float flareVel; +static float brightness; + +void WS2812FX::flare() { + float gravity = -0.02 - (SEGMENT.speed/10000.0); // m/s/s + + if (SEGENV.aux0 == 0) { //use aux0 for initialization flag + flarePos = 0; + flareVel = float(random16(150, 190)) / (75+SEGMENT.intensity/4); // trial and error to get reasonable range + brightness = 1; +Serial.printf("%3.1f %3.3f %3d",flareVel,gravity,SEGMENT.intensity); +Serial.println(""); + // initialize launch sparks + for (int i = 0; i < 5; i++) { + sparkPos[i] = 0; + sparkVel[i] = (float(random8(100,255)) / 255.0) * (flareVel/ 3.0); // random around 20% of flare velocity + sparkCol[i] = sparkVel[i] * 1000.0; + sparkCol[i] = constrain(sparkCol[i], 0, 255); + } + SEGENV.aux0=1; + } + + // launch + if (flareVel >= -.3) { + // sparks + for (int i = 0; i < 5; i++) { + sparkPos[i] += sparkVel[i]; + sparkPos[i] = constrain(sparkPos[i], 0, SEGLEN-1); + sparkVel[i] += gravity; + sparkCol[i] += -.8; + sparkCol[i] = constrain(sparkCol[i], 0, 255); + + CRGB color = HeatColor(sparkCol[i]); + setPixelColor(SEGMENT.stop - int(sparkPos[i]),color.red,color.green,color.blue); + } + // flare + fade_out(255); + setPixelColor(SEGMENT.stop - int(flarePos),brightness*255,brightness*255,brightness*255); + + flarePos += flareVel; + flarePos = constrain(flarePos, 0, SEGLEN-1); + flareVel += gravity; + brightness *= .975; + } else { + SEGENV.aux0=0; // allow next state to init + SEGENV.aux1=1; // ready to explode + } +} + +/* + * Explode! + * + * Explosion happens where the flare ended. + * Size is proportional to the height. + */ +void WS2812FX::explode() { + int nSparks = flarePos / 2; // works out to look about right + nSparks = constrain(nSparks,0,NUM_SPARKS); + static float dying_gravity; + float gravity = -0.02 - (SEGMENT.speed/10000.0); + float c1=120; + float c2=50; + + // initialize sparks + if (SEGENV.aux0==0) { + for (int i = 0; i < nSparks; i++) { + sparkPos[i] = flarePos; + sparkVel[i] = (float(random16(0, 20000)) / 10000.0) - 1.0; // from -1 to 1 + sparkCol[i] = abs(sparkVel[i] * 500.0); // set colors before scaling velocity to keep them bright + sparkCol[i] = constrain(sparkCol[i], 0, 255); + sparkVel[i] *= flarePos / SEGLEN; // proportional to height + } + sparkCol[0] = 255; // this will be our known spark + dying_gravity = gravity; + SEGENV.aux0=1; + } + + if (sparkCol[0] > c2/10 ) {//&& sparkPos[0] > 0) { // as long as our known spark is lit, work with all the sparks + fade_out(255); + for (int i = 0; i < nSparks; i++) { + sparkPos[i] += sparkVel[i]; + sparkPos[i] = constrain(sparkPos[i], 0, SEGLEN-1); + sparkVel[i] += dying_gravity; + sparkCol[i] *= .97; + sparkCol[i] = constrain(sparkCol[i], 0, 255); // red cross dissolve + + if(sparkCol[i] > c1) { // fade white to yellow + setPixelColor(SEGMENT.stop - sparkPos[i],255, 255, (255 * (sparkCol[i] - c1)) / (255 - c1)); + } else if (sparkCol[i] < c2) { // fade from red to black + setPixelColor(SEGMENT.stop - sparkPos[i],(255 * sparkCol[i]) / c2, 0, 0); + } else { // fade from yellow to red + setPixelColor(SEGMENT.stop - sparkPos[i],255, (255 * (sparkCol[i] - c2)) / (c1 - c2), 0); + } + } + dying_gravity *= .995; // as sparks burn out they fall slower + } else { + SEGENV.aux0=0; + SEGENV.aux1=0; + } +} \ No newline at end of file diff --git a/wled00/FX.h b/wled00/FX.h index 9ba70357d..7fa1a8487 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 89 +#define MODE_COUNT 90 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -175,6 +175,7 @@ #define FX_MODE_SPOTS_FADE 86 #define FX_MODE_GLITTER 87 #define FX_MODE_CANDLE 88 +#define FX_MODE_EXPLODING_FIREWORKS 89 class WS2812FX { @@ -321,6 +322,8 @@ class WS2812FX { _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; _mode[FX_MODE_GLITTER] = &WS2812FX::mode_glitter; _mode[FX_MODE_CANDLE] = &WS2812FX::mode_candle; + _mode[FX_MODE_EXPLODING_FIREWORKS] = &WS2812FX::mode_exploding_fireworks; + _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -359,6 +362,8 @@ class WS2812FX { resetSegments(), setPixelColor(uint16_t n, uint32_t c), setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0), + flare(void), + explode(void), show(void); bool @@ -503,7 +508,8 @@ class WS2812FX { mode_spots(void), mode_spots_fade(void), mode_glitter(void), - mode_candle(void); + mode_candle(void), + mode_exploding_fireworks(void); private: @@ -577,7 +583,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle","Fireworks 1D" ])====="; From ce5839ce27d5e7a6cd5deaeeb8e0dd5ad888fc60 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Fri, 27 Dec 2019 22:20:34 +0100 Subject: [PATCH 47/70] remove debug message --- wled00/FX.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 207ce1ff8..af0974b03 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2380,8 +2380,7 @@ void WS2812FX::flare() { flarePos = 0; flareVel = float(random16(150, 190)) / (75+SEGMENT.intensity/4); // trial and error to get reasonable range brightness = 1; -Serial.printf("%3.1f %3.3f %3d",flareVel,gravity,SEGMENT.intensity); -Serial.println(""); + // initialize launch sparks for (int i = 0; i < 5; i++) { sparkPos[i] = 0; From e3def22b07f7bd0547ded1c00d2026bdd4d7bbaf Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Sat, 28 Dec 2019 15:43:55 +0100 Subject: [PATCH 48/70] add multi fireworks starburst effect --- wled00/FX.cpp | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++ wled00/FX.h | 9 ++-- 2 files changed, 122 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c862a0854..a9fc1f039 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2348,3 +2348,119 @@ uint16_t WS2812FX::mode_candle() return FRAMETIME; } + +typedef struct Particle { + CRGB color; + uint32_t birth =0; + uint32_t last =0; + double vel =0; + uint16_t pos =0; + float fragment[40]; +} star; + +uint16_t WS2812FX::mode_starburst(void) { + uint32_t it = millis(); + + boolean Blend = true; + const uint8_t numStars = 10; + const uint8_t maxFrag = 15; + static star stars[numStars]; + float MaxSpeed = 375.0f; // Max velocity + int NewParticleProbability = 2; // Odds of new particle (out of 255) + float ParticlePreignitonTime = 0.0f; // How long to "wink" + float ParticleIgnition = 0.15f; // How long to "flash" + float ParticleHoldTime = 0.0f; // Main lifecycle time + float ParticleFadeTime = 1.4f; // Fade out time + float ParticleSize = 0.00f; // Size of the particle + + for (int j = 0; j < numStars; j++) + { + if (random8((265-SEGMENT.speed)/2) < NewParticleProbability && stars[j].birth==0) + { + // Pick a random color and location. + uint16_t startPos = random8(SEGLEN-1); + CRGB color = col_to_crgb(color_wheel(random8())); + double multiplier = (double)(random8())/255.0 * 0.5; + + stars[j].color = color; + stars[j].pos = startPos; + stars[j].vel = MaxSpeed * (double)(random16())/65535.0 * multiplier; + stars[j].birth = it; + stars[j].last = it; + int num = 10+SEGMENT.intensity * random8(5,maxFrag)/255; + + for (int i=0; i<=maxFrag; i++) { + if (i < num) stars[j].fragment[i] = startPos; + else stars[j].fragment[i] = -1; + } + } + } + + fill(BLACK); + + for (int j=0; j 0) { + float dt = (it-stars[j].last)/1000.0; + + for (int i=0; i<=maxFrag; i++) { + int var = i/2; + if (stars[j].fragment[i] > 0) { + if (i % 2) { + stars[j].fragment[i] -= stars[j].vel * dt * (float)var/6.0; + } else { + stars[j].fragment[i] += stars[j].vel * dt * (float)var/6.0; + } + } + } + stars[j].last = it; + stars[j].vel -= 2*stars[j].vel*dt; + stars[j].color = stars[j].color.nscale8_video(235); + } + + CRGB c = stars[j].color; + + // If the star is brand new, it flashes white briefly. + // Otherwise it just fades over time. + float fade = 0.0f; + float age = (it-stars[j].birth)/1000.0; + + if (age > ParticlePreignitonTime && age < ParticleIgnition + ParticlePreignitonTime) { + c = CRGB(WHITE); + } else { + // Figure out how much to fade and shrink the star based on + // its age relative to its lifetime + if (age < ParticlePreignitonTime) { + fade = 1.0 - (age / ParticlePreignitonTime); + } else { + age -= ParticlePreignitonTime; + if (age < ParticleHoldTime + ParticleIgnition) { + fade = 0.0f; // Just born + } else if (age > ParticleHoldTime + ParticleIgnition + ParticleFadeTime) { + fade = 1.0f; // Black hole, all faded out + stars[j].birth = 0; + } else { + age -= (ParticleHoldTime + ParticleIgnition); + fade = (age / ParticleFadeTime); // Fading star + } + } + c = c.nscale8_video(255-int(255.0*fade)); + } + ParticleSize = (1 - fade) * 5; + + for (int i=0; i<=maxFrag; i++) { + if (stars[j].fragment[i] > 0) { + int start = stars[j].fragment[i] - int(ParticleSize/2); + if (start<0) start = 0; + int end = stars[j].fragment[i] + int(ParticleSize/2); + if (end>SEGLEN-1) end = SEGLEN-1; + for (int p=start; p<=end; p++) { + setPixelColor(SEGMENT.start+p, c.r, c.g, c.b); + } + } + } + + } + + return FRAMETIME; +} \ No newline at end of file diff --git a/wled00/FX.h b/wled00/FX.h index 9ba70357d..f61cb4005 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -84,7 +84,7 @@ #define IS_REVERSE ((SEGMENT.options & REVERSE ) == REVERSE ) #define IS_SELECTED ((SEGMENT.options & SELECTED) == SELECTED ) -#define MODE_COUNT 89 +#define MODE_COUNT 90 #define FX_MODE_STATIC 0 #define FX_MODE_BLINK 1 @@ -175,6 +175,7 @@ #define FX_MODE_SPOTS_FADE 86 #define FX_MODE_GLITTER 87 #define FX_MODE_CANDLE 88 +#define FX_MODE_STARBURST 89 class WS2812FX { @@ -321,6 +322,7 @@ class WS2812FX { _mode[FX_MODE_SPOTS_FADE] = &WS2812FX::mode_spots_fade; _mode[FX_MODE_GLITTER] = &WS2812FX::mode_glitter; _mode[FX_MODE_CANDLE] = &WS2812FX::mode_candle; + _mode[FX_MODE_STARBURST] = &WS2812FX::mode_starburst; _brightness = DEFAULT_BRIGHTNESS; currentPalette = CRGBPalette16(CRGB::Black); @@ -503,7 +505,8 @@ class WS2812FX { mode_spots(void), mode_spots_fade(void), mode_glitter(void), - mode_candle(void); + mode_candle(void), + mode_starburst(void); private: @@ -577,7 +580,7 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "Two Dots","Two Areas","Circus","Halloween","Tri Chase","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", "Dual Scanner","Stream 2","Oscillate","Pride 2015","Juggle","Palette","Fire 2012","Colorwaves","Bpm","Fill Noise", "Noise 1","Noise 2","Noise 3","Noise 4","Colortwinkles","Lake","Meteor","Smooth Meteor","Railway","Ripple", -"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle" +"Twinklefox","Twinklecat","Halloween Eyes","Solid Pattern","Solid Pattern Tri","Spots","Spots Fade","Glitter","Candle","Fireworks Starburst" ])====="; From 5efd1f3a918d1e90678ada1eb826fba268727ee9 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 30 Dec 2019 00:04:56 +0100 Subject: [PATCH 49/70] add comment for source and description --- wled00/FX.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index a9fc1f039..48048339d 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2349,6 +2349,12 @@ uint16_t WS2812FX::mode_candle() return FRAMETIME; } + +/* +/ Fireworks in starburst effect +/ based on the video: https://www.reddit.com/r/arduino/comments/c3sd46/i_made_this_fireworks_effect_for_my_led_strips/ +/ Speed sets frequency of new starbursts, intensity is the intensity of the burst +*/ typedef struct Particle { CRGB color; uint32_t birth =0; From f187d7258b73013ae8605b7379eabe80c4c7114b Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 30 Dec 2019 00:08:49 +0100 Subject: [PATCH 50/70] rework for slightly better visuals --- wled00/FX.cpp | 63 +++++++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 48048339d..501995ffb 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2360,7 +2360,7 @@ typedef struct Particle { uint32_t birth =0; uint32_t last =0; double vel =0; - uint16_t pos =0; + uint16_t pos =-1; float fragment[40]; } star; @@ -2368,34 +2368,36 @@ uint16_t WS2812FX::mode_starburst(void) { uint32_t it = millis(); boolean Blend = true; - const uint8_t numStars = 10; - const uint8_t maxFrag = 15; + const uint8_t numStars = 12; + const uint8_t maxFrag = 20; static star stars[numStars]; float MaxSpeed = 375.0f; // Max velocity int NewParticleProbability = 2; // Odds of new particle (out of 255) float ParticlePreignitonTime = 0.0f; // How long to "wink" - float ParticleIgnition = 0.15f; // How long to "flash" + float ParticleIgnition = 0.06f; // How long to "flash" float ParticleHoldTime = 0.0f; // Main lifecycle time - float ParticleFadeTime = 1.4f; // Fade out time + float ParticleFadeTime = 2.6f; // Fade out time float ParticleSize = 0.00f; // Size of the particle for (int j = 0; j < numStars; j++) { - if (random8((265-SEGMENT.speed)/2) < NewParticleProbability && stars[j].birth==0) + // speed to adjust chance of a burst, max is nearly always. + if (random8((263-SEGMENT.speed)/2) < NewParticleProbability && stars[j].birth==0) { // Pick a random color and location. uint16_t startPos = random8(SEGLEN-1); CRGB color = col_to_crgb(color_wheel(random8())); - double multiplier = (double)(random8())/255.0 * 0.5; + double multiplier = (float)(random8())/255.0 * 1.0; stars[j].color = color; stars[j].pos = startPos; - stars[j].vel = MaxSpeed * (double)(random16())/65535.0 * multiplier; + stars[j].vel = MaxSpeed * (float)(random8())/255.0 * multiplier; stars[j].birth = it; stars[j].last = it; - int num = 10+SEGMENT.intensity * random8(5,maxFrag)/255; + // more fragments means larger burst effect + int num = random8(5,10 + (SEGMENT.intensity * maxFrag/255)); - for (int i=0; i<=maxFrag; i++) { + for (int i=0; i<40; i++) { if (i < num) stars[j].fragment[i] = startPos; else stars[j].fragment[i] = -1; } @@ -2406,12 +2408,14 @@ uint16_t WS2812FX::mode_starburst(void) { for (int j=0; j 0) { + if (stars[j].birth != 0) { float dt = (it-stars[j].last)/1000.0; for (int i=0; i<=maxFrag; i++) { int var = i/2; + if (stars[j].fragment[i] > 0) { + // spplit fragments half to each side with some travelling further if (i % 2) { stars[j].fragment[i] -= stars[j].vel * dt * (float)var/6.0; } else { @@ -2420,8 +2424,8 @@ uint16_t WS2812FX::mode_starburst(void) { } } stars[j].last = it; - stars[j].vel -= 2*stars[j].vel*dt; - stars[j].color = stars[j].color.nscale8_video(235); + stars[j].vel -= 3*stars[j].vel*dt; + stars[j].color = stars[j].color.nscale8(235); } CRGB c = stars[j].color; @@ -2430,7 +2434,7 @@ uint16_t WS2812FX::mode_starburst(void) { // Otherwise it just fades over time. float fade = 0.0f; float age = (it-stars[j].birth)/1000.0; - + if (age > ParticlePreignitonTime && age < ParticleIgnition + ParticlePreignitonTime) { c = CRGB(WHITE); } else { @@ -2439,34 +2443,33 @@ uint16_t WS2812FX::mode_starburst(void) { if (age < ParticlePreignitonTime) { fade = 1.0 - (age / ParticlePreignitonTime); } else { - age -= ParticlePreignitonTime; - if (age < ParticleHoldTime + ParticleIgnition) { - fade = 0.0f; // Just born - } else if (age > ParticleHoldTime + ParticleIgnition + ParticleFadeTime) { - fade = 1.0f; // Black hole, all faded out - stars[j].birth = 0; - } else { - age -= (ParticleHoldTime + ParticleIgnition); - fade = (age / ParticleFadeTime); // Fading star - } + age -= ParticlePreignitonTime; + if (age < ParticleHoldTime + ParticleIgnition) { + fade = 0.0f; // Just born + } else if (age > ParticleHoldTime + ParticleIgnition + ParticleFadeTime) { + fade = 1.0f; // Black hole, all faded out + stars[j].birth = 0; + } else { + age -= (ParticleHoldTime + ParticleIgnition); + fade = (age / ParticleFadeTime); // Fading star + } } - c = c.nscale8_video(255-int(255.0*fade)); + + c = c.nscale8(255-int(255.0*fade)/2); } - ParticleSize = (1 - fade) * 5; + ParticleSize = (1 - fade) * 4; for (int i=0; i<=maxFrag; i++) { if (stars[j].fragment[i] > 0) { - int start = stars[j].fragment[i] - int(ParticleSize/2); + int start = int(stars[j].fragment[i]) - int(ParticleSize/2); if (start<0) start = 0; - int end = stars[j].fragment[i] + int(ParticleSize/2); + int end = int(stars[j].fragment[i]) + int(ParticleSize/2); if (end>SEGLEN-1) end = SEGLEN-1; for (int p=start; p<=end; p++) { setPixelColor(SEGMENT.start+p, c.r, c.g, c.b); } } } - } - return FRAMETIME; } \ No newline at end of file From 67758b49806e281596ab4e31a067f4214771e5f3 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 30 Dec 2019 00:20:05 +0100 Subject: [PATCH 51/70] rework sinelon, bouncing, popcorn to remove some unnecessary statics --- wled00/FX.cpp | 62 +++++++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 36 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 5461347e3..79837df0d 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2343,34 +2343,28 @@ uint16_t WS2812FX::mode_spots_fade() /* * Bouncing Balls Effect -* Adapted from: https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ */ uint16_t WS2812FX::mode_BouncingBalls(void) { // number of balls based on intensity setting to max of 7 (cycles colors) // non-chosen color is a random color int balls = int(((SEGMENT.intensity * 6.2) / 255) + 1); - // ideally use speed for gravity effect on the bounce - float Gravity = -9.81; + const int maxBallCount = 7; + + float Gravity = -9.81; // standard value of gravity + int Position[maxBallCount]; // current position of the ball normalized to segment size + float TimeSinceLastBounce[maxBallCount] = {0}; // time difference for physics calculations + int StartHeight = 1; // height in metres (strip length) + float Dampening[maxBallCount] = {0}; // Coefficient of Restitution (bounce damping) + float ImpactVelocityStart = sqrt( -2 * Gravity * StartHeight); - const int maxBallCount = 7; + static float ImpactVelocity[maxBallCount] = {ImpactVelocityStart}; + static long ClockTimeSinceLastBounce[maxBallCount] = {millis()}; static float Height[maxBallCount]; - static float ImpactVelocity[maxBallCount]; - static int Position[maxBallCount]; - static float TimeSinceLastBounce[maxBallCount]; - static long ClockTimeSinceLastBounce[maxBallCount]; - static int StartHeight = 1; // height in metres (strip length) - static float Dampening[maxBallCount] = {0}; // Coefficient of Restitution (bounce damping) - static float ImpactVelocityStart=sqrt( -2 * Gravity * StartHeight); - - // Different from the examples, to allow for initialisation of the first bounce - if (Dampening[0] == 0) { - for (int i = 0 ; i < maxBallCount ; i++) { - ClockTimeSinceLastBounce[i] = millis(); - ImpactVelocity[i] = ImpactVelocityStart; - TimeSinceLastBounce[i] = 0; - Dampening[i] = 0.90 - float(i)/pow(maxBallCount,2); - } + + //set up variable damping for better effect using multiple balls + for (int i = 0 ; i < maxBallCount ; i++) { + Dampening[i] = 0.90 - float(i)/pow(maxBallCount,2); } for (int i = 0 ; i < balls ; i++) { @@ -2410,7 +2404,7 @@ uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) { fade_out(SEGMENT.intensity); int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1); - static int prevpos = 0; + int prevpos = SEGENV.aux0; uint32_t color1 = color_from_palette(pos, true, false, 0); if (rainbow) { @@ -2418,13 +2412,11 @@ uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) { } if( pos < prevpos ) { - for (uint16_t i = pos; i < prevpos; i++) - { + for (uint16_t i = pos; i < prevpos; i++) { setPixelColor(i, color1); } } else { - for (uint16_t i = prevpos; i < pos; i++) - { + for (uint16_t i = prevpos; i < pos; i++) { setPixelColor(SEGMENT.start + i, color1); } } @@ -2438,19 +2430,18 @@ uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) { if (rainbow) { color2 = color_wheel((pos % 8) * 32); } - if( pos < prevpos ) { - for (uint16_t i = pos; i < prevpos; i++) - { + if ( pos < prevpos ) { + for (uint16_t i = pos; i < prevpos; i++) { setPixelColor(SEGMENT.start + SEGLEN-1-i, color2); } } else { - for (uint16_t i = prevpos; i < pos; i++) - { + for (uint16_t i = prevpos; i < pos; i++) { setPixelColor(SEGMENT.start + SEGLEN-1-i, color2); } } } - prevpos = pos; + + SEGENV.aux0 = pos; return FRAMETIME; } @@ -2497,12 +2488,9 @@ uint16_t WS2812FX::mode_popcorn(void) { uint32_t popcornColor = SEGCOLOR(0); uint32_t bgColor = SEGCOLOR(1); if(popcornColor == bgColor) popcornColor = color_wheel(random8()); - + static kernel popcorn[MAX_NUM_POPCORN]; - static float coeff = 0.0f; - if(coeff == 0.0f) { // calculate the velocity coeff once (the secret sauce) - coeff = pow((float)SEGLEN, 0.5223324f) * 0.3944296f; - } + float coeff = pow((float)SEGLEN, 0.5223324f) * 0.3944296f; fill(SEGCOLOR(1)); @@ -2513,6 +2501,7 @@ uint16_t WS2812FX::mode_popcorn(void) { if(isActive) { // if kernel is active, update its position popcorn[i].position += popcorn[i].velocity; popcorn[i].velocity -= (GRAVITY * ((255-SEGMENT.speed)*8/256 + 1)); + ledIndex = SEGMENT.start + popcorn[i].position; if(ledIndex >= SEGMENT.start && ledIndex <= SEGMENT.stop) setPixelColor(ledIndex, popcorn[i].color); } else { // if kernel is inactive, randomly pop it @@ -2520,6 +2509,7 @@ uint16_t WS2812FX::mode_popcorn(void) { popcorn[i].position = 0.0f; popcorn[i].velocity = coeff * (random(66, 100) / 100.0f); popcorn[i].color = popcornColor; + ledIndex = SEGMENT.start; setPixelColor(ledIndex, popcorn[i].color); } From eb251050a526b00cde387fdbe9696fbd8f747a7f Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Mon, 30 Dec 2019 00:22:28 +0100 Subject: [PATCH 52/70] fix exploding firworks controls to match the slider direction to the effect --- wled00/FX.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index af0974b03..7e920352f 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2378,7 +2378,7 @@ void WS2812FX::flare() { if (SEGENV.aux0 == 0) { //use aux0 for initialization flag flarePos = 0; - flareVel = float(random16(150, 190)) / (75+SEGMENT.intensity/4); // trial and error to get reasonable range + flareVel = float(random16(150, 190)) / (75+(255-SEGMENT.intensity)/4); // trial and error to get reasonable range brightness = 1; // initialize launch sparks @@ -2428,10 +2428,10 @@ void WS2812FX::explode() { int nSparks = flarePos / 2; // works out to look about right nSparks = constrain(nSparks,0,NUM_SPARKS); static float dying_gravity; - float gravity = -0.02 - (SEGMENT.speed/10000.0); + float gravity = -0.02 - ((255-SEGMENT.speed)/10000.0); float c1=120; float c2=50; - + // initialize sparks if (SEGENV.aux0==0) { for (int i = 0; i < nSparks; i++) { From 508804d0d5548a47ba2f39ec5b81bd7bb6ae2739 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 30 Dec 2019 01:18:19 +0100 Subject: [PATCH 53/70] Few fixes for tricolor wipe --- wled00/FX.cpp | 49 ++++++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 7ea1fe79c..6eab3195b 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1296,7 +1296,7 @@ uint16_t WS2812FX::mode_icu(void) { setPixelColor(SEGMENT.start + dest, col); setPixelColor(SEGMENT.start + dest + SEGLEN/2, col); - return FRAMETIME; + return SPEED_FORMULA_L; } @@ -1305,24 +1305,35 @@ uint16_t WS2812FX::mode_icu(void) { */ uint16_t WS2812FX::mode_tricolor_wipe(void) { - uint32_t cycleTime = 40 + (3 * (uint32_t)(255 - SEGMENT.speed)); - uint32_t it = now / cycleTime; - if (SEGENV.step == it) return FRAMETIME; - uint8_t incr = it-SEGENV.step; + uint32_t counter = now / (40 + (3 * (uint32_t)(255 - SEGMENT.speed))); + uint32_t prog = counter % (SEGLEN * 3); + uint16_t led_offset = prog; - if(SEGENV.step < SEGLEN) { - uint32_t led_offset = SEGENV.step; - setPixelColor(SEGMENT.start + led_offset, SEGCOLOR(0)); - } else if (SEGENV.step < SEGLEN*2) { - uint32_t led_offset = SEGENV.step - SEGLEN; - setPixelColor(SEGMENT.start + led_offset, SEGCOLOR(1)); - } else + for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { - uint32_t led_offset = SEGENV.step - SEGLEN*2; - setPixelColor(SEGMENT.start + led_offset, color_from_palette(SEGMENT.start + led_offset, true, PALETTE_SOLID_WRAP, 2)); + setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 2)); + } + + if(prog < SEGLEN) { //wipe from 0 to 1 + for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) + { + setPixelColor(i, (i - SEGMENT.start > led_offset)? SEGCOLOR(0) : SEGCOLOR(1)); + } + } else if (prog < SEGLEN*2) { //wipe from 1 to 2 + led_offset = prog - SEGLEN; + for (uint16_t i = SEGMENT.start +led_offset +1; i < SEGMENT.stop; i++) + { + setPixelColor(i, SEGCOLOR(1)); + } + } else //wipe from 2 to 0 + { + led_offset = prog - SEGLEN*2; + for (uint16_t i = SEGMENT.start; i <= SEGMENT.start +led_offset; i++) + { + setPixelColor(i, SEGCOLOR(0)); + } } - SEGENV.step = (SEGENV.step + 1) % (SEGLEN * 3); return FRAMETIME; } @@ -1335,16 +1346,16 @@ uint16_t WS2812FX::mode_tricolor_wipe(void) uint16_t WS2812FX::mode_tricolor_fade(void) { uint16_t counter = now * ((SEGMENT.speed >> 3) +1); - SEGENV.step = (counter * 768) >> 16; + uint32_t prog = (counter * 768) >> 16; uint32_t color1 = 0, color2 = 0; byte stage = 0; - if(SEGENV.step < 256) { + if(prog < 256) { color1 = SEGCOLOR(0); color2 = SEGCOLOR(1); stage = 0; - } else if(SEGENV.step < 512) { + } else if(prog < 512) { color1 = SEGCOLOR(1); color2 = SEGCOLOR(2); stage = 1; @@ -1354,7 +1365,7 @@ uint16_t WS2812FX::mode_tricolor_fade(void) stage = 2; } - byte stp = SEGENV.step % 256; + byte stp = prog; // % 256 uint32_t color = 0; for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { if (stage == 2) { From 8ca6ca2c88e02b934444122c1423053b983604b0 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 30 Dec 2019 01:40:38 +0100 Subject: [PATCH 54/70] TriWipe synced --- wled00/FX.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 6eab3195b..76aee7bf6 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1305,30 +1305,32 @@ uint16_t WS2812FX::mode_icu(void) { */ uint16_t WS2812FX::mode_tricolor_wipe(void) { - uint32_t counter = now / (40 + (3 * (uint32_t)(255 - SEGMENT.speed))); - uint32_t prog = counter % (SEGLEN * 3); - uint16_t led_offset = prog; + uint32_t cycleTime = 1000 + (255 - SEGMENT.speed)*200; + uint32_t perc = now % cycleTime; + uint16_t prog = (perc * 65535) / cycleTime; + uint16_t ledIndex = (prog * SEGLEN * 3) >> 16; + uint16_t ledOffset = ledIndex; for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { setPixelColor(i, color_from_palette(i, true, PALETTE_SOLID_WRAP, 2)); } - if(prog < SEGLEN) { //wipe from 0 to 1 + if(ledIndex < SEGLEN) { //wipe from 0 to 1 for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { - setPixelColor(i, (i - SEGMENT.start > led_offset)? SEGCOLOR(0) : SEGCOLOR(1)); + setPixelColor(i, (i - SEGMENT.start > ledOffset)? SEGCOLOR(0) : SEGCOLOR(1)); } - } else if (prog < SEGLEN*2) { //wipe from 1 to 2 - led_offset = prog - SEGLEN; - for (uint16_t i = SEGMENT.start +led_offset +1; i < SEGMENT.stop; i++) + } else if (ledIndex < SEGLEN*2) { //wipe from 1 to 2 + ledOffset = ledIndex - SEGLEN; + for (uint16_t i = SEGMENT.start +ledOffset +1; i < SEGMENT.stop; i++) { setPixelColor(i, SEGCOLOR(1)); } } else //wipe from 2 to 0 { - led_offset = prog - SEGLEN*2; - for (uint16_t i = SEGMENT.start; i <= SEGMENT.start +led_offset; i++) + ledOffset = ledIndex - SEGLEN*2; + for (uint16_t i = SEGMENT.start; i <= SEGMENT.start +ledOffset; i++) { setPixelColor(i, SEGCOLOR(0)); } From 6e35b5ba8b6a39658836d761a3acfb688df6d1b0 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Mon, 30 Dec 2019 17:34:15 +0100 Subject: [PATCH 55/70] Fix analog write range --- wled00/FX.cpp | 2 +- wled00/NpbWrapper.h | 35 +++++++++++++++++------------------ wled00/wled00.ino | 2 +- wled00/wled19_json.ino | 2 +- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index aeba14854..552b0f55f 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -242,7 +242,7 @@ uint16_t WS2812FX::mode_dynamic(void) { uint32_t cycleTime = 50 + (255 - SEGMENT.speed)*15; uint32_t it = now / cycleTime; - if (it != SEGENV.step) //new color + if (it != SEGENV.step && SEGMENT.speed != 0) //new color { for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { if (random8() <= SEGMENT.intensity) _locked[i] = random8(); diff --git a/wled00/NpbWrapper.h b/wled00/NpbWrapper.h index a704e4269..05d738680 100644 --- a/wled00/NpbWrapper.h +++ b/wled00/NpbWrapper.h @@ -130,26 +130,25 @@ public: _pGrbw = new NeoPixelBrightnessBus(countPixels, LEDPIN); #endif _pGrbw->Begin(); - break; - - #ifdef WLED_USE_ANALOG_LEDS - //init PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller - pinMode(RPIN, OUTPUT); - pinMode(GPIN, OUTPUT); - pinMode(BPIN, OUTPUT); - switch (_type) { - case NeoPixelType_Grb: break; - #ifdef WLED_USE_5CH_LEDS - case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); pinMode(W2PIN, OUTPUT); break; - #else - case NeoPixelType_Grbw: pinMode(WPIN, OUTPUT); break; - #endif - } - analogWriteRange(255); //same range as one RGB channel - analogWriteFreq(880); //PWM frequency proven as good for LEDs + + #ifdef WLED_USE_ANALOG_LEDS + pinMode(WPIN, OUTPUT); + #ifdef WLED_USE_5CH_LEDS + pinMode(W2PIN, OUTPUT); #endif - + #endif + + break; } + + #ifdef WLED_USE_ANALOG_LEDS + //init PWM pins - PINs 5,12,13,15 are used with Magic Home LED Controller + pinMode(RPIN, OUTPUT); + pinMode(GPIN, OUTPUT); + pinMode(BPIN, OUTPUT); + analogWriteRange(255); //same range as one RGB channel + analogWriteFreq(880); //PWM frequency proven as good for LEDs + #endif } #ifdef WLED_USE_ANALOG_LEDS diff --git a/wled00/wled00.ino b/wled00/wled00.ino index a577c95d4..0d120292f 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912232 +#define VERSION 1912291 char versionString[] = "0.9.0-b2"; diff --git a/wled00/wled19_json.ino b/wled00/wled19_json.ino index 3e135d406..802941a62 100644 --- a/wled00/wled19_json.ino +++ b/wled00/wled19_json.ino @@ -243,7 +243,7 @@ void serializeInfo(JsonObject root) leds_pin.add(LEDPIN); leds["pwr"] = strip.currentMilliamps; - leds["maxpwr"] = strip.ablMilliampsMax; + leds["maxpwr"] = (strip.currentMilliamps)? strip.ablMilliampsMax : 0; leds["maxseg"] = strip.getMaxSegments(); leds["seglock"] = false; //will be used in the future to prevent modifications to segment config From 51fb981d24e75300ad0833688c513a9041ab5c9e Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 31 Dec 2019 11:11:05 +0100 Subject: [PATCH 56/70] Add possiblilty for segments to dynamically allocate memory --- wled00/FX.h | 39 +++++++++++++++++++++++++++++++++++---- wled00/FX_fcn.cpp | 6 +++++- wled00/wled00.ino | 2 +- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 53096b7e0..8f2ba95ba 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -44,10 +44,17 @@ #define WLED_FPS 42 #define FRAMETIME (1000/WLED_FPS) -/* each segment uses 37 bytes of SRAM memory, so if you're application fails because of +/* each segment uses 52 bytes of SRAM memory, so if you're application fails because of insufficient memory, decreasing MAX_NUM_SEGMENTS may help */ #define MAX_NUM_SEGMENTS 10 +/* How much data bytes all segments combined may allocate */ +#ifdef ESP8266 +#define MAX_SEGMENT_DATA 2048 +#else +#define MAX_SEGMENT_DATA 8192 +#endif + #define NUM_COLORS 3 /* number of colors per segment */ #define SEGMENT _segments[_segment_index] #define SEGCOLOR(x) gamma32(_segments[_segment_index].colors[x]) @@ -221,13 +228,35 @@ class WS2812FX { } segment; // segment runtime parameters - typedef struct Segment_runtime { // 16 bytes + typedef struct Segment_runtime { // 28 bytes unsigned long next_time; uint32_t step; uint32_t call; uint16_t aux0; uint16_t aux1; - void reset(){next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0;}; + byte* data = nullptr; + bool allocateData(uint16_t len){ + if (data && _dataLen == len) return true; //already allocated + deallocateData(); + if (WS2812FX::_usedSegmentData + len > MAX_SEGMENT_DATA) return false; //not enough memory + data = new (std::nothrow) byte[len]; + if (!data) return false; //allocation failed + WS2812FX::_usedSegmentData += len; + _dataLen = len; + memset(data, 0, len); + return true; + } + void deallocateData(){ + if (data) { + delete[] data; + } + data = nullptr; + WS2812FX::_usedSegmentData -= _dataLen; + _dataLen = 0; + } + void reset(){next_time = 0; step = 0; call = 0; aux0 = 0; aux1 = 0; deallocateData();} + private: + uint16_t _dataLen = 0; } segment_runtime; WS2812FX() { @@ -518,6 +547,7 @@ class WS2812FX { uint16_t _length, _lengthRaw, _usableCount; uint16_t _rand16seed; uint8_t _brightness; + static uint16_t _usedSegmentData; void handle_palette(void); void fill(uint32_t); @@ -564,7 +594,8 @@ class WS2812FX { // start, stop, speed, intensity, palette, mode, options, 3 unused bytes (group, spacing, opacity), color[] { 0, 7, DEFAULT_SPEED, 128, 0, DEFAULT_MODE, NO_OPTIONS, 1, 0, 255, {DEFAULT_COLOR}} }; - segment_runtime _segment_runtimes[MAX_NUM_SEGMENTS]; // SRAM footprint: 16 bytes per element + segment_runtime _segment_runtimes[MAX_NUM_SEGMENTS]; // SRAM footprint: 28 bytes per element + friend class Segment_runtime; }; diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 2b7d6ec1d..7fa6eae89 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -473,7 +473,7 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2) { void WS2812FX::resetSegments() { memset(_segments, 0, sizeof(_segments)); - memset(_segment_runtimes, 0, sizeof(_segment_runtimes)); + //memset(_segment_runtimes, 0, sizeof(_segment_runtimes)); _segment_index = 0; _segments[0].mode = DEFAULT_MODE; _segments[0].colors[0] = DEFAULT_COLOR; @@ -484,7 +484,9 @@ void WS2812FX::resetSegments() { for (uint16_t i = 1; i < MAX_NUM_SEGMENTS; i++) { _segments[i].colors[0] = color_wheel(i*51); + _segment_runtimes[i].reset(); } + _segment_runtimes[0].reset(); } void WS2812FX::setIndividual(uint16_t i, uint32_t col) @@ -862,3 +864,5 @@ uint32_t WS2812FX::gamma32(uint32_t color) b = gammaT[b]; return ((w << 24) | (r << 16) | (g << 8) | (b)); } + +uint16_t WS2812FX::_usedSegmentData = 0; diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 0d120292f..6a1a7b072 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912291 +#define VERSION 1912311 char versionString[] = "0.9.0-b2"; From 1671c782609257ef9c84b630913c3c1010577ab3 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 31 Dec 2019 12:35:18 +0100 Subject: [PATCH 57/70] First working state --- wled00/FX.cpp | 29 ++++++++++++++--------------- wled00/wled00.ino | 2 +- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 193adfacc..a5a207336 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2444,21 +2444,21 @@ uint16_t WS2812FX::mode_candle() / based on the video: https://www.reddit.com/r/arduino/comments/c3sd46/i_made_this_fireworks_effect_for_my_led_strips/ / Speed sets frequency of new starbursts, intensity is the intensity of the burst */ +#define STARBURST_MAX_FRAG 20 + typedef struct Particle { CRGB color; uint32_t birth =0; uint32_t last =0; double vel =0; uint16_t pos =-1; - float fragment[40]; + float fragment[STARBURST_MAX_FRAG]; } star; uint16_t WS2812FX::mode_starburst(void) { uint32_t it = millis(); - boolean Blend = true; const uint8_t numStars = 12; - const uint8_t maxFrag = 20; static star stars[numStars]; float MaxSpeed = 375.0f; // Max velocity int NewParticleProbability = 2; // Odds of new particle (out of 255) @@ -2466,15 +2466,14 @@ uint16_t WS2812FX::mode_starburst(void) { float ParticleIgnition = 0.06f; // How long to "flash" float ParticleHoldTime = 0.0f; // Main lifecycle time float ParticleFadeTime = 2.6f; // Fade out time - float ParticleSize = 0.00f; // Size of the particle for (int j = 0; j < numStars; j++) { // speed to adjust chance of a burst, max is nearly always. - if (random8((263-SEGMENT.speed)/2) < NewParticleProbability && stars[j].birth==0) + if (random8((263-SEGMENT.speed)>>1) < NewParticleProbability && stars[j].birth==0) { // Pick a random color and location. - uint16_t startPos = random8(SEGLEN-1); + uint16_t startPos = random16(SEGLEN-1); CRGB color = col_to_crgb(color_wheel(random8())); double multiplier = (float)(random8())/255.0 * 1.0; @@ -2484,9 +2483,9 @@ uint16_t WS2812FX::mode_starburst(void) { stars[j].birth = it; stars[j].last = it; // more fragments means larger burst effect - int num = random8(5,10 + (SEGMENT.intensity * maxFrag/255)); + int num = random8(5,10 + (SEGMENT.intensity * STARBURST_MAX_FRAG/255)); - for (int i=0; i<40; i++) { + for (int i=0; i < STARBURST_MAX_FRAG; i++) { if (i < num) stars[j].fragment[i] = startPos; else stars[j].fragment[i] = -1; } @@ -2500,7 +2499,7 @@ uint16_t WS2812FX::mode_starburst(void) { if (stars[j].birth != 0) { float dt = (it-stars[j].last)/1000.0; - for (int i=0; i<=maxFrag; i++) { + for (int i=0; i < STARBURST_MAX_FRAG; i++) { int var = i/2; if (stars[j].fragment[i] > 0) { @@ -2525,7 +2524,7 @@ uint16_t WS2812FX::mode_starburst(void) { float age = (it-stars[j].birth)/1000.0; if (age > ParticlePreignitonTime && age < ParticleIgnition + ParticlePreignitonTime) { - c = CRGB(WHITE); + c = CRGB(ULTRAWHITE); } else { // Figure out how much to fade and shrink the star based on // its age relative to its lifetime @@ -2546,19 +2545,19 @@ uint16_t WS2812FX::mode_starburst(void) { c = c.nscale8(255-int(255.0*fade)/2); } - ParticleSize = (1 - fade) * 4; + float ParticleSize = (1 - fade) * 4; - for (int i=0; i<=maxFrag; i++) { + for (int i=0; i < STARBURST_MAX_FRAG; i++) { if (stars[j].fragment[i] > 0) { int start = int(stars[j].fragment[i]) - int(ParticleSize/2); if (start<0) start = 0; int end = int(stars[j].fragment[i]) + int(ParticleSize/2); - if (end>SEGLEN-1) end = SEGLEN-1; - for (int p=start; p<=end; p++) { + if (end > SEGLEN) end = SEGLEN; + for (int p = start; p < end; p++) { setPixelColor(SEGMENT.start+p, c.r, c.g, c.b); } } } } return FRAMETIME; -} \ No newline at end of file +} diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 6a1a7b072..c77eae7ac 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912311 +#define VERSION 1912312 char versionString[] = "0.9.0-b2"; From 8b6366688a37151b9e7ba1b75dd359eb50f2d180 Mon Sep 17 00:00:00 2001 From: fishbone-git Date: Tue, 31 Dec 2019 13:47:17 +0100 Subject: [PATCH 58/70] minor updates for cleanup --- wled00/FX.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 501995ffb..fa4bbef09 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2359,25 +2359,23 @@ typedef struct Particle { CRGB color; uint32_t birth =0; uint32_t last =0; - double vel =0; + float vel =0; uint16_t pos =-1; - float fragment[40]; + float fragment[30]; } star; uint16_t WS2812FX::mode_starburst(void) { uint32_t it = millis(); - boolean Blend = true; - const uint8_t numStars = 12; - const uint8_t maxFrag = 20; + const uint8_t numStars = 12; // max starburtsts at one time + const uint8_t maxFrag = 20; // max fragments from each burst static star stars[numStars]; - float MaxSpeed = 375.0f; // Max velocity + int MaxSpeed = 375; // Max velocity int NewParticleProbability = 2; // Odds of new particle (out of 255) float ParticlePreignitonTime = 0.0f; // How long to "wink" - float ParticleIgnition = 0.06f; // How long to "flash" + float ParticleIgnition = 0.06f; // How long to "flash" float ParticleHoldTime = 0.0f; // Main lifecycle time float ParticleFadeTime = 2.6f; // Fade out time - float ParticleSize = 0.00f; // Size of the particle for (int j = 0; j < numStars; j++) { @@ -2387,7 +2385,7 @@ uint16_t WS2812FX::mode_starburst(void) { // Pick a random color and location. uint16_t startPos = random8(SEGLEN-1); CRGB color = col_to_crgb(color_wheel(random8())); - double multiplier = (float)(random8())/255.0 * 1.0; + float multiplier = (float)(random8())/255.0 * 1.0; stars[j].color = color; stars[j].pos = startPos; @@ -2397,7 +2395,7 @@ uint16_t WS2812FX::mode_starburst(void) { // more fragments means larger burst effect int num = random8(5,10 + (SEGMENT.intensity * maxFrag/255)); - for (int i=0; i<40; i++) { + for (int i=0; i<30; i++) { if (i < num) stars[j].fragment[i] = startPos; else stars[j].fragment[i] = -1; } @@ -2457,7 +2455,7 @@ uint16_t WS2812FX::mode_starburst(void) { c = c.nscale8(255-int(255.0*fade)/2); } - ParticleSize = (1 - fade) * 4; + float ParticleSize = (1 - fade) * 4; for (int i=0; i<=maxFrag; i++) { if (stars[j].fragment[i] > 0) { From 446e2c123f9ad0235ad37974bc12feb414467d5f Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 31 Dec 2019 16:37:44 +0100 Subject: [PATCH 59/70] More improvements --- wled00/FX.cpp | 61 ++++++++++++++++++++++----------------------------- 1 file changed, 26 insertions(+), 35 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index a5a207336..ebd22f679 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2458,28 +2458,24 @@ typedef struct Particle { uint16_t WS2812FX::mode_starburst(void) { uint32_t it = millis(); - const uint8_t numStars = 12; + const uint8_t numStars = 4; static star stars[numStars]; - float MaxSpeed = 375.0f; // Max velocity - int NewParticleProbability = 2; // Odds of new particle (out of 255) - float ParticlePreignitonTime = 0.0f; // How long to "wink" - float ParticleIgnition = 0.06f; // How long to "flash" - float ParticleHoldTime = 0.0f; // Main lifecycle time - float ParticleFadeTime = 2.6f; // Fade out time + float maxSpeed = 375.0f; // Max velocity + float ParticleIgnition = 250.0f; // How long to "flash" + float ParticleFadeTime = 1500.0f; // Fade out time for (int j = 0; j < numStars; j++) { // speed to adjust chance of a burst, max is nearly always. - if (random8((263-SEGMENT.speed)>>1) < NewParticleProbability && stars[j].birth==0) + if (random8((144-(SEGMENT.speed >> 1))) == 0 && stars[j].birth == 0) { // Pick a random color and location. uint16_t startPos = random16(SEGLEN-1); - CRGB color = col_to_crgb(color_wheel(random8())); double multiplier = (float)(random8())/255.0 * 1.0; - stars[j].color = color; + stars[j].color = col_to_crgb(color_wheel(random8())); stars[j].pos = startPos; - stars[j].vel = MaxSpeed * (float)(random8())/255.0 * multiplier; + stars[j].vel = maxSpeed * (float)(random8())/255.0 * multiplier; stars[j].birth = it; stars[j].last = it; // more fragments means larger burst effect @@ -2492,7 +2488,7 @@ uint16_t WS2812FX::mode_starburst(void) { } } - fill(BLACK); + fill(SEGCOLOR(1)); for (int j=0; j> 1; if (stars[j].fragment[i] > 0) { // spplit fragments half to each side with some travelling further @@ -2513,7 +2509,6 @@ uint16_t WS2812FX::mode_starburst(void) { } stars[j].last = it; stars[j].vel -= 3*stars[j].vel*dt; - stars[j].color = stars[j].color.nscale8(235); } CRGB c = stars[j].color; @@ -2521,37 +2516,33 @@ uint16_t WS2812FX::mode_starburst(void) { // If the star is brand new, it flashes white briefly. // Otherwise it just fades over time. float fade = 0.0f; - float age = (it-stars[j].birth)/1000.0; + float age = it-stars[j].birth; - if (age > ParticlePreignitonTime && age < ParticleIgnition + ParticlePreignitonTime) { - c = CRGB(ULTRAWHITE); + if (age < ParticleIgnition) { + c = col_to_crgb(color_blend(ULTRAWHITE, crgb_to_col(c), 254.5f*((age / ParticleIgnition)))); } else { // Figure out how much to fade and shrink the star based on // its age relative to its lifetime - if (age < ParticlePreignitonTime) { - fade = 1.0 - (age / ParticlePreignitonTime); + if (age > ParticleIgnition + ParticleFadeTime) { + fade = 1.0f; // Black hole, all faded out + stars[j].birth = 0; + c = col_to_crgb(SEGCOLOR(1)); } else { - age -= ParticlePreignitonTime; - if (age < ParticleHoldTime + ParticleIgnition) { - fade = 0.0f; // Just born - } else if (age > ParticleHoldTime + ParticleIgnition + ParticleFadeTime) { - fade = 1.0f; // Black hole, all faded out - stars[j].birth = 0; - } else { - age -= (ParticleHoldTime + ParticleIgnition); - fade = (age / ParticleFadeTime); // Fading star - } + age -= ParticleIgnition; + fade = (age / ParticleFadeTime); // Fading star + byte f = 254.5f*fade; + c = col_to_crgb(color_blend(crgb_to_col(c), SEGCOLOR(1), f)); } - - c = c.nscale8(255-int(255.0*fade)/2); } - float ParticleSize = (1 - fade) * 4; + + float ParticleSize = (1.0 - fade) * 2; for (int i=0; i < STARBURST_MAX_FRAG; i++) { if (stars[j].fragment[i] > 0) { - int start = int(stars[j].fragment[i]) - int(ParticleSize/2); - if (start<0) start = 0; - int end = int(stars[j].fragment[i]) + int(ParticleSize/2); + int start = int(stars[j].fragment[i]) - int(ParticleSize); + if (start < 0) start = 0; + int end = int(stars[j].fragment[i]) + int(ParticleSize); + if (start == end) end++; if (end > SEGLEN) end = SEGLEN; for (int p = start; p < end; p++) { setPixelColor(SEGMENT.start+p, c.r, c.g, c.b); From 21b498fecec35a7fc5389a84f78106c3881b1629 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 31 Dec 2019 19:01:37 +0100 Subject: [PATCH 60/70] Memory optimizations --- wled00/FX.cpp | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index ebd22f679..3d8399954 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2444,9 +2444,9 @@ uint16_t WS2812FX::mode_candle() / based on the video: https://www.reddit.com/r/arduino/comments/c3sd46/i_made_this_fireworks_effect_for_my_led_strips/ / Speed sets frequency of new starbursts, intensity is the intensity of the burst */ -#define STARBURST_MAX_FRAG 20 +#define STARBURST_MAX_FRAG 12 -typedef struct Particle { +typedef struct particle { CRGB color; uint32_t birth =0; uint32_t last =0; @@ -2458,11 +2458,11 @@ typedef struct Particle { uint16_t WS2812FX::mode_starburst(void) { uint32_t it = millis(); - const uint8_t numStars = 4; + const uint8_t numStars = 15; static star stars[numStars]; float maxSpeed = 375.0f; // Max velocity - float ParticleIgnition = 250.0f; // How long to "flash" - float ParticleFadeTime = 1500.0f; // Fade out time + float particleIgnition = 250.0f; // How long to "flash" + float particleFadeTime = 1500.0f; // Fade out time for (int j = 0; j < numStars; j++) { @@ -2471,7 +2471,7 @@ uint16_t WS2812FX::mode_starburst(void) { { // Pick a random color and location. uint16_t startPos = random16(SEGLEN-1); - double multiplier = (float)(random8())/255.0 * 1.0; + float multiplier = (float)(random8())/255.0 * 1.0; stars[j].color = col_to_crgb(color_wheel(random8())); stars[j].pos = startPos; @@ -2479,7 +2479,7 @@ uint16_t WS2812FX::mode_starburst(void) { stars[j].birth = it; stars[j].last = it; // more fragments means larger burst effect - int num = random8(5,10 + (SEGMENT.intensity * STARBURST_MAX_FRAG/255)); + int num = random8(3,6 + (SEGMENT.intensity >> 5)); for (int i=0; i < STARBURST_MAX_FRAG; i++) { if (i < num) stars[j].fragment[i] = startPos; @@ -2499,12 +2499,8 @@ uint16_t WS2812FX::mode_starburst(void) { int var = i >> 1; if (stars[j].fragment[i] > 0) { - // spplit fragments half to each side with some travelling further - if (i % 2) { - stars[j].fragment[i] -= stars[j].vel * dt * (float)var/6.0; - } else { - stars[j].fragment[i] += stars[j].vel * dt * (float)var/6.0; - } + //all fragments travel right, will be mirrored on other side + stars[j].fragment[i] += stars[j].vel * dt * (float)var/3.0; } } stars[j].last = it; @@ -2518,30 +2514,34 @@ uint16_t WS2812FX::mode_starburst(void) { float fade = 0.0f; float age = it-stars[j].birth; - if (age < ParticleIgnition) { - c = col_to_crgb(color_blend(ULTRAWHITE, crgb_to_col(c), 254.5f*((age / ParticleIgnition)))); + if (age < particleIgnition) { + c = col_to_crgb(color_blend(WHITE, crgb_to_col(c), 254.5f*((age / particleIgnition)))); } else { // Figure out how much to fade and shrink the star based on // its age relative to its lifetime - if (age > ParticleIgnition + ParticleFadeTime) { + if (age > particleIgnition + particleFadeTime) { fade = 1.0f; // Black hole, all faded out stars[j].birth = 0; c = col_to_crgb(SEGCOLOR(1)); } else { - age -= ParticleIgnition; - fade = (age / ParticleFadeTime); // Fading star + age -= particleIgnition; + fade = (age / particleFadeTime); // Fading star byte f = 254.5f*fade; c = col_to_crgb(color_blend(crgb_to_col(c), SEGCOLOR(1), f)); } } - float ParticleSize = (1.0 - fade) * 2; + float particleSize = (1.0 - fade) * 2; - for (int i=0; i < STARBURST_MAX_FRAG; i++) { + for (uint8_t index=0; index < STARBURST_MAX_FRAG*2; index++) { + bool mirrored = index & 0x1; + uint8_t i = index >> 1; if (stars[j].fragment[i] > 0) { - int start = int(stars[j].fragment[i]) - int(ParticleSize); + float loc = stars[j].fragment[i]; + if (mirrored) loc -= (loc-stars[j].pos)*2; + int start = loc - particleSize; + int end = loc + particleSize; if (start < 0) start = 0; - int end = int(stars[j].fragment[i]) + int(ParticleSize); if (start == end) end++; if (end > SEGLEN) end = SEGLEN; for (int p = start; p < end; p++) { From 1c6b1c530f1c97c882398ed073d3501e77c6d766 Mon Sep 17 00:00:00 2001 From: srg74 <28492985+srg74@users.noreply.github.com> Date: Tue, 31 Dec 2019 17:52:59 -0500 Subject: [PATCH 61/70] Update wled06_usermod.ino Corrected pin numbering --- usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino index c73170645..593625b91 100644 --- a/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino +++ b/usermods/ssd1306_i2c_oled_u8g2/wled06_usermod.ino @@ -1,7 +1,7 @@ #include // from https://github.com/olikraus/u8g2/ //The SCL and SDA pins are defined here. -//Lolin32 boards use SCL=4 SDA=5 +//Lolin32 boards use SCL=5 SDA=4 #define U8X8_PIN_SCL 5 #define U8X8_PIN_SDA 4 From 58861fa524e38c46a93ef964662719f1dd0a6d42 Mon Sep 17 00:00:00 2001 From: srg74 <28492985+srg74@users.noreply.github.com> Date: Tue, 31 Dec 2019 17:57:15 -0500 Subject: [PATCH 62/70] Update platformio.ini Added commented library reference for OLED display --- platformio.ini | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index c4cac76d1..45f2148fe 100644 --- a/platformio.ini +++ b/platformio.ini @@ -41,6 +41,8 @@ lib_deps_external = IRremoteESP8266@2.5.5 #Time@1.5 #Timezone@1.2.1 + #For use SSD1306 0.91" OLED display uncomment following + #U8g2@~2.27.2 [common:esp8266] # ------------------------------------------------------------------------------ @@ -214,4 +216,4 @@ build_flags = -D WLED_ENABLE_5CH_LEDS lib_deps = ${common.lib_deps_external} - \ No newline at end of file + From 4dfc1631af08bc26b6c4ff92b31a15cb57a20019 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 1 Jan 2020 01:04:54 +0100 Subject: [PATCH 63/70] Few Cronixie fixes --- wled00/wled03_set.ino | 7 ++++--- wled00/wled10_ntp.ino | 17 ++++++++++------- wled00/wled13_cronixie.ino | 1 - 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index 3f08d2807..9c753fec2 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -622,6 +622,10 @@ bool handleSet(AsyncWebServerRequest *request, const String& req) //cronixie #ifndef WLED_DISABLE_CRONIXIE + //mode, 1 countdown + pos = req.indexOf("NM="); + if (pos > 0) countdownMode = (req.charAt(pos+3) != '0'); + pos = req.indexOf("NX="); //sets digits to code if (pos > 0) { strlcpy(cronixieDisplay, req.substring(pos + 3, pos + 9).c_str(), 6); @@ -636,9 +640,6 @@ bool handleSet(AsyncWebServerRequest *request, const String& req) overlayRefreshedTime = 0; } #endif - //mode, 1 countdown - pos = req.indexOf("NM="); - if (pos > 0) countdownMode = (req.charAt(pos+3) != '0'); pos = req.indexOf("U0="); //user var 0 if (pos > 0) { diff --git a/wled00/wled10_ntp.ino b/wled00/wled10_ntp.ino index 57a810f14..bf8df064d 100644 --- a/wled00/wled10_ntp.ino +++ b/wled00/wled10_ntp.ino @@ -163,13 +163,16 @@ void setCountdown() //returns true if countdown just over bool checkCountdown() { - long diff = countdownTime - now(); - local = abs(diff); - if (diff <0 && !countdownOverTriggered) - { - if (macroCountdown != 0) applyMacro(macroCountdown); - countdownOverTriggered = true; - return true; + unsigned long n = now(); + local = countdownTime - n; + if (n > countdownTime) { + local = n - countdownTime; + if (!countdownOverTriggered) + { + if (macroCountdown != 0) applyMacro(macroCountdown); + countdownOverTriggered = true; + return true; + } } return false; } diff --git a/wled00/wled13_cronixie.ino b/wled00/wled13_cronixie.ino index dac324751..4c5a74961 100644 --- a/wled00/wled13_cronixie.ino +++ b/wled00/wled13_cronixie.ino @@ -147,7 +147,6 @@ void _overlayCronixie() { if (countdownMode) checkCountdown(); #ifndef WLED_DISABLE_CRONIXIE - byte h = hour(local); byte h0 = h; byte m = minute(local); From 22c1f4bb4e3aa6d963547489fcf5bc236226e28d Mon Sep 17 00:00:00 2001 From: srg74 <28492985+srg74@users.noreply.github.com> Date: Tue, 31 Dec 2019 19:53:25 -0500 Subject: [PATCH 64/70] Update readme.txt Minor editing --- usermods/QuinLED_Dig_Uno_Temp_MQTT/readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/usermods/QuinLED_Dig_Uno_Temp_MQTT/readme.txt b/usermods/QuinLED_Dig_Uno_Temp_MQTT/readme.txt index 62401f8ee..612873360 100644 --- a/usermods/QuinLED_Dig_Uno_Temp_MQTT/readme.txt +++ b/usermods/QuinLED_Dig_Uno_Temp_MQTT/readme.txt @@ -4,5 +4,5 @@ This code uses Aircookie's WLED software. It has a premade file for user modific To install: -Add the enties in the WLED00 file to the top of the same file from Aircoookies WLED. +Add the entries in the WLED00 file to the top of the same file from Aircoookies WLED. Replace the WLED06_usermod.ino file in Aircoookies WLED folder. From 8013f8d5b35cff4947ef36f48c91b173037fdb88 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 2 Jan 2020 02:12:10 +0100 Subject: [PATCH 65/70] Update year --- wled00/FX.cpp | 11 +++++++++-- wled00/FX.h | 4 +--- wled00/html_settings.h | 4 ++-- wled00/wled00.ino | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index dac4aade4..291703b67 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2446,6 +2446,7 @@ uint16_t WS2812FX::mode_candle() */ #define STARBURST_MAX_FRAG 12 +//each needs 64 byte typedef struct particle { CRGB color; uint32_t birth =0; @@ -2456,10 +2457,16 @@ typedef struct particle { } star; uint16_t WS2812FX::mode_starburst(void) { + uint8_t numStars = 1 + (SEGLEN >> 3); + if (numStars > 15) numStars = 15; + uint16_t dataSize = sizeof(star) * numStars; + + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + uint32_t it = millis(); - const uint8_t numStars = 15; - static star stars[numStars]; + star* stars = reinterpret_cast(SEGENV.data); + float maxSpeed = 375.0f; // Max velocity float particleIgnition = 250.0f; // How long to "flash" float particleFadeTime = 1500.0f; // Fade out time diff --git a/wled00/FX.h b/wled00/FX.h index bb33741d0..5bf896cb3 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -248,9 +248,7 @@ class WS2812FX { return true; } void deallocateData(){ - if (data) { - delete[] data; - } + delete[] data; data = nullptr; WS2812FX::_usedSegmentData -= _dataLen; _dataLen = 0; diff --git a/wled00/html_settings.h b/wled00/html_settings.h index 678aa2812..a15e62ebb 100644 --- a/wled00/html_settings.h +++ b/wled00/html_settings.h @@ -368,10 +368,10 @@ HTTP traffic is unencrypted. An attacker in the same network can intercept form
Enable ArduinoOTA:

About

-WLED version 0.9.0-b1

+WLED version 0.9.0-b2

Contributors, dependencies and special thanks
A huge thank you to everyone who helped me create WLED!

-(c) 2016-2019 Christian Schwinne
+(c) 2016-2020 Christian Schwinne
Licensed under the MIT license

Server message: Response error!
diff --git a/wled00/wled00.ino b/wled00/wled00.ino index c77eae7ac..7860c20b8 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1912312 +#define VERSION 2001011 char versionString[] = "0.9.0-b2"; From 3d359229cfb0de997b8315e34dfb09ccbdda5cb6 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 2 Jan 2020 20:41:15 +0100 Subject: [PATCH 66/70] Reworked effects to use data instead of locked --- wled00/FX.cpp | 164 ++++++++++++++++++++++++++++------------------ wled00/FX.h | 3 - wled00/FX_fcn.cpp | 30 +-------- wled00/wled00.ino | 2 +- 4 files changed, 105 insertions(+), 94 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 291703b67..ca4b3d434 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -236,22 +236,24 @@ uint16_t WS2812FX::mode_random_color(void) { // * to new random colors. */ uint16_t WS2812FX::mode_dynamic(void) { + if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed + if(SEGENV.call == 0) { - for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) _locked[i] = random8(); + for (uint16_t i = 0; i < SEGLEN; i++) SEGENV.data[i] = random8(); } uint32_t cycleTime = 50 + (255 - SEGMENT.speed)*15; uint32_t it = now / cycleTime; if (it != SEGENV.step && SEGMENT.speed != 0) //new color { - for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { - if (random8() <= SEGMENT.intensity) _locked[i] = random8(); + for (uint16_t i = 0; i < SEGLEN; i++) { + if (random8() <= SEGMENT.intensity) SEGENV.data[i] = random8(); } SEGENV.step = it; } - for(uint16_t i=SEGMENT.start; i < SEGMENT.stop; i++) { - setPixelColor(i, color_wheel(_locked[i])); + for (uint16_t i = 0; i < SEGLEN; i++) { + setPixelColor(SEGMENT.start + i, color_wheel(SEGENV.data[i])); } return FRAMETIME; } @@ -1467,17 +1469,24 @@ typedef struct Oscillator { */ uint16_t WS2812FX::mode_oscillate(void) { - static oscillator oscillators[NUM_COLORS] = { - {SEGLEN/4, SEGLEN/8, 1, 1}, - {SEGLEN/4*3, SEGLEN/8, 1, 2}, - {SEGLEN/4*2, SEGLEN/8, -1, 1} - - }; + uint8_t numOscillators = 3; + uint16_t dataSize = sizeof(oscillator) * numOscillators; + + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + + Oscillator* oscillators = reinterpret_cast(SEGENV.data); + + if (SEGENV.call == 0) + { + oscillators[0] = {SEGLEN/4, SEGLEN/8, 1, 1}; + oscillators[1] = {SEGLEN/4*3, SEGLEN/8, 1, 2}; + oscillators[2] = {SEGLEN/4*2, SEGLEN/8, -1, 1}; + } uint32_t cycleTime = 20 + (2 * (uint32_t)(255 - SEGMENT.speed)); uint32_t it = now / cycleTime; - for(int8_t i=0; i < sizeof(oscillators)/sizeof(oscillators[0]); i++) { + for(uint8_t i=0; i < numOscillators; i++) { // if the counter has increased, move the oscillator by the random step if (it != SEGENV.step) oscillators[i].pos += oscillators[i].dir * oscillators[i].speed; oscillators[i].size = SEGLEN/(3+SEGMENT.intensity/8); @@ -1494,9 +1503,9 @@ uint16_t WS2812FX::mode_oscillate(void) } } - for(int16_t i=0; i < SEGLEN; i++) { + for(uint16_t i=0; i < SEGLEN; i++) { uint32_t color = BLACK; - for(int8_t j=0; j < sizeof(oscillators)/sizeof(oscillators[0]); j++) { + for(uint8_t j=0; j < numOscillators; j++) { if(i >= oscillators[j].pos - oscillators[j].size && i <= oscillators[j].pos + oscillators[j].size) { color = (color == BLACK) ? SEGMENT.colors[j] : color_blend(color, SEGMENT.colors[j], 128); } @@ -1666,30 +1675,34 @@ uint16_t WS2812FX::mode_fire_2012() { uint32_t it = now >> 5; //div 32 + if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed + + byte* heat = SEGENV.data; + if (it != SEGENV.step) { // Step 1. Cool down every cell a little - for( int i = SEGMENT.start; i < SEGMENT.stop; i++) { - _locked[i] = qsub8(_locked[i], random8(0, (((20 + SEGMENT.speed /3) * 10) / SEGLEN) + 2)); + for (uint16_t i = 0; i < SEGLEN; i++) { + SEGENV.data[i] = qsub8(heat[i], random8(0, (((20 + SEGMENT.speed /3) * 10) / SEGLEN) + 2)); } // Step 2. Heat from each cell drifts 'up' and diffuses a little - for( int k= SEGMENT.stop -1; k >= SEGMENT.start + 2; k--) { - _locked[k] = (_locked[k - 1] + _locked[k - 2] + _locked[k - 2] ) / 3; + for (uint16_t k= SEGLEN -1; k > 1; k--) { + heat[k] = (heat[k - 1] + heat[k - 2] + heat[k - 2] ) / 3; } // Step 3. Randomly ignite new 'sparks' of heat near the bottom - if( random8() <= SEGMENT.intensity ) { - int y = SEGMENT.start + random8(7); - if (y < SEGMENT.stop) _locked[y] = qadd8(_locked[y], random8(160,255) ); + if (random8() <= SEGMENT.intensity) { + uint8_t y = random8(7); + if (y < SEGLEN) heat[y] = qadd8(heat[y], random8(160,255)); } SEGENV.step = it; } // Step 4. Map from heat cells to LED colors - for( int j = SEGMENT.start; j < SEGMENT.stop; j++) { - CRGB color = ColorFromPalette( currentPalette, min(_locked[j],240), 255, LINEARBLEND); - setPixelColor(j, color.red, color.green, color.blue); + for (uint16_t j = 0; j < SEGLEN; j++) { + CRGB color = ColorFromPalette(currentPalette, min(heat[j],240), 255, LINEARBLEND); + setPixelColor(SEGMENT.start + j, color.red, color.green, color.blue); } return FRAMETIME; } @@ -1870,18 +1883,25 @@ uint16_t WS2812FX::mode_noise16_4() //based on https://gist.github.com/kriegsman/5408ecd397744ba0393e uint16_t WS2812FX::mode_colortwinkle() { + uint16_t dataSize = (SEGLEN+7) >> 3; //1 bit per LED + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + CRGB fastled_col, prev; fract8 fadeUpAmount = 8 + (SEGMENT.speed/4), fadeDownAmount = 5 + (SEGMENT.speed/7); - for( uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { + for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { fastled_col = col_to_crgb(getPixelColor(i)); prev = fastled_col; - if(_locked[i]) { + uint16_t index = (i - SEGMENT.start) >> 3; + uint8_t bitNum = (i - SEGMENT.start) & 0x07; + bool fadeUp = bitRead(SEGENV.data[index], bitNum); + + if (fadeUp) { CRGB incrementalColor = fastled_col; incrementalColor.nscale8_video( fadeUpAmount); fastled_col += incrementalColor; - if( fastled_col.red == 255 || fastled_col.green == 255 || fastled_col.blue == 255) { - _locked[i] = false; + if (fastled_col.red == 255 || fastled_col.green == 255 || fastled_col.blue == 255) { + bitWrite(SEGENV.data[index], bitNum, false); } setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); @@ -1898,13 +1918,15 @@ uint16_t WS2812FX::mode_colortwinkle() for (uint16_t j = 0; j <= SEGLEN / 50; j++) { - if ( random8() <= SEGMENT.intensity ) { + if (random8() <= SEGMENT.intensity) { for (uint8_t times = 0; times < 5; times++) //attempt to spawn a new pixel 5 times { int i = SEGMENT.start + random16(SEGLEN); if(getPixelColor(i) == 0) { fastled_col = ColorFromPalette(currentPalette, random8(), 64, NOBLEND); - _locked[i] = true; + uint16_t index = (i - SEGMENT.start) >> 3; + uint8_t bitNum = (i - SEGMENT.start) & 0x07; + bitWrite(SEGENV.data[index], bitNum, true); setPixelColor(i, fastled_col.red, fastled_col.green, fastled_col.blue); break; //only spawn 1 new pixel per frame per 50 LEDs } @@ -1938,29 +1960,33 @@ uint16_t WS2812FX::mode_lake() { // send a meteor from begining to to the end of the strip with a trail that randomly decays. // adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain uint16_t WS2812FX::mode_meteor() { + if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed + + byte* trail = SEGENV.data; + byte meteorSize= 1+ SEGLEN / 10; uint16_t counter = now * ((SEGMENT.speed >> 2) +8); uint16_t in = counter * SEGLEN >> 16; // fade all leds to colors[1] in LEDs one step - for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { + for (uint16_t i = 0; i < SEGLEN; i++) { if (random8() <= 255 - SEGMENT.intensity) { byte meteorTrailDecay = 128 + random8(127); - _locked[i] = scale8(_locked[i], meteorTrailDecay); - setPixelColor(i, color_from_palette(_locked[i], false, true, 255)); + trail[i] = scale8(trail[i], meteorTrailDecay); + setPixelColor(SEGMENT.start + i, color_from_palette(trail[i], false, true, 255)); } } // draw meteor for(int j = 0; j < meteorSize; j++) { uint16_t index = in + j; - if(in + j >= SEGMENT.stop) { - index = SEGMENT.start + (in + j - SEGMENT.stop); + if(index >= SEGLEN) { + index = (in + j - SEGLEN); } - _locked[index] = 240; - setPixelColor(index, color_from_palette(_locked[index], false, true, 255)); + trail[index] = 240; + setPixelColor(SEGMENT.start + index, color_from_palette(trail[index], false, true, 255)); } return FRAMETIME; @@ -1971,29 +1997,33 @@ uint16_t WS2812FX::mode_meteor() { // send a meteor from begining to to the end of the strip with a trail that randomly decays. // adapted from https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#LEDStripEffectMeteorRain uint16_t WS2812FX::mode_meteor_smooth() { + if (!SEGENV.allocateData(SEGLEN)) return mode_static(); //allocation failed + + byte* trail = SEGENV.data; + byte meteorSize= 1+ SEGLEN / 10; - uint16_t in = map((SEGENV.step >> 6 & 0xFF), 0, 255, SEGMENT.start, SEGMENT.stop -1); + uint16_t in = map((SEGENV.step >> 6 & 0xFF), 0, 255, 0, SEGLEN -1); // fade all leds to colors[1] in LEDs one step - for (uint16_t i = SEGMENT.start; i < SEGMENT.stop; i++) { - if (_locked[i] != 0 && random8() <= 255 - SEGMENT.intensity) + for (uint16_t i = 0; i < SEGLEN; i++) { + if (trail[i] != 0 && random8() <= 255 - SEGMENT.intensity) { int change = 3 - random8(12); //change each time between -8 and +3 - _locked[i] += change; - if (_locked[i] > 245) _locked[i] = 0; - if (_locked[i] > 240) _locked[i] = 240; - setPixelColor(i, color_from_palette(_locked[i], false, true, 255)); + trail[i] += change; + if (trail[i] > 245) trail[i] = 0; + if (trail[i] > 240) trail[i] = 240; + setPixelColor(SEGMENT.start + i, color_from_palette(trail[i], false, true, 255)); } } // draw meteor for(int j = 0; j < meteorSize; j++) { uint16_t index = in + j; - if(in + j >= SEGMENT.stop) { - index = SEGMENT.start + (in + j - SEGMENT.stop); + if(in + j >= SEGLEN) { + index = (in + j - SEGLEN); } - setPixelColor(index, color_blend(getPixelColor(index), color_from_palette(240, false, true, 255), 48)); - _locked[index] = 240; + setPixelColor(SEGMENT.start + index, color_blend(getPixelColor(SEGMENT.start + index), color_from_palette(240, false, true, 255), 48)); + trail[index] = 240; } SEGENV.step += SEGMENT.speed +1; @@ -2035,23 +2065,35 @@ uint16_t WS2812FX::mode_railway() //Water ripple //propagation velocity from speed //drop rate from intensity + +//4 bytes +typedef struct Ripple { + uint8_t state; + uint8_t color; + uint16_t pos; +} ripple; + uint16_t WS2812FX::mode_ripple() { - uint16_t maxripples = SEGLEN / 4; - if (maxripples == 0) return mode_static(); + uint16_t maxRipples = 1 + (SEGLEN >> 2); + if (maxRipples > 100) maxRipples = 100; + uint16_t dataSize = sizeof(ripple) * maxRipples; + + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + + Ripple* ripples = reinterpret_cast(SEGENV.data); fill(SEGCOLOR(1)); //draw wave - for (uint16_t rippleI = 0; rippleI < maxripples; rippleI++) + for (uint16_t i = 0; i < maxRipples; i++) { - uint16_t storeI = SEGMENT.start + 4*rippleI; - uint16_t ripplestate = _locked[storeI]; + uint16_t ripplestate = ripples[i].state; if (ripplestate) { uint8_t rippledecay = (SEGMENT.speed >> 4) +1; //faster decay if faster propagation - uint16_t rippleorigin = (_locked[storeI+1] << 8) + _locked[storeI+2]; - uint32_t col = color_from_palette(_locked[storeI+3], false, false, 255); + uint16_t rippleorigin = ripples[i].pos; + uint32_t col = color_from_palette(ripples[i].color, false, false, 255); uint16_t propagation = ((ripplestate/rippledecay -1) * SEGMENT.speed); int16_t propI = propagation >> 8; uint8_t propF = propagation & 0xFF; @@ -2061,7 +2103,7 @@ uint16_t WS2812FX::mode_ripple() for (int16_t v = left; v < left +4; v++) { uint8_t mag = scale8(cubicwave8((propF>>2)+(v-left)*64), amp); - if (v >= SEGMENT.start) + if (v < SEGMENT.stop && v >= SEGMENT.start) { setPixelColor(v, color_blend(getPixelColor(v), col, mag)); } @@ -2072,16 +2114,14 @@ uint16_t WS2812FX::mode_ripple() } } ripplestate += rippledecay; - _locked[storeI] = (ripplestate > 254) ? 0 : ripplestate; + ripples[i].state = (ripplestate > 254) ? 0 : ripplestate; } else //randomly create new wave { if (random16(IBN + 10000) <= SEGMENT.intensity) { - _locked[storeI] = 1; - uint16_t origin = SEGMENT.start + random16(SEGLEN); - _locked[storeI+1] = origin >> 8; - _locked[storeI+2] = origin & 0xFF; - _locked[storeI+3] = random8(); //color + ripples[i].state = 1; + ripples[i].pos = SEGMENT.start + random16(SEGLEN); + ripples[i].color = random8(); //color } } } diff --git a/wled00/FX.h b/wled00/FX.h index 5bf896cb3..8c51f1427 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -358,7 +358,6 @@ class WS2812FX { currentMilliamps = 0; timebase = 0; _locked = nullptr; - _modeUsesLock = false; bus = new NeoPixelWrapper(); resetSegments(); } @@ -552,10 +551,8 @@ class WS2812FX { void handle_palette(void); void fill(uint32_t); - bool modeUsesLock(uint8_t); bool - _modeUsesLock, _rgbwMode, _cronixieMode, _cronixieBacklightEnabled, diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 7fa6eae89..25f40a88c 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -96,14 +96,6 @@ void WS2812FX::service() { _triggered = false; } -bool WS2812FX::modeUsesLock(uint8_t m) -{ - if (m == FX_MODE_FIRE_2012 || m == FX_MODE_COLORTWINKLE || - m == FX_MODE_METEOR || m == FX_MODE_METEOR_SMOOTH || - m == FX_MODE_RIPPLE || m == FX_MODE_DYNAMIC ) return true; - return false; -} - void WS2812FX::setPixelColor(uint16_t n, uint32_t c) { uint8_t w = (c >> 24); uint8_t r = (c >> 16); @@ -115,7 +107,7 @@ void WS2812FX::setPixelColor(uint16_t n, uint32_t c) { void WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte w) { i = i * (_disableNLeds+1); - if (_locked[i] && !_modeUsesLock) return; + if (_locked[i]) return; if (IS_REVERSE) i = SEGMENT.stop -1 -i + SEGMENT.start; //reverse just individual segment byte tmpg = g; switch (colorOrder) //0 = Grb, default @@ -273,7 +265,6 @@ void WS2812FX::trigger() { void WS2812FX::setMode(uint8_t segid, uint8_t m) { if (segid >= MAX_NUM_SEGMENTS) return; - bool anyUsedLock = _modeUsesLock, anyUseLock = false; if (m >= MODE_COUNT) m = MODE_COUNT - 1; if (_segments[segid].mode != m) @@ -281,13 +272,6 @@ void WS2812FX::setMode(uint8_t segid, uint8_t m) { _segment_runtimes[segid].reset(); _segments[segid].mode = m; } - - for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++) - { - if (modeUsesLock(_segments[i].mode)) anyUseLock = true; - } - if (anyUsedLock && !anyUseLock) unlockAll(); - _modeUsesLock = anyUseLock; } uint8_t WS2812FX::getModeCount() @@ -454,12 +438,7 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2) { if (n >= MAX_NUM_SEGMENTS) return; Segment& seg = _segments[n]; if (seg.start == i1 && seg.stop == i2) return; - if (seg.isActive() && modeUsesLock(seg.mode)) - { - _modeUsesLock = false; - unlockRange(seg.start, seg.stop); - _modeUsesLock = true; - } + _segment_index = n; fill(0); //turn old segment range off if (i2 <= i1) //disable segment { @@ -491,7 +470,6 @@ void WS2812FX::resetSegments() { void WS2812FX::setIndividual(uint16_t i, uint32_t col) { - if (modeUsesLock(SEGMENT.mode)) return; if (i >= 0 && i < _length) { _locked[i] = false; @@ -513,13 +491,11 @@ void WS2812FX::setRange(uint16_t i, uint16_t i2, uint32_t col) void WS2812FX::lock(uint16_t i) { - if (_modeUsesLock) return; if (i < _length) _locked[i] = true; } void WS2812FX::lockRange(uint16_t i, uint16_t i2) { - if (_modeUsesLock) return; for (uint16_t x = i; x < i2; x++) { if (x < _length) _locked[i] = true; @@ -528,13 +504,11 @@ void WS2812FX::lockRange(uint16_t i, uint16_t i2) void WS2812FX::unlock(uint16_t i) { - if (_modeUsesLock) return; if (i < _length) _locked[i] = false; } void WS2812FX::unlockRange(uint16_t i, uint16_t i2) { - if (_modeUsesLock) return; for (uint16_t x = i; x < i2; x++) { if (x < _length) _locked[x] = false; diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 7860c20b8..3144b56cc 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 2001011 +#define VERSION 2001021 char versionString[] = "0.9.0-b2"; From 9bf534288ca860a86e856e27c84370e68a75419c Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 2 Jan 2020 22:10:59 +0100 Subject: [PATCH 67/70] Removed pixel locking --- wled00/FX.h | 14 +++++----- wled00/FX_fcn.cpp | 55 ++++++-------------------------------- wled00/wled00.ino | 3 ++- wled00/wled03_set.ino | 24 ----------------- wled00/wled05_init.ino | 1 + wled00/wled07_notify.ino | 2 -- wled00/wled11_ol.ino | 32 ++++++++++------------ wled00/wled13_cronixie.ino | 1 - 8 files changed, 31 insertions(+), 101 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 8c51f1427..c6d458d87 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -187,6 +187,9 @@ class WS2812FX { typedef uint16_t (WS2812FX::*mode_ptr)(void); + + // pre show callback + typedef void (*show_callback) (void); // segment parameters public: @@ -357,7 +360,6 @@ class WS2812FX { ablMilliampsMax = 850; currentMilliamps = 0; timebase = 0; - _locked = nullptr; bus = new NeoPixelWrapper(); resetSegments(); } @@ -374,13 +376,8 @@ class WS2812FX { driverModeCronixie(bool b), setCronixieDigits(byte* d), setCronixieBacklight(bool b), - setIndividual(uint16_t i, uint32_t col), setRange(uint16_t i, uint16_t i2, uint32_t col), - lock(uint16_t i), - lockRange(uint16_t i, uint16_t i2), - unlock(uint16_t i), - unlockRange(uint16_t i, uint16_t i2), - unlockAll(void), + setShowCallback(show_callback cb), setTransitionMode(bool t), trigger(void), setSegment(uint8_t n, uint16_t start, uint16_t stop), @@ -559,11 +556,12 @@ class WS2812FX { _skipFirstMode, _triggered; - byte* _locked; byte _cronixieDigits[6]; mode_ptr _mode[MODE_COUNT]; // SRAM footprint: 4 bytes per element + show_callback _callback = nullptr; + // mode helper functions uint16_t blink(uint32_t, uint32_t, bool strobe, bool), diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 25f40a88c..3081c2be5 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -32,7 +32,7 @@ void WS2812FX::init(bool supportWhite, uint16_t countPixels, bool skipFirst, uint8_t disableNLeds) { - if (supportWhite == _rgbwMode && countPixels == _length && _locked != NULL && disableNLeds == _disableNLeds) return; + if (supportWhite == _rgbwMode && countPixels == _length && disableNLeds == _disableNLeds) return; RESET_RUNTIME; _rgbwMode = supportWhite; _skipFirstMode = skipFirst; @@ -59,13 +59,9 @@ void WS2812FX::init(bool supportWhite, uint16_t countPixels, bool skipFirst, uin bus->Begin((NeoPixelType)ty, _lengthRaw); - delete[] _locked; - _locked = new byte[_length]; - _segments[0].start = 0; _segments[0].stop = _usableCount; - - unlockAll(); + setBrightness(_brightness); } @@ -107,7 +103,6 @@ void WS2812FX::setPixelColor(uint16_t n, uint32_t c) { void WS2812FX::setPixelColor(uint16_t i, byte r, byte g, byte b, byte w) { i = i * (_disableNLeds+1); - if (_locked[i]) return; if (IS_REVERSE) i = SEGMENT.stop -1 -i + SEGMENT.start; //reverse just individual segment byte tmpg = g; switch (colorOrder) //0 = Grb, default @@ -200,6 +195,8 @@ void WS2812FX::setCronixieDigits(byte d[]) //you can set it to 0 if the ESP is powered by USB and the LEDs by external void WS2812FX::show(void) { + if (_callback) _callback(); + //power limit calculation //each LED can draw up 195075 "power units" (approx. 53mA) //one PU is the power it takes to have 1 channel 1 step brighter per brightness step @@ -468,56 +465,20 @@ void WS2812FX::resetSegments() { _segment_runtimes[0].reset(); } -void WS2812FX::setIndividual(uint16_t i, uint32_t col) -{ - if (i >= 0 && i < _length) - { - _locked[i] = false; - setPixelColor(i, col); - _locked[i] = true; - } -} - void WS2812FX::setRange(uint16_t i, uint16_t i2, uint32_t col) { if (i2 >= i) { - for (uint16_t x = i; x <= i2; x++) setIndividual(x,col); + for (uint16_t x = i; x <= i2; x++) setPixelColor(x, col); } else { - for (uint16_t x = i2; x <= i; x++) setIndividual(x,col); + for (uint16_t x = i2; x <= i; x++) setPixelColor(x, col); } } -void WS2812FX::lock(uint16_t i) +void WS2812FX::setShowCallback(show_callback cb) { - if (i < _length) _locked[i] = true; -} - -void WS2812FX::lockRange(uint16_t i, uint16_t i2) -{ - for (uint16_t x = i; x < i2; x++) - { - if (x < _length) _locked[i] = true; - } -} - -void WS2812FX::unlock(uint16_t i) -{ - if (i < _length) _locked[i] = false; -} - -void WS2812FX::unlockRange(uint16_t i, uint16_t i2) -{ - for (uint16_t x = i; x < i2; x++) - { - if (x < _length) _locked[x] = false; - } -} - -void WS2812FX::unlockAll() -{ - for (int i=0; i < _length; i++) _locked[i] = false; + _callback = cb; } void WS2812FX::setTransitionMode(bool t) diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 3144b56cc..5fc1092f1 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 2001021 +#define VERSION 2001022 char versionString[] = "0.9.0-b2"; @@ -424,6 +424,7 @@ AsyncMqttClient* mqtt = NULL; void colorFromUint32(uint32_t,bool=false); void serveMessage(AsyncWebServerRequest*,uint16_t,String,String,byte); void handleE131Packet(e131_packet_t*, IPAddress); +void handleOverlayDraw(); #define E131_MAX_UNIVERSE_COUNT 9 diff --git a/wled00/wled03_set.ino b/wled00/wled03_set.ino index 9c753fec2..b20103ce8 100644 --- a/wled00/wled03_set.ino +++ b/wled00/wled03_set.ino @@ -200,7 +200,6 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) if (request->hasArg("OL")){ overlayDefault = request->arg("OL").toInt(); - if (overlayCurrent != overlayDefault) strip.unlockAll(); overlayCurrent = overlayDefault; } @@ -459,29 +458,6 @@ bool handleSet(AsyncWebServerRequest *request, const String& req) pos = req.indexOf("OL="); if (pos > 0) { overlayCurrent = getNumVal(&req, pos); - strip.unlockAll(); - } - - //(un)lock pixel (ranges) - pos = req.indexOf("&L="); - if (pos > 0) { - uint16_t index = getNumVal(&req, pos); - pos = req.indexOf("L2="); - bool unlock = req.indexOf("UL") > 0; - if (pos > 0) { - uint16_t index2 = getNumVal(&req, pos); - if (unlock) { - strip.unlockRange(index, index2); - } else { - strip.lockRange(index, index2); - } - } else { - if (unlock) { - strip.unlock(index); - } else { - strip.lock(index); - } - } } //apply macro diff --git a/wled00/wled05_init.ino b/wled00/wled05_init.ino index 684893f1b..a347eb4dc 100644 --- a/wled00/wled05_init.ino +++ b/wled00/wled05_init.ino @@ -96,6 +96,7 @@ void wledInit() void beginStrip() { // Initialize NeoPixel Strip and button + strip.setShowCallback(handleOverlayDraw); #ifdef BTNPIN pinMode(BTNPIN, INPUT_PULLUP); diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index 22370072c..8bb739e05 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -79,7 +79,6 @@ void arlsLock(uint32_t timeoutMs) { strip.setPixelColor(i,0,0,0,0); } - strip.unlockAll(); realtimeActive = true; } realtimeTimeout = millis() + timeoutMs; @@ -127,7 +126,6 @@ void handleNotifications() //unlock strip when realtime UDP times out if (realtimeActive && millis() > realtimeTimeout) { - //strip.unlockAll(); strip.setBrightness(bri); realtimeActive = false; //strip.setMode(effectCurrent); diff --git a/wled00/wled11_ol.ino b/wled00/wled11_ol.ino index fc3a47d8b..cfe8a1f9f 100644 --- a/wled00/wled11_ol.ino +++ b/wled00/wled11_ol.ino @@ -1,6 +1,7 @@ /* * Used to draw clock overlays over the strip */ + void initCronixie() { if (overlayCurrent == 3 && !cronixieInit) @@ -24,14 +25,8 @@ void handleOverlays() initCronixie(); updateLocalTime(); checkTimers(); - switch (overlayCurrent) - { - case 0: break;//no overlay - case 1: _overlayAnalogClock(); break;//2 analog clock - case 2: break;//nixie 1-digit, removed - case 3: _overlayCronixie();//Diamex cronixie clock kit - } - if (!countdownMode || overlayCurrent < 3) checkCountdown(); //countdown macro activation must work + checkCountdown(); + if (overlayCurrent == 3) _overlayCronixie();//Diamex cronixie clock kit overlayRefreshedTime = millis(); } } @@ -40,7 +35,6 @@ void handleOverlays() void _overlayAnalogClock() { int overlaySize = overlayMax - overlayMin +1; - strip.unlockAll(); if (countdownMode) { _overlayAnalogCountdown(); return; @@ -73,23 +67,19 @@ void _overlayAnalogClock() { pix = analogClock12pixel + round((overlaySize / 12.0) *i); if (pix > overlayMax) pix -= overlaySize; - strip.setIndividual(pix, 0x00FFAA); + strip.setPixelColor(pix, 0x00FFAA); } } - if (!analogClockSecondsTrail) strip.setIndividual(secondPixel, 0xFF0000); - strip.setIndividual(minutePixel, 0x00FF00); - strip.setIndividual(hourPixel, 0x0000FF); + if (!analogClockSecondsTrail) strip.setPixelColor(secondPixel, 0xFF0000); + strip.setPixelColor(minutePixel, 0x00FF00); + strip.setPixelColor(hourPixel, 0x0000FF); overlayRefreshMs = 998; } void _overlayAnalogCountdown() { - strip.unlockAll(); - if (now() >= countdownTime) - { - checkCountdown(); - } else + if (now() < countdownTime) { long diff = countdownTime - now(); double pval = 60; @@ -127,3 +117,9 @@ void _overlayAnalogCountdown() } overlayRefreshMs = 998; } + + +void handleOverlayDraw() { + if (overlayCurrent != 1) return; //only analog clock + _overlayAnalogClock(); +} diff --git a/wled00/wled13_cronixie.ino b/wled00/wled13_cronixie.ino index 4c5a74961..de89aede2 100644 --- a/wled00/wled13_cronixie.ino +++ b/wled00/wled13_cronixie.ino @@ -145,7 +145,6 @@ void setCronixie() void _overlayCronixie() { - if (countdownMode) checkCountdown(); #ifndef WLED_DISABLE_CRONIXIE byte h = hour(local); byte h0 = h; From cdef7a53a43c5c223539f85de010dc01a4e26407 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 3 Jan 2020 17:47:06 +0100 Subject: [PATCH 68/70] Fireworks 1D working --- wled00/FX.cpp | 224 +++++++++++++++++++++++++------------------------- wled00/FX.h | 2 - 2 files changed, 114 insertions(+), 112 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index c93f83057..6051a155f 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2605,118 +2605,122 @@ uint16_t WS2812FX::mode_starburst(void) { * Exploding fireworks effect * adapted from: http://www.anirama.com/1000leds/1d-fireworks/ */ -#define NUM_SPARKS 60 // max number (could be NUM_LEDS / 2); + +//each needs 12 byte +typedef struct Spark { + float pos; + float vel; + float col; +} spark; + uint16_t WS2812FX::mode_exploding_fireworks(void) { - if (SEGENV.aux1==0) { // manage states using params - flare(); - } else { - explode(); - } + //allocate segment data + uint16_t numSparks = 2 + (SEGLEN >> 1); + if (numSparks > 80) numSparks = 80; + uint16_t dataSize = sizeof(spark) * numSparks; + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + fill(BLACK); + + Spark* sparks = reinterpret_cast(SEGENV.data); + Spark* flare = sparks; //first spark is flare data + + float gravity = -0.02 - (SEGMENT.speed/10000.0); // m/s/s + + if (SEGENV.aux1 == 0) { //FLARE + if (SEGENV.aux0 == 0) { //init flare + flare->pos = 0; + flare->vel = float(random16(150, 190)) / (75+(255-SEGMENT.intensity)/4); // trial and error to get reasonable range + //flare->vel = 2; + flare->col = 1; //brightness + + // initialize launch sparks + for (int i = 1; i < min(6, numSparks); i++) { + sparks[i].pos = 0; + sparks[i].vel = (float(random8(100,255)) / 255.0) * (flare->vel/ 3.0); // random around 20% of flare velocity + sparks[i].col = sparks[i].vel * 1000.0; + sparks[i].col = constrain(sparks[i].col, 0, 255); + } + SEGENV.aux0 = 1; + } + + // launch + if (flare->vel > -.3) { + // sparks + for (int i = 1; i < min(6, numSparks); i++) { + sparks[i].pos += sparks[i].vel; + sparks[i].pos = constrain(sparks[i].pos, 0, SEGLEN-1); + sparks[i].vel += gravity; + sparks[i].col -= 0.8; + sparks[i].col = constrain(sparks[i].col, 0, 255); + + CRGB color = HeatColor(sparks[i].col); + setPixelColor(SEGMENT.start + int(sparks[i].pos),color.red,color.green,color.blue); + } + // flare + //fade_out(255); + setPixelColor(SEGMENT.start + int(flare->pos),flare->col*255,flare->col*255,flare->col*255); + + flare->pos += flare->vel; + flare->pos = constrain(flare->pos, 0, SEGLEN-1); + flare->vel += gravity; + flare->col *= .975; + } else { + SEGENV.aux0 = 0; // allow next state to init + SEGENV.aux1 = 1; // ready to explode + } + } else { + /* + * Explode! + * + * Explosion happens where the flare ended. + * Size is proportional to the height. + */ + int nSparks = flare->pos / 2; // works out to look about right + nSparks = constrain(nSparks, 0, numSparks); + static float dying_gravity; + //gravity = -0.02 - ((255-SEGMENT.speed)/10000.0); + + // initialize sparks + if (SEGENV.aux0==0) { + for (int i = 1; i < nSparks; i++) { + sparks[i].pos = flare->pos; + sparks[i].vel = (float(random16(0, 20000)) / 10000.0) - 1.0; // from -1 to 1 + sparks[i].col = abs(sparks[i].vel * 500.0); // set colors before scaling velocity to keep them bright + sparks[i].col = constrain(sparks[i].col, 0, 255); + sparks[i].vel *= flare->pos / SEGLEN; // proportional to height + } + sparks[1].col = 255; // this will be our known spark + dying_gravity = gravity; + SEGENV.aux0 = 1; + } + + float c1 = 120; + float c2 = 50; + + if (sparks[1].col > 5) {//&& sparks[1].pos > 0) { // as long as our known spark is lit, work with all the sparks + //fade_out(255); + for (int i = 1; i < nSparks; i++) { + sparks[i].pos += sparks[i].vel; + sparks[i].pos = constrain(sparks[i].pos, 0, SEGLEN-1); + sparks[i].vel += dying_gravity; + sparks[i].col *= .97; + sparks[i].col = constrain(sparks[i].col, 0, 255); // red cross dissolve + + if(sparks[i].pos > c1) { // fade white to yellow + setPixelColor(SEGMENT.start + sparks[i].pos,255, 255, (255 * (sparks[i].col - c1)) / (255 - c1)); + } else if (sparks[i].col < c2) { // fade from red to black + setPixelColor(SEGMENT.start + sparks[i].pos,(255 * sparks[i].col) / c2, 0, 0); + } else { // fade from yellow to red + setPixelColor(SEGMENT.start + sparks[i].pos,255, (255 * (sparks[i].col - c2)) / (c1 - c2), 0); + } + } + dying_gravity *= .995; // as sparks burn out they fall slower + } else { + SEGENV.aux0 = 0; //init again + SEGENV.aux1 = 0; //back to flare + } + } return FRAMETIME; } - -static float sparkPos[NUM_SPARKS]; -static float sparkVel[NUM_SPARKS]; -static float sparkCol[NUM_SPARKS]; -static float flarePos; -static float flareVel; -static float brightness; - -void WS2812FX::flare() { - float gravity = -0.02 - (SEGMENT.speed/10000.0); // m/s/s - - if (SEGENV.aux0 == 0) { //use aux0 for initialization flag - flarePos = 0; - flareVel = float(random16(150, 190)) / (75+(255-SEGMENT.intensity)/4); // trial and error to get reasonable range - brightness = 1; - - // initialize launch sparks - for (int i = 0; i < 5; i++) { - sparkPos[i] = 0; - sparkVel[i] = (float(random8(100,255)) / 255.0) * (flareVel/ 3.0); // random around 20% of flare velocity - sparkCol[i] = sparkVel[i] * 1000.0; - sparkCol[i] = constrain(sparkCol[i], 0, 255); - } - SEGENV.aux0=1; - } - - // launch - if (flareVel >= -.3) { - // sparks - for (int i = 0; i < 5; i++) { - sparkPos[i] += sparkVel[i]; - sparkPos[i] = constrain(sparkPos[i], 0, SEGLEN-1); - sparkVel[i] += gravity; - sparkCol[i] += -.8; - sparkCol[i] = constrain(sparkCol[i], 0, 255); - - CRGB color = HeatColor(sparkCol[i]); - setPixelColor(SEGMENT.stop - int(sparkPos[i]),color.red,color.green,color.blue); - } - // flare - fade_out(255); - setPixelColor(SEGMENT.stop - int(flarePos),brightness*255,brightness*255,brightness*255); - - flarePos += flareVel; - flarePos = constrain(flarePos, 0, SEGLEN-1); - flareVel += gravity; - brightness *= .975; - } else { - SEGENV.aux0=0; // allow next state to init - SEGENV.aux1=1; // ready to explode - } -} - -/* - * Explode! - * - * Explosion happens where the flare ended. - * Size is proportional to the height. - */ -void WS2812FX::explode() { - int nSparks = flarePos / 2; // works out to look about right - nSparks = constrain(nSparks,0,NUM_SPARKS); - static float dying_gravity; - float gravity = -0.02 - ((255-SEGMENT.speed)/10000.0); - float c1=120; - float c2=50; - - // initialize sparks - if (SEGENV.aux0==0) { - for (int i = 0; i < nSparks; i++) { - sparkPos[i] = flarePos; - sparkVel[i] = (float(random16(0, 20000)) / 10000.0) - 1.0; // from -1 to 1 - sparkCol[i] = abs(sparkVel[i] * 500.0); // set colors before scaling velocity to keep them bright - sparkCol[i] = constrain(sparkCol[i], 0, 255); - sparkVel[i] *= flarePos / SEGLEN; // proportional to height - } - sparkCol[0] = 255; // this will be our known spark - dying_gravity = gravity; - SEGENV.aux0=1; - } - - if (sparkCol[0] > c2/10 ) {//&& sparkPos[0] > 0) { // as long as our known spark is lit, work with all the sparks - fade_out(255); - for (int i = 0; i < nSparks; i++) { - sparkPos[i] += sparkVel[i]; - sparkPos[i] = constrain(sparkPos[i], 0, SEGLEN-1); - sparkVel[i] += dying_gravity; - sparkCol[i] *= .97; - sparkCol[i] = constrain(sparkCol[i], 0, 255); // red cross dissolve - - if(sparkCol[i] > c1) { // fade white to yellow - setPixelColor(SEGMENT.stop - sparkPos[i],255, 255, (255 * (sparkCol[i] - c1)) / (255 - c1)); - } else if (sparkCol[i] < c2) { // fade from red to black - setPixelColor(SEGMENT.stop - sparkPos[i],(255 * sparkCol[i]) / c2, 0, 0); - } else { // fade from yellow to red - setPixelColor(SEGMENT.stop - sparkPos[i],255, (255 * (sparkCol[i] - c2)) / (c1 - c2), 0); - } - } - dying_gravity *= .995; // as sparks burn out they fall slower - } else { - SEGENV.aux0=0; - SEGENV.aux1=0; - } -} diff --git a/wled00/FX.h b/wled00/FX.h index 824e0befc..0b2d21afa 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -386,8 +386,6 @@ class WS2812FX { resetSegments(), setPixelColor(uint16_t n, uint32_t c), setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w = 0), - flare(void), - explode(void), show(void); bool From 5c7d993dbea2c532f08eebf50d88d23edea29bb8 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 3 Jan 2020 22:56:56 +0100 Subject: [PATCH 69/70] Numerous improvements to 1D FW --- wled00/FX.cpp | 117 ++++++++++++++++++++++------------------------ wled00/wled00.ino | 2 +- 2 files changed, 58 insertions(+), 61 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 6051a155f..e1af83383 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2610,7 +2610,8 @@ uint16_t WS2812FX::mode_starburst(void) { typedef struct Spark { float pos; float vel; - float col; + uint16_t col; + uint8_t colIndex; } spark; uint16_t WS2812FX::mode_exploding_fireworks(void) @@ -2623,104 +2624,100 @@ uint16_t WS2812FX::mode_exploding_fireworks(void) fill(BLACK); + bool actuallyReverse = SEGMENT.getOption(1); + //have fireworks start in either direction based on intensity + SEGMENT.setOption(1, SEGENV.step); + Spark* sparks = reinterpret_cast(SEGENV.data); Spark* flare = sparks; //first spark is flare data - float gravity = -0.02 - (SEGMENT.speed/10000.0); // m/s/s + float gravity = -0.0004 - (SEGMENT.speed/800000.0); // m/s/s + gravity *= SEGLEN; - if (SEGENV.aux1 == 0) { //FLARE + if (SEGENV.aux0 < 2) { //FLARE if (SEGENV.aux0 == 0) { //init flare flare->pos = 0; - flare->vel = float(random16(150, 190)) / (75+(255-SEGMENT.intensity)/4); // trial and error to get reasonable range - //flare->vel = 2; - flare->col = 1; //brightness - - // initialize launch sparks - for (int i = 1; i < min(6, numSparks); i++) { - sparks[i].pos = 0; - sparks[i].vel = (float(random8(100,255)) / 255.0) * (flare->vel/ 3.0); // random around 20% of flare velocity - sparks[i].col = sparks[i].vel * 1000.0; - sparks[i].col = constrain(sparks[i].col, 0, 255); - } + uint16_t peakHeight = 75 + random8(180); //0-255 + peakHeight = (peakHeight * (SEGLEN -1)) >> 8; + flare->vel = sqrt(-2.0 * gravity * peakHeight); + flare->col = 255; //brightness + SEGENV.aux0 = 1; } // launch - if (flare->vel > -.3) { - // sparks - for (int i = 1; i < min(6, numSparks); i++) { - sparks[i].pos += sparks[i].vel; - sparks[i].pos = constrain(sparks[i].pos, 0, SEGLEN-1); - sparks[i].vel += gravity; - sparks[i].col -= 0.8; - sparks[i].col = constrain(sparks[i].col, 0, 255); - - CRGB color = HeatColor(sparks[i].col); - setPixelColor(SEGMENT.start + int(sparks[i].pos),color.red,color.green,color.blue); - } + if (flare->vel > 12 * gravity) { // flare - //fade_out(255); - setPixelColor(SEGMENT.start + int(flare->pos),flare->col*255,flare->col*255,flare->col*255); + setPixelColor(SEGMENT.start + int(flare->pos),flare->col,flare->col,flare->col); flare->pos += flare->vel; flare->pos = constrain(flare->pos, 0, SEGLEN-1); flare->vel += gravity; - flare->col *= .975; + flare->col -= 2; } else { - SEGENV.aux0 = 0; // allow next state to init - SEGENV.aux1 = 1; // ready to explode + SEGENV.aux0 = 2; // ready to explode } - } else { + } else if (SEGENV.aux0 < 4) { /* * Explode! * * Explosion happens where the flare ended. * Size is proportional to the height. */ - int nSparks = flare->pos / 2; // works out to look about right + int nSparks = flare->pos; nSparks = constrain(nSparks, 0, numSparks); static float dying_gravity; - //gravity = -0.02 - ((255-SEGMENT.speed)/10000.0); // initialize sparks - if (SEGENV.aux0==0) { + if (SEGENV.aux0 == 2) { for (int i = 1; i < nSparks; i++) { sparks[i].pos = flare->pos; - sparks[i].vel = (float(random16(0, 20000)) / 10000.0) - 1.0; // from -1 to 1 - sparks[i].col = abs(sparks[i].vel * 500.0); // set colors before scaling velocity to keep them bright - sparks[i].col = constrain(sparks[i].col, 0, 255); - sparks[i].vel *= flare->pos / SEGLEN; // proportional to height + sparks[i].vel = (float(random16(0, 20000)) / 10000.0) - 0.9; // from -0.9 to 1.1 + sparks[i].col = 345;//abs(sparks[i].vel * 750.0); // set colors before scaling velocity to keep them bright + //sparks[i].col = constrain(sparks[i].col, 0, 345); + sparks[i].colIndex = random8(); + sparks[i].vel *= flare->pos/SEGLEN; // proportional to height + sparks[i].vel *= -gravity *50; } - sparks[1].col = 255; // this will be our known spark - dying_gravity = gravity; - SEGENV.aux0 = 1; + //sparks[1].col = 345; // this will be our known spark + dying_gravity = gravity/2; + SEGENV.aux0 = 3; } - - float c1 = 120; - float c2 = 50; - if (sparks[1].col > 5) {//&& sparks[1].pos > 0) { // as long as our known spark is lit, work with all the sparks - //fade_out(255); + if (sparks[1].col > 4) {//&& sparks[1].pos > 0) { // as long as our known spark is lit, work with all the sparks for (int i = 1; i < nSparks; i++) { sparks[i].pos += sparks[i].vel; - sparks[i].pos = constrain(sparks[i].pos, 0, SEGLEN-1); sparks[i].vel += dying_gravity; - sparks[i].col *= .97; - sparks[i].col = constrain(sparks[i].col, 0, 255); // red cross dissolve - - if(sparks[i].pos > c1) { // fade white to yellow - setPixelColor(SEGMENT.start + sparks[i].pos,255, 255, (255 * (sparks[i].col - c1)) / (255 - c1)); - } else if (sparks[i].col < c2) { // fade from red to black - setPixelColor(SEGMENT.start + sparks[i].pos,(255 * sparks[i].col) / c2, 0, 0); - } else { // fade from yellow to red - setPixelColor(SEGMENT.start + sparks[i].pos,255, (255 * (sparks[i].col - c2)) / (c1 - c2), 0); + if (sparks[i].col > 3) sparks[i].col -= 4; + + if (sparks[i].pos > 0 && sparks[i].pos < SEGLEN) { + uint16_t prog = sparks[i].col; + uint32_t spColor = (SEGMENT.palette) ? color_wheel(sparks[i].colIndex) : SEGCOLOR(0); + CRGB c = CRGB::Black; //HeatColor(sparks[i].col); + if (prog > 300) { //fade from white to spark color + c = col_to_crgb(color_blend(spColor, WHITE, (prog - 300)*5)); + } else if (prog > 45) { //fade from spark color to black + c = col_to_crgb(color_blend(BLACK, spColor, prog - 45)); + uint8_t cooling = (300 - prog) >> 5; + c.g = qsub8(c.g, cooling); + c.b = qsub8(c.b, cooling * 2); + } + setPixelColor(SEGMENT.start + int(sparks[i].pos), c.red, c.green, c.blue); } } - dying_gravity *= .995; // as sparks burn out they fall slower + dying_gravity *= .99; // as sparks burn out they fall slower } else { - SEGENV.aux0 = 0; //init again - SEGENV.aux1 = 0; //back to flare + SEGENV.aux0 = 6 + random8(10); //wait for this many frames + } + } else { + SEGENV.aux0--; + if (SEGENV.aux0 < 4) { + SEGENV.aux0 = 0; //back to flare + SEGENV.step = (SEGMENT.intensity > random8()); //decide firing side } } + + SEGMENT.setOption(1, actuallyReverse); + return FRAMETIME; } diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 5fc1092f1..52951f616 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 2001022 +#define VERSION 2001031 char versionString[] = "0.9.0-b2"; From e4ad0d3b59687c9cd879c4f0967b57d901d08d14 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sun, 5 Jan 2020 21:26:14 +0100 Subject: [PATCH 70/70] Improved bouncing balls --- wled00/FX.cpp | 199 +++++++++++++++++++++++----------------------- wled00/FX.h | 4 +- wled00/wled00.ino | 2 +- 3 files changed, 101 insertions(+), 104 deletions(-) diff --git a/wled00/FX.cpp b/wled00/FX.cpp index 4549a0ed0..72d540a92 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -2401,107 +2401,94 @@ uint16_t WS2812FX::mode_spots_fade() } +//each needs 12 bytes +//Spark type is used for popcorn and 1D fireworks +typedef struct Ball { + unsigned long lastBounceTime; + float impactVelocity; + float height; +} ball; + /* * Bouncing Balls Effect */ -uint16_t WS2812FX::mode_BouncingBalls(void) { +uint16_t WS2812FX::mode_bouncing_balls(void) { + //allocate segment data + uint16_t maxNumBalls = 16; + uint16_t dataSize = sizeof(ball) * maxNumBalls; + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + + Ball* balls = reinterpret_cast(SEGENV.data); + // number of balls based on intensity setting to max of 7 (cycles colors) // non-chosen color is a random color - int balls = int(((SEGMENT.intensity * 6.2) / 255) + 1); - - const int maxBallCount = 7; + uint8_t numBalls = int(((SEGMENT.intensity * (maxNumBalls - 0.8f)) / 255) + 1); - float Gravity = -9.81; // standard value of gravity - int Position[maxBallCount]; // current position of the ball normalized to segment size - float TimeSinceLastBounce[maxBallCount] = {0}; // time difference for physics calculations - int StartHeight = 1; // height in metres (strip length) - float Dampening[maxBallCount] = {0}; // Coefficient of Restitution (bounce damping) - float ImpactVelocityStart = sqrt( -2 * Gravity * StartHeight); + float gravity = -9.81; // standard value of gravity + float impactVelocityStart = sqrt( -2 * gravity); - static float ImpactVelocity[maxBallCount] = {ImpactVelocityStart}; - static long ClockTimeSinceLastBounce[maxBallCount] = {millis()}; - static float Height[maxBallCount]; - - //set up variable damping for better effect using multiple balls - for (int i = 0 ; i < maxBallCount ; i++) { - Dampening[i] = 0.90 - float(i)/pow(maxBallCount,2); + unsigned long time = millis(); + + if (SEGENV.call == 0) { + for (uint8_t i = 0; i < maxNumBalls; i++) balls[i].lastBounceTime = time; } - for (int i = 0 ; i < balls ; i++) { - TimeSinceLastBounce[i] = (millis() - ClockTimeSinceLastBounce[i])/((255-SEGMENT.speed)*8/256 +1); - Height[i] = 0.5 * Gravity * pow( TimeSinceLastBounce[i]/1000 , 2.0 ) + ImpactVelocity[i] * TimeSinceLastBounce[i]/1000; + bool hasCol2 = SEGCOLOR(2); + fill(hasCol2 ? BLACK : SEGCOLOR(1)); + + for (uint8_t i = 0; i < numBalls; i++) { + float timeSinceLastBounce = (time - balls[i].lastBounceTime)/((255-SEGMENT.speed)*8/256 +1); + balls[i].height = 0.5 * gravity * pow(timeSinceLastBounce/1000 , 2.0) + balls[i].impactVelocity * timeSinceLastBounce/1000; - if ( Height[i] < 0 ) { - Height[i] = 0; - ImpactVelocity[i] = Dampening[i] * ImpactVelocity[i]; - ClockTimeSinceLastBounce[i] = millis(); + if (balls[i].height < 0) { //start bounce + balls[i].height = 0; + //damping for better effect using multiple balls + float dampening = 0.90 - float(i)/pow(numBalls,2); + balls[i].impactVelocity = dampening * balls[i].impactVelocity; + balls[i].lastBounceTime = time; - if ( ImpactVelocity[i] < 0.01 ) { - ImpactVelocity[i] = ImpactVelocityStart; + if (balls[i].impactVelocity < 0.015) { + balls[i].impactVelocity = impactVelocityStart; } } - Position[i] = round( Height[i] * (SEGLEN - 1) / StartHeight); - } - - fill(BLACK); - - for (int i = 0 ; i < balls ; i++) { - uint32_t color = SEGCOLOR(i % NUM_COLORS); - if (!color) { - color = color_wheel(random8()); - } - setPixelColor(SEGMENT.start+Position[i],color); + uint32_t color = SEGCOLOR(0); + if (SEGMENT.palette) { + color = color_wheel(i*(256/max(numBalls, 8))); + } else if (hasCol2) { + color = SEGCOLOR(i % NUM_COLORS); + } + + uint16_t pos = round(balls[i].height * (SEGLEN - 1)); + setPixelColor(SEGMENT.start + pos, color); } return FRAMETIME; } + /* * Sinelon stolen from FASTLED examples */ uint16_t WS2812FX::sinelon_base(bool dual, bool rainbow=false) { - fade_out(SEGMENT.intensity); int pos = beatsin16(SEGMENT.speed/10,0,SEGLEN-1); - int prevpos = SEGENV.aux0; uint32_t color1 = color_from_palette(pos, true, false, 0); if (rainbow) { - color1 = color_wheel((pos % 8) * 32); - } - - if( pos < prevpos ) { - for (uint16_t i = pos; i < prevpos; i++) { - setPixelColor(i, color1); - } - } else { - for (uint16_t i = prevpos; i < pos; i++) { - setPixelColor(SEGMENT.start + i, color1); - } + color1 = color_wheel((pos & 0x07) * 32); } + setPixelColor(SEGMENT.start + pos, color1); if (dual) { uint32_t color2 = SEGCOLOR(2); - if (color2 == 0) { - color2 = color_from_palette(pos, true, false, 0); - } - if (rainbow) { - color2 = color_wheel((pos % 8) * 32); - } - if ( pos < prevpos ) { - for (uint16_t i = pos; i < prevpos; i++) { - setPixelColor(SEGMENT.start + SEGLEN-1-i, color2); - } - } else { - for (uint16_t i = prevpos; i < pos; i++) { - setPixelColor(SEGMENT.start + SEGLEN-1-i, color2); - } - } + if (!color2) color2 = color_from_palette(pos, true, false, 0); + if (rainbow) color2 = color1; //rainbow + + setPixelColor(SEGMENT.start + SEGLEN-1-pos, color2); } - SEGENV.aux0 = pos; return FRAMETIME; } @@ -2532,46 +2519,64 @@ uint16_t WS2812FX::mode_glitter() } + +//each needs 12 bytes +//Spark type is used for popcorn and 1D fireworks +typedef struct Spark { + float pos; + float vel; + uint16_t col; + uint8_t colIndex; +} spark; + /* * POPCORN +* modified from https://github.com/kitesurfer1404/WS2812FX/blob/master/src/custom/Popcorn.h */ -typedef struct Kernel { - float position; - float velocity; - int32_t color; -} kernel; - -#define MAX_NUM_POPCORN 12 -#define GRAVITY 0.06 - uint16_t WS2812FX::mode_popcorn(void) { - uint32_t popcornColor = SEGCOLOR(0); - uint32_t bgColor = SEGCOLOR(1); - if(popcornColor == bgColor) popcornColor = color_wheel(random8()); + //allocate segment data + uint16_t maxNumPopcorn = 24; + uint16_t dataSize = sizeof(spark) * maxNumPopcorn; + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + + Spark* popcorn = reinterpret_cast(SEGENV.data); - static kernel popcorn[MAX_NUM_POPCORN]; - float coeff = pow((float)SEGLEN, 0.5223324f) * 0.3944296f; + float gravity = -0.0001 - (SEGMENT.speed/200000.0); // m/s/s + gravity *= SEGLEN; - fill(SEGCOLOR(1)); + bool hasCol2 = SEGCOLOR(2); + fill(hasCol2 ? BLACK : SEGCOLOR(1)); - uint16_t ledIndex; - for(int8_t i=0; i < SEGMENT.intensity*MAX_NUM_POPCORN/255; i++) { - bool isActive = popcorn[i].position >= 0.0f; + uint8_t numPopcorn = SEGMENT.intensity*maxNumPopcorn/255; + if (numPopcorn == 0) numPopcorn = 1; + + for(uint8_t i = 0; i < numPopcorn; i++) { + bool isActive = popcorn[i].pos >= 0.0f; if(isActive) { // if kernel is active, update its position - popcorn[i].position += popcorn[i].velocity; - popcorn[i].velocity -= (GRAVITY * ((255-SEGMENT.speed)*8/256 + 1)); + popcorn[i].pos += popcorn[i].vel; + popcorn[i].vel += gravity; + uint32_t col = color_wheel(popcorn[i].colIndex); + if (!SEGMENT.palette && popcorn[i].colIndex < NUM_COLORS) col = SEGCOLOR(popcorn[i].colIndex); - ledIndex = SEGMENT.start + popcorn[i].position; - if(ledIndex >= SEGMENT.start && ledIndex <= SEGMENT.stop) setPixelColor(ledIndex, popcorn[i].color); + uint16_t ledIndex = SEGMENT.start + popcorn[i].pos; + if(ledIndex >= SEGMENT.start && ledIndex < SEGMENT.stop) setPixelColor(ledIndex, col); } else { // if kernel is inactive, randomly pop it if(random8() < 2) { // POP!!! - popcorn[i].position = 0.0f; - popcorn[i].velocity = coeff * (random(66, 100) / 100.0f); - popcorn[i].color = popcornColor; + popcorn[i].pos = 0.01f; - ledIndex = SEGMENT.start; - setPixelColor(ledIndex, popcorn[i].color); + uint16_t peakHeight = 128 + random8(128); //0-255 + peakHeight = (peakHeight * (SEGLEN -1)) >> 8; + popcorn[i].vel = sqrt(-2.0 * gravity * peakHeight); + + if (SEGMENT.palette) + { + popcorn[i].colIndex = random8(); + } else { + byte col = random8(0, NUM_COLORS); + if (!hasCol2 || !SEGCOLOR(col)) col = 0; + popcorn[i].colIndex = col; + } } } } @@ -2756,14 +2761,6 @@ uint16_t WS2812FX::mode_starburst(void) { * adapted from: http://www.anirama.com/1000leds/1d-fireworks/ */ -//each needs 12 byte -typedef struct Spark { - float pos; - float vel; - uint16_t col; - uint8_t colIndex; -} spark; - uint16_t WS2812FX::mode_exploding_fireworks(void) { //allocate segment data diff --git a/wled00/FX.h b/wled00/FX.h index fbad203f9..fdbbfb554 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -360,7 +360,7 @@ class WS2812FX { _mode[FX_MODE_CANDLE] = &WS2812FX::mode_candle; _mode[FX_MODE_STARBURST] = &WS2812FX::mode_starburst; _mode[FX_MODE_EXPLODING_FIREWORKS] = &WS2812FX::mode_exploding_fireworks; - _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_BouncingBalls; + _mode[FX_MODE_BOUNCINGBALLS] = &WS2812FX::mode_bouncing_balls; _mode[FX_MODE_SINELON] = &WS2812FX::mode_sinelon; _mode[FX_MODE_SINELON_DUAL] = &WS2812FX::mode_sinelon_dual; _mode[FX_MODE_SINELON_RAINBOW] = &WS2812FX::mode_sinelon_rainbow; @@ -543,7 +543,7 @@ class WS2812FX { mode_candle(void), mode_starburst(void), mode_exploding_fireworks(void), - mode_BouncingBalls(void), + mode_bouncing_balls(void), mode_sinelon(void), mode_sinelon_dual(void), mode_sinelon_rainbow(void), diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 52951f616..c706f51cd 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -98,7 +98,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 2001031 +#define VERSION 2001051 char versionString[] = "0.9.0-b2";