perf(nxp): v9.1.0 upstream vglite optimization (#6646)

Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>
Signed-off-by: Ana Grad <ana.grad@nxp.com>
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
Co-authored-by: Ana Grad <ana.grad@nxp.com>
Co-authored-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
This commit is contained in:
nicusorcitu
2024-08-26 21:11:26 +03:00
committed by GitHub
parent 0bd8cbcc9e
commit 2b33f8b0a7
16 changed files with 354 additions and 144 deletions

20
Kconfig
View File

@@ -346,26 +346,36 @@ menu "LVGL configuration"
depends on LV_USE_DRAW_VGLITE depends on LV_USE_DRAW_VGLITE
default n default n
config LV_USE_VGLITE_DRAW_ASYNC config LV_USE_VGLITE_DRAW_THREAD
bool "Enable VGLite draw async" bool "Use additional draw thread for VG-Lite processing"
depends on LV_USE_DRAW_VGLITE && LV_USE_OS > 0 depends on LV_USE_DRAW_VGLITE && LV_USE_OS > 0
default y default y
config LV_USE_VGLITE_DRAW_ASYNC
bool "Enable VGLite draw async"
depends on LV_USE_VGLITE_DRAW_THREAD
default y
help help
Queue multiple tasks and flash them once to the GPU. Queue multiple tasks and flash them once to the GPU. The task ready state will be send asynchronous to dispatcher.
config LV_USE_VGLITE_ASSERT config LV_USE_VGLITE_ASSERT
bool "Enable VGLite asserts" bool "Enable VGLite asserts"
default n
depends on LV_USE_DRAW_VGLITE depends on LV_USE_DRAW_VGLITE
default n
config LV_USE_DRAW_PXP config LV_USE_DRAW_PXP
bool "Use NXP's PXP on iMX RTxxx platforms" bool "Use NXP's PXP on iMX RTxxx platforms"
default n default n
config LV_USE_PXP_DRAW_THREAD
bool "Use additional draw thread for PXP processing"
depends on LV_USE_DRAW_PXP && LV_USE_OS > 0
default y
config LV_USE_PXP_ASSERT config LV_USE_PXP_ASSERT
bool "Enable PXP asserts" bool "Enable PXP asserts"
default n
depends on LV_USE_DRAW_PXP depends on LV_USE_DRAW_PXP
default n
config LV_USE_DRAW_DAVE2D config LV_USE_DRAW_DAVE2D
bool "Use Renesas Dave2D on RA platforms" bool "Use Renesas Dave2D on RA platforms"

View File

@@ -25,48 +25,48 @@ static const
LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMAGE_IMG_LVGL_LOGO LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMAGE_IMG_LVGL_LOGO
uint8_t img_lvgl_logo_map[] = { uint8_t img_lvgl_logo_map[] = {
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xda,0xd9,0x27,0x90,0x8f,0x8d,0x7d,0x74,0x74,0x71,0xa0,0x77,0x76,0x73,0x9f,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x76,0x76,0x73,0xa0,0x77,0x76,0x73,0x9b,0xa4,0xa4,0xa2,0x64,0xef,0xef,0xee,0x0f,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00, 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xda,0xd9,0x27,0x90,0x8f,0x8d,0x7d,0x74,0x74,0x71,0xa0,0x77,0x76,0x73,0x9f,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x77,0x76,0x73,0x9e,0x76,0x76,0x73,0xa0,0x77,0x76,0x73,0x9b,0xa4,0xa4,0xa2,0x64,0xef,0xef,0xee,0x0f,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x9d,0x9c,0x9a,0x72,0x44,0x43,0x3f,0xe2,0x37,0x36,0x32,0xfe,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xf8,0x55,0x54,0x50,0xc9,0xc5,0xc5,0xc3,0x3f,0xff,0xff,0xff,0x00, 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0x9d,0x9c,0x9a,0x72,0x44,0x43,0x3f,0xe2,0x37,0x36,0x32,0xfe,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xff,0x38,0x37,0x33,0xf8,0x55,0x54,0x50,0xc9,0xc5,0xc5,0xc3,0x3f,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0x9e,0x9d,0x9b,0x6f,0x29,0x27,0x23,0xff,0x35,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x30,0x2f,0x2a,0xff,0x34,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2a,0xff,0x38,0x37,0x33,0xf1,0xcf,0xce,0xcd,0x33, 0xff,0xff,0xff,0x00,0x9e,0x9d,0x9b,0x6f,0x29,0x27,0x23,0xff,0x35,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x30,0x2f,0x2a,0xff,0x34,0x33,0x2f,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2a,0xff,0x38,0x37,0x33,0xf1,0xcf,0xce,0xcd,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xdc,0xdb,0xdb,0x25,0x44,0x43,0x40,0xe5,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2b,0xff,0x48,0x47,0x43,0xff,0x6b,0x6a,0x67,0xff,0x4e,0x4d,0x49,0xff,0x31,0x30,0x2c,0xff,0x3a,0x39,0x35,0xff,0x2d,0x2c,0x28,0xff,0x6b,0x6b,0x67,0xb1, 0xdc,0xdb,0xdb,0x25,0x44,0x43,0x40,0xe5,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x30,0x2f,0x2b,0xff,0x48,0x47,0x43,0xff,0x6b,0x6a,0x67,0xff,0x4e,0x4d,0x49,0xff,0x31,0x30,0x2c,0xff,0x3a,0x39,0x35,0xff,0x2d,0x2c,0x28,0xff,0x6b,0x6b,0x67,0xb1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x8f,0x8f,0x8d,0x7d,0x37,0x36,0x32,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x32,0x31,0x2c,0xff,0x67,0x66,0x63,0xff,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x70,0x6f,0x6d,0xff,0x30,0x2f,0x2b,0xff,0x37,0x36,0x32,0xff,0x44,0x43,0x3f,0xe7, 0x8f,0x8f,0x8d,0x7d,0x37,0x36,0x32,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x32,0x31,0x2c,0xff,0x67,0x66,0x63,0xff,0xe6,0xe5,0xe5,0xff,0xff,0xff,0xff,0xff,0xed,0xed,0xed,0xff,0x70,0x6f,0x6d,0xff,0x30,0x2f,0x2b,0xff,0x37,0x36,0x32,0xff,0x44,0x43,0x3f,0xe7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x75,0x74,0x71,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x34,0x33,0x2e,0xff,0xcf,0xcf,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xdb,0xdb,0xff,0x39,0x38,0x34,0xff,0x36,0x35,0x31,0xff,0x40,0x3f,0x3b,0xef, 0x75,0x74,0x71,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x34,0x33,0x2e,0xff,0xcf,0xcf,0xce,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xdb,0xdb,0xdb,0xff,0x39,0x38,0x34,0xff,0x36,0x35,0x31,0xff,0x40,0x3f,0x3b,0xef,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x36,0x35,0x31,0xff,0xd9,0xd8,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe6,0xff,0x3e,0x3d,0x39,0xff,0x35,0x34,0x30,0xff,0x41,0x40,0x3c,0xee, 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x36,0x35,0x31,0xff,0xd9,0xd8,0xd7,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xe7,0xe6,0xff,0x3e,0x3d,0x39,0xff,0x35,0x34,0x30,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x2f,0x2e,0x2a,0xff,0x88,0x88,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x95,0x92,0xff,0x30,0x2f,0x2b,0xff,0x38,0x36,0x33,0xff,0x41,0x40,0x3c,0xee, 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x2f,0x2e,0x2a,0xff,0x88,0x88,0x85,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x95,0x95,0x92,0xff,0x30,0x2f,0x2b,0xff,0x38,0x36,0x33,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x33,0x32,0x2e,0xff,0x75,0x75,0x72,0xff,0xa0,0x9f,0x9d,0xff,0x7d,0x7d,0x7a,0xff,0x36,0x35,0x31,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x33,0x32,0x2e,0xff,0x75,0x75,0x72,0xff,0xa0,0x9f,0x9d,0xff,0x7d,0x7d,0x7a,0xff,0x36,0x35,0x31,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x2f,0x2e,0x2a,0xff,0x2c,0x2b,0x27,0xff,0x2e,0x2d,0x29,0xff,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x77,0x76,0x73,0x9e,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x38,0x37,0x33,0xff,0x2f,0x2e,0x2a,0xff,0x2c,0x2b,0x27,0xff,0x2e,0x2d,0x29,0xff,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x77,0x76,0x73,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x77,0x76,0x73,0x9f,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x72,0x72,0x6f,0xa2,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x72,0x72,0x6f,0xa2,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xb8,0xb8,0xb6,0x4d,0x40,0x3f,0x3c,0xea,0x2e,0x2d,0x28,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x31,0x2f,0x2b,0xff,0x2e,0x2d,0x29,0xff,0x32,0x31,0x2d,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xb8,0xb8,0xb6,0x4d,0x40,0x3f,0x3c,0xea,0x2e,0x2d,0x28,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x30,0x2f,0x2b,0xff,0x31,0x2f,0x2b,0xff,0x2e,0x2d,0x29,0xff,0x32,0x31,0x2d,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xdd,0xdc,0xd9,0x25,0xbf,0xbc,0xb7,0x4b,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc3,0xc1,0xbc,0x47,0xaa,0xa9,0xa5,0x63,0x58,0x57,0x53,0xcc,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xff,0xff,0xff,0x00,0xdd,0xdc,0xd9,0x25,0xbf,0xbc,0xb7,0x4b,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc1,0xbf,0xba,0x49,0xc3,0xc1,0xbc,0x47,0xaa,0xa9,0xa5,0x63,0x58,0x57,0x53,0xcc,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xfd,0xff,0xff,0x02,0xee,0xf6,0xff,0x13,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xee,0xf6,0xff,0x13,0xff,0xff,0xff,0x00,0xf3,0xf2,0xf0,0x0a,0x64,0x63,0x61,0xb9,0x31,0x30,0x2c,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xff,0xff,0xff,0x00,0xfd,0xff,0xff,0x02,0xee,0xf6,0xff,0x13,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xef,0xf6,0xff,0x12,0xee,0xf6,0xff,0x13,0xff,0xff,0xff,0x00,0xf3,0xf2,0xf0,0x0a,0x64,0x63,0x61,0xb9,0x31,0x30,0x2c,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xd1,0xde,0xfd,0x30,0x49,0x7d,0xf6,0xc8,0x24,0x63,0xf4,0xf7,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x23,0x62,0xf4,0xf6,0x50,0x81,0xf6,0xbf,0xf3,0xf9,0xff,0x0c,0xd3,0xd2,0xce,0x2f,0x35,0x34,0x30,0xfa,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xd1,0xde,0xfd,0x30,0x49,0x7d,0xf6,0xc8,0x24,0x63,0xf4,0xf7,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x28,0x65,0xf4,0xf4,0x23,0x62,0xf4,0xf6,0x50,0x81,0xf6,0xbf,0xf3,0xf9,0xff,0x0c,0xd3,0xd2,0xce,0x2f,0x35,0x34,0x30,0xfa,0x38,0x37,0x33,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x68,0x93,0xf7,0x9f,0x18,0x59,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x0f,0x53,0xf3,0xff,0xba,0xcf,0xff,0x4a,0xf5,0xf1,0xea,0x0a,0x41,0x40,0x3c,0xed,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x68,0x93,0xf7,0x9f,0x18,0x59,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x1d,0x5d,0xf3,0xff,0x0f,0x53,0xf3,0xff,0xba,0xcf,0xff,0x4a,0xf5,0xf1,0xea,0x0a,0x41,0x40,0x3c,0xed,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x64,0x90,0xf7,0xa4,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb7,0xcc,0xff,0x4f,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x64,0x90,0xf7,0xa4,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb7,0xcc,0xff,0x4f,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x66,0x91,0xf7,0xa2,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x16,0x58,0xf3,0xff,0xb8,0xcd,0xff,0x4e,0xf3,0xf0,0xe9,0x0e,0x41,0x40,0x3c,0xee,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x62,0x8e,0xf7,0xa7,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x15,0x57,0xf3,0xff,0xb6,0xcc,0xff,0x50,0xf2,0xef,0xe8,0x0f,0x3f,0x3e,0x3a,0xf1,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x62,0x8e,0xf7,0xa7,0x1f,0x5e,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x20,0x5f,0xf3,0xff,0x15,0x57,0xf3,0xff,0xb6,0xcc,0xff,0x50,0xf2,0xef,0xe8,0x0f,0x3f,0x3e,0x3a,0xf1,0x36,0x35,0x31,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7f,0xa3,0xf8,0x87,0x15,0x57,0xf3,0xff,0x14,0x56,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x13,0x56,0xf2,0xff,0x10,0x53,0xf3,0xff,0xc5,0xd7,0xff,0x3e,0xf8,0xf5,0xef,0x08,0x42,0x41,0x3d,0xe8,0x2a,0x29,0x24,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x30,0x2f,0x2a,0xff,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x7f,0xa3,0xf8,0x87,0x15,0x57,0xf3,0xff,0x14,0x56,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x15,0x57,0xf2,0xff,0x13,0x56,0xf2,0xff,0x10,0x53,0xf3,0xff,0xc5,0xd7,0xff,0x3e,0xf8,0xf5,0xef,0x08,0x42,0x41,0x3d,0xe8,0x2a,0x29,0x24,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x2f,0x2e,0x2a,0xff,0x30,0x2f,0x2a,0xff,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xef,0xf4,0xfe,0x0f,0x81,0xa5,0xf8,0x88,0x52,0x83,0xf6,0xbc,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x52,0x83,0xf6,0xbb,0x8a,0xab,0xf9,0x7e,0xfb,0xfd,0xff,0x04,0xff,0xff,0xff,0x00,0xb7,0xb6,0xb5,0x50,0x67,0x67,0x63,0xb1,0x69,0x68,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6b,0x6a,0x67,0xb3,0x67,0x66,0x63,0xb6,0x46,0x45,0x41,0xe5,0x30,0x2f,0x2a,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xef,0xf4,0xfe,0x0f,0x81,0xa5,0xf8,0x88,0x52,0x83,0xf6,0xbc,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x57,0x87,0xf6,0xba,0x52,0x83,0xf6,0xbb,0x8a,0xab,0xf9,0x7e,0xfb,0xfd,0xff,0x04,0xff,0xff,0xff,0x00,0xb7,0xb6,0xb5,0x50,0x67,0x67,0x63,0xb1,0x69,0x68,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6a,0x69,0x66,0xb4,0x6b,0x6a,0x67,0xb3,0x67,0x66,0x63,0xb6,0x46,0x45,0x41,0xe5,0x30,0x2f,0x2a,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xe5,0xe8,0xe8,0x17,0x69,0x68,0x65,0xb3,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xe5,0xe8,0xe8,0x17,0x69,0x68,0x65,0xb3,0x30,0x2f,0x2b,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xfa,0xfd,0xfa,0x02,0xbb,0xec,0xb8,0x54,0x9d,0xe3,0x99,0x8c,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0x9d,0xe3,0x98,0x8b,0xc1,0xed,0xbe,0x49,0xfe,0xff,0xfe,0x00,0xff,0xff,0xff,0x00,0xfe,0xd6,0xca,0x38,0xfc,0x9d,0x83,0x8e,0xfc,0x9f,0x84,0x95,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9d,0x82,0x96,0xfd,0xa7,0x8f,0x81,0xff,0xf4,0xf0,0x0f,0xeb,0xec,0xeb,0x14,0x47,0x46,0x43,0xe0,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xfa,0xfd,0xfa,0x02,0xbb,0xec,0xb8,0x54,0x9d,0xe3,0x99,0x8c,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0xa0,0xe4,0x9c,0x8b,0x9d,0xe3,0x98,0x8b,0xc1,0xed,0xbe,0x49,0xfe,0xff,0xfe,0x00,0xff,0xff,0xff,0x00,0xfe,0xd6,0xca,0x38,0xfc,0x9d,0x83,0x8e,0xfc,0x9f,0x84,0x95,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9f,0x85,0x93,0xfc,0x9d,0x82,0x96,0xfd,0xa7,0x8f,0x81,0xff,0xf4,0xf0,0x0f,0xeb,0xec,0xeb,0x14,0x47,0x46,0x43,0xe0,0x35,0x34,0x30,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xae,0xe7,0xab,0x61,0x61,0xd1,0x5b,0xfc,0x5e,0xd0,0x58,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5d,0xd0,0x58,0xff,0x5e,0xd1,0x59,0xf5,0xd8,0xf7,0xdb,0x28,0xff,0xf6,0xf7,0x07,0xf9,0x70,0x4a,0xdd,0xf8,0x58,0x2b,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x53,0x26,0xff,0xfb,0x98,0x7c,0x9b,0xff,0xff,0xff,0x00,0x7c,0x7c,0x7a,0x9d,0x2e,0x2d,0x29,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0xae,0xe7,0xab,0x61,0x61,0xd1,0x5b,0xfc,0x5e,0xd0,0x58,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5f,0xd1,0x59,0xff,0x5d,0xd0,0x58,0xff,0x5e,0xd1,0x59,0xf5,0xd8,0xf7,0xdb,0x28,0xff,0xf6,0xf7,0x07,0xf9,0x70,0x4a,0xdd,0xf8,0x58,0x2b,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x5c,0x31,0xff,0xf8,0x53,0x26,0xff,0xfb,0x98,0x7c,0x9b,0xff,0xff,0xff,0x00,0x7c,0x7c,0x7a,0x9d,0x2e,0x2d,0x29,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x93,0xe0,0x90,0x9a,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x5f,0xd1,0x5a,0xff,0xc9,0xf4,0xcc,0x42,0xff,0xef,0xef,0x0e,0xf8,0x69,0x41,0xf0,0xf8,0x63,0x3a,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x89,0x69,0xb6,0xff,0xff,0xff,0x00,0x83,0x83,0x81,0x93,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x93,0xe0,0x90,0x9a,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x5f,0xd1,0x5a,0xff,0xc9,0xf4,0xcc,0x42,0xff,0xef,0xef,0x0e,0xf8,0x69,0x41,0xf0,0xf8,0x63,0x3a,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x89,0x69,0xb6,0xff,0xff,0xff,0x00,0x83,0x83,0x81,0x93,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x96,0xe1,0x93,0x95,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x95,0xe1,0x93,0x97,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee, 0x95,0xe1,0x93,0x97,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x41,0x40,0x3c,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x97,0xe1,0x93,0x8d,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x40,0x3f,0x3b,0xee, 0x97,0xe1,0x93,0x8d,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x37,0x36,0x32,0xff,0x40,0x3f,0x3b,0xee,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xba,0xeb,0xb8,0x51,0x66,0xd3,0x61,0xf8,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x4b,0x49,0x46,0xde, 0xba,0xeb,0xb8,0x51,0x66,0xd3,0x61,0xf8,0x66,0xd3,0x61,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x3f,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xec,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6c,0xb1,0xff,0xff,0xff,0x00,0x82,0x82,0x80,0x95,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x35,0x34,0x30,0xff,0x4b,0x49,0x46,0xde,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xf2,0xfc,0xf2,0x0a,0x7c,0xd9,0x78,0xbf,0x60,0xd1,0x5b,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x40,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xed,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6b,0xb2,0xff,0xff,0xff,0x00,0x81,0x81,0x7f,0x96,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x3a,0x39,0x35,0xff,0x29,0x28,0x24,0xff,0x85,0x85,0x82,0x8e, 0xf2,0xfc,0xf2,0x0a,0x7c,0xd9,0x78,0xbf,0x60,0xd1,0x5b,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x67,0xd3,0x62,0xff,0x60,0xd1,0x5b,0xff,0xcb,0xf4,0xce,0x40,0xff,0xf0,0xf0,0x0d,0xf8,0x6b,0x43,0xed,0xf8,0x63,0x39,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x65,0x3c,0xff,0xf8,0x5d,0x32,0xff,0xfa,0x8b,0x6b,0xb2,0xff,0xff,0xff,0x00,0x81,0x81,0x7f,0x96,0x2e,0x2d,0x28,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x39,0x38,0x34,0xff,0x3a,0x39,0x35,0xff,0x29,0x28,0x24,0xff,0x85,0x85,0x82,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xd3,0xf2,0xd1,0x30,0x66,0xd2,0x61,0xe2,0x5e,0xd0,0x59,0xff,0x65,0xd3,0x60,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x5c,0xd0,0x57,0xff,0xcb,0xf4,0xce,0x3b,0xff,0xf1,0xf1,0x0c,0xf8,0x68,0x3f,0xf1,0xf8,0x61,0x37,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3b,0xff,0xf8,0x5a,0x2f,0xff,0xfa,0x89,0x69,0xb5,0xff,0xff,0xff,0x00,0x7f,0x7f,0x7d,0x97,0x2a,0x29,0x24,0xff,0x38,0x37,0x33,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x38,0x37,0x33,0xff,0x35,0x34,0x30,0xff,0x29,0x28,0x24,0xff,0x57,0x56,0x53,0xc8,0xeb,0xeb,0xea,0x14, 0xff,0xff,0xff,0x00,0xd3,0xf2,0xd1,0x30,0x66,0xd2,0x61,0xe2,0x5e,0xd0,0x59,0xff,0x65,0xd3,0x60,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x66,0xd3,0x61,0xff,0x5c,0xd0,0x57,0xff,0xcb,0xf4,0xce,0x3b,0xff,0xf1,0xf1,0x0c,0xf8,0x68,0x3f,0xf1,0xf8,0x61,0x37,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3a,0xff,0xf8,0x64,0x3b,0xff,0xf8,0x5a,0x2f,0xff,0xfa,0x89,0x69,0xb5,0xff,0xff,0xff,0x00,0x7f,0x7f,0x7d,0x97,0x2a,0x29,0x24,0xff,0x38,0x37,0x33,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x37,0x36,0x32,0xff,0x38,0x37,0x33,0xff,0x35,0x34,0x30,0xff,0x29,0x28,0x24,0xff,0x57,0x56,0x53,0xc8,0xeb,0xeb,0xea,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xf4,0xd9,0x26,0x8d,0xdf,0x8a,0x9f,0x6f,0xd6,0x6b,0xdd,0x6c,0xd4,0x67,0xed,0x6d,0xd5,0x68,0xed,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xed,0x69,0xd4,0x64,0xec,0x82,0xdb,0x7e,0xb0,0xee,0xfb,0xef,0x0c,0xff,0xfd,0xfd,0x01,0xfb,0x9b,0x81,0x92,0xf9,0x66,0x3e,0xeb,0xf9,0x6b,0x44,0xef,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6a,0x42,0xef,0xf9,0x6a,0x42,0xe3,0xfc,0xc2,0xb1,0x57,0xff,0xff,0xff,0x00,0xc3,0xc3,0xc2,0x42,0x44,0x43,0x3f,0xe0,0x3e,0x3e,0x3a,0xf0,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x40,0x3f,0x3b,0xee,0x4a,0x49,0x46,0xdb,0x85,0x84,0x82,0x8f,0xec,0xec,0xec,0x13,0xff,0xff,0xff,0x00, 0xff,0xff,0xff,0x00,0xff,0xff,0xff,0x00,0xda,0xf4,0xd9,0x26,0x8d,0xdf,0x8a,0x9f,0x6f,0xd6,0x6b,0xdd,0x6c,0xd4,0x67,0xed,0x6d,0xd5,0x68,0xed,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xec,0x6d,0xd5,0x68,0xed,0x69,0xd4,0x64,0xec,0x82,0xdb,0x7e,0xb0,0xee,0xfb,0xef,0x0c,0xff,0xfd,0xfd,0x01,0xfb,0x9b,0x81,0x92,0xf9,0x66,0x3e,0xeb,0xf9,0x6b,0x44,0xef,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6b,0x44,0xee,0xf9,0x6a,0x42,0xef,0xf9,0x6a,0x42,0xe3,0xfc,0xc2,0xb1,0x57,0xff,0xff,0xff,0x00,0xc3,0xc3,0xc2,0x42,0x44,0x43,0x3f,0xe0,0x3e,0x3e,0x3a,0xf0,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x41,0x40,0x3c,0xee,0x40,0x3f,0x3b,0xee,0x4a,0x49,0x46,0xdb,0x85,0x84,0x82,0x8f,0xec,0xec,0xec,0x13,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
}; };
@@ -76,7 +76,7 @@ const lv_img_dsc_t img_lvgl_logo = {
.header.flags = 0, .header.flags = 0,
.header.w = 42, .header.w = 42,
.header.h = 42, .header.h = 42,
.header.stride = 168, .header.stride = 192,
.data_size = sizeof(img_lvgl_logo_map), .data_size = sizeof(img_lvgl_logo_map),
.data = img_lvgl_logo_map, .data = img_lvgl_logo_map,
}; };

