From a643b5655593c6381221587fd5bc8fcdd5421011 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Wed, 1 Dec 2021 23:03:30 +0100 Subject: [PATCH 1/6] Fixed no color updated on full JSON state request --- wled00/json.cpp | 11 +++++++---- wled00/wled.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index 3e27c0b1..f9fc7515 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -8,6 +8,7 @@ bool getVal(JsonVariant elem, byte* val, byte vmin=0, byte vmax=255) { if (elem.is()) { + if (elem < 0) return false; //ignore e.g. {"ps":-1} *val = elem; return true; } else if (elem.is()) { @@ -152,17 +153,19 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId) //temporary, strip object gets updated via colorUpdated() if (id == strip.getMainSegmentId()) { - if (getVal(elem["fx"], &effectCurrent, 1, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 1-255 exact value) - if (!presetId) unloadPlaylist(); //stop playlist if active and FX changed manually + byte effectPrev = effectCurrent; + if (getVal(elem["fx"], &effectCurrent, 1, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 0-255 exact value) + if (!presetId && effectCurrent != effectPrev) unloadPlaylist(); //stop playlist if active and FX changed manually } effectSpeed = elem[F("sx")] | effectSpeed; effectIntensity = elem[F("ix")] | effectIntensity; getVal(elem["pal"], &effectPalette, 1, strip.getPaletteCount()); } else { //permanent byte fx = seg.mode; - if (getVal(elem["fx"], &fx, 1, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 1-255 exact value) + byte fxPrev = fx; + if (getVal(elem["fx"], &fx, 1, strip.getModeCount())) { //load effect ('r' random, '~' inc/dec, 0-255 exact value) strip.setMode(id, fx); - if (!presetId) unloadPlaylist(); //stop playlist if active and FX changed manually + if (!presetId && seg.mode != fxPrev) unloadPlaylist(); //stop playlist if active and FX changed manually } seg.speed = elem[F("sx")] | seg.speed; seg.intensity = elem[F("ix")] | seg.intensity; diff --git a/wled00/wled.h b/wled00/wled.h index 062de8ff..5bfb4735 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2111300 +#define VERSION 2112010 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From cadda12371974d02241b8d1beb85f9955d721354 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Thu, 2 Dec 2021 00:52:36 +0100 Subject: [PATCH 2/6] Fixed spacing LEDs not blanked if offset is changed --- wled00/FX.h | 2 +- wled00/FX_fcn.cpp | 7 +++++-- wled00/json.cpp | 7 ++++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/wled00/FX.h b/wled00/FX.h index 14e486b1..8603328a 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -647,7 +647,7 @@ class WS2812FX { setTransitionMode(bool t), calcGammaTable(float), trigger(void), - setSegment(uint8_t n, uint16_t start, uint16_t stop, uint8_t grouping = 0, uint8_t spacing = 0), + setSegment(uint8_t n, uint16_t start, uint16_t stop, uint8_t grouping = 0, uint8_t spacing = 0, uint16_t offset = UINT16_MAX), resetSegments(), makeAutoSegments(), fixInvalidSegments(), diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 9077cdaa..1b52772d 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -567,12 +567,14 @@ bool WS2812FX::hasCCTBus(void) { return false; } -void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing) { +void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, uint8_t spacing, uint16_t offset) { if (n >= MAX_NUM_SEGMENTS) return; Segment& seg = _segments[n]; //return if neither bounds nor grouping have changed - if (seg.start == i1 && seg.stop == i2 && (!grouping || (seg.grouping == grouping && seg.spacing == spacing))) return; + if (seg.start == i1 && seg.stop == i2 + && (!grouping || (seg.grouping == grouping && seg.spacing == spacing)) + && (offset == UINT16_MAX || offset == seg.offset)) return; if (seg.stop) setRange(seg.start, seg.stop -1, 0); //turn old segment range off if (i2 <= i1) //disable segment @@ -602,6 +604,7 @@ void WS2812FX::setSegment(uint8_t n, uint16_t i1, uint16_t i2, uint8_t grouping, seg.grouping = grouping; seg.spacing = spacing; } + if (offset < UINT16_MAX) seg.offset = offset; _segment_runtimes[n].reset(); } diff --git a/wled00/json.cpp b/wled00/json.cpp index f9fc7515..de55faf4 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -64,7 +64,7 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId) uint16_t grp = elem["grp"] | seg.grouping; uint16_t spc = elem[F("spc")] | seg.spacing; - strip.setSegment(id, start, stop, grp, spc); + uint16_t of = seg.offset; uint16_t len = 1; if (stop > start) len = stop - start; @@ -73,9 +73,10 @@ void deserializeSegment(JsonObject elem, byte it, byte presetId) int offsetAbs = abs(offset); if (offsetAbs > len - 1) offsetAbs %= len; if (offset < 0) offsetAbs = len - offsetAbs; - seg.offset = offsetAbs; + of = offsetAbs; } - if (stop > start && seg.offset > len -1) seg.offset = len -1; + if (stop > start && of > len -1) of = len -1; + strip.setSegment(id, start, stop, grp, spc, of); byte segbri = 0; if (getVal(elem["bri"], &segbri)) { From 46ec5047430445394f2211b010b10d692d5010d2 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Fri, 3 Dec 2021 20:36:37 +0100 Subject: [PATCH 3/6] Various fixes Fixed ESP32 crash on Colortwinkles brightness change Fixed setting picker to black resetting hue and saturation Fixed auto white mode not saved to config --- CHANGELOG.md | 6 + wled00/FX_fcn.cpp | 39 +- wled00/cfg.cpp | 2 +- wled00/data/index.js | 21 +- wled00/html_ui.h | 1587 +++++++++++++++++++++--------------------- wled00/wled.h | 2 +- 6 files changed, 846 insertions(+), 811 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f81e5cb0..ce29f0ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ### Builds after release 0.12.0 +#### Build 2112030 + +- Fixed ESP32 crash on Colortwinkles brightness change +- Fixed setting picker to black resetting hue and saturation +- Fixed auto white mode not saved to config + #### Build 2111300 - Added CCT and white balance correction support (PR #2285) diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index 1b52772d..ec23636b 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -444,14 +444,14 @@ void WS2812FX::setBrightness(uint8_t b) { if (gammaCorrectBri) b = gamma8(b); if (_brightness == b) return; _brightness = b; - _segment_index = 0; if (_brightness == 0) { //unfreeze all segments on power off for (uint8_t i = 0; i < MAX_NUM_SEGMENTS; i++) { _segments[i].setOption(SEG_OPTION_FREEZE, false); } } - if (SEGENV.next_time > millis() + 22 && millis() - _lastShow > MIN_SHOW_DELAY) show();//apply brightness change immediately if no refresh soon + unsigned long t = millis(); + if (_segment_runtimes[0].next_time > t + 22 && t - _lastShow > MIN_SHOW_DELAY) show(); //apply brightness change immediately if no refresh soon } uint8_t WS2812FX::getMode(void) { @@ -703,14 +703,35 @@ bool WS2812FX::checkSegmentAlignment() { } //After this function is called, setPixelColor() will use that segment (offsets, grouping, ... will apply) +//Note: If called in an interrupt (e.g. JSON API), it must be reset with "setPixelColor(255)", +//otherwise it can lead to a crash on ESP32 because _segment_index is modified while in use by the main thread +#ifdef ARDUINO_ARCH_ESP32 +uint8_t _segment_index_prev = 0; +uint16_t _virtualSegmentLength_prev = 0; +bool _ps_set = false; +#endif + void WS2812FX::setPixelSegment(uint8_t n) { if (n < MAX_NUM_SEGMENTS) { + #ifdef ARDUINO_ARCH_ESP32 + if (!_ps_set) { + _segment_index_prev = _segment_index; + _virtualSegmentLength_prev = _virtualSegmentLength; + _ps_set = true; + } + #endif _segment_index = n; - _virtualSegmentLength = SEGMENT.length(); + _virtualSegmentLength = SEGMENT.virtualLength(); } else { - _segment_index = 0; - _virtualSegmentLength = 0; + _virtualSegmentLength = 0; + #ifdef ARDUINO_ARCH_ESP32 + if (_ps_set) { + _segment_index = _segment_index_prev; + _virtualSegmentLength = _virtualSegmentLength_prev; + _ps_set = false; + } + #endif } } @@ -737,13 +758,13 @@ void WS2812FX::setTransition(uint16_t t) void WS2812FX::setTransitionMode(bool t) { - unsigned long waitMax = millis() + 20; //refresh after 20 ms if transition enabled + unsigned long waitMax = millis() + 20; //refresh after 20 ms if transition enabled for (uint16_t i = 0; i < MAX_NUM_SEGMENTS; i++) { - _segment_index = i; - SEGMENT.setOption(SEG_OPTION_TRANSITIONAL, t); + _segments[i].setOption(SEG_OPTION_TRANSITIONAL, t); - if (t && SEGMENT.mode == FX_MODE_STATIC && SEGENV.next_time > waitMax) SEGENV.next_time = waitMax; + if (t && _segments[i].mode == FX_MODE_STATIC && _segment_runtimes[i].next_time > waitMax) + _segment_runtimes[i].next_time = waitMax; } } diff --git a/wled00/cfg.cpp b/wled00/cfg.cpp index 47471eef..5871aaeb 100644 --- a/wled00/cfg.cpp +++ b/wled00/cfg.cpp @@ -527,6 +527,7 @@ void serializeConfig() { hw_led["cct"] = correctWB; hw_led[F("cr")] = cctFromRgb; hw_led[F("cb")] = strip.cctBlending; + hw_led[F("rgbwm")] = Bus::getAutoWhiteMode(); JsonArray hw_led_ins = hw_led.createNestedArray("ins"); @@ -546,7 +547,6 @@ void serializeConfig() { ins["type"] = bus->getType() & 0x7F; ins["ref"] = bus->isOffRefreshRequired(); ins[F("rgbw")] = bus->isRgbw(); - ins[F("rgbwm")] = bus->getAutoWhiteMode(); } // button(s) diff --git a/wled00/data/index.js b/wled00/data/index.js index 98b24f1b..806315ae 100644 --- a/wled00/data/index.js +++ b/wled00/data/index.js @@ -1703,14 +1703,15 @@ function selectSlot(b) { cd[csel].style.border="5px solid white"; cd[csel].style.margin="2px"; cd[csel].style.width="50px"; - cpick.color.set(cd[csel].style.backgroundColor); + setPicker(cd[csel].style.backgroundColor); //force slider update on initial load (picker "color:change" not fired if black) - if (cd[csel].style.backgroundColor == 'rgb(0, 0, 0)') updatePSliders(); + if (cpick.color.value == 0) updatePSliders(); d.getElementById('sliderW').value = whites[csel]; updateTrail(d.getElementById('sliderW')); redrawPalPrev(); } +//set the color from a hex string. Used by quick color selectors var lasth = 0; function pC(col) { @@ -1723,7 +1724,7 @@ function pC(col) } while (Math.abs(col.h - lasth) < 50); lasth = col.h; } - cpick.color.set(col); + setPicker(col); setColor(0); } @@ -1768,14 +1769,20 @@ function fromHex() var str = d.getElementById('hexc').value; whites[csel] = parseInt(str.substring(6), 16); try { - cpick.color.set("#" + str.substring(0,6)); + setPicker("#" + str.substring(0,6)); } catch (e) { - cpick.color.set("#ffaa00"); + setPicker("#ffaa00"); } if (isNaN(whites[csel])) whites[csel] = 0; setColor(2); } +function setPicker(rgb) { + var c = new iro.Color(rgb); + if (c.value > 0) cpick.color.set(c); + else cpick.color.setChannel('hsv', 'v', 0); +} + function fromV() { cpick.color.setChannel('hsv', 'v', d.getElementById('sliderV').value); @@ -1791,13 +1798,13 @@ function fromRgb() var r = d.getElementById('sliderR').value; var g = d.getElementById('sliderG').value; var b = d.getElementById('sliderB').value; - cpick.color.set(`rgb(${r},${g},${b})`); + setPicker(`rgb(${r},${g},${b})`); } //sr 0: from RGB sliders, 1: from picker, 2: from hex function setColor(sr) { var cd = d.getElementById('csl').children; - if (sr == 1 && cd[csel].style.backgroundColor == 'rgb(0, 0, 0)') cpick.color.setChannel('hsv', 'v', 100); + if (sr == 1 && cd[csel].style.backgroundColor == "rgb(0, 0, 0)") cpick.color.setChannel('hsv', 'v', 100); cd[csel].style.backgroundColor = cpick.color.rgbString; if (sr != 2) whites[csel] = parseInt(d.getElementById('sliderW').value); var col = cpick.color.rgb; diff --git a/wled00/html_ui.h b/wled00/html_ui.h index c79ea052..5d126a47 100644 --- a/wled00/html_ui.h +++ b/wled00/html_ui.h @@ -7,7 +7,7 @@ */ // Autogenerated from wled00/data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 34804; +const uint16_t PAGE_index_L = 34827; const uint8_t PAGE_index[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0a, 0xcc, 0xbd, 0x67, 0x7b, 0xe3, 0xb8, 0xce, 0x30, 0xfc, 0x3d, 0xbf, 0xc2, 0xe3, 0xd9, 0x9d, 0xb5, 0xc6, 0xb2, 0x2d, 0xf7, 0x36, 0x9a, @@ -1392,797 +1392,798 @@ const uint8_t PAGE_index[] PROGMEM = { 0x0a, 0x94, 0x5c, 0x37, 0xcd, 0xf6, 0xa4, 0xa3, 0x89, 0x25, 0x4c, 0x54, 0x55, 0x35, 0x96, 0x58, 0xc6, 0x44, 0x59, 0x96, 0x63, 0x89, 0x15, 0x4c, 0x94, 0x24, 0x29, 0x96, 0x58, 0xc5, 0xc4, 0x66, 0xb3, 0x19, 0x4b, 0xac, 0x25, 0x25, 0x36, 0x30, 0xb1, 0xd1, 0x68, 0xc4, 0x12, 0xff, 0xff, 0xf2, - 0xbe, 0xb5, 0xbb, 0x6d, 0x23, 0xd9, 0xf6, 0xfb, 0xfd, 0x15, 0x10, 0x92, 0x91, 0x88, 0x08, 0xa2, - 0x40, 0xc9, 0xf6, 0x24, 0xa4, 0x40, 0x2e, 0x47, 0x71, 0x26, 0x5e, 0x93, 0xf1, 0x68, 0x22, 0x67, - 0x32, 0xb3, 0x34, 0x5a, 0x47, 0x10, 0x09, 0x4a, 0x38, 0x86, 0x00, 0x9a, 0x80, 0x1e, 0x3e, 0x32, - 0xff, 0xfb, 0xad, 0x5d, 0xfd, 0x40, 0x37, 0x1e, 0x14, 0xe5, 0xcc, 0x9c, 0xfb, 0xe1, 0x66, 0xc5, - 0x22, 0xd9, 0xe8, 0x6e, 0xf4, 0xa3, 0xba, 0xba, 0xba, 0xba, 0x6a, 0xd7, 0x25, 0x12, 0x5f, 0xbc, - 0x78, 0x61, 0x25, 0x4e, 0x91, 0x78, 0x78, 0x78, 0x68, 0x25, 0xe2, 0x84, 0xfa, 0xd5, 0x60, 0x30, - 0xb0, 0x12, 0x67, 0x48, 0x3c, 0x38, 0x38, 0xb0, 0x12, 0x71, 0x65, 0xf9, 0xd5, 0xf4, 0x85, 0x9d, - 0x98, 0xbb, 0xf2, 0x96, 0xfe, 0x20, 0x78, 0xe1, 0x3b, 0xd5, 0x9f, 0xa0, 0xff, 0x9d, 0x67, 0x65, - 0x2c, 0x2e, 0xe5, 0x28, 0x1d, 0xd6, 0x92, 0xaf, 0x65, 0xfa, 0x2b, 0x2b, 0xbd, 0xbc, 0xec, 0xa8, - 0x98, 0x58, 0x45, 0x8f, 0x69, 0xdb, 0xf3, 0x6a, 0x05, 0x22, 0x55, 0x62, 0x40, 0xbb, 0xa4, 0x53, - 0xfd, 0xe9, 0x2e, 0x71, 0xbd, 0xd1, 0x3b, 0x9a, 0xfc, 0x2d, 0xb9, 0xb9, 0xaa, 0xd8, 0x9b, 0xd0, - 0xd6, 0x85, 0x74, 0x56, 0x80, 0x69, 0x4e, 0x2f, 0xe8, 0x7f, 0x4b, 0x85, 0x86, 0x75, 0x9a, 0xa9, - 0x8f, 0x30, 0xd3, 0x0c, 0x4c, 0x21, 0x1a, 0x34, 0x53, 0x1f, 0xf6, 0xc3, 0xb6, 0x59, 0x7b, 0xd1, - 0x36, 0xbf, 0x4c, 0x33, 0x2f, 0x5f, 0xbe, 0x6c, 0xd2, 0xcc, 0xab, 0x57, 0xaf, 0x36, 0xa4, 0x99, - 0x3a, 0x71, 0x32, 0xcd, 0x4c, 0xa7, 0xd3, 0x26, 0xcd, 0xd4, 0x57, 0xc1, 0xac, 0x8d, 0xe0, 0x99, - 0x66, 0xbe, 0x3d, 0x1c, 0xb4, 0xd3, 0xcc, 0x21, 0x8d, 0xb5, 0xfa, 0xd7, 0x41, 0x30, 0x34, 0x44, - 0xad, 0x04, 0x43, 0xe9, 0x2f, 0x3b, 0x08, 0xc6, 0xac, 0x75, 0x13, 0x6a, 0x09, 0x0e, 0x88, 0x50, - 0xf4, 0x9f, 0x0d, 0xa8, 0xe5, 0xe5, 0xc0, 0x77, 0xd4, 0xbf, 0x2f, 0x22, 0x95, 0xdb, 0x0c, 0xc7, - 0x66, 0x83, 0xdb, 0x00, 0x62, 0xf2, 0xfb, 0x2b, 0x70, 0x1b, 0x3a, 0x93, 0x38, 0x6d, 0x47, 0x83, - 0xcb, 0x2b, 0x17, 0xce, 0xec, 0xb3, 0x3a, 0x38, 0x27, 0xd5, 0xef, 0xf2, 0x2d, 0x65, 0xd6, 0x2f, - 0x96, 0xd3, 0x30, 0xf6, 0x5d, 0x62, 0x98, 0xb1, 0xa7, 0x36, 0xd5, 0x22, 0x54, 0x72, 0x9b, 0xdc, - 0x2a, 0x49, 0x52, 0x37, 0x37, 0x4b, 0x69, 0x41, 0x17, 0x84, 0x21, 0x3d, 0xa0, 0x8d, 0xf3, 0x2c, - 0x38, 0x9f, 0xf0, 0x81, 0xfb, 0x47, 0x92, 0xe4, 0xfe, 0x19, 0x47, 0x00, 0xb7, 0xd4, 0x4f, 0x00, - 0x88, 0x2d, 0x6b, 0xeb, 0xe5, 0xbe, 0x4c, 0xa6, 0x13, 0xa4, 0xfc, 0x26, 0x7c, 0x71, 0x75, 0x8e, - 0x88, 0x9a, 0x85, 0x5d, 0x85, 0x7f, 0x24, 0x0c, 0x2c, 0x88, 0x6f, 0xde, 0xae, 0xcc, 0x0e, 0x87, - 0xdd, 0x62, 0x0c, 0xa3, 0xa2, 0xe2, 0x88, 0xe3, 0xb0, 0x89, 0x1e, 0xc8, 0xa7, 0x2f, 0xce, 0xbd, - 0x55, 0xd6, 0x02, 0xa7, 0x89, 0x91, 0x22, 0x39, 0x2e, 0x1c, 0x3f, 0x8a, 0xee, 0x19, 0x9a, 0x8c, - 0xfa, 0x56, 0x77, 0x79, 0x45, 0x2d, 0x28, 0xde, 0x45, 0xef, 0x7a, 0x85, 0xc7, 0xe1, 0x9b, 0xfb, - 0xaf, 0x60, 0xf9, 0x22, 0xa6, 0x42, 0x62, 0xe5, 0x86, 0x85, 0x4e, 0xa9, 0xac, 0x38, 0xde, 0xe2, - 0x04, 0x12, 0x5e, 0xd0, 0x39, 0xab, 0xf7, 0xf5, 0x23, 0xb7, 0x6a, 0xe5, 0x5d, 0xd0, 0xe0, 0x0b, - 0xd3, 0x32, 0x7b, 0xd6, 0x4e, 0x3f, 0x24, 0xd9, 0xf1, 0xe9, 0xa9, 0xd2, 0xb9, 0x35, 0x26, 0x0e, - 0x51, 0x86, 0x85, 0xc8, 0xf9, 0x44, 0xdc, 0xa5, 0xeb, 0x98, 0x3a, 0x06, 0xb7, 0x0e, 0xcc, 0x72, - 0x07, 0x12, 0x2b, 0x82, 0x3a, 0xd1, 0x6c, 0x67, 0xec, 0x72, 0xe4, 0x67, 0xfd, 0x25, 0x1d, 0xc2, - 0x5d, 0x6e, 0x7d, 0x41, 0xf2, 0x3d, 0x24, 0x01, 0x11, 0xe7, 0xda, 0x45, 0x44, 0xea, 0xfd, 0x29, - 0xf0, 0x83, 0xb3, 0xfe, 0xf5, 0x32, 0x9e, 0x87, 0x3d, 0xda, 0xeb, 0x27, 0x2a, 0xfa, 0xb0, 0xbb, - 0xcb, 0x5a, 0x88, 0xa1, 0xdb, 0x47, 0x68, 0xaf, 0xfd, 0x82, 0xba, 0xd0, 0x97, 0x99, 0x6f, 0xe2, - 0x59, 0x12, 0x85, 0x6e, 0xc4, 0xfe, 0x01, 0x16, 0x74, 0xac, 0x15, 0xea, 0x34, 0xcf, 0x00, 0x66, - 0x0a, 0x73, 0x03, 0x22, 0x69, 0x3a, 0x9c, 0x86, 0xf5, 0x18, 0x4e, 0x3a, 0x50, 0x13, 0x8c, 0x89, - 0xa0, 0xe2, 0x08, 0xfc, 0x1e, 0xbf, 0x34, 0xb4, 0x84, 0x8e, 0x2b, 0x25, 0x74, 0x50, 0xea, 0x5b, - 0xa1, 0xfb, 0x93, 0xd9, 0xa8, 0xfc, 0xcd, 0x82, 0xba, 0xfc, 0x23, 0xd5, 0xef, 0x40, 0x0f, 0xd0, - 0x77, 0x4e, 0xd2, 0x98, 0x51, 0xba, 0x32, 0x5a, 0x43, 0xce, 0x6f, 0x3f, 0xbf, 0xf9, 0xc1, 0x79, - 0x7b, 0xb2, 0xe5, 0x76, 0x89, 0x31, 0xa2, 0x46, 0x9f, 0x6b, 0xf3, 0x3c, 0x75, 0x46, 0x68, 0x7f, - 0x7b, 0x25, 0xf2, 0x78, 0x38, 0x32, 0x80, 0x92, 0xc2, 0x9b, 0x78, 0x79, 0x15, 0xff, 0x10, 0xc7, - 0x0b, 0xfc, 0x12, 0x92, 0x10, 0xd3, 0x1a, 0x66, 0xd4, 0xf3, 0x59, 0xe1, 0x71, 0xf2, 0x6b, 0x99, - 0xa4, 0x50, 0x48, 0x6a, 0xf9, 0xc1, 0xd7, 0xa2, 0x05, 0x1f, 0x8e, 0x27, 0xf3, 0x18, 0x7a, 0xbd, - 0x75, 0x83, 0x7f, 0x8d, 0x00, 0x6f, 0x94, 0xb5, 0xff, 0xdf, 0x05, 0xa0, 0x65, 0x1e, 0x6f, 0xe2, - 0xf2, 0x3a, 0x9f, 0x09, 0xbd, 0xee, 0xca, 0x63, 0x78, 0xd1, 0x1e, 0x51, 0x7b, 0xcc, 0xcf, 0x7b, - 0x5e, 0x95, 0xf2, 0x58, 0xbf, 0x50, 0xa5, 0x76, 0xe3, 0x18, 0x0e, 0x25, 0x71, 0x5f, 0xc0, 0x6a, - 0x5a, 0x9a, 0x64, 0xa8, 0x4a, 0x72, 0x22, 0xf3, 0x34, 0xbf, 0x22, 0x62, 0x33, 0xdf, 0xea, 0xcc, - 0xf2, 0xb8, 0x70, 0xf8, 0xa6, 0x10, 0x8e, 0xae, 0x09, 0x9d, 0xbd, 0x50, 0xa5, 0x93, 0xcf, 0x1d, - 0x9d, 0xcf, 0x91, 0x1a, 0xba, 0x82, 0x89, 0x3e, 0x9e, 0xf5, 0x5d, 0xbe, 0xcf, 0x99, 0x27, 0x19, - 0x91, 0xca, 0xa7, 0x9e, 0x69, 0x81, 0x22, 0x79, 0x99, 0x21, 0xb3, 0x5d, 0x21, 0xde, 0x1b, 0x5b, - 0x00, 0x74, 0x3d, 0xab, 0xc6, 0x6d, 0x0a, 0x6c, 0x6c, 0x73, 0x61, 0xb9, 0x20, 0xcf, 0x63, 0xa2, - 0x4e, 0x4f, 0x9f, 0x14, 0xda, 0xf8, 0xe3, 0xb4, 0xa0, 0xe3, 0x40, 0x15, 0x67, 0xb9, 0xc5, 0xc2, - 0x05, 0xea, 0xf5, 0xc6, 0x52, 0x17, 0xe6, 0x9a, 0x32, 0x16, 0x91, 0x88, 0xfa, 0xe6, 0x8e, 0x84, - 0xa6, 0xeb, 0x34, 0xcd, 0x4b, 0x38, 0x30, 0xdd, 0xf2, 0x59, 0xf7, 0x7d, 0x74, 0x89, 0xd5, 0x57, - 0x20, 0x85, 0x27, 0x5f, 0xce, 0x3d, 0x9f, 0xee, 0xfb, 0xd4, 0x71, 0xd3, 0x64, 0xdb, 0x1c, 0x0e, - 0xe5, 0x3e, 0xd4, 0x63, 0xbd, 0xbd, 0x91, 0xdf, 0x36, 0x44, 0x17, 0x6f, 0x39, 0x11, 0x56, 0x9e, - 0x85, 0x27, 0x95, 0x4c, 0xdd, 0xe4, 0x7a, 0x72, 0x03, 0x35, 0x51, 0x05, 0x30, 0x6b, 0x4d, 0x41, - 0xfd, 0x48, 0x2e, 0x2e, 0x0d, 0xfc, 0x97, 0x01, 0x76, 0xa8, 0x26, 0x4f, 0xbd, 0xd3, 0x07, 0x7f, - 0xd5, 0x9a, 0x76, 0x85, 0x00, 0xaa, 0x51, 0x67, 0x87, 0x96, 0x19, 0xb8, 0xd3, 0xfb, 0x9c, 0x62, - 0xae, 0x81, 0xef, 0x96, 0x4b, 0x8e, 0xa5, 0xdd, 0xde, 0x91, 0xc5, 0xf4, 0xc6, 0x05, 0x40, 0x54, - 0x7e, 0x75, 0x95, 0xc6, 0x27, 0xac, 0xee, 0xc3, 0x35, 0x95, 0x0c, 0x01, 0xd0, 0x72, 0xf8, 0x6b, - 0xbf, 0x5c, 0xd5, 0x84, 0x91, 0x82, 0x66, 0x0b, 0x2f, 0x6d, 0xe9, 0xa3, 0xd0, 0xe4, 0xca, 0x61, - 0xfe, 0x9e, 0xf5, 0xc3, 0xb0, 0x5b, 0xf1, 0xdb, 0xf2, 0x9a, 0x37, 0x39, 0xa2, 0x6d, 0xa2, 0xc0, - 0x9a, 0xdc, 0xc2, 0x52, 0xdf, 0xcc, 0x5b, 0x31, 0xcb, 0x1a, 0x01, 0xe9, 0x1b, 0x80, 0x99, 0xbd, - 0x13, 0x1c, 0x2b, 0x23, 0x45, 0xaa, 0x52, 0xe6, 0x35, 0x68, 0x3e, 0x73, 0xf8, 0xa2, 0x9f, 0x18, - 0xb5, 0xca, 0x16, 0x1a, 0xdf, 0x69, 0x27, 0xa0, 0xe3, 0xea, 0x94, 0x8a, 0x3a, 0x91, 0xf4, 0x67, - 0x73, 0xa9, 0xb0, 0xd0, 0xa0, 0x02, 0xc5, 0xf9, 0x2c, 0x3e, 0xaf, 0x72, 0xef, 0x86, 0x3a, 0x9b, - 0xd1, 0xcc, 0x9c, 0x78, 0x3d, 0x35, 0x12, 0x6a, 0x18, 0x38, 0xed, 0x3c, 0x8a, 0xc2, 0xdb, 0xdb, - 0x5b, 0x25, 0x9c, 0x04, 0x98, 0x30, 0x69, 0xd3, 0xf9, 0xaf, 0x63, 0x51, 0x0f, 0xfa, 0xdf, 0x17, - 0x1d, 0xa6, 0x25, 0x7a, 0x93, 0xe7, 0x25, 0x89, 0x47, 0xa0, 0x0f, 0xca, 0xd0, 0x54, 0xed, 0x90, - 0x04, 0x95, 0xb8, 0xbe, 0xa8, 0xa4, 0xb1, 0xa2, 0x62, 0xf3, 0x50, 0x59, 0x5c, 0xe7, 0xf7, 0xef, - 0xf3, 0xa8, 0x28, 0x75, 0x3b, 0x60, 0x3a, 0xd5, 0x42, 0x6d, 0x79, 0x96, 0xd1, 0x96, 0xa3, 0x49, - 0xae, 0xb1, 0xa4, 0x85, 0xd4, 0x29, 0x5d, 0x47, 0x9b, 0xe5, 0x4b, 0xbc, 0x43, 0xec, 0xa5, 0x3a, - 0xda, 0x3c, 0xb6, 0xd4, 0x6a, 0x78, 0xcb, 0x89, 0x1b, 0xc3, 0x8e, 0x82, 0x0e, 0x9a, 0x68, 0x14, - 0x1d, 0xa5, 0x69, 0xff, 0x59, 0xaa, 0xe5, 0x26, 0xb5, 0xc5, 0x30, 0xc1, 0x12, 0x0d, 0x88, 0xb2, - 0xe4, 0x26, 0x12, 0x97, 0x93, 0x42, 0x53, 0xd0, 0x7c, 0x20, 0xbc, 0xd3, 0x44, 0xc1, 0xb0, 0x63, - 0xe9, 0x3e, 0x39, 0xc1, 0xa2, 0x2d, 0x2e, 0xf8, 0xaf, 0x7f, 0xf0, 0x5d, 0x10, 0xd4, 0xc6, 0x8e, - 0x4d, 0x3f, 0xc4, 0x00, 0x12, 0xef, 0xd1, 0x83, 0xe9, 0x1e, 0xd3, 0x78, 0xc5, 0xf2, 0x6c, 0x9c, - 0x3b, 0x7c, 0x72, 0x76, 0xe6, 0x11, 0x6d, 0xae, 0xb3, 0x2d, 0x17, 0x0b, 0xc1, 0x38, 0xf9, 0xa2, - 0x9b, 0x56, 0x35, 0x9d, 0xa3, 0x67, 0xb4, 0x75, 0x83, 0x3c, 0x55, 0x1f, 0xc4, 0xb8, 0x72, 0x27, - 0xaa, 0x58, 0xef, 0x71, 0xf9, 0xcb, 0x6d, 0x86, 0xd1, 0x39, 0x2d, 0x97, 0xd5, 0x22, 0xd1, 0x51, - 0xa9, 0x19, 0xf0, 0xb0, 0x02, 0x08, 0xee, 0x95, 0xfb, 0xdf, 0x02, 0x87, 0x11, 0x88, 0x9f, 0x46, - 0x6a, 0xaf, 0xdc, 0xe3, 0xe4, 0x6f, 0x32, 0x0f, 0x31, 0x5c, 0xb0, 0xc0, 0xdb, 0x1f, 0xef, 0xe1, - 0xe9, 0x37, 0x85, 0xb7, 0xff, 0x8a, 0xd1, 0x46, 0xb2, 0x49, 0x26, 0xc2, 0x89, 0x0e, 0x42, 0xe8, - 0x7c, 0x68, 0xcf, 0x73, 0xa1, 0x72, 0xff, 0x54, 0xb8, 0x22, 0xca, 0xe7, 0xd0, 0x75, 0xd5, 0xdd, - 0x59, 0xbe, 0x1b, 0x02, 0xdf, 0x6e, 0x52, 0xe8, 0x02, 0x05, 0x6d, 0xee, 0xf9, 0x2d, 0x08, 0x05, - 0x1f, 0x54, 0x84, 0x72, 0xfb, 0x5b, 0x19, 0x09, 0xb6, 0x30, 0xe8, 0xa0, 0xd5, 0x46, 0x15, 0x90, - 0xe4, 0x39, 0x7e, 0xf9, 0x1d, 0xad, 0xa6, 0x4c, 0xa4, 0xa5, 0x54, 0x9a, 0xef, 0x4f, 0xfd, 0xf2, - 0x08, 0x4d, 0x21, 0x2e, 0xc8, 0xcf, 0x8d, 0xfc, 0x32, 0x1d, 0x29, 0xe5, 0x1e, 0xa0, 0x44, 0xa9, - 0x48, 0x11, 0xe3, 0x24, 0x96, 0x1b, 0xc6, 0x67, 0x19, 0x71, 0x88, 0xfc, 0x5e, 0x58, 0x4e, 0xe2, - 0x5e, 0x5c, 0x5e, 0x19, 0x5f, 0x1c, 0x95, 0xcb, 0xf1, 0x51, 0x39, 0x13, 0x66, 0x3f, 0xa1, 0xfb, - 0x21, 0xfe, 0x54, 0xce, 0xdc, 0xf1, 0xd7, 0x8f, 0xf1, 0xea, 0x68, 0xbf, 0x9c, 0x99, 0x8f, 0xee, - 0xa2, 0x54, 0x3c, 0x2a, 0x57, 0x24, 0xee, 0xca, 0xc7, 0xfb, 0x54, 0xfc, 0xc2, 0x9a, 0x9d, 0x9f, - 0x8d, 0x7b, 0x9b, 0x13, 0x0d, 0xb9, 0x35, 0xa8, 0x76, 0x65, 0x58, 0x6b, 0xf2, 0xe5, 0x89, 0x57, - 0x8a, 0x30, 0x95, 0xbb, 0xbb, 0x1a, 0x3f, 0x79, 0x7c, 0xf0, 0x32, 0x60, 0xdf, 0xd8, 0x03, 0x6c, - 0x42, 0x86, 0xf1, 0x1c, 0xb1, 0xce, 0xe9, 0x87, 0x5f, 0xa9, 0xca, 0x76, 0xbe, 0xc8, 0xa4, 0x74, - 0xb1, 0x40, 0xb3, 0x93, 0xd9, 0x85, 0x27, 0x6e, 0x05, 0x47, 0x5b, 0xfc, 0x1a, 0xf6, 0xd7, 0x0b, - 0x04, 0xa0, 0x3c, 0xbd, 0x70, 0xd2, 0x51, 0xee, 0x3e, 0xa2, 0xd1, 0xf0, 0x8c, 0x65, 0xee, 0xba, - 0xc3, 0x4d, 0xb3, 0x5e, 0x6c, 0x7f, 0xf5, 0x1d, 0x1d, 0x93, 0x47, 0xce, 0x5f, 0xe9, 0x6c, 0x0f, - 0x33, 0xd2, 0x24, 0xbb, 0x72, 0xbe, 0x7e, 0x5c, 0x30, 0x9b, 0x2e, 0xbd, 0xd5, 0x96, 0x31, 0x44, - 0x22, 0xb1, 0xba, 0xdf, 0x15, 0x97, 0x62, 0x88, 0xa7, 0xab, 0x6f, 0x5d, 0xb9, 0xd5, 0xc4, 0x89, - 0x41, 0x03, 0x44, 0xda, 0xfa, 0x27, 0x20, 0x61, 0xaa, 0x19, 0x2d, 0x4e, 0xd2, 0xe8, 0x13, 0xee, - 0x81, 0x0c, 0x03, 0x00, 0x9d, 0x77, 0x21, 0x9f, 0x6d, 0x6f, 0x37, 0x92, 0xfa, 0x8b, 0xc2, 0x68, - 0x4d, 0xb4, 0x48, 0xfe, 0x1e, 0xa5, 0xea, 0x5c, 0xa2, 0x32, 0x4b, 0x1b, 0x00, 0xa2, 0x66, 0xd1, - 0xca, 0x86, 0x01, 0xbc, 0xce, 0x38, 0x32, 0x82, 0x89, 0x03, 0xd4, 0x84, 0xfe, 0x0e, 0x7b, 0x33, - 0xda, 0x8b, 0xcb, 0x98, 0xd2, 0x32, 0x5f, 0x7f, 0x5d, 0x54, 0x5f, 0x3f, 0xa6, 0x75, 0x95, 0x61, - 0x69, 0xf2, 0xf6, 0x8f, 0xa9, 0x1a, 0xa2, 0x5a, 0xaf, 0x8c, 0xce, 0x7c, 0x4c, 0x27, 0xc6, 0x77, - 0x5c, 0x62, 0x55, 0xa4, 0xb2, 0xf8, 0x7e, 0xfa, 0x41, 0x13, 0x5e, 0xcb, 0x11, 0x79, 0x8a, 0xc3, - 0x11, 0x36, 0x9e, 0x54, 0x18, 0x0a, 0x88, 0xc0, 0x07, 0xfc, 0x8b, 0xca, 0xf3, 0xf5, 0x20, 0x49, - 0x79, 0xdf, 0xf1, 0x7f, 0x90, 0x60, 0x80, 0x4c, 0x74, 0x9c, 0xdf, 0xdc, 0x90, 0xb0, 0x83, 0x0d, - 0x65, 0xf1, 0x09, 0x12, 0x95, 0xc9, 0x32, 0x17, 0x49, 0x3c, 0x03, 0xbb, 0x9c, 0xa6, 0xc9, 0xe2, - 0x32, 0x8f, 0x96, 0xc4, 0x2b, 0x8d, 0xee, 0x2c, 0x78, 0x82, 0x85, 0xad, 0x9d, 0x9e, 0x76, 0x5c, - 0xdb, 0x12, 0x85, 0x8d, 0x80, 0xd1, 0xdf, 0xcb, 0xd6, 0x09, 0x70, 0x50, 0x36, 0x0b, 0xf1, 0x74, - 0x3c, 0x08, 0x98, 0x20, 0xc0, 0x86, 0x35, 0x20, 0xfe, 0x4a, 0x08, 0x41, 0x3b, 0x47, 0xb3, 0xe4, - 0x4e, 0xad, 0xd4, 0x22, 0xbe, 0x72, 0xa6, 0xee, 0x78, 0x67, 0x54, 0xec, 0xc2, 0x36, 0xe5, 0x9f, - 0xf9, 0xad, 0x73, 0x1d, 0xdd, 0xc5, 0x24, 0xbb, 0xcb, 0xc6, 0x14, 0xce, 0xa7, 0xb8, 0xdc, 0x22, - 0x46, 0x74, 0x9a, 0x2f, 0x97, 0x9f, 0x7c, 0x87, 0x84, 0xec, 0x65, 0xec, 0xdc, 0xc3, 0xe8, 0x0f, - 0x84, 0x55, 0xdc, 0xc6, 0x8e, 0x8c, 0x66, 0xe1, 0x7c, 0x22, 0x56, 0xa5, 0x4a, 0xd1, 0x16, 0x80, - 0x5d, 0x96, 0x6a, 0x75, 0x8f, 0x2e, 0x89, 0x6d, 0xd0, 0x3f, 0xd7, 0x17, 0xef, 0xf8, 0x89, 0x56, - 0x3d, 0xd1, 0xbe, 0xaa, 0x2a, 0x29, 0x1c, 0xec, 0xb4, 0xb7, 0x0b, 0x59, 0xd4, 0xa1, 0x9d, 0x3c, - 0x82, 0x68, 0x12, 0x21, 0xe1, 0x2e, 0xc9, 0x6f, 0x0b, 0x61, 0x99, 0x98, 0x0a, 0x33, 0x24, 0x27, - 0xba, 0xa3, 0x4d, 0x06, 0xf7, 0xfd, 0x7d, 0xd4, 0xea, 0xfc, 0x2b, 0x73, 0x1c, 0xa7, 0x77, 0x1a, - 0xdd, 0xa1, 0x09, 0x91, 0xaa, 0x04, 0x71, 0x93, 0x9d, 0x6b, 0x92, 0x0d, 0x18, 0x27, 0x91, 0xda, - 0x3a, 0x73, 0x72, 0xb9, 0xe0, 0x90, 0x14, 0xcb, 0x77, 0x22, 0x28, 0xd0, 0x4f, 0xb2, 0x15, 0x91, - 0x6a, 0x07, 0xc4, 0x22, 0xca, 0x81, 0x5b, 0x29, 0xe7, 0x43, 0x96, 0xdf, 0x13, 0xaf, 0xca, 0xf3, - 0x99, 0xc3, 0x98, 0x00, 0x43, 0xee, 0xc5, 0xce, 0x11, 0x8e, 0xc3, 0x11, 0x1d, 0xa5, 0x1d, 0x3a, - 0x37, 0x33, 0x99, 0x80, 0xbf, 0xc9, 0xb4, 0x71, 0xd5, 0xae, 0xa3, 0xcb, 0xdb, 0xb2, 0xe4, 0x1d, - 0x90, 0x47, 0xfb, 0xb2, 0xcc, 0x1c, 0xfa, 0xb7, 0xb7, 0x70, 0xe9, 0xbc, 0x4b, 0x24, 0x30, 0xfd, - 0x10, 0xba, 0x92, 0x06, 0xdd, 0x31, 0x11, 0xc7, 0x27, 0x8b, 0x34, 0x8e, 0xf6, 0x45, 0xe9, 0xf1, - 0x8e, 0xe7, 0xf3, 0x40, 0xee, 0xd3, 0xc4, 0x8d, 0x5b, 0x6f, 0x87, 0x70, 0xcc, 0x72, 0x4d, 0x36, - 0x53, 0xf8, 0xed, 0x42, 0x0e, 0x53, 0xb4, 0xb4, 0x84, 0xc8, 0x6a, 0x8a, 0x07, 0xc1, 0x5e, 0x48, - 0x7a, 0x12, 0xd6, 0x4d, 0xd2, 0x1e, 0x02, 0x37, 0xd4, 0x21, 0x9f, 0x1d, 0xf8, 0xfb, 0x38, 0x50, - 0x46, 0x3f, 0x8b, 0x9c, 0x2d, 0xc3, 0x62, 0x55, 0x0c, 0xb2, 0xaf, 0xba, 0xc0, 0xa6, 0x4f, 0x11, - 0x6f, 0x85, 0x04, 0x7b, 0xa8, 0x92, 0x48, 0x62, 0xa4, 0xa4, 0xad, 0x50, 0x3e, 0x27, 0x51, 0xb0, - 0xca, 0x28, 0xf9, 0x86, 0xbb, 0x2f, 0x49, 0x47, 0x9c, 0x5b, 0x47, 0x44, 0xe7, 0x4c, 0xc2, 0x17, - 0xf2, 0x94, 0xfb, 0xf5, 0x23, 0x9f, 0x72, 0x57, 0x56, 0xb6, 0x0b, 0xcf, 0x17, 0x07, 0xe2, 0xb2, - 0xf3, 0x9c, 0xdb, 0xa3, 0xc3, 0xc3, 0x87, 0xcf, 0x9f, 0xeb, 0x92, 0x8c, 0xaf, 0xcf, 0xbf, 0xc6, - 0x01, 0x58, 0x5c, 0xd4, 0xc7, 0x7e, 0xbd, 0x6b, 0x1d, 0x07, 0x60, 0x53, 0xb2, 0x44, 0xef, 0xcd, - 0x03, 0x31, 0x22, 0x6b, 0x19, 0xab, 0x59, 0xd8, 0x58, 0x55, 0xa7, 0x5b, 0x8f, 0xde, 0x86, 0xab, - 0xc4, 0x4a, 0x64, 0x8b, 0x89, 0x8d, 0xc0, 0x61, 0x87, 0x57, 0x29, 0x9a, 0xa6, 0xe2, 0x7c, 0x2c, - 0xfe, 0xf6, 0x73, 0x78, 0x76, 0x5e, 0x5d, 0xad, 0xaa, 0xc6, 0xfd, 0xed, 0x67, 0xcd, 0xb9, 0x88, - 0x3b, 0xd0, 0x20, 0x53, 0x46, 0xb5, 0xfc, 0x03, 0xef, 0x31, 0x06, 0x99, 0x2e, 0x14, 0xe5, 0x89, - 0x7b, 0x09, 0x77, 0xfc, 0x37, 0xdc, 0x97, 0xf1, 0x6c, 0x1f, 0xed, 0x2f, 0x68, 0xd9, 0x8b, 0xb1, - 0x0f, 0xec, 0x43, 0x01, 0x55, 0xc4, 0xae, 0xf9, 0x54, 0xc5, 0x45, 0x8d, 0x82, 0x1f, 0x1e, 0x0a, - 0x50, 0xb0, 0xb3, 0x28, 0xca, 0xc2, 0x65, 0xe2, 0xa7, 0x6d, 0x2e, 0x3b, 0x0b, 0xce, 0x57, 0x1f, - 0xd3, 0x4b, 0x83, 0xaa, 0x59, 0x54, 0x67, 0x6f, 0x71, 0xf9, 0xd8, 0x1b, 0x41, 0x1e, 0xc8, 0xce, - 0x06, 0xe7, 0x2b, 0x4d, 0xd7, 0x17, 0xfe, 0xee, 0x6e, 0x39, 0x7e, 0xc1, 0xd3, 0x1c, 0xf8, 0xb1, - 0xe4, 0x15, 0xc4, 0x71, 0x69, 0x0b, 0x66, 0xcc, 0x18, 0x9d, 0xe2, 0xb7, 0xf7, 0x86, 0x0e, 0x70, - 0x8a, 0xe1, 0x70, 0x77, 0x56, 0x2d, 0x4b, 0xe3, 0x63, 0x6a, 0x2d, 0x0c, 0x43, 0x50, 0xa8, 0xcf, - 0x72, 0xcc, 0x50, 0xcf, 0x3d, 0x41, 0x04, 0x86, 0x7a, 0x66, 0x3d, 0xc7, 0xf5, 0xd4, 0x66, 0x25, - 0x36, 0x99, 0xe0, 0x5c, 0xd1, 0x33, 0xc9, 0xeb, 0x6a, 0x33, 0xa4, 0xd6, 0x2c, 0xe1, 0x75, 0x20, - 0x64, 0x19, 0x3a, 0x21, 0x14, 0xf9, 0xb2, 0xec, 0x4d, 0x6f, 0x16, 0x27, 0x9e, 0x9a, 0x5e, 0xc1, - 0x9b, 0x31, 0xcf, 0xc6, 0xc9, 0xb3, 0x27, 0xad, 0x44, 0x32, 0x9e, 0x0e, 0xb1, 0xef, 0x26, 0x85, - 0x74, 0x49, 0x48, 0xe1, 0x01, 0x56, 0x85, 0x47, 0x81, 0x9a, 0x37, 0xae, 0x84, 0xdb, 0x14, 0xfe, - 0x5f, 0x23, 0xa1, 0x8b, 0x45, 0x4e, 0xda, 0xfa, 0x46, 0x39, 0xad, 0x60, 0xa2, 0x11, 0x11, 0x5e, - 0x37, 0xf6, 0x73, 0xa8, 0x4b, 0x35, 0x5e, 0x46, 0x89, 0xc9, 0xae, 0xed, 0x0c, 0x18, 0x5b, 0x3d, - 0xcb, 0xf1, 0x2a, 0x77, 0x69, 0xca, 0xb4, 0x5e, 0x65, 0x91, 0xb0, 0xcd, 0x66, 0xad, 0x18, 0xa5, - 0x2a, 0x99, 0x10, 0xdc, 0xea, 0xa2, 0xb5, 0x62, 0x04, 0x56, 0x77, 0x16, 0xf8, 0xdb, 0x41, 0x32, - 0xf1, 0xca, 0x43, 0x2d, 0x96, 0xe0, 0x32, 0x71, 0x8f, 0x12, 0x59, 0xc7, 0x4e, 0x82, 0xa5, 0xc6, - 0xac, 0x14, 0xdf, 0x76, 0xc6, 0xdb, 0x5f, 0x3d, 0xc4, 0x83, 0xc3, 0xef, 0x46, 0x47, 0xfb, 0xc9, - 0x18, 0x92, 0xf5, 0x4a, 0x49, 0x54, 0x74, 0x6a, 0x16, 0x0d, 0x11, 0xfc, 0xd8, 0xd1, 0x55, 0xb8, - 0xa2, 0x8a, 0x98, 0x2b, 0x70, 0xe6, 0xe9, 0x92, 0x84, 0x30, 0x65, 0xc5, 0x74, 0x16, 0xef, 0x0e, - 0x82, 0xe0, 0x9c, 0x4e, 0x6b, 0x0f, 0x0b, 0xae, 0x4d, 0x8c, 0x01, 0x35, 0x3c, 0xa6, 0x4c, 0x78, - 0xb6, 0x32, 0xda, 0x2d, 0x4a, 0xf5, 0xd4, 0x13, 0x6a, 0x38, 0x5a, 0x73, 0xf8, 0xdd, 0x4b, 0x6e, - 0x8d, 0x7a, 0xaf, 0x3d, 0x00, 0x24, 0xa6, 0xab, 0x2a, 0x75, 0x8d, 0x63, 0xb3, 0xa1, 0xe2, 0x3b, - 0x88, 0xff, 0x82, 0x4d, 0x85, 0x76, 0x77, 0x57, 0x34, 0xf9, 0x9b, 0x70, 0xfe, 0x92, 0xf3, 0x83, - 0x03, 0x30, 0xd3, 0x66, 0x9e, 0xbb, 0xbd, 0x1d, 0xc8, 0xcf, 0x5e, 0xf7, 0x0d, 0x2d, 0xf4, 0x3f, - 0x60, 0xe0, 0x9e, 0xaf, 0x28, 0x19, 0xc6, 0x47, 0x6b, 0xf2, 0x37, 0x6e, 0x73, 0x05, 0x79, 0x7b, - 0x4a, 0xd5, 0x04, 0xde, 0xae, 0xa8, 0x39, 0x12, 0x31, 0xa1, 0x95, 0xf6, 0x2c, 0xc2, 0x45, 0x81, - 0xa0, 0x58, 0xb8, 0xf9, 0x8e, 0x6a, 0x23, 0x4f, 0x92, 0xbe, 0x18, 0x54, 0xfe, 0xc9, 0x87, 0x49, - 0xe1, 0x4d, 0x6a, 0xb1, 0xd4, 0xc0, 0x1b, 0x49, 0x1d, 0xd7, 0xeb, 0x9e, 0xe7, 0x9b, 0x6c, 0xb1, - 0xb9, 0xc6, 0x61, 0xe7, 0x66, 0x5a, 0x4a, 0x32, 0x8a, 0xef, 0x7c, 0x19, 0xc7, 0xd7, 0x71, 0xb4, - 0xd8, 0x1f, 0xc4, 0x87, 0x23, 0x3a, 0x4c, 0x6b, 0xbb, 0xc5, 0x81, 0x52, 0x18, 0xc1, 0x25, 0x63, - 0x46, 0x6b, 0xe4, 0x7e, 0x89, 0x28, 0xf4, 0xef, 0x84, 0xeb, 0xc3, 0x94, 0x6b, 0x9c, 0xb9, 0xa3, - 0x62, 0x4c, 0x05, 0x27, 0x69, 0xd8, 0x2b, 0xe8, 0xff, 0xfd, 0x90, 0x7e, 0x78, 0xba, 0x0a, 0x7a, - 0x06, 0x84, 0xff, 0x81, 0x47, 0xa7, 0x3d, 0xe7, 0xb5, 0x3b, 0x2c, 0xc6, 0x90, 0xc8, 0x38, 0xef, - 0xcb, 0xe0, 0x1b, 0xc3, 0x1a, 0xb2, 0xd8, 0xa7, 0xf3, 0x0b, 0x32, 0xdd, 0xbc, 0x76, 0xd5, 0x82, - 0x15, 0xfc, 0x3c, 0xee, 0xdf, 0xf2, 0xad, 0x0b, 0x9b, 0xa4, 0x9d, 0xd1, 0x61, 0xec, 0x9c, 0x78, - 0x73, 0x8d, 0xa3, 0x20, 0x8f, 0x07, 0xae, 0x3a, 0xa1, 0x33, 0x9d, 0x3a, 0xb9, 0x51, 0x56, 0xd6, - 0xfa, 0x83, 0x41, 0x0c, 0xed, 0x74, 0xf1, 0x86, 0x28, 0x74, 0xff, 0x7c, 0x7b, 0x7b, 0x1d, 0x7d, - 0xb8, 0x75, 0x49, 0xba, 0x25, 0xb9, 0xa8, 0xcf, 0xba, 0xa9, 0xe2, 0xb7, 0xa4, 0xbc, 0xee, 0xb9, - 0x41, 0x7f, 0x70, 0xd8, 0x87, 0x16, 0xad, 0x47, 0xf9, 0xde, 0xe7, 0x1f, 0x12, 0xf0, 0xdf, 0xfe, - 0x34, 0xe3, 0x04, 0x7c, 0x11, 0x6b, 0xfa, 0x8e, 0x28, 0x17, 0x65, 0x57, 0x8e, 0xfb, 0xf5, 0x63, - 0xb4, 0xd2, 0x72, 0xde, 0x11, 0x7b, 0xc6, 0xe9, 0x65, 0x46, 0xef, 0x2e, 0x5d, 0xa6, 0xea, 0xaf, - 0x1f, 0xf3, 0x95, 0xf8, 0x54, 0x0d, 0x72, 0xbf, 0xbf, 0x4d, 0x52, 0x5c, 0xbe, 0xf4, 0xef, 0xe0, - 0xf0, 0x5b, 0x7b, 0x78, 0x4a, 0x07, 0x88, 0x88, 0xb1, 0x38, 0x99, 0x68, 0x90, 0xed, 0x3e, 0x99, - 0x27, 0xfd, 0x82, 0xd3, 0x77, 0xdd, 0x3f, 0x38, 0xec, 0xe9, 0xcd, 0x69, 0x4b, 0x3a, 0x6e, 0xf8, - 0xae, 0x33, 0xfb, 0xfe, 0xc6, 0x73, 0x1b, 0x15, 0xfd, 0xba, 0x80, 0x12, 0x80, 0x2d, 0xf8, 0x4d, - 0x85, 0x40, 0xff, 0x96, 0xd3, 0xbd, 0x46, 0xfe, 0x1f, 0x89, 0x2e, 0x1c, 0x10, 0x06, 0x91, 0x09, - 0x55, 0xfa, 0xe1, 0x7b, 0x59, 0xa5, 0x63, 0x66, 0x7a, 0x53, 0x94, 0xd0, 0xc2, 0x90, 0x38, 0x2f, - 0x4d, 0x16, 0x5d, 0x3f, 0x6d, 0xc9, 0xf6, 0xe3, 0x92, 0xd8, 0x50, 0xe1, 0xec, 0xe3, 0x9c, 0x9d, - 0x67, 0xdc, 0x57, 0x26, 0xa9, 0xf9, 0xa2, 0x68, 0xbc, 0xf7, 0x2f, 0xaf, 0x8f, 0x9d, 0x68, 0x36, - 0x5b, 0x72, 0x98, 0xc6, 0xb8, 0x7f, 0x13, 0x4d, 0x9b, 0x4d, 0x4b, 0xd2, 0xb8, 0xf8, 0x54, 0xd0, - 0x22, 0x44, 0x8e, 0x79, 0xd1, 0xbf, 0xdd, 0x75, 0xf7, 0x31, 0x0a, 0xf4, 0xb5, 0xdc, 0x45, 0x5b, - 0x31, 0x28, 0x76, 0x8c, 0xea, 0x6f, 0x44, 0xc6, 0x7d, 0x91, 0xc9, 0x63, 0xa0, 0xd6, 0x46, 0xc5, - 0x6f, 0xb2, 0xbb, 0x64, 0x99, 0x67, 0x37, 0xdc, 0x91, 0xb8, 0x1f, 0x2d, 0xa7, 0xd7, 0xac, 0x8d, - 0x80, 0xe9, 0xd3, 0x32, 0xa6, 0xaf, 0x3c, 0xd6, 0xe9, 0x7d, 0xb2, 0x00, 0x2c, 0xa9, 0x28, 0x4e, - 0x22, 0x2f, 0xa6, 0x9a, 0x58, 0x54, 0x8b, 0xbd, 0xd0, 0x9d, 0xcd, 0x95, 0x9a, 0x4b, 0xf2, 0x34, - 0xbe, 0x62, 0x3d, 0xa5, 0xb9, 0x2c, 0x47, 0xa6, 0x81, 0xa7, 0x6d, 0xd5, 0x29, 0x8c, 0x39, 0x47, - 0xb6, 0xc3, 0x69, 0x0f, 0x3c, 0xe9, 0x4a, 0xe0, 0x08, 0x99, 0xae, 0xa7, 0xaa, 0x9a, 0xdd, 0x5d, - 0xbd, 0x90, 0x29, 0x09, 0x9e, 0xa8, 0x60, 0x3a, 0x69, 0xb5, 0x4d, 0x02, 0x6b, 0xcf, 0x1b, 0x49, - 0x83, 0xd5, 0xb3, 0xf4, 0x3c, 0x04, 0x0c, 0x1c, 0xad, 0xf5, 0xd0, 0x7c, 0x3b, 0xb3, 0x4d, 0xa3, - 0x31, 0xe9, 0xee, 0xc0, 0xf3, 0xd3, 0x31, 0x5a, 0x84, 0x47, 0x68, 0x58, 0xda, 0xba, 0xcf, 0xb9, - 0x8a, 0x9b, 0xb3, 0xc0, 0xa2, 0x1e, 0xb0, 0x82, 0xc2, 0x29, 0xa6, 0xd7, 0x1f, 0x52, 0x95, 0xc1, - 0xd9, 0xce, 0x2e, 0x8b, 0xc5, 0x48, 0x6f, 0x52, 0x50, 0x2d, 0x3b, 0x42, 0x27, 0xcd, 0xb9, 0x11, - 0x68, 0xb7, 0xda, 0x30, 0xd2, 0x15, 0x1d, 0x48, 0x79, 0x07, 0x12, 0x08, 0x38, 0x94, 0x8a, 0x46, - 0xf4, 0xf0, 0xc4, 0x73, 0x69, 0x56, 0x81, 0x80, 0x93, 0x4e, 0x44, 0x51, 0x04, 0x02, 0xa7, 0x2d, - 0x4c, 0x6f, 0x44, 0x05, 0x31, 0x56, 0xab, 0x25, 0x37, 0xd1, 0x52, 0xb4, 0x06, 0x3b, 0x10, 0x9e, - 0xea, 0x2d, 0x88, 0x5b, 0xad, 0x7e, 0x35, 0x77, 0x70, 0xb7, 0x63, 0x73, 0xcb, 0xca, 0x87, 0xd2, - 0xda, 0xd7, 0xd1, 0xb8, 0x37, 0x0f, 0xb2, 0x79, 0x63, 0x34, 0x2f, 0x9b, 0xd0, 0x3f, 0x3a, 0x53, - 0x0a, 0x12, 0x20, 0x32, 0x4b, 0x9f, 0xd8, 0xa6, 0x67, 0x49, 0x29, 0x76, 0x6a, 0x63, 0x97, 0x4e, - 0xc5, 0x0e, 0xcd, 0x3f, 0xec, 0x6d, 0x1a, 0x6f, 0xca, 0x50, 0xc6, 0x68, 0x46, 0x79, 0x85, 0x66, - 0x64, 0xaa, 0x15, 0xd8, 0xa3, 0x0f, 0xa6, 0xaf, 0x8c, 0x3d, 0xda, 0xda, 0x7e, 0x37, 0x12, 0x13, - 0xd2, 0x0e, 0x11, 0x21, 0x6d, 0x15, 0x0f, 0xd2, 0x76, 0xd1, 0xa0, 0x21, 0x19, 0x6c, 0xde, 0xc5, - 0x6a, 0x02, 0x4c, 0x82, 0xc1, 0x31, 0xd4, 0xd5, 0xe2, 0x18, 0xcd, 0x05, 0x71, 0x50, 0xfa, 0x93, - 0xe5, 0x0c, 0x91, 0x62, 0x55, 0x40, 0xf9, 0xa2, 0x5b, 0x5c, 0xaa, 0xde, 0x2c, 0x20, 0xc2, 0x86, - 0x6e, 0x3e, 0x9f, 0xd3, 0x46, 0x14, 0x3d, 0x88, 0xb5, 0x14, 0x1e, 0x1e, 0x88, 0x30, 0x5e, 0xa1, - 0x6b, 0x4c, 0x1a, 0x1a, 0xc1, 0x5a, 0xd7, 0xeb, 0x3c, 0x05, 0x7e, 0x08, 0xb1, 0x0e, 0x5c, 0x9f, - 0x82, 0x22, 0xfa, 0xfd, 0xbe, 0xbb, 0xdf, 0x4a, 0x15, 0x97, 0x85, 0xfb, 0x84, 0x08, 0x46, 0x7b, - 0x2c, 0xf4, 0x60, 0x7a, 0x25, 0x4e, 0xdc, 0x68, 0x5a, 0x36, 0xfb, 0x4c, 0xd9, 0x6c, 0x99, 0x91, - 0x26, 0xf5, 0xe4, 0x7e, 0x69, 0x8e, 0x6f, 0xf0, 0xed, 0xbc, 0x53, 0xf4, 0xe2, 0xcb, 0x30, 0x18, - 0x22, 0x3a, 0x09, 0xed, 0x2c, 0xf7, 0x55, 0xab, 0xd4, 0x18, 0x1a, 0xaf, 0xba, 0x5c, 0x26, 0x7a, - 0x1c, 0xe5, 0xe8, 0x39, 0x45, 0x52, 0xd8, 0x0b, 0x0f, 0xef, 0xff, 0x7e, 0x99, 0xa8, 0xb5, 0x97, - 0x67, 0x5c, 0x4d, 0xe8, 0xca, 0x1b, 0x89, 0x65, 0x94, 0x08, 0xe4, 0x50, 0x8f, 0xc7, 0x35, 0x74, - 0x0f, 0x5e, 0xbe, 0x64, 0x35, 0x6d, 0xe8, 0x0e, 0x5c, 0xc7, 0xbc, 0x75, 0x32, 0x47, 0x9a, 0xde, - 0x4c, 0xbd, 0xde, 0xaf, 0xda, 0xd6, 0xe8, 0x82, 0xb4, 0x26, 0xb4, 0x85, 0x46, 0x67, 0xcd, 0x8f, - 0xae, 0x4d, 0x59, 0x3c, 0x5c, 0xea, 0xef, 0x8e, 0xa1, 0xc6, 0xa5, 0x71, 0x80, 0x1a, 0xf7, 0x14, - 0xb2, 0x81, 0xf3, 0xf3, 0x9b, 0x1f, 0x58, 0x8f, 0xbb, 0x26, 0xe3, 0xd7, 0x95, 0x61, 0x9c, 0x30, - 0xed, 0x9e, 0xb8, 0x3f, 0x8b, 0xad, 0x9b, 0x96, 0x7a, 0x99, 0x2f, 0x50, 0x87, 0xbb, 0x7a, 0xaa, - 0x96, 0xbf, 0xce, 0xe7, 0x34, 0xac, 0x56, 0x2e, 0xd6, 0x1d, 0x6f, 0xd8, 0x5a, 0x39, 0x8f, 0xf5, - 0x79, 0xa3, 0xa5, 0x6f, 0x73, 0x50, 0x35, 0xfa, 0xd9, 0xed, 0xcd, 0x65, 0xbc, 0x94, 0x73, 0x12, - 0xc8, 0x59, 0xa2, 0x1c, 0xd2, 0xbd, 0x60, 0x6f, 0xb0, 0xb2, 0xa6, 0x86, 0x05, 0xa5, 0x55, 0x63, - 0xa2, 0xa9, 0x9f, 0x8a, 0x04, 0x9f, 0xea, 0xdf, 0x86, 0x0d, 0x8c, 0x37, 0x6d, 0x60, 0xaf, 0x3e, - 0xe8, 0xb2, 0x91, 0x43, 0x92, 0x9a, 0x6b, 0x4d, 0xcf, 0x17, 0x4f, 0xe4, 0xfe, 0x8f, 0xf7, 0x2a, - 0x9f, 0xd7, 0xbb, 0x65, 0x34, 0x30, 0x9f, 0x6f, 0xde, 0x04, 0x93, 0x24, 0x94, 0x1c, 0xf2, 0x6f, - 0xa0, 0xf5, 0x3f, 0x91, 0xd4, 0xb4, 0xa0, 0xe3, 0xcc, 0x53, 0xdd, 0x3d, 0xc5, 0x7d, 0xf4, 0xd3, - 0xd9, 0x5e, 0xc3, 0x8e, 0xe3, 0x3f, 0x4d, 0xca, 0x57, 0xcb, 0x45, 0x2b, 0xad, 0x0c, 0x4c, 0x96, - 0x63, 0x0c, 0x33, 0xe5, 0xff, 0xdf, 0x98, 0xea, 0x62, 0x31, 0x5d, 0x4b, 0xc2, 0xf5, 0x66, 0x51, - 0xfe, 0xdf, 0xd9, 0xac, 0xd6, 0x7d, 0x65, 0x9a, 0xcd, 0xf1, 0x6f, 0xaf, 0xd0, 0x8d, 0x9b, 0xd6, - 0x76, 0x68, 0xc1, 0xc4, 0xed, 0x1d, 0x3a, 0xe0, 0x1d, 0x64, 0x63, 0x8a, 0x33, 0xf8, 0xf3, 0xb5, - 0x35, 0x08, 0xb4, 0xc2, 0xea, 0x3c, 0xba, 0x5d, 0x25, 0x9c, 0xf0, 0xdf, 0x87, 0xc2, 0x99, 0x41, - 0xb4, 0x93, 0x35, 0xcc, 0x6a, 0x2d, 0x9d, 0x99, 0x72, 0x5e, 0xa3, 0xc3, 0x4a, 0x1d, 0x22, 0x77, - 0xc1, 0xc3, 0x3f, 0xca, 0x3e, 0x48, 0x6d, 0x9b, 0x7a, 0x7f, 0x8b, 0x2c, 0xba, 0x8c, 0xef, 0x2c, - 0x69, 0xd4, 0xf9, 0x05, 0x1a, 0x7a, 0x3a, 0x6f, 0xcf, 0x94, 0x53, 0x48, 0x6d, 0x97, 0x5c, 0x23, - 0x9a, 0x52, 0x5d, 0xb5, 0x1d, 0x92, 0x2a, 0x33, 0x45, 0x53, 0xca, 0xd0, 0x2e, 0x9a, 0x3e, 0x43, - 0x36, 0xad, 0x09, 0xa7, 0x9b, 0x75, 0xea, 0x2f, 0x09, 0xf4, 0x06, 0x4e, 0x3c, 0x9f, 0x53, 0x9f, - 0x36, 0xef, 0xd0, 0x4d, 0x52, 0xeb, 0xcf, 0x5f, 0x12, 0xb3, 0x3b, 0x37, 0xc9, 0xbf, 0xbb, 0x37, - 0x06, 0xb9, 0x18, 0x6a, 0xa0, 0x16, 0xdd, 0x26, 0x68, 0xb9, 0xa9, 0xfe, 0x31, 0x8f, 0x2a, 0xe3, - 0x50, 0x38, 0xc3, 0x4d, 0x7a, 0xad, 0xa5, 0x6f, 0xcb, 0xc4, 0xd6, 0x8e, 0xee, 0x58, 0x8d, 0xbe, - 0x76, 0xc7, 0x7f, 0x89, 0x1e, 0x92, 0x9b, 0xdb, 0x1b, 0x47, 0xac, 0x60, 0x36, 0x86, 0x91, 0xc7, - 0x36, 0x1a, 0xdf, 0x88, 0x7a, 0x35, 0xeb, 0xcb, 0xae, 0xec, 0x98, 0x1e, 0x87, 0x81, 0x37, 0xd4, - 0xbf, 0x80, 0x53, 0x63, 0x98, 0x37, 0x99, 0x7e, 0x89, 0x86, 0x9d, 0x0d, 0x9b, 0x92, 0x86, 0x20, - 0x6f, 0xb6, 0x22, 0xad, 0x56, 0x7f, 0xaa, 0xad, 0x3b, 0x58, 0x96, 0x6a, 0xde, 0xb3, 0x56, 0xd2, - 0xda, 0x05, 0xc2, 0xab, 0xcb, 0x93, 0xdf, 0xd1, 0x41, 0xeb, 0xfd, 0x07, 0x16, 0x15, 0x9d, 0x36, - 0xe8, 0x35, 0x75, 0xbf, 0x0c, 0xe9, 0x07, 0xd1, 0xe2, 0xb7, 0xb3, 0x2c, 0x68, 0x65, 0x35, 0x7c, - 0x4f, 0xd4, 0x8b, 0xc6, 0x03, 0x15, 0x67, 0x41, 0xf9, 0x52, 0x34, 0x8f, 0xba, 0x6f, 0x98, 0xe4, - 0x8c, 0x93, 0x6e, 0xed, 0x0e, 0x0e, 0xa7, 0x6d, 0x60, 0xda, 0x8f, 0xbb, 0x05, 0x79, 0x91, 0xa9, - 0x26, 0x79, 0x9f, 0xca, 0x44, 0xcd, 0x34, 0x45, 0x2e, 0x25, 0x70, 0xb2, 0x00, 0x59, 0xe7, 0x12, - 0x22, 0x8b, 0xc9, 0x28, 0xa2, 0x81, 0x60, 0x14, 0xed, 0x19, 0xa7, 0x80, 0x04, 0x49, 0x45, 0x7e, - 0xe3, 0xd6, 0x8a, 0x53, 0x4f, 0xcd, 0xd7, 0x09, 0xce, 0x29, 0x65, 0x6f, 0x41, 0xb8, 0x3b, 0xb8, - 0x3b, 0xbd, 0x4e, 0xe6, 0x88, 0xd0, 0x80, 0x99, 0x16, 0xa6, 0xc8, 0xc1, 0xa8, 0xac, 0x82, 0x26, - 0xd2, 0x11, 0xdd, 0x63, 0xfc, 0xa4, 0xc7, 0x64, 0x36, 0xd4, 0xc7, 0xf2, 0xd2, 0xdb, 0x1d, 0xf8, - 0x38, 0x51, 0x30, 0xb6, 0xd2, 0x0a, 0xd5, 0xb0, 0xc6, 0x9c, 0xe4, 0x96, 0x68, 0x19, 0x7b, 0x1c, - 0xfd, 0x56, 0x54, 0x8c, 0x62, 0x81, 0xc8, 0xea, 0x9e, 0xc2, 0xb6, 0x10, 0x56, 0x35, 0x8c, 0x08, - 0x5a, 0x94, 0xd4, 0xd2, 0x4f, 0xee, 0xaa, 0x7a, 0x75, 0x4b, 0xbc, 0x46, 0x3a, 0xb4, 0x5f, 0xc1, - 0xe8, 0x0a, 0xc4, 0x96, 0x14, 0xac, 0xdd, 0xfc, 0xa9, 0xbc, 0x49, 0xe1, 0x5b, 0xe9, 0xfa, 0x88, - 0xe2, 0x08, 0x0c, 0x51, 0xfe, 0xc4, 0x2b, 0x7c, 0x2c, 0xff, 0x7f, 0xc0, 0xcc, 0x44, 0xa4, 0xf1, - 0x9b, 0xa8, 0x7e, 0xf6, 0xc3, 0x5c, 0xaf, 0xed, 0x38, 0x91, 0xbe, 0xa1, 0x7c, 0xcb, 0xf0, 0xbf, - 0x39, 0x28, 0x3f, 0x28, 0x34, 0xcb, 0xc6, 0xb0, 0xfc, 0x7f, 0x46, 0x8a, 0x5f, 0x42, 0x05, 0xd2, - 0xa3, 0xb7, 0x8b, 0x14, 0x4e, 0xd4, 0x63, 0x4b, 0xf1, 0x93, 0x52, 0x0d, 0x0b, 0xde, 0x06, 0x99, - 0x63, 0x40, 0xba, 0xa1, 0xda, 0x29, 0xef, 0x09, 0x25, 0x1e, 0x17, 0x44, 0x02, 0xa2, 0x32, 0x4f, - 0xeb, 0xfc, 0x2f, 0x2c, 0x72, 0x92, 0x3e, 0xbb, 0xed, 0xf4, 0x44, 0x87, 0xe3, 0x65, 0x74, 0x2f, - 0x2b, 0xeb, 0x29, 0x25, 0x7a, 0x9b, 0x57, 0xdb, 0x57, 0xb2, 0x1e, 0xa7, 0x8f, 0x06, 0xb9, 0x6b, - 0x89, 0xed, 0x51, 0x0c, 0x0c, 0xe8, 0xaa, 0x8f, 0xfb, 0x77, 0xea, 0x1b, 0x83, 0xe7, 0x8a, 0x94, - 0xba, 0x5b, 0x9b, 0xee, 0xa0, 0x37, 0x02, 0x77, 0x2f, 0x04, 0x67, 0x0c, 0xed, 0x4e, 0xc2, 0xf7, - 0xdf, 0xb4, 0xf6, 0xb1, 0x06, 0x80, 0xaf, 0xb2, 0x4c, 0x77, 0xe9, 0xca, 0x38, 0xab, 0x4a, 0x3b, - 0x8b, 0xcf, 0x47, 0x8c, 0x3a, 0xa1, 0x4c, 0x4c, 0x14, 0x70, 0xab, 0x23, 0x5c, 0xee, 0x06, 0x1c, - 0x3d, 0x47, 0xa2, 0xf1, 0x30, 0x62, 0x41, 0x58, 0x42, 0xef, 0x5d, 0x43, 0x58, 0x87, 0x16, 0x5c, - 0x3e, 0xc7, 0x9d, 0x06, 0x47, 0x8e, 0x93, 0x46, 0x7c, 0xf2, 0xba, 0x4d, 0x8c, 0x61, 0x30, 0x8a, - 0x2b, 0xf3, 0xde, 0x18, 0x83, 0x22, 0x7c, 0xc1, 0x8b, 0x10, 0xb6, 0x8e, 0x42, 0x71, 0xe8, 0xe7, - 0x7e, 0xe4, 0x27, 0xb4, 0x73, 0xa1, 0x61, 0xf6, 0x7b, 0x0a, 0xcf, 0x4b, 0x42, 0x20, 0x5c, 0x20, - 0xca, 0xd7, 0x37, 0xb8, 0xb6, 0x48, 0x43, 0x80, 0x00, 0xf9, 0x39, 0x7d, 0x1c, 0xc0, 0xd3, 0xa1, - 0x38, 0x3b, 0x3c, 0xe7, 0x80, 0xea, 0x0e, 0x02, 0xaa, 0x2f, 0xdd, 0x30, 0x2c, 0xbc, 0x14, 0xed, - 0xf9, 0xc6, 0x0a, 0x7b, 0x24, 0xe2, 0xaa, 0xd5, 0xd2, 0xa2, 0x66, 0x9a, 0xae, 0x4a, 0xbb, 0xfe, - 0x57, 0x57, 0x2a, 0x83, 0xf3, 0xbd, 0xc1, 0x88, 0xde, 0xaf, 0x9e, 0x50, 0x07, 0x30, 0x32, 0xb9, - 0x9d, 0x32, 0xe0, 0x56, 0x99, 0x29, 0x07, 0xe7, 0xab, 0x2d, 0x20, 0x76, 0xc2, 0x79, 0x22, 0x09, - 0xe3, 0x7d, 0x35, 0x1e, 0xdf, 0x30, 0x74, 0x85, 0xc0, 0x86, 0xeb, 0x5d, 0xc0, 0xb6, 0x19, 0x5b, - 0xae, 0x0f, 0x8d, 0xbe, 0x0f, 0xe5, 0xbf, 0x07, 0x55, 0xf2, 0xea, 0x0f, 0x17, 0x0a, 0xee, 0xe1, - 0xc2, 0x00, 0xb0, 0x74, 0x04, 0x3a, 0xe5, 0xde, 0x15, 0x70, 0x50, 0x19, 0x4e, 0x41, 0x82, 0x54, - 0xfa, 0x70, 0x85, 0xf8, 0xef, 0x3c, 0xc9, 0x70, 0xbf, 0x3e, 0xba, 0xb0, 0xa9, 0xa5, 0xb9, 0x18, - 0xd9, 0x1e, 0xcd, 0x07, 0xb2, 0x2c, 0xb1, 0xdf, 0xdc, 0x32, 0x4c, 0xab, 0x2d, 0x3e, 0xbe, 0xa1, - 0x9e, 0x3f, 0xe0, 0x2f, 0x5a, 0xe8, 0xb2, 0x49, 0xc9, 0x1e, 0x44, 0x3a, 0x58, 0xa4, 0x81, 0x75, - 0x1c, 0x0b, 0xd6, 0x41, 0xf2, 0xdb, 0xaa, 0x87, 0x34, 0x4f, 0x48, 0x89, 0xb6, 0x18, 0x89, 0xf6, - 0xe6, 0x54, 0x8f, 0x21, 0x45, 0x5a, 0x4c, 0x91, 0x9f, 0x1b, 0x47, 0x18, 0x54, 0x0d, 0xd6, 0x80, - 0xef, 0xb1, 0x52, 0xce, 0x59, 0x02, 0x15, 0x97, 0x80, 0x14, 0x68, 0x09, 0x80, 0x86, 0xf4, 0x67, - 0xe5, 0x46, 0x57, 0x2a, 0x3d, 0x2b, 0x0c, 0xe9, 0x90, 0x43, 0x97, 0xc3, 0x0c, 0x70, 0x02, 0x73, - 0x90, 0x6a, 0xf0, 0x2e, 0xd1, 0x3a, 0x36, 0x4f, 0x10, 0x81, 0x8c, 0x64, 0x0c, 0x23, 0xe7, 0xf0, - 0x60, 0x28, 0xd7, 0xd1, 0x9b, 0xd3, 0x93, 0xc3, 0x03, 0x57, 0xc4, 0x19, 0xff, 0xd6, 0x4c, 0xfd, - 0xf6, 0xe0, 0xd5, 0x2b, 0x57, 0x4e, 0xa1, 0x3b, 0x31, 0x04, 0x99, 0xcb, 0xcc, 0x32, 0xb3, 0x72, - 0xe1, 0x2b, 0x01, 0xaf, 0x20, 0x66, 0x85, 0x93, 0xb8, 0x9f, 0x2c, 0x86, 0xe2, 0x7b, 0x73, 0xe3, - 0x63, 0x5c, 0x09, 0x13, 0x0e, 0x91, 0x66, 0xaf, 0xc0, 0x1f, 0x88, 0x7c, 0x08, 0x20, 0xdc, 0xcf, - 0x18, 0x00, 0xea, 0x51, 0x7e, 0x11, 0x9b, 0x1a, 0x17, 0x80, 0x93, 0x02, 0xab, 0x15, 0xf9, 0x12, - 0x32, 0x3e, 0x16, 0x1b, 0x1d, 0x4a, 0x44, 0xb8, 0xb6, 0xd1, 0xc2, 0x63, 0x4e, 0x35, 0xe5, 0x47, - 0xaa, 0xbc, 0x5c, 0xc1, 0xb9, 0xf2, 0x45, 0x02, 0xfc, 0x30, 0x3f, 0x39, 0xcb, 0x99, 0x9f, 0x44, - 0xa2, 0x78, 0x51, 0xdd, 0x8b, 0x5d, 0xb4, 0x9f, 0xc9, 0x22, 0x71, 0x80, 0xa4, 0x93, 0x9e, 0xb1, - 0xdb, 0x68, 0x77, 0x14, 0x69, 0xe0, 0xb6, 0xa3, 0xcd, 0x53, 0x22, 0x1a, 0x85, 0xd5, 0x8e, 0xb0, - 0x73, 0x10, 0xe3, 0x15, 0x79, 0xa6, 0xad, 0xc3, 0x05, 0x25, 0xf3, 0xd4, 0x44, 0x22, 0xb2, 0xd4, - 0x8a, 0x2f, 0xcb, 0x12, 0xca, 0x1d, 0x84, 0x61, 0x84, 0x1b, 0xb0, 0x89, 0xfb, 0x6e, 0xff, 0xb5, - 0x3b, 0xe4, 0xef, 0x2b, 0x6c, 0x5d, 0x17, 0x9e, 0x4f, 0xc2, 0xf0, 0x6a, 0x45, 0xc3, 0x30, 0x9b, - 0x1e, 0x05, 0x93, 0x6c, 0x37, 0x74, 0xdf, 0x4a, 0x94, 0x36, 0x07, 0x8b, 0x03, 0x76, 0x4b, 0x0a, - 0xfd, 0xa4, 0xef, 0x0e, 0xa9, 0xa2, 0x54, 0xe0, 0xc8, 0xb8, 0xef, 0x72, 0x27, 0x87, 0x81, 0x95, - 0x46, 0x75, 0x2b, 0x9c, 0x39, 0x96, 0x63, 0x1f, 0x4e, 0x5f, 0xb8, 0xa9, 0xe8, 0x50, 0x92, 0x60, - 0x49, 0xf0, 0x87, 0xbe, 0x19, 0x3a, 0x16, 0xd7, 0x5b, 0xba, 0xa2, 0x21, 0xee, 0x87, 0x78, 0x08, - 0x05, 0xf9, 0xad, 0xb9, 0x03, 0xca, 0xac, 0xc3, 0x45, 0x66, 0x9b, 0x1b, 0x09, 0xc2, 0xd0, 0x26, - 0x2c, 0xfb, 0xb0, 0x79, 0xd9, 0xe7, 0x89, 0x52, 0xc6, 0x3f, 0x71, 0xd3, 0xf8, 0xa7, 0xca, 0xa4, - 0x4d, 0x7f, 0xe2, 0x4d, 0x4c, 0x7f, 0xb4, 0x01, 0xde, 0x6d, 0x3a, 0x63, 0xc7, 0x14, 0xb4, 0xc0, - 0x41, 0x13, 0x1c, 0xec, 0x91, 0xc2, 0x62, 0xb9, 0xdd, 0x26, 0xc8, 0xa2, 0x63, 0x85, 0xcb, 0xe1, - 0xc7, 0x5f, 0x64, 0x13, 0xb4, 0xf2, 0x9a, 0x56, 0xfc, 0x7c, 0xac, 0x11, 0x3b, 0xa2, 0x84, 0x55, - 0x54, 0x9b, 0x21, 0xa2, 0xa8, 0x15, 0x75, 0xd8, 0x23, 0x5a, 0x6d, 0x91, 0x4a, 0x02, 0x4a, 0xf5, - 0x83, 0xb0, 0xe6, 0x1a, 0x8a, 0x00, 0xf5, 0xe2, 0xba, 0x8f, 0x53, 0xf6, 0xcb, 0x51, 0x2f, 0xab, + 0xbe, 0xb6, 0xbb, 0x6d, 0x1b, 0xd9, 0xff, 0xfd, 0xff, 0x53, 0xd0, 0x6c, 0xd7, 0x16, 0x6b, 0x5a, + 0xa6, 0xec, 0x24, 0x9b, 0x48, 0xa6, 0x74, 0x52, 0x37, 0xdd, 0xe6, 0x6c, 0x36, 0xf5, 0xd6, 0xe9, + 0x76, 0xf7, 0x78, 0x7d, 0xd6, 0xb4, 0x44, 0xd9, 0xbc, 0xa1, 0x49, 0x46, 0xa4, 0x1f, 0x72, 0x1d, + 0x7d, 0xf7, 0x3b, 0xbf, 0x01, 0x40, 0x02, 0x7c, 0x90, 0xe4, 0x74, 0xf7, 0xde, 0x17, 0xff, 0x9e, + 0xc6, 0x92, 0x40, 0x00, 0xc4, 0xc3, 0x60, 0x30, 0x18, 0xcc, 0xfc, 0xe6, 0x12, 0x89, 0xcf, 0x9e, + 0x3d, 0x33, 0x12, 0xa7, 0x48, 0x3c, 0x3c, 0x3c, 0x34, 0x12, 0x71, 0x42, 0xfd, 0x66, 0x30, 0x18, + 0x18, 0x89, 0x33, 0x24, 0x1e, 0x1c, 0x1c, 0x18, 0x89, 0xb8, 0xb2, 0xfc, 0x66, 0xfa, 0xcc, 0x4c, + 0x4c, 0x6d, 0x79, 0x4b, 0x7f, 0xe0, 0x3d, 0x73, 0xad, 0xea, 0x8f, 0xd7, 0x7f, 0xe5, 0x18, 0x19, + 0xf3, 0x4b, 0x39, 0x4a, 0x87, 0xb5, 0xe4, 0x6b, 0x99, 0xfe, 0xc2, 0x48, 0x2f, 0x2e, 0x3b, 0x2a, + 0x26, 0x56, 0xd1, 0x63, 0xda, 0x76, 0x9c, 0x5a, 0x81, 0x40, 0x95, 0x18, 0xd0, 0x2e, 0x69, 0x55, + 0x7f, 0xba, 0x4b, 0x5c, 0x6f, 0xf4, 0x8e, 0x26, 0x7f, 0x8b, 0x6e, 0xae, 0x2a, 0xf6, 0x26, 0xb4, + 0x75, 0x3e, 0x9d, 0x15, 0x60, 0x9a, 0xd3, 0xf3, 0xfa, 0x2f, 0xa9, 0xd0, 0xb0, 0x4e, 0x33, 0xf5, + 0x11, 0x66, 0x9a, 0x81, 0x29, 0x44, 0x83, 0x66, 0xea, 0xc3, 0x7e, 0xd8, 0x36, 0x6b, 0xcf, 0xda, + 0xe6, 0x97, 0x69, 0xe6, 0xf9, 0xf3, 0xe7, 0x4d, 0x9a, 0x79, 0xf1, 0xe2, 0xc5, 0x86, 0x34, 0x53, + 0x27, 0x4e, 0xa6, 0x99, 0xe9, 0x74, 0xda, 0xa4, 0x99, 0xfa, 0x2a, 0x98, 0xb5, 0x11, 0x3c, 0xd3, + 0xcc, 0xcb, 0xc3, 0x41, 0x3b, 0xcd, 0x1c, 0xd2, 0x58, 0xab, 0x7f, 0x1d, 0x04, 0x43, 0x43, 0xd4, + 0x4a, 0x30, 0x94, 0xfe, 0xbc, 0x83, 0x60, 0xf4, 0x5a, 0x37, 0xa1, 0x16, 0xef, 0x80, 0x08, 0xa5, + 0xfc, 0xb3, 0x01, 0xb5, 0x3c, 0x1f, 0xb8, 0x96, 0xfa, 0xf7, 0x55, 0xa4, 0x72, 0x9b, 0xe0, 0xd8, + 0xac, 0x71, 0x1b, 0x40, 0x4c, 0x7e, 0x7f, 0x05, 0x6e, 0x43, 0x67, 0x12, 0xab, 0xed, 0x68, 0x70, + 0x79, 0x65, 0xc3, 0x99, 0x7d, 0x56, 0x07, 0xe7, 0xa4, 0xfa, 0x6d, 0xbe, 0xa5, 0x4c, 0xfa, 0xf9, + 0x62, 0xea, 0x87, 0xae, 0x4d, 0x0c, 0x33, 0x74, 0xd4, 0xa6, 0x9a, 0xfb, 0x4a, 0x6e, 0x93, 0x5b, + 0x25, 0x49, 0xea, 0xfa, 0x66, 0x29, 0x2d, 0xe8, 0x3c, 0xdf, 0xa7, 0x07, 0xb4, 0x71, 0x9e, 0x79, + 0xe7, 0x13, 0x3e, 0x70, 0xff, 0x48, 0x92, 0xdc, 0x3f, 0xc2, 0x00, 0xe0, 0x96, 0xe5, 0x13, 0x00, + 0x62, 0xcb, 0xda, 0x7a, 0xa9, 0x2b, 0x93, 0xe9, 0x04, 0x29, 0xbf, 0x09, 0x5f, 0xdc, 0x32, 0x47, + 0x40, 0xcd, 0xc2, 0xae, 0xc2, 0x3f, 0x22, 0x06, 0x16, 0xc4, 0x37, 0x67, 0x57, 0x66, 0x87, 0xc3, + 0x6e, 0x3e, 0x86, 0x51, 0x51, 0x7e, 0xc4, 0x71, 0xd8, 0x44, 0x0f, 0xe4, 0xd3, 0x67, 0xe7, 0xce, + 0x32, 0x69, 0x81, 0xd3, 0xc4, 0x48, 0x91, 0x1c, 0xe7, 0x8f, 0x1f, 0x45, 0xf7, 0x34, 0x4d, 0x46, + 0x7d, 0xab, 0xbb, 0xbc, 0xa2, 0x16, 0xe4, 0xef, 0x83, 0xf7, 0xbd, 0xdc, 0xe1, 0xf0, 0xcd, 0xfd, + 0x17, 0xb0, 0x7c, 0x11, 0x53, 0x21, 0xb1, 0x72, 0xfd, 0xbc, 0x4c, 0xa9, 0xac, 0x38, 0xde, 0xe2, + 0x04, 0xe2, 0x5f, 0xd0, 0x39, 0xab, 0xf7, 0xed, 0x23, 0xb7, 0x6a, 0xe9, 0x5c, 0xd0, 0xe0, 0x0b, + 0xd3, 0x32, 0x73, 0xd6, 0x4e, 0x3f, 0x46, 0xc9, 0xf1, 0xe9, 0xa9, 0xd2, 0xb9, 0x35, 0x26, 0x0e, + 0x51, 0x86, 0x85, 0xc8, 0xb9, 0x26, 0xee, 0xd2, 0x75, 0x48, 0x1d, 0x83, 0x5b, 0x07, 0x66, 0xb9, + 0x03, 0x89, 0x15, 0x41, 0x9d, 0x68, 0xb6, 0x13, 0x76, 0x39, 0x72, 0x93, 0xfe, 0x82, 0x0e, 0xe1, + 0x36, 0xb7, 0x3e, 0x27, 0xf9, 0x1e, 0x92, 0x80, 0x88, 0x73, 0x6d, 0x23, 0x22, 0xf5, 0xfe, 0x14, + 0xf8, 0xc1, 0x49, 0xff, 0x7a, 0x11, 0xce, 0xfd, 0x1e, 0xed, 0xf5, 0x13, 0x15, 0x7d, 0xd8, 0xde, + 0x65, 0x2d, 0xc4, 0xd0, 0xee, 0x23, 0xb4, 0xd7, 0x7e, 0x4e, 0x5d, 0xe8, 0xcb, 0xcc, 0x37, 0xe1, + 0x2c, 0x0a, 0x7c, 0x3b, 0x60, 0xff, 0x00, 0x03, 0x3a, 0xd6, 0x08, 0x75, 0x9a, 0x26, 0x00, 0x33, + 0x85, 0xb9, 0x01, 0x91, 0x34, 0x1d, 0x4e, 0xfd, 0x7a, 0x0c, 0xa7, 0x32, 0x50, 0x13, 0x8c, 0x89, + 0xa0, 0xe2, 0xf0, 0xdc, 0x1e, 0xbf, 0xd4, 0x37, 0x84, 0x8e, 0x2b, 0x25, 0x74, 0x50, 0xea, 0x5b, + 0xa1, 0xfb, 0x93, 0xd9, 0xa8, 0xfc, 0x4d, 0x46, 0x5d, 0xfe, 0x91, 0xea, 0xb7, 0xa0, 0x07, 0xe8, + 0x5b, 0x27, 0x71, 0xc8, 0x28, 0x5d, 0x09, 0xad, 0x21, 0xeb, 0xb7, 0x77, 0x6f, 0x7e, 0xb0, 0xde, + 0x9e, 0x6c, 0xd9, 0x5d, 0x62, 0x8c, 0xa8, 0xd1, 0xe5, 0xda, 0x1c, 0x47, 0x9d, 0x11, 0xda, 0xdf, + 0x5e, 0x89, 0x3c, 0x0e, 0x8e, 0x0c, 0xa0, 0x24, 0xff, 0x26, 0x5c, 0x5c, 0x85, 0x3f, 0x84, 0x61, + 0x86, 0x5f, 0x42, 0x12, 0x62, 0x5a, 0xc3, 0x8c, 0x3a, 0x2e, 0x2b, 0x3c, 0x4e, 0x7e, 0x2d, 0xa2, + 0x18, 0x0a, 0xc9, 0x52, 0x7e, 0x70, 0x4b, 0xd1, 0x82, 0x0f, 0xc7, 0x93, 0x79, 0x08, 0xbd, 0xde, + 0xaa, 0xc1, 0xbf, 0x46, 0x80, 0x37, 0xca, 0xda, 0xff, 0xaf, 0x1c, 0xd0, 0x32, 0x8f, 0x37, 0x61, + 0x71, 0x9d, 0xce, 0x84, 0x5e, 0x77, 0xe9, 0x30, 0xbc, 0x68, 0x8f, 0xa8, 0x3d, 0xe4, 0xe7, 0x3d, + 0xa7, 0x4a, 0x79, 0xac, 0x5f, 0xa8, 0x52, 0xbb, 0x71, 0x0c, 0x87, 0x92, 0xb8, 0x2f, 0x60, 0x35, + 0x0d, 0x4d, 0x32, 0x54, 0x25, 0x29, 0x91, 0x79, 0x9c, 0x5e, 0x11, 0xb1, 0xe9, 0x6f, 0xb5, 0x66, + 0x69, 0x98, 0x5b, 0x7c, 0x53, 0x08, 0x47, 0xd7, 0x88, 0xce, 0x5e, 0xa8, 0xd2, 0x4a, 0xe7, 0x56, + 0x99, 0xcf, 0x92, 0x1a, 0xba, 0x9c, 0x89, 0x3e, 0x9c, 0xf5, 0x6d, 0xbe, 0xcf, 0x99, 0x47, 0x09, + 0x91, 0xca, 0xe7, 0x9e, 0x6e, 0x81, 0x22, 0x79, 0x99, 0x26, 0xb3, 0x5d, 0x21, 0xde, 0x1b, 0x5b, + 0x00, 0x74, 0x3d, 0xab, 0xc6, 0x6d, 0x0a, 0x6c, 0x6c, 0x7d, 0x61, 0xd9, 0x20, 0xcf, 0x63, 0xa2, + 0x4e, 0xa7, 0x3c, 0x29, 0xb4, 0xf1, 0xc7, 0x69, 0x4e, 0xc7, 0x81, 0x2a, 0xce, 0x72, 0x8b, 0x85, + 0x0b, 0xd4, 0xeb, 0x8d, 0xa5, 0x2e, 0xcc, 0x35, 0x65, 0x2c, 0x22, 0x11, 0xf5, 0xcd, 0x1e, 0x09, + 0x4d, 0xd7, 0x69, 0x9c, 0x16, 0x70, 0x60, 0xba, 0xe5, 0xb3, 0xee, 0x87, 0xe0, 0x12, 0xab, 0x2f, + 0x47, 0x0a, 0x4f, 0xbe, 0x9c, 0x7b, 0x3e, 0xdd, 0xf7, 0xa9, 0xe3, 0xba, 0xc9, 0xb6, 0x3e, 0x1c, + 0xca, 0x7d, 0xa8, 0xc7, 0x7a, 0x7b, 0x2d, 0xbf, 0x69, 0x88, 0x2e, 0xde, 0x72, 0x22, 0xac, 0x3c, + 0x73, 0x47, 0x2a, 0x99, 0xba, 0xc9, 0xf5, 0xe4, 0x06, 0x6a, 0xa2, 0x0a, 0x60, 0xd6, 0x98, 0x82, + 0xfa, 0x91, 0x5c, 0x5c, 0x1a, 0xb8, 0xcf, 0x3d, 0xec, 0x50, 0x4d, 0x9e, 0x7a, 0x57, 0x1e, 0xfc, + 0x55, 0x6b, 0xda, 0x15, 0x02, 0xa8, 0x46, 0x9d, 0x1d, 0x5a, 0x66, 0xe0, 0xae, 0xdc, 0xe7, 0x14, + 0x73, 0xf5, 0x5c, 0xbb, 0x58, 0x70, 0x2c, 0xed, 0xf6, 0x8e, 0x64, 0xd3, 0x1b, 0x1b, 0x00, 0x51, + 0xe9, 0xd5, 0x55, 0x1c, 0x9e, 0xb0, 0xba, 0x0f, 0xd7, 0x54, 0x32, 0x04, 0x40, 0xcb, 0xe1, 0xaf, + 0xfd, 0x72, 0xb5, 0x24, 0x8c, 0x18, 0x34, 0x9b, 0x3b, 0x71, 0x4b, 0x1f, 0x85, 0x26, 0x57, 0x0e, + 0xf3, 0xf7, 0xac, 0x1f, 0x86, 0xdd, 0x8a, 0xdb, 0x96, 0x57, 0xbf, 0xc9, 0x11, 0x6d, 0x13, 0x05, + 0x56, 0xe4, 0x16, 0x96, 0xfa, 0x7a, 0xde, 0x8a, 0x59, 0xd6, 0x08, 0xa8, 0xbc, 0x01, 0x98, 0x99, + 0x3b, 0xc1, 0xb1, 0x32, 0x52, 0xa4, 0x2a, 0x65, 0x5e, 0x8d, 0xe6, 0x13, 0x8b, 0x2f, 0xfa, 0x89, + 0x51, 0xab, 0x6c, 0xbe, 0xf6, 0x9d, 0x76, 0x02, 0x3a, 0xae, 0x4e, 0xa9, 0xa8, 0x15, 0x48, 0x7f, + 0x36, 0x9b, 0x0a, 0x0b, 0x0d, 0x2a, 0x50, 0x9c, 0xcf, 0xc2, 0xf3, 0x2a, 0xf7, 0xae, 0x5f, 0x66, + 0xd3, 0x9a, 0x99, 0x12, 0xaf, 0xa7, 0x46, 0x42, 0x0d, 0x03, 0xa7, 0x9d, 0x47, 0x51, 0x78, 0x7b, + 0x7b, 0xab, 0x80, 0x93, 0x00, 0x13, 0x26, 0x6d, 0x3a, 0xff, 0x3a, 0x16, 0xf5, 0xa0, 0xff, 0x7d, + 0xd1, 0x61, 0x5a, 0xa2, 0x37, 0x69, 0x5a, 0x90, 0x78, 0x04, 0xfa, 0xa0, 0x0c, 0x4d, 0xd5, 0x0e, + 0x49, 0x50, 0x91, 0xed, 0x8a, 0x4a, 0x1a, 0x2b, 0x2a, 0xd4, 0x0f, 0x95, 0xf9, 0x75, 0x7a, 0xff, + 0x21, 0x0d, 0xf2, 0xa2, 0x6c, 0x07, 0x4c, 0xa7, 0x5a, 0xa8, 0x2d, 0x4d, 0x12, 0xda, 0x72, 0x4a, + 0x92, 0x6b, 0x2c, 0x69, 0x21, 0x75, 0x4a, 0xd7, 0xd1, 0x66, 0xf9, 0x02, 0xef, 0x10, 0x7b, 0x69, + 0x19, 0x6d, 0x1e, 0x5b, 0x6a, 0x35, 0xbc, 0xc5, 0xc4, 0x0e, 0x61, 0x47, 0x41, 0x07, 0x4d, 0x34, + 0x8a, 0x8e, 0xd2, 0xb4, 0xff, 0x2c, 0xd4, 0x72, 0x93, 0xda, 0x62, 0x98, 0x60, 0x89, 0x06, 0x04, + 0x49, 0x74, 0x13, 0x88, 0xcb, 0x49, 0xa1, 0x29, 0x68, 0x3e, 0x10, 0xde, 0x69, 0xa2, 0xa0, 0xdf, + 0xb1, 0x74, 0xd7, 0x4e, 0xb0, 0x68, 0x8b, 0x0d, 0xfe, 0xeb, 0x1e, 0xbc, 0xf2, 0xbc, 0xda, 0xd8, + 0xb1, 0xe9, 0x87, 0x18, 0x40, 0xe2, 0x3d, 0xe5, 0x60, 0xda, 0xc7, 0x34, 0x5e, 0xa1, 0x3c, 0x1b, + 0xa7, 0x16, 0x9f, 0x9c, 0xad, 0x79, 0x40, 0x9b, 0xeb, 0x6c, 0xcb, 0xc6, 0x42, 0xd0, 0x4e, 0xbe, + 0xe8, 0xa6, 0x51, 0x4d, 0xe7, 0xe8, 0x69, 0x6d, 0xdd, 0x20, 0x4f, 0xd5, 0x07, 0x31, 0xae, 0xdc, + 0x89, 0x2a, 0xd6, 0x7b, 0x58, 0xfc, 0x72, 0x9b, 0x60, 0x74, 0x4e, 0x8b, 0x45, 0xb5, 0x48, 0xca, + 0xa8, 0xd4, 0x0c, 0x78, 0x58, 0x01, 0x04, 0xf7, 0x8a, 0xfd, 0x97, 0xc0, 0x61, 0x04, 0xe2, 0xa7, + 0x96, 0xda, 0x2b, 0xf6, 0x38, 0xf9, 0xbb, 0xc4, 0x41, 0x0c, 0x17, 0x2c, 0xf0, 0xf6, 0xc7, 0x7b, + 0x78, 0xfa, 0x5d, 0xee, 0xec, 0xbf, 0x60, 0xb4, 0x91, 0x64, 0x92, 0x88, 0x70, 0xa2, 0x03, 0x1f, + 0x3a, 0x1f, 0xda, 0xf3, 0x6c, 0xa8, 0xdc, 0x3f, 0xe7, 0xb6, 0x88, 0xf2, 0x39, 0xb4, 0x6d, 0x75, + 0x77, 0x96, 0xee, 0xfa, 0xc0, 0xb7, 0x9b, 0xe4, 0x65, 0x81, 0x9c, 0x36, 0xf7, 0xf4, 0x16, 0x84, + 0x82, 0x0f, 0x2a, 0x42, 0xb9, 0xdd, 0xad, 0x84, 0x04, 0x5b, 0x18, 0x74, 0xd0, 0x6a, 0xa3, 0x0a, + 0x48, 0xf2, 0x1c, 0x3f, 0x7f, 0x45, 0xab, 0x29, 0x11, 0x69, 0x31, 0x95, 0xe6, 0xfb, 0x53, 0xb7, + 0x38, 0x42, 0x53, 0x88, 0x0b, 0xf2, 0x73, 0x2d, 0xbf, 0x4c, 0x47, 0x4a, 0xb1, 0x07, 0x28, 0x51, + 0x2a, 0x92, 0x87, 0x38, 0x89, 0xa5, 0x9a, 0xf1, 0x59, 0x42, 0x1c, 0x22, 0xbd, 0x17, 0x96, 0x93, + 0xb8, 0x17, 0x97, 0x57, 0xc6, 0x17, 0x47, 0xc5, 0x62, 0x7c, 0x54, 0xcc, 0x84, 0xd9, 0x8f, 0x6f, + 0x7f, 0x0c, 0x3f, 0x17, 0x33, 0x7b, 0xfc, 0xed, 0x63, 0xb8, 0x3c, 0xda, 0x2f, 0x66, 0xfa, 0xa3, + 0xbb, 0x20, 0x16, 0x8f, 0x8a, 0x25, 0x89, 0xbb, 0xf2, 0xf1, 0x3e, 0x15, 0xbf, 0x30, 0x66, 0xe7, + 0x9d, 0x76, 0x6f, 0x73, 0x52, 0x42, 0x6e, 0x0d, 0xaa, 0x5d, 0x19, 0xd6, 0x9a, 0x7c, 0x79, 0xe2, + 0x14, 0x22, 0x4c, 0xe5, 0xee, 0x6e, 0x89, 0x9f, 0x3c, 0x3e, 0x78, 0xee, 0xb1, 0x6f, 0xec, 0x01, + 0x36, 0x21, 0xcd, 0x78, 0x8e, 0x58, 0xe7, 0xf4, 0xe3, 0xaf, 0x54, 0x65, 0x3b, 0x5f, 0x64, 0x52, + 0xba, 0xc8, 0xd0, 0xec, 0x68, 0x76, 0xe1, 0x88, 0x5b, 0xc1, 0xd1, 0x16, 0xbf, 0x86, 0xfd, 0xf5, + 0x3c, 0x01, 0x28, 0x4f, 0x2f, 0x9c, 0x74, 0x94, 0xbb, 0x0f, 0x68, 0x34, 0x1c, 0x6d, 0x99, 0xdb, + 0xf6, 0x70, 0xd3, 0xac, 0x17, 0xdb, 0xdf, 0xbc, 0xa2, 0x63, 0xf2, 0xc8, 0xfa, 0x99, 0xce, 0xf6, + 0x30, 0x23, 0x8d, 0x92, 0x2b, 0xeb, 0xdb, 0xc7, 0x8c, 0xd9, 0x74, 0xe1, 0x2c, 0xb7, 0xb4, 0x21, + 0x12, 0x89, 0xd5, 0xfd, 0xae, 0xb8, 0x14, 0x43, 0x3c, 0xdd, 0xf2, 0xd6, 0x95, 0x5b, 0x4d, 0x9c, + 0x18, 0x34, 0x40, 0xa4, 0x5d, 0xfe, 0x04, 0x24, 0x4c, 0x35, 0xa3, 0xf9, 0x49, 0x1c, 0x7c, 0xc6, + 0x3d, 0x90, 0x66, 0x00, 0x50, 0xe6, 0xcd, 0xe4, 0xb3, 0xed, 0xed, 0x46, 0x52, 0x3f, 0xcb, 0xb5, + 0xd6, 0x04, 0x59, 0xf4, 0xb7, 0x20, 0x56, 0xe7, 0x12, 0x95, 0x59, 0xda, 0x00, 0x10, 0x35, 0x8b, + 0x56, 0x36, 0x0c, 0xe0, 0xcb, 0x8c, 0x23, 0x2d, 0x98, 0x38, 0x40, 0x4d, 0xe8, 0xef, 0xb0, 0x37, + 0xa3, 0xbd, 0xb8, 0x08, 0x29, 0x2d, 0x71, 0xcb, 0xaf, 0x59, 0xf5, 0xf5, 0x53, 0x5c, 0x57, 0x19, + 0x16, 0x3a, 0x6f, 0xff, 0x14, 0xab, 0x21, 0xaa, 0xf5, 0x4a, 0xeb, 0xcc, 0xa7, 0x78, 0xa2, 0x7d, + 0xc7, 0x25, 0x56, 0x45, 0x2a, 0xd9, 0xf7, 0xd3, 0x8f, 0x25, 0xe1, 0xb5, 0x1c, 0x91, 0xa7, 0x38, + 0x1c, 0x61, 0xe3, 0x89, 0x85, 0xa1, 0x80, 0x08, 0x7c, 0xc0, 0xbf, 0xa8, 0x3c, 0x5f, 0x0f, 0x92, + 0x94, 0xf7, 0x8a, 0xff, 0x83, 0x04, 0x03, 0x64, 0xa2, 0xe3, 0xf4, 0xe6, 0x86, 0x84, 0x1d, 0x6c, + 0x28, 0xd9, 0x67, 0x48, 0x54, 0x3a, 0xcb, 0xcc, 0xa2, 0x70, 0x06, 0x76, 0x39, 0x8d, 0xa3, 0xec, + 0x32, 0x0d, 0x16, 0xc4, 0x2b, 0xb5, 0xee, 0x64, 0x3c, 0xc1, 0xc2, 0xd6, 0xae, 0x9c, 0x76, 0x5c, + 0xdb, 0x12, 0x85, 0x8d, 0x80, 0xd1, 0xdf, 0x4b, 0x56, 0x09, 0x70, 0x50, 0x36, 0x0b, 0xf1, 0x74, + 0x3c, 0xf0, 0x98, 0x20, 0xc0, 0x86, 0x4b, 0x40, 0xfc, 0xa5, 0x10, 0x82, 0x76, 0x8e, 0x66, 0xd1, + 0x9d, 0x5a, 0xa9, 0x79, 0x78, 0x65, 0x4d, 0xed, 0xf1, 0xce, 0x28, 0xdf, 0x85, 0x6d, 0xca, 0x3f, + 0xd2, 0x5b, 0xeb, 0x3a, 0xb8, 0x0b, 0x49, 0x76, 0x97, 0x8d, 0xc9, 0xad, 0xcf, 0x61, 0xb1, 0x45, + 0x8c, 0xe8, 0x34, 0x5d, 0x2c, 0x3e, 0xbb, 0x16, 0x09, 0xd9, 0x8b, 0xd0, 0xba, 0x87, 0xd1, 0x1f, + 0x08, 0x2b, 0xbf, 0x0d, 0x2d, 0x19, 0xcd, 0xc2, 0xfa, 0x4c, 0xac, 0x4a, 0x95, 0xa2, 0x2d, 0x00, + 0xbb, 0x2c, 0xd5, 0x6a, 0x1f, 0x5d, 0x12, 0xdb, 0xa0, 0x7f, 0xb6, 0x2b, 0xde, 0xf1, 0x13, 0xad, + 0x7a, 0xa2, 0x7d, 0x55, 0x55, 0x94, 0x5b, 0xd8, 0x69, 0x6f, 0x33, 0x59, 0xd4, 0xa2, 0x9d, 0x3c, + 0x80, 0x68, 0x12, 0x20, 0xe1, 0x2e, 0x4a, 0x6f, 0x73, 0x61, 0x99, 0x18, 0x0b, 0x33, 0x24, 0x2b, + 0xb8, 0xa3, 0x4d, 0x06, 0xf7, 0xfd, 0x7d, 0xd4, 0x6a, 0xfd, 0x33, 0xb1, 0x2c, 0xab, 0x77, 0x1a, + 0xdc, 0xa1, 0x09, 0x81, 0xaa, 0x04, 0x71, 0x93, 0xad, 0x6b, 0x92, 0x0d, 0x18, 0x27, 0x91, 0xda, + 0x3a, 0xb3, 0x52, 0xb9, 0xe0, 0x90, 0x14, 0xca, 0x77, 0x22, 0x28, 0xd0, 0x4f, 0xb2, 0x15, 0x81, + 0x6a, 0x07, 0xc4, 0x22, 0xca, 0x81, 0x5b, 0x29, 0xeb, 0x63, 0x92, 0xde, 0x13, 0xaf, 0x4a, 0xd3, + 0x99, 0xc5, 0x98, 0x00, 0x43, 0xee, 0xc5, 0xce, 0x11, 0x8e, 0xc3, 0x01, 0x1d, 0xa5, 0x2d, 0x3a, + 0x37, 0x33, 0x99, 0x80, 0xbf, 0xc9, 0xb4, 0x71, 0xd5, 0xae, 0xa3, 0xcb, 0xdb, 0xa2, 0xe0, 0x1d, + 0x90, 0x47, 0xfb, 0xb2, 0x48, 0x2c, 0xfa, 0xb7, 0x97, 0xd9, 0x74, 0xde, 0x25, 0x12, 0x98, 0x7e, + 0xf4, 0x6d, 0x49, 0x83, 0xf6, 0x98, 0x88, 0xe3, 0xb3, 0x41, 0x1a, 0x47, 0xfb, 0xa2, 0xf4, 0x78, + 0xc7, 0x71, 0x79, 0x20, 0xf7, 0x69, 0xe2, 0xc6, 0xad, 0xb7, 0x43, 0x38, 0x66, 0xd9, 0x3a, 0x9b, + 0xc9, 0xdd, 0x76, 0x21, 0x87, 0x29, 0x5a, 0x5a, 0x42, 0x24, 0x35, 0xc5, 0x83, 0x60, 0x2f, 0x24, + 0x3d, 0x09, 0xeb, 0x26, 0x69, 0x0f, 0x81, 0x1b, 0x6a, 0x9f, 0xcf, 0x0e, 0xfc, 0x7d, 0xec, 0x29, + 0xa3, 0x9f, 0x2c, 0x65, 0xcb, 0xb0, 0x50, 0x15, 0x83, 0xec, 0xab, 0x2e, 0xb0, 0xe9, 0x53, 0xc4, + 0x5b, 0x21, 0xc1, 0x1e, 0xaa, 0x24, 0x92, 0x18, 0x29, 0x69, 0xcb, 0x97, 0xcf, 0x49, 0x14, 0xac, + 0x32, 0x4a, 0xbe, 0x61, 0xef, 0x4b, 0xd2, 0x11, 0xe7, 0xd6, 0x11, 0xd1, 0x39, 0x93, 0xf0, 0x85, + 0x3c, 0xe5, 0x7e, 0xfb, 0xc8, 0xa7, 0xdc, 0xa5, 0x91, 0xed, 0xc2, 0x71, 0xc5, 0x81, 0xb8, 0xe8, + 0x3c, 0xe7, 0xf6, 0xe8, 0xf0, 0xf0, 0xf1, 0xcb, 0x97, 0xba, 0x24, 0xe3, 0x96, 0xe7, 0x5f, 0xed, + 0x00, 0x2c, 0x2e, 0xea, 0x43, 0xb7, 0xde, 0xb5, 0x8e, 0x03, 0xb0, 0x2e, 0x59, 0xa2, 0xf7, 0xfa, + 0x81, 0x18, 0x91, 0xb5, 0xb4, 0xd5, 0x2c, 0x6c, 0xac, 0xaa, 0xd3, 0xad, 0x43, 0x6f, 0xc3, 0x55, + 0x62, 0x25, 0xb2, 0x85, 0xc4, 0x46, 0xe0, 0xb0, 0xc3, 0xab, 0x14, 0x4d, 0x53, 0x71, 0x3e, 0xb2, + 0xbf, 0xbe, 0xf3, 0xcf, 0xce, 0xab, 0xab, 0x55, 0xd5, 0xb8, 0xbf, 0xbe, 0x2b, 0x39, 0x17, 0x71, + 0x07, 0x1a, 0x64, 0xca, 0xa8, 0x96, 0xbf, 0xe7, 0x3c, 0x86, 0x20, 0xd3, 0x4c, 0x51, 0x9e, 0xb8, + 0x97, 0xb0, 0xc7, 0x7f, 0xc5, 0x7d, 0x19, 0xcf, 0xf6, 0xd1, 0x7e, 0x46, 0xcb, 0x5e, 0x8c, 0xbd, + 0x67, 0x1e, 0x0a, 0xa8, 0x22, 0x76, 0xcd, 0xa7, 0x2a, 0x2e, 0x6a, 0x14, 0xfc, 0xf0, 0x90, 0x83, + 0x82, 0xad, 0x2c, 0x2f, 0x72, 0x9b, 0x89, 0x9f, 0xb6, 0xb9, 0xe4, 0xcc, 0x3b, 0x5f, 0x7e, 0x8a, + 0x2f, 0x35, 0xaa, 0x66, 0x51, 0x9d, 0xbd, 0xc5, 0xe5, 0x63, 0x67, 0x04, 0x79, 0x20, 0x39, 0x1b, + 0x9c, 0x2f, 0x4b, 0xba, 0xbe, 0x70, 0x77, 0x77, 0x8b, 0xf1, 0x33, 0x9e, 0x66, 0xcf, 0x0d, 0x25, + 0xaf, 0x20, 0x8e, 0x4b, 0x5b, 0x30, 0x63, 0xc6, 0x94, 0x29, 0x6e, 0x7b, 0x6f, 0xe8, 0x00, 0xa7, + 0x18, 0x0e, 0x77, 0x67, 0xd9, 0xb2, 0x34, 0x3e, 0xc5, 0xc6, 0xc2, 0xd0, 0x04, 0x85, 0xfa, 0x2c, + 0x87, 0x0c, 0xf5, 0xdc, 0x13, 0x44, 0xa0, 0xa9, 0x67, 0x56, 0x73, 0x5c, 0x47, 0x6d, 0x56, 0x62, + 0x93, 0xf1, 0xce, 0x15, 0x3d, 0x93, 0xbc, 0xae, 0x36, 0x43, 0x6a, 0xcd, 0x02, 0x5e, 0x07, 0x42, + 0x96, 0xa1, 0x13, 0x42, 0x9e, 0x2e, 0x8a, 0xde, 0xf4, 0x26, 0x3b, 0x71, 0xd4, 0xf4, 0x0a, 0xde, + 0x8c, 0x79, 0xd6, 0x4e, 0x9e, 0x3d, 0x69, 0x25, 0x92, 0xf0, 0x74, 0x88, 0x7d, 0x37, 0xca, 0xa5, + 0x4b, 0x42, 0x0c, 0x0f, 0xb0, 0x2a, 0x3c, 0x0a, 0xd4, 0xbc, 0x61, 0x25, 0xdc, 0xc6, 0xf0, 0xff, + 0x1a, 0x09, 0x5d, 0x2c, 0x72, 0xd2, 0xd6, 0x37, 0x4a, 0x69, 0x05, 0x13, 0x8d, 0x88, 0xf0, 0xba, + 0xa1, 0x9b, 0x42, 0x5d, 0x5a, 0xe2, 0x65, 0x14, 0x98, 0xec, 0xda, 0xce, 0x80, 0xb1, 0x2d, 0x67, + 0x39, 0x5c, 0xa6, 0x36, 0x4d, 0x59, 0xa9, 0x57, 0xc9, 0x22, 0xb6, 0xd9, 0xac, 0x15, 0xa3, 0x54, + 0x25, 0x13, 0x82, 0x5b, 0x5d, 0xb4, 0x56, 0x8c, 0xc0, 0xea, 0x56, 0x86, 0xbf, 0x1d, 0x24, 0x13, + 0x2e, 0x1d, 0xd4, 0x62, 0x08, 0x2e, 0x13, 0xfb, 0x28, 0x92, 0x75, 0xec, 0x44, 0x58, 0x6a, 0xcc, + 0x4a, 0xf1, 0x6d, 0x67, 0xbc, 0xfd, 0xcd, 0x43, 0x38, 0x38, 0x7c, 0x35, 0x3a, 0xda, 0x8f, 0xc6, + 0x90, 0xac, 0x97, 0x4a, 0xa2, 0xa2, 0x53, 0xb3, 0x68, 0x88, 0xe0, 0xc7, 0x56, 0x59, 0x85, 0x2d, + 0xaa, 0x08, 0xb9, 0x02, 0x6b, 0x1e, 0x2f, 0x48, 0x08, 0x53, 0x56, 0x4c, 0x67, 0xe1, 0xee, 0xc0, + 0xf3, 0xce, 0xe9, 0xb4, 0xf6, 0x90, 0x71, 0x6d, 0x62, 0x0c, 0xa8, 0xe1, 0x21, 0x65, 0xc2, 0xb3, + 0xa5, 0xd6, 0x6e, 0x51, 0xaa, 0xa7, 0x9e, 0x50, 0xc3, 0xd1, 0x9a, 0xc3, 0x57, 0xcf, 0xb9, 0x35, + 0xea, 0xbd, 0xe6, 0x00, 0x90, 0x98, 0xae, 0xaa, 0x2c, 0x6b, 0x1c, 0xeb, 0x0d, 0x15, 0xdf, 0x41, + 0xfc, 0x17, 0x6c, 0x2a, 0xb4, 0xbb, 0xbb, 0xa4, 0xc9, 0xdf, 0x84, 0xf3, 0x17, 0x9c, 0x1f, 0x1c, + 0x80, 0x99, 0x36, 0xf3, 0xdc, 0xed, 0x6d, 0x4f, 0x7e, 0xf6, 0xba, 0x6f, 0x68, 0xa1, 0xff, 0x01, + 0x03, 0x77, 0x5c, 0x45, 0xc9, 0x30, 0x3e, 0x5a, 0x91, 0xbf, 0x71, 0x9b, 0x2b, 0xc8, 0xdb, 0x51, + 0xaa, 0x26, 0xf0, 0x76, 0x45, 0xcd, 0x81, 0x88, 0x09, 0xad, 0xb4, 0x67, 0x01, 0x2e, 0x0a, 0x04, + 0xc5, 0xc2, 0xcd, 0x77, 0x54, 0x1b, 0x79, 0x92, 0xf4, 0xc5, 0xa0, 0xf2, 0x4f, 0x3e, 0x4c, 0x0a, + 0x6f, 0x52, 0x83, 0xa5, 0x7a, 0xce, 0x48, 0xea, 0xb8, 0x5e, 0xf7, 0x1c, 0x57, 0x67, 0x8b, 0xcd, + 0x35, 0x0e, 0x3b, 0x37, 0xdd, 0x52, 0x92, 0x51, 0x7c, 0xe7, 0x8b, 0x30, 0xbc, 0x0e, 0x83, 0x6c, + 0x7f, 0x10, 0x1e, 0x8e, 0xe8, 0x30, 0x5d, 0xda, 0x2d, 0x0e, 0x94, 0xc2, 0x08, 0x2e, 0x19, 0x33, + 0x5a, 0x23, 0xf7, 0x0b, 0x44, 0xa1, 0x7f, 0x2f, 0x5c, 0x1f, 0xa6, 0x5c, 0xe3, 0xcc, 0x1e, 0xe5, + 0x63, 0x2a, 0x38, 0x89, 0xfd, 0x5e, 0x4e, 0xff, 0xef, 0xfb, 0xf4, 0xc3, 0x29, 0xab, 0xa0, 0x67, + 0x40, 0xf8, 0x1f, 0x38, 0x74, 0xda, 0xb3, 0x5e, 0xdb, 0xc3, 0x7c, 0x0c, 0x89, 0x8c, 0xf3, 0x3e, + 0xf7, 0xbe, 0xd3, 0xac, 0x21, 0xf3, 0x7d, 0x3a, 0xbf, 0x20, 0xd3, 0xcd, 0x6b, 0x5b, 0x2d, 0x58, + 0xc1, 0xcf, 0xc3, 0xfe, 0x2d, 0xdf, 0xba, 0xb0, 0x49, 0xda, 0x19, 0x1d, 0xc6, 0xce, 0x89, 0x37, + 0xd7, 0x38, 0x0a, 0xf2, 0x38, 0xe0, 0xaa, 0x13, 0x3a, 0xd3, 0xa9, 0x93, 0x1b, 0x65, 0x65, 0xad, + 0x3f, 0x18, 0xc4, 0xd0, 0x4c, 0x17, 0x6f, 0x08, 0x7c, 0xfb, 0xcf, 0xb7, 0xb7, 0xd7, 0xc1, 0xc7, + 0x5b, 0x9b, 0xa4, 0x5b, 0x92, 0x8b, 0xfa, 0xac, 0x9b, 0xca, 0x7f, 0x8b, 0x8a, 0xeb, 0x9e, 0xed, + 0xf5, 0x07, 0x87, 0x7d, 0x68, 0xd1, 0x7a, 0x94, 0xef, 0x43, 0xfa, 0x31, 0x02, 0xff, 0xed, 0x4f, + 0x13, 0x4e, 0xc0, 0x17, 0xb1, 0xa6, 0xef, 0x88, 0x72, 0x51, 0x76, 0x69, 0xd9, 0xdf, 0x3e, 0x06, + 0xcb, 0x52, 0xce, 0x3b, 0x62, 0xcf, 0xb8, 0x72, 0x99, 0xd1, 0xbb, 0x0b, 0x9b, 0xa9, 0xfa, 0xdb, + 0xc7, 0x74, 0x29, 0x3e, 0x55, 0x83, 0xec, 0xef, 0x6f, 0xa3, 0x18, 0x97, 0x2f, 0xfd, 0x3b, 0x38, + 0xfc, 0xd6, 0x1e, 0x9e, 0xd2, 0x01, 0x22, 0x60, 0x2c, 0x4e, 0x26, 0x1a, 0x64, 0xbb, 0x8f, 0xe6, + 0x51, 0x3f, 0xe7, 0xf4, 0x5d, 0xfb, 0x0f, 0x16, 0x7b, 0x7a, 0x73, 0xda, 0x82, 0x8e, 0x1b, 0xae, + 0x6d, 0xcd, 0xbe, 0xbf, 0x71, 0xec, 0x46, 0x45, 0xbf, 0x66, 0x50, 0x02, 0xb0, 0x05, 0xbf, 0xae, + 0x10, 0xe8, 0xdf, 0x72, 0xba, 0xd3, 0xc8, 0xff, 0x23, 0xd1, 0x85, 0x05, 0xc2, 0x20, 0x32, 0xa1, + 0x4a, 0x3f, 0x7e, 0x2f, 0xab, 0xb4, 0xf4, 0x4c, 0x6f, 0xf2, 0x02, 0x5a, 0x18, 0x12, 0xe7, 0xa5, + 0xc9, 0xa2, 0xed, 0xc6, 0x2d, 0xd9, 0x7e, 0x5c, 0x10, 0x1b, 0xca, 0xad, 0x7d, 0x9c, 0xb3, 0xd3, + 0x84, 0xfb, 0xca, 0x24, 0x35, 0xcf, 0xf2, 0xc6, 0x7b, 0xff, 0xf2, 0xfa, 0xd8, 0x0a, 0x66, 0xb3, + 0x05, 0x87, 0x69, 0x0c, 0xfb, 0x37, 0xc1, 0xb4, 0xd9, 0xb4, 0x28, 0x0e, 0xf3, 0xcf, 0x39, 0x2d, + 0x42, 0xe4, 0x98, 0xe7, 0xfd, 0xdb, 0x5d, 0x7b, 0x1f, 0xa3, 0x40, 0x5f, 0x8b, 0x5d, 0xb4, 0x15, + 0x83, 0x62, 0xc6, 0xa8, 0xfe, 0x4e, 0x64, 0xdc, 0x17, 0x99, 0x1c, 0x06, 0x6a, 0x6d, 0x54, 0xfc, + 0x26, 0xb9, 0x8b, 0x16, 0x69, 0x72, 0xc3, 0x1d, 0x09, 0xfb, 0xc1, 0x62, 0x7a, 0xcd, 0xda, 0x08, + 0x98, 0x3e, 0x2d, 0x42, 0xfa, 0xca, 0x63, 0x1d, 0xdf, 0x47, 0x19, 0x60, 0x49, 0x45, 0x71, 0x12, + 0x79, 0x31, 0xd5, 0xc4, 0xa2, 0x5a, 0xec, 0x85, 0xee, 0x4c, 0xae, 0xd4, 0x5c, 0x92, 0xa7, 0xe1, + 0x15, 0xeb, 0x29, 0xf5, 0x65, 0x39, 0xd2, 0x0d, 0x3c, 0x4d, 0xab, 0x4e, 0x61, 0xcc, 0x39, 0x32, + 0x1d, 0x4e, 0x7b, 0xe0, 0x49, 0x57, 0x02, 0x47, 0x48, 0x77, 0x3d, 0x55, 0xd5, 0xec, 0xee, 0x96, + 0x0b, 0x99, 0x92, 0xe0, 0x89, 0x0a, 0xa6, 0x13, 0x57, 0xdb, 0x24, 0xb0, 0xf6, 0x9c, 0x91, 0x34, + 0x58, 0x3d, 0x8b, 0xcf, 0x7d, 0xc0, 0xc0, 0xd1, 0x5a, 0xf7, 0xf5, 0xb7, 0x33, 0xdb, 0xd4, 0x1a, + 0x13, 0xef, 0x0e, 0x1c, 0x37, 0x1e, 0xa3, 0x45, 0x78, 0x84, 0x86, 0xc5, 0xad, 0xfb, 0x9c, 0xad, + 0xb8, 0x39, 0x0b, 0x2c, 0xea, 0x01, 0x2b, 0x28, 0xac, 0x7c, 0x7a, 0xfd, 0x31, 0x56, 0x19, 0xac, + 0xed, 0xe4, 0x32, 0xcf, 0x46, 0xe5, 0x26, 0x05, 0xd5, 0xb2, 0x25, 0x74, 0xd2, 0x9c, 0x1b, 0x81, + 0x76, 0xab, 0x0d, 0x23, 0x5e, 0xd2, 0x81, 0x94, 0x77, 0x20, 0x81, 0x80, 0x43, 0xa9, 0x68, 0x44, + 0x0f, 0x4f, 0x1c, 0x9b, 0x66, 0x15, 0x08, 0x38, 0xf1, 0x44, 0x14, 0x45, 0x20, 0x70, 0xda, 0xc2, + 0xca, 0x8d, 0x28, 0x27, 0xc6, 0x6a, 0xb4, 0xe4, 0x26, 0x58, 0x88, 0xd6, 0x60, 0x07, 0xc2, 0xd3, + 0x72, 0x0b, 0xe2, 0x56, 0xab, 0x5f, 0xcd, 0x1d, 0xdc, 0xee, 0xd8, 0xdc, 0x92, 0xe2, 0xa1, 0x30, + 0xf6, 0x75, 0x34, 0xee, 0xcd, 0x83, 0x6c, 0xde, 0x18, 0xcd, 0x4b, 0x26, 0xf4, 0x8f, 0xce, 0x94, + 0x82, 0x04, 0x88, 0xcc, 0xe2, 0x35, 0xdb, 0xf4, 0x2c, 0x2a, 0xc4, 0x4e, 0xad, 0xed, 0xd2, 0xb1, + 0xd8, 0xa1, 0xf9, 0x87, 0xb9, 0x4d, 0xe3, 0x4d, 0x09, 0xca, 0x68, 0xcd, 0x28, 0xae, 0xd0, 0x8c, + 0x44, 0xb5, 0x02, 0x7b, 0xf4, 0xc1, 0xf4, 0x85, 0xb6, 0x47, 0x1b, 0xdb, 0xef, 0x46, 0x62, 0x42, + 0xdc, 0x21, 0x22, 0xc4, 0xad, 0xe2, 0x41, 0xdc, 0x2e, 0x1a, 0x34, 0x24, 0x83, 0xcd, 0xbb, 0x58, + 0x4d, 0x80, 0x4e, 0x30, 0x38, 0x86, 0xda, 0xa5, 0x38, 0x46, 0x73, 0x41, 0x1c, 0x94, 0xfe, 0x24, + 0x29, 0x43, 0xa4, 0x18, 0x15, 0x50, 0xbe, 0xe0, 0x16, 0x97, 0xaa, 0x37, 0x19, 0x44, 0x58, 0xdf, + 0x4e, 0xe7, 0x73, 0xda, 0x88, 0x82, 0x07, 0xb1, 0x96, 0xfc, 0xc3, 0x03, 0x11, 0xc6, 0xcb, 0xb7, + 0xb5, 0x49, 0x43, 0x23, 0x58, 0xeb, 0x7a, 0x9d, 0xc6, 0xc0, 0x0f, 0x21, 0xd6, 0x81, 0xeb, 0x53, + 0x50, 0x44, 0xbf, 0xdf, 0xb7, 0xf7, 0x5b, 0xa9, 0xe2, 0x32, 0xb7, 0xd7, 0x88, 0x60, 0xb4, 0xc7, + 0x42, 0x0f, 0x56, 0xae, 0xc4, 0x89, 0x1d, 0x4c, 0x8b, 0x66, 0x9f, 0x29, 0x9b, 0x29, 0x33, 0xd2, + 0xa4, 0x9e, 0xdc, 0x2f, 0xf4, 0xf1, 0xf5, 0x5e, 0xce, 0x3b, 0x45, 0x2f, 0xbe, 0x0c, 0x83, 0x21, + 0xa2, 0x15, 0xd1, 0xce, 0x72, 0x5f, 0xb5, 0x4a, 0x8d, 0xa1, 0xf6, 0xaa, 0xcb, 0x45, 0x54, 0x8e, + 0xa3, 0x1c, 0x3d, 0x2b, 0x8f, 0x72, 0x73, 0xe1, 0xe1, 0xfd, 0xdf, 0x2f, 0x22, 0xb5, 0xf6, 0xd2, + 0x84, 0xab, 0xf1, 0x6d, 0x79, 0x23, 0xb1, 0x08, 0x22, 0x81, 0x1c, 0xea, 0xf0, 0xb8, 0xfa, 0xf6, + 0xc1, 0xf3, 0xe7, 0xac, 0xa6, 0xf5, 0xed, 0x81, 0x6d, 0xe9, 0xb7, 0x4e, 0xfa, 0x48, 0xd3, 0x9b, + 0xa9, 0xd7, 0xfb, 0x55, 0xdb, 0x1a, 0x5d, 0x90, 0xd6, 0x84, 0xa6, 0xd0, 0x68, 0xad, 0xf8, 0xd1, + 0xb5, 0x29, 0x8b, 0x87, 0x8b, 0xf2, 0xbb, 0xa5, 0xa9, 0x71, 0x69, 0x1c, 0xa0, 0xc6, 0x3d, 0x85, + 0x6c, 0x60, 0xbd, 0x7b, 0xf3, 0x03, 0xeb, 0x71, 0x57, 0x64, 0xfc, 0xb6, 0x32, 0x8c, 0x13, 0xa6, + 0xdd, 0x13, 0xfb, 0x9d, 0xd8, 0xba, 0x69, 0xa9, 0x17, 0x69, 0x86, 0x3a, 0xec, 0xe5, 0xba, 0x5a, + 0x7e, 0x9e, 0xcf, 0x69, 0x58, 0x8d, 0x5c, 0xac, 0x3b, 0xde, 0xb0, 0xb5, 0x72, 0x1e, 0xeb, 0xf3, + 0x46, 0x4b, 0xdf, 0xe4, 0xa0, 0x6a, 0xf4, 0x93, 0xdb, 0x9b, 0xcb, 0x70, 0x21, 0xe7, 0xc4, 0x93, + 0xb3, 0x44, 0x39, 0xa4, 0x7b, 0xc1, 0xde, 0x60, 0x69, 0x4c, 0x0d, 0x0b, 0x4a, 0xcb, 0xc6, 0x44, + 0x53, 0x3f, 0x15, 0x09, 0xae, 0xeb, 0xdf, 0x86, 0x0d, 0x0c, 0x37, 0x6d, 0x60, 0xaf, 0x3e, 0xe8, + 0xb2, 0x91, 0x43, 0x92, 0x9a, 0x6b, 0x4d, 0x4f, 0xb3, 0x35, 0xb9, 0xff, 0xe3, 0xbd, 0x4a, 0xe7, + 0xf5, 0x6e, 0x69, 0x0d, 0x4c, 0xe7, 0x9b, 0x37, 0x41, 0x27, 0x09, 0x25, 0x87, 0xfc, 0x1b, 0x68, + 0xfd, 0x4f, 0x24, 0x35, 0x65, 0x74, 0x9c, 0x59, 0xd7, 0xdd, 0x53, 0xdc, 0x47, 0xaf, 0xcf, 0xf6, + 0x1a, 0x76, 0x1c, 0xff, 0x69, 0x52, 0xbe, 0x5a, 0x64, 0xad, 0xb4, 0x32, 0xd0, 0x59, 0x8e, 0x36, + 0xcc, 0x94, 0xff, 0x7f, 0x63, 0xaa, 0xf3, 0x6c, 0xba, 0x92, 0x84, 0xeb, 0xcd, 0xa2, 0xfc, 0xbf, + 0xb3, 0x59, 0xad, 0xfb, 0xca, 0x34, 0x99, 0xe3, 0xdf, 0x5e, 0x5e, 0x36, 0x6e, 0x5a, 0xdb, 0xa1, + 0x05, 0x13, 0x37, 0x77, 0x68, 0x8f, 0x77, 0x90, 0x8d, 0x29, 0x4e, 0xe3, 0xcf, 0xd7, 0xc6, 0x20, + 0xd0, 0x0a, 0xab, 0xf3, 0xe8, 0x76, 0x95, 0x70, 0xc4, 0x7f, 0x1f, 0x72, 0x6b, 0x06, 0xd1, 0x4e, + 0xd6, 0x30, 0xab, 0xb5, 0x74, 0xa6, 0xcb, 0x79, 0x8d, 0x0e, 0x2b, 0x75, 0x88, 0xdc, 0x05, 0x0f, + 0xff, 0x28, 0xfb, 0x20, 0xb5, 0x6d, 0xea, 0xfd, 0x2d, 0xb2, 0xe8, 0x22, 0xbc, 0x33, 0xa4, 0x51, + 0xeb, 0x17, 0x68, 0xe8, 0xe9, 0xbc, 0x3d, 0x53, 0x4e, 0x21, 0xb5, 0x5d, 0x72, 0x85, 0x68, 0x4a, + 0x75, 0xd5, 0x76, 0x48, 0xaa, 0x4c, 0x17, 0x4d, 0x29, 0x43, 0xbb, 0x68, 0xfa, 0x04, 0xd9, 0xb4, + 0x26, 0x9c, 0x6e, 0xd6, 0xa9, 0xbf, 0x44, 0xd0, 0x1b, 0x58, 0xe1, 0x7c, 0x4e, 0x7d, 0xda, 0xbc, + 0x43, 0x37, 0x51, 0xad, 0x3f, 0x7f, 0x89, 0xf4, 0xee, 0xdc, 0x44, 0xff, 0xee, 0xde, 0x68, 0xe4, + 0xa2, 0xa9, 0x81, 0x5a, 0x74, 0x9b, 0xa0, 0xe5, 0xa6, 0xfa, 0x47, 0x3f, 0xaa, 0x8c, 0x7d, 0xe1, + 0x0c, 0x37, 0xe9, 0xb5, 0x96, 0xbe, 0x2d, 0x22, 0x53, 0x3b, 0xba, 0x63, 0x34, 0xfa, 0xda, 0x1e, + 0xff, 0x25, 0x78, 0x88, 0x6e, 0x6e, 0x6f, 0x2c, 0xb1, 0x82, 0xd9, 0x18, 0x46, 0x1e, 0xdb, 0x68, + 0x7c, 0x03, 0xea, 0xd5, 0xac, 0x2f, 0xbb, 0xb2, 0xa3, 0x7b, 0x1c, 0x7a, 0xce, 0xb0, 0xfc, 0x05, + 0x9c, 0x1a, 0xcd, 0xbc, 0x49, 0xf7, 0x4b, 0xd4, 0xec, 0x6c, 0xd8, 0x94, 0xd4, 0x07, 0x79, 0xb3, + 0x15, 0x69, 0xb5, 0xfa, 0xe3, 0xd2, 0xba, 0x83, 0x65, 0xa9, 0xe6, 0x3d, 0x6b, 0x25, 0xad, 0x5d, + 0x20, 0xbc, 0xba, 0x3c, 0xf9, 0x1d, 0x1d, 0xb4, 0xde, 0x7f, 0x60, 0x51, 0xd1, 0x69, 0x83, 0x5e, + 0x53, 0xf7, 0xcb, 0x90, 0x7e, 0x10, 0x2d, 0x7e, 0x3b, 0x8b, 0x9c, 0x56, 0x56, 0xc3, 0xf7, 0x44, + 0xbd, 0x68, 0x3c, 0x50, 0x71, 0x16, 0x94, 0x2f, 0x45, 0xf3, 0xa8, 0xfb, 0x86, 0x49, 0x4e, 0x3b, + 0xe9, 0xd6, 0xee, 0xe0, 0x70, 0xda, 0x06, 0xa6, 0xfd, 0xb8, 0x5b, 0x90, 0x17, 0x99, 0x6a, 0x92, + 0xf7, 0xa9, 0x4c, 0x2c, 0x99, 0xa6, 0xc8, 0xa5, 0x04, 0x4e, 0x16, 0x20, 0xeb, 0x5c, 0x42, 0x64, + 0xd1, 0x19, 0x45, 0x30, 0x10, 0x8c, 0xa2, 0x3d, 0xe3, 0x14, 0x90, 0x20, 0xb1, 0xc8, 0xaf, 0xdd, + 0x5a, 0x71, 0xea, 0xa9, 0xfe, 0x3a, 0xc1, 0x39, 0xa5, 0xec, 0x2d, 0x08, 0x77, 0x07, 0x77, 0xa7, + 0xd7, 0xd1, 0x1c, 0x11, 0x1a, 0x30, 0xd3, 0xc2, 0x14, 0xd9, 0x1b, 0x15, 0x55, 0xd0, 0x44, 0x3a, + 0xa2, 0x3b, 0x8c, 0x9f, 0xf4, 0x18, 0xcd, 0x86, 0xe5, 0xb1, 0xbc, 0x70, 0x76, 0x07, 0x2e, 0x4e, + 0x14, 0x8c, 0xad, 0xb4, 0x44, 0x35, 0xac, 0x31, 0x27, 0xb9, 0x25, 0x58, 0x84, 0x0e, 0x47, 0xbf, + 0x15, 0x15, 0xa3, 0x98, 0x27, 0xb2, 0xda, 0xa7, 0xb0, 0x2d, 0x84, 0x55, 0x0d, 0x23, 0x82, 0xe6, + 0x05, 0xb5, 0xf4, 0xb3, 0xbd, 0xac, 0x5e, 0xdd, 0x12, 0xaf, 0x91, 0x0e, 0xed, 0x57, 0x30, 0xba, + 0x02, 0xb1, 0x45, 0x39, 0x6b, 0x37, 0x7f, 0x2a, 0x6e, 0x62, 0xf8, 0x56, 0xda, 0x2e, 0xa2, 0x38, + 0x02, 0x43, 0x94, 0x3f, 0xf1, 0x0a, 0x17, 0xcb, 0xff, 0xef, 0x30, 0x33, 0x11, 0x69, 0xfc, 0x26, + 0xaa, 0x9f, 0xfd, 0x30, 0x57, 0x6b, 0x3b, 0x4e, 0xa4, 0x6f, 0x28, 0xdf, 0x32, 0xfc, 0x6f, 0x0e, + 0xca, 0x0f, 0x0a, 0xcd, 0xb2, 0x31, 0x2c, 0xff, 0x9f, 0x91, 0xe2, 0xd7, 0x50, 0x81, 0xf4, 0xe8, + 0xed, 0x22, 0x85, 0x13, 0xf5, 0xd8, 0x50, 0xfc, 0xc4, 0x54, 0x43, 0xc6, 0xdb, 0x20, 0x73, 0x0c, + 0x48, 0x37, 0x54, 0x3b, 0xe5, 0x3d, 0xa1, 0xc4, 0xe3, 0x9c, 0x48, 0x40, 0x54, 0xe6, 0x94, 0x3a, + 0xff, 0x0b, 0x83, 0x9c, 0xa4, 0xcf, 0x6e, 0x3b, 0x3d, 0xd1, 0xe1, 0x78, 0x11, 0xdc, 0xcb, 0xca, + 0x7a, 0x4a, 0x89, 0xde, 0xe6, 0xd5, 0xf6, 0x8d, 0xac, 0xc7, 0xea, 0xa3, 0x41, 0xf6, 0x4a, 0x62, + 0x7b, 0x14, 0x03, 0x03, 0xba, 0xea, 0xe3, 0xfe, 0x9d, 0xfa, 0xc6, 0xe0, 0xb9, 0x22, 0xa5, 0xee, + 0xd6, 0x56, 0x76, 0xd0, 0x19, 0x81, 0xbb, 0xe7, 0x82, 0x33, 0xfa, 0x66, 0x27, 0xe1, 0xfb, 0xaf, + 0x5b, 0xfb, 0x18, 0x03, 0xc0, 0x57, 0x59, 0xba, 0xbb, 0x74, 0x65, 0x9c, 0x55, 0xa5, 0x9d, 0x85, + 0xe7, 0x23, 0x46, 0x9d, 0x50, 0x26, 0x26, 0x0a, 0xb8, 0xd5, 0x12, 0x2e, 0x77, 0x03, 0x8e, 0x9e, + 0x23, 0xd1, 0x78, 0x18, 0xb1, 0xc0, 0x2f, 0xa0, 0xf7, 0xae, 0x21, 0xac, 0x43, 0x0b, 0x2e, 0x9f, + 0xe3, 0x4e, 0x83, 0x23, 0xc7, 0x49, 0x23, 0x3e, 0x79, 0xdd, 0x26, 0xc6, 0xd0, 0x1b, 0x85, 0x95, + 0x79, 0x6f, 0x88, 0x41, 0x11, 0xbe, 0xe0, 0xb9, 0x0f, 0x5b, 0x47, 0xa1, 0x38, 0x74, 0x53, 0x37, + 0x70, 0x23, 0xda, 0xb9, 0xd0, 0x30, 0xf3, 0x3d, 0xb9, 0xe3, 0x44, 0x3e, 0x10, 0x2e, 0x10, 0xe5, + 0xeb, 0x3b, 0x5c, 0x5b, 0xc4, 0x3e, 0x40, 0x80, 0xdc, 0x94, 0x3e, 0x0e, 0xe0, 0xe9, 0x90, 0x9f, + 0x1d, 0x9e, 0x73, 0x40, 0x75, 0x0b, 0x01, 0xd5, 0x17, 0xb6, 0xef, 0xe7, 0x4e, 0x8c, 0xf6, 0x7c, + 0x67, 0x84, 0x3d, 0x12, 0x71, 0xd5, 0x6a, 0x69, 0x41, 0x33, 0xad, 0xac, 0xaa, 0x74, 0xfd, 0xaf, + 0xae, 0x54, 0x06, 0xe7, 0x7b, 0x83, 0x11, 0xbd, 0x5f, 0x3d, 0xa1, 0x0e, 0x60, 0x64, 0x52, 0x33, + 0x65, 0xc0, 0xad, 0xd2, 0x53, 0x0e, 0xce, 0x97, 0x5b, 0x40, 0xec, 0x84, 0xf3, 0x44, 0xe4, 0x87, + 0xfb, 0x6a, 0x3c, 0xbe, 0x63, 0xe8, 0x0a, 0x81, 0x0d, 0xd7, 0xbb, 0x80, 0x6d, 0x33, 0xb6, 0x5c, + 0x17, 0x1a, 0x7d, 0x17, 0xca, 0x7f, 0x07, 0xaa, 0xe4, 0xe5, 0x1f, 0x2e, 0x14, 0xdc, 0xc3, 0x85, + 0x06, 0x60, 0x69, 0x09, 0x74, 0xca, 0xbd, 0x2b, 0xe0, 0xa0, 0x32, 0x9c, 0x82, 0x04, 0xa9, 0x74, + 0xe1, 0x0a, 0xf1, 0x5f, 0x69, 0x94, 0xe0, 0x7e, 0x7d, 0x74, 0x61, 0x52, 0x4b, 0x73, 0x31, 0xb2, + 0x3d, 0x9a, 0x0b, 0x64, 0x59, 0x62, 0xbf, 0xa9, 0x61, 0x98, 0x56, 0x5b, 0x7c, 0x7c, 0x43, 0x3d, + 0x7f, 0xc0, 0x5f, 0xb4, 0xd0, 0x66, 0x93, 0x92, 0x3d, 0x88, 0x74, 0xb0, 0x48, 0x03, 0xeb, 0x38, + 0x16, 0xac, 0x83, 0xe4, 0xb7, 0x65, 0x0f, 0x69, 0x8e, 0x90, 0x12, 0x4d, 0x31, 0x12, 0xed, 0x4d, + 0xa9, 0x1e, 0x4d, 0x8a, 0x34, 0x98, 0x22, 0x3f, 0xd7, 0x8e, 0x30, 0xa8, 0x1a, 0xac, 0x01, 0xdf, + 0x43, 0xa5, 0x9c, 0x33, 0x04, 0x2a, 0x2e, 0x01, 0x29, 0xd0, 0x10, 0x00, 0x35, 0xe9, 0xcf, 0xc8, + 0x8d, 0xae, 0x54, 0x7a, 0x56, 0x18, 0xd2, 0x21, 0x47, 0x59, 0x0e, 0x33, 0xc0, 0x09, 0xcc, 0x41, + 0xaa, 0xc1, 0xbb, 0x44, 0xeb, 0xd8, 0x3c, 0x41, 0x04, 0x32, 0x92, 0x31, 0x8c, 0xac, 0xc3, 0x83, + 0xa1, 0x5c, 0x47, 0x6f, 0x4e, 0x4f, 0x0e, 0x0f, 0x6c, 0x11, 0x67, 0xfc, 0xa5, 0x9e, 0xfa, 0xf2, + 0xe0, 0xc5, 0x0b, 0x5b, 0x4e, 0xa1, 0x3d, 0xd1, 0x04, 0x99, 0xcb, 0xc4, 0x30, 0xb3, 0xb2, 0xe1, + 0x2b, 0x01, 0xaf, 0x20, 0x66, 0x85, 0x93, 0xb0, 0x1f, 0x65, 0x43, 0xf1, 0xbd, 0xb9, 0xf1, 0x31, + 0xae, 0x84, 0x0e, 0x87, 0x48, 0xb3, 0x97, 0xe3, 0x0f, 0x44, 0x3e, 0x04, 0x10, 0xee, 0x27, 0x0c, + 0x00, 0xf5, 0x28, 0xbf, 0x88, 0x4d, 0x8d, 0x0b, 0xc0, 0x49, 0x81, 0xd5, 0x8a, 0x7c, 0x09, 0x19, + 0x1e, 0x8b, 0x8d, 0x0e, 0x25, 0x02, 0x5c, 0xdb, 0x94, 0xc2, 0x63, 0x4a, 0x35, 0xa5, 0x47, 0xaa, + 0xbc, 0x5c, 0xc1, 0xa9, 0xf2, 0x45, 0x02, 0xfc, 0x30, 0x3f, 0x39, 0x4b, 0x99, 0x9f, 0x04, 0xa2, + 0x78, 0x5e, 0xdd, 0x8b, 0x5d, 0xb4, 0x9f, 0xc9, 0x02, 0x71, 0x80, 0xa4, 0x93, 0x9e, 0xb6, 0xdb, + 0x94, 0xee, 0x28, 0xd2, 0xc0, 0x6d, 0xa7, 0x34, 0x4f, 0x09, 0x68, 0x14, 0x96, 0x3b, 0xc2, 0xce, + 0x41, 0x8c, 0x57, 0xe0, 0xe8, 0xb6, 0x0e, 0x17, 0x94, 0xcc, 0x53, 0x13, 0x88, 0xc8, 0x52, 0x4b, + 0xbe, 0x2c, 0x8b, 0x28, 0xb7, 0xe7, 0xfb, 0x01, 0x6e, 0xc0, 0x26, 0xf6, 0xfb, 0xfd, 0xd7, 0xf6, + 0x90, 0xbf, 0x2f, 0xb1, 0x75, 0x5d, 0x38, 0x2e, 0x09, 0xc3, 0xcb, 0x25, 0x0d, 0xc3, 0x6c, 0x7a, + 0xe4, 0x4d, 0x92, 0x5d, 0xdf, 0x7e, 0x2b, 0x51, 0xda, 0x2c, 0x2c, 0x0e, 0xd8, 0x2d, 0x29, 0xf4, + 0x93, 0xbe, 0x3d, 0xa4, 0x8a, 0x62, 0x81, 0x23, 0x63, 0xbf, 0x4f, 0xad, 0x14, 0x06, 0x56, 0x25, + 0xaa, 0x5b, 0x6e, 0xcd, 0xb1, 0x1c, 0xfb, 0x70, 0xfa, 0xc2, 0x4d, 0x45, 0x87, 0x92, 0x04, 0x4b, + 0x82, 0x3f, 0xca, 0x9b, 0xa1, 0x63, 0x71, 0xbd, 0x55, 0x56, 0x34, 0xc4, 0xfd, 0x10, 0x0f, 0xa1, + 0x20, 0xbf, 0x15, 0x77, 0x40, 0x89, 0x71, 0xb8, 0x48, 0x4c, 0x73, 0x23, 0x41, 0x18, 0xa5, 0x09, + 0xcb, 0x3e, 0x6c, 0x5e, 0xf6, 0x79, 0xa2, 0x94, 0xf1, 0x4f, 0xd8, 0x34, 0xfe, 0xa9, 0x32, 0x95, + 0xa6, 0x3f, 0xe1, 0x26, 0xa6, 0x3f, 0xa5, 0x01, 0xde, 0x6d, 0x3c, 0x63, 0xc7, 0x14, 0xb4, 0xc0, + 0x42, 0x13, 0x2c, 0xec, 0x91, 0xc2, 0x62, 0xb9, 0xdd, 0x26, 0xc8, 0xa0, 0x63, 0x85, 0xcb, 0xe1, + 0x86, 0x5f, 0x65, 0x13, 0xb4, 0x74, 0x9a, 0x56, 0xfc, 0x7c, 0xac, 0x11, 0x3b, 0xa2, 0x84, 0x55, + 0x54, 0x9b, 0x21, 0xa2, 0xa8, 0xe5, 0x75, 0xd8, 0x23, 0x5a, 0x6d, 0x81, 0x4a, 0x02, 0x4a, 0xf5, + 0x83, 0xb0, 0xe6, 0x1a, 0x8a, 0x00, 0xf5, 0xe2, 0xba, 0x8f, 0x53, 0xf6, 0x8b, 0x51, 0x2f, 0xa9, 0x6e, 0xba, 0x68, 0x3f, 0x3e, 0x62, 0x8b, 0x59, 0xa0, 0x0c, 0xa9, 0xfb, 0xed, 0x8b, 0x3a, 0x6f, - 0xfe, 0x2e, 0x98, 0xc5, 0x57, 0xca, 0x07, 0xf1, 0xf2, 0xca, 0x63, 0xb6, 0xf3, 0x07, 0x95, 0x30, - 0xdd, 0x7b, 0x21, 0x53, 0xbc, 0x0b, 0x12, 0x3f, 0x05, 0xbe, 0x37, 0x06, 0xa6, 0xd3, 0xef, 0xc0, - 0xd6, 0x56, 0xc3, 0x19, 0xad, 0x61, 0x5d, 0x1f, 0x16, 0xab, 0xfa, 0x98, 0x08, 0x87, 0x87, 0x9e, - 0x31, 0x10, 0x12, 0xc2, 0xa7, 0xeb, 0x8d, 0xda, 0xe7, 0x2d, 0xbf, 0x2d, 0x19, 0x5f, 0x07, 0x76, - 0x38, 0x30, 0x77, 0x30, 0xa5, 0x28, 0x1b, 0x08, 0xc8, 0x74, 0xed, 0x36, 0xbc, 0x2c, 0x84, 0x7c, - 0xde, 0x7c, 0x5d, 0x4d, 0x06, 0x52, 0xef, 0x69, 0x71, 0x5d, 0x10, 0xf0, 0x16, 0x6e, 0x63, 0xa2, - 0x71, 0x98, 0x15, 0xd3, 0xdc, 0x71, 0x86, 0x8d, 0x57, 0x44, 0xd4, 0x0d, 0x2b, 0xf5, 0x75, 0x99, - 0x65, 0x4f, 0xfc, 0x6c, 0x83, 0xec, 0xb1, 0xce, 0xde, 0xd4, 0x01, 0x07, 0xc3, 0x12, 0x56, 0xef, - 0xae, 0xb4, 0xc6, 0xf5, 0xd8, 0xfc, 0x20, 0xa3, 0x93, 0x6d, 0x11, 0xc2, 0x88, 0x9d, 0x98, 0x7d, - 0xe1, 0x22, 0xfa, 0x44, 0xc6, 0x4e, 0x8f, 0xee, 0x80, 0x15, 0xf9, 0x9e, 0x2f, 0xc8, 0xb5, 0xf3, - 0x8d, 0x57, 0xcb, 0x85, 0xea, 0x4f, 0xba, 0x41, 0x03, 0x39, 0xbb, 0xea, 0x51, 0xbe, 0xc9, 0x00, - 0x2c, 0xa6, 0xba, 0xc0, 0x48, 0xb2, 0xbe, 0x34, 0x1c, 0x28, 0x13, 0x07, 0x16, 0x96, 0xa6, 0x31, - 0x2d, 0xae, 0x6c, 0xbf, 0x97, 0xee, 0xe6, 0xb4, 0x61, 0x6c, 0x09, 0xe7, 0x4d, 0x84, 0x90, 0xef, - 0xa5, 0xe3, 0xc1, 0xe7, 0xcf, 0xf9, 0x38, 0xf0, 0x84, 0x99, 0xea, 0x85, 0xd3, 0x83, 0x20, 0xe3, - 0xdc, 0x25, 0xcb, 0xf2, 0x36, 0x4a, 0x3d, 0x12, 0x65, 0x3a, 0x5f, 0x4c, 0x43, 0x66, 0xd9, 0x74, - 0x37, 0x09, 0x18, 0x16, 0x29, 0x2d, 0x56, 0xc5, 0xb5, 0xb5, 0x11, 0x5f, 0xb9, 0x4f, 0x1e, 0x01, - 0xbb, 0x9c, 0x51, 0xd4, 0x82, 0x3c, 0xa0, 0xc9, 0x5a, 0xf7, 0x12, 0x36, 0xd4, 0xfb, 0xb7, 0xbc, - 0x85, 0x48, 0xc2, 0x02, 0x67, 0x82, 0x89, 0xd1, 0x1a, 0xf3, 0x7a, 0x2b, 0xef, 0x2a, 0xbf, 0x60, - 0xc4, 0xe2, 0x2d, 0x7d, 0xb3, 0x69, 0x3d, 0x96, 0x46, 0x3f, 0xbd, 0xa6, 0xe3, 0x6c, 0xd5, 0x84, - 0x57, 0xf0, 0x86, 0xee, 0x6d, 0xf4, 0xb2, 0x8f, 0xe9, 0xe5, 0x05, 0x47, 0x87, 0x7d, 0xaa, 0xbe, - 0xc6, 0xbc, 0xfd, 0xfa, 0xb6, 0xd5, 0x39, 0x45, 0xec, 0xe1, 0x27, 0xb8, 0x9b, 0xb4, 0x5c, 0x54, - 0x00, 0xab, 0xc5, 0xf7, 0x94, 0x70, 0x7c, 0x82, 0x8b, 0x46, 0x57, 0xd1, 0x77, 0xa9, 0x55, 0x2e, - 0x4b, 0x5f, 0x6f, 0x54, 0xec, 0xf4, 0x53, 0x36, 0xb5, 0x0a, 0x2a, 0x6c, 0x2e, 0xab, 0xf4, 0x5a, - 0xf5, 0x98, 0xe4, 0xc0, 0xdf, 0x2f, 0x13, 0xd7, 0xf3, 0x36, 0xca, 0x7a, 0xba, 0x88, 0xe3, 0xd9, - 0xa6, 0x99, 0x69, 0x81, 0xc6, 0x59, 0x91, 0x94, 0x9f, 0x50, 0xa0, 0x99, 0xe9, 0xbe, 0x15, 0xf3, - 0x45, 0xc0, 0x88, 0x3d, 0x0d, 0xfa, 0x72, 0x7f, 0x19, 0xa5, 0x8d, 0xc2, 0x6a, 0x07, 0x16, 0x66, - 0x34, 0xd3, 0x69, 0xf9, 0xa5, 0xd8, 0x35, 0x2d, 0x15, 0x71, 0x05, 0x3a, 0x2e, 0x88, 0x61, 0x5c, - 0x66, 0xfb, 0x52, 0x9a, 0x06, 0x66, 0xb2, 0xb6, 0x5f, 0x60, 0x5d, 0xae, 0x80, 0x89, 0x1a, 0x0a, - 0x44, 0x3c, 0xd4, 0xef, 0xe7, 0xd8, 0x37, 0xb4, 0x1e, 0x6f, 0x60, 0x5d, 0xc6, 0xf1, 0x87, 0x02, - 0x3e, 0xc8, 0xe6, 0xcb, 0x89, 0xcb, 0xcf, 0x20, 0x6d, 0xfc, 0xb3, 0x17, 0x2c, 0x1e, 0x60, 0x9d, - 0x6e, 0xa4, 0x20, 0x66, 0x80, 0xe7, 0xca, 0xa3, 0x2b, 0xca, 0x2e, 0x26, 0xfc, 0x17, 0x9e, 0x44, - 0x99, 0xb2, 0xfc, 0x3d, 0x60, 0xa4, 0x41, 0xd7, 0x01, 0xc2, 0xaa, 0xe3, 0xee, 0x66, 0x6d, 0xb3, - 0x92, 0xda, 0xb6, 0x39, 0x17, 0xec, 0xf9, 0x9c, 0x40, 0xa3, 0x4b, 0xec, 0x92, 0xed, 0xe8, 0xd1, - 0x2e, 0xd8, 0x21, 0xf4, 0xd3, 0x9b, 0x15, 0x9f, 0x9e, 0xb0, 0xe9, 0xb7, 0x89, 0x78, 0xdc, 0x35, - 0x5c, 0x20, 0x36, 0x86, 0x57, 0x75, 0x4e, 0xf6, 0xcc, 0x9a, 0x23, 0xc3, 0x03, 0x43, 0xca, 0xf4, - 0x26, 0xde, 0xb5, 0x90, 0x2e, 0x8f, 0x84, 0x98, 0x3f, 0xd9, 0x1b, 0x0c, 0x07, 0x46, 0xfe, 0x9b, - 0xc5, 0x89, 0x9d, 0x19, 0xb6, 0xad, 0xd9, 0x44, 0x7c, 0xd4, 0x0f, 0x0a, 0x9c, 0xe8, 0xcb, 0x78, - 0x3c, 0x8f, 0x0c, 0x74, 0x9e, 0x4c, 0x15, 0x66, 0x7b, 0x70, 0x3e, 0x86, 0xba, 0xa0, 0xaa, 0xfb, - 0x26, 0xfa, 0x10, 0xff, 0x76, 0x4a, 0x0c, 0xe0, 0xbe, 0xf8, 0xfc, 0xb9, 0xd7, 0xbb, 0x17, 0x48, - 0x07, 0xbf, 0xc5, 0x97, 0xa7, 0xd4, 0xf4, 0x98, 0xa4, 0xc7, 0xfb, 0x82, 0xbd, 0xad, 0xd9, 0xf9, - 0x5a, 0xb8, 0x5c, 0xd7, 0x7d, 0xd4, 0xaf, 0xf3, 0xa2, 0x64, 0xd1, 0x78, 0xd7, 0xdd, 0xbf, 0x2f, - 0xe0, 0x8f, 0x01, 0x93, 0xaa, 0xa2, 0x88, 0xcc, 0x38, 0x55, 0x5a, 0xac, 0x31, 0x5d, 0xc0, 0x59, - 0xed, 0xe2, 0x09, 0x7d, 0x07, 0x53, 0x24, 0x9d, 0xda, 0x4c, 0xef, 0x40, 0xc3, 0x22, 0xdc, 0xf3, - 0x8d, 0x1f, 0xc2, 0x05, 0xb0, 0xe1, 0x61, 0xe7, 0x7f, 0x89, 0x7f, 0x63, 0xf0, 0xc7, 0xef, 0x14, - 0x79, 0x41, 0x6e, 0x9a, 0xe7, 0xa3, 0x4e, 0x7e, 0xc6, 0x62, 0x7a, 0x03, 0xda, 0x08, 0xc7, 0x14, - 0xd8, 0x39, 0xca, 0x61, 0x61, 0x12, 0x63, 0xec, 0xcc, 0xf1, 0x1f, 0xff, 0x18, 0xd4, 0xd7, 0xa9, - 0x86, 0xb8, 0xcb, 0x24, 0x0e, 0xe1, 0xf6, 0xb6, 0x65, 0xad, 0x99, 0x79, 0x1c, 0x4f, 0x86, 0xdd, - 0x2e, 0x7c, 0x6b, 0x99, 0x65, 0x3e, 0x42, 0x2d, 0xc7, 0xd1, 0x4c, 0xc6, 0x46, 0x13, 0x79, 0x80, - 0x20, 0x79, 0x0f, 0xf3, 0xad, 0x69, 0x9a, 0x17, 0xf6, 0x70, 0x7f, 0xa9, 0xb3, 0xa7, 0x09, 0xcd, - 0x50, 0xbd, 0x4f, 0xb9, 0x91, 0x32, 0xa8, 0x22, 0xa2, 0x91, 0xf9, 0x6b, 0xb9, 0xae, 0xf4, 0xb6, - 0x88, 0x61, 0xd5, 0xc1, 0x00, 0x8c, 0x44, 0xdf, 0x29, 0x4a, 0x09, 0x64, 0x44, 0xfe, 0x35, 0xbb, - 0x5d, 0x4a, 0x7c, 0x44, 0xfe, 0x59, 0x8a, 0xac, 0x0c, 0x5b, 0xc8, 0x09, 0x37, 0xf4, 0xad, 0x02, - 0x66, 0x8c, 0xfb, 0xb7, 0xb3, 0x45, 0x46, 0xc2, 0x5b, 0x36, 0xab, 0xe1, 0x25, 0x92, 0x4c, 0x5e, - 0x00, 0xd2, 0x50, 0x72, 0x19, 0x8e, 0x62, 0xd2, 0xd2, 0xba, 0xb2, 0xd4, 0xcd, 0x2a, 0x97, 0xfb, - 0x83, 0x40, 0x4e, 0x7a, 0x40, 0x03, 0x1e, 0x8c, 0x5a, 0xec, 0xf3, 0x6a, 0xe2, 0x43, 0x8b, 0xd5, - 0x1d, 0x2b, 0x11, 0xd9, 0x66, 0x15, 0x76, 0x76, 0x10, 0x28, 0xe2, 0xd4, 0x7b, 0xcc, 0xc2, 0x42, - 0x44, 0x26, 0x5e, 0x15, 0x74, 0x8c, 0x15, 0x82, 0xa0, 0xb6, 0xc4, 0x03, 0xa9, 0xa7, 0xca, 0x99, - 0xc4, 0x38, 0xa3, 0xd1, 0xc9, 0x55, 0xbd, 0x5a, 0x1e, 0xcb, 0x78, 0x01, 0x57, 0x1b, 0xf4, 0x48, - 0xab, 0xac, 0xc2, 0x14, 0x58, 0x50, 0xd2, 0x68, 0xf6, 0x29, 0x0f, 0x7e, 0x43, 0xd5, 0x77, 0x30, - 0x8a, 0xc7, 0xd0, 0xf7, 0xed, 0xed, 0x79, 0x39, 0xdc, 0xc2, 0xd6, 0xf8, 0xf0, 0xbb, 0xbb, 0xfc, - 0x0e, 0xa1, 0x40, 0xe3, 0x78, 0x2b, 0xfa, 0xf7, 0xa0, 0xf6, 0xfb, 0xe0, 0x1c, 0xa6, 0x91, 0x12, - 0x24, 0x93, 0xd8, 0xb0, 0xc0, 0xc8, 0xa4, 0x27, 0x86, 0x55, 0xbe, 0xca, 0x7b, 0x78, 0xce, 0x77, - 0x55, 0x1a, 0x15, 0x00, 0xe8, 0x97, 0x2a, 0x04, 0x4f, 0x8a, 0xcd, 0x68, 0x7b, 0x9b, 0x3f, 0xa8, - 0x99, 0xed, 0xf7, 0x58, 0x4c, 0x5f, 0xaf, 0xf5, 0x34, 0x72, 0x66, 0xcf, 0x7f, 0x62, 0x4f, 0xd7, - 0x99, 0x8b, 0x07, 0x7f, 0x83, 0x1d, 0x5d, 0x67, 0x4f, 0x1e, 0xa4, 0x4c, 0x2d, 0x6f, 0x3a, 0xec, - 0xc3, 0xd0, 0x85, 0x70, 0xa1, 0x17, 0xaa, 0xaf, 0xf9, 0x83, 0x7b, 0x7e, 0xa6, 0x55, 0x62, 0x69, - 0x7f, 0xfe, 0xb0, 0x72, 0xcf, 0x49, 0xf8, 0x8b, 0x26, 0x51, 0x5f, 0x5e, 0x93, 0x86, 0x5b, 0xc1, - 0x50, 0x73, 0xcc, 0x65, 0x9c, 0x32, 0xee, 0x87, 0x0c, 0xb6, 0xd8, 0xfa, 0x02, 0xb7, 0xaf, 0x90, - 0x42, 0x01, 0x4c, 0x83, 0x78, 0x71, 0xd5, 0xa9, 0x4b, 0x40, 0x27, 0x43, 0x98, 0xd6, 0x39, 0x44, - 0x54, 0x8a, 0xf6, 0xa6, 0xb2, 0xee, 0xfa, 0xcc, 0xd0, 0x07, 0x56, 0x2d, 0x24, 0x7a, 0x5c, 0x1a, - 0x15, 0x47, 0xb3, 0x99, 0x59, 0xab, 0x09, 0x56, 0x8a, 0x32, 0x0a, 0x73, 0x73, 0xdd, 0x58, 0xa8, - 0xdb, 0x03, 0x6b, 0x40, 0x28, 0x91, 0xdf, 0x67, 0x8c, 0x86, 0xdf, 0x4b, 0xc2, 0xf6, 0xea, 0xcc, - 0x9e, 0x7b, 0x4f, 0x75, 0xbc, 0xab, 0x49, 0x2d, 0x7d, 0xae, 0x1a, 0xd1, 0xd9, 0xdf, 0xf2, 0xf3, - 0xe7, 0x65, 0xbf, 0x98, 0x2e, 0xf3, 0x34, 0x25, 0x92, 0xc8, 0xff, 0x9e, 0xc4, 0xf7, 0xbd, 0xc7, - 0xcb, 0xf8, 0x3a, 0xba, 0x4b, 0x10, 0x1d, 0x4e, 0x39, 0xe8, 0x33, 0x4f, 0x27, 0x96, 0x4e, 0xfb, - 0x4f, 0x5c, 0x40, 0xfb, 0xe2, 0xc7, 0x7d, 0x76, 0xc6, 0x66, 0x9f, 0x03, 0xf9, 0x5d, 0x6c, 0x78, - 0x53, 0x36, 0xf0, 0x95, 0x4a, 0x49, 0xf5, 0x80, 0x95, 0x90, 0x83, 0x60, 0x48, 0x0f, 0x2b, 0xe5, - 0x0c, 0x87, 0x7e, 0x74, 0xe6, 0xda, 0xd6, 0x79, 0xcb, 0x35, 0x02, 0x9c, 0x3b, 0x83, 0x01, 0x72, - 0xc3, 0x18, 0x3f, 0xce, 0xf2, 0xdb, 0xab, 0x6b, 0xa7, 0x58, 0x44, 0xd3, 0x18, 0xae, 0x73, 0x05, - 0x5c, 0x17, 0x85, 0x8f, 0x40, 0xad, 0xc8, 0x01, 0x8a, 0x48, 0xff, 0x59, 0xbc, 0x41, 0xea, 0xc2, - 0xac, 0x3c, 0xdf, 0x21, 0xcf, 0x6b, 0xe3, 0xb5, 0x0e, 0xb7, 0xd1, 0xb9, 0x8e, 0x0a, 0x27, 0x9f, - 0x12, 0xa3, 0x85, 0x8e, 0x6d, 0x65, 0x70, 0x2a, 0xde, 0x70, 0xd9, 0x46, 0x9a, 0x33, 0xee, 0xba, - 0x43, 0xfa, 0x31, 0x65, 0x77, 0x85, 0x8a, 0x5b, 0x31, 0xdb, 0x5b, 0xc6, 0x1f, 0x8b, 0x9f, 0xe3, - 0xab, 0x28, 0xc5, 0xd5, 0x81, 0xb1, 0xa5, 0x54, 0xa0, 0x1a, 0xbc, 0xa9, 0x04, 0xed, 0xea, 0x81, - 0x0d, 0x76, 0xab, 0xe8, 0xbb, 0x80, 0x78, 0x65, 0x4c, 0x73, 0xa6, 0xde, 0xe4, 0x3d, 0x1a, 0xc8, - 0xb9, 0x1a, 0xb2, 0xc9, 0x90, 0x1c, 0x48, 0xc6, 0x31, 0xe5, 0x08, 0xc3, 0x15, 0xcd, 0xf6, 0x95, - 0xf3, 0x0f, 0xe3, 0x43, 0x7d, 0x63, 0x22, 0x62, 0xed, 0x01, 0xc9, 0x40, 0xa8, 0xe2, 0x8a, 0xc4, - 0x1d, 0xc6, 0xfa, 0x07, 0xb6, 0x47, 0xda, 0xdf, 0xf7, 0x4d, 0x0f, 0xbe, 0xa2, 0xa1, 0xc4, 0x83, - 0x8a, 0xf1, 0x42, 0x54, 0x98, 0x86, 0x70, 0x0d, 0x44, 0x5c, 0x87, 0xfb, 0x02, 0xff, 0xfa, 0xd8, - 0x65, 0x3f, 0xf1, 0x36, 0x1b, 0x86, 0xa1, 0x16, 0xbd, 0xfa, 0x7f, 0x3d, 0x79, 0xf3, 0x0e, 0x81, - 0xe6, 0x26, 0xee, 0x82, 0x24, 0x2c, 0x57, 0x68, 0xfa, 0xd8, 0x47, 0x02, 0xda, 0x1a, 0xc6, 0x26, - 0xa6, 0x2d, 0x8f, 0x9a, 0x6f, 0xba, 0xe6, 0xa3, 0xc3, 0xfd, 0x2c, 0xbf, 0xef, 0x79, 0x70, 0xf0, - 0x50, 0x6a, 0x81, 0xf6, 0xdd, 0x50, 0x28, 0x86, 0x69, 0x99, 0x26, 0x33, 0x62, 0x7d, 0xe2, 0x8b, - 0x0a, 0xf1, 0x20, 0x60, 0x9c, 0xf5, 0x7e, 0xaa, 0xc2, 0xda, 0x68, 0xa6, 0x3e, 0x08, 0xbe, 0x89, - 0x94, 0x1a, 0x22, 0xd9, 0xa2, 0x1d, 0x95, 0x71, 0xa8, 0xab, 0x02, 0x61, 0xe2, 0xad, 0x7a, 0xd2, - 0xa3, 0xac, 0x72, 0x96, 0x89, 0x0d, 0x67, 0x5d, 0x80, 0x9e, 0xf6, 0x52, 0x0e, 0x6c, 0x9b, 0x4e, - 0xee, 0x0b, 0xde, 0xd9, 0x7b, 0xd9, 0xe7, 0xcf, 0x3b, 0x8f, 0xee, 0x9d, 0x3b, 0x04, 0xe0, 0xc9, - 0x6a, 0xc7, 0x1b, 0x0a, 0x75, 0x67, 0xa1, 0xd5, 0x9d, 0xb9, 0x0f, 0x84, 0xa7, 0x18, 0x30, 0xbc, - 0x00, 0x63, 0x20, 0xb6, 0x5d, 0xee, 0x41, 0xb3, 0x4c, 0xc3, 0x03, 0xfc, 0xa0, 0x44, 0x70, 0x58, - 0x9e, 0x8c, 0x91, 0x33, 0xbd, 0x46, 0x73, 0xcb, 0xf0, 0xd7, 0xf7, 0x3f, 0xee, 0x7d, 0xeb, 0xae, - 0x7c, 0x84, 0x49, 0x18, 0x66, 0x5f, 0xe0, 0x27, 0x99, 0x85, 0x63, 0x10, 0xe9, 0xff, 0x03, 0xe1, - 0x94, 0x28, 0x3c, 0xb3, 0xb4, 0xb9, 0x6f, 0x6e, 0x16, 0xe5, 0x27, 0x5a, 0x45, 0xc5, 0x22, 0xcf, - 0x00, 0x56, 0x0b, 0x59, 0x61, 0x8b, 0xe4, 0xa2, 0xdb, 0xe9, 0x94, 0x64, 0x6e, 0x4f, 0xe2, 0x79, - 0x65, 0x2c, 0x69, 0x30, 0x99, 0x3d, 0x82, 0xe8, 0xeb, 0x46, 0x19, 0x59, 0x5f, 0x58, 0x04, 0x15, - 0x95, 0x0f, 0x91, 0xbe, 0xac, 0xcf, 0xfa, 0xea, 0x42, 0xb2, 0x13, 0x19, 0xc7, 0xf4, 0x9c, 0x6d, - 0xa4, 0x1b, 0xb7, 0x99, 0xd6, 0xc3, 0x2d, 0x90, 0x7b, 0xc6, 0x32, 0x76, 0xff, 0xbe, 0x18, 0xef, - 0x0d, 0xb6, 0xb7, 0xd5, 0xe9, 0x43, 0x85, 0xb6, 0xf0, 0x0f, 0x5e, 0x42, 0xc8, 0xd5, 0x7c, 0x23, - 0x50, 0x2b, 0x46, 0x14, 0xa3, 0xd5, 0x90, 0xf2, 0x01, 0xa9, 0x45, 0x46, 0x47, 0xb2, 0x84, 0x33, - 0x35, 0x8e, 0x79, 0xb9, 0xef, 0xfe, 0xc0, 0xbf, 0x2e, 0x21, 0x7e, 0x13, 0x51, 0xe7, 0x2c, 0x59, - 0xb4, 0xa3, 0xe8, 0x56, 0x87, 0x54, 0x3a, 0xe2, 0xb1, 0xd4, 0x3b, 0xf8, 0x16, 0xaa, 0x61, 0x28, - 0x61, 0x52, 0x79, 0xb2, 0xeb, 0xe5, 0xa1, 0xdb, 0xfb, 0x99, 0xbe, 0x7a, 0xc4, 0xf6, 0x72, 0x46, - 0xcd, 0x52, 0x89, 0x32, 0x65, 0x46, 0x6b, 0xb2, 0x4c, 0x63, 0x7a, 0xb5, 0x44, 0x0e, 0x4f, 0xc5, - 0x61, 0xfb, 0xfe, 0xae, 0x82, 0xef, 0x96, 0x49, 0x53, 0xfc, 0xb0, 0xf0, 0xc6, 0x53, 0x2c, 0x16, - 0x05, 0xe6, 0x2d, 0x73, 0xd1, 0x2f, 0x92, 0x1e, 0x19, 0x35, 0x3b, 0x85, 0x37, 0x0b, 0xfc, 0x8c, - 0xb7, 0x44, 0x5c, 0x21, 0x63, 0x7a, 0x8c, 0x29, 0xf1, 0x85, 0x5f, 0xfe, 0x73, 0x4e, 0x31, 0xe9, - 0x97, 0x9d, 0x62, 0xd2, 0xf6, 0x53, 0x4c, 0xea, 0xd9, 0x67, 0x17, 0x70, 0xcf, 0x4c, 0x1d, 0x58, - 0xaa, 0x33, 0x45, 0x81, 0x0b, 0x85, 0x2f, 0xbd, 0x51, 0xa8, 0x6b, 0xb2, 0x59, 0x51, 0x55, 0x03, - 0x6d, 0x7a, 0xcc, 0xb3, 0xa1, 0x40, 0x81, 0xc7, 0xdf, 0x55, 0x43, 0xfb, 0xfd, 0x2e, 0xb5, 0xd0, - 0x5d, 0x7a, 0x8c, 0x14, 0x4f, 0x7f, 0xbc, 0xc9, 0x05, 0x86, 0x75, 0x29, 0xe1, 0x7d, 0xfa, 0xce, - 0x3f, 0xe1, 0xe5, 0x2f, 0xd0, 0x5e, 0xd8, 0xc9, 0x9e, 0xc5, 0xf7, 0xaf, 0x1f, 0xf9, 0xf4, 0x32, - 0xa6, 0xe1, 0x21, 0xce, 0x3f, 0x64, 0x3f, 0x82, 0x15, 0xa7, 0xe2, 0x0c, 0x43, 0x89, 0x77, 0x1c, - 0xe7, 0x22, 0x9a, 0x97, 0xf4, 0x29, 0x1e, 0xd0, 0xd9, 0x67, 0x05, 0x83, 0x50, 0xbe, 0xc6, 0xb8, - 0x18, 0xba, 0xe2, 0x2d, 0xb3, 0x98, 0xdf, 0x03, 0xbf, 0x2a, 0xdc, 0x54, 0x59, 0x3d, 0xc8, 0xd2, - 0x21, 0x7a, 0x41, 0x8d, 0x5a, 0x35, 0xdb, 0x0f, 0x55, 0x99, 0xdd, 0x83, 0x0a, 0xc7, 0x5e, 0x7d, - 0xf3, 0x26, 0xee, 0x5f, 0xf9, 0x4e, 0x8c, 0x9b, 0x0f, 0x58, 0x01, 0x76, 0xf4, 0xcf, 0xe2, 0xf2, - 0x3e, 0x5f, 0x7e, 0x10, 0xdd, 0xa1, 0xfd, 0xc2, 0x41, 0x7e, 0x88, 0x13, 0x0c, 0x1d, 0x40, 0xb3, - 0xdc, 0xa7, 0xa6, 0xbf, 0xc7, 0x77, 0xd1, 0x6d, 0x06, 0x13, 0x78, 0xba, 0x1e, 0x27, 0xcd, 0xb3, - 0x2b, 0xca, 0x84, 0xda, 0xfa, 0xae, 0x82, 0x8b, 0x7b, 0xc4, 0xd1, 0x6d, 0xf8, 0x08, 0x0e, 0x3f, - 0x54, 0xed, 0x5a, 0xad, 0x46, 0x06, 0xe1, 0xf3, 0xee, 0xc1, 0x07, 0xbc, 0x25, 0x96, 0x81, 0x6e, - 0xbc, 0x35, 0x18, 0xcd, 0xeb, 0x0b, 0x2c, 0xc4, 0x3b, 0x08, 0x69, 0x38, 0x98, 0x02, 0xde, 0x1f, - 0x7f, 0xdb, 0x94, 0x3f, 0x32, 0x5f, 0x8b, 0x56, 0xee, 0xe7, 0xbb, 0x3a, 0xaa, 0xb1, 0x86, 0xb8, - 0x9b, 0x34, 0x6e, 0xe2, 0x54, 0x3d, 0x34, 0x75, 0xfa, 0xbb, 0x3b, 0x5a, 0xff, 0xbe, 0xe5, 0x54, - 0xbc, 0x05, 0xa1, 0x9c, 0x2f, 0x81, 0x2b, 0x7e, 0x99, 0x46, 0xd9, 0x87, 0x35, 0xfa, 0xcf, 0xba, - 0xba, 0x15, 0x2d, 0x34, 0x34, 0x9f, 0xdc, 0xc7, 0x4d, 0x64, 0x07, 0x7e, 0xce, 0xbb, 0x2a, 0x6d, - 0xa9, 0x29, 0xed, 0xa9, 0xf3, 0x28, 0x2d, 0xb0, 0xa9, 0x4a, 0xf0, 0xb1, 0xfa, 0x60, 0xf2, 0xd2, - 0xc5, 0x40, 0x32, 0x8b, 0x50, 0x78, 0x62, 0xf2, 0xc6, 0x92, 0xc4, 0x75, 0x19, 0x37, 0x41, 0x7c, - 0x7a, 0xf5, 0x25, 0x2f, 0x59, 0x42, 0x2b, 0x78, 0x27, 0xa5, 0xb7, 0x68, 0x02, 0x45, 0x45, 0x1b, - 0xe9, 0xff, 0x3a, 0x07, 0xeb, 0x6d, 0x6d, 0xac, 0x44, 0x8d, 0xd5, 0x68, 0x35, 0x56, 0xbc, 0xbc, - 0x7f, 0x55, 0x6c, 0xcb, 0xec, 0x79, 0x15, 0x0f, 0x42, 0x7e, 0x69, 0x79, 0x6b, 0x66, 0x71, 0x4f, - 0xb3, 0x2f, 0x5c, 0xe2, 0xf7, 0x75, 0x46, 0xb1, 0x66, 0xb3, 0x43, 0xb2, 0x5a, 0x63, 0xfe, 0xf5, - 0xfc, 0x18, 0xf7, 0xc9, 0xb6, 0x3e, 0x0f, 0xe6, 0xd2, 0xea, 0x26, 0x86, 0xcd, 0x0d, 0x2c, 0xeb, - 0xd8, 0x60, 0xd3, 0xdb, 0x36, 0xb3, 0xd4, 0xde, 0xa0, 0xba, 0x4b, 0xf3, 0x07, 0x81, 0xb7, 0xdb, - 0xb8, 0x4e, 0x7b, 0x66, 0x6d, 0x85, 0x59, 0xdb, 0x90, 0xf6, 0xf9, 0xf2, 0x48, 0xed, 0x8e, 0x7c, - 0x09, 0x2e, 0xa3, 0xf5, 0x65, 0x1d, 0xee, 0x85, 0x6d, 0xbe, 0xf5, 0x24, 0xef, 0x57, 0xee, 0x87, - 0xef, 0x48, 0xf8, 0x97, 0x56, 0xbb, 0x8e, 0xfd, 0xf2, 0x95, 0x34, 0x6a, 0xe9, 0x72, 0xb6, 0xd3, - 0xae, 0x67, 0xad, 0x6e, 0x74, 0x66, 0x45, 0x2d, 0x1e, 0x75, 0x95, 0x19, 0xb3, 0xc2, 0x43, 0x69, - 0xba, 0xba, 0xe9, 0x17, 0xb4, 0x98, 0xd7, 0x6c, 0xee, 0xc7, 0x66, 0x36, 0x64, 0x73, 0x97, 0xb6, - 0x4d, 0xbc, 0xd8, 0x6c, 0x2b, 0x09, 0x38, 0x1a, 0x68, 0x97, 0x4e, 0xc3, 0x19, 0x60, 0x33, 0x8f, - 0xa9, 0x7f, 0x83, 0xbf, 0x94, 0xe1, 0x82, 0xb0, 0xf6, 0xfd, 0x9b, 0x79, 0x68, 0x98, 0xc3, 0xf6, - 0x65, 0xee, 0x50, 0x71, 0xa7, 0xc3, 0x46, 0x8d, 0x36, 0xd6, 0x8f, 0xc3, 0xf3, 0x9b, 0xfb, 0xe5, - 0xce, 0x51, 0x71, 0xcd, 0x2d, 0xea, 0xc9, 0x9c, 0xcf, 0xed, 0x5f, 0x35, 0x47, 0x96, 0x93, 0x48, - 0xa7, 0x8b, 0x88, 0x59, 0x13, 0x7b, 0x8b, 0x18, 0x6d, 0x8a, 0x57, 0x20, 0x01, 0x33, 0x01, 0xd6, - 0xe6, 0x05, 0x73, 0x73, 0xd3, 0x4b, 0xe0, 0x09, 0xcf, 0x17, 0xe7, 0x3a, 0x4a, 0xe7, 0x96, 0xfb, - 0x8b, 0xf9, 0xd2, 0x56, 0x4f, 0x18, 0xab, 0x7f, 0x23, 0xc7, 0x30, 0xe0, 0x1f, 0xd9, 0x2e, 0x32, - 0xd6, 0x4a, 0x97, 0xb6, 0x68, 0xa3, 0xcd, 0x9c, 0x0d, 0xcc, 0x88, 0xb2, 0x55, 0xfd, 0x8f, 0x9b, - 0x7a, 0x2a, 0xb4, 0xfb, 0xd1, 0x48, 0x37, 0x18, 0xa3, 0x53, 0x7a, 0x1b, 0x78, 0xca, 0x63, 0x66, - 0xf0, 0x6d, 0xc4, 0x5d, 0x7a, 0x3d, 0x9b, 0x29, 0x7e, 0xa9, 0xcd, 0xb7, 0xc0, 0xc2, 0x76, 0x98, - 0x0d, 0x2f, 0x52, 0x11, 0xcd, 0x27, 0x18, 0x3e, 0x2e, 0x8a, 0x21, 0xac, 0x2a, 0x67, 0xb7, 0xcb, - 0x21, 0xc2, 0xc8, 0x9f, 0xfb, 0xd5, 0x99, 0x7f, 0x78, 0xb6, 0x37, 0x38, 0x27, 0x89, 0x6d, 0x11, - 0x47, 0xe5, 0x30, 0xf0, 0x97, 0x88, 0xba, 0x02, 0x91, 0x2f, 0x20, 0x59, 0xcf, 0xda, 0xa0, 0x4e, - 0x88, 0x9d, 0xa6, 0xbd, 0x98, 0x2f, 0x14, 0xb4, 0x17, 0x7c, 0x1d, 0x51, 0xa6, 0x72, 0x7a, 0x6f, - 0x05, 0x94, 0x61, 0xb5, 0x7d, 0x71, 0xa4, 0xee, 0x00, 0x47, 0x85, 0x32, 0x7d, 0xa3, 0xc3, 0xe2, - 0x59, 0x71, 0x2e, 0x6e, 0xc8, 0xf4, 0xb7, 0x61, 0x85, 0x23, 0xc7, 0x69, 0x54, 0x3f, 0x8e, 0x50, - 0xea, 0x79, 0x05, 0x07, 0x57, 0x4f, 0xe9, 0x2f, 0x70, 0x2f, 0xc6, 0x6e, 0xee, 0x22, 0xec, 0x8b, - 0x5c, 0x45, 0x80, 0xf5, 0xe1, 0x7a, 0x56, 0xa0, 0x5d, 0x22, 0x4c, 0xf1, 0x74, 0xac, 0xad, 0x41, - 0x1d, 0xcb, 0x7e, 0x79, 0x4e, 0x6f, 0xbf, 0x3e, 0x49, 0xdf, 0xac, 0x81, 0xe7, 0x73, 0x89, 0x77, - 0xbb, 0xbb, 0x22, 0x56, 0xb2, 0x15, 0x64, 0x9a, 0x6d, 0x07, 0xd1, 0x57, 0x31, 0x0b, 0x8c, 0x55, - 0x57, 0x98, 0xdd, 0xce, 0x76, 0x43, 0x31, 0xaa, 0xc4, 0xce, 0x97, 0x08, 0x00, 0x53, 0x20, 0xb2, - 0xbc, 0x41, 0x73, 0xf2, 0x10, 0x5d, 0x76, 0x1a, 0x4c, 0x30, 0x3e, 0x57, 0xba, 0x07, 0x37, 0x2c, - 0x6f, 0xa4, 0x90, 0xcd, 0xd9, 0x9b, 0x24, 0xad, 0xac, 0x97, 0xea, 0x4e, 0x23, 0x5d, 0x37, 0x10, - 0xd8, 0x84, 0x77, 0x05, 0x8a, 0x89, 0xe7, 0xad, 0x31, 0x04, 0x49, 0x0d, 0x5c, 0xd6, 0x02, 0x5e, - 0x36, 0xb9, 0x57, 0x68, 0x43, 0x6c, 0x1a, 0x65, 0xc0, 0x12, 0x55, 0x90, 0x05, 0xc6, 0x03, 0x8f, - 0x8e, 0x5c, 0x85, 0xd4, 0xd3, 0x5b, 0x0f, 0x86, 0xe6, 0x08, 0x9d, 0x55, 0x8f, 0x44, 0xdc, 0x72, - 0x13, 0x00, 0x41, 0x68, 0xae, 0xcc, 0x53, 0x64, 0x34, 0x9b, 0x9d, 0xc8, 0x28, 0x3b, 0xd6, 0x38, - 0x17, 0x50, 0x2a, 0xc5, 0x44, 0x01, 0x03, 0x44, 0xfd, 0xf2, 0xfc, 0xea, 0x21, 0x2d, 0x01, 0xfb, - 0xa9, 0xf5, 0xe8, 0xac, 0x3c, 0x37, 0x33, 0x57, 0xab, 0xa4, 0xab, 0x4c, 0x95, 0x83, 0x8b, 0x5a, - 0x34, 0x63, 0x5c, 0xbd, 0xc7, 0x69, 0x6b, 0x33, 0xd5, 0x94, 0x41, 0xd7, 0xd3, 0xd6, 0x7c, 0x7f, - 0xd0, 0xd5, 0x74, 0xfb, 0x49, 0x4b, 0x3b, 0x91, 0xc1, 0x6a, 0x8d, 0x09, 0x35, 0x43, 0x07, 0xef, - 0x42, 0xc5, 0x1b, 0xb7, 0x46, 0xbf, 0x34, 0xc6, 0x3b, 0x6b, 0x58, 0x9f, 0x51, 0x39, 0x3a, 0x0b, - 0xab, 0x82, 0x59, 0x43, 0x09, 0xd9, 0xab, 0x8f, 0xa5, 0xa9, 0xe3, 0x1c, 0x04, 0xdf, 0x64, 0x7a, - 0x06, 0xcd, 0x2a, 0xdf, 0x6f, 0x56, 0xa3, 0x35, 0xd2, 0x9b, 0x54, 0xfc, 0x8b, 0x01, 0xa4, 0xaa, - 0x6a, 0xa1, 0x15, 0xb6, 0x6c, 0xb3, 0xcb, 0x49, 0x21, 0x21, 0x2c, 0x49, 0x62, 0xac, 0x6e, 0x3b, - 0xfc, 0xce, 0x6c, 0x0b, 0x2b, 0xdf, 0xa4, 0x87, 0x1b, 0x0e, 0x70, 0xcf, 0x30, 0xa8, 0xd0, 0x20, - 0x71, 0xe1, 0xd9, 0x55, 0x41, 0x3e, 0xb8, 0xe8, 0x70, 0xe9, 0x1a, 0x56, 0x75, 0xad, 0x91, 0xcc, - 0x55, 0x33, 0x2a, 0x1b, 0x34, 0x7e, 0xdf, 0xd3, 0x45, 0x68, 0xf5, 0xbe, 0xc9, 0x66, 0x55, 0xb1, - 0xe7, 0x34, 0x50, 0x9c, 0xb6, 0x6b, 0x67, 0x96, 0x13, 0xdb, 0x5a, 0x5a, 0x32, 0x41, 0x19, 0x9c, - 0x40, 0xcf, 0x9c, 0xe8, 0xd1, 0xa4, 0x9e, 0x30, 0x0c, 0x46, 0xb5, 0x83, 0xc2, 0x3c, 0x59, 0x16, - 0x25, 0x40, 0x1e, 0x15, 0x96, 0x96, 0xf3, 0x46, 0xec, 0x1e, 0xd5, 0xb6, 0x8d, 0xdc, 0x8c, 0xf2, - 0x95, 0xc6, 0xc2, 0x74, 0xbd, 0x7a, 0xf4, 0x94, 0x63, 0xe5, 0xe9, 0xf5, 0xed, 0x7c, 0x4e, 0x22, - 0x32, 0xc4, 0x80, 0x6e, 0x57, 0xca, 0x8a, 0x14, 0x4c, 0x5f, 0x4a, 0x50, 0x93, 0xc0, 0xfa, 0x02, - 0xf2, 0x43, 0xd5, 0x91, 0x16, 0x87, 0xca, 0x0d, 0x9d, 0x29, 0x4d, 0x53, 0xfa, 0xa7, 0x5a, 0xfe, - 0x0b, 0x8f, 0x97, 0x03, 0x86, 0x38, 0x47, 0x3c, 0xde, 0x38, 0xfd, 0xb4, 0x59, 0x2f, 0x16, 0xeb, - 0xba, 0x41, 0x07, 0x54, 0x6a, 0xb5, 0x6a, 0xff, 0x17, 0x37, 0xbe, 0x9a, 0x11, 0x41, 0x3a, 0xda, - 0x97, 0x48, 0xf9, 0xc0, 0xf0, 0x9b, 0x6c, 0xa3, 0x9a, 0xe6, 0x71, 0x90, 0x26, 0x5d, 0xf6, 0xb2, - 0x55, 0xc4, 0xae, 0x0b, 0xd1, 0x66, 0x1f, 0x0d, 0xc1, 0xd7, 0xe8, 0x1f, 0xc4, 0xeb, 0xc1, 0xc1, - 0x1f, 0x59, 0xdc, 0x0e, 0xf4, 0xf6, 0x5f, 0x60, 0x13, 0x1a, 0x0e, 0xa8, 0xb3, 0xb8, 0x82, 0xa9, - 0xe8, 0x8a, 0x08, 0x6d, 0x26, 0xaf, 0xe3, 0x86, 0xfa, 0x0c, 0x28, 0xae, 0x18, 0x4d, 0xb1, 0x8d, - 0x52, 0xf0, 0x6f, 0x0f, 0x9b, 0xbe, 0xd1, 0x06, 0xb1, 0xae, 0x3a, 0x06, 0x9a, 0x6f, 0x33, 0xe9, - 0xfd, 0xa1, 0x49, 0x38, 0x30, 0x8c, 0xb3, 0x7e, 0x91, 0xb8, 0x25, 0x25, 0x64, 0x4b, 0x60, 0x09, - 0xc6, 0xef, 0x68, 0xc0, 0xb4, 0x9c, 0xc2, 0x39, 0xbe, 0x7e, 0xac, 0xa4, 0x31, 0x5c, 0xe0, 0x09, - 0xb9, 0x56, 0x34, 0xb6, 0x12, 0x6d, 0xf1, 0x65, 0x9d, 0xff, 0xb6, 0x09, 0xec, 0x59, 0x92, 0x04, - 0x7d, 0x92, 0x72, 0x83, 0x7d, 0x47, 0xfa, 0xa5, 0x6d, 0x86, 0x60, 0xf7, 0x9e, 0x4a, 0x56, 0x8e, - 0x03, 0x02, 0xf9, 0x0c, 0x8b, 0xfa, 0x29, 0x8a, 0x7e, 0x4b, 0xaf, 0xbe, 0xa5, 0x93, 0xd3, 0xe5, - 0x52, 0x05, 0xfb, 0x7b, 0x8a, 0xa0, 0x19, 0x05, 0xf9, 0x92, 0xe9, 0x59, 0x92, 0xec, 0x7f, 0x6a, - 0xb5, 0x9d, 0xe2, 0x6a, 0x56, 0x69, 0x21, 0x2e, 0x71, 0xb1, 0xb3, 0x51, 0xe3, 0x8a, 0xdf, 0xdd, - 0xb8, 0x8b, 0x91, 0xf2, 0x12, 0x5a, 0xaf, 0x5c, 0xb0, 0xf4, 0x0a, 0xfc, 0x6e, 0x86, 0x31, 0xda, - 0x18, 0x1f, 0x27, 0xa6, 0x45, 0xa0, 0x30, 0x07, 0x37, 0x00, 0xc9, 0x91, 0xeb, 0xa1, 0xb6, 0x5a, - 0x2b, 0x78, 0x4e, 0x87, 0x5b, 0x3f, 0x5c, 0xa3, 0x12, 0xf9, 0x98, 0x5a, 0xcd, 0xae, 0x5a, 0x65, - 0x34, 0x4a, 0xe3, 0x23, 0xaf, 0x8c, 0x7e, 0x7d, 0x4c, 0xdb, 0xba, 0xb5, 0x3f, 0xb6, 0xf7, 0x83, - 0xca, 0x07, 0xbc, 0x97, 0xc6, 0x98, 0xbc, 0x98, 0x6f, 0xdb, 0x48, 0x4a, 0x85, 0x6e, 0xdb, 0x68, - 0xa8, 0xa0, 0x53, 0xcf, 0x2e, 0xfd, 0x35, 0x40, 0xf6, 0x03, 0x60, 0x68, 0x8b, 0x68, 0x32, 0xe1, - 0x8e, 0x62, 0x5c, 0xe0, 0x55, 0x3b, 0x06, 0x63, 0x7f, 0xd2, 0x73, 0x9f, 0xaa, 0x9a, 0xb8, 0xa7, - 0xd7, 0xf9, 0xbd, 0xa3, 0x0e, 0x22, 0xac, 0xa1, 0x02, 0x8c, 0x3e, 0xc6, 0xdc, 0xfd, 0xab, 0xc6, - 0xf5, 0xbd, 0x4f, 0xca, 0x6b, 0x47, 0x5d, 0x42, 0xff, 0x4a, 0x8b, 0x46, 0x1a, 0x47, 0xc9, 0xb4, - 0x55, 0x53, 0xc7, 0xd4, 0x42, 0x71, 0xd3, 0xa2, 0xc6, 0xde, 0xe9, 0xe7, 0x71, 0x51, 0x31, 0x78, - 0x74, 0xea, 0xf3, 0xe7, 0xb2, 0xcd, 0xe9, 0x7f, 0x53, 0x8f, 0x7f, 0x45, 0x9a, 0x8a, 0x06, 0xda, - 0xc6, 0x7d, 0x91, 0x1f, 0x98, 0xc8, 0x9b, 0x07, 0x62, 0x30, 0x5e, 0x9f, 0xbc, 0x85, 0xc9, 0x24, - 0xf0, 0xa5, 0x35, 0x43, 0xd5, 0x50, 0xc4, 0x75, 0xe6, 0xae, 0x4b, 0x47, 0x8b, 0xc4, 0xc2, 0x27, - 0xee, 0x7e, 0xe7, 0xc0, 0x7c, 0xe7, 0xa0, 0xe6, 0x78, 0xd6, 0x52, 0x82, 0x48, 0x96, 0x17, 0x76, - 0x99, 0x3b, 0x6f, 0x7f, 0xe8, 0xda, 0x64, 0x2a, 0x4e, 0x33, 0xab, 0xef, 0x38, 0x7a, 0x8f, 0xa9, - 0x40, 0xdb, 0x8d, 0x9d, 0xe6, 0xe0, 0x65, 0xc0, 0x3b, 0xcd, 0x40, 0xef, 0x34, 0x98, 0xf0, 0x78, - 0xd8, 0x84, 0x8e, 0x5f, 0x8d, 0xbb, 0x9a, 0x27, 0xf4, 0x8f, 0x1b, 0xb2, 0x6c, 0xd8, 0x8f, 0x9c, - 0x08, 0x8e, 0x2d, 0xbd, 0x02, 0xd7, 0x6b, 0x0c, 0x94, 0x12, 0x84, 0xc7, 0x80, 0xe9, 0x54, 0x91, - 0xa8, 0xa4, 0x4d, 0x41, 0x43, 0x50, 0xd8, 0x88, 0x6d, 0xd0, 0x5d, 0x59, 0x70, 0x1c, 0xa2, 0x43, - 0x3b, 0x4f, 0xb5, 0x8f, 0x07, 0x70, 0x67, 0x37, 0xde, 0xdd, 0x99, 0x49, 0xdc, 0x37, 0x0d, 0x07, - 0x72, 0xd2, 0xe3, 0xf4, 0x8d, 0xd1, 0x40, 0x7e, 0x10, 0xa2, 0xf4, 0xce, 0x6e, 0xcf, 0x6a, 0xac, - 0x6a, 0x9e, 0x37, 0xdc, 0xd9, 0x00, 0xb2, 0xda, 0x0c, 0x55, 0xe4, 0x8e, 0x8f, 0xd9, 0xff, 0x7a, - 0xc7, 0xea, 0x59, 0x3b, 0x79, 0x01, 0x0c, 0x5f, 0xf6, 0xd9, 0xbd, 0x14, 0xb0, 0x69, 0x24, 0x97, - 0x56, 0xf4, 0x81, 0xe7, 0x62, 0xc6, 0x8c, 0x1a, 0xd4, 0x18, 0xd9, 0x3c, 0x89, 0xa8, 0x0d, 0x1d, - 0x57, 0x98, 0xd8, 0xa8, 0xea, 0xa2, 0x26, 0x45, 0x77, 0xaa, 0x93, 0x16, 0x0d, 0x65, 0x52, 0x3b, - 0xf0, 0xed, 0xe6, 0xda, 0x75, 0x31, 0x7a, 0x86, 0xc2, 0xfb, 0x09, 0x45, 0xb7, 0x14, 0x36, 0x7a, - 0x81, 0x42, 0xa7, 0x6d, 0x38, 0x71, 0xda, 0x4a, 0x0c, 0x6d, 0xee, 0x7c, 0xd1, 0xd0, 0x25, 0x12, - 0x07, 0x47, 0xa6, 0x0a, 0x5d, 0x6d, 0x9d, 0x7c, 0x65, 0x0b, 0x53, 0x38, 0xae, 0x6a, 0x5a, 0xf7, - 0xa5, 0xa3, 0x7e, 0xab, 0x60, 0xc5, 0x67, 0xd8, 0x95, 0x74, 0xa3, 0x85, 0x02, 0x21, 0x44, 0x91, - 0xa6, 0xe0, 0xa4, 0xf0, 0x2f, 0x2d, 0xc9, 0xe9, 0x69, 0xc8, 0x1b, 0x43, 0xe5, 0x62, 0x13, 0x77, - 0xfa, 0x8c, 0xb5, 0xd8, 0x8e, 0x77, 0x63, 0x91, 0x0d, 0x6d, 0x20, 0x19, 0xed, 0x2a, 0x74, 0xda, - 0x66, 0xcb, 0x18, 0x39, 0xf4, 0x2d, 0x39, 0xde, 0xeb, 0x53, 0x71, 0x7b, 0x1e, 0x62, 0xa7, 0x5f, - 0x51, 0xa3, 0x76, 0x07, 0xab, 0x0a, 0xa0, 0xc5, 0xdc, 0x5c, 0x6a, 0x9a, 0x6c, 0xaa, 0xb4, 0xa1, - 0xaf, 0x26, 0xf6, 0xf6, 0xea, 0xe5, 0xcb, 0xc3, 0xbe, 0xe0, 0x70, 0x41, 0xff, 0x80, 0x36, 0xa9, - 0x78, 0x41, 0x5f, 0x06, 0xa6, 0xe0, 0xcd, 0x9a, 0x81, 0xc6, 0x1c, 0x29, 0x6e, 0x58, 0x57, 0x0c, - 0xec, 0x0f, 0xb4, 0xbc, 0xfb, 0xbc, 0x76, 0xe8, 0x56, 0x04, 0xed, 0xad, 0x78, 0xbf, 0x51, 0x23, - 0x2c, 0x5d, 0x82, 0x68, 0x4b, 0xf1, 0x9c, 0xf9, 0x8f, 0x66, 0xe6, 0x45, 0x93, 0x50, 0x42, 0x6d, - 0x3e, 0xff, 0x4a, 0x7b, 0xdb, 0xc0, 0x3b, 0x32, 0xe7, 0x6e, 0xf9, 0x3f, 0x16, 0x1a, 0x53, 0xc7, - 0xb2, 0x93, 0x9c, 0x03, 0x38, 0xca, 0x47, 0x07, 0x13, 0xc3, 0xe0, 0x08, 0xe1, 0x11, 0xb2, 0x38, - 0x9e, 0x39, 0x74, 0xa2, 0x42, 0xe8, 0xb8, 0xd2, 0x39, 0xd0, 0x61, 0x12, 0x68, 0x0b, 0x44, 0x69, - 0x84, 0x20, 0x90, 0x6c, 0x75, 0x0b, 0xaa, 0x07, 0x39, 0x3c, 0x81, 0x35, 0x3c, 0xc1, 0xf9, 0x51, - 0x50, 0xa9, 0x61, 0xea, 0xcf, 0xc2, 0x72, 0xd9, 0x76, 0x75, 0xfc, 0x2c, 0xb6, 0xf5, 0x34, 0xdf, - 0x92, 0x9c, 0x4b, 0xb6, 0xd5, 0x1c, 0x94, 0x6e, 0xe6, 0xa5, 0xae, 0x10, 0x06, 0x41, 0xe0, 0x5a, - 0xab, 0xbf, 0x27, 0x40, 0x9a, 0x2d, 0x66, 0x66, 0x2a, 0xca, 0x02, 0xcf, 0xab, 0x29, 0xfb, 0x9f, - 0xc3, 0x9e, 0x9f, 0xa7, 0xeb, 0xd7, 0x1b, 0xd3, 0x66, 0xf4, 0x72, 0xcc, 0x01, 0x11, 0x35, 0x0b, - 0x37, 0xf4, 0xfd, 0xdd, 0x87, 0xbd, 0x8e, 0x17, 0xa7, 0x8d, 0x37, 0xff, 0xab, 0x76, 0xce, 0xfb, - 0x97, 0x7d, 0xd0, 0x53, 0xef, 0xd6, 0x93, 0x60, 0xdd, 0x36, 0x98, 0xa1, 0x87, 0x8f, 0x8b, 0x27, - 0xa3, 0xd9, 0xb0, 0xe0, 0x5a, 0x69, 0xd0, 0x46, 0x1d, 0xd9, 0x5a, 0xd4, 0x50, 0x4f, 0xbb, 0x50, - 0xc9, 0xa2, 0x07, 0x6d, 0x45, 0x2d, 0xa7, 0x29, 0xab, 0xd1, 0x7c, 0x51, 0xdc, 0xe6, 0x7e, 0xa1, - 0x1c, 0x29, 0xcb, 0x0e, 0x95, 0x5d, 0xa8, 0xa3, 0x3f, 0x5e, 0x21, 0xd6, 0xdd, 0x0d, 0x91, 0x44, - 0x3c, 0x3b, 0x45, 0xc6, 0xde, 0xba, 0xba, 0x3c, 0x55, 0x4d, 0x37, 0x22, 0x93, 0x06, 0xa3, 0xd5, - 0xa3, 0x09, 0xac, 0xe0, 0xe1, 0xd9, 0xf9, 0xaa, 0x86, 0x0f, 0x23, 0xa0, 0xa8, 0x18, 0x1c, 0x06, - 0x17, 0x82, 0x02, 0xf9, 0x82, 0xf2, 0xa6, 0xc3, 0x8c, 0x0e, 0x00, 0x2b, 0x04, 0xb3, 0xa9, 0xac, - 0x71, 0xcc, 0x28, 0xf3, 0x12, 0x8b, 0x37, 0xae, 0x99, 0x5f, 0xe1, 0x2d, 0x80, 0xe5, 0x89, 0x61, - 0x48, 0x3e, 0xec, 0xf6, 0x69, 0x8d, 0x8d, 0x29, 0x5c, 0xad, 0x38, 0xcc, 0x9e, 0x51, 0x75, 0x29, - 0xab, 0xee, 0x22, 0x04, 0x63, 0x5c, 0x85, 0x45, 0x41, 0xf6, 0x3c, 0x47, 0xe2, 0xe2, 0x59, 0x8e, - 0xc4, 0xd0, 0x4c, 0x16, 0x47, 0x61, 0xe6, 0xcd, 0x54, 0x9f, 0x19, 0x93, 0x44, 0x5e, 0x3d, 0x19, - 0x5d, 0xce, 0x86, 0xa5, 0x2f, 0x50, 0x26, 0x33, 0x1f, 0x28, 0x94, 0xc3, 0xc6, 0x65, 0x6b, 0x36, - 0x0c, 0xbc, 0xdd, 0x62, 0xb5, 0x1a, 0xad, 0x73, 0x8f, 0x36, 0x1c, 0x8a, 0xf3, 0xe7, 0x3a, 0x14, - 0x47, 0xcf, 0x74, 0x28, 0xf6, 0x93, 0x0d, 0x0a, 0xe4, 0xf3, 0x6a, 0x2c, 0x52, 0x26, 0x13, 0x7a, - 0x67, 0x98, 0xfb, 0xe2, 0x3b, 0x55, 0x17, 0x46, 0xf2, 0x7b, 0x3e, 0x0f, 0x93, 0x95, 0x49, 0x10, - 0xa9, 0x79, 0xe1, 0xa2, 0xc7, 0xef, 0xb1, 0x82, 0x2f, 0x6b, 0xdd, 0x77, 0x68, 0x93, 0xe1, 0xf0, - 0x3c, 0x37, 0xb7, 0x69, 0x99, 0xd0, 0xc6, 0x5c, 0xa1, 0xb1, 0xd1, 0x13, 0xa9, 0x26, 0x27, 0x82, - 0xe7, 0x9d, 0xa7, 0xc2, 0xd4, 0x3f, 0x47, 0x0c, 0x21, 0x55, 0xf3, 0xde, 0x9e, 0xdf, 0x45, 0x98, - 0x98, 0x99, 0x40, 0x10, 0x9d, 0x4d, 0x75, 0x40, 0xf0, 0xeb, 0x26, 0x68, 0x3a, 0xae, 0x77, 0x13, - 0x34, 0x3d, 0x5c, 0x4b, 0xd0, 0x7f, 0x49, 0xd6, 0xd4, 0x7c, 0x93, 0x74, 0x57, 0x7c, 0x93, 0x3c, - 0xb5, 0x50, 0x00, 0x0b, 0xdc, 0x5d, 0x77, 0x9e, 0x0d, 0xb7, 0x14, 0xda, 0x70, 0x7c, 0x6e, 0x59, - 0x14, 0x56, 0xa8, 0xbe, 0xdd, 0xc5, 0x2f, 0x97, 0xc9, 0xf0, 0x69, 0x02, 0x61, 0x50, 0x3a, 0x75, - 0xe3, 0x53, 0x7b, 0xc5, 0x3f, 0x74, 0xa0, 0x1d, 0xfc, 0x85, 0x91, 0xf9, 0x24, 0x36, 0x69, 0xce, - 0xf6, 0xe2, 0xd8, 0xf9, 0x4a, 0x38, 0xb4, 0x38, 0x75, 0x67, 0x9b, 0xa1, 0x1c, 0x83, 0x1d, 0xf5, - 0x9e, 0xe1, 0xc6, 0x45, 0x95, 0x5b, 0x0a, 0x9d, 0xa4, 0x4c, 0x77, 0x94, 0x91, 0xe2, 0x2e, 0x35, - 0x5f, 0x14, 0x55, 0x8d, 0xe9, 0x8d, 0x53, 0xc2, 0xc1, 0x73, 0xad, 0x53, 0x4a, 0xbd, 0x9a, 0x0b, - 0x5d, 0x4d, 0xdd, 0x2d, 0x25, 0x7e, 0xca, 0x25, 0xa5, 0x39, 0x15, 0xf3, 0x87, 0xa1, 0x11, 0xce, - 0xaf, 0x3e, 0xc2, 0xd2, 0xfc, 0xfa, 0x99, 0xe3, 0xac, 0x60, 0xb3, 0x5a, 0x3d, 0x79, 0x36, 0x19, - 0xed, 0xb5, 0x15, 0x3c, 0x77, 0xcc, 0x35, 0x88, 0xd7, 0xef, 0x1c, 0x74, 0x0b, 0x0c, 0xec, 0x77, - 0x8e, 0x3a, 0xd5, 0x35, 0x8c, 0xeb, 0x83, 0x8d, 0xe5, 0x52, 0x5b, 0x2d, 0xeb, 0xd7, 0x48, 0xd3, - 0x47, 0xd2, 0xab, 0x2f, 0x42, 0x78, 0xad, 0xf5, 0xda, 0x96, 0x60, 0xf1, 0xf0, 0x74, 0xc5, 0x96, - 0xcf, 0x9b, 0xd7, 0xc2, 0x22, 0xb4, 0xa7, 0x5b, 0xeb, 0x2b, 0x92, 0x0d, 0x5e, 0xd1, 0xf0, 0x95, - 0x6b, 0x7b, 0xcd, 0xcf, 0x79, 0x93, 0x0d, 0x21, 0x4e, 0x6f, 0x5c, 0xa7, 0x56, 0x11, 0xfc, 0xa6, - 0x12, 0x4c, 0x16, 0x05, 0xe5, 0x19, 0x59, 0x31, 0x70, 0x18, 0xd3, 0x20, 0xcf, 0xe0, 0x0d, 0x60, - 0xc6, 0x95, 0xfb, 0x59, 0x46, 0x60, 0x5b, 0x28, 0xc3, 0x0e, 0xa5, 0x88, 0x96, 0x71, 0x1b, 0x38, - 0x64, 0x83, 0xdf, 0x29, 0xb1, 0xb0, 0xd6, 0x8b, 0xb5, 0x0c, 0xbd, 0xad, 0xde, 0xe2, 0xed, 0xda, - 0x2b, 0x4f, 0x3b, 0x6e, 0x22, 0xc2, 0x6b, 0x2f, 0xde, 0x1e, 0x0d, 0xd0, 0x30, 0x2a, 0xd8, 0xa5, - 0x9e, 0xf3, 0x38, 0x86, 0x7c, 0x6f, 0xf1, 0xae, 0x4b, 0x76, 0x2d, 0x1f, 0xb4, 0xc8, 0xc2, 0x55, - 0xbd, 0x0b, 0xa1, 0x9f, 0xd2, 0x17, 0x96, 0x6e, 0x65, 0xb3, 0xe2, 0xed, 0x2e, 0xde, 0x2a, 0x67, - 0xa4, 0xc7, 0x0e, 0x71, 0xa1, 0x4d, 0x1c, 0xf6, 0xca, 0x09, 0xbc, 0x39, 0x64, 0x8d, 0xd5, 0x3d, - 0xaa, 0x9f, 0x89, 0xf1, 0xc4, 0x27, 0xe3, 0x96, 0x52, 0xae, 0xe4, 0xb2, 0x33, 0x62, 0xe4, 0xa5, - 0x7d, 0x9b, 0x9d, 0xf5, 0x8b, 0xce, 0xbc, 0x85, 0x9d, 0xd7, 0x90, 0x8d, 0x8a, 0xae, 0x22, 0xd1, - 0x42, 0x6f, 0x17, 0x1c, 0xee, 0xcf, 0x0a, 0x43, 0x55, 0xa8, 0x50, 0x7e, 0xa5, 0xc0, 0x0a, 0x42, - 0xfc, 0xc4, 0xb0, 0xf0, 0x2b, 0x7b, 0x07, 0xe5, 0x4b, 0x0b, 0xaf, 0xa5, 0xde, 0xc6, 0xa1, 0x2b, - 0x55, 0x3c, 0x4a, 0x2b, 0x16, 0x3a, 0x87, 0xf2, 0x33, 0x94, 0xcd, 0x0e, 0x5f, 0x22, 0x0b, 0x37, - 0xa9, 0x42, 0xd8, 0x90, 0xfc, 0x75, 0xde, 0x73, 0x1f, 0x5d, 0x6f, 0xbc, 0x37, 0xf8, 0x7d, 0xef, - 0x3d, 0xfd, 0x94, 0x95, 0xd1, 0x83, 0x74, 0xb5, 0xa3, 0xc3, 0xe6, 0xf4, 0x96, 0xe4, 0x90, 0x1b, - 0x07, 0x1d, 0x37, 0x5b, 0x20, 0xde, 0x1d, 0x84, 0xa1, 0xf1, 0x7a, 0xd1, 0x64, 0xd7, 0xfb, 0xb7, - 0x74, 0x5c, 0x9e, 0x56, 0xd9, 0x92, 0x7f, 0x11, 0x5d, 0xc5, 0xce, 0x65, 0x4c, 0x27, 0x02, 0x12, - 0xb5, 0xf2, 0x59, 0x32, 0xff, 0x84, 0xd5, 0xc5, 0xee, 0x00, 0x4a, 0x51, 0xba, 0x12, 0xf4, 0x42, - 0x1f, 0x0b, 0xac, 0x9f, 0x70, 0xf1, 0x96, 0x88, 0x81, 0xa4, 0xed, 0x77, 0xd2, 0xc0, 0xa8, 0xa3, - 0x19, 0x1f, 0x53, 0x3d, 0xc1, 0xa9, 0x0e, 0xd6, 0x06, 0xc8, 0x86, 0xfe, 0xc7, 0x14, 0x41, 0x44, - 0x8c, 0x45, 0x2d, 0x43, 0x1a, 0x62, 0x31, 0x8b, 0x65, 0xbc, 0x78, 0xdb, 0x5c, 0xc7, 0x19, 0x50, - 0xf9, 0xf2, 0x89, 0x30, 0x04, 0x3b, 0x5b, 0xbc, 0x3d, 0x0f, 0x33, 0x3b, 0x1e, 0x19, 0x25, 0x89, - 0x16, 0x36, 0x93, 0xf3, 0x66, 0xd2, 0x5d, 0x33, 0x89, 0x43, 0xe4, 0x0c, 0x8d, 0x17, 0x3c, 0x66, - 0xc3, 0xc5, 0x3b, 0x1f, 0xc1, 0x3b, 0xdd, 0xae, 0xa1, 0x83, 0x2b, 0x66, 0x2c, 0x43, 0x2f, 0x66, - 0xf1, 0x7d, 0xfa, 0x89, 0x79, 0xcc, 0x4c, 0xcd, 0x65, 0xdf, 0x5d, 0xf9, 0x4c, 0xbe, 0x2a, 0xda, - 0x1a, 0xbf, 0x08, 0xe4, 0xcc, 0xa9, 0xe8, 0xd2, 0xc7, 0xd4, 0x7a, 0xf6, 0x11, 0x6e, 0x4f, 0x1f, - 0x53, 0xcf, 0x6b, 0x86, 0xe6, 0xf3, 0x4d, 0x75, 0x82, 0x71, 0xfc, 0x14, 0xb7, 0xaf, 0xcc, 0xd5, - 0x88, 0x70, 0x18, 0x2b, 0x52, 0xd9, 0x40, 0xe1, 0x99, 0xa7, 0x83, 0x91, 0x9a, 0xa9, 0x61, 0xe0, - 0x9b, 0xd6, 0x62, 0xee, 0xe6, 0xf7, 0xb5, 0xae, 0xf0, 0x52, 0x87, 0x0c, 0x7d, 0x02, 0x2b, 0xc9, - 0x5a, 0xbd, 0x83, 0xe7, 0xd4, 0xab, 0x90, 0x4b, 0x61, 0x03, 0xec, 0x56, 0xbc, 0x6e, 0x2d, 0xfb, - 0xb2, 0x89, 0xc2, 0x60, 0xee, 0xb2, 0x41, 0xf6, 0xfe, 0xa3, 0x2a, 0x1a, 0x3e, 0x5a, 0xdb, 0x38, - 0x5f, 0x28, 0x3c, 0xa5, 0x67, 0x98, 0xe1, 0x88, 0x3a, 0xb2, 0x06, 0x74, 0x9a, 0xcd, 0x27, 0x3d, - 0xfb, 0x05, 0x94, 0x0b, 0x3b, 0x9c, 0x4d, 0x4f, 0xd4, 0xde, 0xc6, 0xfc, 0xb1, 0x79, 0x8e, 0x50, - 0x02, 0x4c, 0xa5, 0xab, 0xdf, 0x3c, 0x08, 0xdc, 0xe7, 0x8c, 0x97, 0x52, 0xfd, 0x1e, 0xe7, 0x19, - 0xf1, 0xa9, 0x1b, 0x79, 0x10, 0x42, 0x15, 0x46, 0x03, 0x43, 0x7b, 0x5b, 0xd6, 0x9e, 0xf7, 0x80, - 0x47, 0xa4, 0x9f, 0x61, 0x3c, 0xea, 0x32, 0x46, 0xec, 0x84, 0x11, 0x68, 0x20, 0x86, 0x96, 0x06, - 0x98, 0x40, 0xbe, 0xe4, 0x7b, 0xdf, 0x83, 0xc5, 0x83, 0x53, 0x00, 0x97, 0xd8, 0x61, 0x38, 0x00, - 0x6a, 0x54, 0x95, 0xe7, 0x26, 0x5a, 0x5e, 0xc1, 0x6e, 0xf9, 0xe5, 0xe2, 0xc1, 0x4a, 0xbf, 0x87, - 0xb3, 0x59, 0xe8, 0xbe, 0xa0, 0xb2, 0xee, 0xa8, 0x3c, 0x43, 0xf3, 0xea, 0xd5, 0xbe, 0x6c, 0x56, - 0x6b, 0x66, 0x53, 0x35, 0x1f, 0x88, 0x9a, 0xcd, 0x47, 0xb2, 0xf2, 0x97, 0x01, 0x1e, 0x4d, 0x17, - 0xc9, 0xf4, 0x83, 0x18, 0x77, 0x04, 0x77, 0xeb, 0xd5, 0x5e, 0x66, 0x3b, 0x61, 0xd2, 0x2e, 0x0e, - 0x44, 0x84, 0xc0, 0x77, 0xf0, 0xbf, 0x47, 0x3b, 0xfa, 0xda, 0xec, 0xdb, 0xdb, 0x75, 0xd4, 0x9c, - 0x4e, 0xcc, 0x81, 0xdf, 0x34, 0xd6, 0x80, 0xc4, 0x4c, 0xe0, 0x6a, 0x37, 0x02, 0x20, 0xfa, 0x0d, - 0xc0, 0x43, 0x35, 0x50, 0x5c, 0x81, 0x34, 0x41, 0x4c, 0xf4, 0x1a, 0x01, 0xa3, 0xb4, 0xed, 0xda, - 0xb1, 0x84, 0x5f, 0x73, 0x97, 0xb4, 0x9d, 0x84, 0x80, 0xd9, 0xa3, 0x93, 0xc1, 0xe3, 0xf5, 0x30, - 0xf0, 0x0b, 0xfa, 0x77, 0x37, 0xe4, 0xe8, 0x7d, 0x7d, 0x2b, 0xf8, 0xb7, 0x0e, 0xd5, 0x26, 0x31, - 0x57, 0x77, 0x5f, 0x06, 0xde, 0x68, 0x96, 0x3f, 0xc6, 0xfd, 0x6b, 0x33, 0xdb, 0xe1, 0xab, 0x5a, - 0x3e, 0x6f, 0x45, 0x1d, 0x49, 0xe3, 0x1e, 0x27, 0x46, 0x97, 0x88, 0xd3, 0x76, 0xbd, 0xc7, 0x2d, - 0x02, 0x08, 0x9f, 0x37, 0x12, 0x8d, 0xa3, 0xc4, 0x55, 0x7d, 0x06, 0x62, 0x76, 0x34, 0xe5, 0x01, - 0xec, 0x05, 0x0d, 0x0c, 0xb9, 0x6a, 0x2c, 0xa5, 0x4f, 0x8b, 0x59, 0x9c, 0x26, 0xc7, 0x6f, 0xa3, - 0x5f, 0x31, 0x50, 0xbf, 0xe0, 0xe0, 0xa0, 0xb1, 0x48, 0x96, 0xd6, 0xe0, 0xb2, 0x5d, 0x63, 0xaf, - 0xbb, 0xec, 0x9f, 0x80, 0x64, 0xa3, 0x8a, 0x5e, 0xd5, 0x8a, 0x1e, 0xac, 0x2d, 0xfa, 0xbd, 0x59, - 0xf4, 0xb2, 0x56, 0xf4, 0x50, 0x49, 0x72, 0x66, 0x37, 0xae, 0xe3, 0x87, 0x53, 0xf6, 0x92, 0xee, - 0x17, 0xb7, 0x97, 0xc2, 0x5f, 0xba, 0x37, 0x80, 0x6a, 0xca, 0xa4, 0x8d, 0x91, 0x88, 0xa7, 0x97, - 0xed, 0x92, 0x3c, 0x50, 0xe6, 0xa7, 0x32, 0xd7, 0xab, 0x56, 0x10, 0x2a, 0xaa, 0x70, 0x5a, 0x05, - 0xbd, 0xed, 0xc8, 0x90, 0xcd, 0xbb, 0x7d, 0x8f, 0x15, 0x64, 0xd8, 0xa1, 0x44, 0x5f, 0x4a, 0x3b, - 0x7b, 0xfb, 0x77, 0xb6, 0x19, 0x16, 0x6f, 0x32, 0xfb, 0x24, 0x76, 0x7c, 0xa1, 0xb8, 0x22, 0x8a, - 0xb3, 0xba, 0x7b, 0x1b, 0x13, 0xfd, 0x59, 0x64, 0x10, 0x95, 0xf2, 0x86, 0x4a, 0x12, 0xa5, 0x1f, - 0x85, 0xc9, 0x32, 0xef, 0x1f, 0x8b, 0xfc, 0xc5, 0xdd, 0xfb, 0xfc, 0x17, 0x5a, 0x87, 0x39, 0x74, - 0x54, 0x12, 0xa3, 0x24, 0xea, 0x2f, 0x19, 0x8b, 0x24, 0xea, 0x5f, 0xc9, 0xcf, 0x4b, 0xc8, 0x0a, - 0xa3, 0xf4, 0x77, 0x61, 0x34, 0xf2, 0xa1, 0x24, 0x5f, 0xc4, 0x4b, 0x3a, 0x22, 0xb9, 0x80, 0x83, - 0x74, 0xfd, 0xc4, 0x86, 0x05, 0x4b, 0xbb, 0xd7, 0xf4, 0x9f, 0xf5, 0x90, 0x9b, 0x7d, 0xfb, 0x10, - 0xa7, 0x24, 0xd5, 0x54, 0x64, 0x4d, 0x43, 0xcf, 0x96, 0x31, 0xad, 0x37, 0x01, 0x9b, 0xce, 0xcb, - 0x2b, 0xcf, 0xf5, 0x07, 0x87, 0xb4, 0xa2, 0xef, 0xe0, 0xc0, 0xfc, 0x21, 0xfe, 0x74, 0x4c, 0xdd, - 0xdd, 0xde, 0x06, 0x04, 0xd6, 0x4f, 0xf1, 0x83, 0x29, 0x15, 0xe8, 0xa4, 0xce, 0x90, 0xdf, 0x26, - 0xb1, 0x8c, 0x4c, 0x8a, 0xab, 0x4e, 0x45, 0xb1, 0x41, 0x98, 0xaf, 0x3c, 0x9f, 0xa8, 0x8e, 0x85, - 0xf5, 0xfa, 0x4a, 0x76, 0xbf, 0x02, 0x32, 0x44, 0x95, 0x35, 0xf0, 0x89, 0x3c, 0xab, 0x68, 0xdc, - 0xcd, 0xec, 0xf3, 0x79, 0x14, 0xd1, 0xce, 0xe7, 0xad, 0x04, 0x4a, 0xa1, 0xf9, 0x72, 0xaf, 0x82, - 0x93, 0x11, 0x8d, 0x09, 0x0c, 0x36, 0x71, 0x50, 0xeb, 0xe0, 0xdf, 0x7b, 0x8d, 0xda, 0x8f, 0xaf, - 0x23, 0xda, 0x4c, 0x53, 0xea, 0x5e, 0x71, 0x47, 0xf4, 0x71, 0xe7, 0xfa, 0x6b, 0x28, 0xb8, 0x61, - 0xa1, 0x8c, 0x4a, 0xff, 0xdc, 0xac, 0xb4, 0xf7, 0x28, 0x66, 0x73, 0xf8, 0x24, 0x09, 0xac, 0x6a, - 0x95, 0x81, 0x7c, 0xbb, 0xa7, 0x40, 0xf3, 0x2b, 0xa9, 0xc3, 0x5e, 0xcb, 0x97, 0xb4, 0x9e, 0x7b, - 0x0d, 0x03, 0x92, 0xb3, 0x59, 0x6f, 0xbe, 0xc4, 0xb1, 0x56, 0xf7, 0x9a, 0xb0, 0x73, 0x01, 0xec, - 0xa3, 0x79, 0x26, 0x17, 0x03, 0xbc, 0xc6, 0x51, 0xa1, 0x26, 0x1b, 0x90, 0x54, 0x44, 0x84, 0xf7, - 0xcc, 0x6d, 0xf2, 0xc9, 0xb9, 0x62, 0xf0, 0xed, 0xb5, 0x95, 0xd4, 0xf7, 0x01, 0xc1, 0x10, 0xfd, - 0x83, 0x2d, 0x34, 0xa7, 0xd7, 0x4e, 0xc6, 0x4f, 0x6e, 0xc6, 0x5e, 0x1b, 0x77, 0xc6, 0x26, 0x53, - 0x48, 0xdd, 0x3e, 0xa5, 0x0c, 0xcf, 0xce, 0x32, 0xda, 0x4c, 0x32, 0xda, 0x15, 0x32, 0x62, 0xef, - 0xe6, 0x9b, 0xce, 0xfd, 0x33, 0xfc, 0x7f, 0xbe, 0x5a, 0x61, 0x58, 0x90, 0x34, 0xb1, 0x0b, 0xd2, - 0xd3, 0x75, 0x65, 0xa9, 0xe0, 0xf0, 0x40, 0x14, 0x64, 0x18, 0x91, 0x5a, 0xd1, 0x75, 0xa5, 0xa1, - 0xce, 0xb5, 0x24, 0xe2, 0xa2, 0xa6, 0xab, 0x8a, 0x52, 0x18, 0xad, 0xb4, 0xab, 0x77, 0xa7, 0xd3, - 0xb2, 0xae, 0x54, 0xc4, 0x30, 0x5c, 0x4f, 0x4d, 0x61, 0x82, 0xb8, 0x62, 0xf6, 0xa7, 0x9f, 0x80, - 0x15, 0x27, 0xee, 0xa9, 0xf0, 0x9b, 0x66, 0xac, 0x2c, 0x17, 0xc0, 0x88, 0xbb, 0x4a, 0xca, 0xeb, - 0xdb, 0x4b, 0x5c, 0x70, 0xec, 0xbf, 0x4e, 0x96, 0xd3, 0x3c, 0xcf, 0x3f, 0x24, 0xf1, 0x3e, 0x60, - 0xf6, 0xf6, 0xef, 0x13, 0xc4, 0x53, 0x5d, 0x49, 0xf5, 0xd3, 0x92, 0x06, 0xda, 0x02, 0x86, 0x50, - 0xce, 0xb8, 0xbd, 0xde, 0xf5, 0x74, 0x37, 0x1c, 0x7c, 0xeb, 0x8d, 0x0f, 0x03, 0x6c, 0x74, 0x78, - 0xbb, 0xe7, 0x5f, 0x4f, 0xc7, 0x07, 0xea, 0xe7, 0x61, 0x00, 0xde, 0xf3, 0xe2, 0x45, 0x18, 0x5e, - 0x4f, 0x39, 0x65, 0x37, 0x3c, 0x44, 0x4a, 0xf0, 0xad, 0x91, 0x42, 0x15, 0xb4, 0xee, 0x77, 0xd1, - 0xb2, 0xd4, 0x6c, 0x55, 0x48, 0xdd, 0x17, 0xd7, 0x05, 0x6e, 0xdb, 0xaf, 0xa7, 0x2b, 0xdf, 0x81, - 0x6f, 0xae, 0xef, 0xbc, 0x0c, 0xfe, 0x80, 0xe5, 0xe0, 0xf9, 0xdf, 0x0d, 0x24, 0xf6, 0x04, 0x31, - 0xe3, 0xa5, 0x05, 0x60, 0x43, 0x09, 0xbf, 0xb0, 0xd2, 0x4a, 0x84, 0xa6, 0xc6, 0xf3, 0xee, 0x65, - 0xcd, 0x02, 0x3f, 0x47, 0x52, 0x19, 0x69, 0xa0, 0xbf, 0x16, 0xb9, 0x3f, 0x36, 0xe5, 0x7e, 0x25, - 0xd1, 0xff, 0x12, 0x5f, 0xe6, 0xb9, 0x3c, 0x63, 0xf5, 0x44, 0x33, 0x48, 0x38, 0x6a, 0xa0, 0xef, - 0xd1, 0x41, 0x34, 0x74, 0xf7, 0xa5, 0xa5, 0x95, 0x6a, 0xf1, 0xa9, 0x8d, 0xb9, 0x83, 0xd0, 0x33, - 0x6b, 0x98, 0x8f, 0x0c, 0xf6, 0x32, 0x52, 0xfd, 0x39, 0xf5, 0x9e, 0xdd, 0x58, 0xf1, 0xfe, 0xaa, - 0xad, 0xa7, 0x0c, 0xde, 0xa1, 0x9a, 0xe2, 0x37, 0x2a, 0x9a, 0xcf, 0x6b, 0x15, 0xf1, 0x98, 0xea, - 0xab, 0x1d, 0x77, 0x64, 0x5e, 0x54, 0x3e, 0xca, 0x68, 0x6d, 0xe2, 0xb6, 0x46, 0x39, 0x06, 0xf2, - 0xa5, 0xe2, 0x56, 0xb0, 0x32, 0xae, 0x31, 0xe3, 0x70, 0x40, 0xc7, 0x13, 0x71, 0x8d, 0x19, 0xd7, - 0xaf, 0x31, 0xc5, 0x4d, 0x4f, 0xf7, 0x25, 0x66, 0x03, 0xbc, 0x44, 0xa9, 0xd0, 0xeb, 0x61, 0x1b, - 0xc4, 0xe0, 0xc8, 0x16, 0xae, 0x09, 0x94, 0x1e, 0xa5, 0x0f, 0xae, 0x74, 0xe7, 0xc2, 0x5e, 0x69, - 0x61, 0x1f, 0x96, 0xde, 0x48, 0xe1, 0x13, 0x71, 0x0e, 0x68, 0xb7, 0xef, 0x92, 0x59, 0x58, 0x21, - 0x74, 0x22, 0x3a, 0xb0, 0x9c, 0x06, 0xf3, 0xed, 0x74, 0x02, 0x5d, 0x88, 0x61, 0x26, 0x2e, 0x17, - 0xf7, 0xcc, 0xdd, 0x75, 0x65, 0xe5, 0x7b, 0x5c, 0x21, 0xf6, 0xaf, 0xd5, 0xa1, 0xc0, 0xb7, 0xc1, - 0x5a, 0x3a, 0xa3, 0x5c, 0xa3, 0xe5, 0xf5, 0x40, 0xd7, 0x8f, 0x8b, 0xa1, 0x59, 0xbf, 0x4f, 0xed, - 0x1b, 0x9a, 0x8d, 0x5d, 0x35, 0xcf, 0x24, 0x7e, 0x6c, 0x41, 0x94, 0xc4, 0x00, 0x26, 0xb1, 0xd0, - 0xc0, 0xeb, 0x0d, 0x34, 0x7d, 0x40, 0x04, 0xbc, 0x12, 0xbd, 0xf2, 0x61, 0x02, 0xfd, 0x4a, 0x48, - 0x82, 0x85, 0x44, 0x57, 0xca, 0x5a, 0xd0, 0x95, 0xb2, 0x95, 0xc6, 0x46, 0xcf, 0x6c, 0x6c, 0xf4, - 0xdf, 0x01, 0x18, 0xf4, 0x85, 0x48, 0x41, 0xd6, 0x34, 0x48, 0xe7, 0x45, 0x89, 0x9c, 0x4f, 0x93, - 0x62, 0x0d, 0x62, 0xd6, 0x5f, 0x50, 0x1d, 0x47, 0x59, 0xff, 0x66, 0xd2, 0x18, 0x8b, 0xdd, 0x01, - 0x8d, 0xc6, 0xb0, 0xec, 0xfd, 0x7e, 0xd0, 0x75, 0x19, 0x96, 0xc6, 0x80, 0x16, 0xe7, 0xbd, 0x8e, - 0x0e, 0x11, 0xbf, 0x2e, 0x48, 0xd2, 0x3d, 0x8e, 0x88, 0x20, 0x3d, 0x8d, 0x6d, 0xae, 0x40, 0x71, - 0xba, 0x3d, 0xf7, 0x1a, 0x81, 0x69, 0xbc, 0xa6, 0x97, 0xa0, 0xd2, 0x11, 0x1c, 0x0d, 0xb4, 0xb5, - 0x84, 0xb4, 0x4f, 0xd0, 0x60, 0xae, 0xf6, 0xeb, 0xec, 0x5f, 0xcd, 0xd0, 0x2e, 0x66, 0x44, 0x97, - 0x04, 0xb8, 0x06, 0x95, 0xef, 0x67, 0xa2, 0x7c, 0x3f, 0x8b, 0x30, 0x3b, 0x4b, 0xe8, 0x9c, 0xd4, - 0x1a, 0xbd, 0x85, 0xc3, 0x4a, 0x48, 0x6d, 0xe8, 0xfb, 0xf8, 0xa1, 0xb4, 0xbb, 0xaf, 0x35, 0xac, - 0x25, 0xd4, 0xbb, 0x93, 0xa2, 0x6e, 0xa3, 0xe1, 0x0e, 0x8b, 0x56, 0xb3, 0x0d, 0xe3, 0x46, 0xdb, - 0x0a, 0xca, 0x63, 0x0c, 0xf6, 0x73, 0x86, 0x55, 0xa2, 0xb8, 0xf7, 0x95, 0xbf, 0xbe, 0xaf, 0x42, - 0x0a, 0xc1, 0x35, 0x6b, 0x9e, 0x4f, 0x6f, 0x2d, 0xb4, 0x07, 0x60, 0x4f, 0x44, 0xe5, 0xeb, 0x65, - 0x25, 0xae, 0x71, 0x8c, 0xf7, 0xca, 0x3d, 0x14, 0x1c, 0xdd, 0x0e, 0xd9, 0x12, 0xc3, 0x6e, 0xce, - 0x53, 0xc3, 0xc5, 0xbf, 0x46, 0x42, 0xf6, 0x2e, 0x18, 0x15, 0x3c, 0x64, 0xc1, 0x8b, 0xd3, 0xc3, - 0xb3, 0xe2, 0x7c, 0x45, 0x35, 0xf4, 0x4a, 0x91, 0x4f, 0x56, 0xea, 0x1d, 0x65, 0x9e, 0x1d, 0xc2, - 0x2c, 0xdb, 0x2b, 0x39, 0x80, 0x99, 0xc8, 0xc5, 0xec, 0x36, 0x16, 0xe6, 0x79, 0x7b, 0x83, 0x73, - 0xaf, 0xb5, 0x11, 0x06, 0xb4, 0x18, 0x91, 0xb2, 0x85, 0x35, 0x66, 0x37, 0x07, 0x76, 0x61, 0x16, - 0xb0, 0x98, 0xd9, 0x28, 0xc3, 0x5b, 0xd1, 0x6e, 0x5b, 0xbd, 0x5d, 0x46, 0x46, 0xd9, 0x3c, 0xd3, - 0x70, 0x0f, 0xad, 0xac, 0x06, 0x55, 0x06, 0x2f, 0x56, 0x5a, 0x54, 0xc0, 0x67, 0x59, 0x66, 0x05, - 0xc6, 0x8f, 0xd6, 0x93, 0x20, 0xdc, 0x5f, 0xe3, 0x06, 0x32, 0x70, 0x55, 0xe8, 0x69, 0xec, 0x66, - 0x44, 0x54, 0x36, 0xea, 0x30, 0xc0, 0x93, 0xcd, 0x5a, 0x6a, 0x18, 0x55, 0x43, 0x95, 0x20, 0x7e, - 0x12, 0x57, 0xc1, 0x4c, 0x76, 0xde, 0xd2, 0x73, 0xa8, 0xe8, 0x8b, 0xb5, 0xcd, 0xb4, 0xed, 0x89, - 0xaa, 0xab, 0x1c, 0x22, 0xb1, 0x3d, 0xaa, 0xbb, 0xf3, 0x1e, 0x2a, 0x03, 0xf2, 0x79, 0x13, 0x85, - 0xdc, 0xa8, 0xfb, 0xf3, 0xe7, 0x6c, 0x2b, 0xb4, 0x50, 0x5c, 0x27, 0x26, 0xec, 0xfa, 0xd0, 0x3a, - 0xe5, 0xe2, 0x1a, 0xad, 0x7b, 0x98, 0xb5, 0x08, 0x01, 0x39, 0x52, 0xdf, 0x1a, 0x66, 0xde, 0x44, - 0x59, 0x1a, 0x66, 0x24, 0xfe, 0xcb, 0x2f, 0x5a, 0x97, 0xec, 0x57, 0x0b, 0x47, 0xe7, 0x62, 0xfc, - 0x17, 0xa2, 0x3b, 0x9d, 0x20, 0x9d, 0x0b, 0xbd, 0xca, 0x68, 0x51, 0xa7, 0x85, 0x95, 0x23, 0x30, - 0xd2, 0x2a, 0xa7, 0x5b, 0xfc, 0x82, 0x5b, 0x7b, 0xa3, 0x2e, 0x80, 0x19, 0x59, 0x15, 0xc1, 0xcd, - 0x32, 0x58, 0x47, 0x3f, 0x95, 0x6c, 0x24, 0xac, 0x0d, 0x33, 0xe6, 0xf2, 0x86, 0x7d, 0x21, 0xad, - 0x9c, 0xe1, 0x33, 0x8a, 0xab, 0xf0, 0x17, 0x8b, 0x68, 0x91, 0xfc, 0x9d, 0x24, 0xf0, 0xcc, 0x1b, - 0x75, 0xcc, 0x9e, 0x71, 0x23, 0x17, 0x16, 0x7e, 0xfb, 0xf5, 0x53, 0x1b, 0x40, 0xab, 0x28, 0x5d, - 0xbb, 0x83, 0xe4, 0x6b, 0x5b, 0x61, 0xcc, 0x97, 0xd1, 0xb9, 0xc2, 0x50, 0xee, 0x65, 0xcc, 0xce, - 0x2a, 0xe5, 0xde, 0xfa, 0xcb, 0xf2, 0xcb, 0xf4, 0x76, 0xd9, 0x7b, 0x1a, 0xec, 0xf5, 0x89, 0x6c, - 0xe6, 0xe5, 0xb5, 0xc8, 0xba, 0x12, 0x01, 0xaf, 0xfe, 0xeb, 0xb8, 0x69, 0x87, 0xd0, 0x47, 0xa0, - 0xc9, 0x88, 0x96, 0xc0, 0xd2, 0xf5, 0xfc, 0x77, 0xe1, 0x0b, 0x0e, 0x87, 0x75, 0xef, 0x27, 0xdc, - 0xe4, 0x30, 0xf0, 0x1f, 0x02, 0x09, 0x0d, 0xc9, 0x80, 0xa1, 0xa7, 0x94, 0x82, 0x75, 0x8d, 0x2e, - 0x1b, 0xb2, 0xf7, 0x6d, 0x26, 0x80, 0x0f, 0x2b, 0xa0, 0x6f, 0x61, 0x8c, 0x3e, 0x7b, 0x9f, 0xdf, - 0xd2, 0x10, 0x15, 0x93, 0x7a, 0x02, 0xf1, 0xff, 0xa1, 0x11, 0x52, 0xe8, 0x3a, 0x2a, 0xde, 0x2e, - 0x73, 0xde, 0x27, 0x50, 0x8b, 0x62, 0xbc, 0x6d, 0xf1, 0xcc, 0x00, 0x0d, 0x29, 0xe2, 0x1a, 0x90, - 0xb4, 0x5c, 0xfc, 0x46, 0xe7, 0xb1, 0x9e, 0x4b, 0x65, 0xf5, 0x5d, 0x21, 0xc9, 0xca, 0xf2, 0xcb, - 0xc0, 0x94, 0x7a, 0xa7, 0x1f, 0xa4, 0x8e, 0x78, 0x6b, 0x31, 0x05, 0x72, 0x59, 0x23, 0x00, 0x89, - 0x36, 0x93, 0xe0, 0xcd, 0xc5, 0x0a, 0x13, 0xa2, 0x36, 0x35, 0x9d, 0x85, 0xb6, 0x2e, 0x39, 0x6a, - 0x45, 0x4f, 0x7b, 0xc3, 0x78, 0x9f, 0x3f, 0x9b, 0xdd, 0x28, 0x6b, 0xbf, 0x33, 0xfa, 0xdd, 0xa3, - 0xc1, 0x54, 0x43, 0x45, 0xb5, 0x21, 0x2e, 0xcb, 0x3f, 0xf4, 0xc0, 0x76, 0x47, 0x7a, 0x28, 0xa3, - 0xcb, 0xa9, 0x10, 0xea, 0x68, 0xe3, 0x14, 0x13, 0x73, 0x2e, 0x01, 0x5c, 0xdf, 0xe7, 0x0b, 0xff, - 0xbf, 0x8e, 0x5b, 0x62, 0x95, 0x28, 0x14, 0xd7, 0xad, 0x9e, 0x9a, 0xae, 0xc0, 0xb3, 0xa0, 0x00, - 0xd8, 0xb2, 0x44, 0x0c, 0x89, 0xc8, 0xb1, 0xbd, 0x5d, 0x1b, 0x9a, 0x46, 0x4b, 0xb3, 0xb0, 0xdc, - 0x7b, 0x00, 0x94, 0x34, 0x2b, 0xbf, 0x59, 0xd4, 0xcb, 0x3c, 0x3f, 0x0d, 0x77, 0x7b, 0xc5, 0x37, - 0xd9, 0xfe, 0x3d, 0x09, 0x87, 0xf9, 0x8f, 0xc9, 0x43, 0x3c, 0xeb, 0x1d, 0x78, 0xa3, 0x60, 0x2b, - 0x04, 0xc6, 0x91, 0x68, 0xed, 0x38, 0x20, 0xa1, 0xf2, 0x88, 0x03, 0x72, 0x88, 0x84, 0xa3, 0x43, - 0x4a, 0xe0, 0x08, 0x1d, 0xe9, 0xb8, 0x3f, 0x38, 0xd8, 0xde, 0xfe, 0xd2, 0xce, 0xd3, 0xb2, 0x15, - 0xc3, 0x47, 0x55, 0xd3, 0x38, 0xb4, 0x6a, 0x37, 0x13, 0x57, 0x52, 0xf3, 0x5e, 0x58, 0xa0, 0xb9, - 0x83, 0xbd, 0x54, 0xa9, 0x3a, 0xa3, 0x4b, 0x62, 0xfe, 0x1f, 0x0a, 0xd9, 0x2a, 0x92, 0xed, 0xbb, - 0xea, 0xa0, 0x83, 0x5c, 0xea, 0x6d, 0x3a, 0xd2, 0x03, 0xaa, 0x48, 0x2e, 0x1b, 0x63, 0xc0, 0x05, - 0x1e, 0xd9, 0xe3, 0x7d, 0xd8, 0x40, 0x1f, 0x7c, 0x2e, 0x8c, 0xa1, 0x3a, 0x8f, 0x28, 0x34, 0xc3, - 0x16, 0xf4, 0xc2, 0x51, 0xd7, 0x29, 0x18, 0x17, 0x8f, 0x6a, 0x46, 0x7f, 0x8a, 0xe1, 0x4d, 0x3a, - 0x2a, 0x8e, 0xf3, 0x14, 0x7d, 0x44, 0x27, 0xe2, 0x5d, 0x77, 0xf1, 0x00, 0x4c, 0x64, 0x99, 0x76, - 0x79, 0xdd, 0x8a, 0xe4, 0x95, 0x97, 0xb5, 0x4a, 0x64, 0x31, 0x81, 0xda, 0xd6, 0xa3, 0x91, 0x7e, - 0x51, 0xd5, 0x51, 0x2e, 0xaa, 0x7a, 0x25, 0x8c, 0x21, 0xd3, 0x59, 0x13, 0x9c, 0x4d, 0xa6, 0x0b, - 0xcc, 0x14, 0xe8, 0xb7, 0x04, 0x41, 0xbe, 0x0e, 0x25, 0x65, 0xbe, 0xf6, 0xdb, 0x8f, 0x73, 0x8b, - 0xe9, 0x8d, 0xeb, 0xcb, 0x2c, 0x9e, 0xfc, 0x12, 0xea, 0xdf, 0xf7, 0x47, 0x83, 0x03, 0xc4, 0x47, - 0x92, 0x95, 0x7c, 0xfe, 0xbc, 0xc5, 0xaa, 0x33, 0x99, 0x8a, 0xd1, 0x14, 0xdf, 0x3f, 0x7f, 0xbe, - 0x1f, 0x87, 0x46, 0xa2, 0xf8, 0x81, 0x65, 0x0b, 0x1d, 0x10, 0xd1, 0x8a, 0xb0, 0x85, 0x97, 0xf5, - 0x4d, 0xe4, 0x6b, 0xb6, 0x06, 0x43, 0xf9, 0x26, 0x04, 0x41, 0xd1, 0x6d, 0xae, 0x5e, 0x5f, 0x23, - 0xb5, 0xa0, 0x1b, 0xb5, 0xf2, 0x84, 0xba, 0x61, 0x02, 0xa3, 0x89, 0x2a, 0x9e, 0x8a, 0x27, 0x92, - 0x57, 0x0a, 0x9f, 0x6b, 0x9e, 0x0b, 0x59, 0x8e, 0x9a, 0xa3, 0x6d, 0x71, 0x69, 0x80, 0x28, 0xdf, - 0xc4, 0x0d, 0x70, 0x20, 0xbc, 0x2d, 0x73, 0xf7, 0x4b, 0x27, 0x58, 0xaf, 0x0f, 0x71, 0xd9, 0xa8, - 0x5a, 0x08, 0xbd, 0x12, 0x55, 0xfd, 0x02, 0x1f, 0x0c, 0x9c, 0x49, 0x54, 0x6e, 0xcc, 0x6e, 0x52, - 0x88, 0x03, 0xa2, 0xb9, 0x43, 0x6c, 0x6f, 0xbb, 0x39, 0x27, 0x42, 0x8d, 0x4a, 0x47, 0xd5, 0x7c, - 0x8e, 0xb4, 0xba, 0x08, 0x6d, 0x02, 0x28, 0xc4, 0xc4, 0x92, 0x7f, 0x88, 0xe3, 0x05, 0x09, 0xad, - 0xfd, 0x7e, 0x5f, 0xc8, 0xad, 0x5b, 0xea, 0x04, 0xa6, 0x95, 0x39, 0x23, 0xb1, 0xd5, 0x21, 0xd0, - 0x81, 0x8a, 0xc5, 0x4a, 0xf9, 0x8c, 0x16, 0x6c, 0x6f, 0xeb, 0x1f, 0x24, 0x5c, 0x60, 0xab, 0x11, - 0x25, 0x60, 0xd6, 0xe7, 0x64, 0x5e, 0xf5, 0x10, 0x08, 0x25, 0x13, 0xde, 0x6c, 0x3e, 0x7f, 0xb6, - 0x0f, 0xb8, 0xb1, 0xff, 0x48, 0xa9, 0x7c, 0xc5, 0xee, 0x1b, 0xcd, 0xa2, 0x34, 0x9f, 0x4b, 0x79, - 0xc3, 0xd6, 0xfc, 0x78, 0xb6, 0xd2, 0x3a, 0xb2, 0x46, 0x7f, 0x56, 0x82, 0x43, 0x74, 0xf2, 0xa0, - 0xcc, 0xf5, 0x69, 0x55, 0x49, 0xee, 0x11, 0xcd, 0x66, 0x6f, 0x70, 0x29, 0x02, 0x56, 0x84, 0x98, - 0x8a, 0xac, 0x85, 0xa3, 0xf2, 0x2e, 0xe3, 0x1e, 0xc2, 0x54, 0x0d, 0xf5, 0x34, 0x73, 0xdd, 0xe4, - 0xb0, 0xdc, 0xca, 0xef, 0xa9, 0x32, 0xf0, 0x8b, 0xee, 0x8c, 0x25, 0x36, 0x6a, 0xde, 0x64, 0x9f, - 0xca, 0xc9, 0x55, 0xe6, 0xb7, 0x94, 0x0f, 0x7b, 0xca, 0x13, 0xf9, 0x6e, 0x17, 0x4f, 0x65, 0xe3, - 0x17, 0x93, 0xe0, 0x58, 0xe5, 0xfb, 0x3f, 0x47, 0xfb, 0xc4, 0xe5, 0x93, 0x45, 0x39, 0x76, 0x8e, - 0xf6, 0x01, 0x6f, 0x8c, 0xcf, 0xeb, 0xf2, 0x26, 0x1d, 0x3b, 0xff, 0x17, 0x53, 0xe6, 0x0a, 0xb0, - 0x36, 0x99, 0x01, 0x00 + 0x7e, 0xe5, 0xcd, 0xc2, 0x2b, 0xe5, 0x83, 0x78, 0x79, 0xe5, 0x30, 0xdb, 0xf9, 0x83, 0x4a, 0x98, + 0xee, 0x3d, 0x93, 0x29, 0xce, 0x05, 0x89, 0x9f, 0x02, 0xdf, 0x1b, 0x03, 0xd3, 0xe9, 0x77, 0x60, + 0x6a, 0xab, 0xe1, 0x8c, 0xd6, 0xb0, 0xae, 0xf7, 0xf3, 0x65, 0x7d, 0x4c, 0x84, 0xc3, 0x43, 0x4f, + 0x1b, 0x08, 0x09, 0xe1, 0xd3, 0xf5, 0xc6, 0xd2, 0xe7, 0x2d, 0xbd, 0x2d, 0x18, 0x5f, 0x07, 0x76, + 0x38, 0x30, 0x77, 0xd0, 0xa5, 0x28, 0x13, 0x08, 0x48, 0x77, 0xed, 0xd6, 0xbc, 0x2c, 0x84, 0x7c, + 0xde, 0x7c, 0x5d, 0x4d, 0x06, 0x52, 0xef, 0x69, 0x71, 0x5d, 0x10, 0xf0, 0x16, 0x76, 0x63, 0xa2, + 0x71, 0x98, 0x15, 0xd3, 0xdc, 0x71, 0x86, 0x0d, 0x97, 0x44, 0xd4, 0x0d, 0x2b, 0xf5, 0x55, 0x99, + 0x65, 0x4f, 0xdc, 0x64, 0x83, 0xec, 0x61, 0x99, 0xbd, 0xa9, 0x03, 0xf6, 0x86, 0x05, 0xac, 0xde, + 0x6d, 0x69, 0x8d, 0xeb, 0xb0, 0xf9, 0x41, 0x42, 0x27, 0xdb, 0xdc, 0x87, 0x11, 0x3b, 0x31, 0xfb, + 0xdc, 0x46, 0xf4, 0x89, 0x84, 0x9d, 0x1e, 0xed, 0x01, 0x2b, 0xf2, 0x1d, 0x57, 0x90, 0x6b, 0xe7, + 0x1b, 0xaf, 0x16, 0x99, 0xea, 0x4f, 0xbc, 0x41, 0x03, 0x39, 0xbb, 0xea, 0x51, 0xba, 0xc9, 0x00, + 0x64, 0xd3, 0xb2, 0xc0, 0x48, 0xb2, 0xbe, 0xd8, 0x1f, 0x28, 0x13, 0x07, 0x16, 0x96, 0xa6, 0x21, + 0x2d, 0xae, 0x64, 0xbf, 0x17, 0xef, 0xa6, 0xb4, 0x61, 0x6c, 0x09, 0xe7, 0x4d, 0x84, 0x90, 0xef, + 0xc5, 0xe3, 0xc1, 0x97, 0x2f, 0xe9, 0xd8, 0x73, 0x84, 0x99, 0xea, 0x85, 0xd5, 0x83, 0x20, 0x63, + 0xdd, 0x45, 0x8b, 0xe2, 0x36, 0x88, 0x1d, 0x12, 0x65, 0x3a, 0x5f, 0x4c, 0x43, 0x66, 0xd8, 0x74, + 0x37, 0x09, 0x18, 0x16, 0x29, 0x2d, 0x56, 0xc5, 0xb5, 0xb5, 0x11, 0x5e, 0xd9, 0x6b, 0x8f, 0x80, + 0x5d, 0xce, 0x28, 0x6a, 0x41, 0x1e, 0xd0, 0x64, 0xad, 0x7a, 0x09, 0x1b, 0xea, 0xfd, 0x5b, 0xde, + 0x42, 0x24, 0x61, 0x80, 0x33, 0xc1, 0xc4, 0x68, 0x85, 0x79, 0xbd, 0x91, 0x77, 0x99, 0x5e, 0x30, + 0x62, 0xf1, 0x56, 0x79, 0xb3, 0x69, 0x3c, 0x96, 0x46, 0x3f, 0xbd, 0xa6, 0xe3, 0x6c, 0xd5, 0x84, + 0x17, 0xf0, 0x86, 0xee, 0x6d, 0xf4, 0xb2, 0x4f, 0xf1, 0xe5, 0x05, 0x47, 0x87, 0x5d, 0x57, 0x5f, + 0x63, 0xde, 0x7e, 0x7d, 0xdb, 0xea, 0x9c, 0x22, 0xf6, 0xf0, 0x13, 0xdc, 0x4d, 0x1a, 0x2e, 0x2a, + 0x80, 0xd5, 0xe2, 0x7b, 0x4a, 0x38, 0x3e, 0xc1, 0x45, 0xa3, 0xab, 0xe8, 0xfb, 0xd8, 0x28, 0x97, + 0xc4, 0xaf, 0x37, 0x2a, 0x76, 0xfa, 0x39, 0x99, 0x1a, 0x05, 0x15, 0x36, 0x97, 0x51, 0x7a, 0xa5, + 0x7a, 0x4c, 0x72, 0xe0, 0xef, 0x17, 0x91, 0xed, 0x38, 0x1b, 0x65, 0x3d, 0xcd, 0xc2, 0x70, 0xb6, + 0x69, 0x66, 0x5a, 0xa0, 0x61, 0x92, 0x47, 0xc5, 0x67, 0x14, 0x68, 0x66, 0xba, 0x6f, 0xc5, 0x7c, + 0x11, 0x30, 0x62, 0xeb, 0x41, 0x5f, 0xee, 0x2f, 0x83, 0xb8, 0x51, 0x58, 0xed, 0xc0, 0xc2, 0x8c, + 0x66, 0x3a, 0x2d, 0xbe, 0x16, 0xbb, 0xa6, 0xa5, 0x22, 0xae, 0xa0, 0x8c, 0x0b, 0xa2, 0x19, 0x97, + 0x99, 0xbe, 0x94, 0xba, 0x81, 0x99, 0xac, 0xed, 0x17, 0x58, 0x97, 0x2b, 0x60, 0xa2, 0x86, 0x02, + 0x11, 0x0f, 0xcb, 0xf7, 0x73, 0xec, 0x1b, 0x5a, 0x8f, 0x37, 0xb0, 0x2e, 0xe3, 0xf8, 0x43, 0x1e, + 0x1f, 0x64, 0xd3, 0xc5, 0xc4, 0xe6, 0x67, 0x90, 0x36, 0xfe, 0xd1, 0xf3, 0xb2, 0x07, 0x58, 0xa7, + 0x6b, 0x29, 0x88, 0x19, 0xe0, 0xd8, 0xf2, 0xe8, 0x8a, 0xb2, 0xd9, 0x84, 0xff, 0xc2, 0x93, 0x28, + 0x51, 0x96, 0xbf, 0x07, 0x8c, 0x34, 0x68, 0x5b, 0x40, 0x58, 0xb5, 0xec, 0xdd, 0xa4, 0x6d, 0x56, + 0x62, 0xd3, 0x36, 0xe7, 0x82, 0x3d, 0x9f, 0x23, 0x68, 0x74, 0x89, 0x5d, 0xb2, 0x1d, 0x3d, 0xda, + 0x05, 0x3b, 0x84, 0x7e, 0x7c, 0xb3, 0xe4, 0xd3, 0x13, 0x36, 0xfd, 0x36, 0x11, 0x8f, 0xbb, 0x86, + 0x0b, 0xc4, 0xc6, 0xf0, 0xaa, 0xce, 0xc9, 0x9e, 0x19, 0x73, 0xa4, 0x79, 0x60, 0x48, 0x99, 0x5e, + 0xc7, 0xbb, 0x16, 0xd2, 0xe5, 0x91, 0x10, 0xf3, 0x27, 0x7b, 0x83, 0xe1, 0x40, 0xcb, 0x7f, 0x93, + 0x9d, 0x98, 0x99, 0x61, 0xdb, 0x9a, 0x4c, 0xc4, 0x47, 0xfd, 0xa0, 0xc0, 0x89, 0xae, 0x8c, 0xc7, + 0xf3, 0xc8, 0x40, 0xe7, 0xd1, 0x54, 0x61, 0xb6, 0x7b, 0xe7, 0x63, 0xa8, 0x0b, 0xaa, 0xba, 0x6f, + 0x82, 0x8f, 0xe1, 0x6f, 0xa7, 0xc4, 0x00, 0xee, 0xf3, 0x2f, 0x5f, 0x7a, 0xbd, 0x7b, 0x81, 0x74, + 0xf0, 0x5b, 0x78, 0x79, 0x4a, 0x4d, 0x0f, 0x49, 0x7a, 0xbc, 0xcf, 0xd9, 0xdb, 0x9a, 0x9d, 0xaf, + 0x85, 0xcb, 0x75, 0xdd, 0x47, 0xfd, 0x3a, 0xcd, 0x0b, 0x16, 0x8d, 0x77, 0xed, 0xfd, 0xfb, 0x1c, + 0xfe, 0x18, 0x30, 0xa9, 0xca, 0xf3, 0x40, 0x8f, 0x53, 0x55, 0x8a, 0x35, 0xba, 0x0b, 0x38, 0xab, + 0x5d, 0x1c, 0xa1, 0xef, 0x60, 0x8a, 0xa4, 0x53, 0x9b, 0xee, 0x1d, 0xa8, 0x59, 0x84, 0x3b, 0xae, + 0xf6, 0x43, 0xb8, 0x00, 0x36, 0x3c, 0xec, 0xdc, 0xaf, 0xf1, 0x6f, 0xf4, 0xfe, 0xf8, 0x4a, 0x91, + 0x17, 0xe4, 0xa6, 0x79, 0x3a, 0xea, 0xe4, 0x67, 0x2c, 0xa6, 0x37, 0xa0, 0x8d, 0x70, 0x4c, 0x81, + 0x9d, 0xa3, 0x1c, 0x16, 0x26, 0x31, 0xc6, 0xce, 0x1c, 0xff, 0xf1, 0x8f, 0x5e, 0x7d, 0x9d, 0x96, + 0x10, 0x77, 0x89, 0xc4, 0x21, 0xdc, 0xde, 0x36, 0xac, 0x35, 0x13, 0x87, 0xe3, 0xc9, 0xb0, 0xdb, + 0x85, 0x6b, 0x2c, 0xb3, 0xc4, 0x45, 0xa8, 0xe5, 0x30, 0x98, 0xc9, 0xd8, 0x68, 0x22, 0x0f, 0x10, + 0x24, 0xef, 0x61, 0xbe, 0x35, 0x8d, 0xd3, 0xdc, 0x1c, 0xee, 0xaf, 0x75, 0xf6, 0xd4, 0xa1, 0x19, + 0xaa, 0xf7, 0x29, 0x37, 0x52, 0x06, 0x55, 0x44, 0x34, 0x32, 0x77, 0x25, 0xd7, 0x95, 0xde, 0x16, + 0x21, 0xac, 0x3a, 0x18, 0x80, 0x91, 0xe8, 0x3b, 0x46, 0x29, 0x81, 0x8c, 0xc8, 0xbf, 0x66, 0xb7, + 0x0b, 0x89, 0x8f, 0xc8, 0x3f, 0x0b, 0x91, 0x95, 0x61, 0x0b, 0x39, 0xe1, 0x86, 0xbe, 0x55, 0xc0, + 0x8c, 0x61, 0xff, 0x76, 0x96, 0x25, 0x24, 0xbc, 0x25, 0xb3, 0x1a, 0x5e, 0x22, 0xc9, 0xe4, 0x39, + 0x20, 0x0d, 0x25, 0x97, 0xe1, 0x28, 0x26, 0x2d, 0xad, 0x2b, 0x8a, 0xb2, 0x59, 0xc5, 0x62, 0x7f, + 0xe0, 0xc9, 0x49, 0xf7, 0x68, 0xc0, 0xbd, 0x51, 0x8b, 0x7d, 0x5e, 0x4d, 0x7c, 0x68, 0xb1, 0xba, + 0x63, 0x25, 0x22, 0xdb, 0xac, 0xc2, 0xce, 0x0e, 0x02, 0x45, 0x18, 0x3b, 0x8f, 0x89, 0x9f, 0x8b, + 0xc8, 0xc4, 0xcb, 0x9c, 0x8e, 0xb1, 0x42, 0x10, 0x2c, 0x2d, 0xf1, 0x40, 0xea, 0xb1, 0x72, 0x26, + 0xd1, 0xce, 0x68, 0x74, 0x72, 0x55, 0xaf, 0x96, 0xc7, 0x32, 0x5e, 0xc0, 0xd5, 0x06, 0x3d, 0x2a, + 0x55, 0x56, 0x7e, 0x0c, 0x2c, 0x28, 0x69, 0x34, 0xbb, 0xce, 0x83, 0x5f, 0x53, 0xf5, 0x1d, 0x8c, + 0xc2, 0x31, 0xf4, 0x7d, 0x7b, 0x7b, 0x4e, 0x0a, 0xb7, 0xb0, 0x15, 0x3e, 0xfc, 0xf6, 0x2e, 0xbf, + 0x43, 0x28, 0xd0, 0x38, 0xde, 0x4a, 0xf9, 0x7b, 0x50, 0xfb, 0x7d, 0x70, 0x0e, 0xd3, 0x48, 0x09, + 0x92, 0x49, 0x6c, 0x58, 0x60, 0x64, 0xd2, 0x13, 0xcd, 0x2a, 0x5f, 0xe5, 0x3d, 0x3c, 0xe7, 0xbb, + 0xaa, 0x12, 0x15, 0x00, 0xe8, 0x97, 0x2a, 0x04, 0x4f, 0x8c, 0xcd, 0x68, 0x7b, 0x9b, 0x3f, 0xa8, + 0x99, 0xed, 0xf7, 0x58, 0x4c, 0x5f, 0xaf, 0xcb, 0x69, 0xe4, 0xcc, 0x8e, 0xbb, 0x66, 0x4f, 0x2f, + 0x33, 0xe7, 0x0f, 0xee, 0x06, 0x3b, 0x7a, 0x99, 0x3d, 0x7a, 0x90, 0x32, 0xb5, 0xbc, 0xe9, 0x30, + 0x0f, 0x43, 0x17, 0xc2, 0x85, 0x5e, 0xa8, 0xbe, 0xe6, 0x0f, 0xf6, 0xf9, 0x59, 0xa9, 0x12, 0x8b, + 0xfb, 0xf3, 0x87, 0xa5, 0x7d, 0x4e, 0xc2, 0x5f, 0x30, 0x09, 0xfa, 0xf2, 0x9a, 0xd4, 0xdf, 0xf2, + 0x86, 0x25, 0xc7, 0x5c, 0x84, 0x31, 0xe3, 0x7e, 0xc8, 0x60, 0x8b, 0xad, 0x2f, 0xb0, 0xfb, 0x0a, + 0x29, 0x14, 0xc0, 0x34, 0x88, 0x17, 0x57, 0x9d, 0xba, 0x04, 0x74, 0x32, 0x84, 0xe9, 0x32, 0x87, + 0x88, 0x4a, 0xd1, 0xde, 0x54, 0xd6, 0x5d, 0x9f, 0x69, 0xfa, 0xc0, 0xaa, 0x85, 0x44, 0x8f, 0x0b, + 0xad, 0xe2, 0x60, 0x36, 0xd3, 0x6b, 0xd5, 0xc1, 0x4a, 0x51, 0x46, 0x61, 0x6e, 0xae, 0x1a, 0x0b, + 0x75, 0x7b, 0x60, 0x0c, 0x08, 0x25, 0xf2, 0xfb, 0xb4, 0xd1, 0x70, 0x7b, 0x91, 0xdf, 0x5e, 0x9d, + 0xde, 0x73, 0x67, 0x5d, 0xc7, 0xbb, 0x9a, 0xd4, 0xd2, 0xe7, 0xaa, 0x11, 0x9d, 0xfd, 0x2d, 0xbe, + 0x7c, 0x59, 0xf4, 0xf3, 0xe9, 0x22, 0x8d, 0x63, 0x22, 0x89, 0xf4, 0x6f, 0x51, 0x78, 0xdf, 0x7b, + 0xbc, 0x0c, 0xaf, 0x83, 0xbb, 0x08, 0xd1, 0xe1, 0x94, 0x83, 0x3e, 0xf3, 0x74, 0x62, 0xe9, 0xb4, + 0xff, 0x84, 0x39, 0xb4, 0x2f, 0x6e, 0xd8, 0x67, 0x67, 0x6c, 0xf6, 0x39, 0x90, 0xdf, 0xc5, 0x86, + 0x37, 0x65, 0x03, 0x5f, 0xa9, 0x94, 0x54, 0x0f, 0x58, 0x09, 0x39, 0xf0, 0x86, 0xf4, 0xb0, 0x52, + 0xce, 0x70, 0xe8, 0x47, 0x6b, 0x5e, 0xda, 0x3a, 0x6f, 0xd9, 0x5a, 0x80, 0x73, 0x6b, 0x30, 0x40, + 0x6e, 0x18, 0xe3, 0x87, 0x49, 0x7a, 0x7b, 0x75, 0x6d, 0xe5, 0x59, 0x30, 0x0d, 0xe1, 0x3a, 0x97, + 0xc3, 0x75, 0x51, 0xf8, 0x08, 0xd4, 0x8a, 0x1c, 0xa0, 0x88, 0xf4, 0x9f, 0xc5, 0x1b, 0xa4, 0x2e, + 0xcc, 0xc8, 0xf3, 0x0a, 0x79, 0x5e, 0x6b, 0xaf, 0xb5, 0xb8, 0x8d, 0xd6, 0x75, 0x90, 0x5b, 0xe9, + 0x94, 0x18, 0x2d, 0x74, 0x6c, 0x4b, 0x8d, 0x53, 0xf1, 0x86, 0xcb, 0x36, 0xd2, 0x9c, 0x71, 0xd7, + 0x1e, 0xd2, 0x8f, 0x29, 0xbb, 0x2b, 0x54, 0xdc, 0x8a, 0xd9, 0xde, 0x22, 0xfc, 0x94, 0xbf, 0x0b, + 0xaf, 0x82, 0x18, 0x57, 0x07, 0xda, 0x96, 0x52, 0x81, 0x6a, 0xf0, 0xa6, 0xe2, 0xb5, 0xab, 0x07, + 0x36, 0xd8, 0xad, 0x82, 0x57, 0x1e, 0xf1, 0xca, 0x90, 0xe6, 0x4c, 0xbd, 0xc9, 0x79, 0xd4, 0x90, + 0x73, 0x4b, 0xc8, 0x26, 0x4d, 0x72, 0x20, 0x19, 0x47, 0x97, 0x23, 0x34, 0x57, 0x34, 0xd3, 0x57, + 0xce, 0x3d, 0x0c, 0x0f, 0xcb, 0x1b, 0x13, 0x11, 0x6b, 0x0f, 0x48, 0x06, 0x42, 0x15, 0x97, 0x47, + 0xf6, 0x30, 0x2c, 0x7f, 0x60, 0x7b, 0xa4, 0xfd, 0x7d, 0x5f, 0xf7, 0xe0, 0xcb, 0x1b, 0x4a, 0x3c, + 0xa8, 0x18, 0x2f, 0x44, 0x85, 0xb1, 0x0f, 0xd7, 0x40, 0xc4, 0x75, 0xb8, 0xcf, 0xf1, 0xaf, 0x8f, + 0x5d, 0xf6, 0x33, 0x6f, 0xb3, 0xbe, 0xef, 0x97, 0xa2, 0x57, 0xff, 0xe7, 0x93, 0x37, 0xef, 0x11, + 0x68, 0x6e, 0x62, 0x67, 0x24, 0x61, 0xd9, 0x42, 0xd3, 0xc7, 0x3e, 0x12, 0xd0, 0xd6, 0x30, 0x36, + 0x31, 0x6d, 0x79, 0xd4, 0x7c, 0xdd, 0x35, 0x1f, 0x1d, 0xee, 0x27, 0xe9, 0x7d, 0xcf, 0x81, 0x83, + 0x87, 0x52, 0x0b, 0xb4, 0xef, 0x86, 0x42, 0x31, 0x4c, 0xcb, 0x34, 0x9a, 0x11, 0xeb, 0x13, 0x5f, + 0x54, 0x88, 0x07, 0x01, 0xe3, 0x5c, 0xee, 0xa7, 0x2a, 0xac, 0x4d, 0xc9, 0xd4, 0x07, 0xde, 0x77, + 0x81, 0x52, 0x43, 0x44, 0x5b, 0xb4, 0xa3, 0x32, 0x0e, 0x75, 0x55, 0xc0, 0x8f, 0x9c, 0x65, 0x4f, + 0x7a, 0x94, 0x55, 0xce, 0x32, 0xa1, 0xe6, 0xac, 0x0b, 0xd0, 0xd3, 0x5e, 0xcc, 0x81, 0x6d, 0xe3, + 0xc9, 0x7d, 0xce, 0x3b, 0x7b, 0x2f, 0xf9, 0xf2, 0x65, 0xe7, 0xd1, 0xbe, 0xb3, 0x87, 0x00, 0x3c, + 0x59, 0xee, 0x38, 0x43, 0xa1, 0xee, 0xcc, 0x4b, 0x75, 0x67, 0xea, 0x02, 0xe1, 0x29, 0x04, 0x0c, + 0x2f, 0xc0, 0x18, 0x88, 0x6d, 0x17, 0x7b, 0xd0, 0x2c, 0xd3, 0xf0, 0x00, 0x3f, 0x28, 0x12, 0x1c, + 0x96, 0x27, 0x63, 0x64, 0x4d, 0xaf, 0xd1, 0xdc, 0xc2, 0xff, 0xf5, 0xc3, 0x8f, 0x7b, 0x2f, 0xed, + 0xa5, 0x8b, 0x30, 0x09, 0xc3, 0xe4, 0x2b, 0xfc, 0x24, 0x13, 0x7f, 0x0c, 0x22, 0xfd, 0x3f, 0x10, + 0x4e, 0x89, 0xc2, 0x13, 0x43, 0x9b, 0xfb, 0xe6, 0x26, 0x2b, 0x3e, 0xd3, 0x2a, 0xca, 0xb3, 0x34, + 0x01, 0x58, 0x2d, 0x64, 0x85, 0x2d, 0x92, 0x8b, 0x6e, 0xa7, 0x53, 0x92, 0xb9, 0x1d, 0x89, 0xe7, + 0x95, 0xb0, 0xa4, 0xc1, 0x64, 0xf6, 0x08, 0xa2, 0xaf, 0x1b, 0x65, 0x24, 0x7d, 0x61, 0x11, 0x94, + 0x57, 0x3e, 0x44, 0xe5, 0x65, 0x7d, 0xd2, 0x57, 0x17, 0x92, 0x9d, 0xc8, 0x38, 0xba, 0xe7, 0x6c, + 0x23, 0x5d, 0xbb, 0xcd, 0x34, 0x1e, 0x6e, 0x81, 0xdc, 0x13, 0x96, 0xb1, 0xfb, 0xf7, 0xf9, 0x78, + 0x6f, 0xb0, 0xbd, 0xad, 0x4e, 0x1f, 0x2a, 0xb4, 0x85, 0x7b, 0xf0, 0x1c, 0x42, 0x6e, 0xc9, 0x37, + 0x3c, 0xb5, 0x62, 0x44, 0x31, 0x5a, 0x0d, 0x31, 0x1f, 0x90, 0x5a, 0x64, 0x74, 0x24, 0x4b, 0x38, + 0x53, 0xed, 0x98, 0x97, 0xba, 0xf6, 0x0f, 0xfc, 0xeb, 0x12, 0xe2, 0x37, 0x11, 0x75, 0xca, 0x92, + 0x45, 0x3b, 0x8a, 0x6e, 0x75, 0x48, 0xa5, 0x23, 0x1e, 0x4b, 0xbd, 0x83, 0x97, 0x50, 0x0d, 0x43, + 0x09, 0x13, 0xcb, 0x93, 0x5d, 0x2f, 0xf5, 0xed, 0xde, 0x3b, 0xfa, 0xea, 0x10, 0xdb, 0x4b, 0x19, + 0x35, 0x4b, 0x25, 0xca, 0x94, 0x19, 0xad, 0xc9, 0x22, 0x0e, 0xe9, 0xd5, 0x12, 0x39, 0x3c, 0x16, + 0x87, 0xed, 0xfb, 0xbb, 0x0a, 0xbe, 0x5b, 0x26, 0x4d, 0xf1, 0xc3, 0xc0, 0x1b, 0x8f, 0xb1, 0x58, + 0x14, 0x98, 0xb7, 0xcc, 0x45, 0xbf, 0x48, 0x7a, 0x64, 0xd4, 0xec, 0x18, 0xde, 0x2c, 0xf0, 0x33, + 0xde, 0x12, 0x71, 0x85, 0xb4, 0xe9, 0xd1, 0xa6, 0xc4, 0x15, 0x7e, 0xf9, 0x4f, 0x39, 0xc5, 0xc4, + 0x5f, 0x77, 0x8a, 0x89, 0xdb, 0x4f, 0x31, 0xb1, 0x63, 0x9e, 0x5d, 0xc0, 0x3d, 0x13, 0x75, 0x60, + 0xa9, 0xce, 0x14, 0x39, 0x2e, 0x14, 0xbe, 0xf6, 0x46, 0xa1, 0xae, 0xc9, 0x66, 0x45, 0x55, 0x0d, + 0xb4, 0xe9, 0x31, 0x4d, 0x86, 0x02, 0x05, 0x1e, 0x7f, 0x97, 0x0d, 0xed, 0xf7, 0xfb, 0xd8, 0x40, + 0x77, 0xe9, 0x31, 0x52, 0x3c, 0xfd, 0x71, 0x26, 0x17, 0x18, 0xd6, 0x85, 0x84, 0xf7, 0xe9, 0x5b, + 0xff, 0x80, 0x97, 0xbf, 0x40, 0x7b, 0x61, 0x27, 0x7b, 0x16, 0xdf, 0xbf, 0x7d, 0xe4, 0xd3, 0xcb, + 0x98, 0x86, 0x87, 0x38, 0xff, 0x90, 0xfd, 0x08, 0x96, 0x9c, 0x8a, 0x33, 0x0c, 0x25, 0xde, 0x71, + 0x9c, 0x8b, 0x60, 0x5e, 0xd0, 0xa7, 0x78, 0x40, 0x67, 0x9f, 0x25, 0x0c, 0x42, 0xf9, 0x1a, 0xe3, + 0x62, 0x68, 0x8b, 0xb7, 0xcc, 0x42, 0x7e, 0x0f, 0xfc, 0xaa, 0x70, 0x53, 0x65, 0xf4, 0x20, 0x89, + 0x87, 0xe8, 0x05, 0x35, 0x6a, 0xd9, 0x6c, 0x3f, 0x54, 0x65, 0x66, 0x0f, 0x2a, 0x1c, 0x7b, 0xf5, + 0xcd, 0x99, 0xd8, 0x3f, 0xf3, 0x9d, 0x18, 0x37, 0x1f, 0xb0, 0x02, 0xec, 0xe8, 0x9f, 0x84, 0xc5, + 0x7d, 0xba, 0xf8, 0x28, 0xba, 0x43, 0xfb, 0x85, 0x85, 0xfc, 0x10, 0x27, 0x18, 0x3a, 0x80, 0x66, + 0xb9, 0x4f, 0x4d, 0xff, 0x80, 0xef, 0xa2, 0xdb, 0x0c, 0x26, 0xb0, 0xbe, 0x1e, 0x2b, 0x4e, 0x93, + 0x2b, 0xca, 0x84, 0xda, 0xfa, 0xb6, 0x82, 0x8b, 0x7b, 0xc4, 0xd1, 0x6d, 0xf8, 0x08, 0x0e, 0x3f, + 0x54, 0xed, 0x5a, 0x2e, 0x47, 0x1a, 0xe1, 0xf3, 0xee, 0xc1, 0x07, 0xbc, 0x05, 0x96, 0x41, 0xd9, + 0x78, 0x63, 0x30, 0x9a, 0xd7, 0x17, 0x58, 0x88, 0x77, 0x10, 0xd2, 0x70, 0x30, 0x05, 0xbc, 0x3f, + 0xfe, 0xb6, 0x29, 0x7f, 0x64, 0xbe, 0x16, 0xad, 0xdc, 0xbb, 0xbb, 0x3a, 0xaa, 0x71, 0x09, 0x71, + 0x37, 0x69, 0xdc, 0xc4, 0xa9, 0x7a, 0x68, 0xea, 0xca, 0xef, 0xf6, 0x68, 0xf5, 0xfb, 0x16, 0x53, + 0xf1, 0x16, 0x84, 0x72, 0xbe, 0x04, 0xae, 0xf8, 0x65, 0x1c, 0x24, 0x1f, 0x57, 0xe8, 0x3f, 0xeb, + 0xea, 0x56, 0xb4, 0x50, 0xd3, 0x7c, 0x72, 0x1f, 0x37, 0x91, 0x1d, 0xf8, 0x39, 0xef, 0xaa, 0xb4, + 0xa5, 0xc6, 0xb4, 0xa7, 0xce, 0x83, 0x38, 0xc7, 0xa6, 0x2a, 0xc1, 0xc7, 0xea, 0x83, 0xc9, 0x4b, + 0x17, 0x03, 0xc9, 0x2c, 0x42, 0xe1, 0x89, 0xc9, 0x1b, 0x4b, 0x12, 0xd7, 0x65, 0xdc, 0x04, 0xf1, + 0xe9, 0xd4, 0x97, 0xbc, 0x64, 0x09, 0xad, 0xe0, 0x9d, 0x94, 0xde, 0xa2, 0x09, 0x14, 0x15, 0x6d, + 0xa4, 0xff, 0xeb, 0x1c, 0xac, 0xb7, 0xb5, 0xb1, 0x12, 0x35, 0x56, 0xa3, 0xd5, 0x58, 0xf1, 0xf2, + 0xfe, 0x55, 0xb1, 0x2d, 0xbd, 0xe7, 0x55, 0x3c, 0x08, 0xf9, 0xa5, 0xe5, 0xad, 0x89, 0xc1, 0x3d, + 0xf5, 0xbe, 0x70, 0x89, 0xdf, 0xd7, 0x19, 0xc5, 0x9a, 0xf5, 0x0e, 0xc9, 0x6a, 0xb5, 0xf9, 0x2f, + 0xe7, 0x47, 0xbb, 0x4f, 0x36, 0xf5, 0x79, 0x30, 0x97, 0x56, 0x37, 0x31, 0x6c, 0x6e, 0x60, 0x58, + 0xc7, 0x7a, 0x9b, 0xde, 0xb6, 0xe9, 0xa5, 0xf6, 0x06, 0xd5, 0x5d, 0x9a, 0x3b, 0xf0, 0x9c, 0xdd, + 0xc6, 0x75, 0xda, 0x13, 0x6b, 0xcb, 0xf5, 0xda, 0x86, 0xb4, 0xcf, 0x17, 0x47, 0x6a, 0x77, 0xe4, + 0x4b, 0x70, 0x19, 0xad, 0x2f, 0xe9, 0x70, 0x2f, 0x6c, 0xf3, 0xad, 0x27, 0x79, 0xbf, 0x72, 0x3f, + 0x7c, 0x4f, 0xc2, 0xbf, 0xb4, 0xda, 0xb5, 0xcc, 0x97, 0x2f, 0xa5, 0x51, 0x4b, 0x97, 0xb3, 0x5d, + 0xe9, 0x7a, 0xd6, 0xea, 0x46, 0xa7, 0x57, 0xd4, 0xe2, 0x51, 0x57, 0x99, 0x31, 0x2b, 0x3c, 0x94, + 0xa6, 0xab, 0x5b, 0xf9, 0x82, 0x16, 0xf3, 0x9a, 0xcd, 0xfd, 0xd8, 0xf4, 0x86, 0x6c, 0xee, 0xd2, + 0xb6, 0x89, 0x17, 0x9b, 0x69, 0x25, 0x01, 0x47, 0x83, 0xd2, 0xa5, 0x53, 0x73, 0x06, 0xd8, 0xcc, + 0x63, 0xea, 0xdf, 0xe0, 0x2f, 0xa5, 0xb9, 0x20, 0xac, 0x7c, 0xff, 0x66, 0x1e, 0x1a, 0xfa, 0xb0, + 0x7d, 0x9d, 0x3b, 0x54, 0xd8, 0xe9, 0xb0, 0x51, 0xa3, 0x8d, 0xd5, 0xe3, 0xf0, 0xf4, 0xe6, 0x7e, + 0xbd, 0x73, 0x54, 0x58, 0x73, 0x8b, 0x5a, 0x9b, 0xf3, 0xa9, 0xfd, 0xab, 0xe6, 0xc8, 0x70, 0x12, + 0xe9, 0x74, 0x11, 0xd1, 0x6b, 0x62, 0x6f, 0x11, 0xad, 0x4d, 0xe1, 0x12, 0x24, 0xa0, 0x27, 0xc0, + 0xda, 0x3c, 0x67, 0x6e, 0xae, 0x7b, 0x09, 0xac, 0xf1, 0x7c, 0xb1, 0xae, 0x83, 0x78, 0x6e, 0xb8, + 0xbf, 0xe8, 0x2f, 0x6d, 0xf5, 0x84, 0x31, 0xfa, 0x37, 0xb2, 0x34, 0x03, 0xfe, 0x91, 0xe9, 0x22, + 0x63, 0xac, 0x74, 0x69, 0x8b, 0x36, 0xda, 0xcc, 0xd9, 0x40, 0x8f, 0x28, 0x5b, 0xd5, 0xff, 0xb8, + 0xa9, 0xa7, 0x42, 0xbb, 0x1f, 0x8d, 0x74, 0x83, 0xd1, 0x3a, 0x55, 0x6e, 0x03, 0xeb, 0x3c, 0x66, + 0x06, 0x2f, 0x03, 0xee, 0xd2, 0xeb, 0xd9, 0x4c, 0xf1, 0xcb, 0xd2, 0x7c, 0x0b, 0x2c, 0x6c, 0x87, + 0xd9, 0x70, 0x16, 0x8b, 0x68, 0x3e, 0xde, 0xf0, 0x31, 0xcb, 0x87, 0xb0, 0xaa, 0x9c, 0xdd, 0x2e, + 0x86, 0x08, 0x23, 0x7f, 0xee, 0x56, 0x67, 0xfe, 0xe1, 0xd9, 0xde, 0xe0, 0x9c, 0x24, 0xb6, 0x2c, + 0x0c, 0x8a, 0xa1, 0xe7, 0x2e, 0x10, 0x75, 0x05, 0x22, 0x9f, 0x47, 0xb2, 0x9e, 0xb1, 0x41, 0x9d, + 0x10, 0x3b, 0x8d, 0x7b, 0x21, 0x5f, 0x28, 0x94, 0x5e, 0xf0, 0x75, 0x44, 0x99, 0xca, 0xe9, 0xbd, + 0x15, 0x50, 0x86, 0xd5, 0xf6, 0xf9, 0x91, 0xba, 0x03, 0x1c, 0xe5, 0xca, 0xf4, 0x8d, 0x0e, 0x8b, + 0x67, 0xf9, 0xb9, 0xb8, 0x21, 0x2b, 0xbf, 0x0d, 0x2b, 0x1c, 0x39, 0x4e, 0xa3, 0xfa, 0x71, 0x84, + 0x52, 0xcf, 0x2b, 0x38, 0xb8, 0x7a, 0x4a, 0x3f, 0xc3, 0xbd, 0x18, 0xbb, 0xb9, 0x8b, 0xb0, 0x2f, + 0x72, 0x15, 0x01, 0xd6, 0x87, 0xeb, 0x59, 0x82, 0x76, 0x89, 0x30, 0xc5, 0xd3, 0x71, 0x69, 0x0d, + 0x6a, 0x19, 0xf6, 0xcb, 0x73, 0x7a, 0xfb, 0xf5, 0x49, 0xfc, 0x66, 0x05, 0x3c, 0x9f, 0x4d, 0xbc, + 0xdb, 0xde, 0x15, 0xb1, 0x92, 0x8d, 0x20, 0xd3, 0x6c, 0x3b, 0x88, 0xbe, 0x8a, 0x59, 0x60, 0xac, + 0xba, 0x5c, 0xef, 0x76, 0xb2, 0xeb, 0x8b, 0x51, 0x25, 0x76, 0xbe, 0x40, 0x00, 0x98, 0x1c, 0x91, + 0xe5, 0x35, 0x9a, 0x93, 0x87, 0xe8, 0xa2, 0xd3, 0x60, 0x82, 0xf1, 0xb9, 0xe2, 0x3d, 0xb8, 0x61, + 0x39, 0x23, 0x85, 0x6c, 0xce, 0xde, 0x24, 0x71, 0x65, 0xbd, 0x54, 0x77, 0x1a, 0xe9, 0xba, 0x81, + 0xc0, 0x26, 0xbc, 0x2b, 0x50, 0x4c, 0x1c, 0x67, 0x85, 0x21, 0x48, 0xac, 0xe1, 0xb2, 0xe6, 0xf0, + 0xb2, 0x49, 0x9d, 0xbc, 0x34, 0xc4, 0xa6, 0x51, 0x06, 0x2c, 0x51, 0x05, 0x59, 0xa0, 0x3d, 0x70, + 0xe8, 0xc8, 0x95, 0x4b, 0x3d, 0xbd, 0xf1, 0x60, 0xa8, 0x8f, 0xd0, 0x59, 0xf5, 0x48, 0xc4, 0x2d, + 0xd7, 0x01, 0x10, 0x84, 0xe6, 0x4a, 0x3f, 0x45, 0x06, 0xb3, 0xd9, 0x89, 0x8c, 0xb2, 0x63, 0x8c, + 0x73, 0x0e, 0xa5, 0x52, 0x48, 0x14, 0x30, 0x40, 0xd4, 0x2f, 0xc7, 0xad, 0x1e, 0xd2, 0x12, 0x30, + 0x9f, 0x1a, 0x8f, 0xce, 0x8a, 0x73, 0x3d, 0x73, 0xb5, 0x4a, 0xba, 0xca, 0x54, 0x39, 0xb8, 0xa8, + 0x41, 0x33, 0xda, 0xd5, 0x7b, 0x18, 0xb7, 0x36, 0x53, 0x4d, 0x19, 0x74, 0x3d, 0x6d, 0xcd, 0x77, + 0x07, 0x5d, 0x4d, 0x37, 0x9f, 0xb4, 0xb4, 0x13, 0x19, 0x8c, 0xd6, 0xe8, 0x50, 0x33, 0x74, 0xf0, + 0xce, 0x55, 0xbc, 0x71, 0x63, 0xf4, 0x0b, 0x6d, 0xbc, 0x93, 0x86, 0xf5, 0x19, 0x95, 0xa3, 0xb3, + 0xb0, 0x2a, 0x98, 0x34, 0x94, 0x90, 0xbd, 0xfa, 0x58, 0xea, 0x3a, 0xce, 0x81, 0xf7, 0x5d, 0x52, + 0xce, 0xa0, 0x5e, 0xe5, 0x87, 0xcd, 0x6a, 0x34, 0x46, 0x7a, 0x93, 0x8a, 0x7f, 0xd1, 0x80, 0x54, + 0x55, 0x2d, 0xb4, 0xc2, 0x16, 0x6d, 0x76, 0x39, 0x31, 0x24, 0x84, 0x05, 0x49, 0x8c, 0xd5, 0x6d, + 0x87, 0xdb, 0x99, 0x2d, 0x33, 0xf2, 0x4d, 0x7a, 0xb8, 0xe1, 0x00, 0xf7, 0xf4, 0xbd, 0x0a, 0x0d, + 0x12, 0x17, 0x9e, 0x5d, 0x15, 0xa4, 0x83, 0x8b, 0x0e, 0x97, 0xae, 0x61, 0x55, 0xd7, 0x0a, 0xc9, + 0x5c, 0x35, 0xa3, 0xb2, 0x41, 0xe3, 0xf7, 0xad, 0x2f, 0x42, 0xab, 0xf7, 0x4d, 0x32, 0xab, 0x8a, + 0x3d, 0xa5, 0x81, 0xe2, 0xb4, 0x5d, 0x3b, 0xb3, 0x9c, 0x98, 0xd6, 0xd2, 0x92, 0x09, 0xca, 0xe0, + 0x04, 0xe5, 0xcc, 0x89, 0x1e, 0x4d, 0xea, 0x09, 0x43, 0x6f, 0x54, 0x3b, 0x28, 0xcc, 0xa3, 0x45, + 0x5e, 0x00, 0xe4, 0x51, 0x61, 0x69, 0x59, 0x6f, 0xc4, 0xee, 0x51, 0x6d, 0xdb, 0xc8, 0xcd, 0x28, + 0x5f, 0x71, 0x28, 0x4c, 0xd7, 0xab, 0x47, 0xeb, 0x1c, 0x2b, 0x4f, 0xaf, 0x6f, 0xe7, 0x73, 0x12, + 0x91, 0x21, 0x06, 0x74, 0xbb, 0x52, 0x56, 0xa4, 0xa0, 0xfb, 0x52, 0x82, 0x9a, 0x04, 0xd6, 0x17, + 0x90, 0x1f, 0xaa, 0x8e, 0xb4, 0x38, 0x54, 0x6e, 0xe8, 0x4c, 0xa9, 0x9b, 0xd2, 0xaf, 0x6b, 0xf9, + 0x2f, 0x3c, 0x5e, 0x16, 0x18, 0xe2, 0x1c, 0xf1, 0x78, 0xc3, 0xf8, 0xf3, 0x66, 0xbd, 0xc8, 0x56, + 0x75, 0x83, 0x0e, 0xa8, 0xd4, 0x6a, 0xd5, 0xfe, 0xaf, 0x6e, 0x7c, 0x35, 0x23, 0x82, 0x74, 0x4a, + 0x5f, 0x22, 0xe5, 0x03, 0xc3, 0x6f, 0x32, 0x8d, 0x6a, 0x9a, 0xc7, 0x41, 0x9a, 0x74, 0xd9, 0xcb, + 0x56, 0x11, 0xbb, 0x2e, 0x44, 0xeb, 0x7d, 0xd4, 0x04, 0x5f, 0xad, 0x7f, 0x10, 0xaf, 0x07, 0x07, + 0x7f, 0x64, 0x71, 0xdb, 0x2b, 0xb7, 0xff, 0x1c, 0x9b, 0xd0, 0x70, 0x40, 0x9d, 0xc5, 0x15, 0x4c, + 0x45, 0x57, 0x44, 0x68, 0x33, 0x79, 0x1d, 0x37, 0x2c, 0xcf, 0x80, 0xe2, 0x8a, 0x51, 0x17, 0xdb, + 0x28, 0x05, 0xff, 0xf6, 0xb0, 0xe9, 0x6b, 0x6d, 0x10, 0xeb, 0xaa, 0x63, 0xa0, 0xf9, 0x36, 0x93, + 0xde, 0xef, 0xeb, 0x84, 0x03, 0xc3, 0x38, 0xe3, 0x17, 0x89, 0x5b, 0x52, 0x42, 0x36, 0x04, 0x16, + 0x6f, 0xfc, 0x9e, 0x06, 0xac, 0x94, 0x53, 0x38, 0xc7, 0xb7, 0x8f, 0x95, 0x34, 0x86, 0x0b, 0x3c, + 0x21, 0xd7, 0x8a, 0xc6, 0x56, 0xa2, 0x2d, 0xbe, 0xac, 0xf2, 0xdf, 0xd6, 0x81, 0x3d, 0x0b, 0x92, + 0xa0, 0x4f, 0x62, 0x6e, 0xb0, 0x6b, 0x49, 0xbf, 0xb4, 0xcd, 0x10, 0xec, 0x3e, 0x50, 0xc9, 0xca, + 0x71, 0x40, 0x20, 0x9f, 0x61, 0x51, 0xaf, 0xa3, 0xe8, 0xb7, 0xf4, 0xea, 0x5b, 0x3a, 0x39, 0x5d, + 0x2e, 0x54, 0xb0, 0xbf, 0x75, 0x04, 0xcd, 0x28, 0xc8, 0x97, 0x4c, 0xcf, 0x92, 0x64, 0xff, 0x53, + 0xab, 0xed, 0x14, 0x57, 0xb3, 0x4a, 0x0b, 0x71, 0x89, 0x8b, 0x9d, 0x8d, 0x1a, 0x97, 0xff, 0xee, + 0xc6, 0x5d, 0x8c, 0x94, 0x97, 0xd0, 0x6a, 0xe5, 0x82, 0xa1, 0x57, 0xe0, 0x77, 0x33, 0x8c, 0xd1, + 0xc6, 0xf8, 0x38, 0x21, 0x2d, 0x02, 0x85, 0x39, 0xb8, 0x01, 0x48, 0x8e, 0x5c, 0x0f, 0xb5, 0xd5, + 0x5a, 0xc1, 0x73, 0x5a, 0xdc, 0xfa, 0xe1, 0x0a, 0x95, 0xc8, 0xa7, 0xd8, 0x68, 0x76, 0xd5, 0x2a, + 0xad, 0x51, 0x25, 0x3e, 0xf2, 0x52, 0xeb, 0xd7, 0xa7, 0xb8, 0xad, 0x5b, 0xfb, 0x63, 0x73, 0x3f, + 0xa8, 0x7c, 0xc0, 0x7b, 0x71, 0x88, 0xc9, 0x0b, 0xf9, 0xb6, 0x8d, 0xa4, 0x54, 0xe8, 0xb6, 0xb5, + 0x86, 0x0a, 0x3a, 0x75, 0xcc, 0xd2, 0xdf, 0x02, 0x64, 0xdf, 0x03, 0x86, 0xb6, 0x88, 0x26, 0xe3, + 0xef, 0x28, 0xc6, 0x05, 0x5e, 0xb5, 0xa3, 0x31, 0xf6, 0xb5, 0x9e, 0xfb, 0x54, 0xd5, 0xc4, 0x3e, + 0xbd, 0x4e, 0xef, 0x2d, 0x75, 0x10, 0x61, 0x0d, 0x15, 0x60, 0xf4, 0x31, 0xe6, 0xf6, 0xcf, 0x25, + 0xae, 0xef, 0x7d, 0x54, 0x5c, 0x5b, 0xea, 0x12, 0xfa, 0x57, 0x5a, 0x34, 0xd2, 0x38, 0x4a, 0xa6, + 0x2d, 0x9b, 0x3a, 0xa6, 0x16, 0x8a, 0x9b, 0xe6, 0x35, 0xf6, 0x4e, 0x3f, 0x8f, 0xf3, 0x8a, 0xc1, + 0xa3, 0x53, 0x5f, 0xbe, 0x14, 0x6d, 0x4e, 0xff, 0x9b, 0x7a, 0xfc, 0x2b, 0xd2, 0x54, 0x34, 0xd0, + 0x36, 0xee, 0x59, 0x7a, 0xa0, 0x23, 0x6f, 0x1e, 0x88, 0xc1, 0x78, 0x7d, 0xf2, 0x16, 0x26, 0x93, + 0xc0, 0x97, 0x2e, 0x19, 0x6a, 0x09, 0x45, 0x5c, 0x67, 0xee, 0x65, 0xe9, 0x20, 0x8b, 0x0c, 0x7c, + 0xe2, 0xee, 0x77, 0x0e, 0xf4, 0x77, 0x0e, 0x6a, 0x8e, 0x67, 0x2d, 0x25, 0x88, 0x64, 0x79, 0x61, + 0x17, 0xa9, 0xf5, 0xf6, 0x87, 0xae, 0x4d, 0xa6, 0xe2, 0x34, 0xb3, 0xfa, 0x8e, 0x53, 0xee, 0x31, + 0x15, 0x68, 0xbb, 0xb6, 0xd3, 0x1c, 0x3c, 0xf7, 0x78, 0xa7, 0x19, 0x94, 0x3b, 0x0d, 0x26, 0x3c, + 0x1c, 0x36, 0xa1, 0xe3, 0x97, 0xe3, 0xae, 0xe6, 0x09, 0xfd, 0xe3, 0x86, 0x2c, 0x1b, 0xf6, 0x23, + 0x27, 0x82, 0x63, 0x4b, 0xaf, 0xc0, 0xd5, 0x1a, 0x03, 0xa5, 0x04, 0xe1, 0x31, 0x60, 0x3a, 0x55, + 0x24, 0x2a, 0x69, 0x53, 0xd0, 0x10, 0x14, 0x36, 0x62, 0x1b, 0xb4, 0x97, 0x06, 0x1c, 0x87, 0xe8, + 0xd0, 0xce, 0xba, 0xf6, 0xf1, 0x00, 0xee, 0xec, 0x86, 0xbb, 0x3b, 0x33, 0x89, 0xfb, 0x56, 0xc2, + 0x81, 0x9c, 0xf4, 0x38, 0x7d, 0x63, 0x34, 0x90, 0x1f, 0x84, 0x28, 0xbd, 0xb3, 0xdb, 0x33, 0x1a, + 0xab, 0x9a, 0xe7, 0x0c, 0x77, 0x36, 0x80, 0xac, 0xd6, 0x43, 0x15, 0xd9, 0xe3, 0x63, 0xf6, 0xbf, + 0xde, 0x31, 0x7a, 0xd6, 0x4e, 0x5e, 0x00, 0xc3, 0x97, 0x7d, 0xb6, 0x2f, 0x05, 0x6c, 0x1a, 0xc9, + 0xa5, 0x15, 0x7d, 0xe0, 0xb9, 0x98, 0x31, 0xad, 0x06, 0x35, 0x46, 0x26, 0x4f, 0x22, 0x6a, 0x43, + 0xc7, 0x15, 0x26, 0x36, 0xaa, 0xba, 0xa8, 0x49, 0xd1, 0x9d, 0xea, 0xa4, 0xac, 0xa1, 0x4c, 0x6a, + 0x07, 0xbe, 0xdd, 0x5c, 0xbb, 0x2e, 0x46, 0x4f, 0x53, 0x78, 0xaf, 0x51, 0x74, 0x4b, 0x61, 0xa3, + 0xe7, 0x29, 0x74, 0xda, 0x86, 0x13, 0xa7, 0xa9, 0xc4, 0x28, 0xcd, 0x9d, 0x2f, 0x1a, 0xba, 0x44, + 0xe2, 0xe0, 0xc8, 0x54, 0xa1, 0xab, 0xad, 0x92, 0xaf, 0x4c, 0x61, 0x0a, 0xc7, 0xd5, 0x92, 0xd6, + 0x5d, 0xe9, 0xa8, 0xdf, 0x2a, 0x58, 0xf1, 0x19, 0x76, 0x29, 0xdd, 0x68, 0xa1, 0x40, 0xf0, 0x51, + 0xa4, 0x29, 0x38, 0x29, 0xfc, 0x4b, 0x43, 0x72, 0x5a, 0x0f, 0x79, 0xa3, 0xa9, 0x5c, 0x4c, 0xe2, + 0x8e, 0x9f, 0xb0, 0x16, 0xdb, 0xf1, 0x6e, 0x0c, 0xb2, 0xa1, 0x0d, 0x24, 0xa1, 0x5d, 0x85, 0x4e, + 0xdb, 0x6c, 0x19, 0x23, 0x87, 0xbe, 0x25, 0xc7, 0x87, 0xf2, 0x54, 0xdc, 0x9e, 0x87, 0xd8, 0xe9, + 0x37, 0xd4, 0xa8, 0xdd, 0xc1, 0xb2, 0x02, 0x68, 0xd1, 0x37, 0x97, 0x9a, 0x26, 0x9b, 0x2a, 0x6d, + 0xe8, 0xab, 0x89, 0xbd, 0xbd, 0x78, 0xfe, 0xfc, 0xb0, 0x2f, 0x38, 0x9c, 0xd7, 0x3f, 0xa0, 0x4d, + 0x2a, 0xcc, 0xe8, 0xcb, 0x40, 0x17, 0xbc, 0x59, 0x33, 0xd0, 0x98, 0x23, 0xc5, 0x0d, 0xeb, 0x8a, + 0x81, 0xfd, 0x41, 0x29, 0xef, 0x3e, 0xad, 0x1d, 0x65, 0x2b, 0xbc, 0xf6, 0x56, 0x7c, 0xd8, 0xa8, + 0x11, 0x86, 0x2e, 0x41, 0xb4, 0x25, 0x7f, 0xca, 0xfc, 0x07, 0x33, 0xfd, 0xa2, 0x49, 0x28, 0xa1, + 0x36, 0x9f, 0x7f, 0xa5, 0xbd, 0x6d, 0xe0, 0x1d, 0xe9, 0x73, 0xb7, 0xf8, 0x6f, 0x03, 0x8d, 0xa9, + 0x63, 0xd9, 0x49, 0xce, 0x01, 0x1c, 0xe5, 0xa3, 0x83, 0x89, 0x66, 0x70, 0x84, 0xf0, 0x08, 0x49, + 0x18, 0xce, 0x2c, 0x3a, 0x51, 0x21, 0x74, 0x5c, 0x61, 0x1d, 0x94, 0x61, 0x12, 0x68, 0x0b, 0x44, + 0x69, 0x84, 0x20, 0x90, 0x6c, 0x75, 0x0b, 0xaa, 0x07, 0x39, 0x3c, 0x9e, 0x31, 0x3c, 0xde, 0xf9, + 0x91, 0x57, 0xa9, 0x61, 0xea, 0xcf, 0xfc, 0x62, 0xd1, 0x76, 0x75, 0xfc, 0x24, 0xb6, 0xb5, 0x9e, + 0x6f, 0x49, 0xce, 0x25, 0xdb, 0xaa, 0x0f, 0x4a, 0x37, 0xf3, 0x52, 0x57, 0x08, 0x03, 0xcf, 0xb3, + 0x8d, 0xd5, 0xdf, 0x13, 0x20, 0xcd, 0x06, 0x33, 0xd3, 0x15, 0x65, 0x9e, 0xe3, 0xd4, 0x94, 0xfd, + 0x4f, 0x61, 0xcf, 0x4f, 0xd3, 0xf5, 0x97, 0x1b, 0xd3, 0x66, 0xf4, 0x72, 0xcc, 0x01, 0x11, 0x4b, + 0x16, 0xae, 0xe9, 0xfb, 0xbb, 0x0f, 0x7b, 0x1d, 0x2f, 0x8e, 0x1b, 0x6f, 0xfe, 0x67, 0xed, 0x9c, + 0xf7, 0x4f, 0xf3, 0xa0, 0xa7, 0xde, 0x5d, 0x4e, 0x82, 0x71, 0xdb, 0xa0, 0x87, 0x1e, 0x3e, 0xce, + 0xd7, 0x46, 0xb3, 0x61, 0xc1, 0xb5, 0xd2, 0xa0, 0x8d, 0x3a, 0xb2, 0xb5, 0xa8, 0xa1, 0xd6, 0xbb, + 0x50, 0xc9, 0xa2, 0x07, 0x6d, 0x45, 0x0d, 0xa7, 0x29, 0xa3, 0xd1, 0x7c, 0x51, 0xdc, 0xe6, 0x7e, + 0xa1, 0x1c, 0x29, 0x8b, 0x0e, 0x95, 0x9d, 0x5f, 0x46, 0x7f, 0xbc, 0x42, 0xac, 0xbb, 0x1b, 0x22, + 0x89, 0x70, 0x76, 0x8a, 0x8c, 0xbd, 0x55, 0x75, 0x39, 0xaa, 0x9a, 0x6e, 0x44, 0xa6, 0x12, 0x8c, + 0xb6, 0x1c, 0x4d, 0x60, 0x05, 0x0f, 0xcf, 0xce, 0x97, 0x35, 0x7c, 0x18, 0x01, 0x45, 0xc5, 0xe0, + 0x30, 0xb8, 0x10, 0x14, 0xc8, 0x17, 0x94, 0x37, 0x1e, 0x26, 0x74, 0x00, 0x58, 0x22, 0x98, 0x4d, + 0x65, 0x8d, 0xa3, 0x47, 0x99, 0x97, 0x58, 0xbc, 0x61, 0xcd, 0xfc, 0x0a, 0x6f, 0x01, 0x2c, 0x4f, + 0x08, 0x43, 0xf2, 0x61, 0xb7, 0x4f, 0x6b, 0xa8, 0x4d, 0xe1, 0x72, 0xc9, 0x61, 0xf6, 0xb4, 0xaa, + 0x0b, 0x59, 0x75, 0x17, 0x21, 0x68, 0xe3, 0x2a, 0x2c, 0x0a, 0x92, 0xa7, 0x39, 0x12, 0xe7, 0x4f, + 0x72, 0x24, 0x86, 0x66, 0x32, 0x3f, 0xf2, 0x13, 0x67, 0xa6, 0xfa, 0xcc, 0x98, 0x24, 0xf2, 0xea, + 0x49, 0xeb, 0x72, 0x32, 0x2c, 0x5c, 0x81, 0x32, 0x99, 0xb8, 0x40, 0xa1, 0x1c, 0x36, 0x2e, 0x5b, + 0x93, 0xa1, 0xe7, 0xec, 0xe6, 0xcb, 0xe5, 0x68, 0x95, 0x7b, 0xb4, 0xe6, 0x50, 0x9c, 0x3e, 0xd5, + 0xa1, 0x38, 0x78, 0xa2, 0x43, 0xb1, 0x1b, 0x6d, 0x50, 0x20, 0x9d, 0x57, 0x63, 0x11, 0x33, 0x99, + 0xd0, 0x3b, 0xfd, 0xd4, 0x15, 0xdf, 0xa9, 0x3a, 0x3f, 0x90, 0xdf, 0xd3, 0xb9, 0x1f, 0x2d, 0x75, + 0x82, 0x88, 0xf5, 0x0b, 0x97, 0x72, 0xfc, 0x1e, 0x2b, 0xf8, 0xb2, 0xd6, 0x7d, 0x87, 0x36, 0x19, + 0x0e, 0xcf, 0x73, 0x73, 0x1b, 0x17, 0x11, 0x6d, 0xcc, 0x15, 0x1a, 0x1b, 0x3d, 0x91, 0x6a, 0x72, + 0x22, 0x78, 0xde, 0x79, 0x2a, 0x4c, 0xfd, 0x73, 0xc4, 0x10, 0x52, 0x35, 0xef, 0xed, 0xb9, 0x5d, + 0x84, 0x89, 0x99, 0xf1, 0x04, 0xd1, 0x99, 0x54, 0x07, 0x04, 0xbf, 0x6e, 0x82, 0xa6, 0xe3, 0x7a, + 0x37, 0x41, 0xd3, 0xc3, 0x95, 0x04, 0xfd, 0x97, 0x68, 0x45, 0xcd, 0x37, 0x51, 0x77, 0xc5, 0x37, + 0xd1, 0xba, 0x85, 0x02, 0x58, 0xe0, 0xee, 0xba, 0xd3, 0x64, 0xb8, 0xa5, 0xd0, 0x86, 0xc3, 0x73, + 0xc3, 0xa2, 0xb0, 0x42, 0xf5, 0xed, 0x2e, 0x7e, 0xb9, 0x88, 0x86, 0xeb, 0x09, 0x84, 0x41, 0xe9, + 0xd4, 0x8d, 0x4f, 0xed, 0x15, 0x7f, 0x2f, 0x03, 0xed, 0xe0, 0x2f, 0x8c, 0xcc, 0x27, 0xa1, 0x4e, + 0x73, 0xa6, 0x17, 0xc7, 0xce, 0x37, 0xc2, 0xa1, 0xc5, 0xaa, 0x3b, 0xdb, 0x0c, 0xe5, 0x18, 0xec, + 0xa8, 0xf7, 0x0c, 0x37, 0x2e, 0xaa, 0xdc, 0x52, 0xe8, 0x24, 0xa5, 0xbb, 0xa3, 0x8c, 0x14, 0x77, + 0xa9, 0xf9, 0xa2, 0xa8, 0x6a, 0x74, 0x6f, 0x9c, 0x02, 0x0e, 0x9e, 0x2b, 0x9d, 0x52, 0xea, 0xd5, + 0x5c, 0x94, 0xd5, 0xd4, 0xdd, 0x52, 0xc2, 0x75, 0x2e, 0x29, 0xcd, 0xa9, 0x98, 0x3f, 0x0c, 0xb5, + 0x70, 0x7e, 0xf5, 0x11, 0x96, 0xe6, 0xd7, 0x4f, 0x1c, 0x67, 0x05, 0x9b, 0xd5, 0xea, 0xc9, 0xb3, + 0xc9, 0x68, 0xaf, 0xac, 0xe0, 0xa9, 0x63, 0x5e, 0x82, 0x78, 0xfd, 0xce, 0x41, 0x37, 0xc0, 0xc0, + 0x7e, 0xe7, 0xa8, 0x53, 0x5d, 0xc3, 0xb0, 0x3e, 0xd8, 0x58, 0x2e, 0xb5, 0xd5, 0xb2, 0x7a, 0x8d, + 0x34, 0x7d, 0x24, 0x9d, 0xfa, 0x22, 0x84, 0xd7, 0x5a, 0xaf, 0x6d, 0x09, 0xe6, 0x0f, 0xeb, 0x2b, + 0x36, 0x7c, 0xde, 0x9c, 0x16, 0x16, 0x51, 0x7a, 0xba, 0xb5, 0xbe, 0x22, 0xda, 0xe0, 0x15, 0x0d, + 0x5f, 0xb9, 0xb6, 0xd7, 0xbc, 0x4b, 0x9b, 0x6c, 0x08, 0x71, 0x7a, 0xc3, 0x3a, 0xb5, 0x8a, 0xe0, + 0x37, 0x95, 0x60, 0x92, 0xe5, 0x94, 0x67, 0x64, 0xc4, 0xc0, 0x61, 0x4c, 0x83, 0x34, 0x81, 0x37, + 0x80, 0x1e, 0x57, 0xee, 0x9d, 0x8c, 0xc0, 0x96, 0x29, 0xc3, 0x0e, 0xa5, 0x88, 0x96, 0x71, 0x1b, + 0x38, 0x64, 0x83, 0xdb, 0x29, 0xb1, 0xb0, 0xd6, 0x8b, 0xb5, 0x0c, 0xbd, 0xad, 0x5e, 0xf6, 0x76, + 0xe5, 0x95, 0xa7, 0x19, 0x37, 0x11, 0xe1, 0xb5, 0xb3, 0xb7, 0x47, 0x03, 0x34, 0x8c, 0x0a, 0x76, + 0xa9, 0xe7, 0x1c, 0x8e, 0x21, 0xdf, 0xcb, 0xde, 0x77, 0xc9, 0xae, 0xc5, 0x43, 0x29, 0xb2, 0x70, + 0x55, 0xef, 0x7d, 0xe8, 0xa7, 0xca, 0x0b, 0x4b, 0xbb, 0xb2, 0x59, 0x71, 0x76, 0xb3, 0xb7, 0xca, + 0x19, 0xe9, 0xb1, 0x43, 0x5c, 0x68, 0x13, 0x87, 0x9d, 0x62, 0x02, 0x6f, 0x0e, 0x59, 0x63, 0x75, + 0x8f, 0xea, 0x26, 0x62, 0x3c, 0xf1, 0xc9, 0xb8, 0xa5, 0x94, 0x2b, 0xba, 0xec, 0x8c, 0x18, 0x79, + 0x69, 0xde, 0x66, 0x27, 0xfd, 0xbc, 0x33, 0x6f, 0x6e, 0xe6, 0xd5, 0x64, 0xa3, 0xbc, 0xab, 0x48, + 0x90, 0x95, 0xdb, 0x05, 0x87, 0xfb, 0x33, 0xc2, 0x50, 0xe5, 0x2a, 0x94, 0x5f, 0x21, 0xb0, 0x82, + 0x10, 0x3f, 0xd1, 0xcf, 0xdd, 0xca, 0xde, 0x41, 0xf9, 0xd2, 0xc2, 0x6b, 0xa9, 0xb7, 0x71, 0xe8, + 0x4a, 0x15, 0x8f, 0xd2, 0x88, 0x85, 0xce, 0xa1, 0xfc, 0x34, 0x65, 0xb3, 0xc5, 0x97, 0xc8, 0xc2, + 0x4d, 0x2a, 0x17, 0x36, 0x24, 0x3f, 0xcf, 0x7b, 0xf6, 0xa3, 0xed, 0x8c, 0xf7, 0x06, 0xbf, 0xef, + 0xbd, 0xa7, 0x9f, 0x93, 0x22, 0x78, 0x90, 0xae, 0x76, 0x74, 0xd8, 0x9c, 0xde, 0x92, 0x1c, 0x72, + 0x63, 0xa1, 0xe3, 0x7a, 0x0b, 0xc4, 0xbb, 0x3d, 0xdf, 0xd7, 0x5e, 0x2f, 0x9a, 0x6c, 0x3b, 0xff, + 0x96, 0x8e, 0xcb, 0xd3, 0x2a, 0x5b, 0xf2, 0x67, 0xc1, 0x55, 0x68, 0x5d, 0x86, 0x74, 0x22, 0x20, + 0x51, 0x2b, 0x9d, 0x45, 0xf3, 0xcf, 0x58, 0x5d, 0xec, 0x0e, 0xa0, 0x14, 0xa5, 0x4b, 0x41, 0x2f, + 0xf4, 0x91, 0x61, 0xfd, 0xf8, 0xd9, 0x5b, 0x22, 0x06, 0x92, 0xb6, 0xdf, 0x4b, 0x03, 0xa3, 0x8e, + 0x66, 0x7c, 0x8a, 0xcb, 0x09, 0x8e, 0xcb, 0x60, 0x6d, 0x80, 0x6c, 0xe8, 0x7f, 0x8a, 0x11, 0x44, + 0x44, 0x5b, 0xd4, 0x32, 0xa4, 0x21, 0x16, 0xb3, 0x58, 0xc6, 0xd9, 0xdb, 0xe6, 0x3a, 0x4e, 0x80, + 0xca, 0x97, 0x4e, 0x84, 0x21, 0xd8, 0x59, 0xf6, 0xf6, 0xdc, 0x4f, 0xcc, 0x78, 0x64, 0x94, 0x24, + 0x5a, 0xd8, 0x4c, 0x4e, 0x9b, 0x49, 0x77, 0xcd, 0x24, 0x0e, 0x91, 0x33, 0xd4, 0x5e, 0xf0, 0x98, + 0x0c, 0xb3, 0xf7, 0x2e, 0x82, 0x77, 0xda, 0x5d, 0x43, 0x07, 0x57, 0xcc, 0x50, 0x86, 0x5e, 0x4c, + 0xc2, 0xfb, 0xf8, 0x33, 0xf3, 0x98, 0x99, 0x9a, 0xcb, 0xbe, 0xbd, 0x74, 0x99, 0x7c, 0x55, 0xb4, + 0x35, 0x7e, 0x11, 0xc8, 0x99, 0x53, 0xd1, 0xa5, 0x4f, 0xb1, 0xf1, 0xec, 0x13, 0xdc, 0x9e, 0x3e, + 0xc5, 0x8e, 0xd3, 0x0c, 0xcd, 0xe7, 0xea, 0xea, 0x04, 0xed, 0xf8, 0x29, 0x6e, 0x5f, 0x99, 0xab, + 0x11, 0xe1, 0x30, 0x56, 0xa4, 0xb2, 0x81, 0xc2, 0x33, 0xa7, 0x0c, 0x46, 0xaa, 0xa7, 0xfa, 0x9e, + 0xab, 0x5b, 0x8b, 0xd9, 0x9b, 0xdf, 0xd7, 0xda, 0xc2, 0x4b, 0x1d, 0x32, 0xf4, 0x09, 0xac, 0x24, + 0x6b, 0xf5, 0x0e, 0x9e, 0x52, 0xaf, 0x42, 0x2e, 0x85, 0x0d, 0xb0, 0x5d, 0xf1, 0xba, 0x95, 0xec, + 0xcb, 0x24, 0x0a, 0x8d, 0xb9, 0xcb, 0x06, 0x99, 0xfb, 0x8f, 0xaa, 0x68, 0xf8, 0x68, 0x6c, 0xe3, + 0x7c, 0xa1, 0xb0, 0x4e, 0xcf, 0x30, 0xc3, 0x11, 0x75, 0x64, 0x0c, 0xe8, 0x34, 0x99, 0x4f, 0x7a, + 0xe6, 0x0b, 0x28, 0x17, 0x76, 0x38, 0x93, 0x9e, 0xa8, 0xbd, 0x8d, 0xf9, 0x63, 0xf3, 0x1c, 0xa1, + 0x04, 0x98, 0x4a, 0x57, 0xbf, 0xb9, 0xe7, 0xd9, 0x4f, 0x19, 0x2f, 0xa5, 0xfa, 0x3d, 0x4e, 0x13, + 0xe2, 0x53, 0x37, 0xf2, 0x20, 0x84, 0x2a, 0xb4, 0x06, 0xfa, 0xe6, 0xb6, 0x5c, 0x7a, 0xde, 0x03, + 0x1e, 0x91, 0x7e, 0xfa, 0xe1, 0xa8, 0xcb, 0x18, 0xb1, 0x13, 0x46, 0xa0, 0x81, 0x18, 0x5a, 0x68, + 0x60, 0x02, 0xe9, 0x82, 0xef, 0x7d, 0x0f, 0xb2, 0x07, 0x2b, 0x07, 0x2e, 0xb1, 0xc5, 0x70, 0x00, + 0xd4, 0xa8, 0x2a, 0xcf, 0x4d, 0xb0, 0xb8, 0x82, 0xdd, 0xf2, 0xf3, 0xec, 0xc1, 0x48, 0xbf, 0x87, + 0xb3, 0x99, 0x6f, 0x3f, 0xa3, 0xb2, 0xf6, 0xa8, 0x38, 0x43, 0xf3, 0xea, 0xd5, 0x3e, 0x6f, 0x56, + 0xab, 0x67, 0x53, 0x35, 0x1f, 0x88, 0x9a, 0xf5, 0x47, 0xb2, 0xf2, 0xe7, 0x1e, 0x1e, 0x61, 0xe5, + 0x44, 0xb4, 0x3b, 0x2d, 0x7a, 0xb5, 0xd7, 0x98, 0xee, 0x97, 0x8e, 0x4b, 0x8c, 0x77, 0x9a, 0x51, + 0x4e, 0x31, 0x47, 0x82, 0x83, 0x6d, 0x6f, 0xd7, 0x61, 0x71, 0x3a, 0x41, 0x05, 0x7e, 0x2b, 0xc1, + 0x04, 0x24, 0x28, 0x02, 0xbf, 0x6c, 0x23, 0x84, 0xa1, 0xdf, 0x80, 0x2c, 0x54, 0x43, 0xbd, 0x15, + 0x50, 0x12, 0xc4, 0x25, 0xaf, 0x11, 0x11, 0xaa, 0x34, 0x4e, 0x3b, 0x96, 0xf8, 0x6a, 0xf6, 0x82, + 0xf6, 0x0b, 0x1f, 0x38, 0x7a, 0x24, 0xfa, 0x3f, 0x5e, 0x0f, 0x3d, 0x37, 0xa7, 0x7f, 0x77, 0x43, + 0x0e, 0xcf, 0xd7, 0x37, 0xa2, 0x7b, 0x97, 0xb1, 0xd8, 0x24, 0xa8, 0xea, 0xee, 0x73, 0xcf, 0x19, + 0xcd, 0xd2, 0xc7, 0xb0, 0x7f, 0xad, 0x67, 0x3b, 0x7c, 0x51, 0xcb, 0xe7, 0x2c, 0xa9, 0x23, 0x71, + 0xd8, 0xe3, 0xc4, 0xe0, 0x12, 0x81, 0xd8, 0xae, 0xf7, 0xb8, 0x45, 0x40, 0xd9, 0x73, 0x46, 0xa2, + 0x71, 0x94, 0xb8, 0xac, 0x86, 0x38, 0x64, 0x1f, 0x52, 0x1e, 0xd0, 0x9e, 0xd7, 0x80, 0x87, 0xab, + 0x46, 0x51, 0xba, 0xab, 0xe8, 0xe3, 0xbd, 0xb8, 0xba, 0x74, 0xdb, 0x48, 0x53, 0x0c, 0xd1, 0x2f, + 0x38, 0x13, 0x94, 0x30, 0x23, 0x0b, 0x63, 0x58, 0xd9, 0x64, 0xb1, 0xd7, 0x5d, 0xf6, 0x4f, 0x00, + 0xa9, 0x51, 0x45, 0xaf, 0x6a, 0x45, 0x0f, 0x56, 0x16, 0xfd, 0x5e, 0x2f, 0x7a, 0x59, 0x2b, 0x7a, + 0xa8, 0x84, 0x34, 0xbd, 0x1b, 0xd7, 0xe1, 0xc3, 0x29, 0x3b, 0x40, 0xf7, 0xf3, 0xdb, 0x4b, 0xe1, + 0x0a, 0xdd, 0x1b, 0x40, 0xeb, 0xa4, 0x53, 0xc5, 0x48, 0x84, 0xca, 0x4b, 0x76, 0x69, 0xab, 0x2f, + 0xd2, 0x53, 0x99, 0xeb, 0x45, 0x2b, 0xbe, 0x14, 0x55, 0x38, 0xad, 0xe2, 0xd9, 0x76, 0x64, 0x48, + 0xe6, 0xdd, 0x6e, 0xc5, 0x0a, 0x0d, 0xec, 0x50, 0x02, 0x2b, 0xc5, 0x9d, 0xbd, 0xfd, 0x1b, 0x9b, + 0x03, 0x8b, 0x37, 0x35, 0x96, 0x82, 0x34, 0x00, 0x26, 0x5a, 0x33, 0xba, 0x7b, 0x1b, 0x12, 0xe5, + 0xe9, 0x29, 0x79, 0x50, 0xc8, 0xcb, 0x27, 0x49, 0x8e, 0x6e, 0xe0, 0x47, 0x8b, 0xb4, 0x7f, 0x2c, + 0xf2, 0xe7, 0x77, 0x1f, 0xd2, 0x5f, 0xae, 0x2e, 0x7b, 0x29, 0xd4, 0x4f, 0x12, 0x7e, 0x24, 0xe8, + 0x2f, 0x18, 0x66, 0x24, 0xe8, 0x5f, 0xc9, 0xcf, 0x4b, 0x88, 0x01, 0xa3, 0xf8, 0x77, 0xc1, 0x2f, + 0xf2, 0x79, 0x23, 0xcd, 0xc2, 0x05, 0x9d, 0x7e, 0x6c, 0x20, 0x3d, 0xda, 0x6e, 0x64, 0x22, 0x7e, + 0xc5, 0xdd, 0xab, 0xf9, 0xcf, 0xe5, 0x90, 0xeb, 0x7d, 0xfb, 0x18, 0xc6, 0x24, 0xb0, 0x54, 0x64, + 0x4d, 0x43, 0xcf, 0x46, 0x2f, 0xad, 0x4a, 0xfe, 0x4d, 0xe7, 0xe5, 0x85, 0x63, 0xbb, 0x83, 0x43, + 0x5a, 0xcb, 0x77, 0xf0, 0x4d, 0xfe, 0x18, 0x7e, 0x3e, 0xa6, 0xee, 0x6e, 0x6f, 0x03, 0xdd, 0xea, + 0xa7, 0xf0, 0x41, 0xdf, 0xf0, 0xcb, 0xa4, 0xce, 0x68, 0xde, 0x3a, 0xb1, 0x8c, 0x74, 0x8a, 0xab, + 0x0e, 0x3c, 0xa1, 0x46, 0x98, 0x2f, 0x1c, 0x97, 0xa8, 0x8e, 0xe5, 0xf0, 0x6a, 0x0d, 0xdb, 0xdf, + 0x00, 0xee, 0xa1, 0xca, 0xe4, 0xb9, 0x44, 0x98, 0x55, 0x88, 0x6d, 0x3d, 0xe3, 0x7c, 0x1e, 0x04, + 0xb4, 0x91, 0x39, 0x4b, 0x01, 0x3a, 0xa8, 0xbf, 0xd0, 0xa9, 0xd0, 0x61, 0x44, 0x03, 0x3c, 0x8d, + 0x35, 0x1c, 0xd4, 0x8e, 0x85, 0x8a, 0x79, 0xc8, 0x5d, 0x19, 0x50, 0x0e, 0x25, 0xc9, 0x40, 0xe5, + 0x2a, 0x57, 0x3e, 0x1d, 0xbd, 0x0c, 0x4a, 0x0b, 0x01, 0x18, 0x3f, 0xac, 0x25, 0x1d, 0x5f, 0x07, + 0xb4, 0xa9, 0xc6, 0x34, 0x16, 0xf9, 0x1d, 0x11, 0x13, 0xfd, 0xf3, 0x6a, 0x43, 0xf8, 0x37, 0x1a, + 0xc0, 0xb5, 0x85, 0x56, 0xac, 0x91, 0x86, 0x79, 0x33, 0x2a, 0xfd, 0x73, 0xb3, 0xd2, 0xde, 0xa3, + 0xa0, 0x97, 0xe1, 0x5a, 0x22, 0x5b, 0xd6, 0x2a, 0xc3, 0x02, 0xd1, 0x47, 0x5a, 0xc2, 0x51, 0xaf, + 0x60, 0x8e, 0xb2, 0x1e, 0xb7, 0x3b, 0xd3, 0x9f, 0x36, 0xc9, 0xf4, 0x7d, 0xd5, 0xa2, 0x0b, 0x73, + 0x8e, 0xd4, 0x5c, 0x3c, 0x6e, 0x28, 0x42, 0x90, 0xf0, 0x44, 0x44, 0xcc, 0x0b, 0xdc, 0x73, 0x2d, + 0xfc, 0xef, 0xd0, 0x7e, 0xb5, 0x72, 0x0b, 0xde, 0xde, 0x5e, 0x3b, 0x2b, 0x8c, 0xd1, 0xbd, 0xb2, + 0x92, 0xfa, 0x9e, 0x22, 0x98, 0xab, 0x7b, 0xb0, 0x85, 0xe6, 0xf4, 0xda, 0x97, 0xc4, 0xda, 0x2d, + 0xdd, 0x69, 0xe3, 0xf4, 0xd8, 0xb0, 0x72, 0x79, 0x05, 0x40, 0x29, 0xc3, 0xb3, 0xb3, 0x84, 0x36, + 0xa6, 0x84, 0x76, 0x98, 0x84, 0xb6, 0x0a, 0xfd, 0x4d, 0xe7, 0xee, 0x19, 0xfe, 0x3f, 0x5f, 0x2e, + 0x31, 0x2c, 0x48, 0x9a, 0x98, 0x05, 0xe9, 0xe9, 0xaa, 0xb2, 0x54, 0x70, 0x78, 0x20, 0x0a, 0x32, + 0xda, 0x48, 0xad, 0xe8, 0xaa, 0xd2, 0xd0, 0xfa, 0x1a, 0x82, 0x73, 0x5e, 0x53, 0x69, 0x05, 0x31, + 0x6c, 0x5b, 0xda, 0xb5, 0xc0, 0xd3, 0x69, 0x51, 0xd7, 0x3d, 0x62, 0x18, 0xae, 0xa7, 0xba, 0x48, + 0x42, 0x1c, 0x36, 0xf9, 0xd3, 0x4f, 0x80, 0x94, 0x13, 0xd7, 0x59, 0xf8, 0x4d, 0x33, 0x56, 0x14, + 0x19, 0xa0, 0xe4, 0xae, 0xa2, 0xe2, 0xfa, 0xf6, 0x12, 0xf7, 0x20, 0xfb, 0xaf, 0xa3, 0xc5, 0x34, + 0x4d, 0xd3, 0x8f, 0x51, 0xb8, 0x0f, 0x34, 0xbe, 0xfd, 0xfb, 0x08, 0x61, 0x57, 0x97, 0x52, 0x4b, + 0xb5, 0xa0, 0x81, 0x36, 0xf0, 0x23, 0x94, 0xcf, 0x6e, 0xaf, 0x77, 0x3d, 0xdd, 0xf5, 0x07, 0x2f, + 0x9d, 0xf1, 0xa1, 0x87, 0x4d, 0x13, 0x6f, 0x77, 0xdc, 0xeb, 0xe9, 0xf8, 0x40, 0xfd, 0x3c, 0xf4, + 0xc0, 0xc7, 0x9e, 0x3d, 0xf3, 0xfd, 0xeb, 0x29, 0xa7, 0xec, 0xfa, 0x87, 0x48, 0xf1, 0x5e, 0x6a, + 0x29, 0x54, 0x41, 0xeb, 0xde, 0x19, 0x2c, 0x8a, 0x92, 0x45, 0x0b, 0xe1, 0xfc, 0xe2, 0x3a, 0xc7, + 0xa5, 0xfc, 0xf5, 0x74, 0xe9, 0x5a, 0x70, 0xe1, 0x75, 0xad, 0xe7, 0xde, 0x1f, 0xb0, 0x1c, 0x1c, + 0xf7, 0xd5, 0x40, 0x42, 0x54, 0x10, 0x63, 0x5f, 0x18, 0x38, 0x37, 0x94, 0xf0, 0x0b, 0xeb, 0xb6, + 0x44, 0x04, 0x6b, 0x3c, 0xef, 0xe6, 0xd2, 0x7c, 0x2e, 0xe0, 0x80, 0x2b, 0xa3, 0x12, 0x0f, 0xb0, + 0xe5, 0x78, 0x10, 0xea, 0xc7, 0x03, 0x25, 0xf8, 0xff, 0x12, 0x5e, 0xa6, 0xa9, 0x3c, 0x8a, 0xf5, + 0x44, 0x33, 0x88, 0xbf, 0x35, 0x40, 0xfa, 0xe8, 0xbc, 0xea, 0xdb, 0xfb, 0xd2, 0x20, 0x4b, 0xb5, + 0xf8, 0xd4, 0x84, 0xe6, 0x41, 0x84, 0x9a, 0x15, 0x7b, 0x89, 0x8c, 0x09, 0x33, 0x52, 0xfd, 0x39, + 0x75, 0x9e, 0xdc, 0x58, 0xf1, 0xfe, 0xaa, 0xad, 0xa7, 0x8c, 0xf1, 0xa1, 0x9a, 0xe2, 0x36, 0x2a, + 0x9a, 0xcf, 0x6b, 0x15, 0xf1, 0x98, 0x96, 0x37, 0x40, 0xf6, 0x48, 0xbf, 0xcf, 0x7c, 0x94, 0x41, + 0xdd, 0xc4, 0xa5, 0x8e, 0xf2, 0x1f, 0xe4, 0xbb, 0xc7, 0x2d, 0x6f, 0xa9, 0xdd, 0x76, 0x86, 0xfe, + 0x80, 0x4e, 0x31, 0xe2, 0xb6, 0x33, 0xac, 0xdf, 0x76, 0x8a, 0x0b, 0xa1, 0xee, 0xbb, 0xce, 0x06, + 0xc6, 0x89, 0xd2, 0xb4, 0xd7, 0xa3, 0x3b, 0x88, 0xc1, 0x91, 0x2d, 0x5c, 0x11, 0x4f, 0x3d, 0x88, + 0x1f, 0x6c, 0xe9, 0xf5, 0x85, 0x7d, 0xd7, 0x80, 0x48, 0x2c, 0x9c, 0x91, 0x82, 0x31, 0xe2, 0x1c, + 0x50, 0x82, 0xdf, 0x45, 0x33, 0xbf, 0x02, 0xf2, 0x44, 0x10, 0x61, 0x39, 0x0d, 0xfa, 0xdb, 0xe9, + 0xa0, 0x9a, 0x89, 0x61, 0x26, 0x2e, 0x17, 0xf6, 0xf4, 0xfd, 0x7a, 0x69, 0xe4, 0x7b, 0x5c, 0x22, + 0x44, 0xb0, 0xd1, 0x21, 0xcf, 0x35, 0x31, 0x5d, 0x3a, 0x83, 0x61, 0xa3, 0xe5, 0xf5, 0x78, 0xd8, + 0x8f, 0xd9, 0x50, 0xaf, 0xdf, 0xa5, 0xf6, 0x0d, 0xf5, 0xc6, 0x2e, 0x9b, 0x27, 0x1b, 0x37, 0x34, + 0x90, 0x4c, 0x42, 0xe0, 0x97, 0x18, 0xa0, 0xe1, 0xf5, 0x06, 0xea, 0xae, 0x22, 0x02, 0x85, 0x89, + 0x5e, 0xf9, 0x30, 0x81, 0x1a, 0xc6, 0x27, 0x51, 0x45, 0x82, 0x30, 0x25, 0x2d, 0x20, 0x4c, 0xc9, + 0xb2, 0x84, 0x50, 0x4f, 0x4c, 0x08, 0xf5, 0xdf, 0x81, 0x2b, 0xf4, 0x95, 0x80, 0x42, 0xc6, 0x34, + 0x48, 0x1f, 0x47, 0x09, 0xb0, 0x4f, 0x93, 0x62, 0x0c, 0x62, 0xd2, 0xcf, 0xa8, 0x8e, 0xa3, 0xa4, + 0x7f, 0x33, 0x69, 0x8c, 0xc5, 0xee, 0x80, 0x46, 0x63, 0x58, 0xf4, 0x7e, 0x3f, 0x36, 0xbb, 0x8c, + 0x5e, 0xa3, 0x21, 0x90, 0xf3, 0x5e, 0x47, 0x07, 0x92, 0x5f, 0x33, 0x92, 0x9a, 0x8f, 0x03, 0x22, + 0x48, 0xa7, 0x84, 0x40, 0x57, 0xd8, 0x39, 0xdd, 0x0e, 0x7e, 0x8d, 0xf8, 0x35, 0x4e, 0xd3, 0x99, + 0x50, 0xa9, 0x12, 0x8e, 0x06, 0xa5, 0x51, 0x85, 0x34, 0x63, 0x28, 0x31, 0x5f, 0xcd, 0xd7, 0x99, + 0xbf, 0x9a, 0x11, 0x60, 0xf4, 0xc0, 0x2f, 0x11, 0xe0, 0x0f, 0x2a, 0x17, 0xd1, 0x48, 0xb9, 0x88, + 0xe6, 0x7e, 0x72, 0x16, 0xd1, 0x99, 0xab, 0x35, 0xc8, 0x0b, 0x47, 0x9f, 0x90, 0x4a, 0xd3, 0x0f, + 0xe1, 0x43, 0x61, 0x76, 0xbf, 0x54, 0xc4, 0x16, 0xd0, 0x02, 0x4f, 0xf2, 0xba, 0x29, 0x87, 0x3d, + 0xcc, 0x5b, 0xad, 0x3b, 0xb4, 0x8b, 0x6f, 0x23, 0x76, 0x8f, 0x36, 0xd8, 0x4f, 0x19, 0x56, 0x09, + 0xf6, 0xde, 0x57, 0x6e, 0xfd, 0xae, 0x8a, 0x3c, 0x04, 0x0f, 0xae, 0x79, 0x3a, 0xbd, 0x35, 0x40, + 0x21, 0x00, 0x51, 0x11, 0x14, 0xaf, 0x17, 0x95, 0xb8, 0xc6, 0xa1, 0xe0, 0x2b, 0x2f, 0x52, 0x70, + 0x74, 0x33, 0xb2, 0x4b, 0x08, 0xf3, 0x3a, 0x47, 0x0d, 0x17, 0xff, 0x1a, 0x09, 0x99, 0x3e, 0x67, + 0xf0, 0x70, 0x9f, 0x05, 0x2f, 0x4e, 0xf7, 0xcf, 0xf2, 0xf3, 0x25, 0xd5, 0xd0, 0x2b, 0x44, 0x3e, + 0x59, 0xa9, 0x73, 0x94, 0x38, 0x66, 0xa4, 0xb3, 0x64, 0xaf, 0xe0, 0x38, 0x67, 0x22, 0x17, 0xb3, + 0xdb, 0x50, 0x58, 0xf1, 0xed, 0x0d, 0xce, 0x9d, 0xd6, 0x46, 0x68, 0x08, 0x64, 0x44, 0xca, 0x06, + 0x24, 0x99, 0xd9, 0x1c, 0x98, 0x8f, 0x19, 0xf8, 0x63, 0x7a, 0xa3, 0x34, 0xa7, 0x46, 0xb3, 0x6d, + 0xf5, 0x76, 0x69, 0x19, 0x65, 0xf3, 0x74, 0xfb, 0x3e, 0xb4, 0xb2, 0x1a, 0x54, 0x19, 0xe3, 0x58, + 0x29, 0x5b, 0x81, 0xb2, 0x65, 0x58, 0x1f, 0x68, 0x3f, 0x5a, 0x4f, 0x95, 0xf0, 0x92, 0x0d, 0x1b, + 0x00, 0xc2, 0x55, 0xa1, 0xf5, 0x10, 0xcf, 0x08, 0xbc, 0xac, 0xd5, 0xa1, 0x61, 0x2c, 0xeb, 0xb5, + 0xd4, 0xa0, 0xac, 0x86, 0x2a, 0x41, 0xfc, 0x24, 0xae, 0x82, 0x99, 0xec, 0xbc, 0xcc, 0xe7, 0x88, + 0xd2, 0x17, 0x2b, 0x9b, 0x69, 0x9a, 0x1d, 0x55, 0x37, 0x3e, 0x44, 0x62, 0x7b, 0x54, 0x77, 0xe7, + 0x75, 0x55, 0x02, 0x80, 0xf4, 0x26, 0x58, 0xb9, 0x56, 0xf7, 0x97, 0x2f, 0xc9, 0x96, 0x6f, 0x80, + 0xbd, 0x4e, 0x74, 0x74, 0xf6, 0xa1, 0x71, 0x62, 0xc6, 0x6d, 0x5b, 0xf7, 0x30, 0x97, 0x22, 0x04, + 0xe4, 0xc8, 0xf2, 0x72, 0x31, 0x71, 0x26, 0xca, 0x20, 0x31, 0x21, 0xf1, 0x5f, 0x7e, 0x29, 0x55, + 0xce, 0x6e, 0xb5, 0x70, 0xca, 0x5c, 0x0c, 0x13, 0x43, 0x74, 0x57, 0x26, 0x48, 0x1f, 0x44, 0xa7, + 0xb2, 0x6d, 0x2c, 0xd3, 0xfc, 0xca, 0x5f, 0x18, 0x69, 0x95, 0x6f, 0x2e, 0x7e, 0xc1, 0xfb, 0xbd, + 0x51, 0x17, 0x30, 0x8f, 0x8c, 0x8a, 0xe0, 0x8d, 0xe9, 0xad, 0xa2, 0x9f, 0x4a, 0x36, 0x12, 0x46, + 0x89, 0x09, 0x73, 0x79, 0xcd, 0x0c, 0x91, 0x56, 0xce, 0xf0, 0x09, 0xc5, 0x55, 0x94, 0x8c, 0x2c, + 0xc8, 0xa2, 0xbf, 0x91, 0x04, 0x9e, 0x38, 0xa3, 0x8e, 0xd9, 0xd3, 0x2e, 0xee, 0xfc, 0xdc, 0x6d, + 0xbf, 0xa5, 0x6a, 0xc3, 0x71, 0x15, 0xa5, 0x6b, 0x57, 0x95, 0x7c, 0xbb, 0x2b, 0x6c, 0xfe, 0x12, + 0x3a, 0x57, 0x68, 0x8a, 0xc2, 0x84, 0xd9, 0x59, 0xa5, 0x28, 0x5c, 0x7d, 0xa7, 0x7e, 0x19, 0xdf, + 0x2e, 0x7a, 0xeb, 0x31, 0x61, 0xd7, 0x64, 0xd3, 0xef, 0xb8, 0x45, 0xd6, 0xa5, 0x88, 0x8b, 0xf5, + 0xaf, 0xe3, 0xa6, 0xb9, 0x42, 0x1f, 0xf1, 0x28, 0x03, 0x5a, 0x02, 0x0b, 0xdb, 0x71, 0xdf, 0xfb, + 0xcf, 0x38, 0x6a, 0xd6, 0xbd, 0x1b, 0x71, 0x93, 0x7d, 0xcf, 0x7d, 0xf0, 0x24, 0x82, 0x24, 0xe3, + 0x8a, 0x9e, 0x52, 0x0a, 0xd6, 0x35, 0xba, 0xac, 0xc9, 0xde, 0xb7, 0x89, 0xc0, 0x47, 0xac, 0xf0, + 0xc0, 0x85, 0xcd, 0xfa, 0xec, 0x43, 0x7a, 0x4b, 0x43, 0x94, 0x4f, 0xea, 0x09, 0xc4, 0xff, 0x87, + 0x5a, 0xe4, 0xa1, 0xeb, 0x20, 0x7f, 0xbb, 0x48, 0x79, 0x9f, 0x40, 0x2d, 0x8a, 0xf1, 0xb6, 0x85, + 0x3d, 0x03, 0x82, 0xa4, 0x08, 0x7f, 0x40, 0xd2, 0x72, 0xfe, 0x1b, 0x9d, 0xc7, 0x7a, 0x36, 0x95, + 0x2d, 0xaf, 0x14, 0x49, 0x56, 0x96, 0x5f, 0x06, 0xba, 0xd4, 0x3b, 0xfd, 0x28, 0x35, 0xcd, 0x5b, + 0xd9, 0x14, 0x00, 0x67, 0x8d, 0x38, 0x25, 0xa5, 0x35, 0x05, 0x6f, 0x2e, 0x46, 0x34, 0x11, 0xb5, + 0xa9, 0x95, 0x59, 0x68, 0xeb, 0x92, 0xa3, 0x96, 0xf7, 0x4a, 0xa7, 0x19, 0xe7, 0xcb, 0x17, 0xbd, + 0x1b, 0x45, 0xed, 0x77, 0x42, 0xbf, 0x7b, 0x34, 0x98, 0x6a, 0xa8, 0xa8, 0x36, 0x84, 0x6f, 0xf9, + 0x7b, 0x39, 0xb0, 0xdd, 0x01, 0x21, 0x8a, 0xe0, 0x72, 0x2a, 0x84, 0x3a, 0xda, 0x38, 0xc5, 0xc4, + 0x9c, 0x4b, 0x9c, 0xd7, 0x0f, 0x69, 0xe6, 0xfe, 0xeb, 0xb8, 0x25, 0xa4, 0x89, 0x02, 0x7b, 0xdd, + 0xea, 0xa9, 0xe9, 0xf2, 0x1c, 0x03, 0x31, 0x80, 0x0d, 0x50, 0xc4, 0x90, 0x88, 0x1c, 0xdb, 0xdb, + 0xb5, 0xa1, 0x69, 0xb4, 0x34, 0xf1, 0x8b, 0xbd, 0x07, 0x20, 0x4e, 0xb3, 0x0a, 0x9d, 0x45, 0xbd, + 0xc4, 0x71, 0x63, 0x7f, 0xb7, 0x97, 0x7f, 0x97, 0xec, 0xdf, 0x93, 0x70, 0x98, 0xfe, 0x18, 0x3d, + 0x84, 0xb3, 0xde, 0x81, 0x33, 0xf2, 0xb6, 0x7c, 0x40, 0x21, 0x89, 0xd6, 0x8e, 0x3d, 0x12, 0x2a, + 0x8f, 0x38, 0x6e, 0x87, 0x48, 0x38, 0x3a, 0xa4, 0x04, 0x0e, 0xe4, 0x11, 0x8f, 0xfb, 0x83, 0x83, + 0xed, 0xed, 0xaf, 0xed, 0x3c, 0x2d, 0x5b, 0x31, 0x7c, 0x54, 0x35, 0x8d, 0x43, 0xab, 0xa6, 0x34, + 0xb2, 0x25, 0x35, 0xef, 0xf9, 0x39, 0x9a, 0x3b, 0xd8, 0x8b, 0x95, 0xda, 0x34, 0xb8, 0x24, 0xe6, + 0xff, 0x31, 0x97, 0xad, 0x22, 0xd9, 0xbe, 0xab, 0x0e, 0x3a, 0xc8, 0xc5, 0xce, 0xa6, 0x23, 0x3d, + 0xa0, 0x8a, 0xe4, 0xb2, 0xd1, 0x06, 0x5c, 0xc0, 0x96, 0x3d, 0xde, 0xfb, 0x0d, 0x90, 0xc2, 0xa7, + 0xa2, 0x1d, 0xaa, 0xf3, 0x88, 0x02, 0x3d, 0x6c, 0x01, 0x39, 0x1c, 0x75, 0x9d, 0x82, 0x71, 0x3f, + 0xa9, 0x66, 0xf4, 0xa7, 0x10, 0x4e, 0xa7, 0xa3, 0xfc, 0x38, 0x8d, 0xd1, 0x47, 0x74, 0x22, 0xdc, + 0xb5, 0xb3, 0x07, 0x40, 0x27, 0xcb, 0xb4, 0xcb, 0xeb, 0x56, 0xc0, 0xaf, 0xb4, 0xa8, 0x55, 0x22, + 0x8b, 0x09, 0x70, 0xb7, 0x1e, 0x8d, 0xf4, 0xb3, 0xaa, 0x8e, 0x22, 0xab, 0xea, 0x95, 0x68, 0x87, + 0x4c, 0x67, 0x4d, 0x0c, 0x37, 0x99, 0x2e, 0xa0, 0x55, 0xa0, 0xdf, 0x12, 0x04, 0xf9, 0xda, 0x97, + 0x94, 0xf9, 0xda, 0x6d, 0x3f, 0xce, 0x65, 0xd3, 0x1b, 0xdb, 0x95, 0x59, 0x1c, 0xf9, 0xc5, 0x2f, + 0x7f, 0xdf, 0x1f, 0x0d, 0x0e, 0x10, 0x46, 0x49, 0x56, 0xf2, 0xe5, 0xcb, 0x16, 0xab, 0xce, 0x64, + 0x2a, 0x46, 0x53, 0x7c, 0xff, 0xf2, 0xe5, 0x7e, 0xec, 0x6b, 0x89, 0xe2, 0x07, 0x96, 0x2d, 0x74, + 0x40, 0x44, 0x2b, 0xc2, 0x64, 0x5e, 0xd6, 0x37, 0x91, 0xaf, 0xd9, 0x1a, 0x0c, 0xe5, 0x9b, 0x10, + 0x2b, 0xa5, 0x6c, 0x73, 0xf5, 0xfa, 0x1a, 0xa9, 0x79, 0xdd, 0xe0, 0x96, 0x27, 0xd4, 0x0d, 0x1d, + 0x3f, 0x4d, 0x54, 0xb1, 0x2e, 0xec, 0x48, 0x5a, 0x29, 0x7c, 0xae, 0x79, 0x2e, 0x64, 0x39, 0x6a, + 0x4e, 0x69, 0xb2, 0x4b, 0x03, 0x44, 0xf9, 0x26, 0xb6, 0x87, 0x03, 0xe1, 0x6d, 0x91, 0xda, 0x5f, + 0x3b, 0xc1, 0xe5, 0xfa, 0x10, 0x77, 0x92, 0xaa, 0x85, 0xd0, 0x2b, 0x51, 0xd5, 0xcf, 0xf0, 0xc1, + 0xf8, 0x9a, 0x44, 0xe5, 0xda, 0xec, 0x46, 0xb9, 0x38, 0x20, 0xea, 0x3b, 0xc4, 0xf6, 0xb6, 0x9d, + 0x72, 0x22, 0xd4, 0xa8, 0x74, 0x54, 0x4d, 0xe7, 0x48, 0xab, 0x8b, 0xd0, 0x3a, 0xce, 0x42, 0x48, + 0x2c, 0xf9, 0x87, 0x30, 0xcc, 0x48, 0x68, 0xed, 0xf7, 0xfb, 0x42, 0x6e, 0xdd, 0x52, 0x27, 0xb0, + 0x52, 0x99, 0x33, 0x12, 0x5b, 0x1d, 0xe2, 0x21, 0xa8, 0x90, 0xad, 0x94, 0x4f, 0x6b, 0xc1, 0xf6, + 0x76, 0xf9, 0x83, 0x84, 0x0b, 0x6c, 0x35, 0xa2, 0x04, 0xac, 0xff, 0xac, 0xc4, 0xa9, 0x1e, 0x02, + 0xc8, 0x64, 0xc2, 0x9b, 0xcd, 0x97, 0x2f, 0xe6, 0x01, 0x37, 0x74, 0x1f, 0x29, 0x95, 0x6f, 0xe2, + 0x5d, 0xad, 0x59, 0x94, 0xe6, 0x72, 0x29, 0x67, 0xd8, 0x9a, 0x1f, 0xcf, 0x96, 0xa5, 0x8e, 0xac, + 0xd1, 0x9f, 0xa5, 0xe0, 0x10, 0x9d, 0x3c, 0x28, 0xb1, 0x5d, 0x5a, 0x55, 0x92, 0x7b, 0x04, 0xb3, + 0xd9, 0x1b, 0x5c, 0xb0, 0x80, 0x15, 0x21, 0xf4, 0x22, 0x6b, 0xe1, 0xa8, 0xbc, 0xcd, 0xf0, 0x88, + 0xb0, 0x68, 0x43, 0x3d, 0xcd, 0x5c, 0x37, 0x29, 0x0c, 0xbc, 0xd2, 0x7b, 0xaa, 0x0c, 0xfc, 0xa2, + 0x3b, 0x63, 0x81, 0x8d, 0x9a, 0x37, 0xd9, 0x75, 0x39, 0xb9, 0xca, 0xf4, 0x96, 0xf2, 0x61, 0x4f, + 0x59, 0x93, 0xef, 0x36, 0x5b, 0x97, 0x8d, 0x5f, 0x4c, 0x82, 0x63, 0x95, 0xef, 0xff, 0x1d, 0xed, + 0x13, 0x97, 0x8f, 0xb2, 0x62, 0x6c, 0x1d, 0xed, 0x03, 0x05, 0x19, 0x9f, 0xd7, 0xc5, 0x4d, 0x3c, + 0xb6, 0xfe, 0x07, 0x04, 0x5a, 0x64, 0x86, 0x5d, 0x99, 0x01, 0x00 }; diff --git a/wled00/wled.h b/wled00/wled.h index 5bfb4735..6f4630a1 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2112010 +#define VERSION 2112030 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 66bad2b6f8100dedfc02fdbf4f24c8e09b332316 Mon Sep 17 00:00:00 2001 From: Christian Schwinne Date: Sat, 4 Dec 2021 01:05:01 +0100 Subject: [PATCH 4/6] Single json buffer (#2336) * Single/static JSON buffer for all requests. * Missing json.cpp changes. * Async fix. * Added conditional compile (WLED_USE_DYNAMIC_JSON). * Advanced locking with time-out. * Missing releaseJSONBufferLock() on error response. * Fix for config saving. * Fixes and optimisations. Dadded debugging information. * Fix for ledmaps. * No unsolicited serial sending if GPIO1 allocated * Stray semicolons * Fix JSON ledmap Co-authored-by: Blaz Kristan --- wled00/FX_fcn.cpp | 18 ++++++-- wled00/cfg.cpp | 36 +++++++++++++-- wled00/colors.cpp | 2 +- wled00/fcn_declare.h | 11 +++++ wled00/ir.cpp | 34 ++++++++------ wled00/json.cpp | 25 ++++++---- wled00/mqtt.cpp | 19 ++++---- wled00/presets.cpp | 51 +++++++++++++-------- wled00/set.cpp | 7 +++ wled00/src/dependencies/json/AsyncJson-v6.h | 11 ++++- wled00/util.cpp | 33 +++++++++++++ wled00/wled.cpp | 10 +++- wled00/wled.h | 9 +++- wled00/wled_eeprom.cpp | 17 +++++-- wled00/wled_serial.cpp | 22 +++++---- wled00/wled_server.cpp | 18 +++++--- wled00/ws.cpp | 29 ++++++++---- wled00/xml.cpp | 11 ++++- 18 files changed, 272 insertions(+), 91 deletions(-) create mode 100644 wled00/util.cpp diff --git a/wled00/FX_fcn.cpp b/wled00/FX_fcn.cpp index ec23636b..20ff12b8 100644 --- a/wled00/FX_fcn.cpp +++ b/wled00/FX_fcn.cpp @@ -86,8 +86,6 @@ void WS2812FX::finalizeInit(void) busses.add(defCfg); } } - - deserializeMap(); _length = 0; for (uint8_t i=0; i(), true); + bool needsSave = deserializeConfig(doc.as(), true); + releaseJSONBufferLock(); + + if (needsSave) serializeConfig(); // usermods required new prameters } void serializeConfig() { @@ -446,7 +454,11 @@ void serializeConfig() { DEBUG_PRINTLN(F("Writing settings to /cfg.json...")); + #ifdef WLED_USE_DYNAMIC_JSON DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(2)) return; + #endif JsonArray rev = doc.createNestedArray("rev"); rev.add(1); //major settings revision @@ -757,16 +769,24 @@ void serializeConfig() { File f = WLED_FS.open("/cfg.json", "w"); if (f) serializeJson(doc, f); f.close(); + releaseJSONBufferLock(); } //settings in /wsec.json, not accessible via webserver, for passwords and tokens bool deserializeConfigSec() { DEBUG_PRINTLN(F("Reading settings from /wsec.json...")); + #ifdef WLED_USE_DYNAMIC_JSON DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(3)) return false; + #endif bool success = readObjectFromFile("/wsec.json", nullptr, &doc); - if (!success) return false; + if (!success) { + releaseJSONBufferLock(); + return false; + } JsonObject nw_ins_0 = doc["nw"]["ins"][0]; getStringFromJson(clientPass, nw_ins_0["psk"], 65); @@ -798,13 +818,18 @@ bool deserializeConfigSec() { CJSON(wifiLock, ota[F("lock-wifi")]); CJSON(aOtaEnabled, ota[F("aota")]); + releaseJSONBufferLock(); return true; } void serializeConfigSec() { DEBUG_PRINTLN(F("Writing settings to /wsec.json...")); + #ifdef WLED_USE_DYNAMIC_JSON DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(4)) return; + #endif JsonObject nw = doc.createNestedObject("nw"); @@ -839,4 +864,5 @@ void serializeConfigSec() { File f = WLED_FS.open("/wsec.json", "w"); if (f) serializeJson(doc, f); f.close(); + releaseJSONBufferLock(); } diff --git a/wled00/colors.cpp b/wled00/colors.cpp index 2677f61a..424c9916 100644 --- a/wled00/colors.cpp +++ b/wled00/colors.cpp @@ -240,7 +240,7 @@ void colorRGBtoRGBW(byte* rgb) //rgb to rgbw (http://codewelt.com/rgbw). (RGBW_M 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 = 100.0f * ((high - low) / high);; // maximum saturation is 100 (corrected from 255) + 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); } */ diff --git a/wled00/fcn_declare.h b/wled00/fcn_declare.h index 1ba20b33..af9e4a53 100644 --- a/wled00/fcn_declare.h +++ b/wled00/fcn_declare.h @@ -211,6 +211,17 @@ void setRealtimePixel(uint16_t i, byte r, byte g, byte b, byte w); void refreshNodeList(); void sendSysInfoUDP(); +//util.cpp +//bool oappend(const char* txt); // append new c string to temp buffer efficiently +//bool oappendi(int i); // append new number to temp buffer efficiently +//void sappend(char stype, const char* key, int val); +//void sappends(char stype, const char* key, char* val); +//void prepareHostname(char* hostname); +//void _setRandomColor(bool _sec, bool fromButton); +//bool isAsterisksOnly(const char* str, byte maxLen); +bool requestJSONBufferLock(uint8_t module=255); +void releaseJSONBufferLock(); + //um_manager.cpp class Usermod { public: diff --git a/wled00/ir.cpp b/wled00/ir.cpp index 2a04458b..ec950db2 100644 --- a/wled00/ir.cpp +++ b/wled00/ir.cpp @@ -165,6 +165,7 @@ void decodeIR(uint32_t code) if (decodeIRCustom(code)) return; if (irEnabled == 8) { // any remote configurable with ir.json file decodeIRJson(code); + colorUpdated(CALL_MODE_BUTTON); return; } if (code > 0xFFFFFF) return; //invalid code @@ -566,25 +567,33 @@ Sample: void decodeIRJson(uint32_t code) { char objKey[10]; - const char* cmd; String cmdStr; - DynamicJsonDocument irDoc(JSON_BUFFER_SIZE); JsonObject fdo; JsonObject jsonCmdObj; - sprintf(objKey, "\"0x%X\":", code); + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(13)) return; + #endif - readObjectFromFile("/ir.json", objKey, &irDoc); - fdo = irDoc.as(); + sprintf_P(objKey, PSTR("\"0x%lX\":"), (unsigned long)code); + + // attempt to read command from ir.json + // this may fail for two reasons: ir.json does not exist or IR code not found + // if the IR code is not found readObjectFromFile() will clean() doc JSON document + // so we can differentiate between the two + readObjectFromFile("/ir.json", objKey, &doc); + fdo = doc.as(); lastValidCode = 0; if (fdo.isNull()) { //the received code does not exist if (!WLED_FS.exists("/ir.json")) errorFlag = ERR_FS_IRLOAD; //warn if IR file itself doesn't exist + releaseJSONBufferLock(); return; } - cmd = fdo["cmd"]; //string - cmdStr = String(cmd); + cmdStr = fdo["cmd"].as(); jsonCmdObj = fdo["cmd"]; //object if (!cmdStr.isEmpty()) @@ -617,16 +626,14 @@ void decodeIRJson(uint32_t code) if (!cmdStr.startsWith("win&")) { cmdStr = "win&" + cmdStr; } - handleSet(nullptr, cmdStr, false); + handleSet(nullptr, cmdStr, false); } colorUpdated(CALL_MODE_BUTTON); } else if (!jsonCmdObj.isNull()) { // command is JSON object - //allow applyPreset() to reuse JSON buffer, or it would alloc. a second buffer and run out of mem. - fileDoc = &irDoc; deserializeState(jsonCmdObj, CALL_MODE_BUTTON); - fileDoc = nullptr; } + releaseJSONBufferLock(); } void initIR() @@ -654,9 +661,8 @@ void handleIR() { if (results.value != 0) // only print results if anything is received ( != 0 ) { - Serial.print("IR recv\r\n0x"); - Serial.println((uint32_t)results.value, HEX); - Serial.println(); + if (!pinManager.isPinAllocated(1)) //GPIO 1 - Serial TX pin + Serial.printf_P(PSTR("IR recv: 0x%lX\n"), (unsigned long)results.value); } decodeIR(results.value); irrecv->resume(); diff --git a/wled00/json.cpp b/wled00/json.cpp index de55faf4..b489f0e3 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -338,6 +338,8 @@ bool deserializeState(JsonObject root, byte callMode, byte presetId) usermods.readFromJsonState(root); + loadLedmap = root[F("ledmap")] | loadLedmap; + byte ps = root[F("psave")]; if (ps > 0) { savePreset(ps, true, nullptr, root); @@ -832,23 +834,29 @@ void serveJson(AsyncWebServerRequest* request) return; } + #ifdef WLED_USE_DYNAMIC_JSON AsyncJsonResponse* response = new AsyncJsonResponse(JSON_BUFFER_SIZE); - JsonObject doc = response->getRoot(); + #else + if (!requestJSONBufferLock(17)) return; + AsyncJsonResponse *response = new AsyncJsonResponse(&doc); + #endif + + JsonObject lDoc = response->getRoot(); switch (subJson) { case 1: //state - serializeState(doc); break; + serializeState(lDoc); break; case 2: //info - serializeInfo(doc); break; + serializeInfo(lDoc); break; case 4: //node list - serializeNodes(doc); break; + serializeNodes(lDoc); break; case 5: //palettes - serializePalettes(doc, request); break; + serializePalettes(lDoc, request); break; default: //all - JsonObject state = doc.createNestedObject("state"); + JsonObject state = lDoc.createNestedObject("state"); serializeState(state); - JsonObject info = doc.createNestedObject("info"); + JsonObject info = lDoc.createNestedObject("info"); serializeInfo(info); if (subJson != 3) { @@ -858,10 +866,11 @@ void serveJson(AsyncWebServerRequest* request) } DEBUG_PRINT("JSON buffer size: "); - DEBUG_PRINTLN(doc.memoryUsage()); + DEBUG_PRINTLN(lDoc.memoryUsage()); response->setLength(); request->send(response); + releaseJSONBufferLock(); } #define MAX_LIVE_LEDS 180 diff --git a/wled00/mqtt.cpp b/wled00/mqtt.cpp index c5ece464..2823eee4 100644 --- a/wled00/mqtt.cpp +++ b/wled00/mqtt.cpp @@ -91,11 +91,14 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties colorUpdated(CALL_MODE_DIRECT_CHANGE); } else if (strcmp_P(topic, PSTR("/api")) == 0) { if (payload[0] == '{') { //JSON API + #ifdef WLED_USE_DYNAMIC_JSON DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(15)) return; + #endif deserializeJson(doc, payloadStr); - fileDoc = &doc; deserializeState(doc.as()); - fileDoc = nullptr; + releaseJSONBufferLock(); } else { //HTTP API String apireq = "win&"; apireq += (char*)payloadStr; @@ -124,22 +127,22 @@ void publishMqtt() sprintf_P(s, PSTR("%u"), bri); strlcpy(subuf, mqttDeviceTopic, 33); strcat_P(subuf, PSTR("/g")); - mqtt->publish(subuf, 0, true, s); + mqtt->publish(subuf, 0, true, s); // retain message sprintf_P(s, PSTR("#%06X"), (col[3] << 24) | (col[0] << 16) | (col[1] << 8) | (col[2])); strlcpy(subuf, mqttDeviceTopic, 33); strcat_P(subuf, PSTR("/c")); - mqtt->publish(subuf, 0, true, s); + mqtt->publish(subuf, 0, true, s); // retain message strlcpy(subuf, mqttDeviceTopic, 33); strcat_P(subuf, PSTR("/status")); - mqtt->publish(subuf, 0, true, "online"); + mqtt->publish(subuf, 0, true, "online"); // retain message for a LWT - char apires[1024]; + char apires[1024]; // allocating 1024 bytes from stack can be risky XML_response(nullptr, apires); strlcpy(subuf, mqttDeviceTopic, 33); strcat_P(subuf, PSTR("/v")); - mqtt->publish(subuf, 0, false, apires); + mqtt->publish(subuf, 0, false, apires); // do not retain message } @@ -169,7 +172,7 @@ bool initMqtt() strlcpy(mqttStatusTopic, mqttDeviceTopic, 33); strcat_P(mqttStatusTopic, PSTR("/status")); - mqtt->setWill(mqttStatusTopic, 0, true, "offline"); + mqtt->setWill(mqttStatusTopic, 0, true, "offline"); // LWT message mqtt->setKeepAlive(MQTT_KEEP_ALIVE_TIME); mqtt->connect(); return true; diff --git a/wled00/presets.cpp b/wled00/presets.cpp index 8ffc96b1..2d783f1c 100644 --- a/wled00/presets.cpp +++ b/wled00/presets.cpp @@ -7,8 +7,11 @@ bool applyPreset(byte index, byte callMode) { if (index == 0) return false; + + const char *filename = index < 255 ? "/presets.json" : "/tmp.json"; + if (fileDoc) { - errorFlag = readObjectFromFileUsingId("/presets.json", index, fileDoc) ? ERR_NONE : ERR_FS_PLOAD; + errorFlag = readObjectFromFileUsingId(filename, index, fileDoc) ? ERR_NONE : ERR_FS_PLOAD; JsonObject fdo = fileDoc->as(); if (fdo["ps"] == index) fdo.remove("ps"); //remove load request for same presets to prevent recursive crash #ifdef WLED_DEBUG_FS @@ -17,41 +20,53 @@ bool applyPreset(byte index, byte callMode) deserializeState(fdo, callMode, index); } else { DEBUGFS_PRINTLN(F("Make read buf")); - DynamicJsonDocument fDoc(JSON_BUFFER_SIZE); - errorFlag = readObjectFromFileUsingId("/presets.json", index, &fDoc) ? ERR_NONE : ERR_FS_PLOAD; - JsonObject fdo = fDoc.as(); + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(9)) return false; + #endif + errorFlag = readObjectFromFileUsingId(filename, index, &doc) ? ERR_NONE : ERR_FS_PLOAD; + JsonObject fdo = doc.as(); if (fdo["ps"] == index) fdo.remove("ps"); #ifdef WLED_DEBUG_FS - serializeJson(fDoc, Serial); + serializeJson(doc, Serial); #endif deserializeState(fdo, callMode, index); + releaseJSONBufferLock(); } if (!errorFlag) { - currentPreset = index; + if (index < 255) currentPreset = index; return true; } return false; } -//persist=false is not currently honored void savePreset(byte index, bool persist, const char* pname, JsonObject saveobj) { - if (index == 0 || index > 250) return; - bool docAlloc = (fileDoc != nullptr); + if (index == 0 || (index > 250 && persist) || (index<255 && !persist)) return; JsonObject sObj = saveobj; - if (!docAlloc) { + const char *filename = persist ? "/presets.json" : "/tmp.json"; + + if (!fileDoc) { DEBUGFS_PRINTLN(F("Allocating saving buffer")); - DynamicJsonDocument lDoc(JSON_BUFFER_SIZE); - sObj = lDoc.to(); + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(10)) return; + #endif + sObj = doc.to(); if (pname) sObj["n"] = pname; + DEBUGFS_PRINTLN(F("Save current state")); serializeState(sObj, true); - currentPreset = index; + if (persist) currentPreset = index; - writeObjectToFileUsingId("/presets.json", index, &lDoc); - } else { //from JSON API + writeObjectToFileUsingId(filename, index, &doc); + + releaseJSONBufferLock(); + } else { //from JSON API (fileDoc != nullptr) DEBUGFS_PRINTLN(F("Reuse recv buffer")); sObj.remove(F("psave")); sObj.remove(F("v")); @@ -59,7 +74,7 @@ void savePreset(byte index, bool persist, const char* pname, JsonObject saveobj) if (!sObj["o"]) { DEBUGFS_PRINTLN(F("Save current state")); serializeState(sObj, true, sObj["ib"], sObj["sb"]); - currentPreset = index; + if (persist) currentPreset = index; } sObj.remove("o"); sObj.remove("ib"); @@ -67,9 +82,9 @@ void savePreset(byte index, bool persist, const char* pname, JsonObject saveobj) sObj.remove(F("error")); sObj.remove(F("time")); - writeObjectToFileUsingId("/presets.json", index, fileDoc); + writeObjectToFileUsingId(filename, index, fileDoc); } - presetsModifiedTime = toki.second(); //unix time + if (persist) presetsModifiedTime = toki.second(); //unix time updateFSInfo(); } diff --git a/wled00/set.cpp b/wled00/set.cpp index 21bf1356..58a47ea7 100644 --- a/wled00/set.cpp +++ b/wled00/set.cpp @@ -433,7 +433,12 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) //USERMODS if (subPage == 8) { + #ifdef WLED_USE_DYNAMIC_JSON DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(5)) return; + #endif + JsonObject um = doc.createNestedObject("um"); size_t args = request->args(); @@ -508,6 +513,8 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage) usermods.readFromConfig(um); // force change of usermod parameters } + releaseJSONBufferLock(); + if (subPage != 2 && (subPage != 6 || !doReboot)) serializeConfig(); //do not save if factory reset or LED settings (which are saved after LED re-init) if (subPage == 4) alexaInit(); } diff --git a/wled00/src/dependencies/json/AsyncJson-v6.h b/wled00/src/dependencies/json/AsyncJson-v6.h index c1288d91..32ac5460 100644 --- a/wled00/src/dependencies/json/AsyncJson-v6.h +++ b/wled00/src/dependencies/json/AsyncJson-v6.h @@ -64,6 +64,15 @@ class AsyncJsonResponse: public AsyncAbstractResponse { public: + AsyncJsonResponse(JsonDocument *ref, bool isArray=false) : _jsonBuffer(1), _isValid{false} { + _code = 200; + _contentType = JSON_MIMETYPE; + if(isArray) + _root = ref->to(); + else + _root = ref->to(); + } + AsyncJsonResponse(size_t maxJsonBufferSize = DYNAMIC_JSON_DOCUMENT_SIZE, bool isArray=false) : _jsonBuffer(maxJsonBufferSize), _isValid{false} { _code = 200; _contentType = JSON_MIMETYPE; @@ -84,7 +93,7 @@ class AsyncJsonResponse: public AsyncAbstractResponse { return _contentLength; } - size_t getSize() { return _jsonBuffer.size(); } + size_t getSize() { return _root.size(); } size_t _fillBuffer(uint8_t *data, size_t len){ ChunkPrint dest(data, _sentLength, len); diff --git a/wled00/util.cpp b/wled00/util.cpp new file mode 100644 index 00000000..5027e7ff --- /dev/null +++ b/wled00/util.cpp @@ -0,0 +1,33 @@ +#include "wled.h" +#include "fcn_declare.h" +#include "const.h" + +//threading/network callback details: https://github.com/Aircoookie/WLED/pull/2336#discussion_r762276994 +bool requestJSONBufferLock(uint8_t module) +{ + unsigned long now = millis(); + + while (jsonBufferLock && millis()-now < 1000) delay(1); // wait for a second for buffer lock + + if (millis()-now >= 1000) { + DEBUG_PRINT(F("ERROR: Locking JSON buffer failed! (")); + DEBUG_PRINT(jsonBufferLock); + DEBUG_PRINTLN(")"); + return false; // waiting time-outed + } + + jsonBufferLock = module ? module : 255; + fileDoc = &doc; // used for applying presets (presets.cpp) + doc.clear(); + return true; +} + + +void releaseJSONBufferLock() +{ + DEBUG_PRINT(F("JSON buffer released. (")); + DEBUG_PRINT(jsonBufferLock); + DEBUG_PRINTLN(")"); + fileDoc = nullptr; + jsonBufferLock = 0; +} diff --git a/wled00/wled.cpp b/wled00/wled.cpp index fe27166d..4afdf156 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -221,11 +221,16 @@ void WLED::loop() delete busConfigs[i]; busConfigs[i] = nullptr; } strip.finalizeInit(); + loadLedmap = 0; if (aligned) strip.makeAutoSegments(); else strip.fixInvalidSegments(); yield(); serializeConfig(); } + if (loadLedmap >= 0) { + strip.deserializeMap(loadLedmap); + loadLedmap = -1; + } yield(); handleWs(); @@ -351,7 +356,9 @@ void WLED::setup() #endif #ifdef WLED_ENABLE_ADALIGHT - if (!pinManager.isPinAllocated(3)) { + //Serial RX (Adalight, Improv, Serial JSON) only possible if GPIO3 unused + //Serial TX (Debug, Improv, Serial JSON) only possible if GPIO1 unused + if (!pinManager.isPinAllocated(3) && !pinManager.isPinAllocated(1)) { Serial.println(F("Ada")); } #endif @@ -407,6 +414,7 @@ void WLED::beginStrip() { // Initialize NeoPixel Strip and button strip.finalizeInit(); // busses created during deserializeConfig() + strip.deserializeMap(); strip.makeAutoSegments(); strip.setBrightness(0); strip.setShowCallback(handleOverlayDraw); diff --git a/wled00/wled.h b/wled00/wled.h index 6f4630a1..f31607bb 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -522,7 +522,7 @@ WLED_GLOBAL byte presetCycMax _INIT(5); // realtime WLED_GLOBAL byte realtimeMode _INIT(REALTIME_MODE_INACTIVE); WLED_GLOBAL byte realtimeOverride _INIT(REALTIME_OVERRIDE_NONE); -WLED_GLOBAL IPAddress realtimeIP _INIT_N(((0, 0, 0, 0)));; +WLED_GLOBAL IPAddress realtimeIP _INIT_N(((0, 0, 0, 0))); WLED_GLOBAL unsigned long realtimeTimeout _INIT(0); WLED_GLOBAL uint8_t tpmPacketCount _INIT(0); WLED_GLOBAL uint16_t tpmPayloadFrameSize _INIT(0); @@ -599,10 +599,17 @@ WLED_GLOBAL BusManager busses _INIT(BusManager()); WLED_GLOBAL WS2812FX strip _INIT(WS2812FX()); WLED_GLOBAL BusConfig* busConfigs[WLED_MAX_BUSSES] _INIT({nullptr}); //temporary, to remember values from network callback until after WLED_GLOBAL bool doInitBusses _INIT(false); +WLED_GLOBAL int8_t loadLedmap _INIT(-1); // Usermod manager WLED_GLOBAL UsermodManager usermods _INIT(UsermodManager()); +#ifndef WLED_USE_DYNAMIC_JSON +// global ArduinoJson buffer +WLED_GLOBAL StaticJsonDocument doc; +#endif +WLED_GLOBAL volatile uint8_t jsonBufferLock _INIT(0); + // enable additional debug output #ifdef WLED_DEBUG #ifndef ESP8266 diff --git a/wled00/wled_eeprom.cpp b/wled00/wled_eeprom.cpp index 55a79520..dd9a5c95 100644 --- a/wled00/wled_eeprom.cpp +++ b/wled00/wled_eeprom.cpp @@ -382,8 +382,13 @@ void deEEP() { DEBUG_PRINTLN(F("Preset file not found, attempting to load from EEPROM")); DEBUGFS_PRINTLN(F("Allocating saving buffer for dEEP")); - DynamicJsonDocument dDoc(JSON_BUFFER_SIZE *2); - JsonObject sObj = dDoc.to(); + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(8)) return; + #endif + + JsonObject sObj = doc.to(); sObj.createNestedObject("0"); EEPROM.begin(EEPSIZE); @@ -442,8 +447,6 @@ void deEEP() { } } - - for (uint16_t index = 1; index <= 16; index++) { //copy macros to presets.json char m[65]; readStringFromEEPROM(1024+64*(index-1), m, 64); @@ -463,10 +466,14 @@ void deEEP() { File f = WLED_FS.open("/presets.json", "w"); if (!f) { errorFlag = ERR_FS_GENERAL; + releaseJSONBufferLock(); return; } - serializeJson(dDoc, f); + serializeJson(doc, f); f.close(); + + releaseJSONBufferLock(); + DEBUG_PRINTLN(F("deEEP complete!")); } diff --git a/wled00/wled_serial.cpp b/wled00/wled_serial.cpp index 3d23d928..0e531dbd 100644 --- a/wled00/wled_serial.cpp +++ b/wled00/wled_serial.cpp @@ -48,18 +48,21 @@ void handleSerial() Serial.print("WLED"); Serial.write(' '); Serial.println(VERSION); } else if (next == '{') { //JSON API bool verboseResponse = false; - { - DynamicJsonDocument doc(JSON_BUFFER_SIZE); - Serial.setTimeout(100); - DeserializationError error = deserializeJson(doc, Serial); - if (error) return; - fileDoc = &doc; - verboseResponse = deserializeState(doc.as()); - fileDoc = nullptr; + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(16)) return; + #endif + Serial.setTimeout(100); + DeserializationError error = deserializeJson(doc, Serial); + if (error) { + releaseJSONBufferLock(); + return; } + verboseResponse = deserializeState(doc.as()); //only send response if TX pin is unused for other purposes if (verboseResponse && !pinManager.isPinAllocated(1)) { - DynamicJsonDocument doc(JSON_BUFFER_SIZE); + doc.clear(); JsonObject state = doc.createNestedObject("state"); serializeState(state); JsonObject info = doc.createNestedObject("info"); @@ -68,6 +71,7 @@ void handleSerial() serializeJson(doc, Serial); Serial.println(); } + releaseJSONBufferLock(); } break; case AdaState::Header_d: diff --git a/wled00/wled_server.cpp b/wled00/wled_server.cpp index 04147827..adee38a9 100644 --- a/wled00/wled_server.cpp +++ b/wled00/wled_server.cpp @@ -106,11 +106,18 @@ void initServer() bool verboseResponse = false; bool isConfig = false; { //scope JsonDocument so it releases its buffer - DynamicJsonDocument jsonBuffer(JSON_BUFFER_SIZE); - DeserializationError error = deserializeJson(jsonBuffer, (uint8_t*)(request->_tempObject)); - JsonObject root = jsonBuffer.as(); + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(14)) return; + #endif + + DeserializationError error = deserializeJson(doc, (uint8_t*)(request->_tempObject)); + JsonObject root = doc.as(); if (error || root.isNull()) { - request->send(400, "application/json", F("{\"error\":9}")); return; + releaseJSONBufferLock(); + request->send(400, "application/json", F("{\"error\":9}")); + return; } const String& url = request->url(); isConfig = url.indexOf("cfg") > -1; @@ -120,12 +127,11 @@ void initServer() serializeJson(root,Serial); DEBUG_PRINTLN(); #endif - fileDoc = &jsonBuffer; // used for applying presets (presets.cpp) verboseResponse = deserializeState(root); - fileDoc = nullptr; } else { verboseResponse = deserializeConfig(root); //use verboseResponse to determine whether cfg change should be saved immediately } + releaseJSONBufferLock(); } if (verboseResponse) { if (!isConfig) { diff --git a/wled00/ws.cpp b/wled00/ws.cpp index 8dc93ad9..f48c62c2 100644 --- a/wled00/ws.cpp +++ b/wled00/ws.cpp @@ -34,11 +34,18 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp } bool verboseResponse = false; { //scope JsonDocument so it releases its buffer - DynamicJsonDocument jsonBuffer(JSON_BUFFER_SIZE); - DeserializationError error = deserializeJson(jsonBuffer, data, len); - JsonObject root = jsonBuffer.as(); - if (error || root.isNull()) return; + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(11)) return; + #endif + DeserializationError error = deserializeJson(doc, data, len); + JsonObject root = doc.as(); + if (error || root.isNull()) { + releaseJSONBufferLock(); + return; + } if (root["v"] && root.size() == 1) { //if the received value is just "{"v":true}", send only to this client verboseResponse = true; @@ -46,14 +53,13 @@ void wsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventTyp { wsLiveClientId = root["lv"] ? client->id() : 0; } else { - fileDoc = &jsonBuffer; verboseResponse = deserializeState(root); - fileDoc = nullptr; if (!interfaceUpdateCallMode) { //special case, only on playlist load, avoid sending twice in rapid succession if (millis() - lastInterfaceUpdate > 1700) verboseResponse = false; } } + releaseJSONBufferLock(); // will clean fileDoc } //update if it takes longer than 300ms until next "broadcast" if (verboseResponse && (millis() - lastInterfaceUpdate < 1700 || !interfaceUpdateCallMode)) sendDataWs(client); @@ -92,16 +98,23 @@ void sendDataWs(AsyncWebSocketClient * client) AsyncWebSocketMessageBuffer * buffer; { //scope JsonDocument so it releases its buffer + #ifdef WLED_USE_DYNAMIC_JSON DynamicJsonDocument doc(JSON_BUFFER_SIZE); + #else + if (!requestJSONBufferLock(12)) return; + #endif JsonObject state = doc.createNestedObject("state"); serializeState(state); JsonObject info = doc.createNestedObject("info"); serializeInfo(info); size_t len = measureJson(doc); buffer = ws.makeBuffer(len); - if (!buffer) return; //out of memory - + if (!buffer) { + releaseJSONBufferLock(); + return; //out of memory + } serializeJson(doc, (char *)buffer->get(), len +1); + releaseJSONBufferLock(); } if (client) { client->text(buffer); diff --git a/wled00/xml.cpp b/wled00/xml.cpp index 1a420a9d..6e5295b3 100644 --- a/wled00/xml.cpp +++ b/wled00/xml.cpp @@ -316,13 +316,22 @@ void getSettingsJS(byte subPage, char* dest) { char nS[8]; + // Pin reservations will become unnecessary when settings pages will read cfg.json directly // add reserved and usermod pins as d.um_p array oappend(SET_F("d.um_p=[6,7,8,9,10,11")); - DynamicJsonDocument doc(JSON_BUFFER_SIZE/2); + { // scope so buffer can be released earlier + #ifdef WLED_USE_DYNAMIC_JSON + DynamicJsonDocument doc(3072); + #else + if (!requestJSONBufferLock(6)) return; + #endif + JsonObject mods = doc.createNestedObject(F("um")); usermods.addToConfig(mods); if (!mods.isNull()) fillUMPins(mods); + releaseJSONBufferLock(); + } #ifdef WLED_ENABLE_DMX oappend(SET_F(",2")); // DMX hardcoded pin From 8643263227cacfe3bc313c8c3497744adbe99906 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 7 Dec 2021 11:03:41 +0100 Subject: [PATCH 5/6] Add two new Fairy FX modes --- CHANGELOG.md | 6 ++ wled00/FX.cpp | 157 ++++++++++++++++++++++++++++++++++++++----- wled00/FX.h | 20 +++--- wled00/bus_manager.h | 7 +- wled00/wled.h | 2 +- 5 files changed, 162 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce29f0ac..6751de2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ### Builds after release 0.12.0 +#### Build 2112070 + +- Added new effect "Fairy", replacing "Police All" +- Added new effect "Fairytwinkle", replacing "Two Areas" +- Static single JSON buffer (performance and stability improvement) (PR #2336) + #### Build 2112030 - Fixed ESP32 crash on Colortwinkles brightness change diff --git a/wled00/FX.cpp b/wled00/FX.cpp index d0767713..ba30dfc0 100644 --- a/wled00/FX.cpp +++ b/wled00/FX.cpp @@ -1216,12 +1216,13 @@ uint16_t WS2812FX::mode_loading(void) { //American Police Light with all LEDs Red and Blue -uint16_t WS2812FX::police_base(uint32_t color1, uint32_t color2, uint16_t width) +uint16_t WS2812FX::police_base(uint32_t color1, uint32_t color2) { uint16_t delay = 1 + (FRAMETIME<<3) / SEGLEN; // longer segments should change faster uint32_t it = now / map(SEGMENT.speed, 0, 255, delay<<4, delay); uint16_t offset = it % SEGLEN; + uint16_t width = ((SEGLEN*(SEGMENT.intensity+1))>>9); //max width is half the strip if (!width) width = 1; for (uint16_t i = 0; i < width; i++) { uint16_t indexR = (offset + i) % SEGLEN; @@ -1233,26 +1234,11 @@ uint16_t WS2812FX::police_base(uint32_t color1, uint32_t color2, uint16_t width) } -//American Police Light with all LEDs Red and Blue -uint16_t WS2812FX::mode_police_all() -{ - return police_base(RED, BLUE, (SEGLEN>>1)); -} - - //Police Lights Red and Blue uint16_t WS2812FX::mode_police() { fill(SEGCOLOR(1)); - return police_base(RED, BLUE, ((SEGLEN*(SEGMENT.intensity+1))>>9)); // max width is half the strip -} - - -//Police All with custom colors -uint16_t WS2812FX::mode_two_areas() -{ - fill(SEGCOLOR(2)); - return police_base(SEGCOLOR(0), SEGCOLOR(1), ((SEGLEN*(SEGMENT.intensity+1))>>9)); // max width is half the strip + return police_base(RED, BLUE); } @@ -1262,7 +1248,142 @@ uint16_t WS2812FX::mode_two_dots() fill(SEGCOLOR(2)); uint32_t color2 = (SEGCOLOR(1) == SEGCOLOR(2)) ? SEGCOLOR(0) : SEGCOLOR(1); - return police_base(SEGCOLOR(0), color2, ((SEGLEN*(SEGMENT.intensity+1))>>9)); // max width is half the strip + return police_base(SEGCOLOR(0), color2); +} + + +/* + * Fairy, inspired by https://www.youtube.com/watch?v=zeOw5MZWq24 + */ +//4 bytes +typedef struct Flasher { + uint16_t stateStart; + uint8_t stateDur; + bool stateOn; +} flasher; + +#define FLASHERS_PER_ZONE 6 +#define MAX_SHIMMER 92 + +uint16_t WS2812FX::mode_fairy() { + //set every pixel to a 'random' color from palette (using seed so it doesn't change between frames) + uint16_t PRNG16 = 5100 + _segment_index; + for (uint16_t i = 0; i < SEGLEN; i++) { + PRNG16 = (uint16_t)(PRNG16 * 2053) + 1384; //next 'random' number + setPixelColor(i, color_from_palette(PRNG16 >> 8, false, false, 0)); + } + + //amount of flasher pixels depending on intensity (0: none, 255: every LED) + if (SEGMENT.intensity == 0) return FRAMETIME; + uint8_t flasherDistance = ((255 - SEGMENT.intensity) / 28) +1; //1-10 + uint16_t numFlashers = (SEGLEN / flasherDistance) +1; + + uint16_t dataSize = sizeof(flasher) * numFlashers; + if (!SEGENV.allocateData(dataSize)) return FRAMETIME; //allocation failed + Flasher* flashers = reinterpret_cast(SEGENV.data); + uint16_t now16 = now & 0xFFFF; + + //Up to 11 flashers in one brightness zone, afterwards a new zone for every 6 flashers + uint16_t zones = numFlashers/FLASHERS_PER_ZONE; + if (!zones) zones = 1; + uint8_t flashersInZone = numFlashers/zones; + uint8_t flasherBri[FLASHERS_PER_ZONE*2 -1]; + + for (uint16_t z = 0; z < zones; z++) { + uint16_t flasherBriSum = 0; + uint16_t firstFlasher = z*flashersInZone; + if (z == zones-1) flashersInZone = numFlashers-(flashersInZone*(zones-1)); + + for (uint16_t f = firstFlasher; f < firstFlasher + flashersInZone; f++) { + uint16_t stateTime = now16 - flashers[f].stateStart; + //random on/off time reached, switch state + if (stateTime > flashers[f].stateDur * 10) { + flashers[f].stateOn = !flashers[f].stateOn; + if (flashers[f].stateOn) { + flashers[f].stateDur = 12 + random8(12 + ((255 - SEGMENT.speed) >> 2)); //*10, 250ms to 1250ms + } else { + flashers[f].stateDur = 20 + random8(6 + ((255 - SEGMENT.speed) >> 2)); //*10, 250ms to 1250ms + } + //flashers[f].stateDur = 51 + random8(2 + ((255 - SEGMENT.speed) >> 1)); + flashers[f].stateStart = now16; + if (stateTime < 255) { + flashers[f].stateStart -= 255 -stateTime; //start early to get correct bri + flashers[f].stateDur += 26 - stateTime/10; + stateTime = 255 - stateTime; + } else { + stateTime = 0; + } + } + if (stateTime > 255) stateTime = 255; //for flasher brightness calculation, fades in first 255 ms of state + //flasherBri[f - firstFlasher] = (flashers[f].stateOn) ? 255-gamma8((510 - stateTime) >> 1) : gamma8((510 - stateTime) >> 1); + flasherBri[f - firstFlasher] = (flashers[f].stateOn) ? stateTime : 255 - (stateTime >> 0); + flasherBriSum += flasherBri[f - firstFlasher]; + } + //dim factor, to create "shimmer" as other pixels get less voltage if a lot of flashers are on + uint8_t avgFlasherBri = flasherBriSum / flashersInZone; + uint8_t globalPeakBri = 255 - ((avgFlasherBri * MAX_SHIMMER) >> 8); //183-255, suitable for 1/5th of LEDs flashers + + for (uint16_t f = firstFlasher; f < firstFlasher + flashersInZone; f++) { + uint8_t bri = (flasherBri[f - firstFlasher] * globalPeakBri) / 255; + PRNG16 = (uint16_t)(PRNG16 * 2053) + 1384; //next 'random' number + uint16_t flasherPos = f*flasherDistance; + setPixelColor(flasherPos, color_blend(SEGCOLOR(1), color_from_palette(PRNG16 >> 8, false, false, 0), bri)); + for (uint16_t i = flasherPos+1; i < flasherPos+flasherDistance && i < SEGLEN; i++) { + PRNG16 = (uint16_t)(PRNG16 * 2053) + 1384; //next 'random' number + setPixelColor(i, color_from_palette(PRNG16 >> 8, false, false, 0, globalPeakBri)); + } + } + } + return FRAMETIME; +} + + +/* + * Fairytwinkle. Like Colortwinkle, but starting from all lit and not relying on getPixelColor + * Warning: Uses 4 bytes of segment data per pixel + */ +uint16_t WS2812FX::mode_fairytwinkle() { + uint16_t dataSize = sizeof(flasher) * SEGLEN; + if (!SEGENV.allocateData(dataSize)) return mode_static(); //allocation failed + Flasher* flashers = reinterpret_cast(SEGENV.data); + uint16_t now16 = now & 0xFFFF; + uint16_t PRNG16 = 5100 + _segment_index; + + uint16_t riseFallTime = 400 + (255-SEGMENT.speed)*3; + uint16_t maxDur = riseFallTime/100 + ((255 - SEGMENT.intensity) >> 2) + 13 + ((255 - SEGMENT.intensity) >> 1); + + for (uint16_t f = 0; f < SEGLEN; f++) { + uint16_t stateTime = now16 - flashers[f].stateStart; + //random on/off time reached, switch state + if (stateTime > flashers[f].stateDur * 100) { + flashers[f].stateOn = !flashers[f].stateOn; + bool init = !flashers[f].stateDur; + if (flashers[f].stateOn) { + flashers[f].stateDur = riseFallTime/100 + ((255 - SEGMENT.intensity) >> 2) + random8(12 + ((255 - SEGMENT.intensity) >> 1)) +1; + } else { + flashers[f].stateDur = riseFallTime/100 + random8(3 + ((255 - SEGMENT.speed) >> 6)) +1; + } + flashers[f].stateStart = now16; + stateTime = 0; + if (init) { + flashers[f].stateStart -= riseFallTime; //start lit + flashers[f].stateDur = riseFallTime/100 + random8(12 + ((255 - SEGMENT.intensity) >> 1)) +5; //fire up a little quicker + stateTime = riseFallTime; + } + } + if (flashers[f].stateOn && flashers[f].stateDur > maxDur) flashers[f].stateDur = maxDur; //react more quickly on intensity change + if (stateTime > riseFallTime) stateTime = riseFallTime; //for flasher brightness calculation, fades in first 255 ms of state + uint8_t fadeprog = 255 - ((stateTime * 255) / riseFallTime); + uint8_t flasherBri = (flashers[f].stateOn) ? 255-gamma8(fadeprog) : gamma8(fadeprog); + uint16_t lastR = PRNG16; + uint16_t diff = 0; + while (diff < 0x4000) { //make sure colors of two adjacent LEDs differ enough + PRNG16 = (uint16_t)(PRNG16 * 2053) + 1384; //next 'random' number + diff = (PRNG16 > lastR) ? PRNG16 - lastR : lastR - PRNG16; + } + setPixelColor(f, color_blend(SEGCOLOR(1), color_from_palette(PRNG16 >> 8, false, false, 0), flasherBri)); + } + return FRAMETIME; } diff --git a/wled00/FX.h b/wled00/FX.h index 8603328a..7215e347 100644 --- a/wled00/FX.h +++ b/wled00/FX.h @@ -161,14 +161,14 @@ #define FX_MODE_COMET 41 #define FX_MODE_FIREWORKS 42 #define FX_MODE_RAIN 43 -#define FX_MODE_TETRIX 44 +#define FX_MODE_TETRIX 44 //was Merry Christmas prior to 0.12.0 (use "Chase 2" with Red/Green) #define FX_MODE_FIRE_FLICKER 45 #define FX_MODE_GRADIENT 46 #define FX_MODE_LOADING 47 #define FX_MODE_POLICE 48 // candidate for removal (after below three) -#define FX_MODE_POLICE_ALL 49 // candidate for removal +#define FX_MODE_FAIRY 49 //was Police All prior to 0.13.0-b6 (use "Two Dots" with Red/Blue and full intensity) #define FX_MODE_TWO_DOTS 50 -#define FX_MODE_TWO_AREAS 51 // candidate for removal +#define FX_MODE_FAIRYTWINKLE 51 //was Two Areas prior to 0.13.0-b6 (use "Two Dots" with full intensity) #define FX_MODE_RUNNING_DUAL 52 #define FX_MODE_HALLOWEEN 53 // candidate for removal #define FX_MODE_TRICOLOR_CHASE 54 @@ -550,9 +550,9 @@ class WS2812FX { _mode[FX_MODE_GRADIENT] = &WS2812FX::mode_gradient; _mode[FX_MODE_LOADING] = &WS2812FX::mode_loading; _mode[FX_MODE_POLICE] = &WS2812FX::mode_police; - _mode[FX_MODE_POLICE_ALL] = &WS2812FX::mode_police_all; + _mode[FX_MODE_FAIRY] = &WS2812FX::mode_fairy; _mode[FX_MODE_TWO_DOTS] = &WS2812FX::mode_two_dots; - _mode[FX_MODE_TWO_AREAS] = &WS2812FX::mode_two_areas; + _mode[FX_MODE_FAIRYTWINKLE] = &WS2812FX::mode_fairytwinkle; _mode[FX_MODE_RUNNING_DUAL] = &WS2812FX::mode_running_dual; _mode[FX_MODE_HALLOWEEN] = &WS2812FX::mode_halloween; _mode[FX_MODE_TRICOLOR_CHASE] = &WS2812FX::mode_tricolor_chase; @@ -773,9 +773,9 @@ class WS2812FX { mode_gradient(void), mode_loading(void), mode_police(void), - mode_police_all(void), + mode_fairy(void), mode_two_dots(void), - mode_two_areas(void), + mode_fairytwinkle(void), mode_running_dual(void), mode_bicolor_chase(void), mode_tricolor_chase(void), @@ -878,7 +878,7 @@ class WS2812FX { chase(uint32_t, uint32_t, uint32_t, bool), gradient_base(bool), ripple_base(bool), - police_base(uint32_t, uint32_t, uint16_t), + police_base(uint32_t, uint32_t), running(uint32_t, uint32_t, bool theatre=false), tricolor_chase(uint32_t, uint32_t), twinklefox_base(bool), @@ -927,8 +927,8 @@ const char JSON_mode_names[] PROGMEM = R"=====([ "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","Chase 2","Aurora","Stream", -"Scanner","Lighthouse","Fireworks","Rain","Tetrix","Fire Flicker","Gradient","Loading","Police","Police All", -"Two Dots","Two Areas","Running Dual","Halloween","Chase 3","Tri Wipe","Tri Fade","Lightning","ICU","Multi Comet", +"Scanner","Lighthouse","Fireworks","Rain","Tetrix","Fire Flicker","Gradient","Loading","Police","Fairy", +"Two Dots","Fairytwinkle","Running Dual","Halloween","Chase 3","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","Fireworks Starburst", diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index c3d91327..7366bcc3 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -318,8 +318,12 @@ class BusPwm : public Bus { cct = (approximateKelvinFromRGB(c) - 1900) >> 5; } - //0 - linear (CCT 127 = 50% warm, 50% cold), 127 - additive CCT blending (CCT 127 = 100% warm, 100% cold) uint8_t ww, cw; + #ifdef WLED_USE_IC_CCT + ww = w; + cw = cct; + #else + //0 - linear (CCT 127 = 50% warm, 50% cold), 127 - additive CCT blending (CCT 127 = 100% warm, 100% cold) if (cct < _cctBlend) ww = 255; else ww = ((255-cct) * 255) / (255 - _cctBlend); @@ -328,6 +332,7 @@ class BusPwm : public Bus { ww = (w * ww) / 255; //brightness scaling cw = (w * cw) / 255; + #endif switch (_type) { case TYPE_ANALOG_1CH: //one channel (white), relies on auto white calculation diff --git a/wled00/wled.h b/wled00/wled.h index f31607bb..6dea609d 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2112030 +#define VERSION 2112070 //uncomment this if you have a "my_config.h" file you'd like to use //#define WLED_USE_MY_CONFIG From 7101ad81c44433fb4ae06e116d8330369e0e3d0f Mon Sep 17 00:00:00 2001 From: cschwinne Date: Tue, 7 Dec 2021 13:37:28 +0100 Subject: [PATCH 6/6] No auto white for RGB DDP bus --- wled00/bus_manager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wled00/bus_manager.h b/wled00/bus_manager.h index 7366bcc3..b0838ae7 100644 --- a/wled00/bus_manager.h +++ b/wled00/bus_manager.h @@ -454,8 +454,8 @@ class BusNetwork : public Bus { void setPixelColor(uint16_t pix, uint32_t c) { if (!_valid || pix >= _len) return; + if (isRgbw()) c = autoWhiteCalc(c); if (_cct >= 1900) c = colorBalanceFromKelvin(_cct, c); //color correction from CCT - c = autoWhiteCalc(c); uint16_t offset = pix * _UDPchannels; _data[offset] = R(c); _data[offset+1] = G(c);