From 738905438bffee933e5ca5bdc8fcfa613cb8c464 Mon Sep 17 00:00:00 2001 From: Ewoud Date: Mon, 14 Aug 2023 21:20:53 +0200 Subject: [PATCH] Refactor LedFixGen, add Wall2D, str sizeof()-1 General - chars 2, 4, 8, 16, 32, ... bytes - strncpy etc with sizeof()-1 App.js: factor is fixed 10 (from mm to cm) AppLedsV: - remove factor - factor fixed 10 - if multiple leds to same pin, extend detail of pin AppModLedFixGen - remove factor -> fixed 10 - move stuff to GenFix class - remove assign - add open / close functions for header and pin - add write2D/3D - add 2DWall - calculate whd and nrofleds and write to begin of file (using temp.json, better solution welcome) AppModLeds: fps default to 120 --- data/app.js | 6 +- src/App/AppLedsV.cpp | 60 +++- src/App/AppLedsV.h | 1 - src/App/AppModLedFixGen.h | 640 ++++++++++++++++++--------------- src/App/AppModLeds.h | 12 +- src/Sys/SysJsonRDWS.h | 28 +- src/Sys/SysModFiles.cpp | 10 +- src/Sys/SysModModel.cpp | 8 +- src/Sys/SysModNetwork.cpp | 4 +- src/Sys/SysModPins.cpp | 4 +- src/Sys/SysModWeb.cpp | 8 +- src/User/UserModArtNet.h | 6 +- src/User/UserModDDP.h | 6 +- src/User/UserModInstances.h | 6 +- src/html_ui.h | 691 ++++++++++++++++++------------------ 15 files changed, 799 insertions(+), 691 deletions(-) diff --git a/data/app.js b/data/app.js index 4977cf75..e6b05d05 100644 --- a/data/app.js +++ b/data/app.js @@ -19,7 +19,7 @@ function userFun(userFunId, data) { //replace the canvas: in case we switch from 2D to 3D as they cannot be reused between them if (jsonValues.pview.new) { - console.log("replace the canvas!") + console.log("replace the canvas!", jsonValues.pview); let canvasNode = cE("canvas"); canvasNode.width = pviewNode.width; canvasNode.height = pviewNode.height; @@ -51,7 +51,7 @@ function userFun(userFunId, data) { function preview2D(node, leds) { let ctx = node.getContext('2d'); let i = 4; - let factor = jsonValues.pview.factor; + let factor = 10;//fixed value: from mm to cm ctx.clearRect(0, 0, node.width, node.height); if (jsonValues.pview) { let pPL = Math.min(node.width / jsonValues.pview.width, node.height / jsonValues.pview.height); // pixels per LED (width of circle) @@ -90,7 +90,7 @@ function preview3D(node, leds) { // let mH = leds[1]; // let mD = leds[2]; - let factor = jsonValues.pview.factor; + let factor = 10;//fixed value: from mm to cm let d = 5 / factor; //distanceLED; if (!renderer || (jsonValues.pview && jsonValues.pview.new)) { //init 3D diff --git a/src/App/AppLedsV.cpp b/src/App/AppLedsV.cpp index e17b20af..5406a4e4 100644 --- a/src/App/AppLedsV.cpp +++ b/src/App/AppLedsV.cpp @@ -24,7 +24,6 @@ uint16_t LedsV::nrOfLedsV = 64; //amount of virtual leds (calculated by project uint16_t LedsV::widthP = 8; uint16_t LedsV::heightP = 8; uint16_t LedsV::depthP = 1; -uint16_t LedsV::factorP = 8; uint16_t LedsV::widthV = 8; uint16_t LedsV::heightV = 8; uint16_t LedsV::depthV = 1; @@ -35,12 +34,16 @@ uint8_t LedsV::fxDimension = -1; //load ledfix json file, parse it and depending on the projection, create a mapping for it void LedsV::ledFixProjectAndMap() { - char fileName[30] = ""; + char fileName[32] = ""; if (files->seqNrToName(fileName, ledFixNr)) { JsonRDWS jrdws(fileName); //open fileName for deserialize mappingTableLedCounter = 0; + + //vectors really gone now? + for (std::vector physMap: mappingTable) + physMap.clear(); mappingTable.clear(); //deallocate all led pins @@ -60,7 +63,6 @@ void LedsV::ledFixProjectAndMap() { jrdws.lookFor("width", &widthP); jrdws.lookFor("height", &heightP); jrdws.lookFor("depth", &depthP); - jrdws.lookFor("factor", &factorP); jrdws.lookFor("nrOfLeds", &nrOfLedsP); jrdws.lookFor("pin", &currPin); @@ -75,11 +77,11 @@ void LedsV::ledFixProjectAndMap() { if (ledFixDimension>=1 && ledFixDimension<=3) { //we only comprehend 1D, 2D, 3D - uint16_t x = uint16CollectList[0] / LedsV::factorP; - uint16_t y = (ledFixDimension>=2)?(uint16CollectList[1] / LedsV::factorP) : 1; - uint16_t z = (ledFixDimension>=3)?(uint16CollectList[2] / LedsV::factorP): 1; + uint16_t x = uint16CollectList[0] / 10; + uint16_t y = (ledFixDimension>=2)?uint16CollectList[1] / 10 : 1; + uint16_t z = (ledFixDimension>=3)?uint16CollectList[2] / 10 : 1; - // print->print("projectionNr p:%d f:%d s:%d\n", LedsV::projectionNr, LedsV::fxDimension, ledFixDimension); + // print->print("projectionNr p:%d f:%d s:%d, %d-%d-%d %d-%d-%d\n", LedsV::projectionNr, LedsV::fxDimension, ledFixDimension, x, y, z, uint16CollectList[0], uint16CollectList[1], uint16CollectList[2]); if (LedsV::projectionNr == p_DistanceFromPoint || LedsV::projectionNr == p_DistanceFromCentre) { uint16_t bucket;// = -1; if (LedsV::fxDimension == 1) { //if effect is 1D @@ -90,17 +92,19 @@ void LedsV::ledFixProjectAndMap() { pointY = 0; pointZ = 0; } else { - pointX = LedsV::factorP * LedsV::widthP / 2; - pointY = LedsV::factorP * LedsV::heightP / 2; - pointZ = LedsV::factorP * LedsV::depthP / 2; + pointX = LedsV::widthP / 2; + pointY = LedsV::heightP / 2; + pointZ = LedsV::depthP / 2; } if (ledFixDimension == 1) //ledfix is 1D bucket = x; - else if (ledFixDimension == 2) //ledfix is 2D - bucket = distance(x,y,0,pointX,pointY,0) / LedsV::factorP; + else if (ledFixDimension == 2) {//ledfix is 2D + bucket = distance(x,y,0,pointX,pointY,0); + // print->print("bucket %d-%d %d-%d %d\n", x,y, pointX, pointY, bucket); + } else if (ledFixDimension == 3) //ledfix is 3D - bucket = distance(x,y,z,pointX, pointY, pointZ) / LedsV::factorP; + bucket = distance(x,y,z,pointX, pointY, pointZ); } else if (LedsV::fxDimension == 2) { //effect is 2D @@ -142,11 +146,33 @@ void LedsV::ledFixProjectAndMap() { // delay(1); //feed the watchdog mappingTableLedCounter++; } //if 1D-3D - else { + else { // end of leds array + + //check if pin already allocated, if so, extend range in details + PinObject pinObject = SysModPins::pinObjects[currPin]; char details[32] = ""; - print->fFormat(details, sizeof(details), "%d-%d", prevLeds, mappingTableLedCounter - 1); //careful: AppModLeds:loop uses this to assign to FastLed - print->print("pins %d: %s (%d)\n", currPin, details); - pins->allocatePin(currPin, "Leds", details); + if (strcmp(pinObject.owner, "Leds") == 0) { //if owner + + char * after = strtok((char *)pinObject.details, "-"); + if (after != NULL ) { + char * before; + before = after; + after = strtok(NULL, " "); + uint16_t startLed = atoi(before); + uint16_t nrOfLeds = atoi(after) - atoi(before) + 1; + print->fFormat(details, sizeof(details)-1, "%d-%d", min(prevLeds, startLed), max((uint16_t)(mappingTableLedCounter - 1), nrOfLeds)); //careful: AppModLeds:loop uses this to assign to FastLed + print->print("pins extend leds %d: %s (%d)\n", currPin, details); + //tbd: more check + + strncpy(SysModPins::pinObjects[currPin].details, details, sizeof(PinObject::details)-1); + } + } + else {//allocate new pin + //tbd: check if free + print->fFormat(details, sizeof(details)-1, "%d-%d", prevLeds, mappingTableLedCounter - 1); //careful: AppModLeds:loop uses this to assign to FastLed + print->print("pins %d: %s (%d)\n", currPin, details); + pins->allocatePin(currPin, "Leds", details); + } prevLeds = mappingTableLedCounter; } diff --git a/src/App/AppLedsV.h b/src/App/AppLedsV.h index 926f1e53..6f3b4010 100644 --- a/src/App/AppLedsV.h +++ b/src/App/AppLedsV.h @@ -48,7 +48,6 @@ class LedsV { static uint16_t widthP; static uint16_t heightP; static uint16_t depthP; - static uint16_t factorP; static uint16_t widthV; static uint16_t heightV; static uint16_t depthV; diff --git a/src/App/AppModLedFixGen.h b/src/App/AppModLedFixGen.h index 9cbd30cf..61b9114f 100644 --- a/src/App/AppModLedFixGen.h +++ b/src/App/AppModLedFixGen.h @@ -15,64 +15,123 @@ class GenFix { public: char name[32] = ""; - float width = 8; //float to deal with rings, globes (sin, cos stuff) - float height = 8; - float depth = 1; - uint16_t nrOfLeds = 64; //default - uint16_t factor = 1; uint16_t distance = 1; //cm, not used yet (to display multiple fixture, also from other devices) + uint8_t pinNr = 0; + uint8_t pinList[9] = {255,255,255,255,255,255,255,255,255}; + uint8_t sizeOfPins = 0; + + char pinSep[2]=""; + char pixelSep[2]=""; + + uint16_t width=0, height=0, depth=0, nrOfLeds=0; + File f; GenFix() { print->print("GenFix construct\n"); + if (!mdl->getValue("pinList").isNull()) { + print->print( "pinlist %s\n",mdl->getValue("pinList").as()); + char str[32]; + strncpy(str, mdl->getValue("pinList").as(), sizeof(str)-1); + const char s[2] = ","; //delimiter + char *token; + /* get the first token */ + token = strtok(str, s); + /* walk through other tokens */ + while( token != NULL ) + { + print->print( " %s(%d) %d\n", token, atoi(token), sizeOfPins ); + pinList[sizeOfPins++] = atoi(token); + token = strtok(NULL, s); + } + } } ~GenFix() { print->print("GenFix destruct\n"); - f.print("}"); - f.close(); - } - - void assign(float width, float height, float depth, uint16_t nrOfLeds, uint16_t factor) { - this->width = width; - this->height = height; - this->depth = depth; - this->nrOfLeds = nrOfLeds; - this->factor = factor; } - void writeName(const char * format, ...) { + void openHeader(const char * format, ...) { va_list args; va_start(args, format); // size_t len = vprintf(format, args); - vsnprintf(name, sizeof(name), format, args); + vsnprintf(name, sizeof(name)-1, format, args); va_end(args); - char fileName[32] = "/"; - strcat(fileName, name); - strcat(fileName, ".json"); - - f = files->open(fileName, "w"); + f = files->open("/temp.json", "w"); if (!f) - print->print("GenFix could not open file %s for writing\n", fileName); - else - print->print("GenFix writeName %s\n", fileName); + print->print("GenFix could not open temp file for writing\n"); + + f.print(",\"outputs\":["); + strcpy(pinSep, ""); } - void writeHeader() { - f.print("{"); + void closeHeader() { + f.print("]"); //outputs + + print->print("closeHeader %d-%d-%d %d\n", width, height, depth, nrOfLeds); + f.close(); + f = files->open("/temp.json", "r"); + + File g; + + char fileName[32] = "/"; + strncat(fileName, name, sizeof(fileName)-1); + strncat(fileName, ".json", sizeof(fileName)-1); + + + //create g by merging in f (better solution?) + g = files->open(fileName, "w"); - f.printf("\"name\":\"%s\"", name); - f.printf(",\"nrOfLeds\":%d", nrOfLeds); - // f.printf(",\"distance\":\"%d\"", distance); - f.printf(",\"factor\":%d", factor); + g.print("{"); + g.printf("\"name\":\"%s\"", name); + g.printf(",\"nrOfLeds\":%d", nrOfLeds); + g.printf(",\"width\":%d", width/10+1); //effects run on 1 led is 1 cm mode. + g.printf(",\"height\":%d", height/10+1); + g.printf(",\"depth\":%d", depth/10+1); + + byte character; + f.read(&character, sizeof(byte)); + while (f.available()) { + g.write(character); + f.read(&character, sizeof(byte)); + } + g.write(character); + + g.print("}"); + g.close(); + f.close(); + + files->remove("/temp.json"); + + } + + void openPin() { + f.printf("%s{\"pin\":%d,\"leds\":[", pinSep, pinList[(pinNr++)%sizeOfPins]); + strcpy(pinSep, ","); + strcpy(pixelSep, ""); + } + void closePin() { + f.printf("]}"); + } - f.printf(",\"width\":%.0f", width); - f.printf(",\"height\":%.0f", height); - f.printf(",\"depth\":%.0f", depth); + void write2D(uint16_t x, uint16_t y) { + f.printf("%s[%d,%d]", pixelSep, x, y); + width = max(width, x); + height = max(height, y); + nrOfLeds++; + strcpy(pixelSep, ","); + } + void write3D(uint16_t x, uint16_t y, uint16_t z) { + f.printf("%s[%d,%d,%d]", pixelSep, x, y, z); + width = max(width, x); + height = max(height, y); + depth = max(depth, z); + nrOfLeds++; + strcpy(pixelSep, ","); } void writef(const char * format, ...) { @@ -81,7 +140,7 @@ class GenFix { // size_t len = vprintf(format, args); char name[32]; - vsnprintf(name, sizeof(name), format, args); + vsnprintf(name, sizeof(name)-1, format, args); va_end(args); @@ -89,6 +148,205 @@ class GenFix { // print->print("GenFix printf %s\n", format); } + void spiral1D (uint16_t startX, uint16_t startY, uint16_t startZ, uint16_t ledCount) { + + float width = 10; + // float height = ledCount/12; + float depth = 10; + + openPin(); + + for (int i=0; i 1 + // {1, 8}, //1 -> 8 + // {9, 20}, //2 -> 12 + // {21, 36}, //3 -> 16 + // {37, 60}, //4 -> 24 + // {61, 92}, //5 -> 32 + // {93, 132}, //6 -> 40 + // {133, 180}, //7 -> 48 + // {181, 240}, //8 Outer Ring -> 60 -> 241 + + bool in2out; + + openPin(); + + in2out = mdl->getValue("in2out"); + + // in2out or out2in + uint16_t size = 60 / M_PI; + for (int j=0; j<9; j++) { + uint8_t ringNrOfLeds = in2out?ringsNrOfLeds[j]:ringsNrOfLeds[9 - 1 - j]; + ringDiam = in2out?ringDiams[j]:ringDiams[9 - 1 - j]; //in mm + for (int i=0; i= 0; x-=10) write2D(x+startX,y+startY); + y = 110; for (int x = 90; x <= 510; x+=10) write2D(x+startX,y+startY); + y = 70; for (int x = 400; x >= 110; x-=10) write2D(x+startX,y+startY); + closePin(); + //second pin (green) + openPin(); + y = 140; for (int x = 530; x >= 0; x-=10) write2D(x+startX,y+startY); + y = 100; for (int x = 90; x <= 510; x+=10) write2D(x+startX,y+startY); + y = 60; for (int x = 390; x >= 120; x-=10) write2D(x+startX,y+startY); + closePin(); + //third pin (blue) + openPin(); + y = 130; for (int x = 520; x >= 10; x-=10) write2D(x+startX,y+startY); + y = 90; for (int x = 100; x <= 500; x+=10) write2D(x+startX,y+startY); + y = 50; for (int x = 390; x >= 140; x-=10) write2D(x+startX,y+startY); + closePin(); + //fourth pin (yellow) + openPin(); + y = 120; for (int x = 520; x >= 30; x-=10) write2D(x+startX,y+startY); + y = 80; for (int x = 100; x <= 480; x+=10) write2D(x+startX,y+startY); + y = 40; for (int x = 380; x >= 240; x-=10) write2D(x+startX,y+startY); + y = 30; for (int x = 250; x <= 370; x+=10) write2D(x+startX,y+startY); + y = 20; for (int x = 360; x >= 260; x-=10) write2D(x+startX,y+startY); + y = 10; for (int x = 270; x <= 350; x+=10) write2D(x+startX,y+startY); + y = 00; for (int x = 330; x >= 290; x-=10) write2D(x+startX,y+startY); + closePin(); + } + + void cone3D (uint16_t startX, uint16_t startY, uint16_t startZ, uint8_t nrOfRings) { + + openPin(); + + float width = nrOfRings*3/M_PI; + float height = nrOfRings; + // float depth = nrOfRings*3/M_PI; + // , nrOfLeds + + bool in2out = mdl->getValue("in2out"); + + for (int j=0; jgetValue("ledFixGen"); - char sep[3]=""; - char sep2[3]=""; - - uint8_t pinList[9] = {255,255,255,255,255,255,255,255,255}; - uint8_t sizeOfPins = 0; - if (!mdl->getValue("pinList").isNull()) { - print->print( "pinlist %s\n",mdl->getValue("pinList").as()); - char str[32]; - strcpy(str, mdl->getValue("pinList").as()); - const char s[2] = ","; - char *token; - /* get the first token */ - token = strtok(str, s); - /* walk through other tokens */ - while( token != NULL ) - { - print->print( " %s(%d) %d\n", token, atoi(token), sizeOfPins ); - pinList[sizeOfPins++] = atoi(token); - token = strtok(NULL, s); - } - } - - uint8_t pinNr = 0; - float ringDiam; - GenFix genFix; - + if (fix == f_1DSpiral) { uint16_t ledCount = mdl->getValue("ledCount"); - genFix.assign(10, ledCount/12, 10, ledCount, 10); - genFix.writeName("1DSpiral%02d", ledCount); + genFix.openHeader("1DSpiral%02d", ledCount); - genFix.writeHeader(); + genFix.spiral1D(0, 0, 0, ledCount); - genFix.writef(",\"outputs\":[{\"pin\":%d,\"leds\":[", pinList[(pinNr++)%sizeOfPins]); - strcpy(sep, ""); - for (int i=0; igetValue("width"); uint16_t height = mdl->getValue("height"); - genFix.assign(width, height, 1, width * height, 1); - genFix.writeName("2DMatrix%02d%02d", width, height); - genFix.writeHeader(); + genFix.openHeader("2DMatrix%02d%02d", width, height); + + genFix.matrix2D(0, 0, width, height); + + genFix.closeHeader(); - genFix.writef(",\"outputs\":[{\"pin\":%d,\"leds\":[", pinList[(pinNr++)%sizeOfPins]); - strcpy(sep,""); - for (uint8_t y = 0; ygetValue("ledCount"); - genFix.assign(ledCount/M_PI, ledCount/M_PI, 1, ledCount, 10); - - genFix.writeName("2DRing%02d", ledCount); - genFix.writeHeader(); - - genFix.writef(",\"outputs\":[{\"pin\":%d,\"leds\":[", pinList[(pinNr++)%sizeOfPins]); - strcpy(sep, ""); - ringDiam = genFix.factor * genFix.nrOfLeds / 2 / M_PI; //in mm - for (int i=0; i 1 - // {1, 8}, //1 -> 8 - // {9, 20}, //2 -> 12 - // {21, 36}, //3 -> 16 - // {37, 60}, //4 -> 24 - // {61, 92}, //5 -> 32 - // {93, 132}, //6 -> 40 - // {133, 180}, //7 -> 48 - // {181, 240}, //8 Outer Ring -> 60 -> 241 - - bool in2out; - - genFix.assign(60/M_PI, 60/M_PI, 1, 241, 10); - - genFix.writeName("2DRing%02d", genFix.nrOfLeds); - genFix.writeHeader(); - - genFix.writef(",\"outputs\":[{\"pin\":%d,\"leds\":[", pinList[(pinNr++)%sizeOfPins]); - strcpy(sep, ""); - - in2out = mdl->getValue("in2out"); - - // in2out or out2in - int arrSize = sizeof(ringsNrOfLeds)/sizeof(ringsNrOfLeds[0]); - for (int j=0; j= 0; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 11; for (int x = 9; x <= 51; x++) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 7; for (int x = 40; x >= 11; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - genFix.writef("]}"); - //second pin (green) - genFix.writef("%s{\"pin\":%d,\"leds\":[", sep, pinList[(pinNr++)%sizeOfPins]);strcpy(sep, ","); - strcpy(sep2,""); - y = 14; for (int x = 53; x >= 0; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 10; for (int x = 9; x <= 51; x++) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 6; for (int x = 39; x >= 12; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - genFix.writef("]}"); - //third pin (blue) - genFix.writef("%s{\"pin\":%d,\"leds\":[", sep, pinList[(pinNr++)%sizeOfPins]);strcpy(sep, ","); - strcpy(sep2,""); - y = 13; for (int x = 52; x >= 1; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 9; for (int x = 10; x <= 50; x++) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 5; for (int x = 39; x >= 14; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - genFix.writef("]}"); - //fourth pin (yellow) - genFix.writef("%s{\"pin\":%d,\"leds\":[", sep, pinList[(pinNr++)%sizeOfPins]);strcpy(sep, ","); - strcpy(sep2,""); - y = 12; for (int x = 52; x >= 3; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 8; for (int x = 10; x <= 48; x++) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 4; for (int x = 38; x >= 24; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 3; for (int x = 25; x <= 37; x++) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 2; for (int x = 36; x >= 26; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 1; for (int x = 27; x <= 35; x++) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - y = 0; for (int x = 33; x >= 29; x--) {genFix.writef("%s[%d,%d]", sep2, x,y); strcpy(sep2, ",");} - genFix.writef("]}"); - - genFix.writef("]"); - } else if (fix == f_3DCone) { - bool in2out; + genFix.openHeader("2DCloud5416"); - uint8_t nrOfRings = mdl->getValue("nrOfRings"); - uint16_t nrOfLeds = 0; - for (int j=0; jgetValue("in2out"); + genFix.rings241(0, 0); + genFix.matrix2D(190, 0, 8, 8); - for (int j=0; jgetValue("nrOfRings"); + // uint16_t nrOfLeds = 0; + // for (int j=0; jgetValue("width"); uint8_t sides = mdl->getValue("sides"); - genFix.assign(width, width, width, width*width*sides, 1); - - genFix.writeName("3DSideCube%02d%02d%02d", width, width, sides); - genFix.writeHeader(); - - genFix.writef(",\"outputs\":["); - - strcpy(sep,""); - strcpy(sep2,""); - - //front and back - for (uint8_t z = 0; zgetValue("width"); uint16_t height = mdl->getValue("height"); uint16_t depth = mdl->getValue("depth"); - genFix.assign(width, height, depth, width*height*depth, 1); - genFix.writeName("3DCube%02d%02d%02d", width, height, depth); - genFix.writeHeader(); + genFix.openHeader("3DCube%02d%02d%02d", width, height, depth); + + genFix.cube3D(0, 0, 0, width, height, depth); + + genFix.closeHeader(); - genFix.writef(",\"outputs\":[{\"pin\":%d,\"leds\":[", pinList[(pinNr++)%sizeOfPins]); - strcpy(sep,""); - for (uint8_t z = 0; zgetValue("width"); - genFix.assign(width/M_PI, width, width, width, 10); - genFix.writeName("3DGlobe%02d", width); + genFix.openHeader("3DGlobe%02d", width); - genFix.writeHeader(); + genFix.globe3D(0, 0, 0, width); - genFix.writef(",\"outputs\":[{\"pin\":%d,\"leds\":[", pinList[(pinNr++)%sizeOfPins]); - strcpy(sep, ""); - ringDiam = genFix.factor * genFix.nrOfLeds / 2 / M_PI; //in mm - for (int i=0; ifilesChange(); @@ -501,8 +585,8 @@ class AppModLedFixGen:public Module { static File openFile(const char * name) { char fileName[30] = "/"; - strcat(fileName, name); - strcat(fileName, ".json"); + strncat(fileName, name, sizeof(fileName)-1); + strncat(fileName, ".json", sizeof(fileName)-1); File f = files->open(fileName, "w"); if (!f) diff --git a/src/App/AppModLeds.h b/src/App/AppModLeds.h index dcaef293..783e64dd 100644 --- a/src/App/AppModLeds.h +++ b/src/App/AppModLeds.h @@ -135,7 +135,7 @@ class AppModLeds:public Module { files->dirToJson(select, true, "D"); //only files containing D (1D,2D,3D), alphabetically, only looking for D not very destinctive though // ui needs to load the file also initially - char fileName[30] = ""; + char fileName[32] = ""; if (files->seqNrToName(fileName, var["value"])) { web->addResponse("pview", "file", fileName); } @@ -145,7 +145,7 @@ class AppModLeds:public Module { LedsV::ledFixNr = var["value"]; doMap = true; - char fileName[30] = ""; + char fileName[32] = ""; if (files->seqNrToName(fileName, LedsV::ledFixNr)) { //send to pview a message to get file filename JsonDocument *responseDoc = web->getResponseDoc(); @@ -160,13 +160,13 @@ class AppModLeds:public Module { ui->initText(parentVar, "dimensions", nullptr, true, [](JsonObject var) { //uiFun char details[32] = ""; - print->fFormat(details, sizeof(details), "P:%dx%dx%d V:%dx%dx%d", LedsV::widthP, LedsV::heightP, LedsV::depthP, LedsV::widthV, LedsV::heightV, LedsV::depthV); + print->fFormat(details, sizeof(details)-1, "P:%dx%dx%d V:%dx%dx%d", LedsV::widthP, LedsV::heightP, LedsV::depthP, LedsV::widthV, LedsV::heightV, LedsV::depthV); web->addResponse(var["id"], "value", details); }); ui->initText(parentVar, "nrOfLeds", nullptr, true, [](JsonObject var) { //uiFun char details[32] = ""; - print->fFormat(details, sizeof(details), "P:%d V:%d", LedsV::nrOfLedsP, LedsV::nrOfLedsV); + print->fFormat(details, sizeof(details)-1, "P:%d V:%d", LedsV::nrOfLedsP, LedsV::nrOfLedsV); web->addResponse(var["id"], "value", details); web->addResponseV(var["id"], "comment", "Max %d", NUM_LEDS_Preview); }); @@ -246,8 +246,8 @@ class AppModLeds:public Module { char * before; before = after; after = strtok(NULL, " "); - uint16_t nrOfLeds = atoi(after) - atoi(before) + 1; uint16_t startLed = atoi(before); + uint16_t nrOfLeds = atoi(after) - atoi(before) + 1; print->print("FastLED.addLeds new %d: %d-%d\n", pinNr, startLed, nrOfLeds); //commented pins: error: static assertion failed: Invalid pin specified @@ -316,5 +316,5 @@ class AppModLeds:public Module { static AppModLeds *lds; -uint16_t AppModLeds::fps = 40; +uint16_t AppModLeds::fps = 120; bool AppModLeds::doMap = false; \ No newline at end of file diff --git a/src/Sys/SysJsonRDWS.h b/src/Sys/SysJsonRDWS.h index bd5139ed..a5f4856e 100644 --- a/src/Sys/SysJsonRDWS.h +++ b/src/Sys/SysJsonRDWS.h @@ -93,8 +93,8 @@ class JsonRDWS { std::vector varStack; //objects and arrays store their names in a stack bool collectNumbers = false; //array can ask to store all numbers found in array (now used for x,y,z coordinates) std::vector uint16CollectList; //collected numbers - char lastVarId[100] = ""; //last found var id in json - char beforeLastVarId[100] = ""; //last found var id in json + char lastVarId[128] = ""; //last found var id in json + char beforeLastVarId[128] = ""; //last found var id in json size_t foundCounter = 0; //count how many of the id's to lookFor have been actually found bool foundAll = false; @@ -116,7 +116,7 @@ class JsonRDWS { f.read(&character, sizeof(byte)); } else if (character=='}') { //object end - strcpy(lastVarId, varStack[varStack.size()-1].c_str()); + strncpy(lastVarId, varStack[varStack.size()-1].c_str(), sizeof(lastVarId)-1); // print->print("Object pop %s %d\n", lastVarId, varStack.size()); check(lastVarId); varStack.pop_back(); @@ -135,14 +135,14 @@ class JsonRDWS { } else if (character==']') { //array end //assign back the popped var id from [ - strcpy(lastVarId, varStack[varStack.size()-1].c_str()); + strncpy(lastVarId, varStack[varStack.size()-1].c_str(), sizeof(lastVarId)-1); // print->print("Array pop %s %d %d\n", lastVarId, varStack.size(), uint16CollectList.size()); check(lastVarId); //check the parent array, if exists if (varStack.size()-2 >=0) { // print->print(" Parent check %s\n", varStack[varStack.size()-2].c_str()); - strcpy(beforeLastVarId, varStack[varStack.size()-2].c_str()); + strncpy(beforeLastVarId, varStack[varStack.size()-2].c_str(), sizeof(beforeLastVarId)-1); check(beforeLastVarId); } varStack.pop_back(); //remove var id of this array @@ -151,13 +151,13 @@ class JsonRDWS { f.read(&character, sizeof(byte)); } else if (character=='"') { //parse String - char value[100] = ""; - f.readBytesUntil('"', value, sizeof(value)); + char value[128] = ""; + f.readBytesUntil('"', value, sizeof(value)-1); //if no lastVar then var found if (strcmp(lastVarId, "") == 0) { // print->print("Element [%s]\n", value); - strcpy(lastVarId, value); + strncpy(lastVarId, value, sizeof(lastVarId)-1); } else { // if lastvar then string value found // print->print("String var %s: [%s]\n", lastVarId, value); @@ -209,7 +209,7 @@ class JsonRDWS { f.read(&character, sizeof(byte)); } else { - print->print("Element don't know %c\n", character); + print->print("%c", character); f.read(&character, sizeof(byte)); } } //next @@ -222,7 +222,7 @@ class JsonRDWS { // print->print("JsonRDWS found %s:%s %d %s\n", varId, vd->type, vd->index, value?value:"", uint16CollectList.size()); if (strcmp(vd->type, "uint8") ==0) *uint8List[vd->index] = atoi(value); if (strcmp(vd->type, "uint16") ==0) *uint16List[vd->index] = atoi(value); - if (strcmp(vd->type, "char") ==0) strcpy(charList[vd->index], value); + if (strcmp(vd->type, "char") ==0) strncpy(charList[vd->index], value, 31); //assuming size 32-1 here if (strcmp(vd->type, "fun") ==0) funList[vd->index](uint16CollectList); foundCounter++; } @@ -235,7 +235,7 @@ class JsonRDWS { void writeJsonVariantToFile(JsonVariant variant) { if (variant.is()) { f.printf("{"); - char sep[3] = ""; + char sep[2] = ""; for (JsonPair pair: variant.as()) { bool found = false; for (char *el:charList) { @@ -247,7 +247,7 @@ class JsonRDWS { // std::vector::iterator itr = find(charList.begin(), charList.end(), pair.key().c_str()); if (!found) { //not found f.printf("%s\"%s\":", sep, pair.key().c_str()); - strcpy(sep,","); + strcpy(sep, ","); writeJsonVariantToFile(pair.value()); } } @@ -255,10 +255,10 @@ class JsonRDWS { } else if (variant.is()) { f.printf("["); - char sep[3] = ""; + char sep[2] = ""; for (JsonVariant variant2: variant.as()) { f.print(sep); - strcpy(sep,","); + strcpy(sep, ","); writeJsonVariantToFile(variant2); } f.printf("]"); diff --git a/src/Sys/SysModFiles.cpp b/src/Sys/SysModFiles.cpp index bee48e62..2a22d857 100644 --- a/src/Sys/SysModFiles.cpp +++ b/src/Sys/SysModFiles.cpp @@ -122,7 +122,7 @@ void SysModFiles::dirToJson(JsonArray array, bool nameOnly, const char * filter) row.add((char *)file.name()); //create a copy! row.add(file.size()); char urlString[32] = "file/"; - strcat(urlString, file.name()); + strncat(urlString, file.name(), sizeof(urlString)-1); row.add((char *)urlString); //create a copy! } // Serial.printf("FILE: %s %d\n", file.name(), file.size()); @@ -149,8 +149,8 @@ bool SysModFiles::seqNrToName(char * fileName, size_t seqNr) { if (counter == seqNr) { Serial.printf("seqNrToName: %s %d\n", file.name(), file.size()); root.close(); - strcat(fileName, "/"); //add root prefix - strcat(fileName, file.name()); + strncat(fileName, "/", 31); //add root prefix, fileName is 32 bytes but sizeof doesn't know so cheating + strncat(fileName, file.name(), 31); return true; } @@ -206,8 +206,8 @@ void SysModFiles::removeFiles(const char * filter, bool reverse) { while (file) { if (filter == nullptr || reverse?strstr(file.name(), filter) == nullptr: strstr(file.name(), filter) != nullptr) { - char fileName[30] = "/"; - strcat(fileName, file.name()); + char fileName[32] = "/"; + strncat(fileName, file.name(), sizeof(fileName)-1); file.close(); //close otherwise not removeable remove(fileName); } diff --git a/src/Sys/SysModModel.cpp b/src/Sys/SysModModel.cpp index 08a9a7ff..e7d89cc9 100644 --- a/src/Sys/SysModModel.cpp +++ b/src/Sys/SysModModel.cpp @@ -217,8 +217,8 @@ JsonObject SysModModel::setValueV(const char * id, const char * format, ...) { va_start(args, format); // size_t len = vprintf(format, args); - char value[100]; - vsnprintf(value, sizeof(value), format, args); + char value[128]; + vsnprintf(value, sizeof(value)-1, format, args); va_end(args); @@ -230,8 +230,8 @@ JsonObject SysModModel::setValueP(const char * id, const char * format, ...) { va_start(args, format); // size_t len = vprintf(format, args); - char value[100]; - vsnprintf(value, sizeof(value), format, args); + char value[128]; + vsnprintf(value, sizeof(value)-1, format, args); print->print("%s\n", value); va_end(args); diff --git a/src/Sys/SysModNetwork.cpp b/src/Sys/SysModNetwork.cpp index 30ee7a53..3b70c7c7 100644 --- a/src/Sys/SysModNetwork.cpp +++ b/src/Sys/SysModNetwork.cpp @@ -114,8 +114,8 @@ void SysModNetwork::initConnection() { const char * ssid = mdl->getValue("ssid"); const char * password = mdl->getValue("pw"); if (ssid && strlen(ssid)>0) { - char passXXX [20] = ""; - for (int i = 0; i < strlen(password); i++) strcat(passXXX, "*"); + char passXXX [32] = ""; + for (int i = 0; i < strlen(password); i++) strncat(passXXX, "*", sizeof(passXXX)-1); print->print("Connecting to WiFi %s / %s\n", ssid, passXXX); WiFi.begin(ssid, password); } diff --git a/src/Sys/SysModPins.cpp b/src/Sys/SysModPins.cpp index fffc0b93..38d5de44 100644 --- a/src/Sys/SysModPins.cpp +++ b/src/Sys/SysModPins.cpp @@ -120,8 +120,8 @@ void SysModPins::allocatePin(uint8_t pinNr, const char * owner, const char * det if (strcmp(pinObjects[pinNr].owner, "") != 0 && strcmp(pinObjects[pinNr].owner, owner) != 0) print->print("allocatePin %d: not owner %s!=%s", pinNr, owner, pinObjects[pinNr].owner); else { - strcpy(pinObjects[pinNr].owner, owner); - strcpy(pinObjects[pinNr].details, details); + strncpy(pinObjects[pinNr].owner, owner, sizeof(PinObject::owner)-1); + strncpy(pinObjects[pinNr].details, details, sizeof(PinObject::details)-1); pinsChanged = true; } } diff --git a/src/Sys/SysModWeb.cpp b/src/Sys/SysModWeb.cpp index 9c1b799d..13742437 100644 --- a/src/Sys/SysModWeb.cpp +++ b/src/Sys/SysModWeb.cpp @@ -379,8 +379,8 @@ void SysModWeb::sendDataWs(AsyncWebSocketClient * client, JsonVariant json) { if (client->status() == WS_CONNECTED && !client->queueIsFull()) client->text(wsBuf); else - printClient("sendDataWs client(s) full or not connected", client); //crash?? - // print->print("sendDataWs client full or not connected\n"); + // printClient("sendDataWs client(s) full or not connected", client); //crash!! + print->print("sendDataWs client full or not connected\n"); } // DEBUG_PRINTLN(F("to multiple clients.")); } @@ -548,8 +548,8 @@ void SysModWeb::addResponseV(const char * id, const char * key, const char * for va_start(args, format); // size_t len = vprintf(format, args); - char value[100]; - vsnprintf(value, sizeof(value), format, args); + char value[128]; + vsnprintf(value, sizeof(value)-1, format, args); va_end(args); diff --git a/src/User/UserModArtNet.h b/src/User/UserModArtNet.h index 7a018273..c9c31395 100644 --- a/src/User/UserModArtNet.h +++ b/src/User/UserModArtNet.h @@ -40,9 +40,9 @@ class UserModArtNet:public Module { JsonArray select = web->addResponseA(var["id"], "select"); for (NodeInfo node: UserModInstances::nodes) { char option[32] = { 0 }; - strcpy(option, node.ip.toString().c_str()); - strcat(option, " "); - strcat(option, node.details); + strncpy(option, node.ip.toString().c_str(), sizeof(option)-1); + strncat(option, " ", sizeof(option)-1); + strncat(option, node.details, sizeof(option)-1); select.add(option); } }, [](JsonObject var) { //chFun diff --git a/src/User/UserModDDP.h b/src/User/UserModDDP.h index 369a87d0..fd3256f3 100644 --- a/src/User/UserModDDP.h +++ b/src/User/UserModDDP.h @@ -56,9 +56,9 @@ class UserModDDP:public Module { JsonArray select = web->addResponseA(var["id"], "select"); for (NodeInfo node: UserModInstances::nodes) { char option[32] = { 0 }; - strcpy(option, node.ip.toString().c_str()); - strcat(option, " "); - strcat(option, node.details); + strncpy(option, node.ip.toString().c_str(), sizeof(option)-1); + strncat(option, " ", sizeof(option)-1); + strncat(option, node.details, sizeof(option)-1); select.add(option); } }, [](JsonObject var) { //chFun diff --git a/src/User/UserModInstances.h b/src/User/UserModInstances.h index 36603272..f6c2b0aa 100644 --- a/src/User/UserModInstances.h +++ b/src/User/UserModInstances.h @@ -49,7 +49,7 @@ class UserModInstances:public Module { row.add(node.timeStamp / 1000); row.add(node.details); char urlString[32] = "http://"; - strcat(urlString, node.ip.toString().c_str()); + strncat(urlString, node.ip.toString().c_str(), sizeof(urlString)-1); row.add((char *)urlString); //create a copy! } }); @@ -120,7 +120,7 @@ class UserModInstances:public Module { if (node->ip == remoteIp) { found = true; node->timeStamp = millis(); //update timestamp - strcpy(node->details, nodeName); //update name (in case changed) + strncpy(node->details, nodeName, sizeof(node->details)-1); //update name (in case changed) } } @@ -133,7 +133,7 @@ class UserModInstances:public Module { else strcpy(newNode.type, "Unknown"); newNode.timeStamp = millis(); - strcpy(newNode.details, nodeName); + strncpy(newNode.details, nodeName, sizeof(newNode.details)-1); nodes.push_back(newNode); ui->processUiFun("ddpInst"); //show the new instance in the dropdown ui->processUiFun("artInst"); //show the new instance in the dropdown diff --git a/src/html_ui.h b/src/html_ui.h index 4a838f4c..2fc33a28 100644 --- a/src/html_ui.h +++ b/src/html_ui.h @@ -7,352 +7,351 @@ */ // Autogenerated from data/index.htm, do not edit!! -const uint16_t PAGE_index_L = 5527; +const uint16_t PAGE_index_L = 5513; const uint8_t PAGE_index[] PROGMEM = { 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0xd5, 0x3c, 0xed, 0x72, 0xdb, 0x38, - 0x92, 0xff, 0xf3, 0x14, 0x34, 0x3d, 0xeb, 0x25, 0x2d, 0x9a, 0xa2, 0x24, 0xdb, 0xe3, 0x50, 0xa1, - 0x7d, 0x89, 0xe3, 0x9d, 0xc9, 0x54, 0xbe, 0x6a, 0x9c, 0xcc, 0xd4, 0x56, 0xc6, 0x37, 0x81, 0x48, - 0x48, 0xe2, 0x84, 0x02, 0xb4, 0x24, 0x64, 0x5b, 0x2b, 0xeb, 0x11, 0xee, 0xdf, 0xfd, 0xbf, 0x57, - 0xbc, 0x47, 0xb8, 0x6e, 0x00, 0xa4, 0xf8, 0x25, 0xdb, 0x93, 0x99, 0xbd, 0xba, 0xab, 0x54, 0x24, - 0x10, 0x04, 0x1a, 0xdd, 0x8d, 0xfe, 0x06, 0x64, 0xe3, 0xd9, 0xce, 0xcb, 0x77, 0xe7, 0x1f, 0xfe, - 0xfe, 0xfe, 0xc2, 0x98, 0x8a, 0x59, 0x72, 0x6a, 0x3c, 0xcb, 0xbf, 0x28, 0x89, 0xe0, 0x4b, 0xc4, - 0x22, 0xa1, 0xa7, 0x97, 0x82, 0xa4, 0x6f, 0x78, 0x64, 0x8c, 0x96, 0xc6, 0x1b, 0xce, 0x19, 0x34, - 0x17, 0x09, 0xcd, 0x9e, 0x75, 0xd5, 0x5b, 0xe3, 0xd9, 0x8c, 0x0a, 0x62, 0x3c, 0x09, 0xa7, 0x24, - 0xcd, 0xa8, 0x08, 0xcc, 0x85, 0x18, 0x1f, 0x9c, 0x98, 0xd0, 0x9f, 0x89, 0x25, 0xbc, 0x7f, 0x92, - 0x90, 0x11, 0x4d, 0x56, 0x33, 0x92, 0x4e, 0x62, 0x76, 0x90, 0xc6, 0x93, 0xa9, 0xf0, 0x8f, 0xe7, - 0xb7, 0xeb, 0x90, 0xcf, 0x66, 0x94, 0x89, 0xd5, 0x98, 0x33, 0x71, 0x90, 0xc5, 0xff, 0xa4, 0x7e, - 0xcf, 0x9b, 0xdf, 0x0e, 0xd5, 0x23, 0xce, 0xf4, 0x63, 0x41, 0x92, 0x38, 0x1c, 0xea, 0x99, 0x09, - 0x1d, 0xab, 0x89, 0x82, 0xde, 0xd6, 0x67, 0xc9, 0x3e, 0x92, 0x52, 0xb2, 0xba, 0x89, 0x23, 0x31, - 0x85, 0x3e, 0xef, 0x2f, 0xc3, 0x29, 0x95, 0x6b, 0xc9, 0xf6, 0x88, 0xa7, 0x11, 0x4d, 0x0f, 0x52, - 0x12, 0xc5, 0x8b, 0xcc, 0xef, 0xf5, 0x61, 0xa1, 0x11, 0x09, 0xbf, 0x4c, 0x52, 0xbe, 0x60, 0x91, - 0xef, 0x19, 0xde, 0x3a, 0x24, 0xec, 0x9a, 0x64, 0x5f, 0x3f, 0x7f, 0xc4, 0xa3, 0xa5, 0xc2, 0x6a, - 0x4c, 0x66, 0x71, 0xb2, 0xf4, 0x9f, 0xa7, 0x31, 0x49, 0x9c, 0xef, 0x69, 0x72, 0x4d, 0x45, 0x1c, - 0x12, 0x27, 0x23, 0x2c, 0x3b, 0xc8, 0x68, 0x1a, 0x8f, 0xcb, 0x53, 0x77, 0x3d, 0xcf, 0x5b, 0xc7, - 0x6c, 0xbe, 0x10, 0xab, 0x1a, 0xc0, 0x8c, 0x26, 0x34, 0x6c, 0xf4, 0x4e, 0x7b, 0xce, 0xb4, 0xbf, - 0x0a, 0x79, 0xc2, 0x53, 0x7f, 0x77, 0x74, 0xec, 0x8d, 0x8f, 0xfb, 0x6b, 0x77, 0xc6, 0x23, 0x92, - 0xac, 0xe6, 0x3c, 0x8b, 0x45, 0xcc, 0x99, 0x3f, 0x8e, 0x6f, 0x69, 0x34, 0x94, 0xfc, 0xf2, 0x00, - 0x73, 0x21, 0xf8, 0x0c, 0x1a, 0x8a, 0xf3, 0xde, 0x50, 0xf0, 0x39, 0x76, 0x6f, 0xc0, 0x26, 0x31, - 0xa3, 0x24, 0x3d, 0x98, 0x20, 0x71, 0xb0, 0x21, 0x96, 0xe0, 0x86, 0x9a, 0xe4, 0xec, 0x8e, 0xc7, - 0x23, 0x3a, 0x18, 0x3c, 0x85, 0x85, 0x1d, 0xbd, 0x18, 0xb4, 0x91, 0x21, 0xf6, 0x50, 0xa4, 0x40, - 0xcf, 0x98, 0xa7, 0x33, 0x5f, 0xb6, 0x12, 0x22, 0xe8, 0xdf, 0xad, 0xd2, 0x2b, 0x85, 0x4a, 0x31, - 0xca, 0x70, 0x0f, 0xb3, 0xe1, 0x9c, 0x44, 0x51, 0xcc, 0x26, 0xfe, 0x49, 0xb1, 0xcf, 0x72, 0x03, - 0xf1, 0x91, 0x5f, 0xd3, 0x74, 0x9c, 0xf0, 0x1b, 0x9f, 0x2c, 0x04, 0xaf, 0xb1, 0xfb, 0x10, 0xd8, - 0xbd, 0x76, 0x59, 0x14, 0x5f, 0xaf, 0xca, 0xb2, 0x70, 0x84, 0xe2, 0xd2, 0xdc, 0x98, 0xb5, 0x2b, - 0xc8, 0x28, 0xa1, 0x4a, 0x86, 0x1e, 0xbd, 0x23, 0x0a, 0x0c, 0xf0, 0x35, 0x21, 0xf3, 0x8c, 0xfa, - 0x79, 0x63, 0x58, 0x92, 0x87, 0xea, 0x52, 0xee, 0x11, 0x9d, 0x55, 0x96, 0x32, 0x44, 0xe4, 0x54, - 0x9f, 0xa7, 0x2b, 0x35, 0xc5, 0xef, 0xcd, 0x6f, 0x8d, 0x8c, 0x27, 0x71, 0x64, 0xe0, 0x76, 0x17, - 0x6c, 0x38, 0xae, 0x21, 0x8b, 0x33, 0x50, 0x90, 0x0f, 0x40, 0xec, 0x27, 0xcc, 0x47, 0x22, 0x4b, - 0xfb, 0x74, 0xa0, 0x37, 0xfd, 0xf8, 0x5b, 0xfc, 0x37, 0xd4, 0x4f, 0xe3, 0xf1, 0x78, 0xed, 0x86, - 0x40, 0x24, 0x81, 0x5d, 0x4c, 0x57, 0x51, 0x9c, 0xcd, 0x13, 0xb2, 0xf4, 0x27, 0x69, 0x1c, 0x0d, - 0xf1, 0xe3, 0x40, 0xd0, 0xd9, 0x1c, 0x37, 0x07, 0xa7, 0x2f, 0x66, 0x2c, 0xf3, 0x53, 0x3a, 0xa7, - 0x44, 0x58, 0x87, 0x4e, 0x6f, 0x9c, 0xda, 0x6b, 0x77, 0xc4, 0x6f, 0x73, 0x34, 0x07, 0x1b, 0x34, - 0x8f, 0x8f, 0x8f, 0x7f, 0x97, 0x88, 0x6c, 0x04, 0x44, 0x8b, 0x47, 0x95, 0x59, 0x7d, 0xe0, 0x40, - 0x41, 0xb6, 0x54, 0x73, 0xb5, 0x91, 0xaa, 0x1d, 0x2e, 0xd2, 0x0c, 0x68, 0x99, 0x81, 0x0c, 0x48, - 0x7c, 0xfc, 0x29, 0x4a, 0xc3, 0xaa, 0x49, 0xba, 0xe7, 0x8d, 0x34, 0xbd, 0x48, 0xca, 0x36, 0xb4, - 0x1f, 0x58, 0xb9, 0xbe, 0x9a, 0x8b, 0x8b, 0x39, 0x1a, 0xa6, 0xab, 0x56, 0xde, 0x00, 0x8e, 0x80, - 0x4c, 0xaa, 0x20, 0xaf, 0xfd, 0x94, 0x73, 0xb1, 0x3a, 0x38, 0x08, 0x0f, 0x7a, 0xfe, 0x6e, 0xaf, - 0xd7, 0x1b, 0x62, 0x73, 0x2c, 0xf7, 0x40, 0x36, 0xfb, 0xfe, 0x6e, 0xbf, 0xdf, 0x97, 0xcd, 0x81, - 0xbf, 0x3b, 0x18, 0x0c, 0x64, 0xf3, 0xd0, 0xdf, 0x3d, 0x3c, 0x3c, 0x94, 0xcd, 0x23, 0x7f, 0xf7, - 0xe8, 0xe8, 0x48, 0x36, 0x8f, 0x7d, 0x89, 0x2c, 0x36, 0x4f, 0xfc, 0xdd, 0x93, 0x93, 0x13, 0xd9, - 0x1c, 0x81, 0x4e, 0x8f, 0x46, 0xb2, 0x19, 0xfa, 0xbb, 0x61, 0x18, 0xca, 0x26, 0xf5, 0x77, 0x29, - 0xa5, 0xb2, 0x09, 0x06, 0x23, 0x8a, 0x22, 0xd9, 0x04, 0x7e, 0x84, 0x03, 0xb5, 0xda, 0x04, 0x16, - 0x0e, 0x15, 0x3a, 0x09, 0xac, 0x76, 0x42, 0x64, 0x73, 0xe9, 0xef, 0x92, 0xa7, 0x1e, 0x34, 0x05, - 0xc0, 0xf5, 0x5c, 0xb5, 0x2e, 0xf7, 0xd3, 0xc9, 0x88, 0x58, 0xbd, 0xa7, 0x47, 0x8e, 0xd1, 0x3b, - 0xcc, 0x3f, 0x3c, 0xf7, 0xa9, 0x2d, 0x5f, 0x8b, 0x91, 0x7a, 0x3f, 0x38, 0x74, 0x8c, 0xfc, 0xff, - 0x35, 0x49, 0x2d, 0x09, 0xc4, 0xce, 0xc7, 0x10, 0x0d, 0xc4, 0xeb, 0xc3, 0xfc, 0xe2, 0xa3, 0x39, - 0x6e, 0xaa, 0xc6, 0x1d, 0xf5, 0x1c, 0x23, 0xff, 0x5f, 0x1d, 0x04, 0xaa, 0xf5, 0x2d, 0xee, 0x09, - 0xb4, 0xe6, 0x79, 0x0b, 0x66, 0x1d, 0x0f, 0x54, 0xdf, 0x68, 0xee, 0xf7, 0x0e, 0x61, 0x13, 0xd4, - 0x87, 0xa7, 0x5b, 0x38, 0x06, 0xde, 0x3c, 0x85, 0x47, 0xcf, 0xf8, 0x16, 0x3f, 0xe5, 0xac, 0xc8, - 0x67, 0x9c, 0x21, 0x97, 0xb2, 0xc9, 0xdc, 0x37, 0x47, 0x09, 0x0f, 0xbf, 0x98, 0xf8, 0x62, 0x06, - 0x46, 0x0f, 0x14, 0x6d, 0x17, 0x94, 0x84, 0xc5, 0x2c, 0xaa, 0x9b, 0x49, 0x6d, 0x1f, 0x43, 0x92, - 0x84, 0x96, 0x42, 0x6e, 0x34, 0xb5, 0x8d, 0x8e, 0x71, 0x34, 0xbf, 0xb5, 0x95, 0x0d, 0x3d, 0x2c, - 0x49, 0xd0, 0x51, 0xc3, 0xe4, 0x1c, 0x55, 0x5c, 0x41, 0x2e, 0xa9, 0xc8, 0xf8, 0x7f, 0x1e, 0xc0, - 0x72, 0xf4, 0xd6, 0x3f, 0xe8, 0xaf, 0x9f, 0x3c, 0xeb, 0x2a, 0x67, 0x08, 0x4e, 0x31, 0x4c, 0xe3, - 0xb9, 0x38, 0x7d, 0xd2, 0xed, 0x1a, 0xff, 0x06, 0xde, 0x8d, 0xb2, 0x8c, 0x1a, 0x86, 0xf1, 0xdd, - 0xdb, 0x8f, 0xc6, 0x77, 0x17, 0x6f, 0x2f, 0x7e, 0x7c, 0xfe, 0xda, 0x78, 0xff, 0xf1, 0xc5, 0xeb, - 0x57, 0xe7, 0x06, 0xfc, 0xbf, 0x78, 0x7b, 0x79, 0x61, 0xfc, 0x44, 0xd3, 0x0c, 0xd0, 0x35, 0x06, - 0x8e, 0xd1, 0x7f, 0x6a, 0xfc, 0xb0, 0x60, 0xd4, 0xe8, 0x7b, 0xde, 0xb7, 0x4f, 0x00, 0x59, 0x63, - 0x9e, 0xd2, 0xeb, 0x98, 0x2f, 0xb2, 0xbf, 0x2d, 0x58, 0x88, 0x34, 0x39, 0x29, 0x85, 0x25, 0x53, - 0x9a, 0x06, 0x6c, 0x91, 0x24, 0x4e, 0x06, 0xe0, 0xa9, 0x6a, 0x86, 0x64, 0x46, 0x53, 0x22, 0xdb, - 0xc3, 0xb1, 0x1e, 0x6d, 0x2c, 0xc0, 0xf8, 0xc1, 0x54, 0x8b, 0x3a, 0x99, 0xbd, 0x8a, 0xc7, 0x96, - 0x39, 0xbf, 0x8e, 0xe9, 0x8d, 0x19, 0x04, 0x74, 0x6f, 0xef, 0xb7, 0x8c, 0xb3, 0x9f, 0x48, 0xb2, - 0xa0, 0x99, 0x2b, 0x7b, 0xed, 0x55, 0x42, 0x85, 0x01, 0xd0, 0xe8, 0x8d, 0xf1, 0x31, 0x66, 0xe2, - 0xe4, 0x79, 0x9a, 0x92, 0xa5, 0x95, 0xd9, 0x0e, 0x0b, 0x26, 0xaf, 0xa2, 0x7c, 0xae, 0x3d, 0x04, - 0x38, 0xf5, 0xb9, 0x2e, 0xc3, 0xf9, 0xb0, 0x01, 0xa0, 0xa6, 0xd4, 0x4d, 0xf8, 0xc4, 0x32, 0xc1, - 0x0a, 0x25, 0x24, 0x44, 0x93, 0x47, 0x0d, 0xe5, 0x7a, 0x77, 0x4c, 0xe4, 0x37, 0x2e, 0x11, 0x5e, - 0x58, 0xa6, 0xea, 0x83, 0x2e, 0xea, 0x4a, 0x13, 0x1c, 0x30, 0xf5, 0xed, 0x50, 0x57, 0xf9, 0x65, - 0xe8, 0x50, 0x0d, 0x87, 0xb9, 0x73, 0x70, 0xfd, 0x4c, 0xbc, 0xe5, 0x11, 0x75, 0x35, 0xdc, 0xf3, - 0x69, 0x9c, 0x44, 0x40, 0x17, 0x43, 0xf4, 0xe0, 0xcb, 0x8d, 0xa3, 0x40, 0x63, 0x08, 0x0f, 0xb0, - 0x99, 0x17, 0xd7, 0x30, 0xe3, 0x75, 0x9c, 0x09, 0xe0, 0x50, 0x0a, 0xcb, 0xc1, 0x56, 0x7c, 0x31, - 0x1d, 0x1a, 0x9c, 0xae, 0x04, 0x9f, 0x4c, 0x12, 0xfa, 0x06, 0x5d, 0xaa, 0x45, 0xc1, 0x3c, 0xa7, - 0x13, 0x2a, 0xec, 0xb5, 0xbd, 0x4e, 0xa9, 0x58, 0xa4, 0xcc, 0xe8, 0x05, 0x41, 0x83, 0xbc, 0x88, - 0xce, 0xc5, 0xf4, 0x4c, 0x6e, 0x06, 0xbd, 0xe9, 0xbf, 0xb4, 0x98, 0x43, 0x6d, 0x5f, 0x3f, 0x0e, - 0xd4, 0xa3, 0xb3, 0x03, 0x6e, 0x1e, 0x38, 0x3c, 0xe2, 0x24, 0x8d, 0x90, 0xc3, 0x5b, 0xf9, 0x39, - 0xd4, 0x13, 0x5f, 0xe0, 0x48, 0x4b, 0xb2, 0x56, 0x4d, 0xb2, 0x01, 0x8c, 0xc6, 0x62, 0xa7, 0xb7, - 0x2e, 0x36, 0x71, 0xb3, 0xac, 0xdc, 0x46, 0x84, 0x0a, 0x24, 0xbb, 0x80, 0xf5, 0x39, 0xb8, 0x05, - 0x70, 0x27, 0x96, 0xd9, 0xc7, 0xc9, 0x3c, 0x38, 0x74, 0x92, 0x26, 0xee, 0x63, 0x12, 0x0a, 0x9e, - 0xe2, 0xae, 0x31, 0x37, 0x4c, 0xc0, 0xca, 0xff, 0x08, 0x51, 0x87, 0xe5, 0x39, 0x9e, 0x43, 0x6b, - 0x1c, 0xb7, 0x9d, 0x76, 0x99, 0x10, 0xc1, 0x1b, 0x22, 0xa6, 0xee, 0x2c, 0x06, 0x41, 0x52, 0x53, - 0xba, 0x8d, 0x55, 0xaa, 0x90, 0x9a, 0xef, 0xf3, 0x15, 0x52, 0x05, 0x0b, 0x22, 0x01, 0x9e, 0x5a, - 0x39, 0xb8, 0x03, 0xb1, 0xdf, 0x0e, 0xd0, 0xee, 0xf6, 0xdb, 0xe5, 0x8d, 0x2f, 0x04, 0x44, 0x54, - 0x99, 0x0d, 0x91, 0x07, 0x2a, 0xb5, 0x11, 0x1b, 0x7c, 0x6c, 0x6c, 0x1d, 0x05, 0x10, 0x62, 0x37, - 0xa1, 0xd1, 0x66, 0x3c, 0xc1, 0xf1, 0xba, 0x2f, 0xfb, 0xc4, 0xaf, 0x3a, 0xf0, 0xd1, 0xe9, 0xa9, - 0xaf, 0xfe, 0xd5, 0x69, 0xdf, 0xdb, 0xdb, 0x03, 0x76, 0x8d, 0xe3, 0x24, 0xb9, 0x44, 0xb5, 0x0e, - 0x3e, 0x83, 0x9d, 0xb3, 0xbe, 0x59, 0xe1, 0xd0, 0xb5, 0x23, 0xbf, 0x61, 0x74, 0xde, 0xea, 0x5f, - 0xad, 0xed, 0xcf, 0x20, 0x75, 0x23, 0x0a, 0x1e, 0xef, 0x3d, 0x90, 0x67, 0xd9, 0x28, 0x83, 0x69, - 0x68, 0x91, 0x4f, 0xde, 0xd5, 0xbe, 0xe8, 0x26, 0x9d, 0xd4, 0x21, 0x9f, 0x7a, 0xb2, 0xe9, 0xb8, - 0x87, 0xfb, 0x02, 0x98, 0xdf, 0xdf, 0x97, 0x8c, 0x78, 0xff, 0x0a, 0xc7, 0xe2, 0x42, 0x96, 0x0d, - 0x5b, 0xd8, 0x09, 0x06, 0x43, 0x9a, 0x80, 0xc5, 0xa8, 0xe8, 0x52, 0x21, 0x01, 0x25, 0x12, 0x0d, - 0xc6, 0x0d, 0x44, 0xdf, 0x6c, 0x6e, 0x5a, 0xa3, 0x47, 0x59, 0x85, 0xc7, 0xc3, 0xd5, 0x7c, 0x7b, - 0x3c, 0xe8, 0x36, 0x7b, 0x10, 0x80, 0x0c, 0x37, 0x84, 0x78, 0x50, 0x11, 0xe2, 0x2d, 0xb2, 0x0a, - 0x92, 0x7c, 0xd4, 0x65, 0xb8, 0xef, 0xd6, 0x4e, 0x6e, 0xef, 0xee, 0xee, 0xea, 0x83, 0x9b, 0x16, - 0x4c, 0x5a, 0x21, 0xd8, 0xb8, 0x36, 0x1a, 0x07, 0x2f, 0x8d, 0x10, 0xd2, 0x07, 0x41, 0x0d, 0xd4, - 0xc7, 0x1c, 0x2a, 0x68, 0x4d, 0x65, 0xf0, 0x88, 0x82, 0x80, 0x50, 0x13, 0xd5, 0x79, 0x63, 0x68, - 0x61, 0xfc, 0x87, 0xef, 0x7f, 0xbc, 0xb8, 0x70, 0x7f, 0xa6, 0xa3, 0xef, 0x5e, 0xff, 0xa8, 0xfb, - 0xad, 0x95, 0xb2, 0x60, 0x3e, 0x75, 0x08, 0x13, 0x10, 0x77, 0xc6, 0xd0, 0xde, 0xf1, 0x1c, 0x92, - 0xcc, 0xa7, 0x04, 0x1a, 0xeb, 0x1a, 0x68, 0x32, 0x16, 0xb0, 0x5e, 0x19, 0xb2, 0x0b, 0xc9, 0xd4, - 0x39, 0x2a, 0xe4, 0x73, 0x9c, 0x62, 0x79, 0x2d, 0x6f, 0xce, 0xd1, 0xd9, 0xa0, 0xae, 0xda, 0x8e, - 0x95, 0x1b, 0xf8, 0x02, 0x9d, 0xf7, 0xe0, 0x37, 0xe6, 0xa0, 0xcb, 0xf1, 0x35, 0x3d, 0x97, 0xef, - 0x2c, 0xf0, 0xf4, 0xb9, 0x82, 0xe6, 0x9a, 0xe8, 0xf4, 0x9c, 0x23, 0xcf, 0xb3, 0x6d, 0x37, 0xf7, - 0x8a, 0x08, 0x5b, 0x6a, 0x3f, 0x57, 0x02, 0x98, 0xfd, 0x23, 0x15, 0x56, 0xbb, 0xf6, 0x6d, 0x51, - 0xca, 0xce, 0x16, 0xe5, 0xde, 0xdf, 0xd2, 0xdf, 0x69, 0x37, 0xa7, 0xfb, 0xed, 0xdd, 0xa0, 0x05, - 0x8a, 0x52, 0x60, 0x1b, 0xff, 0xf2, 0x5c, 0xe1, 0x8a, 0xf4, 0x6b, 0x5f, 0x57, 0x90, 0x7f, 0x89, - 0xcf, 0xb6, 0xbb, 0x71, 0xcd, 0x52, 0x14, 0x9b, 0x12, 0xba, 0x45, 0x4e, 0x56, 0x68, 0x06, 0x92, - 0xe0, 0x80, 0xef, 0x6f, 0xa1, 0xfe, 0xa0, 0x07, 0xd6, 0xc7, 0x89, 0xdb, 0x47, 0x28, 0xca, 0xd4, - 0x10, 0xd2, 0x3e, 0x44, 0x52, 0x23, 0x47, 0xa0, 0x24, 0x6f, 0x91, 0x49, 0x24, 0x67, 0x33, 0xf3, - 0x31, 0x0a, 0xd7, 0x30, 0x7d, 0xe2, 0x21, 0xd3, 0x27, 0xaa, 0xa6, 0x2f, 0xc5, 0xf1, 0xba, 0x4f, - 0xba, 0xec, 0xdc, 0x49, 0x69, 0xb6, 0xce, 0xa7, 0x20, 0x82, 0xdf, 0x51, 0x0e, 0x49, 0x7f, 0xba, - 0xb4, 0x7a, 0x5d, 0xf0, 0xb0, 0x59, 0xe9, 0xfd, 0x1b, 0x9a, 0x4d, 0x5f, 0x90, 0x2c, 0x0e, 0x41, - 0x7a, 0x28, 0xe6, 0x5b, 0xd6, 0x4a, 0xe6, 0x80, 0xca, 0x45, 0xa3, 0x06, 0xf0, 0x39, 0x09, 0x63, - 0xb1, 0x84, 0x04, 0x0a, 0x74, 0x40, 0xd4, 0xa6, 0x4a, 0xf5, 0x1f, 0x8a, 0xaa, 0x38, 0x26, 0x1d, - 0xbe, 0x9f, 0x82, 0xa9, 0xec, 0x32, 0x27, 0x96, 0xcd, 0x1e, 0x36, 0x89, 0x6c, 0xf6, 0xaf, 0x24, - 0x06, 0xb8, 0xd9, 0xe8, 0xd6, 0x2d, 0x70, 0xd5, 0x5b, 0x0d, 0xd9, 0xe0, 0x5f, 0x64, 0x20, 0x07, - 0xff, 0x32, 0x03, 0xd9, 0xe2, 0xdb, 0xec, 0x55, 0x61, 0x06, 0x54, 0x60, 0x54, 0x89, 0xbe, 0x54, - 0xdf, 0xde, 0x5e, 0x31, 0x46, 0x07, 0x4b, 0xd5, 0x41, 0xaa, 0xf3, 0xee, 0xae, 0x6c, 0x50, 0x2e, - 0x21, 0x15, 0xb7, 0x9a, 0xa0, 0x9c, 0x96, 0x89, 0x79, 0x9c, 0x76, 0x38, 0x44, 0x81, 0xb9, 0x09, - 0x7a, 0x8f, 0xf2, 0xc1, 0x7f, 0x44, 0x10, 0x6f, 0x9e, 0xa9, 0x1d, 0x0e, 0x31, 0xac, 0x03, 0xac, - 0xa1, 0x97, 0x4d, 0x90, 0x4e, 0xab, 0xda, 0xff, 0xe9, 0xe6, 0xca, 0xbd, 0x8e, 0xb3, 0x18, 0x52, - 0xea, 0x20, 0xfb, 0x34, 0xd8, 0xbf, 0xe9, 0x50, 0x74, 0xda, 0xb2, 0xa1, 0xfc, 0xb7, 0x6a, 0x82, - 0x0f, 0xef, 0x79, 0xce, 0xd6, 0xb9, 0xad, 0x70, 0x67, 0x5a, 0xa0, 0x5d, 0x19, 0xe2, 0x97, 0xe4, - 0x56, 0x59, 0x61, 0xd3, 0xcc, 0xa1, 0x5f, 0x75, 0xfb, 0x47, 0x47, 0xce, 0xe6, 0x19, 0x16, 0xae, - 0xf7, 0xf4, 0x65, 0x8f, 0x0d, 0xc6, 0xec, 0xa6, 0xd3, 0x19, 0xfe, 0xff, 0x13, 0xd8, 0xb5, 0x62, - 0x4f, 0xca, 0x05, 0x91, 0x5a, 0x7a, 0xdb, 0x09, 0x5c, 0xaf, 0xe7, 0xd4, 0x7a, 0x97, 0xaa, 0xb7, - 0x90, 0x32, 0xd5, 0x50, 0xac, 0xd5, 0x56, 0xdc, 0x6e, 0x84, 0x00, 0x2a, 0xec, 0x7d, 0x28, 0x94, - 0x6d, 0x44, 0x9c, 0xfd, 0x4d, 0x70, 0xd9, 0x03, 0x77, 0x90, 0xb4, 0xc6, 0x91, 0xfd, 0x7d, 0x8e, - 0x21, 0x23, 0x58, 0xed, 0xc3, 0x21, 0x8a, 0xd9, 0xc3, 0x11, 0xef, 0x32, 0x80, 0xbc, 0x79, 0xf9, - 0xac, 0xe7, 0x0d, 0x97, 0x9d, 0x8e, 0x14, 0xcd, 0x5b, 0xec, 0xb9, 0x7d, 0xd6, 0x1f, 0xde, 0x42, - 0x47, 0xf6, 0x29, 0x46, 0xa1, 0x8a, 0x95, 0x6c, 0xc5, 0xf7, 0xc7, 0x86, 0xb1, 0x8e, 0x08, 0xe3, - 0x22, 0x36, 0x8c, 0xef, 0x89, 0x0d, 0x6f, 0xf7, 0x79, 0x27, 0x71, 0x96, 0xfb, 0x1c, 0x23, 0x42, - 0xbe, 0x2d, 0x22, 0x8c, 0x21, 0x22, 0x94, 0xd9, 0xa5, 0xca, 0x2a, 0xff, 0xc4, 0xf4, 0x12, 0x99, - 0x1f, 0x05, 0x11, 0x0f, 0x17, 0x58, 0xa5, 0x75, 0x6e, 0xb2, 0x3c, 0xa5, 0x4c, 0x29, 0x65, 0xe7, - 0xb2, 0x58, 0xf2, 0x36, 0x0d, 0x3c, 0x87, 0xa5, 0xef, 0xc6, 0x97, 0xa5, 0xce, 0x0c, 0xd2, 0x0c, - 0x9d, 0x57, 0xbe, 0x82, 0x9c, 0xcb, 0x74, 0xb0, 0xa2, 0xfc, 0x1d, 0x66, 0x59, 0xa0, 0x3f, 0x11, - 0x18, 0xb5, 0x92, 0x44, 0x05, 0xab, 0xb5, 0xb3, 0x88, 0x61, 0xe4, 0x39, 0x9f, 0xcd, 0x08, 0x8b, - 0xb2, 0xe0, 0xd3, 0x95, 0x33, 0x83, 0x34, 0x2e, 0xa9, 0x25, 0xaa, 0x68, 0x84, 0x28, 0x5a, 0x3e, - 0x99, 0x82, 0x45, 0x28, 0x11, 0x17, 0x09, 0x45, 0xc4, 0x5e, 0x2c, 0xe5, 0xab, 0x8d, 0x18, 0x41, - 0xf2, 0x58, 0x1e, 0xa9, 0xa2, 0x3a, 0x3d, 0xb8, 0x32, 0x70, 0x0a, 0x0b, 0x26, 0xf4, 0x27, 0xd4, - 0xf8, 0x38, 0x01, 0x87, 0x74, 0x0e, 0x1d, 0x13, 0x6a, 0xd5, 0xf2, 0xd4, 0xf6, 0x51, 0x66, 0x09, - 0x0e, 0x67, 0xaf, 0x39, 0x89, 0x60, 0xde, 0x8c, 0x7c, 0xa1, 0x3f, 0x5f, 0xc2, 0x06, 0xc6, 0x2c, - 0x16, 0x9a, 0x19, 0xf0, 0x14, 0xb5, 0xa4, 0x9b, 0xd7, 0x05, 0xbc, 0x50, 0xc1, 0x73, 0xda, 0xd7, - 0x71, 0x76, 0x7a, 0xa5, 0x95, 0xf2, 0x05, 0x30, 0x55, 0xbf, 0xc9, 0x6c, 0x45, 0xa3, 0xb6, 0xc5, - 0x80, 0xa9, 0x10, 0xf3, 0xcc, 0x87, 0xd4, 0xf2, 0x26, 0x66, 0x11, 0xbf, 0x01, 0xf4, 0x43, 0xa5, - 0x86, 0x73, 0x50, 0x48, 0x0e, 0x46, 0xeb, 0xcc, 0xbc, 0xc9, 0x32, 0xd3, 0x87, 0x4f, 0xd3, 0xee, - 0x98, 0x7e, 0xb7, 0x6b, 0x76, 0xea, 0x43, 0xa7, 0x3c, 0x13, 0x0c, 0x14, 0xb3, 0x63, 0x76, 0x61, - 0xd4, 0xb0, 0xc2, 0x09, 0xb5, 0xba, 0xb1, 0x48, 0x13, 0x19, 0xa6, 0xde, 0x28, 0xaf, 0x0f, 0x41, - 0xef, 0x25, 0x0f, 0xbf, 0x50, 0xe4, 0x2d, 0xf4, 0xb9, 0xa3, 0x98, 0x91, 0x74, 0xf9, 0x61, 0x39, - 0xa7, 0x81, 0x49, 0x30, 0xa3, 0x1d, 0x2d, 0xc6, 0x63, 0x8c, 0x6c, 0xe1, 0x1d, 0x67, 0x33, 0x9a, - 0x65, 0x64, 0x42, 0x03, 0xcc, 0xb3, 0x81, 0x08, 0xea, 0x46, 0x44, 0x10, 0x23, 0x86, 0x20, 0x83, - 0xb0, 0x90, 0x82, 0xbd, 0x97, 0x49, 0xf0, 0x0b, 0x39, 0xc5, 0xce, 0xab, 0x13, 0x85, 0x34, 0x39, - 0x6a, 0x3c, 0xc6, 0xf0, 0x65, 0x09, 0xb3, 0xa5, 0xa1, 0x5b, 0x49, 0x55, 0xfe, 0x10, 0xcf, 0x28, - 0x18, 0x33, 0xe9, 0x8d, 0x74, 0x5b, 0x99, 0x30, 0xfd, 0xa0, 0x84, 0x58, 0xfa, 0x34, 0x5d, 0x0f, - 0x02, 0xaf, 0x26, 0x4b, 0x33, 0xa5, 0x48, 0x51, 0x1a, 0xf4, 0xc0, 0x54, 0xd5, 0xa0, 0xf0, 0x20, - 0xb1, 0xcd, 0xa1, 0x32, 0x45, 0x52, 0x28, 0x21, 0xec, 0x59, 0xb1, 0xe0, 0x87, 0xcb, 0x77, 0x6f, - 0xb1, 0xee, 0x90, 0x51, 0x4d, 0x85, 0xbd, 0x06, 0x1e, 0x86, 0x53, 0x08, 0x40, 0x56, 0x4c, 0x97, - 0x5c, 0x34, 0xf7, 0x68, 0x9a, 0xa2, 0x7f, 0xd0, 0xfc, 0x43, 0x64, 0x0c, 0xd9, 0x65, 0x3a, 0x22, - 0xa7, 0x68, 0xcd, 0x80, 0xa6, 0x8a, 0xa2, 0x9c, 0x49, 0x4e, 0xb8, 0x71, 0xa6, 0xca, 0x02, 0xcc, - 0xbe, 0xbb, 0x83, 0x7d, 0x0c, 0x81, 0x7f, 0x1f, 0xe7, 0x30, 0x85, 0x42, 0x8f, 0x5f, 0x1f, 0x72, - 0x66, 0x69, 0xdd, 0xa9, 0xa6, 0x16, 0xb0, 0x68, 0x4a, 0x43, 0x0a, 0x79, 0x80, 0x31, 0xd1, 0xe0, - 0xbf, 0xff, 0xf0, 0xe6, 0xb5, 0xa9, 0x34, 0xcd, 0x76, 0xca, 0x9d, 0x96, 0xc4, 0x5c, 0xbf, 0xa8, - 0x69, 0xae, 0x57, 0xd5, 0xd5, 0xc2, 0x07, 0x8f, 0x93, 0x45, 0x36, 0xfd, 0xf8, 0xaa, 0xf4, 0x0a, - 0x2c, 0x93, 0x5f, 0x41, 0xe1, 0x02, 0xe9, 0xf5, 0xd1, 0xd3, 0x5c, 0x13, 0x2c, 0xd4, 0xca, 0x05, - 0x4c, 0x87, 0xd9, 0xf6, 0x7a, 0xad, 0x24, 0x23, 0x4c, 0x78, 0xa6, 0xe4, 0xa2, 0x8e, 0xbb, 0x7c, - 0x63, 0x00, 0x58, 0xa0, 0x02, 0x78, 0x2f, 0x85, 0xef, 0xf7, 0x6d, 0x60, 0x6a, 0x9b, 0x0e, 0x44, - 0x38, 0xb9, 0x6c, 0xa8, 0x8d, 0x70, 0x7a, 0x98, 0xf8, 0xe4, 0x76, 0x4d, 0x63, 0xc1, 0xe7, 0x94, - 0xb5, 0x22, 0x81, 0x2f, 0x74, 0x76, 0xf6, 0x8f, 0xec, 0x35, 0x9d, 0x90, 0x04, 0xf8, 0x51, 0xca, - 0x5f, 0x2b, 0x3c, 0xa4, 0x0e, 0x83, 0xc0, 0x16, 0x62, 0x7b, 0x94, 0xf1, 0x9d, 0xfa, 0x2e, 0x81, - 0x7c, 0xc0, 0x82, 0xb2, 0xc6, 0x66, 0x51, 0x15, 0x97, 0x95, 0x8d, 0x2a, 0x04, 0x09, 0x15, 0x13, - 0x6b, 0xd7, 0x4d, 0xae, 0x55, 0x7d, 0xee, 0xf4, 0xec, 0xbf, 0x34, 0x6c, 0xb0, 0x2d, 0x23, 0x33, - 0xae, 0x04, 0x16, 0x65, 0x17, 0xd1, 0x75, 0x22, 0x59, 0x59, 0x93, 0xc7, 0x71, 0xaa, 0x4e, 0x17, - 0xb9, 0x31, 0x03, 0xbc, 0x3f, 0x80, 0x67, 0x0d, 0xa4, 0xd1, 0x22, 0x73, 0x0b, 0x4b, 0x65, 0xb6, - 0x63, 0xce, 0xe4, 0x21, 0x1f, 0x58, 0x13, 0xe6, 0x0a, 0x50, 0x66, 0x70, 0xc6, 0x68, 0xba, 0x2d, - 0x2e, 0x41, 0x44, 0xf1, 0xb5, 0x09, 0x39, 0x63, 0x0c, 0x39, 0x15, 0x7c, 0x38, 0xdc, 0x8d, 0x52, - 0x32, 0x99, 0xe0, 0x41, 0x06, 0x2e, 0xc3, 0xc1, 0xab, 0x92, 0x2c, 0x7b, 0x0b, 0x76, 0x24, 0x30, - 0x47, 0xfc, 0xd6, 0x2c, 0x95, 0xf5, 0xa6, 0x7d, 0x59, 0xd2, 0xdb, 0xb6, 0x2c, 0x77, 0xc9, 0x1c, - 0x38, 0x1d, 0xe9, 0xf2, 0x9d, 0x8d, 0xdb, 0xb6, 0x98, 0xbf, 0xe0, 0xb7, 0x16, 0xd7, 0x71, 0x3d, - 0xd6, 0xd0, 0xe4, 0x91, 0x49, 0x0d, 0xb5, 0xa1, 0xaa, 0x44, 0xe1, 0x1a, 0x73, 0x13, 0x33, 0x88, - 0x32, 0x20, 0x80, 0x4c, 0x2b, 0x1d, 0x60, 0x14, 0x34, 0x29, 0x0a, 0x56, 0x85, 0x98, 0x12, 0xf6, - 0xa5, 0xc3, 0x19, 0x45, 0x05, 0x51, 0x93, 0xf0, 0x78, 0xd4, 0xc4, 0x6a, 0x95, 0x7c, 0x4a, 0x61, - 0x41, 0x52, 0x81, 0x9f, 0xd6, 0x49, 0x21, 0xf5, 0x0e, 0x39, 0x11, 0xcf, 0x0c, 0x61, 0xed, 0x26, - 0x65, 0xd4, 0x65, 0xa0, 0x21, 0x88, 0x83, 0x2b, 0xf8, 0x6b, 0xb0, 0xce, 0x09, 0x7d, 0xcd, 0x6f, - 0x68, 0x7a, 0x4e, 0xc0, 0xde, 0xd8, 0x79, 0xd9, 0x4d, 0xa1, 0x22, 0xa9, 0xcd, 0xb1, 0x17, 0x5b, - 0x59, 0x4b, 0x21, 0x66, 0x48, 0x33, 0x21, 0x57, 0x2f, 0x37, 0xab, 0x6c, 0xd9, 0xa0, 0xa2, 0x8e, - 0x1f, 0x37, 0x5c, 0x96, 0x05, 0xc2, 0x94, 0xdb, 0x2b, 0xcd, 0xb8, 0x39, 0x32, 0xad, 0xca, 0xe4, - 0xd2, 0x3e, 0x43, 0xbe, 0xc7, 0xd4, 0x4e, 0x6b, 0xc4, 0x98, 0x7b, 0x8d, 0x2e, 0x1f, 0x65, 0xbe, - 0x84, 0xa2, 0xee, 0x6d, 0x6e, 0xbc, 0xc4, 0xe3, 0x91, 0x4b, 0x29, 0x44, 0xcb, 0x8b, 0xd1, 0xb6, - 0x0a, 0xaf, 0x76, 0xb4, 0x0d, 0xed, 0x56, 0xf3, 0x8d, 0xe2, 0xbd, 0x14, 0xba, 0x4b, 0xd9, 0x59, - 0xae, 0xff, 0xb6, 0xa3, 0x28, 0x59, 0xa5, 0x6b, 0xd5, 0x1b, 0x81, 0x94, 0x25, 0xc4, 0x42, 0x16, - 0x49, 0x5d, 0x16, 0x91, 0x39, 0x58, 0xac, 0x2e, 0x71, 0xaa, 0xe8, 0x2b, 0x31, 0xc7, 0xfc, 0xef, - 0xff, 0xfa, 0xcf, 0xff, 0x30, 0x9d, 0xea, 0xf4, 0x7c, 0x5c, 0x5d, 0xa2, 0x49, 0x21, 0xd1, 0x79, - 0xe5, 0xbc, 0x2c, 0xd2, 0x5f, 0x55, 0xf0, 0xde, 0x48, 0xa5, 0x3e, 0x5c, 0xdf, 0x50, 0x68, 0x91, - 0x6d, 0x1b, 0xb3, 0x15, 0xad, 0x02, 0x48, 0x05, 0x31, 0xe8, 0x88, 0xde, 0xb1, 0x64, 0x19, 0xa0, - 0x6c, 0x7d, 0x25, 0xa2, 0x25, 0xd9, 0xe2, 0x6d, 0xb2, 0x45, 0x36, 0x9d, 0x1d, 0xcd, 0xd4, 0x61, - 0x41, 0x1b, 0x86, 0x33, 0x9b, 0x8d, 0x3b, 0xe8, 0x05, 0x81, 0x00, 0x38, 0xdb, 0x05, 0xcf, 0x31, - 0x47, 0x0b, 0x21, 0x38, 0x33, 0x77, 0xf4, 0xa4, 0xbd, 0x3d, 0x5e, 0x1b, 0x52, 0x16, 0x4e, 0x22, - 0xe5, 0x12, 0x04, 0xea, 0xb9, 0x10, 0x69, 0x0c, 0x53, 0x29, 0xd8, 0xc0, 0x94, 0x8e, 0x4d, 0xa7, - 0x40, 0xaf, 0xfe, 0x5a, 0xd1, 0x65, 0x3a, 0xe6, 0xaf, 0xa3, 0x84, 0xb0, 0x2f, 0x58, 0xf6, 0x6f, - 0x52, 0xe5, 0x48, 0x4c, 0xcf, 0x2c, 0x5a, 0xde, 0xe4, 0x8a, 0x78, 0xda, 0xfe, 0xe6, 0x65, 0xc7, - 0xdc, 0x35, 0x3b, 0x02, 0xd2, 0xa6, 0x5c, 0xb1, 0xfe, 0x4c, 0x3a, 0x1d, 0x75, 0xaa, 0xe4, 0xa8, - 0x98, 0xdd, 0x51, 0x47, 0x4f, 0x43, 0xd0, 0x37, 0x1a, 0x7e, 0x41, 0xeb, 0x9f, 0x73, 0x17, 0x90, - 0x95, 0x8b, 0xc9, 0xcb, 0x0e, 0x92, 0x2a, 0xec, 0xd5, 0x2f, 0x31, 0x10, 0x8a, 0x33, 0xb4, 0x7e, - 0x91, 0x12, 0x85, 0xb2, 0xbd, 0x90, 0xa0, 0xe4, 0x8b, 0x82, 0x65, 0x8f, 0xd7, 0x6f, 0x05, 0xbf, - 0x63, 0xd6, 0x14, 0xfc, 0x5c, 0xa3, 0x57, 0x16, 0x24, 0xdb, 0xcf, 0x89, 0xfe, 0x3a, 0x9c, 0xa9, - 0xc2, 0xaf, 0x61, 0x78, 0xef, 0x15, 0xea, 0x76, 0x5c, 0xf5, 0x7b, 0x89, 0xea, 0x0b, 0x89, 0x53, - 0x0d, 0xd1, 0x54, 0x12, 0xf3, 0x58, 0x3c, 0x67, 0xe4, 0x36, 0xc0, 0x12, 0x44, 0x13, 0xe3, 0x3f, - 0xc2, 0x48, 0x8d, 0x90, 0xa3, 0xe8, 0xc4, 0x48, 0x46, 0x09, 0xdb, 0xaf, 0x29, 0x84, 0x07, 0x25, - 0x99, 0xcd, 0x07, 0x6a, 0xd1, 0x05, 0x92, 0x5e, 0x21, 0x9e, 0x15, 0x1d, 0x26, 0x65, 0x63, 0x48, - 0x36, 0x82, 0x8b, 0xb0, 0x4a, 0xc2, 0x40, 0x5a, 0x14, 0xdc, 0xf6, 0x91, 0x96, 0xbd, 0xbd, 0xba, - 0xc4, 0xe6, 0x4c, 0xd1, 0x40, 0xef, 0xf7, 0x40, 0xa8, 0x2e, 0xf7, 0xb0, 0xb0, 0x3c, 0x59, 0x6d, - 0xf2, 0x9f, 0x29, 0x8c, 0x4d, 0x76, 0x98, 0x6c, 0x31, 0x1b, 0x41, 0xda, 0x14, 0x14, 0xda, 0x67, - 0xd5, 0xed, 0x04, 0xde, 0x9d, 0x01, 0x2b, 0x71, 0x28, 0x71, 0x85, 0x0d, 0x56, 0xe1, 0x78, 0x70, - 0x68, 0xdb, 0x5f, 0x6d, 0x1c, 0x1c, 0x52, 0xd7, 0x72, 0xb0, 0xdf, 0x49, 0xbd, 0x0f, 0x32, 0x83, - 0xb4, 0xde, 0x97, 0x16, 0xe7, 0xa3, 0xb0, 0x11, 0x55, 0x17, 0xc0, 0x35, 0x3e, 0xb2, 0x2c, 0x22, - 0x33, 0x88, 0xd3, 0x00, 0x6b, 0x24, 0xd5, 0x64, 0x62, 0x0e, 0x39, 0x84, 0x56, 0x98, 0xb6, 0x2c, - 0xe3, 0xf4, 0x64, 0x4b, 0x9e, 0x01, 0x3b, 0x83, 0xb9, 0x53, 0x72, 0x66, 0x41, 0x50, 0x5a, 0x38, - 0x55, 0x19, 0xa0, 0x3a, 0xba, 0xa7, 0x24, 0x4c, 0x10, 0xc3, 0xe7, 0x9d, 0x32, 0xca, 0xc3, 0x1d, - 0x93, 0x65, 0x63, 0x93, 0xa9, 0x29, 0x35, 0x1b, 0xa7, 0xc6, 0xd6, 0x52, 0x24, 0xdd, 0x8b, 0x2b, - 0x3b, 0x02, 0x58, 0x59, 0x79, 0xc9, 0xf3, 0x6e, 0x80, 0xb5, 0xce, 0x4b, 0x99, 0x89, 0xc1, 0x31, - 0x7a, 0xca, 0x78, 0x2a, 0x2c, 0x2b, 0xcf, 0x19, 0xe4, 0xe9, 0x74, 0x5e, 0xa8, 0xa0, 0x2e, 0x3f, - 0x60, 0x2e, 0x5f, 0x23, 0x41, 0xb6, 0x5d, 0xcb, 0x26, 0x92, 0x52, 0x0d, 0xa0, 0x8d, 0x09, 0x98, - 0x66, 0xb4, 0x32, 0xcd, 0x53, 0xa1, 0x08, 0x0d, 0x56, 0x6b, 0xf0, 0x42, 0x72, 0x48, 0x50, 0x19, - 0x88, 0xe9, 0xcc, 0x82, 0x66, 0xe2, 0x87, 0x0c, 0xf1, 0xb1, 0x1b, 0xc5, 0x98, 0xca, 0x09, 0x5d, - 0x39, 0xfb, 0xa4, 0xb6, 0xca, 0xdf, 0x61, 0xbf, 0x6a, 0x05, 0xc6, 0xd2, 0x28, 0xbc, 0xec, 0x11, - 0xcb, 0x88, 0x56, 0x1a, 0x07, 0xaa, 0xcd, 0x21, 0xb3, 0x8b, 0x47, 0xb9, 0x25, 0x90, 0xcf, 0x57, - 0x9f, 0x21, 0x2a, 0xc0, 0xdb, 0x39, 0x96, 0x1c, 0x0c, 0x9b, 0x7b, 0xef, 0xce, 0xd2, 0x47, 0xee, - 0x6c, 0x81, 0x41, 0xf9, 0xb6, 0xc0, 0xe3, 0x37, 0x1b, 0xd1, 0xb6, 0x9d, 0x36, 0xee, 0xab, 0x58, - 0x22, 0xdf, 0x6a, 0x86, 0x55, 0xeb, 0x77, 0xa3, 0xdf, 0x20, 0x7a, 0x74, 0xbf, 0xd0, 0x65, 0x86, - 0xca, 0x66, 0x4a, 0xb6, 0xa2, 0x5d, 0x02, 0x62, 0xa4, 0x99, 0xb4, 0xcf, 0x34, 0xa3, 0x7e, 0x22, - 0x29, 0x82, 0xd7, 0xbd, 0x90, 0x37, 0xd2, 0x4f, 0xec, 0xaa, 0x96, 0x3c, 0x57, 0x79, 0x0a, 0xd9, - 0x33, 0xe3, 0x02, 0xd6, 0x83, 0x3c, 0xd7, 0x88, 0x99, 0x11, 0xf1, 0x99, 0x99, 0xcf, 0xb3, 0x1b, - 0xdb, 0x95, 0xc3, 0x97, 0x29, 0xa9, 0xca, 0x1b, 0x38, 0x66, 0x4b, 0xb2, 0xdc, 0x3e, 0x25, 0xd9, - 0xbb, 0x1b, 0xf6, 0x3e, 0x85, 0xe4, 0x36, 0x15, 0xcb, 0x22, 0x33, 0xb4, 0x9b, 0xe7, 0x51, 0x65, - 0x04, 0xd4, 0x28, 0x84, 0xe7, 0xca, 0x26, 0x18, 0x2b, 0x65, 0x33, 0x1f, 0x4a, 0x5b, 0x36, 0x16, - 0x1a, 0x47, 0xca, 0x80, 0xab, 0xee, 0x31, 0x73, 0x90, 0xaa, 0xa2, 0x23, 0x8b, 0x2e, 0x43, 0x16, - 0x6c, 0x02, 0xec, 0xfb, 0x17, 0xb8, 0xbb, 0x7b, 0x64, 0x02, 0x75, 0x46, 0xdd, 0xfc, 0xe6, 0xcc, - 0x65, 0x3c, 0x4a, 0x62, 0x36, 0x29, 0x65, 0x44, 0x3e, 0xe6, 0x54, 0x0f, 0x43, 0xf0, 0x69, 0x59, - 0x90, 0x36, 0xd3, 0xd1, 0x1b, 0x36, 0x52, 0xb0, 0x9c, 0xae, 0x75, 0x2b, 0xdf, 0xf5, 0x4d, 0x58, - 0x53, 0x27, 0x76, 0x7c, 0x78, 0x0f, 0xf7, 0xf3, 0xb1, 0x92, 0xff, 0xfa, 0x01, 0x0b, 0xe2, 0xff, - 0x0b, 0x3c, 0xaa, 0x50, 0xac, 0xb3, 0x61, 0xee, 0x82, 0xfd, 0x48, 0x97, 0x2a, 0x5d, 0xc2, 0x2a, - 0x57, 0x41, 0x0b, 0x8a, 0xd8, 0x0e, 0xb1, 0x57, 0xca, 0xb1, 0x6f, 0xba, 0x55, 0x6c, 0xdc, 0x98, - 0x27, 0x95, 0x74, 0x48, 0xcf, 0x30, 0x82, 0xcf, 0x80, 0x2d, 0x2f, 0xe4, 0x51, 0xbb, 0x45, 0xf0, - 0x26, 0x4d, 0xdd, 0x25, 0xad, 0xcb, 0x51, 0x40, 0xc1, 0x85, 0x76, 0xde, 0xe6, 0xd9, 0xe1, 0x03, - 0x42, 0xad, 0x87, 0x49, 0xae, 0xaa, 0x36, 0x88, 0xb5, 0x0c, 0x1c, 0x1e, 0x4e, 0xc6, 0x55, 0xb6, - 0xe7, 0x0d, 0xcb, 0xd6, 0xde, 0x28, 0xc0, 0xc8, 0x1a, 0xe1, 0x2b, 0x26, 0xdd, 0x3b, 0xe0, 0x2b, - 0x0f, 0x32, 0x60, 0xcb, 0x82, 0x80, 0x48, 0x9f, 0x5e, 0xea, 0x0b, 0x12, 0xd8, 0xc7, 0x1d, 0x0f, - 0xbc, 0x70, 0xa7, 0xa3, 0xc2, 0x74, 0x84, 0x88, 0x90, 0xc1, 0x3b, 0xcc, 0x51, 0xab, 0x33, 0xf4, - 0xad, 0xba, 0x59, 0xd8, 0xf8, 0xa1, 0x4d, 0x73, 0x83, 0xe9, 0xd9, 0x5b, 0x90, 0xd0, 0x47, 0x29, - 0xb8, 0x13, 0x6a, 0x3a, 0xf0, 0x5a, 0x07, 0x30, 0x01, 0x01, 0x89, 0x45, 0x2c, 0x60, 0xf9, 0xaa, - 0x41, 0x64, 0x0a, 0x93, 0x76, 0xbe, 0xe6, 0x75, 0x13, 0x6d, 0x52, 0x4a, 0xe5, 0x0c, 0x08, 0xe5, - 0xc6, 0x31, 0x8b, 0xc0, 0xf2, 0x00, 0x84, 0xfb, 0x44, 0x59, 0x81, 0x00, 0x96, 0x13, 0x60, 0xba, - 0x7c, 0xb0, 0x75, 0xad, 0x6a, 0xc3, 0xcb, 0x48, 0x91, 0xa1, 0xde, 0xae, 0x36, 0x79, 0x15, 0xd6, - 0x5c, 0x1c, 0x56, 0x1a, 0x28, 0x4f, 0x0b, 0xa3, 0x4a, 0x65, 0x44, 0x9d, 0x14, 0x55, 0xac, 0xb9, - 0x80, 0xd0, 0x92, 0x81, 0xa5, 0x04, 0x97, 0x8a, 0xf2, 0xc9, 0x35, 0xc8, 0x21, 0x0d, 0xca, 0xf9, - 0x8a, 0x1a, 0x23, 0x2d, 0x14, 0xa8, 0x4b, 0x11, 0x89, 0x95, 0xba, 0xcf, 0x3e, 0xaf, 0x4c, 0xc9, - 0x3d, 0xd3, 0xff, 0x66, 0x95, 0xae, 0xd7, 0x9f, 0xfd, 0x4d, 0x87, 0x89, 0x3d, 0xe6, 0xfa, 0xb3, - 0x53, 0x33, 0xc1, 0x98, 0xde, 0x42, 0x28, 0x56, 0x2e, 0x1c, 0x63, 0xe9, 0xa7, 0x5e, 0x97, 0x62, - 0xc0, 0xf2, 0x46, 0x19, 0x2c, 0x41, 0x89, 0xa8, 0xde, 0x6d, 0xc3, 0xe0, 0x1d, 0x1c, 0x9d, 0x32, - 0x3a, 0x5b, 0x0c, 0x8b, 0xc2, 0x08, 0x0c, 0xef, 0x0e, 0xb7, 0x65, 0x4d, 0xe7, 0x51, 0x02, 0x5d, - 0x15, 0x4a, 0x1d, 0xb5, 0x6f, 0x32, 0x66, 0xf2, 0x18, 0x08, 0x8d, 0x2a, 0x46, 0x7b, 0x12, 0xac, - 0x81, 0xdb, 0xc3, 0x66, 0x2d, 0xe5, 0x81, 0x25, 0x36, 0x07, 0x00, 0xac, 0x34, 0x79, 0xb3, 0x87, - 0x85, 0x83, 0xc9, 0x93, 0xc7, 0x3a, 0x1d, 0xd5, 0xb2, 0x6c, 0x8e, 0x48, 0x2e, 0x63, 0x4a, 0xb0, - 0xa4, 0x6c, 0x2b, 0x09, 0x54, 0xaf, 0xa5, 0x9b, 0x96, 0x01, 0x33, 0xb5, 0x0b, 0xc8, 0xb0, 0x13, - 0x5a, 0x61, 0x8d, 0xdc, 0x9f, 0xe5, 0x8b, 0xb5, 0xee, 0x0a, 0x9e, 0x00, 0x98, 0x2d, 0x17, 0x91, - 0xca, 0xba, 0x21, 0xc7, 0x48, 0x6b, 0x84, 0x2d, 0x4c, 0x13, 0x36, 0xa7, 0x66, 0x20, 0x84, 0x81, - 0xea, 0xb7, 0x9d, 0x26, 0xf4, 0x71, 0xac, 0xf4, 0xf2, 0x1e, 0xe0, 0x72, 0x88, 0x04, 0x8e, 0x2d, - 0x04, 0x3e, 0xa6, 0x22, 0x9c, 0x3e, 0x67, 0xd1, 0xc5, 0x2d, 0x0d, 0x71, 0x7b, 0x3e, 0xe3, 0x61, - 0x92, 0xdf, 0xed, 0x7e, 0xb3, 0xda, 0x76, 0x42, 0xb4, 0xee, 0xe2, 0xdc, 0xcf, 0x39, 0x0c, 0xe6, - 0xd4, 0xe2, 0x5a, 0x79, 0xe2, 0x5f, 0x3e, 0x25, 0x01, 0x5b, 0x50, 0x22, 0x81, 0x02, 0x09, 0x4e, - 0xe5, 0x59, 0x5d, 0x79, 0xf0, 0xaa, 0x47, 0x17, 0x35, 0xbc, 0xca, 0xe7, 0xd3, 0x98, 0x06, 0x97, - 0xc2, 0xd3, 0xdc, 0xe4, 0xc0, 0xe2, 0xea, 0xa2, 0xcf, 0x8a, 0xdd, 0xdd, 0x59, 0x2c, 0x50, 0x47, - 0x19, 0xba, 0x3a, 0xac, 0x0e, 0x15, 0xb5, 0xc5, 0x90, 0x1b, 0xcb, 0x6c, 0x01, 0xc3, 0x50, 0x31, - 0x41, 0x64, 0xce, 0x44, 0xc0, 0xc1, 0xd9, 0x60, 0x94, 0x26, 0x82, 0x0d, 0x40, 0x8e, 0xa1, 0x9f, - 0x3d, 0xd4, 0x91, 0xba, 0x58, 0xe3, 0xe4, 0xd2, 0x91, 0x52, 0xf9, 0x48, 0xa0, 0xb7, 0x39, 0xb2, - 0xac, 0x46, 0xd6, 0x18, 0x2d, 0xff, 0xbe, 0x43, 0x8b, 0xa5, 0x0d, 0x4a, 0x03, 0x9a, 0x5b, 0x40, - 0xcf, 0xcf, 0xfb, 0x4a, 0x4b, 0x03, 0xea, 0xe5, 0xb3, 0xad, 0xd2, 0x19, 0x87, 0x65, 0x43, 0xe6, - 0x79, 0x03, 0xfe, 0xe2, 0x26, 0x73, 0xe5, 0x01, 0x8a, 0x55, 0x1c, 0x75, 0x54, 0x39, 0x8c, 0xf8, - 0x50, 0xcd, 0x42, 0x02, 0x3b, 0x09, 0x98, 0xad, 0x9d, 0x01, 0x1d, 0xe8, 0xea, 0x8e, 0x3e, 0xe8, - 0xca, 0x40, 0x6f, 0xd9, 0x24, 0x1e, 0x2f, 0x81, 0x94, 0x61, 0xed, 0x1e, 0x6f, 0x41, 0xa6, 0xcc, - 0x66, 0xf3, 0xab, 0x19, 0xa7, 0xbd, 0xc1, 0x21, 0x64, 0x79, 0x95, 0xb1, 0x82, 0x73, 0x63, 0x14, - 0x4f, 0xce, 0xce, 0xce, 0x4c, 0x79, 0x56, 0x98, 0x81, 0x89, 0xb3, 0x60, 0x9b, 0xfe, 0x0a, 0xb6, - 0xd3, 0xf4, 0x45, 0xba, 0xa0, 0xeb, 0xbf, 0x96, 0x42, 0xd8, 0x4d, 0x62, 0xac, 0xc4, 0x89, 0x61, - 0x1a, 0xc3, 0x3e, 0x61, 0x10, 0x7f, 0x15, 0x68, 0x4d, 0xab, 0x24, 0x30, 0xac, 0x3a, 0x79, 0x53, - 0xe2, 0x69, 0x9d, 0xaf, 0xd5, 0xf7, 0x3e, 0x08, 0x79, 0xe5, 0xe5, 0xeb, 0xd6, 0xcf, 0x6b, 0xc8, - 0x8f, 0x9f, 0x8d, 0x1c, 0x97, 0xbf, 0xe5, 0x79, 0x8f, 0x76, 0xfe, 0x7b, 0x9e, 0x44, 0x34, 0x75, - 0xe2, 0x4c, 0x56, 0x3c, 0x2b, 0xc2, 0x55, 0xa9, 0x84, 0x82, 0x70, 0xe5, 0x43, 0x74, 0x23, 0x9f, - 0x23, 0x0f, 0x04, 0x2b, 0xd0, 0xd0, 0x33, 0x3e, 0x60, 0x59, 0x9d, 0xfa, 0x1c, 0x7d, 0xcf, 0x28, - 0xbf, 0x1c, 0xd1, 0x78, 0xad, 0xaf, 0x18, 0x15, 0x57, 0x0a, 0xe9, 0xd6, 0xfb, 0xd8, 0x0d, 0xda, - 0xf2, 0xa3, 0x3c, 0xf9, 0xe2, 0x27, 0x75, 0xc7, 0xa8, 0xe6, 0xfa, 0xf2, 0xfb, 0xdf, 0xda, 0x10, - 0x49, 0xc7, 0xf2, 0x73, 0xf5, 0x26, 0x78, 0xf9, 0xd5, 0xf7, 0xea, 0xe2, 0x86, 0x9f, 0xdf, 0xf9, - 0x08, 0x1a, 0xe8, 0x4e, 0x60, 0x5f, 0x51, 0xdf, 0x40, 0xa0, 0xcf, 0x13, 0xfc, 0x35, 0x8b, 0xbc, - 0xfe, 0x61, 0xd7, 0xaf, 0x97, 0x3f, 0x7a, 0x9e, 0xa6, 0xba, 0x31, 0x7e, 0xfb, 0xa5, 0xf4, 0xfa, - 0x50, 0xbb, 0x85, 0x0b, 0xca, 0x3a, 0x14, 0x3f, 0x9f, 0x0a, 0xf2, 0x1d, 0x35, 0x4b, 0xbf, 0xb6, - 0xf2, 0xe6, 0xb7, 0x36, 0xc4, 0x1b, 0xf5, 0xdf, 0x5f, 0x99, 0x1b, 0x29, 0xcc, 0xf3, 0x8f, 0xe2, - 0x46, 0x84, 0xa9, 0x34, 0x19, 0x72, 0x51, 0x74, 0x8f, 0x60, 0x00, 0xe9, 0x99, 0x69, 0xfa, 0x05, - 0x86, 0x56, 0xf7, 0xd3, 0x2f, 0x3f, 0xff, 0x7a, 0xd5, 0x9d, 0x38, 0xa6, 0x21, 0xf3, 0x70, 0xdd, - 0x6b, 0xfd, 0xfb, 0x2f, 0x37, 0xab, 0xde, 0xda, 0xbe, 0xb3, 0x7e, 0xc9, 0x3a, 0xaa, 0x09, 0x63, - 0x68, 0x70, 0x8a, 0x22, 0xf4, 0x11, 0x36, 0x2c, 0x17, 0x1e, 0x69, 0x1c, 0xf1, 0x34, 0xf0, 0x32, - 0x0d, 0x2f, 0x4a, 0x17, 0x38, 0x2a, 0x57, 0x22, 0x56, 0xf9, 0xad, 0x92, 0x6a, 0x12, 0xf0, 0x3c, - 0x49, 0x2c, 0x73, 0xf3, 0x5b, 0x26, 0x43, 0xff, 0x24, 0x07, 0xf0, 0x00, 0x0e, 0x5c, 0x90, 0x70, - 0x5a, 0xae, 0x9d, 0xd8, 0xab, 0xb6, 0xba, 0x1b, 0xae, 0x8c, 0xbf, 0xe0, 0xc9, 0xef, 0x53, 0xbc, - 0x84, 0xe7, 0x77, 0xf0, 0xdc, 0x5e, 0xa5, 0xc3, 0xd1, 0xd0, 0x51, 0x1d, 0x7e, 0x81, 0x1d, 0xdb, - 0xc7, 0x27, 0x94, 0x5c, 0xd3, 0xf2, 0xf8, 0xd7, 0xd8, 0xb1, 0x6d, 0x3c, 0x9f, 0x6f, 0x86, 0xf2, - 0x39, 0xba, 0xac, 0xe2, 0x44, 0x93, 0x02, 0x23, 0x2a, 0xe6, 0xa2, 0xe8, 0x7d, 0x2c, 0x7b, 0x30, - 0xd0, 0xd9, 0xc2, 0x9b, 0xe2, 0xd8, 0x94, 0x4a, 0x37, 0xd9, 0x58, 0xe6, 0x3e, 0xfe, 0x65, 0x82, - 0xa4, 0xa2, 0x4c, 0x21, 0xfe, 0xfc, 0x53, 0x6c, 0xe7, 0xc8, 0xff, 0x25, 0x7e, 0x23, 0xfc, 0xa8, - 0x0a, 0x3d, 0x7a, 0xec, 0xde, 0xd4, 0x2e, 0x06, 0x15, 0x94, 0x23, 0xaf, 0xc4, 0x34, 0xce, 0xb4, - 0x4a, 0xea, 0xeb, 0xab, 0x81, 0xe9, 0xb9, 0x87, 0xa6, 0x53, 0x88, 0x7a, 0x80, 0x43, 0xf4, 0x75, - 0x8e, 0x0f, 0x52, 0x6b, 0xc1, 0x04, 0xd0, 0xf1, 0x18, 0xb6, 0x0e, 0x36, 0x0e, 0xcc, 0x6b, 0x14, - 0x98, 0x98, 0xa3, 0x99, 0xf5, 0x31, 0xb0, 0x25, 0x2f, 0xe1, 0x59, 0x1d, 0x90, 0x75, 0xf1, 0xca, - 0x05, 0x84, 0xc5, 0xb8, 0x5c, 0x11, 0x42, 0xd7, 0x6e, 0x8a, 0xd7, 0xd0, 0x53, 0xa3, 0x1d, 0x5a, - 0x83, 0x6b, 0xdf, 0xbf, 0x0e, 0xe8, 0x75, 0xcc, 0xf2, 0x85, 0xa2, 0x12, 0xf1, 0x2a, 0x93, 0x54, - 0xd0, 0x81, 0x5c, 0x25, 0x28, 0x35, 0xca, 0x7b, 0x40, 0xf7, 0x1f, 0x16, 0xd1, 0x72, 0x9d, 0x4e, - 0xa7, 0xaf, 0xa6, 0x14, 0x25, 0xa9, 0x25, 0x7f, 0x92, 0x85, 0xb8, 0x67, 0x89, 0xb6, 0xfd, 0x06, - 0x69, 0xc1, 0x79, 0x5b, 0xd8, 0x7d, 0x81, 0xa2, 0xa5, 0x98, 0x8d, 0xf7, 0x40, 0xaa, 0x7c, 0xc2, - 0xfe, 0x56, 0x98, 0xa8, 0x0e, 0xa5, 0x1b, 0x69, 0xaa, 0xaa, 0x02, 0x94, 0xbd, 0xa4, 0x63, 0xb2, - 0x48, 0xc0, 0x81, 0x38, 0xe5, 0x1f, 0xf3, 0xd4, 0xf4, 0xa2, 0x90, 0xbd, 0x5a, 0x4d, 0x53, 0x53, - 0xd1, 0x32, 0x4d, 0xaa, 0x47, 0xcb, 0xb4, 0x1a, 0xfd, 0x8d, 0x99, 0x7c, 0x5e, 0xd4, 0x74, 0x33, - 0xc1, 0xe7, 0x98, 0x4f, 0x90, 0x89, 0x0c, 0xf9, 0xf1, 0x0a, 0x5b, 0x2e, 0xe5, 0x3b, 0x81, 0x94, - 0xf3, 0x2d, 0x2c, 0x42, 0x8d, 0x2a, 0x86, 0x6e, 0x11, 0xcb, 0xa1, 0xba, 0x52, 0xce, 0x82, 0x62, - 0x20, 0xc6, 0xa7, 0x8c, 0xca, 0x14, 0x79, 0xc7, 0xb3, 0x87, 0x85, 0x89, 0x62, 0x4d, 0x26, 0x63, - 0xc2, 0xa3, 0x24, 0x16, 0xb4, 0x23, 0x4c, 0x16, 0x11, 0x98, 0xcb, 0xea, 0xe5, 0x19, 0xfb, 0xcc, - 0xaa, 0x85, 0xb7, 0x09, 0x30, 0xcc, 0xd4, 0xf3, 0xaa, 0xd5, 0x0d, 0xdb, 0x97, 0x9d, 0x25, 0x3f, - 0x5d, 0x29, 0x3d, 0x31, 0x35, 0x87, 0x81, 0xba, 0xe8, 0x02, 0x58, 0x89, 0x11, 0x45, 0x89, 0xba, - 0xe5, 0x07, 0x59, 0xf5, 0x64, 0x4a, 0xd6, 0x5e, 0x1d, 0xae, 0xcf, 0x49, 0xed, 0x95, 0x7c, 0x6f, - 0xd1, 0x0e, 0x73, 0x56, 0x33, 0x2a, 0xa6, 0x3c, 0xf2, 0x4d, 0x3c, 0xf0, 0x5d, 0xdb, 0xae, 0x98, - 0x52, 0x10, 0x5c, 0xf4, 0xaa, 0xfc, 0xcb, 0x99, 0x4a, 0xc3, 0x2d, 0x08, 0x65, 0x40, 0x69, 0xff, - 0x06, 0xa1, 0xb9, 0x61, 0x76, 0x20, 0xf7, 0xdc, 0x54, 0x7f, 0x81, 0x2a, 0x13, 0x0f, 0x6e, 0xf3, - 0x59, 0x2b, 0x6e, 0x09, 0xfc, 0x89, 0x18, 0x64, 0xa6, 0xf2, 0x26, 0x5a, 0x45, 0x17, 0xc8, 0xde, - 0x1e, 0x81, 0xd7, 0xea, 0x26, 0x96, 0x01, 0xeb, 0x09, 0x20, 0x08, 0x21, 0x56, 0xad, 0x8b, 0xf4, - 0x17, 0x90, 0xd2, 0x31, 0x92, 0x24, 0x4b, 0x95, 0x45, 0xac, 0xed, 0x96, 0x0b, 0xa6, 0xc6, 0x93, - 0x2c, 0x0d, 0x03, 0x7d, 0xe7, 0xb0, 0xdb, 0x0d, 0x23, 0xf6, 0x9b, 0x4c, 0x34, 0x16, 0xd1, 0x38, - 0x01, 0x7e, 0x62, 0x4d, 0xae, 0x4b, 0x7e, 0x23, 0xb7, 0xdd, 0x24, 0x1e, 0x65, 0x5d, 0x01, 0xd9, - 0x3e, 0x85, 0x8c, 0xb5, 0x9b, 0xf6, 0xfa, 0x27, 0xfa, 0x69, 0x16, 0x33, 0xe8, 0x31, 0x8d, 0x27, - 0x33, 0x72, 0x7b, 0x80, 0x77, 0x02, 0xcd, 0x93, 0xe3, 0x43, 0xcf, 0x33, 0x4f, 0x4b, 0x6b, 0x75, - 0xf5, 0x9f, 0x21, 0xc0, 0xc2, 0x92, 0xc1, 0x59, 0xc2, 0x09, 0x58, 0xd1, 0xfc, 0xbe, 0x25, 0xfe, - 0x85, 0x81, 0x69, 0xef, 0xf4, 0xc9, 0xb6, 0xbf, 0x4e, 0x00, 0xef, 0x8c, 0x67, 0x51, 0x7c, 0x6d, - 0x48, 0x25, 0x08, 0xcc, 0xc2, 0x6c, 0x98, 0xba, 0x1f, 0x7f, 0x12, 0x58, 0x16, 0x1e, 0x0f, 0x90, - 0xd1, 0x63, 0x2b, 0x32, 0x85, 0x88, 0xc0, 0xf8, 0x2d, 0xb3, 0x7a, 0xa6, 0xd1, 0x3e, 0xe9, 0xc9, - 0x7d, 0xb3, 0xfa, 0xdb, 0x66, 0x95, 0x27, 0x3d, 0xa9, 0xcf, 0x1a, 0x3c, 0x34, 0xab, 0xb6, 0x62, - 0x9e, 0x6c, 0x9e, 0xee, 0xed, 0x3e, 0xfd, 0xf6, 0xa9, 0x37, 0x6c, 0xa0, 0xb4, 0x89, 0x38, 0x73, - 0xc0, 0xb2, 0x07, 0x37, 0x41, 0x03, 0x44, 0xd6, 0xcb, 0x9d, 0xc0, 0xbf, 0x0b, 0xf1, 0x3f, 0x32, - 0x73, 0x31, 0x22, 0x2f, 0x42, 0x00, 0x00 + 0x92, 0xff, 0xf3, 0x14, 0x34, 0x3d, 0xeb, 0x25, 0x2d, 0x9a, 0xa2, 0xe4, 0x8f, 0x71, 0xa8, 0xd0, + 0xbe, 0xc4, 0xf1, 0xce, 0x64, 0x2a, 0x5f, 0x35, 0x4e, 0x66, 0x6a, 0x2b, 0x93, 0x9b, 0x40, 0x24, + 0x24, 0x71, 0x42, 0x01, 0x5a, 0x12, 0xb2, 0xad, 0x95, 0xf5, 0x08, 0xf7, 0xef, 0xfe, 0xdf, 0x2b, + 0xde, 0x23, 0x5c, 0x37, 0x00, 0x52, 0x20, 0x45, 0x39, 0x9e, 0xcc, 0xec, 0xd5, 0x5d, 0xa5, 0x22, + 0x81, 0x20, 0xd0, 0xe8, 0x6f, 0x74, 0x37, 0x20, 0x5b, 0x4f, 0x76, 0x9e, 0xbf, 0xb9, 0x78, 0xf7, + 0xf7, 0xb7, 0x97, 0xd6, 0x44, 0x4c, 0xb3, 0x33, 0xeb, 0x49, 0xf9, 0x45, 0x49, 0x02, 0x5f, 0x22, + 0x15, 0x19, 0x3d, 0xbb, 0x12, 0x24, 0x7f, 0xc5, 0x13, 0x6b, 0xb8, 0xb0, 0x5e, 0x71, 0xce, 0xa0, + 0x39, 0xcf, 0x68, 0xf1, 0xa4, 0xab, 0xde, 0x5a, 0x4f, 0xa6, 0x54, 0x10, 0xeb, 0x51, 0x3c, 0x21, + 0x79, 0x41, 0x45, 0x64, 0xcf, 0xc5, 0xe8, 0xe0, 0xd4, 0x86, 0xfe, 0x42, 0x2c, 0xe0, 0xfd, 0xa3, + 0x8c, 0x0c, 0x69, 0xb6, 0x9c, 0x92, 0x7c, 0x9c, 0xb2, 0x83, 0x3c, 0x1d, 0x4f, 0x44, 0x78, 0x32, + 0xbb, 0x5d, 0xc5, 0x7c, 0x3a, 0xa5, 0x4c, 0x2c, 0x47, 0x9c, 0x89, 0x83, 0x22, 0xfd, 0x27, 0x0d, + 0x7b, 0xc1, 0xec, 0x76, 0xa0, 0x1e, 0x71, 0x66, 0x98, 0x0a, 0x92, 0xa5, 0xf1, 0x40, 0xcf, 0xcc, + 0xe8, 0x48, 0x4d, 0x14, 0xf4, 0xb6, 0x39, 0x4b, 0xf6, 0x91, 0x9c, 0x92, 0xe5, 0x4d, 0x9a, 0x88, + 0x09, 0xf4, 0x05, 0x7f, 0x19, 0x4c, 0xa8, 0x5c, 0x4b, 0xb6, 0x87, 0x3c, 0x4f, 0x68, 0x7e, 0x90, + 0x93, 0x24, 0x9d, 0x17, 0x61, 0xaf, 0x0f, 0x0b, 0x0d, 0x49, 0xfc, 0x79, 0x9c, 0xf3, 0x39, 0x4b, + 0xc2, 0xc0, 0x0a, 0x56, 0x31, 0x61, 0xd7, 0xa4, 0xf8, 0xfa, 0xf9, 0x43, 0x9e, 0x2c, 0x14, 0x56, + 0x23, 0x32, 0x4d, 0xb3, 0x45, 0xf8, 0x34, 0x4f, 0x49, 0xe6, 0x7d, 0x4f, 0xb3, 0x6b, 0x2a, 0xd2, + 0x98, 0x78, 0x05, 0x61, 0xc5, 0x41, 0x41, 0xf3, 0x74, 0x64, 0x4e, 0xdd, 0x0d, 0x82, 0x60, 0x95, + 0xb2, 0xd9, 0x5c, 0x2c, 0x1b, 0x00, 0x0b, 0x9a, 0xd1, 0x78, 0xa3, 0x77, 0xd2, 0xf3, 0x26, 0xfd, + 0x65, 0xcc, 0x33, 0x9e, 0x87, 0xbb, 0xc3, 0x93, 0x60, 0x74, 0xd2, 0x5f, 0xf9, 0x53, 0x9e, 0x90, + 0x6c, 0x39, 0xe3, 0x45, 0x2a, 0x52, 0xce, 0xc2, 0x51, 0x7a, 0x4b, 0x93, 0x81, 0xe4, 0x57, 0x00, + 0x98, 0x0b, 0xc1, 0xa7, 0xd0, 0x50, 0x9c, 0x0f, 0x06, 0x82, 0xcf, 0xb0, 0x7b, 0x0d, 0x36, 0x4b, + 0x19, 0x25, 0xf9, 0xc1, 0x18, 0x89, 0x03, 0x81, 0x38, 0x82, 0x5b, 0x6a, 0x92, 0xb7, 0x3b, 0x1a, + 0x0d, 0xe9, 0xe1, 0xe1, 0x63, 0x58, 0xd8, 0xd3, 0x8b, 0x41, 0x1b, 0x19, 0xe2, 0x0e, 0x44, 0x0e, + 0xf4, 0x8c, 0x78, 0x3e, 0x0d, 0x65, 0x2b, 0x23, 0x82, 0xfe, 0xdd, 0x31, 0x5e, 0x29, 0x54, 0xaa, + 0x51, 0x96, 0x7f, 0x54, 0x0c, 0x66, 0x24, 0x49, 0x52, 0x36, 0x0e, 0x4f, 0x2b, 0x39, 0x4b, 0x01, + 0xe2, 0x23, 0xbf, 0xa6, 0xf9, 0x28, 0xe3, 0x37, 0x21, 0x99, 0x0b, 0xde, 0x60, 0xf7, 0x11, 0xb0, + 0x7b, 0xe5, 0xb3, 0x24, 0xbd, 0x5e, 0x9a, 0xba, 0x70, 0x8c, 0xea, 0xb2, 0x29, 0x98, 0x95, 0x2f, + 0xc8, 0x30, 0xa3, 0x4a, 0x87, 0x1e, 0x2c, 0x11, 0x05, 0x06, 0xf8, 0x9a, 0x91, 0x59, 0x41, 0xc3, + 0xb2, 0x31, 0x30, 0xf4, 0xa1, 0xbe, 0x94, 0x7f, 0x4c, 0xa7, 0xb5, 0xa5, 0x2c, 0x91, 0x78, 0xf5, + 0xe7, 0xc9, 0x52, 0x4d, 0x09, 0x7b, 0xb3, 0x5b, 0xab, 0xe0, 0x59, 0x9a, 0x58, 0x28, 0xee, 0x8a, + 0x0d, 0x27, 0x0d, 0x64, 0x71, 0x06, 0x2a, 0xf2, 0x01, 0xa8, 0xfd, 0x98, 0x85, 0x48, 0xa4, 0x21, + 0xa7, 0x03, 0x2d, 0xf4, 0x93, 0x6f, 0xf1, 0xdf, 0x40, 0x3f, 0x8d, 0x46, 0xa3, 0x95, 0x1f, 0x03, + 0x91, 0x04, 0xa4, 0x98, 0x2f, 0x93, 0xb4, 0x98, 0x65, 0x64, 0x11, 0x8e, 0xf3, 0x34, 0x19, 0xe0, + 0xc7, 0x81, 0xa0, 0xd3, 0x19, 0x0a, 0x07, 0xa7, 0xcf, 0xa7, 0xac, 0x08, 0x73, 0x3a, 0xa3, 0x44, + 0x38, 0x47, 0x5e, 0x6f, 0x94, 0xbb, 0x2b, 0x7f, 0xc8, 0x6f, 0x4b, 0x34, 0x0f, 0xd7, 0x68, 0x9e, + 0x9c, 0x9c, 0xfc, 0x2e, 0x15, 0x59, 0x2b, 0x88, 0x56, 0x8f, 0x3a, 0xb3, 0xfa, 0xc0, 0x81, 0x8a, + 0x6c, 0x69, 0xe6, 0x4a, 0x90, 0xaa, 0x1d, 0xcf, 0xf3, 0x02, 0x68, 0x99, 0x82, 0x0e, 0x48, 0x7c, + 0xc2, 0x09, 0x6a, 0xc3, 0x72, 0x93, 0xf4, 0x20, 0x18, 0x6a, 0x7a, 0x91, 0x94, 0x6d, 0x68, 0x7f, + 0x61, 0xe5, 0xe6, 0x6a, 0x3e, 0x2e, 0xe6, 0x69, 0x98, 0xbe, 0x5a, 0x79, 0x0d, 0x38, 0x01, 0x32, + 0xa9, 0x82, 0xbc, 0x0a, 0x73, 0xce, 0xc5, 0xf2, 0xe0, 0x20, 0x3e, 0xe8, 0x85, 0xbb, 0xbd, 0x5e, + 0x6f, 0x80, 0xcd, 0x91, 0x94, 0x81, 0x6c, 0xf6, 0xc3, 0xdd, 0x7e, 0xbf, 0x2f, 0x9b, 0x87, 0xe1, + 0xee, 0xe1, 0xe1, 0xa1, 0x6c, 0x1e, 0x85, 0xbb, 0x47, 0x47, 0x47, 0xb2, 0x79, 0x1c, 0xee, 0x1e, + 0x1f, 0x1f, 0xcb, 0xe6, 0x49, 0x28, 0x91, 0xc5, 0xe6, 0x69, 0xb8, 0x7b, 0x7a, 0x7a, 0x2a, 0x9b, + 0x43, 0xb0, 0xe9, 0xe1, 0x50, 0x36, 0xe3, 0x70, 0x37, 0x8e, 0x63, 0xd9, 0xa4, 0xe1, 0x2e, 0xa5, + 0x54, 0x36, 0xc1, 0x61, 0x24, 0x49, 0x22, 0x9b, 0xc0, 0x8f, 0xf8, 0x50, 0xad, 0x36, 0x86, 0x85, + 0x63, 0x85, 0x4e, 0x06, 0xab, 0x9d, 0x12, 0xd9, 0x5c, 0x84, 0xbb, 0xe4, 0x71, 0x00, 0x4d, 0x01, + 0x70, 0x03, 0x5f, 0xad, 0xcb, 0xc3, 0x7c, 0x3c, 0x24, 0x4e, 0xef, 0xf1, 0xb1, 0x67, 0xf5, 0x8e, + 0xca, 0x8f, 0xc0, 0x7f, 0xec, 0xca, 0xd7, 0x62, 0xa8, 0xde, 0x1f, 0x1e, 0x79, 0x56, 0xf9, 0xff, + 0x9a, 0xe4, 0x8e, 0x04, 0xe2, 0x96, 0x63, 0x88, 0x06, 0x12, 0xf4, 0x61, 0x7e, 0xf5, 0xb1, 0x39, + 0x6e, 0xa2, 0xc6, 0x1d, 0xf7, 0x3c, 0xab, 0xfc, 0x5f, 0x1f, 0x04, 0xa6, 0xf5, 0x2d, 0xca, 0x04, + 0x5a, 0xb3, 0xb2, 0x05, 0xb3, 0x4e, 0x0e, 0x55, 0xdf, 0x70, 0x16, 0xf6, 0x8e, 0x40, 0x08, 0xea, + 0x23, 0xd0, 0x2d, 0x1c, 0x03, 0x6f, 0x1e, 0xc3, 0x63, 0x60, 0x7d, 0x8b, 0x9f, 0x72, 0x56, 0x12, + 0x32, 0xce, 0x90, 0x4b, 0xc5, 0x78, 0x16, 0xda, 0xc3, 0x8c, 0xc7, 0x9f, 0x6d, 0x7c, 0x31, 0x05, + 0xa7, 0x07, 0x86, 0xb6, 0x0b, 0x46, 0xc2, 0x52, 0x96, 0x34, 0xdd, 0xa4, 0xf6, 0x8f, 0x31, 0xc9, + 0x62, 0x47, 0x21, 0x37, 0x9c, 0xb8, 0x56, 0xc7, 0x3a, 0x9e, 0xdd, 0xba, 0xca, 0x87, 0x1e, 0x19, + 0x1a, 0x74, 0xbc, 0xe1, 0x72, 0x8e, 0x6b, 0x5b, 0x41, 0xa9, 0xa9, 0xc8, 0xf8, 0x7f, 0x1e, 0xc0, + 0x72, 0xf4, 0x36, 0x3c, 0xe8, 0xaf, 0x1e, 0x3d, 0xe9, 0xaa, 0xcd, 0x10, 0x36, 0xc5, 0x38, 0x4f, + 0x67, 0xe2, 0xec, 0x51, 0xb7, 0x6b, 0xfd, 0x1b, 0xec, 0x6e, 0x94, 0x15, 0xd4, 0xb2, 0xac, 0xef, + 0x5e, 0xbf, 0xb7, 0xbe, 0xbb, 0x7c, 0x7d, 0xf9, 0xe3, 0xd3, 0x97, 0xd6, 0xdb, 0xf7, 0xcf, 0x5e, + 0xbe, 0xb8, 0xb0, 0xe0, 0xff, 0xe5, 0xeb, 0xab, 0x4b, 0xeb, 0x27, 0x9a, 0x17, 0x80, 0xae, 0x75, + 0xe8, 0x59, 0xfd, 0xc7, 0xd6, 0x0f, 0x73, 0x46, 0xad, 0x7e, 0x10, 0x7c, 0xfb, 0x08, 0x90, 0xb5, + 0x66, 0x39, 0xbd, 0x4e, 0xf9, 0xbc, 0xf8, 0xdb, 0x9c, 0xc5, 0x48, 0x93, 0x97, 0x53, 0x58, 0x32, + 0xa7, 0x79, 0xc4, 0xe6, 0x59, 0xe6, 0x15, 0x00, 0x9e, 0xaa, 0x66, 0x4c, 0xa6, 0x34, 0x27, 0xb2, + 0x3d, 0x18, 0xe9, 0xd1, 0xd6, 0x1c, 0x9c, 0x1f, 0x4c, 0x75, 0xa8, 0x57, 0xb8, 0xcb, 0x74, 0xe4, + 0xd8, 0xb3, 0xeb, 0x94, 0xde, 0xd8, 0x51, 0x44, 0xf7, 0xf6, 0x7e, 0x2b, 0x38, 0xfb, 0x89, 0x64, + 0x73, 0x5a, 0xf8, 0xb2, 0xd7, 0x5d, 0x66, 0x54, 0x58, 0x00, 0x8d, 0xde, 0x58, 0xef, 0x53, 0x26, + 0x4e, 0x9f, 0xe6, 0x39, 0x59, 0x38, 0x85, 0xeb, 0xb1, 0x68, 0xfc, 0x22, 0x29, 0xe7, 0xba, 0x03, + 0x80, 0xd3, 0x9c, 0xeb, 0x33, 0x9c, 0x0f, 0x02, 0x00, 0x33, 0xa5, 0x7e, 0xc6, 0xc7, 0x8e, 0x0d, + 0x5e, 0x28, 0x23, 0x31, 0xba, 0x3c, 0x6a, 0xa9, 0xad, 0x77, 0xc7, 0xf6, 0x36, 0xd6, 0x1c, 0xa8, + 0x35, 0xe3, 0x4b, 0xc7, 0x56, 0x83, 0x00, 0x3e, 0xf5, 0xa5, 0x4f, 0x8e, 0x98, 0xfa, 0xf6, 0xa8, + 0xaf, 0x36, 0x6a, 0xe8, 0x50, 0x0d, 0x8f, 0xf9, 0x33, 0x88, 0x05, 0x98, 0x78, 0xcd, 0x13, 0xea, + 0xeb, 0x85, 0x2e, 0x26, 0x69, 0x96, 0x00, 0xa1, 0x0c, 0xf1, 0x85, 0x2f, 0x3f, 0x4d, 0x22, 0x8d, + 0x32, 0x3c, 0x80, 0x74, 0x2f, 0xaf, 0x61, 0xc6, 0xcb, 0xb4, 0x10, 0xc0, 0xb2, 0x1c, 0x96, 0x03, + 0xd9, 0x7c, 0xb6, 0x3d, 0x1a, 0x9d, 0x2d, 0x05, 0x1f, 0x8f, 0x33, 0xfa, 0x0a, 0xf7, 0x58, 0x87, + 0x82, 0xbf, 0xce, 0xc7, 0x54, 0xb8, 0x2b, 0x77, 0x95, 0x53, 0x31, 0xcf, 0x99, 0xd5, 0x8b, 0xa2, + 0x0d, 0x7a, 0x13, 0x3a, 0x13, 0x93, 0x73, 0x29, 0x1d, 0x7a, 0xd3, 0x7f, 0xee, 0x30, 0x8f, 0xba, + 0xa1, 0x7e, 0x3c, 0x54, 0x8f, 0xde, 0x0e, 0xec, 0xfb, 0xc0, 0xf2, 0x21, 0x27, 0x79, 0x82, 0x2c, + 0xdf, 0xca, 0xe0, 0x81, 0x9e, 0xf8, 0x0c, 0x47, 0x3a, 0x92, 0xd7, 0x6a, 0x92, 0x0b, 0x60, 0x34, + 0x16, 0x3b, 0xbd, 0x55, 0x25, 0xd5, 0xf5, 0xb2, 0x52, 0xae, 0x08, 0x15, 0x48, 0xf6, 0x01, 0xeb, + 0x0b, 0xd8, 0x27, 0x60, 0x7f, 0x71, 0xec, 0x3e, 0x4e, 0xce, 0xa2, 0x23, 0x14, 0x16, 0xf3, 0xe3, + 0x0c, 0x9c, 0xfb, 0x8f, 0x10, 0x6c, 0x38, 0x81, 0x17, 0x78, 0xb4, 0xc1, 0x57, 0xd7, 0x6b, 0x57, + 0x05, 0x12, 0xbd, 0x22, 0x62, 0xe2, 0x4f, 0x53, 0xd0, 0x1f, 0x35, 0xa5, 0xbb, 0xc1, 0x87, 0x3a, + 0xa4, 0xcd, 0xf7, 0xe5, 0x0a, 0x42, 0xc1, 0x82, 0x00, 0x80, 0xe7, 0x4e, 0x09, 0xee, 0x80, 0xec, + 0xb7, 0x03, 0x74, 0xbb, 0xfd, 0x76, 0x35, 0xe3, 0x73, 0x01, 0x81, 0x54, 0xe1, 0x42, 0xc0, 0x81, + 0xb6, 0x6c, 0x71, 0x8b, 0x8f, 0xac, 0xad, 0xa3, 0x00, 0x02, 0xf7, 0x33, 0x9a, 0xac, 0xc7, 0xa7, + 0x38, 0x5e, 0xf7, 0x15, 0x1f, 0xb2, 0x8f, 0x1d, 0xf8, 0xe8, 0xf4, 0xd4, 0x57, 0xff, 0xe3, 0x59, + 0x3f, 0xd8, 0xdb, 0x03, 0x76, 0x8d, 0xd2, 0x2c, 0xbb, 0x42, 0x6b, 0x8e, 0x3e, 0x81, 0x7b, 0x73, + 0xbe, 0x59, 0xe2, 0xd0, 0x95, 0x27, 0xbf, 0x61, 0x74, 0xd9, 0xea, 0x7f, 0x5c, 0xb9, 0x9f, 0x40, + 0xb7, 0x86, 0x14, 0x36, 0xba, 0xb7, 0x40, 0x9e, 0xe3, 0xa2, 0xa6, 0xe5, 0xb1, 0x93, 0x7e, 0x08, + 0x3e, 0xee, 0x93, 0x6e, 0x2f, 0xe8, 0x08, 0x2f, 0xfd, 0xd0, 0x53, 0x6d, 0xcf, 0x3f, 0xda, 0x27, + 0xc0, 0xfe, 0xfe, 0xbe, 0x64, 0xc5, 0xdb, 0x17, 0x38, 0x1a, 0x97, 0x72, 0x5c, 0x10, 0x55, 0x27, + 0x3a, 0x1c, 0xd0, 0x0c, 0x5c, 0x45, 0xcd, 0x88, 0x2a, 0x49, 0x1b, 0x44, 0x5a, 0x8c, 0x5b, 0x48, + 0x40, 0x8b, 0x35, 0x6d, 0xf4, 0x28, 0x77, 0xf0, 0x70, 0xb8, 0x9a, 0x73, 0x0f, 0x07, 0xdd, 0xe6, + 0x08, 0x22, 0xd0, 0xd5, 0x0d, 0x65, 0x3d, 0xac, 0x29, 0x2b, 0xec, 0x55, 0x20, 0x1c, 0x67, 0xa7, + 0xf4, 0x66, 0x77, 0x77, 0x4d, 0x40, 0x9b, 0xfe, 0x49, 0xfa, 0x18, 0x90, 0x4f, 0x1b, 0x21, 0x87, + 0xcf, 0xad, 0x18, 0x92, 0x03, 0x41, 0x2d, 0x34, 0xae, 0x12, 0x2a, 0x98, 0x40, 0x6d, 0xf0, 0x90, + 0x82, 0x1e, 0x50, 0x1b, 0x6d, 0x73, 0xed, 0x46, 0x61, 0xfc, 0xbb, 0xef, 0x7f, 0xbc, 0xbc, 0xf4, + 0x7f, 0xa6, 0xc3, 0xef, 0x5e, 0xfe, 0xa8, 0xfb, 0x9d, 0xa5, 0x72, 0x47, 0x21, 0xf5, 0x08, 0x13, + 0x10, 0x55, 0xa6, 0xd0, 0xde, 0x09, 0x3c, 0x92, 0xcd, 0x26, 0x04, 0x1a, 0xab, 0x06, 0x68, 0x32, + 0x12, 0xb0, 0x9e, 0x09, 0xd9, 0x87, 0x54, 0xe9, 0x02, 0xed, 0xee, 0x29, 0x4e, 0x71, 0x82, 0x96, + 0x37, 0x17, 0xb8, 0x95, 0xa0, 0x49, 0xba, 0x9e, 0x53, 0xba, 0xef, 0x0a, 0x9d, 0xb7, 0xb0, 0x2b, + 0xcc, 0xc0, 0x64, 0xd3, 0x6b, 0x7a, 0x21, 0xdf, 0x39, 0xb0, 0x8f, 0x97, 0x76, 0x58, 0x1a, 0x9c, + 0xd7, 0xf3, 0x8e, 0x83, 0xc0, 0x75, 0xfd, 0x72, 0xcf, 0x43, 0xd8, 0xd2, 0xc8, 0x99, 0xd2, 0xb2, + 0xe2, 0x1f, 0xb9, 0x70, 0xda, 0x8d, 0x6c, 0x8b, 0xed, 0x75, 0xb6, 0xd8, 0xf0, 0xfe, 0x96, 0xfe, + 0x4e, 0xbb, 0x6f, 0xdc, 0x6f, 0xef, 0x06, 0x55, 0x57, 0x94, 0x02, 0xdb, 0xf8, 0xe7, 0xa7, 0x0a, + 0x57, 0xa4, 0x5f, 0xef, 0x64, 0x15, 0xf9, 0x57, 0xf8, 0xec, 0xfa, 0xeb, 0x8d, 0x57, 0xea, 0xdb, + 0xa6, 0x1a, 0x6e, 0xd1, 0x93, 0x25, 0x5a, 0x7b, 0x16, 0x1d, 0xb0, 0xfd, 0x2d, 0xd4, 0x1f, 0xf4, + 0xc0, 0xc9, 0x78, 0xbc, 0x7d, 0x84, 0xa2, 0x4c, 0x0d, 0x49, 0xdb, 0x87, 0x48, 0x6a, 0xe4, 0x08, + 0xd4, 0xe4, 0x2d, 0x3a, 0x89, 0xe4, 0xac, 0x67, 0x3e, 0xc4, 0xaa, 0x36, 0x3c, 0x1c, 0xf9, 0x92, + 0x87, 0x23, 0x75, 0x0f, 0x27, 0x70, 0xbc, 0xee, 0x93, 0x1b, 0x72, 0xb9, 0xe3, 0x68, 0xb6, 0xce, + 0x26, 0xa0, 0x82, 0xdf, 0x51, 0x0e, 0x29, 0x7d, 0xbe, 0x70, 0xfc, 0x9e, 0xeb, 0x15, 0xc6, 0xeb, + 0x57, 0xb4, 0x98, 0x3c, 0x23, 0x45, 0x1a, 0x83, 0xf2, 0x50, 0x4c, 0xa6, 0x9c, 0xa5, 0x4c, 0xf0, + 0xd4, 0x76, 0x8b, 0x06, 0xc0, 0x67, 0x24, 0x4e, 0xc5, 0x02, 0xb2, 0x23, 0x30, 0x01, 0xd2, 0x98, + 0x2a, 0x4d, 0x7c, 0x40, 0xea, 0xda, 0x98, 0x75, 0xd8, 0xbe, 0x00, 0x87, 0x88, 0x2e, 0x90, 0xcb, + 0x76, 0x4f, 0xb6, 0x53, 0xd9, 0xee, 0x63, 0xdb, 0x55, 0x81, 0x0c, 0xee, 0xd2, 0x0e, 0x71, 0x57, + 0x5b, 0xfd, 0xd5, 0xe1, 0xbf, 0xc8, 0x0f, 0x1e, 0xfe, 0xcb, 0xfc, 0x60, 0xcb, 0x26, 0xe6, 0x2e, + 0x2b, 0x47, 0xa0, 0xe2, 0x9c, 0x5a, 0x74, 0xa5, 0xfa, 0xf6, 0xf6, 0xaa, 0x31, 0x3a, 0xf6, 0xa9, + 0x0f, 0x52, 0x9d, 0x77, 0x77, 0xa6, 0x4b, 0xb9, 0x82, 0x54, 0xdb, 0xd9, 0x04, 0xe5, 0xb5, 0x4c, + 0x2c, 0xc3, 0xae, 0xa3, 0x01, 0xaa, 0x4c, 0x1e, 0xf5, 0x1e, 0xb4, 0xd9, 0xfe, 0x11, 0x55, 0xcc, + 0x9f, 0x28, 0x09, 0xc7, 0x18, 0xa5, 0x01, 0xd6, 0xd0, 0xcb, 0xc6, 0x48, 0xa7, 0x53, 0xef, 0xff, + 0x90, 0x7f, 0xf4, 0xaf, 0xd3, 0x22, 0x85, 0x94, 0x39, 0x2a, 0x3e, 0x1c, 0xee, 0xe7, 0x1d, 0x8a, + 0xbb, 0xb3, 0x6c, 0xa8, 0x8d, 0x5a, 0x35, 0x61, 0xb3, 0x06, 0x15, 0xda, 0x3a, 0xb7, 0x15, 0xee, + 0x54, 0xeb, 0xb4, 0x2f, 0x43, 0x78, 0x43, 0x75, 0x95, 0x1f, 0xb6, 0xed, 0x12, 0xfa, 0xc7, 0x6e, + 0xff, 0xf8, 0xd8, 0x5b, 0x3f, 0xc3, 0xc2, 0xcd, 0x9e, 0xbe, 0xec, 0x71, 0xc1, 0x9d, 0xe5, 0x9d, + 0xce, 0xe0, 0xff, 0x9f, 0xc2, 0xae, 0x14, 0x7b, 0x72, 0x2e, 0x88, 0x34, 0xd4, 0xdb, 0x4e, 0xe4, + 0x07, 0x3d, 0xaf, 0xd1, 0xbb, 0x50, 0xbd, 0x95, 0x96, 0xa9, 0x86, 0x62, 0xad, 0xf6, 0xe3, 0xee, + 0xc6, 0x4e, 0xaf, 0xa2, 0xd8, 0x2f, 0x45, 0xa6, 0x1b, 0xa1, 0x65, 0x7f, 0x1d, 0x45, 0xa2, 0x43, + 0xe0, 0xad, 0x01, 0x63, 0x7f, 0x3f, 0xc3, 0xd8, 0x10, 0x9c, 0xf2, 0xd1, 0x00, 0xd5, 0xec, 0xcb, + 0xa1, 0xed, 0x02, 0x63, 0x8d, 0xc5, 0x93, 0x5e, 0x30, 0x58, 0x74, 0x3a, 0x52, 0x35, 0x6f, 0xb1, + 0xe7, 0xf6, 0x49, 0x7f, 0x70, 0x0b, 0x1d, 0xc5, 0x87, 0x14, 0x95, 0x2a, 0x55, 0xba, 0x95, 0xde, + 0x1f, 0x04, 0xa6, 0x3a, 0xf4, 0x4b, 0xab, 0x20, 0x30, 0xbd, 0x27, 0x08, 0xbc, 0xdd, 0xcf, 0x3a, + 0xdc, 0x5b, 0xec, 0x67, 0x18, 0xf8, 0x65, 0xdb, 0x02, 0xbf, 0x14, 0x02, 0x3f, 0x99, 0x3d, 0xaa, + 0xac, 0xf1, 0x4f, 0x4c, 0x1f, 0x91, 0xf9, 0x49, 0x94, 0xf0, 0x78, 0x8e, 0x55, 0x58, 0xef, 0xa6, + 0x28, 0x53, 0xc6, 0x9c, 0x52, 0x76, 0x21, 0x8b, 0x21, 0xaf, 0xf3, 0x08, 0x22, 0x85, 0xfc, 0xcd, + 0xe8, 0xca, 0xe8, 0x2c, 0xa2, 0x23, 0x4f, 0xe7, 0x8d, 0x2f, 0x20, 0x85, 0xb2, 0x3d, 0xac, 0x18, + 0x7f, 0x87, 0x49, 0x13, 0xd8, 0x4f, 0x02, 0x4e, 0xcd, 0xd0, 0xa8, 0x68, 0xb9, 0xf2, 0xe6, 0x29, + 0x8c, 0xbc, 0xe0, 0xd3, 0x29, 0x61, 0x49, 0x11, 0x7d, 0xf8, 0xe8, 0x4d, 0x21, 0x2b, 0xcb, 0x1a, + 0x89, 0x28, 0x3a, 0x21, 0x8a, 0x9e, 0x4f, 0x66, 0x54, 0x09, 0x6a, 0xc4, 0x65, 0x46, 0x11, 0xb1, + 0x67, 0x0b, 0xf9, 0x6a, 0xad, 0x46, 0x90, 0x0b, 0x9a, 0x23, 0x55, 0x5c, 0xa7, 0x07, 0xd7, 0x06, + 0x4e, 0x60, 0xc1, 0x8c, 0xfe, 0x84, 0x16, 0x9f, 0x66, 0xb0, 0x27, 0x5d, 0x40, 0xc7, 0x98, 0x3a, + 0x8d, 0x3c, 0xb4, 0x7d, 0x94, 0x6d, 0xc0, 0xe1, 0xec, 0x25, 0x27, 0x09, 0xcc, 0x9b, 0x92, 0xcf, + 0xf4, 0xe7, 0x2b, 0x10, 0x60, 0xca, 0x52, 0xa1, 0x99, 0x01, 0x4f, 0x49, 0x4b, 0xf6, 0x78, 0x5d, + 0xc1, 0x8b, 0x15, 0x3c, 0xaf, 0x7d, 0x1d, 0x6f, 0xa7, 0x67, 0xac, 0x54, 0x2e, 0x80, 0xa9, 0xf8, + 0x0d, 0x38, 0x45, 0x49, 0xa3, 0xf6, 0xc5, 0x80, 0xa9, 0x10, 0xb3, 0x22, 0x84, 0x4c, 0xf1, 0x26, + 0x65, 0x09, 0xbf, 0x01, 0xf4, 0x63, 0x65, 0x86, 0x33, 0x30, 0x48, 0x0e, 0x4e, 0xeb, 0xdc, 0xbe, + 0x29, 0x0a, 0x3b, 0x84, 0x4f, 0xdb, 0xed, 0xd8, 0x61, 0xb7, 0x6b, 0x77, 0x9a, 0x43, 0x27, 0xbc, + 0x10, 0x0c, 0x0c, 0xb3, 0x63, 0x77, 0x61, 0xd4, 0xa0, 0xc6, 0x09, 0xb5, 0xba, 0x35, 0xcf, 0x33, + 0x19, 0xa8, 0xde, 0xa8, 0x8d, 0x1f, 0xc2, 0xde, 0x2b, 0x1e, 0x7f, 0xa6, 0xc8, 0x5b, 0xe8, 0xf3, + 0x87, 0x29, 0x23, 0xf9, 0xe2, 0xdd, 0x62, 0x46, 0x23, 0x9b, 0x60, 0x82, 0x3a, 0x9c, 0x8f, 0x46, + 0x18, 0xdb, 0xc2, 0x3b, 0xce, 0xa6, 0xb4, 0x28, 0xc8, 0x98, 0x46, 0x98, 0x36, 0x03, 0x11, 0xd4, + 0x4f, 0x88, 0x20, 0x56, 0x0a, 0x61, 0x06, 0x61, 0x31, 0x05, 0x7f, 0x2f, 0x73, 0xda, 0x67, 0x72, + 0x8a, 0x5b, 0x56, 0x1f, 0x2a, 0x6d, 0xf2, 0xd4, 0x78, 0x8c, 0xe2, 0x4d, 0x0d, 0x73, 0xa5, 0xa3, + 0x5b, 0x4a, 0x53, 0x7e, 0x97, 0x4e, 0x29, 0x38, 0x33, 0xb9, 0x1b, 0xe9, 0xb6, 0x72, 0x61, 0xfa, + 0x41, 0x29, 0xb1, 0xdc, 0xd3, 0x74, 0xbd, 0x07, 0x76, 0x35, 0x59, 0x7a, 0x31, 0x62, 0x45, 0xe9, + 0xd0, 0x23, 0x5b, 0x55, 0x7b, 0xe2, 0x83, 0xcc, 0xb5, 0x07, 0xca, 0x15, 0x49, 0xa5, 0x84, 0xc0, + 0x67, 0xc9, 0xa2, 0x1f, 0xae, 0xde, 0xbc, 0xc6, 0x32, 0x42, 0x41, 0x35, 0x15, 0xee, 0x0a, 0x78, + 0x18, 0x4f, 0x1c, 0xe1, 0x2e, 0x99, 0x2e, 0xa9, 0x68, 0xee, 0xd1, 0x3c, 0xc7, 0xfd, 0x41, 0xf3, + 0x0f, 0x91, 0xb1, 0x64, 0x97, 0xed, 0x89, 0x92, 0xa2, 0x15, 0x03, 0x9a, 0x6a, 0x86, 0x72, 0x2e, + 0x39, 0xe1, 0xa7, 0x85, 0xca, 0xf2, 0x99, 0x7b, 0x77, 0x07, 0x72, 0x8c, 0x81, 0x7f, 0xef, 0x67, + 0x30, 0x85, 0x42, 0x4f, 0xd8, 0x1c, 0x72, 0xee, 0x68, 0xdb, 0xa9, 0x27, 0x17, 0xb0, 0x68, 0x4e, + 0x63, 0x0a, 0x99, 0x80, 0x35, 0xd6, 0xe0, 0xbf, 0x7f, 0xf7, 0xea, 0xa5, 0xad, 0x2c, 0xcd, 0xf5, + 0xcc, 0x4e, 0x47, 0x62, 0xae, 0x5f, 0x34, 0x2c, 0x37, 0xa8, 0xdb, 0x6a, 0xb5, 0x07, 0x8f, 0xb2, + 0x79, 0x31, 0x79, 0xff, 0xc2, 0x78, 0x05, 0x9e, 0x29, 0xac, 0xa1, 0x70, 0x89, 0xf4, 0x86, 0xb8, + 0xd3, 0x5c, 0x13, 0x2c, 0xc4, 0xca, 0x05, 0x6c, 0x8f, 0xb9, 0xee, 0x6a, 0xa5, 0x34, 0x23, 0xce, + 0x78, 0xa1, 0xf4, 0xa2, 0x89, 0xbb, 0x7c, 0x63, 0x01, 0x58, 0xa0, 0x02, 0x78, 0x2f, 0x95, 0xef, + 0xf7, 0x09, 0x30, 0x77, 0x6d, 0x0f, 0x22, 0x9c, 0x52, 0x37, 0x94, 0x20, 0xbc, 0x1e, 0xa6, 0x3e, + 0xa5, 0x5f, 0xd3, 0x58, 0xf0, 0x19, 0x65, 0xad, 0x48, 0xe0, 0x0b, 0x9d, 0x9f, 0xfd, 0xa3, 0x78, + 0x49, 0xc7, 0x24, 0x03, 0x7e, 0x18, 0x69, 0x6a, 0x8d, 0x87, 0xd4, 0x63, 0x9e, 0x88, 0x20, 0xba, + 0x47, 0x1d, 0xdf, 0x69, 0x4a, 0x09, 0xf4, 0x03, 0x16, 0x94, 0x35, 0x34, 0x87, 0xaa, 0xb8, 0xcc, + 0x74, 0xaa, 0x10, 0x24, 0xd4, 0x5c, 0xac, 0xdb, 0x74, 0xb9, 0x4e, 0xfd, 0xb9, 0xd3, 0x73, 0xff, + 0xb2, 0xe1, 0x83, 0x5d, 0x19, 0x99, 0x71, 0xa5, 0xb0, 0xa8, 0xbb, 0x88, 0xae, 0x97, 0xc8, 0x42, + 0x99, 0x3c, 0x6e, 0x53, 0x75, 0xb8, 0xc4, 0x4f, 0x19, 0xe0, 0xfd, 0x0e, 0x76, 0xd6, 0x48, 0x3a, + 0x2d, 0x32, 0x73, 0xb0, 0xf2, 0xe5, 0x7a, 0xf6, 0x54, 0x1e, 0xe2, 0x81, 0x37, 0x61, 0xbe, 0x00, + 0x63, 0x86, 0xcd, 0x18, 0x5d, 0xb7, 0xc3, 0x25, 0x88, 0x24, 0xbd, 0xb6, 0x21, 0x6b, 0x4c, 0x21, + 0xab, 0x82, 0x0f, 0x8f, 0xfb, 0x49, 0x4e, 0xc6, 0x63, 0x3c, 0xa8, 0xc0, 0x65, 0x38, 0xec, 0xaa, + 0xa4, 0x28, 0x5e, 0x83, 0x1f, 0x89, 0xec, 0x21, 0xbf, 0xb5, 0x8d, 0x2a, 0xdd, 0xa4, 0x2f, 0x2b, + 0x74, 0xdb, 0x96, 0xe5, 0x3e, 0x99, 0x01, 0xa7, 0x13, 0x5d, 0x8d, 0x73, 0x51, 0x6c, 0xf3, 0xd9, + 0x33, 0x7e, 0xeb, 0x70, 0x1d, 0xd7, 0x63, 0x49, 0x4c, 0x1e, 0x89, 0x34, 0x50, 0x93, 0x6b, 0x08, + 0xb9, 0xc6, 0x0c, 0x96, 0x10, 0x35, 0x40, 0x00, 0x99, 0xd6, 0x3a, 0xc0, 0x29, 0x68, 0x52, 0x14, + 0xac, 0x1a, 0x31, 0x06, 0xf6, 0xc6, 0xe1, 0x8b, 0xa2, 0x82, 0xa8, 0x49, 0x78, 0xfc, 0x09, 0x71, + 0x48, 0xae, 0x9e, 0x72, 0x1b, 0xb3, 0x16, 0x13, 0x7e, 0xde, 0x24, 0x85, 0x34, 0x3b, 0xe4, 0x44, + 0x3c, 0x13, 0x84, 0xb5, 0x37, 0x29, 0xa3, 0x3e, 0x03, 0x0b, 0x41, 0x1c, 0x7c, 0xc1, 0x5f, 0x82, + 0x77, 0xce, 0xe8, 0x4b, 0x7e, 0x43, 0xf3, 0x0b, 0x02, 0xfe, 0xc6, 0x55, 0x91, 0x91, 0xd0, 0xa8, + 0x48, 0x6a, 0x4b, 0xec, 0xc5, 0x56, 0xd6, 0x52, 0x88, 0x19, 0xf2, 0x42, 0xc8, 0xd5, 0xcd, 0x66, + 0x9d, 0x2d, 0x6b, 0x54, 0xd4, 0xf1, 0xe2, 0x9a, 0xcb, 0xb2, 0x12, 0x98, 0x73, 0x77, 0xa9, 0x19, + 0x37, 0x43, 0xa6, 0xd5, 0x99, 0x6c, 0xc8, 0x19, 0x52, 0x3e, 0xa6, 0x24, 0xad, 0x11, 0x63, 0xfe, + 0x35, 0x6e, 0xf9, 0xa8, 0xf3, 0x06, 0x8a, 0xba, 0x77, 0x53, 0xf0, 0x12, 0x8f, 0x07, 0x2e, 0xa5, + 0x10, 0x35, 0x17, 0xa3, 0x6d, 0x05, 0x5b, 0xbd, 0xd1, 0x6e, 0x58, 0xb7, 0x9a, 0x6f, 0x55, 0xef, + 0xa5, 0xd2, 0x5d, 0xc9, 0x4e, 0xb3, 0x9c, 0xdb, 0x8e, 0xa2, 0x64, 0x95, 0x2e, 0x3d, 0xaf, 0x15, + 0x52, 0xa6, 0x3b, 0x95, 0x2e, 0x92, 0xa6, 0x2e, 0x22, 0x73, 0xb0, 0xf6, 0x6c, 0x70, 0xaa, 0xea, + 0x33, 0x98, 0x63, 0xff, 0xf7, 0x7f, 0xfd, 0xe7, 0x7f, 0xd8, 0x5e, 0x7d, 0x7a, 0x39, 0xae, 0xa9, + 0xd1, 0xa4, 0xd2, 0xe8, 0xb2, 0x10, 0x6e, 0xaa, 0xf4, 0x57, 0xd5, 0xaf, 0xd7, 0x5a, 0xa9, 0x0f, + 0xcf, 0xd7, 0x14, 0x3a, 0x64, 0x9b, 0x60, 0xb6, 0xa2, 0x55, 0x01, 0xa9, 0x21, 0x06, 0x1d, 0xc9, + 0x1b, 0x96, 0x2d, 0x22, 0xd4, 0xad, 0xaf, 0x44, 0xd4, 0xd0, 0x2d, 0xde, 0xa6, 0x5b, 0x64, 0xdd, + 0xd9, 0xd1, 0x4c, 0x1d, 0x54, 0xb4, 0x61, 0x38, 0xb3, 0x16, 0xdc, 0x41, 0x2f, 0x8a, 0x04, 0xc0, + 0xd9, 0xae, 0x78, 0x9e, 0x3d, 0x9c, 0x0b, 0xc1, 0x99, 0xbd, 0xa3, 0x27, 0xed, 0xed, 0xf1, 0xc6, + 0x10, 0x53, 0x39, 0x89, 0xd4, 0x4b, 0x50, 0xa8, 0xa7, 0x42, 0xe4, 0x29, 0x4c, 0xa5, 0xe0, 0x03, + 0x73, 0x3a, 0xb2, 0xbd, 0x0a, 0xbd, 0xe6, 0x6b, 0x45, 0x97, 0xed, 0xd9, 0xbf, 0x0e, 0x33, 0xc2, + 0x3e, 0x63, 0x15, 0x7f, 0x93, 0x2a, 0x4f, 0x62, 0x7a, 0xee, 0x50, 0x53, 0xc8, 0x35, 0xf5, 0x74, + 0xc3, 0xf5, 0xcb, 0x8e, 0xbd, 0x6b, 0x77, 0x04, 0x24, 0x45, 0xa5, 0x61, 0xfd, 0x99, 0x74, 0x7a, + 0xea, 0xd4, 0xc8, 0x53, 0x31, 0xbb, 0xa7, 0x8e, 0x96, 0x06, 0x60, 0x6f, 0x34, 0xfe, 0x8c, 0xde, + 0xbf, 0xe4, 0x2e, 0x20, 0x2b, 0x17, 0x93, 0x97, 0x19, 0x24, 0x55, 0xd8, 0xab, 0x5f, 0x62, 0x20, + 0x94, 0x16, 0xe8, 0xfd, 0x12, 0xa5, 0x0a, 0xa6, 0xbf, 0x90, 0xa0, 0xe4, 0x8b, 0x8a, 0x65, 0x0f, + 0xb7, 0x6f, 0x05, 0xbf, 0x63, 0x37, 0x0c, 0xfc, 0x42, 0xa3, 0x67, 0x2a, 0x92, 0x1b, 0x96, 0x44, + 0x7f, 0x1d, 0xce, 0x54, 0xe1, 0xb7, 0xe1, 0x78, 0xef, 0x55, 0xea, 0x76, 0x5c, 0xf5, 0x7b, 0x89, + 0xea, 0x33, 0x89, 0x53, 0x03, 0xd1, 0x5c, 0x12, 0xf3, 0x50, 0x3c, 0xa7, 0xe4, 0x36, 0xc2, 0x12, + 0xc4, 0x26, 0xc6, 0x7f, 0x84, 0x91, 0x1a, 0x21, 0x4f, 0xd1, 0x89, 0x91, 0x8c, 0x52, 0xb6, 0x5f, + 0x73, 0x08, 0x0f, 0x0c, 0x9d, 0x2d, 0x07, 0x6a, 0xd5, 0x05, 0x92, 0x5e, 0x20, 0x9e, 0x35, 0x1b, + 0x26, 0xa6, 0x33, 0x24, 0x6b, 0xc5, 0x45, 0x58, 0x86, 0x32, 0x90, 0x16, 0x03, 0x77, 0x43, 0xa4, + 0x65, 0x6f, 0xaf, 0xa9, 0xb1, 0x25, 0x53, 0x34, 0xd0, 0xfb, 0x77, 0x20, 0x34, 0x97, 0x7b, 0x58, + 0x68, 0x4e, 0x56, 0x42, 0xfe, 0x33, 0x95, 0x71, 0x93, 0x1d, 0x36, 0x9b, 0x4f, 0x87, 0x90, 0x36, + 0x45, 0x95, 0xf5, 0x39, 0x4d, 0x3f, 0x81, 0x77, 0x63, 0xc0, 0x4b, 0x1c, 0x49, 0x5c, 0x41, 0xc0, + 0x2a, 0x1c, 0x8f, 0x8e, 0x5c, 0xf7, 0xab, 0x9d, 0x83, 0x47, 0x9a, 0x56, 0x0e, 0xfe, 0x3b, 0x6b, + 0xf6, 0x41, 0x66, 0x90, 0x37, 0xfb, 0xf2, 0xea, 0xb8, 0x13, 0x04, 0x51, 0xdf, 0x02, 0xb8, 0xc6, + 0x47, 0x96, 0x45, 0x64, 0x06, 0x71, 0x16, 0x61, 0x8d, 0xa4, 0x9e, 0x4c, 0xcc, 0x20, 0x87, 0xd0, + 0x06, 0xd3, 0x96, 0x65, 0x9c, 0x9d, 0x6e, 0xc9, 0x33, 0x40, 0x32, 0x98, 0x3b, 0x65, 0xe7, 0x0e, + 0x04, 0xa5, 0xd5, 0xa6, 0x2a, 0x03, 0x54, 0x4f, 0xf7, 0x18, 0xca, 0x04, 0x31, 0x7c, 0xd9, 0x29, + 0xa3, 0x3c, 0x94, 0x98, 0x2c, 0x1b, 0xdb, 0x4c, 0x4d, 0x69, 0xf8, 0x38, 0x35, 0xb6, 0x91, 0x22, + 0xe9, 0x5e, 0x5c, 0xd9, 0x13, 0xc0, 0xca, 0xda, 0x4b, 0x5e, 0x76, 0x03, 0xac, 0x55, 0x59, 0xca, + 0xcc, 0x2c, 0x8e, 0xd1, 0x53, 0xc1, 0x73, 0xe1, 0x38, 0x65, 0xce, 0x20, 0x0f, 0x9b, 0xcb, 0x42, + 0x05, 0xf5, 0xf9, 0x01, 0xf3, 0xf9, 0x0a, 0x09, 0x72, 0xdd, 0x46, 0x36, 0x91, 0x19, 0x35, 0x80, + 0x36, 0x26, 0x60, 0x9a, 0xd1, 0xca, 0xb4, 0x40, 0x85, 0x22, 0x34, 0x5a, 0xae, 0x60, 0x17, 0x92, + 0x43, 0xa2, 0xda, 0x40, 0x4c, 0x67, 0xe6, 0xb4, 0x10, 0x3f, 0x14, 0x88, 0x8f, 0xbb, 0x51, 0x8c, + 0xa9, 0x1d, 0xc4, 0x99, 0xd9, 0x27, 0x75, 0x55, 0xfe, 0x0e, 0xf2, 0x6a, 0x14, 0x18, 0x8d, 0x51, + 0x78, 0x99, 0x23, 0x95, 0x11, 0xad, 0x74, 0x0e, 0x54, 0xbb, 0x43, 0xe6, 0x56, 0x8f, 0x52, 0x24, + 0x90, 0xcf, 0xd7, 0x9f, 0x21, 0x2a, 0xc0, 0xdb, 0x37, 0x8e, 0x1c, 0x0c, 0xc2, 0xbd, 0x57, 0xb2, + 0xf4, 0x81, 0x92, 0xad, 0x30, 0x30, 0x0f, 0xff, 0x1f, 0x2e, 0x6c, 0x44, 0xdb, 0xf5, 0xda, 0xb8, + 0xaf, 0x62, 0x89, 0x52, 0xd4, 0x0c, 0xab, 0xd6, 0x6f, 0x86, 0xbf, 0x41, 0xf4, 0xe8, 0x7f, 0xa6, + 0x8b, 0x02, 0x8d, 0xcd, 0x96, 0x6c, 0x45, 0xbf, 0x04, 0xc4, 0x48, 0x37, 0xe9, 0x9e, 0x6b, 0x46, + 0xfd, 0x44, 0x72, 0x04, 0xaf, 0x7b, 0x21, 0x6f, 0xa4, 0x1f, 0xd8, 0xc7, 0x46, 0xf2, 0x5c, 0xe7, + 0x29, 0x64, 0xcf, 0x8c, 0x0b, 0x58, 0x0f, 0xf2, 0x5c, 0x2b, 0x65, 0x56, 0xc2, 0xa7, 0x76, 0x39, + 0xcf, 0xdd, 0x10, 0x57, 0x09, 0x5f, 0xa6, 0xa4, 0x2a, 0x6f, 0xe0, 0x98, 0x2d, 0x81, 0xf0, 0x84, + 0x3f, 0x21, 0xc5, 0x9b, 0x1b, 0xf6, 0x36, 0x87, 0xe4, 0x36, 0x17, 0x8b, 0x2a, 0x33, 0x74, 0x37, + 0x4f, 0xa4, 0x4c, 0x04, 0xd4, 0x28, 0x84, 0xe7, 0xcb, 0x26, 0x38, 0x2b, 0xe5, 0x33, 0xbf, 0x94, + 0xb6, 0xac, 0x3d, 0x34, 0x8e, 0x94, 0x01, 0x57, 0x73, 0xc7, 0x2c, 0x41, 0xaa, 0x8a, 0x8e, 0x2c, + 0xba, 0x0c, 0x58, 0xb4, 0x0e, 0xb0, 0xef, 0x5f, 0xe0, 0xee, 0xee, 0x81, 0x09, 0xd4, 0x39, 0xf5, + 0xcb, 0x9b, 0x31, 0x57, 0xe9, 0x30, 0x4b, 0xd9, 0xd8, 0xc8, 0x88, 0x42, 0xcc, 0xa9, 0xbe, 0x0c, + 0x21, 0xa4, 0xa6, 0x22, 0xad, 0xa7, 0xe3, 0x6e, 0xb8, 0x91, 0x82, 0x95, 0x74, 0xad, 0x5a, 0xf9, + 0xae, 0x6f, 0xba, 0xda, 0x3a, 0xb1, 0xe3, 0x83, 0x7b, 0xb8, 0x5f, 0x8e, 0x95, 0xfc, 0xd7, 0x0f, + 0x58, 0xee, 0xfe, 0x5f, 0xe0, 0x51, 0x8d, 0x62, 0x9d, 0x0d, 0x73, 0x1f, 0xfc, 0x47, 0xbe, 0x50, + 0xe9, 0x12, 0x56, 0xb9, 0x2a, 0x5a, 0x50, 0xc5, 0x76, 0x88, 0xbb, 0x54, 0x1b, 0xfb, 0xba, 0x5b, + 0xc5, 0xc6, 0x1b, 0xf3, 0xa4, 0x91, 0x0e, 0xe8, 0x39, 0x46, 0xf0, 0x05, 0xb0, 0xe5, 0x99, 0x3c, + 0x6c, 0x77, 0x08, 0x5e, 0x8c, 0x69, 0x6e, 0x49, 0x2b, 0x33, 0x0a, 0xa8, 0xb8, 0xd0, 0xce, 0xdb, + 0x32, 0x3b, 0xfc, 0x82, 0x52, 0xeb, 0x61, 0x92, 0xab, 0xaa, 0x0d, 0x6a, 0x2d, 0x03, 0x87, 0x2f, + 0x27, 0xe3, 0x2a, 0xdb, 0x0b, 0x06, 0xa6, 0xb7, 0xb7, 0x2a, 0x30, 0xb2, 0x46, 0xf8, 0x82, 0xc9, + 0xed, 0x1d, 0xf0, 0x95, 0x07, 0x19, 0x20, 0xb2, 0x28, 0x22, 0x72, 0x4f, 0x37, 0xfa, 0xa2, 0x0c, + 0xe4, 0xb8, 0x13, 0xc0, 0x2e, 0xdc, 0xe9, 0xa8, 0x30, 0x1d, 0x21, 0x22, 0x64, 0xd8, 0x1d, 0x66, + 0x68, 0xd5, 0x05, 0xee, 0xad, 0xba, 0x59, 0xf9, 0xf8, 0x81, 0x4b, 0x4b, 0x87, 0x19, 0xb8, 0x5b, + 0x90, 0xd0, 0x47, 0x29, 0x28, 0x09, 0x35, 0x1d, 0x78, 0xad, 0x03, 0x98, 0x88, 0x80, 0xc6, 0x22, + 0x16, 0xb0, 0x7c, 0xdd, 0x21, 0x32, 0x85, 0x49, 0x3b, 0x5f, 0xcb, 0xba, 0x89, 0x76, 0x29, 0x46, + 0x39, 0x03, 0x42, 0xb9, 0x51, 0xca, 0x12, 0xf0, 0x3c, 0x00, 0xe1, 0x3e, 0x55, 0x56, 0x20, 0x80, + 0xe5, 0x04, 0x98, 0x2e, 0x1f, 0x5c, 0x5d, 0xab, 0x5a, 0xf3, 0x32, 0x51, 0x64, 0xa8, 0xb7, 0xcb, + 0x75, 0x5e, 0x85, 0x35, 0x17, 0x8f, 0x19, 0x03, 0x73, 0x1c, 0x98, 0xd4, 0x2a, 0x23, 0x58, 0xa1, + 0xe1, 0x51, 0xcd, 0x9b, 0x0b, 0x08, 0x2d, 0x19, 0x78, 0x4a, 0xd8, 0x52, 0x51, 0x3f, 0xb9, 0x06, + 0x39, 0xa0, 0x91, 0x99, 0xaf, 0xa8, 0x31, 0xd2, 0x43, 0x81, 0xb9, 0x54, 0x91, 0x98, 0xd1, 0x7d, + 0xfe, 0x69, 0x69, 0x4b, 0xee, 0xd9, 0xe1, 0x37, 0xcb, 0x7c, 0xb5, 0xfa, 0x14, 0xae, 0x3b, 0x6c, + 0xec, 0xb1, 0x57, 0x9f, 0xbc, 0x86, 0x0b, 0xc6, 0xf4, 0x16, 0x42, 0x31, 0xb3, 0x70, 0x8c, 0xa5, + 0x9f, 0x66, 0x5d, 0x8a, 0x01, 0xcb, 0x37, 0xca, 0x60, 0x19, 0x6a, 0x44, 0xfd, 0xaa, 0x1a, 0x06, + 0xef, 0xb0, 0xd1, 0x29, 0xa7, 0xb3, 0xc5, 0xb1, 0x28, 0x8c, 0xc0, 0xf1, 0xee, 0x70, 0x57, 0xd6, + 0x74, 0x1e, 0xa4, 0xd0, 0x75, 0xa5, 0xd4, 0x51, 0xfb, 0x3a, 0x63, 0x26, 0x0f, 0x81, 0xb0, 0x51, + 0xc5, 0x68, 0x4f, 0x82, 0x35, 0x70, 0x77, 0xb0, 0x59, 0x4b, 0xf9, 0xc2, 0x12, 0xeb, 0x03, 0x00, + 0x66, 0x4c, 0x5e, 0xcb, 0xb0, 0xda, 0x60, 0xca, 0xe4, 0xb1, 0x49, 0x47, 0xbd, 0x2c, 0x5b, 0x22, + 0x52, 0xea, 0x98, 0x52, 0x2c, 0xa9, 0xdb, 0x4a, 0x03, 0xd5, 0x6b, 0xb9, 0x4d, 0xcb, 0x80, 0x99, + 0xba, 0x15, 0x64, 0x90, 0x84, 0x36, 0x58, 0xab, 0xdc, 0xcf, 0xca, 0xc5, 0x5a, 0xa5, 0x82, 0x27, + 0x00, 0x76, 0xcb, 0x55, 0x24, 0xd3, 0x36, 0xe4, 0x18, 0xe9, 0x8d, 0xb0, 0x85, 0x69, 0xc2, 0xfa, + 0xd4, 0x0c, 0x94, 0x30, 0x52, 0xfd, 0xae, 0xb7, 0x09, 0x7d, 0x94, 0x2a, 0xbb, 0xbc, 0x07, 0xb8, + 0x1c, 0x22, 0x81, 0x63, 0x0b, 0x81, 0x8f, 0xa8, 0x88, 0x27, 0x4f, 0x59, 0x72, 0x79, 0x4b, 0x63, + 0x14, 0xcf, 0x27, 0x3c, 0x4c, 0x0a, 0xbb, 0xdd, 0x6f, 0x96, 0xdb, 0x4e, 0x88, 0x56, 0x5d, 0x9c, + 0xfb, 0xa9, 0x84, 0xc1, 0xbc, 0x46, 0x5c, 0x2b, 0x4f, 0xf0, 0xcd, 0x53, 0x12, 0xf0, 0x05, 0x06, + 0x09, 0x14, 0x48, 0xf0, 0x6a, 0xcf, 0xea, 0xca, 0x43, 0x50, 0x3f, 0xba, 0x68, 0xe0, 0x65, 0x9e, + 0x4f, 0x63, 0x1a, 0x6c, 0x84, 0xa7, 0xa5, 0xcb, 0x81, 0xc5, 0xd5, 0x55, 0x9f, 0x25, 0xbb, 0xbb, + 0x73, 0x58, 0xa4, 0x8e, 0x32, 0x74, 0x75, 0x58, 0x1d, 0x2a, 0x9a, 0x97, 0xff, 0x98, 0x2b, 0x60, + 0x18, 0x1a, 0x26, 0xa8, 0xcc, 0xb9, 0x88, 0x38, 0x6c, 0x36, 0x18, 0xa5, 0x89, 0x68, 0x0d, 0x90, + 0x63, 0xe8, 0xe7, 0x0e, 0x74, 0xa4, 0x2e, 0x56, 0x38, 0xd9, 0x38, 0x52, 0x32, 0x8f, 0x04, 0x7a, + 0xeb, 0x23, 0xcb, 0x7a, 0x64, 0x8d, 0xd1, 0xf2, 0xef, 0x3b, 0xb4, 0x58, 0xb8, 0x60, 0x34, 0x60, + 0xb9, 0x15, 0xf4, 0xf2, 0xbc, 0xcf, 0x58, 0x1a, 0x50, 0x37, 0xcf, 0xb6, 0x8c, 0x33, 0x0e, 0xc7, + 0x85, 0xcc, 0xf3, 0x06, 0xf6, 0x8b, 0x9b, 0xc2, 0x97, 0x07, 0x28, 0x4e, 0x75, 0xd4, 0x51, 0xe7, + 0x30, 0xe2, 0x43, 0x35, 0x0b, 0x09, 0x48, 0x12, 0x30, 0x5b, 0x79, 0x87, 0xf4, 0x50, 0x57, 0x77, + 0xf4, 0x41, 0x57, 0x01, 0x76, 0xcb, 0xc6, 0xe9, 0x68, 0x01, 0xa4, 0x0c, 0x1a, 0xf7, 0x74, 0x2b, + 0x32, 0x65, 0x36, 0x5b, 0x5e, 0xcd, 0x38, 0xeb, 0x1d, 0x1e, 0x41, 0x96, 0x57, 0x1b, 0x2b, 0x38, + 0xb7, 0x86, 0xe9, 0xf8, 0xfc, 0xfc, 0xdc, 0x96, 0x67, 0x85, 0x05, 0xb8, 0x38, 0x07, 0xc4, 0xf4, + 0x57, 0xf0, 0x9d, 0x76, 0x28, 0xf2, 0x39, 0x5d, 0xfd, 0xd5, 0x08, 0x61, 0xd7, 0x89, 0xb1, 0x52, + 0x27, 0x86, 0x69, 0x0c, 0xfb, 0x80, 0x41, 0xfc, 0xc7, 0x48, 0x5b, 0x5a, 0x2d, 0x81, 0x61, 0xf5, + 0xc9, 0xeb, 0x12, 0x4f, 0xeb, 0x7c, 0x6d, 0xbe, 0xf7, 0x41, 0x28, 0x2b, 0x2f, 0x5f, 0xb7, 0x7e, + 0x59, 0x43, 0x7e, 0xf8, 0x6c, 0xe4, 0xb8, 0xfc, 0xad, 0xce, 0x5b, 0xf4, 0xf3, 0xdf, 0xf3, 0x2c, + 0xa1, 0xb9, 0x97, 0x16, 0xb2, 0xe2, 0x59, 0x53, 0xae, 0x5a, 0x25, 0x14, 0x94, 0xab, 0x1c, 0xa2, + 0x1b, 0xe5, 0x1c, 0x79, 0x20, 0x58, 0x83, 0x86, 0x3b, 0xe3, 0x17, 0x3c, 0xab, 0xd7, 0x9c, 0xa3, + 0xef, 0x19, 0x95, 0x97, 0x23, 0x36, 0x5e, 0xeb, 0x2b, 0x46, 0xd5, 0xa5, 0x42, 0xba, 0xf5, 0x7a, + 0xf5, 0x06, 0x6d, 0xe5, 0x51, 0x9e, 0x7c, 0xf1, 0x93, 0xba, 0x63, 0xd4, 0xd8, 0xfa, 0xca, 0xeb, + 0xdc, 0xda, 0x11, 0xc9, 0x8d, 0xe5, 0xe7, 0xfa, 0xc5, 0x6e, 0xf3, 0xd5, 0xf7, 0xea, 0xe2, 0x46, + 0x58, 0xde, 0xf9, 0x88, 0x36, 0xd0, 0x1d, 0x83, 0x5c, 0xd1, 0xde, 0x40, 0xa1, 0x2f, 0x32, 0xfc, + 0xb5, 0x8a, 0xbc, 0xfe, 0xe1, 0x36, 0x6f, 0x8b, 0x3f, 0x78, 0x9e, 0xa6, 0x7a, 0x63, 0xfc, 0xf6, + 0x3b, 0xe6, 0xcd, 0xa1, 0x6e, 0x0b, 0x17, 0x94, 0x77, 0xa8, 0x7e, 0x1e, 0x15, 0x95, 0x12, 0xb5, + 0x8d, 0x5f, 0x53, 0x05, 0xb3, 0x5b, 0x17, 0xe2, 0x8d, 0xe6, 0xef, 0xab, 0xec, 0xb5, 0x16, 0x96, + 0xf9, 0x47, 0x75, 0x23, 0xc2, 0x56, 0x96, 0x0c, 0xb9, 0x28, 0x6e, 0x8f, 0xe0, 0x00, 0xe9, 0xb9, + 0x6d, 0x87, 0x15, 0x86, 0x4e, 0xf7, 0xc3, 0x2f, 0x3f, 0xff, 0xfa, 0xb1, 0x3b, 0xf6, 0x6c, 0x4b, + 0xe6, 0xe1, 0xba, 0xd7, 0xf9, 0xf7, 0x5f, 0x6e, 0x96, 0xbd, 0x95, 0x7b, 0xe7, 0xfc, 0x52, 0x74, + 0x54, 0x13, 0xc6, 0xd0, 0xe8, 0x0c, 0x55, 0xe8, 0x3d, 0x08, 0xac, 0x54, 0x1e, 0xe9, 0x1c, 0xf1, + 0x34, 0xf0, 0x2a, 0x8f, 0x2f, 0x8d, 0x0b, 0x1c, 0xb5, 0x2b, 0x11, 0xcb, 0xf2, 0x56, 0x49, 0x3d, + 0x09, 0x78, 0x9a, 0x65, 0x8e, 0xbd, 0xfe, 0xad, 0x92, 0xa5, 0x7f, 0x72, 0x03, 0x78, 0x00, 0x07, + 0x2e, 0x49, 0x3c, 0x31, 0x6b, 0x27, 0xee, 0xb2, 0xad, 0xee, 0x86, 0x2b, 0xe3, 0x2f, 0x74, 0xca, + 0xfb, 0x14, 0xcf, 0xe1, 0xf9, 0x0d, 0x3c, 0xb7, 0x57, 0xe9, 0x70, 0x34, 0x74, 0xd4, 0x87, 0x5f, + 0x62, 0xc7, 0xf6, 0xf1, 0x19, 0x25, 0xd7, 0xd4, 0x1c, 0xff, 0x12, 0x3b, 0xb6, 0x8d, 0xe7, 0xb3, + 0xf5, 0x50, 0x3e, 0xc3, 0x2d, 0xab, 0x3a, 0xd1, 0xa4, 0xc0, 0x88, 0x9a, 0xbb, 0xa8, 0x7a, 0x1f, + 0xca, 0x1e, 0x0c, 0x74, 0xb6, 0xf0, 0xa6, 0x3a, 0x36, 0xa5, 0x72, 0x9b, 0xdc, 0x58, 0xe6, 0x3e, + 0xfe, 0x15, 0x82, 0xe4, 0xc2, 0xa4, 0x10, 0x7f, 0xde, 0x29, 0xb6, 0x73, 0xe4, 0xff, 0x12, 0xbf, + 0x11, 0x7e, 0x52, 0x87, 0x9e, 0x3c, 0x54, 0x36, 0x8d, 0x8b, 0x41, 0x15, 0xe5, 0xc8, 0x2b, 0x31, + 0x49, 0x0b, 0x6d, 0x92, 0xfa, 0x06, 0x6b, 0x64, 0x07, 0xfe, 0x91, 0xed, 0x55, 0xaa, 0x1e, 0xe1, + 0x10, 0x7d, 0x9d, 0xe3, 0x9d, 0xb4, 0x5a, 0x70, 0x01, 0x74, 0x34, 0x02, 0xd1, 0x81, 0xe0, 0xc0, + 0xbd, 0x26, 0x91, 0x8d, 0x39, 0x9a, 0xdd, 0x1c, 0x03, 0x22, 0x79, 0x0e, 0xcf, 0xea, 0x80, 0xac, + 0x8b, 0x57, 0x2e, 0x20, 0x2c, 0xc6, 0xe5, 0xaa, 0x10, 0xba, 0x71, 0x57, 0xbc, 0x81, 0x9e, 0x1a, + 0xed, 0xd1, 0x06, 0x5c, 0xf7, 0xfe, 0x75, 0xc0, 0xae, 0x53, 0x56, 0x2e, 0x94, 0x18, 0xc4, 0xab, + 0x4c, 0x52, 0x41, 0x07, 0x72, 0x95, 0xa2, 0x34, 0x28, 0xef, 0x01, 0xdd, 0x7f, 0x58, 0x45, 0xcd, + 0x3a, 0x9d, 0x4e, 0x5f, 0x6d, 0xa9, 0x4a, 0xd2, 0x4a, 0xfe, 0x24, 0x0f, 0x71, 0xcf, 0x12, 0x6d, + 0xf2, 0x06, 0x6d, 0xc1, 0x79, 0x5b, 0xd8, 0x7d, 0x89, 0xaa, 0xa5, 0x98, 0x8d, 0xf7, 0x40, 0xea, + 0x7c, 0xc2, 0xfe, 0x56, 0x98, 0x68, 0x0e, 0xc6, 0x8d, 0x34, 0x55, 0x55, 0x01, 0xca, 0x9e, 0xd3, + 0x11, 0x99, 0x67, 0xb0, 0x81, 0x78, 0xe6, 0x6f, 0x73, 0x1a, 0x76, 0x51, 0xe9, 0x5e, 0xa3, 0xa6, + 0xa9, 0xa9, 0x68, 0x99, 0x26, 0xcd, 0xa3, 0x65, 0x5a, 0x83, 0xfe, 0x8d, 0x99, 0x7c, 0x56, 0xd5, + 0x74, 0x0b, 0xc1, 0x67, 0x98, 0x4f, 0x90, 0xb1, 0x0c, 0xf9, 0xf1, 0x0a, 0x5b, 0xa9, 0xe5, 0x3b, + 0x91, 0xd4, 0xf3, 0x2d, 0x2c, 0x42, 0x8b, 0xaa, 0x86, 0x6e, 0x51, 0xcb, 0x81, 0xba, 0x54, 0xce, + 0xa2, 0x6a, 0x20, 0xc6, 0xa7, 0x8c, 0xca, 0x14, 0x79, 0x27, 0x70, 0x07, 0x95, 0x8b, 0x62, 0x9b, + 0x4c, 0xc6, 0x84, 0x47, 0x69, 0x2c, 0x58, 0x47, 0x9c, 0xcd, 0x13, 0x70, 0x97, 0xf5, 0xcb, 0x33, + 0xee, 0xb9, 0xd3, 0x08, 0x6f, 0x33, 0x60, 0x98, 0xad, 0xe7, 0xd5, 0xab, 0x1b, 0x6e, 0x28, 0x3b, + 0x8d, 0x7d, 0xba, 0x56, 0x7a, 0x62, 0x6a, 0x0e, 0x03, 0x73, 0xd1, 0x05, 0x30, 0x83, 0x11, 0x55, + 0x89, 0xba, 0xe5, 0xf7, 0x55, 0xcd, 0x64, 0x4a, 0xd6, 0x5e, 0x3d, 0xae, 0xcf, 0x49, 0xdd, 0xa5, + 0x7c, 0xef, 0xd0, 0x0e, 0xf3, 0x96, 0x53, 0x2a, 0x26, 0x3c, 0x09, 0x6d, 0x3c, 0xf0, 0x5d, 0xb9, + 0xbe, 0x98, 0x50, 0x50, 0x5c, 0xdc, 0x55, 0xf9, 0xe7, 0x73, 0x95, 0x86, 0x3b, 0x10, 0xca, 0x80, + 0xd1, 0xfe, 0x0d, 0x42, 0x73, 0xcb, 0xee, 0x40, 0xee, 0xb9, 0xae, 0xfe, 0x02, 0x55, 0x36, 0x1e, + 0xdc, 0x96, 0xb3, 0x96, 0xdc, 0x11, 0xf8, 0x8b, 0x2f, 0xc8, 0x4c, 0xe5, 0x4d, 0xb4, 0x9a, 0x2d, + 0x90, 0xbd, 0x3d, 0x02, 0xaf, 0xd5, 0x4d, 0x2c, 0x0b, 0xd6, 0x13, 0x40, 0x10, 0x42, 0xac, 0x7b, + 0x17, 0xb9, 0x5f, 0x40, 0x4a, 0xc7, 0x48, 0x96, 0x2d, 0x54, 0x16, 0xb1, 0x72, 0x5b, 0x2e, 0x98, + 0x5a, 0x8f, 0x8a, 0x3c, 0x8e, 0xf4, 0x9d, 0xc3, 0x6e, 0x37, 0x4e, 0xd8, 0x6f, 0x32, 0xd1, 0x98, + 0x27, 0xa3, 0x0c, 0xf8, 0x89, 0x35, 0xb9, 0x2e, 0xf9, 0x8d, 0xdc, 0x76, 0xb3, 0x74, 0x58, 0x74, + 0x05, 0x64, 0xfb, 0x14, 0x32, 0xd6, 0x6e, 0xde, 0xeb, 0x9f, 0xea, 0xa7, 0x69, 0xca, 0xa0, 0xc7, + 0xb6, 0x1e, 0x4d, 0xc9, 0xed, 0x01, 0xde, 0x09, 0xb4, 0x4f, 0x4f, 0x8e, 0x82, 0xc0, 0x3e, 0x33, + 0xd6, 0xea, 0xea, 0x3f, 0x33, 0x80, 0x85, 0x25, 0x8b, 0xb3, 0x8c, 0x13, 0xf0, 0xa2, 0xe5, 0x7d, + 0x4b, 0xfc, 0x0b, 0x02, 0x93, 0xde, 0xd9, 0xa3, 0x6d, 0x7f, 0x7d, 0x00, 0xde, 0x59, 0x4f, 0x92, + 0xf4, 0xda, 0x92, 0x46, 0x10, 0xd9, 0x95, 0xdb, 0xb0, 0x75, 0x3f, 0xfe, 0xc2, 0xcf, 0x54, 0x9e, + 0x00, 0x90, 0xd1, 0x63, 0x6b, 0x3a, 0x85, 0x88, 0xc0, 0xf8, 0x2d, 0xb3, 0x7a, 0xb6, 0xd5, 0x3e, + 0xe9, 0xd1, 0x7d, 0xb3, 0xfa, 0xdb, 0x66, 0x99, 0x93, 0x1e, 0x35, 0x67, 0x1d, 0x7e, 0x69, 0x56, + 0x63, 0xc5, 0x32, 0xd9, 0x3c, 0xdb, 0xdb, 0x7d, 0xfc, 0xed, 0xe3, 0x60, 0xb0, 0x81, 0xd2, 0x3a, + 0xe2, 0x2c, 0x01, 0xcb, 0x1e, 0x14, 0x82, 0x06, 0x88, 0xac, 0x97, 0x92, 0xc0, 0xbf, 0xfb, 0xf0, + 0x3f, 0xbf, 0xef, 0x9b, 0x2d, 0x0f, 0x42, 0x00, 0x00 };