View File

@@ -71,11 +71,11 @@ handle the supported draw tasks.
.. code:: c .. code:: c
#if LV_USE_OS #if LV_USE_PXP_DRAW_THREAD
lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit); lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
#endif #endif
If `LV_USE_OS` is not defined, then no additional draw thread will be created If `LV_USE_PXP_DRAW_THREAD` is not defined, then no additional draw thread will be created
and the PXP drawing task will get executed on the same LVGL main thread. and the PXP drawing task will get executed on the same LVGL main thread.
`_pxp_evaluate()` will get called after each task is being created and will `_pxp_evaluate()` will get called after each task is being created and will
@@ -218,7 +218,7 @@ and height, and command buffer size are in the SDK file "vglite_support.h".
.. code:: c .. code:: c
#if LV_USE_GPU_NXP_VG_LITE #if LV_USE_DRAW_VGLITE
#include "vg_lite.h" #include "vg_lite.h"
#include "vglite_support.h" #include "vglite_support.h"
#endif #endif
@@ -265,11 +265,11 @@ handle the supported draw tasks.
.. code:: c .. code:: c
#if LV_USE_OS #if LV_USE_VGLITE_DRAW_THREAD
lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit); lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit);
#endif #endif
If `LV_USE_OS` is not defined, then no additional draw thread will be created If `LV_USE_VGLITE_DRAW_THREAD` is not defined, then no additional draw thread will be created
and the VGLite drawing task will get executed on the same LVGL main thread. and the VGLite drawing task will get executed on the same LVGL main thread.
`_vglite_evaluate()` will get called after each task is being created and will `_vglite_evaluate()` will get called after each task is being created and will

