RTGUI

据说RTGUI是多线程的,因此与RT-Thread OS的耦合度较高,有可能要访问RT-Thread的线程控制块。如果要移植到其它OS,估计难度较大。目前还处于Alpha状态,最终将会包含进RT-Thread中,成为其中的标准组件。

1、  RTGUI下载

当前,要获取包含RTGUI的源码,需要到SVN库里去拉。

因此,需要先安装SVN客户端。比较简单的就是命令行,当然你也可以其它选择。

这里使用Apache Subversion command line tools,下载地址:http://www.visualsvn.com/downloads/

下载文件是一个压缩包,解压到任意目录即可。

RT-Thread SVN源码浏览

打开cmd窗口,进入上面解压缩目录,运行下面的命令:

svn checkout http://rt-thread.googlecode.com/svn/tags/rtt_1_1_1\mcu\rtt111

这样就把rtt_1_1_1这个版本下载到根目录下的 mcu\rtt111中。

注1:由于众所周知的原因,从googlecode下载有点困难,建议使用VPN等方式。

注2:下载的bsp目录,实际只需要simulator(模拟器)和stm32f10x(奋斗板V3对应),其它的都可以删除或转移到其它目录。

2、  项目生成

与之前一样,修改rtconfig.h,打开RT_USING_RTGUI选项;

运行命令:scons –target=mdk4 –s

打开生成的项目文件,可以看到已经包含了RTGUI。

3、  LCD驱动(SSD1963)

a)      这是重新下载的源码,所以对LED的定义,还需要按之前章节所述,修改相应代码。

b)      编译

在驱动未完成前,examples和calibration.c(由文件名看应该是触摸屏校准程序)都可以不要。从项目中移除(remove)组gui_examples以及文件calibration.c,重新编译,成功。

c)      驱动代码

默认状态下,包含了ssd1289这个驱动文件,我们要参照它来写一个ssd1963的驱动。

代码:

ssd1963.c

#include <rtthread.h>
#include "stm32f10x.h" // 分辨率(H:0-479 V:0-271)
unsigned int HDP=479;
unsigned int VDP=271; unsigned int HT=531;
unsigned int HPS=43;
unsigned int LPS=8;
unsigned char HPW=1; unsigned int VT=288;
unsigned int VPS=12;
unsigned int FPS=4;
unsigned char VPW=10; #define Bank1_LCD_D ((uint32_t)0x60020000) //disp Data ram
#define Bank1_LCD_C ((uint32_t)0x60000000) //disp Reg ram void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
} void LCD_WR_REG(u16 index)
{
*(__IO uint16_t *) (Bank1_LCD_C)= index;
} u16 LCD_RD_DAT(void)
{
u16 a=0;
a=*(__IO uint16_t *) (Bank1_LCD_D);
return(a);
} void LCD_WR_DAT(u16 val)
{
*(__IO uint16_t *) (Bank1_LCD_D)= val;
} void _set_window(u16 x1, u16 y1, u16 x2, u16 y2)
{
LCD_WR_REG(0x002A);
LCD_WR_DAT(x1>>8);
LCD_WR_DAT(x1&0x00ff);
LCD_WR_DAT(x2>>8);
LCD_WR_DAT(x2&0x00ff);
LCD_WR_REG(0x002b);
LCD_WR_DAT(y1>>8);
LCD_WR_DAT(y1&0x00ff);
LCD_WR_DAT(y2>>8);
LCD_WR_DAT(y2&0x00ff);
} void _set_cursor(u16 x,u16 y)
{
_set_window(x, y, HDP, VDP);
} void lcd_set_pixel(const char* pixel, int x, int y)
{
_set_cursor(x, y);
LCD_WR_REG(0x2c);
LCD_WR_DAT(*(rt_uint16_t*)pixel);
} void lcd_get_pixel(char* pixel, int x, int y)
{
_set_cursor(x, y);
LCD_WR_REG(0x2e);
*(rt_uint16_t*)pixel = LCD_RD_DAT();
} void lcd_draw_hline(const char* pixel, int x1, int x2, int y)
{
_set_cursor(x1, y);
LCD_WR_REG(0x2c);
while (x1 < x2)
{
LCD_WR_DAT(*(rt_uint16_t*)pixel);
x1++;
}
} void lcd_draw_vline(const char* pixel, int x, int y1, int y2)
{
_set_window(x, y1, x, y2);
LCD_WR_REG(0x2c);
while (y1 < y2)
{
LCD_WR_DAT(*(rt_uint16_t*)pixel);
y1++;
}
} void lcd_blit_line(const char* pixels, int x, int y, rt_size_t size)
{
rt_uint16_t *ptr;
ptr = (rt_uint16_t*)pixels; _set_cursor(x, y);
LCD_WR_REG(0x2c);
while (size)
{
LCD_WR_DAT(*ptr ++);
size --;
}
} void lcd_clear()
{
int w = HDP + 1, h = VDP + 1;
_set_cursor(0, 0);
LCD_WR_REG(0x2c);
while (w--)
{
while(h--)
{
LCD_WR_DAT(0xffff);
}
h = VDP + 1;
}
} void LCD_INIT(void)
{
GPIO_ResetBits(GPIOE, GPIO_Pin_1);
Delay(0xAFFFF);
GPIO_SetBits(GPIOE, GPIO_Pin_1 );
Delay(0xAFFFF); LCD_WR_REG(0x00E2); // PLL=10*36/3=120M
LCD_WR_DAT(0x0023); //N=0x36 for 6.5M, 0x23 for 10M crystal
LCD_WR_DAT(0x0002);
LCD_WR_DAT(0x0004);
LCD_WR_REG(0x00E0);
LCD_WR_DAT(0x0001);
Delay(0xAFFF);
LCD_WR_REG(0x00E0);
LCD_WR_DAT(0x0003);
Delay(0xAFFF);
LCD_WR_REG(0x0001);
Delay(0xAFFF);
LCD_WR_REG(0x00E6); //PLL setting for PCLK, depends on resolution
LCD_WR_DAT(0x0001);
LCD_WR_DAT(0x0033);
LCD_WR_DAT(0x0032); LCD_WR_REG(0x00B0); //module
LCD_WR_DAT(0x0000);
LCD_WR_DAT(0x0000);
LCD_WR_DAT((HDP>>8)&0X00FF); //Set HDP
LCD_WR_DAT(HDP&0X00FF);
LCD_WR_DAT((VDP>>8)&0X00FF); //Set VDP
LCD_WR_DAT(VDP&0X00FF);
LCD_WR_DAT(0x0000); LCD_WR_REG(0x00B4); //HSYNC
LCD_WR_DAT((HT>>8)&0X00FF); //Set HT
LCD_WR_DAT(HT&0X00FF);
LCD_WR_DAT((HPS>>8)&0X00FF); //Set HPS
LCD_WR_DAT(HPS&0X00FF);
LCD_WR_DAT(HPW); //Set HPW
LCD_WR_DAT((LPS>>8)&0X00FF); //Set HPS
LCD_WR_DAT(LPS&0X00FF);
LCD_WR_DAT(0x0000); LCD_WR_REG(0x00B6); //VSYNC
LCD_WR_DAT((VT>>8)&0X00FF); //Set VT
LCD_WR_DAT(VT&0X00FF);
LCD_WR_DAT((VPS>>8)&0X00FF); //Set VPS
LCD_WR_DAT(VPS&0X00FF);
LCD_WR_DAT(VPW); //Set VPW
LCD_WR_DAT((FPS>>8)&0X00FF); //Set FPS
LCD_WR_DAT(FPS&0X00FF); LCD_WR_REG(0x00BA);
LCD_WR_DAT(0x000F); //GPIO[3:0] out 1 LCD_WR_REG(0x00B8);
LCD_WR_DAT(0x0007); //GPIO3=input, GPIO[2:0]=output
LCD_WR_DAT(0x0001); //GPIO0 normal LCD_WR_REG(0x0036); //rotation
LCD_WR_DAT(0x0000); LCD_WR_REG(0x00F0); //16位 565 color module
LCD_WR_DAT(0x0003); Delay(0xAFFF); LCD_WR_REG(0x0029); //display on LCD_WR_REG(0x00BE); //set PWM for B/L
LCD_WR_DAT(0x0006);
LCD_WR_DAT(0x0080);
LCD_WR_DAT(0x0001);
LCD_WR_DAT(0x00f0);
LCD_WR_DAT(0x0000);
LCD_WR_DAT(0x0000); LCD_WR_REG(0x00d0);// backlight
LCD_WR_DAT(0x000d);
} void GPIO_INIT(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
| RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE| RCC_APB2Periph_GPIOF , ENABLE);
} void FSMC_LCD_Init(void)
{
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef p;
GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD, GPIO_Pin_13); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;
GPIO_Init(GPIOD, &GPIO_InitStructure); p.FSMC_AddressSetupTime = 0x02;
p.FSMC_AddressHoldTime = 0x00;
p.FSMC_DataSetupTime = 0x05;
p.FSMC_BusTurnAroundDuration = 0x00;
p.FSMC_CLKDivision = 0x00;
p.FSMC_DataLatency = 0x00;
p.FSMC_AccessMode = FSMC_AccessMode_B; FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
} struct rt_device_graphic_ops ssd1963_ops =
{
lcd_set_pixel,
lcd_get_pixel,
lcd_draw_hline,
lcd_draw_vline,
lcd_blit_line
}; struct rt_device _lcd_device;
static rt_err_t lcd_init(rt_device_t dev)
{
return RT_EOK;
} static rt_err_t lcd_open(rt_device_t dev, rt_uint16_t oflag)
{
return RT_EOK;
} static rt_err_t lcd_close(rt_device_t dev)
{
return RT_EOK;
} static rt_err_t lcd_control(rt_device_t dev, rt_uint8_t cmd, void *args)
{
switch (cmd)
{
case RTGRAPHIC_CTRL_GET_INFO:
{
struct rt_device_graphic_info *info; info = (struct rt_device_graphic_info*) args;
RT_ASSERT(info != RT_NULL); info->bits_per_pixel = 16;
info->pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565P;
info->framebuffer = RT_NULL;
info->width = HDP + 1;
info->height = VDP + 1;
}
break; case RTGRAPHIC_CTRL_RECT_UPDATE:
/* nothong to be done */
break; default:
break;
} return RT_EOK;
} void rt_hw_lcd_init(void)
{ /* register lcd device */
_lcd_device.type = RT_Device_Class_Graphic;
_lcd_device.init = lcd_init;
_lcd_device.open = lcd_open;
_lcd_device.close = lcd_close;
_lcd_device.control = lcd_control;
_lcd_device.read = RT_NULL;
_lcd_device.write = RT_NULL; _lcd_device.user_data = &ssd1963_ops;
GPIO_INIT();
FSMC_LCD_Init();
LCD_INIT();
lcd_clear(); /* register graphic device driver */
rt_device_register(&_lcd_device, "lcd",
RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_STANDALONE);
}

