From 502b595d5f341ff7e24f8b58e867fea55e2aa19b Mon Sep 17 00:00:00 2001 From: RockyZeroFour Date: Thu, 30 Jan 2025 09:49:33 +0100 Subject: [PATCH 1/6] Revert logo change - Reset logo to be neutral again --- CMakeLists.txt | 2 +- src/gfx_main.c | 4 +- src/theme/xlat_fm_logo_130px.c | 355 ------------------------- src/theme/xlat_logo_160px_width_idx8.c | 355 +++++++++++++++++++++++++ 4 files changed, 358 insertions(+), 358 deletions(-) delete mode 100644 src/theme/xlat_fm_logo_130px.c create mode 100644 src/theme/xlat_logo_160px_width_idx8.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fbdada..795d086 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,7 +176,7 @@ add_executable(${PROJECT_NAME} src/syscalls.c src/system_stm32f7xx.c src/xlat.c - src/theme/xlat_fm_logo_130px.c + src/theme/xlat_logo_160px_width_idx8.c drivers/tft/tft.c drivers/touchpad/touchpad.c ${HAL_Sources} diff --git a/src/gfx_main.c b/src/gfx_main.c index 00b7c8e..a457237 100644 --- a/src/gfx_main.c +++ b/src/gfx_main.c @@ -73,7 +73,7 @@ void gfx_set_device_label(const char * manufacturer, const char * productname, c lv_label_set_text(manufacturer_label, manufacturer); lv_label_set_text(productname_label, productname); - lv_obj_align(manufacturer_label, LV_ALIGN_TOP_RIGHT, -5, 5); + lv_obj_align(manufacturer_label, LV_ALIGN_TOP_RIGHT, 0, 0); lv_obj_align_to(vidpid_label, manufacturer_label, LV_ALIGN_OUT_LEFT_BOTTOM, -5, 0); lv_obj_align_to(productname_label, manufacturer_label, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 5); } @@ -335,7 +335,7 @@ static void gfx_xlat_gui(void) // Draw logo lv_obj_t * logo = lv_img_create(lv_scr_act()); lv_img_set_src(logo, &xlat_logo); - lv_obj_align(logo, LV_ALIGN_TOP_LEFT, 12, 5); + lv_obj_align(logo, LV_ALIGN_TOP_LEFT, 10, 10); /////////////////////////// // DEVICE INFO TOP RIGHT // diff --git a/src/theme/xlat_fm_logo_130px.c b/src/theme/xlat_fm_logo_130px.c deleted file mode 100644 index d3feb82..0000000 --- a/src/theme/xlat_fm_logo_130px.c +++ /dev/null @@ -1,355 +0,0 @@ -#ifdef __has_include - #if __has_include("lvgl.h") - #ifndef LV_LVGL_H_INCLUDE_SIMPLE - #define LV_LVGL_H_INCLUDE_SIMPLE - #endif - #endif -#endif - -#if defined(LV_LVGL_H_INCLUDE_SIMPLE) - #include "lvgl.h" -#else - #include "lvgl/lvgl.h" -#endif - - -#ifndef LV_ATTRIBUTE_MEM_ALIGN -#define LV_ATTRIBUTE_MEM_ALIGN -#endif - -#ifndef LV_ATTRIBUTE_IMG_XLAT_FM_LOGO_130PX -#define LV_ATTRIBUTE_IMG_XLAT_FM_LOGO_130PX -#endif - -const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_XLAT_FM_LOGO_130PX uint8_t xlat_fm_logo_130px_map[] = { - 0x00, 0x00, 0x00, 0x00, /*Color of index 0*/ - 0xff, 0xff, 0xff, 0x4a, /*Color of index 1*/ - 0xff, 0xff, 0xff, 0x62, /*Color of index 2*/ - 0xff, 0xff, 0xff, 0x3b, /*Color of index 3*/ - 0xff, 0xff, 0xff, 0x6a, /*Color of index 4*/ - 0xfe, 0xfe, 0xfe, 0x83, /*Color of index 5*/ - 0xfe, 0xfe, 0xfe, 0x8c, /*Color of index 6*/ - 0xfe, 0xfe, 0xfe, 0x92, /*Color of index 7*/ - 0xfe, 0xfe, 0xfe, 0x99, /*Color of index 8*/ - 0xfe, 0xfe, 0xfe, 0xa3, /*Color of index 9*/ - 0xfe, 0xfe, 0xfe, 0xab, /*Color of index 10*/ - 0xfe, 0xfe, 0xfe, 0xb3, /*Color of index 11*/ - 0xfe, 0xfe, 0xfe, 0xbd, /*Color of index 12*/ - 0xfe, 0xfe, 0xfe, 0xc3, /*Color of index 13*/ - 0xfe, 0xfe, 0xfe, 0xcb, /*Color of index 14*/ - 0xfe, 0xfe, 0xfe, 0xd5, /*Color of index 15*/ - 0xfe, 0xfe, 0xfe, 0xdc, /*Color of index 16*/ - 0xfe, 0xfe, 0xfe, 0xe4, /*Color of index 17*/ - 0xfe, 0xfe, 0xfe, 0xea, /*Color of index 18*/ - 0xfe, 0xfe, 0xfe, 0xf3, /*Color of index 19*/ - 0xfe, 0xfe, 0xfe, 0xfe, /*Color of index 20*/ - 0xfe, 0xfe, 0xff, 0x09, /*Color of index 21*/ - 0xfe, 0xfe, 0xff, 0x12, /*Color of index 22*/ - 0xfe, 0xff, 0xff, 0x5a, /*Color of index 23*/ - 0xfe, 0xff, 0xfe, 0x2b, /*Color of index 24*/ - 0xfe, 0xff, 0xfe, 0x54, /*Color of index 25*/ - 0xff, 0xff, 0xfe, 0x1a, /*Color of index 26*/ - 0xff, 0xff, 0xfe, 0x42, /*Color of index 27*/ - 0xff, 0xfe, 0xfe, 0x02, /*Color of index 28*/ - 0xff, 0xfe, 0xfe, 0x32, /*Color of index 29*/ - 0xff, 0xfe, 0xfe, 0x7b, /*Color of index 30*/ - 0xff, 0xfe, 0xff, 0x22, /*Color of index 31*/ - 0xff, 0xfe, 0xff, 0x71, /*Color of index 32*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 33*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 34*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 35*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 36*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 37*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 38*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 39*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 40*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 41*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 42*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 43*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 44*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 45*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 46*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 47*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 48*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 49*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 50*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 51*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 52*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 53*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 54*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 55*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 56*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 57*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 58*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 59*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 60*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 61*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 62*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 63*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 64*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 65*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 66*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 67*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 68*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 69*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 70*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 71*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 72*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 73*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 74*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 75*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 76*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 77*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 78*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 79*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 80*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 81*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 82*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 83*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 84*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 85*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 86*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 87*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 88*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 89*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 90*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 91*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 92*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 93*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 94*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 95*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 96*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 97*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 98*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 99*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 100*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 101*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 102*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 103*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 104*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 105*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 106*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 107*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 108*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 109*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 110*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 111*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 112*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 113*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 114*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 115*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 116*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 117*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 118*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 119*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 120*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 121*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 122*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 123*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 124*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 125*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 126*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 127*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 128*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 129*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 130*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 131*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 132*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 133*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 134*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 135*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 136*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 137*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 138*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 139*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 140*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 141*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 142*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 143*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 144*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 145*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 146*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 147*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 148*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 149*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 150*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 151*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 152*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 153*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 154*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 155*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 156*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 157*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 158*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 159*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 160*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 161*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 162*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 163*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 164*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 165*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 166*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 167*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 168*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 169*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 170*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 171*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 172*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 173*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 174*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 175*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 176*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 177*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 178*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 179*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 180*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 181*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 182*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 183*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 184*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 185*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 186*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 187*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 188*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 189*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 190*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 191*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 192*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 193*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 194*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 195*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 196*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 197*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 198*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 199*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 200*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 201*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 202*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 203*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 204*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 205*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 206*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 207*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 208*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 209*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 210*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 211*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 212*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 213*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 214*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 215*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 216*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 217*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 218*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 219*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 220*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 221*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 222*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 223*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 224*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 225*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 226*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 227*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 228*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 229*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 230*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 231*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 232*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 233*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 234*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 235*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 236*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 237*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 238*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 239*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 240*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 241*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 242*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 243*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 244*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 245*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 246*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 247*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 248*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 249*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 250*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 251*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 252*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 253*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 254*/ - 0x00, 0x00, 0x00, 0x00, /*Color of index 255*/ - - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0b, 0x13, 0x14, 0x1b, 0x1a, 0x0c, 0x0c, 0x0c, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x0c, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x1a, 0x01, 0x14, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x13, 0x14, 0x14, 0x14, 0x11, 0x1c, 0x1e, 0x14, 0x14, 0x13, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x14, 0x14, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0b, 0x14, 0x14, 0x13, 0x20, 0x1b, 0x00, 0x1b, 0x20, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x1b, 0x17, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x1b, 0x17, 0x19, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x14, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1f, 0x01, 0x01, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x01, 0x1b, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x03, 0x01, 0x03, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1d, 0x01, 0x1d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x1d, 0x01, 0x1b, 0x1a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x12, 0x14, 0x14, 0x14, 0x11, 0x11, 0x1f, 0x15, 0x10, 0x10, 0x10, 0x02, 0x00, 0x08, 0x10, 0x10, 0x1e, 0x20, 0x12, 0x14, 0x14, 0x14, 0x13, 0x05, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x09, 0x13, 0x14, 0x14, 0x14, 0x14, 0x09, 0x15, 0x04, 0x0e, 0x0f, 0x06, 0x00, 0x09, 0x14, 0x14, 0x10, 0x00, 0x1d, 0x10, 0x0f, 0x0e, 0x1b, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x05, 0x1c, 0x15, 0x1e, 0x13, 0x14, 0x14, 0x14, 0x14, 0x0a, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x0b, 0x14, 0x14, 0x14, 0x14, 0x13, 0x09, 0x1a, 0x00, 0x00, 0x00, 0x1c, 0x0d, 0x10, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x10, 0x10, 0x15, 0x00, 0x1c, 0x04, 0x11, 0x14, 0x14, 0x14, 0x0f, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x09, 0x13, 0x14, 0x14, 0x14, 0x14, 0x0c, 0x03, 0x00, 0x00, - 0x00, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x1c, 0x03, 0x14, 0x14, 0x14, 0x1b, 0x00, 0x10, 0x14, 0x14, 0x12, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x04, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0d, 0x0b, 0x14, 0x14, 0x05, 0x00, 0x0e, 0x14, 0x14, 0x0a, 0x00, 0x04, 0x14, 0x14, 0x12, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x05, 0x0d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x15, 0x00, 0x00, 0x00, 0x16, 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x12, 0x1d, 0x00, 0x00, 0x16, 0x14, 0x14, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x14, 0x10, 0x00, 0x1c, 0x09, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x12, 0x16, 0x00, 0x00, 0x1c, 0x05, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x19, 0x00, - 0x1c, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0d, 0x00, 0x02, 0x14, 0x14, 0x14, 0x1a, 0x16, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x11, 0x14, 0x14, 0x14, 0x14, 0x13, 0x16, 0x00, 0x00, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x19, 0x15, 0x13, 0x14, 0x14, 0x1e, 0x00, 0x07, 0x14, 0x14, 0x14, 0x14, 0x13, 0x0f, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x12, 0x12, 0x14, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x1a, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x11, 0x12, 0x14, 0x14, 0x14, 0x14, 0x11, 0x16, 0x00, 0x03, 0x14, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x14, 0x14, 0x0a, 0x00, 0x20, 0x14, 0x14, 0x14, 0x13, 0x13, 0x14, 0x14, 0x14, 0x04, 0x00, 0x15, 0x0a, 0x14, 0x14, 0x14, 0x14, 0x12, 0x11, 0x14, 0x14, 0x14, 0x14, 0x13, 0x1f, - 0x1c, 0x03, 0x13, 0x14, 0x14, 0x08, 0x03, 0x1f, 0x00, 0x08, 0x14, 0x14, 0x11, 0x00, 0x03, 0x14, 0x14, 0x14, 0x14, 0x05, 0x16, 0x00, 0x1f, 0x11, 0x14, 0x14, 0x14, 0x1b, 0x00, 0x01, 0x14, 0x14, 0x14, 0x13, 0x20, 0x16, 0x00, 0x1c, 0x01, 0x12, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x18, 0x14, 0x14, 0x14, 0x01, 0x00, 0x0e, 0x14, 0x14, 0x14, 0x09, 0x16, 0x00, 0x16, 0x0b, 0x14, 0x14, 0x14, 0x14, 0x10, 0x03, 0x1c, 0x1c, 0x1e, 0x14, 0x14, 0x14, 0x08, 0x00, 0x15, 0x0e, 0x14, 0x14, 0x14, 0x09, 0x1f, 0x00, 0x1c, 0x1b, 0x10, 0x14, 0x14, 0x14, 0x20, 0x00, 0x04, 0x14, 0x14, 0x14, 0x16, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x14, 0x14, 0x14, 0x1e, 0x1c, 0x11, 0x14, 0x14, 0x0a, 0x15, 0x1a, 0x13, 0x14, 0x14, 0x05, 0x00, 0x07, 0x14, 0x14, 0x14, 0x0a, 0x18, 0x1c, 0x00, 0x1a, 0x09, 0x14, 0x14, 0x14, 0x07, - 0x00, 0x1f, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x14, 0x14, 0x0b, 0x00, 0x04, 0x14, 0x14, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x14, 0x14, 0x01, 0x15, 0x11, 0x14, 0x14, 0x12, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x14, 0x12, 0x15, 0x02, 0x14, 0x14, 0x14, 0x1f, 0x1c, 0x13, 0x14, 0x14, 0x10, 0x15, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x15, 0x13, 0x14, 0x14, 0x09, 0x00, 0x06, 0x14, 0x14, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x0e, 0x00, 0x08, 0x14, 0x14, 0x10, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x01, 0x18, 0x14, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x15, 0x16, 0x15, 0x15, 0x1b, 0x14, 0x14, 0x14, 0x06, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x14, 0x14, 0x10, - 0x00, 0x01, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x1c, 0x13, 0x14, 0x14, 0x05, 0x00, 0x08, 0x14, 0x14, 0x13, 0x16, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x14, 0x03, 0x02, 0x14, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x14, 0x14, 0x0d, 0x00, 0x06, 0x14, 0x14, 0x12, 0x1c, 0x18, 0x14, 0x14, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x14, 0x14, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x12, 0x14, 0x14, 0x07, 0x1a, 0x13, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x14, 0x14, 0x11, 0x1c, 0x0e, 0x14, 0x14, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x14, 0x1f, 0x1f, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x19, 0x15, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x14, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x14, 0x14, 0x13, - 0x00, 0x1e, 0x14, 0x14, 0x14, 0x15, 0x00, 0x00, 0x1f, 0x14, 0x14, 0x14, 0x17, 0x00, 0x0e, 0x14, 0x14, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x16, 0x0c, 0x14, 0x14, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x14, 0x14, 0x07, 0x00, 0x0c, 0x14, 0x14, 0x0d, 0x00, 0x19, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0x14, 0x14, 0x14, 0x04, 0x20, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x14, 0x11, 0x1c, 0x13, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x14, 0x12, 0x1c, 0x1c, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x12, 0x04, 0x00, 0x1a, 0x14, 0x14, 0x14, 0x12, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x13, 0x14, 0x14, 0x13, - 0x00, 0x0a, 0x14, 0x14, 0x0e, 0x00, 0x00, 0x00, 0x19, 0x14, 0x14, 0x14, 0x1f, 0x15, 0x13, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x14, 0x14, 0x11, 0x15, 0x12, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x11, 0x14, 0x14, 0x02, 0x1c, 0x12, 0x14, 0x14, 0x06, 0x00, 0x05, 0x14, 0x14, 0x12, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x14, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x14, 0x03, 0x0a, 0x14, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x14, 0x0d, 0x18, 0x14, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x14, 0x14, 0x0c, 0x00, 0x00, 0x1f, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x04, 0x17, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0d, - 0x00, 0x10, 0x14, 0x14, 0x09, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x13, 0x1c, 0x18, 0x14, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x14, 0x0b, 0x16, 0x14, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x14, 0x1d, 0x1a, 0x14, 0x14, 0x14, 0x02, 0x00, 0x0b, 0x14, 0x14, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x14, 0x11, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x16, 0x0d, 0x14, 0x14, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x14, 0x14, 0x05, 0x19, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x15, 0x13, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x1c, 0x19, 0x0b, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x20, 0x14, 0x14, 0x14, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x20, - 0x16, 0x14, 0x14, 0x14, 0x20, 0x00, 0x00, 0x00, 0x0b, 0x14, 0x14, 0x0d, 0x00, 0x17, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x15, 0x12, 0x14, 0x14, 0x05, 0x16, 0x14, 0x14, 0x14, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0d, 0x14, 0x14, 0x13, 0x15, 0x01, 0x14, 0x14, 0x14, 0x1d, 0x00, 0x11, 0x14, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x14, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x14, 0x10, 0x1c, 0x0b, 0x14, 0x14, 0x12, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x14, 0x13, 0x1f, 0x1e, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x17, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x14, 0x14, 0x0f, 0x20, 0x14, 0x14, 0x14, 0x18, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x1c, 0x00, - 0x03, 0x14, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x1c, 0x10, 0x14, 0x14, 0x08, 0x00, 0x06, 0x14, 0x14, 0x12, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x14, 0x14, 0x14, 0x17, 0x1c, 0x11, 0x14, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x15, 0x09, 0x14, 0x14, 0x14, 0x0f, 0x00, 0x1e, 0x14, 0x14, 0x13, 0x15, 0x1a, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x12, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x14, 0x14, 0x0a, 0x00, 0x05, 0x14, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x05, 0x14, 0x14, 0x14, 0x07, 0x00, 0x05, 0x14, 0x14, 0x14, 0x17, 0x00, 0x00, 0x00, 0x16, 0x10, 0x14, 0x14, 0x14, 0x18, 0x0d, 0x13, 0x13, 0x0e, 0x1c, 0x00, 0x1c, 0x10, 0x14, 0x14, 0x0a, 0x1b, 0x14, 0x14, 0x14, 0x0a, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x12, 0x13, 0x13, 0x05, 0x00, - 0x04, 0x14, 0x14, 0x14, 0x16, 0x00, 0x00, 0x16, 0x14, 0x14, 0x14, 0x04, 0x00, 0x0c, 0x14, 0x14, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x08, 0x14, 0x14, 0x14, 0x13, 0x1e, 0x03, 0x03, 0x04, 0x10, 0x14, 0x14, 0x14, 0x14, 0x09, 0x00, 0x09, 0x14, 0x14, 0x0f, 0x00, 0x1b, 0x14, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x14, 0x14, 0x14, 0x17, 0x00, 0x00, 0x00, 0x00, 0x15, 0x13, 0x14, 0x14, 0x1e, 0x00, 0x18, 0x14, 0x14, 0x14, 0x14, 0x08, 0x1b, 0x1d, 0x02, 0x0d, 0x14, 0x14, 0x14, 0x0e, 0x15, 0x00, 0x20, 0x14, 0x14, 0x14, 0x12, 0x17, 0x1d, 0x19, 0x10, 0x14, 0x14, 0x14, 0x13, 0x15, 0x0d, 0x14, 0x14, 0x14, 0x20, 0x1d, 0x07, 0x14, 0x14, 0x14, 0x01, 0x1c, 0x11, 0x14, 0x14, 0x14, 0x0c, 0x01, 0x1d, 0x01, 0x08, 0x14, 0x14, 0x14, 0x0e, 0x15, 0x00, - 0x08, 0x14, 0x14, 0x10, 0x1c, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x14, 0x1d, 0x1c, 0x11, 0x14, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x13, 0x15, 0x00, 0x18, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x20, 0x00, 0x0f, 0x14, 0x14, 0x09, 0x00, 0x20, 0x14, 0x14, 0x14, 0x15, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x14, 0x14, 0x14, 0x01, 0x00, 0x00, 0x06, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x16, 0x00, 0x00, 0x18, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x00, 0x05, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0a, 0x1c, 0x00, 0x17, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x1a, 0x00, 0x00, - 0x0e, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x14, 0x16, 0x1a, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x14, 0x14, 0x0d, 0x00, 0x00, 0x00, 0x19, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x12, 0x02, 0x12, 0x14, 0x14, 0x1b, 0x15, 0x14, 0x14, 0x14, 0x20, 0x00, 0x09, 0x14, 0x14, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x13, 0x15, 0x00, 0x00, 0x00, 0x00, 0x17, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x1c, 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x07, 0x15, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, 0x0c, 0x14, 0x14, 0x09, 0x00, 0x16, 0x10, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0a, 0x15, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x07, 0x15, 0x00, 0x00, 0x00, - 0x06, 0x07, 0x07, 0x19, 0x00, 0x00, 0x00, 0x17, 0x07, 0x07, 0x05, 0x00, 0x1f, 0x07, 0x07, 0x07, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x07, 0x08, 0x17, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0a, 0x12, 0x14, 0x13, 0x0e, 0x1e, 0x16, 0x15, 0x07, 0x07, 0x06, 0x16, 0x1a, 0x07, 0x07, 0x08, 0x18, 0x00, 0x20, 0x08, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x07, 0x07, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x06, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0a, 0x12, 0x14, 0x13, 0x0e, 0x05, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x19, 0x0c, 0x13, 0x14, 0x11, 0x08, 0x1a, 0x02, 0x06, 0x06, 0x1b, 0x00, 0x00, 0x16, 0x07, 0x10, 0x14, 0x13, 0x0c, 0x19, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x08, 0x10, 0x14, 0x13, 0x0f, 0x06, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0a, - 0x00, 0x16, 0x11, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x09, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0d, 0x10, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x01, 0x14, 0x14, 0x0e, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0a, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x09, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x11, 0x14, 0x13, 0x1d, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x1c, 0x09, 0x14, 0x12, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x0d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x14, 0x0d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x05, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x00, 0x1a, 0x12, 0x14, 0x0a, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x0f, 0x15, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x17, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0x10, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x14, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0x11, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x13, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x13, 0x14, 0x08, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x13, 0x14, 0x09, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x1a, 0x12, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x14, 0x11, 0x16, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x11, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x12, 0x14, 0x09, 0x00, 0x00, 0x00, 0x07, 0x14, 0x12, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x14, 0x10, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x03, 0x00, 0x18, 0x13, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x12, 0x14, 0x0a, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x1a, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0c, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x09, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x13, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x0d, 0x1c, 0x0a, 0x14, 0x10, 0x15, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0a, 0x14, 0x12, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0f, 0x12, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x08, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x09, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0x14, 0x14, 0x0d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x16, 0x10, 0x14, 0x0d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1d, 0x19, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x13, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x14, 0x10, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x14, 0x13, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x10, 0x15, 0x16, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x1f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x08, 0x00, 0x00, 0x0b, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x14, 0x0e, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x01, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x16, 0x00, 0x00, 0x1f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x14, 0x13, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0a, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0d, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x10, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x11, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x13, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0e, 0x14, 0x10, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0d, 0x14, 0x10, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x04, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x10, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x1e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x13, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x14, 0x14, 0x13, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x14, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x14, 0x10, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x13, 0x14, 0x14, 0x14, 0x0d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0d, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x14, 0x10, 0x19, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x14, 0x14, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x13, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x19, 0x1c, 0x09, 0x14, 0x12, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x10, 0x14, 0x0e, 0x15, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x14, 0x11, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x11, 0x14, 0x0b, 0x1c, 0x00, 0x1a, 0x13, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x17, 0x19, 0x17, 0x19, 0x17, 0x19, 0x17, 0x19, 0x17, 0x19, 0x17, 0x19, 0x0e, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x10, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x13, 0x18, 0x00, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1f, 0x12, 0x14, 0x09, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x13, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x14, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x10, 0x14, 0x0d, 0x15, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x1c, 0x0b, 0x14, 0x11, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x14, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x14, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x14, 0x14, 0x20, 0x00, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x10, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x13, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x17, 0x14, 0x14, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x12, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x09, 0x14, 0x13, 0x18, 0x00, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1a, 0x12, 0x14, 0x0a, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x12, 0x14, 0x09, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x12, 0x14, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x11, 0x14, 0x0c, 0x1c, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1c, 0x0a, 0x14, 0x12, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x14, 0x13, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x14, 0x14, 0x04, 0x0f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x19, 0x14, 0x14, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x20, 0x14, 0x14, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0d, 0x14, 0x0f, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x10, 0x14, 0x13, 0x12, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1a, 0x11, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x0e, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x12, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x10, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -const lv_img_dsc_t xlat_logo = { - .header.cf = LV_IMG_CF_INDEXED_8BIT, - .header.always_zero = 0, - .header.reserved = 0, - .header.w = 130, - .header.h = 63, - .data_size = 9214, - .data = xlat_fm_logo_130px_map, -}; diff --git a/src/theme/xlat_logo_160px_width_idx8.c b/src/theme/xlat_logo_160px_width_idx8.c new file mode 100644 index 0000000..e567218 --- /dev/null +++ b/src/theme/xlat_logo_160px_width_idx8.c @@ -0,0 +1,355 @@ +/* + * Copyright (c) 2023 Finalmouse, LLC + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifdef __has_include + #if __has_include("lvgl.h") + #ifndef LV_LVGL_H_INCLUDE_SIMPLE + #define LV_LVGL_H_INCLUDE_SIMPLE + #endif + #endif +#endif + +#if defined(LV_LVGL_H_INCLUDE_SIMPLE) + #include "lvgl.h" +#else + #include "lvgl/lvgl.h" +#endif + + +#ifndef LV_ATTRIBUTE_MEM_ALIGN +#define LV_ATTRIBUTE_MEM_ALIGN +#endif + +#ifndef LV_ATTRIBUTE_IMG_XLAT_LOGO_160PX_WIDTH +#define LV_ATTRIBUTE_IMG_XLAT_LOGO_160PX_WIDTH +#endif + +const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_XLAT_LOGO_160PX_WIDTH uint8_t xlat_logo_map[] = { + 0x00, 0x00, 0x00, 0x00, /*Color of index 0*/ + 0xff, 0xff, 0xff, 0xa9, /*Color of index 1*/ + 0xff, 0xff, 0xff, 0x48, /*Color of index 2*/ + 0xff, 0xff, 0xff, 0x7b, /*Color of index 3*/ + 0xff, 0xff, 0xff, 0xcc, /*Color of index 4*/ + 0xff, 0xff, 0xff, 0x95, /*Color of index 5*/ + 0xff, 0xff, 0xff, 0x50, /*Color of index 6*/ + 0xff, 0xff, 0xff, 0x8d, /*Color of index 7*/ + 0xff, 0xff, 0xff, 0x0b, /*Color of index 8*/ + 0xff, 0xff, 0xff, 0xc5, /*Color of index 9*/ + 0xff, 0xff, 0xff, 0x1a, /*Color of index 10*/ + 0xff, 0xff, 0xff, 0x6a, /*Color of index 11*/ + 0xff, 0xff, 0xff, 0xb2, /*Color of index 12*/ + 0xff, 0xff, 0xff, 0xa1, /*Color of index 13*/ + 0xfe, 0xfe, 0xfe, 0x63, /*Color of index 14*/ + 0xfe, 0xfe, 0xfe, 0xfe, /*Color of index 15*/ + 0xfe, 0xfe, 0xff, 0x02, /*Color of index 16*/ + 0xfe, 0xfe, 0xff, 0xe3, /*Color of index 17*/ + 0xfe, 0xfe, 0xff, 0xf3, /*Color of index 18*/ + 0xfe, 0xff, 0xff, 0x2a, /*Color of index 19*/ + 0xfe, 0xff, 0xff, 0x3c, /*Color of index 20*/ + 0xfe, 0xff, 0xff, 0x43, /*Color of index 21*/ + 0xfe, 0xff, 0xff, 0xeb, /*Color of index 22*/ + 0xfe, 0xff, 0xfe, 0x31, /*Color of index 23*/ + 0xfe, 0xff, 0xfe, 0x73, /*Color of index 24*/ + 0xff, 0xff, 0xfe, 0x22, /*Color of index 25*/ + 0xff, 0xff, 0xfe, 0x59, /*Color of index 26*/ + 0xff, 0xff, 0xfe, 0x84, /*Color of index 27*/ + 0xff, 0xff, 0xfe, 0xbb, /*Color of index 28*/ + 0xff, 0xfe, 0xfe, 0x9b, /*Color of index 29*/ + 0xff, 0xfe, 0xff, 0x11, /*Color of index 30*/ + 0xff, 0xfe, 0xff, 0xd1, /*Color of index 31*/ + 0xff, 0xfe, 0xff, 0xda, /*Color of index 32*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 33*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 34*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 35*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 36*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 37*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 38*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 39*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 40*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 41*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 42*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 43*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 44*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 45*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 46*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 47*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 48*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 49*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 50*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 51*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 52*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 53*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 54*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 55*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 56*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 57*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 58*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 59*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 60*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 61*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 62*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 63*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 64*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 65*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 66*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 67*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 68*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 69*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 70*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 71*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 72*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 73*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 74*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 75*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 76*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 77*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 78*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 79*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 80*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 81*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 82*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 83*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 84*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 85*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 86*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 87*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 88*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 89*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 90*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 91*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 92*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 93*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 94*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 95*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 96*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 97*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 98*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 99*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 100*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 101*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 102*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 103*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 104*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 105*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 106*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 107*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 108*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 109*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 110*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 111*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 112*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 113*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 114*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 115*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 116*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 117*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 118*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 119*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 120*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 121*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 122*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 123*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 124*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 125*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 126*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 127*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 128*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 129*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 130*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 131*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 132*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 133*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 134*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 135*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 136*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 137*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 138*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 139*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 140*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 141*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 142*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 143*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 144*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 145*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 146*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 147*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 148*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 149*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 150*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 151*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 152*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 153*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 154*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 155*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 156*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 157*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 158*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 159*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 160*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 161*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 162*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 163*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 164*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 165*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 166*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 167*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 168*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 169*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 170*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 171*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 172*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 173*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 174*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 175*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 176*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 177*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 178*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 179*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 180*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 181*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 182*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 183*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 184*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 185*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 186*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 187*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 188*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 189*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 190*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 191*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 192*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 193*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 194*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 195*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 196*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 197*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 198*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 199*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 200*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 201*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 202*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 203*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 204*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 205*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 206*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 207*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 208*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 209*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 210*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 211*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 212*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 213*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 214*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 215*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 216*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 217*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 218*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 219*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 220*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 221*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 222*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 223*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 224*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 225*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 226*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 227*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 228*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 229*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 230*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 231*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 232*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 233*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 234*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 235*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 236*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 237*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 238*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 239*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 240*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 241*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 242*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 243*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 244*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 245*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 246*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 247*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 248*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 249*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 250*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 251*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 252*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 253*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 254*/ + 0x00, 0x00, 0x00, 0x00, /*Color of index 255*/ + + 0x00, 0x14, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x16, + 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1c, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x08, 0x11, 0x0f, 0x0f, 0x12, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x16, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x0f, 0x12, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x16, 0x0f, 0x0f, 0x12, 0x19, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x16, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x0f, 0x0f, 0x18, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0f, 0x0f, 0x04, 0x10, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x11, 0x0f, 0x0f, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x16, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0x0f, 0x20, 0x08, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x12, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x16, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x12, 0x0f, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x0f, 0x16, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x0f, 0x12, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x0f, 0x12, 0x13, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x14, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x20, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x16, 0x0f, 0x0f, 0x02, 0x10, 0x04, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x20, 0x1a, 0x0f, 0x0f, 0x1f, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x16, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x16, 0x13, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x12, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0d, 0x00, 0x20, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0f, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x12, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x1b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x11, 0x12, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x08, 0x00, 0x14, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x12, 0x0f, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1c, 0x00, 0x00, 0x10, 0x16, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0x0f, 0x1f, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x1d, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x0f, 0x0f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x19, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0f, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1f, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x12, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x12, 0x0f, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x0f, 0x0f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x12, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x11, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x12, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x0f, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x0f, 0x0f, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x1b, 0x03, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x12, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x12, 0x0f, 0x0f, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x12, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x11, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x04, 0x1f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x12, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x0f, 0x0f, 0x0f, 0x17, 0x15, 0x0f, 0x0f, 0x12, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x05, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1d, 0x0f, 0x0f, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x16, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x1e, 0x16, 0x0f, 0x0f, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1d, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x0b, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x16, 0x0f, 0x0f, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x0f, 0x0f, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0x0f, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x09, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x0f, 0x16, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x11, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0a, 0x16, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x0f, 0x0f, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x12, 0x19, 0x00, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1b, 0x0b, 0x0e, 0x0b, 0x0e, 0x0b, 0x0e, 0x0b, 0x0e, 0x0b, 0x0e, 0x0b, 0x0e, 0x0b, 0x0e, 0x0b, 0x0c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x0f, 0x0f, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x11, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0x0f, 0x1c, 0x10, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x12, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x0f, 0x16, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x12, 0x0f, 0x0f, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x11, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x16, 0x0f, 0x0f, 0x0e, 0x00, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x12, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0a, 0x16, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0f, 0x0f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x12, 0x0a, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x16, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x0f, 0x0f, 0x16, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x12, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0x0f, 0x1c, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x0f, 0x0f, 0x0f, 0x20, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x16, 0x0f, 0x0f, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0f, 0x16, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x04, 0x1f, 0x20, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1e, 0x16, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; + +const lv_img_dsc_t xlat_logo = { + .header.cf = LV_IMG_CF_INDEXED_8BIT, + .header.always_zero = 0, + .header.reserved = 0, + .header.w = 160, + .header.h = 46, + .data_size = 8384, + .data = xlat_logo_map, +}; From 7db7dc393b80f3dc4e17e5045fd4a08c701c320d Mon Sep 17 00:00:00 2001 From: RockyZeroFour Date: Thu, 30 Jan 2025 10:51:36 +0100 Subject: [PATCH 2/6] Changes for demonstration - Changed the trigger timings to be usable for a solenoid - Changed the UI to better focus on the input delay values - Force re-enumeration when the detection mode or interface is changed - Increased memory for the UI - Changes text size --- src/config/lv_conf.h | 12 ++-- src/gfx_main.c | 139 ++++++++++++++++++++++++++++++++++--------- src/usb/usb_host.c | 5 ++ src/usb/usb_host.h | 1 + src/xlat.c | 11 +++- src/xlat.h | 4 +- 6 files changed, 135 insertions(+), 37 deletions(-) diff --git a/src/config/lv_conf.h b/src/config/lv_conf.h index 62727fb..7f866b9 100644 --- a/src/config/lv_conf.h +++ b/src/config/lv_conf.h @@ -49,7 +49,7 @@ #define LV_MEM_CUSTOM 0 #if LV_MEM_CUSTOM == 0 /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/ -# define LV_MEM_SIZE (16U * 1024U) /*[bytes]*/ +# define LV_MEM_SIZE (18U * 1024U) /*[bytes]*/ /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/ # define LV_MEM_ADR 0 /*0: unused*/ @@ -265,7 +265,7 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/ # define lv_snprintf snprintf # define lv_vsnprintf vsnprintf #else /*LV_SPRINTF_CUSTOM*/ -# define LV_SPRINTF_USE_FLOAT 0 +# define LV_SPRINTF_USE_FLOAT 1 #endif /*LV_SPRINTF_CUSTOM*/ #define LV_USE_USER_DATA 1 @@ -326,12 +326,12 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/ /*Montserrat fonts with ASCII range and some symbols using bpp = 4 *https://fonts.google.com/specimen/Montserrat*/ #define LV_FONT_MONTSERRAT_8 0 -#define LV_FONT_MONTSERRAT_10 0 -#define LV_FONT_MONTSERRAT_12 1 +#define LV_FONT_MONTSERRAT_10 1 +#define LV_FONT_MONTSERRAT_12 0 #define LV_FONT_MONTSERRAT_14 1 -#define LV_FONT_MONTSERRAT_16 1 +#define LV_FONT_MONTSERRAT_16 0 #define LV_FONT_MONTSERRAT_18 0 -#define LV_FONT_MONTSERRAT_20 0 +#define LV_FONT_MONTSERRAT_20 1 #define LV_FONT_MONTSERRAT_22 0 #define LV_FONT_MONTSERRAT_24 0 #define LV_FONT_MONTSERRAT_26 0 diff --git a/src/gfx_main.c b/src/gfx_main.c index a457237..a87c16d 100644 --- a/src/gfx_main.c +++ b/src/gfx_main.c @@ -25,20 +25,26 @@ #include "stdio_glue.h" #include "usb_host.h" -#define Y_CHART_SIZE_X 410 +#define Y_CHART_SIZE_X 310 #define Y_CHART_SIZE_Y 130 #define Y_CHART_RANGE 2000 +#define Y_CHART_TICK_MAJOR 5 +#define Y_CHART_TICK_MINOR 10 #define X_CHART_TICKS_MAJOR 11 #define X_CHART_TICKS_MINOR 1 #define Y_CHART_TICKS_MAJOR 6 #define Y_CHART_TICKS_MINOR 2 +#define X_CHART_COUNT ((Y_CHART_TICK_MAJOR - 1) * Y_CHART_TICK_MINOR + 1) + lv_color_t lv_color_lightblue = LV_COLOR_MAKE(0xa6, 0xd1, 0xd1); static lv_obj_t * chart; -static lv_obj_t * latency_label; +static lv_obj_t * latency_last_label; +static lv_obj_t * latency_average_label; +static lv_obj_t * latency_deviation_label; static lv_obj_t * productname_label; static lv_obj_t * manufacturer_label; static lv_obj_t * vidpid_label; @@ -46,7 +52,6 @@ static lv_obj_t * hid_offsets_label; static lv_obj_t * trigger_label; static lv_obj_t * trigger_ready_cb; -static size_t chart_point_count = 0; static lv_coord_t chart_y_range = 0; static lv_timer_t * trigger_timer = NULL; @@ -58,13 +63,9 @@ LV_IMG_DECLARE(xlat_logo); static void latency_label_update(void) { - lv_label_set_text_fmt(latency_label, "#%lu: %ldus, avg %ldus, stdev %ldus", - xlat_get_latency_count(LATENCY_GPIO_TO_USB), - xlat_get_latency_us(LATENCY_GPIO_TO_USB), - xlat_get_average_latency(LATENCY_GPIO_TO_USB), - xlat_get_latency_standard_deviation(LATENCY_GPIO_TO_USB) - ); - lv_obj_align_to(latency_label, chart, LV_ALIGN_OUT_TOP_MID, 0, 0); + lv_label_set_text_fmt(latency_last_label, "%0.3f ms", xlat_get_latency_us(LATENCY_GPIO_TO_USB) / 1000.0F); + lv_label_set_text_fmt(latency_average_label, "%0.3f ms", xlat_get_average_latency(LATENCY_GPIO_TO_USB) / 1000.0F); + lv_label_set_text_fmt(latency_deviation_label, "%ld us", xlat_get_latency_standard_deviation(LATENCY_GPIO_TO_USB)); } void gfx_set_device_label(const char * manufacturer, const char * productname, const char *vidpid) @@ -180,7 +181,6 @@ static void chart_reset(void) lv_chart_add_series(chart, lv_color_lightblue, LV_CHART_AXIS_PRIMARY_Y); lv_chart_set_x_start_point(chart, ser, 0); - chart_point_count = 0; chart_y_range = Y_CHART_RANGE; lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, chart_y_range); @@ -189,8 +189,6 @@ static void chart_reset(void) static void chart_update(uint32_t value) { - chart_point_count++; - // clip to the nearest rounded down 1000 #if LV_USE_LARGE_COORD value = value > (INT32_MAX / 1000 * 1000) ? (INT32_MAX / 1000 * 1000) : value; @@ -215,16 +213,32 @@ static void chart_update(uint32_t value) } /** - * Display 1000 data points with zooming and scrolling. - * See how the chart changes drawing mode (draw only vertical lines) when - * the points get too crowded. + * Override the drawing of the axis label + */ +static void chart_draw_event_cb(lv_event_t * e) +{ + lv_obj_draw_part_dsc_t * dsc = lv_event_get_draw_part_dsc(e); + if (!lv_obj_draw_part_check_type(dsc, &lv_chart_class, LV_CHART_DRAW_PART_TICK_LABEL)) return; + // Change the drawing of the Y axis legend + if (dsc->id == LV_CHART_AXIS_PRIMARY_Y && dsc->text) { + lv_snprintf(dsc->text, dsc->text_length, "%0.1f", dsc->value / 1000.0F); + } + // Change the drawing of the Y axis legend + else if (dsc->id == LV_CHART_AXIS_PRIMARY_X && dsc->text) { + lv_snprintf(dsc->text, dsc->text_length, "%ld", xlat_get_latency_count(LATENCY_GPIO_TO_USB) + dsc->value * Y_CHART_TICK_MINOR - ((Y_CHART_TICK_MAJOR - 1) * Y_CHART_TICK_MINOR)); + //lv_snprintf(dsc->text, dsc->text_length, "%ld", -dsc->value); + } +} + +/** + * Creates a line chart with a custom Y-axis labeling */ -void lv_chart_new(lv_coord_t yrange) +void lv_chart_new(lv_coord_t xcount, lv_coord_t yrange) { // Create a chart chart = lv_chart_create(lv_scr_act()); lv_obj_set_size(chart, Y_CHART_SIZE_X, Y_CHART_SIZE_Y); - lv_obj_align(chart, LV_ALIGN_CENTER, 20, 10); + lv_obj_align(chart, LV_ALIGN_RIGHT_MID, 0, 0); lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, yrange); // Do not display points on the data @@ -232,11 +246,17 @@ void lv_chart_new(lv_coord_t yrange) lv_chart_add_series(chart, lv_color_lightblue, LV_CHART_AXIS_PRIMARY_Y); - lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_X, 10, 5, X_CHART_TICKS_MAJOR, X_CHART_TICKS_MINOR, true, 20); - lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 10, 5, Y_CHART_TICKS_MAJOR, Y_CHART_TICKS_MINOR, true, 60); + // Ticks & subticks for the X-axis, starts & ends with a major tick + lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_X, 10, 5, Y_CHART_TICK_MAJOR, Y_CHART_TICK_MINOR, true, 20); + + // Ticks & subticks for the Y-axis, starts & ends with a major tick + lv_chart_set_axis_tick(chart, LV_CHART_AXIS_PRIMARY_Y, 10, 5, 6, 2, true, 60); + + // Custom axis labeling + lv_obj_add_event_cb(chart, chart_draw_event_cb, LV_EVENT_DRAW_PART_BEGIN, NULL); - // Set the amount of data points according to the X axis tick count - lv_chart_set_point_count(chart, (X_CHART_TICKS_MAJOR - 1) * X_CHART_TICKS_MINOR + 1); + // Set the amout of data points + lv_chart_set_point_count(chart, xcount); chart_y_range = yrange; } @@ -245,6 +265,9 @@ void lv_chart_new(lv_coord_t yrange) static lv_style_t style_btn; static lv_style_t style_chart; +static lv_style_t style_text_small; +static lv_style_t style_text_large; +static lv_style_t style_box; /*Will be called when the styles of the base theme are already added to add new styles*/ @@ -287,6 +310,22 @@ static void new_theme_init_and_set(void) lv_style_set_border_width(&style_chart, 1); lv_style_set_text_color(&style_chart, lv_color_white()); + // Initialize small text + lv_style_init(&style_text_small); + lv_style_set_text_font(&style_text_small, &lv_font_montserrat_10); + + // Initialize large text + lv_style_init(&style_text_large); + lv_style_set_text_font(&style_text_large, &lv_font_montserrat_20); + + // Initialize box style + lv_style_init(&style_box); + lv_style_set_radius(&style_box, 5); + lv_style_set_width(&style_box, 115); + lv_style_set_height(&style_box, 50); + lv_style_set_pad_all(&style_box, 5); + lv_style_set_border_color(&style_box, lv_color_white()); + /*Initialize the new theme from the current theme*/ lv_theme_t * th_act = lv_disp_get_theme(NULL); static lv_theme_t th_new; @@ -407,15 +446,61 @@ static void gfx_xlat_gui(void) lv_label_set_text(trigger_label, "TRIGGER"); lv_obj_center(trigger_label); - // Latency label - latency_label = lv_label_create(lv_scr_act()); - lv_label_set_text(latency_label, "Click to start measurement..."); - lv_obj_align_to(latency_label, chart, LV_ALIGN_OUT_TOP_MID, 0, 0); + // Latency last average box + lv_obj_t * latency_average_box = lv_obj_create(lv_scr_act()); + lv_obj_add_style(latency_average_box, &style_box, 0); + lv_obj_align(latency_average_box, LV_ALIGN_LEFT_MID, 0, 10); + + // Latency last average label + latency_average_label = lv_label_create(latency_average_box); + lv_obj_add_style(latency_average_label, &style_text_large, 0); + lv_obj_align(latency_average_label, LV_ALIGN_TOP_RIGHT, 0, 0); + lv_label_set_text(latency_average_label, "0.000 ms"); + + // Description average label + lv_obj_t * description_average_label = lv_label_create(latency_average_box); + lv_obj_add_style(description_average_label, &style_text_small, 0); + lv_obj_align(description_average_label, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_label_set_text(description_average_label, "Average input"); + + // Latency last measurement box + lv_obj_t * latency_last_box = lv_obj_create(lv_scr_act()); + lv_obj_add_style(latency_last_box, &style_box, 0); + lv_obj_align_to(latency_last_box, latency_average_box, LV_ALIGN_OUT_TOP_LEFT, 0, -5); + + // Latency last measurement label + latency_last_label = lv_label_create(latency_last_box); + lv_obj_add_style(latency_last_label, &style_text_large, 0); + lv_obj_align(latency_last_label, LV_ALIGN_TOP_RIGHT, 0, 0); + lv_label_set_text(latency_last_label, "0.000 ms"); + + // Description last label + lv_obj_t * description_last_label = lv_label_create(latency_last_box); + lv_obj_add_style(description_last_label, &style_text_small, 0); + lv_obj_align(description_last_label, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_label_set_text(description_last_label, "Latest input"); + + // Latency standard deviation box + lv_obj_t * latency_deviation_box = lv_obj_create(lv_scr_act()); + lv_obj_add_style(latency_deviation_box, &style_box, 0); + lv_obj_align_to(latency_deviation_box, latency_average_box, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 5); + + // Latency standard deviation label + latency_deviation_label = lv_label_create(latency_deviation_box); + lv_obj_add_style(latency_deviation_label, &style_text_large, 0); + lv_obj_align(latency_deviation_label, LV_ALIGN_TOP_RIGHT, 0, 0); + lv_label_set_text(latency_deviation_label, "0 us"); + + // Description last label + lv_obj_t * description_deviation_label = lv_label_create(latency_deviation_box); + lv_obj_add_style(description_deviation_label, &style_text_small, 0); + lv_obj_align(description_deviation_label, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_label_set_text(description_deviation_label, "Standard deviation"); /////////// // CHART // /////////// - lv_chart_new(Y_CHART_RANGE); + lv_chart_new(X_CHART_COUNT, Y_CHART_RANGE); lv_chart_add_cursor(chart, lv_color_white(), LV_DIR_TOP); } diff --git a/src/usb/usb_host.c b/src/usb/usb_host.c index aff8697..1f0b78f 100644 --- a/src/usb/usb_host.c +++ b/src/usb/usb_host.c @@ -60,6 +60,11 @@ void MX_USB_HOST_Init(void) } } +void MX_USB_HOST_ReEnumeration(void) +{ + USBH_ReEnumerate(&hUsbHostHS); +} + /* * user callback definition */ diff --git a/src/usb/usb_host.h b/src/usb/usb_host.h index 0491fa2..2b99e00 100644 --- a/src/usb/usb_host.h +++ b/src/usb/usb_host.h @@ -63,6 +63,7 @@ typedef enum { /** @brief USB Host initialization function. */ void MX_USB_HOST_Init(void); +void MX_USB_HOST_ReEnumeration(void); void usb_host_set_product_string(const char * product); char * usb_host_get_product_string(void); diff --git a/src/xlat.c b/src/xlat.c index 6f8fd6e..2392b1f 100644 --- a/src/xlat.c +++ b/src/xlat.c @@ -26,6 +26,7 @@ #include "stm32f7xx_hal_tim.h" #include "hardware_config.h" #include "stdio_glue.h" +#include "usb_host.h" // LUFA HID Parser #define __INCLUDE_FROM_USB_DRIVER // NOLINT(*-reserved-identifier) @@ -44,8 +45,8 @@ static volatile uint_fast8_t gpio_irq_consumer = 0; // SETTINGS volatile bool xlat_initialized = false; -static xlat_mode_t xlat_mode = XLAT_MODE_CLICK; static uint8_t hid_reportid = 0xFF; +static xlat_mode_t xlat_mode = XLAT_MODE_KEY; static bool auto_trigger_level_high = false; static xlat_interface_t xlat_interface = XLAT_INTERFACE_AUTO; static uint8_t found_interface = 0xFF; @@ -59,7 +60,7 @@ static xlat_reportid_t xlat_reportid = XLAT_REPORTID_AUTO; // \__/ \__/ \__/ \__/ // // Therefore, take a large enough time window to debounce the GPIO interrupt. -#define GPIO_IRQ_HOLDOFF_US (50 * 1000) // 20ms; +#define GPIO_IRQ_HOLDOFF_US (200 * 1000) // 200 ms; static uint32_t gpio_irq_holdoff_us = GPIO_IRQ_HOLDOFF_US; static TimerHandle_t xlat_timer_handle; @@ -640,6 +641,8 @@ void xlat_reset_latency(void) void xlat_set_reportid_selection(xlat_reportid_t number) { xlat_reportid = number; + + MX_USB_HOST_ReEnumeration(); } xlat_reportid_t xlat_get_reportid_selection() @@ -671,6 +674,8 @@ static void xlat_timer_callback(TimerHandle_t xTimer) void xlat_set_mode(enum xlat_mode mode) { xlat_mode = mode; + + MX_USB_HOST_ReEnumeration(); } enum xlat_mode xlat_get_mode(void) @@ -707,6 +712,8 @@ bool xlat_auto_trigger_level_is_high(void) void xlat_set_interface_selection(xlat_interface_t number) { xlat_interface = number; + + MX_USB_HOST_ReEnumeration(); } xlat_interface_t xlat_get_interface_selection() diff --git a/src/xlat.h b/src/xlat.h index 20afb27..aa137cd 100644 --- a/src/xlat.h +++ b/src/xlat.h @@ -22,8 +22,8 @@ #include #include "src/usb/usbh_def.h" -#define AUTO_TRIGGER_PERIOD_MS (150) -#define AUTO_TRIGGER_PRESSED_PERIOD_MS (30) +#define AUTO_TRIGGER_PERIOD_MS (500) +#define AUTO_TRIGGER_PRESSED_PERIOD_MS (100) typedef struct hid_event { USBH_HandleTypeDef *phost; From 37360712461307e9da823131bb99756f456fc177 Mon Sep 17 00:00:00 2001 From: RockyZeroFour Date: Wed, 25 Jun 2025 01:11:38 +0200 Subject: [PATCH 3/6] Respect polling rate - Interface is polled at the specified polling rate --- src/usb/usbh_hid.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/usb/usbh_hid.c b/src/usb/usbh_hid.c index 61dd56d..5e422f5 100644 --- a/src/usb/usbh_hid.c +++ b/src/usb/usbh_hid.c @@ -401,13 +401,14 @@ static inline void trigger_thread_by_os_message(USBH_HandleTypeDef *phost) } HID_Handle->state = USBH_HID_POLL; + HID_Handle->timer = phost->Timer; + break; case USBH_HID_POLL: { USBH_URBStateTypeDef urbstate = USBH_LL_GetURBState(phost, HID_Handle->InPipe); if (urbstate == USBH_URB_DONE) { XferSize = USBH_LL_GetLastXferSize(phost, HID_Handle->InPipe); - HID_Handle->state = USBH_HID_GET_DATA; // we got our data, request a new URB right after this HAL_GPIO_WritePin(ARDUINO_D4_GPIO_Port, ARDUINO_D4_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(ARDUINO_D4_GPIO_Port, ARDUINO_D4_Pin, GPIO_PIN_RESET); @@ -416,13 +417,9 @@ static inline void trigger_thread_by_os_message(USBH_HandleTypeDef *phost) if (XferSize != 0U) { (void)USBH_HID_FifoWrite(&HID_Handle->fifo, HID_Handle->pData, HID_Handle->length); USBH_HID_EventCallback(phost, timestamp); // triggers the main thread with the timestamp of this event - HID_Handle->state = USBH_HID_GET_DATA; - trigger_thread_by_os_message(phost); // trigger new GET_DATA } else { // URB done, but not data ready; issue new URB (GET_DATA state) printf("XferSize: %lu ?!\n", XferSize); - HID_Handle->state = USBH_HID_GET_DATA; - trigger_thread_by_os_message(phost); } } else { /* IN Endpoint Stalled */ @@ -431,14 +428,12 @@ static inline void trigger_thread_by_os_message(USBH_HandleTypeDef *phost) printf("IN EP Stalled\n"); if (USBH_ClrFeature(phost, HID_Handle->ep_addr) == USBH_OK) { /* Change state to issue next IN token */ - HID_Handle->state = USBH_HID_GET_DATA; + HID_Handle->state = USBH_HID_GET_DATA; // there was an issue so retry trigger_thread_by_os_message(phost); // trigger thread -> proceed to next state immediately } } else if (USBH_LL_GetURBState(phost, HID_Handle->InPipe) == USBH_URB_NOTREADY) { // NAK or ERROR: Not ready; // HCD_HC_IN_IRQHandler() should be called soon, and trigger the thread again - HID_Handle->state = USBH_HID_GET_DATA; - trigger_thread_by_os_message(phost); // trigger thread -> proceed to next state immediately //printf("NotReady\n"); } else { @@ -448,6 +443,16 @@ static inline void trigger_thread_by_os_message(USBH_HandleTypeDef *phost) //printf("URBState: %d\n", USBH_LL_GetURBState(phost, HID_Handle->InPipe)); } } + + // Trigger new poll if scheduled + if (HID_Handle->DataReady == 1) + { + HID_Handle->DataReady = 0; + HID_Handle->state = USBH_HID_GET_DATA; + + trigger_thread_by_os_message(phost); // trigger thread -> proceed to next state immediately + } + break; } @@ -466,7 +471,16 @@ static inline void trigger_thread_by_os_message(USBH_HandleTypeDef *phost) */ USBH_StatusTypeDef USBH_HID_SOFProcess(USBH_HandleTypeDef *phost) { - //HID_HandleTypeDef *HID_Handle = (HID_HandleTypeDef *) phost->pActiveClass->pData; + HID_HandleTypeDef *HID_Handle = (HID_HandleTypeDef *) phost->pActiveClass->pData; + + // schedule new poll if the interval is reached this frame + if (HID_Handle->state == USBH_HID_POLL) + { + if ((phost->Timer - HID_Handle->timer) >= HID_Handle->poll) + { + HID_Handle->DataReady = 1; + } + } #if 1 HAL_GPIO_WritePin(ARDUINO_D6_GPIO_Port, ARDUINO_D6_Pin, 1); From dbdf7d4a0d0e663399a2deefa9e48a76a87c5006 Mon Sep 17 00:00:00 2001 From: RockyZeroFour Date: Wed, 25 Jun 2025 05:53:35 +0200 Subject: [PATCH 4/6] High-Speed polling rate linearization - Converts the polling rate of High-Speed devices to the amount of microframes to be in-line with the other speeds --- src/usb/usbh_hid.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/usb/usbh_hid.c b/src/usb/usbh_hid.c index 5e422f5..e18b476 100644 --- a/src/usb/usbh_hid.c +++ b/src/usb/usbh_hid.c @@ -154,7 +154,13 @@ static USBH_StatusTypeDef USBH_HID_InterfaceInit(USBH_HandleTypeDef *phost) HID_Handle->length = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].wMaxPacketSize; HID_Handle->poll = phost->device.CfgDesc.Itf_Desc[interface].Ep_Desc[0].bInterval; - printf("HID_Handle->poll: %d, HID_MIN_POLL: %d\r\n", HID_Handle->poll, HID_MIN_POLL); + // convert high-speed polling interval to the amount of microframes + if (USBH_LL_GetSpeed(phost) == USBH_SPEED_HIGH) + { + HID_Handle->poll = 1 << (HID_Handle->poll - 1); + } + + printf("HID_Handle->poll in (micro-)frames: %d, HID_MIN_POLL: %d\r\n", HID_Handle->poll, HID_MIN_POLL); if (HID_Handle->poll < HID_MIN_POLL) { HID_Handle->poll = HID_MIN_POLL; } From c4e743bfded6db679b59a283827d1584cbb855b8 Mon Sep 17 00:00:00 2001 From: RockyZeroFour Date: Thu, 26 Jun 2025 05:42:25 +0200 Subject: [PATCH 5/6] Add polling rate selection - Allows to force a specific polling rate - Selectable numbers are based on the typically intervals used on Win - Standard value for the forced polling rate remains at one frame --- src/gfx_settings.c | 39 +++++++++++++++++++++++++++++++++++-- src/usb/usbh_hid.c | 47 ++++++++++++++++++++++++++++++++++++++++++++- src/xlat.c | 48 ++++++++++++++++++++++++++++++++++++++++------ src/xlat.h | 15 +++++++++++++++ 4 files changed, 140 insertions(+), 9 deletions(-) diff --git a/src/gfx_settings.c b/src/gfx_settings.c index 6f80e7e..0f82564 100644 --- a/src/gfx_settings.c +++ b/src/gfx_settings.c @@ -29,6 +29,7 @@ lv_dropdown_t *trigger_dropdown; lv_dropdown_t *detection_dropdown; lv_dropdown_t *interface_dropdown; lv_dropdown_t *reportid_dropdown; +lv_dropdown_t *polling_dropdown; lv_obj_t *prev_screen = NULL; // Pointer to store previous screen LV_IMG_DECLARE(xlat_logo); @@ -38,6 +39,8 @@ static void back_btn_event_handler(lv_event_t* e) { lv_event_code_t code = lv_event_get_code(e); if (code == LV_EVENT_CLICKED) { + xlat_usb_reenumeration(); // Reenumerate USB device if needed + if (prev_screen) { lv_scr_load(prev_screen); // Switch back to the previous screen lv_obj_del(settings_screen); // Delete the settings screen and free its memory @@ -125,7 +128,7 @@ static void event_handler(lv_event_t* e) // interface number default: - xlat_set_interface_selection(XLAT_INTERFACE_0 + sel - 1); + xlat_set_interface_selection(XLAT_INTERFACE_0 + --sel); break; } } @@ -141,7 +144,28 @@ static void event_handler(lv_event_t* e) // report ID number default: - xlat_set_reportid_selection(XLAT_REPORTID_0 + sel - 1); + xlat_set_reportid_selection(XLAT_REPORTID_0 + --sel); + break; + } + } + else if (obj == (lv_obj_t *)polling_dropdown) { + // Interface number changed + uint16_t sel = lv_dropdown_get_selected(obj); + + switch (sel) { + // AUTO spec + case 0: + xlat_set_polling_selection(XLAT_POLLING_RATE_AUTO); + break; + + // Win like + case 1: + xlat_set_polling_selection(XLAT_POLLING_RATE_WIN_LIKE); + break; + + // forced interval + default: + xlat_set_polling_selection(XLAT_POLLING_RATE_1 + sel - 2); break; } } @@ -212,6 +236,13 @@ void gfx_settings_create_page(lv_obj_t *previous_screen) reportid_dropdown = (lv_dropdown_t *) lv_dropdown_create(settings_screen); lv_dropdown_set_options((lv_obj_t *) reportid_dropdown, "AUTO id\nid0\nid1\nid2\nid3\nid4\nid5\nid6\nid7\nid8"); lv_obj_add_event_cb((struct _lv_obj_t *) reportid_dropdown, event_handler, LV_EVENT_VALUE_CHANGED, NULL); + lv_obj_set_width((lv_obj_t *) reportid_dropdown, lv_pct(32)); + + // Polling rate selection dropdown + polling_dropdown = (lv_dropdown_t *) lv_dropdown_create(settings_screen); + lv_dropdown_set_options((lv_obj_t *) polling_dropdown, "AUTO USB spec\nAUTO Win like\n1 frame (MAX)\n2 frames\n4 frames\n8 frames\n16 frames\n32 frames"); + lv_obj_add_event_cb((struct _lv_obj_t *) polling_dropdown, event_handler, LV_EVENT_VALUE_CHANGED, NULL); + lv_obj_set_width((lv_obj_t *) polling_dropdown, lv_pct(32)); // If we don't add this label, the y-value of the last item will be 0 lv_obj_t *debounce_label2 = lv_label_create(settings_screen); @@ -230,6 +261,7 @@ void gfx_settings_create_page(lv_obj_t *previous_screen) lv_obj_align((struct _lv_obj_t *) debounce_dropdown, LV_ALIGN_DEFAULT, max_width + widget_gap, lv_obj_get_y(debounce_label) - 10); lv_obj_align((struct _lv_obj_t *) trigger_dropdown, LV_ALIGN_DEFAULT, max_width + widget_gap, lv_obj_get_y(trigger_label) - 10); lv_obj_align((struct _lv_obj_t *) detection_dropdown, LV_ALIGN_DEFAULT, max_width + widget_gap, lv_obj_get_y(detection_mode) - 10); + lv_obj_align((struct _lv_obj_t *) polling_dropdown, LV_ALIGN_DEFAULT, max_width + 2 * widget_gap + lv_obj_get_width((lv_obj_t *)detection_dropdown), lv_obj_get_y(detection_mode) - 10); lv_obj_align((struct _lv_obj_t *) interface_dropdown, LV_ALIGN_DEFAULT, max_width + widget_gap, lv_obj_get_y(interface_label) - 10); lv_obj_align((struct _lv_obj_t *) reportid_dropdown, LV_ALIGN_DEFAULT, max_width + 2 * widget_gap + lv_obj_get_width((lv_obj_t *)interface_dropdown), lv_obj_get_y(interface_label) - 10); @@ -296,4 +328,7 @@ void gfx_settings_create_page(lv_obj_t *previous_screen) // Display current report ID selection lv_dropdown_set_selected((lv_obj_t *) reportid_dropdown, xlat_get_reportid_selection()); + + // Display current report ID selection + lv_dropdown_set_selected((lv_obj_t *) polling_dropdown, xlat_get_polling_selection()); } diff --git a/src/usb/usbh_hid.c b/src/usb/usbh_hid.c index e18b476..0bdd5c0 100644 --- a/src/usb/usbh_hid.c +++ b/src/usb/usbh_hid.c @@ -66,6 +66,7 @@ static USBH_StatusTypeDef USBH_HID_InterfaceInit(USBH_HandleTypeDef *phost) uint8_t num = 0U; uint8_t interface; uint8_t reportid; + xlat_polling_rate_t new_pollingrate; // Handle the AUTO interface detection mode if (XLAT_INTERFACE_AUTO == xlat_get_interface_selection()) { @@ -165,6 +166,50 @@ static USBH_StatusTypeDef USBH_HID_InterfaceInit(USBH_HandleTypeDef *phost) HID_Handle->poll = HID_MIN_POLL; } + // overwrite polling rate + new_pollingrate = xlat_get_polling_selection(); + + switch (new_pollingrate) + { + // follow the USB spec + case XLAT_POLLING_RATE_AUTO: + // keep the interval as is + break; + + // use Win like intervals + case XLAT_POLLING_RATE_WIN_LIKE: + switch (HID_Handle->poll) + { + case 1: + HID_Handle->poll = 1; + break; + + case 2 ... 3: + HID_Handle->poll = 2; + break; + + case 4 ... 7: + HID_Handle->poll = 4; + break; + + case 8 ... 15: + HID_Handle->poll = 8; + break; + + case 16 ... 31: + HID_Handle->poll = 16; + break; + + default: + HID_Handle->poll = 32; + } + break; + + // use the forced interval + default: + HID_Handle->poll = 1 << (new_pollingrate - XLAT_POLLING_RATE_1); + } + /* Check of available number of endpoints */ /* Find the number of EPs in the Interface Descriptor */ /* Choose the lower number in order not to overrun the buffer allocated */ @@ -740,7 +785,6 @@ HID_TypeTypeDef USBH_HID_GetDeviceType(USBH_HandleTypeDef *phost) return type; } - /** * @brief USBH_HID_GetPollInterval * Return HID device poll time @@ -764,6 +808,7 @@ uint8_t USBH_HID_GetPollInterval(USBH_HandleTypeDef *phost) return 0U; } } + /** * @brief USBH_HID_FifoInit * Initialize FIFO. diff --git a/src/xlat.c b/src/xlat.c index 2392b1f..2b669a7 100644 --- a/src/xlat.c +++ b/src/xlat.c @@ -51,6 +51,8 @@ static bool auto_trigger_level_high = false; static xlat_interface_t xlat_interface = XLAT_INTERFACE_AUTO; static uint8_t found_interface = 0xFF; static xlat_reportid_t xlat_reportid = XLAT_REPORTID_AUTO; +static bool need_reenumeration = false; +static uint8_t hid_pollingrate = XLAT_POLLING_RATE_WIN_LIKE; // The Razer optical switches will constantly trigger the GPIO interrupt, while pressed // Waveform looks like this in ASCII art: @@ -640,9 +642,12 @@ void xlat_reset_latency(void) void xlat_set_reportid_selection(xlat_reportid_t number) { - xlat_reportid = number; + if (xlat_reportid != number) + { + need_reenumeration = true; + } - MX_USB_HOST_ReEnumeration(); + xlat_reportid = number; } xlat_reportid_t xlat_get_reportid_selection() @@ -673,9 +678,12 @@ static void xlat_timer_callback(TimerHandle_t xTimer) void xlat_set_mode(enum xlat_mode mode) { - xlat_mode = mode; + if (xlat_mode != mode) + { + need_reenumeration = true; + } - MX_USB_HOST_ReEnumeration(); + xlat_mode = mode; } enum xlat_mode xlat_get_mode(void) @@ -711,9 +719,12 @@ bool xlat_auto_trigger_level_is_high(void) void xlat_set_interface_selection(xlat_interface_t number) { - xlat_interface = number; + if (xlat_interface != number) + { + need_reenumeration = true; + } - MX_USB_HOST_ReEnumeration(); + xlat_interface = number; } xlat_interface_t xlat_get_interface_selection() @@ -806,3 +817,28 @@ void xlat_init(void) snprintf(buf, sizeof(buf), "count;latency_us;avg_us;stdev_us\r\n"); vcp_writestr(buf); } + +void xlat_usb_reenumeration(void) +{ + if (need_reenumeration) + { + MX_USB_HOST_ReEnumeration(); + } + + need_reenumeration = false; +} + +void xlat_set_polling_selection(xlat_polling_rate_t rate) +{ + if (hid_pollingrate != rate) + { + need_reenumeration = true; + } + + hid_pollingrate = rate; +} + +xlat_polling_rate_t xlat_get_polling_selection(void) +{ + return hid_pollingrate; +} diff --git a/src/xlat.h b/src/xlat.h index aa137cd..65fddc3 100644 --- a/src/xlat.h +++ b/src/xlat.h @@ -76,10 +76,22 @@ typedef enum xlat_reportid { XLAT_REPORTID_8, } xlat_reportid_t; +typedef enum xlat_polling_rate { + XLAT_POLLING_RATE_AUTO = 0, + XLAT_POLLING_RATE_WIN_LIKE, + XLAT_POLLING_RATE_1, + XLAT_POLLING_RATE_2, + XLAT_POLLING_RATE_4, + XLAT_POLLING_RATE_8, + XLAT_POLLING_RATE_16, + XLAT_POLLING_RATE_32, +} xlat_polling_rate_t; + extern volatile bool xlat_initialized; void xlat_init(void); void xlat_usb_hid_event(void); +void xlat_usb_reenumeration(void); uint32_t xlat_get_latency_us(enum latency_type type); uint32_t xlat_get_average_latency(enum latency_type type); @@ -128,4 +140,7 @@ uint8_t xlat_get_found_interface(); void xlat_set_reportid_selection(xlat_reportid_t number); xlat_reportid_t xlat_get_reportid_selection(); +void xlat_set_polling_selection(xlat_polling_rate_t rate); +xlat_polling_rate_t xlat_get_polling_selection(void); + #endif //XLAT_H From 13cbe54261150a6d165310645a75e543b7e8c18f Mon Sep 17 00:00:00 2001 From: RockyZeroFour Date: Thu, 26 Jun 2025 13:24:10 +0200 Subject: [PATCH 6/6] Show polling time - Shows the current polling time of the interface - Does consider the speed --- src/gfx_main.c | 22 ++++++++++++++++++---- src/usb/usb_host.c | 15 ++++++++++++--- src/usb/usb_host.h | 2 ++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/gfx_main.c b/src/gfx_main.c index a87c16d..9d11232 100644 --- a/src/gfx_main.c +++ b/src/gfx_main.c @@ -341,19 +341,33 @@ static void new_theme_init_and_set(void) void gfx_set_byte_offsets_text(void) { - char text[100]; + char text[100]; hid_data_location_t * button = xlat_get_button_location(); hid_data_location_t * x = xlat_get_x_location(); hid_data_location_t * y = xlat_get_y_location(); hid_data_location_t * key = xlat_get_key_location(); uint8_t interface = xlat_get_found_interface(); + uint16_t polling_time = usb_host_get_polling_time_in_micro_frames(); + char time[8]; + + // Get the polling time + if (polling_time < 8) + { + // Print out the fraction of the millisecond + sprintf(time, "%dus", polling_time * 125); + } + else + { + // Here it should be only full millisecond + sprintf(time, "%dms", polling_time / 8); + } if (x->found && y->found && XLAT_MODE_MOTION == xlat_get_mode()) { - sprintf(text, "Motion Data (#%d): id%d motion@%d,%d", interface, xlat_get_reportid(), x->byte_offset, y->byte_offset); + sprintf(text, "Motion Data (#%d@%s): id%d motion@%d,%d", interface, time, xlat_get_reportid(), x->byte_offset, y->byte_offset); } else if (button->found && XLAT_MODE_CLICK == xlat_get_mode()) { - sprintf(text, "Button Data (#%d): id%d click@%d", interface, xlat_get_reportid(), button->byte_offset); + sprintf(text, "Button Data (#%d@%s): id%d click@%d", interface, time, xlat_get_reportid(), button->byte_offset); } else if (key->found && XLAT_MODE_KEY == xlat_get_mode()) { - sprintf(text, "Keyboard Data (#%d): id%d pressed@%d", interface, xlat_get_reportid(), key->byte_offset); + sprintf(text, "Keyboard Data (#%d@%s): id%d pressed@%d", interface, time, xlat_get_reportid(), key->byte_offset); } else { // offsets not found sprintf(text, (XLAT_MODE_KEY == xlat_get_mode()) ? "Keyboard Data: offsets not found" : "Mouse Data: offsets not found"); diff --git a/src/usb/usb_host.c b/src/usb/usb_host.c index 1f0b78f..fea09ad 100644 --- a/src/usb/usb_host.c +++ b/src/usb/usb_host.c @@ -113,13 +113,11 @@ void usb_host_set_product_string(const char * product) product_string[sizeof(product_string) - 1] = '\0'; } - char * usb_host_get_product_string(void) { return product_string; } - void usb_host_set_manuf_string(const char * manuf) { snprintf(manuf_string, sizeof(manuf_string), "%s", manuf); @@ -132,8 +130,19 @@ char * usb_host_get_manuf_string(void) return manuf_string; } - char * usb_host_get_vidpid_string(void) { return vidpid_string; } + +uint16_t usb_host_get_polling_time_in_micro_frames(void) +{ + uint8_t poll_intervall = USBH_HID_GetPollInterval(&hUsbHostHS); + + if (hUsbHostHS.device.speed != USBH_SPEED_HIGH) + { + poll_intervall *= 8; + } + + return poll_intervall; +} diff --git a/src/usb/usb_host.h b/src/usb/usb_host.h index 2b99e00..b381b42 100644 --- a/src/usb/usb_host.h +++ b/src/usb/usb_host.h @@ -73,6 +73,8 @@ char * usb_host_get_manuf_string(void); char * usb_host_get_vidpid_string(void); +uint16_t usb_host_get_polling_time_in_micro_frames(void); + /** * @} */