View File

@@ -191,8 +191,13 @@
#define LV_USE_VGLITE_BLIT_SPLIT 0 #define LV_USE_VGLITE_BLIT_SPLIT 0
#if LV_USE_OS #if LV_USE_OS
/* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */ /* Use additional draw thread for VG-Lite processing.*/
#define LV_USE_VGLITE_DRAW_ASYNC 1 #define LV_USE_VGLITE_DRAW_THREAD 1
#if LV_USE_VGLITE_DRAW_THREAD
/* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */
#define LV_USE_VGLITE_DRAW_ASYNC 1
#endif
#endif #endif
/* Enable VGLite asserts. */ /* Enable VGLite asserts. */
@@ -203,6 +208,11 @@
#define LV_USE_DRAW_PXP 0 #define LV_USE_DRAW_PXP 0
#if LV_USE_DRAW_PXP #if LV_USE_DRAW_PXP
#if LV_USE_OS
/* Use additional draw thread for PXP processing.*/
#define LV_USE_PXP_DRAW_THREAD 1
#endif
/* Enable PXP asserts. */ /* Enable PXP asserts. */
#define LV_USE_PXP_ASSERT 0 #define LV_USE_PXP_ASSERT 0
#endif #endif

View File

@@ -3,6 +3,10 @@
* *
*/ */
/**
* Modified by NXP in 2024
*/
/********************* /*********************
* INCLUDES * INCLUDES
*********************/ *********************/
@@ -78,6 +82,7 @@ void * lv_draw_create_unit(size_t size)
new_unit->next = _draw_info.unit_head; new_unit->next = _draw_info.unit_head;
_draw_info.unit_head = new_unit; _draw_info.unit_head = new_unit;
_draw_info.unit_cnt++;
return new_unit; return new_unit;
} }
@@ -154,20 +159,33 @@ void lv_draw_finalize_task_creation(lv_layer_t * layer, lv_draw_task_t * t)
LV_PROFILER_END; LV_PROFILER_END;
} }
void lv_draw_wait_for_finish(void)
{
#if LV_USE_OS
lv_draw_unit_t * u = _draw_info.unit_head;
while(u) {
if(u->wait_for_finish_cb)
u->wait_for_finish_cb(u);
u = u->next;
}
#endif
}
void lv_draw_dispatch(void) void lv_draw_dispatch(void)
{ {
LV_PROFILER_BEGIN; LV_PROFILER_BEGIN;
bool render_running = false; bool task_dispatched = false;
lv_display_t * disp = lv_display_get_next(NULL); lv_display_t * disp = lv_display_get_next(NULL);
while(disp) { while(disp) {
lv_layer_t * layer = disp->layer_head; lv_layer_t * layer = disp->layer_head;
while(layer) { while(layer) {
/* If there are no tasks in the layer, skip it */ /* If there are no tasks in the layer, skip it */
if(layer->draw_task_head && lv_draw_dispatch_layer(disp, layer)) if(layer->draw_task_head && lv_draw_dispatch_layer(disp, layer))
render_running = true; task_dispatched = true;
layer = layer->next; layer = layer->next;
} }
if(!render_running) { if(!task_dispatched) {
lv_draw_wait_for_finish();
lv_draw_dispatch_request(); lv_draw_dispatch_request();
} }
disp = lv_display_get_next(disp); disp = lv_display_get_next(disp);
@@ -232,7 +250,7 @@ bool lv_draw_dispatch_layer(lv_display_t * disp, lv_layer_t * layer)
t = t_next; t = t_next;
} }
bool render_running = false; bool task_dispatched = false;
/*This layer is ready, enable blending its buffer*/ /*This layer is ready, enable blending its buffer*/
if(layer->parent && layer->all_tasks_added && layer->draw_task_head == NULL) { if(layer->parent && layer->all_tasks_added && layer->draw_task_head == NULL) {
@@ -257,13 +275,13 @@ bool lv_draw_dispatch_layer(lv_display_t * disp, lv_layer_t * layer)
lv_draw_unit_t * u = _draw_info.unit_head; lv_draw_unit_t * u = _draw_info.unit_head;
while(u) { while(u) {
int32_t taken_cnt = u->dispatch_cb(u, layer); int32_t taken_cnt = u->dispatch_cb(u, layer);
if(taken_cnt != LV_DRAW_UNIT_IDLE) render_running = true; if(taken_cnt != LV_DRAW_UNIT_IDLE) task_dispatched = true;
u = u->next; u = u->next;
} }
} }
LV_PROFILER_END; LV_PROFILER_END;
return render_running; return task_dispatched;
} }
void lv_draw_dispatch_wait_for_request(void) void lv_draw_dispatch_wait_for_request(void)
@@ -285,6 +303,11 @@ void lv_draw_dispatch_request(void)
#endif #endif
} }
uint32_t lv_draw_get_unit_count(void)
{
return _draw_info.unit_cnt;
}
lv_draw_task_t * lv_draw_get_next_available_task(lv_layer_t * layer, lv_draw_task_t * t_prev, uint8_t draw_unit_id) lv_draw_task_t * lv_draw_get_next_available_task(lv_layer_t * layer, lv_draw_task_t * t_prev, uint8_t draw_unit_id)
{ {
LV_PROFILER_BEGIN; LV_PROFILER_BEGIN;

View File

@@ -3,6 +3,10 @@
* *
*/ */
/**
* Modified by NXP in 2024
*/
#ifndef LV_DRAW_H #ifndef LV_DRAW_H
#define LV_DRAW_H #define LV_DRAW_H
@@ -171,12 +175,23 @@ bool lv_draw_dispatch_layer(lv_display_t * disp, lv_layer_t * layer);
*/ */
void lv_draw_dispatch_wait_for_request(void); void lv_draw_dispatch_wait_for_request(void);
/**
* Wait for draw finish in case of asynchronous task execution.
* If `LV_USE_OS == 0` it just return.
*/
void lv_draw_wait_for_finish(void);
/** /**
* When a draw unit finished a draw task it needs to request dispatching * When a draw unit finished a draw task it needs to request dispatching
* to let LVGL assign a new draw task to it * to let LVGL assign a new draw task to it
*/ */
void lv_draw_dispatch_request(void); void lv_draw_dispatch_request(void);
/**
* Get the total number of draw units.
*/
uint32_t lv_draw_get_unit_count(void);
/** /**
* Find and available draw task * Find and available draw task
* @param layer the draw ctx to search in * @param layer the draw ctx to search in

View File

@@ -3,6 +3,10 @@
* *
*/ */
/**
* Modified by NXP in 2024
*/
#ifndef LV_DRAW_PRIVATE_H #ifndef LV_DRAW_PRIVATE_H
#define LV_DRAW_PRIVATE_H #define LV_DRAW_PRIVATE_H
@@ -111,6 +115,51 @@ struct lv_draw_unit_t {
*/ */
int32_t (*evaluate_cb)(lv_draw_unit_t * draw_unit, lv_draw_task_t * task); int32_t (*evaluate_cb)(lv_draw_unit_t * draw_unit, lv_draw_task_t * task);
/**
* Called to signal the unit to complete all tasks in order to return their ready status.
* This callback can be implemented in case of asynchronous task processing.
* Below is an example to show the difference between synchronous and asynchronous:
*
* Synchronous:
* LVGL thread DRAW thread HW
*
* task1 --> submit --> Receive task1
* wait_for_finish()
* <-- task1->state = READY <-- Complete task1
* task2 --> submit --> Receive task2
* wait_for_finish()
* task2->state = READY <-- Complete task2
* task3 --> submit --> Receive task3
* wait_for_finish()
* <-- task3->state = READY <-- Complete task3
* task4 --> submit --> Receive task4
* wait_for_finish()
* <-- task4->state = READY <-- Complete task4
* NO MORE TASKS
*
*
* Asynchronous:
* LVGL thread DRAW thread HW
* is IDLE
* task1 --> queue task1
* submit --> Receive task1
* task2 --> queue task2 is BUSY (with task1)
* task3 --> queue task3 still BUSY (with task1)
* task4 --> queue task4 becomes IDLE
* <-- task1->state = READY <-- Complete task1
* submit --> Receive task2, task3, task4
* NO MORE TASKS
* wait_for_finish_cb() wait_for_finish()
* <-- Complete task2, task3, task4
* <-- task2->state = READY <--
* <-- task3->state = READY <--
* <-- task4->state = READY <--
*
* @param draw_unit
* @return
*/
int32_t (*wait_for_finish_cb)(lv_draw_unit_t * draw_unit);
/** /**
* Called to delete draw unit. * Called to delete draw unit.
* @param draw_unit * @param draw_unit
@@ -121,6 +170,7 @@ struct lv_draw_unit_t {
typedef struct { typedef struct {
lv_draw_unit_t * unit_head; lv_draw_unit_t * unit_head;
uint32_t unit_cnt;
uint32_t used_memory_for_layers_kb; uint32_t used_memory_for_layers_kb;
#if LV_USE_OS #if LV_USE_OS
lv_thread_sync_t sync; lv_thread_sync_t sync;

View File

@@ -54,7 +54,7 @@ static int32_t _pxp_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer);
*/ */
static int32_t _pxp_delete(lv_draw_unit_t * draw_unit); static int32_t _pxp_delete(lv_draw_unit_t * draw_unit);
#if LV_USE_OS #if LV_USE_PXP_DRAW_THREAD
static void _pxp_render_thread_cb(void * ptr); static void _pxp_render_thread_cb(void * ptr);
#endif #endif
@@ -91,7 +91,7 @@ void lv_draw_pxp_init(void)
lv_pxp_init(); lv_pxp_init();
#if LV_USE_OS #if LV_USE_PXP_DRAW_THREAD
lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit); lv_thread_init(&draw_pxp_unit->thread, LV_THREAD_PRIO_HIGH, _pxp_render_thread_cb, 2 * 1024, draw_pxp_unit);
#endif #endif
} }
@@ -330,7 +330,7 @@ static int32_t _pxp_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer)
draw_pxp_unit->base_unit.clip_area = &t->clip_area; draw_pxp_unit->base_unit.clip_area = &t->clip_area;
draw_pxp_unit->task_act = t; draw_pxp_unit->task_act = t;
#if LV_USE_OS #if LV_USE_PXP_DRAW_THREAD
/* Let the render thread work. */ /* Let the render thread work. */
if(draw_pxp_unit->inited) if(draw_pxp_unit->inited)
lv_thread_sync_signal(&draw_pxp_unit->sync); lv_thread_sync_signal(&draw_pxp_unit->sync);
@@ -349,7 +349,7 @@ static int32_t _pxp_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer)
static int32_t _pxp_delete(lv_draw_unit_t * draw_unit) static int32_t _pxp_delete(lv_draw_unit_t * draw_unit)
{ {
#if LV_USE_OS #if LV_USE_PXP_DRAW_THREAD
lv_draw_pxp_unit_t * draw_pxp_unit = (lv_draw_pxp_unit_t *) draw_unit; lv_draw_pxp_unit_t * draw_pxp_unit = (lv_draw_pxp_unit_t *) draw_unit;
LV_LOG_INFO("Cancel PXP draw thread."); LV_LOG_INFO("Cancel PXP draw thread.");
@@ -445,7 +445,7 @@ static void _pxp_execute_drawing(lv_draw_pxp_unit_t * u)
#endif #endif
} }
#if LV_USE_OS #if LV_USE_PXP_DRAW_THREAD
static void _pxp_render_thread_cb(void * ptr) static void _pxp_render_thread_cb(void * ptr)
{ {
lv_draw_pxp_unit_t * u = ptr; lv_draw_pxp_unit_t * u = ptr;

View File

@@ -19,9 +19,7 @@
#include "lv_vglite_buf.h" #include "lv_vglite_buf.h"
#include "lv_vglite_utils.h" #include "lv_vglite_utils.h"
#if LV_USE_PARALLEL_DRAW_DEBUG #include "../../../core/lv_global.h"
#include "../../../core/lv_global.h"
#endif
/********************* /*********************
* DEFINES * DEFINES
@@ -30,7 +28,7 @@
#define DRAW_UNIT_ID_VGLITE 2 #define DRAW_UNIT_ID_VGLITE 2
#if LV_USE_VGLITE_DRAW_ASYNC #if LV_USE_VGLITE_DRAW_ASYNC
#define VGLITE_TASK_BUF_SIZE 10 #define VGLITE_TASK_BUF_SIZE 100
#endif #endif
/********************** /**********************
@@ -63,12 +61,19 @@ static int32_t _vglite_evaluate(lv_draw_unit_t * draw_unit, lv_draw_task_t * tas
*/ */
static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer); static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer);
/*
* Wait for VG-Lite draw unit to finish.
*/
#if LV_USE_VGLITE_DRAW_ASYNC
static int32_t _vglite_wait_for_finish(lv_draw_unit_t * draw_unit);
#endif
/* /*
* Delete the VGLite draw unit. * Delete the VGLite draw unit.
*/ */
static int32_t _vglite_delete(lv_draw_unit_t * draw_unit); static int32_t _vglite_delete(lv_draw_unit_t * draw_unit);
#if LV_USE_OS #if LV_USE_VGLITE_DRAW_THREAD
static void _vglite_render_thread_cb(void * ptr); static void _vglite_render_thread_cb(void * ptr);
#endif #endif
@@ -78,9 +83,7 @@ static void _vglite_execute_drawing(lv_draw_vglite_unit_t * u);
* STATIC VARIABLES * STATIC VARIABLES
**********************/ **********************/
#if LV_USE_PARALLEL_DRAW_DEBUG #define _draw_info LV_GLOBAL_DEFAULT()->draw_info
#define _draw_info LV_GLOBAL_DEFAULT()->draw_info
#endif
#if LV_USE_VGLITE_DRAW_ASYNC #if LV_USE_VGLITE_DRAW_ASYNC
/* /*
@@ -108,9 +111,12 @@ void lv_draw_vglite_init(void)
lv_draw_vglite_unit_t * draw_vglite_unit = lv_draw_create_unit(sizeof(lv_draw_vglite_unit_t)); lv_draw_vglite_unit_t * draw_vglite_unit = lv_draw_create_unit(sizeof(lv_draw_vglite_unit_t));
draw_vglite_unit->base_unit.evaluate_cb = _vglite_evaluate; draw_vglite_unit->base_unit.evaluate_cb = _vglite_evaluate;
draw_vglite_unit->base_unit.dispatch_cb = _vglite_dispatch; draw_vglite_unit->base_unit.dispatch_cb = _vglite_dispatch;
#if LV_USE_VGLITE_DRAW_ASYNC
draw_vglite_unit->base_unit.wait_for_finish_cb = _vglite_wait_for_finish;
#endif
draw_vglite_unit->base_unit.delete_cb = _vglite_delete; draw_vglite_unit->base_unit.delete_cb = _vglite_delete;
#if LV_USE_OS #if LV_USE_VGLITE_DRAW_THREAD
lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit); lv_thread_init(&draw_vglite_unit->thread, LV_THREAD_PRIO_HIGH, _vglite_render_thread_cb, 2 * 1024, draw_vglite_unit);
#endif #endif
} }
@@ -282,9 +288,26 @@ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer)
/* Try to get an ready to draw. */ /* Try to get an ready to draw. */
lv_draw_task_t * t = lv_draw_get_next_available_task(layer, NULL, DRAW_UNIT_ID_VGLITE); lv_draw_task_t * t = lv_draw_get_next_available_task(layer, NULL, DRAW_UNIT_ID_VGLITE);
if(t == NULL || t->preferred_draw_unit_id != DRAW_UNIT_ID_VGLITE) if(t == NULL)
return LV_DRAW_UNIT_IDLE; return LV_DRAW_UNIT_IDLE;
if(lv_draw_get_unit_count() > 1) {
/* Let the SW unit to draw this task. */
if(t->preferred_draw_unit_id != DRAW_UNIT_ID_VGLITE)
return LV_DRAW_UNIT_IDLE;
}
else {
/* Fake unsupported tasks as ready. */
if(t->preferred_draw_unit_id != DRAW_UNIT_ID_VGLITE) {
t->state = LV_DRAW_TASK_STATE_READY;
/* Request a new dispatching as it can get a new task. */
lv_draw_dispatch_request();
return 1;
}
}
void * buf = lv_draw_layer_alloc_buf(layer); void * buf = lv_draw_layer_alloc_buf(layer);
if(buf == NULL) if(buf == NULL)
return LV_DRAW_UNIT_IDLE; return LV_DRAW_UNIT_IDLE;
@@ -294,7 +317,7 @@ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer)
draw_vglite_unit->base_unit.clip_area = &t->clip_area; draw_vglite_unit->base_unit.clip_area = &t->clip_area;
draw_vglite_unit->task_act = t; draw_vglite_unit->task_act = t;
#if LV_USE_OS #if LV_USE_VGLITE_DRAW_THREAD
/* Let the render thread work. */ /* Let the render thread work. */
if(draw_vglite_unit->inited) if(draw_vglite_unit->inited)
lv_thread_sync_signal(&draw_vglite_unit->sync); lv_thread_sync_signal(&draw_vglite_unit->sync);
@@ -311,9 +334,22 @@ static int32_t _vglite_dispatch(lv_draw_unit_t * draw_unit, lv_layer_t * layer)
return 1; return 1;
} }
#if LV_USE_VGLITE_DRAW_ASYNC
static int32_t _vglite_wait_for_finish(lv_draw_unit_t * draw_unit)
{
lv_draw_vglite_unit_t * draw_vglite_unit = (lv_draw_vglite_unit_t *) draw_unit;
draw_vglite_unit->wait_for_finish = true;
if(draw_vglite_unit->inited)
lv_thread_sync_signal(&draw_vglite_unit->sync);
return 1;
}
#endif
static int32_t _vglite_delete(lv_draw_unit_t * draw_unit) static int32_t _vglite_delete(lv_draw_unit_t * draw_unit)
{ {
#if LV_USE_OS #if LV_USE_VGLITE_DRAW_THREAD
lv_draw_vglite_unit_t * draw_vglite_unit = (lv_draw_vglite_unit_t *) draw_unit; lv_draw_vglite_unit_t * draw_vglite_unit = (lv_draw_vglite_unit_t *) draw_unit;
LV_LOG_INFO("Cancel VGLite draw thread."); LV_LOG_INFO("Cancel VGLite draw thread.");
@@ -328,7 +364,7 @@ static int32_t _vglite_delete(lv_draw_unit_t * draw_unit)
#else #else
LV_UNUSED(draw_unit); LV_UNUSED(draw_unit);
return 0; return 1;
#endif #endif
} }
@@ -354,8 +390,8 @@ static void _vglite_execute_drawing(lv_draw_vglite_unit_t * u)
if(!lv_area_intersect(&draw_area, &draw_area, &clip_area)) if(!lv_area_intersect(&draw_area, &draw_area, &clip_area))
return; /*Fully clipped, nothing to do*/ return; /*Fully clipped, nothing to do*/
/* Invalidate the drawing area */ if(_draw_info.unit_cnt > 1)
lv_draw_buf_invalidate_cache(draw_buf, &draw_area); lv_draw_buf_invalidate_cache(draw_buf, &draw_area);
/* Set scissor area, excluding the split blit case */ /* Set scissor area, excluding the split blit case */
#if LV_USE_VGLITE_BLIT_SPLIT #if LV_USE_VGLITE_BLIT_SPLIT
@@ -442,27 +478,46 @@ static void _vglite_execute_drawing(lv_draw_vglite_unit_t * u)
} }
#if LV_USE_VGLITE_DRAW_ASYNC #if LV_USE_VGLITE_DRAW_ASYNC
static inline void _vglite_queue_task(lv_draw_task_t * task_act) static inline void _vglite_queue_task(lv_draw_task_t * task)
{ {
_draw_task_buf[_tail].task = task_act; VGLITE_ASSERT_MSG(((_tail + 1) % VGLITE_TASK_BUF_SIZE) != _head, "VGLite task buffer full.");
_draw_task_buf[_tail].task = task;
_draw_task_buf[_tail].flushed = false; _draw_task_buf[_tail].flushed = false;
_tail = (_tail + 1) % VGLITE_TASK_BUF_SIZE; _tail = (_tail + 1) % VGLITE_TASK_BUF_SIZE;
} }
static inline void _vglite_signal_task_ready(lv_draw_task_t * task_act) static inline void _vglite_signal_task_ready(lv_draw_task_t * task)
{
/* Signal the ready state to dispatcher. */
task->state = LV_DRAW_TASK_STATE_READY;
_head = (_head + 1) % VGLITE_TASK_BUF_SIZE;
/* No need to cleanup the tasks in buffer as we advance with the _head. */
}
static inline void _vglite_signal_all_task_ready(void)
{
int end = (_head <= _tail) ? _tail : _tail + VGLITE_TASK_BUF_SIZE;
for(int i = _head; i < end; i++) {
lv_draw_task_t * task = _draw_task_buf[i % VGLITE_TASK_BUF_SIZE].task;
_vglite_signal_task_ready(task);
}
}
static inline void _vglite_signal_flushed_task_ready(void)
{ {
if(vglite_cmd_buf_is_flushed()) { if(vglite_cmd_buf_is_flushed()) {
int end = (_head < _tail) ? _tail : _tail + VGLITE_TASK_BUF_SIZE; int end = (_head <= _tail) ? _tail : _tail + VGLITE_TASK_BUF_SIZE;
for(int i = _head; i < end; i++) { for(int i = _head; i < end; i++) {
/* Previous flushed tasks are ready now. */
if(_draw_task_buf[i % VGLITE_TASK_BUF_SIZE].flushed) { if(_draw_task_buf[i % VGLITE_TASK_BUF_SIZE].flushed) {
lv_draw_task_t * task = _draw_task_buf[i % VGLITE_TASK_BUF_SIZE].task; lv_draw_task_t * task = _draw_task_buf[i % VGLITE_TASK_BUF_SIZE].task;
/* Signal the ready state to dispatcher. */ _vglite_signal_task_ready(task);
task->state = LV_DRAW_TASK_STATE_READY;
_head = (_head + 1) % VGLITE_TASK_BUF_SIZE;
/* No need to cleanup the tasks in buffer as we advance with the _head. */
} }
else { else {
/* Those tasks have been flushed now. */ /* Those tasks have been flushed now. */
@@ -470,13 +525,10 @@ static inline void _vglite_signal_task_ready(lv_draw_task_t * task_act)
} }
} }
} }
if(task_act)
VGLITE_ASSERT_MSG(_tail != _head, "VGLite task buffer full.");
} }
#endif #endif
#if LV_USE_OS #if LV_USE_VGLITE_DRAW_THREAD
static void _vglite_render_thread_cb(void * ptr) static void _vglite_render_thread_cb(void * ptr)
{ {
lv_draw_vglite_unit_t * u = ptr; lv_draw_vglite_unit_t * u = ptr;
@@ -490,9 +542,9 @@ static void _vglite_render_thread_cb(void * ptr)
#if LV_USE_VGLITE_DRAW_ASYNC #if LV_USE_VGLITE_DRAW_ASYNC
/* /*
* Wait for sync if _draw_task_buf is empty. * Wait for sync if _draw_task_buf is empty.
* The thread will have to run as much as there are pending tasks. * The thread will have to run to complete any pending tasks.
*/ */
&& _head == _tail && !u->wait_for_finish
#endif #endif
) { ) {
if(u->exit_status) if(u->exit_status)
@@ -513,16 +565,14 @@ static void _vglite_render_thread_cb(void * ptr)
_vglite_execute_drawing(u); _vglite_execute_drawing(u);
} }
#if LV_USE_VGLITE_DRAW_ASYNC #if LV_USE_VGLITE_DRAW_ASYNC
else { if(u->wait_for_finish) {
/* u->wait_for_finish = false;
* Update the flush status for last pending tasks. vglite_wait_for_finish();
* vg_lite_flush() will early return if there is nothing to submit. _vglite_signal_all_task_ready();
*/ }
vglite_run(); else { /* u->task_act */
_vglite_signal_flushed_task_ready();
} }
#endif
#if LV_USE_VGLITE_DRAW_ASYNC
_vglite_signal_task_ready((void *)u->task_act);
#else #else
/* Signal the ready state to dispatcher. */ /* Signal the ready state to dispatcher. */
u->task_act->state = LV_DRAW_TASK_STATE_READY; u->task_act->state = LV_DRAW_TASK_STATE_READY;