这个文件中,直接被调用的只有一个函数:void rt_hw_lcd_init(void),执行完成后,在系统中注册了名为“lcd”的设备。

   _lcd_device.type  = RT_Device_Class_Graphic;
_lcd_device.init = lcd_init;
_lcd_device.open = lcd_open;
_lcd_device.close = lcd_close;
_lcd_device.control = lcd_control;
_lcd_device.read = RT_NULL;
_lcd_device.write = RT_NULL;

这些是一个标准设备必须的函数,作为LCD显示设备,这里只有control是有用的,其它实际上是个空函数。

struct rt_device_graphic_ops ssd1963_ops =
{
lcd_set_pixel,
lcd_get_pixel,
lcd_draw_hline,
lcd_draw_vline,
lcd_blit_line
}; void rt_hw_lcd_init(void)
{ ………… _lcd_device.user_data = &ssd1963_ops;
…………

与显示设备相关的,主要是这五个画图相关函数。

d)      测试程序

测试程序分两个,一个是底层硬件画图函数测试,一个是RTGUI API测试。

lcd_hw_test.c

#include <rtthread.h>

extern const unsigned char* icon;

void lcd_hw_test(){
char pixel[] = {0x00, 0xf8};
int width, height = 59, i=5;
unsigned char* p;
char tmp[] = {0xff, 0xff}; rt_device_t drv = rt_device_find("lcd");
struct rt_device_graphic_ops* ops = ((struct rt_device_graphic_ops *)(drv->user_data)); // hline
while(i--)
{
ops->draw_hline(pixel, 0, 480, 50 + i);
} // vline
i = 5;
while(i--)
{
ops->draw_vline(pixel, 80 + i, 0, 272);
} // draw icon
p = (unsigned char*)&icon;
while(height--){
ops->blit_line((char*)p, 200, 180 - height, 59);
p += 59 * 2;
} // copy icon
width = height = 59;
while(height--)
{
while(width--)
{
ops->get_pixel(tmp, 200 + width, 180 - height);
ops->set_pixel(tmp, 290 + width, 180 - height);
}
width = 59;
}
}

lcd_gui_test.c

#include <rtthread.h>

