diff --git a/examples/graphictest_kbv/graphictest_kbv.ino b/examples/graphictest_kbv/graphictest_kbv.ino index f36571a..797bfc0 100644 --- a/examples/graphictest_kbv/graphictest_kbv.ino +++ b/examples/graphictest_kbv/graphictest_kbv.ino @@ -88,15 +88,13 @@ void setup(void) { // while (!Serial) ; //hangs a Leonardo until you connect a Serial if (!Serial) delay(5000); //allow some time for Leonardo Serial.println("Serial took " + String((millis() - when)) + "ms to start"); - static uint16_t identifier; - // tft.reset(); //we can't read ID on 9341 until begin() - g_identifier = tft.readID(); // + // tft.reset(); //hardware reset + uint16_t ID = tft.readID(); // Serial.print("ID = 0x"); - Serial.println(g_identifier, HEX); - if (g_identifier == 0x00D3 || g_identifier == 0xD3D3) g_identifier = 0x9481; // write-only shield - if (g_identifier == 0xFFFF) g_identifier = 0x9341; // serial -// g_identifier = 0x9329; // force ID - tft.begin(g_identifier); + Serial.println(ID, HEX); + if (ID == 0x00D3 == 0xD3D3) ID = 0x9481; // write-only shield +// ID = 0x9329; // force ID + tft.begin(ID); } #if defined(MCUFRIEND_KBV_H_) @@ -133,17 +131,23 @@ void windowScroll(int16_t x, int16_t y, int16_t wid, int16_t ht, int16_t dx, int } } +void printmsg(int row, const char *msg) +{ + tft.setTextColor(YELLOW, BLACK); + tft.setCursor(0, row); + tft.println(msg); +} + void loop(void) { uint8_t aspect; uint16_t pixel; - char *aspectname[] = { + const char *aspectname[] = { "PORTRAIT", "LANDSCAPE", "PORTRAIT_REV", "LANDSCAPE_REV" }; - char *colorname[] = { "BLUE", "GREEN", "RED", "GRAY" }; + const char *colorname[] = { "BLUE", "GREEN", "RED", "GRAY" }; uint16_t colormask[] = { 0x001F, 0x07E0, 0xF800, 0xFFFF }; - uint16_t dx, rgb, n, wid, ht; + uint16_t dx, rgb, n, wid, ht, msglin; tft.setRotation(0); -// for (uint8_t i = 0; i < 2; i++) showhanzi(0, 0, i), delay(1000); runtests(); delay(2000); if (tft.height() > 64) { @@ -152,13 +156,15 @@ void loop(void) { tft.setRotation(aspect); wid = tft.width(); ht = tft.height(); + msglin = (ht > 160) ? 200 : 112; testText(); dx = wid / 32; for (n = 0; n < 32; n++) { rgb = n * 8; rgb = tft.color565(rgb, rgb, rgb); - tft.fillRect(n * dx, 48, dx, 64, rgb & colormask[aspect]); + tft.fillRect(n * dx, 48, dx, 63, rgb & colormask[aspect]); } + tft.drawRect(0, 48 + 63, wid, 1, WHITE); tft.setTextSize(2); tft.setTextColor(colormask[aspect], BLACK); tft.setCursor(0, 72); @@ -166,17 +172,25 @@ void loop(void) { tft.setTextColor(WHITE); tft.println(" COLOR GRADES"); tft.setTextColor(WHITE, BLACK); - tft.setCursor(0, 184); - tft.println(aspectname[aspect]); + printmsg(184, aspectname[aspect]); delay(1000); tft.drawPixel(0, 0, YELLOW); pixel = tft.readPixel(0, 0); + tft.setTextSize((ht > 160) ? 2 : 1); //for messages #if defined(MCUFRIEND_KBV_H_) +#if 1 extern const uint8_t penguin[]; tft.setAddrWindow(wid - 40 - 40, 20 + 0, wid - 1 - 40, 20 + 39); tft.pushColors(penguin, 1600, 1); - tft.setTextColor(WHITE, BLACK); - tft.println("VERTICAL SCROLL UP"); +#else + extern const uint8_t wifi_full[]; + tft.setAddrWindow(wid - 40 - 40, 20 + 0, wid - 40 - 40 + 31, 20 + 31); + tft.pushColors(wifi_full, 1024, 1, true); +#endif + tft.setAddrWindow(0, 0, wid - 1, ht - 1); + if (aspect & 1) tft.drawRect(wid - 1, 0, 1, ht, WHITE); + else tft.drawRect(0, ht - 1, wid, 1, WHITE); + printmsg(msglin, "VERTICAL SCROLL UP"); uint16_t maxscroll; if (tft.getRotation() & 1) maxscroll = wid; else maxscroll = ht; @@ -184,37 +198,36 @@ void loop(void) { tft.vertScroll(0, maxscroll, i); delay(10); } - tft.vertScroll(0, maxscroll, 0); - tft.setCursor(0, 200); - tft.println("VERTICAL SCROLL DN"); + delay(1000); + printmsg(msglin, "VERTICAL SCROLL DN"); for (uint16_t i = 1; i <= maxscroll; i++) { tft.vertScroll(0, maxscroll, 0 - (int16_t)i); delay(10); } + tft.vertScroll(0, maxscroll, 0); + printmsg(msglin, "SCROLL DISABLED "); + delay(1000); - tft.vertScroll(0, maxscroll, 0); if ((aspect & 1) == 0) { //Portrait - tft.setCursor(0, 200); tft.setTextColor(BLUE, BLACK); - tft.println("ONLY THE COLOR BAND"); + printmsg(msglin, "ONLY THE COLOR BAND"); for (uint16_t i = 1; i <= 64; i++) { tft.vertScroll(48, 64, i); delay(20); } delay(1000); - tft.vertScroll(0, maxscroll, 0); } #endif - tft.setCursor(0, 200); tft.setTextColor(YELLOW, BLACK); if (pixel == YELLOW) { - tft.println("SOFTWARE SCROLL "); + printmsg(msglin, "SOFTWARE SCROLL "); #if 0 + // diagonal scroll of block for (int16_t i = 45, dx = 2, dy = 1; i > 0; i -= dx) { windowScroll(24, 8, 90, 40, dx, dy, scrollbuf); } #else - // scroll a whole width of the screen + // plain horizontal scroll of block n = (wid > 320) ? 320 : wid; for (int16_t i = n, dx = 4, dy = 0; i > 0; i -= dx) { windowScroll(0, 200, n, 16, dx, dy, scrollbuf); @@ -232,7 +245,7 @@ void loop(void) { delay(5000); } } - tft.println("INVERT DISPLAY"); + printmsg(msglin, "INVERT DISPLAY "); tft.invertDisplay(true); delay(2000); tft.invertDisplay(false); @@ -272,7 +285,7 @@ void runtests(void) #if defined(MCUFRIEND_KBV_H_) tft.print("MCUFRIEND "); #if MCUFRIEND_KBV_H_ != 0 - tft.print(0.01 * MCUFRIEND_KBV_H_, 1); + tft.print(0.01 * MCUFRIEND_KBV_H_, 2); #else tft.print("for"); #endif @@ -304,8 +317,8 @@ void runtests(void) g_identifier = tft.readID(); tft.print("ID: 0x"); tft.println(tft.readID(), HEX); - tft.print("Reg(00):0x"); - tft.println(tft.readReg(0x00), HEX); +// tft.print("Reg(00):0x"); +// tft.println(tft.readReg(0x00), HEX); tft.print("F_CPU:"); tft.print(0.000001 * F_CPU); #if defined(__OPTIMIZE_SIZE__) diff --git a/examples/graphictest_kbv/icons.c b/examples/graphictest_kbv/icons.c index 97edda8..81b4303 100644 --- a/examples/graphictest_kbv/icons.c +++ b/examples/graphictest_kbv/icons.c @@ -1,4 +1,8 @@ +#if defined(__arm__) || defined(ESP8266) +#define PROGMEM +#else #include +#endif const unsigned char PROGMEM penguin[3200] = { /* 0X00,0X10,0X28,0X00,0X28,0X00,0X01,0X1B, */ 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, @@ -406,3 +410,133 @@ const unsigned char PROGMEM icon_40x40[3200] = { /* 0X00,0X10,0X28,0X00,0X28,0X 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, 0XFF, }; +const unsigned char PROGMEM wifi_full[2048] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x21, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, +0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, +0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, +0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x71, 0xc2, 0x41, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x28, 0xa0, 0xcb, 0x23, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xc3, 0x03, 0x18, 0x60, 0x00, 0x00, +0x08, 0x20, 0xd3, 0x23, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xc3, 0x03, 0x00, 0x00, +0x59, 0x61, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x41, 0x01, +0x8a, 0x22, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xf4, 0x89, 0xfe, 0x34, 0xfe, 0xb7, 0xff, 0x19, 0xff, 0x3a, 0xff, 0x3a, 0xfe, 0xd8, +0xfe, 0x76, 0xf5, 0xd1, 0xf5, 0x0c, 0xeb, 0xe6, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xf4, 0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x54, +0xf4, 0x47, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xf4, 0xec, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0xf5, 0x90, 0xec, 0x06, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xff, 0x9d, 0xff, 0xff, 0xff, 0xbd, 0xff, 0x7c, 0xff, 0x7c, 0xff, 0x9d, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xf6, 0x13, 0xeb, 0xe5, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xf4, 0x47, 0xeb, 0xe5, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xc4, 0xf4, 0x48, 0xf5, 0x2e, 0xfe, 0x55, 0xff, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xf4, 0xaa, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xc4, 0xf5, 0x0c, 0xfe, 0xf9, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xb1, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf4, 0x27, 0xf4, 0xcb, 0xf5, 0x0c, 0xf5, 0x0c, +0xf4, 0xab, 0xf4, 0x27, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf4, 0xec, +0xff, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x34, 0xeb, 0xc4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xfe, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xfe, 0x76, 0xf4, 0xec, 0xeb, 0xc4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xc5, 0xfe, 0x34, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf6, 0x13, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7c, 0xf5, 0x6f, 0xeb, 0xc4, +0xeb, 0xa4, 0xeb, 0xa4, 0xf5, 0x4e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xf2, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf4, 0x69, 0xf5, 0x0c, 0xf4, 0xaa, 0xf4, 0x89, +0xf4, 0xcb, 0xf5, 0x6f, 0xfe, 0x55, 0xff, 0x9d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, +0xf4, 0x48, 0xeb, 0xa4, 0xeb, 0xa4, 0xf5, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xf5, 0x0d, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xc4, 0xf4, 0xec, 0xff, 0x19, 0xff, 0xff, 0xff, 0xff, +0xff, 0xde, 0xf5, 0x0d, 0xeb, 0xa4, 0xeb, 0xa4, 0xf5, 0x4e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, +0xff, 0xbe, 0xf4, 0x27, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf5, 0x4e, 0xff, 0xde, +0xff, 0xff, 0xff, 0xff, 0xf5, 0x4e, 0xeb, 0xa4, 0xeb, 0xa4, 0xfe, 0x54, 0xff, 0xff, 0xff, 0xff, +0xff, 0xff, 0xfe, 0xb7, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xc4, 0xff, 0x3a, 0xff, 0x9d, +0xff, 0x9c, 0xff, 0x19, 0xf6, 0x13, 0xf4, 0xaa, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf4, 0x48, +0xff, 0x7c, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xec, 0xeb, 0xa4, 0xeb, 0xc5, 0xff, 0x7c, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xf4, 0xec, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xfe, 0xd8, 0xff, 0x19, +0xff, 0x19, 0xff, 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xf4, 0xaa, 0xeb, 0xa4, 0xeb, 0xa4, +0xf4, 0x47, 0xff, 0x9d, 0xff, 0xff, 0xff, 0xbe, 0xf4, 0x47, 0xeb, 0xa4, 0xf4, 0xec, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xf4, 0x27, 0xf5, 0xd1, 0xff, 0xbd, 0xff, 0xff, 0xf5, 0xd2, 0xeb, 0xa4, +0xeb, 0xa4, 0xf4, 0xaa, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xd8, 0xeb, 0xa4, 0xeb, 0xa4, 0xfe, 0xf9, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xcb, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xec, 0x06, 0xfe, 0xb7, 0xff, 0xff, 0xfe, 0x34, +0xeb, 0xa4, 0xeb, 0xa4, 0xf6, 0x13, 0xff, 0xff, 0xff, 0xff, 0xf4, 0xec, 0xeb, 0xa4, 0xf5, 0x0c, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, +0xf4, 0x27, 0xf5, 0x4e, 0xf5, 0x2d, 0xeb, 0xe5, 0xeb, 0xa4, 0xeb, 0xc4, 0xfe, 0x96, 0xff, 0xff, +0xf5, 0x6f, 0xeb, 0xa4, 0xeb, 0xe5, 0xff, 0xbe, 0xff, 0xff, 0xfe, 0xf9, 0xeb, 0xa4, 0xeb, 0xc4, +0xff, 0x9d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xde, 0xeb, 0xc5, 0xeb, 0xa4, 0xeb, 0xa4, 0x71, 0xc2, +0x92, 0x42, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xeb, 0xa4, 0xf4, 0xec, +0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0x9d, 0xec, 0x48, 0xeb, 0x84, 0xeb, 0xc5, 0xff, 0x5b, +0xff, 0xde, 0xec, 0x07, 0xe3, 0x84, 0xf5, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xec, 0x28, 0xe3, 0x84, +0xf6, 0x14, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0xab, 0xe3, 0x64, 0xe3, 0x64, 0x79, 0xe2, +0xaa, 0x64, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0xc5, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xee, 0x98, 0xb2, 0x84, 0xb2, 0x84, 0xc4, 0x0c, +0xff, 0xff, 0xdd, 0x93, 0xb2, 0x84, 0xbb, 0x69, 0xff, 0xff, 0xff, 0xff, 0xd5, 0x11, 0xb2, 0x84, +0xcc, 0x4d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdd, 0x32, 0xb2, 0x84, 0xb2, 0x84, 0x92, 0x23, +0xaa, 0x64, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xc3, 0x8a, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xdf, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xf7, 0x3b, 0xff, 0x9d, 0xb2, 0x85, 0xb2, 0x84, 0xf7, 0x5c, 0xee, 0xfa, 0xd4, 0xd0, 0xb2, 0x84, +0xb2, 0xe6, 0xdd, 0x93, 0xcc, 0x6e, 0xbb, 0x68, 0xb2, 0x85, 0xb2, 0x84, 0xb2, 0x84, 0x92, 0x23, +0xaa, 0x64, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xbb, 0x07, 0xff, 0xff, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0x5c, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xdd, 0x52, 0xee, 0xd9, 0xbb, 0x07, 0xb2, 0x84, 0xb2, 0x85, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0x92, 0x23, +0xa2, 0x64, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xe5, 0xd5, +0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xcc, 0xaf, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0x92, 0x23, +0x9a, 0x43, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0xa5, +0xd4, 0xf0, 0xee, 0x99, 0xee, 0x78, 0xcc, 0x4d, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0x79, 0xc3, +0x81, 0xe3, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0x59, 0x42, +0x79, 0xc3, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, +0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0xb2, 0x84, 0x59, 0x42, +0x51, 0x42, 0x79, 0xc3, 0x79, 0xc3, 0x9a, 0x23, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, +0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, +0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, +0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0xa2, 0x63, 0x92, 0x23, 0x79, 0xc3, 0x79, 0xc3, 0x38, 0xe1, +}; \ No newline at end of file