View File

@@ -23,7 +23,9 @@ extern "C" {
#include "../../../lv_conf_internal.h" #include "../../../lv_conf_internal.h"
#if LV_USE_DRAW_VGLITE #if LV_USE_DRAW_VGLITE
#include "../../sw/lv_draw_sw.h" #include "../../lv_draw_private.h"
#include "../../sw/lv_draw_sw_private.h"
#include "../../../misc/lv_area_private.h"
/********************* /*********************
* DEFINES * DEFINES
@@ -33,7 +35,12 @@ extern "C" {
* TYPEDEFS * TYPEDEFS
**********************/ **********************/
typedef lv_draw_sw_unit_t lv_draw_vglite_unit_t; typedef struct lv_draw_vglite_unit {
lv_draw_sw_unit_t;
#if LV_USE_VGLITE_DRAW_ASYNC
volatile bool wait_for_finish;
#endif
} lv_draw_vglite_unit_t;
/********************** /**********************
* GLOBAL PROTOTYPES * GLOBAL PROTOTYPES

View File

@@ -20,6 +20,7 @@
#include "lv_vglite_matrix.h" #include "lv_vglite_matrix.h"
#include "lv_vglite_utils.h" #include "lv_vglite_utils.h"
#include "../../lv_draw_label_private.h"
#include "../../../stdlib/lv_string.h" #include "../../../stdlib/lv_string.h"
/********************* /*********************
@@ -118,26 +119,15 @@ static void _draw_vglite_letter(lv_draw_unit_t * draw_unit, lv_draw_glyph_dsc_t
mask_area.x2 = mask_width - 1; mask_area.x2 = mask_width - 1;
mask_area.y2 = mask_height - 1; mask_area.y2 = mask_height - 1;
if(!vglite_src_buf_aligned(mask_buf, mask_stride, LV_COLOR_FORMAT_A8)) { /* Set src_vgbuf structure. */
/* Draw a placeholder rectangle*/ vglite_set_src_buf(mask_buf, mask_width, mask_height, mask_stride, LV_COLOR_FORMAT_A8);
lv_draw_border_dsc_t border_draw_dsc;
lv_draw_border_dsc_init(&border_draw_dsc);
border_draw_dsc.opa = glyph_draw_dsc->opa;
border_draw_dsc.color = glyph_draw_dsc->color;
border_draw_dsc.width = 1;
lv_draw_vglite_border(draw_unit, &border_draw_dsc, glyph_draw_dsc->bg_coords);
}
else {
/* Set src_vgbuf structure. */
vglite_set_src_buf(mask_buf, mask_width, mask_height, mask_stride, LV_COLOR_FORMAT_A8);
/* Set vgmatrix. */ /* Set vgmatrix. */
vglite_set_translation_matrix(&blend_area); vglite_set_translation_matrix(&blend_area);
lv_draw_buf_invalidate_cache(draw_buf, &mask_area); lv_draw_buf_invalidate_cache(draw_buf, &mask_area);
_vglite_draw_letter(&mask_area, glyph_draw_dsc->color, glyph_draw_dsc->opa); _vglite_draw_letter(&mask_area, glyph_draw_dsc->color, glyph_draw_dsc->opa);
}
} }
break; break;
case LV_FONT_GLYPH_FORMAT_IMAGE: { case LV_FONT_GLYPH_FORMAT_IMAGE: {

View File

@@ -18,9 +18,7 @@
#if LV_USE_DRAW_VGLITE #if LV_USE_DRAW_VGLITE
#include "../../../stdlib/lv_string.h" #include "../../../stdlib/lv_string.h"
#if LV_USE_PARALLEL_DRAW_DEBUG #include "../../../core/lv_global.h"
#include "../../../core/lv_global.h"
#endif
/********************* /*********************
* DEFINES * DEFINES
@@ -38,9 +36,7 @@
* STATIC VARIABLES * STATIC VARIABLES
**********************/ **********************/
#if LV_USE_PARALLEL_DRAW_DEBUG #define _draw_info LV_GLOBAL_DEFAULT()->draw_info
#define _draw_info LV_GLOBAL_DEFAULT()->draw_info
#endif
/********************** /**********************
* MACROS * MACROS
@@ -62,13 +58,15 @@ void lv_draw_vglite_layer(lv_draw_unit_t * draw_unit, const lv_draw_image_dsc_t
if(draw_buf == NULL) if(draw_buf == NULL)
return; return;
const lv_area_t area_to_draw = { if(_draw_info.unit_cnt > 1) {
.x1 = 0, const lv_area_t area_to_draw = {
.y1 = 0, .x1 = 0,
.x2 = draw_buf->header.w - 1, .y1 = 0,
.y2 = draw_buf->header.h - 1 .x2 = draw_buf->header.w - 1,
}; .y2 = draw_buf->header.h - 1
lv_draw_buf_invalidate_cache(draw_buf, &area_to_draw); };
lv_draw_buf_invalidate_cache(draw_buf, &area_to_draw);
}
lv_draw_image_dsc_t new_draw_dsc = *draw_dsc; lv_draw_image_dsc_t new_draw_dsc = *draw_dsc;
new_draw_dsc.src = draw_buf; new_draw_dsc.src = draw_buf;

View File

@@ -104,6 +104,13 @@ void vglite_run(void)
#endif #endif
} }
#if LV_USE_VGLITE_DRAW_ASYNC
void vglite_wait_for_finish(void)
{
VGLITE_CHECK_ERROR(vg_lite_finish());
}
#endif
vg_lite_color_t vglite_get_color(lv_color32_t lv_col32, bool gradient) vg_lite_color_t vglite_get_color(lv_color32_t lv_col32, bool gradient)
{ {
vg_lite_color_t vg_col32; vg_lite_color_t vg_col32;

View File

@@ -95,6 +95,14 @@ bool vglite_cmd_buf_is_flushed(void);
*/ */
void vglite_run(void); void vglite_run(void);
/**
* Wait for VG-Lite finish.
*
*/
#if LV_USE_VGLITE_DRAW_ASYNC
void vglite_wait_for_finish(void);
#endif
/** /**
* Get vglite color. Premultiplies (if not hw already) and swizzles the given * Get vglite color. Premultiplies (if not hw already) and swizzles the given
* LVGL 32bit color to obtain vglite color. * LVGL 32bit color to obtain vglite color.

View File

@@ -570,16 +570,31 @@
#endif #endif
#if LV_USE_OS #if LV_USE_OS
/* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */ /* Use additional draw thread for VG-Lite processing.*/
#ifndef LV_USE_VGLITE_DRAW_ASYNC #ifndef LV_USE_VGLITE_DRAW_THREAD
#ifdef LV_KCONFIG_PRESENT #ifdef LV_KCONFIG_PRESENT
#ifdef CONFIG_LV_USE_VGLITE_DRAW_ASYNC #ifdef CONFIG_LV_USE_VGLITE_DRAW_THREAD
#define LV_USE_VGLITE_DRAW_ASYNC CONFIG_LV_USE_VGLITE_DRAW_ASYNC #define LV_USE_VGLITE_DRAW_THREAD CONFIG_LV_USE_VGLITE_DRAW_THREAD
#else #else
#define LV_USE_VGLITE_DRAW_ASYNC 0 #define LV_USE_VGLITE_DRAW_THREAD 0
#endif #endif
#else #else
#define LV_USE_VGLITE_DRAW_ASYNC 1 #define LV_USE_VGLITE_DRAW_THREAD 1
#endif
#endif
#if LV_USE_VGLITE_DRAW_THREAD
/* Enable VGLite draw async. Queue multiple tasks and flash them once to the GPU. */
#ifndef LV_USE_VGLITE_DRAW_ASYNC
#ifdef LV_KCONFIG_PRESENT
#ifdef CONFIG_LV_USE_VGLITE_DRAW_ASYNC
#define LV_USE_VGLITE_DRAW_ASYNC CONFIG_LV_USE_VGLITE_DRAW_ASYNC
#else
#define LV_USE_VGLITE_DRAW_ASYNC 0
#endif
#else
#define LV_USE_VGLITE_DRAW_ASYNC 1
#endif
#endif #endif
#endif #endif
#endif #endif
@@ -604,6 +619,21 @@
#endif #endif
#if LV_USE_DRAW_PXP #if LV_USE_DRAW_PXP
#if LV_USE_OS
/* Use additional draw thread for PXP processing.*/
#ifndef LV_USE_PXP_DRAW_THREAD
#ifdef LV_KCONFIG_PRESENT
#ifdef CONFIG_LV_USE_PXP_DRAW_THREAD
#define LV_USE_PXP_DRAW_THREAD CONFIG_LV_USE_PXP_DRAW_THREAD
#else
#define LV_USE_PXP_DRAW_THREAD 0
#endif
#else
#define LV_USE_PXP_DRAW_THREAD 1
#endif
#endif
#endif
/* Enable PXP asserts. */ /* Enable PXP asserts. */
#ifndef LV_USE_PXP_ASSERT #ifndef LV_USE_PXP_ASSERT
#ifdef CONFIG_LV_USE_PXP_ASSERT #ifdef CONFIG_LV_USE_PXP_ASSERT

View File

@@ -3,6 +3,10 @@
* *
*/ */
/**
* Modified by NXP in 2024
*/
/********************* /*********************
* INCLUDES * INCLUDES
*********************/ *********************/
@@ -387,9 +391,17 @@ void lv_canvas_init_layer(lv_obj_t * obj, lv_layer_t * layer)
void lv_canvas_finish_layer(lv_obj_t * canvas, lv_layer_t * layer) void lv_canvas_finish_layer(lv_obj_t * canvas, lv_layer_t * layer)
{ {
if(layer->draw_task_head == NULL) return; if(layer->draw_task_head == NULL) return;
bool task_dispatched;
while(layer->draw_task_head) { while(layer->draw_task_head) {
lv_draw_dispatch_wait_for_request(); lv_draw_dispatch_wait_for_request();
lv_draw_dispatch_layer(lv_obj_get_display(canvas), layer); task_dispatched = lv_draw_dispatch_layer(lv_obj_get_display(canvas), layer);
if(!task_dispatched) {
lv_draw_wait_for_finish();
lv_draw_dispatch_request();
}
} }
lv_obj_invalidate(canvas); lv_obj_invalidate(canvas);
} }