#ifdef RT_USING_RTGUI
#include <rtgui/rtgui.h>
#include <rtgui/rtgui_server.h>
#include <rtgui/rtgui_system.h>
#include <rtgui/driver.h>
#endif const unsigned char icon[] = {0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9F,0XF7,0XFE,0XD6,
0XFE,0XDE,0X3F,0XE7,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X3F,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X3F,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,0X1E,0XDF,
0X1E,0XDF,0X3F,0XE7,0XFE,0XDE,0XFE,0XD6,0X9F,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,
0XFE,0XD6,0X1E,0XDF,0XBE,0XD6,0X7E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X7E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X7E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,
0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X5E,0XC6,0X7E,0XC6,0XBE,0XD6,0X1E,0XDF,
0XFE,0XDE,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XBE,0XF7,0XDE,0XD6,0XBE,0XCE,0X5E,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5E,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5E,0XBE,0X5E,0XC6,0X7E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,0X9E,0XC6,
0X7E,0XC6,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,0X5D,0XBE,
0X5D,0XBE,0X5D,0XBE,0X5E,0XC6,0XDE,0XD6,0XFE,0XD6,0XBE,0XF7,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBE,0XF7,0XBD,0XCE,0X7E,0XC6,0X3D,0XBE,0X3D,0XBE,
0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3E,0XBE,0X5E,0XBE,0X7E,0XBE,0X7E,0XBE,
0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,0X7E,0XBE,
0X7E,0XBE,0X7E,0XBE,0X5E,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3E,0XBE,0X5E,0XBE,
0X3E,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,
0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,
0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X5E,0XBE,0X5E,0XBE,0XBE,0XCE,
0XDE,0XD6,0XBE,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0XDD,0XD6,0X7E,0XC6,
0X1D,0XB6,0X1D,0XB6,0X3E,0XBE,0X3E,0XBE,0X5E,0XBE,0X3E,0XBE,0X5E,0XBE,0X5E,0XBE,
0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,
0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X5E,0XBE,0X3E,0XBE,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X3E,0XBE,0X5E,0XBE,0X5E,0XBE,0X1D,0XB6,0X5E,0XBE,0X3D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,
0X1D,0XB6,0X1D,0XB6,0X1D,0XB6,0X9E,0XC6,0XFD,0XD6,0XDF,0XFF,0XFF,0XFF,0XDF,0XFF,
0X5D,0XEF,0X7E,0XC6,0X1E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,
0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,
0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0X5E,0XB6,0XFD,0XB5,
0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0X5E,0XB6,0X5E,0XB6,0X3E,0XB6,
0X5E,0XB6,0X5E,0XB6,0X1D,0XB6,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,
0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,
0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0XFD,0XB5,0X1D,0XB6,0XBE,0XC6,
0X5D,0XEF,0XDF,0XFF,0XBE,0XF7,0X9C,0XCE,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,
0X3E,0XB6,0X3E,0XB6,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XBD,0XAD,0XFD,0XB5,
0X1D,0XAE,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0X3E,0XB6,0XFD,0XB5,0XDD,0XAD,
0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,
0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,0XDD,0XAD,
0XDD,0XAD,0XDD,0XAD,0X3E,0XB6,0XBD,0XCE,0XBE,0XF7,0X5D,0XEF,0X3D,0XBE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,0XDD,0XAD,0XBD,0XAD,0XBD,0XAD,
0XBD,0XA5,0X5C,0X9D,0XDE,0XD6,0XDD,0XA5,0X1D,0XAE,0X1E,0XAE,0X1E,0XAE,0X1E,0XAE,
0X1E,0XAE,0X1E,0XAE,0XDD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,
0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XAD,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,
0XBD,0XAD,0XBD,0XAD,0XDD,0XAD,0XFD,0XAD,0X1E,0XAE,0X1E,0XAE,0X1D,0XB6,0X5D,0XEF,
0XFB,0XDE,0XDD,0XAD,0XFD,0XAD,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,
0XFD,0XAD,0XFD,0XAD,0XFD,0XAD,0XBC,0XA5,0X1B,0X95,0XDF,0XFF,0X7C,0X95,0XFD,0XA5,
0X1D,0XAE,0X1D,0XAE,0X1D,0XAE,0XFD,0XAD,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,
0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0XBD,0XA5,0X9D,0XA5,0X9C,0XA5,
0X9C,0XA5,0X3A,0XA5,0X9D,0XA5,0X9D,0XA5,0XBD,0XA5,0XBD,0XA5,0XDD,0XAD,0XFD,0XAD,
0X1D,0XAE,0XDD,0XAD,0XFB,0XDE,0XBA,0XD6,0XFD,0XAD,0XDD,0XA5,0XFD,0XA5,0XFD,0XA5,
0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,
0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,
0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XFD,0XA5,0XBC,0X9D,0X7B,0XA5,
0XFF,0XFF,0XDC,0XA5,0XBC,0X9D,0XFD,0XA5,0XDD,0XA5,0X9D,0XA5,0X9D,0X9D,0X9D,0X9D,
0XFD,0XA5,0XBD,0XA5,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X9D,0X7D,0X9D,
0X7C,0X9D,0X7C,0X9D,0X1A,0XA5,0X8F,0XB3,0X5C,0X9D,0X7C,0X9D,0X7D,0X9D,0X9D,0X9D,
0X9D,0X9D,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XBD,0XA5,0XBA,0XD6,0X79,0XCE,0X9D,0X9D,
0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XBD,0X9D,0X9D,0X9D,0XBD,0XA5,0XDD,0XA5,
0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,
0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,0XDD,0XA5,
0XDD,0XA5,0X7C,0X95,0X3C,0XB6,0XFF,0XFF,0X3C,0XB6,0X7C,0X95,0XDD,0XA5,0X9D,0X9D,
0XBD,0X9D,0X5C,0X9D,0X7D,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,0X5C,0X9D,
0X5C,0X9D,0X5C,0X95,0X5C,0X95,0X3B,0X95,0X75,0XA4,0X67,0XBA,0XB8,0X94,0X3B,0X95,
0X5C,0X95,0X5C,0X95,0X5C,0X9D,0X5C,0X9D,0X7D,0X9D,0X7D,0X9D,0X9D,0X9D,0X9D,0X9D,
0X79,0XCE,0X59,0XCE,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0X5D,0X95,
0X3C,0X95,0X3C,0X95,0X5D,0X95,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,
0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,
0XBD,0X9D,0XBD,0X9D,0XBD,0X9D,0X9D,0X9D,0X1B,0X8D,0XBD,0XCE,0XFF,0XFF,0XBD,0XCE,
0X1B,0X8D,0X9D,0X9D,0XBD,0X9D,0XBD,0X9D,0X9D,0X9D,0X5C,0X95,0X3C,0X95,0X3C,0X95,
0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X8D,0XFB,0X8C,0XB0,0XB3,0XC2,0XC9,
0XF4,0X8B,0XDA,0X84,0X1B,0X8D,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,0X3C,0X95,
0X7D,0X95,0XBD,0X9D,0XBD,0X9D,0X59,0XCE,0X38,0XC6,0X5D,0X95,0X7D,0X95,0X9D,0X95,
0X5D,0X95,0X3C,0X95,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X3C,0X8D,0X3C,0X95,
0X7D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,
0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X7C,0X95,0XDA,0X84,
0X5E,0XE7,0XFF,0XFF,0X5E,0XE7,0XDA,0X84,0X7C,0X95,0X7D,0X95,0X3C,0X8D,0X3C,0X8D,
0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0X1C,0X8D,0XFB,0X8C,0XB9,0X84,
0XEA,0XCA,0XA1,0XC9,0X2E,0X93,0X79,0X7C,0XDA,0X84,0XFC,0X8C,0X1C,0X8D,0X1C,0X8D,
0X1C,0X8D,0X1C,0X8D,0X3C,0X8D,0X9D,0X95,0X9D,0X95,0X9D,0X95,0X38,0XC6,0X38,0XC6,
0XFC,0X84,0X1C,0X8D,0X5D,0X8D,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0X3C,0X8D,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,
0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,0X7D,0X95,
0X7D,0X95,0X5C,0X8D,0XBA,0X7C,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBA,0X7C,0X5C,0X8D,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XDB,0X84,0X36,0X8C,0X65,0XE2,0XA1,0XC9,0X69,0X9A,0X37,0X74,0X79,0X7C,0XDB,0X84,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0X7D,0X95,0X7D,0X95,
0X7D,0X95,0X38,0XC6,0X38,0XC6,0XFC,0X84,0X1C,0X85,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0X1C,0X85,
0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,
0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X5D,0X8D,0X3C,0X85,0X3A,0X8D,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0X1A,0X8D,0XBB,0X7C,0XDC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0XDC,0X84,0XDB,0X7C,0XBA,0X7C,0XB2,0X9B,0X23,0XF2,0XA1,0XC9,0XE5,0XA9,0XD5,0X6B,
0X58,0X74,0X9A,0X7C,0XDB,0X7C,0XDC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,0XFC,0X84,
0X1C,0X85,0X7D,0X8D,0X7D,0X8D,0X7D,0X8D,0X38,0XC6,0X38,0XC6,0XDC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XDC,0X7C,0X3D,0X85,0X5D,0X8D,0X5D,0X8D,0X5D,0X85,0X5D,0X8D,
0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5D,0X8D,0X5C,0X85,0XFB,0X7C,
0XDB,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X9B,0XA5,0X5A,0X6C,0XBC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,0X9B,0X7C,0X7A,0X74,0X0D,0XB3,0X01,0XFA,0XA1,0XC9,
0XA2,0XB9,0X52,0X6B,0XF7,0X6B,0X7A,0X74,0XBB,0X7C,0XBC,0X7C,0XBC,0X7C,0XBC,0X7C,
0XBC,0X7C,0XBC,0X7C,0XFC,0X84,0X3C,0X85,0XFC,0X84,0X3C,0X85,0X5D,0X8D,0X38,0XC6,
0X38,0XC6,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0XDC,0X7C,0X3D,0X85,
0X3C,0X85,0XFC,0X7C,0XBC,0X74,0X1C,0X7D,0X3C,0X85,0X3D,0X85,0X3D,0X85,0X3D,0X85,
0X3C,0X85,0X1C,0X7D,0X9A,0X74,0X7C,0XC6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X5C,0XC6,
0X19,0X64,0X7B,0X74,0X9C,0X74,0X9C,0X74,0X9B,0X74,0X7B,0X74,0X18,0X74,0X87,0XD2,
0X01,0XFA,0XA1,0XC9,0X81,0XB9,0XCE,0X72,0XB6,0X5B,0X39,0X6C,0X7B,0X74,0X9C,0X74,
0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0XDC,0X7C,0XFC,0X7C,0X1C,0X85,
0X3D,0X85,0X3D,0X85,0X38,0XC6,0X38,0XC6,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0X9C,0X74,0XBC,0X74,0X3D,0X7D,0X1C,0X7D,0X9B,0X6C,0X9E,0XC6,0X1C,0X85,0XDC,0X74,
0X1C,0X7D,0X1C,0X7D,0XFC,0X74,0XBB,0X6C,0X1B,0X85,0X3C,0XB6,0XBF,0XF7,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XBF,0XF7,0XDC,0XAD,0X7A,0X74,0X1A,0X64,0X3A,0X64,0X5A,0X6C,
0XB4,0X83,0X44,0XEA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X4A,0X82,0X96,0X5B,0X18,0X64,
0X5A,0X6C,0X9B,0X6C,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,0X9C,0X74,
0XBC,0X74,0XBC,0X74,0X1C,0X7D,0X3D,0X7D,0X3D,0X7D,0X38,0XC6,0X38,0XC6,0X7B,0X6C,
0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,
0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X9C,0X6C,0X1C,0X7D,0X1C,0X7D,0XDC,0X74,
0XFB,0X7C,0XDF,0XFF,0X1D,0XAE,0X7B,0X6C,0X9B,0X6C,0X1B,0X85,0X5E,0XE7,0XFF,0XFF,
0XFF,0XFF,0XBD,0XCE,0X3C,0XBE,0X3B,0XBE,0X3B,0XBE,0X9D,0XCE,0XFF,0XFF,0XFF,0XFF,
0XFD,0XDE,0X79,0X7C,0X0F,0X93,0X02,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0XE6,0X99,
0X55,0X53,0XD8,0X5B,0X3A,0X64,0X5B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,
0X7B,0X6C,0X7B,0X6C,0X7B,0X6C,0X9C,0X74,0X1C,0X7D,0X1C,0X7D,0X1C,0X7D,0X1C,0X7D,
0X38,0XC6,0X38,0XC6,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,
0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X7C,0X6C,
0X1C,0X75,0XFC,0X74,0XFC,0X74,0X7A,0X64,0XFC,0XAD,0XFF,0XFF,0X3E,0XDF,0X5D,0XBE,
0XFF,0XFF,0X7E,0XEF,0X7B,0X95,0X18,0X64,0X18,0X5C,0X18,0X5C,0X18,0X5C,0XB7,0X53,
0X77,0X4B,0X97,0X53,0XF9,0X8C,0XBC,0XD6,0X0C,0XEC,0X01,0XFA,0X01,0XFA,0XA1,0XC9,
0X81,0XB9,0XA3,0XA9,0X12,0X53,0XB7,0X53,0X1A,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,
0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X5B,0X64,0X7C,0X6C,0X1C,0X75,
0X1C,0X75,0X1C,0X75,0X1C,0X75,0X38,0XC6,0X38,0XC6,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
0X5B,0X5C,0X5B,0X5C,0X5B,0X64,0XDC,0X74,0XFC,0X74,0XFC,0X6C,0XBB,0X6C,0X18,0X5C,
0X1E,0XDF,0XFF,0XFF,0XFF,0XFF,0XFC,0XAD,0X18,0X5C,0X59,0X5C,0X7A,0X64,0X5A,0X64,
0X3A,0X64,0X5A,0X64,0X9A,0X6C,0XF9,0X53,0XD8,0X53,0X33,0X5B,0X25,0XD2,0X01,0XFA,
0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0XAF,0X5A,0X76,0X4B,0XF9,0X5B,0X3B,0X5C,
0X3B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,0X5B,0X5C,
0X5B,0X5C,0X5B,0X64,0XDC,0X6C,0XFC,0X74,0XFC,0X74,0XFC,0X74,0X38,0XC6,0X38,0XC6,
0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,
0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X5B,0X5C,0XFC,0X6C,
0XDC,0X6C,0XBB,0X6C,0X39,0X5C,0X3C,0XB6,0XFF,0XFF,0X5A,0X95,0X18,0X5C,0X7A,0X64,
0X3A,0X5C,0X3B,0X5C,0X1B,0X5C,0X1B,0X5C,0X1B,0X5C,0XBB,0X6C,0XFA,0X5B,0X32,0X7B,
0X23,0XF2,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X2B,0X6A,0X55,0X43,
0XD9,0X53,0X1A,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,
0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X3B,0X5C,0X7C,0X64,0XDC,0X6C,0XFC,0X6C,
0XFC,0X6C,0X38,0XC6,0X38,0XC6,0X1B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X3B,0X54,0X7C,0X5C,0XDC,0X6C,0X9B,0X64,0XDA,0X74,0XFF,0XFF,0X1C,0XAE,
0X18,0X54,0X9A,0X64,0X3B,0X5C,0X1B,0X54,0X1B,0X54,0X3B,0X54,0X1B,0X54,0X1B,0X54,
0XFA,0X53,0XED,0X9A,0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,
0X09,0XB3,0X94,0X5B,0X77,0X43,0XFA,0X53,0X1B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,0X3B,0X54,
0X3B,0X54,0X5C,0X5C,0XDC,0X6C,0XFC,0X6C,0X38,0XC6,0X38,0XC6,0X5A,0X2B,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X5B,0X5C,0X3A,0X5C,
0X3E,0XDF,0X7E,0XE7,0XF8,0X53,0X7A,0X5C,0XBB,0X64,0X3B,0X54,0X1B,0X54,0X1B,0X54,
0X1B,0X54,0XFA,0X4B,0XB8,0X53,0X88,0XC2,0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,
0X81,0XB9,0X81,0XB9,0XA4,0X99,0X56,0XAD,0X3A,0XC6,0X58,0X3B,0XFB,0X53,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,
0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X1B,0X54,0X5B,0X54,0X1B,0X44,0X38,0XC6,
0X38,0XC6,0XFA,0X1A,0X5A,0X2B,0XFB,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0XDA,0X43,0XDB,0X74,0XFF,0XFF,0X3A,0X8D,0X39,0X54,0XBB,0X64,0XDC,0X64,
0X7C,0X5C,0X1B,0X4C,0XFB,0X4B,0XFA,0X4B,0X75,0X6B,0X24,0XE2,0X01,0XFA,0X01,0XFA,
0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X82,0XB1,0X6F,0X3A,0X16,0X6C,0X7D,0XEF,
0X79,0X6C,0XDA,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0XFB,0X43,
0X5A,0X2B,0XFA,0X1A,0X38,0XC6,0X38,0XC6,0X1A,0X1B,0X1A,0X1B,0X1A,0X1B,0X9B,0X33,
0XFB,0X43,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0X1B,0X4C,0XFB,0X4B,0XFB,0X43,0XBA,0X43,0X79,0X3B,0XFC,0XAD,0XDF,0XFF,0X98,0X43,
0X5A,0X54,0XDC,0X64,0XDC,0X64,0XBC,0X5C,0XFB,0X4B,0XDA,0X43,0X71,0X8B,0X22,0XF2,
0X01,0XFA,0X01,0XFA,0X01,0XFA,0XA1,0XC9,0X81,0XB9,0X81,0XB9,0X81,0XB9,0X6E,0X52,
0X15,0X33,0X15,0X3B,0X9E,0XF7,0XFC,0XAD,0X79,0X3B,0XBA,0X43,0XFB,0X43,0XFB,0X4B,
0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,0X1B,0X4C,
0XFB,0X43,0X9B,0X33,0X1A,0X1B,0X1A,0X1B,0X1A,0X1B,0X38,0XC6,0X38,0XC6,0X3A,0X1B,
0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,0X3A,0X23,0X7B,0X2B,0XDB,0X3B,0X1B,0X44,0XFB,0X43,
0XFB,0X43,0XBA,0X43,0XBA,0X3B,0X9A,0X3B,0X79,0X3B,0X5A,0X5C,0X3B,0X85,0X1C,0XAE,
0XDF,0XF7,0XBD,0XCE,0X58,0X3B,0XFA,0X43,0XDC,0X5C,0XDC,0X64,0XDC,0X64,0X3A,0X4C,
0X3A,0X85,0X17,0XEE,0X06,0X7A,0X07,0X42,0X06,0X7A,0XA2,0XB9,0X81,0XB9,0X81,0XB9,
0X81,0XB9,0X2A,0X72,0X15,0X33,0X77,0X3B,0X37,0X33,0X9D,0XC6,0XDF,0XF7,0X1C,0XAE,
0X3B,0X85,0X5A,0X5C,0X79,0X3B,0X9A,0X3B,0XBA,0X3B,0XBA,0X43,0XFB,0X43,0XFB,0X43,
0X1B,0X44,0XDB,0X3B,0X7B,0X2B,0X3A,0X23,0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,0X3A,0X1B,
0X38,0XC6,0X38,0XC6,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,0X5A,0X23,
0X3A,0X1B,0XF9,0X1A,0X19,0X23,0X1A,0X54,0X3B,0X85,0X1D,0XAE,0X1E,0XD7,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1C,0XAE,0X78,0X3B,0XFB,0X43,0X7C,0X54,
0XDC,0X5C,0XBB,0X5C,0XFA,0X74,0XDF,0XF7,0X10,0X84,0X55,0XAD,0XFF,0XFF,0X55,0XAD,
0X48,0X6A,0X81,0XB9,0X81,0XB9,0XE6,0X91,0X75,0X43,0X18,0X4C,0X5A,0X54,0XF9,0X4B,
0X3C,0XB6,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X1E,0XD7,0X1D,0XAE,
0X3B,0X85,0X1A,0X54,0X19,0X23,0XF9,0X1A,0X3A,0X1B,0X5A,0X23,0X5A,0X23,0X5A,0X23,
0X5A,0X23,0X5A,0X23,0X5A,0X23,0X38,0XC6,0X38,0XC6,0X7B,0X23,0X7B,0X23,0X7B,0X23,
0X7B,0X23,0X7B,0X23,0X5A,0X1B,0XDA,0X43,0XFD,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBB,0X9D,
0X99,0X33,0XFB,0X3B,0X1B,0X3C,0X1B,0X44,0X19,0X4C,0X5E,0XE7,0XFF,0XFF,0XAE,0X73,
0XBA,0XD6,0XDB,0XDE,0XBA,0XD6,0X6D,0X73,0X81,0XB9,0XA3,0XA9,0X73,0X4B,0X38,0X4C,
0XBA,0X54,0XDB,0X5C,0X5A,0X4C,0XFB,0XA5,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFD,0XA5,0XFA,0X4B,
0X5A,0X1B,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X38,0XC6,0X38,0XC6,
0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7A,0X23,0X5A,0X23,0XF9,0X1A,
0XD7,0X1A,0XD8,0X43,0XDA,0X74,0XDB,0X9D,0XFD,0XCE,0XFF,0XF7,0XFF,0XF7,0XFF,0XF7,
0XFF,0XF7,0XFF,0XF7,0XFC,0XA5,0X39,0X2B,0XDB,0X33,0XDB,0X33,0XB9,0X33,0X7D,0XBE,
0XFF,0XFF,0XFF,0XFF,0X75,0XAD,0XD3,0X9C,0X34,0XA5,0XD3,0X9C,0XCE,0X9B,0X82,0XB9,
0XF0,0X4A,0X17,0X4C,0X9A,0X54,0XBC,0X54,0XBC,0X54,0X3A,0X44,0X3C,0XAE,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XF7,0XFD,0XCE,0XDB,0X9D,0XDA,0X74,0XD8,0X43,
0XD7,0X1A,0XF9,0X1A,0X5A,0X1B,0X7A,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,0X7B,0X23,
0X7B,0X23,0X38,0XC6,0X38,0XC6,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,
0X9B,0X23,0X9A,0X23,0X7A,0X23,0X79,0X23,0X39,0X1B,0X18,0X1B,0XD7,0X1A,0XB6,0X1A,
0X95,0X1A,0XB7,0X43,0XB9,0X74,0XDB,0X9D,0XBF,0XEF,0X9D,0XBE,0X18,0X1B,0X7A,0X23,
0X59,0X23,0X5B,0X8D,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X59,0XCE,0X96,0XB5,0X75,0XAD,
0X96,0XB5,0XF2,0XBC,0X4D,0X52,0X16,0X23,0X39,0X3C,0X7B,0X44,0X9C,0X44,0X9C,0X44,
0XFA,0X3B,0XDD,0XC6,0XDF,0XF7,0X3B,0XAE,0X39,0X85,0X58,0X5C,0X15,0X2B,0X36,0X2B,
0X97,0X2B,0X98,0X2B,0XB9,0X2B,0X99,0X23,0X7A,0X23,0X9A,0X23,0X9B,0X23,0X9B,0X23,
0X9B,0X23,0X9B,0X23,0X9B,0X23,0X9B,0X23,0X38,0XC6,0X38,0XC6,0XBB,0X23,0XBB,0X23,
0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0X9A,0X23,0X9A,0X23,
0X9A,0X23,0X79,0X23,0X79,0X23,0X79,0X23,0X38,0X1B,0X17,0X1B,0XD6,0X1A,0XDB,0X9D,
0XDF,0XEF,0X18,0X23,0X79,0X23,0X7A,0X54,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,
0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0XD7,0XB5,0XB4,0X53,0XF5,0X1A,0X58,0X23,0X9B,0X44,
0XBC,0X44,0XBC,0X4C,0X9B,0X44,0X19,0X3C,0XDF,0XFF,0X3C,0XAE,0XB7,0X33,0XF8,0X3B,
0X39,0X3C,0X5A,0X44,0X7A,0X44,0X7A,0X44,0X7B,0X44,0X9B,0X44,0X9B,0X44,0XBB,0X23,
0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0XBB,0X23,0X38,0XC6,
0X38,0XC6,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,
0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XBB,0X23,0XBA,0X23,0XBA,0X23,
0X9A,0X23,0X58,0X23,0X39,0X54,0XFF,0XF7,0X9A,0X64,0XB8,0X33,0X9F,0XEF,0XFF,0XFF,
0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0X76,0XA5,0X33,0X33,0XF5,0X1A,
0X58,0X23,0X1A,0X34,0XDC,0X4C,0XDC,0X4C,0XDC,0X4C,0X7B,0X44,0X7B,0X7D,0XFF,0XFF,
0XFA,0X6C,0X59,0X44,0X9B,0X44,0XBB,0X4C,0XBB,0X4C,0XBC,0X4C,0XDC,0X4C,0XDC,0X4C,
0XDC,0X4C,0XDC,0X4C,0XFB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,0XDB,0X23,
0XDB,0X23,0XDB,0X23,0X38,0XC6,0X38,0XC6,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,
0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,
0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XDA,0X23,0X38,0X1B,0XFD,0XCE,0XBC,0XCE,
0XDD,0XCE,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0XF7,0XBD,0XD5,0X8C,
0XF3,0X22,0X36,0X1B,0X98,0X23,0XDA,0X23,0X9C,0X3C,0XFC,0X4C,0XFC,0X4C,0XDC,0X4C,
0X7A,0X44,0X7E,0XE7,0X3E,0XDF,0X19,0X3C,0XDB,0X4C,0XFC,0X4C,0XFC,0X4C,0XFC,0X4C,
0X1C,0X4D,0X1C,0X4D,0X1C,0X4D,0X1C,0X4D,0XDC,0X44,0XFB,0X23,0XFB,0X23,0XFB,0X23,
0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0XFB,0X23,0X38,0XC6,0X38,0XC6,0X1C,0X24,
0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,
0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1B,0X24,0XFB,0X23,
0X99,0X23,0X58,0X54,0X7D,0XEF,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,
0XF7,0XBD,0X34,0X64,0XF4,0X1A,0X57,0X23,0XB9,0X23,0XFA,0X23,0X1B,0X24,0X9C,0X3C,
0X3D,0X55,0X1C,0X4D,0XBB,0X44,0X3C,0XA6,0XFF,0XFF,0XFA,0X64,0X9A,0X44,0XFC,0X4C,
0X1C,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X9C,0X3C,
0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,0X1C,0X24,
0X38,0XC6,0X38,0XC6,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
0X3C,0X2C,0X3C,0X2C,0X1B,0X24,0XD9,0X23,0XF9,0X74,0XFF,0XFF,0XFF,0XFF,0X79,0XCE,
0XF7,0XBD,0XF7,0XBD,0XB7,0XB5,0X94,0X43,0X35,0X1B,0X97,0X23,0XDA,0X23,0X1B,0X2C,
0X3C,0X2C,0X3C,0X2C,0X5C,0X2C,0X1C,0X4D,0XDB,0X4C,0XBC,0X85,0XFF,0XFF,0X5C,0XAE,
0X79,0X44,0X1B,0X4D,0X3C,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,0X3D,0X55,
0X3D,0X55,0X3D,0X55,0X1C,0X45,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,
0X3C,0X2C,0X3C,0X2C,0X3C,0X2C,0X38,0XC6,0X38,0XC6,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,
0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,
0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X1B,0X2C,0X99,0X4C,0XDF,0XF7,
0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0X36,0X9D,0X33,0X2B,0X76,0X23,0XD8,0X23,
0X1A,0X2C,0X5B,0X2C,0X5C,0X2C,0X7C,0X2C,0X5C,0X2C,0X1B,0X24,0X3A,0X2C,0X5D,0XA6,
0XFF,0XFF,0XFF,0XFF,0X3E,0XD7,0X99,0X44,0X3C,0X55,0X7C,0X55,0X7D,0X55,0X7D,0X55,
0X7D,0X55,0X7D,0X55,0X7D,0X55,0X7D,0X55,0X7D,0X55,0X5D,0X55,0X5C,0X2C,0X5C,0X2C,
0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X5C,0X2C,0X38,0XC6,0X38,0XC6,
0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,
0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X5B,0X2C,
0X5A,0X34,0X7E,0XE7,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XF7,0XBD,0X96,0XB5,0X56,0XA5,
0X56,0X5C,0X98,0X23,0XFA,0X23,0X1B,0X24,0X3B,0X24,0X1B,0X24,0X1B,0X24,0X1A,0X2C,
0X5C,0X6D,0X7F,0XE7,0XFF,0XFF,0X7C,0XAE,0X3E,0XD7,0XFF,0XFF,0X3C,0X9E,0X1C,0X4D,
0X9D,0X5D,0X9D,0X5D,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,0X9D,0X55,
0X7D,0X55,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,0X7C,0X2C,
0X7C,0X2C,0X38,0XC6,0X38,0XC6,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
0X9C,0X2C,0X7C,0X2C,0X5A,0X2C,0XDD,0XC6,0XFF,0XFF,0X79,0XCE,0XF7,0XBD,0XD7,0XBD,
0XD3,0X53,0X73,0X3B,0XF9,0XAD,0X5D,0XE7,0X9E,0XEF,0XBD,0XBE,0X5D,0XA6,0X3D,0XA6,
0X5D,0XA6,0XDE,0XBE,0XDF,0XF7,0XFF,0XFF,0X3E,0XD7,0X79,0X4C,0X58,0X34,0X78,0X44,
0X3C,0X9E,0XDF,0XF7,0X7B,0X65,0X9C,0X55,0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,
0XBD,0X5D,0XBD,0X5D,0XBD,0X5D,0X9D,0X4D,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,
0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X9C,0X2C,0X38,0XC6,0X38,0XC6,0XBD,0X2C,0XBD,0X2C,
0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,
0XBD,0X2C,0XBD,0X2C,0XBC,0X2C,0XBC,0X2C,0X7B,0X2C,0XFC,0X95,0XFF,0XFF,0X79,0XCE,
0XF7,0XBD,0X97,0XAD,0XB3,0X3B,0X74,0X23,0XB6,0X23,0XB7,0X23,0X58,0X44,0XDB,0X8D,
0XBF,0XEF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XBF,0XEF,0XFC,0X95,0X99,0X4C,0XF9,0X23,
0X39,0X2C,0X7A,0X2C,0X7A,0X34,0X79,0X2C,0X7B,0X6D,0XDD,0XB6,0X5C,0X55,0XDD,0X5D,
0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0XDD,0X5D,0X7D,0X45,0XDD,0X2C,0XBD,0X2C,
0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0XBD,0X2C,0X38,0XC6,
0X38,0XC6,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,
0XDD,0X2C,0XDD,0X2C,0XDD,0X34,0XDD,0X34,0XFD,0X34,0XDC,0X34,0XBB,0X2C,0X5B,0X65,
0XDF,0XFF,0X79,0XCE,0XF7,0XBD,0X36,0X95,0X94,0X2B,0XF7,0X2B,0X59,0X2C,0X9A,0X2C,
0X9A,0X34,0X7A,0X2C,0X19,0X2C,0X5C,0XAE,0XFF,0XFF,0XFF,0XF7,0XFF,0XFF,0X5C,0XAE,
0X19,0X2C,0X7A,0X2C,0XBB,0X34,0XBC,0X34,0XDC,0X34,0XDC,0X34,0XBB,0X34,0X9C,0X5D,
0X5B,0X55,0XBC,0X5D,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XFD,0X65,0XDD,0X5D,
0XDD,0X34,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,0XDD,0X2C,
0XDD,0X2C,0XDD,0X2C,0X38,0XC6,0X38,0XC6,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
0XDC,0X34,0XFA,0X4C,0X9E,0XEF,0X79,0XCE,0XF7,0XBD,0X95,0X74,0XB5,0X23,0X38,0X2C,
0X9A,0X34,0XDC,0X34,0XFC,0X34,0XFC,0X34,0XFC,0X34,0X7A,0X2C,0X9B,0X7D,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0X9B,0X7D,0X7A,0X2C,0XFC,0X34,0X1C,0X35,0X1D,0X35,0X1D,0X35,
0X1D,0X35,0X1D,0X35,0XDD,0X55,0XFD,0X65,0X1D,0X66,0X1D,0X66,0X1D,0X66,0X1D,0X66,
0X1D,0X66,0X1D,0X66,0X1D,0X5E,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,
0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X1D,0X35,0X38,0XC6,0X38,0XC6,0X3D,0X35,
0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,
0X3D,0X35,0X3D,0X35,0X1C,0X35,0XDB,0X34,0X3E,0XD7,0X79,0XCE,0XD7,0XB5,0X35,0X54,
0XF6,0X2B,0X79,0X2C,0XFB,0X34,0X3C,0X35,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X3D,0X3D,
0XFB,0X34,0XFA,0X54,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFA,0X54,0XFB,0X34,0X3D,0X3D,
0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0X5D,0X3D,0XFD,0X4D,0X3D,0X6E,0X3D,0X6E,
0X3D,0X6E,0X5E,0X6E,0X5E,0X6E,0X5E,0X6E,0X5E,0X6E,0X1D,0X56,0X3D,0X35,0X3D,0X35,
0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,0X3D,0X35,
0X38,0XC6,0X38,0XC6,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,
0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X3D,0X35,0XFB,0X34,0X9D,0XAE,0X79,0XCE,
0X97,0XA5,0X15,0X3C,0X37,0X2C,0XB9,0X34,0X1B,0X35,0X5D,0X3D,0X7D,0X3D,0X7D,0X3D,
0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X3C,0X3D,0X99,0X34,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0X99,0X34,0X3C,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,0X7D,0X3D,
0XBD,0X45,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X7E,0X6E,0X5E,0X6E,
0X3E,0X56,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,0X5D,0X35,
0X5D,0X35,0X5D,0X35,0X5D,0X35,0X38,0XC6,0X38,0XC6,0X7D,0X35,0X7D,0X35,0X7D,0X35,
0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X5D,0X35,0X3C,0X35,
0X1C,0X86,0X79,0XCE,0X57,0X8D,0X36,0X34,0X98,0X34,0XFA,0X34,0X5C,0X3D,0X9D,0X3D,
0X9D,0X3D,0X9E,0X3D,0X9E,0X45,0XBE,0X45,0XBE,0X45,0X9D,0X45,0X7D,0X3D,0XDA,0X34,
0X3E,0XD7,0XFF,0XFF,0X3E,0XD7,0XDA,0X34,0X7D,0X3D,0X9D,0X45,0XBE,0X45,0XBE,0X45,
0X9E,0X45,0X9E,0X3D,0X9E,0X3D,0X9E,0X3D,0X7E,0X66,0X9E,0X76,0X9E,0X76,0X9E,0X76,
0X9E,0X76,0X9E,0X76,0X7E,0X6E,0XDE,0X45,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,
0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X7D,0X35,0X38,0XC6,0X38,0XC6,
0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,
0X9D,0X3D,0X7D,0X35,0XBC,0X65,0X59,0XC6,0X17,0X6D,0X77,0X2C,0XD9,0X34,0X3B,0X3D,
0X9D,0X3D,0XBD,0X3D,0XBE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,
0XDE,0X45,0XBD,0X45,0X3B,0X3D,0XBD,0XAE,0XFF,0XFF,0XBD,0XAE,0X3B,0X3D,0XBD,0X45,
0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0XDE,0X45,0X7E,0X56,
0XBE,0X76,0XBE,0X76,0XBE,0X76,0XBE,0X76,0XBE,0X76,0XFE,0X45,0XBE,0X3D,0X9E,0X3D,
0X9E,0X3D,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,0X9E,0X35,
0X9E,0X35,0X38,0XC6,0X38,0XC6,0XBE,0X35,0XBE,0X35,0XBE,0X35,0XBE,0X3D,0XBE,0X3D,
0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBD,0X3D,0X9C,0X4D,0X39,0XAE,0X18,0X55,0XD9,0X34,
0X1A,0X35,0X7C,0X3D,0XBD,0X3D,0XDE,0X45,0XFE,0X45,0XFE,0X45,0XFE,0X45,0XFE,0X45,
0XFE,0X45,0XFE,0X45,0X1E,0X4E,0X1E,0X4E,0XFD,0X45,0X7C,0X3D,0X3C,0X8E,0XFF,0XFF,
0X3C,0X8E,0X7C,0X3D,0XFD,0X45,0X1E,0X4E,0X1E,0X4E,0XFE,0X45,0XFE,0X45,0XFE,0X45,
0XFE,0X45,0XFE,0X45,0X7E,0X56,0XDE,0X7E,0XDE,0X7E,0XDE,0X76,0XDE,0X76,0XDE,0X76,
0X7E,0X56,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,0XBE,0X3D,
0XBE,0X3D,0XBE,0X35,0XBE,0X35,0XBE,0X35,0X38,0XC6,0X38,0XC6,0XBD,0X3D,0XDE,0X35,
0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XBD,0X3D,0XFA,0X85,
0X5A,0X45,0X3A,0X35,0X5B,0X3D,0XBC,0X3D,0XFD,0X45,0X1E,0X46,0X1E,0X46,0X1E,0X46,
0X1E,0X46,0X1E,0X46,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,
0XDC,0X45,0XDB,0X5D,0XFF,0XFF,0XDB,0X65,0XDC,0X45,0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,
0X3E,0X4E,0X3E,0X4E,0X3E,0X4E,0X1E,0X46,0X1E,0X46,0XBE,0X5E,0XFE,0X7E,0XFE,0X7E,
0XFE,0X7E,0XFE,0X7E,0X9E,0X56,0X1E,0X46,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X3D,0XDE,0X35,0XBD,0X3D,0X38,0XC6,
0X38,0XC6,0XBC,0X4D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
0XFE,0X3D,0XDD,0X4D,0XBC,0X3D,0X9C,0X3D,0XBC,0X3D,0XDD,0X45,0X1E,0X46,0X3E,0X46,
0X3E,0X46,0X3E,0X4E,0X3E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X56,
0X7E,0X56,0X7E,0X56,0X5E,0X4E,0X3D,0X4E,0X9B,0X45,0XDF,0XF7,0X9B,0X45,0X3D,0X4E,
0X5E,0X4E,0X7E,0X56,0X7E,0X56,0X5E,0X56,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,
0X9E,0X56,0X1E,0X87,0X1E,0X87,0X1E,0X87,0XFE,0X6E,0X1E,0X46,0X1E,0X46,0X1E,0X46,
0X1E,0X46,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,0XFE,0X3D,
0XFE,0X3D,0XBC,0X45,0X38,0XC6,0X59,0XCE,0X79,0X5D,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,
0X1E,0X3E,0X1E,0X3E,0X1E,0X46,0X1E,0X3E,0X1E,0X46,0XFD,0X3D,0X1D,0X46,0X1E,0X46,
0X3E,0X46,0X5E,0X4E,0X5E,0X4E,0X5E,0X4E,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,
0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X7E,0X56,0XFC,0X4D,
0X1E,0XB7,0XFC,0X4D,0X7E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,0X9E,0X56,
0X9E,0X56,0X7E,0X4E,0X7E,0X4E,0X7E,0X4E,0X3F,0X7F,0X3F,0X87,0X3F,0X87,0X1F,0X6F,
0X5E,0X46,0X5E,0X46,0X5E,0X46,0X3E,0X46,0X3E,0X46,0X3E,0X46,0X3E,0X46,0X1E,0X3E,
0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0X1E,0X3E,0X79,0X5D,0X59,0XCE,0X79,0XCE,0X16,0X7D,
0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X5F,0X46,0X3E,0X46,0X5E,0X46,0X5E,0X46,
0X5E,0X46,0X5E,0X46,0X7E,0X4E,0X7F,0X4E,0X7F,0X4E,0X7F,0X4E,0X9F,0X4E,0X9F,0X56,
0X9F,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X5E,0XDF,0X5E,
0XDF,0X5E,0XBE,0X5E,0X7D,0X56,0X9D,0X76,0X7D,0X56,0XBE,0X5E,0XDF,0X5E,0XDF,0X5E,
0XBF,0X5E,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0XBF,0X56,0X9F,0X56,0XFF,0X5E,
0X5F,0X8F,0X5F,0X8F,0X3F,0X6F,0X7F,0X4E,0X7F,0X4E,0X5F,0X46,0X5F,0X46,0X5F,0X46,
0X5F,0X46,0X5F,0X46,0X5F,0X46,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X3F,0X3E,0X16,0X7D,
0X79,0XCE,0XBA,0XD6,0XF3,0X9C,0XDC,0X45,0X5F,0X46,0X5F,0X46,0X7F,0X46,0X7F,0X46,
0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X4E,
0XBF,0X56,0XBF,0X56,0XBF,0X56,0XDF,0X56,0XDF,0X56,0XDF,0X5E,0XDF,0X5E,0XFF,0X5E,
0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFE,0X5E,0XDE,0X5E,0XBE,0X56,0XDE,0X5E,
0XFE,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0XDF,0X5E,0XDF,0X5E,
0XDF,0X56,0XDF,0X56,0XFF,0X5E,0X7F,0X97,0X7F,0X97,0X7F,0X7F,0XDF,0X56,0X9F,0X4E,
0X9F,0X4E,0X9F,0X4E,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X5F,0X46,
0X5F,0X46,0XDC,0X45,0XF3,0X9C,0XBA,0XD6,0X1C,0XE7,0X96,0XB5,0X73,0X64,0X7F,0X46,
0X7F,0X46,0X7F,0X46,0X7F,0X46,0X9F,0X46,0X9F,0X46,0X9F,0X4E,0X9F,0X4E,0XBF,0X4E,
0XBF,0X4E,0XBF,0X56,0XDF,0X56,0XDF,0X56,0XDF,0X56,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,
0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0X1F,0X67,0X1F,0X67,0X3F,0X67,0X1F,0X67,
0X1F,0X67,0X1E,0X67,0X1F,0X67,0X1F,0X67,0X3F,0X67,0X1F,0X67,0X1F,0X67,0X1F,0X5F,
0X1F,0X5F,0X1F,0X5F,0X1F,0X5F,0XFF,0X5E,0XFF,0X5E,0XFF,0X5E,0X7F,0X7F,0X9F,0X97,
0X9F,0X97,0XFF,0X5E,0XBF,0X4E,0XBF,0X4E,0X9F,0X4E,0X9F,0X4E,0X9F,0X46,0X9F,0X46,
0X7F,0X46,0X7F,0X46,0X7F,0X46,0X7F,0X46,0X73,0X64,0X96,0XB5,0X1C,0XE7,0X7D,0XEF,
0X59,0XCE,0X71,0X8C,0XB5,0X44,0X9F,0X46,0X9F,0X46,0XBF,0X46,0XBF,0X4E,0XBF,0X4E,
0XBF,0X4E,0XDF,0X4E,0XDF,0X4E,0XDF,0X56,0XFF,0X56,0XFF,0X56,0X1F,0X57,0X1F,0X5F,
0X1F,0X5F,0X1F,0X5F,0X3F,0X5F,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,
0X3F,0X67,0X3F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,0X3F,0X67,
0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X67,0X3F,0X5F,0X1F,0X5F,
0X1F,0X5F,0X9F,0X77,0X9F,0X87,0X9F,0X87,0XFF,0X56,0XDF,0X56,0XDF,0X4E,0XDF,0X4E,
0XBF,0X4E,0XBF,0X4E,0XBF,0X4E,0XBF,0X46,0X9F,0X46,0X9F,0X46,0XB5,0X44,0X71,0X8C,
0X59,0XCE,0X7D,0XEF,0XBE,0XF7,0XFB,0XDE,0X96,0XB5,0XAF,0X73,0X33,0X44,0X9E,0X46,
0XBF,0X46,0XDF,0X4E,0XDF,0X4E,0XDF,0X4E,0XFF,0X56,0XFF,0X56,0XFF,0X56,0X1F,0X57,
0X1F,0X5F,0X1F,0X5F,0X3F,0X5F,0X3F,0X5F,0X3F,0X67,0X5F,0X67,0X5F,0X67,0X5F,0X67,
0X5F,0X67,0X5F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,
0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X6F,0X5F,0X6F,0X5F,0X67,0X5F,0X67,
0X5F,0X67,0X5F,0X67,0X3F,0X67,0X3F,0X5F,0X9F,0X6F,0XBF,0X8F,0XBF,0X7F,0X5F,0X67,
0XFF,0X56,0XFF,0X56,0XFF,0X56,0XDF,0X4E,0XDF,0X4E,0XDF,0X4E,0XBF,0X46,0X9E,0X46,
0X33,0X44,0XAE,0X73,0X96,0XB5,0XFB,0XDE,0XBE,0XF7,0XDF,0XFF,0X7D,0XEF,0X9A,0XD6,
0X34,0XA5,0X8E,0X73,0XCB,0X42,0XBA,0X45,0XFF,0X4E,0XFF,0X4E,0XFF,0X56,0X1F,0X57,
0X1F,0X57,0X3F,0X5F,0X3F,0X5F,0X3F,0X5F,0X5F,0X5F,0X5F,0X67,0X5F,0X67,0X7F,0X67,
0X7F,0X67,0X7F,0X6F,0X7F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,
0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,0X9F,0X6F,
0X9F,0X6F,0X9F,0X6F,0X7F,0X6F,0X7F,0X6F,0X7F,0X67,0X7F,0X67,0X5F,0X67,0X5F,0X67,
0X9F,0X6F,0XDF,0X7F,0XDF,0X77,0X3F,0X5F,0X1F,0X57,0X1F,0X57,0XFF,0X56,0XFF,0X4E,
0XFF,0X4E,0XBA,0X45,0XCC,0X42,0X8E,0X73,0X34,0XA5,0X9A,0XD6,0X7D,0XEF,0XDF,0XFF,
0XFF,0XFF,0XDF,0XFF,0X5D,0XEF,0X9A,0XD6,0X55,0XAD,0XEF,0X7B,0XAA,0X52,0X8F,0X43,
0X16,0X45,0XFA,0X4D,0X3F,0X57,0X3F,0X57,0X5F,0X5F,0X5F,0X5F,0X7F,0X5F,0X7F,0X67,
0X7F,0X67,0X9F,0X67,0X9F,0X67,0X9F,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,
0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XDF,0X77,0XDF,0X77,0XDF,0X77,0XDF,0X77,0XDF,0X77,
0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0XBF,0X6F,0X9F,0X6F,
0X9F,0X67,0X9F,0X67,0X7F,0X67,0X7F,0X67,0X7F,0X5F,0X5F,0X5F,0X5F,0X5F,0X3F,0X57,
0X3F,0X57,0XFA,0X4D,0X36,0X45,0X8F,0X43,0XAA,0X52,0XCF,0X7B,0X55,0XAD,0X9A,0XD6,
0X5D,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X7D,0XEF,0XBA,0XD6,
0XD7,0XBD,0X92,0X94,0X8E,0X73,0XAA,0X52,0X49,0X4A,0X08,0X42,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,0XC7,0X39,
0XC7,0X39,0XC7,0X39,0XC7,0X39,0X08,0X42,0X49,0X4A,0XAA,0X52,0X8E,0X73,0X92,0X94,
0XD7,0XBD,0XBA,0XD6,0X7D,0XEF,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XDF,0XFF,0X9E,0XF7,0X1C,0XE7,0X79,0XCE,0X96,0XB5,0XF3,0X9C,0X71,0X8C,
0X10,0X84,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,
0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0XCF,0X7B,0X10,0X84,0X71,0X8C,
0XF3,0X9C,0X96,0XB5,0X79,0XCE,0X1C,0XE7,0X9E,0XF7,0XDF,0XFF,0XFF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XDF,0XFF,0X7D,0XEF,
0X1C,0XE7,0XBA,0XD6,0X79,0XCE,0X59,0XCE,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,0X38,0XC6,
0X38,0XC6,0X59,0XCE,0X79,0XCE,0XBA,0XD6,0X1C,0XE7,0X7D,0XEF,0XDF,0XFF,0XFF,0XFF,
0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF}; void lcd_gui_test(){
rtgui_color_t pixel = white;
int width, height = 59, i;
rt_uint8_t* p;
rtgui_color_t tmp[] = {0xffff}; struct rtgui_graphic_driver* drv = rtgui_graphic_driver_get_default();
const struct rtgui_graphic_driver_ops* ops = drv->ops; // clear
i = 272;
while(i--)
{
ops->draw_hline(&pixel, 0, 480, i);
} // hline
i = 5;
pixel = red;
while(i--)
{
ops->draw_hline(&pixel, 0, 480, 50 + i);
} // vline
i = 5;
while(i--)
{
ops->draw_vline(&pixel, 80 + i, 0, 272);
} // draw icon
p = (unsigned char*)&icon;
while(height--){
ops->draw_raw_hline((rt_uint8_t*)p, 200, 200 + 59, 180 - height);
p += 59 * 2;
} // copy icon
width = height = 59;
while(height--)
{
while(width--)
{
ops->get_pixel(tmp, 200 + width, 180 - height);
ops->set_pixel(tmp, 290 + width, 180 - height);
}
width = 59;
}
}

这两个测试文件的显示内容是一样的。

显示一条5个像素宽的横条与竖条,以及一个图标,再复制一份同样的图标。通过这些来测试基本的五个函数有没有按预期效果显示。

在application.c中添加测试代码:(L55-L59)

编译,下载,可以看到测试结果:

e)      模拟器运行RTGUI

模拟器在目录bsp\simulator下,在开始之前,请阅读目录下的readme.txt。

使用命令:scons --target=vs –s 来创建Visaul C++ 2005的项目文件。

打开生成的project.vcproj。

将lcd_gui_test.c加入,再在application.c中添加测试代码(默认是运行贪吃蛇游戏);

修改project -> Drivers -> sdl_fb.c,让屏幕分辨率与开发板的一致。

运行后,就可以看到效果了(注:可能因调用低层代码,窗口没刷新,用其它窗口盖一下,再挪开,就可以看到上图了)

STM32 + RT Thread OS 学习笔记[三]的更多相关文章

  1. STM32 + RT Thread OS 学习笔记[二]

    串口通讯例程 通过上面的练习,对STM32项目开发有了一个直观印象,接下来尝试对串口RS232进行操作. 1.   目标需求: 开机打开串口1,侦听上位机(使用电脑串口测试软件)发送的信息,然后原样输 ...

  2. STM32 + RT Thread OS 学习笔记[四]

    1.  补注 a)      硬件,打通通讯通道 若学习者购买了学习板,通常可以在学习板提供的示例代码中找到LCD的相关驱动代码,基本上,这里的驱动的所有代码都可以从里面找到. 从上面的示意图可见,M ...

  3. STM32 + RT Thread OS 串口通讯

    1.   创建项目 a)   禁用Finsh和console b)   默认情况下,项目文件包含了finsh,它使用COM1来通讯,另外,console输出(rt_kprintf)也使用了COM1.因 ...

  4. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  5. muduo网络库学习笔记(三)TimerQueue定时器队列

    目录 muduo网络库学习笔记(三)TimerQueue定时器队列 Linux中的时间函数 timerfd简单使用介绍 timerfd示例 muduo中对timerfd的封装 TimerQueue的结 ...

  6. python3.4学习笔记(三) idle 清屏扩展插件

    python3.4学习笔记(三) idle 清屏扩展插件python idle 清屏问题的解决,使用python idle都会遇到一个常见而又懊恼的问题——要怎么清屏?在stackoverflow看到 ...

  7. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  8. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  9. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

随机推荐

  1. Android 自定义view中的属性,命名空间,以及tools标签

    昨日看到有人在知乎上问这3个琐碎的小知识点,今天索性就整理了一下,其实这些知识点并不难,但是很多开发者平时很少注意到这些, 导致的后果就是开发的时候 经常会被ide报错,开发效率很低,或者看开源代码的 ...

  2. JBPM4入门——7.等待节点的单条线手动执行

    本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...

  3. windows下mysql5.7安装及配置

    装完msi后,复制my-default.ini文件,黏贴为my.ini文件,内容修改如下: # For advice on how to change settings please see# htt ...

  4. 让IE6IE7IE8支持CSS3属性的8种方法介绍

    我们都知道,IE浏览器暂不支持CSS3的一些属性.国外的工程师们,不安于此现状,他们总是尽量使用一些手段使IE浏览器也能支持CSS3属性,我觉得这些都是很有意义,很有价值的工作,可以推动整个技术领域的 ...

  5. (转载)OC学习篇之---归档和解挡

    前几篇文章说到了OC中的Foundation框架,今天我们来看一下OC中的一个重要知识点:归档 OC中的归档就是将对象写入到一个文件中,Java中的ObjectInputStream和ObjectOu ...

  6. Native App、Web App 还是Hybrid App?

    一.什么是Native App? Native App即原生应用,即我们一般所称的客户端,是针对不同手机系统单独开发的本地应用,如需使用需要先下载到手机并安装,下载Native App的最常见方法是访 ...

  7. Tachyon框架的Worker心跳及Master高可用性分析

    0 概述 分布式框架中的Master-Slave类型,Slave节点负责工作的具体执行,Master负责任务的分发或者相关元数据的存储等.一般情况下,一个Master节点都会对应多个Slave节点,M ...

  8. dom 冒泡事件

    <!doctype html> <html> <head> <meta charset="utf-8"> <style> ...

  9. 谈FTP服务器攻击技术及其展望 (下)

               上篇回顾:谈FTP服务器攻击技术及其展望 (上)http://chenguang.blog.51cto.com/350944/436876 本文出自 "李晨光原创技术博 ...

  10. mysql如果搜索长度过宽 导致显示不全的情况解决

    今天我在搜索数据库里面优惠码字段 直接使用 select * from table 的命令的时候 由于 第一个 字段过长导致后面的都无法显示全..我还是宽屏! 所以 搜索了一下 可以让 它单行显示 使 ...